I have a failing 2TB Seagate Barracuda drive which came from a GoFlex Home NAS. First sign of trouble came when the drive showed all its root folders and sub-directories as empty, although windows (via a mounted share) still displayed the expected disk usage, about 1.2TB of the full available 1.8TB)
After researching on the net I came across a guide that recommended first making a copy of the disk and trying to recover data from that. This article recommended ddrescue so I purchased PartedMagic and a second 2TB Seagate Barracuda drive to clone to.
Both the new drive and the failing drive are connected directly by SATA cables to a PC running PartedMagic from a USB stick. I've turned SMART off in the BIOS and have a fan directly over the failing drive as I expect the problem is due to overheating (the old drive is now out of its GoFlex NAS enclosure).
When the failing drive is on, booting is a bit slow (even though I've set USB as first boot device in the BIOS) but eventually PartedMagic loads ok. In the file manager (Places) I can see both the new drive and the failing GoFlex drive. To confirm the name of the block devices attached to the system I run this command:
lsblk -o name,label,size,fstype,model
which shows the devices as expected (the failing drive also appears in the BIOS)
So then I tried ddrescue... initially using:
ddrescue -d -f /dev/sda /dev/sdb /media/sdd1/rescue.logfile
(where sdd1 is another usb stick attached to the system to save the logfile to)
But from the very start i've got 0 B copied, current rate remains at 0B/s and run time and successful read (time) remain identical. In other words, as far as I can tell ddrescue never actually reads a single byte from the failing disk:
I let this run for about two days until the Finished prompt appeared in the terminal. 0 B copied.
So I then tried partitioning the new drive (with a single ntfs partition, to match the failing drive) and repeated the process but this time only cloning the partition:
ddrescue -d -n -f /dev/sda1 /dev/sdb1 /media/sdd1/rescue2.logfile
Same result:
This time I used Ctrl-C to stop the process after an hour rather than unnecessarily further damage the drive.
I also tried copying to a disk image
ddrescue -d -n /dev/sda1 /dev/sdb1/drive.img /media/sdd1/rescue3.logfile
Again, after ending at the Finished prompt the drive.img file was 0B.
Reading through the "helpful last comment on the question I mentioned previously" I then tried different ddrescue options, reading backwards, with and without direct access, using --force, powering the drive on and off a number of times (cringe!) each time hoping that it would suddenly start being read by ddrescue... no luck.
It still appears in 'Places' with its partition name 'GoFlex Home' so although I know you're not meant to, someone suggested mounting the drive. They'd had a similar 0 B problem and found that mounting the drive in read only mode solved the issue for them. I tried but just got an error telling me there was an i/o error and that the drive probably has a hardware fault and can't be mounted. (sorry didn't get a copy of the exact message)
So... maybe I'm being overly optimistic but I can't see how a drive that is so badly damaged can appear in File Manager with its partition name intact. Why can't ddrescue rescue a single byte scanning either forwards or backwards? I can't quite believe it, I must be doing something wrong but I don't know what else to try and I don't want to further damage the disk unnecessarily.
Does anyone have any advice? Other (non-commercial) software I should try? Any other techniques I could use to diagnose the problem?
Or should I bite the bullet and consider swapping the logic board from my new Seagate Barracuda to the old one as a last ditch attempt?
UPDATES:
@Stephen Kitt I ran dmesg (using grep to show just the problem hard-drive) and got the following output:
Does it mean anything? I'm surprised to see "Attached SCSI disk" when I'm connecting to a SATA port on the motherboard. Thanks for your help
dmesg
will show you.) There should be more information about the errors there... – Stephen Kitt Jul 30 '15 at 23:36ddrescue
is supposed to work argument-wise, but you can definitely trysudo dd if=/dev/sda of=./img bs=4k count=4
and see if ./img turns out empty - I doubt that it will. – mikeserv Aug 01 '15 at 01:15