Le système de fichiers Btrfs (B-tree File System) équipe de plus en plus de systèmes Linux modernes. Il se distingue par ses fonctionnalités avancées : snapshots instantanés, compression transparente et gestion native de volumes multiples en RAID. Conçu pour les environnements dynamiques, Btrfs se présente comme une alternative moderne à ext4, avec une flexibilité bien supérieure, au prix d'une administration plus exigeante.
Dans ce guide, vous allez apprendre à créer, monter et administrer un système de fichiers Btrfs, en tirant parti de ses outils spécifiques et de ses capacités de tuning. Si vous n'avez pas encore lu le guide de choix d'un système de fichiers Linux, commencez par lui pour bien saisir les bases (blocs, journalisation, extents).
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Créer un système de fichiers Btrfs sur un ou plusieurs disques
- Monter des volumes et des sous-volumes, temporairement puis via
/etc/fstab - Choisir les options de montage adaptées : compression, SSD, sécurité
- Prendre des snapshots et les exporter avec
btrfs sendetbtrfs receive - Surveiller l'intégrité avec scrub et réagir face à une corruption
- Appliquer les bonnes pratiques : sous-volumes, quotas,
nodatacow
Qu'est-ce que Btrfs ?
Section intitulée « Qu'est-ce que Btrfs ? »Le système de fichiers Btrfs (B-tree File System) est né chez Oracle en 2007 avec un objectif clair : proposer un système moderne, fiable et adapté aux gros volumes. Il est intégré au noyau Linux depuis 2009 et plusieurs distributions l'ont adopté : openSUSE l'utilise par défaut pour la racine (avec snapshots automatiques), Fedora Workstation en a fait son système par défaut depuis la version 33. Contrairement à ext4, Btrfs n'est pas l'évolution d'un système existant, mais une refonte complète pensée pour les besoins actuels des administrateurs.
Un système Copy-on-Write
Section intitulée « Un système Copy-on-Write »Le cœur de Btrfs repose sur le mécanisme Copy-on-Write (CoW) : au lieu de modifier les blocs en place, il écrit de nouveaux blocs à chaque changement, puis met à jour les métadonnées. Ce fonctionnement garantit une meilleure intégrité des données en cas de coupure brutale, permet des snapshots quasi instantanés et rend possible des fonctionnalités avancées comme la déduplication.
Ce principe a un coût en performance pour certains workloads qui réécrivent sans cesse les mêmes fichiers (bases de données, images de machines virtuelles), mais il permet des opérations qu'ext4 ne sait pas faire sans outils tiers.
Fonctionnalités marquantes
Section intitulée « Fonctionnalités marquantes »Voici ce qui distingue Btrfs des systèmes de fichiers classiques. Chacune de ces fonctionnalités est intégrée au système lui-même : pas besoin d'empiler LVM, mdadm ou des outils tiers pour en profiter.
- RAID natif : Btrfs gère les profils RAID 0, 1 et 10 sans LVM ni mdadm (les profils RAID 5/6 existent mais restent déconseillés, voir plus bas).
- Compression transparente (
zlib,lzo,zstd) : activée par une simple option de montage. - Checksums sur les données et les métadonnées : détection des corruptions silencieuses à la lecture.
- Scrub : vérification d'intégrité de l'ensemble du volume, à lancer à la demande ou à planifier.
- Sous-volumes : chaque sous-volume se gère comme un système de fichiers indépendant (montage, snapshot, quota).
- Snapshots : capture instantanée et sans interruption d'un sous-volume.
- Redimensionnement à chaud : on peut agrandir ou réduire un volume monté.
- Quotas par sous-volume (qgroups).
- Défragmentation en ligne avec
btrfs filesystem defragment.
Avantages concrets
Section intitulée « Avantages concrets »Sur le terrain, ces fonctionnalités se traduisent par des gains directs pour l'administrateur :
- gain d'espace avec la compression transparente ;
- sauvegardes rapides via les snapshots et
btrfs send/btrfs receive; - adapté aux conteneurs et aux environnements qui créent et détruisent beaucoup de données ;
- fonctionnalités intégrées sans empiler des couches (RAID, LVM, outils de snapshot).
Limites à connaître
Section intitulée « Limites à connaître »Aucune solution n'est parfaite, et Btrfs demande de connaître ses zones de fragilité avant de l'adopter en production :
- Les profils RAID 5/6 sont considérés comme instables par le projet lui-même (problème dit du write hole) : ne les utilisez pas en production, préférez RAID 1 ou RAID 10.
- Le CoW peut ralentir les écritures aléatoires intensives (bases de données, VM) et fragmente fortement ces fichiers.
- La gestion de l'espace disque est moins intuitive qu'avec ext4 :
dfpeut afficher des valeurs trompeuses, et un volume peut se retrouver « plein » alors qu'il reste de la place (métadonnées saturées). - L'administration demande d'apprendre une commande dédiée (
btrfs) et ses sous-commandes, là où ext4 se contente des outils classiques.
Pour quels usages ?
Section intitulée « Pour quels usages ? »Le choix d'un système de fichiers dépend du profil d'écriture et du besoin de fonctionnalités. Btrfs est particulièrement pertinent pour :
- les serveurs de fichiers avec snapshots fréquents ;
- les postes de développement qui manipulent beaucoup de conteneurs ;
- les systèmes de sauvegarde, grâce à
send/receive; - les disques SSD, grâce à la compression qui réduit les écritures.
Btrfs allie flexibilité, intégrité et fonctionnalités avancées sans empilement de couches, mais il demande une prise en main plus rigoureuse qu'ext4. Voyons comment le créer proprement.
Créer un système de fichiers Btrfs
Section intitulée « Créer un système de fichiers Btrfs »Avant de profiter des fonctionnalités avancées de Btrfs, il faut formater le support de stockage. Cette opération peut se faire sur un disque entier ou une partition. Btrfs n'a pas besoin de LVM : il gère directement les volumes multiples et le RAID.
Préparer le support de stockage
Section intitulée « Préparer le support de stockage »On peut créer un système Btrfs sur :
- un disque brut (
/dev/sdb), - une partition (
/dev/sdb1).
Pour lister les disques disponibles et repérer le bon périphérique :
lsblkS'il s'agit d'un nouveau disque, créez une table de partitions avec fdisk,
parted ou gdisk :
sudo fdisk /dev/sdbCréez ensuite une partition comme /dev/sdb1, à formater avec Btrfs. Vérifiez
qu'elle apparaît bien avec lsblk avant de continuer : formater le mauvais
périphérique détruit ses données sans confirmation.
Formater en Btrfs avec mkfs.btrfs
Section intitulée « Formater en Btrfs avec mkfs.btrfs »La commande de base est :
sudo mkfs.btrfs /dev/sdb1Quelques options utiles :
-L nom: attribue un label au système de fichiers ;-d profil: définit le profil de stockage des données (single,raid1, etc.) ;-m profil: définit le profil de stockage des métadonnées ;-f: force le formatage, même si le périphérique contient déjà un système de fichiers.
Exemple complet :
sudo mkfs.btrfs -L data_btrfs -m single -d single /dev/sdb1Pour créer un volume sur plusieurs disques :
sudo mkfs.btrfs -L pool_btrfs /dev/sdb1 /dev/sdc1Btrfs assemble alors les disques dans un volume unique. Avec les versions
récentes de btrfs-progs, les données sont réparties en single
(concaténation, sans redondance) et les métadonnées en raid1
(mirroring). Pour obtenir une vraie redondance des données, demandez-la
explicitement :
sudo mkfs.btrfs -L pool_btrfs -d raid1 -m raid1 /dev/sdb1 /dev/sdc1Vérifier la création
Section intitulée « Vérifier la création »Avant même de monter le volume, vérifiez que le système de fichiers est bien créé et que les profils correspondent à ce que vous avez demandé :
sudo btrfs filesystem show /dev/sdb1La sortie doit afficher le label, l'UUID et la liste des
périphériques membres. La répartition détaillée de l'espace (btrfs filesystem df, btrfs filesystem usage) ne sera consultable qu'une fois le
volume monté.
Créer un système de fichiers Btrfs est rapide, mais les choix initiaux (profils RAID, nombre de disques) influencent fortement les performances et la fiabilité : mieux vaut les poser dès le formatage que de convertir après coup.
Monter un système de fichiers Btrfs
Section intitulée « Monter un système de fichiers Btrfs »Une fois le système de fichiers Btrfs créé, il faut le monter pour
l'utiliser. Le montage intègre la partition ou le volume dans l'arborescence
du système, typiquement sous /mnt ou /srv. Btrfs étant orienté gestion de
volumes et de sous-volumes, quelques spécificités s'appliquent par rapport à
ext4.
Monter temporairement un système Btrfs
Section intitulée « Monter temporairement un système Btrfs »Le montage manuel est la première étape naturelle : il permet de valider que le volume fonctionne avant de l'inscrire dans la configuration persistante. Trois commandes suffisent :
- Créer un point de montage :
sudo mkdir -p /mnt/data- Monter le système de fichiers :
sudo mount /dev/sdb1 /mnt/data- Vérifier que tout est en place :
findmnt /mnt/dataou :
df -hT /mnt/dataLa colonne type doit afficher btrfs. Ce montage est temporaire : il
disparaît au prochain redémarrage.
Monter par label ou UUID
Section intitulée « Monter par label ou UUID »Il est plus sûr de monter un volume Btrfs via son label ou son UUID,
surtout si plusieurs disques sont présents : les noms /dev/sdX peuvent
changer d'un démarrage à l'autre.
Pour trouver ces identifiants :
sudo blkid /dev/sdb1Exemples :
- Monter par label :
sudo mount -L data_btrfs /mnt/data- Monter par UUID (reprenez celui affiché par
blkid) :
sudo mount UUID=0b3f2a17-6f4d-4c8a-9a6e-3d2f1e5c7b90 /mnt/dataMontage automatique avec /etc/fstab
Section intitulée « Montage automatique avec /etc/fstab »Pour rendre un montage persistant au redémarrage, ajoutez-le dans
/etc/fstab (le fichier qui décrit les montages appliqués au démarrage).
Exemple :
UUID=0b3f2a17-6f4d-4c8a-9a6e-3d2f1e5c7b90 /mnt/data btrfs defaults,compress=zstd 0 0Explication :
- UUID : identifiant stable du système de fichiers ;
- /mnt/data : point de montage ;
- btrfs : type de système de fichiers ;
- defaults,compress=zstd : options (ici, compression activée) ;
- 0 0 : pas de sauvegarde avec
dump, pas de vérificationfsckau démarrage (Btrfs n'utilise pasfsck).
Tester la configuration sans redémarrer :
sudo mount -afindmnt /mnt/dataSi mount -a renvoie une erreur, corrigez la ligne avant tout redémarrage :
une entrée fstab invalide peut bloquer le démarrage du serveur.
Spécificité : monter un sous-volume
Section intitulée « Spécificité : monter un sous-volume »Un sous-volume Btrfs est une arborescence interne du volume, qui se comporte comme un système de fichiers à part entière. Créez-en un :
sudo btrfs subvolume create /mnt/data/@homeVous pouvez ensuite monter ce sous-volume directement (plutôt que la racine du volume) :
sudo mount -o subvol=@home /dev/sdb1 /homeDans /etc/fstab, cela donne :
UUID=0b3f2a17-6f4d-4c8a-9a6e-3d2f1e5c7b90 /home btrfs defaults,subvol=@home 0 0Avec Btrfs, on raisonne en sous-volumes plutôt qu'en partitions : c'est un découpage plus souple, qui devient décisif pour les sauvegardes et les snapshots. Les options de montage permettent d'affiner encore le comportement de chaque montage.
Options de montage spécifiques à Btrfs
Section intitulée « Options de montage spécifiques à Btrfs »Le système de fichiers Btrfs propose de nombreuses options de montage pour configurer finement son comportement : compression, défragmentation automatique, gestion des sous-volumes, ou encore optimisations pour SSD. Bien les connaître permet d'adapter le volume à son usage réel.
Options de performance
Section intitulée « Options de performance »Ces quatre options couvrent l'essentiel du tuning d'un volume Btrfs. Les
deux premières changent la façon dont les données sont écrites, les deux
suivantes réduisent le travail inutile. Dans le doute, compress=zstd et
noatime forment un point de départ sûr pour la plupart des usages.
-
compress=zstd | lzo | zlibActive la compression transparente des fichiers. Recommandé :zstd, qui allie rapidité et bon taux de compression.Exemple dans
/etc/fstab:UUID=0b3f2a17-6f4d-4c8a-9a6e-3d2f1e5c7b90 /mnt/data btrfs defaults,compress=zstd 0 0 -
autodefragActive la défragmentation automatique à l'écriture, utile pour les petits fichiers fréquemment modifiés (bases SQLite, navigateurs). À éviter sur les gros fichiers type images de VM.Exemple :
UUID=0b3f2a17-6f4d-4c8a-9a6e-3d2f1e5c7b90 /mnt/data btrfs defaults,compress=zstd,autodefrag 0 0 -
noatimeEmpêche la mise à jour de la date d'accès des fichiers (atime), ce qui réduit les écritures. Particulièrement utile avec le CoW, où chaque mise à jour d'atimedéclenche une écriture de métadonnées.Exemple :
UUID=0b3f2a17-6f4d-4c8a-9a6e-3d2f1e5c7b90 /mnt/data btrfs defaults,noatime 0 0 -
space_cache=v2Accélère les montages et allocations en maintenant un cache d'espace libre. C'est le comportement par défaut des noyaux récents : vous n'avez normalement pas à le préciser, mais vous le croiserez dans des configurations existantes.
Options pour SSD
Section intitulée « Options pour SSD »Sur un SSD, l'enjeu n'est pas la vitesse brute mais la gestion du TRIM : informer le disque des blocs devenus libres pour préserver ses performances et sa durée de vie. Deux options entrent en jeu :
-
ssdInforme le système de fichiers qu'il tourne sur un SSD, ce qui ajuste la stratégie d'allocation. Btrfs détecte automatiquement la plupart des SSD : cette option est rarement nécessaire, et elle n'active pas le TRIM. -
discard=asyncActive le TRIM en ligne (libération des blocs inutilisés côté SSD) de manière asynchrone, sans pénaliser les performances.Exemple :
UUID=0b3f2a17-6f4d-4c8a-9a6e-3d2f1e5c7b90 /mnt/data btrfs defaults,ssd,discard=async 0 0
L'alternative, souvent préférable, est le TRIM périodique avec le timer
systemd fstrim.timer, livré avec util-linux :
sudo systemctl enable --now fstrim.timersystemctl list-timers fstrim.timerVous pouvez aussi lancer un TRIM manuel pour vérifier que le volume le supporte :
sudo fstrim -v /mnt/dataSécurité et contrôle d'accès
Section intitulée « Sécurité et contrôle d'accès »Ces options ne sont pas propres à Btrfs, mais elles font partie de tout montage bien durci :
nodev: interdit les fichiers de type périphérique sur le volume monté ;nosuid: ignore les bits SUID/SGID, ce qui réduit la surface d'élévation de privilèges ;noexec: interdit l'exécution de programmes depuis le volume (utile sur/tmp,/var/log, les disques externes).
Exemple combiné pour /tmp :
UUID=0b3f2a17-6f4d-4c8a-9a6e-3d2f1e5c7b90 /tmp btrfs defaults,nodev,nosuid,noexec 0 0Gestion des sous-volumes
Section intitulée « Gestion des sous-volumes »Deux options désignent le sous-volume à monter. C'est par elles que passe
tout schéma de type @/@home utilisé par les distributions qui installent
leur racine sur Btrfs :
-
subvol=nomMonte un sous-volume spécifique au lieu de la racine du volume.Exemple :
UUID=0b3f2a17-6f4d-4c8a-9a6e-3d2f1e5c7b90 /home btrfs defaults,subvol=@home 0 0 -
subvolid=idAlternative par identifiant numérique du sous-volume, peu utilisée manuellement.
Désactiver le Copy-on-Write : nodatacow
Section intitulée « Désactiver le Copy-on-Write : nodatacow »Pour les workloads qui réécrivent en permanence les mêmes blocs (bases de
données, images de VM), le CoW dégrade les performances et fragmente
les fichiers. L'option de montage nodatacow le désactive pour tout le
volume, mais c'est rarement ce que l'on veut : le plus courant est de le
désactiver par répertoire avec l'attribut chattr +C :
sudo chattr +C /mnt/data/vmL'attribut ne s'applique qu'aux fichiers créés après sa pose : posez-le sur un répertoire vide, avant d'y placer les fichiers. Vérifiez avec :
lsattr -d /mnt/data/vmAttention : désactiver le CoW désactive aussi les checksums et la compression sur ces fichiers. Vous échangez de l'intégrité contre de la performance, en connaissance de cause.
Résumé des options courantes
Section intitulée « Résumé des options courantes »Ce tableau récapitule les options à connaître et les contextes où elles apportent un vrai gain :
| Option | Utilité principale | Recommandé pour |
|---|---|---|
compress=zstd | Réduction de l'espace disque | Tous les systèmes |
autodefrag | Réduction de la fragmentation | Petits fichiers modifiés souvent |
noatime | Réduction des écritures inutiles | Systèmes fortement sollicités |
discard=async | TRIM en ligne | Disques SSD |
nodev,nosuid | Renforcement de la sécurité | /tmp, /home, disques externes |
subvol=@home | Montage d'un sous-volume spécifique | Systèmes avec snapshots |
Bien choisir ses options de montage, c'est garantir un volume Btrfs
performant, stable et adapté à son usage. Reste à savoir quoi faire quand
quelque chose se passe mal : c'est le rôle de btrfs check et de scrub.
Vérifier et réparer avec btrfs check et scrub
Section intitulée « Vérifier et réparer avec btrfs check et scrub »Même si Btrfs intègre de nombreux mécanismes de détection d'erreurs, un système de fichiers reste vulnérable aux coupures d'alimentation, aux pannes matérielles et aux bugs. Il faut donc connaître les outils de vérification et de réparation, et surtout savoir dans quel ordre les utiliser : mal employés, ils peuvent aggraver une corruption.
Quand utiliser btrfs check ?
Section intitulée « Quand utiliser btrfs check ? »btrfs check analyse la structure interne du système de fichiers
(arbres, métadonnées, connectivité). Il s'utilise :
- après un crash ou un arrêt brutal, si le volume refuse de monter ;
- en cas de comportement anormal : fichiers manquants, erreurs répétées dans les journaux ;
- pour une vérification manuelle ponctuelle, volume démonté.
Attention : btrfs check ne s'utilise que sur un système de fichiers
démonté. Ne l'exécutez jamais sur un volume monté.
Vérifier sans modifier
Section intitulée « Vérifier sans modifier »Par défaut, btrfs check travaille en lecture seule : il signale les
erreurs sans rien toucher. C'est toujours la première étape :
sudo btrfs check /dev/sdb1Une sortie sans erreur signalée se termine par un résumé des octets vérifiés. Si des erreurs apparaissent, ne vous précipitez pas sur la réparation : commencez par sauvegarder ce qui peut l'être.
--repair : le dernier recours
Section intitulée « --repair : le dernier recours »Le mode réparation existe, mais la documentation upstream est explicite : il est dangereux et ne doit pas être utilisé sans analyse préalable des erreurs détectées. Une réparation mal adaptée peut rendre un volume définitivement irrécupérable.
sudo btrfs check --repair /dev/sdb1Avant d'en arriver là, épuisez les options moins risquées :
- monter le volume en lecture seule et copier les données ailleurs ;
- tenter
btrfs restore(extraction de fichiers depuis un volume non montable, sans le modifier) ; - chercher le message d'erreur exact dans la documentation ou les listes de diffusion Btrfs.
N'utilisez --repair qu'en dernier recours, sur un volume dont les
données sont déjà sauvegardées ou perdues de toute façon.
Scrub : vérifier les données en ligne
Section intitulée « Scrub : vérifier les données en ligne »Contrairement à check, scrub travaille sur un volume monté et en
service. Il lit chaque bloc, vérifie les checksums et corrige
automatiquement les erreurs quand une copie saine existe (profils RAID 1/10,
métadonnées en dup).
Lancer un scrub (il part en arrière-plan) :
sudo btrfs scrub start /mnt/dataSuivre l'état d'avancement et le nombre d'erreurs trouvées :
sudo btrfs scrub status /mnt/dataUn scrub planifié (mensuel, par exemple) est la meilleure défense contre les corruptions silencieuses : il détecte les blocs abîmés avant que vous n'en ayez besoin.
Récupérer un système corrompu
Section intitulée « Récupérer un système corrompu »Si le volume qui refuse de monter est le système racine, la procédure passe par un support externe. L'ordre des opérations compte : on sauvegarde d'abord, on répare ensuite.
- Démarrer sur un live USB Linux avec le support Btrfs.
- Identifier la partition avec
lsblk. - Tenter un montage en lecture seule et copier les données :
sudo mount -o ro /dev/sdb1 /mnt- Si le montage échoue, vérifier sans modifier :
sudo btrfs check /dev/sdb1- En tout dernier recours seulement, une fois les données extraites ou perdues :
sudo btrfs check --repair /dev/sdb1Surveiller et optimiser un volume Btrfs
Section intitulée « Surveiller et optimiser un volume Btrfs »Btrfs n'est pas un système de fichiers à formater puis oublier. Il offre une palette d'outils intégrés pour surveiller son état, gérer l'espace, défragmenter et ajuster ses paramètres selon l'usage. Voici comment garder un œil sur son bon fonctionnement au quotidien.
Afficher les informations du système de fichiers
Section intitulée « Afficher les informations du système de fichiers »Pour lister les volumes Btrfs et leurs périphériques :
sudo btrfs filesystem showPour afficher la répartition de l'espace entre données et métadonnées :
sudo btrfs filesystem df /mnt/dataExemple de sortie :
Data, single: total=10.00GiB, used=7.50GiBMetadata, single: total=1.00GiB, used=512.00MiBSystem, single: total=32.00MiB, used=16.00MiBCette séparation données / métadonnées est propre à Btrfs : chaque catégorie a son propre espace alloué, et l'une peut saturer avant l'autre. Pour une vue plus complète (espace alloué, non alloué, estimation de l'espace libre réel), préférez :
sudo btrfs filesystem usage /mnt/dataC'est cette commande qu'il faut consulter quand df -h affiche des valeurs
qui semblent incohérentes : avec le CoW, la compression et le RAID, le df
classique ne raconte qu'une partie de l'histoire.
Analyser et défragmenter
Section intitulée « Analyser et défragmenter »Le Copy-on-Write fragmente naturellement les fichiers modifiés en place. Pour analyser le nombre d'extents (fragments) d'un fichier :
sudo filefrag -v /mnt/data/fichierPour défragmenter un répertoire récursivement :
sudo btrfs filesystem defragment -r /mnt/dataL'option -czstd (ou -clzo, -czlib) applique la compression à la
volée pendant la défragmentation, pratique pour compresser des données
écrites avant l'activation de compress=zstd :
sudo btrfs filesystem defragment -r -czstd /mnt/dataPiège à connaître : la défragmentation casse les liens partagés avec
les snapshots et les copies reflink. Chaque fichier défragmenté redevient une
copie indépendante, ce qui peut faire exploser l'espace utilisé sur un
volume riche en snapshots. Vérifiez l'espace disponible avant et après avec
btrfs filesystem usage.
Observer les erreurs et les journaux
Section intitulée « Observer les erreurs et les journaux »Btrfs remonte ses erreurs dans les journaux du noyau. Deux commandes les font apparaître :
sudo dmesg | grep -i btrfsjournalctl -k | grep -i btrfsBtrfs tient aussi des compteurs d'erreurs par périphérique (erreurs d'écriture, de lecture, de checksum), précieux pour repérer un disque défaillant avant la panne :
sudo btrfs device stats /mnt/dataDes compteurs qui augmentent d'un contrôle à l'autre signalent un disque à remplacer.
Planifier un scrub régulier
Section intitulée « Planifier un scrub régulier »Un scrub mensuel détecte les corruptions silencieuses avant qu'elles ne
deviennent des pertes de données. Avec cron, ajoutez une entrée dans
/etc/crontab :
0 3 1 * * root btrfs scrub start /mnt/dataVous pouvez aussi l'automatiser proprement avec un timer systemd, qui offre la journalisation intégrée. Dans les deux cas, contrôlez le résultat après coup :
sudo btrfs scrub status /mnt/dataRedimensionner un système de fichiers
Section intitulée « Redimensionner un système de fichiers »Btrfs permet d'agrandir ou de réduire un volume à chaud, c'est-à-dire pendant qu'il est monté (c'est même une obligation : la commande travaille sur le point de montage) :
- Agrandir de 10 Gio :
sudo btrfs filesystem resize +10G /mnt/data- Réduire de 5 Gio :
sudo btrfs filesystem resize -5G /mnt/data- Fixer une taille absolue :
sudo btrfs filesystem resize 100G /mnt/dataVérifiez le résultat avec btrfs filesystem usage /mnt/data. Attention :
redimensionner le système de fichiers ne redimensionne pas la partition
sous-jacente, qui se gère séparément (parted, growpart).
Gérer les quotas
Section intitulée « Gérer les quotas »Les quotas Btrfs (qgroups) limitent la consommation d'espace par
sous-volume, très utile pour isoler /home, /var ou les répertoires de
projets. Activez-les d'abord :
sudo btrfs quota enable /mnt/dataPuis consultez l'utilisation par sous-volume :
sudo btrfs qgroup show /mnt/dataEt fixez une limite sur un sous-volume donné :
sudo btrfs qgroup limit 50G /mnt/data/@homeSachez que les qgroups ajoutent un surcoût de calcul, surtout sur les volumes avec beaucoup de snapshots : n'activez les quotas que si vous en avez besoin.
Snapshots avec Btrfs
Section intitulée « Snapshots avec Btrfs »L'un des atouts majeurs de Btrfs est la création de snapshots instantanés. Un snapshot est une copie figée d'un sous-volume à un moment donné, qui ne consomme de l'espace qu'au fur et à mesure des modifications (grâce au CoW). C'est l'outil idéal pour les sauvegardes, les tests et les retours arrière rapides.
Créer un snapshot
Section intitulée « Créer un snapshot »Un snapshot se prend sur un sous-volume source. Si besoin, créez-en un :
sudo btrfs subvolume create /mnt/data/@homePour créer un snapshot en lecture/écriture :
sudo btrfs subvolume snapshot /mnt/data/@home /mnt/data/@home_snapPour un snapshot en lecture seule (obligatoire pour l'export avec
btrfs send, et idéal pour une sauvegarde) :
sudo btrfs subvolume snapshot -r /mnt/data/@home /mnt/data/@home_ro_snapLister les snapshots existants
Section intitulée « Lister les snapshots existants »Un snapshot est un sous-volume comme un autre : la même commande liste les deux et permet de vérifier que la création a fonctionné :
sudo btrfs subvolume list /mnt/dataChaque ligne affiche l'identifiant et le chemin du sous-volume. Chaque snapshot est indépendant : vous pouvez le monter, l'exporter ou le supprimer sans toucher à la source.
Monter un snapshot
Section intitulée « Monter un snapshot »Pour consulter le contenu d'un snapshot (récupérer un fichier supprimé, par exemple), montez-le comme n'importe quel sous-volume :
sudo mkdir -p /mnt/snap_homesudo mount -o subvol=@home_ro_snap /dev/sdb1 /mnt/snap_homeVérifiez avec findmnt /mnt/snap_home que le montage est actif, puis copiez
les fichiers voulus.
Supprimer un snapshot
Section intitulée « Supprimer un snapshot »Les snapshots s'accumulent vite et retiennent de l'espace disque : les anciens blocs ne sont libérés que quand plus aucun snapshot ne les référence. Supprimez ceux qui ne servent plus :
sudo btrfs subvolume delete /mnt/data/@home_snapL'opération est irréversible : relistez les sous-volumes après coup pour confirmer la suppression.
Sauvegarder avec btrfs send et btrfs receive
Section intitulée « Sauvegarder avec btrfs send et btrfs receive »Le duo send/receive exporte un snapshot en lecture seule sous forme
de flux, à stocker dans un fichier ou à envoyer vers un autre volume Btrfs
(y compris via SSH). C'est la brique de base des sauvegardes Btrfs.
Exporter un snapshot vers un fichier :
sudo btrfs send /mnt/data/@home_ro_snap > backup-home.btrfsLe réimporter sur un autre volume Btrfs monté :
sudo btrfs receive /mnt/backup < backup-home.btrfsPour des sauvegardes incrémentales, l'option -p n'envoie que la
différence entre deux snapshots :
sudo btrfs send -p /mnt/data/@home_ro_snap /mnt/data/@home_ro_snap2 > diff.btrfsCas d'usage pratiques
Section intitulée « Cas d'usage pratiques »Les snapshots changent la façon de travailler au quotidien : toute opération risquée peut être précédée d'un point de retour qui coûte quelques secondes. Exemples typiques :
- avant une mise à jour système, snapshot en lecture seule de la racine ;
- sauvegarde quotidienne de
/homecombinée àsend -pvers un disque externe ; - avant un test de configuration ou l'exécution d'un script douteux ;
- retour rapide à l'état précédent en quelques secondes, sans restauration complète.
Bonnes pratiques spécifiques à Btrfs
Section intitulée « Bonnes pratiques spécifiques à Btrfs »Même si Btrfs est un système de fichiers moderne et riche en fonctionnalités, sa configuration initiale et sa gestion au quotidien font toute la différence. Voici les pratiques qui améliorent sa fiabilité, ses performances et sa résilience sur le long terme.
Utiliser les sous-volumes dès le départ
Section intitulée « Utiliser les sous-volumes dès le départ »Plutôt que de tout stocker à la racine du volume, créez des sous-volumes
pour /home, /var, /srv, etc. Ce découpage ne coûte rien à la création
et vous ouvre toutes les fonctionnalités par périmètre :
sudo btrfs subvolume create /mnt/data/@homesudo btrfs subvolume create /mnt/data/@varAvantages :
- monter indépendamment chaque répertoire, avec ses propres options ;
- créer des snapshots ciblés (snapshoter
/homesans embarquer/var) ; - simplifier les sauvegardes incrémentales avec
btrfs send -p.
Activer la compression transparente
Section intitulée « Activer la compression transparente »La compression réduit l'espace disque utilisé et diminue souvent les I/O
(moins d'octets écrits). Ajoutez l'option compress=zstd dans /etc/fstab :
UUID=0b3f2a17-6f4d-4c8a-9a6e-3d2f1e5c7b90 /mnt/data btrfs defaults,compress=zstd 0 0Elle ne s'applique qu'aux nouvelles écritures. Pour recompresser les fichiers existants :
sudo btrfs filesystem defragment -r -czstd /mnt/dataRappel du piège vu plus haut : sur un volume avec des snapshots, cette défragmentation duplique les données partagées.
Planifier un scrub régulier
Section intitulée « Planifier un scrub régulier »Le scrub est votre détecteur de corruptions silencieuses. Lancé
régulièrement (mensuellement, par exemple, via cron ou un
timer systemd),
il vérifie tous les checksums pendant que le volume reste en service :
sudo btrfs scrub start /mnt/dataConsultez ensuite btrfs scrub status /mnt/data : un compteur d'erreurs non
nul mérite une investigation immédiate (journaux noyau, btrfs device stats).
Isoler les workloads en écriture intensive
Section intitulée « Isoler les workloads en écriture intensive »Pour les bases de données et les images de VM, le Copy-on-Write nuit aux performances et fragmente les fichiers. Désactivez-le sur un répertoire dédié, avant d'y créer les fichiers :
sudo mkdir /mnt/data/vmsudo chattr +C /mnt/data/vmlsattr -d /mnt/data/vmLa sortie de lsattr doit afficher l'attribut C. Gardez en tête la
contrepartie : plus de checksums ni de compression sur ces fichiers.
Activer et surveiller les quotas
Section intitulée « Activer et surveiller les quotas »Sur un volume partagé entre plusieurs usages, les qgroups évitent qu'un sous-volume affame les autres :
sudo btrfs quota enable /mnt/datasudo btrfs qgroup show /mnt/dataFixez ensuite des limites par sous-volume avec btrfs qgroup limit, et
gardez à l'esprit leur surcoût sur les volumes très snapshotés.
Documenter la configuration
Section intitulée « Documenter la configuration »Un volume Btrfs bien administré est un volume dont la configuration se retrouve en cas de sinistre. Notez dans votre documentation d'infrastructure :
- UUID et labels des volumes ;
- sous-volumes créés et leur rôle ;
- options de montage (
compress,noatime, etc.) ; - politique de snapshots (outil, fréquence, rétention) ;
- quotas définis.
Cela fait gagner un temps précieux lors des restaurations et des migrations.
Vérifier régulièrement les journaux système
Section intitulée « Vérifier régulièrement les journaux système »Btrfs signale ses problèmes dans les journaux du noyau bien avant la panne franche. Prenez l'habitude de contrôler :
journalctl -k | grep -i btrfssudo btrfs device stats /mnt/dataVous repérerez ainsi à temps les débuts de corruption ou un disque dont les compteurs d'erreurs grimpent.
Dépannage
Section intitulée « Dépannage »Les problèmes Btrfs les plus fréquents ont des causes bien identifiées, et
souvent une solution simple, à condition de ne pas dégainer --repair en
premier réflexe. Ce tableau couvre les symptômes les plus courants :
| Symptôme | Cause probable | Solution |
|---|---|---|
No space left on device alors que df montre de l'espace libre | Espace entièrement alloué aux chunks, métadonnées saturées | Diagnostiquer avec btrfs filesystem usage, puis rééquilibrer : sudo btrfs balance start -dusage=50 /mnt/data |
df -h affiche des valeurs incohérentes | CoW, compression et RAID faussent le calcul classique | Utiliser btrfs filesystem usage comme référence |
| Volume qui refuse de monter après un crash | Métadonnées endommagées | Monter en lecture seule (mount -o ro), sauvegarder, puis btrfs check sans --repair |
| Écritures lentes sur une VM ou une base de données | Fragmentation due au CoW | chattr +C sur un répertoire dédié (nouveaux fichiers), éventuellement autodefrag |
btrfs send échoue avec une erreur de sous-volume | Le snapshot n'est pas en lecture seule | Recréer le snapshot avec btrfs subvolume snapshot -r |
| L'espace ne se libère pas après suppression de fichiers | Des snapshots référencent encore les blocs | Lister (btrfs subvolume list) et supprimer les snapshots obsolètes |
Pour tout diagnostic, commencez par ces trois commandes qui donnent l'état réel du volume :
sudo btrfs filesystem usage /mnt/datasudo btrfs device stats /mnt/datajournalctl -k | grep -i btrfsContrôle de connaissances
Section intitulée « Contrôle de connaissances »Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.
Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
Vérification
(0/0)Profil de compétences
Quoi faire maintenant
Ressources pour progresser
Des indices pour retenter votre chance ?
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications
À retenir
Section intitulée « À retenir »-
Btrfs repose sur le Copy-on-Write : intégrité renforcée, snapshots instantanés, mais fragmentation sur les fichiers réécrits en place.
-
Raisonnez en sous-volumes dès la création : ce sont eux qui portent les snapshots, les quotas et les montages indépendants.
-
La compression
zstdest un gain quasi gratuit : activez-la par défaut viacompress=zstddans/etc/fstab. -
df -hment sur Btrfs : la référence estbtrfs filesystem usage. -
Un scrub planifié détecte les corruptions silencieuses ;
btrfs device statssurveille la santé des disques. -
btrfs check --repairest dangereux et documenté comme tel en amont : lecture seule d'abord, sauvegarde ensuite, réparation en dernier recours. -
Les profils RAID 5/6 restent instables : en production, limitez-vous à RAID 1 ou RAID 10.
-
Pour les VM et bases de données, désactivez le CoW par répertoire (
chattr +C), en acceptant la perte des checksums. -
10 questions aléatoires issues de la banque de questions,
-
5 minutes pour répondre,
-
80 % requis pour réussir.
Si vous maîtrisez ces questions, vous êtes prêt à administrer un volume Btrfs en environnement réel, snapshots et scrub compris.
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Gérer le stockage avec Incus : pools et volumes : Btrfs comme backend de stockage pour les conteneurs système et les VM Incus.
- Configurer le daemon Docker (daemon.json) : Le choix du storage driver, dont btrfs, et son impact sur vos conteneurs.
- Snapshots, clones et backups KVM : Comparer les snapshots au niveau hyperviseur avec ceux du système de fichiers.