为何/dev/sdg1未在/dev/disk/by-uuid及by-label中列出且无法挂载?
解决Ubuntu 16.04升级后磁盘无法挂载(systemd设备超时)的问题
我之前碰到过类似的systemd设备超时导致磁盘挂载失败的情况,结合你描述的症状——升级后换旧内核也无法挂载、/dev/sdg1在by-uuid/by-label中无条目、systemd等待设备超时,给你梳理几个实用的排查和解决步骤:
第一步:确认磁盘硬件是否被系统识别
首先排除硬件或驱动层面的问题:
- 执行
lsblk或fdisk -l命令,查看输出里是否存在/dev/sdg和/dev/sdg1。如果完全看不到这个磁盘,说明系统没识别到它,先检查物理连接(SAS/SATA线缆、磁盘插槽),或者RAID卡的状态(如果是RAID磁盘的话)。 - 如果磁盘能被识别到,再用
blkid /dev/sdg1查看它的UUID和LABEL信息,确认这些标识是否正常存在。
第二步:手动挂载测试,排查文件系统本身问题
如果磁盘已被识别,先尝试手动挂载验证文件系统是否正常:
- 创建临时挂载点:
mkdir -p /mnt/test - 执行挂载命令:
mount /dev/sdg1 /mnt/test- 如果挂载成功,说明文件系统本身没问题,问题出在自动挂载的配置或udev/systemd的设备路径生成上。
- 如果挂载失败,根据报错信息排查(比如文件系统损坏,这时候需要执行
fsck /dev/sdg1修复,注意要在磁盘未挂载的状态下运行)。
第三步:修复udev设备路径生成问题
如果手动挂载成功,但by-uuid/by-label里没有对应条目,说明udev没有生成这些软链接:
- 重新触发udev事件:
udevadm trigger - 等待几秒后,执行
ls /dev/disk/by-uuid/和ls /dev/disk/by-label/,查看是否出现目标磁盘的条目。 - 如果还是没有,检查磁盘的label是否有特殊字符(你的label
data_raid1_05看起来没问题,但可以用e2label /dev/sdg1重新设置label试试)。
第四步:调整systemd挂载配置,解决超时问题
如果udev正常生成了路径,但systemd还是超时,那需要调整挂载相关的配置:
- 检查/etc/fstab配置:确保你用的UUID或LABEL和
blkid输出的完全一致。建议优先使用UUID(比LABEL更可靠),比如把fstab里的LABEL=data_raid1_05替换成UUID=xxxxxx(xxxxxx是blkid输出的UUID字符串)。 - 延长systemd设备超时时间:在fstab的挂载选项里添加
x-systemd.device-timeout=30s(可以根据实际情况调整时长,比如60s),给磁盘足够的时间被识别和准备。例如:UUID=xxxxxx /mnt/data ext4 defaults,x-systemd.device-timeout=30s 0 2 - 重新加载systemd配置:
systemctl daemon-reload,然后尝试启动挂载单元:systemctl start mnt-data.mount(替换成你的挂载点对应的单元名),看是否能成功。
第五步:排查文件系统损坏
如果上述步骤都无效,可能是文件系统有潜在损坏:
- 确保磁盘未挂载,执行
fsck /dev/sdg1,按照提示修复错误(注意:fsck可能会修改文件系统,建议先备份重要数据)。修复完成后再尝试挂载。
内容的提问来源于stack exchange,提问作者Brian R.
相关产品推荐
相关产品推荐

