Introduction à Virtual File System

Exemples en C sous Linux 2.6.30


précédentsommaire

VI. Conclusion

VI-A. Pour aller plus loin

Il y a tant de chose à dire, je n'ai pas abordé les buffer_head, je n'ai que succinctement décrit la façon dont un filesystem maintient une liste des inodes et blocks utilisés, je n'ai pas non plus mentionné les différences structurelles entre minix et FAT, je n'ai que brièvement abordé la structure d'un répertoire... Il y a tant à dire, bien assez pour écrire un livre. Je n'ai malheureusement pas la prétention de pouvoir réaliser un tel ouvrage, alors je vous renverrai vers ceux existants qui sont certainement bien plus clairs que tout ce que je pourrais écrire.

J'espère avec cet article avoir éveillé votre curiosité, vous avoir fait découvrir ce domaine et peut être vous amener à en lire plus sur le sujet.

Pour mieux comprendre le fonctionnement d'un filesystem, rien ne vaut l'analyse d'un filesystem existant et fonctionnel, voire (si vous disposez du temps nécessaire) l'implémentation d'un filesystem.

Je recommande alors particulièrement la lecture du code source du filesystem minix, qui vous évitera de vous perdre dans la complexité du filesystem et de vous concentrer sur l'interface avec le kernel.

Le code de ce dernier est clair, explicite, concis, et particulièrement représentatif de l'implémentation d'un filesystem sous linux (on retrouvera en effet la même hiérarchie, la même logique de gestion d'erreurs et de segmentation des fonctions que dans un filesystem plus complexe comme ext2).

Le lien suivant correspond au repository git de l'implémentation de minix dans le kernel 2.6 : http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=tree;f=fs/minix;hb=HEAD

Vous pouvez aussi, si vous le souhaitez, consulter le code d'un filesystem (non fonctionnel) minimaliste inspiré de minix où le code est commenté (rédigé dans l'optique de mieux comprendre ce domaine) : http://zenol.fr/trac/dev/browser/sfs

Enfin, gardez à l'esprit que les exemples de ce texte ne sont qu'une infime partie des possibilités offertes par VFS, et ne font pas règle de conduite. Vous trouverez de nombreux modules de filesystem qui nécessiteront d'autres fonctionnalités, n'utilisant pas ou peu les fonctions fournies par défaut car inadaptées. De plus, un filesystem n'est pas nécessairement destiné à être utilisé toujours monté sur un block device (pensez à /proc) et certains fs sont adaptés à certains périphériques (comme par exemple Unified Flash File System)

Bibliographie :

VI-B. Remerciements

Merci à Dut pour la mise au gabarit de cet article et à Furr pour sa relecture orthographique


précédentsommaire

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2010 Jérémy Cochoy. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.