Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm trying to recover data from an old 320G hard drive (full of bad sectors) to a new one. I found that ddrescue is a good tool for this task due to it's smart algorithm. I have already done this once with following command:

ddrescue -f -n /dev/sda /dev/sdb log

It was completed in several hours with errsize 16G (unrecovered) wich still may contain important data, so I ran next pass:

ddrescue -f -d /dev/sda /dev/sdb log

but it runs too slow (avg 300B/s) because linux getting stuck on each bad sector.
It's actually linux kernel (probably libata), not a hard disk itself, because I tried to recover in DMDE tool running on clean DOS and there was no such problem: ATA timeout can be tuned there and overall recovery process runs MUCH faster.
But not in Linux.
I also tried these kernel parameters: libata.ignore_hpa=1 libata.noacpi libata.force=noncq,norst and also libata.dma=0 passing to cmdline at bootlader, but it had no effect (im using System Rescue CD where LIBATA compiled in kernel).
Also tried to change device timeout:

echo 1 > /sys/block/sda/device/timeout

(default is 30)
but it's only generates more errors flood in syslog and don't help.
Passing bad blocks still takes 1-3 minutes for each sector wich is incredebly slow. How much time it need for parsing 16GBs of "bad" chunks? A week? Month?
I still prefer ddrescue for recovery (due to its efficient algorithm and logfile functionality) and want to know how to tune kernel driver to speedup ata/disk error handling. Google and related questions here on SU did'nt help. Any ideas?

P.S. sorry for my english

Why don't you just restore from your regular backups?

This hard disk of my friend, not mine. So sad, he have no backups. Now, after disk crash, he starting think about making backups, yes :)

UPD: 2.5 years later I still don't know the answer, but just realized that ddrescue works faster when sata controller is in Compatibility (IDE) mode, another tip is always use -d option (direct access) to speed up things slightly. Also take a look at hdparm options to tune HDD (-m, -D, -P), it could help (on old hardware).

UPD2: Just noticed the Slizzered's answer to related question. It's great! I tried:

smartctl -l scterc,20,20 /dev/sda

and recovery went much faster than before (only in IDE mode though).

share|improve this question
Why don't you just restore from your regular backups? – Jun 16 '13 at 13:27
What is your Linux is it Ubuntu, Kubuntu...? – poqdavid Jun 16 '13 at 13:42
@idavid As i mentioned in a question I used System rescue CD distro for recovery (gentoo based), as I always do. – lolimperator Jun 16 '13 at 13:44
@lolimperator you are a bit slow lol i fixed it – poqdavid Jun 16 '13 at 13:47
Yea, sorry , I'm new to SU, it's my first post/question, but I found many solutions here in the past (since linux became my favorite toy lol). So I hope someone met same problem and may be can forward me in right direction for solution or just share an experience. – lolimperator Jun 16 '13 at 14:01

From the DDRescue man:

(the user may interrupt the process at any point, but be aware that a bad drive can block ddrescue for a long time until the kernel gives up)

So the short answer is: with DDRescue you can't because you can't change the Kernel timeout (you need to edit the right source in the right place and recompile... not simple!).

I had good results using some software contained in Hiren's boot:

  • DataResque DD (make an image)
  • Roadkil's Unstoppable Copier (copies the files and logs errors)

Both run in the MiniXP also contained in Hiren's boot. It run from CD/DVD or USB drive.

Advice: harddisks can run very hot, this is bad and worse the process. Cool down with a fan, this prolongs their life and can make faster the work.

share|improve this answer
Thanks for the unexplained down vote! – nicolap8 Jan 12 '15 at 12:25
Hi! Thanks for the answer. It's actually not a solution to my initial question/problem, but can be helpfull for me (and others) in future. Thank you. P.S. upvoted (have no idea who is downvoted you) – lolimperator Jan 13 '15 at 1:56
Do not want to be polemical but your question was: "Any ideas?" ;-) Just happy if helped... – nicolap8 Jan 13 '15 at 8:34

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .