O conceito é descrito em RFC 4122 que define os vários algoritmos para gerar UUID s. A variante 4 usa números aleatórios e é a mais comum.
UUIDs são usados em muitos cenários, alguns exemplos são:
- Rotular partições e sistemas de arquivos é o uso mais comum no Linux
- O Network Manager os utiliza para identificar dispositivos e conexões de rede
- Hypervisors, como o Virtual Box e o Qemu-KVM, os usam para identificar VMs
- São usados no Microsoft Windows, onde são conhecidos como GUID s
- Eles são usados para exclusividade dentro de bancos de dados
- Eles são usados no desenvolvimento de software
No Linux, todas as distribuições vêm com o pacote util-linux
, que entre outras coisas tem o comando uuidgen
para gerar UUIDs. Este é um front-end para libuuid
que gera UUIDs aleatórios por padrão, ou baseado em tempo se não houver entropia suficiente disponível.
O utilitário que você usa para criar uma partição ou um sistema de arquivos gerará o UUID, que permanece com essa partição / sistema de arquivos até que você os recrie ou altere explicitamente o UUID (por exemplo, com tune2fs
)
UUIDs são usados com sistemas de arquivos e partições para dar a eles um nome consistente (embora muito longo). Isso evita o cenário em que o BIOS do firmware UEFI em um sistema de dois discos rígidos lista o disco rígido para que o disco do sistema seja alocado /dev/sda
em uma inicialização e alocado /deb/sdb
na próxima (talvez o primeiro disco seja mais lento para inicializar a segunda inicialização).
Usando o método de nomenclatura tradicional, isso causaria estragos em seu arquivo /etc/fstab
, já que seu sistema estaria procurando no disco errado para que as partições fossem montadas. Por exemplo, aqui está minha entrada de troca:
/dev/sda4 none swap defaults 0 0
Se os discos tivessem sido alocados de maneira diferente na inicialização, meu sistema não encontraria uma quarta partição do tipo swap
no disco que não seja do sistema (OK, estou em um laptop, por isso não tem um segundo disco, mas você começa o ponto) e meu swap iria falhar.
Marcando-os com UUIDs e usando aqueles dentro de /etc/fstab
, você tem a garantia de que o sistema de arquivos correto será montado em todos os momentos. Por exemplo:
UUID=d8ab8967-f2de-4c76-902f-d8d9707c399e /media/files ext4 defaults 0 0
sempre montará a partição com esse UUID em /media/files
, independentemente da ordem em que o BIOS (ou firmware UEFI) os rotulará na inicialização.