Outils pour utilisateurs

Outils du site


btrfs

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édentesRévision précédente
Prochaine révision
Révision précédente
Prochaine révisionLes deux révisions suivantes
btrfs [2020/07/29 06:14] – [Migration de version de Linux Mint par ré-installation] sebsauvagebtrfs [2021/04/07 09:31] – [Compression] sebsauvage
Ligne 23: Ligne 23:
  
 <note>Je ne vais pas parler ici que de certaines fonctionnalités de btrfs, mais sachez qu'on peut aller beaucoup plus loin, comme faire du RAID logiciel, faire un miroir quasi-temps réel d'un disque vers une autre machine, ou encore //remplacer à chaud un disque dur sans arrêter le système// (!)</note> <note>Je ne vais pas parler ici que de certaines fonctionnalités de btrfs, mais sachez qu'on peut aller beaucoup plus loin, comme faire du RAID logiciel, faire un miroir quasi-temps réel d'un disque vers une autre machine, ou encore //remplacer à chaud un disque dur sans arrêter le système// (!)</note>
 +
 +<note important>**Il ne faut pas utiliser btrfs pour des supports amovibles.** En particulier les supports USB qui posent problème (problème non lié à btrfs mais à la qualité des pilotes USB).</note>
  
  
Ligne 68: Ligne 70:
     * Notez que si vous désactivez CoW sur un répertoire, tout nouveau fichier créé dans ce répertoire aura également CoW désactivé.     * Notez que si vous désactivez CoW sur un répertoire, tout nouveau fichier créé dans ce répertoire aura également CoW désactivé.
     * Un fichier marqué en "NOCOW" ne pourra pas bénéficier de la compression (voir plus loin).     * Un fichier marqué en "NOCOW" ne pourra pas bénéficier de la compression (voir plus loin).
 +
 +<note>Le fait de faire une défragmentation casse les liens de déduplication. Cela n'a aucun impact sur l'intégrité des données, mais si vous aviez des fichiers dédupliqués (par exemple avec jdupes), avec la défragmentation chaque fichier se retrouve avec sa copie des données. L'occupation de l'espace disque sera donc supérieure. Il sera nécessaire de refaire une déduplication après la défragmentation pour récupérer l'espace.</note>
  
 === atime === === atime ===
Ligne 196: Ligne 200:
  
 Il y a donc 2 endroits où vous pouvez compresser: Il y a donc 2 endroits où vous pouvez compresser:
-  * **Dans les options de montage de la partition btrfs** (en ajoutant ''compress=...'' dans ''fstab''). Cela activera la compression des données à l'écriture.+  * **Dans les options de montage de la partition btrfs** (en ajoutant ''compress=...'' ou ''compress-force=...'' dans ''fstab''). Cela activera la compression des données à l'écriture.
   * **En compressant manuellement des fichiers/répertoire** (''sudo btrfs filesystem defragment -r -v -czstd /répertoire''). Vous pouvez faire cela même si l'option de compression n'est pas active dans les options de montage. btrfs saura lire et manipuler ces fichiers compressés sans problème.   * **En compressant manuellement des fichiers/répertoire** (''sudo btrfs filesystem defragment -r -v -czstd /répertoire''). Vous pouvez faire cela même si l'option de compression n'est pas active dans les options de montage. btrfs saura lire et manipuler ces fichiers compressés sans problème.
  
Ligne 219: Ligne 223:
       * Après compression: //Used: 5.04 GiB / Free (estimated) : 33.11 GiB//       * Après compression: //Used: 5.04 GiB / Free (estimated) : 33.11 GiB//
       * On gagne 4 Go d'un coup !       * On gagne 4 Go d'un coup !
-  * Pour que les nouveaux fichiers créés soient compressés automatiquement, modifier ''/etc/fstab'' en ajoutant dans les options de montage ''compress=zstd''.+  * Pour que les nouveaux fichiers créés soient compressés automatiquement, modifier ''/etc/fstab'' en ajoutant dans les options de montage ''compress-force=zstd''.
   * La compression a un peu d'intelligence: Si le début d'un fichier se compresse mal, btrfs ne compressera pas le fichier (même si la compression est active dans les options). btrfs ne devrait donc pas perdre de temps à essayer de compresser les archive 7z/zip, les vidéos mp4, etc.   * La compression a un peu d'intelligence: Si le début d'un fichier se compresse mal, btrfs ne compressera pas le fichier (même si la compression est active dans les options). btrfs ne devrait donc pas perdre de temps à essayer de compresser les archive 7z/zip, les vidéos mp4, etc.
   * La compression s'effectue au niveau blocs et pas au niveau fichiers.   * La compression s'effectue au niveau blocs et pas au niveau fichiers.
