Introduction au système de fichiers BTRFS

Introduction au système de fichiers BTRFS
BTRFS (Système de fichiers B-Tree) est un système de fichiers moderne de copie-écriture (vache) pour Linux. BTRFS vise à implémenter de nombreuses fonctionnalités de système de fichiers avancées tout en se concentrant sur la tolérance aux défauts, la réparation et l'administration facile. Le système de fichiers BTRFS est conçu pour prendre en charge l'exigence de serveurs de hautes performances et de grands fonctionnalités. Il convient aux centres de données à l'échelle des pétaoctets ainsi qu'aux smartphones cellulaires.Dans cet article, je vais discuter du système de fichiers BTRFS et de ses fonctionnalités. Alors, commençons.

Copier sur Write - Système de fichiers de vache:

BTRFS est un système de fichiers de copie-écriture (vache). Dans un système de fichiers de vache, lorsque vous essayez de modifier des données sur le système de fichiers, le système de fichiers copie les données, modifie les données, puis réécrit les données modifiées à un emplacement libre différent du système de fichiers.

Le principal avantage du système de fichiers Copy-on-Write (Cow) est que l'étendue des données qu'il souhaite modifier est copiée à un emplacement différent, modifié et stocké dans une autre étendue du système de fichiers. L'étendue des données d'origine n'est pas modifiée. Ainsi, le système de fichiers BTRFS peut éliminer le risque de corruption des données ou de mise à jour partielle en cas de panne de puissance pendant la modification des données car les données d'origine sont maintenues inchangées.

Le principal inconvénient du système de fichiers Copy-on-Write (COW) est que les gros fichiers ont tendance à se fragmenter car ils sont modifiés. Ainsi, la défragmentation est requise de temps en temps. Heureusement, le système de fichiers BTRFS prend en charge la défragmentation en ligne. Ainsi, vous n'avez pas à non-non-même le système de fichiers pour défragmenter un système de fichiers BTRFS.

Caractéristiques principales du système de fichiers BTRFS:

Les principales caractéristiques du système de fichiers BTRFS sont:

i) Stockage de fichiers basé sur l'étendue: Dans un système de fichiers basé sur une mesure, l'unité de stockage est appelée une mesure. Une mesure est une zone de stockage contigu qui est réservée à un fichier. Un fichier nécessite une mesure, quelle que soit la taille du fichier. Pour les fichiers plus grands (taille de fichier supérieur à la taille de l'étendue), plusieurs étendues seront nécessaires. Pour les fichiers plus grands, les métadonnées seront utilisées pour garder une trace des extensions que le fichier utilise. Dans le système de fichiers BTRFS, les métadonnées sont nettement plus petites. Les métadonnées plus petites améliorent l'efficacité du stockage et les performances du système de fichiers.

ii) Support d'énorme taille de fichier: Dans un système de fichiers BTRFS, un seul fichier peut être d'environ 264 octets ou 16 eib (exbytes) en taille. Peu importe la taille de votre fichier, BTRFS peut le prendre en charge.

iii) Emballage économe en espace de petits fichiers: Normalement, peu importe la taille d'un fichier, il faudra un bloc ou une mesure pour stocker le fichier. Cela gaspille beaucoup d'espace disque. Pour résoudre ce problème, le système de fichiers BTRFS incorpore des fichiers plus petits dans les métadonnées pour stocker efficacement les fichiers plus petits.

iv) Répertoires indexés économes en espace: Les répertoires du système de fichiers BTRFS sont indexés de deux manières différentes. Pour la recherche de nom de fichier, l'indexation basée sur les clés est utilisée. Pour référencer les données, l'indexation des clés basée sur Inode est utilisée. L'indexation à deux niveaux améliore les performances du répertoire / de la recherche de fichiers et réduit les exigences de stockage pour les index.

