4.7.1 ext3

Il filesystem ext3 (o ext3fs - third extended filesystem) è essenzialmente un filesystem ext2 a cui è stata aggiunta la caratteristica di journaling. La caratteristica fondamentale di ext3 è quella di essere compatibile al 100% con ext2, infatti la struttura del filesystem rimane praticamente la stessa a parte l’introduzione del journal. Il kernel di GNU/Linux supporta il filesystem ext3 a partire dalla versione 2.4.16 (il kernel deve essere opportunamente compilato per poter gestire tale filesystem).

In genere i journaled filesystem annotano nel journal le modifiche prima di apportarle ai metadati, ma ext3 ha la possibilità di annotare nel journal anche le modifiche che apporterà ai dati. Ovviamente questo va a scapito delle prestazioni ma diminuisce le probabilità di perdita di dati. La modalità di funzionamento del filesystem può essere impostata specificando l’opportuna opzione nella riga del file /etc/fstab (v. più avanti) che si riferisce al filesystem ext3. Le righe di tale file contengono infatti l’impostazione della modalità di journaling subito dopo la stringa ext3, come illustrato di seguito

                                                                        
                                                                        
/dev/hda3               /opt                    ext3    defaults        1 0
dove defaults indica la modalità di default del journaling. Al suo posto possono essere specificate le seguenti modalità di funzionamento Inoltre l’ext3 riduce la possibilità di inconsistenza del filesystem per il fatto che l’aggiornamento dei metadati e dei dati avvengono con intervalli di tempo minori rispetto a quelli in cui avvengono con ext2.

Il passaggio da ext2 a ext3 può essere fatto on-the-fly (cioè “a caldo”) proprio perché le strutture dei due filesystem sono pienamente compatibili. Non si rende quindi necessario un backup dei dati presenti sul filesystem da aggiornare ed una sostituzione del filesystem, presente sulla partizione considerata, con un alrto. Per convertire una partizione dal filesystem ext2 al filesystem ext3 è sufficiente digitare il comando

 
# tune2fs -j partition  
dove partition è la partizione del disco contenente il filesystem da convertire (es. /dev/hda3). Per ulteriori dettagli si veda la relativa man page (tune2fs(8)). È evidente che dopo aver convertito il filesystem, è necessario modificare opportunamente il file /etc/fstab per informare il sistema operativo che la partizione non sarà più di tipo ext2, ma di tipo ext3. Ad esempio, se tale file prima della conversione conteneva la riga

/dev/hda3               /opt                    ext2    defaults        1 2
questa dovrà essere modificata in

/dev/hda3               /opt                    ext3    defaults        1 0
Si può notare il fatto che con il filesystem ext3 l’ultimo campo della riga può tranquillamente contenere il valore ‘0’ poiché questa esprime la fase del processo di boot nella quale la consistenza del filesystem deve essere verificata con fsck. Impostandola a ‘0’ si indica al sistema di non verificare la consistenza del filesystem con fsck poiché la consistenza dello stesso è ripristinabile semplicemente annullando le modifiche che sono annotate nel journal (journal rollback).

È doveroso comunque far notare che il filesystem ext3, poiché è stato progettato per essere totalmente compatibile con la struttura del filesystem ext2, non ha alcune delle caratteristiche tipiche dei filesystem di ultima generazione come l’indicizzazione dei blocchi per mezzo di una struttura albero binario (b-tree) bilanciato che ridurrebbe i tempi di accesso agli oggetti del filesystem man mano che questo cresce, oppure la creazione dinamica degli inode.