在 /etc/fstab 中正确配置 swap 的核心是六字段格式准确:第1列用 uuid 或 /swapfile,第2列必须为 none,第3列为 swap,第4列为 sw,nofail,第5、6列均为 0;配置后须执行 sudo swapoff -a && sudo mount -a 验证,再用 swapon --show 确认生效。

在 /etc/fstab 中正确配置 swap,核心是写对六字段、用稳定标识、确保语法无误,否则重启后 swap 很可能不生效——这不是小问题,系统可能因内存不足而卡顿甚至崩溃。
用 UUID 或 LABEL 代替裸设备路径
别直接写 /dev/sda2 或 /swapfile(后者虽可用,但需注意路径和权限)。设备名易变,插槽调整、内核重识别都可能导致挂载失败。
- 查 swap 分区 UUID:运行
sudo blkid | grep swap,找到类似/dev/sda2: UUID="7e4c8d9a-3f5d-406a-a07c-9daeda9a1494" TYPE="swap"的行,复制完整 UUID 值 - 查 swap 文件(如
/swapfile):它本身没有 UUID,但所在分区有;不过 swap 文件推荐直接用绝对路径(因其位置固定),前提是权限和格式正确 - 若用卷标:先运行
sudo swaplabel -L myswap /dev/sda2(仅限 swap 分区),fstab 中写LABEL=myswap
fstab 中 swap 条目的标准格式
swap 条目只有六列,且第 2 列必须为 none(不是挂载点),第 3 列固定为 swap,第 4 列推荐 sw(等价于 defaults,但更明确):
-
第 1 列:设备标识,如
UUID=7e4c8d9a-3f5d-406a-a07c-9daeda9a1494或/swapfile -
第 2 列:固定填
none(不可写成/swap或其他路径) -
第 3 列:固定填
swap -
第 4 列:挂载选项,常用
sw;如需兼容性可加nofail(设备缺失时不阻断启动),即sw,nofail -
第 5 列:dump 标志,swap 统一填
0 -
第 6 列:fsck 检查顺序,swap 必须填
0(不参与磁盘检查)
✅ 正确示例(分区):UUID=7e4c8d9a-3f5d-406a-a07c-9daeda9a1494 none swap sw,nofail 0 0
✅ 正确示例(文件):/swapfile none swap sw,nofail 0 0
配置前必须完成的验证动作
编辑完 /etc/fstab 后,不能直接重启。跳过验证等于把系统启动权交给运气。
- 确保 swap 文件存在且权限正确(如果是文件):
sudo chmod 600 /swapfile,且已执行过sudo mkswap /swapfile - 先关闭所有 swap:
sudo swapoff -a - 执行
sudo mount -a—— 正常应无任何输出;若报错,常见原因:unknown filesystem type 'swap'(第 3 列拼错)、device not found(UUID 错或文件路径不存在)、invalid option(第 4 列用了不支持的选项) - 验证是否生效:
sudo swapon --show应列出对应项,或free -h显示 swap 总量
特殊场景处理建议
某些发行版(如较新 Ubuntu)默认启用 systemd-swap 或 zram,可能与 fstab 冲突;CentOS/RHEL 8+ 默认禁用 /etc/rc.local,所以不要依赖它补救 fstab 失效。
- 如果 fstab 配置始终不生效,检查
systemctl is-enabled systemd-swap.service,如启用则需停用或调整策略 - swap 文件必须位于本地 ext4/xfs 等常规文件系统上,不能放在 NFS、Btrfs 子卷或加密目录中(除非显式配置解密时机)
- 修改前务必备份:
sudo cp /etc/fstab /etc/fstab.bak,万一启动卡住可从 recovery mode 恢复











