系统启动卡在“local file systems”阶段通常由/etc/fstab配置错误导致,常见原因包括设备不可达、fsck拖慢、依赖超时不合理及tmpfs冗余定义,需用mount -a等命令定位并修正。

挂载延迟常卡在“Local File Systems”阶段
系统启动时若卡在 Started Disk Manager 或 Failed to start Local File Systems,基本可锁定是 /etc/fstab 中某项挂载配置引发阻塞。systemd 默认对每个 auto 挂载项启用强依赖和 90 秒超时,只要一行出错,整个启动流程就会停住等待或失败。这不是磁盘硬件故障的典型表现,而是配置与时机不匹配所致。
先快速定位哪一行惹的祸
进单用户或紧急模式后,执行以下命令可直击问题:
-
mount -a—— 模拟启动时的批量挂载,报错即停,第一处错误就是根源 -
blkid和lsblk -f—— 核对 fstab 中写的 UUID、LABEL 或设备名是否真实存在、类型是否匹配 -
findmnt -D—— 显示当前已挂载项及其来源,反向验证 fstab 是否被正确读取 -
systemctl list-units --type=mount | grep mnt-—— 查看挂载单元状态,卡在 activating 的就是嫌疑对象
四类高发原因与对应解法
① 设备不可达或标识失效
USB 盘拔掉、NFS 服务器关机、UUID 因重装系统变更、/dev/sdX 编号因硬盘增减错位——这些都会让 systemd 在 blkid 或 udev 探测阶段卡数秒至数十秒。
→ 建议:非关键设备改用 noauto,x-systemd.automount;远程存储必加 _netdev;根分区等核心项坚持用 UUID + initramfs 内置驱动。
② 文件系统检查(fsck)拖慢启动
systemd 默认为每行 fs_passno=1/2 的分区启动 systemd-fsck@.service,而 ext4/xfs 等检查本身可能耗时。
→ 建议:只读盘、SSD 数据盘、已知干净的卷,把第 6 列设为 0,并加 noatime,errors=remount-ro。
③ 依赖关系与超时设置不合理
比如 NFS 挂载没加 _netdev,systemd 就会在网络就绪前尝试连接;又或加密卷未等 cryptsetup.target 就启动 mount 单元。
→ 建议:用 systemctl show mnt-data.mount | grep -E "(After|WantedBy|Timeout)" 查实际策略;对慢设备加 x-systemd.timeout=30;必要时加 Wants=network-online.target 并启用 systemd-networkd-wait-online.service。
④ tmpfs 或特殊挂载干扰内存初始化/run 本由 systemd 自动创建,若 fstab 中重复定义且 size=4G,会抢占 early boot 内存分配;/dev/shm 若被 bind mount 到磁盘路径,反而引入 IO 等待。
→ 建议:删掉 fstab 中对 /run、/dev/shm 的冗余定义;/tmp 如需 tmpfs,明确设 size=512M,mode=1777 即可。
验证与收尾建议
改完 fstab 后务必执行:sudo systemctl daemon-reload → 重载 unit 配置sudo mount -a → 手动验证无报错sudo systemd-analyze blame | head -10 → 确认挂载类单元耗时回落
若仍慢,追加 systemd.analyze critical-chain multi-user.target 看瓶颈是否转移到下游服务。











