Outils pour utilisateurs

Outils du site


sysadmin:btrfs

Ceci est une ancienne révision du document !


btrfs

Installer les outils

$  sudo apt-get install btrfs-tools

Pour découvrir btrfs, on créé le système de fichier dans un fichier de quelques mégas. Première surprise, l'espace minimal nécessaire pour la création d'un système de fichier btrfs est de 256 Mo:

$ cd /tmp
$ dd if=/dev/zero of=/tmp/btrfs-test bs=1M count=256
$ mkfs.btrfs /tmp/btrfs-test

On créer le point de montage sur l'arborescence logique et on monte notre tout nouveau système de fichier btrfs:

$ sudo mkdir /mnt/test
$ sudo losetup /dev/loop0 /tmp/btrfs-test
$ sudo mount -t btrfs -o loop /dev/loop0 /mnt/test/
$ sudo chown yoann:yoann /mnt/test

Le principe COW

COW1) permet au y. La contrepartie de ce système est la fragmentation des fichiers. btrfs supporte la défragmentation à chaud:

$ sudo btrfs filesystem defragment /mnt/test

L'option deframgment doit être suivie d'un argument dossier ou fichier à défragmenter.

Les sous-volumes

Les sous-volumes sont des systèmes de fichiers indépendants à l’intérieur du système de fichier parent. Ils possèdent neur racine, point de montage et options. La création des sous volume permet une meilleure séparation des données, la gestion de quotas et une plus grande indépendance en cas de corruption de l'arborescence système. En invoquant la commande, le répertoire servant de point de montage est automatiquement créé:

$ btrfs subvolume create /mnt/test/sv-1/

Dans l'exemple ci-dessus on a créé un sous volume monté sur le répertoire /mnt/test/sv-1. Tous les fichiers créés dans le répertoire sv-1 appartiennent au sous-volume:

/mnt/test/sv-1/
├── tota
├── toti
├── toto
└── totu

Snapshot

On va créer un instantané du sous-volume sv1:

$ btrfs subvolume snapshot /mnt/test/sv-1 /mnt/test/snapshot-sv1

Après invocation de cette commande un nouveau répertoire a été créé (/mnt/test/snapshot-sv1). C'est le point de montage d'un nouveau sous-volume identique à /mnt/test/sv-1. Pour btrfs les sous-volumes et les snapshots sont des structures apparentées: un snapshot est une forme de sous-volume. btrfs a été conçu pour rendre très réactive la création des snapshots. Grâce au principe COW, snapshots et sous-volumes partagent les données inchangées.

Pour lister les sous-volumes et les snapshots

$ sudo btrfs subvolume list /mnt/test/
ID 256 top level 5 path sv-1
ID 257 top level 5 path snapshot-sv1

Maintenant que l'instantané est créé, on va pouvoir travailler dans le sous-volume sv-1 en toute sécurité car on possède un instantané en sauvegarde. Ici je supprime deux fichiers et je crée un nouveau dossier avec un fichier. Après modifications, on obtient l'arborescence suivante:

/mnt/test/sv-1/
├── doc
│   └── readme.txt
├── tota
└── toti

Les modifications apportées sont catastrophiques et mes applications sont devenues instables. Je souhaite revenir à l’état précédent. Pour cela, il va falloir définir l'instantané comme systeme de fichier par défaut pour le point de montage /mnt/test/sv-1.

On liste les volumes

$ sudo btrfs subvolume list /mnt/test/
ID 256 top level 5 path sv-1
ID 257 top level 5 path snapshot-sv1

L'instantané a l'identifiant 257. On définit le volume avec l'identifiant 257 comme défaut pour le point de montage /mnt/test/sv-1:

$ sudo btrfs subvolume set-default 257 /mnt/test/sv-1

Options de montage

Lors du montage d'un systeme de fichier btrfs les options subvol ou subvolid permettent de monter un sous-volume directement sur le point de montage:

$ sudo mount -t btrfs -o loop,subvol=sv-1 /dev/loop0 /mnt/test

Références

1)
Copy On Write
sysadmin/btrfs.1411923856.txt.gz · Dernière modification : 2021/02/01 21:51 (modification externe)