довідковий цілий диск (/ dev / sda) за допомогою UUID


9

У моїй системі (Debian), я можу бачити UUIDідентифікатор для всіх моїх дисків розділів (тобто /dev/sda1, dev/sda2..)

ls /dev/disk/by-uuid/

Однак я не бачу UUIDдля /dev/sdaсебе ідентифікатор . Чи можна посилатися на весь диск UUID?

Мені це потрібно, тому що я хочу посилатися на певний диск, і я не можу розраховувати, що він буде викликаний /dev/sda.

EDIT

Рішення, яке запропонував @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}і використовувати спеціальний рядок для свого імені symlink.
Наступне правило відповідає будь-якому диску з 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. Якщо є кілька приводів однієї і тієї ж моделі, правило застосовується знову для кожного з них, і символьне посилання вказуватиме на останній виявлений / доданий диск.


насправді я хотів би, UUIDщоб це було однаковим для всіх дисків однієї моделі / типу / виробника. Чи знаєте ви, яке правило використовувати для цього? Очевидно, не серійний номер.
Майкл Бойс

будь ласка, дивіться мою редакцію. Що я намагаюся досягти: дозвольте сказати, що мій HDDламається, але у мене є однаковий диск для заміни. Я його замінюю, і я хотів би мати те саме, що UUIDі раніше (навіть незважаючи на те, що серійний номер змінився). Я не маю наміру використовувати обидва диски одночасно.
Майкл Бойз

@MichaelBoies - ви можете безпосередньо змінити UUID w / gdisk- але я не впевнений, чи це така гарна ідея. don - безпосередньо зміна посилань - це кращий спосіб зробити це, ніж насправді змінити UUID - комп'ютер, ймовірно, перестане завантажуватися.
mikeserv
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.