Sophie

Sophie

distrib > Mandriva > 9.1 > i586 > by-pkgid > f1098342ec4a2b28475e34123ce17201 > files > 1403

howto-html-it-9.1-0.5mdk.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
 <TITLE>Linux Partition HOWTO</TITLE>


</HEAD>
<BODY>
<H1>Linux Partition HOWTO</H1>

<H2>Kristan Koehntopp, kris@koehntopp.de</H2>v2.4, 3 November 1997
<P><HR>
<EM>Questo Mini-HOWTO spiega come pianificare e disporre lo spazio
disco per il vostro sistema Linux. Parla di hardware, partizioni, dimensione
dello spazio di swap e considerazioni di posizionamento, file system, tipi
di file system e argomenti collegati. L'intenzione &egrave; quella di dare un po'
di conoscenza generale, non delle procedure.
Traduzione di Andrea Manzini &lt;linux@netbusiness.it&gt;</EM>
<HR>
<H2><A NAME="s1">1. Introduzione</A></H2>

<H2>1.1 Di che cosa si tratta?</H2>

<P>
<P>Questo &egrave; un testo Linux Mini-HOWTO. Un Mini-HOWTO &egrave; un piccolo testo che
spiega qualcosa collegato all'installazione di Linux e alla sua
manutenzione in forma esplicativa. &Egrave; mini, perch&eacute; o il testo o l'argomento
che discute sono troppo brevi per un vero HOWTO o addirittura un libro. Un
HOWTO non &egrave; una guida di riferimento: per questo esistono le pagine man.
<H2>1.2 Che cosa contiene? Altri documenti HOWTO collegati</H2>

<P> Questo particolare Mini-HOWTO spiega come pianificare e suddividere lo
spazio disco per il vostro sistema Linux. Parla di hardware, partizioni,
dimensione dello spazio di swap e considerazioni di posizionamento, file
system, tipi di file system e argomenti collegati. L'intenzione &egrave; quella di
dare un po' di conoscenza generale, cos&igrave; in questo testo parleremo
soprattutto di principi e non di strumenti.
<P>In teoria, questo documento dovrebbe essere letto prima dell'installazione,
ma questo risulta difficile per molte persone; i principianti hanno ben altri
problemi che non l'ottimizzazione del disco. Cos&igrave; voi siete probabilmente
tra quelli che hanno appena finito una installazione Linux e adesso starete
pensando a come ottimizzare questa installazione o come evitare certe sviste
nella prossima. Bene, preparatevi a cancellare e a rifare la vostra
installazione quando avrete finito di leggere questo testo. :-)
<P>Questo Mini-HOWTO si limita alla pianificazione e alla disposizione dello
spazio su disco nella maggior parte dei casi. Non discute dell'uso di fdisk,
LILO, mke2fs o programmi di backup. Ci sono altri HOWTO che trattano questi
problemi. Fate riferimento all'indice degli HOWTO per informazioni sugli
HOWTO disponibili. Nell'indice ci sono anche le informazioni su come e dove
procurarsi i documenti HOWTO.
<P>Per imparare a stimare le diverse dimensioni e velocit&agrave; richieste dalle
differenti parti del file system, vedere il mini-HOWTO ``Linux Multiple Disks
Layout'', di Gjoen Stein &lt;gjoen@nyx.net&gt;.
<P>Per istruzioni e considerazioni su dischi con pi&ugrave; di 1024 cilindri, vedere
il mini-HOWTO ``Linux Large Disk'', di Andries Brouwer
&lt;aeb@cwi.nl&gt;.
<P>Per istruzioni sulla limitazione dell'uso di spazio su disco per utente
(quotas), vedere il mini-HOWTO ``Linux Quota'', di Albert M.C. Tam
&lt;bertie@scn.org&gt;
<P>Al momento, non ci sono documenti generici sul backup, ma ci sono vari
documenti con riferimenti a soluzioni specifiche di backup. Vedere il
mini-HOWTO ``Linux ADSM Backup'', di Thomas Koenig
&lt;Thomas.Koenig@ciw.uni-karlsruhe.de&gt;
per istruzioni su come integrare Linux in un ambiente di backup IBM ADSM.
Vedere il mini-HOWTO ``Linux Backup with MSDOS'', di Christopher Neufeld
&lt;neufeld@physics.utoronto.ca&gt; per informazioni circa il backup di
dischi Linux via MS-DOS.
<P>Per istruzioni sulla scrittura e l'invio di un documento HOWTO, vedere
l'indice ``The Linux HOWTO Index'', di Tim Bynum
&lt;linux-howto@sunsite.unc.edu&gt;.
<P>Anche scorrere nella directory /usr/src/linux/Documentation pu&ograve; essere
veramente istruttivo. Leggete i file ide.txt e scsi.txt per una informazione
generale sulle caratteristiche dei driver e date un'occhiata alla
sottodirectory filesystems/.
<P>
<H2><A NAME="s2">2. Che cos'&egrave; una partizione? </A></H2>

