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édentes Révision précédente
Prochaine révision
Révision précédente
btrfs [2019/11/08 21:38]
sebsauvage
btrfs [2020/01/20 09:42] (Version actuelle)
sebsauvage [Questions]
Ligne 1: Ligne 1:
 ====== btrfs ====== ====== btrfs ======
- 
-<note important>​Cette page est relativement récente: Il est possible qu'​elle contienne encore quelques 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.1573249135.txt.gz · Dernière modification: 2019/11/08 21:38 par sebsauvage