Sapendo che già dall’uscita dello standard dell’ATA-6 (lontano 2002) veniva previsto per gli HD l’indirizzamento LBA48 , Logical Block Addressing a 48 bit, da un po’ mi chiedevo come questo standard fosse applicato alla tabella delle partizioni , visto che (essa risiede nel MBR ed ha 4 entry composta da 16 byte ognuna ) le “righe” di questa tabella sono troppo stringate per contenere gli indirizzi dei blocchi a 6 byte dell’ LBA48 senza perdere la retrocompatibilità.
Infatti spulciando sul web , ho scoperto che lo standard LBA48 non è compatibile o almeno non pienamente utilizzabile con il formato attuale della Partition Table 😛
Pensavo che per rendere utilizzabile lo standard LBA48 fossero state introdotte delle ulteriori strutture dati che ampliassero la tabella delle partizioni attuale , magari nel secondo blocco , quello immediatamente successivo all MBR in modo da mantenere la retrocompatibilità . Non è per niente cosi infatti la tabella è sfruttata cosi com’è .
Vediamo piu in dettaglio esaminando la struttura delle singole entry:
tratta dal sito wiki.osdev.org
Esaminando la entry delle tabella delle partzioni vediamo che ci sono gli indirizzi CHS (Cylinder Head Sector) di inizio e di fine della partizione . Questi indirizzi sono di tre byte sono quindi ormai troppo limitati per i moderni dischi porterebbero ad un indirizzamento massimo teorico di 2^24 blocchi cioè 16Mega blocchi e quindi (con ogni blocco pari a 512 bytes) 8 Giga bytes.
E infatti per un tempo uno dei limiti alle capacità dei dischi è stato prorprio quello degli 8 giga
Alla fine ecco che arriviamo alla situazione attuale . Oggi vengono vengono utilizzati per identificare le partizioni gli ultimi due campi della tabella . Entrambi questi campi che rappresentano l’indirizzo di partenza e la dimensione della partizione , sono di 4byte . Questo appunto porta ad un indirizzamneto possibile di 2^32 cioè 4 Giga blocchi e quindi (con ogni blocco pari a 512 bytes ) 2 Tera bytes . Possiamo definirlo un LBA a 32 bit (relativamete alla Partition Table)
Sviluppi futuri
Quando verrà modificato lo standard della tabella delle partizioni per essere compatibile con LBA48 , per un po’ dovremmo essere a posto , infatti con due byte in più abbiamo un fattore pari a 65536 volte gli indirizzamenti attuali possibili . E credo che per qualche tempo i dischi non raggiungeranno il limite di questo indirizzamento.
una soluzione potrebbe essere quella proposta sul sito di OSDev che consiste sostanzialmente nel utilizzare i due bytes degli indirizzi CHS nella tabella per ospitare i 2bytes di peso maggiore dell’LBA48 . Questa soluzione eliminerebbe la retrocompatibilità con i vecchi BIOS che utilizzano il CHS.
PS OSDev è molto ricco e ben fatto, ho trovato qui le info che cercavo
Un’altra soluzione potrebbe essere quella la GPT : GUID Partition Table Questa soluzione prevede che la tabella delle partizioni occupi molto piu spazio nel disco .Essa verrebbe spalmata tra i settori successivi all’ MBR all’inizio del disco (in questo modo verrebe mantenuta la retrocompatibilità) e ripetuta nei settori finali .
Questo standard è parte dell’ EFI : Extensible Firmware Interface che prevede dei BIOS (ma forse non si chiamerebbero neanche piu così ) con capacità molto maggiori di quelle attuali è uno standard proposto da Intel gia applicato dalla Apple e che comincia a vedersi in qualche scheda madre dell’ambito PC