了解多盘位设备中坏驱动器的位置非常重要,但是驱动器的默认命名(例如等/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"
Run Code Online (Sandbox Code Playgroud)
我在运行后确实得到了这样的符号链接udevadm trigger
,但它们并不等同/dev/sd*
,而且我无法使用它们作为替代。
写下我的评论作为答案。
\n使用命令
\nlshw -c disk -c storage | grep -E 'bus info|logical name\xe2\x80\x99\n
Run Code Online (Sandbox Code Playgroud)\n将设备名称映射到 PCI 设备。设备 id\xe2\x80\x99s 将均匀递增,其中 1 号设备的 id 最低。
\n您还可以使用udevadm
来获取设备 ID devices
。
udevadm info --name=/dev/nvme6\n
Run Code Online (Sandbox Code Playgroud)\n现在,您可以为磁盘设备指定与其安装的物理插槽相对应的名称。编辑或创建/etc/udev/rules.d/my.rules
. 您可以使用规则重命名设备。
KERNEL=="nvme*", SUBSYSTEM=="nvme", ENV{PHYSDEVPATH}=="*pci0000:20/0000:20:01.3/0000:25:00.0*", NAME="bay6"\nKERNEL=="nvme*", ENV{DEVTYPE}=="partition", SUBSYSTEM=="nvme", ENV{PHYSDEVPATH}=="*pci0000:20/0000:20:01.3/0000:25:00.0*", NAME="bay6p%n"\n
Run Code Online (Sandbox Code Playgroud)\n如果您有 SD 设备或 nvme,请将其更改SUBSYSTEM
为block
.
可以输入别名而不是重命名设备。查看SYMLINK+="bay6"
udev 文档。
归档时间: |
|
查看次数: |
607 次 |
最近记录: |