,

MXOR.COM[personal website]

Le système de fichiers Btrfs

Il s'agit un tout nouveau système de fichiers, sous licence GPL

  • Btrfs, comme Ext4, est basé sur la notion d'extent. C'est une zone contiguë (qui peut atteindre plusieurs centaines de Mo) qui est réservée chaque fois qu'un fichier est enregistré sur le disque. Cela permet, en cas d'écriture ultérieure sur le fichier, d'ajouter les nouvelles données dans l'extent au lieu de devoir écrire dans une autre zone du disque dur (ce qui augmente la fragmentation). Les gros fichiers sont ainsi stockés de façon bien plus efficace et rationnelle. Pour les petits fichiers Btrfs utilise une astuce puisqu'il stocke les données directement dans le système d'extent lui-même sans avoir à allouer un bloc mémoire séparé.
  • Btrfs propose la notion de "Sous-volumes" qui permet, au sein du système de fichiers, d'avoir un arbre séparé (y compris la racine) contenant des répertoires et des fichiers. C'est en quelque sorte la possibilité d'avoir diverses arborescence simultanément. On peut utiliser cela pour séparer les données et imposer différents quotas aux différents sous-volumes mais l'utilisation la plus pratique de ce système concerne les snapshots. Un snapshot offre la possibilité de "prendre une photographie" à un instant d'un système de fichiers afin de le sauvegarder. Ce snapshot sous Btrfs est simplement un sous-volume ce qui permet, et c'est assez inattendu, de le modifier après coup. Avoir un snapshot accessible en écriture permettra certainement l'apparition de nouveaux usages chez les utilisateurs.
  • Pour implémenter ces sous-volumes et ces snapshots, la technique du "Copy-on-write" est utilisé dans Btrfs. Si des données sont écrites sur un bloc mémoire alors ce dernier sera copié à un autre endroit du disque dur et les nouvelles données seront enregistrées sur la copie au lieu de l'être sur l'original. Ensuite les méta-données pointant sur le bloc sont modifiées atomiquement afin de prendre en compte les nouvelles données. On a ainsi un mécanisme transactionnel efficace et tellement rapide qu'on peut même abandonner la technique de journalisation présente par exemple dans Ext3. Avant chaque écriture il suffit de prendre un snapshot du système : en cas de problème lors de l'écriture on revient au snapshot, en cas de réussite on efface le snapshot.
  • Btrfs propose plusieurs techniques de protection des données : l'utilisation des "back references" (c'est-à-dire savoir, à partir d'un bloc de données, vers quelles méta-données le bloc pointe) permet de détecter des corruptions du système. Si un fichier prétend appartenir à un ensemble de blocs et que ces blocs prétendent de leur coté relever d'un autre fichier alors il est clair qu'il y a un problème quelque part et que la cohérence du système est menacée. En plus de cette technique Btrfs effectue également des sommes de contrôle sur toutes les données et sur les méta-données stockées afin de pouvoir détecter toutes sortes de corruptions à chaud et ainsi proposer un niveau de fiabilité élevé.
  • Btrfs permet de redimensionner à chaud la taille du système de fichiers (y compris en le rétrécissant) tout en conservant une excellente protection des méta-données qui sont dupliquées à plusieurs endroits afin de les protéger. La syntaxe est très simple à utiliser puisqu'il suffit d'un "btrfsctl -r +2g /mnt" pour ajouter 2 Go à son système de fichiers. Cette fonction ne se veut pas redondante avec ce que propose le gestionnaire de volume logique de Linux mais ambitionne de le compléter sur plusieurs points techniques.
  • La vérification du système de fichiers, par l'intermédiaire du programme btrfsck, est tolérante aux erreurs et elle est conçue pour être extrêmement rapide. L'utilisation des arbres B permet d'explorer la structure du disque à une vitesse qui devrait être essentiellement limitée par les capacités de lectures du disque. Le prix à payer est une forte empreinte mémoire puisque btrfsck utilise trois fois plus de RAM que ext2fsck.



http://fr.wikipedia.org/wiki/Btrfs liens
Project: Btrfs liens
Testing EXT4 & Btrfs On A Serial ATA 3.0 SSD liens
The Linux 3.0 Kernel With EXT4 & Btrfs liens