v) Attribution dynamique d'Inode: Vous avez besoin de 1 inode pour référence à 1 fichier. De nombreux systèmes de fichiers (i.e., Ext4) ont un nombre fixe d'Inodes. Donc, si vous créez trop de petits fichiers, vous avez peut-être beaucoup d'espace sur votre disque, mais vous ne pourrez pas créer de nouveaux fichiers. Vous ne pouvez pas non plus augmenter le nombre maximum d'Inodes une fois le système de fichiers créé.

BTRFS résout ce problème en allouant les inodes dynamiquement car elles sont nécessaires. Ainsi, vous pouvez créer autant de fichiers que vous le souhaitez tant que vous avez un espace disque gratuit.

vi) instantanés écrit et instantanés en lecture seule: Le système de fichiers BTRFS prend en charge les instantanés. Vous pouvez prendre un instantané du système de fichiers actuel, que vous pouvez utiliser pour restaurer vos données si vous avez accidentellement supprimé certains fichiers ou corrompu certaines données.

Par défaut, les instantanés BTRFS sont en lecture seule. Une fois que vous avez pris un instantané en lecture seule, vous ne pouvez pas modifier aucun fichier / répertoires dans cet instantané. Dans tous les cas, si vous souhaitez modifier des fichiers / répertoires après avoir pris un instantané de votre système de fichiers BTRFS existant, vous pouvez modifier l'instantané en lecture seule en un instantané scrutin et modifier tous les fichiers / répertoires dans cet instantané.

vii) Sous-volumes: Un système de fichiers BTRFS peut avoir de nombreux sous-volumes. Un sous-volume est un arbre binaire nommé (arbre B) (ou racine de système de fichiers interne / logique) de l'arborescence racine du système de fichiers existant (principal) du système de fichiers BTRFS. Un sous-volume n'est pas un dispositif de bloc. Mais, vous pouvez monter des sous-volumes Btrfs individuellement. Vous pouvez considérer les sous-volumes comme des espaces de noms.

viii) Support de quota de conscience sous-volume: Vous pouvez également allouer des quotas pour les sous-volumes. Une fois le quota dépassé, vous ne pourrez pas ajouter de nouvelles données au sous-volume. Vous n'aurez pas besoin de programmes distincts pour créer des quotas de sous-volume BTRFS.

ix) Les sommes de contrôle sur les données et les métadonnées: Pour éviter la corruption des données, BTRFS utilise les algorithmes de somme de contrôle CRC32C pour les données et les métadonnées du système de fichiers par défaut. Les sommes de contrôle sont stockées dans le système de fichiers pour vérifier automatiquement les erreurs du système de fichiers et les corruptions de données en arrière-plan.

BTRFS prend en charge de nombreux autres algorithmes de somme de contrôle: XXHASH, SHA256 et BLAKE2B.

x) Compression: Le système de fichiers BTRFS prend en charge la compression de fichiers transparent. La compression et la décompression des fichiers dans un système de fichiers BTRFS se font automatiquement en arrière-plan.

BTRFS prend en charge 3 algorithmes de compression: ZLIB, LZO et ZSTD.

ZLIB est la méthode de compression par défaut du système de fichiers BTRFS.

xi) Prise en charge intégrée de plusieurs périphériques: Les systèmes de fichiers BTRFS ont une prise en charge intégrée du gestionnaire de volume logique (LVM). Vous pouvez ajouter plusieurs périphériques de stockage dans un seul système de fichiers BTRFS. Vous pouvez également configurer des tableaux RAID sur le système de fichiers BTRFS sans avoir besoin de logiciel supplémentaire.

Le système de fichiers BTRFS prend en charge le rayage des données, la mise en miroir des données, le rayage des données + la mise en miroir et les implémentations de parité unique et double.

Striping de données: Si vous avez ajouté plusieurs périphériques de stockage dans le même système de fichiers BTRFS, BTRFS peut stocker le même fichier sur différents périphériques physiques / partitions. C'est ce qu'on appelle le rayage des données. Le rayage des données améliore les performances de lecture / écriture du système de fichiers. RAID-0 utilise largement la fonction de rayures de données.

