Gli hard disk

In questa Sezione viene introdotta la terminologia relativa agli hard disk: se già conoscete i termini ed i concetti potete saltarla.

In Figura 4-1 viene riportato un disegno schematico delle parti più importanti di un hard disk; questo consiste di una o più piastre circolari[1] con entrambe le superfici ricoperte da una sostanza magnetica usata per la memorizzazione dei dati. Per ciascuna superficie c'è una testina di lettura e scrittura che esamina o altera i dati memorizzati. Le piastre ruotano su un asse comune, con una velocità tipica di 3600 rotazioni al minuto, anche se gli hard disk ad alte prestazioni raggiungono velocità maggiori. Le testine si spostano lungo il raggio della piastra, e questo movimento, combinato con la rotazione della piastra stessa, permette alla testina di accedere a tutti i punti delle superfici.

Il processore (CPU) e il disco in sé comunicano attraverso un controller che solleva il resto del computer dalla necessità di sapere come utilizzare l'hard disk, dato che si possono fare diversi tipi di controller per diversi tipi di disco che usino la stessa interfaccia verso il resto del computer. Quindi il computer può dire semplicemente ``hey disco, dammi quello che voglio'', invece di una serie lunga e complessa di segnali elettrici per spostare la testina al punto desiderato, aspettare che la parte giusta ruoti sotto la testina e tutte queste cose antipatiche (in realtà, l'interfaccia al controller è comunque complessa, ma molto meno di come sarebbe dovuta essere altrimenti). Il controller può anche fare altre cose, come gestire la cache o isolare automaticamente i settori danneggiati.

Di solito è sufficiente sapere questo sull'hardware. In realtà ci sono anche molte altre cose, come il motore che fa girare le piastre e sposta le testine e l'elettronica che controlla le operazioni delle parti meccaniche, ma tutto questo non è rilevante per la comprensione del principio di funzionamento di un hard disk.

Le superfici sono di solito divise in anelli concentrici, chiamati tracce, e queste a loro volta sono divise in settori. Questa divisione viene usata per specificare punti dell'hard disk e per allocare lo spazio disco per i file. Per trovare un punto determinato dell'hard disk si potrebbe dire ``piastra 3, traccia 5, settore 7''. Di solito il numero dei settori è lo stesso per tutte le tracce, ma in alcuni hard disk ci sono più tracce nei settori più esterni (tutti i settori sono delle stesse dimensioni fisiche, quindi nelle tracce più esterne ce ne entrano di più). Tipicamente, un settore conterrà 512 byte di dati. Il disco stesso non può gestire quantità di dati più piccole di un settore.

Figura 4-1. Schema di un hard disk.

Ciascuna superficie è divisa in tracce (e settori) nello stesso modo. Ciò significa che quando la testina di una superficie è su una traccia, quella dell'altra superficie è anch'essa sulla traccia corrispondente. Tutte le tracce corrispondenti prese insieme si chiamano cilindro. Ci vuole del tempo per spostare le testine da una traccia (cilindro) ad un'altra, quindi, mettendo i dati a cui si accede in contemporanea (diciamo un file) in modo che si trovino tutti all'interno dello stesso cilindro, non è necessario spostare la testina per leggerli tutti e viene migliorata la performance del disco. Non è sempre possibile mettere i file in questo modo: i file che vengono immagazzinati in posti diversi dell'hard disk vengono chiamati frammentati.

Il numero di superfici (o testine, che è la stessa cosa), cilindri e settori variano molto: le specifiche sul numero di ciascuno di questi elementi vengono chiamate geometria di un hard disk. La geometria viene di solito memorizzata in una locazione di memoria speciale, alimentata a batterie, chiamata RAM CMOS, da cui il sistema operativo la può leggere durante l'avvio del computer o l'inizializzazione dei driver.

Sfortunatamente, il BIOS[2] ha una limitazione che rende impossibile specificare un numero di tracce più alto di 1024 nella RAM CMOS, che è troppo poco per un hard disk grande. Per superare questo problema il controller degli hard disk mente sulla geometria e traduce gli indirizzi dati dal computer in qualcosa di adatto. Ad esempio, un hard disk può avere 8 testine, 2048 tracce e 35 settori per traccia[3]. Il suo controller può mentire al computer e dire che ha 16 testine, 1024 tracce e 35 settori per tracce, non superando così il limite per le tracce, e tradurre gli indirizzi che il computer gli dà dimezzando il numero della testina e raddoppiando quello della traccia. La matematica può in realtà essere molto più complicata perché i numeri in genere non sono così carini, ma i dettagli non sono rilevanti per la comprensione del principio. Questa traduzione distorce la visione del sistema operativo di come è organizzato il disco, rendendo poco pratico usare il trucco di mettere tutti i dati su uno stesso cilindro per aumentare la performance.

Questa traduzione è un problema solo per i dischi IDE; quelli SCSI usano un numero di settori sequenziale (cioè il controller traduce un numero di settore sequenziale nella tripletta testina, cilindro e settore) ed un metodo totalmente diverso per la comunicazione tra la CPU e il controller, quindi il problema non si pone. Notate, comunque, che il computer può non sapere la geometria reale neanche di un disco SCSI.

Dato che Linux spesso non conosce la geometria reale di un disco, i suoi filesystem non provano neanche a mantenere i file all'interno di un singolo cilindro; provano invece ad assegnare ai file settori numerati sequenzialmente, cosa che dà quasi sempre una performance simile. La questione è complicata ulteriormente dalle cache sul controller e dai precaricamenti automatici fatti dal controller stesso.

Ciascun hard disk è rappresentato da un file di device separato. Di solito ci possono essere solo due o quattro hard disk IDE, che corrispondono rispettivamente a /dev/hda, /dev/hdb, /dev/hdc, e /dev/hdd. Gli hard disk SCSI corrispondono a /dev/sda, /dev/sdb, e così via. Esistono delle convenzioni simili anche per altri tipi di hard disk: per altre informazioni vedere [DEVICE-LIST]. Notare che i file di device per gli hard disk danno accesso al disco intero, senza considerare le partizioni (che verranno spiegate più avanti) ed è facile rovinare i dati in essi contenuti se non si fa attenzione. I file di device dei dischi di solito vengono usati solo per accedere al loro master boot record (che verrà anch'esso spiegato più avanti).

Note

[1]

Le piastre sono fatte di un materiale duro, come l'alluminio, da cui il nome hard disk, cioè ``disco duro''.

[2]

Il BIOS è un software fisso immagazzinato nei chip della ROM. Ha il compito, tra le altre cose, degli stadi iniziali del processo di avvio.

[3]

I numeri sono completamente inventati.