El primero informa el UUID del sistema de archivos ext4 en el md
dispositivo de bloque. Ayuda al sistema a identificar el sistema de archivos de manera única entre los sistemas de archivos disponibles en el sistema. Eso se almacena en la estructura del sistema de archivos, es decir, en los datos almacenados en el dispositivo md.
El segundo es el UUID del dispositivo RAID. Ayuda al subsistema md a identificar ese dispositivo RAID particular de manera única. En particular, ayuda a identificar todos los dispositivos de bloque que pertenecen a la matriz RAID. Se almacena en los metadatos de la matriz (en cada miembro). Los miembros de la matriz también tienen su propio UUID (en el sistema md, también pueden tener UUID de partición si son particiones GPT (que a su vez se almacenarían en la tabla de particiones GPT), o volúmenes LVM ...).
blkid
es un poco engañoso, ya que lo que devuelve es la ID de la estructura almacenada en el dispositivo (para ese tipo de estructuras que conoce como la mayoría de los sistemas de archivos, miembros LVM y dispositivos de intercambio). También tenga en cuenta que no es raro tener dispositivos de bloque con estructuras con UUID idénticos (por ejemplo, instantáneas LVM). Y un dispositivo de bloque puede contener cualquier cosa, incluidas cosas cuya estructura no incluye un UUID.
Entonces, como ejemplo, podría tener un sistema con 3 unidades, con particionamiento GPT. Esas unidades podrían tener un nombre mundial que lo identifica de manera única. Digamos que las 3 unidades están particionadas con una partición cada una ( /dev/sd[abc]1
). Cada partición tendrá un UUID GPT almacenado en la tabla de particiones GPT.
Si esas particiones forman una matriz md RAID5. Cada uno obtendrá un UUID md como miembro RAID, y la matriz obtendrá un UUID como dispositivo md RAID.
Eso /dev/md0
puede dividirse aún más con MSDOS o particiones tipo GPT. Por ejemplo, podríamos tener una /dev/md0p1
partición con un UUID GPT (almacenado en la tabla de particiones GPT que se almacena en los datos de / dev / md0).
Eso a su vez podría ser un volumen físico para LVM. Como tal, obtendrá un UUID PV. El grupo de volúmenes también tendrá un VG UUID.
En ese grupo de volúmenes, crearía volúmenes lógicos, cada uno con un UUID de LV.
En uno de esos LV (como /dev/VG/LV
), podría crear un sistema de archivos ext4. Ese sistema de archivos obtendría un UUID ext4.
blkid /dev/VG/LV
le daría el UUID (ext4) de ese sistema de archivos. Pero como una partición dentro del volumen VG, también obtendría un UUID de partición (algunos esquemas de partición como MSDOS / MBR no tienen UUID). Ese grupo de volúmenes está formado por miembros PV que son otros dispositivos de bloque. blkid /dev/md0p1
te daría el PV UUID. También tiene un UUID de partición en la tabla GPT /dev/md0
. /dev/md0
en sí está hecho de otros dispositivos de bloque. blkid /dev/sda1
devolverá el UUID de miembro de la redada. También tiene un UUID de partición en la tabla GPT /dev/sda
.
mdadm
? Acabamos de volver a crear una imagen de un servidor y los UUID son diferentes, por lo que queremos restaurar los UUID anteriores para que no necesitemos cambiar todos los archivos de configuración. Esencialmente,/dev/md0
tiene un nuevo UUID y queremos devolverlo al anterior (identificado desde una copia de seguridad) para que el sistema arranque sin necesidad de más cambios.man mdadm
) o el UU4 ext4 (verman tune2fs
)? Es el problema de arranque sobre encontrar el sistema de archivos raíz o sobre ensamblar la matriz RAID basada en el mdadm.conf almacenado en initramfs. De cualquier manera, me parece más simple actualizar mdadm.conf o fstab / grub.cfg que mezclarme con UUID.Ya se explicó el diferente UUID. No solo los sistemas de archivos los tienen. Solo hay UUID para diferentes cosas: matriz de incursiones, dispositivo, partición, contenedores LUKS, PV LVM ... y finalmente sistemas de archivos.
Lo que me molesta personalmente es que incluso la forma en que se formatean esos UUID es diferente.
blkid:
mdadm:
Como puede ver, son los mismos UUID, pero los
blkid
imprime con guiones-
mientrasmdadm
usa dos puntos:
. Para que pueda obtenerd8b8b4e5-e47b-2e45-2093-cd36f654020d
vsd8b8b4e5:e47b2e45:2093cd36:f654020d
.Muy molesto, especialmente si quieres trabajar con UUID en scripts. No es obvio cómo convertir de un formato a otro.
fuente
:
o el guión-
están ahí simplemente para que los humanos puedan leer los UUID largos en trozos y no perderse en algún lugar en el medio. El UUID es realmente un número binario y no tiene guiones ni dos puntos. Está implementado en Linux como un array de caracteres sin signo:unsigned char uuid_out[16]
. Aparentemente, la especificación UUID también tiene una idea de variantes y versiones , que podemos ver implementadas al establecer el byte más significativouuid_out[6]
en 4 .El UUID blkid arriba de "32cb0a6e-8148-44e9-909d-5b23df045bd1" es el correcto, eso es lo que usará el sistema operativo para encontrar la matriz RAID.
mdadm tiene su propio UUID "interno" que no es utilizado directamente por el sistema operativo y es lo que usa en el archivo mdadm.conf, por ejemplo:
"ARRAY / dev / md1 level = raid1 num-devices = 2 uuid = f204c558: babf732d: 85bd7296: bbfebeea"
mdadm no debería llamar a nada UUID cuando está separado del que blkid y el sistema operativo reconocen. Tal vez debería llamarse mduuid u otra cosa para evitar confusiones.
fuente