Qu'est-ce qu'un système de fichiers journalisé ?

Nous ne ferons ici qu'une simple introduction aux systèmes de fichiers journalisés. Pour obtenir des informations plus avancées et techniques, reportez-vous à l'article de Juan I. Santos Florido dans la Linux-Gazette n°55. D'autres informations sont disponibles dans l'article http://freshmeat.net/articles/view/212/.

La plupart des systèmes de fichiers modernes utilisent des techniques de journalisation empruntées au monde des bases de données pour améliorer la reprise sur incident. Les transactions sont écrites séquentiellement sur une partie du disque appelée journal ou log avant de les écrire sur disque à leur place définitive dans le système de fichiers. Les mises en oeuvres varient dans le contenu écrit dans le journal. Certaines n'y mettent que les meta-données, alors que d'autres y enregistrent toutes les écritures[1]

Maintenant, si un plantage survient avant qu'une entrée de journal ne soit validée[2], les données originales sont toujours sur disque et vous avez uniquement perdu vos dernières modifications. Si le plantage intervient pendant l'update[3] (i.e. après la validation de l'entrée du journal), l'entrée du journal reflète ce qui aurait dû être fait. Et au ré-amorçage du système, il n'a qu'a rejouer les transactions du journal, et terminer l'update qui a été interrompu.

Dans les deux cas, vous avez des données valides, et non une partition inutilisable. Et comme le temps de reprise sur incident associé à cette approche journalisée, le système est utilisable dans les quelques secondes qui suivent.

Il est aussi important de noter que l'utilisation d'un système de fichiers jounalisé ne rend pas complètement obsolète l'emploi d'un programme de vérification d'intégrité (fsck). Des erreurs matérielles ou logicielles peuvent corrompre de façon aléatoire quelques blocs du système de fichiers, interdisant une récupération grâce au journal de transactions.

Notes

[1]

NdT : et donc les données contenues dans les fichiers.

[2]

NdT : en franglais : committée

[3]

NdT : on gardera le terme anglais puisqu'il s'agit du daemon (en mode noyau - pour Linux - ou utilisateur, suivant les Unix) du même nom