Le partizioni

Un singolo hard disk può essere diviso in diverse partizioni, ciascuna delle quali funziona come se fosse un disco separato. L'idea è che se avete un hard disk e ad esempio volete avere due sistemi operativi, potete suddividere il disco in due partizioni; ciascun sistema operativo userà la sua partizione come vuole e non toccherà quella dell'altro. In questo modo i due sistemi possono coesistere in pace sullo stesso hard disk, mentre senza le partizioni ci sarebbe voluto un disco per ciascun sistema operativo.

I floppy non vengono partizionati, non per motivi tecnici, ma perché sono molto piccoli e creare al loro interno delle partizioni non sarebbe utile se non in casi molto rari. I CD-ROM di solito non vengono partizionati, dato che è molto più semplice usarli come un grande disco e in genere non è necessario avere diversi sistemi operativi sullo stesso CD-ROM.

L'MBR, i settori di boot e la tabella delle partizioni

Le informazioni sul partizionamento di un hard disk si trovano nel suo primo settore (cioè, il primo settore della prima traccia della prima superficie del disco). Questo settore si chiama master boot record (MBR) del disco: è il settore che il BIOS legge ed avvia quando la macchina viene accesa. Il master boot record contiene un piccolo programma che legge la tabella delle partizioni, controlla quale partizione è attiva (cioè quale è contrassegnata come avviabile) e legge il primo settore di quella partizione, il boot sector (settore di avvio) della partizione (anche l'MBR è un settore di avvio, ma ha uno status speciale e quindi un nome speciale). Il boot sector contiene un altro programmino che legge la prima parte del sistema operativo contenuto in quella partizione (sempre che sia avviabile) e lo avvia.

Lo schema di partizionamento non è costruito all'interno dell'hardware e nemmeno nel BIOS: è solo una convenzione che viene seguita da molti sistemi operativi: non tutti, ma quelli che non lo fanno sono le eccezioni. Alcuni sistemi operativi permettono l'uso di partizioni, ma occupano una partizione sull'hard disk ed usano il loro metodo di divisione specifico al suo interno. Quest'ultimo tipo coesiste pacificamente con gli altri sistemi operativi (incluso Linux) e non richiede misure speciali, ma un sistema operativo che non supporta le partizioni non può coesistere sullo stesso disco con un altro sistema.

Come precauzione è una buona idea scrivere su carta la tabella delle partizioni, in modo che se si corrompesse ci sarebbe una speranza di non perdere tutti i file (una tabella delle partizioni corrotta si può recuperare con fdisk). Le informazioni rilevanti si ricavano dal comando fdisk -l:

$ fdisk -l /dev/hda

Disk /dev/hda: 15 heads, 57 sectors, 790 cylinders
Units = cylinders of 855 * 512 bytes

   Device Boot  Begin   Start     End  Blocks   Id  System
/dev/hda1           1       1      24   10231+  82  Linux swap
/dev/hda2          25      25      48   10260   83  Linux native
/dev/hda3          49      49     408  153900   83  Linux native
/dev/hda4         409     409     790  163305    5  Extended
/dev/hda5         409     409     744  143611+  83  Linux native
/dev/hda6         745     745     790   19636+  83  Linux native
$

Partizioni estese e partizioni logiche

Lo schema di partizionamento originale degli hard disk dei PC permetteva solo quattro partizioni, ma presto questo si è dimostrato troppo poco per l'uso reale, perché alcune persone volevano più di quattro sistemi operativi (Linux, MS-DOS, OS/2, Minix, FreeBSD, NetBSD, o Windows NT, per nominarne alcuni), ma principalmente perché a volte è una buona idea avere diverse partizioni per un solo sistema operativo. Ad esempio per Linux è meglio mettere lo spazio di swap in una sua partizione, invece che in quella principale di Linux, per motivi di velocità (vedi sotto).

Per superare questo problema di progettazione, furono create le partizioni estese. Questo trucco permette di partizionare una partizione primaria in sotto-partizioni. La partizione primaria così suddivisa si dice estesa e le sottopartizioni sono partizioni logiche: si comportano come primarie[1] ma vengono create in maniera diversa; non comportano una differenza di velocità.

La struttura delle partizioni di un hard disk può apparire come in Figura 4-2: il disco viene diviso in tre partizioni primarie, la seconda delle quali è divisa in due partizioni logiche, e parte del disco non viene partizionato. Il disco intero e ciascuna partizione primaria hanno un settore di boot.

Figura 4-2. Un esempio di partizionamento di hard disk.

Tipi di partizione

Le tabelle delle partizioni (quella nell'MBR, e quelle per le partizioni estese) contengono un byte per partizione che ne identifica il tipo. In questo modo si cerca di identificare il sistema operativo che usa la partizione, o il modo in cui essa viene usata. Lo scopo è evitare che due sistemi operativi usino accidentalmente la stessa, comunque, in realtà, i sistemi operativi non considerano veramente il tipo della partizione: ad esempio, Linux proprio non lo legge. Peggio ancora, alcuni sistemi lo usano in maniera non corretta: ad esempio, almeno alcune versioni di DR-DOS ignorano il bit più significativo del byte, altre no.

Non c'è nessuna agenzia di standardizzazione che specifica cosa significhi ciascun valore di questo byte, ma alcuni valori comunemente accettati sono riportati in Tabella 4-1. La stessa lista è disponibile nel programma fdisk di Linux.

Tabella 4-1. Tipi di partizione (dal programma fdisk di Linux).

0Vuota40Venix 8028694Amoeba BBT
1DOS 12-bit FAT51Novell?a5BSD/386
2XENIX root52Microportb7BSDI fs
3XENIX usr63GNU HURDb8BSDI swap
4DOS 16-bit <32M64Novellc7Syrinx
5Estesa75PC/IXdbCP/M
6DOS 16-bit >=32M80MINIX vecchioe1DOS access
7OS/2 HPFS81Linux/MINIXe3DOS sola lettura
8AIX82Linux swapf2DOS secondaria
9AIX avviabile83Linux nativaffBBT
aOS/2 Boot Manag93Amoeba  

Ripartizionare un hard disk

Ci sono molti programmi per creare e rimuovere partizioni. La maggior parte dei sistemi operativi ne ha uno proprio, ed è una buona idea usare quello del sistema che si usa, in caso faccia qualcosa di insolito che gli altri non fanno. La maggior parte di questi programmi, compreso quello per Linux, si chiamano fdisk, o variazioni sul tema. I dettagli sull'uso dell'fdisk di Linux sono riportati nella sua pagina man. Il comando cfdisk è simile a fdisk, ma ha un'interfaccia utente più carina (a tutto schermo).

Quando si usano dei dischi IDE, la partizione di boot (quella con i file di immagine del kernel che viene avviato) deve essere completamente all'interno dei primi 1024 cilindri, perché il disco viene usato dal BIOS durante l'avviamento del sistema (prima che il sistema vada in modalità protetta) e questo non ne può gestire di più. Talvolta è possibile usare una partizione di boot che è solo parzialmente entro i primi 1024 cilindri: questo trucco funziona solo se tutti i file che vengono letti dal BIOS sono entro il cilindro 1024. Dato che una cosa del genere è difficile da imporre, è una pessima idea provarci: non saprete mai quando un aggiornamento del kernel o la deframmentazione del disco vi toglierà la possibilità di avviare il sistema; quindi, assicuratevi che la partizione di boot sia completamente all'interno dei primi 1024 cilindri.

Alcune versioni più recenti del BIOS e dei dischi IDE possono, in effetti, gestire dischi con un numero maggiore di cilindri. Se avete un sistema di questo genere, potete dimenticarvi del problema; se non ne siete sicuri, mettetela comunque entro i primi 1024.

Ciascuna partizione dovrebbe avere un numero pari di settori, dato che i filesystem di Linux usano blocchi di 1 kb, cioè due settori. Un numero dispari di settori comporterà il mancato utilizzo dell'ultimo; non crea problemi, ma è brutto, e alcune versioni di fdisk vi daranno un avvertimento.

Modificare la dimensione di una partizione di solito richiede di farne il backup (preferibilmente di tutto il disco, non si sa mai), cancellarla, crearne una nuova e rimetterci tutti i dati. Se la partizione deve aumentare, dovrete anche modificare la dimensione (e fare il backup e il restore) anche delle partizioni confinanti.

Dato che modificare la dimensione di una partizione è una cosa complicata, è preferibile farlo bene la prima volta o avere un mezzo di backup efficace e facile da usare. Se state installando da un mezzo che non richiede molto intervento umano (ad esempio un CD-ROM e non dei floppy), spesso è più facile giocare con diverse configurazioni all'inizio: dato che non avete dati di cui fare backup, non è poi così doloroso modificare le dimensioni delle partizioni diverse volte.

Esiste un programma per l'MS-DOS, chiamato fips, che ridimensiona una partizione di MS-DOS o di Windows senza bisogno di dover fare backup e recuperare tutti i dati; per gli altri tipi di filesystem è però ancora necessario seguire tutta la procedura.

File di device e partizioni

Ciascuna partizione o partizione estesa ha il proprio file di device. Per convenzione i nomi di questi file sono composti dal nome del disco e dal numero della partizione, tenendo conto che da 1 a 4 si tratta di partizioni primarie (indipendentemente da quante partizioni primarie ci siano in realtà), e da 5 a 8 di partizioni logiche (indipendentemente da quale sia la partizione primaria che le contiene). Ad esempio, /dev/hda1 è la prima partizione primaria sul primo disco IDE, e /dev/sdb7 è la terza partizione estesa sul secondo disco SCSI. L'elenco dei dispositivi ([DEVICE-LIST]) dà altre informazioni su questo argomento.

Note

[1]

Illogiche?