在 Ubuntu 中,swap 失效(即系统配置了 swap,但实际没有使用,或开机后 swap 为 0)是比较常见的问题。下面按常见原因 → 排查方法 → 解决办法来说明。
很多人以为:
就“自动生效”,但实际上必须显式启用。
检查:
swapon --show
或
free -h
如果 Swap: 是 0 或为空,说明没启用。
解决:
如果是 swap 分区:
sudo swapon /dev/sdXn
如果是 swapfile:
sudo swapon /swapfile
系统重启后 swap 消失,90% 是 fstab 问题。
正确示例:
swap 分区:
UUID=xxxx-xxxx none swap sw 0 0
swapfile:
/swapfile none swap sw 0 0
常见错误:
sw检查:
sudo mount -a
或重启后:
swapon --show
swapfile 必须是 600 权限,否则会被拒绝。
sudo chmod 600 /swapfile
sudo chown root:root /swapfile
错误方式(不行):
echo "swap" > /swapfile
正确方式:
sudo fallocate -l 4G /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
(fallocate 不可用可用 dd)
Ubuntu 默认:
vm.swappiness = 60
如果被改成 0~10,系统几乎不用 swap。
查看:
cat /proc/sys/vm/swappiness
临时修改:
sudo sysctl vm.swappiness=60
永久修改:
sudo nano /etc/sysctl.conf
添加:
vm.swappiness=60
这是正常现象:
这不是“失效”。
某些 Ubuntu(尤其 22.04+)启用了 zram:
swapon --show
可能看到:
/dev/zram0
这是压缩内存 swap,不是失效。
swap 分区异常时:
dmesg | grep swap
可能看到 I/O 错误。
swapon --show
free -h
cat /etc/fstab
cat /proc/sys/vm/swappiness
ls -l /swapfile
如果你愿意,可以贴出:
swapon --showcat /etc/fstabfree -h我可以直接帮你判断是哪一类问题。