Btrfs, meilleur système de fichiers ?
Btrfs est considéré par certains comme le système de fichiers du futur pour Linux. Il offre en effet des fonctionnalités intéressantes, comme nous le verrons dans cet article.
Son nom provient de l'utilisation des B-tree, mais certains préfèrent l'appeler butter FS ou better FS, d'où le titre de cet article.
Premiers tests
SysNux a commencé à utiliser Btrfs en 2009, sur un ultra portable Asus Eee-Pc. Ces petits portables sous Linux avaient un disque relativement petit de 4 Go. La fonctionnalité Btrfs intéressante dans ce cas est la compression. Cela a permis l'installation d'un système Linux beaucoup plus complet que la version livrée de base.
En 2009, Btrfs était considéré comme expérimental, néanmoins aucun problème n'a été rencontré.
Systèmes embarqués
Une des caractéristiques fondamentales de Btrfs est d'utiliser la copie sur écriture (Copy-On-Write - COW), c'est à dire que les données mises à jour sont d'abord écrites à un endroit libre du disque, puis l'emplacement initial est libéré. Ainsi, les données initiales existent toujours sur le disque, et en cas de panne (coupure d'électricité par exemple), le système est beaucoup plus résilient : au pire, on perd quelques secondes de données, mais le système de fichiers n'est pas cassé, on peut redémarrer immédiatement. C'est une caractéristique très intéressante pour les systèmes embarqués comme les routeurs ou systèmes de téléphonie : une étude de Fujitsu en 2014 a confirmé ce point.
SysNux a commencé à utiliser Brtfs pour ce type d'installation en 2010, sans regret.
Fonctions avancées
Btrfs intègre des fonctions qui permettent de combiner plusieurs disques ou partitions (RAID) : il supporte les modes RAID0, RAID1, RAID10, et, de manière plus expérimentale, RAID5 et RAID6.
Btrfs permet aussi de diviser le système de fichier en sous-volumes.
Le serveur principal de SysNux utilisait traditionnellement pour son stockage principal deux disques configurés en RAID1 avec Linux MD, et le gestionnaire de volumes LVM. (Le système est installé sur un SSD.)
Fin 2015, un des disques a commencé a montré des signes de faiblesse : la taille devenant aussi un peu juste, deux nouveaux disques ont été installés. Décision a alors été prise de basculer entièrement sur Btrfs, et d'utiliser une partition du SSD (sda4) comme cache, grâce à bcache.
Ci-dessous, la première commande associe deux périphériques de cache (bcache0 et bcache1) aux nouveaux disques (sdd et sde) ; ensuite, on crée le système de fichiers btrfs, avec les données et les méta-données en miroir (RAID1) :
[jdg@tiare ~]$ sudo make-bcache --writeback -B /dev/sd[de] -C /dev/sda4
[jdg@tiare ~]$ sudo mkfs.btrfs --nodesize 64K --data raid1 --metadata raid1 /dev/bcache0 /dev/bcache1
On peut ensuite monter le nouveau système de fichiers, copier les données, et vérifier que le RAID1 est bien actif :
[jdg@tiare ~]$ sudo btrfs fi usage /home/jdg/
Overall:
Device size: 3.64TiB
Device allocated: 2.15TiB
Device unallocated: 1.49TiB
Device missing: 0.00B
Used: 1.95TiB
Free (estimated): 859.97GiB (min: 859.97GiB)
Data ratio: 2.00
Metadata ratio: 2.00
Global reserve: 512.00MiB (used: 0.00B)
Data,RAID1: Size:1.07TiB, Used:998.04GiB
/dev/bcache0 1.07TiB
/dev/bcache1 1.07TiB
Metadata,RAID1: Size:5.00GiB, Used:2.46GiB
/dev/bcache0 5.00GiB
/dev/bcache1 5.00GiB
System,RAID1: Size:8.00MiB, Used:256.00KiB
/dev/bcache0 8.00MiB
/dev/bcache1 8.00MiB
Unallocated:
/dev/bcache0 763.01GiB
/dev/bcache1 763.01GiB
Tout est correct !
Puis on peut puis créer les sous-volumes comme nécessaire, par exemple un sous-volume par utilisateur, un pour la base de données PostgreSQL, un pour les images de machines virtuelles :
[jdg@tiare ~]$ sudo btrfs sub list /home/jdg/
Mot de passe [sudo] de jdg :
ID 1059 gen 329947 top level 5 path Partage
ID 1062 gen 329949 top level 5 path SysNux
ID 1073 gen 329986 top level 5 path jdg
ID 1074 gen 329965 top level 5 path cathy
ID 1075 gen 329945 top level 5 path michael
ID 1076 gen 329950 top level 5 path vaiana
ID 1131 gen 329986 top level 5 path pgsql
ID 1136 gen 329952 top level 5 path images-vm
ID 1292 gen 329954 top level 5 path Snapshots
ID 3651 gen 329196 top level 1073 path Téléchargement
Conclusion
Ce premier article montre que Btrfs n'est pas qu'un système de fichiers : ses fonctions RAID et gestionnaire de volume remplacent les sous-systèmes MD et LVM de Linux. On verra dans un prochain article comment utiliser d'autres fonctionnalités pour réaliser efficacement des sauvegardes.
À noter que Btrfs est relativement jeune pour un système de fichiers : même si SysNux n'a jamais perdu le moindre fichier à cause de Btrfs, de bonnes sauvegardes sont indispensables !