我在笔记本电脑和台式机上安装了Archlinux x86_64。在安装时,我已经用fdisk创建了一个交换分区,并使用sudo swapon /dev/sda3启用了该分区。
但是,即使sysctl vm.swappiness设置为0,当系统内存被一半使用时,我的系统仍然会写入交换分区,并且在复制/移动一个大文件到某个地方时,这使得系统非常慢。在这种情况下,我过去常常用sudo swapoff /dev/sda3关闭交换。
现在,我通常在引导后关闭交换,并在真正需要交换时启用它(我有一个用于监视RAM使用情况的ruby脚本,并在需要时打开交换)。在下一次引导中,交换再次被激活。我在/etc/fstab中没有关于交换的条目。
是否有一种方法可以永久禁用交换设备而不删除该设备?
发布于 2020-08-18 17:41:12
ArchWiki提到Archlinux上的交换是由systemd管理的,并描述了如何通过掩蔽负责交换的systemd单元来禁用自动激活。因此,在Archlinux上,以下内容应该能够实现您想要的目标:
#swapoff -a禁用交换,或者为特定的交换传递特定的设备/文件名。此时,交换将被禁用,但将在下一次引导期间自动重新激活并启用。#systemctl --type swap查找交换系统单元。对于每个*.swap单元,使用#systemctl mask <unit_name>找到掩码。这个过程可以取消,只需在先前屏蔽的单元上运行systemctl unmask <unit_name>,然后使用swapon打开交换。
这摘自以下两篇Archwiki文章:
发布于 2019-11-08 19:31:10
您可以通过创建包含以下内容的文件/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进行检查,并在必要时对其进行更改。
https://unix.stackexchange.com/questions/551185
复制相似问题