Comment activer la compression ZFS

Comment activer la compression ZFS
La fonction de compression du système de fichiers compresse automatiquement les fichiers stockés sur le système de fichiers pour enregistrer l'espace disque précieux de votre périphérique de stockage.

Comme de nombreux autres systèmes de fichiers, le système de fichiers ZFS prend également en charge la compression au niveau du système de fichiers.

Les avantages de la compression du système de fichiers ZFS sont:

i) enregistre les espaces de disque: Comme je l'ai mentionné, lorsque la compression ZFS est activée, les fichiers que vous stockez sur votre système de pool / fichiers ZFS sont compressés pour enregistrer l'espace disque.

ii) Réduit le temps d'accès au fichier: Les processeurs de nos jours sont très rapides. Ils peuvent décompresser les fichiers en temps réel. Il faut donc moins de temps pour décompresser un fichier que pour le récupérer à partir d'un périphérique de stockage (i.e., disque dur). Comme les fichiers compressés prennent moins de zone de stockage, ils peuvent être récupérés plus rapidement du périphérique de stockage (i.e., disque dur) que les fichiers non compressés et peut être décompressé à la volée. Dans l'ensemble, cela réduit le temps d'accès au fichier et améliore les performances du système de fichiers.

Cet article vous montrera comment activer la compression sur votre pool ZFS et vos systèmes de fichiers. Je vais également vous montrer comment fonctionne la compression locale et héritée des systèmes de pool et de fichiers ZFS. Alors, commençons.

Création d'une piscine ZFS:

Pour expérimenter avec la compression ZFS, vous devriez créer un pool de test ZFS piscine 1 avec deux périphériques de stockage dans une configuration en miroir.

Cet article utilisera le vdb et VDC Dispositifs de stockage pour créer un VDEV (périphérique virtuel) en configuration en miroir et l'utiliser pour créer un pool piscine 1.

$ sudo lsblk -e7

Pour créer une nouvelle piscine piscine 1 en utilisant le vdb et VDC Dispositifs de stockage dans une configuration en miroir, exécutez la commande suivante:

$ sudo zpool Create -f Pool1 Mirror / Dev / Vdb / Dev / VDC

Une nouvelle piscine ZFS piscine 1 doit être créé en utilisant le vdb et VDC Dispositifs de stockage dans une configuration en miroir, comme indiqué dans la capture d'écran ci-dessous.

$ sudo zpool Pool1

Création de systèmes de fichiers ZFS:

Pour tester la compression locale et héréditaire, vous devez également créer des systèmes de fichiers ZFS sur votre pool ZFS piscine 1.

Lorsque vous créez un pool ZFS, ZFS crée un système de fichiers avec le même nom que le nom du pool et le monte automatiquement dans le répertoire racine (/) de votre ordinateur. Le point de montage aura le même nom que le nom de la piscine.

Par exemple, la piscine ZFS piscine 1 que vous avez créé plus tôt créera automatiquement un système de fichiers ZFS piscine 1 et montez-le sur le / piscine1 Répertoire de votre ordinateur, comme vous pouvez le voir dans la capture d'écran ci-dessous.

$ sudo zfs

NOTE: J'appellerai le système de fichiers de niveau supérieur piscine 1 de la piscine piscine 1 un pool ZFS dans cet article. Vous êtes libre de l'appeler un pool ou un système de fichiers. C'est d'accord.

Pour créer un nouveau système de fichiers ZFS FS1 dans la piscine piscine 1, Exécutez la commande suivante:

$ sudo ZFS Créer Pool1 / FS1

Comme vous pouvez le voir, un nouveau système de fichiers ZFS Pool1 / FS1 est créé, et il est monté dans le / pool1 / fs1 annuaire.

$ sudo zfs

Vous pouvez créer un système de fichiers fs2 dans le FS1 Système de fichiers, qui est dans le pool piscine 1 comme suit:

$ sudo ZFS Créer Pool1 / FS1 / FS2

Comme vous pouvez le voir, le système de fichiers fs2 est imbriqué dans le système de fichiers Pool1 / FS1.

$ sudo zfs

Créer un autre système de fichiers FS3 dans la piscine piscine 1 comme suit:

$ sudo ZFS Créer Pool1 / FS3

Un système de fichiers FS3 devrait être créé dans la piscine piscine 1, Comme vous pouvez le voir dans la capture d'écran ci-dessous.

$ sudo zfs

Les systèmes de fichiers FS1, fs2, et FS3 devrait créer la structure du répertoire suivant dans le pool piscine 1:

