如何在 archlinux 上永久禁用交换?

如何在 archlinux 上永久禁用交换?

我在我的笔记本电脑和台式机上安装了 Archlinux x86_64。在安装时,我使用 fdisk 创建了一个交换分区,并使用sudo swapon /dev/sda3.

但即使sysctl vm.swappiness设置为0,当我的系统内存使用一半时,我的系统仍然会写入交换分区,并且当时我将一个大文件复制/移动到某个地方,这使得系统非常慢。在这种情况下,我曾经使用 关闭交换sudo swapoff /dev/sda3

如今,我通常在启动后关闭交换,并在真正需要交换时启用它(并且我有一个 ruby​​ 脚本来监视 RAM 使用情况,并在需要时打开交换)。下次启动时交换会再次激活。我在有关交换中没有条目/etc/fstab

有没有办法永久禁用交换设备而不删除设备?

答案1

建筑维基百科提到 Archlinux 上的交换是由 systemd 管理的,并描述了如何通过屏蔽负责交换的 systemd 单元来禁用自动激活。因此,在 Archlinux 上,以下内容应该可以实现您正在寻找的内容:

  1. 使用#swapoff -a特定交换禁用交换或传递特定设备/文件名。此时交换已禁用,但将在下次启动时自动重新激活并启用。
  2. 为了防止自动激活交换,请使用 查找交换 systemd 单元#systemctl --type swap。对于每个*.swap发现的单位,它使用 进行掩码#systemctl mask <unit_name>

systemctl unmask <unit_name>只需在先前屏蔽的单元上运行,然后使用打开交换即可撤消此过程swapon

这取自以下两篇 Archwiki 文章:

答案2

/lib/systemd/system/turnswapoff.service您可以让 systemd 通过创建包含以下内容的文件来完成此操作:

[Unit]
Description=Turn swap off 

[Service]
ExecStart=/sbin/swapoff -a

[Install]
WantedBy=multi-user.target

并确保它在启动时运行sudo systemctl enable turnswapoff

的位置可能swapoff不是/sbin/swapoff。您可以检查which swapoff并在必要时更改它

相关内容