Capitolo 8. Il filesystem di Linux

Sommario
8.1. Confronto fra alcuni filesystem
8.1.1. I filesystem tra cui scegliere
8.1.2. Differenze tra i filesystem citati
8.1.3. E sul piano delle prestazioni?
8.2. Tutto è un file
8.2.1. I diversi tipi di file
8.2.2. Gli inodi
8.3. Collegamenti
8.4. Pipe "anonime" e pipe con nome
8.5. File "speciali": file in modalità a caratteri e file in modalità a blocchi
8.6. I link simbolici e le limitazioni degli "hard" link
8.7. Attributi dei file

Il vostro sistema GNU/Linux, naturalmente, risiede sul vostro disco rigido all'interno di un filesystem. In questo capitolo discuteremo le diverse caratteristiche di vari filesystem, e i vantaggi che ciascuno di essi offre.

8.1. Confronto fra alcuni filesystem

A un certo punto dell'installazione potete scegliere fra diversi filesystem per le vostre partizioni. Questo significa che potete formattare le partizioni in base a diversi algoritmi.

La scelta di uno fra i vari filesystem disponibili non è immediatamente evidente, a meno che voi non siate degli esperti. Pertanto vi proponiamo una rapida presentazione di tre dei filesystem più aggiornati, tutti e tre inclusi in Mandrake Linux.

8.1.1. I filesystem tra cui scegliere

8.1.1.1. Ext2FS

Il Secondo Filesystem Esteso (in forma abbreviata Ext2FS o, più semplicemente, ext2) è stato il filesystem predefinito di GNU/Linux per molti anni. È stato introdotto in sostituzione del Filesystem Esteso (il che spiega l'uso dell'aggettivo "Secondo"). Il "nuovo" filesystem ha corretto alcuni problemi e superato alcuni limiti della versione precedente.

Ext2FS aderisce agli standard previsti per i filesystem destinati ai sistemi Unix. Sin dalla nascita era stata prevista una sua evoluzione, nonostante offrisse già una grande solidità e buone prestazioni.

8.1.1.2. Ext3FS

Come suggerito dal nome, il Terzo Filesystem Esteso è il successore di Ext2FS. È compatibile con quest'ultimo, ma in più offre una caratteristica di notevole interesse: il journaling .

