在 Debian 系统中,swap 故障通常表现为:系统卡顿、OOM 被杀进程、swap 未启用、swap 使用异常、swap 文件/分区损坏等。下面按排查思路 + 常用命令 + 常见故障处理来说明。
swapon --show
或
free -h
✅ 正常应有 swap 行且大小不为 0
❌ 若为空,说明 swap 未启用
dmesg | grep -i swap
或
journalctl -k | grep -i swap
常见问题:
swap: failed to enableswap file has holesread-error on swap devicecat /etc/fstab
示例:
UUID=xxxx none swap sw 0 0
检查:
blkid
确认 UUID 是否正确
手动启用:
swapon -a
❌ 错误方式:
fallocate -l 2G /swapfile
✅ 正确方式:
dd if=/dev/zero of=/swapfile bs=1M count=2048
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
ls -l /swapfile
应为:
-rw------- 1 root root
修复:
chmod 600 /swapfile
vmstat 1
关注:
si(swap in)so(swap out)长期不为 0 → 内存不足
解决:
查看:
cat /proc/sys/vm/swappiness
默认 60,可临时降低:
sysctl vm.swappiness=10
永久:
/etc/sysctl.conf
vm.swappiness=10
fsck -f /dev/sdX
(swap 一般不需要 fsck,但底层磁盘问题需检查)
重新创建:
swapoff /dev/sdX
mkswap /dev/sdX
swapon /dev/sdX
查看:
lsmod | grep zram
swapon --show
若使用 zram:
cat /sys/block/zram0/disksize
✅ 是否启用:swapon --show
✅ fstab 是否正确
✅ swap 文件是否用 dd 创建
✅ 权限是否为 600
✅ 是否内存不足导致 swap 狂用
✅ 磁盘是否故障
如果你愿意,可以贴一下:
swapon --showfree -h/etc/fstabdmesg | grep swap我可以帮你精准定位是哪一种 swap 故障。