Mise en miroir des données: Si vous avez ajouté plusieurs périphériques de stockage dans le même système de fichiers BTRFS, toutes les données écrites sur un seul périphérique de stockage seront écrites sur tous les autres périphériques de stockage. C'est ce qu'on appelle les données en miroir. RAID-1 utilise largement la fonction de mise en miroir des données.

Striping de données + parité unique: RAID-5 utilise le rayage des données et la parité distribuée unique. Si vous avez ajouté plusieurs périphériques de stockage dans un système de fichiers BTRFS, RAID-5 éliminera les données sur plusieurs périphériques de stockage et calculera et stockera les blocs de parité sur les périphériques de stockage. RAID-5 peut maintenir une défaillance à un seul entraînement.

Striping de données + double parité: RAID-6 utilise le rayage des données et la parité distribuée à double. Si vous avez ajouté plusieurs périphériques de stockage dans un système de fichiers BTRFS, RAID-6 éliminera les données sur plusieurs périphériques de stockage et calculera et stockera des blocs de parité à double piste sur les périphériques de stockage. RAID-6 peut maintenir deux échecs de lecteur. En dehors de cela, c'est la même chose que RAID-5 (rayures de données + parité unique).

Striping de données + miroir: RAID-10 utilise le rayage des données et la mise en miroir des données en même temps. RAID-10 nécessite un nombre uniforme de dispositifs de stockage de la même taille à ajouter à un seul système de fichiers BTRFS. Le nombre minimum de périphériques de stockage que vous pouvez ajouter sur un système de fichiers RAID-10 BTRFS est 4. La moitié du périphérique de stockage sera utilisée pour le rayonnement des données, et l'autre moitié sera utilisée pour refléter les données de la première moitié des périphériques de stockage (où les données sont rayées).

xii) SSD Conscience et optimisations: Le système de fichiers BTRFS est conscient du SSD et possède certaines fonctionnalités d'optimisation SSD. Le système de fichiers BTRFS a également la prise en charge de la finition / jetez les périphériques de stockage SSD.

La fonction de garniture peut détecter et marquer des étendus de données qui ne sont plus utilisés. Une fois les étendues marquées, le système de fichiers BTRFS peut les essuyer automatiquement afin que les autres fichiers puissent utiliser ces étendues de données.

La fonction de défausse supprimera toutes les étendues de données du SSD. Si vous souhaitez vendre votre SSD, cette fonctionnalité peut être utile.

xiii) Sauvegarde incrémentielle efficace: BTRFS prend en charge la sauvegarde incrémentielle. La première fois que vous sauvegardez un système de fichiers BTRFS, il faut un instantané du système de fichiers actuel. Ensuite, toutes les sauvegardes ultérieures seront comparées au premier instantané, et seules les modifications seront stockées sur le disque. Ainsi, toutes les sauvegardes ultérieures prendront moins d'espace disque, et les sauvegardes seront plus rapides.

xiv) Graptre de fond: Il s'agit d'un processus de système de fichiers BTRFS utilisé pour trouver et corriger les erreurs sur les fichiers qui ont des copies redondantes (plusieurs copies) stockées dans le système de fichiers BTRFS.

xv) Défragmentation du système de fichiers en ligne: J'ai expliqué plus tôt comment fonctionne le Système de fichiers de copie-écriture BTRFS. Les fichiers larges sont stockés dans plusieurs étendues du système de fichiers BTRFS. Lorsque vous modifiez des fichiers volumineux, les étendus à modifier sont copiés à différentes étendues libres du système de fichiers et modifiées là-bas. Ainsi, les étendues de données non modifiées sont également conservées au cas où elles sont nécessaires pour la récupération du système de fichiers. Cela provoque une fragmentation (les étendues de données d'un grand fichier ne seront pas continues et seront dispersées autour de l'ensemble du périphérique de stockage) sur le système de fichiers car les fichiers gros sont modifiés. Trop de fragmentation a un impact négatif sur le système de fichiers (rend l'opération de lecture / écriture du système de fichiers plus lent).

