After 3 years in 24x7 service a 1TB Seagate Barracuda ES.2 enterprise drive is showing signs of failure. S.M.A.R.T. reallocated sector count is high.
Wikipedia article suggests that the drive can still be used for less sensitive purposes like scratch storage outside of an array if remapped sectors are left unused.
A workaround which will preserve drive speed at the expense of capacity
is to create a disk partition over the region which contains remaps and
instruct the operating system to not use that partition.
In order to create such a partition it is necessary to fetch the list of remapped sectors. However there are no badblocks visible to the operating system. I.e. badblocks
returns an empty list.
Is there a way to recover the list of reallocated sectors?
Edit: This drive is from an array. We get a few of them failing every year and just throwing them away seems to be a waste. I am thinking of giving a second chance to the better parts of the platters.
Here is how the S.M.A.R.T. report looks now.
=== START OF INFORMATION SECTION ===
Model Family: Seagate Barracuda ES.2
Device Model: ST31000340NS
Serial Number: **********
Firmware Version: SN05
...
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 056 054 044 Pre-fail Always - 164293299
3 Spin_Up_Time 0x0003 099 099 000 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 14
5 Reallocated_Sector_Ct 0x0033 005 005 036 Pre-fail Always FAILING_NOW 1955
7 Seek_Error_Rate 0x000f 076 060 030 Pre-fail Always - 8677183434
9 Power_On_Hours 0x0032 072 072 000 Old_age Always - 24893
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 037 020 Old_age Always - 14
184 End-to-End_Error 0x0032 100 100 099 Old_age Always - 0
187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0
188 Command_Timeout 0x0032 100 100 000 Old_age Always - 0
189 High_Fly_Writes 0x003a 097 097 000 Old_age Always - 3
190 Airflow_Temperature_Cel 0x0022 050 043 045 Old_age Always In_the_past 50 (0 6 50 32)
194 Temperature_Celsius 0x0022 050 057 000 Old_age Always - 50 (0 18 0 0)
195 Hardware_ECC_Recovered 0x001a 021 010 000 Old_age Always - 164293299
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 21
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 21
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0