我正在使用 ddrescue 从 Seagate Barracuda 3TB 硬盘恢复数据。硬盘出现故障,但到目前为止,我尝试读取的每个扇区最终都返回了正确的数据,但可能需要进行一些探测(这意味着 ddrescue 必须在最后阶段进行多次传递,在此阶段读取坏扇区)。
不过,正常运行非常慢。磁盘上有一些区域以全速(60MB/s)读取,但在成功获取约 2.5TB 数据后,剩余的 500GB 分布在整个磁盘上,以约 2KB/s 的极快速度读取,估计需要几千天才能完成。
不过,我可以在同一驱动器上同时运行多个 ddrescue 实例,这会增加吞吐量,但我不确定如何将数据最终合并到一个映像中,尤其是通过跟踪映射文件。我认为多个进程意味着多个映射文件。
另外,有人知道为什么驱动器这么慢吗?我的意思是,2KB/s(如果出现错误,则速度会更低)非常慢,让我想起了 C64。我花了 3 个小时才获得 30MB 的数据。如果碰巧更换控制器可以缓解问题(但从阅读这篇文章来看,这不太可能奏效),我会有一个相同的 Barracuda 3TB 驱动器,它可以用作器官捐赠者。
答案1
您无需用两个图像来使事情复杂化,而是可以告诉 GNU ddrescue 跳过运行缓慢的部分,稍后再回来处理它们。
允许您执行此操作的标志是--min-read-bytes=
。
--min-read-rate=bytes
未尝试过的良好区域的最低读取速率(以字节/秒为单位)。如果读取速率低于此值,ddrescue 将跳过可变量,具体取决于速率和错误历史记录。跳过的块将在额外的传递中尝试(在修剪之前)。如果字节为 0(自动),每秒重新计算最小读取速率为(average_rate / 10)。
如果你坚持要制作多幅图像,手册中还提供了有关如何组合它们的示例:
示例 4:使用 3 张相同 DVD 的映射文件作为域映射文件,合并它们的部分恢复映像。
ddrescue -m mapfile1 dvdimage1 dvdimage mapfile ddrescue -m mapfile2 dvdimage2 dvdimage mapfile ddrescue -m mapfile3 dvdimage3 dvdimage mapfile (if bad-sector size is zero, dvdimage now contains a complete image of the DVD and you can write it to a blank DVD)