/etc/fstab 重复挂载条目

Linux 服务器启动卡死的排查与修复:/etc/fstab 重复挂载条目

场景 :生产服务器无法在本地终端登录,机房屏幕停在内核报错界面,但 SSH 远程连接仍然可用。只有一次重启机会。


故障现象

机房屏幕所见(本地终端)

服务器开机后,屏幕停留在如下报错,无法进入登录界面:

复制代码
[336.933560] systemd-fstab-generator[6588]: Failed to create unit file
              /run/systemd/generator/media-ssd.mount, as it already exists.
              Duplicate entry in /etc/fstab?
[336.933712] systemd-fstab-generator[6588]: Failed to create unit file ...
[337.783324] systemd-fstab-generator[66411]: Failed to create unit file ...
[337.784370] systemd-fstab-generator[66411]: Failed to create unit file ...

异常行为

  • 通过 SSH 远程连接可以正常登录
  • 一旦访问 /media/ssd01(NVMe SSD)上的数据,服务器立即关机
  • 本地终端完全无法使用,无法正常重启进入系统

环境信息

项目 详情
系统盘 /dev/sdb2 → /(879G)
NVMe SSD /dev/nvme0n1 → /media/ssd01(3.6T)
其他数据盘 sda1 / sdc / sdd
故障组件 /etc/fstab 第 15--17 行
bash 复制代码
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb2       879G  546G  288G  66% /
/dev/nvme0n1    3.6T  2.9T  544G  85% /media/ssd01
/dev/sda1       1.8T  1.4T  325G  82% /media/media03
/dev/sdc        3.6T  3.3T  158G  96% /media/media02
/dev/sdd        3.6T  3.3T  186G  95% /media/media01

根因分析

第一步:检查 fstab

bash 复制代码
$ grep -n '/media/ssd' /etc/fstab
15: /dev/disk/by-uuid/51e1fb65-... /media/ssd auto nosuid,nodev,nofail,x-gvfs-show 0 0
16: /dev/disk/by-uuid/5dc65724-... /media/ssd auto nosuid,nodev,nofail,x-gvfs-show 0 0
17: /dev/disk/by-uuid/445b53be-... /media/ssd auto nosuid,nodev,nofail,x-gvfs-show 0 0
18: /dev/disk/by-uuid/08c7d34d-... /media/ssd01 auto nosuid,nodev,nofail,x-gvfs-show 0 0

发现问题 :第 15--17 行有 3 个不同 UUID 但挂载点相同 (/media/ssd)的条目。

第二步:验证 UUID 是否存在

bash 复制代码
$ sudo blkid | grep -E "51e1fb65|5dc65724|445b53be|08c7d34d"
/dev/nvme0n1: UUID="08c7d34d-d66e-4b4a-b95e-de878a3bad54" TYPE="ext4"

结论:

行号 UUID 状态
15 51e1fb65-... ❌ 设备不存在(已拔除或重分区)
16 5dc65724-... ❌ 设备不存在
17 445b53be-... ❌ 设备不存在
18 08c7d34d-... ✅ /dev/nvme0n1,当前唯一 SSD

根本原因

systemd-fstab-generator 在启动时尝试为 fstab 中的每个条目生成 .mount unit 文件。由于第 15--17 行挂载点相同 (均为 /media/ssd),systemd 尝试创建同名 unit media-ssd.mount 三次,第二次起就会报 "already exists" 错误。

这导致:

  1. systemd 进入错误循环,无法完成启动序列
  2. 本地 getty(登录终端)无法启动
  3. 访问 SSD 触发内核异常或电源保护导致关机

修复步骤

⚠️ 注意:所有操作均通过 SSH 远程执行,仅有一次重启机会。

1. 备份 fstab(必做)

bash 复制代码
sudo cp /etc/fstab /etc/fstab.bak

2. 注释掉无效的重复条目

bash 复制代码
sudo sed -i.bak2 '15s/^/#/' /etc/fstab
sudo sed -i '16s/^/#/' /etc/fstab
sudo sed -i '17s/^/#/' /etc/fstab

3. 验证修改结果

