CentOS 启动阶段 Swap 失败的常见根因
启动参数指向了不存在的 Swap 设备或 LVM 逻辑卷
典型现象是屏幕提示 /dev/centos/swap does not exist 或直接进入 dracut:/#。常见于删除了 LVM 上的 swap LV(如 centos/swap),但 GRUB 的内核命令行仍包含 rd.lvm.lv=centos/swap,或 /etc/fstab 仍保留 swap 挂载项,导致 initramfs 阶段等待并失败。另一个常见参数是 resume=…(用于休眠恢复),若目标设备不存在也会卡住启动流程。
/etc/fstab 中的 swap 条目错误或设备不存在
系统启动时会按 /etc/fstab 挂载文件系统与 swap。若该文件仍包含指向已删除或未激活的 /dev/mapper/centos-swap 的行,开机将报错或长时间等待设备,进入 emergency mode。即使已用 swapoff 关闭,只要 fstab 未清理,重启仍会触发挂载失败。
LVM 相关故障导致 Swap LV 无法被找到或激活
例如 VG 未激活、LV 被误删/改名、或 PV 丢失,都会使 /dev/mapper/centos-swap 在启动阶段不可达,initramfs 无法激活 swap 并中断引导。这类问题往往伴随 dracut 提示找不到设备或超时。
Swap 文件配置不当(仅影响文件型 swap,非 LVM)
使用 swapon /swapfile 时报 invalid argument,常见原因包括:未用 mkswap 初始化、用 fallocate 在某些文件系统(如 ext4)上创建的文件不兼容、文件系统不支持 swap(如部分 Btrfs 场景)、或 SELinux 上下文不正确。这类问题多在系统已启动后执行 swapon 时出现,不会直接阻止开机,但若写入到 fstab 作为开机启用项,也会导致启动失败。
快速自检与修复要点