传统的方案
传统的方案都是使用swapoff -a来临时关闭swap,再去/etc/fstab注释或删除对应的swap挂载项。如需要持久化地关闭 swap,则需要防止重启后 swap 分区的自动挂载。Debian 默认使用 swap 分区而不是 swap 文件,且使用 UUID 进行挂载。编辑 /etc/fstab,将 swap 分区挂载相关的行加上注释符号 # 即可。

问题
但是上面方法基本上对云服务厂商那些机器有作用,本文是在自己的VMware虚拟机创建了一台debian13的虚拟机,使用这个方法并不能完全禁用swap,甚至重启系统还会自动重新创建swap分区。查阅资料后发现,Debian 默认使用 systemd 接管 swap 的挂载。systemd 对于交换分区的激活方式都是通过 /usr/lib/systemd/system-generators 中的可执行文件,具体可分为两种,因此只修改 /etc/fstab 是不够的,必须对 systemd 相关的设置进行修改。可以自行查阅下面的参考文献详细了解。
解决方案
在操作之前先临时关闭swap
swapoff -a
永久关闭:注释 /etc/fstab 中的 swap 行
sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab
随后执行systemctl list-units --type=swap --all,查看所有与 swap 相关的 systemd 项:
systemctl list-units --type=swap --all

接着禁用所有 swap 相关的目标
systemctl mask swap.target
执行之后reboot命令重启系统即可关闭相关项。重启之后 swap 分区就不会再被挂载。

验证关闭情况
# 应该所有swap项是空的 systemctl list-units --type=swap --all # 应该没有任何输出 swapon --show # swap 应该为 0 free -h

参考文献
本文地址:https://www.mainblog.cn/346.html
版权声明:本文为原创文章,版权归 阁主 所有,欢迎分享本文,转载请保留出处!
免责申明:有些内容源于网络,没能联系到作者。如侵犯到你的权益请告知,我们会尽快删除相关内容。
版权声明:本文为原创文章,版权归 阁主 所有,欢迎分享本文,转载请保留出处!
免责申明:有些内容源于网络,没能联系到作者。如侵犯到你的权益请告知,我们会尽快删除相关内容。
黔ICP备19006353号-2
贵公网安备 52052102000042号