首页/系统/Linux 运维命令速查/场景:开机挂载失败进 emergency mode
磁盘与文件系统51 条

场景:开机挂载失败进 emergency mode

服务器重启后卡在 emergency mode,最常见原因:fstab 设备不存在/UUID 变了/网络存储不可达;按步骤进系统并修好挂载配置。

Linux 运维命令速查系统更新于 2026-10-13

这个场景要解决什么

服务器重启后卡在 emergency mode,或者某个挂载点起不来,最常见的原因是 fstab 里的设备不存在、UUID 变了、文件系统损坏或网络存储不可达。systemd 在挂载依赖失败时会进入应急模式,把人留在控制台上,等你手工修好配置再继续启动。整个过程的关键是三步:先看清是哪一条挂载失败,再改配置,最后一定要验证。

基本信息

适用场景开机进入 emergency mode、mount 失败、启动被挂载阻塞
目标恢复启动并修正 fstab 或设备状态
工具链mount -a、journalctl、blkid、lsblk、findmnt、编辑 fstab、systemctl default
前提进入应急控制台需要 root 口令;云主机一般通过 VNC 或串口控制台进入

常见触发原因

  • fstab 里写的是设备名,换盘或加盘后设备名发生漂移
  • 磁盘做过分区变更,对应的 UUID 跟着变了
  • 文件系统损坏,挂载时的校验失败
  • 网络存储在启动阶段不可达,配置里又没写 _netdev
  • 挂载点被占用或权限不对,mount 直接报 target is busy

第 1 步 看失败原因

第 1 步 看失败原因
mount -a                       # 复现失败,直接看到报错的那一行
journalctl -xb | grep -i -E 'mount|failed|dependency' | tail -n 40
systemctl --failed             # 列出进入失败状态的单元

第 2 步 核对设备

第 2 步 核对设备
blkid                          # 列出各设备的 UUID 与文件系统类型
lsblk -f                       # 树状查看设备、文件系统与挂载点
findmnt --verify               # 检查 fstab 语法与挂载点是否成立
cat /etc/fstab                 # 逐行读,对照上面的结果

第 3 步 修正并验证

第 3 步 修正并验证
cp /etc/fstab /etc/fstab.bak   # 改前备份
vi /etc/fstab                  # 改 UUID,或为数据盘补 nofail
mount -a                       # 有错立即报出来
systemctl daemon-reload

第 4 步 继续启动

第 4 步 继续启动
systemctl default              # 或 systemctl isolate multi-user.target
reboot                         # 重启验证不再进入应急模式

fstab 关键选项

选项作用使用提示
defaults默认挂载参数组合大多数场景直接沿用
nofail挂载失败不影响启动数据盘建议加,避免一块盘拖垮整机启动
_netdev等网络就绪后再挂载所有网络存储都必须加
noatime不更新访问时间减少元数据写入,数据盘常用
x-systemd.automount首次访问时才挂载大容量冷数据盘可节省启动时间
0 2尾部的 dump 标记与 fsck 顺序数据盘写 0 2,根分区通常是 0 1
应急模式下根文件系统通常以只读方式挂载,编辑 fstab 之前要先执行 mount -o remount,rw / 改成可写,否则保存动作会失败。
改完 fstab 不验证就重启,很可能再进一次应急模式。规范动作是改完立刻跑 mount -a 与 findmnt --verify,两条都干净再重启。

进入应急模式后先做的事

  • 执行不带参数的 mount,看当前挂了哪些文件系统,确认根分区是不是只读状态
  • 看 journalctl -xb 的尾部,找最近一条失败记录,定位触发点
  • 记下失败单元的完整名字,之后可以用 systemctl status 单独查看详情
  • 改配置前先 cp 一份 fstab 备份,出问题能立刻回退

先回到能启动的最小配置

先回到能启动的最小配置
cp /etc/fstab /etc/fstab.bak
# 把可疑的那一行临时注释掉,先让系统能起来
grep -v '/data' /etc/fstab.bak > /etc/fstab
mount -a && systemctl default     # 确认能进系统,再逐条加回来
修复期间不要直接断电:已挂载的文件系统可能还有未落盘的数据,用 reboot 或 systemctl reboot 正常重启更安全。
交换分区或 tmpfs 写错通常影响有限,真正会阻塞启动的是被其它单元依赖的关键挂载,例如 /var、/usr,或数据库的数据盘。
云主机拿不到应急控制台时,多数平台都提供 VNC 或串口登录入口,部分平台还有救援模式:把系统盘以数据盘方式挂到一台临时实例上修改 fstab,比在应急模式里操作更从容。

常见报错与处置

报错提示原因处置
unknown filesystem type类型字段写错或驱动缺失核对类型并确认内核模块可用
can not read superblock设备不是文件系统或已损坏核对设备并对文件系统做检查
mount point does not exist挂载点目录不存在先创建目录再重试
mount is denied普通用户挂载或选项受限以 root 操作或改用允许普通用户挂载的选项
already mounted重复挂载或挂载点被占用先用查找挂载的命令看清现状
修正后的验证节奏是两步:先用配置校验命令检查条目语法与设备存在性,再用一次性挂载全部条目的方式试挂一次,两条都通过再重启。只做其中一步就重启,很可能连续两次进应急模式,没有控制台时会很被动。

易错点

  • 只补 nofail 不修根因:启动不再卡住,但盘依然没挂上,业务照样失败
  • 用设备名 /dev/sdX 写 fstab:加盘、换盘或换虚拟化平台后名字会变,统一改用 UUID 或 LABEL
  • 网络存储没加 _netdev:网络还没起来 systemd 就判定挂载失败,直接进应急模式
  • 改完不 mount -a 验证就重启,容易连续两次进应急模式,拿不到控制台时很被动
  • 应急模式里忘记 remount,rw 就编辑 fstab,保存看似成功但内容没落盘
  • 往未挂载的挂载点目录里写数据:数据实际落在根文件系统上,之后真正挂载会把它们遮蔽,现象上等同于数据丢失

数据来源与参考

  • systemd 官方文档:Emergency Mode
  • man 5 fstab
  • man 8 systemctl

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