ReiserFS

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

C'est quoi donc?

ReiserFS 3.6.x (qui fait partie du noyau Linux 2.4) a été conçue et développé par Hans Reiser et son équipe de développement chez Namesys. Hans et son équipe partagent la conviction que les meilleurs systèmes de fichiers sont ceux qui permettent de créer un environnement partagé, ou les applications peuvent interagir plus efficacement et plus rapidement. Pour cela, un système de fichiers doit allier la performance et les besoins de ses utilisateurs. De cette manière, les utilisateurs peuvent continuer a utiliser le système de fichiers directement sans avoir besoin de mettre en oeuvre des couches accès spécifiques au dessus de celui-ci, comme le font les base de données.

Performance sur de petits fichiers

Comment rendre alors le système de fichiers plus satisfaisant? Namesys a décidé de s'intéresser de prêt à l'un des aspects du système de fichiers, les performances sur la gestion de petits fichiers. Les systèmes de fichiers comme Ext2 ne se débrouillent pas très bien dans ce domaine, forçant les gens à utiliser des base de données ou faire développer des systèmes propriétaires spécifiques pour obtenir les performances dont ils ont besoin. Avec le temps, ce genre d'attitude qui consiste a dire "je vais coder autour de ce problème" augmente la taille du code et le nombre d'API propriétaires incompatibles, ce qui n'est pas une bonne chose.

De plus, Ext2 tend a encourager ce type de programmation. Ext2 est performant dans le stockage des fichiers d'une taille supérieure a 20Ko, mais ce n'est pas la technologie idéale pour stocker 2000 fichiers de 50 octets. Non seulement les performances chutent lorsqu'ext2 doit gérer de très petits fichiers, mais l'efficacité du stockage diminue également. Ceci parce qu'Ext2 alloue l'espace disque par bloc de 1 ou 4 Ko (configurable a la création du système de fichier).

Maintenant, il est vrai qu'on n'est pas supposé stocker autant de si petits fichiers. Ils devraient être stockés dans une sorte de base de données située au dessus du système de fichiers. En réponse, Hans Reiser insiste sur le fait que si on a besoin de rajouter une couche au dessus du système de fichier, c'est que ce dernier est bidon (enfin lui il dit un truc que j'ai pas pu traduire!). Si le système de fichiers répondait a nos besoin, on pourriez éviter le développement de cette couche propriétaire. On économiserait ainsi du temps de développement et on supprimerait l'excès de code créé par la surcouche de stockage, le cache, l'interface avec une base de donnée, etc..

Bien, voila pour la théorie. Mais en pratique, que vaut ReiserFS dans la gestion des petits fichiers? Et bien il est  bon... En réalité, ReiserFS est environ 8 a 15 fois plus rapide que Ext2 dans la gestion des fichiers inférieurs a 1 Ko ! Encore mieux, ce gain de performance ne se fait pas au dépends de la gestion des fichiers plus gros. Globalement, ReiserFS surpasse Ext2 dans quasiment tous les domaines, mais la différence est évidente dans la gestion des petits fichiers.

La technologie de ReiserFS

Mais comment fait donc ReiserFS pour offrir de si bonnes performances dans la gestion des petits fichiers ? ReiserFS utilise un arbre binaire balance spécialement optimise (1 par système de fichiers) pour organiser les données de la totalité du système de fichiers. Ceci apporte entre autre un gain appréciable de performance et permet de diminuer les contraintes habituelles d'organisation des systèmes de fichiers. Par exemple, il est maintenant possible d'avoir un répertoire contenant 100 000 sous-répertoires. L'autre avantage de l'utilisation d'un arbre binaire est que ReiserFS comme la plupart des systèmes de fichiers de nouvelles générations , alloue dynamiquement les inondes au fur et a mesure des besoins, au lieu d'allouer un nombre donne d'inode a la création du système de fichiers. Ceci augmente la flexibilité du système de fichiers et l'efficacité du stockage.

ReiserFS dispose également d'une panoplie de fonctionnalités spécifiquement conçues pour améliorer la gestion des petits fichiers. A la différence d'Ext2, ReiserFS n'alloue pas l'espace disque par blocs de 1 ou 4 Ko. A la place, il alloue uniquement l'espace nécessaire. De plus, il contient une optimisation dans le cas ou la fin de fichier est plus petite qu'un bloc du système de fichier. Afin d'augmenter les performances, ReiserFS est capable de stocker les fichiers dans les feuilles de l'arbre binaire lui même au lieu de les stocker sur le disque et de pointer dessus.

Ceci augmente les performances dans la gestion des petits fichiers. Tant que les données du fichier et les informations de l'inode sont stockées l'un a cote de l'autre, elle peuvent normalement être lues en une seule opération d'entrée/sortie sur le disque. Le fait de rassembler ensemble des fins de fichiers, permet d'économiser ainsi pas mal de place. En pratique, un système de fichiers ReiserFS peut stocker jusqu'a 6% de données de plus qu'un Ext2.

(Suite)