Backing up HDD with bad sectors. Why is it so slow?

0

So I have a Western Digital 2TB WD20EARS "Caviar Green" HDD that managed to fail on me after only ~3 years of use. I had it in a home server machine that I frankenstein'd together, though the machine wasn't subject to heavy traffic or excessive disk I/O. Suddenly it started getting Kernel panics pretty regularly, and I noticed it started to take forever to boot back up. I checked the S.M.A.R.T. status of the drive and found that it had a high reallocated sector count (>1200). Unfortunately, I didn't have a spare drive to keep it regularly backed up to, so I'm now going through the ever-so-fun process of recovering the data off of it that I can.

I'm running safecopy to make an image of the drive, which works in a manner similar to dd_rescue. I'm seeing the output image grow by about 10GB an hour, which is very, very, very slow. About 3Mb/s. At this rate, it'll take me another 4 weeks before this is done copying (I can only run the safecopy for 8 hours each day - while i'm at work).

So Here's my question: Why is this hard drive so slow? It does it regardless of whether I hook it up internally to a computer via a SATA cable or using my USB3 adapter. I can feel the drive vibrating, but it feels like it's not spinning very fast.

Here's the S.M.A.R.T. report from 4 days ago:

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x002f   200   200   051    Pre-fail  Always       -       1043
  3 Spin_Up_Time            0x0027   253   147   021    Pre-fail  Always       -       4016
  4 Start_Stop_Count        0x0032   094   094   000    Old_age   Always       -       6468
  5 Reallocated_Sector_Ct   0x0033   041   041   140    Pre-fail  Always   FAILING_NOW 1265
  7 Seek_Error_Rate         0x002e   090   008   000    Old_age   Always       -       201781
  9 Power_On_Hours          0x0032   057   057   000    Old_age   Always       -       31754
 10 Spin_Retry_Count        0x0032   100   100   000    Old_age   Always       -       0
 11 Calibration_Retry_Count 0x0032   100   100   000    Old_age   Always       -       0
 12 Power_Cycle_Count       0x0032   098   098   000    Old_age   Always       -       2341
192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always       -       172
193 Load_Cycle_Count        0x0032   001   001   000    Old_age   Always       -       1426599
194 Temperature_Celsius     0x0022   109   102   000    Old_age   Always       -       43
196 Reallocated_Event_Count 0x0032   001   001   000    Old_age   Always       -       1265
197 Current_Pending_Sector  0x0032   196   196   000    Old_age   Always       -       1448
198 Offline_Uncorrectable   0x0030   200   196   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0008   117   035   000    Old_age   Offline      -       16609

And the one from right now:

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x002f   200   200   051    Pre-fail  Always       -       1281
  3 Spin_Up_Time            0x0027   178   147   021    Pre-fail  Always       -       8066
  4 Start_Stop_Count        0x0032   094   094   000    Old_age   Always       -       6471
  5 Reallocated_Sector_Ct   0x0033   041   041   140    Pre-fail  Always   FAILING_NOW 1265
  7 Seek_Error_Rate         0x002e   099   008   000    Old_age   Always       -       153810
  9 Power_On_Hours          0x0032   057   057   000    Old_age   Always       -       31778
 10 Spin_Retry_Count        0x0032   100   100   000    Old_age   Always       -       0
 11 Calibration_Retry_Count 0x0032   100   100   000    Old_age   Always       -       0
 12 Power_Cycle_Count       0x0032   098   098   000    Old_age   Always       -       2344
192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always       -       175
193 Load_Cycle_Count        0x0032   001   001   000    Old_age   Always       -       1426599
194 Temperature_Celsius     0x0022   110   102   000    Old_age   Always       -       42
196 Reallocated_Event_Count 0x0032   001   001   000    Old_age   Always       -       1265
197 Current_Pending_Sector  0x0032   196   196   000    Old_age   Always       -       1448
198 Offline_Uncorrectable   0x0030   200   196   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0008   117   035   000    Old_age   Offline      -       16609

I have noticed a steady increase in the Spin_Up_Time attribute raw value over the last four days, though the normalized value is is still way above the threshold.

Gogeta70

Posted 2017-10-20T20:55:56.040

Reputation: 111

2When there are bad sectors there can be methods of recovering the data, or at the very least, there are a given number of retries and a wait period for each when the imaging software encounters a bad sector. Some imaging software has an option to ignore the bad sectors (or CRC errors) and this will forego the wait period and the retries, speeding the process considerably, but also losing the data affected by those sectors. – music2myear – 2017-10-20T21:11:15.007

"Why is it so slow?" - Your HDD has bad sectors which means, each time it attempts to read those sectors, I/O errors happen. "Why is this hard drive so slow?" - Your drive has failed. Every time you attempt to read one of the fail sectors you generate an I/O error. Eventually, If you continue to read the data off the drive like you are, you will lose access to your data. – Ramhound – 2017-10-20T21:28:05.667

Is it on Linux? I guess so, but it wouldn't harm if your question was clear about it. This may help: How to change HDD read error timeout?

– Kamil Maciorowski – 2017-10-20T22:05:38.487

Why can you only run this for 8 hours a day? It almost sounds like you are trying to continue using this drive and can't be bothered to focus on recovering data. This will only result in data loss and a bad clone because you are making changes to the drive in between each time you resume the clone. You have other options like ddrescue, and this process can take a long time. Yes, I usually plan on a week. – Appleoddity – 2017-10-20T22:44:21.157

@Appleoddity I run the backup while I'm at work, but after work I take my laptop home and leave the drive on my desk (powered off) until the next day. – Gogeta70 – 2017-10-20T22:47:12.487

@Ramhound While I agree that attempting to read bad sectors can slow down reading the drive, safecopy reports when it runs into bad sectors, and then skips (in my case) 100mb ahead, leaving a hole in the image file. Since yesterday, I haven't run into a single bad sector, neither reported by safecopy or dmesg. – Gogeta70 – 2017-10-20T22:51:03.353

@KamilMaciorowski Yes, I am doing this on Linux. – Gogeta70 – 2017-10-20T22:51:20.593

No answers