3.7. Data Journaling
Ordinarily, GFS2 writes only metadata to its journal. File contents are subsequently written to disk by the kernel's periodic sync that flushes file system buffers. An
fsync()
call on a file causes the file's data to be written to disk immediately. The call returns when the disk reports that all data is safely written.
Il data journaling può causare una riduzione del periodo di
fsync()
, in modo particolare per file più piccoli, poichè i dati del file vengono scritti sul journal in aggiunta ai metadata. Verrà ritornato un fsync()
appena i dati vengono scritti sul journal; questo processo può essere più veloce rispetto al tempo necessario per scrivere i dati del file sul file system principale.
Le applicazioni che si affidano al
fsync()
per eseguire la sincronizzazione dei dati del file possono avere migliori prestazioni attraverso il journaling dei dati. Il data journaling può essere abilitato automaticamente per qualsiasi file GFS2 in una directory flagged (insieme a tutte le sottodirectory relative). I file esistenti con una lunghezza allo zero possono avere la funzione di journaling dei data abilitata o disabilitata.
Enabling data journaling on a directory sets the directory to "inherit jdata", which indicates that all files and directories subsequently created in that directory are journaled. You can enable and disable data journaling on a file or a directory with either of the following methods:
- Esecuzione del comando
chattr +j
ochattr -j
sul file o directory - Impostazione o rimozione di
jdata
sulla directory o sul file tramite il comandogfs2_tool setflag
ogfs2_tool clearflag
L'utilizzo del comando
chattr
è il modo preferito per abilitare o disabilitare il data journaling su di un file o una directory.
3.7.1. Come abilitare o disabilitare il data journaling con il comando chattr
È possibile abilitare e disabilitare il data journaling su di un file tramite il comando
chattr
. I seguenti comandi abilitano il journaling dei dati sul file /mnt/gfs2/gfs2_dir/newfile
, e successivamente controllano l'impostazione corretta del flag.
[root@roth-01 ~]#chattr +j /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]#lsattr /mnt/gfs2/gfs2_dir
---------j--- /mnt/gfs2/gfs2_dir/newfile
I seguenti comandi disabilitano il data journaling sul file
/mnt/gfs2/gfs2_dir/newfile
, e successivamente controllano l'impostazione corretta del flag.
[root@roth-01 ~]#chattr -j /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]#lsattr /mnt/gfs2/gfs2_dir
------------- /mnt/gfs2/gfs2_dir/newfile
È possibile utilizzare
chattr
per impostare il flag j
su di una directory. Quando impostate il suddetto flag per una directory, tutti i file e le directory successivamente create nella directory in questione, verranno salvate nel journal. L'insieme di comandi imposta il flag j
sulla directory gfs2_dir
, e controlla se il flag è stato impostato correttamente. Altresì, i comandi creeranno un nuovo file chiamato newfile
nella directory /mnt/gfs2/gfs2_dir
, e successivamente controlleranno l'impostazione del flag j
per il file. Poichè il flag j
è stato impostato per la directory, anche il newfile
dovrebbe avere il journaling abilitato.
[root@roth-01 ~]#chattr -j /mnt/gfs2/gfs2_dir
[root@roth-01 ~]#lsattr /mnt/gfs2
---------j--- /mnt/gfs2/gfs2_dir [root@roth-01 ~]#touch /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]#lsattr /mnt/gfs2/gfs2_dir
---------j--- /mnt/gfs2/gfs2_dir/newfile