bash 复制代码
$ grep -n '/media/ssd' /etc/fstab
15: #/dev/disk/by-uuid/51e1fb65-... /media/ssd auto ...   ← 已注释
16: #/dev/disk/by-uuid/5dc65724-... /media/ssd auto ...   ← 已注释
17: #/dev/disk/by-uuid/445b53be-... /media/ssd auto ...   ← 已注释
18:  /dev/disk/by-uuid/08c7d34d-... /media/ssd01 auto ... ← 保留

4. 清理已生成的冲突 unit 文件

bash 复制代码
sudo rm -f /run/systemd/generator/media-ssd.mount
sudo systemctl daemon-reload

5. 重启服务器

bash 复制代码
sudo reboot

修复后验证

重启完成后,确认以下内容:

bash 复制代码
# 确认 SSD 正常挂载
$ ls /media/ssd01
data  codes  disk_project  ...

# 确认无 fstab 相关报错
$ sudo systemctl --failed

# 确认本地终端可以正常登录(机房现场)

应急回滚方案

如果重启后问题未解决,通过 SSH 执行:

bash 复制代码
sudo cp /etc/fstab.bak /etc/fstab
sudo reboot

经验总结

为什么 SSH 可以连但本地终端不行?

SSH 服务(sshd)由 systemd 在早期阶段启动,网络和基础服务均正常。问题出在 getty(本地登录服务)依赖 fstab 挂载完成,而 fstab 的冲突导致 systemd 的挂载目标(local-fs.target)无法正常完成,从而阻塞了本地终端的启动。

为什么访问 SSD 会关机?

fstab 中存在多个指向同一挂载点的异常条目时,内核在运行时处理挂载请求可能触发文件系统层的竞争或异常,在某些驱动或固件配置下会触发内核 panic 并导致系统重启/关机。

预防措施

  1. 每次修改 fstab 前先备份 :cp /etc/fstab /etc/fstab.bak
  2. 修改后用 findmnt --verify 验证语法(无需重启)
  3. 拔除磁盘前先从 fstab 中删除对应条目,避免留下僵尸 UUID
  4. 挂载点名称要唯一,不同设备不能共用同一挂载目录
  5. 定期审计 fstab :cat -n /etc/fstab 检查是否有重复挂载点

关键命令速查

bash 复制代码
# 查看当前挂载状态
df -h

# 列出所有块设备及 UUID
sudo blkid

# 验证 fstab 中 UUID 是否存在
grep -n '/media/ssd' /etc/fstab

# 注释掉指定行(以第15行为例)
sudo sed -i '15s/^/#/' /etc/fstab

# 验证 fstab 语法
findmnt --verify --fstab

# 重载 systemd(无需重启)
sudo systemctl daemon-reload

本文记录于一次真实的生产环境故障排查,操作环境为 Ubuntu Server + systemd。

相关推荐
吹什么轩39 分钟前
linux系统复习:僵尸进程与孤儿进程
linux·运维·php
Lcr3s40 分钟前
我的DVWA靶场实践_Low难度
安全
殷忆枫1 小时前
告别依赖地狱!在 Ubuntu 上用 Docker 极速部署 Home Assistant 与 MQTT,并接入 Siri 与嵌入式 C 终端
linux·ubuntu·docker
亚远景aspice1 小时前
亚远景-低空经济与具身智能:具身智能飞行器量产落地,过程合规与安全体系怎么搭
人工智能·安全·过程改进·低空经济·研发管理·亚远景科技·过程能力评估
第404号工位1 小时前
手机到底有没有偷听我们?我抓包了 72 小时,抓到了真凶
linux·人工智能·架构
EasyGBS1 小时前
水域乱象难管控?国标GB28181视频平台EasyGBS视频+AI双引擎赋能河湖监管
深度学习·安全·gb28181
字节跳动开源1 小时前
ByteDance 2026 上半年 Linux 内核贡献回顾
linux·开源
小此方2 小时前
Linux网络(二十八):从NAT转换到正反向代理:图解内网通信、NAPT端口映射
linux·运维·网络
刚入门的大一新生2 小时前
Linux-进程池
linux·运维·服务器
万年咸鱼2 小时前
HTTPS 是如何保证传输安全的?
网络协议·安全·https