Ubuntu是否支持动态交换文件大小调整?

我无法想象为什么交换文件需要固定大小。 为什么不让它动态resize,比如虚拟盒的硬盘驱动器映像文件?

它看起来不像Linux支持动态交换文件大小调整(无论如何,我无法检测到交换文件在没有swapoff / swapon情况下改变了大小)。

据推测,在编写支持它的代码时,更容易假设交换文件不会动态更改文件大小。 我也没有看到任何有用的东西。 由于您可以使用多个交换文件,因此不会阻止您根据需要创建更多交换文件。

另请注意swapon联机帮助页中的这一段:

 The swap file implementation in the kernel expects to be able to write to the file directly, without the assistance of the filesystem. This is a problem on preallocated files (eg fallocate(1)) on filesystems like XFS or ext4, and on copy-on-write filesystems like btrfs. 

我认为同样的问题将适用于动态大小的交换文件。

SwapSpace是一个实用程序,它允许您进行动态大小的交换,如果这是您正在寻找的。 我相信它可以在Ubuntu中使用。

可以使用swapon命令将交换空间添加到正在运行的系统中。 它需要一个现有的(未使用的)交换文件/分区。 要创建一个,请使用dd命令分配连续文件,然后使用mkswap将正确的控制信息添加到文件/分区。

要删除交换文件,请使用swapoff ; 然后可以删除该文件。

我怀疑这是@ user231695提到的SwapSpace守护程序。

请注意,如果交换文件正在使用,swapoff可能是一个缓慢的操作; 所有数据都必须转移到另一个交换区域。