Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Il filesystem ext3

Link copiato negli appunti

Il filesystem (FS) utilizzato di default fino ad ora da molte distribuzioni è stato l'ext2. La sua stabilità e velocità lo hanno reso nel corso del tempo una garanzia per i sistemi Linux. Negli ultimi anni però è entrato prepotentemente nella scena ReiserFS, un filesystem di tipo journaled. Per comprendere il funzionamento di un journaling filesystem è necessario però fare almeno un accenno alla struttura di un FS di questo tipo. Un filesystem è il modo in cui i nostri dati vengono organizzati, letti e scritti. L'organizzazione di questo dipende dalla sua struttura interna che è propria del FS. La struttura interna di organizzazione dei dati (data) viene chiamata meta-data.

La particolarità di ogni filesystem (e quindi le prestazioni) dipende perciò dalla struttura dei meta-data. Per ovvi motivi, la scrittura e la gestione dei meta-data non viene fatta direttamente. È tramite infatti un driver per il filesystem (gestito all'interno del kernel) che noi abbiamo la possibilità di interagire con i nostri dati. Questo driver per poter funzionare correttamente necessita che il filesystem risponda ai requisiti di coerenza e integrità richiesti. È per questo che ad ogni boot Linux avvia un programma chiamato fsck che ha lo scopo di controllare la consistenza e l'integrità dei filesystem che verranno "montati". Quando non si ha possibilità di spegnere il PC seguendo la normale procedura (per esempio dopo un black-out o un crash di sistema), senza cioè permettere che un filesystem venga prima "smontato", fsck controlla lo stato dell'FS, correggendo eventuali errori nei meta-data. Questa operazione su dischi solitamente richiede alcuni minuti di attesa. In alcuni casi, con dischi molto grandi (di centinaia di GB), si parla addirittura di ore. Su sistemi dove la disponibilità e l'affidabilità devono avere la priorità assoluta, questo è un problema non indifferente.

Per rimediare a questo problema si è introdotto il concetto di journal. Prima della scrittura vera e propria, un journalling filesystem si occupa di tenere un "giornale" dove vengono annotate le modifiche che si apprestano ad essere fatte sul filesystem. In questo caso, qualora avvenga una brusca interruzione, fsck si limiterà di controllare soltanto la parte di meta-data riguardante le ultime modifiche presenti nel jornal, con notevole risparmio di tempo (praticamente in tempi nulli).

Esempi di questo tipo di filesystem sono ReiserFS, scritto da Hans Reiser e incluso ufficialmente nel kernel Linux a partire dal 2.4.1, EXT3, del quale ci occuperemo in questo articolo, inserito ufficialmente nel kernel a partire dalla versione 2.4.15.

Sulle differenze tra i due non mi dilungo troppo. ReiserFS è un ottimo filesystem, è stato il primo ad essere adottato dalle distribuzioni, ma al contrario di ext3 non è compatibile con ext2. Ext3 risulta anche essere più affidabile (almeno in linea teorica) di ReiserFS, in quanto fa il journalling non solo dei meta-data ma anche dei dati stessi (è comunque possibile fare il journalling dei soli meta-data).

Personalmente consiglio ext3 per diversi motivi: oltre alla maggiore affidabilità (il "journal" tiene traccia delle modifiche garantendo i nostri dati) e "disponibilità" derivata dalla drastica riduzione dei tempi d'attesa in fase di boot in caso di crash, questo filesystem risulta essere più veloce rispetto al classico ext2. Questo perchè maneggiando file di grosse dimensioni, il journal stesso garantisce una miglior gestione nell'utilizzo dell'hard disk (lo spostamento delle testine viene ottimizzato).

Inoltre la conversione tra ext2 e ext3 avviene in pochi e semplici passaggi e i due filesystem sono completamente compatibili tra di loro. In particolare è possibile "montare" un FS ext3 su un sistema operativo che supporta ext2 (perdendo momentaneamente l'opzione di journaling).

USIAMO EXT3

Per chi volesse convertire i propri filesystem ext2 in ext3 (ext3 è praticamente un ext2 con l'opzione del journalling), i passi da compiere sono i seguenti:

1) Ricompilare il kernel e aggiornare util-linux e e2fsprogs.

Ext3 è supportato ufficialmente a partire dal kernel 2.4.15. è vivamente consigliato però non utilizzare il 2.4.15 perchè ha un pericoloso bug che può portare alla corruzione del filesystem, meglio usare il 2.4.16 che è l'ultimo disponibile. Se per qualche motivo vi troviate impossibilitati a utilizzare uno degli ultimi kernel disponibili potete ricorrere a delle patch. Potete scaricarle all'indirizzo: ftp://ftp.kernel.org/pub/linux/kernel/people/sct/ext3/ per i kernel della serie 2.2 oppure http://www.zip.com.au/~akpm/linux/ext3/ per i kernel rilasciati prima del 2.4.15.

In alternativa possono essere utilizzati i kernel patchati da Alan Cox che hanno iniziato a supportare il filesystem ext3 prima che Linus lo inserisse ufficialmente.

Una volta che ci siamo assicurati di avere dei sorgenti del kernel che supportano questo tipo di filesystem dovremo passare alla ricompilazione del kernel. Se siete poco pratici di questa operazione, potete seguire le nostre istruzioni presenti nell'articolo:Come ricompilare il Kernel Linux" o nella guida.

Per inserire il supporto a ext3 basterà che attiviate l'opzione "*" dal menu "*". Potete anche abilitare "*" per avere maggiori dettagli in caso di errore. Se volete montare un filesystem ext3 al boot, ricordatevi di compilare il supporto come built-in, evitando assolutamente di inserirlo come modulo.

Sarà anche necessario controllare la versione del pacchetto util-linux e e2fsprogs. In particolare viene richiesta almeno la versione 2.11 per util-linux e la 1.22 per e2fsprogs. Potete trovare delle versioni aggiornate utilizzando il motore di ricerca http://www.rpmfind.net se usate una distribuzione basata sull'RPM. Se avete una distribuzione basata sul DEB allora vi consiglio di usare i pacchetti util-linux e e2fsprogs presenti nella distribuzione Debian Woody (3.0).

2) Convertire una partizione ext2

Convertire una partizione ext2 in ext3 è un'operazione molto semplice. Necessita l'uso di tune2fs e non è necessario aver "smontato" il filesystem. La sintassi di tune2fs (che è un programma dedicato alla messa a punto di filesystem ext2) per l'aggiunta di un "journal" è la seguente:

lnxbox1:~# tune2fs -j /dev/hdAB

dove A indica la lettera corrispondente al vostro HD e B alla partizione che volete "convertire".

Di default tune2fs crea un journal di grandezza illimitata, ma può essere impostato utilizzando l'opzione -J size=journal-size dove al posto di journal-size va messa la dimensione in MB da noi scelta (non può superare però lo spazio disponibile).

3) Creare una partizione ext3

