Oracle Solaris ZFS-Administrationshandbuch

Überblick über ZFS-Klone

Ein Klon ist ein schreibbares Volume bzw. Dateisystem, dessen anfänglicher Inhalt gleich dem des Datasets ist, von dem er erstellt wurde. Ebenso wie Snapshots werden auch Klone sehr schnell erstellt und belegen anfänglich keine zusätzliche Festplattenkapazität. Darüber hinaus können Sie Snapshots von Klonen erstellen.

Klone können nur von Snapshots erstellt werden. Beim Klonen eines Snapshots wird zwischen dem Klon und dem Snapshot eine implizite Abhängigkeit erstellt. Obwohl der betreffende Klon an anderer Stelle der Dataset-Hierarchie erstellt wird, kann der ursprüngliche Snapshot nicht gelöscht werden, solange von ihm ein Klon vorhanden ist. Die Eigenschaft origin enthält diese Abhängigkeit, und mit dem Befehl zfs destroy können solche Abhängigkeiten aufgelistet werden, falls sie vorhanden sind.

Klone erben keine Eigenschaften von dem Dataset, von dem sie erstellt wurden. Mit den Befehlen zfs get und zfs set können Sie die Eigenschaften eines geklonten Datasets anzeigen und ändern. Weitere Informationen zum Setzen von Eigenschaften von ZFS-Datasets finden Sie unter Setzen von ZFS-Eigenschaften.

Da ein Klon seine gesamte Festplattenkapazität anfänglich mit dem ursprünglichen Snapshot gemeinsam nutzt, ist sein Eigenschaftswert used zu Beginn auf null gesetzt. Wenn am Klon Änderungen vorgenommen werden, belegt er dementsprechend mehr Festplattenkapazität. Die Eigenschaft used des ursprünglichen Snapshots berücksichtigt keinen vom Klon belegten Speicherplatz.

Erstellen eines ZFS-Klons

Klone werden mit dem Befehl zfs clone erstellt. Sie müssen den Snapshot, von dem der Klon erstellt werden soll, sowie den Namen des neuen Dateisystems bzw. Volumes angeben. Das neue Dateisystem bzw. Volume kann sich an beliebiger Stelle innerhalb der ZFS-Hierarchie befinden. Der Typ (z. B. Dateisystem oder Volume) des neuen Datasets entspricht dem des Snapshots, aus dem der Klon erstellt wurde. Sie können von einem Dateisystem in einem anderen Pool als dem des Snapshots des ursprünglichen Dateisystems keinen Klon erstellen.

Im folgenden Beispiel wird ein neuer Klon tank/home/ahrens/bug123 mit dem gleichen anfänglichen Inhalt wie der des Snapshots tank/ws/gate@gestern erstellt:


# zfs snapshot tank/ws/gate@yesterday
# zfs clone tank/ws/gate@yesterday tank/home/ahrens/bug123

Im folgenden Beispiel wird für einen temporären Benutzer aus dem Snapshot projects/newproject@today ein geklonter Arbeitsbereich namens projects/teamA/tempuser erstellt. Danach werden die Eigenschaften des geklonten Arbeitsbereichs gesetzt.


# zfs snapshot projects/newproject@today
# zfs clone projects/newproject@today projects/teamA/tempuser
# zfs set sharenfs=on projects/teamA/tempuser
# zfs set quota=5G projects/teamA/tempuser

Löschen eines ZFS-Klons

ZFS-Klone werden mithilfe des Befehls zfs destroy gelöscht. Beispiel:


# zfs destroy tank/home/ahrens/bug123

Bevor ein übergeordneter Snapshot gelöscht werden kann, müssen zunächst seine Klone gelöscht werden.

Ersetzen eines ZFS-Dateisystems durch einen ZFS-Klon

Mit dem Befehl zfs promote können Sie ein aktives ZFS-Dateisystem durch einen Klon dieses Dateisystems ersetzen. Diese Funktion ermöglicht das Klonen und Ersetzen von Dateisystemen, sodass das ursprüngliche Dateisystem der Klon des betreffenden Dateisystems werden kann. Darüber hinaus ermöglicht diese Funktion das Löschen des Dateisystems, von dem der Klon ursprünglich erstellt wurde. Ohne diese ?Klon-Promotion“ können ursprüngliche Dateisysteme, in denen aktive Klone enthalten sind, nicht gelöscht werden. Weitere Informationen zum Löschen von Klonen finden Sie unter Löschen eines ZFS-Klons.

Im folgenden Beispiel wird das Dateisystem tank/test/produktA geklont. Anschließend wird das geklonte Dateisystem (tank/test/produktAbeta) zum ursprünglichen Dateisystem tank/test/produktA gemacht.


# zfs create tank/test
# zfs create tank/test/productA
# zfs snapshot tank/test/productA@today
# zfs clone tank/test/productA@today tank/test/productAbeta
# zfs list -r tank/test
NAME                       USED  AVAIL  REFER  MOUNTPOINT
tank/test                  104M  66.2G    23K  /tank/test
tank/test/productA         104M  66.2G   104M  /tank/test/productA
tank/test/productA@today      0      -   104M  -
tank/test/productAbeta        0  66.2G   104M  /tank/test/productAbeta
# zfs promote tank/test/productAbeta
# zfs list -r tank/test
NAME                           USED  AVAIL  REFER  MOUNTPOINT
tank/test                      104M  66.2G    24K  /tank/test
tank/test/productA                0  66.2G   104M  /tank/test/productA
tank/test/productAbeta         104M  66.2G   104M  /tank/test/productAbeta
tank/test/productAbeta@today      0      -   104M  -

In dieser Ausgabe des Befehls zfs list sehen Sie, dass die Festplattenkapazitätsangabe des ursprünglichen Dateisystems produktA durch die des Dateisystems produktAbeta ersetzt wurde.

Sie können den Ersetzungsvorgang durch Umbenennen der Dateisysteme abschließen. Beispiel:


# zfs rename tank/test/productA tank/test/productAlegacy
# zfs rename tank/test/productAbeta tank/test/productA
# zfs list -r tank/test

Optional können Sie auch das alte Dateisystem entfernen. Beispiel:


# zfs destroy tank/test/productAlegacy