$ arbre / piscine1

Les systèmes de fichiers ZFS sont comme des répertoires que vous créez sur n'importe quel autre système de fichiers. Ils peuvent être imbriqués les uns dans les autres. Habituellement, ils sont montés dans le point de montage de la piscine (je.e.,/ piscine1 pour la piscine piscine 1). Vous pouvez configurer ZFS pour les monter n'importe où sur votre ordinateur comme n'importe quel autre système de fichiers. Ceci est un sujet pour un autre article.

Maintenant, vous devriez avoir une compréhension de base de la façon dont les systèmes de fichiers sont imbriqués les uns dans les autres dans ZFS. Cela suffit pour comprendre la compression locale et héritée de ZFS dans les prochaines sections de cet article.

Activation de la compression sur les pools ZFS:

Si vous activez la compression sur un pool ZFS, la compression sera également activée sur tous les systèmes de fichiers de ce pool ZFS.

Vous pouvez savoir si la compression est activée sur votre pool ZFS piscine 1 avec la commande suivante:

$ sudo zfs obtient le pool de compression1

La compression n'est pas activée sur les pools ZFS par défaut, comme vous pouvez le voir dans la capture d'écran ci-dessous.

De la même manière, vous pouvez vérifier si la compression est activée sur le FS1, fs2, et FS3 systèmes de fichiers. La compression n'est pas activée sur les systèmes de fichiers ZFS par défaut également.

$ sudo zfs obtient la compression pool1 / fs1
$ sudo zfs obtient la compression pool1 / fs1 / fs2
$ sudo zfs obtient la compression pool1 / fs3

Vous pouvez activer la compression sur la piscine piscine 1 en définissant le compression propriété de la piscine pour sur comme suit:

$ sudo zfs set compression = on pool1

Comme tu peux le voir, compression est autorisé (sur), et c'est un local propriété de la piscine piscine 1.

NOTE: Si une propriété est local, Cela signifie que la propriété est directement définie sur le pool ou le système de fichiers. Il n'est pas hérité de son parent (pool ou système de fichiers).

$ sudo zfs obtient le pool de compression1

Maintenant, si vous vérifiez le compression propriété du FS1, fs2, et FS3 Systèmes de fichiers, vous devriez voir que la compression est activée (sur) dans chacun d'eux, et la propriété est hérité de la piscine1.

Comme vous n'avez pas réglé le compression propriété pour le FS1, fs2, et FS3 Systèmes de fichiers, c'est hérité de la piscine piscine 1.

$ sudo zfs obtient la compression pool1 / fs1
$ sudo zfs obtient la compression pool1 / fs1 / fs2
$ sudo zfs obtient la compression pool1 / fs3

Vous pouvez désactiver compression seulement pour le FS1 Système de fichiers en définissant le compression propriété du FS1 système de fichiers à désactivé comme suit:

$ sudo zfs set compression = off pool1 / fs1

Comme tu peux le voir, compression est désactivé (désactivé) pour le FS1 système de fichiers. Maintenant que le compression la propriété est définie localement pour le FS1 système de fichiers. Ça ne va pas être hérité de la piscine piscine 1.

$ sudo zfs obtient la compression pool1 / fs1

Le fs2 Le système de fichiers est un enfant de la FS1 système de fichiers. Donc, il a hérité du compression propriété du FS1 Système de fichiers (parent), comme vous pouvez le voir dans la capture d'écran ci-dessous.

$ sudo zfs obtient la compression pool1 / fs1 / fs2

Comme vous avez activé la compression sur la piscine piscine 1, La propriété est automatiquement héritée par tous les systèmes de fichiers imbriqués (enfant - FS1, fs2, et FS3) de la piscine piscine 1 (le parent). C'est ainsi que les propriétés sont héritées dans les systèmes de fichiers ZFS - les systèmes de fichiers enfants obtiennent leurs propriétés à partir des systèmes de fichiers parentaux ou du pool, sauf si vous définissez explicitement des propriétés spécifiques pour le système de fichiers enfants.

Si vous devenez fou avec les systèmes de fichiers ZFS nicheurs sans aucune planification préalable, il peut être très difficile pour vous de gérer la compression sur votre pool ZFS. Alors, ne devenez pas fou avec les systèmes de fichiers ZFS nicheurs.

Activation de la compression sur les systèmes de fichiers ZFS:

Vous pouvez également activer la compression sur des systèmes de fichiers ZFS spécifiques. Activons la compression sur le FS3 Système de fichiers ZFS que vous avez créé plus tôt.