<P> Poco dopo che dischi fissi furono
inventati, la gente volle installare pi&ugrave; di un sistema operativo, anche se
disponevano di un solo disco. Nacque cos&igrave; la necessit&agrave; di un meccanismo che
dividesse un singolo disco fisico in tante unit&agrave; logiche. Quindi ecco cos'&egrave;
una partizione: un insieme di blocchi contigui sul vostro hard disk che
viene trattato dal sistema operativo come se fosse un disco completamente
autonomo e separato.
<P>&Egrave; abbastanza evidente che le partizioni non devono sovrapporsi: un sistema
operativo non sarebbe felice se un altro sistema operativo installato
sulla stessa macchina gli sovrascrivesse informazioni importanti a causa
della sovrapposizione delle due partizioni. Non ci dovrebbe neanche essere
dello spazio vuoto tra una partizione e un'altra, in quanto anche se non
comporterebbe alcun danno, significherebbe sprecare prezioso spazio su disco
lasciandolo inutilizzato.
<P>Un disco non ha bisogno di essere completamente partizionato. Potete
decidere di lasciare un po' di spazio alla fine senza assegnarlo ad alcun
sistema operativo e, successivamente, quando sar&agrave; chiaro quale
userete per la maggior parte del tempo, potrete partizionare
questo spazio vuoto rimanente e metterci sopra un file system.
<P>Le partizioni non possono essere spostate n&eacute; ridimensionate senza
distruggere il file system che contengono. Il ripartizionamento quindi
comporta il backup e il ripristino di tutti i file system coinvolti nel
ripartizionamento. In effetti, &egrave; molto facile fare dei pasticci durante il
ripartizionamento, cos&igrave; dovreste in ogni caso fare una copia di backup di
tutto prima ancora di usare cose come <CODE>fdisk</CODE>.
<P>Beh, veramente alcuni tipi di partizione che contengono alcuni tipi di file
system <EM>possono</EM> essere divisi in due senza alcuna perdita di dati
(se siete fortunati). Per esempio, esiste un programma chiamato ``fips'' per
dividere le partizioni MS-DOS in due per far spazio a una partizione Linux
senza dover reinstallare MS-DOS. In ogni caso, non andreste a maneggiare
queste cose senza aver prima fatto un accurato e completo backup, vero?
<P>
<H2>2.1 I backup sono importanti</H2>

<P>I nastri sono molto utili per fare i backup. Sono veloci, affidabili e
facili da usare, quindi potrete effettuare il backup spesso, preferibilmente
in modo automatico e senza disagi.
<P>Parlando di cassette: quello di cui sto parlando sono i veri nastri, non
quelle porcherie pilotate dal controller dei dischetti. Tenete in
considerazione SCSI: Linux lo supporta in modo nativo. Non occorre caricare
driver ASPI, non sprecate preziosa HMA e una volta che l'adattatore SCSI &egrave;
installato, potete attaccarci anche dischi, nastri, scanner e CD-ROM. Niente
pi&ugrave; indirizzi I/O, acrobazie con IRQ n&eacute; master/slave e livelli PIO da
abbinare.
<P>In aggiunta: un buon adattatore SCSI fornisce alte prestazioni di I/O senza
occupare troppo la CPU. Anche durante una pesante attivit&agrave; di disco, avrete
tempi di risposta molto buoni. Se intendete usare un sistema Linux come un
server USENET o se volete entrare nel mercato degli ISP, non pensate
nemmeno di impostare un sistema senza SCSI.
<P>
<P>
<P>
<H2>2.2 Numeri e nomi di device</H2>

