Your SMART drive database of attribute meanings needs regular updates

October 24, 2021

A lot of people use the smartmontools tools to monitor their drives, either automatically through smartd (which is often set up by default) or directly through 'smartctl'. If you've ever used 'smartctl -A' to get the SMART attributes of your drives, you know that these attributes have names that often give you important information on how to interpret their values. Sadly, these names (and measurement units) mostly aren't standardized; instead, drive vendors come up with whatever they want, including varying them from model to model. Even when they use the same SMART attributes for the same purpose as other drives they may change the units.

Smartmontools deals with this by having a text file that contains a bunch of mappings for what various SMART attribute IDs mean on various different drives. On many systems, you can see your current version of this database in /usr/share/smartmontools/drivedb.h or /var/lib/smartmontools/drivedb/drivedb.h. Unsurprisingly, this drive database is updated on a regular basis to add and correct entries.

A SMART database that's missing necessary entries for your disks can have two effects. The obvious effect is if some SMART attributes are called just 'Unknown Attribute'; this at least lets you know that you don't really know what's going on. More dangerously, some attributes might be mis-labeled, so that for example smartctl thinks that the attribute is 'Total LBAs Written' when it's actually 'Host Writes GiB' (which explains why the values we see are so low on that disk model).

If you're using a Linux distribution that makes frequent releases, your smartmontools probably has a pretty up to date version of the drive database. If you're using a less frequently updated distribution, for example Ubuntu LTS, your SMART drive database is going to be out of date almost as soon as the distribution is released. This generally means that you want to update your drive database on a regular basis, unless you only ever use drives that are sufficiently old that they're in a SMART database from, say, 2018 (spoiler, they're not).

Smartmontools ships with an update-smart-drivedb script that can be used to do this. By default, it updates the location that was built into distribution package, which you may not want to do. Fortunately you can tell it to fetch to some other location, which you can then tell smartctl to use with 'smartctl -B ....'. You can also just read the script to determine the URLs and then fetch one of them yourself. I've generally used the smartmontools Github repo since I find the web interface much easier than SVN. You want drivedb.h in raw format, possibly from a branch instead of trunk.

(We've used the trunk version of drivedb.h without problems so far. Well, without obvious and visible problems at least.)

Written on 24 October 2021.
« Python 2's status in various Linux distributions (October 2021 edition)
Companies and their stewardship of open source projects »

Page tools: View Source, Add Comment.
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Sun Oct 24 00:22:43 2021
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.