Uno dei difetti più gravi dei filesystem "tradizionali" come Ext2FS è costituito dalla loro scarsa tolleranza per quanto riguarda improvvisi blocchi del sistema (dovuti a interruzioni di corrente, ad esempio, o all'errato comportamento di qualche programma). Questi fenomeni comportano, in genere, un lungo e meticoloso esame della struttura del filesystem, e tentativi di correggere eventuali errori che, in alcuni casi, possono provocare ulteriori danni. Come conseguenza, si può verificare una perdita parziale o totale dei dati salvati sul disco.

Il journaling risolve questo problema. Diciamo, per semplificare, che il nostro obiettivo è memorizzare le operazioni (come l'archiviazione di un file) prima di effettuarle davvero. Possiamo paragonare questo meccanismo alla registrazione degli eventi giornalieri nel giornale di bordo del capitano di una nave. Il risultato è un filesystem sempre coerente. E, nel caso si verifichi un problema, il controllo è molto rapido e le eventuali riparazioni assai limitate. Il tempo necessario per la verifica di un filesystem, quindi, è proporzionale al suo uso, non alle sue dimensioni.

Ext3FS, pertanto, offre la tecnologia dei filesystem di tipo journaling, pur mantenendo la struttura generale di Ext2FS: questa caratteristica assicura un'ottima compatibilità.

8.1.1.3. ReiserFS

A differenza di Ext3FS, ReiserFS è stato creato ex novo. È un filesystem di tipo journaling come Ext3FS, ma la sua struttura interna è radicalmente differente. In particolare, fa uso di schemi ad albero binario ispirati dal software usato per gestire i database.

8.1.1.4. JFS

JFS è il filesystem di tipo journaling progettato e usato da IBM. In un primo momento si trattava di software proprietario e chiuso, ma recentemente IBM ha deciso di aprirne l'accesso alla comunità del software libero. La sua struttura interna è vicina a quella di ReiserFS.

8.1.2. Differenze tra i filesystem citati

Tabella 8-1. Caratteristiche dei filesystem

 Ext2FSExt3FSReiserFSJFS
StabilitàEccellenteBuonaBuonaSoddisfacente
Strumenti per recuperare file cancellatiSì (procedura complessa)Sì (procedura complessa)NoNo
Durata del riavvio dopo un blocco del sistemaLungo, anche molto lungoVeloceMolto veloceMolto veloce
Recupero dei dati in caso di blocco del sistemaGeneralmente buono, ma alto rischio di perdita parziale o totale dei datiN/AMolto buono. Una perdita completa dei dati è estremamente raraMolto buono

Per quanto riguarda le dimensioni massime dei file, queste dipendono da numerosi parametri (ad esempio la dimensione dei blocchi per ext2 e ext3), ed è probabile che la situazione cambi a seconda della versione del kernel e dell'architettura hardware. Il minimo disponibile, comunque, al momento è vicino o superiore ai 2 Tb (1Tb=1024 Gb), e può arrivare fino ai 4Pb (1Pb=1024 Tb) per JFS. Questi valori, sfortunatamente, sono limitati anche dalla dimensione massima raggiungibile da un dispositivo a blocchi, che per i kernel dell'attuale serie 2.4.X, e limitatamente all'architettura X86, non può andare oltre i 2Tb[1] anche in modo RAID. Per avere ulteriori informazioni, consultate Adding Support for Arbitrary File Sizes to the Single UNIX Specification.

8.1.3. E sul piano delle prestazioni?

Comparare le prestazioni è sempre una cosa assai delicata. Ogni tipo di test presenta dei limiti, e i risultati vanno interpretati con cautela. Al momento attuale Ext2FS è un filesystem molto maturo, ma il suo sviluppo non prevede grandi balzi in avanti; i filesystem di tipo journaling come Ext3FS e ReiserFS, al contrario, sono in rapida evoluzione. I test compiuti soltanto un paio di mesi o di settimane fa sono già troppo vecchi. Non dimentichiamo, inoltre, che le caratteristiche dell'hardware moderno, in particolare per quanto riguarda la capacità dei dischi rigidi, hanno contribuito grandemente ad appianare le differenze tra di loro. Al momento, tuttavia, JFS è il filesystem che offre le migliori prestazioni.

Ogni sistema comporta vantaggi e svantaggi. Tutto dipende, in effetti, dall'uso che intendete fare del vostro computer. Le esigenze di un semplice computer da ufficio saranno pienamente soddisfatto da Ext2FS, mentre per un server è preferibile usare un filesystem journaling come Ext3FS. ReiserFS, grazie anche alle sue origini, sarà la scelta più adatta per un server di database. JFS, infine, verrà scelto quando la velocità del trasferimento dati costituisce il requisito essenziale.

Per quanto riguarda un uso "normale", i quattro filesystem offrono più o meno gli stessi vantaggi. ReiserFS permette di accedere rapidamente ai file di piccole dimensioni, ma è piuttosto lento nella manipolazione di file piuttosto grandi (molti megabyte). Nella maggior parte dei casi, i vantaggi che caratterizzano ReiserFS rendono i suoi inconvenienti di scarsa importanza.

Note

[1]

Vi chiederete com'è possibile raggiungere capacità così elevate con dischi rigidi che raggiungono a malapena i 180Gb. In effetti, se usate tre schede RAID, ciascuna delle quali controlla 8 dischi da 128 Gb cadauno, ecco che arrivate a 3Tb...


Tux on Star from MandrakeSoft Linux è un marchio registrato di Linus Torvalds. Tutti gli altri marchi e copyright appartengono ai rispettivi proprietari.
Se non diversamente specificato, i diritti di tutto il contenuto di queste pagine e di tutte le immagini sono proprietà di MandrakeSoft S.A. e MandrakeSoft Inc. 2002.
http://www.mandrakelinux.com/