Hi,
I'm in the process of recovering data from a bad HDD using ddrescue. I've done this a few times, and I'm pretty comfortable with using ddrescue. However, things are moving very slowly with the HDD I'm working on right now. ddrescue seems to grab ~200MB off the disk very quickly (~5MB/s), then gets hung up on the next ~65MB, reading at 1-2KB/s. When I look at /var/log/messages, I get this every 10s:
Code:
Sep 17 10:28:23 localhost kernel: ata5.00: exception Emask 0x0 SAct 0x1 SErr 0x0 action 0x0
Sep 17 10:28:23 localhost kernel: ata5.00: irq_stat 0x00060002, device error via SDB FIS
Sep 17 10:28:23 localhost kernel: ata5.00: cmd 60/00:00:98:31:f4/01:00:0d:00:00/40 tag 0 cdb 0x0 data 131072 in
Sep 17 10:28:23 localhost kernel: res 41/40:00:98:31:f4/95:00:0d:00:00/6d Emask 0x409 (media error) <F>
Sep 17 10:28:23 localhost kernel: ata5.00: configured for UDMA/100
Sep 17 10:28:23 localhost kernel: ata5: EH complete
Sep 17 10:28:23 localhost kernel: sd 4:0:0:0: [sdb] 488397168 512-byte hardware sectors (250059 MB)
Sep 17 10:28:23 localhost kernel: sd 4:0:0:0: [sdb] Write Protect is off
Sep 17 10:28:23 localhost kernel: sd 4:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
From looking at /sys/block/sdb/stat, the longest reads appear to take about 100s to complete.
I'd like to speed up the reads. I'm going to go back and retry the bad blocks later, anyway, but I wanted to grab as much as I can from the disk on the first pass. I'm worried that all of the read retrying is just further damaging the disk.
Does anyone have any ideas on how I can either decrease the number of read retries, or decrease the amount of time before the reads time out? These answers, or any other suggestions, would be appreciated.
Thanks!