Ligne 252: Ligne 256:
  
 \\  \\ 
 +
 +==== Comment lire un compte-rendu de compsize ====
 +
 +<code>Type       Perc     Disk Usage   Uncompressed Referenced  
 +TOTAL       65%      1.4G         2.1G         4.0G  </code>
 +
 +  * Ce dossier contient 4 Go de données.
 +  * Certains fichiers (dans différents sous-répertoires) ont un contenu identique. Avec la déduplication, il n'y a donc que 2,1 Go de données uniques dans ce répertoire.
 +  * Avec la compression, ces 2,1 Go se compressent en 1,4 Go.  
 +  * Donc ce dossier contenant 4 Go de fichiers n'occupe que 1,4 Go sur disque.
  
 ---- ----
Ligne 261: Ligne 275:
  
 Certains outils de déduplication fonctionnent au niveau **fichier** (les fichiers identiques //en entier// seront dédupliqués), d'autres au niveau **blocs de données** (les blocs de données identiques, même dans des fichiers différents, seront dédupliqués).  Certains outils de déduplication fonctionnent au niveau **fichier** (les fichiers identiques //en entier// seront dédupliqués), d'autres au niveau **blocs de données** (les blocs de données identiques, même dans des fichiers différents, seront dédupliqués). 
 +
 +
 +<note>La déduplication au niveau blocs est en théorie plus efficace, mais j'ai constaté de bien meilleurs résultats avec //jdupes// (déduplication au niveau fichiers) qu'avec //duperemove// (déduplication au niveau blocs). Je ne me l'explique pas. Donc de manière générale, parmis les solutions proposées, préférez //jdupes//.</note>
  
 Voici différents outils: Voici différents outils:
  
-<hidden Déduplication au niveau blocs avec duperemove ⇐ :-) **solution recommandée**>+ 
 +<hidden Déduplication au niveau fichiers avec jdupes ⇐ :-) **solution recommandée** 
 + 
 +jdupes possède une option spécifique pour btrfs.  
 + 
 +<code>sudo apt install jdupes 
 +ulimit -n 600000 
 +sudo jdupes -1 -r -B /home 
 +sudo jdupes -1 -r -B /bin /etc /lib /lib64 /opt /sbin /usr /snap /var</code> 
 +  * **-1** : Ne comparer que les fichiers qui sont sur le même système de fichier (btrfs ne pourra pas dédupliquer des fichiers situés dans des systèmes de fichiers différents). 
 +  * **-r** : Traiter les sous-répertoires. 
 +  * **-B** : Soumettre les déduplications à btrfs. 
 +    * Astuce: Retirez le paramètre ''-B'' pour voir les fichiers identiques, sans dédupliquer. 
 +  * jdupes va balayer les répertoires, rechercher les fichiers identiques et s'ils sont identiques octet par octet, soumettre la déduplication à btrfs. 
 +  * La commande ''ulimit -n'' permet d'augmenter le nombre de fichier ouverts simultanément (1024 par défaut, ce qui peut être trop juste pour jdupes. Si vous n'augmentez pas, vous risquez d'avoir l'erreur "too many open files" qui va nuire à l'efficacité de la déduplication.) 
 +</hidden> 
 + 
 +<hidden Déduplication au niveau blocs avec duperemove>
   * Installation: ''sudo apt install duperemove''   * Installation: ''sudo apt install duperemove''
   * Utilisation: ''%%sudo duperemove -drh --hashfile=/.duperemove.dat /etc /lib /lib32 /lib64 /libx32 /sbin /snap /srv /usr /var /home %%''   * Utilisation: ''%%sudo duperemove -drh --hashfile=/.duperemove.dat /etc /lib /lib32 /lib64 /libx32 /sbin /snap /srv /usr /var /home %%''
Ligne 278: Ligne 312:
 </hidden> </hidden>
  