Se doveste creare da zero una partizione e avete scelto come tipo l'ext3, allora dovrete usare mke2fs -j device. è sempre possibile ricorrere, come per tune2fs, all'opzione -J per scegliere la dimensione del "giornale". Ad esempio:

lnxbox1:~# mke2fs -j /dev/hda4

Creerà una partizione ext3 chiamandola /dev/hda4

4) Disabilitare il controllo automatico di fsck

Usando un jornalling filesystem non ha molto senso lasciare abilitato il controllo dell'integrità della partizione che viene fatto di default ogni 20 "mount" (oppure dopo 180 giorni). Per disabilitare il check automatico scrivete:lnxbox1:~# tune2fs -i 0 -c 0 /dev/hdABSostituite AB con i valori che indicano la vostra partizione.

5) Sostituire il tipo di filesystem da ext2 a ext3 in /etc/fstab

Ovviamente se vogliamo beneficiare del journalling di ext3 dobbiamo espressamente specificare di che tipo di FS si tratti nel file /etc/fstab (altrimenti al boot Linux provvederà a montare il nostro filesystem ext3 come un classico ext2).

Ad esempio sostituiamo la riga:

/dev/hda7 /home ext2 rw    0    2

in:

/dev/hda7 /home ext3 rw    0    2

A questo punto se tutto è andato a buon fine, sarete in grado di sfruttare al 100% la potenza di questo nuovo filesystem.

Ti consigliamo anche