| PinG |
Bon, cf dans un thread ci-dessous, qqun demandait des infos sur le fonctionnement de ReiserFS, mais comme ca peut interesser plus de monde, voilà :
Hans Reiser, pour sa thèse de fin d'études (Berkeley), choisit d'étudier les filesystems. or, il fait les constatations suivantes :
- la structure logique des fichiers est à deux dimensions (fichiers dans des reps, une sorte d'arbre), or physiquement, tout est géré de manière linéaire... Mouais, pas top...
- les opérations d'écritures de bases sur un fichiers permettent d'ajouter des données à la fin d'un fichier, d'en supprimer, où de remplacer des données dans un fichier. (Le reste, proposé par des fonctions système est un essemble des trois dernières et de buffers...)
- c'est figé, pas modulable
- tous les fichiers sous forme de blocs rangés en bordel dans le disque, un index, et la liste des blocks libres...
- les petits fichiers prennent chacun un bloc même si ils ne le remplissent pas
- pour lire une donnée à la fin d'un gros fichier, il faut le parcourir linéairement du début à la fin (fat, ...) ou au moins lire toutes ses entrées dans la FAT (ext, ...)
Il en fait les conclusions suivantes :
- le stoquage/indexage linéaire c'est caca
- pas top pour enrengistrer des structures ou même (C et asm entres autres) gérer des pointeurs, genre listes chainées, vecteurs, ...
- selons les applicaitons/données à enrengistrer, les besoins ne sont pas les mêmes.
- le coup des blocs, c bof...
- grosses pertes de disque
- les performances suxxx
- les blocs en bordel, c pas bon pour les perfs, parceque lire un fichier de 3 blocs d'une seule traite, c'est plus rapide que de lire 3 blocs situés les uns à l'opposée des autres.
- les fichiers se retrouvent n'importe où sur le disque.
ses solutions :
- un FS avec un système de plug-ins pour évoluer/s'addapter aux circonstances
- un système de méta-données, beaucoup plus simple et surtout très rapide.
- plusieures données/métadonnées/fichiers par bloc.
- regroupage des données contigues/fichiers, plus organisation physique intelligente, pour optimiser la vitesse.
- gérer les données sous forme d'un b-tree, on pourrait accéder à n'importe quelle partie du fichier soimplement... (à condition de rééquilibrer l'arbre régulièrement).
- foutre tous les noms de fichiers dans une hashtable (on peux changer l'algo par plug-ins) -> recherche/browsing dans un rep SUPER rapide...
- proposer laccès aux fichiers directement par leur numéro d'inode, pour encore accélérer les accès. Exemple : une appli écrit plein de fichiers (intermédiaires, temp, ...), mais après, elle vas les relires... et bien au lieu de rechercher à chaque fois le fichier/son nom, elle peux stoquer en mémoire son numéro d'inode, l'accès est encore plus rapide.
Hans, il a des supers iddées pour crééer un nouveau FS performant, alors il se lance à l'aventure en créant Namesys.
Et voilà, nous voilà avec notre ReiserFS 3...
Bilan :
- tout ce qu'il voulait marche (enfin sauf les plug-ins), il a même rajouté la journalisation en plus...
- Les perfs : bah globalement, et surtout en lecture, c'est vachement plus performant. En écriture - à cause de la journalisation - , les fsync() et fsyncdata() sont un peut plus lents parcequ'ils écrivent dans le journal, syncronisent, puis vident le journal. Donc pour un serveur qui manipule plein de petits fichiers qui sont vitte supprimés (genre serveur de mail), il vaux mieux virer la journalisation.
- Accès par numéro d'inode : Squid notement peux utiliser cette propriétée...
- ReiserFS permet de gagner jusqu'a 20% d'espace disque (rapellez-vous des petits fichiers dans les blocs)
- Vachement plus rapide que l'ext3... même en conservant la journalisation et avec les tails...
- wandering logs : le journal (en gros, le truc dans lequel il y a le plus de lectures/écritures dans les FS journalisées) ne passe pas sa vie au mêem endroit sur le disque, ca permet d'éviter que le disque passe sa vie à gratter comme un ouf au même endroit -> abime la surface.
- une super gestion des badblocks (à ma connaissance égalée par aucun FS...)
Futur : Reiser4 http://www.namesys.com/v4/v4.html
en vrac :
- les plug-ins (pour les hash, les B-tree, la secu (crypt, hash, sign, ...), les journaux, et tout pleins d'autres trucs)
- résolution des pbs de collision
- encore plus rapide
- sécuritée vraiement super efficace...
|