小编Tom*_* C.的帖子

如何使用当前状态估计完成 GNU ddrescue (1.18.1) 的循环/时间?

背景/背景:

我目前正在运行 GNU ddrescue 1.18.1 以从 USB 恢复数据,该 USB 在我将虚拟磁盘映像写入 disk2s1 分区时遇到电缆断开连接。最初我正在恢复我的第二个分区 (disk2s2) 并注意到我已经进入了第三阶段(拆分)。我将图像放置到网络存储上。

题:

我注意到这个阶段是循环的。鉴于我当前的状态信息(我只显示两个错误),有没有办法计算我可能遇到的循环次数?

地位:

地位

更新/编辑:

所以我仍然对如何使用 ddrescue 工具估计完成的循环/时间非常感兴趣。根据评论,我正在添加对当前正在运行的 disk2s1 分区的日志文件的评估(disk2s2 在 14.5 小时后完成,一个用户中断了大约 6 小时)。

第 1 部分日志

完成的分区日志

对于刚刚完成的分区,这里是日志检查的结果。

照片记录

参考(ddrescue 算法笔记):

4 算法


GNU ddrescue 不是 dd 的衍生物,也与 dd 没有任何关系,只是两者都可以用于将数据从一个设备复制到另一个设备。主要区别在于 ddrescue 使用复杂的算法从故障驱动器复制数据,尽可能减少对它们造成的额外损害。

Ddrescue 有效地管理正在进行的救援状态,并尝试首先救援好的部分,然后安排在坏(或慢)区域内读取。这最大限度地增加了最终可以从故障驱动器中恢复的数据量。

标准 dd 实用程序可用于保存故障驱动器中的数据,但它会按顺序读取数据,如果错误位于驱动器的开头,这可能会磨损驱动器而无法挽救任何东西。

其他程序按顺序读取数据,但在发现错误时切换到小尺寸读取。这是一个坏主意,因为这意味着在错误区域花费更多时间,损坏表面、磁头和驱动器机械装置,而不是尽快摆脱它们。这种行为降低了挽救剩余良好数据的机会。

ddrescue 的算法如下(用户可以随时中断进程,但要注意坏的驱动器会阻塞 ddrescue 很长时间,直到内核放弃):

1) 可选择读取描述多部分或先前中断救援状态的日志文件。如果未指定日志文件或为空或不存在,则将所有救援域标记为未尝试。

2)(第一阶段;复制)读取输入文件的未尝试部分,将失败的块标记为未修剪并跳过它们。也跳过慢速区域。跳过的区域稍后会在两次额外的通道中尝试(在修剪之前),在每次通过后反转方向,直到尝试所有救援域。第三遍是扫遍,禁用跳过。(目的是快速界定大错误,保持日志文件小,并为修剪产生良好的起点)。在大块中仅读取未尝试的区域。修剪、拆分和重试是逐个扇区完成的。每个扇区最多尝试两次;此步骤中的第一个(通常作为大块读取的一部分,但有时作为单个扇区读取),以下步骤之一中的第二个作为单个扇区读取。

3)(第二阶段;修整)从最小的未修整块的前沿开始,一次读取一个扇区,直到发现坏扇区。然后从同一块的后沿开始向后读取一个扇区,直到找到坏扇区。对于每个未修剪的块,将找到的坏扇区标记为坏扇区,并将该块的其余部分标记为未拆分,而无需尝试读取它。重复直到没有更多未修剪的块。(较大的未修剪块是由较小块的串联产生的,因此它在边缘的良好数据的比例较小)。

4)(第三阶段;拆分)读取从最大的非拆分块的中心一次向前一个扇区,直到找到坏扇区。然后,如果找到的坏扇区不是第一个尝试的,则从同一块的中心一次向后读取一个扇区,直到找到坏扇区。如果日志文件大于“--logfile-size”,则顺序读取最大的非拆分块,直到日志文件中的条目数低于“--logfile-size”。重复直到所有剩余的非拆分块都少于 7 个扇区。然后依次读取剩余的非拆分块。

5)(第四阶段;重试)可选地尝试再次读取坏扇区,直到达到指定的重试次数。每个坏扇区在每次传递中只尝试一次。Ddrescue 无法知道坏扇区是否不可恢复,或者在重试后是否最终会被读取。

6) 可选择写一个日志文件供以后使用。

总错误大小 ('errsize') 是所有未修剪、未拆分和坏扇区块的大小之和。它在复制阶段增加,在修剪、拆分和重试期间可能减少。请注意,随着 ddrescue 拆分失败的块,使它们更小,总错误大小可能会减少,而错误数量会增加。

日志文件会定期保存到磁盘,以及在 ddrescue 完成或中断时保存。因此,如果发生崩溃,您只需重新复制即可恢复救援。保存间隔从 30 秒到 5 分钟不等,具体取决于日志文件的大小(更大的日志文件以更长的间隔保存)。

此外,同一个日志文件可用于复制输入文件不同区域的多个命令,以及对不同子集的多次恢复尝试。看这个例子:

首先拯救光盘最重要的部分。ddrescue -i0 -s50MiB …

ddrescue

9
推荐指数
1
解决办法
9337
查看次数

标签 统计

ddrescue ×1