19
0
Fork 0
wiki/HowtoBTRFS.md

158 lines
4.7 KiB
Markdown
Raw Normal View History

2017-04-24 10:20:14 +02:00
---
2017-04-28 14:24:43 +02:00
title: Howto Btrfs
2018-03-21 14:33:01 +01:00
categories: filesystem system
2017-04-24 10:20:14 +02:00
...
2016-12-29 11:25:39 +01:00
2017-04-28 14:22:30 +02:00
* Documentation : <https://btrfs.wiki.kernel.org/index.php/Main_Page#Documentation>
* Wikipédia Btrfs : <https://fr.wikipedia.org/wiki/Btrfs>
* BTRFS sous Debian : <https://wiki.debian.org/Btrfs>
2016-12-29 11:25:39 +01:00
2017-05-02 21:56:55 +02:00
[Btrfs](https://btrfs.wiki.kernel.org/index.php/Main_Page) (B-tree file system, se prononce « Butter-FS ») est un système de fichiers basé sur le principe du [Copy-On-Write](https://fr.wikipedia.org/wiki/Copy-on-write) visant à mettre en œuvre des fonctionnalités avancées comme 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)…
2017-04-28 14:22:30 +02:00
En 2012, un effort intense de développement et de test est fourni par la communauté afin de faire de Btrfs le successeur de ext3/ext4, systèmes de fichiers habituels des distributions Linux.
2017-04-27 12:44:59 +02:00
Btrfs offre notamment les fonctionnalités suivantes absentes d'autres systèmes de fichiers :
2016-12-29 11:25:39 +01:00
2017-04-28 14:22:30 +02:00
- Instantanés (snapshots)
2017-04-27 12:44:59 +02:00
- Somme de contrôle
2016-12-29 11:25:39 +01:00
2017-04-28 14:22:30 +02:00
Nous utilisons pour l'instant Btrfs uniquement sur des systèmes de stockages secondaires, comme les serveurs de sauvegardes, où l'on profite de la performance des snapshots.
2016-12-29 11:25:39 +01:00
2017-04-24 10:20:14 +02:00
## Installation
2016-12-29 11:25:39 +01:00
2017-04-28 14:22:30 +02:00
~~~
2017-01-14 00:06:38 +01:00
# apt install btrfs-tools
2016-12-29 11:25:39 +01:00
~~~
2017-04-24 10:20:14 +02:00
## Utilisation de base
2017-04-28 14:22:30 +02:00
Formater une partition :
2017-01-03 11:20:35 +01:00
2017-04-28 14:22:30 +02:00
~~~
# mkfs.btrfs /dev/sda9
2016-12-29 11:25:39 +01:00
~~~
2017-04-28 14:23:11 +02:00
Montage persistant (ajouter l'option `ssd` pour les disques SSD) :
2017-01-03 11:20:35 +01:00
2017-04-28 14:22:30 +02:00
~~~
# echo "/dev/sda9 /backup btrfs defaults 0 0" >> /etc/fstab
# mount /backup
2016-12-29 11:25:39 +01:00
~~~
2017-04-28 14:22:30 +02:00
Augmenter la taille d'une partition montée :
2017-04-28 14:22:30 +02:00
~~~
# btrfs filesystem resize +42g /backup
2016-12-29 11:25:39 +01:00
~~~
2017-04-28 14:22:30 +02:00
Réduire la taille d'une partition montée :
2017-01-03 11:20:35 +01:00
2017-04-28 14:22:30 +02:00
~~~
# btrfs filesystem resize -42g /backup
2016-12-29 11:25:39 +01:00
~~~
2017-04-28 14:22:30 +02:00
### subvolumes et snapshots
2017-04-27 12:44:59 +02:00
2017-04-28 14:22:30 +02:00
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.
2017-04-28 14:22:30 +02:00
~~~
# btrfs subvolume create /backup/aaa
# btrfs subvolume create /backup/bbb
2016-12-29 11:25:39 +01:00
~~~
2017-04-28 14:22:30 +02:00
Liste des subvolumes disponibles :
2017-01-03 11:20:35 +01:00
2017-04-28 14:22:30 +02:00
~~~
# btrfs subvolume list /backup/
2016-12-29 11:25:39 +01:00
~~~
2017-04-27 12:44:59 +02:00
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.
2017-04-28 14:24:43 +02:00
> *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.
2017-01-03 11:20:35 +01:00
2017-04-28 14:22:30 +02:00
Créer un snapshot :
~~~
# btrfs subvolume snapshot /backup/aaa /backup/bbb/snapshot1
2016-12-29 11:25:39 +01:00
~~~
2017-04-28 14:22:30 +02:00
Supprimer un subvolume (et snapshot) :
2017-01-03 11:20:35 +01:00
2017-04-28 14:22:30 +02:00
~~~
# btrfs subvolume delete /bbb/bbb/snapshot1
2016-12-29 11:25:39 +01:00
~~~
2017-04-28 14:22:30 +02:00
Lister les propriétés d'un subvolume :
2017-04-24 10:20:14 +02:00
2017-04-28 14:22:30 +02:00
~~~
# btrfs property list -ts /path/to/subvolume
2017-04-24 10:20:14 +02:00
~~~
2017-04-28 14:22:30 +02:00
Passer un subvolume en RW :
2017-04-24 10:20:14 +02:00
2017-04-28 14:22:30 +02:00
~~~
# btrfs property set -ts /path/to/subvolume ro false
2017-04-24 10:20:14 +02:00
~~~
2017-04-28 14:22:30 +02:00
Passer un subvolume en RO :
2017-04-24 10:20:14 +02:00
2017-04-28 14:22:30 +02:00
~~~
# btrfs property set -ts /path/to/subvolume ro true
2017-04-24 10:20:14 +02:00
~~~
2017-04-28 14:22:30 +02:00
#### Manipulations d'un subvolume
2017-04-24 10:20:14 +02:00
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.
2017-04-28 14:22:30 +02:00
~~~
# btrfs sub snap -r /path/to/subvolume /path/to/snapshot
# btrfs subvolume delete /path/to/subvolume
2017-04-24 10:20:14 +02:00
~~~
2017-04-28 14:22:30 +02:00
On passera ensuite le volume en RO/RW :
2017-04-24 10:20:14 +02:00
2017-04-28 14:22:30 +02:00
~~~
# btrfs property set -ts /path/to/snapshot ro false
2017-04-24 10:20:14 +02:00
~~~
2017-04-24 10:40:18 +02:00
### Envoyer un subvolume
2017-04-28 14:22:30 +02:00
Pour transférer un subvolume vers un autre serveur, il faut créer un snapshot en RO du subvolume en question.
2017-04-24 10:40:18 +02:00
2017-04-28 14:22:30 +02:00
~~~
# btrfs sub snap -r /path/to/subvolume /path/to/snapshot-RO
2017-04-24 10:40:18 +02:00
~~~
2017-04-28 14:22:30 +02:00
On peut ensuite envoyer le volume via SSH :
2017-04-24 10:40:18 +02:00
2017-04-28 14:22:30 +02:00
~~~
# btrfs send /path/to/snapshot-RO | ssh root@192.0.2.1 "btrfs receive /path/to/remote-snapshot"
2017-04-24 10:40:18 +02:00
~~~
2017-06-01 16:04:29 +02:00
### Compression
On peut monter avec l'option `compress=zlib` ou `compress=lzo` pour activer une compression à la volée des fichiers.
Si le volume avant n'avait pas l'option `compress` on pourra tout recompresser avec `btrfs filesystem defragment -czlib` ou `-clzo`.
2017-04-24 10:20:14 +02:00
## Maintenance
2017-04-28 14:22:30 +02:00
Vérifier l'intégrité d'un subvolume avec l'opération **scrub** qui 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 :
2017-04-24 10:20:14 +02:00
2017-04-28 14:22:30 +02:00
~~~
# btrfs scrub start /backup/
# btrfs scrub status /backup/
2016-12-29 11:25:39 +01:00
~~~
2017-04-28 14:22:30 +02:00
Vérification plus poussée sur une partition non montée :
2017-01-03 11:20:35 +01:00
2017-04-28 14:22:30 +02:00
~~~
# btrfs check -p /dev/sda9
2016-12-29 11:25:39 +01:00
~~~
2017-04-28 14:22:30 +02:00
Voir si la partition a présenté des erreurs :
2017-01-03 11:20:35 +01:00
2017-04-28 14:22:30 +02:00
~~~
# btrfs dev stats /backup
2016-12-29 11:25:39 +01:00
~~~