1. Oracle Solaris ZFS-Dateisystem (Einführung)
2. Erste Schritte mit Oracle Solaris ZFS
3. Unterschiede zwischen Oracle Solaris ZFS und herkömmlichen Dateisystemen
4. Verwalten von Oracle Solaris ZFS-Speicher-Pools
5. Installieren und Booten eines Oracle Solaris ZFS-Root-Dateisystems
6. Verwalten von Oracle Solaris ZFS-Dateisystemen
Verwalten von ZFS-Dateisystemen (Übersicht)
Erstellen, Entfernen und Umbenennen von ZFS-Dateisystemen
Erstellen eines ZFS-Dateisystems
Löschen eines ZFS-Dateisystems
Umbenennen eines ZFS-Dateisystems
Schreibgeschützte native ZFS-Eigenschaften
Konfigurierbare native ZFS-Eigenschaften
Benutzerdefinierte ZFS-Eigenschaften
Abfragen von ZFS-Dateisysteminformationen
Auflisten grundlegender ZFS-Informationen
Erstellen komplexer ZFS-Abfragen
Verwalten von ZFS-Eigenschaften
Vererben von ZFS-Eigenschaften
Abfragen von ZFS-Eigenschaften
Abfragen von ZFS-Eigenschaften für Skripten
Einhängen und Freigeben von ZFS-Dateisystemen
Verwalten von ZFS-Einhängepunkten
Einhängen von ZFS-Dateisystemen
Verwenden temporärer Einhängepunkte
Aushängen von ZFS-Dateisystemen
Freigeben und Sperren von ZFS-Dateisystemen
Einstellen der Freigabesemantik
Sperren von ZFS-Dateisystemen für den Netzwerkzugriff
Einstellen von ZFS-Kontingenten und -Reservierungen
Setzen von Kontingenten für ZFS-Dateisysteme
Einrichten von Benutzer- und Gruppenkontingenten auf einem ZFS-Dateisystem
Setzen von Reservierungen für ZFS-Dateisysteme
Aktualisieren von ZFS-Dateisystemen
7. Arbeiten mit Oracle Solaris ZFS-Snapshots und -Klonen
8. Schützen von Oracle Solaris ZFS-Dateien mit Zugriffskontrolllisten und Attributen
9. Delegierte Oracle Solaris ZFS-Administration
10. Fortgeschrittene Oracle Solaris ZFS-Themen
11. Problembehebung und Pool-Wiederherstellung in Oracle Solaris ZFS
In diesem Abschnitt wird beschrieben, wie ZFS Dateisysteme einhängt und freigibt.
Ein ZFS-Dateisystem wird automatisch eingehängt, wenn es erstellt wird. In diesem Abschnitt wird beschrieben, wie Sie das Verhalten eines Einhängepunkts für ein Dateisystem bestimmen können.
Sie können den Standard-Einhängepunkt für ein Pool-Dataset bei dessen Erstellung auch mithilfe der Option m von -zpool create setzen. Weitere Informationen zum Erstellen von Pools finden Sie unter Erstellen eines ZFS-Speicher-Pools.
Alle ZFS-Dateisysteme werden beim Systemstart von ZFS mithilfe des SMF-Dienstes (Service Management Facility) svc://system/filesystem/local eingehängt. Dateisysteme werden unter /path eingehängt, wobei path den Namen des Dateisystems bezeichnet.
Sie können den Standard-Einhängepunkt überschreiben, indem Sie den Befehl zfs set verwenden, um die Eigenschaft mountpoint auf einen spezifischen Pfad zu setzen. ZFS erstellt den angegebenen Einhängepunkt bei Bedarf automatisch und hängt das entsprechende Dateisystem automatisch ein.
ZFS-Dateisysteme werden beim Systemstart automatisch eingehängt, ohne dass Sie die Datei /etc/vfstab bearbeiten müssen.
Die Eigenschaft mountpoint wird vererbt. Wenn die Eigenschaft mountpoint von pool/home beispielsweise auf /export/stuff gesetzt ist, erbt pool/home/user für seinen Eigenschaftswert mountpoint den Wert /export/stuff/user.
Um zu verhindern, dass ein Dateisystem eingehängt wird, setzen Sie die Eigenschaft mountpoint auf none. Außerdem kann mit der Eigenschaft canmount bestimmt werden, ob ein Dateisystem eingehängt werden kann. Weitere Informationen zur Eigenschaft canmount finden Sie unter Die Eigenschaft canmount.
Dateisysteme können auch explizit mithilfe von Legacy-Einhängesystemen verwaltet werden, indem zfs set verwendet wird, um die Eigenschaft mountpoint auf legacy zu setzen. Dadurch wird verhindert, dass ZFS ein Dateisystem automatisch einhängt und verwaltet. Stattdessen müssen Sie Legacy-Dienstprogramme wie die Befehle mount und umount und die Datei /etc/vfstab verwenden. Weitere Informationen zu Legacy-Einhängepunkten finden Sie unter Legacy-Einhängepunkte.
Wenn Sie die Eigenschaft mountpoint von legacy oder none auf einen bestimmten Pfad umsetzen, hängt ZFS das betreffende Dateisystem automatisch ein.
Wenn ZFS ein Dateisystem verwaltet, dieses aber ausgehängt ist und die Eigenschaft mountpoint geändert wird, bleibt das Dateisystem weiterhin ausgehängt.
Datasets, deren Eigenschaft mountpoint nicht auf legacy gesetzt ist, werden von ZFS verwaltet. Im folgenden Beispiel wird ein Dataset erstellt, dessen Einhängepunkt automatisch von ZFS verwaltet wird:
# zfs create pool/filesystem # zfs get mountpoint pool/filesystem NAME PROPERTY VALUE SOURCE pool/filesystem mountpoint /pool/filesystem default # zfs get mounted pool/filesystem NAME PROPERTY VALUE SOURCE pool/filesystem mounted yes -
Sie können die Eigenschaft mountpoint auch explizit setzen (siehe folgendes Beispiel):
# zfs set mountpoint=/mnt pool/filesystem # zfs get mountpoint pool/filesystem NAME PROPERTY VALUE SOURCE pool/filesystem mountpoint /mnt local # zfs get mounted pool/filesystem NAME PROPERTY VALUE SOURCE pool/filesystem mounted yes -
Beim Ändern der Eigenschaft mountpoint wird das betreffende Dateisystem automatisch aus dem alten Einhängepunkt ausgehängt und in den neuen Einhängepunkt eingehängt. Einhängepunktverzeichnisse werden je nach Bedarf erstellt. Wenn ZFS ein Dateisystem nicht aushängen kann, weil es noch aktiv ist, wird ein Fehler gemeldet, und das Aushängen muss manuell erzwungen werden.
Sie können ZFS-Dateisysteme mit Legacy-Dienstprogrammen verwalten, indem Sie die Eigenschaft mountpoint auf legacy setzen. Legacy-Dateisysteme müssen mithilfe der Befehle mount und umount sowie der Datei /etc/vfstab verwaltet werden. ZFS hängt Legacy-Dateisysteme beim Systemstart nicht automatisch ein, und die ZFS-Befehle mount und umount funktionieren mit Datasets dieses Typs nicht. Die folgenden Beispiele zeigen die Erstellung und Verwaltung eines ZFS-Datasets im Legacy-Modus:
# zfs set mountpoint=legacy tank/home/eric # mount -F zfs tank/home/eschrock /mnt
Damit Legacy-Dateisysteme beim Systemstart automatisch eingehängt werden, müssen Sie zur Datei /etc/vfstab die entsprechenden Einträge hinzufügen. Das folgende Beispiel zeigt, wie der Eintrag in der Datei /etc/vfstab aussehen kann:
#device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # tank/home/eric - /mnt zfs - yes -
Die Einträge device to fsck und fsck pass werden auf - gesetzt, weil der Befehl fsck nicht auf ZFS-Dateisysteme anwendbar ist. Weitere Informationen zur ZFS-Datenintegrität finden Sie unter Transaktionale Semantik.
ZFS hängt Dateisysteme beim Erstellen dieser Dateisysteme bzw. beim Systemstart automatisch ein. Der Befehl zfs mount muss nur verwendet werden, wenn Einhängeoptionen geändert oder Dateisysteme explizit ein- oder ausgehängt werden müssen.
Beim Aufrufen des Befehls zfs mount ohne Argumente werden alle von ZFS verwalteten und gegenwärtig eingehängten Dateisysteme angezeigt. Legacy-Einhängepunkte werden nicht angezeigt. Beispiel:
# zfs mount | grep tank/home zfs mount | grep tank/home tank/home /tank/home tank/home/jeff /tank/home/jeff
Mit der Option -a können Sie alle von ZFS verwalteten Dateisysteme einhängen. Legacy-Dateisysteme werden nicht eingehängt. Beispiel:
# zfs mount -a
Standardmäßig erlaubt ZFS das Einhängen in ein nicht leeres Verzeichnis nicht. Beispiel:
# zfs mount tank/home/lori cannot mount 'tank/home/lori': filesystem already mounted
Legacy-Einhängepunkte müssen mit Legacy-Dienstprogrammen verwaltet werden. Wenn Sie versuchen, dafür ZFS-Befehle zu verwenden, wird ein Fehler ausgegeben. Beispiel:
# zfs mount tank/home/bill cannot mount 'tank/home/bill': legacy mountpoint use mount(1M) to mount this filesystem # mount -F zfs tank/home/billm
Beim Einhängen eines Dateisystems werden verschiedene Einhängeoptionen verwendet, die auf den zum Dataset gehörenden Eigenschaftswerten beruhen. Zwischen Eigenschaften und Einhängeoptionen besteht der folgende Zusammenhang:
Tabelle 6-4 Eigenschaften von ZFS-Einhängepunkten und Einhängeoptionen
|
Die Einhängeoption nosuid ist ein Alias-Name für nodevices,nosetuid .
Wenn die im vorherigen Abschnitt beschriebenen Optionen explizit mithilfe der Option - o des Befehls zfs mount gesetzt werden, wird der zugehörige Eigenschaftswert temporär überschrieben. Diese Eigenschaftswerte werden vom Befehl zfs get mit dem Wert temporary gemeldet und beim Aushängen des betreffenden Dateisystems auf ihre ursprünglichen Werte zurückgesetzt. Beim Ändern eines Eigenschaftswerts während des Einhängens eines Datasets wird diese Änderung sofort übernommen und überschreibt eventuelle temporäre Einstellungen.
Im folgenden Beispiel wird am Dateisystem tank/home/perrin die Einhängeoption "schreibgeschützt” temporär gesetzt. Es wird angenommen, dass das Dateisystem ausgehängt ist.
# zfs mount -o ro users/home/neil
Zum temporären Ändern eines Eigenschaftswerts eines gegenwärtig eingehängten Dateisystems dient die spezielle Option remount. Im folgenden Beispiel wird die Eigenschaft atime für ein eingehängtes Dateisystem temporär auf off gesetzt.
# zfs mount -o remount,noatime users/home/neil NAME PROPERTY VALUE SOURCE users/home/neil atime off temporary # zfs get atime users/home/perrin
Weitere Informationen zum Befehl zfs mount finden Sie in der Man Page zfs(1M).
ZFS-Dateisysteme können mit dem Befehl zfs unmount ausgehängt werden. Der Befehl unmount akzeptiert als Argument entweder den Einhängepunkt oder den Dateisystemnamen.
Im folgenden Beispiel wird ein Dateisystem nach seinem Namen ausgehängt:
# zfs unmount users/home/mark
Im folgenden Beispiel wird ein Dateisystem nach seinem Einhängepunkt ausgehängt:
# zfs unmount /users/home/mark
Der Befehl unmount schlägt fehl, wenn das betreffende Dateisystem aktiv ist. Ein Aushängen eines Dateisystems kann mit der Option -f erzwungen werden. Gehen Sie beim erzwungenen Aushängen eines Dateisystems äußerst sorgsam vor, wenn der Inhalt dieses Dateisystems noch verwendet wird. da unvorhergesehenes Anwendungsverhalten die Folge davon sein kann.
# zfs unmount tank/home/eric cannot unmount '/tank/home/eric': Device busy # zfs unmount -f tank/home/eric
Zum Zweck der Abwärtskompatibilität kann der Legacy-Befehl umount auch zum Aushängen von ZFS-Dateisystemen verwendet werden. Beispiel:
# umount /tank/home/bob
Weitere Informationen zum Befehl zfs unmount finden Sie in der Man Page zfs(1M).
ZFS kann Dateisysteme durch entsprechendes Setzen der Eigenschaft sharenfs automatisch für den Netzwerkzugriff freigeben. Mit dieser Eigenschaft müssen Sie die Datei /etc/dfs/dfstab nicht ändern, wenn ein neues Dateisystem freigegeben wurde. Die Eigenschaft sharenfs ist eine kommagetrennte Liste mit Optionen, die an den Befehl share übergeben wird. Der spezielle Wert on ist ein Aliasname für die Standardoptionen der Netzwerkfreigabe, der allen Benutzern Lese- und Schreibberechtigung gewährt. Der Wert off gibt an, dass das Dateisystem nicht von ZFS verwaltet wird und über herkömmliche Mittel wie z. B. die Datei /etc/dfs/dfstab für den Netzwerkzugriff freigegeben werden kann. Alle Dateisysteme, deren Eigenschaft sharenfs nicht auf off gesetzt ist, werden beim Systemstart freigegeben.
Standardmäßig sind alle Dateisysteme für den Netzwerkzugriff gesperrt. Zum Freigeben eines neuen Dateisystems für den Netzwerkzugriff müssen Sie den Befehl zfs set mit der folgenden Syntax verwenden:
# zfs set sharenfs=on tank/home/eric
Die Eigenschaft sharenfs wird vererbt, und alle Dateisysteme werden bei der Erstellung automatisch für den Netzwerkzugriff freigegeben, wenn deren vererbte Eigenschaft nicht auf off gesetzt ist. Beispiel:
# zfs set sharenfs=on tank/home # zfs create tank/home/bill # zfs create tank/home/mark # zfs set sharenfs=ro tank/home/bob
Die Dateisysteme tank/home/bill und tank/home/mark sind anfänglich mit Schreibzugriff freigegeben, da sie die Eigenschaft sharenfs von tank/home erben. Nach dem Setzen dieser Eigenschaft auf ro (schreibgeschützt) wird das Dateisystem tank/home/mark unabhängig davon, welchen Wert die Eigenschaft sharenfs für tank/home hat, schreibgeschützt freigegeben.
Obwohl die meisten Dateisysteme beim Systemstart, der Erstellung und beim Löschen automatisch für den Netzwerkzugriff freigegeben bzw. gesperrt werden, kann es manchmal vorkommen, dass Dateisysteme explizit für den Netzwerkzugriff gesperrt werden müssen. Dazu dient der Befehl zfs unshare. Beispiel:
# zfs unshare tank/home/mark
Dieser Befehl sperrt das Dateisystem tank/home/mark für den Netzwerkzugriff. Zum Sperren aller ZFS-Dateisysteme auf einem System benötigen Sie die Option - a.
# zfs unshare -a
In den meisten Fällen reicht das automatische ZFS-Verhalten des Freigebens von Dateisystemen beim Systemstart und Erstellen eines Dateisystems für den Normalbetrieb aus. Falls Dateisysteme doch einmal für den Netzwerkzugriff gesperrt werden müssen, können Sie diese mit dem Befehl zfs share wieder freigeben. Beispiel:
# zfs share tank/home/mark
Sie können auch alle ZFS-Dateisysteme auf einem System mithilfe der Option -a freigeben.
# zfs share -a
Wenn die Eigenschaft sharenfs auf off gesetzt ist, versucht ZFS niemals, das betreffende Dateisystem für den Netzwerkzugriff freizugeben bzw. zu sperren. Dieser Wert ermöglicht die Freigabeverwaltung mithilfe herkömmlicher Mittel wie z. B. der Datei /etc/dfs/dfstab.
Im Gegensatz zum Befehl mount funktionieren die Befehle share und unshare auch für ZFS-Dateisysteme. Deswegen können Sie ein Dateisystem manuell mit Optionen freigeben, die sich von den Optionen der Eigenschaft sharenfs unterscheiden. Davon wird jedoch abgeraten. Sie sollten NFS-Freigaben entweder vollständig von ZFS oder vollständig mithilfe der Datei /etc/dfs/dfstab verwalten lassen. Das administrative ZFS-Modell ist einfacher und nicht so aufwändig wie das traditionelle Modell.