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.
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.487Why 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