<P>
<P>Il numero di partizioni di un sistema basato su Intel &egrave; stato limitato
fin dall'inizio: la tabella delle partizioni era installata come parte del
settore di boot e aveva spazio solo per 4 partizioni. Queste partizioni
adesso sono chiamate partizioni primarie. Quando divenne chiaro che la gente
voleva pi&ugrave; partizioni nei loro sistemi, sono state inventate le partizioni
logiche. Il loro numero non &egrave; limitato: ogni partizione logica contiene un
puntatore alla prossima, cos&igrave; da avere una catena potenzialmente illimitata
di partizioni.
<P>Per ragioni di compatibilit&agrave;, lo spazio occupato da tutte le partizioni
logiche deve essere tenuto in conto. Se state usando partizioni logiche, una
partizione primaria viene marcata come ``partizione estesa'' e il suo blocco
di inizio e di fine segnano l'area occupata dalle partizioni logiche in essa
contenute. Questo implica che lo spazio assegnato a tutte le partizioni
logiche deve essere contiguo. Ci pu&ograve; essere solo una partizione estesa per
disco: nessun programma <CODE>fdisk</CODE> pu&ograve; creare pi&ugrave; di una partizione
estesa.
<P>Linux non pu&ograve; gestire pi&ugrave; di un limitato numero di partizioni per disco.
Cos&igrave; in Linux potrete avere 4 partizioni primarie (3 delle quali usabili, se
state usando partizioni logiche) e al massimo 15 partizioni totali su un
disco SCSI (63 in tutto su un disco IDE)
<P>In Linux, le partizioni sono rappresentate come file di device. Un file di
device &egrave; un file con tipo c (che sta per ``carattere'', cio&egrave; device che non
usano un buffer di cache) oppure b (ossia device a ``blocchi'', che passano
dal buffer di cache). In Linux, tutti i dischi sono rappresentati solo come
device a blocchi. A differenza di altri unix, Linux non offre ``pure''
versioni a caratteri dei dischi e delle loro partizioni.
<P>La sola cosa importante con un file di device sono il suo numero primario e
secondario, visualizzato invece delle dimensioni del file:
<P>
<BLOCKQUOTE><CODE>
<HR>
<PRE>
$ ls -l /dev/hda
brw-rw----   1 root     disk       3,   0 Jul 18  1994 /dev/hda
                                   ^    ^
                                   |    numero secondario di device
                                   numero primario di device
</PRE>
<HR>
</CODE></BLOCKQUOTE>
<P>Quando un file di device viene aperto, il numero primario indica quale
driver viene usato per effettuare l'operazione di input/output. Alla
chiamata viene passato il numero secondario come parametro e spetta al
driver l'interpretazione del numero secondario. Di solito la documentazione
del driver riporta come viene usato il numero secondario. Per i dischi IDE,
questa documentazione &egrave; in <CODE>/usr/src/linux/Documentation/ide.txt</CODE>. Per
i dischi SCSI, ci si aspetterebbe questa documentazione in
<CODE>/usr/src/linux/Documentation/scsi.txt</CODE>, ma non c'&egrave;. Per accertarsene,
occorrerebbe leggere il sorgente del driver,
(<CODE>/usr/src/linux/driver/scsi/sd.c:184-196</CODE>). Fortunatamente, c'&egrave; la
lista dei numeri e dei nomi di device curata da Peter Anvin in
<CODE>/usr/src/linux/Documentation/devices.txt</CODE>; vedere le voci per i device
a blocchi, primario 3, 22, 33, 34 per i dischi IDE e primario 8 per gli
SCSI. Il numero primario e secondario sono un byte ognuno ed &egrave; per questo
che il numero di partizioni per disco &egrave; limitato.
<P>Per convenzione, i file di device hanno determinati nomi e molti programmi
di sistema riconoscono questi nomi essendo stati compilati nel loro codice.
Si aspettano che i vostri dischi IDE si chiamino <CODE>/dev/hd*</CODE> e i
dischi SCSI <CODE>/dev/sd*</CODE>. I dischi sono numerati come a, b, c e cos&igrave;
via, quindi <CODE>/dev/hda</CODE> &egrave; il primo disco IDE e <CODE>/dev/sda</CODE> il
primo disco SCSI. Entrambi rappresentano interi dischi, iniziando dal primo
blocco. Scrivere su questi device con il programma sbagliato distrugger&agrave; il
master boot loader e la tabella delle partizioni dei dischi, rendendo cos&igrave;
tutti i dati inutilizzabili o facendo s&igrave; che il sistema non possa pi&ugrave; eseguire il
boot. Siate sicuri di quello che fate e, ripeto, copiate su backup prima di
farlo.
<P>Le partizioni primarie su un disco sono numerate 1, 2, 3 e 4. Cos&igrave;
<CODE>/dev/hda1</CODE> &egrave; la prima partizione primaria del primo disco IDE
eccetera. Le partizioni logiche hanno numeri che vanno da 5 in su, cos&igrave;
<CODE>/dev/sdb5</CODE> &egrave; la prima partizione logica del secondo disco SCSI.
<P>Ogni voce nella tabella delle partizioni &egrave; contrassegnata da un blocco di
inizio, uno di fine, e un tipo. Il tipo &egrave; un codice numerico (a un byte) che
indica l'appartenenza di quella partizione a un determinato sistema
operativo. Per la gioia dei consulenti informatici i codici dei tipi di
partizione non sono del tutto univoci, cio&egrave; esiste la probabilit&agrave; che due
sistemi operativi usino lo stesso codice.
<P>Linux riserva per le sue partizioni di swap il codice 0x82, e lo 0x83 per il
filesystem ``nativo'' (che &egrave; ext2 per quasi tutti). L'oramai sorpassato e una
volta famoso Linux/Minix filesystem usava il codice 0x81. OS/2 segna le sue
partizioni con il tipo 0x07, lo stesso del NTFS di Windows NT. MS-DOS usa
diversi codici per i vari tipi di filesytem FAT: 0x01, 0x04 e 0x06. DR-DOS
usava il codice 0x81 per indicare partizioni FAT protette, creando una
ambiguit&agrave; con Linux/Minix, ma ormai n&eacute; Linux/Minix, n&eacute; DR-DOS vengono
largamente usati. Per finire, le partizioni estese che fungono da
contenitori per le partizioni logiche hanno codice 0x05.
<P>Le partizioni vengono create e cancellate con il programma <CODE>fdisk</CODE>.
Ogni sistema operativo che si rispetti viene fornito con una versione di
<CODE>fdisk</CODE> e per tradizione si chiama proprio <CODE>fdisk</CODE> (oppure
<CODE>FDISK.EXE</CODE>) in quasi tutti i sistemi operativi. Qualcuno di questi
<CODE>fdisk</CODE>, come ad esempio quello del DOS, mostra qualche limitazione
quando ha a che fare con partizioni di altri sistemi operativi. Queste
limitazioni includono l'impossibilit&agrave; di gestire altri tipi di
codice, l'impossibilit&agrave; di trattare numeri cilindro superiori a 1024, e
l'impossibilit&agrave; di creare o gestire partizioni che non terminano esattamente
su un cilindro. Per esempio, fdisk di MS-DOS non pu&ograve; cancellare le
partizioni NTFS, quello di OS/2 &egrave; conosciuto per ``correggere'' senza
preavviso le partizioni create con fdisk di Linux che non terminano
esattamente sul cilindro e entrambi, sia quello DOS sia quello OS/2, hanno
problemi con i dischi che risultano avere pi&ugrave; di 1024 cilindri (vedere il
Mini-HOWTO ``Large disk'' per i dettagli)
<P>
<H2><A NAME="s3">3. Di quali partizioni ho bisogno?</A></H2>

