So aktivieren Sie die ZFS -Komprimierung

So aktivieren Sie die ZFS -Komprimierung
Das Dateisystemkomprimierungsfunktion komprimiert die auf dem Dateisystem gespeicherten Dateien automatisch, um den wertvollen Festplattenraum Ihres Speichergeräts zu speichern.

Wie viele andere Dateisysteme unterstützt das ZFS-Dateisystem auch die Komprimierung auf Dateisystemebene auf.

Die Vorteile der ZFS -Dateisystemkomprimierung sind:

i) Speichert Diskonplätze: Wie ich bereits erwähnt habe, werden die Dateien, die Sie auf Ihrem ZFS -Pool-/Dateisystem speichern.

ii) verkürzt die Dateizugriffszeit: Die Prozessoren sind heutzutage sehr schnell. Sie können Dateien in Echtzeit dekomprimieren. Daher dauert es weniger Zeit, eine Datei zu dekomprimieren, als sie von einem Speichergerät abzurufen (i.e., Festplatte). Wenn komprimierte Dateien weniger Speicherbereich einnehmen, können sie schneller vom Speichergerät abgerufen werden (i.e., Festplatte) als unkomprimierte Dateien und können im laufenden Fliegen dekomprimiert werden. Insgesamt verkürzt dies die Dateizugriffszeit und verbessert die Leistung des Dateisystems.

In diesem Artikel werden Sie angezeigt, wie Sie die Komprimierung auf Ihrem ZFS -Pool und Ihren Dateisystemen aktivieren können. Ich werde Ihnen auch zeigen. Also lasst uns anfangen.

Erstellen eines ZFS -Pools:

Um mit der ZFS -Komprimierung zu experimentieren, sollten Sie einen Test -ZFS -Pool erstellen Pool1 mit zwei Speichergeräten in einer gespiegelten Konfiguration.

Dieser Artikel wird die verwenden VDB Und VDC Speichergeräte zum Erstellen eines VDEV (virtuelles Gerät) in der gespiegelten Konfiguration und verwenden Sie es zum Erstellen eines Pools Pool1.

$ sudo lsblk -e7

Um einen neuen Pool zu erstellen Pool1 Verwendung der VDB Und VDC Speichergeräte In einer 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 mit dem erstellt werden VDB Und VDC Speichergeräte in einer gespiegelten Konfiguration, wie im folgenden Screenshot gezeigt.

$ sudo Zpool Statuspool1

Erstellen von ZFS -Dateisystemen:

Um lokale und ererbte Komprimierung zu testen, müssen Sie auch einige ZFS -Dateisysteme auf Ihrem ZFS -Pool erstellen Pool1.

Wenn Sie einen ZFS -Pool erstellen, erstellt ZFS ein Dateisystem mit demselben Namen wie der Poolname und montiert es automatisch im Stammverzeichnis (/) Ihres Computers. Der Mountspunkt hat den gleichen Namen wie der Poolname.

Zum Beispiel der ZFS -Pool Pool1 Das frühere Erstellen erstellt automatisch ein ZFS -Dateisystem Pool1 und montieren es auf dem /Pool1 Verzeichnis Ihres Computers, wie Sie im Screenshot unten sehen können.

$ sudo ZFS -Liste

NOTIZ: Ich werde das Dateisystem der obersten Ebene anrufen Pool1 des Pools Pool1 Ein ZFS -Pool in diesem Artikel. Sie können es frei als Pool oder Dateisystem nennen. Es ist in Ordnung.

So erstellen Sie ein neues ZFS -Dateisystem FS1 im Pool Pool1, Führen Sie den folgenden Befehl aus:

$ sudo ZFS erstellen Pool1/FS1

Wie Sie sehen können, ein neues ZFS -Dateisystem Pool1/FS1 wird erstellt und ist in der montiert /pool1/fs1 Verzeichnis.

$ sudo ZFS -Liste

Sie können ein Dateisystem erstellen FS2 im FS1 Dateisystem, das sich im Pool befindet Pool1 folgendermaßen:

