Esistono due modi diversi di accedere a una posizione all'interno di un'unità, uno è lo schema CHS e l'altro è lo schema LBA.
CHS è l'acronimo di Cylinder, Head, Sector ed è il metodo più basso livello per determinare dove leggere o scrivere dall'unità. Gli dici di usare il cilindro x, la testa y e il settore z e leggi o scrivi il contenuto di quella posizione da o verso un indirizzo in memoria (un buffer). Deriva dai componenti fisici reali di un disco rigido (ruggine tradizionale che gira), in cui si hanno cilindri fisici e testine di lettura. Il settore è l'unità indirizzabile più piccola ed è stato tradizionalmente fissato a 512 byte.
LBA è l'indirizzamento logico di byte in cui l'unità legge e scrive su un indirizzo di settore tramite il suo offset, ad esempio, legge il 123837 ° settore sul disco o lo scrive nel 123734 ° settore sul disco (a partire da zero).
Il problema? Ciascuno di questi valori è limitato nell'intervallo. In effetti, a causa della severità limitata della CHS, è stato necessario introdurre l'LBA. Per CHS, i valori possibili per C (il cilindro) sono 1023, mentre H (teste) può essere massimo 255 e S (settore) può arrivare fino a 63, il che significa che puoi avere al massimo 1024 cilindri x 255 teste x 64 settori x 512 byte mappati nel tradizionale formato CHS, per un totale complessivo di meno di 8 GiB! Utilizzando CHS, semplicemente non è possibile accedere a un disco di dimensioni superiori a 8 GiB!
Quindi LBA è stato introdotto con un limite di 32 bit che ti dà 2 ^ 32 x 512 byte o 2 limiti TiB sulla dimensione del disco - questo è il motivo per cui un disco MBR non può superare 2 TB perché usa CHS e LBA per specificare le dimensioni della partizione, e nessuno dei due supporta qualsiasi cosa oltre 2 TB.
Sono state introdotte opzioni più recenti e migliori come lo schema di partizionamento GPT che estende LBA a 64 bit, dandoti un diavolo di molto più di quello di cui avrai mai bisogno a 2 ^ 64 x 512 byte - ma c'è un problema: un sacco di eredità sistemi operativi hardware e legacy e implementazioni BIOS legacy e driver legacy non supportano UEFI o GPT, e molte persone vorrebbero avere qualcosa che può essere aggiornato più facilmente per superare il limite di 2 TB senza dover riscrivere l'intero stack da zero. E, finalmente, raggiungiamo le dimensioni del settore 4096.
Vedi, in tutte le limitazioni sopra discusse, una cosa è stata un'ipotesi fissa: la dimensione del settore. Dal primo giorno sono stati 512 byte ed è rimasto così da allora. Ma recentemente, i produttori di dischi rigidi hanno capito che c'è un'opportunità per fare un po 'di magia: prendi il CHS tradizionale o l'LBA a 32 bit e sostituisci semplicemente le dimensioni del settore con 4096 (4k) invece di 512 byte. Quando un sistema operativo dice "dammi il 2o settore sul disco" richiedendo LBA 1 (perché LBA 0 è il primo), non gli daremo byte 512 - 1023 ma piuttosto byte 4096 - 8191.
Improvvisamente, il nostro limite di 2 TB viene aggiornato a 2 ^ 32 x 4096 byte, o 16 TiB, senza dover abbandonare MBR, passare a UEFI o GPT o altro!
L'unico problema è che se il sistema operativo non è a conoscenza del fatto che si tratta di un disco magico che utilizza 4096 settori anziché settori a 512 byte, si verificherà una mancata corrispondenza. Ogni volta che il sistema operativo dice "ehi, tu, disco, scrivimi questi 512 byte per compensare xxx" il disco utilizzerà fino a 4096 byte per memorizzare questi 512 byte (il resto sono zeri o dati spazzatura, supponendo che non finirai con un underflow di memoria) perché non comunicano in byte, comunicano in settori.
Quindi i BIOS ora (a volte) includono un'opzione che consente di specificare manualmente che è necessario utilizzare una dimensione del settore di 512 byte anziché la dimensione del settore nativo di 4096 byte utilizzata dai dischi più recenti, con l'avvertenza che non è possibile utilizzarlo per accedere a più di 2 TB di disco su un sistema MBR, proprio come nei "bei vecchi tempi". Ma i moderni sistemi operativi che conoscono il 4K possono trarre vantaggio da tutto ciò per usare questa magia per leggere e scrivere in blocchi e voilà da 4096 byte!
(Un ulteriore vantaggio è che le cose sono molto più veloci perché se stai leggendo e scrivendo 4096 byte alla volta, ci sono meno operazioni per leggere o scrivere, diciamo, 4GiB di dati.)