我在笔记本电脑和台式机上安装了 Archlinux x86_64。在安装时,我使用 fdisk 创建了一个交换分区,并使用sudo swapon /dev/sda3
.
但是即使sysctl vm.swappiness
设置为0
,当我的系统内存使用一半时,我的系统仍然会写入交换分区,并且当时我将一个大文件复制/移动到某个地方,这使得系统非常慢。在这种情况下,我曾经用sudo swapoff /dev/sda3
.
现在,我通常在启动后关闭交换,并在我真正需要交换时启用它(并且我有一个 ruby 脚本来监控 RAM 使用情况,并在需要时打开交换)。下次启动时会再次激活交换。我没有/etc/fstab
关于交换的条目。
有没有办法在不删除设备的情况下永久禁用交换设备?
ArchWiki提到 Archlinux 上的交换由 systemd 管理,并描述了如何通过屏蔽负责交换的 systemd 单元来禁用自动激活。因此,在 Archlinux 上,以下内容应该可以实现您正在寻找的内容:
#swapoff -a
使用或传递特定交换的特定设备/文件名禁用交换。此时交换被禁用,但会在下次启动时自动重新激活并启用。#systemctl --type swap
. 对于找到的每个*.swap
单元,它使用掩码#systemctl mask <unit_name>
。这个过程可以通过
systemctl unmask <unit_name>
在之前屏蔽的单元上运行,然后使用打开交换来撤销swapon
。这取自以下两篇 Archwiki 文章:
您可以让 systemd 通过创建
/lib/systemd/system/turnswapoff.service
包含以下内容的文件来执行此操作:并确保它在启动时运行
sudo systemctl enable turnswapoff
可能不是 的
swapoff
位置/sbin/swapoff
。您可以检查which swapoff
并在必要时进行更改