3.8. Journalisation des données

Normalement, GFS2 n'inscrit que les métadonnées dans son journal. Les contenus de fichier sont donc inscrits par la sync périodique du noyau qui purge les tampons des systèmes de fichiers. Un appel fsync() sur un fichier a pour effet d'inscrire les données du fichier immédiatement sur le disque. L'appel revient lorsque le disque rapporte que toutes les données ont été inscrites en toute sécurité.
La journalisation des données peut entraîner une réduction du temps de sync fsync pourles très petits fichiers parce que les données du fichier sont inscrites dans le journal en plus des métadonnées. Cet avantage se réduit rapidement quand la taille du fichier augmente.Les écritures à des fichiers de moyenne ou grande taille seront beaucoup plus lentes avec la journalisation de donnéesactivée.
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.
L'activation de la journalisation de données sur un répertoire définit le répertoire "inherit jdata", qui indique que tous les fichiers et répertoires créés par la suite dansce répertoire sont journalisés. Vous pouvez activer et désactiver la journalisation de données surun fichier par la commande chattr.
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
---------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 définir le marqueur j sur le répertoire. Quand vous fixez ce marqueur sur un répertoire, tous les fichiers et répertoires créés par la suite dans ce répertoire seront journalisés. Le groupe de commandes suivantes créent un marqueur j sur le répertoire gfs2_dir, puis contrôle que le marqueur a bien été défini correctement. Ensuite, les commandes créent un nouveau fichier intitulé newfile dans le répertoire /mnt/gfs2/gfs2_dir, puis contrôlent que le marqueur j a bien été défini pour ce fichier. Comme le marqueur j a été défini pour le répertoire, le newfile devrait avoir sa journalisation 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