明白了 👍 我给你写一个 完整、详细的关闭 Linux Swap 教程,带上每个命令的解释,直接可以放在博客文章里使用。内容如下:
如何在 Linux 中关闭 Swap(虚拟内存)
在服务器上运行数据库、券商接口、交易系统等延迟敏感的应用时,我们通常希望关闭 Swap(交换分区/虚拟内存),避免因为内存换页导致系统卡顿甚至交易延迟。下面介绍如何临时和永久关闭 Swap,并解释每个步骤的作用。
1. 查看当前内存与 Swap 使用情况
free -h
解释:
-
free 命令用于显示系统的内存和 Swap 使用情况。
-
-h 表示 human-readable,以 MB/GB 的形式显示,方便阅读。
示例输出:
total used free shared buff/cache available
Mem: 1.7Gi 440Mi 738Mi 5.0Mi 774Mi 1.3Gi
Swap: 3.0Gi 0.0Ki 3.0Gi
可以看到这里系统有 3GB 的 Swap,尚未使用。
2. 临时关闭 Swap(立即生效)
swapoff -a
解释:
-
swapoff 用来关闭 Swap。
-
-a 参数表示 关闭所有 Swap 设备/文件(无论是 swapfile 还是 swap 分区)。
-
此操作 立即生效,但 重启后会恢复。
再次查看:
free -h
输出将显示:
Swap: 0B 0B 0B
3. 永久关闭 Swap(重启后依然关闭)
3.1 编辑
/etc/fstab
vi /etc/fstab
解释:
-
/etc/fstab 是 Linux 的文件系统挂载表,系统启动时会根据这里的配置挂载磁盘和分区。
-
Swap 的挂载信息也写在这里,所以需要删除或注释掉。
示例(需要删除/注释的行):
/swapfile swap swap defaults 0 0
或者:
UUID=ba0dfde1-c9b8-47da-8307-5f25e3a7aa1c swap swap defaults 0 0
在前面加 # 注释掉:
# /swapfile swap swap defaults 0 0
3.2 让修改生效
systemctl daemon-reexec
解释:
-
systemctl 管理 systemd 守护进程。
-
daemon-reexec 表示 重新加载 systemd 自身,应用 /etc/fstab 等系统配置文件的变更。
3.3 确保 Swap 已关闭
swapoff -a
解释:
-
再执行一次,确保当前会话中 Swap 已完全关闭。
4. 可选:删除 Swap 文件/分区
如果你使用的是 swapfile,可以直接删除:
rm -f /swapfile
解释:
-
rm -f 表示强制删除文件,不提示确认。
-
删除后可以释放磁盘空间。
如果使用的是独立分区(如 /dev/vdb2),可以不删除,只是不再挂载。以后若需要,可以再手动启用。
5. 再次确认
free -h
输出应显示:
Swap: 0B 0B 0B
此时说明系统已经彻底关闭 Swap。
总结
-
临时关闭:swapoff -a,立即生效,重启后恢复。
-
永久关闭:编辑 /etc/fstab,注释掉 swap 行,并执行 systemctl daemon-reexec。
-
检查结果:用 free -h 查看 Swap 是否为 0。
对于交易系统、数据库服务器等延迟敏感场景,关闭 Swap 可以避免换页带来的性能抖动,但要注意:内存不足时进程会直接被 OOM Killer 杀掉,因此需要合理分配物理内存。
要不要我帮你把这篇文章再加一个 对比图(有 Swap 与无 Swap 的区别,性能 vs 风险),让你的 blog 读者更直观理解?