如何根据多托架外壳中驱动器的位置命名驱动器?

如何根据多托架外壳中驱动器的位置命名驱动器?

了解多托架设备中坏驱动器的位置非常重要,但是驱动器的默认命名(例如等/dev/sda/dev/sdb并不能提供特定驱动器的物理位置的线索。

我有一个用于备份的 8 托架外部 JBOD 机箱。它托管一个 ZFS 池并连接到 Arch Linux 机箱。在 Linux 系统上是否可以使用systemd/udev而不是 来根据驱动器在机箱中的物理位置命名驱动器/dev/sd*

我希望名字能够反映驱动器在机箱中的物理位置 /dev/encl1, /dev/encl2... 或类似内容。我希望这些标签默认出现,而不是/dev/sd*lsblk和中出现zpool status

lsblk我确实知道机箱中每个驱动器的位置,并将此信息保存在文件中,但直接使用和其他命令查看它会更好 。

我尝试创建/etc/udev/rules.d规则

SUBSYSTEM=="block" KERNEL=="sd*" ENV{ID_SERIAL_SHORT}=="ZR5CTR4V" SYMLINK+="encl1"

运行后我确实得到了这样的符号链接udevadm trigger,但它们并不等同于/dev/sd*,我无法用它们来替代。

答案1

把我的评论写成答案。

使用命令

lshw -c disk -c storage | grep -E 'bus info|logical name’

将设备名称映射到 pci 设备。设备 ID 将均匀递增,托架 1 的 ID 最小。

您还可以使用它udevadm来获取设备 ID devices

udevadm info --name=/dev/nvme6

现在,您可以根据磁盘设备所安装的物理插槽为其指定名称。编辑或创建/etc/udev/rules.d/my.rules。您可以使用规则重命名设备。

KERNEL=="nvme*", SUBSYSTEM=="nvme", ENV{PHYSDEVPATH}=="*pci0000:20/0000:20:01.3/0000:25:00.0*", NAME="bay6"
KERNEL=="nvme*", ENV{DEVTYPE}=="partition", SUBSYSTEM=="nvme", ENV{PHYSDEVPATH}=="*pci0000:20/0000:20:01.3/0000:25:00.0*", NAME="bay6p%n"

如果您有 sd 设备或 nvme,请将其更改SUBSYSTEMblock

可以输入别名而不是重命名设备。请参阅SYMLINK+="bay6"udev 文档。

答案2

这只是对问题的部分回答,它确实可以为 ZFS 提供托架位置信息:

  1. 我曾经parted将 ZFS 分区的标签更改为类似这样的内容:encl1-3DS第一部分是托架位置,第二部分是驱动器序列的唯一部分。
(parted) p
Model: xxx (scsi)
Disk /dev/sdc: 4001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name       Flags
 1      1049kB  4001GB  4001GB               encl4-28P
 9      4001GB  4001GB  8389kB
  1. zpool export <zpool-name>

  2. zpool import -d /dev/disk/by-partlabel <zpool-name>

  3. 现在zpool status -v显示

❯ zpool status -v
  pool: ext
 state: ONLINE
  scan: scrub repaired 0B in 05:42:24 with 0 errors on Fri Jan  6 20:15:57 2023
config:

    NAME           STATE     READ WRITE CKSUM
    ext            ONLINE       0     0     0
      raidz1-0     ONLINE       0     0     0
        encl1-PT8  ONLINE       0     0     0
        encl7-C32  ONLINE       0     0     0
        encl4-28P  ONLINE       0     0     0
        encl2-N75  ONLINE       0     0     0
        encl5-ZT1  ONLINE       0     0     0
        encl6-9RP  ONLINE       0     0     0
        encl8-88F  ONLINE       0     0     0

errors: No known data errors

尚未排序,但已经比/dev/sd*

不过,我还是希望有一个更通用的解决方案,使自定义别名成为默认别名。

相关内容