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


13

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


Linux不支持动态交换空间大小,除非您计入在运行时添加和删除整个交换空间的选项。(Windows也不改变,甚至后者也没有。)
David Foerster

Mac是否支持动态交换?
Tom Mercer

我不知道。这是我没有研究过的完全不同的内核。可能与Linux中的交换空间类似。无论如何,你可以请打开一个新的问题的Unix和Linux提出不同的,如果你有关于OS X的Darwin内核新的或后续的问题?评论部分不适用于新问题或扩展讨论。:-) 谢谢。
David Foerster

在Windows上,@ DavidFoerster可以为每个页面文件设置最小和最大大小,Windows会在必要时增加页面文件的大小。tomshardware.com/news/...
phuclv

Answers:


11

看起来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 (e.g.  fallocate(1)) on filesystems
like XFS or ext4, and on copy-on-write filesystems like btrfs.

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


看起来这是真的,并且swapspace甚至不会动态调整swap的大小。
Tom Mercer

2

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


尽管它在2年前发布了新版本,但为Ubuntu打包的版本似乎都是古老的。效果如何?
muru

我无法想象用于写入交换文件的方法已更改,但我不能肯定地说。在debian上运作良好。
user231695 '17

我仍然投票支持您的答案,因为创建新空间就这么简单。
user231695 '17

我将尝试一下,然后报告。
Tom Mercer

@ user231695虽然创建一个新的交换空间很简单,但它非常不便,并且可能完全无法解决。用户唯一要添加新交换空间的时间是现有交换空间已满的那一刻。因此,我的问题是动态确定交换文件的大小。
汤姆·默瑟

1

我知道已经晚了,但是我认为动态交换的最佳解决方案是:

sudo apt install dphys-swapfile
sudo update-rc.d dphys-swapfile enable

然后CONF_SWAPFACTOR=2进入/etc/dphys-swapfile最后

sudo service dphys-swapfile start

它似乎没有动态调整交换大小。看起来像一个脚本,用于初始化一定大小的交换文件,默认大小为2x RAM容量。
汤姆·默瑟

嗨,@ TomMercer设置了swapfactor和maxswap,根据文件中的注释:“#将大小设置为计算值,这乘以RAM大小,可以动态调整,确保有足够的交换空间而不会浪费过多的磁盘空间”。“动态适应”似乎是您想要的。最佳
Denis Pitzalis

当我使用操作系统并填充RAM时,它是否使我的交换文件的大小在1KB和16GB之间变化?这就是“动态调整大小”交换的含义。创建一个RAM文件大小倍数的交换文件不是动态的。在RAM填满之前根本没有交换文件,然后您希望交换文件恰好是您正在使用的VRAM的大小。如果关闭正在处理的标签或巨大图像,则交换文件应动态缩小尺寸。通过动态调整自身大小,交换文件应始终完全准确地100%充满。
汤姆·默瑟

0

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

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

我怀疑这是SwapSpace@ user231695提到的dæmon。

请注意,如果使用交换文件,交换操作可能会很慢。所有数据都必须传输到另一个交换区域。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.