如何以最安全的方式修复磁盘

如何以最安全的方式修复磁盘

我有一个可能需要维修的外部驱动器。

当我尝试安装它时,出现以下错误:

wrong fs type, bad option, bad superblock on /dev/sda1, missing codepage or helper program, or other error.

我有问题需要修复磁盘。我想在尝试任何修复之前制作磁盘的映像副本fsck。然而,克隆dd300GB 的镜像需要 111 天,这不是一个选择:

dd if=/dev/input/DEVICE-HERE of=/dev/OUTPUT/DEVICE-HERE bs=64K conv=noerror,sync

这是命令的输出dd,它警告我驱动器中存在错误:

42598400 bytes (43 MB, 41 MiB) copied, 2035.41 s, 20.9 kB/s
42663936 bytes (43 MB, 41 MiB) copied, 2039 s, 20.9 kB/s
dd: error reading '/dev/sda1': Input/output error
437+214 records in
651+0 records out
42663936 bytes (43 MB, 41 MiB) copied, 2042.48 s, 20.9 kB/s
42991616 bytes (43 MB, 41 MiB) copied, 2048 s, 21.0 kB/s
dd: error reading '/dev/sda1': Input/output error
441+215 records in
656+0 records out
42991616 bytes (43 MB, 41 MiB) copied, 2051.39 s, 21.0 kB/s
43253760 bytes (43 MB, 41 MiB) copied, 2055 s, 21.0 kB/s
dd: error reading '/dev/sda1': Input/output error
444+216 records in
660+0 records out
43253760 bytes (43 MB, 41 MiB) copied, 2058.75 s, 21.0 kB/s
43581440 bytes (44 MB, 42 MiB) copied, 2062 s, 21.1 kB/s

有什么建议么?

答案1

根据您提供的信息,我最好的猜测是您的磁盘快要死了,或者已经接近死了。

如果里面有重要数据,就让 DD 来完成它的工作。或者总是有专门从事数据恢复的公司。

答案2

  1. 首先了解磁盘设置及其上的文件系统,以了解您正在处理的内容。首先要确保它在计算机启动时正确显示在 BIOS/EFI 中,并使用该级别的任何诊断。您需要确保磁盘控制器和连接器都在一定程度上可靠且正常工作。您不想因为使用坏的 SATA 电缆或坏的连接器而使事情变得更加困难,尽管这可能不是您的问题。但你确实提到了外部硬盘驱动器所以我假设通过USB连接。理想情况下,您不希望通过 USB 以这种方式弄乱磁盘,因为它可能会出现一些问题,但这是另一个讨论;运用良好的判断力,决定是否值得从外部机箱中取出磁盘,然后手动将 SATA 电缆从其连接到主板。

  2. 运行 Linux 后,请确保磁盘显示为块设备。然后利用智能控制对磁盘进行一些粗略的检查,检查是否有任何明显的情况。到达这里后,您可能会相当确定硬件方面没有问题,并且您的问题与磁盘上的数据损坏有关。您可能会在使用 USB 上的 smartctl 时遇到一些问题。

  3. 想象一下,如果不能首先阅读正确的目录,就无法阅读一本书。这就是磁盘分区表。理想情况下,您希望拥有一个备份副本,以便在分区表损坏时可以恢复(大多数人不会这样做)。您可能想知道您是否有 MBR 或 GPT 分区表,以及每个分区表上的分区和文件系统的数量。

错误的文件系统类型、错误的选项、错误的超级块

此时就是你要运行的地方FSCK以进一步诊断问题。并非每个文件系统都有超级块但既然你在这里问Unix 和 Linux我假设使用 EXT3/4 文件系统。您可以轻松地进行网络搜索修复坏的超级块更多详细信息,我不想打字。简而言之:您的挂载由于超级块 0 损坏而失败,但文件系统中存在许多冗余副本。

恢复 ext4 超级块

如果您有一个 XFS 文件系统,那么您会想从xfs_repair -n /dev/sda1对其进行操作开始。但与FSCK它通常与-b它的选项可以修复坏的超级块。

以下是您可以在网上找到的许多说明的示例:http://erikimh.com/linux-recover-corrupted-partition-from-a-bad-superblock/

我想在尝试任何 fsck 修复之前制作磁盘的映像副本... dd:读取“/dev/sda1”时出错:输入/输出错误

所以是的,一个DD将进行完整的位对位复制作为一种手段防灾你应该搞砸吗?但是,在您的情况下,您必须管理一个 300GB 的文件,这可能会带来其他问题。但是,那输入/输出错误在我看来,from dd 表示磁盘控制器类型的错误,而不一定是 fsck 可以修复的数据损坏。回到上面的#1,注意 USB。

如果您使用一个全新的[好]磁盘并dd在其上创建MBR或BPT分区表之前对其进行操作,那么它应该可以工作。这就是为什么我们[有时]会dd if=/dev/sda of=./mypartitiontable bs=512 count=1备份 MBR 分区表,例如位于磁盘前 512 字节内的分区表,无论该分区表数据是否正确。

所以如果我必须根据上述猜测dd 输入/输出错误您曾经或现在有一些硬件问题,这也导致分区表损坏。您可以使用以下命令恢复损坏的超级块fsck-b但您可能还正在解决 smartctl 可能指示的其他一些硬件类型问题。您还可以在故障排除中使用hdparm。请注意与磁盘的 USB 连接,尽可能避免这种情况。

相关内容