$ sudo ZFS erstellen Pool1/FS1/FS2

Wie Sie sehen können, das Dateisystem FS2 ist im Dateisystem verschachtelt Pool1/FS1.

$ sudo ZFS -Liste

Erstellen Sie ein anderes Dateisystem FS3 im Pool Pool1 folgendermaßen:

$ sudo ZFS erstellen Pool1/FS3

Ein Dateisystem FS3 sollte im Pool erstellt werden Pool1, Wie Sie im Screenshot unten sehen können.

$ sudo ZFS -Liste

Die Dateisysteme FS1, FS2, Und FS3 sollte die folgende Verzeichnisstruktur im Pool erstellen Pool1:

$ tree /pool1

ZFS -Dateisysteme sind wie Verzeichnisse, die Sie in jedem anderen Dateisystem erstellen. Sie können ineinander verschachtelt werden. Normalerweise sind sie im Mountspunkt des Pools montiert (ich.e.,/Pool1 für den Pool Pool1). Sie können ZFS so konfigurieren, dass sie wie jedes andere Dateisystem überall auf Ihrem Computer montiert werden. Dies ist ein Thema für einen anderen Artikel.

Jetzt sollten Sie ein grundlegendes Verständnis dafür haben, wie Dateisysteme in ZFS ineinander verschachtelt sind. Das reicht aus, um die lokale und erbte Komprimierung von ZFS in den kommenden Abschnitten dieses Artikels zu verstehen.

Aktivierung der Komprimierung auf ZFS -Pools:

Wenn Sie die Komprimierung auf einem ZFS -Pool aktivieren, wird die Komprimierung auch auf allen Dateisystemen dieses ZFS -Pools aktiviert.

Sie können herausfinden, ob die Komprimierung in Ihrem ZFS -Pool aktiviert ist Pool1 mit dem folgenden Befehl:

$ sudo zfs erhalten Kompressionspool1

Die Komprimierung ist standardmäßig nicht in ZFS -Pools aktiviert, wie Sie im Screenshot unten sehen können.

Auf die gleiche Weise können Sie prüfen, ob die Komprimierung auf dem aktiviert ist FS1, FS2, Und FS3 Dateisysteme. Die Komprimierung ist standardmäßig nicht in ZFS -Dateisystemen aktiviert.

$ sudo ZFs erhalten Kompressionspool1/FS1
$ sudo zfs erhalten Kompressionspool1/FS1/FS2
$ sudo zfs erhalten Kompressionspool1/FS3

Sie können die Komprimierung am Pool aktivieren Pool1 Durch Einstellen der Kompression Eigentum des Pools zu An folgendermaßen:

$ sudo zfs set compression = auf pool1

Wie du sehen kannst, Kompression aktiviert (An), und es ist ein lokal Eigentum des Pools Pool1.

NOTIZ: Wenn eine Eigenschaft ist lokal, Dies bedeutet, dass die Eigenschaft direkt auf dem Pool- oder Dateisystem festgelegt ist. Es wird nicht von seinem übergeordneten (Pool oder Dateisystem) geerbt.

$ sudo zfs erhalten Kompressionspool1

Jetzt, wenn Sie die überprüfen Kompression Eigentum des FS1, FS2, Und FS3 Dateisysteme sollten Sie sehen, dass die Komprimierung aktiviert ist (An) in allen von ihnen, und das Eigentum ist von Pool1 geerbt.

Da Sie die nicht gesetzt haben Kompression Eigentum für die FS1, FS2, Und FS3 Dateisysteme ist es vererbt aus dem Pool Pool1.

$ sudo ZFs erhalten Kompressionspool1/FS1
$ sudo zfs erhalten Kompressionspool1/FS1/FS2
$ sudo zfs erhalten Kompressionspool1/FS3

Sie können deaktivieren Kompression Nur für die FS1 Dateisystem durch Einstellen der Kompression Eigentum des FS1 Dateisystem zu aus folgendermaßen:

$ sudo zfs set compression = off pool1/fs1

