Diagnosing whether a drive is reliable via S.M.A.R.T. attributes

0

I am trying to figure out if my hard drive is dying. I have researched the smart values and it looks like it might be, but it still reads and writes data just fine, and no new errors appear.

There used to be a 197 Current_Pending_Sector value of 8, but after zeroing out the drive the value reverted to 0 and the 196 Reallocated_Event_Count is 0.

Does this mean that there is no problem with the drive itself and it was a temporary system issue?

Also of concern is 188 Command_Timeout which has a value of 1, this is defined as:

The count of aborted operations due to HDD timeout. Normally this attribute value should be equal to zero and if the value is far above zero, then most likely there will be some serious problems with power supply or an oxidized data cable.

I have been doing some low level programming and I have had to force shut off my computer about 50 times.

I am assuming that the 191 G-Sense_Error_Rate value of 438 is fine, I think this is from moving the laptop around while the hard drive is on.

What's really funny is my windows partition stopped booting and could not be mounted on another windows or linux machine, but it mounted just fine on OSX, allowing me to recover my files. I reinstalled and have copied data to it since, and it seems to work perfectly. OSX is on another drive.

H2O:~ jeremiah$ smartctl -a /dev/disk1
smartctl 6.3 2014-07-26 r3976 [x86_64-apple-darwin14.1.0] (local build)
Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Device Model:     HGST HTS541075A9E680
Serial Number:    JD13021X0A00GK
LU WWN Device Id: 5 000cca 764c48bc4
Firmware Version: JA2OA590
User Capacity:    750,156,374,016 bytes [750 GB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    5400 rpm
Form Factor:      2.5 inches
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   ACS-2, ATA8-ACS T13/1699-D revision 6
SATA Version is:  SATA 3.0, 3.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Wed Mar 11 21:59:30 2015 PDT
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x00) Offline data collection activity
                    was never started.
                    Auto Offline Data Collection: Disabled.
Self-test execution status:      (   0) The previous self-test routine completed
                    without error or no self-test has ever 
                    been run.
Total time to complete Offline 
data collection:        (   45) seconds.
Offline data collection
capabilities:            (0x51) SMART execute Offline immediate.
                    No Auto Offline data collection support.
                    Suspend Offline collection upon new
                    command.
                    No Offline surface scan supported.
                    Self-test supported.
                    No Conveyance Self-test supported.
                    Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                    power-saving mode.
                    Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                    General Purpose Logging supported.
Short self-test routine 
recommended polling time:    (   2) minutes.
Extended self-test routine
recommended polling time:    ( 164) minutes.
SCT capabilities:          (0x003d) SCT Status supported.
                    SCT Error Recovery Control supported.
                    SCT Feature Control supported.
                    SCT Data Table supported.

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x002f   100   086   062    Pre-fail  Always       -       0
  2 Throughput_Performance  0x0025   100   100   040    Pre-fail  Offline      -       0
  3 Spin_Up_Time            0x0023   169   100   033    Pre-fail  Always       -       1
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       981
  5 Reallocated_Sector_Ct   0x0033   100   100   005    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x002f   100   100   067    Pre-fail  Always       -       0
  8 Seek_Time_Performance   0x0025   100   100   040    Pre-fail  Offline      -       0
  9 Power_On_Hours          0x0032   095   095   000    Old_age   Always       -       2586
 10 Spin_Retry_Count        0x0033   100   100   060    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       851
183 Runtime_Bad_Block       0x0032   100   100   000    Old_age   Always       -       0
184 End-to-End_Error        0x0033   100   100   097    Pre-fail  Always       -       0
187 Reported_Uncorrect      0x0032   100   001   000    Old_age   Always       -       144929376764360
188 Command_Timeout         0x0032   100   099   000    Old_age   Always       -       1
190 Airflow_Temperature_Cel 0x0022   069   050   045    Old_age   Always       -       31 (Min/Max 24/31)
191 G-Sense_Error_Rate      0x0032   099   099   000    Old_age   Always       -       438
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       2031647
193 Load_Cycle_Count        0x0032   089   089   000    Old_age   Always       -       115337
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0032   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0036   100   100   000    Old_age   Always       -       0
223 Load_Retry_Count        0x002a   100   100   000    Old_age   Always       -       0

