ZFS-Dateisystem in Linux Ubuntu: Struktur, Vor- und Nachteile

ZFS-Dateisystem in Linux Ubuntu. Was sind die Merkmale seiner Struktur, Vor- und Nachteile, lassen Sie es uns gemeinsam in unserem Artikel herausfinden.

ZFS-Dateisystem in Linux Ubuntu: Struktur, Vor- und Nachteile

Das ZFS oder Zettabyte File System ist ein Dateisystem, das ursprünglich von Sun Microsystems für das Betriebssystem Solaris entwickelt wurde. Es unterstützt große Datenmengen, kombiniert die Konzepte eines Dateisystems, eines logischen Festplattenmanagers und physischer Medien sowie eine einfache Verwaltung von Speichervolumes.

Es ist das Dateisystem der nächsten Generation, das ursprünglich für NAS-Lösungen mit verbesserter Sicherheit, Zuverlässigkeit und Leistung entwickelt wurde. Im Gegensatz zu anderen Systemen ist ZFS ein 128-Bit-Dateisystem, das praktisch unbegrenzte Speicherkapazität bietet. ZFS ist ein Open-Source-Projekt und steht unter der CDDL-Lizenz (CommonDevelopmentandDistributionLicense).

ZFS-Struktur - ZettabyteFileSystem

Um «das ZFS-Dateisystem» verwenden zu können, müssen Sie entweder FreeBSD oder ein Betriebssystem installieren, das den illumos-Kernel verwendet, einen Ableger des Open Solaris-Kernels.

Wenn Sie ZFS in Ubuntu verwenden möchten, müssen Sie die Unterstützung manuell hinzufügen, was mit ein paar Befehlen leicht zu bewerkstelligen ist. Wir werden später darauf zurückkommen, aber jetzt wollen wir uns erst einmal die Vor- und Nachteile des Dateisystems ansehen.

Zur Ansicht gehen
Das ZFS-Dateisystem in Linux Ubuntu. Warum ist ZFS so gut?

Das ZFS-Dateisystem in Linux Ubuntu. Warum ist ZFS so gut?

Vorteile von ZFS

Zu den Vorteilen des ZFS-Dateisystems gehören die folgenden

Sie hat die Verwaltung vereinfacht

Volume-, RAID- und Dateisystemverwaltung sind hier vereint. Sie benötigen nur wenige Befehle, um Volumes, Redundanzstufen, Dateisysteme, Komprimierung, Einhängepunkte usw. zu erstellen.

Es erleichtert auch die Überwachung, da zwei oder sogar drei kleinere Ebenen zu sehen sind.

Der nächste Vorteil ist die Gewährleistung der Datenintegrität

Wenn Daten geschrieben werden, wird eine Prüfsumme berechnet und mitgeschrieben. Später, wenn die Daten ausgelesen werden, wird die Prüfsumme erneut berechnet. Wenn die geschriebene Prüfsumme und die gelesenen Daten nicht übereinstimmen, wird ein Fehler festgestellt. Das System wird dann versuchen, einen solchen Fehler automatisch zu korrigieren.

ZFS lässt sich außerdem gut skalieren, da neue Geräte hinzugefügt, der Cache verwaltet werden kann usw.

Kopierfunktion beim Schreiben

In den meisten Dateisystemen sind die Daten nach dem Überschreiben für immer verloren. In ZFS hingegen werden neue Informationen in einen anderen Block geschrieben.

 Kopierfunktion beim Schreiben

Die Metadaten des Dateisystems werden dann nach Abschluss des Schreibvorgangs mit den neuen Informationen aktualisiert. Dies führt dazu, dass die alten Daten im Falle eines Systemabsturzes oder eines anderen bösartigen Ereignisses erhalten bleiben.

Er verfügt über integrierte Aufbewahrungsfunktionen

  • Replikation – der Prozess der Erstellung einer Kopie von etwas.

  • Bei der Deduplizierung handelt es sich um einen Prozess, der redundante Kopien von Daten eliminiert und die Speicherbelastung reduziert.

     Deduplizierung
  • Die Komprimierung ist eine Option, die Speicherplatz spart und die Geschwindigkeit erhöht, indem sie die Anzahl der für die Darstellung der Daten erforderlichen Bits reduziert.

  • Schnappschüsse – eine Reihe von Referenzmarkierungen für Daten zu einem bestimmten Zeitpunkt.

     Schnappschüsse
  • Und Klone – eine identische Kopie von etwas.

Beschränkungen von ZFS

Aber wie jedes Dateisystem hat auch ZFS seine Schwächen.

ZFS leidet unter schlechter Leistung, wenn es zu 80 % oder mehr ausgelastet ist

