missing serial / scsi / disk by-id
When you have a lot of storage devices, it's best practice to assign them to raid arrays or ZFS pools by something identifiable. And preferably something that's also readable when outside a computer. Commonly: the disk manufacturer and the serial number.
Usually, both the disk manufacturer and the disk serial number are printed on a small label on the disk. So, if you're in the data center replacing a disk, one glance is sufficient to know you got the correct disk.
For this reason, our ZFS storage pool configurations look like this:
  NAME                                  STATE
  tank                                  ONLINE
    raidz2-0                            ONLINE
      scsi-SSEAGATE_ST10000NM0226_6351  ONLINE
      scsi-SSEAGATE_ST10000NM0226_0226  ONLINE
      scsi-SSEAGATE_ST10000NM0226_8412  ONLINE
      scsi-SSEAGATE_ST10000NM0226_...   ONLINE
Instead of this:
  NAME        STATE
  tank        ONLINE
    raidz2-0  ONLINE
      sda     ONLINE
      sdb     ONLINE
      sdc     ONLINE
      sd...   ONLINE
If you're replacing a faulty disk, you can match it to the serial number and confirm that you haven't done anything stupid.
Referencing these disks is as easy as using the symlink in
/dev/disk/by-id.
No model names and serial numbers in udev?
But I don't have any serial numbers in /dev/disk/by-id, I only have
these wwn- numbers.
If your /dev/disk/by-id looks like this:
# ls -1 /dev/disk/by-id/
scsi-35000c5001111138e
scsi-35000c50011111401
...
wwn-0x5000c5001111138e
wwn-0x5000c5001111140f
...
And it has no manufacturer/serial symlinks, then udev is letting you down.
Looking at udevadm info /dev/sda may reveal that you're missing some
udev rules. On this particular machine I did have ID_SCSI_SERIAL,
but not SCSI_VENDOR, SCSI_MODEL or SCSI_IDENT_SERIAL.
On Ubuntu/Focal, the fix was to install sg3-utils-udev which
provides udev rules in 55-scsi-sg3_id.rules and
58-scsi-sg3_symlink.rules:
# apt-get install sg3-utils-udev
# udevadm trigger --action=change
# ls -1 /dev/disk/by-id/
scsi-35000c5001111138e
scsi-35000c50011111401
...
scsi-SSEAGATE_ST10000NM0226_8327
scsi-SSEAGATE_ST10000NM0226_916D
...
wwn-0x5000c5001111138e
wwn-0x5000c5001111140f
...
Awesome. Devices with serial numbers. I'm off to create a nice zpool.
