Existem duas maneiras diferentes de acessar um local dentro de uma unidade, uma é o esquema CHS e a outra é o esquema LBA.
CHS significa Cilindro, Cabeça, Setor e é o método de nível mais baixo para determinar onde ler ou gravar a partir do inversor. Você deve usar o cilindro x, a cabeça ye o setor z e ler ou gravar o conteúdo desse local para ou de um endereço na memória (um buffer). É derivado dos componentes físicos reais de um disco rígido (tradicional, oxidação em rotação), onde você tem cilindros físicos e cabeças de leitura. O setor é a menor unidade endereçável e era tradicionalmente fixado em 512 bytes.
O LBA é o endereçamento de bytes lógicos no qual a unidade lê e grava em um endereço do setor por seu deslocamento, por exemplo, leia o 123837 ° setor no disco ou grave-o no 123734 ° setor no disco (começando do zero).
O problema? Cada um desses valores tem alcance limitado. De fato, devido à gravidade do CHS, o LBA teve que ser introduzido. Para CHS, os valores possíveis para C (o cilindro) são 1023, enquanto H (cabeçotes) pode ter no máximo 255 e S (setor) pode subir até 63, o que significa que você pode ter no máximo 1024 cilindros x 255 cabeçotes x 64 setores x 512 bytes mapeados no formato CHS tradicional, oferecendo um total geral de menos de 8 GiB! Usando o CHS, simplesmente não é possível acessar um disco maior que 8 GiB!
Portanto, o LBA foi introduzido com um limite de 32 bits, fornecendo um limite de 2 ^ 32 x 512 bytes ou 2 TiB no tamanho do disco - esse é o motivo pelo qual um disco MBR não pode exceder 2TiB porque usa CHS e LBA para especificar tamanhos de partição, e nem suporta qualquer coisa acima de 2TiB.
Opções novas e melhores foram introduzidas, como o esquema de particionamento GPT, que estende o LBA para 64 bits, oferecendo muito mais do que você precisará em 2 ^ 64 x 512 bytes - mas há um problema: muito legado sistemas operacionais de hardware e legado e implementações de BIOS e drivers herdados não suportam UEFI ou GPT, e muitas pessoas gostariam de ter algo que possa ser atualizado com mais facilidade para ultrapassar o limite de 2TiB sem precisar reescrever a pilha inteira do princípio. E, finalmente, chegamos ao tamanho do setor 4096.
Veja, em todas as limitações discutidas acima, uma coisa foi uma suposição fixa: o tamanho do setor. Desde o primeiro dia, ele tem 512 bytes e permanece assim desde então. Porém, recentemente, os fabricantes de discos rígidos perceberam que há uma oportunidade de trabalhar um pouco de mágica: pegue o CHS tradicional ou o LBA de 32 bits e simplesmente substitua o tamanho do setor por 4096 (4k) em vez de 512 bytes. Quando um sistema operacional diz "me dê o segundo setor no disco" solicitando o LBA 1 (porque o LBA 0 é o primeiro), não forneceremos os bytes 512 a 1023, mas os bytes 4096 a 8191.
De repente, nosso limite de 2TiB é atualizado para 2 ^ 32 x 4096 bytes, ou 16 TiB, sem ter que abandonar o MBR, mudar para UEFI ou GPT, ou qualquer outra coisa!
O único problema é que, se o sistema operacional não estiver ciente de que este é um disco mágico que usa 4096 setores em vez de setores de 512 bytes, haverá uma incompatibilidade. Cada vez que o sistema operacional diz "ei, você, disco, escreva-me esses 512 bytes para compensar xxx", o disco usará 4096 bytes para armazenar esses 512 bytes (o restante são zeros ou dados indesejados, supondo que você não termine com memória insuficiente) porque não se comunicam em bytes, se comunicam em setores.
Portanto, os BIOS agora (às vezes) incluem uma opção para permitir que você especifique manualmente que um tamanho de setor de 512 bytes deve ser usado em vez do tamanho de setor nativo de 4096 bytes que os discos mais novos estão usando - com a ressalva de que você não pode usá-lo para acessar mais de 2TiB do disco em um sistema MBR, exatamente como nos "bons e velhos tempos". Mas os sistemas operacionais modernos com reconhecimento de 4K podem tirar proveito de tudo isso para usar essa mágica para ler e escrever em pedaços de 4096 bytes e pronto!
(Uma vantagem adicional é que as coisas são muito mais rápidas porque, se você está lendo e escrevendo 4096 bytes de cada vez, são menos operações para ler ou gravar, digamos, 4GiB de dados.)