0

I am trying to backup my failing external USB HDD Maxtor M3 4TB using ddrescue.

In the beginning, I was getting around 300kB/s so I ripped the external box and connected the drive directly via SATA to my desktop which improved the rate to around 700kB/s. After playing with -a (Minimum read rate) -b (block size) -c (Number of sectors to copy at a time) I arrived at

-a 20M -b 4096B -c 2048

Above mentioned combination increased the rate to about 1800kB/s. Moreover, the current rate fluctuates from a few bytes/s to 115MB/s with the overall average staying around mentioned 1800kB/s. It feels as if it read at a normal 'healthy drive' rate for a sec and then hang to wait for some timeout and continuing at a reduced rate.

Do you have experience with other parameters that help improve the rate? Since the whole 4TB drive will take about a month at the current rate any improvement is highly appreciated.

EDIT - Full command

The full command is

sudo ddrescue -a 20M -b 4096 -c 2048  -f -n -vv /dev/sdi /dev/sdh video_drive.log

EDIT 2 - Oh that's why it is so slow

The drive is failing in such a way that S.M.A.R.T. support is disabled at times, but during the periods it works, I noticed the high and increasing value of Read Error Rate and Hardware ECC Recovered fields. I assume the ECC recovery is the reason why I see no errors and also the reason why the rate is so low.

badluck
  • 3
  • 1
  • 3
  • If the drive is damaged you just have to wait for the retries ... – DavidPostill Nov 28 '18 at 21:47
  • I added the full command. As I understand the "-n" skips the retries, so it should not influence it for the first pass right? – badluck Nov 28 '18 at 21:53
  • 1
    Possible duplicate of [Is there any way to speed up ddrescue?](https://superuser.com/questions/413650/is-there-any-way-to-speed-up-ddrescue) – Kamil Maciorowski Nov 28 '18 at 22:11
  • @KamilMaciorowski it is possibly a duplicate, but the difference is that I don't get errors, It's just very slow. That's why I thought maybe there is a way to speed things up. – badluck Nov 29 '18 at 10:35

1 Answers1

2

When ddrescue reads the disk, it has to read every block. It cannot know in advance which blocks are bad. So it will inevitably try to read a bad block. The disk will try very hard to correctly read this block before giving up and returning an error. This behavior cannot be disabled or controlled on consumer-grade hard drives.

So even without ddrescue retrying, bad blocks will slow down the process a lot. There is nothing you can do except keep going.

Daniel B
  • 60,360
  • 9
  • 122
  • 163
  • When it reads the bad block it increases the `errors`, right? But since the `errors` parameter does not increase I assume it's not encountering any error. – badluck Nov 29 '18 at 10:31
  • The hard drive could always succeed at making those blocks readable, too! Which would be even better for you, because you'd get the data. – Daniel B Nov 29 '18 at 12:53