Skip to main content

BTRFS

Présentation du système de fichiers btrfs :

Le système de fichiers btrfs (B-tree File System) est un système de fichiers moderne et avancé développé par Oracle. Il a été conçu pour répondre aux besoins des systèmes de stockage modernes, en offrant de nombreuses fonctionnalités intéressantes :

1. Copie sur écriture (Copy-on-Write) : Btrfs utilise la copie sur écriture, ce qui permet de créer rapidement des instantanés (snapshots) du système de fichiers sans consommer beaucoup d'espace disque.

2. Gestion du stockage : Btrfs permet de gérer facilement le stockage en utilisant des volumes logiques, des sous-volumes et des quotas. Cela facilite la gestion de l'espace disque.

3. Réplication et tolérance aux pannes : Btrfs prend en charge la réplication des données sur plusieurs disques, offrant ainsi une meilleure tolérance aux pannes.

4. Compression des données : Btrfs peut compresser les données en ligne, ce qui permet de réduire l'espace disque utilisé.

5. Déduplication : Btrfs peut détecter et supprimer les doublons de données, ce qui permet également de gagner de l'espace disque.

6. Équilibrage de charge : Btrfs peut automatiquement équilibrer la charge sur plusieurs disques pour optimiser les performances.

7. Vérification de l'intégrité des données : Btrfs peut vérifier l'intégrité des données et les corriger en cas d'erreurs.

Commande BTRFS

Lister les volumes

sudo btrfs subvolume list ./

Dans l'exemple, on liste des sous-volumes qui se trouvent dans /.

Créer/restaurer un instantané.

Avant de commencer, il faut que le système de fichier BTRFS soit monter (de préférence à la racine) pour pouvoir créer et restaurer correctement les instantanés.

Dans mon exemple, j'ai créé un dossier /btrfs.

sudo mkdir /btrfs

Ensuite, j'ai renseigné le point de montage dans mon fichier fstab, la ligne 10 dans l'exemple :

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a device; this may
# be used with UUID= as a more robust way to name devices that works even if
# disks are added and removed. See fstab(5).
#
# <file system>             <mount point>  <type>  <options>  <dump>  <pass>
UUID=aa78bd8c-d856-4059-b214-2be73e6d99aae /              btrfs   compress=zstd:3,subvol=/@,defaults 0 0
UUID=aa78bd8c-d856-4059-b214-2be736d9e9aae /home          btrfs   compress=zstd:3,subvol=/@home,defaults 0 0
UUID=aa78bd8c-d856-4059-b214-2be736d9e9aae /btrfs         btrfs   defaults 0 0
tmpfs                                     /tmp           tmpfs   defaults,noatime,mode=1777 0 0

Pour monter la partition.

sudo systemctl daemon-reload
sudo mount -a

Créer un instantané.

sudo btrfs subvolume snapshot /btrfs/@ /btrfs/@-$(date +%d-%m-%Y_%H-%M-%S)

Dans l'exemple, ont fait un instantané de la racine du système, la seconde partie est le chemin de l'instantané, à la fin, j'ai placé une variable pour l'horodater.

Restaurer un instantané.

Pour restaurer un instantané, il suffit d'utiliser la commande mv, le but de la manœuvre est d'intervertir le sous-volume de base avec l'instantané, puis on redémarre.

# Ont isole le sous-volume
sudo mv /btrfs/@ /btrfs/@_old
# ont déplace l'instantané en lieu et place du sous-volume
sudo mv /btrfs/@-05-02-2023_13-02-56 /btrfs/@
# ont redémarre l'ordinateur sur l'instantané
reboot

Démarrer sur un instantané sans restauration.

Il est possible de démarrer sur un instantané sans passer par une restauration.

Systemd-boot (la suite au prochain épisode)

Sur systemd-boot