A tabela de partições GUID (GPT, do inglês GUID Partition Table) é um padrão para o layout das tabelas de partições de um dispositivo de armazenamento de computador físico, como um disco rígido ou unidade de estado sólido (SSD). Ela faz parte do padrão Unified Extensible Firmware Interface (UEFI).

Ela possui várias vantagens sobre as tabelas de partições do registro mestre de inicialização (MBR), como o suporte a mais de quatro partições primárias e o uso de endereços de blocos lógicos (LBA) de 64 bits em vez de 32 bits para blocos em um dispositivo de armazenamento. O tamanho maior do LBA permite o suporte a discos maiores.

Algumas BIOS oferecem suporte a tabelas de partições GPT, bem como a tabelas de partições MBR, a fim de suportar discos maiores do que as tabelas de partições MBR conseguem suportar.

A GPT usa identificadores únicos universais (UUIDs), que também são conhecidos como identificadores globais únicos (GUIDs), para identificar partições e tipos de partições.

Todos os sistemas operacionais modernos de computadores pessoais suportam GPT. Alguns, incluindo o macOS e o Microsoft Windows na arquitetura x86, suportam a inicialização (boot) a partir de partições GPT apenas em sistemas com firmware EFI, mas o FreeBSD e a maioria das distribuições Linux podem inicializar a partir de partições GPT em sistemas com interface de firmware tanto BIOS quanto EFI.

História

O esquema de particionamento do registro mestre de inicialização (MBR), amplamente utilizado desde o início da década de 1980, apresentava limitações em relação ao hardware moderno. O tamanho disponível para os endereços dos blocos e informações relacionadas é limitado a 32 bits. Para discos rígidos com setores de 512 bytes, as entradas da tabela de partições MBR permitem um tamanho máximo de 2 TiB (232 × 512 bytes) ou 2,20 TB (2,20 × 1012 bytes).

No final da década de 1990, a Intel desenvolveu um novo formato de tabela de partições como parte do que eventualmente se tornou a Unified Extensible Firmware Interface (UEFI). A tabela de partições GUID é especificada no capítulo 5 da especificação UEFI 2.11. A GPT usa 64 bits para endereços de blocos lógicos, permitindo um tamanho máximo de disco de 264 setores. Para discos com setores de 512 bytes, o tamanho máximo é de 8 ZiB (264 × 512 bytes) ou 9,44 ZB (9,44 × 1021 bytes). Para discos com setores de 4.096 bytes, o tamanho máximo é de 64 ZiB (264 × 4.096 bytes) ou 75,6 ZB (75,6 × 1021 bytes).

Em 2010, os fabricantes de discos rígidos introduziram unidades com setores de 4.096 bytes (Advanced Format). Para compatibilidade com hardwares e softwares legados, essas unidades incluem uma tecnologia de emulação (512e) que apresenta setores de 512 bytes para a entidade que acessa o disco rígido, apesar de seus setores físicos subjacentes serem de 4.096 bytes. O desempenho pode ser degradado em operações de escrita, quando a unidade é forçada a realizar duas operações de leitura-modificação-escrita para atender a uma única operação de escrita de 4.096 bytes desalinhada. Desde abril de 2014, unidades de classe empresarial sem tecnologia de emulação (4K nativo) estão disponíveis no mercado.

A prontidão do suporte para setores lógicos de 4 KB nos sistemas operacionais varia entre seus tipos, fornecedores e versões. Por exemplo, o Microsoft Windows suporta unidades 4K nativas desde o Windows 8 e Windows Server 2012 (ambos lançados em 2012) em UEFI.

Recursos

