我的硬盘状况非常糟糕。我准备接受它坏了,但我想恢复其中的数据。
在其上运行 badblocks 会给出一个巨大的数字列表。
尝试在其上运行 fsck.ext4 只会显示:
fsck.ext4: Attempt to read block from filesystem resulted in short read while trying to open /dev/sdd1
所以我猜测第一个超级块已经被烧坏了。
我正在尝试使用备份超级块,因此我尝试使用 dumpe2fs 确定它在哪里,但我只得到:
$ sudo dumpe2fs /dev/sdd
dumpe2fs 1.42.9 (4-Feb-2014)
dumpe2fs: Attempt to read block from filesystem resulted in short read while trying to open /dev/sdd1
我想所有的东西都把我的硬盘读成是空的,不是吗?
有没有什么办法可以恢复它?
有什么办法猜测超级块备份的位置?
多谢。
答案1
当命令dumpe2fs /dev/sdd
发送错误时,还有另一种方法可以获取超级块备份的位置:
mkfs.ext4 -n /dev/sdd
来自man mkfs.ext4
-n
使 mke2fs 不实际创建文件系统,而是显示如果创建文件系统会做什么。这可用于确定特定文件系统的备份超级块的位置,只要再次使用最初创建文件系统时传递的 mke2fs 参数即可。
然后,您只需使用超级块修复您的分区:
fsck -b 98304 /dev/sdd
98304
用你的超级块的号码替换。
答案2
您的硬盘似乎存在许多物理错误,正如您所报告的 badblocks 和 fsck 所指出的发生“短读”错误。
我建议ddrescue
在其上运行并将文件系统映像复制到另一台设备,然后再尝试修复任何文件系统。如果损坏严重,ddrescue 可能需要很长时间才能完成(在某些情况下甚至超过 24 小时)
尝试写入严重物理损坏的驱动器很可能会导致产生更多错误并损坏更多数据。