fstab配置错误导致无法登录
约 600 字大约 2 分钟
2026-08-29
在 /etc/fstab 里挂载数据盘时一旦写错(设备名、UUID、文件系统类型、挂载点不存在),重启后系统会卡在磁盘挂载环节进入 emergency mode,表现为 SSH 连不上、控制台提示 Give root password for maintenance。本文讲如何修复,以及如何从源头避免。
常见错误原因
| 错误 | 典型场景 |
|---|---|
设备名写错(如 /dev/vdb1 实际是 /dev/vdb) | 手写分区号笔误,或磁盘顺序变化 |
| UUID 过期 | 重装系统、重新格式化后分区 UUID 改变,fstab 仍是旧值 |
| 文件系统类型写错 | 格式化为 xfs 却写成 ext4 |
| 挂载点不存在 | fstab 写了 /data,但没先 mkdir /data |
| 网络存储写法错误 | NFS/iSCSI 等网络设备在开机时还未就绪就尝试挂载 |
修复步骤
进入系统
控制台出现 emergency mode 时,输入 root 密码即可进入维护 shell;若忘记密码或无法进入,通过单用户模式处理,参见进入Linux单用户模式。
重新挂载根分区为可写
维护模式下根分区通常为只读:
mount -o remount,rw /修正 fstab
vi /etc/fstab- 最稳妥的做法:先在出错的行首加
#注释掉,保存退出,保证系统能起来。 - 用
blkid核对每个分区的真实 UUID 与 TYPE:
blkid- 最稳妥的做法:先在出错的行首加
验证后重启
mount -a # 无任何输出和报错才算通过 rebootmount -a会按 fstab 挂载所有条目,报错行就是问题行,改对后再重启。
从源头避免:写入前的三个习惯
先验证,再写入
每次修改 fstab 后、重启前,必须执行 mount -a 验证。这是避免"重启进不去"最有效的一步。
用 UUID 而不是设备名。
/dev/vdb1这类名字在重装系统、卸载挂载后可能变化,UUID 不会。blkid查询后写入:UUID=xxxx-xxxx-xxxx /data ext4 defaults 0 0数据盘挂载加
nofail。即使这块盘异常缺失,系统也照常启动:UUID=xxxx-xxxx /data ext4 defaults,nofail,x-systemd.device-timeout=5 0 0挂载点先创建。
mkdir -p /data确认目录存在再写 fstab。
完整的数据盘挂载流程参见Linux服务器挂载数据盘,扩容操作参见Linux服务器数据盘扩容。
