Contact me sending an e-mail (antispam defense activated) |
Title: Partizionamento di un sistema Linux Author: Sandro Tosi Last modified: 2004-11-14 (2004-11-07) (2004-11-06) (2004-11-05) (01/11/2004) Il metodo piu` pratico per installare un sistema Linux e` quello di farlo in un'unica partizione, che contenga tutte le directory. A volte, pero`, questa configurazione non soddisfa alcune necessita`. Cerchiamo allora di partizionare il sistema in maniera piu` pratica e funzionale. Utilizzare il sistema su piu` partizioni aumenta la sicurezza e riduce la difficolta` di recupero in caso di problemi; in piu` si riesce ad avere maggior controllo su alcuni fattori, come la frammentazione o il tempo di check in caso di riavvio improvviso. Inoltre, mantenere separate parti del filesystem consente anche di reinstallare facilmente, poiche`, magari, la /home si trova in una partizione separata e quindi non c'e` bisogno di effettuarne un backup. Si tenga presente che avere piu` partizioni non e` necessario o obbligatorio, ma sono un sistema di controllo e di fault-tollerance in piu`; inoltre, avere piu` partizioni non aumentera` le prestazioni: per ottenere questo, esse devono anche risiedere su dischi differenti. Quali parti del tree e` consigliabile mettere in una partizione separata e` strettamente dipendente dall'uso che faremo della macchina: e` chiaro che le esigenze di un utente domestico sono ben diverse da quelle di un server di produzione. La prima regola che possiamo dare e` quella di separare i dati dai programmi, mettendoli in due partizioni separate (questo consiglio non vale solo per Linux, ma per qualsiasi altro sistema operativo). In questo modo se si incasinano i dati, abbiamo un sistema per cercare di recuperarli, mentre se si incasinano i programmi, possiamo reinstallare a cuor leggero, in quanto i dati sono protetti in una partizione separata. Separare / da /home e` gia` un primo modo di partizionare il proprio sistema. Esiste, comunque, il Multi-Disk Partitioning HOWTO, che si consiglia di consultare per maggiori indicazioni. Directory ========= / deve contenere, almeno, gli strumenti necessari al boot, le utility base di gestione e recovery del sistema. /etc non deve _mai_ essere messa in una partizione separata da /, in quanto altrimenti il kernel non avrebbe possibilita` di leggere alcuni dei file necessari al boot (uno su tutti /etc/fstab, che si trova in una partizione le cui informazioni di montaggio sono contenute in un file al sui interno...) e quindi non si potrebbe avviare il sistema operativo. /boot puo` essere in una partizione separata, e diventa questa una scelta obbligatoria in caso si utilizzi LVM: il supporto ad LVM puo` essere sia all'interno del kernel che in un modulo, ma se risiedessero in un volume LVM non sarebbe possibile leggerli, e dunque effettuare il boot. In generale, veniva posta in una partizione separata quando il filesystem di / non era supportato dal kernel (non era al suo interno ma come modulo): venivano messi li` il kernel e l'immagine di boot che conteneva al suo interno il supporto al filesystem di /. L'utilita` di averla separata in caso di malfunzionamenti e` quasi nulla: infatti se - /boot si salva e / si corrompe il kernel viene caricato in memoria, poi forse si avvia init, o forse nemmeno quello, poi pero` fsck e` corrotto. Averla separata non e` servito a nulla. - /boot si corrompe e / no l'opera di recupero e` piu` facile: si provano tutti i kernel e se sono tutti corrotti, si usa un floppy di boot o un cd rescue. - /boot e / si corrompono Risultato identico ad averle insieme. Risulta utile nel caso si vogliano provare piu` distribuzioni sul proprio sistema. /home andrebbe quasi sempre messa in una partizione separata dalle altre: in caso si abbia necessita` di reinstallare il sistema, i propri dati sono al sicuro; inoltre, in caso di riavvio improvviso, le probabilita` che si corrompa la partizione di /home saranno minori che avere tutto in una sola partizione. /usr contiene tutti i programmi installati dalla propria distribuzione (ed in Debian i programmi che andrebbero in /opt finiscono qui dentro), e possono essere veramente tanti. Inoltre ci vengono spesso messi anche i sorgenti del kernel che, decompressi, occupano circa 300 Mb. Separarla da / consente di mantenere quest'ultima di dimensioni contenute, e separare la parte applicativa da quella di gestione vera e propria della macchina. Separando /usr/src da /usr, e` possibile montare quest'ultima come read-only, che non guasta dal punto di vista della sicurezza. /tmp e` la directory, cancellata ad ogni riavvio, che viene utilizzata dalle applicazioni come punto di appoggio per memorizzare dati temporanei di elaborazioni, a volte richiedendo anche anche molto spazio, considerando che i programmi di masterizzazione mettono i file iso proprio in /tmp, oppure si provi ad eseguire il sort di un file di grandi dimensioni. In generale, ed il particolare in caso di una macchina server, e` sempre opportuno dedicare una partizione separata a /tmp, per varie ragioni: o se il numero di file in /tmp cresce troppo velocemente non si rischia di riempire / ma solo la partizione di /tmp; o utilizzando opportuni parametri di mount, e` possibile incrementare la sicurezza del sistema evitando molte falle note nell'utilizzo di file temporanei. Nel caso /var sia una partizione separata e non se ne voglia creare una nuova per /tmp, e` possibile sempre far puntare /tmp a /var/tmp (non e` comunque una soluzione consigliabile: /var deve aver spazio per ben altre cose). /var come dice il nome stesso, contiene file il cui numero, contenuto e dimensione possono variare molto frequentemente: spool, contenuti di web server, database, cache proxy, o anche la cache dei pacchetti di apt (per chi usa Debian). Averla in una partizione separata puo` evitare di riempire / con questi file e mantenerne sotto controllo il contenuto, soprattutto in caso di installazione per server, in quanto al suo interno troveranno posto una gran mole di dati. /misc (o un nome simile) potrebbe aver senso creare una cartella da dedicare a dati che vengono scaricati da Internet (filesharing) o film e quant'altro. Dimensioni ========== La dimensione delle partizioni, come il loro numero, dipende largamente dal tipo di utilizzo che andremo a fare della macchina. / solitamente piccola, a maggior ragione se /usr, /tmp, /var, ed /home sono in altre partizioni (deve contenere solo /boot, /etc, /lib, /bin, /sbin), attorno al giga, direi. /boot contiene i kernel, i file System.map relativi e poco altro; solitamente tra i 10-100 Mb (a seconda) sono piu` che sufficienti. /home tutto quello che si puo` dare dopo aver fatto il partizionamento del sistema: essa conterra` i nostri dati personali, che sono tanti e spesso di grandi dimensioni (musica, video, etc.) /usr (e/o /opt) contiene i programmi, e molti di essi sono di grandezza notevole: X, OpenOffice, etc. Conviene dimensionarla sui 5-10Gb, giusto per stare largo. Inoltre, una volta che il sistema e` installato, la sua dimensione tende a rimanere abbastanza stabile. Dovrebbe essere la piu` grande partizione, dopo /home. /tmp puo` variare molto, diciamo una dimensione anche di 1-2Gb. /var contiene dati che possono variare frequentemente e tende ad avere un particolare comportamento fluttuante: il suo utilizzo cresce e diminuisce in misura anche notevole. Conviene dimensionarla generosamente, attorno a 2-5 Gb. /misc se utilizzata, contiene solitamente una grande quantita` di dati. Ad esempio, se l'utilizzo che faremo del sistema sara` di file server, questa partizione conterra` i file condivisi. E` necessario, quindi, che vi venga dedicato tutto lo spazio possibile, sacrificando altre partizioni (/home in particolare). swap conviene crearla della stessa dimensione della Ram fisica installata, ma se si usano molti programmi pesanti, puo` anche essere necessario dimensionarla al doppio della Ram installata (certo che avendo 1 Gb di Ram, metterne 2 di swap sembra proprio uno spreco...). Utilizzo ======== Schematiziamo una possibile configurazione delle partizioni per alcuni utilizzi classici: casalingo: / /home swap game machine: / /home /usr /tmp swap server: / /boot /home /usr /tmp /var swap file server: / /usr /tmp /var /misc Sicurezza ========= Le opzioni di boot possono aumentare la sicurezza di un sistema che abbia piu` partizioni: /boot rw,nosuid /home rw,nodev,nosuid,noexec /usr rw,nodev /tmp rw,noexec,nosuid /var rw,nosuid,nodev Se la /home contiene una directory di eseguibili locali o si sviluppano programmi, le opzioni ``nosuid,noexec'' devono essere omesse, in quanto utili solo se non sono presenti eseguibili nella partizione. Per /home e /var, quando previsto dal sistema, e` possibile usare i parametri della quota disco: ``usrquota,grpquota''. /usr potrebbe anche essere montata come ``ro'', in quanto l'utilizzo normale non richiede una scrittura in questa directory (che avviene solo quando si installa un programma a livello globale, e lo puo` fare solo root). |