2018-02-17
Using lsblk
to get extremely useful information about disks
Every so often I need to know the serial number of a disk, generally
because it's the only way to identify one particular disk out of
two (or more) identical ones. As one example, perhaps I need to
replace a failed drive
that's one of a pair. You can get this information from the disks
through smartctl
, but the process is somewhat annoying if you
just want the serial number, especially if you want it for multiple
disks.
(Sometimes you have a dead disk so you need to find it by process of elimination starting from the serial numbers of all of the live disks.)
I've used lsblk
for some time to get disk UUIDs and raid UUIDs,
but I never looked very deeply at its other options. Recently I
discovered that lsblk
can do a lot more, and in particular it can
report disk serial numbers (as well as a bunch of other handy
information) in an extremely convenient form. It's simplest to just
show you an example:
$ lsblk -o NAME,SERIAL,HCTL,TRAN,MODEL --nodeps /dev/sd? NAME SERIAL HCTL TRAN MODEL sda S21NNXCGAxxxxxH 0:0:0:0 sata Samsung SSD 850 sdb S21NNXCGAxxxxxE 1:0:0:0 sata Samsung SSD 850 sdc Zxxxxx4E 2:0:0:0 sata ST500DM002-1BC14 sdd WD-WMC5K0Dxxxxx 4:0:0:0 sata WDC WD1002F9YZ-0 sde WD-WMC5K0Dxxxxx 5:0:0:0 sata WDC WD1002F9YZ-0
(For obscure reasons I don't feel like publishing the full serial numbers of our disks. It might be harmless to do so, but let's not find out otherwise the hard way.)
You can get a full list of possible fields with 'lsblk --help
',
along with generally what they mean, although you'll find that some
of them are less useful than you might guess. VENDOR
is always
'ATA' for me, for example, and KNAME
is the same as NAME
for
my systems; TRAN
is usually 'sata', as here, but we have some
machines where it's different. Looking for a PHY-SEC
that's not
512 is a convenient way to find advanced format drives, which may be surprisingly
uncommon in some environments.
SIZE
is another surprisingly handy field; if you
know you're looking for a disk of a specific size, it lets you
filter disks in and out without checking serial numbers or even the
specific model, if you have multiple different sized drives from
one vendor such as WD or Seagate.
(--nodeps
tells lsblk
to just report on the devices that you
gave it and not also include their partitions, software RAID devices
that use them, and so on.)
This compact lsblk
output is great for summarizing all of the
disks on a machine in something that's easy to print out and use.
Pretty much everything I need to know is one spot and I can easily
use this to identify specific drives. I'm quite happy to have
stumbled over this additional use of lsblk
, and I plan to make
much more use of it in the future. Possibly I should routinely
collect this output for my machines and save it away.
(This entry is partly to write down the list of lsblk
fields that
I find useful so I don't have to keep remembering them or sorting
through lsblk --help
and trying to remember the fields that are
less useful than they sound.)