CentOS Swap配置错误修复指南
一 快速定位问题
free -h、swapon -s。若 Swap 为 0 或未列出,说明未启用或配置缺失。vmstat 1(关注 si/so 是否持续不为 0)、top/htop 定位占用内存/交换的进程。cat /proc/sys/vm/swappiness、grep -i swap /etc/fstab;必要时查看日志 journalctl -b -1、dmesg | grep -i panic 以发现启动或运行期报错。二 常见故障与修复
启动时报错 “/dev/centos/swap does not exist”
原因多为删除了默认 LVM 交换逻辑卷或 /etc/fstab 仍引用旧路径。
修复步骤:
rd.lvm.lv=centos/swap 后启动,先进入系统;swapon -s 或 grep -i swap /etc/fstab;oracle/lvg_swap),编辑 /boot/grub2/grub.cfg,将两处 rd.lvm.lv=centos/swap 修改为正确路径;/etc/default/grub 并使用 grub2-mkconfig 重新生成。执行 swapon /swapfile 报 “invalid argument”
常见原因:未用 mkswap 格式化、用 fallocate 在某些文件系统(如 ext4)创建的文件不可用、文件权限/上下文错误、SELinux 阻止、或文件系统不支持(如部分 Btrfs 场景)。
修复步骤:
dd if=/dev/zero of=/swapfile bs=1M count=4096(示例 4GB)chmod 600 /swapfilemkswap /swapfileswapon /swapfiledd 而非 fallocate 重试;df -Th /swapfile;grep CONFIG_SWAP /boot/config-$(uname -r);ls -lZ /swapfiledefault_t,临时 setenforce 0 测试,成功后恢复 setenforce 1 并修正上下文:chcon -t swapfile_t /swapfile;free -h、swapon --show。Swap 占用异常高导致卡顿
处理思路:先减负、再调参、必要时扩容。
sysctl vm.swappiness=10(重启后失效);/etc/sysctl.conf 加入 vm.swappiness=10 并执行 sysctl -p;vmstat 1、top/htop 观察 si/so 与内存回收效果。三 重建或扩容 Swap 的正确步骤
dd if=/dev/zero of=/swapfile bs=1M count=4096chmod 600 /swapfilemkswap /swapfileswapon /swapfile/etc/fstab 添加 /swapfile swap swap defaults 0 0;free -h、swapon --show。swapoff /dev/mapper/vg_name-lv_swap;lvresize -L +2G /dev/mapper/vg_name-lv_swap(示例增加 2GB);mkswap /dev/mapper/vg_name-lv_swap;swapon /dev/mapper/vg_name-lv_swap;swapon --show、free -h。swapoff <目标>,再从 /etc/fstab 删除对应行,最后 free -h 确认。四 无法进入系统时的离线修复
linux16/linuxefi 开头的行,将 ro 改为 rw,在行尾追加 init=/bin/bash,删除 rhgb 和 quiet,按 Ctrl+X 启动;single 启动。/etc/fstab 中的错误 swap 行;sync && reboot 重启验证。