在我的系统(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
.如果有多个相同型号的驱动器,则系统会再次对每个驱动器应用该规则,并且符号链接将指向最后检测到/添加的驱动器。