编辑

编辑

在我的系统(Debian)上,我可以看到UUID所有磁盘分区的标识符(即/dev/sda1,,dev/sda2..)

ls /dev/disk/by-uuid/

但是,我没有看到UUID标识符/dev/sda本身。是否可以引用整个磁盘UUID

我需要这个,因为我想引用一个特定的磁盘,并且我不能依赖它会被调用/dev/sda

编辑

@don_crissti 建议的解决方案很棒。但是,我希望同一型号/制造商的所有硬盘的 UUID 都相同,而不是序列号唯一。

使用udevadm,我可以看到磁盘属性:

udevadm info -n /dev/sda -a
ATTRS{model}=="Samsung SSD 840 "
ATTRS{vendor}=="0x8086"
ATTRS{class}=="0x010700"
ATTRS{device}=="0x1d6b"
....

如何UUID从这些属性生成 ,以便同一型号/制造商磁盘具有相同的UUID

答案1

下面的符号链接/dev/disk/by-uuid/udev根据以下规则创建的文件系统UUID。如果您查看,/usr/lib/udev/rules.d/60-persistent-storage.rules您会发现类似以下的条目:

...... ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"

要引用磁盘,您可以使用磁盘序列号ENV{ID_SERIAL_SHORT}钥匙。
以下udev规则与序列号的驱动器匹配。0000000013100925DB96并在以下位置创建同名的符号链接/dev/disk/by-uuid/

KERNEL=="sd*", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL_SHORT}=="0000000013100925DB96", SYMLINK+="disk/by-uuid/$env{ID_SERIAL_SHORT}"

至于你的另一个问题......当然,你总是可以使用ENV{ID_MODEL}而不是ENV{ID_SERIAL_SHORT}使用自定义字符串作为你的符号链接名称。
以下规则与任何带ID_MODEL= 的驱动器匹配,并在 下M4-CT128M4SSD2创建符号链接:M4-SSD-1234567890/dev/disk/by-uuid/

KERNEL=="sd*", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", ENV{ID_MODEL}=="M4-CT128M4SSD2", SYMLINK+="disk/by-uuid/M4-SSD-1234567890"

请注意,只要只有一个驱动器与ID_MODEL.如果有多个相同型号的驱动器,则系统会再次对每个驱动器应用该规则,并且符号链接将指向最后检测到/添加的驱动器。

相关内容