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 [2019/11/07 13:50] – [CoW (Copy-on-write)] sebsauvagebtrfs [2020/01/20 09:42] – [Questions] sebsauvage
Ligne 1: Ligne 1:
 ====== btrfs ====== ====== btrfs ======
- 
-<note important>Cette page est relativement récente: Il est possible qu'elle contienne des inexactitudes.</note> 
  
 btrfs est un système de fichiers moderne, bien plus avancé qu'ext4. btrfs est examiné ici dans le cadre d'une utilisation sur un ordinateur personnel. btrfs est un système de fichiers moderne, bien plus avancé qu'ext4. btrfs est examiné ici dans le cadre d'une utilisation sur un ordinateur personnel.
Ligne 14: Ligne 12:
     * Avec la compression lzo (extrêmement rapide), il devrait y avoir globalement moins d'I/O disque (je n'ai pas un SSD, mais un disque dur à plateaux).     * Avec la compression lzo (extrêmement rapide), il devrait y avoir globalement moins d'I/O disque (je n'ai pas un SSD, mais un disque dur à plateaux).
     * En btrfs, les répertoires sont indexés.     * En btrfs, les répertoires sont indexés.
 +    * La duplication d'un fichier ou dossier existant est instantané, et n'occupe pas d'espace disque supplémentaire (non ce n'est pas de la magie).
   * Facilité d'administration:   * Facilité d'administration:
     * Snapshots quotidiens du système (/) (pratique en cas de mise à jour ou bidouillage du système qui se passe mal).     * Snapshots quotidiens du système (/) (pratique en cas de mise à jour ou bidouillage du système qui se passe mal).
Ligne 33: Ligne 32:
  
 Je ne vais pas vous énumérer ici //toutes// les autres particularités de btrfs (support des très gros fichiers, gestion des volumes logiques, checksum des blocs de données et méta-données, indexation des répertoires, possibilité d'envoyer les snapshot sur une autre machine, etc.). Pour cela, je vous laisser regarder le [[https://btrfs.wiki.kernel.org/index.php/Main_Page#Features|Wiki officiel]]. Je ne vais pas vous énumérer ici //toutes// les autres particularités de btrfs (support des très gros fichiers, gestion des volumes logiques, checksum des blocs de données et méta-données, indexation des répertoires, possibilité d'envoyer les snapshot sur une autre machine, etc.). Pour cela, je vous laisser regarder le [[https://btrfs.wiki.kernel.org/index.php/Main_Page#Features|Wiki officiel]].
 +
 +Je ne vais ici aborder que les particularités majeurs de btrfs : Le Copy-on-Write (CoW) et les snapshots.
 ==== CoW (Copy-on-write) ==== ==== CoW (Copy-on-write) ====
  
Ligne 77: Ligne 78:
 === Copie de fichier rapide === === Copie de fichier rapide ===
  
-Astuce: Quand vous copiez des fichiers avec ''cp'' à l'intérieur de votre partition btrfs, ajoutez l'option ''%%--reflink=always%%'' : Cela va utiliser CoW. Non seulement la copie du fichier sera **instantanée**, mais elle ne **consommera aucun espace disque supplémentaire** (Bien sûr cela ne fonctionne qu'à l'intérieur d'un même système de fichiers btrfs).+Astuce: Quand vous copiez des fichiers avec ''cp'' à l'intérieur de votre partition btrfs, ajoutez l'option ''%%--reflink=auto%%'' : Cela va utiliser CoW. Non seulement la copie du fichier sera **instantanée**, mais elle ne **consommera aucun espace disque supplémentaire** (Bien sûr cela ne fonctionne qu'à l'intérieur d'un même système de fichiers btrfs).
  
-Exemple: ''%%cp --reflink=always fichier1 fichier2%%''+Exemple: ''%%cp --reflink=auto fichier1 fichier2%%''
  
 À la différence des hardlinks, modifier ''fichier2'' ne modifiera pas ''fichier1''. À la différence des hardlinks, modifier ''fichier2'' ne modifiera pas ''fichier1''.
Ligne 185: Ligne 186:
 ===== Compression ===== ===== Compression =====
  