Assim como o MBR, a GPT usa o endereçamento de bloco lógico (LBA) em substituição ao histórico endereçamento cilindro-cabeça-setor (CHS). O MBR de proteção é armazenado no LBA 0, e o cabeçalho GPT fica no LBA 1. O cabeçalho GPT possui um ponteiro para a tabela de partições (matriz de entradas das partições), que normalmente fica no LBA 2. Cada entrada na tabela de partições tem o mesmo tamanho, que é de 128, 256 ou 512, etc., bytes; normalmente esse tamanho é de 128 bytes. A especificação UEFI estipula que um mínimo de 16.384 bytes, independentemente do tamanho do setor, seja alocado para a matriz de entradas das partições. Portanto, em um disco com setores de 512 bytes, pelo menos 32 setores são usados para a matriz de entradas das partições, e o primeiro bloco utilizável fica no LBA 34 ou superior, enquanto em um disco com setores de 4.096 bytes, pelo menos 4 setores são usados para a matriz de entradas das partições, e o primeiro bloco utilizável fica no LBA 6 ou superior. Além do cabeçalho GPT primário e da matriz de entradas das partições, armazenados no início do disco, há um cabeçalho GPT de backup e uma matriz de entradas das partições de backup, armazenados no final do disco. O cabeçalho GPT de backup deve estar no último bloco do disco (LBA -1) e a matriz de entradas das partições de backup é colocada entre o final da última partição e o último bloco.

Variantes do MBR MBR de proteção (LBA 0) Para uma compatibilidade retroativa limitada, o espaço do registro mestre de inicialização (MBR) legado ainda é reservado na especificação GPT, mas agora é utilizado de uma forma que impede que utilitários de disco baseados em MBR desreconheçam e possivelmente sobrescrevam discos GPT. Isso é conhecido como um MBR de proteção.

Uma única partição do tipo EEh, abrangendo todo o disco GPT (onde "todo" na verdade significa tanto do disco quanto puder ser representado em um MBR), é indicada e o identifica como GPT. Sistemas operacionais e ferramentas que não conseguem ler discos GPT geralmente reconhecerão o disco como contendo uma partição de tipo desconhecido e nenhum espaço vazio, e normalmente se recusarão a modificar o disco, a menos que o usuário solicite explicitamente e confirme a exclusão dessa partição. Isso minimiza apagamentos acidentais. Além disso, sistemas operacionais conscientes de GPT podem verificar o MBR de proteção e, se o tipo de partição incluído não for do tipo ou se houver várias partições definidas no dispositivo de destino, o sistema operacional pode se recusar a manipular a tabela de partições.

Se o tamanho real do disco exceder o tamanho máximo de partição representável usando as entradas LBA de 32 bits legadas na tabela de partições MBR, o tamanho registrado desta partição é limitado ao máximo, ignorando assim o restante do disco. Isso equivale a um tamanho máximo relatado de 2 TiB, assumindo um disco com 512 bytes por setor (veja 512e). Resultaria em 16 TiB com setores de 4 KiB (4Kn), mas como muitos sistemas operacionais e ferramentas mais antigos possuem o tamanho de setor de 512 bytes fixado no código ou são limitados a cálculos de 32 bits, exceder o limite de 2 TiB poderia causar problemas de compatibilidade.

MBR híbrido (LBA 0 + GPT) Em sistemas operacionais que suportam inicialização baseada em GPT por meio de serviços de BIOS em vez de EFI, o primeiro setor também pode ser usado para armazenar o primeiro estágio do código do gerenciador de inicialização (bootloader), mas modificado para reconhecer partições GPT. O gerenciador de inicialização no MBR não deve presumir um tamanho de setor de 512 bytes.

Cabeçalho da tabela de partições (LBA 1)

+ Formato do cabeçalho GPT Deslocamento (Offset) Comprimento Conteúdo 0 (0x00) 8 bytes Assinatura ("EFI PART", ou em máquinas little-endian) 8 (0x08) 4 bytes Número de revisão do cabeçalho - 1.0 () para UEFI 2.10 12 (0x0C) 4 bytes Tamanho do cabeçalho em little endian (em bytes, geralmente ou 92 bytes) 16 (0x10) 4 bytes CRC-32 do cabeçalho (deslocamento +0 a +0x5B) em little endian, com este campo zerado durante o cálculo 20 (0x14) 4 bytes Reservado; deve ser zero 24 (0x18) 8 bytes LBA atual (localização desta cópia do cabeçalho) 32 (0x20) 8 bytes LBA de backup (localização da outra cópia do cabeçalho) 40 (0x28) 8 bytes Primeiro LBA utilizável para partições (último LBA da tabela de partições primária + 1) 48 (0x30) 8 bytes Último LBA utilizável para partições (primeiro LBA da tabela de partições secundária − 1) 56 (0x38) 16 bytes GUID do disco em little endian 72 (0x48) 8 bytes LBA inicial da matriz de entradas das partições (geralmente 2 para compatibilidade) 80 (0x50) 4 bytes Número de entradas das partições na matriz 84 (0x54) 4 bytes Tamanho de uma única entrada de partição (geralmente ou 128) 88 (0x58) 4 bytes CRC-32 da matriz de entradas das partições em little endian 92 (0x5C) * Reservado; deve conter zeros para o restante do bloco (420 bytes para um tamanho de setor de 512 bytes; mas pode ser mais com tamanhos de setor maiores)