SMART Error Log Version: 1
ATA Error Count: 456 (device log contains only the most recent five errors)
    CR = Command Register [HEX]
    FR = Features Register [HEX]
    SC = Sector Count Register [HEX]
    SN = Sector Number Register [HEX]
    CL = Cylinder Low Register [HEX]
    CH = Cylinder High Register [HEX]
    DH = Device/Head Register [HEX]
    DC = Device Command Register [HEX]
    ER = Error register [HEX]
    ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.

Error 456 occurred at disk power-on lifetime: 2549 hours (106 days + 5 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 08 38 8d 62 00  Error: UNC 8 sectors at LBA = 0x00628d38 = 6458680

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 00 08 38 8d 62 40 00      00:00:34.282  READ DMA EXT
  25 00 08 38 8d 62 40 00      00:00:30.471  READ DMA EXT
  25 00 08 38 8d 62 40 00      00:00:26.660  READ DMA EXT
  25 00 08 38 8d 62 40 00      00:00:22.849  READ DMA EXT
  2f 00 01 10 00 00 00 00      00:00:22.849  READ LOG EXT

Error 455 occurred at disk power-on lifetime: 2549 hours (106 days + 5 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 08 38 8d 62 00  Error: UNC 8 sectors at LBA = 0x00628d38 = 6458680

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 00 08 38 8d 62 40 00      00:00:30.471  READ DMA EXT
  25 00 08 38 8d 62 40 00      00:00:26.660  READ DMA EXT
  25 00 08 38 8d 62 40 00      00:00:22.849  READ DMA EXT
  2f 00 01 10 00 00 00 00      00:00:22.849  READ LOG EXT
  60 08 a8 38 8d 62 40 00      00:00:19.060  READ FPDMA QUEUED

Error 454 occurred at disk power-on lifetime: 2549 hours (106 days + 5 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 08 38 8d 62 00  Error: UNC 8 sectors at LBA = 0x00628d38 = 6458680

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 00 08 38 8d 62 40 00      00:00:26.660  READ DMA EXT
  25 00 08 38 8d 62 40 00      00:00:22.849  READ DMA EXT
  2f 00 01 10 00 00 00 00      00:00:22.849  READ LOG EXT
  60 08 a8 38 8d 62 40 00      00:00:19.060  READ FPDMA QUEUED
  60 08 a0 30 8d 62 40 00      00:00:19.059  READ FPDMA QUEUED

Error 453 occurred at disk power-on lifetime: 2549 hours (106 days + 5 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 08 38 8d 62 00  Error: UNC 8 sectors at LBA = 0x00628d38 = 6458680

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 00 08 38 8d 62 40 00      00:00:22.849  READ DMA EXT
  2f 00 01 10 00 00 00 00      00:00:22.849  READ LOG EXT
  60 08 a8 38 8d 62 40 00      00:00:19.060  READ FPDMA QUEUED
  60 08 a0 30 8d 62 40 00      00:00:19.059  READ FPDMA QUEUED
  60 08 98 28 8d 62 40 00      00:00:19.059  READ FPDMA QUEUED

Error 452 occurred at disk power-on lifetime: 2548 hours (106 days + 4 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 41 08 38 8d 62 00  Error: UNC at LBA = 0x00628d38 = 6458680

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  60 08 a8 38 8d 62 40 00      00:00:19.060  READ FPDMA QUEUED
  60 08 a0 30 8d 62 40 00      00:00:19.059  READ FPDMA QUEUED
  60 08 98 28 8d 62 40 00      00:00:19.059  READ FPDMA QUEUED
  60 08 90 20 8d 62 40 00      00:00:19.059  READ FPDMA QUEUED
  60 08 88 18 8d 62 40 00      00:00:19.059  READ FPDMA QUEUED

SMART Self-test log structure revision number 1
No self-tests have been logged.  [To run self-tests, use: smartctl -t]

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

JeremiahBarrar

Posted 2015-03-12T05:27:46.620

Reputation: 825

You should run the short and extended self-tests. The large number of ID#187 Reported_Uncorrect errors indicates a problem. Seems like there was a swarm of uncorrectabe read errors about 40 POHours ago. – sawdust – 2015-03-12T06:04:03.803

Answers

2

There used to be a 197 Current_Pending_Sector value of 8, but after zeroing out the drive the value reverted to 0 and the 196 Reallocated_Event_Count is 0.

This means that at one point, the drive had trouble reading some sectors, but it hasn't had any problems with them since you zeroed out the drive. When you overwrote the entire drive with fresh data, the sectors went from pending reallocation to normal, and presumably the drive was happy with the write because the sectors were not reallocated at that point. You should run a long SMART self-test (which normally includes a surface scan) to verify, but it may very well have been a glitch, perhaps related to moving the computer while the drive was operating.

Also of concern is 188 Command_Timeout which has a value of 1, this is defined as:

Not worth worrying about. The drive reports almost 2600 hours power-on time, and has seen a single command timeout in that time period. Command timeouts are handled by OSes by retrying the failed command or failing the I/O operation, so if this was a persistent problem you would know about it. Might be related to the 8 pending sectors, or might be unrelated.

I would worry if this starts climbing noticably, but single-digit number of timeouts with no other signs of problems with the system's operation wouldn't concern me.

I have been doing some low level programming and I have had to force shut off my computer about 50 times.

This should not affect the physical drive at any level worth worrying about, although it could affect logical data consistency (file system corruption, etc.).

Also, from sawdust's comment:

You should run the short and extended self-tests. The large number of ID#187 Reported_Uncorrect errors indicates a problem. Seems like there was a swarm of uncorrectabe read errors about 40 POHours ago.

This makes a good point, but we don't know the encoding of the raw value. What we can tell is that the "value" is currently a normalized 100, with a worst seen value of 1 and a threshold (for reporting that the drive has failed or that failure is imminent) of 0. That is, at the present time the drive does not feel this value is any cause for concern. And 1.45e14 read errors sounds almost impossibly high; by its own admission, the drive has about (750 GB at 4 KiB/sector) 183,000 sectors. In order to get the number of read failures reported as the raw value, each and every one single sector would have had to fail 791,000 times in the reported 2,586 power-on hours, or one outright read failure of the entire surface every 11 seconds. This is simply a ridiculous number (in ten seconds you'd be able to read only a small fraction of the entire disk surface), so we can safely conclude that for this drive and attribute 187, with a high degree of certainty, the raw value is something other than a simple integer count. It may be that the raw value is split in two parts, with either the high or low bits encoding the actual value and the other bits encoding something else. The hexadecimal value of the raw value of that attribute is 83D0 0005 01C8, where the string of zeroes in the middle does indicate such an encoding; while certainly possible, it appears unlikely that a random errors count would have such a long string of zeroes in the middle. If we for example take the lower bits (501C8 hex), that works out to 328,136 reported errors which while still quite a lot sounds a lot more believable.

Bottom line, SMART can be a great monitoring tool, but it isn't designed to catch and report all problems. Some drives churn along happily even long after SMART indicates they should be completely dead, and some drives fail catastrophically even though SMART says everything is great even after the failure. Take the SMART data for what it is, an early warning system and status report, not some sort of absolute truth about the health of the drive. Also, you have to read the raw values with a critical eye, as the encoding of those is implementation-defined. Rather, you should look at how the reported "value" compares to the drive's "threshold" value, as these are supposed to be meaningfully defined for the particular drive by the manufacturer.

If you are worried about those earlier pending (which basically means "found to be hard to read") sectors, run a full surface scan through SMART. If they come back as "pending", then it might be worth considering whether to replace the drive, but the simple fact is that almost any drive will develop some bad sectors over its useful life time, and has a number of spare sectors to compensate for that by reallocating the bad sectors. The reallocation does require the data to be known, however, so if a sector goes bad, it can only be reallocated during a write to that sector.

a CVn

Posted 2015-03-12T05:27:46.620

Reputation: 26 553

SMART data is best when you listen to drive. If it says literally says its in a failure state then it likely is, trying to look into the data, is a trip down a rabbit hole at times. It also doesn't report everything, there are some characteristics of the drive, that simply can't be tracked. For instance a grinding noise is a mechanical problem but does not mean the drive will detect I/O problems but a grinding sound does indicate a problem all the same (bad example) but good enough to illustrate a point – Ramhound – 2015-03-12T10:33:54.973

@Ramhound Um, isn't that more or less what I said in writing that SMART "isn't designed to catch and report all problems"? – a CVn – 2015-03-12T12:10:24.743