温馨提示×

Ubuntu Swapper故障如何排查解决

小樊
36
2025-12-21 22:20:10
栏目: 智能运维

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/syslogdmesg | grep -i swapper,定位挂载失败、权限错误、设备不存在等具体原因。

二 常见故障与修复步骤

  • 启动阶段卡住并反复要求输入加密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 -a
      • sudo fallocate -l 1G /swapfile
      • sudo chmod 600 /swapfile
      • sudo mkswap /swapfile
      • sudo 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/sdXYsudo swapon /swapfile
    • 核对/etc/fstab条目是否正确(设备路径或UUID),错误则修正后swapon -a测试。
  • 内核日志出现“swapper blocked for more than 120 seconds”
    • 优先排查底层I/O:存储离线/严重延迟、RAID异常、宿主机资源不足等;必要时重启宿主机/存储、检查阵列健康。
    • 作为临时缓解(仅在确认是脏页回写导致时),可调小脏页阈值(示例值):vm.dirty_background_ratio=5vm.dirty_ratio=10,并执行sysctl -p;生产环境请谨慎评估。
  • 系统可用内存很低但Swap迟迟不启用
    • 适度降低vm.swappiness(默认60):查看cat /proc/sys/vm/swappiness;临时sysctl vm.swappiness=10;永久写入/etc/sysctl.confvm.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/sdXsudo update-grub,然后重启。

0