什么是 Linux 交换分区? 你需要知道的一切

大多数 Linux 安装建议您包含交换分区。 对于习惯将整个操作系统放在一个分区上的 Windows 用户来说,这可能看起来很奇怪。

交换分区有什么作用,你甚至需要一个,它应该有多大? 这些都是重要的问题,只要回答正确,就可以极大地提高系统的性能。

Linux 交换分区的作用

交换分区用作 RAM 的溢出空间。 如果您的 RAM 完全填满,任何其他应用程序都将在交换分区而不是 RAM 上运行。

这听起来像是一种增加计算机可用内存量而不实际获得更多 RAM 的简单方法,但事实并非如此。 RAM 是内存的理想硬件,因为它非常快,不像硬盘驱动器,相对而言,速度要慢得多。

固态驱动器的速度大大提高,可能使性能受到的影响较小,但即使它们也无法与 RAM 匹敌。 较新的 NVMe SSD 也是如此。 无论哪种情况,您都不希望对固态驱动器造成额外的磨损。

一种 close 交换分区的类比是 Windows 页面文件,尽管两者之间存在许多技术差异。

Linux 交换分区不限于溢出存储空间。 它可以通过其他方式帮助您的 PC。

优先级

交换分区还可以帮助将一些项目从内存移动到硬盘驱动器,以便为更重要的项目留出更多内存空间。 这意味着很少接触的项目将被移动到交换分区。

被认为是“稀有”的阈值取决于可配置的“swappiness”(是的,这是实际使用的术语)。 更高的交换性意味着数据更有可能被移动到交换分区。 较低的交换性意味着数据不太可能移动到交换分区。

休眠

每当您告诉系统休眠时,交换分区都会用作内存内容的目的地。 这意味着如果没有交换分区,Linux 上的休眠是不可能的。

也就是说,人们很少使用休眠功能,所以这对你来说可能无关紧要。

您需要交换分区吗?

这是否意味着交换分区是必要的? 一点也不! Linux 系统可以在没有交换分区的情况下完美运行。 我们已经讨论了交换分区的好处。 现在,你为什么不想拥有一个?

当交换分区没有帮助时

交换分区有其缺点。 它们占用的硬盘空间在不使用时不会动态调整大小。 大量交换使用也会增加主驱动器的磨损。 在某些情况下,交换分区甚至无助于提高性能。 这是一个 example 拥有交换分区实际上比没有交换分区更糟糕。

假设您在只有 2GB RAM 和 5400rpm 硬盘的旧上网本上安装了 Linux。 只需 2GB 内存,您可以想象打开几个浏览器选项卡会很快填满。 交换分区允许您在内存溢出时保持它们全部打开。

但随后由于硬盘驱动器的 5400rpm 速度出现了瓶颈。 由于硬盘驱动器非常慢并且系统不断想要访问交换分区,因此上网本变得非常缓慢。 机器速度慢到无法使用,除非您 close 一切都是为了释放一些内存。

设置的 swappiness 并不能保证一旦 RAM 中的空间可用,交换分区中的所有内容都会移回。 相反,很多可能会留在交换分区中,导致上网本继续运行缓慢。 因此,您需要重新启动计算机以从头开始,这需要一段时间,因为系统必须在关闭之前从交换分区中删除所有内容。

当你没有交换时会发生什么

如果您决定放弃交换分区,请了解风险。 当您的计算机需要的 RAM 超出可用内存时,界面可能会锁定。 您可能不得不强制退出计算机并丢失您正在处理的所有数据。

在这种情况下,您可能希望周围有一个交换分区,即使它只使用过一次。 这取决于您是否经常发现自己的存储空间不足。 如果您将可用存储空间减少了 4GB,您会注意到吗?因为您将这些空间用于交换?

Linux 交换建议

以下是一些关于何时可能需要交换分区以及设置多大的建议。

  • 如果您希望能够 休眠你的电脑,那么你应该有一个交换分区。 这个分区的大小应该是您安装的内存大小,再加上 10-25% 的空间,以便为已经移入交换分区的任何项目留出空间。
  • 只想要一个 小的性能提升 (而且你至少有一个 7200rpm 的硬盘)? 然后,您可以根据需要添加交换分区。 它的大小可以是任何你想要的,但如果你创建一个交换分区来启用休眠,我不会让它比你做的更大。
  • 如果你 偶尔使用繁重的应用程序 需要额外的 RAM,交换分区可以让您高枕无忧。 在这种情况下,您不需要交换分区与 RAM 一样大。
  • 如果你有一个 5400rpm 的硬盘,那么 您可能不想创建交换分区 仅仅因为瓶颈会使您的计算机变得更糟。 但是,如果您绝对想要交换,那么您仍然可以使用上述相同的大小指南创建一个分区。 只要确保将 swappiness 值更改为更低的值。

改变交换性

与 Linux 桌面的许多方面一样,您计算机的 swappiness 存储在一个文本文件中。 您可以通过导航找到此文件 /proc/sys/vm.

当您打开文件时,您将看到一个数字,指示您当前的交换状态。 只要您具有 root 权限,您就可以使用您选择的任何文本编辑器编辑此文件。

为此,请使用 Ubuntu 中的默认 GNOME 文本编辑器和 Fedora,你可以试试:

sudo gedit /proc/sys/vm/swappiness

无论您安装了哪个文本编辑器,还有一个命令行选项都可以使用。 只需输入:

sudo sysctl vm.swappiness=20

您可以输入 0 到 100 之间的任何数字。该值表示您希望 Linux 何时开始主动将进程从内存移动到交换分区。 因此对于 example, 值为 20 表示当内存使用达到 80% 时将移动进程; Ubuntu 中的默认交换值 60 表示当内存使用率达到 40% 时将移动进程。

您可以通过重新打开该文本文件来检查更改是否成功。 不出所料,该终端提供了一种更快的方式来检查您的 swappiness。 只需输入以下命令:

cat /proc/sys/vm/swappiness

你的电脑感觉更快吗?

交换分区可以对系统性能产生重大影响——有时会更好,有时会更糟。 既然您知道交换分区的用途,希望您能够更好地做出适合您情况的决定。

但在重新分区驱动器之前,要知道内存管理比你拥有的 RAM 数量和 Linux 交换分区的大小更多。 花点时间了解 Linux 如何管理 RAM。