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ì
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 è altro che una partizione primaria, che funziona da
contenitore per il resto del disco suddiviso in partizioni logiche.
L'avvio (boot) di un sistema operativo è una operazione che si svolge in
modalità reale, coinvolgendo così 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.
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ò essere ovunque. In ogni caso questa partizione avrà il tipo
0x83 ``Linux nativa''.
Il vostro sistema avrà 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ò 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''.
Questi sono i requisiti minimi. Può essere utile creare altre partizioni per
Linux. Continuate a leggere.
Se avete deciso di usare una partizione di swap dedicata, il che è
generalmente una Buona Idea [tm], seguite queste indicazioni per stimare la
sua dimensione:
- 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.
- Quando dimensionate lo spazio di swap, tenete conto che dovreste
avere almeno 16 MB di memoria virtuale totale. Così con 4 MB di RAM
considerate un minimo di 12 MB di swap, per 8 MB almeno altri 8 di swap.
- In Linux, una partizione di swap non può essere più grande di 128 MB.
Cioè, in effetti la partizione può anche essere più grande, ma lo spazio in
più non viene utilizzato. Se volete più di 128 MB di swap, dovete creare più
di una partizione di swap.
- Quando dimensionate lo spazio di swap, ricordate che troppo swap può
essere del tutto inutile.
Ogni processo ha uno ``spazio di lavoro''. È una serie di pagine in memoria
a cui il processore accederà nell'immediato futuro. Linux tenta di
anticipare questi accessi in memoria (assumendo che le pagine usate più di
recente saranno usate ancora prossimamente) e cerca di tenere queste pagine
in RAM se possibile. Se il programma ha una buona ``località'', questa
assunzione risulterà vera e l'algoritmo di predizione farà il suo lavoro.
Mantenere uno spazio di lavoro in memoria è possibile solo se c'è abbastanza
memoria. Se avete troppi processi attivi, il kernel è 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à 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'è 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 è circa il 25% della sua
dimensione. Pertanto probabilmente è inutile avere uno spazio di swap
superiore al triplo della RAM.
Tenete a mente che questa è solo una regola di massima. È 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à
nel suo spazio di dati, pertanto lo spazio di lavoro sarà 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à molto alta e la maggior parte del loro spazio di lavoro può 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ù valido per i programmi GUI moderni che agiscono su
documenti multipli, ma non conosco nessun documento più recente che
tenti di verificare questo indice.
Così per una configurazione con 16 MB di RAM, non serve swap per una
configurazione minima e più di 48 MB di swap sono probabilmente inutili. La
quantità esatta dipende dalle applicazioni che fate girare sulla macchina
(cosa vi aspettavate?).
- La meccanica è lenta, l'elettronica veloce.
I dischi fissi moderni hanno molte testine. Il passaggio tra testine della
stessa traccia è rapido, poiché è elettronico.
Passare da traccia a traccia è lento, perché significa far muovere
fisicamente qualcosa.
Così se avete un disco con tante testine e uno con meno e per entrambi gli
altri parametri sono identici, il disco con più testine sarà più veloce.
Separare lo swap in due e metterlo su entrambi i dischi sarebbe ancora
meglio, penso.
- 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.
- I dischi più recenti usano lo ZBR (zone bit recording). Hanno più 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ù veloci.
- 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à 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.
In breve: Mettete lo swap sul disco più veloce con più testine che non
sia occupato per dell'altro. Se avete più di un disco: dividete lo swap e
spezzettatelo fra tutti i dischi e/o fra più controller.
Ancora meglio: Comprate altra RAM.
Lo spazio su disco è 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.
I file possono essere di qualsiasi dimensione, perciò possono non terminare
sul margine di un blocco. Così per ogni file una parte dell'ultimo blocco
viene sprecata. Assumendo che la dimensione dei file sia casuale, c'è
approssimativamente mezzo blocco sprecato per ogni file sul vostro disco.
Tanenbaum nel suo libro ``Operating Systems'' chiama questo evento
``frammentazione interna''.
Potete intuire il numero di file sul disco dal numero di i-node allocati. Sul
mio disco
# df -i
Filesystem Inodes IUsed IFree %IUsed Mounted on
/dev/hda3 64256 12234 52022 19% /
/dev/hda5 96000 43058 52942 45% /var
cm
Ci sono circa 12000 file su
/ e circa 44000 file su
/var.
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.
Tuttavia il trasferimento dati è più veloce per blocchi di dati grossi e
contigui. È per questo che ext2 prova a riservare spazio in unità 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'è
spreco di spazio.
Sistemare blocchi in modo non consecutivo è un male per le prestazioni,
poiché 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 è un problema comune con i filesystem DOS.
Ext2 ha diverse strategie per evitare la frammentazione esterna. Normalmente
la frammentazione non è un grosso problema per ext2, nemmeno sulle
partizioni usate pesantemente come uno spool di news USENET. Anche se c'è un
programma di deframmentazione per il filesystem ext2, nessuno lo usa e non è
aggiornato con la versione corrente di ext2. Usatelo se volete, ma fatelo a
vostro rischio e pericolo.
Il filesystem MS-DOS è 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è ogni situazione con
almeno il 5% di spazio libero su disco.
Il file system MS-DOS è famoso anche per sprecare grosse porzioni di disco a
causa della frammentazione interna. Per partizioni più grandi di 256 MB, la
dimensione dei blocchi diventa tale che non sono più efficaci (questo è
stato corretto in qualche maniera con FAT32)
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'è 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.
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.
I file hanno dei tempi di vita. Dopo che un file è stato creato, rimarrà per
un certo tempo nel sistema e poi verrà rimosso. I cicli di vita dei file
variano molto nel filesystem e sono parzialmente dipendenti dal percorso del
file. Per esempio, i file in /bin, /sbin,
/usr/sbin, /usr/bin e directory simili hanno tipicamente una
vita molto lunga: molti mesi e oltre. I file in /home hanno una
vita media: circa qualche settimana. I file in /var hanno vita
breve: quasi nessuno in /var/spool/news resterà per più di qualche
giorno, mentre in /var/spool/lpd i file durano pochi minuti.
Per il backup è utile che la quantità di dati salvati nel backup giornaliero
sia minore della capacità del singolo dispositivo di backup. Un backup
giornaliero può essere completo o incrementale.
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 è possibile una operazione automatica).
La vostra strategia di backup dipende da quella decisione.
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!
Per ragioni di prestazioni, è 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à
impatto sulle prestazioni della partizione / o /home.