温馨提示×

怎么排查debian swap故障

小樊
44
2026-10-10 22:05:33
栏目: 智能运维

在 Debian 系统中,swap 故障通常表现为:系统卡顿、OOM 被杀进程、swap 未启用、swap 使用异常、swap 文件/分区损坏等。下面按排查思路 + 常用命令 + 常见故障处理来说明。


一、先确认 swap 状态

1. 查看 swap 是否启用

swapon --show

或

free -h

✅ 正常应有 swap 行且大小不为 0
❌ 若为空,说明 swap 未启用


2. 查看内核日志

dmesg | grep -i swap

或

journalctl -k | grep -i swap

常见问题:

  • swap: failed to enable
  • swap file has holes
  • read-error on swap device

二、swap 未启用的常见原因

1. swap 分区未挂载

cat /etc/fstab

示例:

UUID=xxxx none swap sw 0 0

检查:

blkid

确认 UUID 是否正确

手动启用:

swapon -a

2. swap 文件有“空洞”(常见于 fallocate)

❌ 错误方式:

fallocate -l 2G /swapfile

✅ 正确方式:

dd if=/dev/zero of=/swapfile bs=1M count=2048
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

3. swap 文件权限不对

ls -l /swapfile

应为:

-rw------- 1 root root

修复:

chmod 600 /swapfile

三、swap 使用异常 / 性能问题

1. swap 被频繁使用(swap thrashing)

vmstat 1

关注:

  • si(swap in)
  • so(swap out)

长期不为 0 → 内存不足

解决:

  • 增加内存
  • 调整 swappiness

查看:

cat /proc/sys/vm/swappiness

默认 60,可临时降低:

sysctl vm.swappiness=10

永久:

/etc/sysctl.conf
vm.swappiness=10

2. swap 分区损坏

fsck -f /dev/sdX

(swap 一般不需要 fsck,但底层磁盘问题需检查)

重新创建:

swapoff /dev/sdX
mkswap /dev/sdX
swapon /dev/sdX

四、ZRAM / ZSWAP 特殊情况(Debian 新版本)

查看:

lsmod | grep zram
swapon --show

若使用 zram:

cat /sys/block/zram0/disksize

五、快速排查清单(总结)

✅ 是否启用:swapon --show
✅ fstab 是否正确
✅ swap 文件是否用 dd 创建
✅ 权限是否为 600
✅ 是否内存不足导致 swap 狂用
✅ 磁盘是否故障


如果你愿意,可以贴一下:

  • swapon --show
  • free -h
  • /etc/fstab
  • dmesg | grep swap

我可以帮你精准定位是哪一种 swap 故障。

0 踩