Btrfs

Introduction

Btrfs est un système de fichiers journalisé développé sous license GNU GPL ayant pour but de combler les manques des systèmes de fichiers utilisés sous Linux. Oracle, Red Hat, Fujitsu, Intel et d’autres participent activement à son développement. La structure de Btrfs est un arbre B et il implémente des fonctionalités telles que le RAID, les sous-volumes et snapshots, le redimensionement à chaud, à la baisse ou à la hausse, la copie sur écriture, la compression…

Le noyau

Tout d’abord, afin d’utiliser Btrfs, vous devez vous assurer que votre noyau a bien été compilé avec son support. Dans notre exemple, nous avons compilé son support en dur, mais rien ne vous empèche de le mettre en module.

File systems  --->
  <*> Btrfs filesystem support
  [*]   Btrfs POSIX Access Control Lists

Btrfs-progs

Ensuite, il vous faut installer le paquet sys-fs/btrfs-progs qui vous permettra d’utiliser les fonctionnalités de ce système de fichier.

emerge -av btrfs-progs

Utilisation

Formater

Vous pouvez formater une partition simplement, comme n’importe quel système de fichier :

mkfs.btrfs -L data /dev/sda2

Raid0

Le Raid0 permet d’aggréger les capacités de plusieurs disques sans sécurisation des données.

mkfs.btrfs -L data -d raid0 /dev/sda2 /dev/sdb2

Raid1

Le Raid1 permet d’effectuer un mirroir des données et ainsi de ne pas en perdre en cas de perte d’un des disques.

mkfs.btrfs -L data -d raid1 /dev/sda2 /dev/sdb2

Monter

Dans l’exemple ci-dessous, nous activons les options propre aux disque de type SSD (TRIM) :

mount -t btrfs -o defaults,noatime,ssd,discard LABEL=data /mnt/data

Fstab

Ci-dessous un exemple de point de montage dans le fichier /etc/fstab avec l’auto-défragmentation activée :

LABEL=data   /mnt/data                   btrfs   defaults,noatime,autodefrag         0 0

Il est important de noter qu’il ne faut pas lancer la vérification automatique du système de fichier au démarrage, au risque de l’abimer, ce qui correspond aux deux 0 à la fin de la ligne.

Agrandir

Afin d’agrandir le système de fichier Btrfs :

btrfs filesystem resize +1g /mnt/data

En utilisant le maximum disponible de la partition :

btrfs filesystem resize max /mnt/data

Diminuer

Afin de diminuer le système de fichier Btrfs :

btrfs fileystem resize -1g /mnt/data

Subvolume

Les subvolumes sont une unité logique du système de fichiers Btrfs qui permettent d’être snapshotés et d’être montés à un point différent de leur position d’origine. Il est possible aussi de modifier le numéro identifiant d’un subvolume et ainsi d’intervertir un subvolume et un de ses snaphots, dans le cas d’une restauration d’un snaphot par exemple. Les subvolumes supportent aussi un mécanisme de quota.

A noter par ailleurs, que si vous souhaitez utiliser un subvolume pour la racine de votre système de fichier, il vous faudra créer un initramfs permettant d’activer les subvolumes Btrfs .

Créer un subvolume

btrfs subvolume create /mnt/data/babykart

Créer un snapshot

btrfs subvolume snapshot /mnt/data/babykart /mnt/data/.snap0.babykart

Lister les subvolumes

btrfs subvolume list /mnt/data/

Supprimer un snapshot

btrfs subvolume delete /mnt/data/.snap0.babykart

Monter un subvolume

Comme expliqué précédemment, vous pouvez monter un subvolume à un point différent de son point d’origine. Dans notre exemple, nous monterons le subvolume /mnt/data/babykart dans /home/babykart :

mount -t btrfs -o defaults,noatime,subvol=babykart LABEL=data /home/babykart

Vous pouvez ensuite démonter le point /mnt/data, /home/babykart restera accessible. Par la suite, il vous suffit de monter le subvolume uniquement.

Liens