Qual é a diferença entre UUID e PARTUUID?

14

Segui o procedimento nos fóruns do raspberry pi para fazer com que o meu Raspberry Pi 3 use uma chave USB em vez do cartão SD como sistema de arquivos raiz, na esperança de torná-lo mais robusto à perda de energia.

O processo funcionou, mas perdi tempo porque confundi UUID e PARTUUID para partição (use blkid e veja como eles podem ser diferentes). Qual é o propósito de ambos? Era mais simples resolver minha confusão usando UUID em vez de PARTUUID em todos os lugares, mas, como falhei, tive que usar o PARTUUID (acho que teria sido possível usar uma mistura, mas não tentei procurar por uma).

Observe que a página citada sugere que o UUID é para a unidade e é PARTUUID para a partição, mas eu esperaria que o UUID fosse o mesmo para todas as partições de uma unidade, esse não é o caso.

AProgrammer
fonte
1
Olá AProgrammer, e bem-vindo à troca de pilhas do Raspberry Pi. Acho que você deve considerar que essa não é uma pergunta sobre o Raspberry Pi! Mais pessoas veriam essa pergunta (tanto para respondê-la quanto para se beneficiar das respostas oferecidas) se ela estivesse, talvez, no fórum principal do Linux.
Tai Viinikka
@TaiViinikka, admito ter hesitado entre isso e o unix.se, mas considerando que encontrei o problema com um raspberry pi e que nunca o encontrei depois de trabalhar com distribuições debian e derivadas do debian por 23 anos no x86, incluindo UUID sem conhecê-lo - meus reflexos faziam parte da causa do meu problema -, pensei que pudesse haver um relacionamento com o raspberry pi.
APROGRAMADOR #
Isso é bastante compreensível e fico feliz que você tenha uma resposta. Minhas experiências [muito mais breves] foram diferentes das suas; todas as partições que eu tenho têm UUID e PARTUUID incompatíveis: root @ herald: ~ # cat / proc / cpuinfo vendor_id: nome do modelo GenuineIntel: CPU 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, portanto, cheguei à conclusão oposta.
Tai Viinikka

Respostas:

13

Diferença entre UUID e PARTUUID

Você pode obter algumas dicas sobre a diferença entre UUIDe PARTUUIDespecificando a -popção.

blkid -p /dev/sda1

ou qualquer dispositivo / partição que você esteja vendo. Você deve ter notado que, se houver várias partições no mesmo UUIDdispositivo, a PARTUUIDmaioria é a mesma com o número da partição anexado.

A UUIDé garantido para ser único. Até onde eu sei, colisões não acontecerão durante a vida útil do universo. No entanto, você notará que o valor PARTUUIDé muito menor. Eles devem ser "localmente" únicos e as colisões provavelmente ocorrem entre todos os conhecidos PARTUUIDs.

Em UUIDs

Um UUID é simplesmente um identificador exclusivo. Eles são usados ​​para diversos fins. Você pode gerá-los usando a uuidgenfunção

Para mais informações sobre UUIDs:

$man uuidgen 

Ou Internet:

página de manual para uuidgen

Mais alguns exemplos de uso de UUID

$cat /etc/fstab

Para sistemas GNU / Linux mais novos, você terá uma lista de todas as partições e seus UUIDs. Um novo UUID é gerado para cada nova partição. Portanto, se particionar novamente uma determinada unidade, todos os UUIDs blkid dessa unidade serão alterados.

Parte do motivo pelo qual os UUIDs são usados ​​como identificadores de partições e unidades é manter os identificadores mesmo quando as unidades são adicionadas ou montadas em uma ordem diferente. Em um tempo anterior, fstabeles teriam identificadores como /dev/sda1... Isso tinha a desvantagem de possivelmente sda1haver uma unidade ou partição fisicamente diferente se, de alguma forma, a ordem de montagem fosse alterada.

Em PARTUUIDs

PARTUUIDs são um componente das Tabelas de partição GUID (GPT), que substituem o particionamento de disco relacionado ao Master Boot Record (MBR).

Para leitura adicional, consulte Linux.com - Usando a nova tabela de partição GUID no Linux

O Linux.com diz:

Os GUIDs da GPT (identificadores globalmente exclusivos) e os nossos familiares UUIDs do Linux (identificadores exclusivos universalmente) não são a mesma coisa, embora sirvam o mesmo propósito útil: dar nomes exclusivos aos dispositivos de bloco. Os UUIDs do Linux são uma função dos sistemas de arquivos e são criados quando o sistema de arquivos é criado. Para ver os UUIDs do Linux, basta acionar o comando blkid. Observe o código GUID da partição e como ele diz "dados básicos da Microsoft". Sim, antigamente a Microsoft sempre travava com festas, porque essa é uma partição EXT4, portanto não há como o Windows lê-la, mas a verá como uma partição não formatada. Você não verá isso nas versões atuais do gdisk, porque até 2011 não havia GUIDs do sistema de arquivos Linux. Agora existem, então se você não estiver usando um Linux antigo como o meu (Mint 13), você '

O GUID exclusivo da partição é o que você usará no fstab, assim:

PARTUUID = 8C208C30-4E8F-4096-ACF9-858959BABBAA / usuário ext4 de dados, padrões 0 0

Carimbo de borracha
fonte
O mistério se aprofunda. Observando vários dispositivos de bloco, existe um dispositivo PTUUID e existe um UUID e um PARTUUID por partição; dependendo do disco e provavelmente da ferramenta que o formatou e particionou, os PARTUUID são derivados do disco PTUUID ou não. Minha pergunta era sobre a partição UUID com a qual você pode se dar bem com o PARTUUID blkid.
APROGRAMADOR #
@ AProgrammer: Adicionou algumas informações à minha resposta.
precisa saber é o seguinte
1
Ok, em resumo, existe um UUID de disco com o blkid -pqual você pode chamá-lo de PTUUID, há uma UUID de partição que blkidchama PARTUUID e algum sistema de arquivos possui um UUID que o blkid chama de UUID. Ainda não estou claro por que tive que usar o PARTUUID em vez do UUID, pelo menos em alguns lugares, ao mover o sistema de arquivos raiz para uma chave USB na framboesa, quando meu sistema Linux apenas faz referência ao UUID, mas não sou voluntário para fazer mais alguns testes e verificar onde realmente existe a necessidade do PARTUUID e onde eu ainda poderia usar o UUID se quisesse, mas acho que isso só cmdline.txtprecisa.
APROGRAMmer 11/11
Eu tenho duas partições em dois discos diferentes com o mesmo UUID. Tanta coisa para "a vida do universo " ...
étale-cohomology
3

Como eu entendo.

O termo UUID em geral se refere a um "identificador universalmente universal", conhecido no mundo do Windows como GUID. Existem alguns esquemas diferentes, mas, na maior parte dos casos, os UUIDs / GUIDs modernos são essencialmente um grande número aleatório ou hash e alguns bits de flag.

No caso específico da montagem de sistemas de arquivos no Linux "UUID", refira-se a um identificador exclusivo que faz parte dos metadados armazenados no sistema de arquivos. "PARTUUID" refere-se a um identificador exclusivo para uma partição armazenada ou derivada da tabela de partições.

Esses identificadores exclusivos podem ou não ser UUIDs reais. Tanto quanto eu posso dizer.

  • Para tabelas de partição GPT, "PARTUUID" é o GUID da tabela de partição GPT.
  • Para tabelas de partição MBR, o "PARTUUID" é formado concatenando o identificador de disco com o número da partição
  • Para EXT4, Linux swap, BTRFS e provavelmente outros tipos de sistema de arquivos nativos do Linux, o "UUID" é um UUID armazenado nos metadados do sistema de arquivos.
  • Para FAT e NTFS, o "UUID" parece ser o número de série do volume, 32 bits para FAT e 64 bits para NTFS.

Observe que o suporte para montar o sistema de arquivos raiz por "UUID" e "PARTUUID" varia. IIRC, o kernel executando sem um initrd pode ser montado por "PARTUUID", mas não por "UUID". As versões mais antigas do initramfs-tools podem ser montadas por "UUID", mas não por "PARTUUID", o initramfs-tools recente suporta ambos.

Peter Green
fonte