<H2>3.1 Di quante partizioni ho bisogno?</H2>

<P>
<P>Bene, allora quali partizioni vi servono? Tanto per cominciare alcuni
sistemi operativi non riescono a fare il boot dalle partizioni logiche, per
motivi che esulano dalla comprensione di un sano di mente. Cos&igrave;
probabilmente vorrete riservare le partizioni primarie come partizioni di
boot per MS-DOS, OS/2 e Linux o cos'altro state usando. Ricordate anche che una
partizione estesa non &egrave; altro che una partizione primaria, che funziona da
contenitore per il resto del disco suddiviso in partizioni logiche.
<P>L'avvio (boot) di un sistema operativo &egrave; una operazione che si svolge in
modalit&agrave; reale, coinvolgendo cos&igrave; il BIOS e la limitazione dei 1024
cilindri. Probabilmente quindi piazzerete tutte le vostre partizioni
bootabili nei primi 1024 cilindri del disco, giusto per evitare problemi.
Ripeto, leggete il Mini-HOWTO ``Large disk'' per i dettagli salienti.
<P>Per installare Linux, avrete bisogno di almeno una partizione. Se il kernel
viene caricato da questa partizione (per esempio da LILO), essa deve essere
leggibile dal BIOS. Se state usando altri sistemi per caricare il kernel (da
un disco di boot o da MS-DOS con il programma LOADLIN.EXE) allora la
partizione pu&ograve; essere ovunque. In ogni caso questa partizione avr&agrave; il tipo
0x83 ``Linux nativa''.
<P>Il vostro sistema avr&agrave; bisogno di spazio di swap. A meno che vogliate
paginare su file, avrete bisogno di una partizione di swap dedicata. Dal
momento che solo il kernel di Linux accede a questa partizione, e il kernel non
ha limitazioni legate al BIOS, la partizione di swap pu&ograve; essere posizionata
ovunque. Io consiglio di usare una partizione logica (/dev/?d?5 e
superiori). Le partizioni dedicate allo swap hanno codice tipo 0x82 ``Linux
Swap''.
<P>Questi sono i requisiti minimi. Pu&ograve; essere utile creare altre partizioni per
Linux. Continuate a leggere.
<P>
<H2>3.2 Quanto deve essere grande lo spazio di swap?</H2>

