在 Linux 系统中关闭 swap 分区(或交换文件)的步骤如下,请务必在操作前保存所有数据,以免丢失:
📌 完整操作步骤:
1. 查看当前 swap 使用情况
free -h
swapon --show # 查看活跃的 swap 设备
示例输出:
NAME TYPE SIZE USED PRIO
/dev/sdb1 partition 2G 0B -2
2. 临时关闭 swap
sudo swapoff -a # 关闭所有 swap 分区/文件(立即生效但重启失效)
3. 永久关闭 swap
编辑 /etc/fstab
文件:
sudo vim /etc/fstab # 也可用 nano 或其他编辑器
-
找到 swap 相关行 ,在行首添加
注释或直接删除该行
示例(注释前):
/dev/sdb1 none swap sw 0 0 # 或针对 swap 文件: /swapfile none swap sw 0 0
修改后:
#/dev/sdb1 none swap sw 0 0 # 已注释禁用
🔍 提示:使用
grep swap /etc/fstab
快速定位 swap 配置。
4. 重启系统验证
sudo reboot
重启后检查:
free -h # Swap 应显示 0
swapon --show # 无输出即表示已关闭
⚠️ 重要注意事项:
-
内存不足风险:
关闭 swap 后系统将无法使用磁盘空间缓解内存压力,若物理内存耗尽会导致进程崩溃或系统锁定。建议仅在以下情况操作:- 物理内存非常充足(如服务器的内存 > 总需求峰值)
- 特定优化场景(如数据库服务器)
-
临时启用 swap:
若需临时恢复 swap(不修改 fstab):sudo swapon -a # 重新启用 /etc/fstab 中未注释的 swap
-
删除 swap 文件(可选):
如果使用 swap 文件且想彻底删除:sudo swapoff /swapfile # 先关闭 sudo rm /swapfile # 删除文件
-
调整内核参数(高级可选):
如需彻底禁止系统使用 swap(即使 fstab 存在配置):echo "vm.swappiness=0" | sudo tee -a /etc/sysctl.conf # 禁止倾向使用 swap sudo sysctl -p # 立即生效
💡 常见问题解决:
swapoff
卡住:通常因 swap 使用率较高引起,尝试:- 提前清理内存占用(结束非关键进程)
- 增量关闭:
sudo swapoff /dev/sdb1
(指定具体设备) - 耐心等待(系统需将 swap 数据移回内存)
- 重启后 swap 仍存在:
检查是否还有其他 swap 项在/etc/fstab
中未被注释,或存在 systemd 的 swap 单元(通过systemctl list-unit-files | grep swap
检查)。
通过以上步骤,您已安全关闭 Linux 系统的 swap 分区。✅