O primeiro relata o UUID do sistema de arquivos ext4 no md
dispositivo de bloco. Ajuda o sistema a identificar o sistema de arquivos exclusivamente entre os sistemas de arquivos disponíveis no sistema. Isso é armazenado na estrutura do sistema de arquivos, nos dados armazenados no dispositivo md.
O segundo é o UUID do dispositivo RAID. Ajuda o subsistema md a identificar esse dispositivo RAID específico exclusivamente. Em particular, ajuda a identificar todos os dispositivos de bloco que pertencem à matriz RAID. Ele é armazenado nos metadados da matriz (em cada membro). Os membros da matriz também têm seu próprio UUID (no sistema md, eles também podem ter UUIDs de partição se forem partições GPT (que seriam armazenadas na tabela de partições GPT) ou volumes LVM ...).
blkid
é um pouco enganador, pois o que ele retorna é o ID da estrutura armazenada no dispositivo (para aqueles tipos de estruturas conhecidas como a maioria dos sistemas de arquivos, membros LVM e dispositivos de troca). Observe também que não é incomum ter dispositivos de bloco com estruturas com UUIDs idênticos (por exemplo, instantâneos do LVM). E um dispositivo de bloco pode conter qualquer coisa, incluindo itens cuja estrutura não inclui um UUID.
Portanto, como exemplo, você pode ter um sistema com 3 unidades, com particionamento GPT. Essas unidades podem ter um nome mundial que o identifique exclusivamente. Digamos que as 3 unidades sejam particionadas com uma partição cada ( /dev/sd[abc]1
). Cada partição terá um UUID da GPT armazenado na tabela de partições da GPT.
Se essas partições formarem uma matriz md RAID5. Cada um deles obterá um md UUID como membro RAID, e a matriz obterá um UUID como dispositivo md RAID.
Isso /dev/md0
pode ser particionado ainda mais com o particionamento do tipo MSDOS ou GPT. Por exemplo, poderíamos ter uma /dev/md0p1
partição com um GPU UUID (armazenado na tabela de partições GPT armazenada nos dados de / dev / md0).
Por sua vez, isso poderia ser um volume físico para o LVM. Como tal, receberá um PV UUID. O grupo de volumes também terá um VG UUID.
Nesse grupo de volumes, você criaria volumes lógicos, cada um recebendo um LV UUID.
Em um desses LVs (como /dev/VG/LV
), você pode criar um sistema de arquivos ext4. Esse sistema de arquivos obteria um UUID ext4.
blkid /dev/VG/LV
obteria o UUID (ext4) desse sistema de arquivos. Mas, como uma partição dentro do volume VG, também obteria uma UUID de partição (algum esquema de particionamento como MSDOS / MBR não possui UUIDs). Esse grupo de volumes é composto de PVs de membros que são outros dispositivos de bloco. blkid /dev/md0p1
daria a você o PV UUID. Ele também possui um UUID de partição na tabela GPT /dev/md0
. /dev/md0
em si é feito de outros dispositivos de bloco. blkid /dev/sda1
retornará o UUID do membro da invasão. Ele também possui um UUID de partição na tabela GPT /dev/sda
.
mdadm
? Acabamos de criar uma nova imagem de um servidor e os UUIDs são diferentes, portanto, queremos restaurar os UUIDs anteriores para não precisarmos alterar todos os arquivos de configuração. Essencialmente,/dev/md0
possui um novo UUID e queremos devolvê-lo ao antigo (identificado a partir de um backup) para que o sistema inicialize sem a necessidade de alterações adicionais.man mdadm
) ou o ext4 UUID (vejaman tune2fs
)? O problema de inicialização é encontrar o sistema de arquivos raiz ou montar a matriz RAID com base no mdadm.conf armazenado no initramfs. De qualquer forma, me parece mais simples atualizar o mdadm.conf ou o fstab / grub.cfg do que misturar-se com os UUIDs.O UUID diferente já foi explicado. Não são apenas os sistemas de arquivos que os possuem. Existem apenas UUIDs para coisas diferentes: matriz RAID, dispositivo, partição, contêineres LUKS, PVs LVM ... e finalmente sistemas de arquivos.
O que me incomoda pessoalmente é que mesmo a forma como esses UUIDs são formatados é diferente.
blkid:
mdadm:
Como você pode ver, eles são os mesmos UUIDs, mas os
blkid
imprimem com traços-
enquantomdadm
usam dois pontos:
. Então você começad8b8b4e5-e47b-2e45-2093-cd36f654020d
vs.d8b8b4e5:e47b2e45:2093cd36:f654020d
.Muito chato, especialmente se você deseja trabalhar com UUIDs em scripts. Não é óbvio como converter de uma formatação para outra.
fonte
:
ou traço-
existem simplesmente para que os humanos possam ler os longos UUIDs em pedaços e não se perderem em algum lugar no meio. O UUID é realmente um número binário e não possui traços ou dois pontos. Ele é implementado no Linux como um array de caracteres sem sinal:unsigned char uuid_out[16]
. Aparentemente, a especificação UUID também tem uma idéia de variantes e versões , que podemos ver implementadas definindo o byte mais significativouuid_out[6]
como 4 .O UUID do blkid acima "32cb0a6e-8148-44e9-909d-5b23df045bd1" é o correto, que é o que o sistema operacional usará para encontrar a matriz RAID.
O mdadm possui seu próprio UUID "interno", que não é usado diretamente pelo sistema operacional e é o que você usa no arquivo mdadm.conf, por exemplo:
"ARRAY / dev / md1 level = raid1 num-devices = 2 uuid = f204c558: babf732d: 85bd7296: bbfebeea"
O mdadm não deve chamar nada de UUID quando estiver separado daquele que o blkid e o sistema operacional reconhecem. Talvez deva ser chamado mduuid ou qualquer outra coisa para evitar confusão.
fonte