Pour résoudre ce problème, le système de fichiers BTRFS prend en charge la défragmentation du système de fichiers en ligne. Avec la défragmentation en ligne, vous n'avez pas à déclencher le système de fichiers pour défragmenter le système de fichiers. Vous pouvez maintenir le système de fichiers en cours d'exécution tout en le défragant. La défragmentation déplacera les étendues de fichiers autour du système de fichiers pour maintenir les étendus du même grand fichier que possible que possible. La défragmentation améliore les performances du système de fichiers.

xvi) Vérification du système de fichiers hors ligne: Le système de fichiers BTRFS possède de nombreux outils intégrés que vous pouvez utiliser pour vérifier les erreurs du système de fichiers et les corriger. Vous pouvez également corriger un système de fichiers BTRFS cassé (qui ne peut pas être monté) avec ces outils.

xvii) Conversion en place des systèmes de fichiers EXT2 / 3/4 existants et Reiserfs: Le système de fichiers BTRFS possède un BTRFS-Convert de l'utilitaire intégré, que vous pouvez utiliser pour convertir un système de fichiers EXT2 / 3/4 existant en un système de fichiers BTRFS.

Le programme de conversion du système de fichiers BTRFS lit les métadonnées d'un système de fichiers EXT2 / 3/4 (ou Reiserfs) existant, crée des métadonnées BTRFS et les stocke sur le système de fichiers. Le système de fichiers conserve à la fois les métadonnées BTRFS et EXT2 / 3/4 (ou Reiserfs). Le système de fichiers BTRFS pointe vers les mêmes blocs de fichiers utilisés par les fichiers EXT2 / 3/4 (ou Reiserfs) Système de fichiers. Le système de fichiers et les blocs de données existants ne sont pas touchés car BTRFS est un système de fichiers de copie-écriture (vache). Lorsqu'un fichier est modifié, le système de fichiers BTRFS copie les blocs de données d'origine à de nouvelles étendues gratuites et les modifie là-bas.

xviii) Dispositifs de graines: Le système de fichiers BTRFS prend en charge les appareils de semences. Vous pouvez créer un système de fichiers en lecture seule et l'utiliser comme modèle (appareil de semence) pour créer d'autres systèmes de fichiers BTRFS. L'avantage de cela est que seules les données modifiées seront écrites au nouveau système de fichiers. Les données d'origine (sur les dispositifs de semences) seront conservées telles qu'elles sont. Cette fonctionnalité peut être utilisée pour économiser beaucoup d'espace disque et de redondance de données.

xix) Envoyer / recevoir des modifications de sous-volume: Le système de fichiers BTRFS peut envoyer / recevoir des modifications de sous-volume. Le système de fichiers BTRFS peut envoyer les modifications incrémentielles d'un sous-volume à un autre système de fichiers BTRFS (peut également résider dans un autre ordinateur) qui peut recevoir les modifications de sous-volume. Cette fonctionnalité est utilisée pour prendre des sauvegardes incrémentielles du système de fichiers BTRFS localement ou à distance. Cette méthode est plus rapide et plus efficace que RSYNC.

xx) Batch / Out of Band Deduplication: Le système de fichiers BTRFS prend en charge la déduplication par lots ou hors bande. La duplication a lieu après un fichier écrit au système de fichiers. Le système de fichiers BTRFS analyse activement l'intégralité du système de fichiers pour des étendues identiques et ne conserve qu'une seule copie de chaque étendue (supprime les extensions redondantes / en double). Le même principe de copie-écriture (vache) est utilisé pour cette tâche. La déduplication économise beaucoup d'espaces disque.

xxi) Support de file d'échange: Si vous utilisez le noyau Linux 5.0 ou plus récent, vous pouvez créer des échantillons sur le système de fichiers BTRFS.

