Avanti Indietro Indice

13. Partizioni estese e logiche

In precedenza, abbiamo visto la struttura dell'MBR (settore 0): il codice del boot loader seguito da 4 voci della tavola delle partizioni da 16 byte ciascuna e dalla firma AA55. Le voci della tavola delle partizioni di tipo 5 o F o 85 (Hex) hanno un significato speciale: descrivono le partizioni estese, che sono porzioni di disco che verranno ripartizionate in partizioni logiche (una partizione estesa non è che un contenitore di partizioni logiche e non può essere utilizzata di per se stessa). Solo la posizione del primo settore di una partizione estesa è importante. Questo primo settore contiene una tavola delle partizioni con quattro voci: una per la partizione logica, una per quella estesa e due inutilizzate. In questo modo si ottiene una catena di tavole delle partizioni, sparse per il disco, dove la prima descrive tre partizioni primarie e una estesa mentre le tavole seguenti descrivono una partizione logica e la posizione della prossima tavola.

È importante capire questo: quando qualcuno fa qualcosa di stupido partizionando un disco si chiede: "I miei dati ci sono ancora?" La risposta è: sì. Ma, se si creano partizioni logiche verrà riscritta la tavola delle partizioni che le descrive e ogni dato presente è perso.

Il programma sfdisk mostrerà l'intera catena. Ecco un esempio:

# sfdisk -l -x /dev/hda

Disk /dev/hda: 16 heads, 63 sectors, 33483 cylinders
Units = cylinders of 516096 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls   #blocks   Id  System
/dev/hda1          0+    101     102-    51376+  83  Linux
/dev/hda2        102    2133    2032   1024128   83  Linux
/dev/hda3       2134   33482   31349  15799896    5  Extended
/dev/hda4          0       -       0         0    0  Empty

/dev/hda5       2134+   6197    4064-  2048224+  83  Linux
    -           6198   10261    4064   2048256    5  Extended
    -           2134    2133       0         0    0  Empty
    -           2134    2133       0         0    0  Empty

/dev/hda6       6198+  10261    4064-  2048224+  83  Linux
    -          10262   16357    6096   3072384    5  Extended
    -           6198    6197       0         0    0  Empty
    -           6198    6197       0         0    0  Empty
...
/dev/hda10     30581+  33482    2902-  1462576+  83  Linux
    -          30581   30580       0         0    0  Empty
    -          30581   30580       0         0    0  Empty
    -          30581   30580       0         0    0  Empty

#

È possibile costruire una tavola delle partizioni scorretta. Molti kernel entrano in un loop se qualche partizione estesa punta a se stessa o ad una precedente nella catena. È possibile avere due partizioni estese in una tabella delle partizioni così che la tabella si divide (questo capita per esempio con fdisk che non riconosce ogni 5, F e 85 come partizioni estese e che crea una 5 dopo una F). Programmi non standard tipo fdisk possono risolvere queste situazioni anche se richiedono del lavoro manuale per riparare le partizioni. Il kernel di Linux accetta una divisione nei livelli più esterni. In questo modo è possibile avere due catene di partizioni logiche. Talvolta può essere utile - per esempio, si può usare il tipo 5 che è visto dal DOS e il tipo 85, invisibile al DOS, così che il DOS FDISK non vada in crash perché la partizione logica supera il cilindro 1024.


Avanti Indietro Indice