私のシステム(Debian)では、すべてのディスクパーティションのUUID
識別子を確認できます(つまり、/dev/sda1
、dev/sda2
、..)
ls /dev/disk/by-uuid/
ただし、/dev/sda
自体のUUID
識別子が表示されません。 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
を持つようにするにはどうすればよいですか?
/dev/disk/by-uuid/
の下のシンボリックリンクは、filesystemsUUIDに基づく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
に一致するドライブが1つしかない限り、これは正常に機能します。同じモデルのドライブが複数ある場合は、それらのそれぞれにルールが再度適用され、シンボリックリンクは最後に検出/追加されたドライブを指します。