调试坏块情况,有什么建议吗?

调试坏块情况,有什么建议吗?

一切都始于 Windows 故障。它因为缺少 dll 而急切地弹出一些 BSOD(这里有一个问题,我基本上解决了)。然后我发现 dll 确实丢失了,或者更好的是 0 字节文件。我开始怀疑一些块损坏,于是我找到了两个老朋友,badblocks 和 smartmontools。Badblocks 开始分析 Windows 分区,然后将我的整个机器挂起在 1.68% 左右。幸运的是,我可以按 CTRL-C 结束它,并得到以下报告(以及输出文件中的块)。

坏块:

Checking for bad blocks in non-destructive read-write mode
From block 0 to 102399999
Checking for bad blocks (non-destructive read-write test)
Testing with random pattern: ^C^C^C^C^Cquiy11:10 elapsed. (16/0/0 errors)
^C^X  1.63% done, 11:27 elapsed. (16/0/0 errors)

Interrupted at block 1669692

Interrupt caught, cleaning up

另一位朋友 smartmontools 实际上比平时更加​​友好。

smartmontools:

BlockquoteError 333 occurred at disk power-on lifetime: 1611 hours (67 days + 3 hours)
When the command that caused the error occurred, the device was active or idle.

After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
40 51 00 28 34 a7 02  Error: UNC at LBA = 0x02a73428 = 44512296

Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
-- -- -- -- -- -- -- --  ----------------  --------------------
25 00 00 00 34 a7 e2 00      02:29:09.041  READ DMA EXT
27 00 00 00 00 00 e0 00      02:29:09.039  READ NATIVE MAX ADDRESS EXT
ec 00 00 00 00 00 a0 00      02:29:09.038  IDENTIFY DEVICE
ef 03 46 00 00 00 a0 00      02:29:09.037  SET FEATURES [Set transfer mode]
27 00 00 00 00 00 e0 00      02:29:09.037  READ NATIVE MAX ADDRESS EXT

我现在的问题是,我该怎么做?我可以尝试在块上写入并尝试恢复块吗?badblocks -yacc 就够了吗?硬盘的其余部分看起来没问题,我知道我可能会遇到麻烦,但我有备份。我想避免重新安装 Windows,但目前我不知道该怎么做。

答案1

UNC 错误可能恰好是软错误。在这种情况下,您有两个选择:

1)制作一个新的备份(我建议克隆兹拉因为它会制作磁盘/分区的正确副本),然后以破坏性读写模式运行 badblocks 并查看结果。如果它没有显示坏块 - 然后恢复您的映像。

2)你可以尝试这种方法问题,但是当您尝试以非破坏性读写模式运行坏块时挂起 - 此选项不适合您。

您也可能遇到硬盘错误。您还提到,您似乎没有遇到磁盘其余部分的问题。在这种情况下,您还有另外两个选项(以避免重新安装操作系统):

3) 购买相同或更大容量的新磁盘并进行克隆。我建议救援或者您可以使用 Clonezilla 或其他克隆软件。

4) 您可以对现有磁盘进行重新分区,使坏区不在任何分区中。在这种情况下,不会有任何程序请求该区域。同时,正如您所说的坏块挂起 - 似乎该区域相当大。要找出坏区的位置,我建议运行启用日志记录的 ddrescue。它可以有效地跳过坏块。然后在日志文件中,您将执行坏区的位置。

答案2

坏块无法修复。您可以忽略它们、跳过它们、通过将它们标记为坏块来“修复它们”,尝试将数据移到其他地方……等等。我会减少您的损失,移走所有东西并更换驱动器。通常,当块开始出现故障时,它会先变得更糟,然后才能变好。我不会冒这个险。

相关内容