So ermöglichen Sie die ZFS -Deduplizierung

So ermöglichen Sie die ZFS -Deduplizierung
Die Deduplikationsfunktion des ZFS -Dateisystems ist eine Möglichkeit, redundante Daten aus ZFS -Pools/Dateisystemen zu entfernen. Einfach ausgedrückt, wenn Sie viele Dateien auf Ihrem ZFS -Pool/-dateisystem speichern und einige dieser Dateien gleich sind, werden nur eine Kopie dieser Dateien auf dem ZFS -Pool/Dateisystem aufbewahrt. Der Rest von ihnen wird ein Hinweis auf diese Kopie der Datei sein. Dadurch sparen Sie viel Speicherplatz in Ihrem ZFS -Pool/-Fatussystem.

Wenn Sie technisch gesehen, wenn Sie neue Dateien in Ihrem ZFS -Pool/-Fatusystem kopieren/verschieben/erstellen. Selbst wenn Teile der Datei abgestimmt sind.

In diesem Artikel werde ich Ihnen zeigen, wie Sie die Deduplizierung in Ihren ZFS -Pools/Dateisystemen aktivieren können. Also lasst uns anfangen.

Inhaltsverzeichnis:

  1. Erstellen eines ZFS -Pools
  2. Aktivierung der Deduplizierung auf ZFS -Pools
  3. Aktivieren Sie die Deduplizierung in ZFS -Dateisystemen
  4. Testen der ZFS -Deduplizierung
  5. Probleme der ZFS -Deduplizierung
  6. Deaktivieren der Deduplizierung in ZFS -Pools/Dateisystemen
  7. Anwendungsfälle für die ZFS -Deduplizierung
  8. Abschluss
  9. Verweise

Erstellen eines ZFS -Pools:

Um mit ZFS -Deduplizierung zu experimentieren, werde ich einen neuen ZFS -Pool mit dem erstellen VDB Und VDC Speichergeräte in einer Spiegelkonfiguration. Sie können diesen Abschnitt überspringen, wenn Sie bereits über einen ZFS -Pool zum Testen der Deduplizierung verfügen.

$ sudo lsblk -e7

So erstellen Sie einen neuen ZFS -Pool Pool1 Verwendung der VDB Und VDC Speichergeräte in der gespiegelten Konfiguration führen Sie den folgenden Befehl aus:

$ sudo zpool erstellen -f pool1 mirror /dev /vdb /dev /vdc

Ein neuer ZFS -Pool Pool1 sollte erstellt werden, wie Sie im Screenshot unten sehen können.

$ sudo zpool Status

Aktivierung der Deduplizierung auf ZFS -Pools:

In diesem Abschnitt werde ich Ihnen zeigen, wie Sie die Deduplizierung auf Ihrem ZFS -Pool aktivieren können.

Sie können überprüfen, ob die Deduplizierung in Ihrem ZFS -Pool aktiviert ist Pool1 mit dem folgenden Befehl:

$ sudo zfs bekommen dedup pool1

Wie Sie sehen können, ist die Deduplizierung standardmäßig nicht aktiviert.

Führen Sie den folgenden Befehl aus:

$ sudo ZFS setzen Dedup = auf Pool1

Die Deduplizierung sollte in Ihrem ZFS -Pool aktiviert werden Pool1 Wie Sie im Screenshot unten sehen können.

$ sudo zfs bekommen dedup pool1

Aktivierung der Deduplizierung in ZFS -Dateisystemen:

In diesem Abschnitt werde ich Ihnen zeigen, wie Sie die Deduplizierung in einem ZFS -Dateisystem aktivieren können.

Erstellen Sie zunächst ein ZFS -Dateisystem FS1 Auf Ihrem ZFS -Pool Pool1 folgendermaßen:

$ sudo ZFS erstellen Pool1/FS1

Wie Sie sehen können, ist ein neuer ZFS -Dateisystem FS1 Ist erstellt.

$ sudo ZFS -Liste

Wie Sie die Deduplizierung auf dem Pool aktiviert haben Pool1, Die Deduplizierung ist auch im ZFS -Dateisystem aktiviert FS1 (ZFS -Dateisystem FS1 erbt es aus dem Pool Pool1).

$ sudo zfs erhalten Dedup Pool1/FS1

Als ZFS -Dateisystem FS1 erbt die Deduplizierung (Dedup) Eigenschaft aus dem ZFS -Pool Pool1, Wenn Sie die Deduplizierung auf Ihrem ZFS -Pool deaktivieren Pool1, Die Deduplizierung sollte auch für das ZFS -Dateisystem deaktiviert werden FS1. Wenn Sie das nicht wollen, müssen Sie die Deduplizierung in Ihrem ZFS -Dateisystem aktivieren FS1.

Sie können die Deduplizierung in Ihrem ZFS -Dateisystem aktivieren FS1 folgendermaßen:

$ sudo ZFS setzen Dedup = auf Pool1/FS1

