Hetzner - DokuWiki
OpenSolaris ZFS-Grundlagen
OpenSolaris verwendet standardmäßig das Dateisystem "ZFS", das u.a. folgende Funktionalität anbietet:
- beschreibbare Snapshots
- transparente Kompression (mit LZJB oder GZIP)
- Subvolumes (deren Administration bestimmten Benutzern überlassen werden kann)
- Volumen-basierte Quotas und Reserven
- Checksummen für alle Daten (erhöhte Datenintegrität)
- kein fsck notwendig: Daten sind stets konsistent
- (manuelle, nicht-kontinuierliche) Replikation mit "zfs send" und "zfs receive"
Inhaltsverzeichnis |
Pools / Subvolumes auflisten
Um verfügbare ZPools aufzulisten, können Sie folgenden Befehl verwenden:
$ zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT rpool 49.8G 8.33G 41.4G 16% ONLINE - storage 648G 206G 442G 31% ONLINE -
Für Volumen gilt analog:
$ zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 12.0G 37.0G 81.5K /rpool rpool/ROOT 3.33G 37.0G 19K legacy rpool/ROOT/opensolaris 263M 37.0G 3.07G / rpool/ROOT/opensolaris-1 63.8M 37.0G 3.07G / rpool/ROOT/osol-recovery 3.01G 37.0G 2.86G / rpool/dump 4.00G 37.0G 4.00G - rpool/export 678M 37.0G 21K /export rpool/export/home 678M 37.0G 21K /export/home rpool/export/home/gunnar 678M 37.0G 678M /export/home/gunnar rpool/swap 4.00G 40.6G 344M - rpool/xendumps 19K 37.0G 19K /var/xen/dump storage 292G 346G 22K /storage [...]
Subvolumes erstellen / zerstören
Verwenden Sie folgenden Befehl, um ein Subvolume zu erstellen und dafür die Kompression zu aktivieren:
$ pfexec zfs create storage/source
"storage" ist hierbei der Name des ZPools, während "source" der Name des neuen Subvolumes ist. Sie können Subvolumes auch über weitere Ebenen schachteln (z.B. storage/source/onnv).
Sie können die Kompression für ein Subvolume wie folgt aktivieren (bereits vorhandene Daten werden erst dann komprimiert, wenn sie überschrieben werden):
$ pfexec zfs set compression=on storage/source
Alle weiteren verfügbaren Einstellungen sowie statistische Daten (z.B. die Kompressionsrate) können Sie mit folgendem Befehl einsehen:
$ zfs get all storage
Ein nicht mehr verwendetes Subvolume (inkl. aller darin enthaltenen Dateien) kann wie folgt wieder gelöscht werden:
$ pfexec zfs destroy storage/source
Falls ein Volume weitere Subvolumes oder Snapshots enthält, müssen diese zunächst entweder mit dem Parameter "-r" (rekursives Löschen) oder manuell mit "zfs destroy" entfernt werden.
Snapshots
Snapshots sind nur-lesbare Momentaufnahmen eines Volumes, die zunächst keinen Speicherplatz benötigen, da ZFS auf dem Copy-on-Write-Prinzip basiert. Speicherplatz wird durch Snapshots erst dann verbraucht, sobald Änderungen am ursprünglichen Dateisystem durchgeführt werden.
Im Gegensatz zu LVM-Snapshots unter Linux muss für ZFS-Snapshots kein Speicherplatz im Vorfeld reserviert werden.
Snapshots können mit folgendem Befehl erstellt werden:
$ pfexec zfs snapshot storage/source@snap-1
"snap-1" ist hierbei der Name des zu erstellenden Snapshots. Snapshots werden normalerweise in "zfs list" nicht angezeigt - verwenden Sie hierfür den Parameter "-t all":
$ zfs list -r -t all storage/source NAME USED AVAIL REFER MOUNTPOINT storage/source 197M 15.4G 197M /storage/source storage/source@snap-1 0 - 197M -
Dateien aus Snapshots sind standardmäßig nicht im Dateisystem sichtbar. Um auf die Dateien zuzugreifen, haben Sie drei Möglichkeiten:
- Setzen Sie die "snapdir"-Eigenschaft des Volumes auf "visible":
$ pfexec zfs set snapdir=visible storage/source
Über das Verzeichnis ".zfs/snapshots", das sich unterhalb des Mountpunkts des jeweiligen Subvolumes befindet, können Sie auf die Snapshots zugreifen:
$ ls -l /storage/source/.zfs/snapshot/ total 2 drwxr-xr-x 3 root root 3 2009-07-17 18:50 snap-1
- Erstellen Sie einen Clone für den Snapshot
$ pfexec zfs clone storage/source@snap-1 storage/source-snap-1
Bei einem Clone handelt es sich um eine beschreibbare Copy-on-Write-Kopie des Quellsnapshots.
- Führen Sie ein Rollback aus, hierbei werden die Daten des Quelldateisystems auf den Stand des Snapshots zurückgesetzt:
$ pfexec zfs rollback storage/source@snap-1
Weitere Befehle für die Verwaltung von Snapshots finden Sie in der Manpage zfs(1m).
Automatische Snapshots
OpenSolaris bietet mehrere Dienste, um automatisch in bestimmten Intervallen Snapshots von ZFS-Dateisystemen zu erstellen:
$ svcs -a | grep auto-snapshot disabled 15:25:02 svc:/system/filesystem/zfs/auto-snapshot:hourly disabled 15:25:02 svc:/system/filesystem/zfs/auto-snapshot:frequent disabled 15:25:02 svc:/system/filesystem/zfs/auto-snapshot:daily disabled 15:25:02 svc:/system/filesystem/zfs/auto-snapshot:weekly disabled 15:25:02 svc:/system/filesystem/zfs/auto-snapshot:monthly
Aktivieren Sie zunächst die gewünschten Dienste, z.B.:
$ pfexec svcadm enable zfs/auto-snapshot:hourly $ pfexec svcadm enable zfs/auto-snapshot:daily
Danach können Sie für einzelne Volumes die automatischen Snapshots aktivieren:
$ pfexec zfs set com.sun:auto-snapshot=true storage/source
Beachten Sie hierbei, dass ZFS Eigenschaften standardmäßig an Subvolumes vererbt, und somit beispielsweise auch für storage/source/onnv automatisch Snapshots erstellt werden.
Weitere Informationen zu automatischen Snapshots finden Sie hier.

