Le partizioni sono sequenze di blocchi e per convenzione di vecchia data un blocco è di 512 byte.
Quindi una partizione può iniziare da qualsiasi multiplo di 512 byte all'interno di un disco, "visto" come una stringa di byte molto lunga.
L'hardware del disco sottostante, tuttavia, che originariamente aveva le stesse dimensioni del settore di 512 byte, utilizza ora una dimensione maggiore per l'efficienza. Diciamo che è 4096 byte.
Per motivi di compatibilità, il firmware che si trova tra il sistema operativo e l'hardware "parla ancora in settori". Quindi chiedi al primo settore e l'hardware recupera il primo blocco (4096 byte) e il firmware estrae e consegna lo slice appropriato. Si chiede il secondo blocco e il blocco viene probabilmente recuperato dalla cache.
Finora la mancata corrispondenza delle dimensioni del settore non ha svantaggi.
Ma il sistema operativo utilizza anche blocchi (di solito chiamati cluster ) per efficienza e li allineerà alla partizione. Quindi un cluster a 4 settori sarà composto dai settori 5, 6, 7 e 8.
Quando il sistema operativo richiede il cluster n. 2 del filesystem , al firmware vengono richiesti i settori logici 5, 6, 7 e 8. Se si trovano tutti nello stesso blocco del disco , il disco deve eseguire UNA lettura.
Ma se la partizione inizia nel settore "sbagliato", ad esempio il primo cluster nel filesystem finirà, semplificando, nei settori 2, 3, 4 e 5. E potrebbero quindi essere metà del primo blocco del disco (1 -2-3-4), metà nel secondo (5-6-7-8).
Ora hai bisogno di una lettura in più . Per rapporti OS-to-disk di 1: 1, questo equivale a raddoppiare le letture. Se il rapporto SO-disco è 2: 1, un cluster è composto da due blocchi hardware, saranno necessarie 2 + 1 = 3 letture, una penalità del 50%:
OS |--- cluster 12 ---|--- cluster 13 ---|--- cluster 14...
| | |
HDD --|----|----|----|-a--|--b-|-c--|-d--|-e--|----|--- BAD
| | |
HDD |----|----|----|----|-a--|--b-|-c--|-d--|----|----|--- GOOD
Sopra, un cluster è composto da 4 blocchi hardware (rapporto 4: 1) di 2 settori ciascuno. Allinearsi su settori "pari" significa che per leggere un cluster queste 8 letture di settore si traducono in 4 letture di blocchi. L'allineamento su settori dispari significa che le stesse letture di 8 settori richiedono 4 + 1 = 5 letture di blocchi, una penalità di prestazione del 25% (aggiungi una lettura ogni quattro).
Se si dispone di un disco disallineato con un rapporto 4: 1, l'allineamento lo renderà più veloce del 20% (si salva una lettura ogni 5).
Per rendere "allineata" una partizione, è necessario spostare / impostare il suo offset dall'inizio del disco sul multiplo appropriato di settori 512b oppure (a seconda dello strumento) è possibile inserire una piccola partizione all'inizio del disco, con una dimensione tale che la partizione successiva inizia esattamente su un confine del settore del disco. In questo secondo caso, mentre in teoria hai bisogno della maggior parte dei settori N-1, ovvero pochissimi kilobyte, in pratica probabilmente dovrai sprecare alcune centinaia di kilobyte, possibilmente interi megabyte, al fine di spremere il maggior numero di prestazioni dal tuo disco rigido multi-gigabyte.
(Probabilmente potresti recuperare quello spazio e molto altro, scegliendo correttamente la dimensione del cluster del sistema operativo ).