Il y a certaines limites du fichier d'échange dans un système de fichiers BTRFS:

- Le file d'échange doit être alloué comme Nococd (pas de copie-écriture)

- Le file d'échange ne doit pas avoir de compression activée.

Stabilité du système de fichiers BTRFS:

Le système de fichiers BTRFS est activement développé par l'équipe BTRFS. La plupart des fonctionnalités du système de fichiers sont stables au moment de la rédaction de cet article. Certaines des fonctionnalités avancées ne sont pas encore suffisamment stables pour un environnement de production. L'équipe BTRFS travaille dur pour résoudre ces problèmes de stabilité.

Si vous souhaitez utiliser le système de fichiers BTRFS sur votre serveur de production, consultez la page Wiki Statut Officielle - BTRFS pour savoir si les fonctionnalités du système de fichiers dont vous avez besoin sont suffisamment stables pour vous ou non. Assurez-vous également d'exécuter certains tests avant le déploiement final de votre système de fichiers BTRFS, et n'oubliez pas de garder les sauvegardes de vos données importantes. Garder la sauvegarde est toujours important pour les environnements de production.

Remplacement futur du système de fichiers EXT4:

Le système de fichiers BTRFS est en cours de développement rapidement. L'équipe de développement BTRFS se soucie également de la stabilité du système de fichiers. Donc, ils font de leur mieux pour le rendre aussi stable que possible tout en développant le système de fichiers BTRFS. Une fois que le système de fichiers BTRFS est entièrement développé et que toutes les fonctionnalités sont suffisamment stables, il peut remplacer le système de fichiers EXT4.

Les références:

[1] btrfs wiki - https: // btrfs.wiki.noyau.org / index.php / main_page
[2] BTRFS - La documentation de l'arbre du noyau - https: // www.noyau.org / doc / html / dernier / filesystems / btrfs.html
[3] Btrfs - Glossary - https: // btrfs.wiki.noyau.org / index.PHP / glossaire
[4] Caractéristiques du système de fichiers «BTRFS» - https: // www.Thegeekdiary.com / fonctionnalités de btrfs-fileSystem /
[5] Comparaison des systèmes de fichiers - https: // en.Wikipédia.org / wiki / comparaison_of_file_systems
[6] BTRFS Design - Btrfs Wiki - https: // btrfs.wiki.noyau.org / index.php / btrfs_design
[7] Peut-être que manquer d'Inodes pourrait être pris «plus au sérieux»? - https: // lwn.net / articles / 724522 /
[8] Faire un Btrfs en lecture seule.co.Royaume-Uni / 2016/12/29 / Making-A-Btrfs-Read-Only-Snapshot-Wittable
[9] Striping de données - https: // en.Wikipédia.org / wiki / data_striping
[10] FAQ - btrfs wiki - https: // btrfs.wiki.noyau.org / index.PHP / FAQ
[11] Niveaux de raid standard - https: // en.Wikipédia.org / wiki / standard_raid_levels
[12] Trim (informatique) - https: // en.Wikipédia.org / wiki / trim_ (informatique)
[13] Solid State Drive - Archwiki - https: // wiki.Archlinux.org / index.php / solide_state_drive # Trim
[14] btrfsck - btrfs wiki - https: // btrfs.wiki.noyau.org / index.PHP / BTRFSCK
[15] Conversion de Ext3 / 4 et Reiserfs - Btrfs Wiki - https: // btrfs.wiki.noyau.org / index.php / conversion_from_ext3
[16] Sauvegarde incrémentielle - Btrfs Wiki - https: // btrfs.wiki.noyau.org / index.php / incrémental_backup
[17] Deduplication - Btrfs Wiki - https: // btrfs.wiki.noyau.org / index.php / déduplication
[18] Statut - Btrfs Wiki - https: // btrfs.wiki.noyau.org / index.php / statut