Ubuntu Swapper故障如何排查解决
导读:Ubuntu Swapper故障排查与解决 一 快速判断与定位 识别“swapper”相关现象: 启动卡在“a start job is running for dev-mapper-cryptswap1.device (no limi...
Ubuntu Swapper故障排查与解决
一 快速判断与定位
- 识别“swapper”相关现象:
- 启动卡在“a start job is running for dev-mapper-cryptswap1.device (no limit)”或反复提示输入加密交换分区密码,多为加密Swap配置/解锁失败。
- 内核日志出现“INFO: task swapper:1 blocked for more than 120 seconds”,表示系统空闲线程因I/O长时间阻塞,常见于磁盘/存储异常或严重延迟。
- 系统可用内存极低但Swap未使用,可能是未启用、策略过于保守或配置错误。
- 快速检查清单:
- 查看是否启用Swap:
sudo swapon --show;未显示则未激活。 - 查看内存与Swap概况:
free -h;关注“available”是否接近0。 - 检查磁盘空间:
df -h;确保根分区或Swap所在分区剩余空间充足。 - 查看系统日志:
sudo journalctl -xe | grep -i swapper,或grep -i swap /var/log/syslog、dmesg | grep -i swapper,定位挂载失败、权限错误、设备不存在等具体原因。
- 查看是否启用Swap:
二 常见故障与修复步骤
- 启动阶段卡住并反复要求输入加密Swap密码
- 进入救援/单用户:重启,长按Shift进入GRUB,选择“Advanced options for Ubuntu”→“Recovery mode”→“Drop to root shell”。
- 临时绕过故障项:编辑
/etc/fstab,注释掉与加密Swap相关的行(如/dev/mapper/cryptswap1 none swap sw 0 0),保存后执行reboot先恢复系统可用。 - 重建加密Swap(示例为1G):
sudo swapoff -asudo fallocate -l 1G /swapfilesudo chmod 600 /swapfilesudo mkswap /swapfilesudo swapon /swapfile- 在
/etc/fstab添加:/swapfile none swap sw 0 0 - 如需使用加密Swap,按发行版指引重新配置(如
/etc/crypttab),再update-initramfs -u并更新/etc/fstab对应条目。
- Swap未启用或容量异常
- 启用指定分区:
sudo swapon /dev/sdXY;或启用全部:sudo swapon -a(依赖/etc/fstab正确)。 - 若分区损坏或不存在,重建:
sudo swapoff -a- 对分区:
sudo mkswap /dev/sdXY;对文件:sudo mkswap /swapfile sudo swapon /dev/sdXY或sudo swapon /swapfile
- 核对
/etc/fstab条目是否正确(设备路径或UUID),错误则修正后swapon -a测试。
- 启用指定分区:
- 内核日志出现“swapper blocked for more than 120 seconds”
- 优先排查底层I/O:存储离线/严重延迟、RAID异常、宿主机资源不足等;必要时重启宿主机/存储、检查阵列健康。
- 作为临时缓解(仅在确认是脏页回写导致时),可调小脏页阈值(示例值):
vm.dirty_background_ratio=5、vm.dirty_ratio=10,并执行sysctl -p;生产环境请谨慎评估。
- 系统可用内存很低但Swap迟迟不启用
- 适度降低
vm.swappiness(默认60):查看cat /proc/sys/vm/swappiness;临时sysctl vm.swappiness=10;永久写入/etc/sysctl.conf:vm.swappiness=10。 - 适度提高内核保留空闲内存阈值(示例250000 KB):在
/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**;内存**> 8GB建议≤10**,以减少不必要的Swap抖动。 - 适度设置
vm.min_free_kbytes(如250000)以避免在极低空闲时才触发Swap导致卡顿。 - 保持系统与内核更新:
sudo apt update & & sudo apt upgrade,必要时安装新版内核linux-generic,修复已知Swap/存储相关缺陷。
- 合理设置
四 应急与数据保护
- 无法进入系统时的应急路径:
- 使用Live USB启动,挂载原系统分区并备份重要数据;检查并修复文件系统(
fsck,需在未挂载状态),再按上文重建Swap与修正/etc/fstab。 - 若引导异常,可在Live环境中重装GRUB:
sudo grub-install /dev/sdX与sudo update-grub,然后重启。
- 使用Live USB启动,挂载原系统分区并备份重要数据;检查并修复文件系统(
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Swapper故障如何排查解决
本文地址: https://pptw.com/jishu/777541.html
