dd 对故障磁盘进行映像,从而断开连接

dd imaging a failing disk which drops connection

我正在尝试在出现故障的硬盘上执行映像。 我遇到的问题导致程序失败,因为磁盘在图像处理过程中会经常掉落,当系统重新识别它时,它位于不同的地址(/dev/sdb 现在是 /dev/sde) .

我已经尝试独立地对每个分区进行映像,但是在 500GB 的磁盘上,我正在努力在磁盘掉落之前超过 100GB 的会话(我认为磁头在点击时会转动)。

我的问题是,如果使用 dd 是否有办法对磁盘进行映像,将其分解为 50GB 的部分,以便我可以将整个磁盘放在多个映像上,然后合并。

或者更好的是,有没有办法强制磁盘在以前的位置重新识别?

我发现关于这个主题的信息很少,所以任何见解都会有用。

谢谢。

当设备丢失时,您的流也将丢失。即使分配了相同的设备名称,您也无法恢复它。但是,为了您的方便,您可能希望使用 udev 规则来取回相同的名称。

在dd中,你可以使用四个有用的参数:

  • bs=BYTES一个"block"
  • 的大小
  • skip=N 输入中要跳过的块数
  • seek=N 输出中要跳过的块数
  • count=N要复制的块数(我们这里不需要)

此外,dd 具有提供进度报告的功能,尽管有点隐藏。您可以使用 "status=progress" 或向进程发送信号。后者更复杂,但它允许您定义进度报告的频率。例如,您可以在另一个终端执行此操作:

for ((;;)); do sleep 1; kill -USR1 `pidof -s dd`; done

将所有这些放在一起,您可以使用 bs=4M 作为合理的块大小。然后你可以在辅助终端中使用 运行 上述命令,然后启动 dd,最初使用

dd bs=4M seek=0 skip=0 if=/dev/… of=…

第一次失败后,你使用dd复制成功的最后一个块号作为参数寻找和跳过。你可以在这里有点保守(稍微减少数字)以确保你不会在输出中得到任何 "holes"。

重复直到完成整个磁盘。祝你好运!