logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

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 → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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 [13/03/2014 03:34]
martinux_qc [Principes de base]
doc:systeme:btrfs [07/04/2015 19:05]
milou [BTRFS]
Ligne 3: Ligne 3:
   * Objet : Le système de fichiers BTRFS   * Objet : Le système de fichiers BTRFS
   * Niveau requis : {{tag>​avisé}}   * Niveau requis : {{tag>​avisé}}
-  * 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}} +  ​* Commentaires : //Les principes et commandes principales pour utiliser le BTRFS, les snapshots, les sauvegardes...//​ 
-    * Création par **louispolaire** 12/03/2014+  ​* Suivi : {{tag>à-tester}} 
 +    * Création par [[user>louispolaire]] 12/03/2014
     * Testé par <...> le <...> FIXME     * Testé par <...> le <...> FIXME
   * Commentaires sur le forum : [[http://​debian-facile.org/​viewtopic.php?​id=8616 | Lien vers le forum concernant ce tuto]] ((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))   * Commentaires sur le forum : [[http://​debian-facile.org/​viewtopic.php?​id=8616 | Lien vers le forum concernant ce tuto]] ((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
 +
 +Ce Tuto est divisé en trois parties
 +  * Cette première partie présente les principes du  Btrfs et les commandes de base. À la fin de ce tuto vous serez capable de comprendre la terminologie de Btrfs, de créer un volume et de gérer les subvolumes et snapshots.
 +  * [[:​doc:​systeme:​btrfs-root-install-subvol|La deuxième partie présente l'​installation de Debian dans un subvolume]]. À la fin de ce tuto vous serez capable d'​installer Debian dans un subvolume et de modifier Grub pour y booter.
 +  * [[:​doc:​systeme:​btrfs-sauvegarde|La troisième partie présente différentes méthodes pour réaliser des sauvegardes des subvolumes]]. A la fin de cette partie vous aurez des pistes pour élaborer une stratégie de backup de vos données sur Btrfs. ​
  
  
Ligne 14: Ligne 19:
  
 Btrfs est un système de fichiers pour Linux qui a pour but d'​implémenter des fonctionnalités avancées tout en se focalisant sur la résistance aux pannes, les réparations et une administration simple. Btrfs est un système de fichiers pour Linux qui a pour but d'​implémenter des fonctionnalités avancées tout en se focalisant sur la résistance aux pannes, les réparations et une administration simple.
-Sans entrer dans des détails techniques, voici quelques spécificités de BTRFS comparé aux systèmes de fichiers classiques ext3 ext3.+Sans entrer dans des détails techniques, voici quelques spécificités de BTRFS comparé aux systèmes de fichiers classiques ext3 et ext4.
  
 === Sous volumes - Subvolumes === === Sous volumes - Subvolumes ===
  
-Au sein d'un système de fichiers BTRFS, un "sous-volume"​ (subvolume) est représenté comme un dossier classique. Il présente cependant les avantages suivants :+Au sein d'un système de fichiers BTRFS,un "sous volume"​ (subvolume) est représenté comme un dossier classique. Il présente cependant les avantages suivants :
   * C'est un sous-système de fichiers, il peut donc être monté, par exemple via la commande mount ou dans /etc/fstab.   * C'est un sous-système de fichiers, il peut donc être monté, par exemple via la commande mount ou dans /etc/fstab.
   * Il permet l'​utilisation des snapshots.   * Il permet l'​utilisation des snapshots.
Ligne 24: Ligne 29:
 === Instantanés - Snapshots === === Instantanés - Snapshots ===
  
-Un instantané (snapshot) est un subvolume qui a été créé comme une "​photographie"​ d'un autre subvolume à un moment donné. L'​avantage d'un snapshot est que même si les données sont disponible deux fois sur le système de fichiers, les données ne sont pas dédoublées sur le disque. Seules les modifications faites au subvolume original ou au snapshot seront écrites sur le disque. Ainsi au moment de la création d'un snapshot, la taille sur le disque du snapshot est quasi-nulle. Ce n'est qu'au fil des modifications que sa taille sur le disque va augmenter. Ceci est par exemple très utile pour créer des branches d'un système ou pour les sauvegardes.+Un instantané (snapshot) est un subvolume qui a été créé comme une "​photographie"​ d'un autre subvolume à un moment donné. L'​avantage d'un snapshot est que même si les données sont disponible deux fois sur le système de fichiers, les données ne sont pas dédoublées sur le disque. Seules les modifications faites au subvolume original ou au snapshot seront écrites sur le disque. Ainsi au moment de la création d'un snapshot, la taille sur le disque du snapshot est quasi-nulle. Ce n'est qu'au fil des modifications que sa taille sur le disque va augmenter ​puisque Btrfs va écrire les modifications sur le disque. Ceci est par exemple très utile pour créer des branches d'un système ou pour les sauvegardes. ​ 
 + 
 +=== RAID logiciel 0,1 & 10 === 
 + 
 +Btrfs gère le RAID en logiciel, c-a-d la réplication des données sur plusieurs disques. Pour la théorie voir ici : https://​fr.wikipedia.org/​wiki/​RAID_%28informatique%29 
 +Pour l'​instant Btrfs gère bien 3 types de RAID:
  
-=== RAID logiciel ​0 1 (5/6) 10 ===+  * RAID-: {{/​file-R0ab608c6eef8e74f926f9c1e89753a99.png?​150}} 
 +    Une forme de RAID qui ne permet pas de réparer les erreurs, mais qui répartit une seule copie des données sur plusieurs volumes. Il y a un gain de performance (2X) en lecture et en écriture si les deux volumes sont sur des disques distincts.  
 +  * RAID-: {{/​file-R595a2d853196c5b38ceee5d98032baeb.png?​150}} 
 +    Une forme de RAID qui stocke 2 copies complètes sur chacun des disques. Btrfs nécessite au minimum deux partitions pour utiliser le RAID-1. Les métadonnées sont en RAID-1 par défaut dans le cas d'un seul disque. On peut donc utiliser le RAID-1 avec Btrfs sur un seul disque. Il suffit d'y avoir 2 partitions ​(/dev/sda1 et /dev/sda2et Btrfs répliquera les données entre ces deux partitions. Évidemment en cas de panne du disque ce type de RAID-1 ne sert à rien. Il faut utiliser 2 disques pour être protégé contre ce type de pannes. 
 +  * RAID-10 : {{/​file-R50e12f7892e267e5d020f7fd98009870.png?​250}} 
 +    Une forme de RAID qui stocke 2 copies complètes des données et répartit également chaque copie sur plusieurs volumes d'où un gain de performance. Il faut au minimum 4 volumes pour pouvoir utiliser le RAID-10. 
 +  * RAID-5 et RAID-6 ne sont pas encore totalement implémentés dans Btrfs.
  
 === Opérations à chaud === === Opérations à chaud ===
Ligne 36: Ligne 52:
  
 Btrfs a cependant certaines limites : Btrfs a cependant certaines limites :
-  * Il n'a pas de fonction de cryptage des données. Il est cependant possible de crée un volume ​btrfs dans un partition créée avec dm-crypt.+  * Il n'a pas de fonction de cryptage des données. Il est cependant possible de crée un volume ​Btrfs dans un partition créée avec dm-crypt.
   * Il gère pas les fichier de swap. il est cependant possible de contourner le problème au prix de la performance ((https://​btrfs.wiki.kernel.org/​index.php/​FAQ#​Does_btrfs_support_swap_files.3F))   * Il gère pas les fichier de swap. il est cependant possible de contourner le problème au prix de la performance ((https://​btrfs.wiki.kernel.org/​index.php/​FAQ#​Does_btrfs_support_swap_files.3F))
-  * Les snapshots ne sont pas récursifs. C'est-à-dire que si on réalise un snapshot d'un subvolume comportant des subvolumes-enfants,​ dans le snaphot ​les subvolumes-enfants ​apparaitrons ​comme des dossiers vides.+  * Les snapshots ne sont pas récursifs. C'est à dire que si on réalise un snapshot d'un subvolume comportant des subvolumes-enfants,​ dans le snapshot ​les subvolumes-enfants ​apparaîtrons ​comme des dossiers vides.
  
 <note warning>​Ce tuto présente des commandes qui, mal utilisées peuvent mener à la perte de vos données. \\  <note warning>​Ce tuto présente des commandes qui, mal utilisées peuvent mener à la perte de vos données. \\ 
 Sauvegardez vos données !!</​note>​ Sauvegardez vos données !!</​note>​
 <note important>​Btrfs est en cours de développement. Bien que le format du système de fichier soit considéré comme stable par les développeurs ((https://​btrfs.wiki.kernel.org/​index.php/​Main_Page#​Stability_status)),​ les outils qui permettent de le manipuler sont eux en développement.\\ ​ <note important>​Btrfs est en cours de développement. Bien que le format du système de fichier soit considéré comme stable par les développeurs ((https://​btrfs.wiki.kernel.org/​index.php/​Main_Page#​Stability_status)),​ les outils qui permettent de le manipuler sont eux en développement.\\ ​
-Il est dont **important d'​utiliser un kernel __à jour__ (>= 3.12)** et la version la plus à jour de btrfs-tools ( 3.12-1 à ce jour)</​note>​+Il est donc **important d'​utiliser un kernel __à jour__ (>= 3.12)** et **la version la plus à jour de Btrfs-tools ( 3.12-1 à ce jour)**</​note>​
  
 ===== Installation ===== ===== Installation =====
  
-Btrfs est inclu dans le kernel de base, Cependant il est vivement recommandé d'​utiliser un kernel le plus à jour possible (et >= 3.12)+Btrfs est inclus ​dans le kernel de base, Cependant il est vivement recommandé d'​utiliser un kernel le plus à jour possible (et >= 3.12)
  
 Les outils de gestion doivent être installés. Les outils de gestion doivent être installés.
Ligne 56: Ligne 72:
 ==== Création d'un nouveau système de fichiers ==== ==== Création d'un nouveau système de fichiers ====
  
-Pour formatter ​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 etre 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.
  
 === Le partitionnement === === Le partitionnement ===
Ligne 72: Ligne 88:
 ==== Convertir un système ext3 / ext4 ==== ==== Convertir un système ext3 / ext4 ====
  
-Il est possible de convertir un système ext3 ou ext4 en btrfs.+Il est possible de convertir un système ext3 ou ext4 en Btrfs.
 Si on a une partition /dev/sdX1 en ext4 Si on a une partition /dev/sdX1 en ext4
  
Ligne 80: Ligne 96:
 mount /dev/sdX1 /​point-de-montage</​code>​ mount /dev/sdX1 /​point-de-montage</​code>​
  
-Remontez manuellement la partition et verifiez ​que tous les fichiers sont là. Si la partition se chargeait via /etc/fstab modifiez le [[syntax#En utilisant fstab|(cf Section sur fstab)]]. À la racine de la partition /dev/sdX1 vous trouverez un subvolume "​ext2_saved"​ qui comporte une image de l'​ancien système de fichiers.+Remontez manuellement la partition et vérifiez ​que tous les fichiers sont là. Si la partition se chargeait via /etc/fstab modifiez le [[#en-utilisant-etc-fstab|(cf Section sur fstab)]]. À la racine de la partition /dev/sdX1 vous trouverez un subvolume "​ext2_saved"​ qui comporte une image de l'​ancien système de fichiers.
  
 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</​code>​+btrfs subvolume delete /ext2_saved 
 +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>​
Ligne 93: Ligne 110:
  
 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 ^
 +|autodefrag|Autorise la défragmentation en arrière plan|
 +|compress=zlib|La compression la plus importante. Par défaut|
 +|compress=lzo|La compression la plus rapide|
 +|compress=no|Pas de compression|
 +|degraded|Utilisé dans le cas des RAID. Permet de monter le volume même si certains disques sont manquants|
 +|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 +)|
 +|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|
 +|subvolid=//​id//​|Permet de monter un subvolume par son id. La racine a un id=0|
  
 === Pour un SSD === === Pour un SSD ===
Ligne 99: Ligne 128:
 <code root>​mount /dev/sdX1 -o rw,​noatime,​ssd,​discard,​autodefrag,​compress=lzo,​space_cache,​inode_cache /​mnt</​code>​ <code root>​mount /dev/sdX1 -o rw,​noatime,​ssd,​discard,​autodefrag,​compress=lzo,​space_cache,​inode_cache /​mnt</​code>​
  
-les options les plus importantes pour un ssd sont "​ssd"​ et "​discard"​.+Les options les plus importantes pour un ssd sont "​ssd"​ et "​discard"​.
  
 === Pour un HDD === === Pour un HDD ===
Ligne 113: Ligne 142:
 Exemple de ligne dans /etc/fstab : Exemple de ligne dans /etc/fstab :
  
-<​file>​UUID=a69d9182-f4c7-4276-b35d-7d5f9bd50a57 ​     /mnt      ​btrfs      ​rw,​noatime,​ssd,​discard,​autodefrag ​     0      0</​file>​+<​file ​fstab>​UUID=a69d9182-f4c7-4276-b35d-7d5f9bd50a57 ​     /mnt      ​Btrfs      ​rw,​noatime,​ssd,​discard,​autodefrag ​     0      0</​file>​
  
 ==== Outils d'​audit ==== ==== Outils d'​audit ====
  
-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
Ligne 123: Ligne 152:
 Metadata, DUP: total=2.50GiB,​ used=1.70GiB</​file>​ Metadata, DUP: total=2.50GiB,​ used=1.70GiB</​file>​
  
-il y a 3 lignes : Data correspond aux données, System aux fichiers ​systeme ​du volume et Metadata aux métadonnées associées aux différents fichiers (sommes de controles ​etc...) la somme des used= correspond à l'​espace utilisé sur le disque. Vous noterez la différence avec la commande df -h.+il y a 3 lignes : Data correspond aux données, System aux fichiers ​système ​du volume et Metadata aux métadonnées associées aux différents fichiers (sommes de contrôles ​etc...) la somme des used= correspond à l'​espace utilisé sur le disque. Vous noterez la différence avec la commande df -h.
  
 Pour avoir des informations sur le disque, l'UUID du volume etc : Pour avoir des informations sur le disque, l'UUID du volume etc :
Ligne 158: Ligne 187:
 Pour créer un subvolume : Pour créer un subvolume :
 <code root>​btrfs subvolume create NOM</​code>​ <code root>​btrfs subvolume create NOM</​code>​
 +
 +Un subvolume apparaît dans votre gestionnaire de fichiers comme un dossier. Vous pouvez le manipuler comme tel.
 +Par contre la suppression devra se faire avec **btrfs subvolume delete SNAP**.
 +
 +Pour avoir la liste des subvolumes dans le volume Btrfs :
 +<code root>​btrfs subvolume list /​mnt</​code>​
 +
 +Pour supprimer un subvolume :
 +<code root>​btrfs subvolume delete NOM</​code>​
  
 ==== Monter un subvolume ==== ==== Monter un subvolume ====
Ligne 170: Ligne 208:
 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>​
 +
 +Il est possible de réaliser des snapshots en lecture seule avec l'​option **-r**.
 +
 +Un snapshot est un subvolume comme un autre, c'est juste sa méthode de création qui change.
 +En tant que subvolume vous pouvez le manipuler comme un dossier, avec cd, ls, mv etc... La suppression devra se faire avec **btrfs subvolume delete SNAP**.
 +
 +Par exemple si vous voulez remplacer le subvolume NOM par le subvolume(ex-snapshot) SNAP
 +<code user>ls /​point-de-montage</​code>​
 +<​code>​NOM SNAP</​code>​
 +<code user>cd /​point-de-montage
 +mv NOM NOM_old
 +mv SNAP NOM
 +ls /​point-de-montage/</​code>​
 +<​code>​NOM NOM_old</​code>​
 +Et on peut faire un snapshot de snapshot...
 +<code root>
 +btrfs subvolume snapshot NOM NOM_snap
 +btrfs subvolume snapshot NOM_snap NOM_snap_snap
 +ls /​point-de-montage</​code>​
 +<​code>​NOM NOM_old NOM_snap NOM_snap_snap</​code>​
 +
 +Et pendant ce temps là si aucune modification n'est faire dans les subvolumes/​snapshots... L'​espace libre sur le disque reste le même.
  
 ===== La compression ===== ===== La compression =====
Ligne 192: Ligne 252:
 ==== Balance ==== ==== Balance ====
  
-Balance ​réalloue ​les données dans le système de fichier. C'est particulièrement utile lorsqu'​on a un systeme ​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>​
Ligne 198: Ligne 258:
 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 204: Ligne 264:
 Par exemple si on a deux disques /dev/sda et /​dev/​sdb ​ Par exemple si on a deux disques /dev/sda et /​dev/​sdb ​
  
-On crée un systeme ​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>​
Ligne 213: Ligne 273:
 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>​
  
Ligne 219: Ligne 279:
 <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écéssaire. +Il est aussi possible de supprimer des disques si nécessaire.
- +
-===== Installation de / (root) dans un volume btrfs ===== +
- +
-==== Installation dans un subvolume ==== +
- +
-===== Backups incrémentales ===== +
- +
-==== Sur un même volume physique ==== +
- +
-=== snapper === +
- +
-=== Manuellement === +
- +
-==== Entre deux volumes physiques ==== +
- +
-On a deux disques formatés en btrfs /dev/sda monté en /mnt/sda et /dev/sdb monté en /mnt/sdb. +
- +
-== Mise à jour initiale == +
- +
-On veut sauvegarder le subvolume home qui se trouve dans /​mnt/​sda/​home et l'​envoyer dans /mnt/sdb. +
- +
-On réalise un snapshot de home en lecture seule +
-<code root>​btrfs subvolume snapshot -r /​mnt/​sda/​home /​mnt/​sda/​home@a-envoyer</​code>​ +
- +
-On l'​envoie sur /mnt/sdb +
-<code root>​btrfs send /​mnt/​sda/​home@a-envoyer | btrfs receive /​mnt/​sdb/</​code>​ +
- +
-On a maintenant la configuration suivante : +
-^/dev/sda ^/dev/sdb ^ +
-|home| | +
-|home@a-envoyer|home@a-envoyer| +
- +
-On renomme les snapshots pour l'​étape suivante et on réalise un snapshot de home@a-envoyer qui ne soit pas en lecture seule : +
-<code root>mv /​mnt/​sda/​home@a-envoyer /​mnt/​sda/​home@envoye +
-mv /mnt /​sdb/​home@a-envoyer /​mnt/​sdb/​home@envoye +
-btrfs subvolume snapshot /​mnt/​sdb/​home@envoye /​mnt/​sdb/​home</​code>​ +
- +
-On a ainsi deux subvolumes home qui sont identiques sur sda et sdb. +
-^/dev/sda ^/dev/sdb ^ +
-|home|home| +
-|home@envoye|home@envoye| +
- +
-== Maintenant pour la mise a jour incrémentale : == +
- ​Après avoir fait des modification dans /​mnt/​sda/​home on réalise un nouveau snapshot en lecture seule : +
-<code root>​btrfs subvolume snapshot -r home home@a-envoyer</​code>​ +
-On a donc : +
-^/dev/sda ^/dev/sdb ^ +
-|home (modifié)|home| +
-|home@envoye|home@envoye| +
-|home@a-envoyer (modifié)| | +
- +
-On signifie à **btrf send** qu'il ne faut envoyer que les différences entre home@envoye et home@a-envoyer +
-<​note>​Ce qui est très intéressant parce que les différences ne se font pas au niveau des fichiers mais des clunks, ainsi si vous modifiez le une partie seulement d'un gros fichier, seuls les clunks correspondant aux modifications seront envoyés... du coup ça va __beaucoup__ plus vite.\\  +
-Mais cela veut aussi dire qu'il est important que le subvolume home@envoye soit présent et identique sur les deux disques et en lecture seule.</​note>​ +
-<code root> btrfs send -p /​mnt/​sda/​home@envoye /​mnt/​sda/​home@a-envoyer | btrfs receive /​mnt/​sdb/</​code>​ +
- +
-On a maintenant : +
-^/dev/sda ^/dev/sdb ^ +
-|home (modifié)|home| +
-|home@envoye|home@envoye| +
-|home@a-envoyer (modifié)|home@a-envoyer(modifié)| +
- +
-Il ne reste plus qu'a faire le ménage pour se préparer à répéter cette itération : +
-<code root>​btrfs subvolume delete /​mnt/​sda/​home@envoye +
-mv /​mnt/​sda/​home@a-envoyer /​mnt/​sda/​home@envoye +
-btrfs subvolume delete /​mnt/​sdb/​home@envoye +
-mv /​mnt/​sdb/​home@a-envoyer /​mnt/​sdb/​home@envoye +
-btrfs subvolume delete /​mnt/​sdb/​home +
-btrfs subvolume snapshot /​mnt/​sdb/​home@a-envoyer /​mnt/​sdb/​home</​code>​ +
- +
-Ce qui nous donne : +
-^/dev/sda ^/dev/sdb ^ +
-|home (modifié)|home (modifié)| +
-|home@envoye (modifié)|home@envoye (modifié)| +
- +
-On est prêt à recommencer dès que /​mnt/​sda/​home sera modifié ! Je vous conseille un petit script et une tache cron pour automatiser tout ça. +
- +
- +
-==== Entre deux machines via ssh ==== +
- +
-Les principes de bases sont les mêmes. +
-Dans ce cas /mnt/sdb se trouve sur le serveur root@stockage.local +
- +
-Pour la mise a jour initiale : +
-<code root>​btrfs send /​mnt/​sda/​home@a-envoyer | ssh root@stockage.local /sbin/btrfs receive /​mnt/​sdb</​code>​ +
- +
-Pour la mise a jour incrémentale : +
-<code root>​btrfs send -p /​mnt/​sda/​home@envoye /​mnt/​sda/​home@a-envoyer | ssh root@stockage.local /sbin/btrfs receive /​mnt/​sdb</​code>​ +
- +
-Note : pour la lisibilité du tuto je me connecte en root sur le serveur, ce n'est pas la meilleure idée. +
- +
-<​note>​Il est crucial que les subvolumes home@envoye soient identiques sur le serveur et le client. Sinon la trasaction échouera. Je conseille de vérifier que le transfer s'est bien passé comparant les md5sums. Inconvénient : c'est long et ça utilise le processeur.\\ +
-Il n'y a pas, à ma connaissance,​ de systeme de checksum accessible à l'​utilisateur intégré à btrfs. +
-J'​utilise donc un script qui compare les md5sums des ls chez le client et le serveur. +
-Sur le client : <code root>​export LANG=C  +
-cd /​mnt/​sda/​home@envoye +
-ls -lnARs > /tmp/md5 +
-md5sum /​tmp/​md5</​code>​ +
- +
-Sur le Serveur: <code root>ssh root@stockage.local "​LANG=C cd /​mnt/​sdb/​home@envoye && ls -lnARs"​ > /tmp/md5 +
-md5sum /​tmp/​md5</​code>​ +
- +
-Si les deux md5sum ne sont pas identiques alors il faut refaire une mise à jour complète.</​note>​ +
- +
  
 +===== Références ====
 +  * [[https://​btrfs.wiki.kernel.org|Le wiki de Btrfs]]
 +  * [[https://​wiki.archlinux.org/​index.php/​Btrfs|La page sur Btrfs sur le wiki d'​Archlinux]]
 +  * [[http://​zythmer.acyclic.org/​blog/​2013/​01/​27/​debian-full-disk-encryption-btrfs-subvolumes.html|http://​zythmer.acyclic.org/​blog/​2013/​01/​27/​debian-full-disk-encryption-btrfs-subvolumes.html]]
doc/systeme/btrfs.txt · Dernière modification: 01/07/2023 08:06 par Croutons

Pied de page des forums

Propulsé par FluxBB