I have a couple of hard drives with bad sectors.
They both held root partitions for different Red Hat systems on sda3.
One was Fedora3, and the other was an old Red Hat Linux 8.0 (Psyche).
I copied the flaky partitions using "dd if=/dev/sda3 of=sda3 bs=512 conv=noerror,notrunc,sync" and then was able to mount the copies and run fsck to see what is going to be lost when the system tries to fixup the filespace.
There were literally thousands (1,200+) bad sectors on each drive, and likewise a similar amount of inodes stuck in lost+found with no filename reference except for the inode number.
I made a second copy using dd and noticed that some of the bad sectors previously "not" copied were successfully repaired and copied intact on the second pass.
So I captured the dd error messages "dd: reading '/dev/sda3': Input/output error", xxxxxx+nnn records in, xxxxxxxxx+0 records out... to a file and am using that to hammer away at getting just the bad blocks off of the drive.
This has been running for three or four days now, and seems to have hit a brick wall. It is painfully slow reading only 3 or 4 sectors per minute and is taking about 6 hours to do one pass over the bad blocks.
So far I have successfully converted less than a hundred bad blocks into good blocks.
The problem is... when reading the so-called bad blocks, the only data I get are empty (fully zeroed) data blocks. Certainly there is some data on the disk drive, and I want to retrieve all of my data... errors or not.
Does anyone know how to turn off the ide, and sata, block error checking so I can get at the bad data? It would also help if we could speed things up by reducing the bad sector time-out if possible.
Additionally the smart drives are apparently doing autoreallocates when possible on the bad sectors. Is there a way to back track and retrieve the "bad data" off of the old reallocated sectors?