在 Ubuntu 中遇到 swap 无效(不生效 / 不自动挂载 / 不释放内存) 是很常见的问题。下面按「排查 → 解决」的思路一步步来。
swapon --show
free -h
swapon --show 为空,说明 swap 没启用free -h 中 Swap 为 0,也是没生效lsblk
或
sudo blkid | grep swap
如果是 swap 分区:
sudo swapon /dev/sdXn
如果是 swap 文件(如 /swapfile):
sudo swapon /swapfile
/etc/fstabcat /etc/fstab
应有类似内容:
swap 分区
UUID=xxxx none swap sw 0 0
swap 文件
/swapfile none swap sw 0 0
如果没有,手动添加(用实际路径或 UUID)。
如果是 /swapfile:
sudo chmod 600 /swapfile
sudo chown root:root /swapfile
否则系统会拒绝启用。
如果根本没有 swap:
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
并加入 /etc/fstab。
查看:
cat /proc/sys/vm/swappiness
默认一般是 60,如果是 0 或 1,几乎不用 swap。
临时修改:
sudo sysctl vm.swappiness=60
永久生效:
echo 'vm.swappiness=60' | sudo tee -a /etc/sysctl.conf
有些 Ubuntu(尤其 22.04+)默认用 zram:
swapon --show
如果看到 /dev/zram0,说明用的是压缩内存 swap。
这是正常的,不需要传统 swap。
df -h
如果 / 满了,swap 文件无法创建或启用。
swapon --show 有输出/etc/fstab 配置正确你可以直接把下面命令的输出贴给我:
swapon --show
free -h
cat /etc/fstab