-La compression est active sur toute ma partition.+  * La compression se fait par //extend// (par blocs de données). Elle peut être active sur certains fichiers et pas d'autres. 
 +  * Vous pouvez compresser des fichiers et répertoires: 
 +    * à la demande, avec une ligne de commande. 
 +    * à l'écriture (option de montage à ajouter): Tout fichier écrit sera automatiquement compressé. 
 +  * Quel que soit votre choix, btrfs décompresse de manière transparente. (Vous n'avez pas besoin d'activer l'option de compression dans les options de montage pour lire les fichiers compressés). 
 +  * Il existe 3 algorithmes de compression : lzo (le plus rapide, impacte minimal sur le CPU), zstd et zlib (plus puissant, mais beaucoup plus gourmand en CPU).
  
-La compression est transparente et il est possible de choisir entre trois algorithmes, variant vitesse et taux de compression: lzo (le plus rapideimpacte minimal sur le CPU), zstd et zlib (plus puissantmais beaucoup plus gourmand en CPU)Mon choix s'est porté sur lzo.+Mon expérience: 
 + 
 +  * J'ai choisi d'activer la compression lzo à l'écriture sur tout le disque. 
 +  * Je ne constate aucun ralentissementni en lecture ni en écriture. 
 +  * Le disque "gratte" moins qu'en ext4. 
 +  * Je suis passé de 60 Go de libre (en ext4) à 242 Go de libre (sur une partition de 1 To).  
 +  * L'espace libre dans ''/'' et ''/home'' est désormais partagéce qui me laisse plus de place libre. 
 + 
 +Donc en ce qui me concerne, ce n'est que du positif.
  
   * Voir occupé/libre: <code>btrfs filesystem usage /</code>   * Voir occupé/libre: <code>btrfs filesystem usage /</code>
Ligne 205: Ligne 219:
  
 <hidden Cliquez pour afficher comment installer et utiliser compsize> <hidden Cliquez pour afficher comment installer et utiliser compsize>
-  * ''sudo apt install build-essential''+ 
 +  * **Note**: //compsize// est généralement fourni dans les depôts des distributions (paquet ''btrfs-compsize''). Si ce n'est pas le cas, voici comment télécharger et compiler la dernière version: 
 + 
 +  * ''sudo apt install build-essential libbtrfs-dev''
   * Téléchargez et dézippez https://github.com/kilobyte/compsize/archive/master.zip   * Téléchargez et dézippez https://github.com/kilobyte/compsize/archive/master.zip
   * Entrez dans le répertoire ''compsize-master'' et lancez: ''make''   * Entrez dans le répertoire ''compsize-master'' et lancez: ''make''
Ligne 246: Ligne 263:
 <code>sudo apt install jdupes <code>sudo apt install jdupes
 ulimit -n 8192 ulimit -n 8192
-sudo jdupes --r -B /</code> +sudo jdupes -r -B /home  # déduplication répertoires utilisateurs 
-  * **-1** : Rester sur un même système de fichiers.+sudo jdupes -r -B /bin /etc /lib /lib64 /opt /sbin /usr  # Déduplication côté système</code>
   * **-r** : Traiter les sous-répertoires.   * **-r** : Traiter les sous-répertoires.
   * **-B** : Soumettre les déduplications à btrfs.   * **-B** : Soumettre les déduplications à btrfs.
Ligne 320: Ligne 337:
 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. +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.
- +
-Les NAS de Synology utilisent aussi btrfs.+
  
 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
  
 Quoi qu'il en soit, la règle suivante est toujours valable: **FAITES DES BACKUPS :!::!::!:** Quoi qu'il en soit, la règle suivante est toujours valable: **FAITES DES BACKUPS :!::!::!:**
 +
 +Je ne manquerai pas d'indiquer dans cette page si j'ai des soucis avec btrfs.
  
 ---- ----
Ligne 379: Ligne 396:
 Notes: Notes:
   * Quelques personnes m'ont recommandé de mettre ''/'' dans un ''@rootfs'' au lieu de la racine btrfs ''@''. J'envisage éventuellement ça par la suite, mais pour le moment je laisse tel quel.   * Quelques personnes m'ont recommandé de mettre ''/'' dans un ''@rootfs'' au lieu de la racine btrfs ''@''. J'envisage éventuellement ça par la suite, mais pour le moment je laisse tel quel.
-  * La partition VeraCrypt sera mise dans sa propre partition, car //a priori// les multiples modification du fichier conteneur risquent de créer plein de données CoW pour rien (gaspillage de place et et d'I/O). Autant lui mettre sa propre partition.+  * La partition VeraCrypt est mise dans sa propre partition, car //a priori// les multiples modification du fichier conteneur risquent de créer plein de données CoW pour rien (gaspillage de place et et d'I/O). Autant lui mettre sa propre partition.
   * Je n'ai pas de partition swap, j'ai 12Go de RAM et le swap est en zram seul.   * Je n'ai pas de partition swap, j'ai 12Go de RAM et le swap est en zram seul.
  
Ligne 386: Ligne 403:
   - Récupération d'un HD externe 1 To temporairement (le disque de l'ordinateur à migrer fait 1 To)   - Récupération d'un HD externe 1 To temporairement (le disque de l'ordinateur à migrer fait 1 To)
   - Formatage d'une partition en ext4 sur ce HD externe.   - Formatage d'une partition en ext4 sur ce HD externe.
