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状态
为什么会这样?
常见原因有两个:
- 文件系统检测失败:系统启动时fsck检测到文件系统有错误,为了安全自动挂载为只读
- 硬件故障:磁盘出现坏道或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 核心知识体系
下面这张图,是我自己画的挂载失败排查思路。你把它记在脑子里,遇到问题就不会慌了。
嗯,这张图你保存好。以后遇到挂载问题,先对号入座,看看属于哪一类,然后按对应的排查路径走。我保证,能省你至少一半的排查时间。
最后说一句:这四种现象有时候会混在一起出现。比如设备未就绪可能导致启动卡住,而启动卡住超时后又可能进入紧急模式。但不管怎么混,排查思路是一样的——先看日志,再动手。
可可精品资料库