vai alla Homepage di Apogeonline

 



Cos'è OpenPress
Glossario
Linux-FAQ
Documenti:

Open Source Definition

GNU General Public License

La cattedrale e il bazaar

Colonizzare la noosfera

Il calderone magico


Libri:

Italian crackdown

Open Sources

MediaMorfosi

GTK+/GNOME
sviluppo applicazioni


Telematica per la pace

Linux HOWTO: Installazione e configurazione

Linux HOWTO: Networking


Risorse
Feedback
vai alla Homepage di Apogeo Editore

Vai alla homepage di OpenPress

Linux HOWTO - Installazione e configurazione


Di quali partizioni ho bisogno?

Di quante partizioni ho bisogno?

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.

Quanto deve essere grande lo spazio di swap?

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?).

Dove dovrei mettere lo spazio di swap?

  • 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.

Alcune note sui file system e la frammentazione

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.

Il ciclo di vita dei file e le sequenze di backup come criterio di partizionamento

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.


Copyright © 1995-2000 Apogeo srl, Milano