One-liner: Check the five, most important SMART parameters on a disk.

A while ago, Backblaze published a report on what they consider to be the most reliable SMART parameters for determining whether a disk is failing. These include:

  • 5 – Reallocated_Sector_Ct
  • 187 – Uncorrectable_Error_Cnt
  • 188 – Command_Timeout
  • 197 – Current_Pending_Sector_Count
  • 198 – Offline_Uncorrectable

For a complete description of these parameters, take a look at the Wikipedia article on SMART.

While our sample of failing disks is no where near as large as Backblaze’s, our results have, unsurprisingly, correlated pretty strongly to theirs.

Note that not all of these parameters are supported by the drive manufacturers and that we typically don’t see many of these parameters on the hard disks supplied in Apple hardware. Additionally, note that SMART is not supported on some drives.

Assuming you’ve got smartmontools installed, this one-liner will very quickly give you a snapshot of the key values we look for as strong indicators that a drive needs to be replaced:

smartctl -a disk0 | egrep "^( 5|187|188|197|198)"

where

disk0

is the disk you’re testing. To get the disks available to test, run

diskutil list

You’ll get back output that looks like this:

/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *256.1 GB   disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD                 255.2 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.1 GB   disk1
   1:                        EFI                         209.7 MB   disk1s1
   2:                  Apple_HFS Storage                 499.8 GB   disk1s2

In the example above, there are two disks to choose from,

disk0

and

disk1

Assuming the drive supports all five SMART parameters, you’ll get back something that looks like this:

  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
187 Reported_Uncorrect      0x0032   100   100   001    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   100   001    Old_age   Always       -       0
197 Current_Pending_Sector  0x0032   100   100   001    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   100   100   001    Old_age   Offline      -       0

Those trailing zeros are what we like to see. Positive values in the last column mean that the drive probably needs to be replaced.