Le système de fichiers journalisés est un système de fichiers[tolérant/résistant aux pannes] qui permet d'assurer l'intégrité des données en cas de problème matériel, de panne de courant (ou Hot-swap|débranchement à chaud) ou d'arrêt brutal du système. Cette fonctionnalité est assurée par la tenue d'un Journal (système de fichiers) référençant les opérations d'écriture sur le support physique avant que ce dernier ne soit réellement mis à jour. Le système de fichiers doit permettre une reprise d'activité à la suite d'une coupure brutale, telle un arrêt électrique. Les métadonnées doivent alors rester cohérentes et à jour. La journalisation permet d'optimiser le contrôle d'intégrité du système de fichiers, réduisant ainsi le temps de redémarrage du système, critère important dans les environnements qui ont besoin d'une [haute disponibilité].

Objectifs La journalisation du système de fichier assure la cohérence des données en utilisant un journal. Ce journal est un fichier spécial qui enregistre les changements destinés au système de fichier, dans une mémoire circulaire. À intervalles réguliers, le journal est appliqué sur le système de fichier. Si une interruption électrique intervient, le journal peut être utilisé comme point de départ afin de récupérer les informations non sauvegardées, et ainsi assurer l'intégrité des données du système de fichier.

Méthodes Journaux physiques Le journal physique enregistre les modifications de données sur le support avant que celles-ci soient opérées. Les entrées contenues dans ce journal comprennent les données à écrire, ainsi qu'une somme de contrôle, afin d'assurer l'intégrité de celles-ci. Ceci permet d'éviter d'écrire des données pour lesquelles l'entrée du journal est incomplète, en cas de rejeu principalement. Cette méthode pénalise les performances, car chaque écriture nécessite une double écriture sur le support physique, une pour le journal, et une pour les données effectives. Elle est néanmoins acceptée en raison de la garantie de la cohérence des données qu'elle permet.

Journaux logiques Le journal logique ne stocke que les métadonnées, sacrifiant la tolérance aux pannes pour de meilleures performances. Il permet lui aussi le rejeu des opérations, mais peut lier des métadonnées journalisées à des données non journalisées, causant ainsi une corruption des données.

Écritures à risque Le cache d'écriture de la plupart des systèmes d'exploitation trie les opérations d'écriture en fonction de leur taille afin de maximiser les performances. Pour éviter un déséquilibre entre les métadonnées et les données, les écritures de données doivent être opérées avant celles des métadonnées. Ceci peut être délicat à implémenter car cela requiert une coordination dans le noyau du système d'exploitation entre le pilote du système de fichier et le cache d'écriture. Ce système peut également être rendu compliqué par la présence de caches d'écriture embarqués sur le périphérique de stockage, qui vont eux-mêmes réorganiser les données dans le but de gagner en performances. Certains systèmes de fichiers vont alors sacrifier les performances pour favoriser l'intégrité des données, en forçant le vidage du tampon du périphérique après chaque écriture opérée par le journal.

Exemples d’implémentation Ext3 Ce système de fichier est une extension de Ext2, auquel on a ajouté une fonction de journalisation. Il est donc possible de convertir une partition ext2 en une partition ext3 de manière simple, la seule modification à ajouter étant le journal. Il n'est utilisable que sur les systèmes Linux. Les modes de journalisation L'utilisateur a la possibilité de choisir parmi trois modes de journalisation : mode Journal Ce mode correspond à la journalisation physique. Les modifications apportées aux métadonnées et au système de fichiers sont enregistrées dans le journal. Il s'agit du mode le plus sécurisé, il permet d'éviter au maximum que les modifications apportées ne soient perdues. mode Writeback Ce mode correspond à l'écriture à risque. Il est censé être le plus rapide des trois modes, dans le sens où il n'enregistre que les modifications des méta-données, et n'enregistre pas celles apportées au disque. Les écritures disque correspondantes peuvent être indifféremment exécutées avant ou après l'enregistrement dans le journal. il y a alors un risque, si un arrêt brutal du système intervient entre la journalisation et l'écriture effective sur le support, qu'il y ait une incohérence entre l'état du support de stockage et l'état du journal.

mode Ordered Il s'agit du mode par défaut. Il correspond à la journalisation logique, et à l'instar du mode Writeback, seules les modifications apportées aux méta-données du système de fichiers sont enregistrées dans le journal. La différence est que l'écriture des modifications sur le disque est faite avant d'ajouter l'entrée dans le journal. Ainsi, on est sûr que les changements inscrits dans le journal ont bien été réalisés. En contrepartie, le fait que l'écriture sur le disque doive se faire avant de modifier le journal ne permet pas une souplesse d'ordonnancement des écritures disques, ce qui peut impliquer de légers ralentissements.

Performances Ci-dessous un tableau comparant les temps d'exécution de certains algorithmes effectuant des opérations sur le disque. Plus les valeurs sont petites, plus le mode de journalisation est efficace. Opération effectuée Mode Writeback Mode Journal Mode Ordered Creation 237.43 275.72 206.65 Copie 491.90 462.05 399.27 Lecture 240.17 242.61 234.17 Affichage des stats 22.36 22.36 22.36 Suppression 198.25 199.19 190.72 Écriture de large fichier 40.38 74.41 39.45 Lecture de large fichier 27.81 27.87 28.35 On peut déduire de ce tableau que sur presque tous les points, le mode journal est plus lent.

