Differenza tra UUID da blkid e mdadm?


26

Qualcuno può spiegare la differenza tra l'UUID segnalato da blkide mdadm? Su uno dei nostri sistemi CentOS, ad esempio:

[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

Perché sono diversi e come dovremmo cambiare l'UUID utilizzato da mdadm?

Capisco che tune2fsuseremmo per cambiare l'UUID per la partizione (che cambierebbe ciò che viene restituito blkid) ma non sono sicuro di come cambiare ciò che mdadmusa.

Risposte:


23

Il primo riporta l'UUID del filesystem ext4 sul mddispositivo a blocchi. Aiuta il sistema a identificare il file system in modo univoco tra i filesystem disponibili sul sistema. Quello è archiviato nella struttura del filesystem, cioè nei dati memorizzati sul dispositivo md.

Il secondo è l'UUID del dispositivo RAID. Aiuta il sottosistema md a identificare quel particolare dispositivo RAID in modo univoco. In particolare, aiuta a identificare tutti i dispositivi a blocchi appartenenti all'array RAID. È archiviato nei metadati dell'array (su ciascun membro). I membri dell'array hanno anche il proprio UUID (nel sistema md, possono anche avere UUID di partizione se sono partizioni GPT (che sarebbero archiviate nella tabella delle partizioni GPT) o volumi LVM ...).

blkidè un po 'fuorviante, poiché ciò che restituisce è l'ID della struttura memorizzata sul dispositivo (per quel tipo di strutture che conosce come la maggior parte dei filesystem, membri LVM e dispositivi di scambio). Inoltre, non è raro avere dispositivi a blocchi con strutture con UUID identici (ad esempio istantanee LVM). E un dispositivo a blocchi può contenere qualsiasi cosa, inclusi elementi la cui struttura non include un UUID.

Quindi, ad esempio, potresti avere un sistema con 3 unità, con partizionamento GPT. Quelle unità potrebbero avere un nome mondiale che lo identifica in modo univoco. Supponiamo che le 3 unità siano partizionate con una partizione ciascuna ( /dev/sd[abc]1). Ogni partizione avrà un UUID GPT memorizzato nella tabella delle partizioni GPT.

Se quelle partizioni compongono un array md RAID5. Ognuno riceverà un UUID md come membro RAID e l'array otterrà un UUID come dispositivo md RAID.

Questo /dev/md0può essere ulteriormente partizionato con MSDOS o il partizionamento di tipo GPT. Ad esempio, potremmo avere una /dev/md0p1partizione con un UUID GPT (memorizzato nella tabella delle partizioni GPT che è memorizzata nei dati di / dev / md0).

Questo potrebbe a sua volta essere un volume fisico per LVM. Come tale otterrà un UUID PV. Il gruppo di volumi avrà anche un UUID VG.

In quel gruppo di volumi, è necessario creare volumi logici, ciascuno con un UUID LV.

Su uno di quei LV (come /dev/VG/LV), potresti creare un filesystem ext4. Quel filesystem otterrebbe un UUID ext4.

blkid /dev/VG/LVti farebbe ottenere l'UUID (ext4) di quel filesystem. Ma come partizione all'interno del volume VG, otterrebbe anche un UUID di partizione (alcuni schemi di partizionamento come MSDOS / MBR non hanno UUID). Quel gruppo di volumi è composto da membri PV che sono essi stessi altri dispositivi a blocchi. blkid /dev/md0p1ti darebbe l'UUID PV. Ha anche un UUID di partizione nella tabella GPT su /dev/md0. /dev/md0stesso è fatto da altri dispositivi a blocchi. blkid /dev/sda1restituirà l'UUID membro del raid. Ha anche un UUID di partizione nella tabella GPT su /dev/sda.


Come cambieremmo l'UUID di un dispositivo RAID usato da mdadm? Abbiamo appena ripreso l'immagine di un server e l'UUID è diverso, quindi vogliamo ripristinare l'UUID precedente in modo da non dover modificare tutti i file di configurazione. Essenzialmente, /dev/md0ha un nuovo UUID e vogliamo restituirlo a quello vecchio (identificato da un backup) in modo che il sistema si avvii senza bisogno di ulteriori modifiche.
Chris,

@Chris, The MD UUID (vedi man mdadm) o ext4 UUID (vedi man tune2fs)? È il problema di avvio nella ricerca del filesystem di root o nell'assemblaggio dell'array RAID basato sul mdadm.conf archiviato in initramfs. Ad ogni modo, mi sembra più semplice aggiornare mdadm.conf o fstab / grub.cfg piuttosto che mescolarsi con gli UUID.
Stéphane Chazelas,

MD UUID: abbiamo ripristinato il server dal backup. Sai come aggiornare l'UUID di un dispositivo RAID? Non riesco a vedere quelle informazioni nella manpage. Stiamo solo cercando di trovare il modo più semplice per farlo funzionare (testare la procedura di ripristino).
Chris,

@ Chris, dovresti sollevare un'altra domanda per questo.
Stéphane Chazelas,

@Chris: vuoi che gli UUID siano diversi. Se mdadm vede più dischi che credono di appartenere allo stesso raid anche se si tratta di raid diversi (a causa di conflitti UUID), avrai veri problemi.
frostschutz,

4

Il diverso UUID era già stato spiegato. Non solo i filesystem li hanno. Ci sono solo UUID per cose diverse: array raid, dispositivo, partizione, container LUKS, LVM PV ... e infine filesystem.

Ciò che mi infastidisce personalmente è che anche il modo in cui questi UUID sono formattati è diverso.

blkid:

# 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

Come puoi vedere, sono gli stessi UUID, ma blkidli stampano con trattini -mentre mdadmusano i due punti :. Così si ottiene d8b8b4e5-e47b-2e45-2093-cd36f654020drispetto d8b8b4e5:e47b2e45:2093cd36:f654020d.

Molto fastidioso, specialmente se vuoi lavorare con UUID negli script. Non è ovvio come convertire da una formattazione all'altra.


Che dire di s /: / - / go viceversa? ;)
ThiefMaster il

in realtà il colon :o il trattino -sono semplicemente lì, così gli umani possono leggere i lunghi UUID a pezzi e non perdersi da qualche parte nel mezzo. L'UUID è in realtà un numero binario e non ha trattini o due punti. E 'implementato in Linux come un array di caratteri senza segno: unsigned char uuid_out[16]. Apparentemente la specifica UUID ha anche un'idea di varianti e versioni , che possiamo vedere implementate impostando il byte più significativo uuid_out[6]su 4 .
TrinitronX,

-1

L'UUID blkid sopra "32cb0a6e-8148-44e9-909d-5b23df045bd1" è quello corretto, ovvero quello che il sistema operativo utilizzerà per trovare l'array RAID.

mdadm ha il proprio UUID "interno" che non viene utilizzato direttamente dal sistema operativo ed è ciò che si utilizza nel file mdadm.conf, ad esempio:

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

mdadm non dovrebbe chiamare nulla UUID quando è separato da quello che blkid e il sistema operativo riconoscono. Forse dovrebbe essere chiamato mduuid o qualcos'altro per evitare confusione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.