温馨提示×

Ubuntu能禁用Swap吗

小樊
63
2026-07-13 05:05:09
栏目: 智能运维

可以的,Ubuntu 完全可以禁用 Swap(交换分区/交换文件),但是否建议禁用,取决于你的使用场景。下面分情况说明,并给出操作方法。


一、什么时候可以禁用 Swap?

可以考虑禁用 Swap 的情况:

  • 内存非常充足(比如 ≥16GB,且负载不高)
  • 对延迟极其敏感(如某些实时系统、实时数据库)
  • 使用 SSD,但想减少写入(Swap 对 SSD 寿命影响很小,一般可忽略)
  • 明确知道应用不会触发 OOM(内存溢出)

不建议禁用 Swap 的情况:

  • 内存较小(≤8GB)
  • 运行数据库(MySQL / PostgreSQL / MongoDB 等)
  • 运行容器(Docker / Kubernetes)
  • 系统需要稳定性优先

⚠️ 即使内存很大,Linux 也经常“倾向于”使用 Swap 来做内存回收,而不是立刻 OOM 杀进程。


二、临时禁用 Swap(重启后恢复)

sudo swapoff -a

查看是否关闭:

free -h

如果 Swap 行全部为 0,说明已关闭。


三、永久禁用 Swap(推荐做法)

方法 1:禁用 Swap 分区(最常见)

  1. 查看当前 Swap:
swapon --show
  1. 编辑 /etc/fstab
sudo nano /etc/fstab
  1. 找到类似这一行(UUID 或设备名):
UUID=xxxx-xxxx none swap sw 0 0

或:

/dev/sdaX none swap sw 0 0
  1. 在该行前加 # 注释掉:
#UUID=xxxx-xxxx none swap sw 0 0
  1. 保存后执行:
sudo swapoff -a

重启后 Swap 不会自动启用。


方法 2:禁用 Swap 文件(Ubuntu 20.04+ 默认)

  1. 查看:
swapon --show
  1. 关闭:
sudo swapoff /swapfile
  1. 删除 /etc/fstab 中的:
/swapfile none swap sw 0 0
  1. 可选:删除文件
sudo rm /swapfile

四、只减少 Swap 使用,而不完全禁用(更推荐)

如果你只是想 减少 Swap 被频繁使用,可以调整 swappiness

cat /proc/sys/vm/swappiness

默认一般是 60

临时修改:

sudo sysctl vm.swappiness=10

永久修改:

sudo nano /etc/sysctl.conf

添加:

vm.swappiness=10

推荐值:

  • 桌面 / 服务器:10–30
  • 数据库服务器:1–10
  • 完全禁用:0(不推荐)

五、总结建议

场景 建议
内存大、追求性能 降低 swappiness
内存小 保留 Swap
数据库 / 容器 保留 Swap
明确不需要 可禁用

如果你愿意,可以告诉我:

  • Ubuntu 版本
  • 内存大小
  • 主要用途(桌面 / 服务器 / Docker / 游戏 / AI 训练)

我可以帮你给出最合适的 Swap 配置方案

0