交换分区与交换文件

Lui*_*ado 61 hibernate swap

我正在阅读 Ubuntu 17.04 的新变化,其中一个引起了我的注意,它正在从典型的交换分区模型转移到用于新安装的新交换文件模型。

与交换分区相比,使用它是否有好处,可能与性能、节省空间有关或在性能、空间节省方面更符合当今的硬件,如 SSD 和 NVMe 或其他什么?

另一个相关问题是如何从交换分区迁移到交换文件?我猜测使用 dd 但想确认一下,因为我直到现在才知道交换文件方案。

最后,休眠是否会成为交换文件的问题?

当然,这些问题可能与用户拥有大量 RAM 并且很少使用交换的情况有关(我猜)。所以只是为了确认这些信息将帮助我和其他有同样疑问的人。

gma*_*tht 45

交换文件的主要优点是易于调整大小,因此除非您对交换分区大小不满意,否则转换没有太大意义。为了安全起见,您可以将交换移动到加密分区,但还有其他加密交换的方法。

出于多种原因,传统上不鼓励交换文件。在 Linux v2.4 之前交换文件曾经比较,并且如果您在碎片化的文件系统上创建交换文件,速度可能仍然较慢。您可能更有可能遇到交换文件的内存错误,例如 catch-22s,在您换出一些内存之前,您无法分配更多内存,但文件系统需要在您换出之前进行分配。几年前,出于类似原因,休眠到交换文件是一个有争议的新功能。几年前,当文件系统仍然有一些错误(并且没有记录)时,大量写入重要的文件系统是不明智的,因为您可以只使用交换文件。作为传统的默认设置,交换分区的测试比交换文件多。想必Canonical认为这些问题已经不值得担心了。

现在不切换到交换文件的最大原因是“为什么要修复没有损坏的东西”。如果你不备份你的主分区,并且不小心删除了你的/home而不是你的交换文件,那么试图恢复它会很麻烦。

不切换到交换文件,另一个原因是,如果你使用的是btrfs不支持内核5.0之前交换文件 (通过缓慢的回送文件除外)


即使您决定使用交换文件,也没有真正需要删除交换分区,除非您的空间不足。如果需要,您可以同时使用两者。如果您决定删除交换分区,请首先使用 Ubuntu LiveCD 启动,然后转到try without installing. 然后在终端运行中gparted,删除交换分区,并调整剩余分区的大小(首先进行备份可能是个好主意)。

现在重新启动到您的常规 Ubuntu 安装并创建交换文件。由于交换文件的优点是易于调整大小,因此您可能需要使用 SwapSpace 来管理交换文件的大小:

sudo apt install swapspace
Run Code Online (Sandbox Code Playgroud)

您还可以按照以下说明手动创建交换文件:https : //www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-16-04

长话短说,您可以通过将以下内容粘贴到终端中来制作 1G 交换文件

sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon --show
Run Code Online (Sandbox Code Playgroud)

如果可行,您可以通过执行以下操作使其永久化:

sudo cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Run Code Online (Sandbox Code Playgroud)

  • 10 多年前,一般的建议是将 swap、/usr /home 和 /var 都放在不同的分区上,这样如果其中一个分区损坏了自己,您就可以从其他分区中恢复。那可能是在写日记很普遍之前。文件系统仍然存在错误,但偏执可能更好地用于在勒索软件无法到达的地方进行备份。 (7认同)
  • @PabloBianchi 它可以做到,但我现在更喜欢在 SSD 上交换。将交换放在旋转磁盘上也会增加磨损。现代 SSD 的磨损速度往往不会比旋转磁盘快得多。 (3认同)