Navigationslinks überspringen | |
Druckansicht beenden | |
![]() |
Oracle Solaris ZFS-Administrationshandbuch Oracle Solaris 10 1/13 Information Library (Deutsch) |
1. Oracle Solaris ZFS-Dateisystem (Einführung)
2. Erste Schritte mit Oracle Solaris ZFS
3. Verwalten von Oracle Solaris ZFS-Speicher-Pools
4. Installieren und Booten eines Oracle Solaris ZFS-Root-Dateisystems
5. Verwalten von Oracle Solaris ZFS-Dateisystemen
6. Arbeiten mit Oracle Solaris ZFS-Schnappschüssen und -Klonen
Überblick über ZFS-Schnappschüsse
Erstellen und Löschen von ZFS-Schnappschüssen
Aufbewahren von ZFS-Schnappschüssen
Umbenennen von ZFS-Schnappschüssen
Anzeigen von und Zugreifen auf ZFS-Snapshots
Berechnung von Festplattenkapazität für ZFS-Schnappschüsse
Wiederherstellen eines früheren ZFS-Snapshots
Ermitteln von ZFS-Schnappschussunterschieden (zfs diff)
Ersetzen eines ZFS-Dateisystems durch einen ZFS-Klon
Senden und Empfangen von ZFS-Daten
Sichern von ZFS-Daten mit anderen Softwarepaketen zur Erstellung von Sicherungskopien
Identifizieren von ZFS-Schnappschuss-Streams
Senden von ZFS-Schnappschüssen
Empfangen von ZFS-Schnappschüssen
Anwenden verschiedener Eigenschaftswerte auf einen ZFS-Schnappschussdatenstrom
7. Schützen von Oracle Solaris ZFS-Dateien mit Zugriffskontrolllisten und Attributen
8. Delegierte Oracle Solaris ZFS-Administration
9. Fortgeschrittene Oracle Solaris ZFS-Themen
10. Problembehebung und Pool-Wiederherstellung in Oracle Solaris ZFS
11. Empfohlene Oracle Solaris ZFS-Vorgehensweisen
Der Befehl zfs send erstellt von Schnappschüssen Datenstrominstanzen, die auf die Standardausgabe geschrieben werden. Standardmäßig wird ein vollständiger Datenstrom erzeugt. Sie können die Ausgabe in eine Datei oder ein anderes Dateisystem umleiten. Der Befehl zfs receive erstellt einen Schnappschuss, dessen Inhalt in einem Datenstrom auf der Standardeingabe angegeben wird. Wenn ein vollständiger Datenstrom gelesen wurde, wird ein neues Dateisystem erstellt. Mit diesen Befehlen können Sie ZFS-Schnappschussdaten senden und ZFS-Schnappschussdaten und Dateisysteme empfangen. Siehe hierzu die Beispiele im nachfolgenden Abschnitt.
Sichern von ZFS-Daten mit anderen Softwarepaketen zur Erstellung von Sicherungskopien
Anwenden verschiedener Eigenschaftswerte auf einen ZFS-Schnappschussdatenstrom
Die folgenden Lösungen zum Sichern von ZFS-Daten stehen zur Verfügung:
Sicherungsprodukte für Unternehmen – Wenn Sie Bedarf an folgenden Leistungsmerkmalen haben, sollten Sie eine Unternehmenslösung für die Datensicherung in Betracht ziehen:
Wiederherstellung auf Dateibasis
Überprüfung der Datensicherungsmedien
MedienAdministration
Dateisystem-Schnappschüsse und Wiederherstellen des früheren Zustands eines Dateisystems – Mit den Befehlen zfs snapshot und zfs rollback können Sie auf einfache Weise Kopien von Dateisystemen erstellen und aus diesen bei Bedarf Dateisysteme auf einen früheren Zustand zurücksetzen. Sie können die Lösung beispielsweise verwenden, wenn Sie ein Dateisystem bzw. Dateien aus einer früheren Dateisystemversion wiederherstellen möchten.
Weitere Informationen zum Erstellen von Schnappschüssen und Wiederherstellen einer früheren Version aus einem Schnappschuss finden Sie unter Überblick über ZFS-Schnappschüsse.
Sichern von Schnappschüssen – Mit den Befehlen zfs send und zfs receive können Sie ZFS-Schnappschüsse senden und empfangen. Sie können inkrementelle Änderungen zwischen Schnappschüssen sichern, Dateien können jedoch nicht einzeln wiederhergestellt werden. Stattdessen muss der gesamte Dateisystem-Schnappschuss wiederhergestellt werden. Diese Befehle stellen keine vollständige Sicherungslösung für Ihre ZFS-Daten dar.
Replikation über Netzwerk – Mit den Befehlen zfs send und zfs receive können Sie Dateisysteme von einem System auf ein anderes kopieren. Dieser Vorgang unterscheidet sich von herkömmlichen Praktiken bei Software zur DatenträgerAdministration, die Datenspeichergeräte über WAN spiegeln. Dafür ist keine spezielle Konfiguration bzw. Hardware erforderlich. Der Vorteil der Replikation eines ZFS-Dateisystems besteht darin, dass das betreffende Dateisystem in einem Speicher-Pool eines anderen Systems neu erstellt werden kann und Sie für diesen neuen Pool verschiedene Replikationsmethoden wie z. B. RAID-Z angeben können, die Dateisystemdaten aber gleich bleiben.
Archivierungsserviceprogramme – Speichern von ZFS-Daten mit Archivierungsserviceprogrammen wie tar, cpio und pax oder Datensicherungssoftware von Drittherstellern. Derzeit konvertieren tar und cpio die NFSv4-basierten Zugriffskontrolllisten korrekt, pax hingegen nicht.
Neben den Befehlen zfs send und zfs receive können Sie zum Sichern von ZFS-Dateien auch Archivierungsserviceprogramme wie z. B. tar und cpio verwenden. Diese Serviceprogramme sichern ZFS-Dateiattribute und -Zugriffskontrolllisten und können diese auch wiederherstellen. Überprüfen Sie die entsprechenden Optionen der Befehle tar und cpio.
Aktuelle Informationen zu Problemen im Zusammenhang mit ZFS und Backupsoftware von Drittherstellern finden Sie in den Solaris 10-Versionshinweisen.
Ein Schnappschuss eines ZFS-Dateisystems oder -Volumes wird mit dem Befehl zfs send in einen Schnappschuss-Stream konvertiert. Danach können Sie den Schnappschuss-Stream verwenden, um ein ZFS-Dateisystem oder -Volume mit dem Befehl zfs receive neu zu erstellen.
Je nach den zfs send-Optionen, die für das Erstellen des Schnappschuss-Streams verwendet wurden, werden unterschiedliche Typen von Stream-Formaten generiert.
Vollständiger Stream – Besteht aus dem gesamten Dataset-Inhalt seit dem Erstellen des Datasets bis zu dem angegebenen Schnappschuss.
Der Standard-Stream, der mit dem Befehl zfs send generiert wird, ist ein vollständiger Stream. Er enthält ein Dateisystem oder Volume bis zu dem angegebenen Schnappschuss einschließlich. Dieser Stream enthält keine anderen Schnappschüsse als den in der Befehlszeile angegebenen Schnappschuss.
Inkrementeller Stream - Besteht aus der Differenz zwischen zwei Schnappschüssen.
Ein Stream-Package ist ein Stream-Typ, der mindestens einen vollständigen oder inkrementellen Stream enthält. Es gibt drei Typen von Stream-Packages:
Replikations-Stream-Package – Besteht aus dem angegebenen Dataset und seinen untergeordneten Datasets. Es umfasst alle Zwischenschnappschüsse. Wenn der Ursprung des geklonten Datasets kein untergeordneter Schnappschuss des Schnappschusses ist, der in der Befehlszeile angegeben wird, wird dieses ursprüngliche Dataset nicht in dem Stream-Package aufgenommen. Zum Empfang des Streams muss das ursprüngliche Dataset im Zielspeicherpool vorhanden sein.
Beachten Sie die folgende Liste der Datasets und ihrer Ursprünge: Angenommen, sie wurden in der Reihenfolge erstellt, in der sie unten angezeigt werden.
NAME ORIGIN pool/a - pool/a/1 - pool/a/1@clone - pool/b - pool/b/1 pool/a/1@clone pool/b/1@clone2 - pool/b/2 pool/b/1@clone2 pool/b@pre-send - pool/b/1@pre-send - pool/b/2@pre-send - pool/b@send - pool/b/1@send - pool/b/2@send -
Ein Replikations-Stream-Package, das mit der folgenden Syntax erstellt wird:
# zfs send -R pool/b@send ....
besteht aus den folgenden vollständigen und inkrementellen Streams:
TYPE SNAPSHOT INCREMENTAL FROM full pool/b@pre-send - incr pool/b@send pool/b@pre-send incr pool/b/1@clone2 pool/a/1@clone incr pool/b/1@pre-send pool/b/1@clone2 incr pool/b/1@send pool/b/1@send incr pool/b/2@pre-send pool/b/1@clone2 incr pool/b/2@send pool/b/2@pre-send
In der vorherigen Ausgabe ist der Schnappschuss pool/a/1@clone nicht in dem Replikations-Stream-Package enthalten. Als solches kann dieses Replikations-Stream-Package nur in einem Pool empfangen werden, der bereits den Schnappschuss pool/a/1@clone enthält.
Rekursives Stream-Package – Besteht aus dem angegebenen Dataset und seinen untergeordneten Datasets. Im Gegensatz zu Replikations-Stream-Packages sind keine Zwischenschnappschüsse enthalten, es sei denn, sie sind der Ursprung eines geklonten Datasets, das in dem Stream enthalten ist. Wenn der Ursprung eines Datasets kein untergeordneter Schnappschuss des Schnappschusses ist, der in der Befehlszeile angegeben wird, entspricht das Behavior standardmäßig dem Behavior von Replikations-Streams. Ein eigenständiger rekursiver Stream, wie unten beschrieben, wird jedoch so erstellt, dass keine externen Abhängigkeiten vorhanden sind.
Ein rekursives Stream-Package, das mit der folgenden Syntax erstellt wird:
# zfs send -r pool/b@send ...
besteht aus den folgenden vollständigen und inkrementellen Streams:
TYPE SNAPSHOT INCREMENTAL FROM full pool/b@send - incr pool/b/1@clone2 pool/a/1@clone incr pool/b/1@send pool/b/1@clone2 incr pool/b/2@send pool/b/1@clone2
In der vorherigen Ausgabe ist der Schnappschuss pool/a/1@clone nicht in dem rekursiven Stream-Package enthalten. Als solches kann dieses rekursive Stream-Package nur in einem Pool empfangen werden, der bereits den Schnappschuss pool/a/1@clone enthält. Dieses Behavior entspricht dem Szenario des Replikations-Stream-Packages, das oben beschrieben wurde.
Eigenständiges rekursives Stream-Package - Ist nicht von Datasets abhängig, die nicht in dem Stream-Package enthalten sind. Dieses rekursive Stream-Package wird mit der folgenden Syntax erstellt:
# zfs send -rc pool/b@send ...
Es besteht aus den folgenden vollständigen und inkrementellen Streams:
TYPE SNAPSHOT INCREMENTAL FROM full pool/b@send - full pool/b/1@clone2 incr pool/b/1@send pool/b/1@clone2 incr pool/b/2@send pool/b/1@clone2
Beachten Sie, dass der eigenständige rekursive Stream einen vollständigen Stream des Schnappschusses pool/b/1@clone2 enthält, sodass der Schnappschuss pool/b/1 ohne externe Abhängigkeiten empfangen werden kann.
Der Befehl zfs send dient zum Senden der Kopie eines Schnappschuss-Datenstroms und zum Empfangen des Schnappschuss-Datenstroms in einem anderen Pool auf demselben System oder in einem anderen Pool auf einem anderen System, das zur Aufbewahrung von Sicherungsdaten verwendet wird. Beispiel: Zum Senden des Schnappschuss-Streams an einen anderen Pool auf demselben System verwenden Sie folgende Syntax:
# zfs send tank/dana@snap1 | zfs recv spool/ds01
Sie können zfs recv als Aliasnamen für den Befehl zfs receive verwenden.
Wenn Sie den Schnappschuss-Datenstrom an ein anderes System senden, setzen Sie für die Ausgabe von zfs send mit dem Befehl ssh eine Pipeline. Beispiel:
sys1# zfs send tank/dana@snap1 | ssh sys2 zfs recv newtank/dana
Wenn Sie einen vollständige Datenstrom senden, darf das Zieldateisystem nicht vorhanden sein.
Sie können inkrementelle Daten mit der Option i des Befehls -zfs send senden. Beispiel:
sys1# zfs send -i tank/dana@snap1 tank/dana@snap2 | ssh sys2 zfs recv newtank/dana
Das erste Argument (snap1) ist der frühere und das zweite Argument (snap2) der spätere Schnappschuss. In diesem Fall muss das Dateisystem newtank/dana bereits vorhanden sein, damit die inkrementellen Daten empfangen werden können.
Hinweis - Wenn auf Dateiinformationen im ursprünglich empfangenen Dateisystem zugegriffen wird, kann dies dazu führen, dass der inkrementelle Schnappschussempfangsvorgang mit einer Meldung wie der Folgenden nicht erfolgreich verläuft:
cannot receive incremental stream of tank/dana@snap2 into newtank/dana: most recent snapshot of tank/dana@snap2 does not match incremental source
Sie sollten die Eigenschaft atime auf "off" setzen, wenn Sie auf Dateiinformationen im ursprünglich empfangenen Dateisystem zugreifen müssen und wenn Sie gleichzeitig inkrementelle Schnappschüsse in dem empfangenen Dateisystem empfangen müssen.
Die inkrementelle Quelle snap1 kann als letzte Komponente des Schnappschussnamens angegeben werden. Dies bedeutet, dass Sie nach dem Zeichen @ für snap1 nur den Namen angeben müssen, von dem angenommen wird, dass er zum gleichen System wie snap2 gehört. Beispiel:
sys1# zfs send -i snap1 tank/dana@snap2 | ssh sys2 zfs recv newtank/dana
Diese Kurzsyntax entspricht der im vorherigen Beispiel demonstrierten inkrementellen Syntax.
Die folgende Meldung wird angezeigt, wenn Sie versuchen, aus einem anderen Dateisystem (snapshot1) einen inkrementellen Datenstrom zu erzeugen.
cannot send 'pool/fs@name': not an earlier snapshot from the same fs
Wenn mehrere Kopien gespeichert werden sollen, kann eine Komprimierung der Datenstrominstanz des ZFS-Schnappschusses mithilfe des Befehls gzip nützlich sein. Beispiel:
# zfs send pool/fs@snap | gzip > backupfile.gz
Beim Empfangen von Datensystem-Snapshots sollten Sie folgende Schlüsselaspekte berücksichtigen:
Sowohl der Schnappschuss als auch das Dateisystem werden empfangen.
Das Dateisystem und alle untergeordneten Dateisysteme werden ausgehängt.
Während des Empfangs kann auf die betreffenden Dateisysteme nicht zugegriffen werden.
Das ursprüngliche Dateisystem, das empfangen werden soll, darf bei der Übertragung nicht vorhanden sein.
Wenn der Dateisystemname bereits vorhanden ist, können Sie das Dateisystem mit dem Befehl zfs rename umbenennen.
Beispiel:
# zfs send tank/gozer@0830 > /bkups/gozer.083006 # zfs receive tank/gozer2@today < /bkups/gozer.083006 # zfs rename tank/gozer tank/gozer.old # zfs rename tank/gozer2 tank/gozer
Wenn Sie am Zieldateisystem eine Änderung vornehmen und danach einen weiteren inkrementellen Schnappschuss senden möchten, müssen Sie zunächst den vorherigen Zustand des Zieldateisystems wiederherstellen.
Betrachten Sie das folgende Beispiel. Zunächst ändern Sie das Dateisystem wie folgt:
sys2# rm newtank/dana/file.1
Dann senden Sie einen weiteren inkrementellen Schnappschuss (tank/dana@snap3). Sie müssen jedoch erst den vorherigen Zustand des Zieldateisystems wiederherstellen, damit es den neuen inkrementellen Schnappschuss empfangen kann. Sie können den Wiederherstellungsschritt aber auch mithilfe der Option -F überspringen. Beispiel:
sys1# zfs send -i tank/dana@snap2 tank/dana@snap3 | ssh sys2 zfs recv -F newtank/dana
Beim Empfang eines inkrementellen Snapshots muss das Zieldateisystem bereits vorhanden sein.
Wenn Sie am Dateisystem Änderungen vornehmen und den vorherigen Zustand des Zieldateisystems nicht wiederherstellen, sodass es den neuen inkrementellen Schnappschusses empfangen kann, oder Sie die Option -F nicht verwenden, wird eine Meldung wie die folgende angezeigt:
sys1# zfs send -i tank/dana@snap4 tank/dana@snap5 | ssh sys2 zfs recv newtank/dana cannot receive: destination has been modified since most recent snapshot
Bevor das Ausführen der Option -F als erfolgreich gemeldet wird, werden die folgenden Überprüfungen durchgeführt:
Wenn der letzte Schnappschuss nicht mit der inkrementellen Quelle identisch ist, wird weder die Wiederherstellung des früheren Zustands noch der Empfang abgeschlossen, und es wird eine Fehlermeldung angezeigt.
Wenn Sie versehentlich den Namen eines anderen Dateisystems angeben, der mit dem inkrementellen Quellparameter des Befehls zfs receive nicht übereinstimmt, wird weder die Wiederherstellung des früheren Zustands noch der Empfang abgeschlossen, und es wird die folgende Fehlermeldung angezeigt:
cannot send 'pool/fs@name': not an earlier snapshot from the same fs
Sie können einen ZFS-Schnappschussdatenstrom mit einem bestimmten Dateisystem-Eigenschaftswert senden, aber auch einen anderen lokalen Eigenschaftswert angeben, wenn der Schnappschussdatenstrom empfangen wird. Alternativ können Sie ebenfalls festlegen, dass der ursprüngliche Eigenschaftswert beim Empfang des Schnappschussdatenstroms verwendet wird, um das ursprüngliche Dateisystem neu zu erstellen. Außerdem besteht die Möglichkeit, eine Dateisystemeigenschaft zu deaktivieren, wenn der Schnappschussdatenstrom empfangen wird.
Verwenden Sie zfs inherit -S, um einen lokalen Eigenschaftswert auf den empfangenen Wert (sofern vorhanden) zurückzusetzen. Wenn eine Eigenschaft keinen empfangenen Wert aufweist, ist das Verhalten des Befehls zfs inherit -S dasselbe wie das des Befehls zfs inherit ohne die Option -S. Wenn die Eigenschaft einen empfangenen Wert aufweist, maskiert der Befehl zfs inherit den empfangenen Wert mit dem vererbten Wert, bis dieser durch Ausgabe des Befehls zfs inherit -S auf den empfangenen Wert zurückgesetzt wird.
Sie können den Befehl zfs get -o verwenden, um die neue nicht standardmäßige Spalte RECEIVED einzubeziehen. Sie können aber auch den Befehl zfs get -o all verwenden, um alle Spalten einschließlich RECEIVED einzubeziehen.
Sie können die Option zfs send -p verwenden, um Eigenschaften in zu sendenden Datenstrom ohne die Option -R einzubeziehen.
Mit dem Befehl zfs receive -e können mit dem letzten Element des gesendeten Schnappschussnamens den Namen des neuen Schnappschusses bestimmen. Im folgenden Beispiel wird der Schnappschuss poola/bee/cee@1 an das Dateisystem poold/eee gesendet, und nur das letzte Element (cee@1) des Schnappschussnamens wird verwendet, um das Dateisystem und den Schnappschuss zu erstellen.
# zfs list -rt all poola NAME USED AVAIL REFER MOUNTPOINT poola 134K 134G 23K /poola poola/bee 44K 134G 23K /poola/bee poola/bee/cee 21K 134G 21K /poola/bee/cee poola/bee/cee@1 0 - 21K - # zfs send -R poola/bee/cee@1 | zfs receive -e poold/eee # zfs list -rt all poold NAME USED AVAIL REFER MOUNTPOINT poold 134K 134G 23K /poold poold/eee 44K 134G 23K /poold/eee poold/eee/cee 21K 134G 21K /poold/eee/cee poold/eee/cee@1 0 - 21K -
In einigen Fällen kann es vorkommen, dass Dateisystemeigenschaften in einem gesendeten Datenstrom nicht für das empfangene Dateisystem übernommen werden, oder lokale Dateisystemeigenschaften, wie z. B. der Eigenschaftswert mountpoint, zu Problemen mit einer Wiederherstellung führen.
Für das Dateisystem tank/data ist beispielsweise die Eigenschaft compression deaktiviert. Ein Schnappschuss des Dateisystems tank/data wird mit Eigenschaften (Option -p) an einen Sicherungs-Pool gesendet und mit aktivierter Eigenschaft compression empfangen.
# zfs get compression tank/data NAME PROPERTY VALUE SOURCE tank/data compression off default # zfs snapshot tank/data@snap1 # zfs send -p tank/data@snap1 | zfs recv -o compression=on -d bpool # zfs get -o all compression bpool/data NAME PROPERTY VALUE RECEIVED SOURCE bpool/data compression on off local
In diesem Beispiel wird die Eigenschaft compression aktiviert, wenn der Schnappschuss in bpool empfangen wird. Demzufolge ist der Wert von compression für bpool/data aktiviert.
Wird dieser Schnappschussdatenstrom an einen neuen Pool (restorepool) gesendet, möchten Sie eventuell aus Gründen der Wiederherstellung alle ursprünglichen Schnappschusseigenschaften beibehalten. In diesem Fall müssten Sie den Befehl zfs send -b verwenden, um die ursprünglichen Schnappschusseigenschaften wiederherzustellen. Beispiel:
# zfs send -b bpool/data@snap1 | zfs recv -d restorepool # zfs get -o all compression restorepool/data NAME PROPERTY VALUE RECEIVED SOURCE restorepool/data compression off off received
In diesem Beispiel ist der Komprimierungswert off. Dieser stellt den Wert für die Schnappschusskomprimierung aus dem ursprünglichen tank/data-Dateisystem dar.
Wenn Sie bei einem lokalen Dateisystem-Eigenschaftswert in einem Schnappschussdatenstrom möchten, dass die Eigenschaft beim Empfang deaktiviert ist, verwenden Sie den Befehl zfs receive -x. Der folgende Befehl sendet beispielsweise einen rekursiven Schnappschussdatenstrom von Dateisystemen für Home-Verzeichnisse mit allen für einen Sicherungs-Pool reservierten Dateisystemeigenschaften, aber ohne die Eigenschaftswerte für das Kontingent:
# zfs send -R tank/home@snap1 | zfs recv -x quota bpool/home # zfs get -r quota bpool/home NAME PROPERTY VALUE SOURCE bpool/home quota none local bpool/home@snap1 quota - - bpool/home/lori quota none default bpool/home/lori@snap1 quota - - bpool/home/mark quota none default bpool/home/mark@snap1 quota - -
Wenn der rekursive Schnappschuss nicht mit der Option -x empfangen wurde, werden die Kontingenteigenschaften in den empfangenen Dateisystemen festgelegt.
# zfs send -R tank/home@snap1 | zfs recv bpool/home # zfs get -r quota bpool/home NAME PROPERTY VALUE SOURCE bpool/home quota none received bpool/home@snap1 quota - - bpool/home/lori quota 10G received bpool/home/lori@snap1 quota - - bpool/home/mark quota 10G received bpool/home/mark@snap1 quota - -
In diesem Abschnitt wird das Senden und Empfangen komplexerer Snapshot-Datenstreams mit den Befehlen zfs send -I und -R beschrieben.
Beachten Sie beim Senden und Empfangen von komplexen ZFS-Schnappschuss-Datenströmen Folgendes:
Verwenden Sie zfs send mit der Option -I, um alle inkrementellen Datenströme aus einem Schnappschuss an einen kumulativen Schnappschuss zu senden. Sie können mithilfe dieser Option aber auch einen inkrementellen Datenstrom aus dem ursprünglichen Schnappschuss senden, um einen Klon zu erstellen. Der ursprüngliche Schnappschuss muss auf der Empfangsseite bereits vorhanden sein, damit der inkrementelle Datenstrom angenommen werden kann.
Mit zfs send und der Option -R senden Sie einen Replikationsdatenstrom aller untergeordneten Dateisysteme. Nach dem Empfang des Replikationsdatenstroms werden alle Eigenschaften, Schnappschüsse, abhängigen Dateisysteme und Klone beibehalten.
Wenn die Option zfs send -r ohne die Option -c verwendet wird und wenn die Option zfs send -R verwendet wird, lassen Stream-Packages den Ursprung von Klons unter bestimmten Umständen weg. Weitere Informationen finden Sie in Identifizieren von ZFS-Schnappschuss-Streams.
Verwenden Sie beide Optionen, um einen inkrementellen Replikationsdatenstrom zu senden.
Änderungen an Eigenschaften werden beibehalten, ebenso wie Namensänderungen von Schnappschüssen und Dateisystemen und Löschvorgänge.
Wenn zfs recv -F beim Empfang des Replikationsdatenstroms nicht angegeben ist, werden Löschvorgänge von Datasets ignoriert. In diesem Fall behält die Syntax zfs recv -F auch die Bedeutung Bei Bedarf Rollback bei.
Wie in anderen Fällen (außer zfs send -R) mit -i oder -I werden bei Verwendung von -I alle Schnappschüsse zwischen snapA und snapD gesendet. Bei Verwendung von -i wird nur snapD (für sämtliche untergeordneten Objekte) gesendet.
Der Empfang dieser mithilfe des Befehls zfs send gesendeten neuen Datenströme setzt voraus, dass auf dem empfangenden System eine Softwareversion ausgeführt wird, die in der Lage ist, diese Datenströme zu senden. Die Version des Datenstroms wird inkrementiert.
Es ist jedoch möglich, auf Datenströme aus älteren Pool-Versionen über neuere Softwareversionen zuzugreifen. So können Sie beispielsweise Datenströme, die mit den neueren Optionen erstellt wurden, an und aus Pools der Version 3 senden. Zum Empfangen eines mit den neueren Optionen gesendeten Datenstroms muss jedoch aktuelle Software ausgeführt werden.
Beispiel 6-1 Senden und Empfangen komplexer ZFS-Schnappschuss-Datenströme
Eine Gruppe inkrementeller Schnappschüsse lässt sich mithilfe von zfs send und der Option -I zu einem Schnappschuss kombinieren. Beispiel:
# zfs send -I pool/fs@snapA pool/fs@snapD > /snaps/fs@all-I
Anschließend entfernen Sie snapB, snapC und snapD.
# zfs destroy pool/fs@snapB # zfs destroy pool/fs@snapC # zfs destroy pool/fs@snapD
Um den kombinierten Schnappschuss zu empfangen, verwenden Sie den folgenden Befehl.
# zfs receive -d -F pool/fs < /snaps/fs@all-I # zfs list NAME USED AVAIL REFER MOUNTPOINT pool 428K 16.5G 20K /pool pool/fs 71K 16.5G 21K /pool/fs pool/fs@snapA 16K - 18.5K - pool/fs@snapB 17K - 20K - pool/fs@snapC 17K - 20.5K - pool/fs@snapD 0 - 21K -
Außerdem können Sie mit zfs send -I einen Schnappschuss und einen Klon-Schnappschuss zu einem kombinierten Dataset verbinden. Beispiel:
# zfs create pool/fs # zfs snapshot pool/fs@snap1 # zfs clone pool/fs@snap1 pool/clone # zfs snapshot pool/clone@snapA # zfs send -I pool/fs@snap1 pool/clone@snapA > /snaps/fsclonesnap-I # zfs destroy pool/clone@snapA # zfs destroy pool/clone # zfs receive -F pool/clone < /snaps/fsclonesnap-I
Mit dem Befehl zfs send -R können Sie ein ZFS-Dateisystem und alle untergeordneten Dateisysteme bis hin zum benannten Schnappschuss replizieren. Nach dem Empfang dieses Datenstroms werden alle Eigenschaften, Schnappschüsse, abhängigen Dateisysteme und Klone beibehalten.
Im folgenden Beispiel werden Schnappschüsse für Benutzerdateisysteme erstellt. Es wird ein Replikationsdatenstrom für alle Benutzer-Schnappschüsse erstellt. Anschließend werden die ursprünglichen Dateisysteme und Schnappschüsse gelöscht und wiederhergestellt.
# zfs snapshot -r users@today # zfs list NAME USED AVAIL REFER MOUNTPOINT users 187K 33.2G 22K /users users@today 0 - 22K - users/user1 18K 33.2G 18K /users/user1 users/user1@today 0 - 18K - users/user2 18K 33.2G 18K /users/user2 users/user2@today 0 - 18K - users/user3 18K 33.2G 18K /users/user3 users/user3@today 0 - 18K - # zfs send -R users@today > /snaps/users-R # zfs destroy -r users # zfs receive -F -d users < /snaps/users-R # zfs list NAME USED AVAIL REFER MOUNTPOINT users 196K 33.2G 22K /users users@today 0 - 22K - users/user1 18K 33.2G 18K /users/user1 users/user1@today 0 - 18K - users/user2 18K 33.2G 18K /users/user2 users/user2@today 0 - 18K - users/user3 18K 33.2G 18K /users/user3 users/user3@today 0 - 18K -
Im folgenden Beispiel wird der Befehl zfs send -R verwendet, um das Dateisystem users und seine untergeordneten Objekte zu replizieren und den replizierten Datenstrom an einen anderen Pool, users2, zu senden.
# zfs create users2 mirror c0t1d0 c1t1d0 # zfs receive -F -d users2 < /snaps/users-R # zfs list NAME USED AVAIL REFER MOUNTPOINT users 224K 33.2G 22K /users users@today 0 - 22K - users/user1 33K 33.2G 18K /users/user1 users/user1@today 15K - 18K - users/user2 18K 33.2G 18K /users/user2 users/user2@today 0 - 18K - users/user3 18K 33.2G 18K /users/user3 users/user3@today 0 - 18K - users2 188K 16.5G 22K /users2 users2@today 0 - 22K - users2/user1 18K 16.5G 18K /users2/user1 users2/user1@today 0 - 18K - users2/user2 18K 16.5G 18K /users2/user2 users2/user2@today 0 - 18K - users2/user3 18K 16.5G 18K /users2/user3 users2/user3@today 0 - 18K -
Mit den Befehlen zfs send und zfs recv können Sie eine Datenstrominstanz über das Netzwerk von einem System auf ein anderes kopieren. Beispiel:
# zfs send tank/cindy@today | ssh newsys zfs recv sandbox/restfs@today
Mithilfe des Befehls wird der Schnappschuss tank/cindy@today gesendet und vom Dateisystem sandbox/restfs empfangen. Außerdem wird ein restfs@today-Schnappschuss für das System newsys erstellt. In diesem Beispiel wird auf dem entfernten System ssh verwendet.