Udev

使用 UUID 引用整個磁碟 (/dev/sda)

  • February 20, 2015

在我的系統 (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

下面的符號連結由基於文件系統UUID/dev/disk/by-uuid/的規則創建。如果您查看,您會發現以下條目:udev``/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. 如果有多個相同型號的驅動器,則對每個驅動器再次應用該規則,並且符號連結將指向最後檢測/添加的驅動器。

引用自:https://unix.stackexchange.com/questions/185580