3、挂载失败现象分类:启动卡住、进入紧急模式、只读文件系统、设备未就绪

挂载失败这事儿,我干了十几年运维,见过的花样比你们想象的要多。但说白了,真正让系统起不来的,也就那么几类。今天咱们就把这四种最常见的现象掰开揉碎了讲清楚。

你想想看,系统启动时挂载失败,最直接的感觉是什么?——要么屏幕不动了,要么弹个提示让你手动修复。嗯,这就是我们今天要聊的四种典型场景。

3.1 启动卡住(Boot Hang)

这是最让人头疼的一种。系统启动到一半,光标在那闪啊闪,就是不动了。我遇到过好几次,大半夜被叫起来处理,结果发现就是fstab里写错了一个UUID。

典型表现:

  • 系统启动进度条卡在某个位置不动
  • 屏幕上显示"A start job is running for ..." 然后一直转圈
  • 按Ctrl+Alt+Del没反应,只能硬重启

为什么会这样?

说白了,systemd在等待某个挂载点超时。默认超时时间是90秒或180秒。如果磁盘不存在、网络不通、或者文件系统损坏,系统就会一直等下去。

我的经验:遇到启动卡住,先别急着重启。按Esc键看看具体卡在哪个挂载点。我曾经靠这个技巧,三分钟就定位到问题——一个NFS挂载点因为网络没起来,硬生生等了90秒。

小技巧:可以在内核启动参数里加systemd.show_status=true,这样能看到每个服务的启动状态,不会傻等。

3.2 进入紧急模式(Emergency Mode)

这个比启动卡住好一点,至少系统给你一个shell。但别高兴太早——这个shell里只有最基本的命令,很多工具都用不了。

典型表现:

  • 启动后直接进入"Welcome to emergency mode!"提示
  • 系统提示"Press Enter for maintenance"
  • 或者直接给你一个root shell,但文件系统是只读的

为什么会这样?

紧急模式是systemd的"最后防线"。当关键挂载点(比如/、/usr)挂载失败时,系统会放弃等待,直接给你一个最小化的环境让你手动修复。

注意:进入紧急模式后,/通常是只读挂载的。你想改fstab?先执行mount -o remount,rw /把根分区重新挂载为读写模式。我见过新手直接vi /etc/fstab然后保存失败,急得满头大汗。

我的建议:进入紧急模式后,第一件事就是检查journalctl -xb。这个命令会显示启动日志,里面明确告诉你哪个挂载点失败了。别瞎猜,看日志。

3.3 只读文件系统(Read-Only Filesystem)

这个现象比较隐蔽。系统能正常启动,也能登录,但你一写文件就报错:"Read-only file system"。嗯,这其实是挂载失败的"温和版"。

典型表现:

  • 能正常登录,但无法创建或修改文件
  • touch test 报错"Read-only file system"
  • mount命令显示某个分区是ro状态

为什么会这样?

常见原因有两个:

  1. 文件系统检测失败:系统启动时fsck检测到文件系统有错误,为了安全自动挂载为只读
  2. 硬件故障:磁盘出现坏道或I/O错误,内核自动将分区切换为只读

我曾经遇到过:一台数据库服务器,跑着跑着突然所有写入都报只读。查了半天,发现是RAID卡的一块硬盘掉了,但系统没报警。最后靠dmesg | grep -i error才找到线索。所以,遇到只读文件系统,先看dmesg和smartctl。

3.4 设备未就绪(Device Not Ready)

这个现象在云环境和虚拟化环境里特别常见。系统启动时,磁盘设备还没准备好,但挂载脚本已经执行了。

典型表现:

  • 启动时提示"Device /dev/sdb1 is not ready yet"
  • 或者"Timed out waiting for device /dev/disk/by-uuid/xxx"
  • 系统可能卡住,也可能跳过这个挂载点继续启动

为什么会这样?

说白了,就是"时机不对"。比如:

  • 云硬盘(如AWS EBS)在系统启动时还没挂载好
  • USB设备在启动时还没被识别
  • 多路径存储(multipath)还没完成路径聚合

我的经验:在fstab里给这类设备加上_netdev选项,告诉systemd等网络就绪后再挂载。另外,nofail选项也很实用——挂载失败就跳过,别卡住整个启动流程。

3.5 四种现象对比总结

为了方便你快速判断,我整理了一个对比表。嗯,这个表我用了很多年,每次培训都拿出来讲。

现象 严重程度 典型原因 第一反应
启动卡住 高 fstab配置错误、磁盘不存在 按Esc看具体卡在哪
紧急模式 高 关键分区挂载失败 journalctl -xb看日志
只读文件系统 中 文件系统错误、硬件故障 dmesg检查I/O错误
设备未就绪 中 设备初始化慢、依赖未满足 检查设备是否在线

3.6 核心知识体系

下面这张图,是我自己画的挂载失败排查思路。你把它记在脑子里,遇到问题就不会慌了。

挂载失败现象分类与排查路径 挂载失败 启动卡住 Boot Hang 紧急模式 Emergency Mode 只读文件系统 Read-Only 设备未就绪 Device Not Ready 按Esc查看具体服务 journalctl -xb dmesg + smartctl 检查设备在线状态 核心思路:先看现象 → 再查日志 → 最后动手修 别慌,90%的挂载问题都能用journalctl搞定

嗯,这张图你保存好。以后遇到挂载问题,先对号入座,看看属于哪一类,然后按对应的排查路径走。我保证,能省你至少一半的排查时间。

最后说一句:这四种现象有时候会混在一起出现。比如设备未就绪可能导致启动卡住,而启动卡住超时后又可能进入紧急模式。但不管怎么混,排查思路是一样的——先看日志,再动手。

可可精品资料库