Qual è la differenza tra UUID e PARTUUID?


14

Ho seguito la procedura nei forum di Raspberry Pi per fare in modo che il mio Raspberry Pi 3 utilizzi una chiave USB anziché la scheda SD come filesystem di root nella speranza di renderlo più robusto per la perdita di potenza.

Il processo ha funzionato, ma ho perso tempo perché ho confuso UUID e PARTUUID per la partizione (usa blkid e vedi come possono essere diversi). Qual è lo scopo di entrambi? È stato più semplice correggere la mia confusione usando UUID invece di PARTUUID ovunque, ma non ci sono riuscito, ho dovuto usare PARTUUID (penso che sarebbe stato possibile usare un mix, ma non ho provato a cercarne uno).

Si noti che la pagina citata suggerisce che l'UUID è per l'unità è PARTUUID per la partizione, ma quindi mi aspetto che l'UUID sia lo stesso per tutte le partizioni di un'unità, non è così.


1
Ciao AProgrammer, e benvenuto nello scambio di stack di Raspberry Pi. Penso che dovresti considerare che questa non è una domanda su Raspberry Pi! Più persone vedrebbero questa domanda (sia per rispondere che per trarre vantaggio dalle risposte offerte) se fosse, forse, nel forum principale di Linux.
Tai Viinikka,

@TaiViinikka, ammetto di aver esitato tra questo e unix.se, ma considerando che ho incontrato il problema con un raspberry pi e che non ho mai incontrato il problema dopo aver lavorato con le distribuzioni debian e debian per 23 anni su x86, incluso UUID senza incontrandolo - i miei riflessi erano parte della causa del mio problema -, ho pensato che potesse esserci una relazione con Raspberry Pi.
Programmatore

È abbastanza comprensibile e sono felice che tu abbia una risposta. Le mie esperienze [molto più brevi] sono state diverse dalle tue; ogni partizione che ho ha UUID e PARTUUID non corrispondenti: root @ herald: ~ # cat / proc / cpuinfo vendor_id: GenuineIntel nome modello: Intel (R) Atom (TM) CPU D2550 @ 1.86GHz root @ herald: ~ # blkid / dev / sda1: LABEL = "Boot" UUID = "e92827af-6c5d-4438-b22a-8f9b3b4dc4f0" TYPE = "ext4" PARTUUID = "44e5688f-01" E così ho raggiunto la conclusione opposta.
Tai Viinikka,

Risposte:


13

Sulla differenza tra UUID e PARTUUID

È possibile ottenere alcuni suggerimenti sulla differenza tra UUIDe PARTUUIDspecificando l' -popzione.

blkid -p /dev/sda1

o qualunque dispositivo / partizione stai guardando. Potresti aver notato che se ci sono più partizioni sullo stesso UUIDdispositivo, PARTUUIDè per lo più lo stesso con il numero di partizione aggiunto.

A UUIDè garantito per essere unico. Per quanto ne so, le collisioni non accadranno durante la vita dell'universo. Tuttavia, noterai che PARTUUIDè molto più breve. Questi sono pensati per essere "localmente" unici e molto probabilmente si verificano collisioni tra tutti noti PARTUUIDs.

Su UUID

Un UUID è semplicemente un identificatore univoco. Sono utilizzati per molti scopi diversi. Puoi generarli usando la uuidgenfunzione.

Per ulteriori informazioni sugli UUID:

$man uuidgen 

O Internet:

manpage per uuidgen

Alcuni altri UUID usano esempi

$cat /etc/fstab

Per i sistemi GNU / Linux più recenti, avrai un elenco di tutte le partizioni e i loro UUID. Un nuovo UUID viene generato per ogni nuova partizione. Quindi, se ricompartisci una data unità, tutti gli UUID blkid per quell'unità cambieranno.

Parte del motivo per cui gli UUID vengono utilizzati come identificatori di partizioni e unità è di mantenere gli identificativi anche quando le unità vengono aggiunte o montate in un ordine diverso. In un tempo precedente, fstabavrebbero avuto identificatori come /dev/sda1... Questo aveva lo svantaggio di possibilmente sda1essere un'unità o una partizione fisicamente diversa se in qualche modo l'ordine di montaggio fosse cambiato.

Su PARTUUID

PARTUUIDs sono un componente delle tabelle delle partizioni GUID (GPT) che sostituiscono il partizionamento del disco relativo al Master Boot Record (MBR).

