Oracle Solaris ZFS-Administrationshandbuch

Erstellen und Löschen von ZFS-Snapshots

Snapshots werden mithilfe des Befehls zfs snapshot erstellt. Diesem wird als einziges Argument der Name des zu erstellenden Snapshots übergeben. Der Snapshot-Name ist wie folgt anzugeben:


filesystem@snapname
volume@snapname

Der Snapshot-Name muss den unter Konventionen für das Benennen von ZFS-Komponenten aufgeführten Benennungskonventionen genügen.

Im folgenden Beispiel wird ein Snapshot des Dateisystems tank/home/ahrens mit dem Namen friday erstellt.


# zfs snapshot tank/home/ahrens@friday

Mithilfe der Option -r können Sie Snapshots für alle untergeordneten Dateisysteme erstellen. Beispiel:


# zfs snapshot -r tank/home@now
# zfs list -t snapshot
NAME                       USED  AVAIL  REFER  MOUNTPOINT
rpool/ROOT/zfs2BE@zfs2BE  78.3M      -  4.53G  -
tank/home@now                 0      -    26K  -
tank/home/ahrens@now          0      -   259M  -
tank/home/anne@now            0      -   156M  -
tank/home/bob@now             0      -   156M  -
tank/home/cindys@now          0      -   104M  -

Snapshots besitzen keine konfigurierbaren Eigenschaften, und es können für Snapshots auch keine Dataset-Eigenschaften gesetzt werden. Beispiel:


# zfs set compression=on tank/home/ahrens@now
cannot set compression property for 'tank/home/ahrens@now': snapshot
properties cannot be modified

Snapshots werden mithilfe des Befehls zfs destroy gelöscht. Beispiel:


# zfs destroy tank/home/ahrens@now

Ein Dataset kann nicht gelöscht werden, wenn Snapshots dieses Datasets vorhanden sind. Beispiel:


# zfs destroy tank/home/ahrens
cannot destroy 'tank/home/ahrens': filesystem has children
use '-r' to destroy the following datasets:
tank/home/ahrens@tuesday
tank/home/ahrens@wednesday
tank/home/ahrens@thursday

Wenn von einem Snapshot Klone erstellt wurden, müssen diese zuerst gelöscht werden, bevor das Löschen des Snapshots möglich ist.

Weitere Informationen zum Unterbefehl destroy finden Sie unter Löschen eines ZFS-Dateisystems.

Aufbewahren von ZFS-Snapshots

Wenn Sie verschiedene automatische Snapshot-Richtlinien verwenden und dadurch ältere Snapshots durch zfs receive gelöscht werden, weil sie nicht mehr auf der Sendeseite vorhanden sind, können Sie die Snapshot-Aufbewahrungsfunktion verwenden.

Durch die Aufbewahrung eines Snapshots wird verhindert, dass er gelöscht wird. Außerdem ermöglicht diese Funktion das Löschen eines Snapshots zusammen mit Klonen in Abhängigkeit von der Entfernung des letzten Klons mithilfe des Befehls zfs destroy -d. Jeder Snapshot besitzt eine zugeordnete Benutzerreferenzzählung, die bei Null beginnt. Dieser Wert wird erhöht, wenn ein weiterer Snapshot aufbewahrt wird, und verringert, wenn eine Aufbewahrung beendet wird.

In der Vorgängerversion von Solaris konnte ein Snapshot nur dann mithilfe des Befehls zfs destroy gelöscht werden, wenn er keine Klone hatte. In dieser Solaris-Version muss zudem der Wert der Benutzerreferenzzählung des Snapshots auf Null stehen.

Sie können einen Snapshot oder eine Gruppe von Snapshots aufbewahren. Anhand der folgenden Syntax wird beispielsweise ein Aufbewahrungs-Tag, keep, für tank/home/cindys/snap@1 gesetzt.


# zfs hold keep tank/home/cindys@snap1

Sie können die Option -r verwenden, um die Snapshots aller untergeordneten Dateisystem rekursiv aufzubewahren. Beispiel:


