Linux系统检测硬盘失败解救方法
前言
Linux系统以稳定灵活,是许多服务器和开发环境的首选。然而,在使用过程中,硬件故障如硬盘无法识别或读写错误等问题仍难以完全避免。这类问题往往由连接松动、文件系统损坏或硬盘本身老化导致,可能造成数据丢失或服务中断。为了解决这个问题,我结合常见的故障场景和处置经验,整理了以下从排查到解救的方法,希望能为你提供清晰的解决思路。
问题
我是ubantu/win双系统,一共两个盘,1个1T SSD,一个4T HDD,WIN在1T SSD,Ubantu在4T HDD,当某次关机重新启动时发现找不到/home分区了。
原因
这是一个非常典型且令人头疼的问题,通常是可以解决的。
Ubuntu 在启动时无法完成对某个磁盘分区(我的 4T HDD 硬盘上的 /home 分区)的文件系统检查,因此为了保护数据不受破坏,系统进入了“紧急模式”。
原因分析
-
文件系统错误:HDD(机械硬盘)可能因突然断电、强制关机或物理震动等原因导致文件系统出现错误或损坏。
-
硬盘连接问题:HDD 的数据线或电源线松动,导致系统在启动时无法正确识别和读取该硬盘。
-
UUID 变更:有时重启后,硬盘的 UUID(全局唯一标识符)可能会发生改变,导致系统在 /etc/fstab 文件中根据旧的 UUID 找不到对应的分区。
从错误信息 Failed to start File System Check on /dev/disk/by-uuid/16690152-… 来看,系统在检查 UUID 的分区时失败了,这个分区就是存放在 HDD 上的 /home。
解决方案
第一步:继续启动并检查状态
-
在紧急模式的提示符下,直接按 Ctrl + D。
-
系统会尝试忽略错误并继续启动。有时系统可以成功启动,但 /home 可能无法正常挂载。
-
如果能进入系统,备份重要数据。
如果按 Ctrl + D 后系统依然无法启动或再次回到紧急模式。
第二步:进入紧急模式进行手动修复
-
在紧急模式界面,按 Enter 键进入维护模式。你会看到一个以 root@your-computer:~# 开头的命令行提示符。
-
检查硬盘识别情况
输入命令,查看系统是否识别到4T HDD:
lsblk -f
或者
blkid
会列出所有磁盘和分区的信息(名称、大小、文件系统类型、UUID、挂载点等)。
这里可以看到sda4是我们的/home,和开机时的报错UUID一致,但是并未识别出来容量大小和/home标签
- 手动修复文件系统
我的分区是 /dev/sdb4,使用以下命令进行修复(ext4 文件系统):
fsck -y /dev/sdb4
-y 选项表示自动回答“yes”来修复所有发现的问题。这个过程可能会花费一些时间,取决于硬盘的大小和错误多少。
注意: 如果您的 /home 分区是其他文件系统(如 Btrfs、XFS),命令会略有不同,第一步的 lsblk -f 会告诉你文件系统类型。
- 尝试重新挂载
尝试手动挂载一下这个分区,看是否成功:
mount /dev/sdb4 /mnt
如果成功,你可以看到 /mnt 目录下的文件了。之后可以卸载它:umount /mnt
。
- 重启系统
修复完成后,输入以下命令重启电脑:
reboot
或者按 Ctrl + Alt + Del。