Techniquement, lorsque vous copiez / déplacez-vous / créez de nouveaux fichiers sur votre système de pool / fichier ZFS, ZFS les divisera en morceaux et comparera ces morceaux avec des morceaux existants (des fichiers) stockés sur le Pool / Système de fichiers ZFS pour voir si cela a trouvé des correspondances. Ainsi, même si des parties du fichier sont adaptées, la fonction de déduplication peut enregistrer les espaces de disque de votre pool / système de fichiers ZFS.
Dans cet article, je vais vous montrer comment activer la déduplication sur vos pools / systèmes de fichiers ZFS. Alors, commençons.
Table des matières:
Création d'une piscine ZFS:
Pour expérimenter la déduplication ZFS, je vais créer un nouveau pool ZFS en utilisant le vdb et VDC Dispositifs de stockage dans une configuration miroir. Vous pouvez ignorer cette section si vous avez déjà un pool ZFS pour tester la déduplication.
$ sudo lsblk -e7
Pour créer une nouvelle piscine ZFS piscine 1 en utilisant le vdb et VDC Dispositifs de stockage en configuration en miroir, exécutez la commande suivante:
$ sudo zpool Create -f Pool1 Mirror / Dev / Vdb / Dev / VDC
Une nouvelle piscine ZFS piscine 1 devrait être créé comme vous pouvez le voir dans la capture d'écran ci-dessous.
$ sudo zpool statut
Activation de déduplication sur les pools ZFS:
Dans cette section, je vais vous montrer comment activer la déduplication sur votre pool ZFS.
Vous pouvez vérifier si la déduplication est activée sur votre pool ZFS piscine 1 avec la commande suivante:
$ sudo zfs obtient de la pool de devanture1
Comme vous pouvez le voir, la déduplication n'est pas activée par défaut.
Pour activer la déduplication sur votre pool ZFS, exécutez la commande suivante:
$ sudo zfs set dedup = on pool1
La déduplication doit être activée sur votre pool ZFS piscine 1 Comme vous pouvez le voir dans la capture d'écran ci-dessous.
$ sudo zfs obtient de la pool de devanture1
Activation de déduplication sur les systèmes de fichiers ZFS:
Dans cette section, je vais vous montrer comment activer la déduplication sur un système de fichiers ZFS.
Tout d'abord, créez un système de fichiers ZFS FS1 sur votre piscine ZFS piscine 1 comme suit:
$ sudo ZFS Créer Pool1 / FS1
Comme vous pouvez le voir, un nouveau système de fichiers ZFS FS1 est créé.
$ sudo zfs
Comme vous avez activé la déduplication sur la piscine piscine 1, La déduplication est également activée sur le système de fichiers ZFS FS1 (Système de fichiers ZFS FS1 hérite de la piscine piscine 1).
$ sudo zfs obtient de dédup pool1 / fs1
Comme le système de fichiers ZFS FS1 hérite de la déduplication (déducteur) propriété de la piscine ZFS piscine 1, Si vous désactivez la déduplication sur votre pool ZFS piscine 1, La déduplication doit également être désactivée pour le système de fichiers ZFS FS1. Si vous ne voulez pas cela, vous devrez activer la déduplication sur votre système de fichiers ZFS FS1.
Vous pouvez activer la déduplication sur votre système de fichiers ZFS FS1 comme suit:
$ sudo zfs set dedup = on pool1 / fs1
Comme vous pouvez le voir, la déduplication est activée pour votre système de fichiers ZFS FS1.
Test de déduplication ZFS:
Pour simplifier les choses, je vais détruire le système de fichiers ZFS FS1 de la piscine ZFS piscine 1.
$ sudo zfs détruise la piscine1 / fs1
Le système de fichiers ZFS FS1 devrait être retiré de la piscine piscine 1.
J'ai téléchargé l'image Arch Linux ISO sur mon ordinateur. Copiez-le dans la piscine ZFS piscine 1.
$ sudo cp -v téléchargements / archlinux-2021.03.01-x86_64.ISO / Pool1 / Image1.ISO
Comme vous pouvez le voir, la première fois que j'ai copié l'image Arch Linux ISO, il s'est utilisé 740 MB de l'espace disque de la piscine ZFS piscine 1.
Remarquez également que le rapport de déduplication (Déducteur) est 1.00x. 1.00x de rapport de déduplication signifie que toutes les données sont uniques. Donc, aucune donnée n'est encore dédupliquée.
Copie de la même image ISO Arch Linux dans le pool ZFS piscine 1 encore.
Comme vous pouvez le voir, seulement 740 MB de l'espace disque est utilisé même si nous utilisons deux fois l'espace disque.
Le rapport de déduplication (Déducteur) a également augmenté à 2.00x. Cela signifie que la déduplication économise la moitié de l'espace disque.
$ sudo zpool liste
Même si 740 MB de l'espace disque physique est utilisé, logiquement 1.44 Go de l'espace disque est utilisé sur la piscine ZFS piscine 1 Comme vous pouvez le voir dans la capture d'écran ci-dessous.
$ sudo zfs
Copie le même fichier dans le pool ZFS piscine 1 quelques fois plus.
Comme vous pouvez le voir, une fois le même fichier copié 5 fois dans le pool ZFS piscine 1, Logiquement, la piscine utilise sur 3.59 Go de l'espace disque.
$ sudo zfs
Mais 5 copies du même fichier n'utilisent qu'environ 739 Mo d'espace disque à partir du périphérique de stockage physique.
Le rapport de déduplication (Déducteur) est environ 5 (5.01x). Ainsi, la déduplication a économisé environ 80% (1-1 / déducteur) de l'espace disque disponible de la piscine ZFS piscine 1.
Plus le rapport de déduplication (Dedup) des données que vous avez stockés sur votre pool / système de fichiers ZFS vous.
Problèmes de déduplication ZFS:
La déduplication est une très belle fonctionnalité et il économise beaucoup d'espace disque de votre pool / système de fichiers ZFS si les données que vous stockez sur votre pool / système de fichiers ZFS sont redondantes (le fichier similaire est stocké plusieurs fois) dans la nature.
Si les données que vous stockez sur votre pool / système de fichiers ZFS n'ont pas beaucoup de redondance (presque unique), alors la déduplication ne vous fera pas de bien. Au lieu de cela, vous finirez par gaspiller la mémoire que ZFS pourrait autrement utiliser pour la mise en cache et d'autres tâches importantes.
Pour que la déduplication fonctionne, ZFS doit suivre les blocs de données stockés sur votre pool / système de fichiers ZFS. Pour ce faire, ZFS crée un tableau de déduplication (DDT) dans la mémoire (RAM) de votre ordinateur et stocker des blocs de données hachés de votre pool / système de fichiers ZFS. Ainsi, lorsque vous essayez de copier / déplacer / créer un nouveau fichier sur votre pool / système de fichiers ZFS, ZFS peut vérifier les blocs de données correspondants et enregistrer les espaces de disque en utilisant la déduplication.
Si vous ne stockez pas de données redondantes sur votre pool / système de fichiers ZFS, alors presque aucune déduplication n'aura lieu et une quantité négligeable d'espaces de disque ne sera enregistré. Que la déduplication enregistre ou non les espaces de disque, ZFS devra toujours garder une trace de tous les blocs de données de votre pool / système de fichiers ZFS dans le tableau de déduplication (DDT).
Ainsi, si vous avez un grand Pool / Système de fichiers ZFS, ZFS devra utiliser beaucoup de mémoire pour stocker la table de déduplication (DDT). Si la déduplication ZFS ne vous épargne pas beaucoup d'espace disque, toute cette mémoire est gaspillée. C'est un gros problème de déduplication.
Un autre problème est l'utilisation élevée du processeur. Si le tableau de déduplication (DDT) est trop grand, ZFS peut également devoir faire beaucoup d'opérations de comparaison et cela peut augmenter l'utilisation du processeur de votre ordinateur.
Si vous prévoyez d'utiliser Deduplication, vous devez analyser vos données et savoir à quel point la déduplication fonctionnera avec ces données et si la déduplication peut faire des coûts pour vous.
Vous pouvez savoir combien de mémoire la table de déduplication (DDT) du pool ZFS piscine 1 utilise avec la commande suivante:
$ sudo zpool status -d pool1
Comme vous pouvez le voir, la table de déduplication (DDT) du pool ZFS piscine 1 stocké 5860 Entrées et chaque entrée utilise 324 octets de mémoire.
Mémoire utilisée pour le DDT (pool1) = 5860 entrées x 324 octets par entrée
= 1 898 640 octets
= 1 854.14 kb
= 1.8107 MB
Désactivation de la déduplication sur les pools / systèmes de fichiers ZFS:
Une fois que vous avez activé la déduplication sur votre pool / système de fichiers ZFS, les données dédupliquées restent dédupliquées. Vous ne pourrez pas vous débarrasser des données dédupliquées même si vous désactivez la déduplication sur votre pool / système de fichiers ZFS.
Mais il y a un hack simple pour supprimer la déduplication de votre pool / système de fichiers ZFS:
i) Copiez toutes les données de votre pool / système de fichiers ZFS dans un autre emplacement.
ii) supprimer toutes les données de votre pool / système de fichiers ZFS.
iii) Désactiver la déduplication sur votre pool / système de fichiers ZFS.
iv) Remettez les données vers votre pool / système de fichiers ZFS.
Vous pouvez désactiver la déduplication sur votre pool ZFS piscine 1 avec la commande suivante:
$ sudo zfs set dedup = off pool1
Vous pouvez désactiver la déduplication sur votre système de fichiers ZFS FS1 (Créé dans la piscine piscine 1) avec la commande suivante:
$ sudo zfs set dedup = off pool1 / fs1
Une fois que tous les fichiers dédupliqués sont supprimés et que la déduplication est désactivée, le tableau de déduplication (DDT) doit être vide comme marqué dans la capture d'écran ci-dessous. C'est ainsi que vous vérifiez qu'aucune déduplication n'a lieu sur votre pool / système de fichiers ZFS.
$ sudo zpool status -d pool1
Cas d'utilisation pour la déduplication ZFS:
La déduplication ZFS a des avantages et des inconvénients. Mais il a des utilisations et peut être une solution efficace dans de nombreux cas.
Par exemple,
i) Répertoires domestiques des utilisateurs: Vous pourrez peut-être utiliser la déduplication ZFS pour les répertoires domestiques utilisateur de vos serveurs Linux. La plupart des utilisateurs peuvent stocker des données presque similaires sur leurs répertoires domestiques. Donc, il y a de fortes chances que la déduplication y soit efficace.
ii) Hébergement Web partagé: Vous pouvez utiliser la déduplication ZFS pour l'hébergement partagé WordPress et d'autres sites Web CMS. Comme WordPress et d'autres sites Web CMS ont beaucoup de fichiers similaires, la déduplication ZFS y sera très efficace.
iii) Clouds auto-hébergées: Vous pourrez peut-être économiser un peu d'espace disque si vous utilisez la déduplication ZFS pour stocker les données utilisateur NextCloud / OwnCloud.
iv) Développement du Web et d'applications: Si vous êtes un développeur Web / App, il est très probable que vous travaillerez avec beaucoup de projets. Vous utilisez peut-être les mêmes bibliothèques (je.e. Modules de nœud, modules python) sur de nombreux projets. Dans de tels cas, la déduplication ZFS peut économiser efficacement beaucoup d'espace disque.
Conclusion:
Dans cet article, j'ai discuté du fonctionnement de la déduplication ZFS, des avantages et des inconvénients de la déduplication ZFS et des cas d'utilisation de la déduplication ZFS. Je vous ai montré comment activer la déduplication sur vos pools / systèmes de fichiers ZFS.
Je vous ai également montré comment vérifier la quantité de mémoire que le tableau de déduplication (DDT) de vos pools / systèmes de fichiers ZFS utilise. Je vous ai montré comment désactiver la déduplication sur vos pools / systèmes de fichiers ZFS également.
Les références:
[1] Comment dimensionner la mémoire principale pour la déduplication ZFS
[2] Linux - Quelle est la taille de ma table de Dedupe ZFS pour le moment? - Défaut du serveur
[3] Présentation de ZFS sur Linux - Damian Wojstaw