O cabeçalho da tabela de partições define os blocos utilizáveis no disco. Ele também define o número e o tamanho das entradas das partições que compõem a tabela de partições (deslocamentos 80 e 84 na tabela).

Entradas das partições (LBA 2~33)

+ Formato das entradas das partições GUID Deslocamento (Offset) Comprimento Conteúdo 0 (0x00) 16 bytes GUID do tipo de partição (little endian) 16 (0x10) 16 bytes GUID exclusivo da partição (little endian) 32 (0x20) 8 bytes Primeiro LBA (little endian) 40 (0x28) 8 bytes Último LBA (inclusivo, geralmente ímpar) 48 (0x30) 8 bytes Sinalizadores (flags) de atributos (por exemplo, o bit 60 indica somente leitura) 56 (0x38) 72 bytes Nome da partição (36 unidades de código UTF-16LE)

Após o cabeçalho primário e antes do cabeçalho de backup, a matriz de entradas das partições descreve as partições, usando um tamanho mínimo de 128 bytes para cada bloco de entrada.O cabeçalho GPT contém um campo que especifica o tamanho de uma entrada da tabela de partições. O mínimo exigido é 128 bytes, mas as implementações devem permitir outros valores. Veja A localização inicial da matriz no disco e o tamanho de cada entrada são fornecidos no cabeçalho GPT. Os primeiros 16 bytes de cada entrada designam o identificador global único (GUID) do tipo da partição. Por exemplo, o GUID para uma partição de sistema EFI é . Os segundos 16 bytes são um GUID exclusivo da partição. Em seguida, seguem os LBAs de 64 bits inicial e final, os atributos da partição e o nome da partição com no máximo 36 caracteres. Conforme a natureza e a finalidade dos GUIDs e de acordo com a RFC 4122, nenhum registro central é necessário para garantir a exclusividade dos designadores dos tipos de partiçóes GUID.

Os atributos da tabela de partições de 64 bits são compartilhados entre 48 bits de atributos comuns para todos os tipos de partições e 16 bits de atributos específicos do tipo:

+ Atributos de partição Bit Conteúdo 0 Exigido pela plataforma (necessário para o computador funcionar corretamente, partição OEM por exemplo, utilitários de particionamento de disco devem preservar a partição como está) 1 O firmware EFI deve ignorar o conteúdo da partição e não tentar ler a partir dela 2 Inicializável por BIOS legado (equivalente ao sinalizador ativo (geralmente bit 7 definido) no deslocamento nas entradas das partições da tabela de partições MBR) 3–47 Reservado para uso futuro 48–63 Definido e usado pelo tipo de partição individual

A Microsoft define os atributos específicos do tipo para partição de dados básica como:

+ Atributos de partição de dados básica Bit Conteúdo 60 Somente leitura 61 Cópia de sombra (Shadow copy de outra partição) 62 Oculta 63 Sem letra de unidade (ou seja, não montar automaticamente)

O Google define os atributos específicos do tipo para o núcleo do ChromeOS como:

+ Atributos de partição do núcleo do ChromeOS Bit Conteúdo 56 Sinalizador de inicialização bem-sucedida (Successful boot flag) 55–52 Tentativas restantes 51–48 Prioridade (15: a mais alta, 1: a mais baixa, 0: não inicializável)

Suporte de sistemas operacionais

Sistemas UNIX e semelhantes ao Unix