温馨提示×

ubuntu swap不生效咋办

小樊
54
2026-09-22 11:37:38
栏目: 智能运维

在 Ubuntu 上 swap 不生效(可用 swap 为 0 或没被使用)通常有以下几种原因和对应解决办法,你可以按顺序排查。


一、先确认 swap 状态

free -h
swapon --show
  • 如果 swapon --show 没输出,说明 swap 根本没挂载
  • 如果显示了,但 free -h 里可用为 0,可能是 swap 文件/分区有问题或被禁用

二、常见原因与解决办法

1️⃣ swap 没启用(最常见)

如果是 swap 分区

sudo swapon /dev/sdXN

(把 /dev/sdXN 换成你的 swap 分区,如 /dev/sda2)

如果是 swap 文件

sudo swapon /swapfile

然后看是否生效:

swapon --show

2️⃣ /etc/fstab 没配置(重启后失效)

编辑:

sudo nano /etc/fstab

如果是 swap 文件,加一行:

/swapfile none swap sw 0 0

如果是 swap 分区:

UUID=xxxx-none swap sw 0 0

保存后执行:

sudo mount -a

3️⃣ swap 文件权限不对(只限 swap 文件)

sudo chmod 600 /swapfile
sudo chown root:root /swapfile

否则内核会拒绝使用。


4️⃣ swap 文件未创建(你以为有其实没有)

检查文件是否存在:

ls -lh /swapfile

如果没有,重新创建:

sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

5️⃣ swappiness 太低(有 swap 但不使用)

查看:

cat /proc/sys/vm/swappiness

如果是 0 或很小:

sudo sysctl vm.swappiness=60

永久生效:

echo 'vm.swappiness=60' | sudo tee -a /etc/sysctl.conf

6️⃣ 系统禁用了 swap

检查:

sudo systemctl status swap.target

或某些云服务器限制了 swap,需要:

  • 换内核参数
  • 或在云平台后台开启

7️⃣ 使用了 zram / zswap(你以为没 swap)

ls /dev/zram*
swapon --show

如果是 zram,那是“压缩内存 swap”,属正常现象。


三、快速诊断脚本(推荐)

swapon --show
free -h
cat /proc/sys/vm/swappiness
ls -lh /swapfile

把输出贴出来,我可以直接帮你判断是哪一类问题。


四、总结一句话

swap 不生效 = 没挂载 / 没 fstab / 权限错 / swappiness=0

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

  • Ubuntu 版本
  • 是 物理机 / 虚拟机 / 云服务器
  • swapon --show 的输出

我可以一步一步帮你修好。

0 踩