在 CentOS 中 swap 失效(不生效 / 不被使用 / 无法启用) 是比较常见的问题,原因通常集中在配置、分区、文件、内核参数或内存策略上。下面按最常见到最隐蔽的原因给你系统梳理。
现象:
free -h 看不到 swap,或 swapon -s 为空。
检查:
swapon -s
free -h
lsblk
解决:
swapon /dev/sdXx
swapon /swapfile
并确保 /etc/fstab 有类似:
/dev/sdXx swap swap defaults 0 0
# 或
/swapfile swap swap defaults 0 0
典型错误:
示例(正确):
UUID=xxxx-xxxx swap swap sw 0 0
检查:
mount -a
若有报错,fstab 一定有问题。
现象:
swapon: /swapfile: read swap header failed
原因:
创建了文件但没初始化。
解决:
mkswap /swapfile
swapon /swapfile
swap 文件权限必须是 600:
chmod 600 /swapfile
chown root:root /swapfile
现象: swap 存在但使用为 0。
这是正常现象!
CentOS 默认策略:
swappiness 低 → 更晚使用 swap查看:
cat /proc/sys/vm/swappiness
临时调整:
sysctl vm.swappiness=10
永久:
echo "vm.swappiness=10" >> /etc/sysctl.conf
vm.swappiness = 0
表示尽量不用 swap,某些场景几乎等于失效。
CentOS 8+ 可能启用了 zRAM 而不是磁盘 swap:
zramctl
如果看到 zram0,说明系统用的是压缩内存,不是传统 swap。
现象: swap 文件存在但 swapon 失败。
解决:
restorecon -v /swapfile
某些云镜像或定制系统:
systemctl status swap.target
或内核参数:
cat /proc/cmdline | grep noswap
# 1. 是否启用
swapon -s
# 2. 内存与 swap
free -h
# 3. fstab 是否正确
cat /etc/fstab
# 4. swappiness
cat /proc/sys/vm/swappiness
# 5. 是否有 zram
zramctl
# 6. 日志
journalctl -xe | grep -i swap
你可以直接贴出以下信息:
cat /etc/redhat-release)swapon -sfree -h/etc/fstab我可以直接告诉你 swap 为什么失效,以及该改哪一行。