





|
|
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)
|