<P>Se avete deciso di usare una partizione di swap dedicata, il che &egrave;
generalmente una Buona Idea [tm], seguite queste indicazioni per stimare la
sua dimensione:
<P>
<UL>
<LI> In Linux la RAM e lo spazio di swap si sommano (questo anche in tutti
gli altri Unix). Per esempio, se avete 8 MB di RAM e 12 MB di swap, in
totale avete 20 MB di memoria virtuale.
</LI>
<LI> Quando dimensionate lo spazio di swap, tenete conto che dovreste
avere almeno 16 MB di memoria virtuale totale. Cos&igrave; con 4 MB di RAM
considerate un minimo di 12 MB di swap, per 8 MB almeno altri 8 di swap.
</LI>
<LI> In Linux, una partizione di swap non pu&ograve; essere pi&ugrave; grande di 128 MB.
Cio&egrave;, in effetti la partizione pu&ograve; anche essere pi&ugrave; grande, ma lo spazio in
pi&ugrave; non viene utilizzato. Se volete pi&ugrave; di 128 MB di swap, dovete creare pi&ugrave;
di una partizione di swap.
</LI>
<LI> Quando dimensionate lo spazio di swap, ricordate che troppo swap pu&ograve;
essere del tutto inutile.

Ogni processo ha uno ``spazio di lavoro''. &Egrave; una serie di pagine in memoria
a cui il processore acceder&agrave; nell'immediato futuro. Linux tenta di
anticipare questi accessi in memoria (assumendo che le pagine usate pi&ugrave; di
recente saranno usate ancora prossimamente) e cerca di tenere queste pagine
in RAM se possibile. Se il programma ha una buona ``localit&agrave;'', questa
assunzione risulter&agrave; vera e l'algoritmo di predizione far&agrave; il suo lavoro.

Mantenere uno spazio di lavoro in memoria &egrave; possibile solo se c'&egrave; abbastanza
memoria. Se avete troppi processi attivi, il kernel &egrave; obbligato a spostare
su disco alcune pagine che verranno ricaricate dopo poco tempo (forzando lo
swap di alcune pagine di altri processi). Di solito questo comporta un
pesante incremento nell'attivit&agrave; di paginazione e una sostanziale perdita di
prestazioni. Una macchina in questo stato va in ``trashing'', oppure si dice
che si ``siede'', o ``swappa'' (per i lettori di lingua tedesca, ``dreschen'', ``schlagen'',
``haemmern'' e non ``muellen'').

Su una macchina ``seduta'' i processi girano sostanzialmente da disco e non in
RAM. Le prestazioni si abbasseranno nella misura approssimativa del rapporto
che c'&egrave; tra il tempo di accesso alla memoria e il tempo di accesso del
disco.

Una vecchia regola di massima ai tempi del PDP e del Vax era che la
grandezza dello spazio di lavoro di un programma &egrave; circa il 25% della sua
dimensione. Pertanto probabilmente &egrave; inutile avere uno spazio di swap
superiore al triplo della RAM.

Tenete a mente che questa &egrave; solo una regola di massima. &Egrave; facile incontrare
casi dove i programmi hanno bisogno di uno spazio di lavoro estremamente
ampio o molto piccolo. Per esempio, un programma di simulazione che accede
a un grosso numero di dati in maniera pseudocasuale, ha pochissima localit&agrave;
nel suo spazio di dati, pertanto lo spazio di lavoro sar&agrave; molto ampio.

D'altra parte, un xv con tanti JPEG aperti contemporaneamente, tutti
iconizzati tranne uno, avrebbe un segmento dati molto grande. Ma le
trasformazioni vengono eseguite su una singola immagine, infatti la maggior
parte della memoria occupata da xv non viene mai toccata. Lo stesso per un
editor con tante finestre aperte, ma solo una di loro viene modificata alla
volta. Questi programmi hanno, se sono progettati correttamente, una
localit&agrave; molto alta e la maggior parte del loro spazio di lavoro pu&ograve; essere
paginata su disco senza un grosso impatto sulle prestazioni.

Si potrebbe sospettare che quel 25%, derivato dall'era dei programmi a linea
di comando non sia pi&ugrave; valido per i programmi GUI moderni che agiscono su
documenti multipli, ma non conosco nessun documento pi&ugrave; recente che
tenti di verificare questo indice.</LI>
</UL>
<P>Cos&igrave; per una configurazione con 16 MB di RAM, non serve swap per una
configurazione minima e pi&ugrave; di 48 MB di swap sono probabilmente inutili. La
quantit&agrave; esatta dipende dalle applicazioni che fate girare sulla macchina
(cosa vi aspettavate?).
<P>
<H2>3.3 Dove dovrei mettere lo spazio di swap?</H2>

<P>
<P>
<UL>
<LI> La meccanica &egrave; lenta, l'elettronica veloce.

I dischi fissi moderni hanno molte testine. Il passaggio tra testine della
stessa traccia &egrave; rapido, poich&eacute; &egrave; elettronico.
Passare da traccia a traccia &egrave; lento, perch&eacute; significa far muovere
fisicamente qualcosa.

Cos&igrave; se avete un disco con tante testine e uno con meno e per entrambi gli
altri parametri sono identici, il disco con pi&ugrave; testine sar&agrave; pi&ugrave; veloce.