Wie du sehen kannst, Kompression ist behindert (aus) für die FS1 Dateisystem. Jetzt, wo die Kompression Eigenschaft ist lokal für die eingestellt FS1 Dateisystem. Es wird nicht aus dem Pool geerbt werden Pool1.

$ sudo ZFs erhalten Kompressionspool1/FS1

Der FS2 Dateisystem ist ein Kind der FS1 Dateisystem. Also erbte es das Kompression Eigentum aus dem FS1 Dateisystem (übergeordnet), wie Sie im Screenshot unten sehen können.

$ sudo zfs erhalten Kompressionspool1/FS1/FS2

Wie Sie die Komprimierung auf dem Pool aktiviert haben Pool1, Die Eigenschaft wird automatisch von allen verschachtelten Dateisystemen (Kind "geerbt - FS1, FS2, Und FS3) des Pools Pool1 (das Elternteil). So werden Eigenschaften in ZFS -Dateisystemen geerbt - untergeordnete Dateisysteme erhalten ihre Eigenschaften von den übergeordneten Dateisystemen oder dem Pool, es sei denn.

Wenn Sie ohne vorherige Planung verrückt nach ZFS -Dateisystemen sind, ist es für Sie möglicherweise sehr schwierig, die Komprimierung auf Ihrem ZFS -Pool zu verwalten. Machen Sie also nicht verrückt nach Nisting -ZFS -Dateisystemen.

Aktivierung der Komprimierung auf ZFS -Dateisystemen:

Sie können auch die Komprimierung auf bestimmten ZFS -Dateisystemen aktivieren. Lassen Sie uns die Komprimierung auf dem aktivieren FS3 ZFS -Dateisystem, das Sie früher erstellt haben.

Zu diesem Zeitpunkt ist die Komprimierung für die aktiviert FS3 ZFS -Dateisystem, da die Komprimierung auf dem Pool aktiviert ist Pool1, Wie Sie im Screenshot unten sehen können.

Die Komprimierungseigenschaft für die FS3 Das Dateisystem wird aus dem Pool geerbt Pool1.

$ sudo zfs erhalten Kompressionspool1/FS3

Wenn Sie die Komprimierung am Pool deaktivieren Pool1, Die Komprimierung wird auch für das ZFS -Dateisystem deaktiviert FS3.

$ sudo zfs set compression = off pool1

Wie du sehen kannst, Kompression ist auch deaktiviert (aus) für das Dateisystem FS3 Als es es aus dem Pool geerbt hat Pool1. Wenn Sie die Komprimierung für die aktivieren FS3 Dateisystem lokal, dann wird dies nicht geschehen.

$ sudo zfs erhalten Kompressionspool1/FS3

Um die Komprimierung für die zu ermöglichen FS3 Dateisystem, setzen Sie die Komprimierungseigenschaft der FS3 Dateisystem zu An folgendermaßen:

$ sudo zfs set compression = on pool1/fs3

Wie du sehen kannst, Kompression aktiviert (An) für die FS3 Dateisystem lokal.

Wenn Sie möchten, können Sie deaktivieren Kompression für die FS3 Dateisystem wie folgt:

$ sudo zfs set compression = off pool1/fs3

Komprimierung sollte für die deaktiviert werden FS3 Dateisystem, wie Sie im Screenshot unten sehen können.

$ sudo zfs erhalten Kompressionspool1/FS3

Überprüfen Sie, wie gut Daten komprimiert werden:

Sobald Sie die Komprimierung in Ihrem ZFS -Pool- oder Dateisystem aktiviert haben, möchten Sie wissen, wie gut die auf dem ZFS -Pool- oder Dateisystem gespeicherten Daten komprimiert sind. In diesem Abschnitt werde ich Ihnen zeigen, wie das geht.

Lassen Sie uns den ZFS -Poolpool1 zerstören, den Sie gerade erstellt haben, und erstellen Sie sie neu, um die Dinge ein bisschen einfacher zu machen.

Den ZFS -Pool zerstören Pool1, Führen Sie den folgenden Befehl aus:

$ sudo zpool zerstören Pool1

Erstellen Sie nun den ZFS -Pool Pool1 wieder mit dem VDB Und VDC Speichergeräte in der Spiegelkonfiguration wie folgt:

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

Aktivieren Sie die Komprimierung am Pool Pool1 folgendermaßen:

$ sudo zfs set compression = auf pool1

Die Komprimierung sollte für den ZFS -Pool aktiviert werden Pool1.

$ sudo zfs erhalten Kompressionspool1

Sie können das Kompressionsverhältnis des ZFS -Pools sehen Pool1 mit dem folgenden Befehl:

$ sudo zfs erhalten CompressRatio Pool1

Im Moment der Pool Pool1 ist leer. Das Kompressionsverhältnis ist also 1.00x. Es bedeutet, dass noch keine Daten komprimiert sind.

Wie Sie sehen können, nur 108 kb Daten werden aus dem Pool verwendet Pool1.

$ sudo ZFS -Liste

Kopieren wir die /usw Verzeichnis zum ZFS -Pool Pool1.

$ sudo cp -r/ etc/ pool1/

Wie Sie sehen können, die /usw Das Verzeichnis wird in den ZFS -Pool kopiert Pool1.

$ ls /pool1

Beachten Sie, dass die Größe der Größe der /usw Verzeichnis auf dem Pool ist 4.2 MB1. Aber nur 3.26 MB2 Aus dem Pool wird der Raum genutzt Pool1.

$ sudo du -sh /pool1
$ sudo ZFS -Liste

In Wirklichkeit die /usw Verzeichnis ist 11 MB Größe, wie Sie im Screenshot unten sehen können.

$ sudo du -sh /etc

Das Kompressionsverhältnis ist ungefähr 1.93x. Es ist ein sehr gutes Kompressionsverhältnis. Je höher das Komprimierungsverhältnis ist, desto mehr Speicherplatz sparen Sie mit ZFS -Komprimierung.

$ sudo zfs erhalten CompressRatio Pool1

ZFS unterstützte Komprimierungsalgorithmen:

Zum Zeitpunkt dieses Schreibens unterstützt ZFS die folgenden Datenkomprimierungsalgorithmen:

i) lzjb: Dieser Algorithmus ist für die Leistung optimiert. Es bietet auch ein anständiges Verhältnis von Datenkomprimierung.

