在 CentOS 里,“swap 故障”常见表现有几种:swap 无法挂载、swap 空间不足、swap 分区损坏、系统启动卡在 swap、OOM 但 swap 没用。下面按常见场景给你一套排查和修复方法。
free -h
swapon --show
cat /proc/swaps
swapon --show 为空,说明 swap 没启用swap failed,通常是 fstab 或分区问题# 创建 2G swap 文件
dd if=/dev/zero of=/swapfile bs=1M count=2048
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
开机自动挂载:
echo '/swapfile none swap sw 0 0' >> /etc/fstab
查看:
lsblk
blkid
重建 swap:
mkswap /dev/sda2
swapon /dev/sda2
/etc/fstab 示例:
UUID=xxxx-none swap swap defaults 0 0
⚠️ 重建 swap 会清空该分区数据
mount -o remount,rw /
vi /etc/fstab
临时注释 swap 行:
# /dev/sda2 swap swap defaults 0 0
然后:
reboot
查看优先级:
cat /proc/swaps
调整 swappiness:
sysctl vm.swappiness
sysctl -w vm.swappiness=60
永久:
echo 'vm.swappiness=60' >> /etc/sysctl.conf
dd if=/dev/zero of=/swap2 bs=1M count=4096
mkswap /swap2
swapon /swap2
| 现象 | 原因 | 解决 |
|---|---|---|
| swapon failed | 文件权限不对 | chmod 600 |
| 启动卡住 | fstab swap 错 | 注释 swap 行 |
| swap 不生效 | swappiness=0 | 调大 |
| OOM kill | swap 太小 | 加 swap 文件 |
你可以贴一下:
free -hswapon --show/etc/fstabjournalctl -xe 或 dmesg)我可以直接告诉你是哪一步坏了、怎么修最安全。