Per ulteriori informazioni, consultare Linux.com - Utilizzo della nuova tabella delle partizioni GUID in Linux

Linux.com dice:

I GUID GPT (identificatori univoci globali) e i nostri familiari UUID Linux (identificatori universali univoci) non sono la stessa cosa, sebbene abbiano lo stesso scopo utile: dare nomi univoci ai dispositivi a blocchi. Gli UUID di Linux sono una funzione dei filesystem e vengono creati quando viene creato il filesystem. Per vedere gli UUID di Linux basta avviare il comando blkid Annotare il codice GUID della partizione e come si dice "Dati di base Microsoft". Sì, ole Microsoft si arresta sempre in modo anomalo, perché si tratta di una partizione EXT4, quindi non c'è modo per Windows di leggerlo, ma lo vedrà come una partizione non formattata. Non lo vedrai con le versioni correnti di gdisk, perché fino al 2011 non c'erano GUID del filesystem Linux. Ora ci sono, quindi se non stai usando un vecchio Linux come il mio (menta 13) tu '

Il GUID univoco della partizione è quello che userai in fstab, in questo modo:

PARTUUID = 8C208C30-4E8F-4096-ACF9-858959BABBAA / utente ext4 dati, valori predefiniti 0 0


Il mistero si approfondisce. Guardando diversi dispositivi a blocchi, esiste un dispositivo PTUUID e un UUID e un PARTUUID per partizione; a seconda del disco e probabilmente dello strumento che lo ha formulato e partizionato, i PARTUUID sono derivati ​​dal disco PTUUID o meno. La mia domanda riguardava l'UUID della partizione con cui puoi andare d'accordo con il PARTUUID blkid.
Programmatore

@AProgrammer: aggiunte alcune informazioni alla mia risposta.
RubberStamp,

1
Ok, in sintesi, c'è un UUID del disco che puoi ottenere con blkid -pcui chiamarlo PTUUID, c'è un UUID di partizione che blkidchiama PARTUUID e alcuni file system hanno un UUID che blkid chiama UUID. Non sono ancora chiaro il motivo per cui ho dovuto utilizzare il PARTUUID anziché l'UUID, almeno in alcuni punti, quando si sposta il file system radice su una chiave USB sul lampone quando il mio sistema Linux fa riferimento solo all'UUID, ma non mi offro volontariato per fare altri test e verificare dove c'è davvero bisogno di PARTUUID e dove potrei ancora usare l'UUID se lo volessi, ma immagino che ne abbia solo cmdline.txtbisogno.
AProgrammer,

Ho due partizioni su due dischi diversi con lo stesso UUID. Questo per quanto riguarda la " vita dell'universo " ...
étale-cohomology l'

3

A quanto ho capito.

Il termine UUID in generale si riferisce a un "identificatore univoco universale", noto nel mondo di Windows come GUID. Esistono alcuni schemi diversi, ma UUID / GUID moderni sono essenzialmente un grande numero casuale o hash e alcuni bit di flag.

Nel caso specifico del montaggio di filesystem su linux "UUID" si riferisce a un identificatore univoco che fa parte dei metadati memorizzati all'interno del filesystem. "PARTUUID" si riferisce a un identificatore univoco per una partizione memorizzata o derivata dalla tabella delle partizioni.

Questi identificatori univoci possono o meno essere UUID effettivi. Per quanto posso dire.

  • Per le tabelle delle partizioni GPT "PARTUUID" è il GUID della tabella delle partizioni GPT.
  • Per le tabelle delle partizioni MBR, il "PARTUUID" viene formato concatenando l'identificatore del disco con il numero di partizione
  • Per EXT4, Linux swap, BTRFS e probabilmente altri tipi di filesystem nativi di Linux "UUID" è un UUID memorizzato nei metadati del filesystem.
  • Per FAT e NTFS "UUID" sembra essere il numero seriale del volume, 32 bit per FAT e 64 bit per NTFS.

Si noti che il supporto per il montaggio del filesystem di root tramite "UUID" e "PARTUUID" varia. IIRC il kernel in esecuzione senza un initrd può montare da "PARTUUID" ma non da "UUID". Le versioni precedenti di initramfs-tools possono essere montate da "UUID" ma non da "PARTUUID", i recenti initramfs-tools supportano entrambi.

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.