1

I’m using ddrescue to recover data from a Seagate Barracuda 3TB drive. The drive is failing, but so far every sector I try to read eventually returns the correct data, but it might take some probing (this means ddrescue has to do multiple passes on the last stage, where bad sectors are read).

Normal operation is very slow, though. I have some stretches on the disk that are read at full speed (60MB/s), but after successfully getting ~2.5TB of data, the remaining 500GB are spread throughout the disk and are read at a breakneck speed of ~2KB/s, with an estimate of a few thousand days to complete.

I can, however,run multiple instances of ddrescue simultaneously on the same drive, which increases throughput, but I’m not sure how to combine the data ultimately into one image, especially by keeping track with the map file. Multiple processes means multiple map files, I assume.

Also, anybody know why the drive is so slow? I mean, 2KB/s (or less, in case of errors) is painstakingly slow, brings back memories of C64. It took me 3 hours to get 30MB of data. I would have an identical Barracuda 3TB drive that could function as an organ donor, if by chance changing the controller would mitigate the problem (but from reading up on this, it’s doubtful this will work).

Ro-ee
  • 2,250

1 Answers1

0

Instead of complicating things with two images, you can tell GNU ddrescue to skip the slow parts and come back to them later.

The flag that lets you do this is --min-read-bytes=.

From the GNU ddrescue manual:

--min-read-rate=bytes

Minimum read rate of good non-tried areas, in bytes per second. If the read rate falls below this value, ddrescue will skip ahead a variable amount depending on rate and error histories. The skipped blocks are tried in additional passes (before trimming). If bytes is 0 (auto), the minimum read rate is recalculated every second as (average_rate / 10).


If you insist on making multiple images, the manual also has an example on how to combine them:

Example 4: Merge the partially recovered images of 3 identical DVDs using their mapfiles as domain mapfiles.

 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)
Deltik
  • 19,971