À ce stade, la compression est activée pour le FS3 Système de fichiers ZFS car la compression est activée sur le pool piscine 1, Comme vous pouvez le voir dans la capture d'écran ci-dessous.

La propriété de compression pour le FS3 Le système de fichiers est hérité du pool piscine 1.

$ sudo zfs obtient la compression pool1 / fs3

Si vous désactivez la compression sur la piscine piscine 1, La compression sera également désactivée pour le système de fichiers ZFS FS3.

$ sudo zfs set compression = off pool1

Comme tu peux le voir, compression est également désactivé (désactivé) pour le système de fichiers FS3 comme il l'a hérité de la piscine piscine 1. Si vous activez la compression pour le FS3 Système de fichiers localement, alors cela ne se produira pas.

$ sudo zfs obtient la compression pool1 / fs3

Pour permettre la compression pour le FS3 système de fichiers, définissez la propriété de compression du FS3 système de fichiers à sur comme suit:

$ sudo zfs set compression = on pool1 / fs3

Comme tu peux le voir, compression est autorisé (sur) pour le FS3 Système de fichiers localement.

Si vous voulez, vous pouvez désactiver compression pour le FS3 Système de fichiers comme suit:

$ sudo zfs set compression = off pool1 / fs3

La compression doit être désactivée pour le FS3 Système de fichiers, comme vous pouvez le voir dans la capture d'écran ci-dessous.

$ sudo zfs obtient la compression pool1 / fs3

Vérification de la compression des données:

Une fois que vous avez activé la compression sur votre pool ou système de fichiers ZFS, vous voudrez savoir à quel point les données stockées sur le pool ou le système de fichiers ZFS sont compressées. Dans cette section, je vais vous montrer comment faire ça.

Détruisons la piscine ZFS Pool1 que vous venez de créer et de le recréer pour rendre les choses un peu plus simples.

Pour détruire la piscine ZFS piscine 1, Exécutez la commande suivante:

$ sudo zpool détruire la piscine1

Maintenant, créez la piscine ZFS piscine 1 à nouveau en utilisant le vdb et VDC Dispositifs de stockage dans la configuration du miroir comme suit:

$ sudo zpool Create -f Pool1 Mirror / Dev / Vdb / Dev / VDC

Activer la compression sur la piscine piscine 1 comme suit:

$ sudo zfs set compression = on pool1

La compression doit être activée pour le pool ZFS piscine 1.

$ sudo zfs obtient le pool de compression1

Vous pouvez voir le rapport de compression du pool ZFS piscine 1 avec la commande suivante:

$ sudo zfs obtient compressratio pool1

En ce moment, la piscine piscine 1 est vide. Ainsi, le rapport de compression est 1.00x. Cela signifie qu'aucune donnée n'est encore compressée.

Comme vous pouvez le voir, seulement 108 Ko des données sont utilisées à partir du pool piscine 1.

$ sudo zfs

Copie le /etc Répertoire de la piscine ZFS piscine 1.

$ sudo cp -r / etc / pool1 /

Comme vous pouvez le voir, le /etc Le répertoire est copié dans la piscine ZFS piscine 1.

$ ls / pool1

Notez que la taille du /etc Le répertoire sur la piscine est 4.2 Mb1. Mais, seulement 3.26 Mb2 de l'espace est utilisé à partir de la piscine piscine 1.

$ sudo du -sh / pool1
$ sudo zfs

En réalité, le /etc Le répertoire est 11 Mb en taille, comme vous pouvez le voir dans la capture d'écran ci-dessous.

$ sudo du -sh / etc

Le rapport de compression est à propos 1.93x. C'est un très bon rapport de compression. Plus le rapport de compression est élevé, plus vous économiserez d'espace disque avec la compression ZFS.

$ sudo zfs obtient compressratio pool1

Algorithmes de compression pris en charge ZFS:

Au moment d'écrire ces lignes, ZFS prend en charge les algorithmes de compression de données suivants:

i) lzjb: Cet algorithme est optimisé pour les performances. Il fournit également un rapport de compression de données décent.

ii) LZ4: Cet algorithme est un remplacement pour le lzjb algorithme. Il fournit une compression et une décompression plus rapides. Le rapport de compression est modérément plus élevé que le lzjb algorithme.

iii) gzip: Utilise le même algorithme de compression que le gzip commande. Le gzip L'algorithme de compression prend en charge différents niveaux de compression. Le niveau de compression peut être 1-9. Vous pouvez utiliser gzip-n (N est le niveau) pour définir un niveau pour le gzip algorithme de compression. Si vous ne spécifiez pas de niveau pour le gzip Algorithme de compression, ZFS utilise le niveau 6 (gzip-6) par défaut.