Commandes Ce tableau résume les commandes utiles pour la gestion d'un système de fichier ext3.

Commandes Description mke2fs Permet de créer un système de fichiers (option : -j pour faire un système de fichiers journalisé) e2fsck Vérifie ou répare un système de fichiers debugfs Dépanne le système de fichiers ext2online Agrandit un système de fichiers à chaud ext2online Redimensionne le système de fichier (non monté) dumpe2fs Affiche les informations du système de fichiers dump Sauvegarde le système de fichiers restore Restaure le système de fichiers tune2fs Modifie les paramètres du système de fichier

NTFS

vignette Le système de fichiers NTFS utilise la journalisation à l'aide d'une structure appelée table de fichiers maître qui contient les informations détaillées des fichiers et répertoire présents sur le système de fichiers. Cette structure est décomposée en plusieurs enregistrements. Le premier contient les informations sur la MFT. Le second est une copie de la MFT. Le troisième enregistrement est le journal. C'est dans ce fichier que sont enregistrées toutes les actions effectuées sur la partition. On retrouve donc dans ce fichier des informations telles que le nom du fichier ou répertoire, la date de création et/ou de modification, les droits d'accès au fichier. La MFT représente une structure de stockage des données de la partition.

Performances

Avantages : La fragmentation n'influe pas sur les performances du système. La complexité de l'arborescence des fichiers et du nombre de fichiers n'affectent pas les performances. L'accès rapide au fragment des fichiers.

Inconvénients : La taille de la mémoire ne peut pas être inférieur à 64 mégaoctets. Les disques lents sans contrôle du bus ralentissent énormément les performances du système. Si le disque est occupé entre 80 % - 90 % de sa taille totale, les performances du systèmes sont ralenties.

Alternative Copie Sur Écriture La Copie Sur Écriture est à la base une technique d'optimisation des systèmes de fichiers. Lorsque plusieurs utilisateurs ou processus accèdent à une même ressource, au lieu de créer une copie pour chaque demandeur, aucune copie n'est faite et tout le monde utilise la même ressource. Si un utilisateur veut modifier la ressource, une copie privée est alors faite et les modifications sont enregistrés dessus. Ensuite, lorsque les modifications sont terminées, le pointeur vers la ressource redirige vers la copie. On peut imaginer utiliser ce principe pour éviter les incohérences des données. En effet, au lieu de modifier directement la ressource, et prendre le risque que l'écriture sur le disque ne se termine pas, lors d'un arrêt brutal du système, une copie est créée, les modifications s'effectue sur la copie et seulement après, la ressource pointe vers la copie et non l'original. Le seul risque ici est que la modification ne soit pas apportées, mais le système de fichier, par contre, ne contiendra pas d'incohérences. Exemple : ZFS

ZFS est un système de fichiers transactionnel, ce qui lui permet d'assurer la cohérence de l'état des données. La journalisation est implémentée sur ZFS par le journal ZIL (ZFS Intent Log).Les appels au système de fichier sont associés à une entrée dans le ZIL, et renseignent les informations nécessaires à un éventuel rejeu. Chaque entrée du ZIL contient les données relatives à l'opération lorsqu'elles n'excèdent pas 64KB, ou contenir une référence vers celles-ci, stockées sur le disque. L'utilisation de journaux peut faire l'objet d'un déport sur un périphérique différent.

Évolution vers des systèmes journalisés

La sécurité des systèmes de fichier passe dans un premier temps par l'intégrité des données présentes sur ces derniers. En effet, le système de fichiers doit pouvoir garantir que les données présentes restent bien cohérentes même après un crash du système et doit permettre une récupération sur incident.

Systèmes de fichiers non journalisés le système de fichiers ext2

Le système de fichier ext2 est le standard des systèmes de fichiers de Linux. Il a été écrit par Remy Card, Theodore T'so et Stephen Tweedie pour pallier les lacunes du système de fichiers ext1.

Fonctionnalités standard

Les fonctionnalités standard de ext2 permettent d'accéder à des partitions de 4 téraoctets (1 téraoctets = gigaoctets), alors que la version ext1 ne permettait que des partitions de 2 gigaoctets (1 gigaoctets = mégaoctets). La taille maximale des fichiers avec un système ext2 standard est de 2 gigaoctets. De plus, lors de la création du système de fichiers, le système réserve une certaine quantité d'espace pour le super-utilisateur (root), en général 5 %. Ceci permet au super-utilisateur de pouvoir se connecter sur le système et de faire des tâches administratives quand le système de fichiers est plein pour les utilisateursLe mode graphique nécessite généralement l’écriture d’informations dans l’espace personnel. Ext2Fs gère aussi les noms de fichiers longs (255 caractères) et prend en compte tous les caractères excepté "NUL" et "/".

Récupération rapide sur incident À la suite d'un plantage, il existe deux procédés pour permettre de récupérer les données : Procédé des mises à jour prudentes qui, à un instant précis, rend le système de fichiers cohérent. Procédé des programmes "éboueurs".

Le premier procédé consiste, à un instant précis, à ne pas laisser le système de fichiers incohérent. Ce procédé est très problématique car ne pas passer par une étape laissant le système dans une position incohérente est difficile. Par exemple, lorsqu'on crée un fichier, il faut ajouter ce fichier dans le répertoire et créer l'inode de ce répertoire. Ces opérations ne sont pas possibles simultanément et donc il se passe toujours un instant où l'inode est affecté au fichier mais pas au répertoire, ou l'inverse