Wie Sie sehen können, ist die Deduplizierung für Ihr ZFS -Dateisystem aktiviert FS1.

Testen der ZFS -Deduplizierung:

Um die Dinge einfacher zu machen, werde ich das ZFS -Dateisystem zerstören FS1 aus dem ZFS -Pool Pool1.

$ sudo ZFS zerstören Pool1/FS1

Das ZFS -Dateisystem FS1 sollte aus dem Pool entfernt werden Pool1.

Ich habe das Arch Linux ISO -Bild auf meinem Computer heruntergeladen. Kopieren wir es in den ZFS -Pool Pool1.

$ sudo cp -v downloads/archlinux -2021.03.01-X86_64.ISO /Pool1 /Bild1.ISO

Wie Sie sehen können, habe ich das erste Mal das Arch Linux -ISO -Bild kopiert, es wurde aufgebraucht 740 MB des Festplattenraums aus dem ZFS -Pool Pool1.

Beachten Sie auch, dass das Deduplizierungsverhältnis (Dedup) Ist 1.00x. 1.00x des Verhältnisses von Deduplizierung bedeutet, dass alle Daten eindeutig sind. Es werden also noch keine Daten dedupliziert.

Kopieren wir das gleiche Arch Linux ISO -Bild in den ZFS -Pool Pool1 nochmal.

Wie Sie sehen können, nur 740 MB des Speicherplatzes wird verwendet, obwohl wir den doppelten Speicherplatz doppelt so.

Das Deduplizierungsverhältnis (Dedup) Auch erhöht sich auf 2.00x. Es bedeutet, dass die Deduplizierung die Hälfte des Festplattenraums spart.

$ sudo zpoolliste

Obwohl über 740 MB des physischen Speicherplatzes wird logischerweise genutzt 1.44 GB des Speicherplatzes wird am ZFS -Pool verwendet Pool1 Wie Sie im Screenshot unten sehen können.

$ sudo ZFS -Liste

Kopieren wir dieselbe Datei in den ZFS -Pool Pool1 noch ein paar Mal.

Wie Sie sehen können, wurde nach derselben Datei fünfmal in den ZFS -Pool kopiert Pool1, Logischerweise verwendet der Pool ungefähr 3.59 GB des Speicherplatzes.

$ sudo ZFS -Liste

5 Kopien derselben Datei verwenden jedoch nur etwa 739 MB Festplattenraum vom physischen Speichergerät aus.

Das Deduplizierungsverhältnis (Dedup) ist ungefähr 5 (5.01x). Die Deduplizierung spart also etwa 80% (1-1/DEDUP) des verfügbaren Speicherplatzes des ZFS-Pools Pool1.

Je höher das Deduplizierungsverhältnis (DEDUP) der Daten, die Sie auf Ihrem ZFS -Pool/-dateisystem gespeichert haben, desto mehr Speicherplatz sparen Sie mit Deduplizierung.

Probleme der ZFS -Deduplizierung:

Die Deduplizierung ist eine sehr schöne Funktion und spart viel Speicherplatz Ihres ZFS -Pools/-dateisystems, wenn die Daten, die Sie auf Ihrem ZFS -Pool/Dateisystem speichern.

Wenn die Daten, die Sie auf Ihrem ZFS -Pool/Dateisystem speichern. Stattdessen verschwenden Sie den Speicher, den ZFS sonst für das Caching und andere wichtige Aufgaben verwenden könnte.

Damit die Deduplizierung funktioniert. Zu diesem Zweck erstellt ZFS eine Deduplication -Tabelle (DDT) im Speicher (RAM) Ihres Computers und speichern Sie Hashed -Datenblöcke Ihres ZFS -Pools/Dateisystems dort. Wenn Sie also versuchen, eine neue Datei in Ihrem ZFS -Pool/-dateisystem zu kopieren/zu verschieben/zu erstellen.

Wenn Sie redundante Daten auf Ihrem ZFS -Pool/-dateisystem nicht speichern, findet fast keine Deduplizierung statt und eine vernachlässigbare Menge an Festplattenräumen wird gespeichert. Unabhängig davon.

Wenn Sie also ein großes ZFS -Pool/ein Dateisystem haben, müssen ZFS viel Speicher verwenden, um die Deduplication -Tabelle (DDT) zu speichern (DDT). Wenn die ZFS -Deduplizierung Ihnen nicht viel Speicherplatz speichert, wird all dieser Speicher verschwendet. Dies ist ein großes Problem der Deduplizierung.

Ein weiteres Problem ist die hohe CPU -Nutzung. Wenn die Deduplication Table (DDT) zu groß ist, müssen ZFS möglicherweise auch viele Vergleichsvorgänge durchführen und die CPU -Nutzung Ihres Computers erhöhen.

Wenn Sie vorhaben, die Deduplizierung zu verwenden, sollten Sie Ihre Daten analysieren und herausfinden, wie gut die Deduplizierung mit diesen Daten funktioniert und ob die Deduplizierung für Sie kostensparende Kosten erbringen kann.