ii) LZ4: Dieser Algorithmus ist ein Ersatz für die lzjb Algorithmus. Es bietet eine schnellere Komprimierung und Dekompression. Das Komprimierungsverhältnis ist mäßig höher als die lzjb Algorithmus.

iii) gzip: Verwendet den gleichen Komprimierungsalgorithmus wie die gzip Befehl. Der gzip Der Komprimierungsalgorithmus unterstützt unterschiedliche Komprimierungsniveaus. Der Kompressionsniveau kann 1-9 sein. Sie können verwenden gzip-n (N ist das Niveau) zu definieren, um ein Niveau für die zu definieren gzip Kompressionsalgorithmus. Wenn Sie kein Level für die angeben gzip Komprimierungsalgorithmus, ZFS verwendet Level 6 (gzip-6) standardmäßig.

gzip-1: Stufe 1 Gzip - schnellste, aber niedrigste Kompressionsverhältnis.

GZIP-2: Stufe 2 gzip - langsamer als Stufe 1, aber höheres Komprimierungsverhältnis als Level 1.

GZIP-3: Stufe 3 gzip - langsamer als Stufe 2, aber höheres Kompressionsverhältnis als Level 2.

GZIP-4: Stufe 4 gzip - langsamer als Level 3, aber höheres Kompressionsverhältnis als Level 3.

GZIP-5: Stufe 5 Gzip - langsamer als Stufe 4, aber höheres Kompressionsverhältnis als Stufe 4.

GZIP-6: Stufe 6 gzip - langsamer als Stufe 5, aber höheres Kompressionsverhältnis als Stufe 5.

GZIP-7: Stufe 7 Gzip - langsamer als Stufe 6, aber höheres Kompressionsverhältnis als Stufe 6.

