大多数 Linux 安装建议您包含交换分区。对于习惯将整个操作系统放在一个分区上的 Windows 用户来说,这可能看起来很奇怪。交换分区有什么作用,你甚至需要一个,它应该有多大?这些都是重要的问题,只要选择正确,就可以极大地提高系统的性能。下面bluehost VPS主机分享Linux 交换分区的作用有哪些?
Linux 交换分区的作用
交换分区用作 RAM 的溢出空间。如果您的 RAM 完全填满,任何其他应用程序都将在交换分区而不是 RAM 上运行。推荐阅读:《什么是Linux?》
这听起来像是一种增加计算机可用内存量而不实际获得更多 RAM 的简单方法,但事实并非如此。RAM 是内存的理想硬件,因为它非常快,不像硬盘驱动器,相对而言,速度要慢得多。
固态驱动器的速度大大提高,可能使性能受到的影响较小,但即使它们也无法与 RAM 匹敌。较新的 NVMe SSD也是如此。无论哪种情况,您都不希望对固态驱动器造成额外的磨损。
与交换分区非常相似的是Windows 页面文件,尽管两者之间存在许多技术差异。
Linux 交换分区不限于溢出存储空间。它可以通过其他方式帮助您的 PC。
优先级
交换分区还可以帮助将一些项目从内存移动到硬盘驱动器,以便为更重要的项目留出更多内存空间。这意味着很少接触的项目将被移动到交换分区。
被认为是“稀有”的阈值取决于可配置的“swappiness”(是的,这是实际使用的术语)。更高的交换性意味着数据更有可能被移动到交换分区。较低的交换性意味着数据不太可能移动到交换分区。
休眠
每当您告诉系统休眠时,交换分区都会用作内存内容的目的地。这意味着如果没有交换分区,Linux 上的休眠是不可以的。
也就是说,人们很少使用休眠功能,所以这对你来说可能无关紧要。
您需要交换分区吗?
这是否意味着交换分区是必要的?一点也不!Linux 系统可以在没有交换分区的情况下完美运行。我们已经讨论了交换分区的好处。现在,你为什么不想拥有一个?
当交换分区没有帮助时
交换分区有其缺点。它们占用的硬盘空间在不使用时不会动态调整大小。大量交换使用也会增加主驱动器的磨损。在某些情况下,交换分区甚至无助于提高性能。这是一个示例,其中拥有交换分区实际上可能比没有交换分区更糟糕。
假设您在只有 2GB RAM 和 5400rpm 硬盘的旧上网本上安装了 Linux。只需 2GB 内存,您可以想象打开几个浏览器选项卡会很快填满。交换分区允许您在内存溢出时保持它们全部打开。
但随后由于硬盘驱动器的 5400rpm 速度出现了瓶颈。由于硬盘驱动器非常慢并且系统不断想要访问交换分区,因此上网本变得非常缓慢。除非您关闭所有内容以释放一些内存,否则机器速度很慢以至于无法使用。推荐阅读:《使用Linux系统有哪些优势?》
设置的 swappiness 并不能保证一旦 RAM 中的空间可用,交换分区中的所有内容都会移回。相反,很多可能会留在交换分区中,导致上网本继续运行缓慢。因此,您需要重新启动计算机以从头开始,这需要一段时间,因为系统必须在关闭之前从交换分区中删除所有内容。
当你没有交换时会发生什么
如果您决定放弃交换分区,请了解风险。当您的计算机需要的 RAM 超出可用内存时,界面可能会锁定。您可能不得不强制退出计算机并丢失您正在处理的所有数据。
在这种情况下,您可能希望周围有一个交换分区,即使它只使用过一次。这取决于您是否经常发现自己的存储空间不足。如果您将可用存储空间减少了 4GB,您会注意到吗?因为您将这些空间用于交换?
Linux 交换建议
以下是一些关于何时可能需要交换分区以及设置多大的建议。
如果您希望能够使您的计算机休眠,那么您应该有一个交换分区。这个分区的大小应该是您安装的内存大小,再加上 10-25% 的空间,以便为已经移入交换分区的任何项目留出空间。
只是想要一个小的性能提升(并且你至少有一个 7200rpm 的硬盘)?然后,您可以根据需要添加交换分区。它的大小可以是任何你想要的,但如果你创建一个交换分区来启用休眠,我不会让它比你做的更大。
如果您偶尔使用需要额外 RAM 的繁重应用程序,交换分区可以让您高枕无忧。在这种情况下,您不需要交换分区与 RAM 一样大。
如果您有一个 5400rpm 的硬盘驱动器,那么您可能不想创建交换分区,因为瓶颈会使您的计算机变得更糟。但是,如果您绝对想要交换,那么您仍然可以使用上述相同的大小指南创建一个分区。只要确保将 swappiness 值更改为更低的值。
改变交换性
与 Linux 桌面的许多方面一样,您计算机的 swappiness 存储在一个文本文件中。您可以通过导航到/proc/sys/vm找到此文件。
当您打开文件时,您将看到一个数字,指示您当前的交换状态。只要您具有 root 权限,您就可以使用您选择的任何文本编辑器编辑此文件。
要使用 Ubuntu 和 Fedora 中的默认 GNOME 文本编辑器执行此操作,您可以尝试:
sudo gedit /proc/sys/vm/swappiness
无论您安装了哪个文本编辑器,还有一个命令行选项都可以使用。只需输入:
sudo sysctl vm.swappiness=20
您可以输入 0 到 100 之间的任何数字。该值表示您希望 Linux 何时开始主动将进程从内存移动到交换分区。因此,例如,值 20 表示当内存使用率达到 80% 时将移动进程;Ubuntu 中的默认交换值 60 表示当内存使用率达到 40% 时将移动进程。
您可以通过重新打开该文本文件来检查更改是否成功。不出所料,该终端提供了一种更快的方式来检查您的 swappiness。只需输入以下命令:
cat /proc/sys/vm/swappiness
总结
交换分区可以对系统性能产生重大影响——有时会更好,有时会更糟。既然您知道交换分区的用途,希望您能够更好地做出适合您情况的决定。推荐相关阅读:《VPS云主机:Linux主机与Windows主机之间的区别》