USB 硬盘驱动器上的 ddrescue 速度极慢

Mik*_*Mik 9 osx usb hard-disk ddrescue

我正在从我的笔记本电脑中恢复硬盘驱动器(根本无法启动,磁盘工具报告说没有问题,但不会安装磁盘)。我已经通过 USB 适配器连接了 HDD。ddrescue像这样运行:

sudo ddrescue -v -n /dev/disk1s2 "/Volumes/Original HD/image.dmg" ddrescue.log
Run Code Online (Sandbox Code Playgroud)

到目前为止没有错误,但平均读取速度已经逐渐下降到 50KB/s。开始时大约是 2MB/s。分区大小为 300GB。到目前为止,我已经能够恢复 160GB。我正在恢复到 MacBook 上的 HFS+ 分区。

这种传输速率缓慢的原因可能是什么以及如何提高它?

slm*_*slm 8

这似乎就是ddrescueUSB 传输在 OSX 下的工作方式。来自标题为:主题:[Bug-ddrescue] ddrescue 10x 慢在 osx 下的线程。

在全功能硬盘驱动器上工作时,在 linux 下它执行全 I/O 速度。当使用默认编译标志在 osx 下编译时,它的速度要慢几倍,有时会爬到 Kb/s。如果输出文件为 /dev/null,问题仍然存在。

同一个线程也有这个回应。

根据我在 OS X 上的经验和测试,访问原始字符设备/dev/rdisk…总是更可取的。此外,通过设置更大的复制块大小可以进一步提高传输速度。ddrescue -c 1Ki在大多数情况下,512KiB ( ) 的大小给了我最好的结果。

并且:OS X 原始字符设备确实具有定义的大小,因此即使在第一次运行时也可以轻松使用它们。(至少在这一点上,现有文档中有关原始设备的说明ddrescue不适用于 OS X。)

我不认为这是一个错误ddrescue,因为其他公用事业一样ddcat表现在OS X相同的行为

访问 /dev/disk... 块设备的速度相当慢,与使用的复制块大小无关。另一方面,/dev/rdisk...原始字符设备的读取速度很大程度上取决于选择的复制块大小:

  • 512 字节 ( ddrescue -c 1, 默认值dd) 是最慢的。
  • 将其设置为 4096 字节 ( ddrescue -c 8, dd bs=4K) 与访问 /dev/disk 的速度相同......
  • ddrecue 默认的 128 个扇区 (= 64KiB, ddrescue -c 128, dd bs=64K) 带来了相当好的结果。
  • 进一步乘以(高达ddrescue -c 1Ki/ dd bs=512K)带来最大速度(通常比 快 8-12 倍/dev/disk…
  • 在我的测试中,高于该值并没有进一步提高传输速度;有时甚至减少。

这些是我自己测量的结果,您的结果可能会因所使用的媒体和 IO 硬件而异。也许如果其他一些用户分享他们的经验,我们可以更好地了解该主题。

参考