===== Btrfs ===== {{ :dummy.png?75x75|}} **Btrfs**, qui signifie "Système de fichiers B-Tree" en français, est un système de fichiers moderne et riche en fonctionnalités, conçu pour les systèmes Linux. Il utilise une structure de données en arbre appelée "B-Tree" pour organiser les fichiers et les métadonnées. Cette structure permet de gérer efficacement les gros volumes de données et les fichiers de taille importante. **Btrfs** offre de nombreuses fonctionnalités avancées, telles que la __compression de données__, la __déduplication__, la création de __snapshots__, la __migration de blocs défectueux__ et la prise en charge de plusieurs dispositifs de stockage en __mode RAID__. Il prend également en charge __les sous-volumes__, qui sont des sous-partitions logiques du système de fichiers, ce qui permet de mieux organiser les données et de les gérer plus efficacement. **Btrfs** est considéré comme étant un système de fichiers stable pour un usage courant sur les systèmes Linux modernes. Cependant, il convient de noter que **certaines fonctionnalités plus avancées** de **Btrfs**, telles que la __déduplication__ et le __RAID5/6__, peuvent être **moins matures** et moins testées que les fonctionnalités de base. **Btrfs** a été initialement développé par **Oracle en 2007** pour être inclus dans le noyau Linux. Depuis lors, il est développé et maintenu par une communauté de développeurs bénévoles, ainsi que par des entreprises telles que **SUSE**, **Facebook**, **Fujitsu** et **Western Digital**. Le développement de **Btrfs** se poursuit activement, avec de nouvelles fonctionnalités et améliorations étant régulièrement ajoutées au système de fichiers. **Btrfs** est inclus dans le noyau **Linux** depuis la version **2.6.29** et est devenu de plus en plus populaire en tant que système de fichiers par défaut pour certaines distributions Linux, telles que **SUSE Linux Enterprise Server**, **openSUSE** ou **Fedora Linux**. ==== Les commandes avec Btfrs ==== === Créer un système de fichiers Btrfs === Pour créer un système de fichiers Btrfs sur un périphérique de stockage, vous pouvez utiliser la commande suivante : sudo mkfs.btrfs /dev/sdX où ''/dev/sdX'' représente le périphérique de stockage sur lequel vous souhaitez créer le système de fichiers Btrfs. === Monter un système de fichiers === Pour monter un système de fichiers **Btrfs** sur un point de montage, vous pouvez utiliser la commande suivante : sudo mount /dev/sdX /mnt/point-de-montage où ''/dev/sdX'' représente le périphérique de stockage sur lequel est situé le système de fichiers **Btrfs**, et ''/mnt/point-de-montage'' représente le point de montage où vous souhaitez monter le système de fichiers. === Afficher des informations === Pour afficher des informations sur un système de fichiers **Btrfs**, vous pouvez utiliser la commande suivante : sudo btrfs filesystem show Cette commande affichera des informations telles que la version du système de fichiers, la taille totale de l'espace de stockage et les options de montage actuelles. === Créer un sous-volume === Créer un sous-volume Btrfs peut être utile pour plusieurs raisons : - Vous pouvez utiliser des sous-volumes pour **isoler des ensembles de fichiers** et de données spécifiques, par exemple pour séparer les données utilisateur des données système. - Vous pouvez définir des **quotas de disque** pour des ensembles de données spécifiques. - Les **snapshots Btrfs** sont créés à partir de sous-volumes. - Vous pouvez créer des sous-volumes de manière dynamique, les supprimer et les renommer à tout moment, ce qui permet de réorganiser facilement les données. Pour créer un sous-volume dans un système de fichiers **Btrfs**, vous pouvez utiliser la commande suivante : sudo btrfs subvolume create /chemin/vers/sous-volume où ''/chemin/vers/sous-volume'' représente le chemin d'accès au nouveau sous-volume que vous souhaitez créer. === Les SnapShots avec Btrfs === Voir https://fedoramagazine.org/working-with-btrfs-snapshots/ == Créer des snapshots == Pour créer des snapshots dans un système de fichiers **Btrfs**, vous devez d'**abord créer un sous-volume** (''btrfs subvolume create''). Les snapshots Btrfs sont en fait des copies instantanées d'un sous-volume, ce qui signifie que vous devez avoir au moins un sous-volume pour créer des snapshots. Pour créer un snapshot d'un sous-volume **Btrfs**, vous pouvez utiliser la commande suivante : sudo btrfs subvolume snapshot /chemin/vers/source /chemin/vers/destination où ''/chemin/vers/source'' représente le chemin d'accès au sous-volume source à partir duquel vous souhaitez créer le snapshot, et ''/chemin/vers/destination'' représente le chemin d'accès au nouveau sous-volume snapshot. Les **snapshots** et les **sous-volumes** Btrfs peuvent être utilisés pour organiser et gérer efficacement les données dans un système de fichiers **Btrfs**. Les **sous-volumes** peuvent être utilisés pour isoler différents ensembles de fichiers et de données, tandis que les **snapshots** peuvent être utilisés pour créer des copies de sauvegarde ou des points de restauration de l'état du système de fichiers à un moment donné. == Lister les snapshots == Pour lister les snapshots présents dans un système de fichiers Btrfs, vous pouvez utiliser la commande btrfs subvolume list. Cette commande affichera une liste de tous les sous-volumes et snapshots présents dans le système de fichiers Btrfs. Voici la syntaxe générale de la commande : sudo btrfs subvolume list [chemin/vers/systeme-de-fichiers] où ''chemin/vers/systeme-de-fichiers'' représente le chemin d'accès au système de fichiers **Btrfs** que vous souhaitez lister. Si aucun chemin d'accès n'est spécifié, la commande listera les **sous-volumes** et **snapshots** du système de fichiers monté sur le point de montage courant. == Effacer un snapshot == Pour effacer un **snapshot** dans un système de fichiers **Btrfs**, vous pouvez utiliser la commande ''btrfs subvolume delete''. Voici la syntaxe générale de cette commande : sudo btrfs subvolume delete [chemin/vers/snapshot] où ''chemin/vers/snapshot'' représente le chemin d'accès au snapshot que vous souhaitez effacer. === Vérifier l'intégrité Btrfs === Pour vérifier l'intégrité d'un système de fichiers **Btrfs**, vous pouvez utiliser la commande suivante : sudo btrfs scrub start /chemin/vers/systeme-de-fichiers où ''/chemin/vers/systeme-de-fichiers'' représente le chemin d'accès au système de fichiers **Btrfs** que vous souhaitez vérifier. === La compression avec Btrfs === Avec la **compression transparente** de **Btrfs**, il n'est pas nécessaire d'installer les programmes de compression car *Btrfs les prend en charge directement : * zstd * lzo * zlib La **compression transparente** est une fonctionnalité qui **permet de compresser des données sur un système de fichiers sans que l'utilisateur ait à s'en soucier**. Cela signifie que lorsque les fichiers sont écrits sur le disque, ils sont automatiquement compressés et, lorsqu'ils sont lus, ils sont automatiquement décompressés. Cette fonctionnalité peut aider à économiser de l'espace de stockage sur le disque dur, car les fichiers compressés prennent moins de place que les fichiers non compressés. La compression transparente du système de fichiers dans Btrfs est configurable de plusieurs façons : * En tant qu'option de montage lors du montage du système de fichiers (s'applique à tous les sous-volumes du même système de fichiers Btrfs) * Avec les propriétés de fichiers Btrfs * Lors de la défragmentation du système de fichiers Btrfs (pas permanente) * Avec l'interface d'attributs de fichier ''chattr'' == Montage système de fichiers fstab == En utilisant l'option de montage ''compress'' lors du montage du système de fichiers Btrfs. Cette option s'applique alors à tous les sous-volumes de ce système de fichiers. Par exemple, pour monter un système de fichiers Btrfs en utilisant l'algorithme de compression ''zstd'' sur le niveau 3, la commande suivante doit être utilisée : ''sudo mount -o compress=zstd:3 ...''. Il est important de noter que l'option de montage ''compress'' s'applique à tout le système de fichiers Btrfs et à tous ses sous-volumes. De plus, c'est la seule méthode supportée pour spécifier le niveau de compression à utiliser. Pour appliquer la compression au système de fichiers racine, elle doit être spécifiée dans le fichier ''/etc/fstab''. Par exemple, l'installeur de Fedora Linux active la compression ''zstd'' sur le niveau 1 par défaut, et cela est reflété dans le fichier ''/etc/fstab''. UUID=47b03671-39f1-43a7-b0a7-db733bfb47ff / btrfs subvol=root,compress=zstd:1,[ ... ] 0 0 == Activation de la compression par fichier == Une autre méthode de spécification de la compression consiste à utiliser les propriétés du système de fichiers Btrfs. Pour lire le paramètre de compression pour n'importe quel fichier, dossier ou sous-volume, utilisez la commande suivante : sudo btrfs property get compression De même, vous pouvez configurer la compression de la manière suivante : sudo btrfs property set compression Par exemple, pour activer la compression zlib pour tous les fichiers sous /etc : sudo btrfs property set /etc compression zlib Vous pouvez obtenir une liste de valeurs prises en charge avec ''man btrfs-property''. Gardez à l'esprit que cette interface ne permet pas de spécifier le niveau de compression. De plus, si une propriété de compression est définie, elle remplace toute autre compression configurée au moment du montage. ==== Bibliographie ==== * Documentation : https://btrfs.readthedocs.io/en/latest/man-index.html