Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:systeme:btrfs [14/03/2014 16:50] louispolaire |
doc:systeme:btrfs [14/03/2014 17:33] louispolaire [BTRFS] |
||
---|---|---|---|
Ligne 5: | Ligne 5: | ||
* Commentaires : //Les principes et commandes principales pour utiliser le BTRFS, les snapshots, les sauvegardes...// | * Commentaires : //Les principes et commandes principales pour utiliser le BTRFS, les snapshots, les sauvegardes...// | ||
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|La ligne de commande]] ; [[:doc:systeme:sauvegarde|Les sauvegardes]] ; [[:doc:systeme:partition|Le partitionnement]] ; [[:doc:systeme:fstab|Le montage des partitions]]:-) | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|La ligne de commande]] ; [[:doc:systeme:sauvegarde|Les sauvegardes]] ; [[:doc:systeme:partition|Le partitionnement]] ; [[:doc:systeme:fstab|Le montage des partitions]]:-) | ||
- | * Suivi : {{tag>en-chantier}} | + | * Suivi : {{tag>à-placer}} {{tag>à-tester}} |
* Création par **louispolaire** 12/03/2014 | * Création par **louispolaire** 12/03/2014 | ||
* Testé par <...> le <...> FIXME | * Testé par <...> le <...> FIXME | ||
Ligne 60: | Ligne 60: | ||
Les outils de gestion doivent être installés. | Les outils de gestion doivent être installés. | ||
- | <code root>apt-get install Btrfs-tools</code> | + | <code root>apt-get install btrfs-tools</code> |
===== Commandes de Base ===== | ===== Commandes de Base ===== | ||
Ligne 67: | Ligne 67: | ||
Pour formater la partition /dev/sdX1 taper : | Pour formater la partition /dev/sdX1 taper : | ||
- | <code root>mkfs.Btrfs -L label /dev/sdX1</code> | + | <code root>mkfs.btrfs -L label /dev/sdX1</code> |
Il peut être utile d'ajouter l'option -f si la partition n'est pas vide. | Il peut être utile d'ajouter l'option -f si la partition n'est pas vide. | ||
Ligne 78: | Ligne 78: | ||
Pour effacer la table des partitions et utiliser tout le disque /dev/sdX comme un volume Btrfs : | Pour effacer la table des partitions et utiliser tout le disque /dev/sdX comme un volume Btrfs : | ||
- | <code root>mkfs.Btrfs /dev/sdX</code> | + | <code root>mkfs.btrfs /dev/sdX</code> |
==== Convertir un système ext3 / ext4 ==== | ==== Convertir un système ext3 / ext4 ==== | ||
Ligne 87: | Ligne 87: | ||
<code root>umount /dev/sdX1 | <code root>umount /dev/sdX1 | ||
fsck.ext3 -f /dev/sdX1 | fsck.ext3 -f /dev/sdX1 | ||
- | Btrfs-convert /dev/sdX1 | + | btrfs-convert /dev/sdX1 |
mount /dev/sdX1 /point-de-montage</code> | mount /dev/sdX1 /point-de-montage</code> | ||
Ligne 94: | Ligne 94: | ||
Si tout va bien et que vous avez tous vos fichiers on supprime cette image et le subvolume qui la contient : | Si tout va bien et que vous avez tous vos fichiers on supprime cette image et le subvolume qui la contient : | ||
<code root>rm /point-de-montage/ext2_saved/* | <code root>rm /point-de-montage/ext2_saved/* | ||
- | Btrfs subvolume delete /ext2_saved | + | btrfs subvolume delete /ext2_saved |
- | Btrfs balance start /point-de-montage</code> | + | btrfs balance start /point-de-montage</code> |
Si tout ne va pas bien, qu'il y a eu un problème ou que vous avez les jetons :-P : | Si tout ne va pas bien, qu'il y a eu un problème ou que vous avez les jetons :-P : | ||
<code root>umount /dev/sdX1 | <code root>umount /dev/sdX1 | ||
- | Btrfs-convert -r /dev/SdX1</code> | + | btrfs-convert -r /dev/SdX1</code> |
==== Options de montage ==== | ==== Options de montage ==== | ||
Ligne 105: | Ligne 105: | ||
En des différentes options disponibles lors de la création du système de fichiers, le nombreuses options de montage pour Btrfs peuvent drastiquement changer ses performances. | En des différentes options disponibles lors de la création du système de fichiers, le nombreuses options de montage pour Btrfs peuvent drastiquement changer ses performances. | ||
- | ^Option de montage propres à Btrfs ^Rôle ^ | + | ^Option de montage propres à Btrfs^Rôle ^ |
+ | |autodefrag|Autorise la défragmentation en arrière plan| | ||
|compress=zlib|La compression la plus importante. Par défaut| | |compress=zlib|La compression la plus importante. Par défaut| | ||
|compress=lzo|La compression la plus rapide| | |compress=lzo|La compression la plus rapide| | ||
Ligne 112: | Ligne 113: | ||
|discard |Utilise le TRIM pour les disques SSD| | |discard |Utilise le TRIM pour les disques SSD| | ||
|recovery|Lance la réparation automatique après le montage. A utilise si le volume ne veut plus se monter. un fois monté réaliser un scrub pour réparer les erreurs. (Ne fonctionne qu'avec les volumes crées avec la version 3.2 ou +)| | |recovery|Lance la réparation automatique après le montage. A utilise si le volume ne veut plus se monter. un fois monté réaliser un scrub pour réparer les erreurs. (Ne fonctionne qu'avec les volumes crées avec la version 3.2 ou +)| | ||
- | |ssd|Utilise l'optimisation pour ssd de Btrfs. C'est utilisé par défaut si votre système reconnaît le SSD. Cette option ne lance pas le TRIM !| | + | |ssd|Utilise l'optimisation pour disques SSD de Btrfs. C'est utilisé par défaut si votre système reconnaît le SSD. Cette option ne lance pas le TRIM !| |
- | |subvol=/chemin/vers/subvolume|Permet de monter un subvolume| | + | |subvol=///chemin/vers/subvolume//|Permet de monter un subvolume| |
- | |subvolid=id|Permet de monter un subvolume par son id. La racine a un id=0| | + | |subvolid=//id//|Permet de monter un subvolume par son id. La racine a un id=0| |
=== Pour un SSD === | === Pour un SSD === | ||
Ligne 140: | Ligne 141: | ||
Pour voir l'espace utilisé dans le volume Btrfs monté dans /mnt : | Pour voir l'espace utilisé dans le volume Btrfs monté dans /mnt : | ||
- | <code user>Btrfs filesystem df /mnt</code> | + | <code user>btrfs filesystem df /mnt</code> |
<file>Data, single: total=27.00GiB, used=24.28GiB | <file>Data, single: total=27.00GiB, used=24.28GiB | ||
System, DUP: total=32.00MiB, used=4.00KiB | System, DUP: total=32.00MiB, used=4.00KiB | ||
Ligne 148: | Ligne 149: | ||
Pour avoir des informations sur le disque, l'UUID du volume etc : | Pour avoir des informations sur le disque, l'UUID du volume etc : | ||
- | <code root>Btrfs filesystem show /mnt</code> | + | <code root>btrfs filesystem show /mnt</code> |
<file>Label: none uuid: a69d9182-f4c7-4276-b35d-7d5f9bd50a57 | <file>Label: none uuid: a69d9182-f4c7-4276-b35d-7d5f9bd50a57 | ||
Total devices 1 FS bytes used 25.98GiB | Total devices 1 FS bytes used 25.98GiB | ||
Ligne 167: | Ligne 168: | ||
On peut aussi voir si le disque a fait des erreurs | On peut aussi voir si le disque a fait des erreurs | ||
- | <code root>Btrfs device stats /dev/sdX</code> | + | <code root>btrfs device stats /dev/sdX</code> |
<file>[/dev/sdX].write_io_errs 0 | <file>[/dev/sdX].write_io_errs 0 | ||
[/dev/sdX].read_io_errs 0 | [/dev/sdX].read_io_errs 0 | ||
Ligne 179: | Ligne 180: | ||
Pour créer un subvolume : | Pour créer un subvolume : | ||
- | <code root>Btrfs subvolume create NOM</code> | + | <code root>btrfs subvolume create NOM</code> |
Pour avoir la liste des subvolumes dans le volume Btrfs : | Pour avoir la liste des subvolumes dans le volume Btrfs : | ||
- | <code root>Btrfs subvolume list /mnt</code> | + | <code root>btrfs subvolume list /mnt</code> |
==== Monter un subvolume ==== | ==== Monter un subvolume ==== | ||
Ligne 194: | Ligne 195: | ||
Pour réaliser un snapshot du subvolume NOM : | Pour réaliser un snapshot du subvolume NOM : | ||
- | <code root>Btrfs subvolume snapshot NOM SNAP</code> | + | <code root>btrfs subvolume snapshot NOM SNAP</code> |
===== La compression ===== | ===== La compression ===== | ||
Ligne 203: | Ligne 204: | ||
Pour compresser un volume non compressé ou changer le type de compression (à chaud bien sur !): | Pour compresser un volume non compressé ou changer le type de compression (à chaud bien sur !): | ||
- | <code root>Btrfs filesystem defragment -r -v -clzo /point-de-montage</code> | + | <code root>btrfs filesystem defragment -r -v -clzo /point-de-montage</code> |
===== Maintenance ===== | ===== Maintenance ===== | ||
Ligne 211: | Ligne 212: | ||
Scrub permet de vérifier à chaud le système de fichiers. Les données et métadonnées sont lues et les sommes de contrôle sont vérifiées, les données corrompues sont identifiées et réparées. | Scrub permet de vérifier à chaud le système de fichiers. Les données et métadonnées sont lues et les sommes de contrôle sont vérifiées, les données corrompues sont identifiées et réparées. | ||
- | <code root>Btrfs scrub start /point-de-montage</code> | + | <code root>btrfs scrub start /point-de-montage</code> |
On peut changer la commande **start** avec **cancel** pour stopper la vérif, **pause**, et **status** pour voir l'état d'une vérif en cours. | On peut changer la commande **start** avec **cancel** pour stopper la vérif, **pause**, et **status** pour voir l'état d'une vérif en cours. | ||
Ligne 219: | Ligne 220: | ||
Balance ré-alloue les données dans le système de fichier. C'est particulièrement utile lorsqu'on a un système de fichiers en RAID et qu'un disque est ajouté ou retiré. Les copies manquantes sont ainsi régénérées. | Balance ré-alloue les données dans le système de fichier. C'est particulièrement utile lorsqu'on a un système de fichiers en RAID et qu'un disque est ajouté ou retiré. Les copies manquantes sont ainsi régénérées. | ||
- | <code root>Btrfs balance start /point-de-montage</code> | + | <code root>btrfs balance start /point-de-montage</code> |
Idem que pour scrub pour les commandes **start**, **cancel** et **status**. | Idem que pour scrub pour les commandes **start**, **cancel** et **status**. | ||
- | ===== RAID 0 1 (5/6) et 10 ===== | + | ===== RAID 0 1 et 10 ===== |
Si on dispose de plusieurs disques il est possible d'activer la redondance logicielle des données. Si vous voulez plus d'information sur le RAID : https://fr.wikipedia.org/wiki/RAID_%28informatique%29 | Si on dispose de plusieurs disques il est possible d'activer la redondance logicielle des données. Si vous voulez plus d'information sur le RAID : https://fr.wikipedia.org/wiki/RAID_%28informatique%29 | ||
Ligne 231: | Ligne 232: | ||
On crée un système de fichier sur ces deux disques : | On crée un système de fichier sur ces deux disques : | ||
- | <code root>mkfs.Btrfs /dev/sda /dev/sdb</code> | + | <code root>mkfs.btrfs /dev/sda /dev/sdb</code> |
On monte le volume : | On monte le volume : | ||
Ligne 237: | Ligne 238: | ||
Si on décide d'augmenter la taille de ce volume (à chaud) en ajoutant un disque /dev/sdc : | Si on décide d'augmenter la taille de ce volume (à chaud) en ajoutant un disque /dev/sdc : | ||
- | <code root>Btrfs device add /dev/sdc</code> | + | <code root>btrfs device add /dev/sdc</code> |
puis on ré-alloue les données en utilisant les 3 disques. | puis on ré-alloue les données en utilisant les 3 disques. | ||
- | <code root>Btrfs balance start /mnt</code> | + | <code root>btrfs balance start /mnt</code> |
Par défaut Btrfs utilise RAID0, pour passer en RAID1 : | Par défaut Btrfs utilise RAID0, pour passer en RAID1 : | ||
- | <code root>Btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt</code> | + | <code root>btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt</code> |
Il est aussi possible de supprimer des disques si nécessaire. | Il est aussi possible de supprimer des disques si nécessaire. | ||
Ligne 256: | Ligne 257: | ||
* C'est la méthode la plus élégante, puisqu'elle est très flexible. | * C'est la méthode la plus élégante, puisqu'elle est très flexible. | ||
* Je ne vais pas détailler cette méthode ici, il y a des tutoriels bien faits [[:doc:install:debootstrap-chroot|(par exemple ici)]]. Sachez juste qu'il suffit au moment du montage des partitions d'ajouter dans les options de montage **subvol=//chemin/vers/le/subvolume/racine//** pour utiliser le subvolume comme racine. | * Je ne vais pas détailler cette méthode ici, il y a des tutoriels bien faits [[:doc:install:debootstrap-chroot|(par exemple ici)]]. Sachez juste qu'il suffit au moment du montage des partitions d'ajouter dans les options de montage **subvol=//chemin/vers/le/subvolume/racine//** pour utiliser le subvolume comme racine. | ||
- | * Grub sait maintenant bien gérer le Btrfs même à l'intérieur d'un subvolume. Par contre, dans le cas d'un multi-boot, os-prober ne va pas fouiller dans tous les subvolumes, donc votre nouveau système ne saura pas trouvé par la commande update-grub d'un autre système. Je propose une méthode plus bas. | + | * Grub sait maintenant bien gérer le Btrfs même à l'intérieur d'un subvolume. Par contre, dans le cas d'un multi-boot, os-prober ne va pas fouiller dans tous les subvolumes, donc votre nouveau système ne saura pas trouvé par la commande update-grub d'un autre système. [[syntax#GRUB|Je propose une méthode plus bas]]. |
* La méthode d'installation via chroot est utilisée par Arch et Gentoo entre autre. Il est donc simple d'installer ces distributions dans un subvolume. | * La méthode d'installation via chroot est utilisée par Arch et Gentoo entre autre. Il est donc simple d'installer ces distributions dans un subvolume. | ||
* Utiliser le mode d'installation expert pour installer Debian dans un subvolume. | * Utiliser le mode d'installation expert pour installer Debian dans un subvolume. | ||
Ligne 293: | Ligne 294: | ||
On monte le volume Btrfs dans /mnt | On monte le volume Btrfs dans /mnt | ||
- | <code root>mount -t Btrfs -o ..options.. /dev/sdaX /mnt</code> | + | <code root>mount -t btrfs -o ..options.. /dev/sdaX /mnt</code> |
On va créer les subvolumes où l'on désire installer Debian : | On va créer les subvolumes où l'on désire installer Debian : | ||
<code root>cd /mnt | <code root>cd /mnt | ||
- | Btrfs subvolume create debian | + | btrfs subvolume create debian |
cd debian | cd debian | ||
- | Btrfs subvolume create root | + | btrfs subvolume create root |
- | Btrfs subvolume create home | + | btrfs subvolume create home |
</code> | </code> | ||
Ligne 309: | Ligne 310: | ||
<code root>cd / | <code root>cd / | ||
mkdir -p /target | mkdir -p /target | ||
- | mount -t Btrfs -o ..options..,subvol=debian/root /dev/sdaX /target | + | mount -t btrfs -o ..options..,subvol=debian/root /dev/sdaX /target |
mkdir /target/home | mkdir /target/home | ||
- | mount -t Btrfs -o ..options..,subvol=debian/home /dev/sdaX /target/home | + | mount -t btrfs -o ..options..,subvol=debian/home /dev/sdaX /target/home |
(umount /mnt) | (umount /mnt) | ||
cat /proc/self/mountinfo | cat /proc/self/mountinfo | ||
Ligne 355: | Ligne 356: | ||
Toujours dans l'installateur Debian installez grub. **__Mais n'installez pas le programme de démarrage GRUB sur le secteur d'amorçage !__** | Toujours dans l'installateur Debian installez grub. **__Mais n'installez pas le programme de démarrage GRUB sur le secteur d'amorçage !__** | ||
- | <note>vous pourrez désinstaller grub une fois que vous aurez booté le "nouveau" système. \\ | + | <note>Vous pourrez désinstaller grub une fois que vous aurez booté le "nouveau" système. \\ |
Vous pouvez aussi continuer sans programme d’amorçage et utiliser le modèle de fichier 40_custom donné ci dessous **à vos risques et périls**</note> | Vous pouvez aussi continuer sans programme d’amorçage et utiliser le modèle de fichier 40_custom donné ci dessous **à vos risques et périls**</note> | ||
Ligne 424: | Ligne 425: | ||
<note warning> **Profitez en pour éditer le fstab du nouveau système :** | <note warning> **Profitez en pour éditer le fstab du nouveau système :** | ||
- | <code>nano /mnt/debian/root/etc/fstab</code> | + | <code root>nano /mnt/debian/root/etc/fstab</code> |
- | <file fstab>UUID=a69d9182-f4c7-4276-b35d-7d5f9bd50a57 / Btrfs rw,noatime,ssd,discard,autodefrag,subvol=debian/root 0 0 | + | <file fstab>#l'entrée pour la racine |
+ | UUID=a69d9182-f4c7-4276-b35d-7d5f9bd50a57 / Btrfs rw,noatime,ssd,discard,autodefrag,subvol=debian/root 0 0 | ||
+ | #l'entrée pour le home | ||
UUID=a69d9182-f4c7-4276-b35d-7d5f9bd50a57 /home Btrfs rw,noatime,ssd,discard,autodefrag,subvol=debian/home 0 0 | UUID=a69d9182-f4c7-4276-b35d-7d5f9bd50a57 /home Btrfs rw,noatime,ssd,discard,autodefrag,subvol=debian/home 0 0 | ||
+ | #swap et tmpfs | ||
swap... | swap... | ||
tmpfs /tmp tmpfs default 0 0 | tmpfs /tmp tmpfs default 0 0 | ||
Ligne 442: | Ligne 446: | ||
<code root>cp 40_custom 41_debian2 | <code root>cp 40_custom 41_debian2 | ||
chmod +x 41_debian2</code> | chmod +x 41_debian2</code> | ||
- | et changer les subvolumes dans le menuentry. | + | Changer les subvolumes dans le menuentry pour correspondre au snapshot. |
+ | <code root>update-grub</code> | ||
C'est pratique pour : | C'est pratique pour : | ||
Ligne 461: | Ligne 466: | ||
Snapper est un programme qui gère les snapshots et qui a été développé par OpenSuse ((http://snapper.io/manpages/snapper.html)). | Snapper est un programme qui gère les snapshots et qui a été développé par OpenSuse ((http://snapper.io/manpages/snapper.html)). | ||
- | <code> apt-get install snapper | + | <code root> apt-get install snapper |
man snapper</code> | man snapper</code> | ||
Pour des snapshots automatiques de la racine : | Pour des snapshots automatiques de la racine : | ||
- | <code>snapper -c root create-config /</code> | + | <code root>snapper -c root create-config /</code> |
Ceci va créer un subvolume /.snapshot à la racine et les snapshots seront placés dedans. | Ceci va créer un subvolume /.snapshot à la racine et les snapshots seront placés dedans. | ||
Les snaphots se font toutes les heures | Les snaphots se font toutes les heures | ||
Ligne 481: | Ligne 486: | ||
<note> Notez encore une fois que les snapshots ne sont pas récursifs ! \\ | <note> Notez encore une fois que les snapshots ne sont pas récursifs ! \\ | ||
Si vous avez /home dans un subvolume, alors votre /home ne sera pas snapshotté. | Si vous avez /home dans un subvolume, alors votre /home ne sera pas snapshotté. | ||
- | recréez alors une configuration pour home <code>snapper -c home create-config /home</code></note> | + | recréez alors une configuration pour home <code root>snapper -c home create-config /home</code></note> |
Voici ce que vous aurez une semaine après : | Voici ce que vous aurez une semaine après : | ||
- | <code>snapper list</code> | + | <code user>snapper list</code> |
<file>Type | # | Pré # | Date | Utilisateur | Nettoyage | Description | Données utilisateur | <file>Type | # | Pré # | Date | Utilisateur | Nettoyage | Description | Données utilisateur | ||
-------+-----+-------+--------------------------------+-------------+-----------+-------------+-------------------- | -------+-----+-------+--------------------------------+-------------+-----------+-------------+-------------------- | ||
Ligne 516: | Ligne 521: | ||
Le principe de base est simple : un [[:doc:programmation:shell:scripts|script bash]] et [[:doc:systeme:crontab|cron]]. | Le principe de base est simple : un [[:doc:programmation:shell:scripts|script bash]] et [[:doc:systeme:crontab|cron]]. | ||
- | <code>btrfs subvolume snapshot /home/btrfs/debian/home /home/btrfs/snapshots/home-backup-$(date)</code> | + | <code root>btrfs subvolume snapshot /home/btrfs/debian/home /home/btrfs/snapshots/home-backup-$(date)</code> |