O padrão de particionamento mais utilizado em computadores pessoais, é o particionamento IBM-DOS. Este modelo é originário do DOS (Disk Operating System) utilizado pelo
IBM-PC XT, lançado em 1983.
O PC-XT foi o primeiro computador pessoal vendido com um disco rígido, que tinha 10 MiB de espaço.
O modelo de particionamento DOS utiliza uma estrutura de dados chamada de "tabela de partições", cujo tamanho é de 64 bytes. Essa tabela fica armazenada no primeiro setor do disco rígido (cilindro 0, lado 0, setor 1 em notação CHS ou LBA 0), denominado de setor MBR (Master Boot Record).
O tamanho físico de qualquer setor de um disco rígido é 512 bytes, independente do tamanho do disco.
O setor MBR desempenha importante papel no processo de boot do computador. Os 512 bytes deste setor são ocupados da seguinte maneira:
- 446 bytes pelo código de arranque (stage 1) do bootloader (GRUB ou LILO).
- Os próximos 64 bytes são ocupados pela tabela de particionamento do disco rígido.
- E os últimos dois bytes, armazenam uma assinatura hexadecimal (0xAA55).
A soma desses bytes (446 + 64 + 2) totaliza os 512 disponíveis no setor, como ilustra a figura 1:
A descrição lógica de uma partição, no modelo de particionamento DOS, ocupa 16 bytes. Esse tamanho (16 bytes), em relação ao tamanho da tabela de partições (64 bytes), leva a uma situação onde apenas 4 partições podem ser definidas por disco (4 x 16 = 64 bytes).
Para superar a limitação de 4 partições por disco, foi introduzido um método que permite criar um recipiente de ponteiros no espaço destinado para a criação das partições. Esse recipiente é chamado de
partição estendida, identificada pelo código hexadecimal como tipo "0x05".
As partições criadas dentro da partição estendida são chamadas de
partições lógicas. Somente uma partição estendida é permitida por disco e ela não pode ser formatada, como acontece com as partições primárias e as partições lógicas.
A partição estendida funciona como uma lista encadeada, a primeira entrada aponta para um setor subsequente ao MBR que descreve uma partição lógica, que, por sua vez, aponta para o próximo setor que descreve outra partição lógica, e assim sucessivamente.
Uma vez que toda a trilha 0 é reservada, esta área não pertence a nenhuma partição, esse espaço é utilizado para armazenar dados sobre partições lógicas. O cilindro (formado pela trilha 0 de ambos lados do(s) prato(s) do disco) possui 63 setores de 512 bytes, o que resulta em uma área de 31,5 KB (1 KB = 1024 bytes) para armazenagem de dados sobre partições lógicas.
Daí, vem a limitação para criação de 63 partições lógicas em discos do tipo ATA/IDE em sistemas
GNU/Linux. Lembrando que, em sistemas SCSI, esse limite é de 15 dispositivos, devido à imposições da própria arquitetura SCSI.
A figura 2 representa todos os campos que identificam uma partição na tabela de particionamento:
Particionar é "dividir um disco rígido, de modo lógico, em várias partes independentes". Cada parte, chamada de partição, pode ser formatada e ter um sistema operacional diferente.
O particionamento é um método que, ao longo da história da computação pessoal, vem constantemente evoluindo para acompanhar a evolução do tamanho dos discos rígidos.
A figura 3 ilustra a evolução do particionamento no MS-DOS ao longo de suas versões e os tamanhos máximos dos discos rígidos utilizados em cada versão desse sistema:
Em razão da geometria circular do disco rígido, sua capacidade era descrita em relação a valores CHS (Cilindros, Cabeças e Setores). Posteriormente, foi introduzido o conceito de LBA (Logical Block Addressing), que segundo [4]: "abandona o modelo CHS utilizando o espaço destes campos como um identificador único de 28 bits organizando os setores sequencialmente (0,1,2,3 ... 228) até o limite de 2^28 setores".
Este valor é suficiente para endereçar por LBA, discos de até 128 GiB, onde um MiB=1024 bytes, ou 137 GB, para discos na notação decimal (MB=1000). A fabricação de discos desses tamanhos foi rapidamente atingida pela indústria, forçando, em pouco tempo, outra atualização no esquema de particionamento DOS.
Um esquema com 32 bits para descrever o número de blocos LBA foi implementado. O cálculo para o limite de 28 bits é feito do seguinte modo, levando em conta um 1 MiB = 1024 bytes:
268.435.456 * 512 bytes = 137.438.953.472
Total de blocos * Tamanho do bloco = Tamanho máximo do maior disco rígido em bytes.
137.438.953.472 / (1024 ^ 3) = 128 GiB
Tamanho máximo em bytes / 1 GiB = 128 GiB
O limite de 32 bits da MBR para descrever os LBA, define o tamanho máximo do disco como 2 Terabytes. Durante certo tempo, o limite de 2 Terabytes em uma unidade de disco parecia que não seria atingido.
Todavia, a partir do final de 2010, começaram a ser fabricados discos com essa capacidade. Neste momento, ficou claro que o padrão de particionamento DOS tinha chegado ao fim, e nenhuma atualização era mais possível. Foi preciso reinventar o modo como os computadores dão partida.
O antigo sistema da IBM BIOS/MBR possui tantas deficiências, que não é mais suficiente para atender ao tamanho dos novos dispositivos e, principalmente, aos novos sistemas operacionais.
Desta vez, a resposta para o problema veio da
Intel. Dentro da especificação
EFI (Extended Firmware Interface), uma proposta da Intel para substituição dos antigos BIOS.
Podemos encontrar uma solução para substituir o setor MBR por algo chamado de "Tabela de Partição GUID", ou "Particionamento GPT".