-    * :!: Gotcha: Formattez - bien à l'avance de votre backup - votre partition de 1 To en ext4 et laissez le disque branché, car la création des inodes en tâche de fond prend une éternité. Je me suis fait avoir. J'ai perdu beaucoup de temps à cause de ça.+    * :!: Gotcha: Formattez - //bien à l'avance de votre backup// - votre partition de 1 To en ext4 et //laissez le disque branché//, car la création des inodes en tâche de fond prend une éternité. Je me suis fait avoir. J'ai perdu beaucoup de temps à cause de ça.
   - Sauvegarde de /home sur ce disque avec fsarchiver<code>sudo fsarchiver -v -Z 1 savedir /mnt/sdb1/home.fsa /home</code>   - Sauvegarde de /home sur ce disque avec fsarchiver<code>sudo fsarchiver -v -Z 1 savedir /mnt/sdb1/home.fsa /home</code>
     * ''savedir''=sauvegarder un répertoire, ''-v'' pour verbose, ''-Z 1'' pour utiliser la compression ztsd (très rapide).     * ''savedir''=sauvegarder un répertoire, ''-v'' pour verbose, ''-Z 1'' pour utiliser la compression ztsd (très rapide).
Ligne 444: Ligne 461:
 ---- ----
  
 +
 +===== Migration de version de Linux Mint par ré-installation =====
 +
 +Quand je change de version de Linux Mint, 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. 
 +
 +Voici comment procéder pour upgrader Mint par ré-installation sans perdre votre **@home**:
 +
 +  * Bootez sur clé USB.
 +  * **Avant installation**:
 +    * Dans l'explorateur de fichiers, cliquez sur votre disque dur: Vous allez voir vos sous-volume btrfs **@** et **@home**.
 +    * Ouvrez un terminal dans ce dossier.
 +    * Renommez-les:<code bash>sudo mv @ @.ancien
 +sudo mv @home @home.ancien</code>
 +    * démontez le disque.
 +  * Procédez à l'installation de Linux Mint. Dans l'installeur, choisissez "Autre chose". Sélectionnez votre partition btrfs et cliquez sur le bouton "Modifier" et utilisez votre partition btrfs pour l'installation (point de montage: ''/''), **mais :!: ne cochez surtout pas la case //Formatter//**. L'installeur va ainsi créer des sous-volumes **@** et **@home** sans toucher aux sous-volumes que vous avez sauvegardés (//.ancien//). {{ :btrfs:btrfs-ubiquity-reuse.png?direct |}}
 +  * À l'installation, créez l'utilisateur système avec le même nom (pour ne pas avoir à retoucher aux droits dans /home)
 +  * **Après la fin de l'installation**, **:!: ne rebootez pas**.
 +  * Remontez votre partition btrfs, et renommez les sous-volumes:<code bash>sudo mv @home @home.new
 +sudo mv @home.ancien @home</code>
 +  * Rebootez: Vous devriez avoir votre ''/home'' en l'état.
 +  * Pour gagner de la place, supprimer ensuite les sous-volumes @.ancien et @home.new.
 +
 +----
  
 ===== Questions ===== ===== Questions =====
  
-  * Quelle est la maintenance régulière à faire, et à quelle fréquence ? (defrag, scrub, balance... ?)+  * Quelle est la maintenance régulière à faire sur un système btrfs, et à quelle fréquence ? (defrag, scrub, balance... ?)
     * En dehors, bien sûr, de ne pas garder inutilement plein de snapshots (mais Timeshift est bien paramétrable de ce côté là).     * En dehors, bien sûr, de ne pas garder inutilement plein de snapshots (mais Timeshift est bien paramétrable de ce côté là).
-  * Est-ce qu'il est judicieux d'utiliser btrfs à l'//intérieur// d'une partition VeraCrypt ? 
   * Pour nettoyer l'espace libre (écrire des zéros), je présume qu'avec le CoW, un ''sfill -fllvz /'' n'est pertinent ? Par quoi remplacer ? (il y a des outils internes btrfs ?). Ou c'est juste impossible ?   * Pour nettoyer l'espace libre (écrire des zéros), je présume qu'avec le CoW, un ''sfill -fllvz /'' n'est pertinent ? Par quoi remplacer ? (il y a des outils internes btrfs ?). Ou c'est juste impossible ?
-  * On trouve des avis contradictoires: Est-ce que de la RAM ECC est vraiment nécessaire ? (Je dirais que non: Si vos données sont corrompues en mémoire avant d'être envoyées au système de fichier, aucun système de fichier ne les sauvera. btrfs/ZFS ne se comporteront pas pire/pas mieux dans ce cas.) +
-  * Je suis en train de réfléchir à ces deux solutions: +
-    * (1) ''compress=lzo'' dans les options de montage. +
-    * (2) Pas de compression dans les options de montage, mais de temps en temps un ''sudo btrfs filesystem defragment -r -v -czstd /'' +
-    * Je ne veux pas activer zstd dans les options de montage, car il consomme plus de CPU que lzo à l'écriture des fichiers. Donc pas bon pour du temps réel. +
-    * La solution 2 permettrait d'avoir un meilleur taux de compression sans bouffer de CPU (zstd compresse mieux que lzo, et consomme autant de CPU que lzo à la décompression). +
- +
  
 ---- ----
btrfs.txt · Dernière modification : 2023/03/20 12:52 de sebsauvage