¿Cuál es la diferencia entre UUID y PARTUUID?

14

He seguido el procedimiento en los foros de Raspberry Pi para hacer que mi Raspberry Pi 3 use una llave USB en lugar de la tarjeta SD como sistema de archivos raíz con la esperanza de hacerlo más robusto para la pérdida de energía.

El proceso funcionó, pero perdí tiempo porque confundí UUID y PARTUUID para la partición (use blkid y vea cómo pueden ser diferentes). ¿Cuál es el propósito de ambos? Fue más simple solucionar mi confusión usando UUID en lugar de PARTUUID en todas partes, pero eso falló, tuve que usar PARTUUID (creo que hubiera sido posible usar una mezcla, pero no intenté buscar una).

Tenga en cuenta que la página citada sugiere que el UUID es para la unidad es PARTUUID para la partición, pero entonces esperaría que el UUID sea el mismo para todas las particiones de una unidad, ese no es el caso.

Un programador
fuente
1
Hola AProgrammer, y bienvenidos al intercambio de pila de Raspberry Pi. ¡Creo que deberías considerar que esta no es una pregunta sobre Raspberry Pi! Más personas verían esta pregunta (tanto para responderla como para beneficiarse de las respuestas ofrecidas) si estuviera, quizás, en el foro principal de Linux.
Tai Viinikka
@TaiViinikka, admito haber dudado entre esto y unix.se, pero teniendo en cuenta que resolví el problema con una frambuesa pi y que nunca supe el problema después de haber trabajado con distribuciones debian y derivadas de debian durante 23 años en x86, incluido UUID sin al enfrentarlo, mis reflejos fueron parte de la causa de mi problema, pensé que podría haber una relación con la frambuesa pi.
Programador
Eso es bastante comprensible y me alegra que hayas recibido una respuesta. Mis experiencias [mucho más breves] han sido diferentes a las tuyas; cada partición que tengo tiene UUID y PARTUUID no coincidentes: root @ herald: ~ # cat / proc / cpuinfo vendor_id: GenuineIntel nombre del modelo: 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" Y así llegué a la conclusión opuesta.
Tai Viinikka

Respuestas:

13

Sobre la diferencia entre UUID y PARTUUID

Puede obtener algunas pistas sobre la diferencia entre UUIDy PARTUUIDespecificando la -popción.

blkid -p /dev/sda1

o cualquier dispositivo / partición que esté mirando. Es posible que haya notado que si hay varias particiones en el mismo UUIDdispositivo, PARTUUIDes casi igual con el número de partición agregado.

A UUIDestá garantizado para ser único. Hasta donde yo sé, las colisiones no sucederán dentro de la vida del universo. Sin embargo, notará que PARTUUIDes mucho más corto. Estos están destinados a ser "localmente" únicos, y es muy probable que ocurran colisiones entre todos los conocidos PARTUUIDs.

En UUID

Un UUID es simplemente un identificador único. Se usan para muchos propósitos diferentes. Puede generarlos usando la uuidgenfunción.

Para leer más sobre UUID:

$man uuidgen 

O internet:

página de manual para uuidgen

Algunos ejemplos más de uso de UUID

$cat /etc/fstab

Para los sistemas GNU / Linux más nuevos, tendrá una lista de todas las particiones y sus UUID. Se genera un nuevo UUID para cada nueva partición. Por lo tanto, si vuelve a particionar una unidad determinada, todos los UUID blkid para esa unidad cambiarán.

Parte de la razón por la que los UUID se usan como identificadores de particiones y unidades es para mantener los identificadores incluso cuando las unidades se agregan o montan en un orden diferente. En un tiempo anterior, fstabtendría identificadores como /dev/sda1... Esto tenía la desventaja de que posiblemente sda1era una unidad o partición físicamente diferente si de alguna manera se cambiaba el orden de montaje.

Sobre PARTUUIDs

PARTUUIDs son un componente de las Tablas de partición GUID (GPT) que son un reemplazo para la partición de disco relacionada con el Registro de arranque maestro (MBR).

Para más información, consulte Linux.com: uso de la nueva tabla de particiones GUID en Linux

