A especificação UEFI propõe um novo modelo de tabela de partições em substituição à antiga tabela de partições DOS, mantida no MBR.
A nova tabela é chamada de GPT -
GUID Partition Table - e suas principais vantagens, são:
- Redundância e checagem de integridade através de CRC32.
- Limite de 128 partições primárias. Não há partições lógicas.
- Comporta unidades de disco maiores que 2 TiB.
- Não utiliza código de arranque em estágio 1, que é ineficiente.
GUID é a abreviação para
Globally Unique IDentifier.
O GUID é uma implementação do método UUID -
Universally Unique Identifier - que apresenta cinco versões para geração de hashes pseudoaleatórios, únicos (na teoria) e sem necessidade de coordenação central. Tornando este identificador ótimo para rotular dados como uma chave.
O que, supostamente, garante o valor único de um GUID é seu algoritmo matemático. A probabilidade de colisão existe, porém, ela é quase nula dado o tamanho total do campo de possibilidades 2^128 ou ~3,4×10^38.
Num grau de comparação com objetos do mundo físico, é sabido que o Universo observável possui 5x10^22 estrelas. Esse número dá uma escala mais humana para o entendimento do escopo UUID.
Um identificador GUID é formado por 16 octetos (128 bits) representados como cinco grupos separados por traços: 8-4-4-4-12. Na representação são utilizados 36 sinais, 4 são separadores (traços) e 32 alfanuméricos do escopo da base hexadecimal ([0-9][a-f]).
A aparência de um hash GUID é a seguinte:
2c1d3bf0-8918-11e2-9e96-0800200c9a66
São várias as vantagens técnicas de GPT sobre o particionamento MBR-DOS. A mais evidente, é sua capacidade em lidar com discos rígidos maiores que 2 TiB. Entretanto, a principal vantagem, é a redundância fornecida por uma cópia de segurança e as checagens de integridade garantidas por CRC32.
Vejamos como é a estrutura interna de dados na tabela GPT:
A primeira estrutura é chamada de MBR protetora (protective MBR). Ela ocupa o LBA 0 do disco e é idêntica a uma MBR clássica com espaço para um código de arranque e uma área para descrição de até 4 partições primárias, ou até 63 partições lógicas dentro de uma partição estendida.
Sua função é manter certa compatibilidade para que sistemas operacionais legados, que esperam encontrar uma MBR clássica na LBA 0, possam ser instalados em computadores UEFI.
MBR protetora possui todas as deficiências de uma MBR clássica. Não existe cópia de segurança da MBR protetora. Observe que a cópia de segurança é somente do cabeçalho primário GPT. Se comparada com a estrutura da tabela de partições MBR, a tabela GPT pode ser considerada bem mais complexa.
No LBA 1, encontramos o cabeçalho primário GPT que possui a seguinte estrutura de dados:
Nos offsets +16 e +88, estão os campos para o armazenamento de hashes, no formato CRC32. O primeiro armazena a checagem da integridade do cabeçalho e o segundo a checagem da matriz de entradas de partições.
Durante o cálculo do CRC32, o campo em +16 vale zero. Em função desse CRC32, JAMAIS modifique uma tabela GPT com um editor hexadecimal. Se você fizer isso, acabará com uma tabela corrompida e um disco rígido inutilizável!
A partir do LBA 2 até o 33, são armazenadas as entradas para descrever as partições. Estes setores recebem o nome de "Matriz de Entradas de Partições" -
Partition Entry Array.
Cada entrada ocupa 128 bytes e corresponde a uma partição. Como 32 setores são reservados para essa finalidade, e cada setor pode armazenar até 4 partições, então um total de 128 partições (32 setores * 4 partições por setor = 128 partições GUID) podem ser declaradas em GPT.
No esquema de particionamento GPT, todas as partições são primárias e não há o conceito de partição estendida ou partições lógicas.
A entrada de uma partição possui a seguinte estrutura de dados:
Onde:
- O GUID do offset +0 descreve o tipo da partição de acordo com a assinatura destinada ao sistema operacional.
- O GUID do offset +16 é o UUID utilizado para montagem da partição. Identifica o próprio device dentro do OS.
- Os LBA são descritos em 8 bytes (8 * 8 = 64 bits), o que permite endereçar clusters de discos rígidos de até 8 Zib (1 Zebibyte = 270). Para efeito de comparação 1 Tebibyte = 240. Se comparássemos 1 Zebibyte com Terabytes seriam 9.4 Bilhões de Terabytes. Os limites reais permitidos pelos S.Os são muito menores.
- No offset +48, podemos utilizar um conjunto de sinalizadores (flags), conforme tabela abaixo:
A tabela abaixo relaciona os GUIDs de tipos de partição para os sistemas operacionais Windows e
GNU/Linux. Existem referências disponíveis para outros sistemas operacionais.
Conclusão
Mesmo que seu computador possua uma BIOS legada, ainda é possível usufruir dos benefícios do particionamento GPT. É recomendado abandonar o formato BIOS/MBR em favor da segurança implementada por GPT.
Observe que isso requer um conhecimento prévio e bastante avançado sobre como seus sistemas irão se comportar após ter adotado o modelo GPT. Migração e transformação da tabela MBR para GPT, não é uma boa ideia.
Aproveitar uma instalação legada pode "comer todo seu queijo". Antes de partir para GPT em servidores legados, realize o máximo de testes que puder em outras máquinas, o comportamento final pode decepcionar.
Em termos de sistemas operacionais em dual boot, esteja ciente que todos os sistemas Windows para a arquitetura X86_32 não serão inicializados em uma partição GPT (XP, Vista, 7 e os Windows Server 2003 e 2008).
Em resumo, esqueça GPT para BIOS legadas em dual boot com Windows. Pode até funcionar, mas a camada de gambiarras será bem maior do você pensa.
Referências