gzip-1: Niveau 1 GZIP - Ratio de compression le plus rapide mais le plus bas.

gzip-2: Niveau 2 GZIP - plus lent que le niveau 1 mais un rapport de compression plus élevé que le niveau 1.

GZIP-3: Niveau 3 GZIP - plus lent que le niveau 2 mais un rapport de compression plus élevé que le niveau 2.

gzip-4: Niveau 4 GZIP - plus lent que le niveau 3 mais un rapport de compression plus élevé que le niveau 3.

GZIP-5: Niveau 5 GZIP - plus lent que le niveau 4 mais un rapport de compression plus élevé que le niveau 4.

gzip-6: Niveau 6 GZIP - plus lent que le niveau 5 mais un rapport de compression plus élevé que le niveau 5.

gzip-7: Niveau 7 GZIP - plus lent que le niveau 6 mais un rapport de compression plus élevé que le niveau 6.

gzip-8: Niveau 8 GZIP - plus lent que le niveau 7 mais un rapport de compression plus élevé que le niveau 7.

gzip-9: Niveau 9 GZIP - Ratio de compression le plus lent mais le plus élevé.

iv) Zle: Cet algorithme est optimisé pour comprimer les courses de zéros.

lzjb est l'algorithme de compression de données par défaut du système de fichiers ZFS.

Si vous avez le lz4_compress fonctionnalité activée sur votre pool ZFS, puis l'algorithme de compression de données par défaut sera lz4.

Pour vérifier si le lz4_compress La fonction est activée sur votre pool ZFS piscine 1, Exécutez la commande suivante:

$ sudo zpool get feature @ lz4_compress pool1

Comme vous pouvez le voir, le lz4_compress La fonction est activée dans le pool ZFS piscine 1.

Vous pouvez définir un algorithme de compression différent sur votre pool ou système de fichiers ZFS comme suit:

$ sudo zfs set compression =

Remplacer avec l'un des algorithmes de compression pris en charge ZFS et avec le pool ZFS ou le système de fichiers où vous souhaitez activer la compression à l'aide de l'algorithme de compression .

Par exemple, pour activer la compression et utiliser le gzip-9 Algorithme de compression sur la piscine piscine 1, Exécutez la commande suivante:

$ sudo zfs set compression = gzip-9 pool1

Comme tu peux le voir, gzip-9 La compression est activée sur la piscine piscine 1.

$ sudo zfs obtient le pool de compression1

Maintenant, créez un système de fichiers ZFS FS3 sur la piscine ZFS piscine 1 comme suit:

$ sudo ZFS Créer Pool1 / FS3

De la même manière, vous pouvez permettre une compression sur le FS3 Système de fichiers ZFS à l'aide du girouette Algorithme de compression comme suit:

$ sudo zfs set compression = zle pool1 / fs3

Comme tu peux le voir, girouette La compression est activée sur le système de fichiers ZFS FS3.

$ sudo zfs obtient la compression pool1 / fs3

Devrais-je activer la compression ZFS?

La taille de chaque type de fichier n'est pas réduite lorsqu'elle est compressée. Vidéo (I.e., Mp4), audio (i.e., Mp3), et image (i.e., Jpeg) fichiers, par exemple. Au lieu que leur taille soit réduite, parfois, ils deviennent plus gros lorsqu'ils sont compressés. Ceci est un inconvénient de la compression du système de fichiers.

Si vous stockez la vidéo, l'audio et les images uniquement sur votre système de pool / fichiers ZFS, la compression peut ne pas vous offrir de nombreux avantages. Mais si vous stockez des fichiers texte et d'autres fichiers compressibles (i.e., Document Word, binaires / programmes exécutables), alors activer la compression sur votre système de pool / fichiers ZFS en vaut la peine. Cela vous fera économiser beaucoup d'espace disque et améliorera vos performances de pool / système de fichiers ZFS.

Conclusion:

Dans cet article, je vous ai montré comment activer la compression sur vos pools et systèmes de fichiers ZFS. Je vous ai également montré comment vérifier le rapport de compression de vos pools et systèmes de fichiers ZFS pour savoir comment les données sont compressées efficacement. J'ai discuté des algorithmes de compression ZFS disponibles et vous montré comment activer la compression sur vos pools et systèmes de fichiers ZFS en utilisant également des algorithmes de compression pris en charge ZFS spécifiques.

Les références:

[1] MANPAGE DE ZFS