Separare lo swap in due e metterlo su entrambi i dischi sarebbe ancora
meglio, penso.
</LI>
<LI>I vecchi dischi hanno lo stesso numero di settori su tutte le tracce. Con
questi dischi sarebbe meglio mettere lo swap nel mezzo del disco,
ottimizzando il caso che la testina si muova da una traccia casuale verso
l'area di swap.
</LI>
<LI>I dischi pi&ugrave; recenti usano lo ZBR (zone bit recording). Hanno pi&ugrave; settori
sulle tracce esterne. Con un numero costante di giri al minuto, questo
comporta migliori prestazioni sulle tracce esterne che su quelle interne.
Meglio mettere lo swap sulle tracce pi&ugrave; veloci.
</LI>
<LI>Naturalmente la testina non si muove in maniera casuale. Se avete lo spazio
di swap nel mezzo di un disco tra una partizione ``home'' molto occupata e una
partizione di archivio usata molto poco, sar&agrave; meglio avere lo swap nel mezzo
della partizione home per accorciare i movimenti della testina. Sarebbe ancora
meglio spostare lo swap su un altro disco altrimenti inutilizzato.
</LI>
</UL>
<P><B>In breve:</B> Mettete lo swap sul disco pi&ugrave; veloce con pi&ugrave; testine che non
sia occupato per dell'altro. Se avete pi&ugrave; di un disco: dividete lo swap e
spezzettatelo fra tutti i dischi e/o fra pi&ugrave; controller.
<P><B>Ancora meglio:</B> Comprate altra RAM.
<P>
<H2>3.4 Alcune note sui file system e la frammentazione</H2>

<P>
<P>Lo spazio su disco &egrave; gestito dal sistema operativo in blocchi e frammenti di
blocchi. In ext2, i frammenti e i blocchi devono avere la stessa dimensione,
quindi possiamo restringere la nostra discussione ai blocchi.
<P>I file possono essere di qualsiasi dimensione, perci&ograve; possono non terminare
sul margine di un blocco. Cos&igrave; per ogni file una parte dell'ultimo blocco
viene sprecata. Assumendo che la dimensione dei file sia casuale, c'&egrave;
approssimativamente mezzo blocco sprecato per ogni file sul vostro disco.
Tanenbaum nel suo libro ``Operating Systems'' chiama questo evento
``frammentazione interna''.
<P>Potete intuire il numero di file sul disco dal numero di i-node allocati. Sul
mio disco
<P>
<BLOCKQUOTE><CODE>
<HR>
<PRE>
# df -i
Filesystem           Inodes   IUsed   IFree  %IUsed Mounted on
/dev/hda3              64256   12234   52022    19%  /
/dev/hda5              96000   43058   52942    45%  /var
</PRE>
<HR>
</CODE></BLOCKQUOTE>
<P>Ci sono circa 12000 file su <CODE>/</CODE> e circa 44000 file su <CODE>/var</CODE>.
Con dei blocchi grandi 1 KB, circa 6 + 22 = 28 MB di spazio su disco
sono sprecati nei blocchi di coda dei file. Se avessi scelto una dimensione
del blocco di 4 KB, avrei sprecato uno spazio 4 volte superiore.
<P>Tuttavia il trasferimento dati &egrave; pi&ugrave; veloce per blocchi di dati grossi e
contigui. &Egrave; per questo che ext2 prova a riservare spazio in unit&agrave; di 8
blocchi contigui per i file in crescita. Lo spazio riservato e non
utilizzato viene rilasciato quando il file viene chiuso, pertanto non c'&egrave;
spreco di spazio.
<P>Sistemare blocchi in modo non consecutivo &egrave; un male per le prestazioni,
poich&eacute; l'accesso ai file avviene in maniera sequenziale. Il sistema
operativo viene forzato a ripetere l'accesso al disco, e il disco deve
spostare la testina. Questo viene chiamato ``frammentazione esterna'' o
semplicemente ``frammentazione'' ed &egrave; un problema comune con i filesystem DOS.
<P>Ext2 ha diverse strategie per evitare la frammentazione esterna. Normalmente
la frammentazione non &egrave; un grosso problema per ext2, nemmeno sulle
partizioni usate pesantemente come uno spool di news USENET. Anche se c'&egrave; un
programma di deframmentazione per il filesystem ext2, nessuno lo usa e non &egrave;
aggiornato con la versione corrente di ext2. Usatelo se volete, ma fatelo a
vostro rischio e pericolo.
<P>Il filesystem MS-DOS &egrave; ben conosciuto per la sua patologica gestione dello
spazio disco. Insieme con l'irrisiorio buffer di cache usato da MS-DOS, gli
effetti della frammentazione sulle prestazioni sono molto rilevanti. Gli
utenti DOS sono abituati a deframmentare i dischi ogni poche settimane e
qualcuno ha addirittura sviluppato alcune credenze rituali a riguardo della
frammentazione. Nessuna di queste abitudini dovrebbe essere trasportata su
Linux ed ext2. I file system nativi di Linux non hanno bisogno di
deframmentazione durante il normale utilizzo, cio&egrave; ogni situazione con
almeno il 5% di spazio libero su disco.
<P>Il file system MS-DOS &egrave; famoso anche per sprecare grosse porzioni di disco a
causa della frammentazione interna. Per partizioni pi&ugrave; grandi di 256 MB, la
dimensione dei blocchi diventa tale che non sono pi&ugrave; efficaci (questo &egrave;
stato corretto in qualche maniera con FAT32)
<P>ext2 non vi costringe a scegliere grossi blocchi per grossi file system,
eccetto per file sistem enormi dagli 0.5 TB (1 TB equivale a 1024 GB) in su,
quando i blocchi piccoli diventano meno efficienti. Quindi a differenza del
DOS non c'&egrave; bisogno di dividere grossi dischi in molte partizioni per
mantenere piccola la dimensione del blocco. Usate la dimensione di default
di 1 KB se possibile. Potete sperimentare con una dimensione di 2 KB per
alcune partizioni, ma aspettatevi di incontrare qualche raro bug: la maggior
parte della gente usa il default.
<P>
<H2>3.5 Il ciclo di vita dei file e le sequenze di backup come criterio di partizionamento</H2>