# zfs snapshot -r tank/home@now
# zfs hold -r keep tank/home@now

Mithilfe dieser Syntax wird eine einzelne Referenz, keep, zu einem Snapshot oder einer Gruppe von Snapshots hinzugefügt. Jeder Snapshot besitzt einen eigenen Tag-Namensraum. Die Aufbewahrungs-Tags innerhalb dieses Namensraums müssen eindeutig sein. Wenn ein Snapshot aufbewahrt wird, kann er nicht mithilfe des Befehls zfs destroy gelöscht werden. Beispiel:


# zfs destroy tank/home/cindys@snap1
cannot destroy 'tank/home/cindys@snap1': dataset is busy

Wenn Sie einen aufbewahrten Snapshot löschen möchten, verwenden Sie die Option -d. Beispiel:


# zfs destroy -d tank/home/cindys@snap1

Verwenden Sie den Befehl zfs holds, um eine Liste der aufbewahrten Snapshots anzuzeigen. Beispiel:


# zfs holds tank/home@now
NAME           TAG   TIMESTAMP                 
tank/home@now  keep  Thu Jul 15 11:25:39 2010  

# zfs holds -r tank/home@now
NAME                  TAG   TIMESTAMP                 
tank/home/cindys@now  keep  Thu Jul 15 11:25:39 2010  
tank/home/mark@now    keep  Thu Jul 15 11:25:39 2010  
tank/home@now         keep  Thu Jul 15 11:25:39 2010  

Sie können den Befehl zfs release verwenden, um einen aufbewahrten Snapshot oder eine Gruppe aufbewahrter Snapshots freizugeben. Beispiel:


# zfs release -r keep tank/home@now

Ist ein Snapshot freigegeben, kann er mithilfe des Befehls zfs destroy gelöscht werden. Beispiel:


# zfs destroy -r tank/home@now

Zwei neue Eigenschaften liefern Informationen zur Aufbewahrung von Snapshots:

Umbenennen von ZFS-Snapshots

Sie können Snapshots umbenennen. Allerdings müssen Snapshots innerhalb des Pools und Datasets, in dem sie erstellt wurden, umbenannt werden. Beispiel:


# zfs rename tank/home/cindys@083006 tank/home/cindys@today

Außerdem entspricht die folgende Kurzsyntax der obigen Syntax:


# zfs rename tank/home/cindys@083006 today

Der folgende Vorgang zum Umbenennen eines Snapshots wird nicht unterstützt, da sich Ziel-Pool und -Dateisystem von dem Pool und Dateisystem unterscheiden, in denen der betreffende Snapshot erstellt wurde:


# zfs rename tank/home/cindys@today pool/home/cindys@saturday
cannot rename to 'pool/home/cindys@today': snapshots must be part of same 
dataset

Sie können Snapshots mithilfe des Befehls zfs rename - r rekursiv umbenennen. Beispiel:


# zfs list
NAME                         USED  AVAIL  REFER  MOUNTPOINT
users                        270K  16.5G    22K  /users
users/home                    76K  16.5G    22K  /users/home
users/home@yesterday            0      -    22K  -
users/home/markm              18K  16.5G    18K  /users/home/markm
users/home/markm@yesterday      0      -    18K  -
users/home/marks              18K  16.5G    18K  /users/home/marks
users/home/marks@yesterday      0      -    18K  -
users/home/neil               18K  16.5G    18K  /users/home/neil
users/home/neil@yesterday       0      -    18K  -
# zfs rename -r users/home@yesterday @2daysago
# zfs list -r users/home
NAME                        USED  AVAIL  REFER  MOUNTPOINT
users/home                   76K  16.5G    22K  /users/home
users/home@2daysago            0      -    22K  -
users/home/markm             18K  16.5G    18K  /users/home/markm
users/home/markm@2daysago      0      -    18K  -
users/home/marks             18K  16.5G    18K  /users/home/marks
users/home/marks@2daysago      0      -    18K  -
users/home/neil              18K  16.5G    18K  /users/home/neil
users/home/neil@2daysago       0      -    18K  -