Linux.com dice:

Los GUID de GPT (identificadores únicos globales) y nuestros UUID familiares de Linux (identificadores únicos universalmente) no son lo mismo, aunque tienen el mismo propósito útil: dar a los dispositivos de bloque nombres únicos. Los UUID de Linux son una función de los sistemas de archivos y se crean cuando se crea el sistema de archivos. Para ver los UUID de Linux, simplemente inicie el comando blkid Tenga en cuenta el código GUID de partición y cómo dice "Datos básicos de Microsoft". Sí, el viejo Microsoft siempre se cuelga, porque esta es una partición EXT4, por lo que Windows no tiene forma de leerlo, pero lo verá como una partición sin formato. No verá esto con las versiones actuales de gdisk, porque hasta 2011 no había GUID del sistema de archivos de Linux. Ahora las hay, así que si no estás usando un viejo Linux como el mío (Mint 13), tú '

El GUID único de Partition es lo que usará en fstab, así:

PARTUUID = 8C208C30-4E8F-4096-ACF9-858959BABBAA / usuario ext4 de datos, valores predeterminados 0 0

Sello de goma
fuente
El misterio se profundiza. Mirando varios dispositivos de bloque, hay un dispositivo PTUUID y hay un UUID y un PARTUUID por partición; dependiendo del disco y probablemente de la herramienta que lo formateó y particionó, los PARTUUID se derivan del disco PTUUID o no. Mi pregunta era sobre el UUID de partición con el que puede llevarse bien el PARTUUID blkid.
Programador
@AProgrammer: agregué información a mi respuesta.
RubberStamp
1
Ok, en resumen, hay un UUID de disco que puedes obtener con el blkid -pque lo llamamos PTUUID, hay un UUID de partición que blkidllama a PARTUUID y algunos sistemas de archivos tienen un UUID que blkid llama a UUID. Todavía no estoy claro por qué tuve que usar el PARTUUID en lugar del UUID, al menos en algunos lugares, al mover el sistema de archivos raíz a una llave USB en la frambuesa cuando mi sistema Linux solo hace referencia al UUID, pero no soy voluntario para hacer algunas pruebas más y verificar dónde realmente hay una necesidad de PARTUUID y dónde aún podría usar el UUID si quisiera, pero supongo que solo lo cmdline.txtnecesita.
Programador
Tengo dos particiones en dos discos diferentes con el mismo UUID. Esto en cuanto a "la vida del universo " ...
étale-cohomology
3

Como yo lo entiendo.

El término UUID en general se refiere a un "identificador universalmente único", conocido en el mundo de Windows como GUID. Hay algunos esquemas diferentes, pero en su mayor parte los UUID / GUID modernos son esencialmente un gran número aleatorio o hash y algunos bits de bandera.

En el caso específico de montar sistemas de archivos en linux, "UUID" se refiere a un identificador único que forma parte de los metadatos almacenados dentro del sistema de archivos. "PARTUUID" se refiere a un identificador único para una partición almacenada o derivada de la tabla de particiones.

Estos identificadores únicos pueden o no ser UUID reales. Por lo que yo puedo decir.

  • Para las tablas de particiones GPT, el "PARTUUID" es el GUID de la tabla de particiones GPT.
  • Para las tablas de partición MBR, el "PARTUUID" se forma concatenando el identificador de disco con el número de partición
  • Para EXT4, intercambio de Linux, BTRFS y probablemente otros tipos de sistemas de archivos nativos de Linux, el "UUID" es un UUID almacenado en los metadatos del sistema de archivos.
  • Para FAT y NTFS, el "UUID" parece ser el número de serie del volumen, 32 bits para FAT y 64 bits para NTFS.

Tenga en cuenta que la compatibilidad para montar el sistema de archivos raíz mediante "UUID" y "PARTUUID" varía. IIRC, el núcleo que se ejecuta sin un initrd puede montarse por "PARTUUID" pero no por "UUID". Las versiones anteriores de initramfs-tools se pueden montar por "UUID" pero no por "PARTUUID", las recientes initramfs-tools admiten ambos.

Peter Green
fuente