|
||
|
|
|
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
Le piastre sono fatte di
un materiale duro, come l'alluminio, da cui il nome hard disk, cioè ``disco
duro''. |
|
Il BIOS è un software
fisso immagazzinato nei chip della ROM. Ha il compito, tra le altre cose,
degli stadi iniziali del processo di avvio. |
|
I numeri sono
completamente inventati. |
|
|
|
|
|
|