¿Diferencia entre UUID de blkid y mdadm?

¿Diferencia entre UUID de blkid y mdadm?

¿Alguien puede explicar la diferencia entre los UUID informados por blkidy mdadm? En uno de nuestros sistemas CentOS, por ejemplo:

[root@server ~]# blkid | grep /dev/md1
/dev/md1: UUID="32cb0a6e-8148-44e9-909d-5b23df045bd1" TYPE="ext4"

[root@server ~]# mdadm --detail /dev/md1 | grep UUID
UUID : f204c558:babf732d:85bd7296:bbfebeea

¿Por qué son diferentes y cómo cambiaríamos el UUID utilizado por mdadm?

Entiendo que usaríamos tune2fscambiar el UUID de la partición (lo que cambiaría lo que devuelve blkid) pero no estoy seguro de cómo cambiar qué mdadmusos.

Respuesta1

El primero informa el UUID del sistema de archivos ext4 en el mddispositivo de bloque. Ayuda al sistema a identificar el sistema de archivos de forma ú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 en particular de forma ú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...).

blkides un poco engañoso, ya que lo que devuelve es el 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 de 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 partición GPT. Esas unidades podrían tener unNombre mundialque lo identifica de manera unívoca. 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 RAID md.

Eso /dev/md0se puede particionar aún más con MSDOS o particionamiento de tipo GPT. Por ejemplo, podríamos tener una /dev/md0p1partición con un UUID GPT (almacenado en la tabla de particiones GPT que se almacena en los datos de /dev/md0).

A su vez, ese podría ser un volumen físico para LVM. Como tal, obtendrá un PV UUID. El grupo de volúmenes también tendrá un UUID VG.

En ese grupo de volúmenes, crearía volúmenes lógicos y cada uno obtendría un UUID LV.

En uno de esos LV (como /dev/VG/LV), podrías crear un sistema de archivos ext4. Ese sistema de archivos obtendría un UUID ext4.

blkid /dev/VG/LVle daría el UUID (ext4) de ese sistema de archivos. Pero como 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 volumen está formado por miembros PV que son a su vez otros dispositivos de bloque. blkid /dev/md0p1le daría el PV UUID. También tiene un UUID de partición en la tabla GPT en /dev/md0. /dev/md0en sí está hecho de otros dispositivos de bloque. blkid /dev/sda1devolverá el UUID del miembro de la raid. También tiene un UUID de partición en la tabla GPT en /dev/sda.

Respuesta2

Los diferentes UUID ya se explicaron. No sólo los sistemas de archivos los tienen. Simplemente hay UUID para diferentes cosas: matriz raid, 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.

negro:

# blkid /dev/sda1
/dev/sda1: 
UUID="d8b8b4e5-e47b-2e45-2093-cd36f654020d"
UUID_SUB="3c3e6eac-2139-3f7a-16b7-57280934d88e"
PARTUUID="6a89cedf-69e1-40db-b08c-1c8e45af59f5" 

mdadm:

# mdadm --examine /dev/sda1 | grep UUID
     Array UUID : d8b8b4e5:e47b2e45:2093cd36:f654020d
    Device UUID : 3c3e6eac:21393f7a:16b75728:0934d88e

Como puede ver, son los mismos UUID, pero blkidlos imprime con guiones -mientras que mdadmusa dos puntos :. Entonces obtienes d8b8b4e5-e47b-2e45-2093-cd36f654020dvs.d8b8b4e5:e47b2e45:2093cd36:f654020d

Muy molesto, especialmente si quieres trabajar con UUID en scripts. No es obvio cómo convertir de un formato a otro.

Respuesta3

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 el sistema operativo no utiliza directamente y es el que se utiliza en el archivo mdadm.conf, por ejemplo:

"ARRAY /dev/md1 nivel=raid1 num-dispositivos=2 uuid=f204c558:babf732d:85bd7296:bbfebeea"

mdadm no debería llamar a ningún UUID cuando esté separado del que reconocen blkid y el sistema operativo. Quizás debería llamarse mduuid o algo más para evitar confusiones.

información relacionada