创建具有打孔支持的稀疏(自动扩展和收缩)交换文件

创建具有打孔支持的稀疏(自动扩展和收缩)交换文件

我有这个疯狂的想法,并且想知道这种方法的陷阱(或者它是否可以在没有死锁的情况下工作......等等)。

目标是创建一个自动扩展和收缩的单个交换空间,提供足够的容量来匹配整个硬盘驱动器。性能在这里并不是一个大目标。这个想法是为罕见的过度使用内存的情况提供一个缓冲区。

假设我们有1块10GB的硬盘。我们可以通过以下方式创建稀疏交换文件(这源自 BTRFS 交换文件解决方法):

swapfile=$(losetup -f)
truncate -s 10G /swap
losetup $swapfile /swap
mkswap  $swapfile
swapon  $swapfile

我们需要执行上述操作,因为swapon不允许稀疏文件。

所以我们这里有两个问题:

  1. 稀疏会增加碎片,虽然这会降低性能,但它不应该阻止它正常工作吗?
  2. 稀疏文件的大小不会收缩,因此我们需要进行打孔(https://stackoverflow.com/a/2026015/582917&https://unix.stackexchange.com/a/52029/56970),所以也许我们可以定期运行fallocate -d /swapfallocate -d $swapfile(我还没有尝试过),以便在交换文件中打孔,使其在使用后收缩。

我们可以设置vm.swappiness = 0vm.swappiness = 1使进程(对我来说更重要)不太可能使用此交换。

最后,根据中的说明,这可以与休眠一起使用吗?https://wiki.archlinux.org/index.php/Power_management/Sus​​pend_and_hibernate#Hibernation_into_swap_file

相关内容