Dies ist ein häufiges Problem bei Dateisystemen. Wenn ein Pool zu 80% ausgelastet ist, müssen Sie entweder den Pool erweitern oder auf mehr Speicherplatz migrieren.

Es gibt keine Möglichkeit, den Pool zu verkleinern

Sie können keine Geräte oder vdevs aus dem Pool entfernen, sobald sie hinzugefügt wurden.

ZFS hat auch Einschränkungen bei der Änderung der Art der Redundanz

Mit Ausnahme der Umwandlung eines einzelnen Festplattenpools in einen Spiegelungspool können Sie den Redundanztyp nicht ändern. Wenn Sie sich für eine Redundanzart entschieden haben, besteht die einzige Lösung darin, diese zu zerstören und eine neue zu erstellen, indem Sie die Daten von Sicherungskopien oder einem anderen Ort wiederherstellen.

Installieren von ZFS in Ubuntu

Lassen Sie uns nun einen Blick darauf werfen, wie man ZFS in einem Linux-Betriebssystem am Beispiel von Ubuntu Version 20.04 installiert.

Für die Installation benötigen wir ein Terminal, das wir mit der Tastenkombination” Strg”+”Alt”+”T” starten.

Führen Sie dann den folgenden Befehl aus

$ sudoaptupdate

um nach Anwendungsupdates zu suchen Nach der Eingabe des Befehls fragt das System nach einem Passwort, geben Sie das Root-Passwort ein und drücken Sie die Eingabetaste (Enter).

sudoaptupdate

Geben Sie den folgenden Befehl zur Installation ein:

$ sudoaptinstallzfsutils-linux

sudoaptinstallzfsutils-linux

Nachdem Sie den Installationsbefehl ausgeführt haben, geben Sie zur Bestätigung «y» ein und drücken die Eingabetaste(Enter). Dadurch wird der Installationsvorgang des Softwarepakets gestartet.

Um die ZFS-Installation zu überprüfen, führen Sie den folgenden Befehl aus:

$ zfs –version

 Überprüfen der installierten Version von ZFS

Das Ergebnis ist die Ausgabe der Softwareversion. Sie können nun einen Speicherpool mit dem virtuellen Gerät vdev erstellen.

 Speicherpool storagepool

Ein Speicherpool (Storagepool) ist eine Gruppe von einem oder mehreren virtuellen Geräten, auf denen Daten gespeichert werden. Der ZFS-Pool, oder Zpool, dient als Datencontainer auf höchster Ebene im gesamten ZFS-System. Es wird verwendet, um ein oder mehrere Dateisysteme (Datasets) oder Blockgeräte (Volumes) zu erstellen. Diese Dateisysteme und Blockgeräte teilen sich den verbleibenden Pool-Speicherplatz. Die Partitionierungs- und Formatierungsvorgänge werden vom ZFS-System durchgeführt.

 Virtuelles Gerät vdev

Ein virtuelles Gerät (vdev) kann aus einem oder mehreren physischen Geräten bestehen. Es kann ein Pool oder ein Teil eines Pools sein und einen Redundanzgrad von Mirror, Triple Mirror, RAIDZ, RAIDZ-2 oder RAIDZ-3 haben.

RAID-Z ist eine Implementierung eines modifizierten RAID-5. In ZFS ist er in der Lage, Fehler und Schreiblücken zu beseitigen, die im ursprünglichen RAID-5 auftreten. RAID-Z1 erfordert mindestens drei Festplatten für den Betrieb: zwei Festplatten für die Speicherung und eine für die Parität.

RAID-Z2 erfordert zwei Festplatten für die Speicherung und zwei für die Parität.

 RAID-Z2

RAID-Z3 - mindestens zwei Laufwerke und drei Laufwerke für Parität.

RAID-Z3

Wie man ein RAIDz aufbaut

Schauen Sie sich nun an, wie man ein RAID-Z von Laufwerken erstellt. Der erste Schritt besteht darin, die Laufwerke zu bestimmen, die für den Aufbau des Arrays verwendet werden sollen.

Um die eingebundenen Laufwerke zu überprüfen und festzustellen, welche benötigt werden, verwenden Sie fdisk. Führen Sie den folgenden Befehl aus, um eine Liste der Laufwerke zu erstellen:

$ sudofdisk -l

Daraufhin wird eine Liste von Festplatten mit detaillierten Informationen zu jeder Festplatte angezeigt.

 Überprüfung der angeschlossenen Festplatten

Ich zeige Ihnen zum Beispiel, wie Sie RAIDZ Level 1 aufbauen, das ein Analogon zu RAID5 mit einer Paritätsplatte ist. So kann das Array weiterlaufen, ohne dass Daten verloren gehen, wenn ein Laufwerk ausfällt.

