--- title: Howto BTRFS categories: tips system ... * site officiel : [Btrfs (B-tree file system, prononcé ButterFS)](https://btrfs.wiki.kernel.org/index.php/Main_Page) est un système de fichiers fondé sur le Copy-On-Write visant à mettre en œuvre des fonctionnalités avancées en mettant l'accent sur la tolérance aux pannes, la réparation et la facilité d'administration. Sous licence GNU GPL il est développé conjointement par Oracle, Red Hat, Fujitsu, Intel, SUSE, STRATO AG (en)… En 2012, alors qu'il n'était pas encore considéré comme tout-à-fait stable, un effort intense de développement et de test est fourni par la communauté afin de faire de Btrfs le successeur de ext4 et ext3, systèmes de fichiers habituels des distributions Linux. Btrfs offre notamment les fonctionnalités suivantes absentes d'autres systèmes de fichiers : - Instantané (snapshots) - Somme de contrôle Ces caractéristiques sont importantes pour les systèmes Linux, serveurs comme postes clients, car les tailles de stockage comme les configurations tendent à augmenter et à se complexifier. ## Installation ~~~{.bash} # apt install btrfs-tools ~~~ ## Utilisation de base **Formater une partition** ~~~{.bash} # mkfs.btrfs /dev/sda9 ~~~ **Montage persistent** (ajouter `-o ssd` pour les disques SSD) ~~~{.bash} # echo "/dev/sda9 /backup btrfs defaults 0 0" >> /etc/fstab # mount /backup ~~~ **Augmenter la taille d'une partition montée** ~~~{.bash} # btrfs filesystem resize +42g /pointdemontage ~~~ **Réduire la taille d'une partition montée** ~~~{.bash} # btrfs filesystem resize -42g /pointdemontage ~~~ **Création de subvolumes** Un subvolume est comparable à un simple répertoire (il peut contenir des fichiers et d'autres répertoires). Lorsque que l'on utilise BTRFS, il existe au moins un subvolume, le subvolume racine. ~~~{.bash} # btrfs subvolume create /backup/aaa # btrfs subvolume create /backup/bbb ~~~ **Liste des subvolumes disponibles** ~~~{.bash} # btrfs subvolume list /backup/ ~~~ **Créer un snapshot** Un snapshot est un intantané figé de toutes les données contenues dans un subvolume. Si par exemple vous disposez deux fichiers ("foo" et "bar") dans un subvolume, un snapshot avant la suppression d'un de ces deux vous permettra de le récupérer dans ce snapshot. > *Note* : Un snapshot n'est pas une sauvegarde, il s'appuie sur le mécanisme de copy-on-write de BTRFS. Il partage donc les mêmes blocs de données. Ainsi, si les données sont endommagées, elles le seront aussi bien sur le snapshot que sur le subvolume. Cette fonctionnalité est utile pour conserver une ou plusieurs copies locales qui peuvent enuite être utilisées pour effectuer un rollback ou une sauvegarde à partir de l'état figé d'un subvolume. ~~~{.bash} # btrfs subvolume snapshot /backup/aaa /backup/bbb/snapshot1 ~~~ **Supprimer un subvolume (et snapshot)** ~~~{.bash} # btrfs subvolume delete /bbb/bbb/snapshot1 ~~~ **Lister les propriétés d'un subvolume** ~~~{.bash} # btrfs property list -ts /path/to/subvolume ~~~ **Passer un subvolume en RW** ~~~{.bash} # btrfs property set -ts /path/to/subvolume ro false ~~~ **Passer un subvolume en RO** ~~~{.bash} # btrfs property set -ts /path/to/subvolume ro true ~~~ ### Manipulations d'un subvolume Pour déplacer un subvolume, il faut créer un snapshot en read-only du subvolume que l'on souhaite déplacer/renommer puis supprimer l'original. ~~~{.bash} # btrfs sub snap -r /path/to/subvolume /path/to/snapshot # btrfs subvolume delete /path/to/subvolume ~~~ On passera ensuite le volume en read/write ~~~{.bash} # btrfs property set -ts /path/to/snapshot ro false ~~~ ### Envoyer un subvolume Pour transférer un subvolume vers un autre serveur, il faut créer un snapshot en read-only du subvolume en question. ~~~{.bash} # btrfs sub snap -r /path/to/subvolume /path/to/snapshot-RO ~~~ On peut ensuite envoyer le volume via SSH ~~~{.bash} # btrfs send /path/to/snapshot-RO | ssh root@192.0.2.1 "btrfs receive /path/to/remote-snapshot" ~~~ ## Maintenance **Vérifier l'intégrité d'un subvolume** L'opération *scrub* lance une lecture de l'ensemble des données et métadonnées du système de fichiers et utilise les sommes de contrôle pour identifier et réparer les données corrompues éventuelles. ~~~{.bash} # btrfs scrub start /backup/ # btrfs scrub status /backup/ ~~~ **Vérification plus poussée sur une partition non montée** ~~~{.bash} # btrfs check -p /dev/sda9 ~~~ **Voir si la partition a présenté des erreurs** ~~~{.bash} # btrfs dev stats /backup ~~~ ## Liens * [Wikipédia BTRFS](https://fr.wikipedia.org/wiki/Btrfs) * [Debian BTRFS](https://wiki.debian.org/Btrfs)