<P>
<P>Con ext2, le decisioni di partizionamento dovrebbero essere governate da
considerazioni di backup e dalla diversificazione dei tempi di vita dei
differenti tipi di file per evitare la frammentazione esterna.
<P>I file hanno dei tempi di vita. Dopo che un file &egrave; stato creato, rimarr&agrave; per
un certo tempo nel sistema e poi verr&agrave; rimosso. I cicli di vita dei file
variano molto nel filesystem e sono parzialmente dipendenti dal percorso del
file. Per esempio, i file in <CODE>/bin</CODE>, <CODE>/sbin</CODE>,
<CODE>/usr/sbin</CODE>, <CODE>/usr/bin</CODE> e directory simili hanno tipicamente una
vita molto lunga: molti mesi e oltre. I file in <CODE>/home</CODE> hanno una
vita media: circa qualche settimana. I file in <CODE>/var</CODE> hanno vita
breve: quasi nessuno in <CODE>/var/spool/news</CODE> rester&agrave; per pi&ugrave; di qualche
giorno, mentre in <CODE>/var/spool/lpd</CODE> i file durano pochi minuti.
<P>Per il backup &egrave; utile che la quantit&agrave; di dati salvati nel backup giornaliero
sia minore della capacit&agrave; del singolo dispositivo di backup. Un backup
giornaliero pu&ograve; essere completo o incrementale.
<P>Potete decidere di tenere la dimensione delle partizioni abbastanza piccola
da farle entrare completamente su un singolo backup (scegliete backup
giornalieri completi). In ogni caso una partizione dovrebbe essere
abbastanza breve che i cambiamenti da un giorno all'altro (tutti i file
modificati) stiano su un solo backup (scegliete il backup incrementale e
cambiate dispositivo di backup per il salvataggio totale settimanale o
mensile - non &egrave; possibile una operazione automatica).
<P>La vostra strategia di backup dipende da quella decisione.
<P>Quando progettate di comprare spazio su disco, ricordate di mettere da parte
dei soldi per il backup! I dati non salvati non valgono nulla! I costi per
riprodurli sono molto maggiori di quelli per salvarli per chiunque!
<P>Per ragioni di prestazioni, &egrave; utile tenere i file con diversi tempi di vita su
differenti partizioni. In questo modo i file con vita breve sulla partizione
delle news possono anche essere molto frammentati, ma questo non avr&agrave;
impatto sulle prestazioni della partizione <CODE>/</CODE> o <CODE>/home</CODE>.
<P>
<P>
<H2><A NAME="s4">4. Un esempio</A></H2>

<H2>4.1 Un modello raccomandato per principianti ambiziosi</H2>

