C'è una speciale nomenclatura che Linux usa per fare riferimento alle partizioni sui dischi fissi e che deve essere capita per potere seguire gli argomenti trattati nelle pagine seguenti.
In Linux, le partizioni sono rappresentate da file di device. Questi sono file fittizi posizionati in /dev. Ecco alcune voci:
brw-rw---- 1 root disk 3, 0 May 5 1998 hda brw-rw---- 1 root disk 8, 0 May 5 1998 sda crw------- 1 root tty 4, 64 May 5 1998 ttyS0Un file di device è un file di tipo c (sta per device a "caratteri", device che non usano la buffer cache) o b (sta per device a "blocchi", che passano attraverso la buffer cache). In Linux, tutti i dischi sono rappresentati esclusivamente come device a blocchi.
Per convenzione, alle unità IDE vengono assegnati i nomi di device da /dev/hda a /dev/hdd. Hard Drive A (/dev/hda) è la prima unità e Hard Drive C (/dev/hdc) è la terza.
Tabella 2. Convenzioni per i nomi dei controller IDE
nome dell'unità | controller dell'unità | numero dell'unità |
/dev/hda | 1 | 1 |
/dev/hdb | 1 | 2 |
/dev/hdc | 2 | 1 |
/dev/hdd | 2 | 2 |
Un PC tipico ha due controller IDE, ognuno dei quali può avere connesse due unità. Per esempio, /dev/hda è la prima unità (master) sul primo controller IDE e /dev/hdd è la seconda unità (slave) sul secondo controller (la quartà unità IDE nel computer).
Si può scrivere su questi device in modo diretto (usando cat o dd). Tuttavia, dato che questi device rappresentano l'intero disco, partendo dal primo blocco, si può per errore sovrascrivere il master boot record e la tabella delle partizioni, il che renderebbe l'unità inutilizzabile.
Tabella 3. Nomi delle partizioni
nome dell'unità | controller dell'unità | numero dell'unità | tipo di partizione | numero di partizione |
/dev/hda1 | 1 | 1 | primaria | 1 |
/dev/hda2 | 1 | 1 | primaria | 2 |
/dev/hda3 | 1 | 1 | primaria | 3 |
/dev/hda4 | 1 | 1 | swap | ND |
/dev/hdb1 | 1 | 2 | primaria | 1 |
/dev/hdb2 | 1 | 2 | primaria | 2 |
/dev/hdb3 | 1 | 2 | primaria | 3 |
/dev/hdb4 | 1 | 2 | primaria | 4 |
Una volta che un'unità è stata partizionata, le partizioni saranno rappresentate da numeri alla fine dei nomi. Per esempio, la seconda partizione sulla seconda unità sarà /dev/hdb2. Il tipo di partizione (primaria) è per chiarezza elencato nella tabella soprastante, anche se il concetto non verrà spiegato prima de la Sezione 3.3.
Tabella 4. Unità SCSI
nome dell'unità | controller dell'unità | numero dell'unità | tipo di partizione | numero di partizione |
/dev/sda1 | 1 | 6 | primaria | 1 |
/dev/sda2 | 1 | 6 | primaria | 2 |
/dev/sda3 | 1 | 6 | primaria | 3 |
Le unità SCSI seguono uno schema simile; sono rappresentate da "sd" invece di "hd". La prima partizione della seconda unità SCSI sarà pertanto /dev/sdb1. Nella tabella soprastante, il numero dell'unità, cioè 6, è scelto arbitriamente per introdurre il concetto che i numeri identificativi SCSI non hanno corrispondenza nei nomi di device in Linux.
In (Sun) Solaris e (SGI) IRIX, il nome di device assegnato ad un'unità SCSI ha una relazione con il punto in cui essa è connessa. In Linux, c'è solo pianto e stridore di denti.
Prima
SCSI ID #2 SCSI ID #5 SCSI ID #7 SCSI ID #8 /dev/sda /dev/sdb /dev/sdc /dev/sdd
Dopo
SCSI ID #2 SCSI ID #7 SCSI ID #8 /dev/sda /dev/sdb /dev/sdc
Le unità SCSI hanno numeri identificativi, ID, che vanno da 1 a 15. A numeri identificativi SCSI più bassi sono assegnate lettere di ordine inferiore. Per esempio, se si hanno due unità con numeri 2 e 5, allora la numero 2 è /dev/sda e la 5 è /dev/sdb. Se si rimuove una qualunque di esse, tutte le unità con numero più alto avranno al successivo avvio un nuovo nome.
Se si hanno due controller SCSI nella propria macchina Linux, è necessario esaminare l'output di /bin/dmesg al fine di vedere quale nome è stato assegnato a ciascuna unità. Se si rimuove uno dei due controller, tutte le unità del controller rimanente potrebbero essere rinominate. Grrr...
Ci sono due modi di aggirare l'ostacolo; entrambi comportano l'uso di un programma per assegnare un'etichetta a ciascuna partizione (vedere la la Sezione 6). L'etichetta persiste anche quando l'unità viene spostata fisicamente. Ci si riferisce in seguito alla partizione direttamente o indirettamente tramite la sua etichetta.
Tabella 5. Partizioni logiche
nome dell'unità | controller dell'unità | numero dell'unità | tipo di partizione | numero di partizione |
/dev/hdb1 | 1 | 2 | primaria | 1 |
/dev/hdb2 | 1 | 2 | estesa | ND |
/dev/hda5 | 1 | 2 | logica | 2 |
/dev/hdb6 | 1 | 2 | logica | 3 |
La tabella soprastante illustra un misterioso salto nell'assegnazione dei nomi. Ciò è dovuto all'uso di partizioni logiche (vedere la la Sezione 3.4), che partono sempre dal numero 5, per ragioni spiegate più avanti.
Questo è tutto ciò che si deve sapere per avere a che fare con unità a disco in Linux. Per amor di completezza, si veda la spiegazione di Kristian sui numeri di device qui sotto.
Le uniche cose importanti di un file di device sono i suoi numeri di device primario e secondario, che vengono mostrati al posto della dimensione del file:
$ ls -l /dev/hda
Tabella 6. Attributi dei file di device
brw-rw---- | 1 | root | disk | 3, | 0 | Jul 18 1994 | /dev/hda |
permessi | proprietario | gruppo | numero primario del device | numero secondario del device | data | nome del device |
Quando si accede ad un file di device, il numero primario seleziona quale driver di device viene chiamato per effettuare l'operazione di input/output. Questa chiamata viene fatta con il numero secondario come parametro e l'interpretazione del numero secondario è totalmente a carico del driver. La documentazione del driver normalmente descrive come il driver usa i numeri secondari. Per i dischi IDE, questa documentazione si trova in /usr/src/linux/Documentation/ide.txt. Per i dischi SCSI, ci si aspetterebbe tale documentazione in /usr/src/linux/Documentation/scsi.txt, ma lì non c'è. Si deve guardare il sorgente dei driver per essere sicuri ( /usr/src/linux/driver/scsi/sd.c:184-196). Per fortuna c'è l'elenco dei numeri e nomi di device di Peter Anvin in /usr/src/linux/Documentation/devices.txt; vedere le voci per i device a blocchi, numero primario 3, 22, 33, 34 per i dischi IDE e numero primario 8 per i dischi SCSI. I numeri primario e secondario sono rappresentati da un byte ciascuno ed è per questo che il numero di partizioni per ciascun disco è limitato.