4.3. Partizionamento dei dischi fissi

Perché mai effettuare un partizionamento? Sebbene sia possibile avere un sistema Linux perfettamente funzionante su un'unica partizione, ed è anche leggermente più facile da fare, si possono ottenere molti vantaggi dividendo uno o più dispositivi di immagazzinamento dati in partizioni multiple.

Anche se è vero che Linux funzionerà egregiamente su un disco con un'unica grande partizione, può essere conveniente, sotto diversi aspetti, suddividere il vostro disco almeno per i quattro file system principali (root, usr, home e swap). Questi aspetti includono:

Primo, è possibile ridurre il tempo necessario ad effettuare i controlli dei file system (sia al momento del boot e sia eseguendo manualmente un fsck), perché tali controlli possono essere fatti in parallelo (A proposito, MAI eseguire un fsck su un file system montato!! Quasi certamente ve ne pentireste. L'eccezione a questa regola è che il file system sia montato read-only, allora tale azione risulterebbe innocua). Inoltre, i controlli sui file system sono più facili da realizzare su un sistema con partizioni multiple. Per esempio, se sapessi che la mia partizione /home presenta dei problemi, potrei semplicemente smontarla, effettuare un controllo del file system, e poi rimontare il file system riparato (invece di fare il boot del mio sistema, con un dischetto di soccorso, in modalità mono-utente e effettuare le riparazioni).

Secondo, con partizioni multiple, potete, se volete, montare una o più partizioni come read-only. Per esempio, se decidete che tutto quello che c'è in /usr non possa essere toccato nemmeno dal root, potete montare la partizione /usr come read-only.

In ultimo, il beneficio maggiore che si può trarre del partizionamento è la protezione dei vostri file system. Se dovesse succedere qualcosa ad un file system (a causa di un errore di un utente o di un malfunzionamento del sistema), su un sistema partizionato voi, probabilmente, perdereste file solo su un singolo file system. Mentre su un sistema non partizionato, probabilmente li perdereste su tutti i file system.

Ciò può esservi ulteriormente d'aiuto. Per esempio, se la vostra partizione root è talmente corrotta da non permettervi di effettuare il boot, potete usare il dischetto di soccorso, montare la vostra partizione root, e copiare quello che potete (o recuperare da un backup; si veda il Capitolo 8 per informazioni su come effettuare il backup e il restore dei file), su un'altra partizione come home, e poi riavviare ancora con il dischetto di emergenza, digitare "mount root=/dev/hda3" (posto che la partizione che contiene il vostro temporaneo file system root sia sulla terza partizione di hda) e avviare Linux completamente funzionante. Potete poi avviare un fsck sulla vostra smontata partizione root corrotta.

Ho avuto, personalmente, esperienza con catastrofi nei file system, e sono stato molto contento di aver potuto limitare i danni grazie all'uso di partizioni multiple.

Infine, visto che Linux vi permette di impostare altri sistemi operativi (come Windows 95/98/NT, BeOS, o quello che avete), e di avviare quello che vi pare, potreste trarre vantaggio dall'avere partizioni in più. Tipicamente, vorrete impostare almeno una partizione per ogni sistema operativo. Linux include un discreto boot loader (chiamato LILO sui sistemi basati su Intel, oppure MILO su Alpha e SILO su Sparc) che vi permette di specificare quale sistema operativo volete avviare al momento dell'accensione, con un periodo di tempo trascorso il quale verrà avviato il vostro sistema operativo preferito (probabilmente Linux, giusto?)

Dovete partizionare un disco (o più dischi) a seconda delle vostre esigenze. Nella mia esperienza con piattaforme Intel, Alpha e Sparc, per un sistema caricato completamente e che svolge una notevole quantità di compiti (come un sistema desktop a casa, o come un Internet server sul lavoro), ho scoperto che la seguente approssimazione di spazio funziona piuttosto bene per determinare la dimensione di una partizione.

Dato:

Dato un disco di X Mb/Gb          (es. 2 Gb)
(O più di un disco con complessivi X Mb/Gb)

Calcolare:

(swap) circa il doppio della memoria RAM (es. 64 Mb allora 128 Mb swap)
/ (root) circa il 10% di quanto disponibile (es. 200 Mb)
/home circa il  20% di quanto disponibile (es. 400 Mb)
/usr tutto lo spazio rimanente (es. 1272 Mb)

/var (opzionale -- vedi sotto)
/boot (opzionale -- vedi sotto)
/archive (opzionale -- vedi sotto)

Sicuramente, quanto sopra rappresenta solo una linea guida. Ovviamente manipolerete queste percentuali a seconda di come vogliate utilizzare il vostro sistema Linux. Se volete aggiungere molte applicazioni voluminose come WordPerfect oppure Netscape, o forse volete aggiungere il supporto per i caratteri giapponesi, allora probabilmente vorrete un po' più di spazio per /usr.

Mi sembra sempre di avere troppo spazio disponibile in /home, quindi se i vostri utenti non fanno molto (oppure avete imposto loro dei limiti), oppure non offrite account di shell,pagine web personali, ecc. allora potrete diminuire lo spazio per /home e aumentare quello per /usr.

Qui di seguito c'è una descrizione dei vari mount point e informazioni sui file system, che potrebbero schiarirvi le idee su come definire al meglio le dimensioni delle vostro partizioni:

In caso di aggiunta di altri dischi, potete aggiungere ulteriori partizioni, montate con diversi mount point -- ciò significa che un sistema Linux non si preoccuperà mai della mancanza di spazio. Per esempio, se in futuro sda6 dovesse iniziare a riempirsi, potremmo aggiungere un altro drive, impostare una partizione ben dimensionata con un mount-point in /usr/local -- e poi trasferire tutte le informazioni da /urs/local sul nuovo drive. Ma nessun sistema o applicazioni si "bloccherebbe", perché Linux vedrebbe /usr/local senza preoccuparsi di dove si trova.

Per darvi un esempio di come potrebbero essere impostate le partizioni, ho usato il seguente schema su un sistema Intel (doppio boot, Windows95 e Linux):

   Device Boot   Begin    Start      End   Blocks   Id  System
/dev/hda1  *         1        1      254  1024096+   6  DOS 16-bit >=32M
/dev/hda2          255      255      782  2128896    5  Extended
/dev/hda5          255      255      331   310432+  83  Linux native
/dev/hda6          332      332      636  1229728+  83  Linux native
/dev/hda7          637      637      749   455584+  83  Linux native
/dev/hda8          750      750      782   133024+  82  Linux swap

La prima partizione, /dev/hda1, è un file system DOS per il sistema operativo alternativo (Windows 95). Ciò mi dà per esso 1 Gb di spazio.

La seconda partizione, /dev/hda2, è una partizione fisica (chiamata "estesa") che comprende lo spazio rimanente sul drive. È usata solo per incapsulare le rimanenti partizioni logiche (ci possono essere solo 4 partizioni fisiche su un disco; nel mio caso avevo bisogno di più di 4 partizioni, quindi ho dovuto usare uno schema di partizionamento logico per le altre).

Le partizioni da tre a cinque, /dev/hda5, /dev/hda6 e /dev/hda7, sono tutti file system e2fs usati rispettivamente per le partizioni /(root), /usr e /home.

Infine, la sesta partizione, /dev/hda8, è usata come partizione di swap.

Come ulteriore esempio, questa volta su un box Alpha con 2 hard-disk (unico boot, solo Linux), ho scelto il seguente schema di partizionamento:

   Device Boot   Begin    Start      End   Blocks   Id  System
/dev/sda1            1        1        1     2046    4  DOS 16-bit <32M
/dev/sda2            2        2      168   346859   83  Linux native
/dev/sda3          169      169      231   130851   82  Linux swap
/dev/sda4          232      232     1009  1615906    5  Extended
/dev/sda5          232      232      398   346828   83  Linux native
/dev/sda6          399      399     1009  1269016   83  Linux native
/dev/sdb1            1        1      509  2114355   83  Linux native
/dev/sdb2          510      510     1019  2118540   83  Linux native

La prima partizione, /dev/sda1, è un file system DOS per il boot loader MILO. La piattaforma Alpha ha un metodo per il boot leggermente diverso rispetto ai sistemi Intel, quindi Linux memorizza le informazioni di boot in una partizione FAT. Questa partizione deve essere grande come il minimo possibile consentito; in questo caso, 2 Mb.

La seconda partizione, /dev/sda2, è un file system e2fs per la partizione /(root).

La terza partizione, /dev/sda3, viene usata come partizione di swap.

La quarta partizione, /dev/sda4, è una partizione "estesa" (date un'occhiata all'esempio precedente per maggiori dettagli).

La quinta e sesta partizione, /dev/sda5 e /dev/sda6, sono file system e2fs usati per /home e /usr.

La settima partizione, /dev/sdb1, è un file system e2fs per la partizione /archive.

L'ottave e ultima partizione, /dev/sdb2, è un file system e2fs usato per la partizione /archive2.

Dopo avere impostato le informazioni per la partizione, dovrete scrivere la nuova partizione sul disco. Fatto ciò, il programma di installazione di Red Hat ricaricherà in memoria la tabella di partizione, in modo che possiate continuare col processo d'installazione.