逐扇区克隆硬盘(dd/ddrescue),如何跳过中间的坏块?

逐扇区克隆硬盘(dd/ddrescue),如何跳过中间的坏块?

我有一个硬盘驱动器,里面有无法恢复的坏块。硬盘驱动器是 Raid-0 阵列的一部分。如果我以任何方式访问坏块,硬盘驱动器就会挂起。假设硬盘驱动器的总容量为 500,000,000,000 字节,坏块的范围为 100,000,000,000 - 100,000,004,096 字节(8 个 LBA)。如何使用或者救援我可以将此 HDD 克隆到另一 HDD 或映像文件而不访问坏块吗?我需要字节 0 - 99,999,999,999,然后是 4096 字节的零,然后是字节 100,000,004,097 - 500,000,000,000。

谢谢!

答案1

我今天已经完成了这项工作,希望对你有用。我在复制(备份)大约有 30 个坏块的磁盘时遇到了问题。我做的第一件事是使用常规 Filezilla 备份文件以备份所有好数据。我注意到一个大文件没有正确复制(中途停止并重新启动传输)。幸运的是,我有同一个文件的先前备份。要复制磁盘,我必须使用以下步骤找到磁盘上的坏块:

首先找出问题磁盘识别高清信息使用fdisk -l

第二,假设你的磁盘是/dev/sdb然后你需要运行命令 坏块-v /dev/sdb它会列出驱动器上的所有坏块。幸运的是,会有几个坏块。如果没有发现坏块,则说明驱动器块没有问题,需要找出其他解决方法。我的块大小是 512,所以我使用该默认数字来运行 DD

第三,每个块的大小为 512,因此我设置 bs=512

每次我像往常一样定期运行 DD 时,我的数据在出现错误后就会损坏。因此,我使用页面上说明的参数https://www.gnu.org/software/coreutils/manual/html_node/dd-invocation.html搜索“针对故障磁盘”部分。

dd if=/dev/sdb of=/dev/sda bs=512 conv=noerror,sync iflag=fullblock 

这花了一段时间。遇到的每个坏块都发出像在故障驱动器上敲击的声音。它逐块复制,并且所有坏块都发出相同的声音。发出声音的次数是因为它发现了另一个坏块并告诉您有关显示错误消息的信息。'conv=noerror,同步'所做的就是用 NUL 填充错误的读取,而‘iflag=fullblock’适合短读,但会保持数据同步直到最后。完全没有损坏,它只是不复制有故障的块并用空的 NUL 填充它。

使用 DD 复制完成后,我只需用 Filezilla 从过去的备份中恢复该坏文件即可,一切正常。我希望这对其他尝试备份故障驱动器的人有用。

注意:我的坏块彼此非常接近。每次大约有 4 个块成组地被检测到坏块。如果您的块遍布整个磁盘,则可能会影响多个文件。幸运的是,就我而言,只有一个 4GB 的大型数据库文件受到影响。

答案2

好的,也许这也可以借助 dd 来实现,但我使用 WinHex 解决了这个问题(我选择了物理设备)。它可以将磁盘的任何部分克隆到映像并将它们连接起来。

相关内容