Ich habe drei Festplatten /dev/sdd, /dev/sde und /dev/sdf. Ich werde einen Pool namens zdata erstellen. Dazu werde ich den folgenden Befehl ausführen:

$ sudozpoolcreate ith2-zfs-raid-1p zdata /dev/sdd /dev/sde /dev/sdf

$ sudozpoolcreatezdataraidz /dev/sdd /dev/sde /dev/sdf

 Erstellen eines Pools namens zdata

Wenn ein Fehler auftritt, können Sie nach zpoolcreate einen Befehl mit dem Parameter -f ausführen, der den Befehl erzwingt.

$ sudozpoolcreate -f ith2-zfs-raid-1p zdata /dev/sdd /dev/sde /dev/sdf

Um den Einhängepunkt nach der Erstellung des Pools herauszufinden, führen Sie den Befehl df -h aus:

$ df –h

 Einhängepunkt abrufen

Aus der Ausgabe geht hervor, dass der Pool in /zdata eingehängt ist. Um den Einhängepunkt für den Pool zu ändern, verwenden Sie die folgende Syntax.

$ sudozfssetmountpoint =<path> <pool_name>

In diesem Beispiel habe ich /var/pool als neuen Einhängepunkt verwendet.

$ sudozfssetmountpoint=/var/poolzdata

Überprüfen Sie den neuen Punkt:

$ df –h

 Überprüfen des neuen Einhängepunkts

Sie können Verzeichnisse im Speicherpool erstellen. Für das Beispiel werde ich ein Verzeichnis namens mydata erstellen

$ sudozfscreatezdata/mydata

Und um alle ZFS-Speicherpools auf dem System anzuzeigen, führen Sie diesen Befehl aus:

$ zpoollist

 Alle ZFS-Speicherpools auf dem System anzeigen

Und um die Konfiguration und den Status jedes Geräts im ZFS-Pool zu erfahren, führen Sie den Befehl status aus.

$ zpoolstatus

Um Ereignisse anzuzeigen und Probleme zu beheben, geben Sie den folgenden Befehl ein

$ sudozpooleventszdata –v

 Abrufen der Konfiguration und des Status jedes Geräts in einem ZFS-Pool

Um eine weitere Festplatte zum ZFS-Speicherpool hinzuzufügen, führen Sie den Befehl mit dem Namen der hinzuzufügenden Festplatte aus.

$ sudozpooladdzdata /dev/sdb

Nachdem Sie das Laufwerk hinzugefügt haben, sehen Sie den Status des Pools:

$ zpoolstatus

 Hinzufügen einer weiteren Festplatte zum ZFS-Speicherpool

Um den ZFS-Speicherpool zu entfernen, führen Sie den folgenden Befehl aus.

$ sudozpooldestroyzdata

Wie man ZFS-Snapshots erstellt, zurücksetzt und löscht

Mit diesem Dateisystem können Sie einen Snapshot Ihres Pools erstellen.

Ein Snapshot ist eine schreibgeschützte Kopie des Dateisystems, die zu einem bestimmten Zeitpunkt erstellt wird. Sie können Snapshots von ganzen Datensätzen oder Pools erstellen. Der Snapshot enthält die ursprüngliche Systemversion des Dateisystems zusammen mit allen Änderungen, die nach der Erstellung des Snapshots vorgenommen wurden. Einfach ausgedrückt, wird beim Erstellen eines Snapshots eine differentielle schreibgeschützte Kopie erstellt.

Der Befehl zum Erstellen eines Schnappschusses lautet zfssnapshot, gefolgt vom Namen des Schnappschusses. In diesem Beispiel habe ich zdata/mydata verwendet, um den Snapshot zu erstellen.

$ sudozfssnapshotzdata/mydata@snap1

Um den Snapshot zu überprüfen, führen Sie den folgenden Befehl aus:

$ zfslist -t snapshot

 Erstellen eines Schnappschusses des ZFS-Pools

Falls erforderlich, kann der Snapshot umbenannt werden

sudozfsrenamezdata/mydata@snap1 zdata/mydata@snap2

Sie können Änderungen rückgängig machen, indem Sie eine Snapshot-Rückgängig-Operation durchführen. Beachten Sie, dass dabei alle Änderungen seit der Erstellung des Snapshots verloren gehen.

Um zum gewünschten Snapshot zurückzukehren, müssen Sie den Befehl zfsrollback mit dem Namen des gewünschten Snapshots ausführen. Dadurch werden alle Änderungen, die nach dem Snapshot in dem Verzeichnis vorgenommen wurden, rückgängig gemacht.

$ sudozfsrollbacktest-pool/mydata@snap1

 ZFS auf den gewünschten Snapshot zurücksetzen

Mit diesem Befehl wird das System auf das richtige Datum zurückgesetzt.

