referenciar todo el disco (/ dev / sda) usando UUID

9

En mi sistema (Debian), puedo ver el UUIDidentificador para todos mis discos particiones (es decir /dev/sda1, dev/sda2..)

ls /dev/disk/by-uuid/

Sin embargo, no veo el UUIDidentificador por /dev/sdasí mismo. ¿Es posible hacer referencia a todo el disco con UUID?

Necesito esto porque quiero hacer referencia a un disco en particular, y no puedo confiar en que se llamará /dev/sda.

EDITAR

La solución sugerida por @don_crissti es genial. Sin embargo, me gustaría que el UUID sea el mismo para todos los discos duros del mismo Modelo / Fabricante, no único por número de serie.

Usando udevadm, puedo ver los atributos del disco:

udevadm info -n /dev/sda -a
ATTRS{model}=="Samsung SSD 840 "
ATTRS{vendor}=="0x8086"
ATTRS{class}=="0x010700"
ATTRS{device}=="0x1d6b"
....

¿Cómo puedo generar un a UUIDpartir de estos atributos, para que el mismo modelo / disco del fabricante tenga el mismo UUID?

Michael Boies
fuente
Los UUID son para sistemas de archivos, no para particiones. Hay PARTUUID para particiones, pero nada para discos completos. Probablemente tendrá que escribir una regla udev para dar /dev/sdaun nombre fijo en su lugar.
muru
1
Lo interesante de esto es que ahora hay un UUID en el MBR (al menos si fue creado por Windows) pero aparentemente no hay forma de usarlo.
Joshua

Respuestas:

12

Los enlaces simbólicos debajo /dev/disk/by-uuid/se crean mediante udevreglas basadas en UUID de sistemas de archivos . Si nos fijamos /usr/lib/udev/rules.d/60-persistent-storage.rules, encontrará entradas como:

...... ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"

Para hacer referencia a un disco, puede usar el número de serie del disco y la ENV{ID_SERIAL_SHORT}clave.
La siguiente udevregla coincide con la unidad con el número de serie. 0000000013100925DB96y crea un enlace simbólico con el mismo nombre debajo de /dev/disk/by-uuid/:

KERNEL=="sd*", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL_SHORT}=="0000000013100925DB96", SYMLINK+="disk/by-uuid/$env{ID_SERIAL_SHORT}"

En cuanto a su otra pregunta ... seguro, siempre puede usar en ENV{ID_MODEL}lugar de ENV{ID_SERIAL_SHORT}y usar una cadena personalizada para su nombre de enlace simbólico.
La siguiente regla coincide con cualquier unidad con ID_MODEL= M4-CT128M4SSD2y crea un enlace simbólico M4-SSD-1234567890en /dev/disk/by-uuid/:

KERNEL=="sd*", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", ENV{ID_MODEL}=="M4-CT128M4SSD2", SYMLINK+="disk/by-uuid/M4-SSD-1234567890"

Tenga en cuenta que esto funciona bien siempre que solo haya una unidad que coincida con ID_MODEL. Si hay varias unidades del mismo modelo, la regla se aplica nuevamente para cada una de ellas y el enlace simbólico apuntará a la última unidad detectada / agregada.

don_crissti
fuente
en realidad, me gustaría UUIDque fuera igual para todos los discos del mismo Modelo / Tipo / Fabricante. ¿Sabes qué regla usar para eso? Obviamente no es el número de serie.
Michael Boies
por favor vea mi edición Lo que estoy tratando de lograr: digamos que mis HDDrompe, pero tengo discos de reemplazo idéntica. Lo reemplazo y me gustaría tener el mismo UUIDque antes (aunque el número de serie ha cambiado). No tengo la intención de usar ambos discos al mismo tiempo.
Michael Boies
@MichaelBoies: puede modificar directamente el UUID con / gdisk, pero no estoy seguro de si es una buena idea. don: alterar directamente los enlaces es una forma mucho mejor de hacerlo que alterar realmente el UUID: la computadora probablemente dejaría de arrancar.
mikeserv