- 
-<hidden Déduplication au niveau fichiers avec jdupes > 
- 
-jdupes possède une option spécifique pour btrfs.  
- 
-<code>sudo apt install jdupes 
-ulimit -n 8192 
-sudo jdupes -r -B /home  # déduplication répertoires utilisateurs 
-sudo jdupes -r -B /bin /etc /lib /lib64 /opt /sbin /usr  # Déduplication côté système</code> 
-  * **-r** : Traiter les sous-répertoires. 
-  * **-B** : Soumettre les déduplications à btrfs. 
-    * Astuce: Retirez le paramètre ''-B'' pour voir les fichiers identiques, sans dédupliquer. 
-  * jdupes va balayer les répertoires, rechercher les fichiers identiques et s'ils sont identiques octet par octet, soumettre la déduplication à btrfs. 
-  * La commande ''ulimit -n'' permet d'augmenter le nombre de fichier ouverts simultanément (1024 par défaut, ce qui peut être trop juste pour jdupes. Si vous n'augmentez pas à 8192, vous risquez d'avoir l'erreur "too many open files" qui va nuire à l'efficacité de la déduplication.) 
-</hidden> 
  
 <hidden Déduplication au niveau fichiers avec rmlint> <hidden Déduplication au niveau fichiers avec rmlint>
Ligne 317: Ligne 336:
   * **Installation**:   * **Installation**:
     * Récupérer et dézipper https://github.com/Zygo/bees/archive/master.zip     * Récupérer et dézipper https://github.com/Zygo/bees/archive/master.zip
-    * ''sudo apt install build-essential btrfs-tools uuid-dev markdown''+    * ''sudo apt install build-essential uuid-dev markdown libbtrfs-dev''
     * ''make''     * ''make''
     * ''sudo make install''     * ''sudo make install''
Ligne 350: Ligne 369:
 On trouve beaucoup d'histoires de corruptions et de problème avec btrfs. Mais il semblerait qu'elles soient toutes liées à d'anciennes versions (<2016) de btrfs. Or le développement de btrfs est très actif. Afin d'éviter les problèmes, il est donc conseillé d'utiliser des noyaux Linux récents. On trouve beaucoup d'histoires de corruptions et de problème avec btrfs. Mais il semblerait qu'elles soient toutes liées à d'anciennes versions (<2016) de btrfs. Or le développement de btrfs est très actif. Afin d'éviter les problèmes, il est donc conseillé d'utiliser des noyaux Linux récents.
  