Sie können herausfinden, wie viel Speicher die Deduplizierungstabelle (DDT) des ZFS -Pools Pool1 verwendet mit dem folgenden Befehl:

$ sudo zpool Status -d Pool1

Wie Sie sehen können, ist die Deduplizierungstabelle (DDT) des ZFS -Pools Pool1 gelagert 5860 Einträge und jeder Eintrag verwendet 324 Bytes des Gedächtnisses.

Speicher für die DDT (Pool1) = 5860 Einträge x 324 Bytes pro Eintrag

= 1.898.640 Bytes
= 1.854.14 kb
= 1.8107 MB

Deaktivieren der Deduplizierung in ZFS -Pools/Dateisystemen:

Sobald Sie die Deduplizierung in Ihrem ZFS -Pool/-dateisystem aktiviert haben, bleiben deduplizierte Daten dedupliziert. Sie können deduplizierte Daten nicht loswerden, selbst wenn Sie die Deduplizierung in Ihrem ZFS -Pool/-dateisystem deaktivieren.

Es gibt jedoch einen einfachen Hack, um die Deduplizierung aus Ihrem ZFS -Pool/Dateisystem zu entfernen:

i) Kopieren Sie alle Daten aus Ihrem ZFS -Pool/-Fatussystem an einen anderen Ort.

ii) Entfernen Sie alle Daten aus Ihrem ZFS -Pool/Dateisystem.

iii) Deaktivieren Sie die Deduplizierung in Ihrem ZFS -Pool/-dateisystem.

iv) Verschieben Sie die Daten zurück in Ihr ZFS -Pool/Dateisystem.

Sie können die Deduplizierung auf Ihrem ZFS -Pool deaktivieren Pool1 mit dem folgenden Befehl:

$ sudo zfs set dedup = off pool1

Sie können die Deduplizierung in Ihrem ZFS -Dateisystem deaktivieren FS1 (im Pool erstellt Pool1) mit dem folgenden Befehl:

$ sudo zfs set dedup = off pool1/fs1

Sobald alle deduplizierten Dateien entfernt und die Deduplizierung deaktiviert ist. Auf diese Weise überprüfen Sie, ob in Ihrem ZFS -Pool/Dateisystem keine Deduplizierung stattfindet.

$ sudo zpool Status -d Pool1

Anwendungsfälle für ZFS -Deduplizierung:

Die ZFS -Deduplizierung hat einige Vor- und Nachteile. Es gibt jedoch einige Verwendungen und kann in vielen Fällen eine wirksame Lösung sein.

Zum Beispiel,

i) Benutzerhausverzeichnisse: Möglicherweise können Sie die ZFS -Deduplizierung für Benutzer -Heimverzeichnisse Ihrer Linux -Server verwenden. Die meisten Benutzer speichern möglicherweise fast ähnliche Daten in ihren Heimverzeichnissen. Es besteht also eine hohe Chance, dass die Deduplizierung dort wirksam ist.

ii) Shared Web Hosting: Sie können die ZFS -Deduplizierung für gemeinsam genutzte Hosting -WordPress- und andere CMS -Websites verwenden. Da WordPress und andere CMS -Websites viele ähnliche Dateien haben, ist die ZFS -Deduplizierung dort sehr effektiv.

iii) selbst gehostete Wolken: Möglicherweise können Sie einiges an Speicherplatz sparen, wenn Sie die ZFS -Deduplizierung zum Speichern von NEXTCLOUD/OwnCloud -Benutzerdaten verwenden.

iv) Web- und App -Entwicklung: Wenn Sie ein Web-/App -Entwickler sind, ist es sehr wahrscheinlich, dass Sie mit vielen Projekten arbeiten werden. Möglicherweise verwenden Sie dieselben Bibliotheken (ich.e. Knotenmodule, Python -Module) für viele Projekte. In solchen Fällen kann die ZFS -Deduplizierung viel Speicherplatz sparen.

Abschluss:

In diesem Artikel habe ich erörtert, wie die ZFS -Deduplizierung funktioniert, die Vor- und Nachteile der ZFS -Deduplizierung und einige ZFS -Deduplizierungs -Anwendungsfälle. Ich habe Ihnen gezeigt, wie Sie die Deduplizierung in Ihren ZFS -Pools/-Fatelsystemen aktivieren können.

Ich habe Ihnen auch gezeigt. Ich habe Ihnen gezeigt, wie Sie die Deduplizierung auch in Ihren ZFS -Pools/-Dateisystemen deaktivieren können.

Verweise:

[1] Wie man den Hauptspeicher für die ZFS -Deduplizierung sammelt

[2] Linux - Wie groß ist der momentan meine ZFS -Dedup -Tabelle? - Serverfehler

[3] Einführung von ZFS unter Linux - Damian Wojstaw