Les problèmes des Systèmes de Fichiers traditionnels

Home
Pourquoi faire?
La journalisation
ReiserFS
Exposé de Système
Les Liens

Les meta-data

Comme vous le savez, les systèmes de fichiers existent afin de vous permettre de stocker, récupérer et manipuler des données. En plus de stocker les données contenues dans les fichiers, un système de fichier doit stocker et manipuler des informations précieuses sur les fichiers et le système de fichiers lui-même (date, propriétaire du fichier, droits d'accès, taille du fichier, emplacement sur le disque, etc...). Et pour cela, il doit maintenir une structure de données qui conserve vos données organisées et accessibles en lecture. Cette structure de données est appelée meta-data. C'est en quelque sorte des données sur les données. C'est la structure de cette meta-data qui donne au système de fichiers son identité et ses performances propres.

Normalement, on ne travaille pas directement sur la meta-data d'un système de fichiers. C'est un driver Linux spécifiquement dédié a la gestion du système de fichiers qui s'en occupe pour nous. Il est spécialement écrit pour gérer ce fouilli qu'est la meta-data. Cependant, afin d'assurer le bon fonctionnement du système de fichiers, il doit conserver les meta-data dans un état stable. Si cela n'est pas le cas, le driver ne sera plus capable de comprendre ou de manipuler la meta-data, rendant inaccessibles les données.

fsck

C'est la qu'intervient fsck. Quand Linux démarre, fsck démarre lui aussi automatiquement et scanne tous les systèmes de fichiers locaux contenus dans le /etc/fstab. La tache de fsck est de s'assurer que les meta-data de tous les systèmes de fichiers à monter sont dans un état stable et cohérent (utilisables donc). C'est le cas la plupart du temps. Quand Linux s'arrête, il veille a écrire sur le disque toutes les données situées dans les caches et divers buffers. Il vérifie également que le système de fichiers est correctement démonté et donc prêt à être utilisé au prochain démarrage. En fait, fsck scanne les systèmes a monter, s'aperçoit qu'ils ont été correctement démontés et suppose donc que toutes les meta-data sont OK.

Quoiqu'il en soit, nous savons tous qu'il arrive parfois certains événements inattendus , comme une coupure de courant ou un blocage total du système (ou un malin qui appuie à l'insu de son plein grés sur le bouton marche/arrêt). Lorsque ces événements se produisent, Linux n'a pas la possibilité de démonter proprement le système de fichiers. Quand le système reboote et qu'fsck démarre ses vérifications, il détecte ce démontage incomplet et suppose donc que les systèmes de fichiers ne seront pas compréhensibles pour le driver Linux. Il est fréquent que la meta-data soit d'une certaine manière désordonnée (on a tous déjà vu des messages lors du boot, du style: inode with zero dtime deleted).

Les inconsistances détectées par la commande fsck sont les suivantes:

  •  blocs associés à plusieurs inodes dans la liste des blocs libres,
  •  bloc associé par un inode disponible accessible hors du système de fichiers,
  •  nombre de lien matériel incorrect,
  •  contrôle de la taille: nombre de blocs incorrect, taille de répertoire incorrecte,
  •  mauvais format d'inode,
  •  bloc perdu,
  •  contrôle des répertoires: fichier pointant sur un inode non alloué, nombre de blocs alloués supérieur au nombre de blocs disponibles,
  •  mauvais format de la liste de blocs disponibles,
  •  nombre total de bloc libres et compte d'inodes non alloués incorrect.

Pour régler ce problème, fsck va démarrer un scan/check complet sur la meta-data, corrigeant les erreurs au fur et à mesure qu'il les découvre. Lorsque fsck est termine, le système de fichiers est prêt à être utilise. Bien que certaines données récemment modifies soient perdues a cause d'une coupure électrique ou d'un crash, la meta-data est maintenant saine, et le système de fichiers peut être monté et utilisé.

fsck et ses inconvénients

Et bien , cela ne semble pas être une mauvaise approche pour s'assurer de la cohérence d'un système de fichiers, mais cette solution n'est pas optimale. Les problèmes surviennent lorsque fsck doit scanner la meta-data complète d'un système de fichiers pour s'assurer de la cohérence de celui-ci. Effectuer un check de cohérence intégral sur toute la meta-data est une tache qui prend du temps, jusqu'a plusieurs minutes. Pire, plus la capacité de votre système de fichiers est grande plus le fsck prendra de temps. C'est un gros problème puisque lorsque fsck travaille , votre Linux est inaccessible et si vous disposez d'une très grande capacité de disque votre système peut faire tourner fsck pendant 1h30 voire plus. Bien entendu, le fonctionnement de fsck peut avoir des résultats dévastateurs: perte totale des données. Heureusement, il existe une bien meilleure solution.

(Suite)