Introduzione
Il file system è un meccanismo logico con il cui un sistema operativo memorizza ed organizza i file su un dispositivo di archiviazione, hard disk, CD-ROM, volumi di rete ecc... I tempi di accesso, di lettura e di salvataggio dei dati dipendono dalla bontà dello stesso. Un file system di tipo unix implementa:
l'allocazione e deallocazione di spazio di zone di memoria; corrisponde alla creazione e alla distruzione di file sul supporto:
lettura e scrittura di zone di memoria; corrisponde alla lettura e alla scrittura di file sul supporto;
ricerca all'interno delle zone di memoria; corrisponde alla ricerca all’interno di un file
appartenenza tra zone di memoria; corrisponde alla chiusura di file;
creazione di raggruppamenti di zone di memorie; corrisponde alla creazione di directory;
visualizzazione del contenuto di un ragruppamento di zone di memoria; corrisponde al presentare l'elenco del contenuto di una directory;
distruzione di zone di memoria all'interno di un raggruppamento; corrisponde all'eliminazione di file da una directory;
agli occhi dell'utente il tutto è mostrato come una struttura gerarchica ad albero. I nodi interni dell'albero vengono chiamati directory mentre le foglie file. Ogni file è individuato univocamente dal nome dai nomi delle directory che lo contengono fino ad arrivare al suo nome, questa operazione è deta "phat name"
L'ext2
E' il file system storico dei sistemi linux, il più utilizzatop ancora oggi. Eso ha le seguenti caratteristiche:
Dimensione massima del filesystem 4 TB
Dimensione massima dei files 2 GB
Lunghezza massima dei nomi 255 caratteri
Fast symbolic links Si
Supporta ctime, mtime e atime Si
Spazio riservato per root Si
Attributi estesi dei files Si
Parametri modificabili Si
Lo spazio all'interno di un filesystem unix è organizzato da un punto di vista logico come un vettore (o array, overo un insieme omogeneo di elementi) lineare di blocchi di dimensioni uguali e indipendente dal dispositivo fisico, di solito di 1024 bytes, ma può essere fissato su valori diversi, mentre il blocco fisico (cluster) di un normale hard disk è di 512 bytes, dunque un blocco logico occupa di solito 2 blocchi fisici. Il file system ext2 è formato da un unico blocco chiamato super_block che è memorizzato in posizione fissa all'inizio del file system che ne descrive le caratteristiche. E' inoltre suddiviso in più parti chiamati cylinder groups, gestiti come entità separate ed autonome, questo per minimizzare la perdita di dati causata da errori (se alcuni dati di un cylinder group risultano corrotti il danno resta limitato all'interno del cylinder group e non si propagha a tutto il fs), per lo stesso scopo vengono duplicati all'interno di ogni cylinder group parti importanti dello stesso file system così da poter procedere con il recupero in caso di corruzione dei dati. Per la creazione di questo file system sul disco è sufficiente digitare come root:
mke2fs /dev/device
dove per device si intende quello associato alla partizione nella quale volete creare questo file system.
Questo file system ha garantito per diverso tempo velocità ed affidabilità sui sistemi Linux ma analizziamo ora una problematica. Il file system viene "gestito" da un modulo del kernel, all'avio della macchinapossimo notare la presenza di un applicativo, l'fsck per essere precisi, che fa un controllo di tutti i filesystem presenti in /etc/fstab e si assicura che tutti i dati relativi al file system che saranno successivamente montati rispettino dei criteri di integrità e utilizzabilità. Se però non si ha la possibilità di spegnere correttamente la macchina al successivo riavvio fsck correggerà gli errori ma teniamo ben presente l'enorme crescita degli hard disk, questo sistema si è rivelato troppo lento. Per risolvere questo problema si è introdotto il concetto di journal.
Journaling
Abbiamo dunque individuato un "problema" del pur ottimo ext2. Per rimediare a ciò è stato introdotta una nuova struttura dei dati ovvero il journal. Il journal dalla parola stessa, consiste in un giornale dove il gestore del file system che si trova nel kernel prima di modificare il file system stesso ogni volta che vi sono dei cambiamenti nella memori di massa (modifiche di file, cancellazioni di file, movimenti di file, creazione di file ecc..) inserisce l'operazione che sta per compiere al file system stesso. Questo permette in caso di riavvio "scorretto" di risalire all'ultima modifica che si stava effettuando al file system e far partire il lavoro di fsck da quel punto invece di controllarlo tutto come avveniva con l'ext2. Questo ha permesso di velocizzare l'operazione di recupero rendendola quasi instantanea.
Andiamo ora a conoscere i file system di tipo journal:
L'ext3
Il file system ext3 è la naturale evoluzione dell'ext2 pienamente compatibile con il suo predecessore. Al file system ext2 è stato aggiunto semplicemente il journal rimanendo inalterata la stuttura dei dati riguardante lo stesso a verifica di ciò è possibile montare un file system ext3 come ext2 così come è semplice la conversione dall'ext2 all'ext3. Per la creazione di questo file system sul disco è sufficiente digitare come root:
mke2fs -j /dev/device
dove per device si intende quello associato alla partizione nella quale volete creare questo file system, da notare come il comando è lo steso utilizzato per l'ext2.
ReiserFS
Programmato da Hans Reiser e il suo team presso la Namesys è stato il primo file system journal; per Hans Reiser i migliori file system sono quelli che aiutano a creare un singolo ambiente condiviso, detto namespace, dove le applicazioni possano interagire in maniera diretta, con maggiore efficieza e potenza. Per poter far ciò, un utente deve poter usare un file system direttamente senza dover dialogare con layer intermedi come accade invece con i database al fine di migliorare le prestazioni. Per raggiungere questo obiettivo Hans Reiser e il suo team si è concentrato prima di tutto sull'avere ottime prestazioni nel caso di gestione di grosse quantità di file di piccole dimensioni, questo è un punto dove il file system ext2 è un pò carente perchè alloca zone di memoria di dimensione fissa. Questo "problema è stato risolto" da Reiser utilizzando una struttura ad albero bilanciato. Vi sono molti altre feature che potete approfondire sul sito del produttore. Per la creazione di questo file system sul disco è sufficiente digitare come root:
mkreiserfs /dev/device
dove per device si intende quello associato alla partizione nella quale volete creare questo file system.
JFS
E' il file system journal realizzato dalla IBM di cui è stato realizzato il porting per Linux. Di questo file system è nota l'affidabilità, esso infatti pur non realizzando il journal di tutti i dati grazie alla sua struttura lo rende molto veloce, consentendogli di tener traccia di tutte le transizioni fatte sulle stesso. Per la creazione di questo file system sul disco è sufficiente digitare come root:
mkfs.jfs /dev/device
dove per device si intende quello associato alla partizione nella quale volete creare questo file system.
L'articolo termina qui, non è stato molto approfondito ma ha trattato giusto le basi teoriche del file system e del journaling così da non rimanere sorpresi quando durante una installazione(come accade con la gentoo dove sarete voi a decidere quale file system installare e quali tool associati installare) vi si presenta la creazione di un file system per il vostro disco.