6.6. Activation de la journalisation des données
En règle générale, GFS2 n'écrit que les métadonnées dans son journal. Le contenu des fichiers est ensuite écrit sur le disque par la synchronisation périodique du noyau qui vide les tampons du système de fichiers. Un appel à fsync()
sur un fichier entraîne l'écriture immédiate des données du fichier sur le disque. L'appel est renvoyé lorsque le disque signale que toutes les données ont été écrites en toute sécurité.
La journalisation des données peut se traduire par une réduction du temps fsync()
pour les très petits fichiers, car les données du fichier sont écrites dans le journal en plus des métadonnées. Cet avantage diminue rapidement à mesure que la taille du fichier augmente. L'écriture sur des fichiers de taille moyenne ou supérieure sera beaucoup plus lente si la journalisation des données est activée.
Les applications qui s'appuient sur fsync()
pour synchroniser les données des fichiers peuvent voir leurs performances améliorées par l'utilisation de la journalisation des données. La journalisation des données peut être activée automatiquement pour tous les fichiers GFS2 créés dans un répertoire marqué (et tous ses sous-répertoires). La journalisation des données peut également être activée ou désactivée pour les fichiers existants de longueur nulle.
L'activation de la journalisation des données dans un répertoire lui confère la valeur "inherit jdata", ce qui indique que tous les fichiers et répertoires créés ultérieurement dans ce répertoire sont journalisés. Vous pouvez activer et désactiver la journalisation des données sur un fichier à l'aide de la commande chattr
.
Les commandes suivantes activent la journalisation des données sur le fichier /mnt/gfs2/gfs2_dir/newfile
et vérifient ensuite si l'indicateur a été correctement défini.
# chattr +j /mnt/gfs2/gfs2_dir/newfile # 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 l'indicateur a été correctement défini.
# chattr -j /mnt/gfs2/gfs2_dir/newfile # lsattr /mnt/gfs2/gfs2_dir ------------- /mnt/gfs2/gfs2_dir/newfile
Vous pouvez également utiliser la commande chattr
pour activer l'indicateur j
sur un répertoire. Lorsque vous activez cet indicateur pour un répertoire, tous les fichiers et répertoires créés ultérieurement dans ce répertoire sont journalisés. Le jeu de commandes suivant définit l'indicateur j
pour le répertoire gfs2_dir
, puis vérifie si l'indicateur a été correctement défini. Ensuite, les commandes créent un nouveau fichier appelé newfile
dans le répertoire /mnt/gfs2/gfs2_dir
, puis vérifient si l'indicateur j
a été défini pour le fichier. Puisque l'indicateur j
est activé pour le répertoire, la journalisation doit également être activée pour newfile
.
# chattr -j /mnt/gfs2/gfs2_dir # lsattr /mnt/gfs2 ---------j--- /mnt/gfs2/gfs2_dir # touch /mnt/gfs2/gfs2_dir/newfile # lsattr /mnt/gfs2/gfs2_dir ---------j--- /mnt/gfs2/gfs2_dir/newfile