Ubuntu Swapper故障排查与解决

一 快速判断与定位
sudo swapon --show;未显示则未激活。free -h;“available”接近0与否需要关注。df -h;根分区或Swap所在分区不可缺少充足的剩余空间。sudo journalctl -xe | grep -i swapper,或grep -i swap /var/log/syslog、dmesg | grep -i swapper,定位挂载失败、权限错误、设备不存在等具体原因。二 常见故障与修复步骤
/etc/fstab,把加密Swap相关行注释掉(如/dev/mapper/cryptswap1 none swap sw 0 0),保存以后执行reboot以便先让系统恢复可用。sudo swapoff -asudo fallocate -l 1G /swapfilesudo chmod 600 /swapfilesudo mkswap /swapfilesudo swapon /swapfile/etc/fstab添加:/swapfile none swap sw 0 0/etc/crypttab),然后再update-initramfs -u并对其进行更新/etc/fstab相应条目。sudo swapon /dev/sdXY;或启用全部:sudo swapon -a(依赖/etc/fstab正确)。sudo swapoff -asudo mkswap /dev/sdXY;对文件:sudo mkswap /swapfilesudo swapon /dev/sdXY 或 sudo swapon /swapfile/etc/fstab中的条目是否无误,包括设备路径或UUID;如有错误,修正后再swapon -a进行测试。vm.dirty_background_ratio=5、vm.dirty_ratio=10,随后执行sysctl -p;在生产环境中需要谨慎评估。vm.swappiness(默认60):先查看cat /proc/sys/vm/swappiness;临时设置sysctl vm.swappiness=10;永久设置则写入/etc/sysctl.conf:vm.swappiness=10。/etc/sysctl.conf中添加vm.min_free_kbytes=250000并重新启动,使Swap更早触发,避免内存紧张时出现卡顿。三 验证与优化
swapon --show应当可以看到Swap设备或文件及其容量;free -h其中Swap“used”会随负载上升;journalctl -xe | grep -i swapper不再出现挂载失败或I/O阻塞错误。vm.swappiness:内存<8GB建议10–30;内存>为减少不必要的Swap抖动,8GB建议≤10**。vm.min_free_kbytes(如250000),避免直到空闲内存极低时才触发Swap而引起卡顿。sudo apt update && sudo apt upgrade,必要时安装新版内核linux-generic,修复已知Swap/存储相关缺陷。四 应急与数据保护
fsck,检查修复时不可挂载),完成后再修正并按上文重建Swap/etc/fstab。sudo grub-install /dev/sdX 与 sudo update-grub,然后重启。