lol*_*tor 5 linux hard-drive data-recovery bad-sectors ddrescue
我正在尝试将数据从旧的 320G 硬盘(充满坏扇区)恢复到新硬盘。我发现ddrescue是完成这项任务的好工具,因为它具有智能算法。我已经使用以下命令完成了一次:
ddrescue -f -n /dev/sda /dev/sdb log
Run Code Online (Sandbox Code Playgroud)
它在几个小时内完成,errsize 为 16G(未恢复),其中仍可能包含重要数据,所以我运行了下一次:
ddrescue -f -d /dev/sda /dev/sdb log
Run Code Online (Sandbox Code Playgroud)
但它运行速度太慢(平均 300B/s),因为 linux 卡在每个坏扇区上。
它实际上是 linux 内核(可能是 libata),而不是硬盘本身,因为我试图在干净的 DOS 上运行的DMDE工具中恢复,但没有这样的问题:可以在那里调整 ATA 超时,并且整体恢复过程运行得更快。
但不是在 Linux 中。
我还尝试了这些内核参数:libata.ignore_hpa=1 libata.noacpi libata.force=noncq,norst并libata.dma=0在引导程序中传递到 cmdline,但它没有任何效果(我使用 System Rescue CD,其中 LIBATA 在内核中编译)。
还尝试更改设备超时:
echo 1 > /sys/block/sda/device/timeout
Run Code Online (Sandbox Code Playgroud)
(默认为 30)
但它只会在 syslog 中产生更多的错误泛滥而无济于事。
每个扇区传递坏块仍然需要 1-3 分钟,这非常慢。解析 16GB 的“坏”块需要多少时间?一周?月?
我仍然更喜欢使用ddrescue进行恢复(由于其高效的算法和日志文件功能),并且想知道如何调整内核驱动程序以加速 ata/磁盘错误处理。谷歌和 SU 上的相关问题没有帮助。有任何想法吗?
PS对不起我的英语
@ta.speot.is
为什么不从常规备份中恢复?
我朋友的这个硬盘,不是我的。太伤心了,他没有备份。现在,在磁盘崩溃后,他开始考虑进行备份,是的:)
UPD:2.5 年后我仍然不知道答案,但刚刚意识到ddrescue当 sata 控制器处于兼容 (IDE) 模式时工作速度更快,另一个提示是始终使用-d选项(直接访问)来稍微加快速度。另请查看hdparm调整 HDD ( -m, -D, -P) 的选项,它可能会有所帮助(在旧硬件上)。
UPD2:刚刚注意到 Slizzered对相关问题的回答。这很棒!我试过:
smartctl -l scterc,20,20 /dev/sda
Run Code Online (Sandbox Code Playgroud)
并且恢复速度比以前快得多(尽管仅在 IDE 模式下)。
小智 0
来自 DDR 救援人员:
(用户可以随时中断该进程,但请注意,损坏的驱动器可能会长时间阻塞 ddrescue,直到内核放弃)
所以简短的答案是:使用 DDRescue 不能,因为您无法更改内核超时(您需要在正确的位置编辑正确的源并重新编译......并不简单!)。
我使用 Hiren 引导中包含的一些软件得到了很好的结果:
两者都运行在 MiniXP 中,也包含在 Hiren 的引导中。它从 CD/DVD 或 USB 驱动器运行。
建议:硬盘可能会运行得很热,这很糟糕,而且过程更糟。用风扇冷却,这可以延长它们的寿命并可以加快工作速度。
| 归档时间: |
|
| 查看次数: |
3263 次 |
| 最近记录: |