3.7. Journalisation des données
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.
La journalisation des données peut entraîner une réduction du temps de
fsync()
, surtout pour les petits fichiers, car les données de fichier sont écrites sur le journal en plus des métadonnées.la commande fsync()
retourne dès que le texte est écrit sur le journal, ce qui peut être considérablement plus rapide que le temps qu'il faut pour écrire les données du fichier sur le système principal de fichiers.
Les applications qui dépendent de
fsync()
pour synchroniser les données de fichier pourraient être améliorées en utilisant la journalisation des données. La journalisation des données peut être activée automatiquement pour tout fichier GFS2 créé dans un répertoire balisé (et dans tous ses sous-répertoires). Les fichiers existants d'une longueur nulle peuvent également avoir la journalisation des données activée.
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:
- Exécuter la commande
chattr +j
ou bienchattr -j
ou la commandechattr -j
sur le fichier ou bien le répertoire. - Installer ou bien supprimer le marqueur
jdata
du répertoire à l'aide de la commandegfs2_tool setflag
ou bien de la commandegfs2_tool clearflag
.
Utiliser la commande
chattr
est la meilleure façon d'activer ou de désactiver la journalisation des données pour un fichier ou un répertoire.
3.7.1. Activer ou désativer la journalisation des données avec la commande chattr
.
Vous pouvez activer ou bien désactiver la journalisation des données sur un fichier à l'aide de la commande
chattr
. Les commandes suivantes activent la journalisation du fichier /mnt/gfs2/gfs2_dir/newfile
et vérifient ensuite si le marqueur a bien été installé correctement.
[root@roth-01 ~]#chattr +j /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]#lsattr /mnt/gfs2/gfs2_dir
---------j--- /mnt/gfs2/gfs2_dir/newfile
Les commandes suivantes désactivent la journalisation des données sur le fichier
/mnt/gfs2/gfs2_dir/newfile
et vérifient ensuite si le marqueur a été installé correctement.
[root@roth-01 ~]#chattr -j /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]#lsattr /mnt/gfs2/gfs2_dir
------------- /mnt/gfs2/gfs2_dir/newfile
Vous pouvez également utiliser la commande
chattr
pour fixer le marqueur j
sur un répertoire. Quand vous fixez ce marqueur sur un répertoire, tous les fichiers et répertoires créés par la suite dans ce même répertoire sont journalisés. L'ensemble des commandes suivant fixe le marqueur j
sur le répertoire gfs2_dir
, puis vérifie si le marqueur a été fixée correctement. Ensuite, les commandes créent un nouveau fichier intitulénewfile
dans le répertoire /mnt/gfs2/gfs2_dir
, puis, vérifient si le marqueur j
a bien été fixé pour ce fichier. Comme le marqueur j
est fixé pour le répertoire, le newfile
devrait également avoir la journalisaton activée.
[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