温馨提示×

怎么排查debian swapper故障

小樊
38
2026-09-07 10:49:38
栏目: 智能运维

在 Debian(及其他 Linux 发行版)里,swapper / swap 相关“故障”通常表现为:

  • 系统卡死、OOM(Out of Memory)
  • swapon 失败
  • 开机不挂载 swap
  • free 看不到 swap
  • 休眠(hibernate)失败
  • dmesg 中出现 swap 报错

下面按排查思路 + 常用命令 + 常见故障处理来说明。


一、确认 swap 当前状态

1. 查看 swap 是否启用

free -h
swapon --show
cat /proc/swaps

正常应能看到:

  • /dev/sdXn/swapfile
  • 大小不为 0

2. 查看内核日志

dmesg | grep -i swap
journalctl -k | grep -i swap

二、排查 swap 配置文件

1. /etc/fstab 是否正确

cat /etc/fstab

示例(分区):

UUID=xxxx none swap sw 0 0

示例(文件):

/swapfile none swap sw 0 0

常见问题:

  • UUID 错
  • 文件系统类型写错
  • sw 参数缺失

可手动测试:

mount -a
swapon -a

三、Swap 分区故障排查

1. 确认分区是否存在

lsblk
fdisk -l

2. 检查分区是否标记为 swap

fdisk -l /dev/sdX

应看到:

Type: Linux swap

若不是:

fdisk /dev/sdX
# t -> 82 (Linux swap)

3. 格式化 swap

mkswap /dev/sdXn
swapon /dev/sdXn

四、Swap 文件故障排查(常见于云服务器)

1. 检查 swap 文件是否存在

ls -lh /swapfile

2. 创建 swap 文件(如不存在)

fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

3. 注意文件系统限制

  • Btrfs:需 swapfile 在子卷且不支持 COW
  • 某些容器环境:不支持 swap 文件

五、Swap 被禁用或不工作

1. 被内核参数禁用

cat /proc/sys/vm/swappiness

临时调整:

sysctl vm.swappiness=60

永久:

/etc/sysctl.conf
vm.swappiness=60

2. 被 systemd 禁用

systemctl status swap.target

六、休眠(hibernate)失败

1. 检查 resume 设备

cat /etc/initramfs-tools/conf.d/resume

应类似:

RESUME=UUID=xxxx

更新:

update-initramfs -u

2. swap 小于内存

休眠要求:

swap >= RAM

七、OOM / 系统卡死相关

1. 查看 OOM 日志

dmesg | grep -i oom
journalctl | grep -i oom

2. 调整 swap 使用策略

vm.swappiness=10~60
vm.vfs_cache_pressure=50

八、快速排错清单(总结)

swapon --show 是否为空
/etc/fstab 是否正确
✅ swap 分区/文件是否存在
✅ 是否格式化(mkswap)
✅ 内核是否禁用 swap
✅ 是否磁盘满导致 swap 创建失败


如果你能贴出:

  • swapon --show
  • cat /etc/fstab
  • dmesg | grep swap
  • 具体报错信息

我可以帮你精确定位是哪一类 swap 故障

0