<P>
<P>Un modello comune crea le partizioni <CODE>/</CODE>, <CODE>/home</CODE> e <CODE>/var</CODE>
come discusso in precedenza. Cos&igrave; &egrave; semplice installare, mantenere e la
distinzione &egrave; abbastanza buona da evitare effetti indesiderati a causa dei
differenti tempi di vita. Si adatta bene a un modello di backup: quasi
nessuno si preoccupa di salvare gli spool USENET, e solo qualche file in
<CODE>/var</CODE> vale la pena di essere salvato (mi viene in mente
/var/spool/mail). D'altra parte, <CODE>/</CODE> cambia raramente e pu&ograve; venire
salvata su richiesta (dopo cambiamenti di configurazione) ed &egrave; abbastanza
piccola da stare nei moderni sistemi di backup come un backup completo
(tipicamente dai 250 ai 500 MB, dipende dal software installato).
<CODE>/home</CODE> contiene importanti dati degli utenti e dovrebbe essere
salvata in modo giornaliero. Qualche installazione ha delle partizioni
<CODE>/home</CODE> molto grandi e si devono usare i backup incrementali.
<P>Alcuni sistemi mettono <CODE>/tmp</CODE> su una partizione separata, altri
creano un link simbolico a <CODE>/var/tmp</CODE> per ottenere lo stesso effetto
(notare che questo pu&ograve; influire sul modo utente singolo, dove <CODE>/var</CODE>
non sar&agrave; disponibile e nel sistema non ci sar&agrave; <CODE>/tmp</CODE> finch&eacute; non
ne creerete una o monterete <CODE>/var</CODE> manualmente) oppure la mettono su
un disco RAM (Solaris, ad esempio, lo fa). Questo lascia <CODE>/tmp</CODE>
separato da <CODE>/</CODE>, che &egrave; una buona idea.
<P>Questo modello &egrave; conveniente per aggiornamenti o reinstallazioni: salvate i
vostri file di configurazione (o l'intero ramo <CODE>/etc</CODE>) in qualche
directory <CODE>/home</CODE>, cancellate <CODE>/</CODE>, reinstallate e ripristinate
le vecchie configurazioni dalla directory di salvataggio in <CODE>/home</CODE>.
<P>
<H2><A NAME="s5">5. Come ho fatto sulla mia macchina</A></H2>

<P>
<P>Avevo un vecchio 386/40 che giaceva sugli scaffali, l'avevo abbandonato due
anni fa perch&eacute; non potevo pi&ugrave; utilizzarlo. Pianificavo di trasformarlo un un
piccolo server (senza X-Window) per la mia rete casalinga.
<P>Ecco come ho fatto: ho preso quel 386 e ci ho messo 16 MB di RAM, ho
aggiunto un disco EIDE economico, il pi&ugrave; piccolo che ho trovato (800 MB) e
una scheda di rete Ethernet. Ho messo anche una vecchia Hercules, dato che
avevo ancora un monitor. Ci ho installato Linux e i server NFS, SMB, HTTP,
LDP/LPR, NNTP oltre che il mail router e il server POP3. Con l'aggiunta di
una scheda ISDN la macchina divenne il mio router TCP/IP con firewall.
<P>La maggior parte dello spazio su disco andava nel ramo <CODE>/var</CODE>,
<CODE>/var/spool/mail</CODE>, <CODE>/var/spool/news</CODE> e
<CODE>/var/httpd/html</CODE>. Ho messo <CODE>/var</CODE> su una grossa partizione
separata. Ci saranno pochi utenti su questa macchina, perci&ograve; non ho creato
partizioni home e monto <CODE>/home</CODE> da qualche altra workstation via NFS.
<P>Linux senza X pi&ugrave; qualche utility installata localmente sta comodo in 250 MB
di partizione <CODE>/</CODE>. La macchina ha 16 MB di RAM, ma fa girare molti
server. Servono minimo altri 16 MB di swap, meglio 32 MB. Non abbiamo
problemi di spazio, perci&ograve; ne ho messi 32. Per motivi sentimentali ho
lasciato 20 MB di partizione MS-DOS. Avendo deciso di importare
<CODE>/home</CODE> da un'altra macchina, i rimanenti 500 e oltre MB andranno in
<CODE>/var</CODE>. Sono pi&ugrave; che sufficienti per un utilizzo domestico di
scarico dei newgroup USENET.
<P>Abbiamo
<P>
<BLOCKQUOTE><CODE>
<HR>
<PRE>
Device     Montato su                      Dimensioni
/dev/hda1  /dos_c                           25 MB
/dev/hda2  - (Spazio swap)                  32 MB
/dev/hda3  /                               250 MB
/dev/hda4  - (Partizione Estesa)           500 MB
/dev/hda5  /var                            500 MB

homeserver:/home /home                     1.6 GB
</PRE>
<HR>
</CODE></BLOCKQUOTE>
<P>I salvataggi vengono effettuati via rete usando il nastro su
<CODE>homeserver</CODE>. Poich&eacute; &egrave; stato tutto installato da CD-ROM, devo salvare
solo qualche file di configurazione in <CODE>/etc</CODE>, i miei *.tgz
personalizzati installati localmente da <CODE>/root/Source/Installed</CODE> e
<CODE>/var/spool/mail</CODE>, assieme a <CODE>/var/httpd/html</CODE>. Copio questi
file in una directory dedicata <CODE>/home/backmeup</CODE> su
<CODE>homeserver</CODE> ogni notte, per essere prelevati dalla procedura di
backup ordinario di homeserver.
<P>
</BODY>
</HTML>