-Facebook utilise [[https://engineering.fb.com/open-source/linux/|massivement]] btrfs sur ses serveurs. Je ne pense pas qu'ils soient très fan de la corruption de données. \\ Les NAS de Synology utilisent aussi btrfs.+Facebook utilise [[https://engineering.fb.com/open-source/linux/|massivement]] btrfs sur ses serveurs. Je ne pense pas qu'ils soient très fan de la corruption de données. \\ Les NAS de Synology utilisent aussi btrfs. La distribution Linux //Fedora// utilise [[https://9to5linux.com/fedora-33-beta-released-with-btrfs-by-default-gnome-3-38-and-linux-5-8|btrfs par défaut]].
  
 Ceci dit, //certaines// fonctionnalités de btrfs ne sont pas considérées comme stable et ne devraient pas encore être utilisées (par exemple RAID56) : https://btrfs.wiki.kernel.org/index.php/Status Ceci dit, //certaines// fonctionnalités de btrfs ne sont pas considérées comme stable et ne devraient pas encore être utilisées (par exemple RAID56) : https://btrfs.wiki.kernel.org/index.php/Status
Ligne 378: Ligne 397:
     * Montez vos partition avec l'option ''noatime''/''nodiratime''     * Montez vos partition avec l'option ''noatime''/''nodiratime''
     * De temps en temps, défragmentez manuellement (''sudo btrfs filesystem defragment -r /'')     * De temps en temps, défragmentez manuellement (''sudo btrfs filesystem defragment -r /'')
-  * btrfs ne supporte pas le **swap**: 
-    * Donc utilisez une //partition// swap (hors de la partition btrfs) au lieu d'un //fichier// swap dans la partition btrfs. 
   * btrfs ne supporte pas nativement le **chiffrement**.   * btrfs ne supporte pas nativement le **chiffrement**.
     * Utilisez LUKS/dmcrypt/VeraCrypt.     * Utilisez LUKS/dmcrypt/VeraCrypt.
Ligne 404: Ligne 421:
  
 Il existe un outils de migration ext4 vers btrfs, mais il n'est absolument pas stable. J'ai donc choisi de déplacer temporairement mes fichiers sur un disque externe, reformater, et re-transférer les fichiers. Il existe un outils de migration ext4 vers btrfs, mais il n'est absolument pas stable. J'ai donc choisi de déplacer temporairement mes fichiers sur un disque externe, reformater, et re-transférer les fichiers.
 +
 +<note warning>Il est fortement déconseillé d'utiliser l'outils de migration ext4➡btrfs. Il faut mieux: sortir les fichiers sur un autre support, reformater en btrfs, puis recopier les fichiers. Vous pouvez vous aider de //fsarchiver// est extrêmement efficace pour stocker temporairement des fichiers sur un support externe.</note>
 ==== Partitionnement ==== ==== Partitionnement ====
  
Ligne 424: Ligne 443:
   - Sauvegarde du contenu de ma partition VeraCrypt avec fsarchiver (en ajoutant l'option ''-c -'' pour chiffrer l'archive)   - Sauvegarde du contenu de ma partition VeraCrypt avec fsarchiver (en ajoutant l'option ''-c -'' pour chiffrer l'archive)
   - Repartionnement en btrfs et ré-installation de l'OS.   - Repartionnement en btrfs et ré-installation de l'OS.
-  - Activation des options de montage des volumes btrfs dans ''/etc/fstab'' (''noatime,nodiratime,autodefrag,compress=zstd'') + reboot pour prise en compte. +  - Activation des options de montage des volumes btrfs dans ''/etc/fstab'' (''noatime,nodiratime,autodefrag,compress-force=zstd'') + reboot pour prise en compte. 
   - Recopie des données du dd externe vers la machine (''fsarchiver restdir'')   - Recopie des données du dd externe vers la machine (''fsarchiver restdir'')
   - (plus tard) Déduplication des données.   - (plus tard) Déduplication des données.
Ligne 452: Ligne 471:
  
 Je monte mes sous-volumes btrfs avec ces options: Je monte mes sous-volumes btrfs avec ces options:
-<code>UUID=e3dc85e3-0d2b-40e3-803b-7c2cb0bf543a /               btrfs   defaults,noatime,nodiratime,autodefrag,compress=zstd,subvol=@ 0       1 +<code>UUID=e3dc85e3-0d2b-40e3-803b-7c2cb0bf543a /               btrfs   defaults,noatime,nodiratime,autodefrag,compress-force=zstd,subvol=@ 0       1 
-UUID=e3dc85e3-0d2b-40e3-803b-7c2cb0bf543a /home           btrfs   defaults,noatime,nodiratime,autodefrag,compress=zstd,subvol=@home 0       2</code>+UUID=e3dc85e3-0d2b-40e3-803b-7c2cb0bf543a /home           btrfs   defaults,noatime,nodiratime,autodefrag,compress-force=zstd,subvol=@home 0       2</code>
  
   * ''noatime'' : Ne pas enregistrer la date de dernier accès aux fichiers.   * ''noatime'' : Ne pas enregistrer la date de dernier accès aux fichiers.
   * ''nodiratime'' : Ne pas enregistrer la date de dernier accès aux répertoires.   * ''nodiratime'' : Ne pas enregistrer la date de dernier accès aux répertoires.
-  * ''compress=zstd'' : Activer la compression à l'écriture.+  * ''compress-force=zstd'' : Activer la compression à l'écriture.
   * ''autodefrag'' : Activer la défragmentation automatique.   * ''autodefrag'' : Activer la défragmentation automatique.
  
Ligne 479: Ligne 498:
  
 Quand je change de version de Linux Mint/Ubuntu, je procède par ré-installation.  Cependant, même si Linux Mint supporte btrfs, l'installeur de Mint (Ubiquity) ne permet pas de spécifier des sous-volumes précis pour l'installation.  Quand je change de version de Linux Mint/Ubuntu, je procède par ré-installation.  Cependant, même si Linux Mint supporte btrfs, l'installeur de Mint (Ubiquity) ne permet pas de spécifier des sous-volumes précis pour l'installation. 
 +
 +L'installeur Ubiquity supporte malgré tout btrfs, et créé automatiquement dans la partition btrfs:
 +  * Un sous-volume ''@'' qui sera le ''/''
 +  * Un sous-volume ''@home'' qui sera le ''/home''
 +  * Il ne touchera pas aux autres sous-volumes présents qu'il ne connaît pas.
  
 Voici comment procéder pour upgrader Mint par ré-installation sans perdre votre **@home**: Voici comment procéder pour upgrader Mint par ré-installation sans perdre votre **@home**:
btrfs.txt · Dernière modification : 2023/03/20 12:52 de sebsauvage