在 Ubuntu 上 swap 不生效(可用 swap 为 0 或没被使用)通常有以下几种原因和对应解决办法,你可以按顺序排查。
free -h
swapon --show
swapon --show 没输出,说明 swap 根本没挂载free -h 里可用为 0,可能是 swap 文件/分区有问题或被禁用sudo swapon /dev/sdXN
(把 /dev/sdXN 换成你的 swap 分区,如 /dev/sda2)
sudo swapon /swapfile
然后看是否生效:
swapon --show
编辑:
sudo nano /etc/fstab
如果是 swap 文件,加一行:
/swapfile none swap sw 0 0
如果是 swap 分区:
UUID=xxxx-none swap sw 0 0
保存后执行:
sudo mount -a
sudo chmod 600 /swapfile
sudo chown root:root /swapfile
否则内核会拒绝使用。
检查文件是否存在:
ls -lh /swapfile
如果没有,重新创建:
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
查看:
cat /proc/sys/vm/swappiness
如果是 0 或很小:
sudo sysctl vm.swappiness=60
永久生效:
echo 'vm.swappiness=60' | sudo tee -a /etc/sysctl.conf
检查:
sudo systemctl status swap.target
或某些云服务器限制了 swap,需要:
ls /dev/zram*
swapon --show
如果是 zram,那是“压缩内存 swap”,属正常现象。
swapon --show
free -h
cat /proc/sys/vm/swappiness
ls -lh /swapfile
把输出贴出来,我可以直接帮你判断是哪一类问题。
swap 不生效 = 没挂载 / 没 fstab / 权限错 / swappiness=0
如果你愿意,可以告诉我:
swapon --show 的输出我可以一步一步帮你修好。