Un filesystem è detto consistente quando i blocchi di informazioni in esso contenuti sono liberi o utilizzati (allocati): ogni blocco allocato è utilizzato da un solo file o directory e tutti i file e directory possono essere acceduti per mezzo di altre directory del filesystem. Quando un sitema GNU/Linux viene spento utilizzando gli appositi comandi messi a disposizione dal sistema, attraverso il comando shutdown (v. sez. 2.9), i filesystem vengono “smontati” (unmounted, v. sez. 3.9) in maniera opportuna (in modo “pulito”) ed il sistema provvede ad impostare il bit clean per indicare la consistenza del filesystem.
Nonostante gli algoritmi sempre più sofisticati per la gestione della scrittura delle informazioni sulla memoria di massa abbiano ampiamente ridotto, se non addirittura eliminato, la possibilità di inconsistenza del filesystem, l’eventuale mancanza improvvisa dell’alimentazione elettrica costituisce di fatto un problema di possibile inconsistenza per un filesystem. Quando un sistema GNU/Linux viene spento in modo non “pulito”, ovvero senza passare dall’opportuna procedura di spegnimento (shutdown) del sistema, il bit clean non viene impostato e così al successivo riavvio, il sistema provvederà automaticamente a verificare la consistenza del filesystem al momento del mounting (v. sez. 3.9), tramite fsck (filesystem check) (man page fsck(8)).
____________________________________________________________________
Comando: fsck
Path: /sbin/fsck
SINTASSI
# fsck [option] device [...] [--] [fs_option]
DESCRIZIONE
Possono essere indicate anche opzioni per ogni specifico filesystem (fs_option) con la sintassi [!]opts=fs_option, con l’eventuale presenza dell’operatore di negazione ‘!’;
I valori di ritorno di fsck sono interpretati bit a bit ed il significato di ogni singolo bit (dal LSB al MSB) è riportato in tab. 3.13.
Il tempo impiegato nel controllo e ripristino della consistenza di un filesystem non è da sottovalutare ed aumenta all’aumentare della capacità della memoria di massa (per una partizione delle dimensioni di 40 GiB si possono avere tempi di ripristino dell’ordine di decine di minuti).
Al fine di evitare (per quanto possibile) le inconsistenze del filesystem e ridurre drasticamente i tempi di un eventuale ripristino dello stesso, viene adottata una tecnica di gestione delle informazioni che va sotto il nome di journaling. Tale tecnica si basa sull’utilizzo di una parte del filesystem detta journal o log (da cui il nome journaled filesystem) nella quale vengono memorizzate le operazioni che il sistema si accinge ad effettuare sul filesystem. Subito dopo il sistema effettua le modifiche sui dati e quindi sui metadati. Dopodiché il sistema elimina le informazioni precedentemente memorizzate nella parte journal. In questo modo, anche se il sistema non viene spento in modo “canonico”, il ripristino del filesystem verrà effettuato controllando soltanto la parte relativa all’ultima modifica tracciata nella parte journal che non risulta essere stata ancora effettuata, senza ricontrollare l’intero filesystem.
Esistono vari journaled filesystem supportati da GNU/Linux tra i quali XFS sviluppato dalla Silicon Graphics, ReiserFS sviluppato da H. Reiser, JFS (Journaling FileSystem) sviluppato da IBM ed ext3 sviluppato da S. Tweedie (uno degli autori di ext2) in Red Hat.