ссылаться на весь диск (/ dev / sda), используя UUID

9

В моей системе (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 для файловых систем, а не разделов. Для разделов есть PARTUUID, но для целых дисков ничего нет. Вам, вероятно, придется написать правило udev, чтобы /dev/sdaвместо этого дать фиксированное имя.
Муру
1
Интересно, что в MBR теперь есть UUID (по крайней мере, если он был создан Windows), но, похоже, нет способа его использовать.
Джошуа

Ответы:

12

Сим-ссылки /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. Если существует несколько дисков одной модели, правило применяется снова для каждого из них, и символическая ссылка будет указывать на последний обнаруженный / добавленный диск.

don_crissti
источник
на самом деле, я бы хотел, UUIDчтобы они были одинаковыми для всех дисков одной и той же модели / типа / производителя. Вы случайно не знаете, какое правило использовать для этого? Очевидно, не серийный номер.
Майкл Бойес
пожалуйста, смотрите мое редактирование. То, что я пытаюсь сделать: допустим, мои HDDполомки, но у меня есть замена идентичного диска. Я заменяю его, и я хотел бы иметь то же самое, UUIDчто и раньше (хотя серийный номер изменился). Я не намерен использовать оба диска одновременно.
Майкл Бойес
@MichaelBoies - вы можете напрямую изменить UUID, gdiskно я не уверен, что это хорошая идея. Дон - прямое изменение ссылок - лучший способ сделать это, чем изменение UUID - компьютер, вероятно, перестанет загружаться.
mikeserv