GZIP-8: Stufe 8 GZIP - langsamer als Stufe 7, aber höheres Kompressionsverhältnis als Level 7.

GZIP-9: Stufe 9 GZIP - langsamste, aber höchste Kompressionsverhältnis.

iv) Zle: Dieser Algorithmus ist für die Komprimierung von Nullenläufen optimiert.

lzjb ist der Standarddatenkomprimierungsalgorithmus des ZFS -Dateisystems.

Wenn Sie das haben lz4_compress Funktionen in Ihrem ZFS -Pool aktiviert, dann ist der Standarddatenkomprimierungsalgorithmus LZ4.

Um zu überprüfen, ob die lz4_compress Die Funktion ist auf Ihrem ZFS -Pool aktiviert Pool1, Führen Sie den folgenden Befehl aus:

$ sudo zpool erhalten feature@lz4_compress pool1

Wie Sie sehen können, die lz4_compress Die Funktion ist im ZFS -Pool aktiviert Pool1.

Sie können einen anderen Komprimierungsalgorithmus auf Ihrem ZFS -Pool oder Dateisystem wie folgt festlegen:

$ sudo zfs set compression =

Ersetzen mit einem der ZFs unterstützten Komprimierungsalgorithmen und Mit dem ZFS -Pool- oder Dateisystem, in dem Sie die Komprimierung mit dem Komprimierungsalgorithmus aktivieren möchten .

Zum Beispiel, um die Komprimierung zu aktivieren und die zu verwenden gzip-9 Kompressionsalgorithmus auf dem Pool Pool1, Führen Sie den folgenden Befehl aus:

$ sudo zfs set compression = gzip-9 pool11

Wie du sehen kannst, gzip-9 Die Komprimierung ist am Pool aktiviert Pool1.

$ sudo zfs erhalten Kompressionspool1

Erstellen Sie nun ein ZFS -Dateisystem FS3 Auf dem ZFS -Pool Pool1 folgendermaßen:

$ sudo ZFS erstellen Pool1/FS3

Auf die gleiche Weise können Sie die Komprimierung auf dem aktivieren FS3 ZFS -Dateisystem verwendet das Zle Komprimierungsalgorithmus wie folgt:

$ sudo zfs set compression = zle pool1/fs3

Wie du sehen kannst, Zle Die Komprimierung ist im ZFS -Dateisystem aktiviert FS3.

$ sudo zfs erhalten Kompressionspool1/FS3

Sollte ich ZFS -Komprimierung aktivieren?

Die Größe jeder Dateiart wird beim Komprimieren nicht reduziert. Video (i.e., MP4), Audio (i.e., Mp3) und Bild (ich.e., JPEG) -Dateien zum Beispiel. Anstatt dass ihre Größe reduziert wird, werden sie manchmal größer, wenn sie komprimiert werden. Dies ist ein Nachteil der Dateisystemkomprimierung.

Wenn Sie Video, Audio und Bilder nur auf Ihrem ZFS -Pool-/Dateisystem speichern, bietet die Komprimierung möglicherweise nicht viele Vorteile. Aber wenn Sie Textdateien und andere kompressible Dateien speichern (i.e., Word -Dokument, ausführbare Binärdateien/Programme) und dann die Komprimierung Ihres ZFS -Pools/Dateisystems aktiviert, lohnt sich. Dadurch sparen Sie viel Speicherplatz und verbessern die Leistung Ihrer ZFS -Pool-/Dateisysteme.

Abschluss:

In diesem Artikel habe ich Ihnen gezeigt, wie Sie die Komprimierung auf Ihren ZFS -Pools und Dateisystemen aktivieren können. Ich habe Ihnen auch gezeigt, wie Sie das Komprimierungsverhältnis Ihrer ZFS -Pools und des Dateisystems überprüfen, um herauszufinden, wie effektiv Daten komprimiert werden. Ich habe die verfügbaren ZFS -Komprimierungsalgorithmen besprochen und Ihnen gezeigt.

Verweise:

[1] Manpage von ZFS