Nach Abschluss des Rollbacks können Sie prüfen, ob sich im Verzeichnis gelöschte Post-Snap-Dateien befinden.

Übertragen und Abrufen von ZFS

Schnappschüsse können in einer Datei gespeichert und zurückgeschickt werden, was sich hervorragend für die Erstellung von Sicherungskopien oder Senden von Kopien über ein Netzwerk (z. B. über ssh) zur Replikation eines Dateisystems eignet.

Der Befehl -send sendet einen Schnappschuss des Dateisystems, der an eine Datei oder an einen anderen Rechner in einem Thread weitergeleitet werden kann. Der Befehl -receive nimmt einen solchen Stream entgegen und schreibt eine Kopie des Schnappschusses zurück in das ZFS-Dateisystem.

Erstellen Sie zum Beispiel einen weiteren Snapshot und speichern Sie ihn mit dem folgenden Befehl in einer Datei:

sudozfssnapshot -r zdata/mydata@snap3

sudozfssendzdata/mydata@snap2> ~/mydata-snap.zfs

 Erstellen Sie einen Schnappschuss und speichern Sie ihn in einer Datei

Und dann kehren Sie es um, indem Sie einen Befehl wie diesen ausführen:

sudozfsreceive -F zdata/mydata-copy< ~/mydata-snap.zfs

 Abrufen eines Schnappschusses aus einer Datei

Zusätzliche Skripte können verwendet werden, um die automatische Erstellung und Rechtfertigung von Snapshots einzurichten, z. B. auf einem Server mit dem ssh-Protokoll.

ZFS-Datenkomprimierung

Und wie bereits erwähnt, ermöglicht ZFS die automatische Komprimierung von Daten. In Anbetracht der Leistung moderner Prozessoren ist dies eine nützliche Option, da eine geringere Datengröße bedeutet, dass weniger Daten physisch gelesen und geschrieben werden müssen, was zu schnelleren E/A-Vorgängen führt. ZFS bietet eine große Auswahl an Komprimierungsmethoden. Die Standardeinstellung ist lz4 (ein leistungsfähiger Ersatz für lzjb), der eine schnellere Komprimierung und Dekomprimierung als lzjb mit einem etwas höheren Kompressionsverhältnis bietet. Um den Komprimierungsgrad zu ändern, können Sie den Befehl verwenden:

sudozfssetcompression=gzip-9 zdata

Oder Sie können sogar die Art der Komprimierung ändern:

sudozfssetcompression=lz4 zdata

Zeigen Sie den Komprimierungsgrad an:

sudozfsgetcompressratio

 ZFS-Datenkomprimierung

Die sicherste Wahl ist lz4, da es wesentlich schneller als alle anderen Optionen ist und eine gute Leistung bietet.

Schlussfolgerung

In diesem Sinne ist ZFS definitiv ein Dateisystem, das eine breite Palette von Funktionen bietet. Es verwaltet nicht nur Daten auf effiziente und innovative Weise, sondern ermöglicht im Notfall auch eine unterbrechungsfreie Datenwiederherstellung. Außerdem kann im Falle eines Ausfalls das gesamte System mit Hilfe der Snapshot-Funktion einfach wiederhergestellt und auf einen bestimmten Zeitpunkt zurückgesetzt werden.

Wenn Sie Probleme mit verlorenen ZFS- und RAIDZ-Dateisysteminformationen haben, verwenden Sie Hetman RAID Recovery. Sie können es verwenden, um versehentlich gelöschte Dateien aus einem ZFS-Dateisystem wiederherzustellen oder um Informationen aus einem abgestürzten RAIDZ-Array abzurufen. Das Programm hilft bei Abstürzen, Formatierung, Überschreiben und anderen Fällen von Datenverlust.

Zur Ansicht gehen
💿 Software zur Wiederherstellung von Daten aus beschädigten RAID-Arrays (2021)

💿 Software zur Wiederherstellung von Daten aus beschädigten RAID-Arrays (2021)

Glib Khomenko

Autor: , Technischer Schreiber

Hlib Khomenko ist Übersetzer und IT-Techniker im Unternehmen „Hetman Software“. Der Autor hat eine spezialisierte Hochschulausbildung und hat langjährige Erfahrung in der deutschen Übersetzung.

Alexandr Shafarenko

Editor: , Technischer Schreiber

Olexander Schafarenko hat langjährige Erfahrungen im Schreiben von Artikeln. Seine Artikel auf dem Blog wurden von Millionen von Benutzern gelesen. Der Autor hat eine spezialisierte Hochschulausbildung und teilt sein Wissen im Bereich IT mit den Lesern.

Für dich empfohlen

Willkommen bei dem KI-gesteuerten Assistenten von Hetman Software.
Chat beginnen