Oracle Solaris ZFS-Administrationshandbuch

Kapitel 6 Verwalten von Oracle Solaris ZFS-Dateisystemen

Dieses Kapitel enthält ausführliche Informationen zum Verwalten von Oracle Solaris ZFS-Dateisystemen. Es werden Konzepte wie die hierarchische Dateisystemstrukturierung, Eigenschaftsvererbung, die automatische Verwaltung von Einhängepunkten sowie die Interaktion zwischen Netzwerkdateisystemen behandelt.

Dieses Kapitel enthält die folgenden Abschnitte:

Verwalten von ZFS-Dateisystemen (Übersicht)

ZFS-Dateisysteme setzen auf einem Speicher-Pool auf. Dateisysteme können dynamisch erstellt und gelöscht werden, ohne dass Festplattenspeicher zugewiesen oder formatiert werden muss. Da Dateisysteme so kompakt und der Dreh- und Angelpunkt der ZFS-Administration sind, werden Sie wahrscheinliche sehr viele davon erstellen.

ZFS-Dateisysteme werden mit dem Befehl zfs verwaltet. Der Befehl zfs enthält eine Reihe von Unterbefehlen, die spezifische Operationen an Dateisystemen ausführen. In diesem Kapitel werden diese Unterbefehle ausführlich beschrieben. Snapshots, Volumes und Klone werden von diesem Befehl ebenfalls verwaltet; die Leistungsmerkmale werden jedoch erst später behandelt. Ausführliche Informationen zu Snapshots und Klonen finden Sie in Kapitel 7Arbeiten mit Oracle Solaris ZFS-Snapshots und -Klonen. Ausführliche Informationen zu ZFS-Volumes finden Sie unter ZFS-Volumes.


Hinweis –

Der Begriff Dataset wird in diesem Kapitel als Oberbegriff für Dateisysteme, Snapshots, Klone und Volumes verwendet.


Erstellen, Entfernen und Umbenennen von ZFS-Dateisystemen

ZFS-Dateisysteme können mit den Befehlen zfs create bzw. zfs destroy erstellt und gelöscht werden. ZFS-Dateisysteme können mit dem Befehl zfs rename umbenannt werden.

Erstellen eines ZFS-Dateisystems

ZFS-Dateisysteme werden mit dem Befehl zfs create erstellt. Der Befehl create erfordert als einziges Argument den Namen des zu erstellenden Dateisystems. Der Name des Dateisystems wird wie folgt als Pfadname beginnend mit dem Namen des Pools angegeben:

Pool-Name/[Dateisystemname/]Dateisystemname

Der Pool-Name und die anfänglichen Dateisystemnamen im Pfad geben an, wo das neue Dateisystem in der Hierarchie erstellt wird. Der letzte Name im Pfad ist der Name des zu erstellenden Dateisystems. Der Dateisystemname muss den unter Konventionen für das Benennen von ZFS-Komponenten aufgeführten Benennungskonventionen entsprechen.

Im folgenden Beispiel wird das Dateisystem bonwick im Dateisystem tank/home erstellt.


# zfs create tank/home/bonwick

ZFS hängt das neue Dateisystem bei fehlerfreier Erstellung automatisch ein. Dateisysteme werden standardmäßig als /Dataset eingehängt; dabei wird der im Unterbefehl create angegebene Pfad verwendet. In diesem Beispiel wird das neu erstellte Dateisystem bonwick unter tank/home/bonwick eingehängt. Weitere Informationen zu automatisch verwalteten Einhängepunkten finden Sie unter Verwalten von ZFS-Einhängepunkten.

Weitere Informationen zum Befehl zfs create finden Sie in der Man Page zfs(1M).

Sie können Dateisystemeigenschaften beim Erstellen des Dateisystems festlegen.

Im folgenden Beispiel wird ein Einhängepunkt von /export/zfs für das Dateisystem tank/home erstellt:


# zfs create -o mountpoint=/export/zfs tank/home

Weitere Informationen zu Eigenschaften von Dateisystemen finden Sie unter ZFS-Eigenschaften.

Löschen eines ZFS-Dateisystems

ZFS-Dateisysteme werden mit dem Befehl zfs destroy gelöscht. Das gelöschte Dateisystem wird automatisch für den Netzwerkzugriff gesperrt und ausgehängt. Weitere Informationen zur automatischen Verwaltung von Einhängepunkten und gemeinsam genutzten Objekten finden Sie unter Automatische Einhängepunkte.

Im folgenden Beispiel wird das Dateisystem tabriz gelöscht:


# zfs destroy tank/home/tabriz

Achtung – Achtung –

Beim Ausführen des Unterbefehls destroy wird keine Bestätigung des Löschvorgangs angefordert. Verwenden Sie diesen Befehl deshalb mit äußerster Vorsicht.


Wenn das zu löschende Dateisystem noch von Ressourcen verwendet wird und deswegen nicht ausgehängt werden kann, schlägt der Befehl zfs destroy fehl. Aktive Dateisysteme werden mit der Option -f gelöscht. Sie sollten diese Option mit Sorgfalt verwenden, da sie aktive Dateisysteme aushängt, für den Netzwerkzugriff sperrt und löscht und somit unvorgesehenes Systemverhalten verursachen kann.


# zfs destroy tank/home/ahrens
cannot unmount 'tank/home/ahrens': Device busy

# zfs destroy -f tank/home/ahrens

Der Befehl zfs destroy schlägt ebenfalls fehl, wenn in einem Dateisystem untergeordnete Dateisysteme vorhanden sind. Zum rekursiven Löschen von Dateisystemen und allen untergeordneten Dateisystemen dient die Option -r. Bitte beachten Sie, dass beim rekursiven Löschen auch Snapshots des Dateisystems gelöscht werden. Deshalb sollten Sie diese Option mit äußerster Vorsicht verwenden.


# zfs destroy tank/ws
cannot destroy 'tank/ws': filesystem has children
use '-r' to destroy the following datasets:
tank/ws/billm
tank/ws/bonwick
tank/ws/maybee

# zfs destroy -r tank/ws

Wenn das zu löschende Dateisystem indirekte untergeordnete Dateisysteme besitzt, schlägt auch der rekursive Löschbefehl fehl. Wenn Sie das Löschen aller untergeordneten Objekte einschließlich geklonter Dateisysteme außerhalb der Zielhierarchie erzwingen wollen, müssen Sie die Option -R verwenden. Verwenden Sie diese Option mit äußerster Vorsicht.


# zfs destroy -r tank/home/schrock
cannot destroy 'tank/home/schrock': filesystem has dependent clones
use '-R' to destroy the following datasets:
tank/clones/schrock-clone

# zfs destroy -R tank/home/schrock

Achtung – Achtung –

Für die Optionen -f, - r und -R des Löschbefehls zfs destroy wird keine Bestätigung angefordert. Deshalb sollten Sie diese Optionen mit äußerster Vorsicht verwenden.


Weitere Informationen zu Snapshots und Klonen finden Sie in Kapitel 7Arbeiten mit Oracle Solaris ZFS-Snapshots und -Klonen.

Umbenennen eines ZFS-Dateisystems

Dateisysteme können mit dem Befehl zfs rename umbenannt werden. Mit dem Unterbefehl rename können folgende Vorgänge ausgeführt werden:

Im folgende Beispiel wird der Unterbefehl rename verwendet, um ein Dateisystem von kustarz in kustarz_old umzubenennen:


# zfs rename tank/home/kustarz tank/home/kustarz_old

Das folgende Beispiel zeigt die Verwendung des Befehls zfs rename zum Verlagern eines ZFS-Dateisystems:


# zfs rename tank/home/maybee tank/ws/maybee

In diesem Beispiel wird das Dateisystem maybee von tank/home nach tank/ws verlagert. Wenn ein Dateisystem mithilfe des Umbenennungsbefehls verlagert wird, muss sich der neue Speicherort innerhalb des gleichen Pools befinden, und dieser muss über genügend Festplattenkapazität für das Dateisystem verfügen. Wenn der neue Speicherort nicht genügend Festplattenkapazität besitzt (z. B. weil das zugeteilte Kontingent erreicht ist), schlägt die Verlagerung mit rename fehl.

Weitere Informationen zu Kontingenten finden Sie unter Einstellen von ZFS-Kontingenten und -Reservierungen.

Durch die Umbenennung wird das betreffende Dateisystem mit allen seinen untergeordneten Dateisystemen ausgehängt und wieder neu eingehängt. Die Umbenennung schlägt fehl, wenn ein aktives Dateisystem nicht ausgehängt werden kann. Wenn dieses Problem auftritt, müssen Sie das Aushängen des Dateisystems erzwingen.

Informationen zum Umbenennen von Snapshots finden Sie unter Umbenennen von ZFS-Snapshots.

ZFS-Eigenschaften

Mithilfe von Eigenschaften kann das Verhalten von Dateisystemen, Volumes, Snapshots und Klonen gesteuert werden Sofern nicht anders angegeben, gelten die in diesem Abschnitt beschriebenen Eigenschaften für alle Dataset-Typen.

Eigenschaften werden in zwei Typen (native und benutzerdefinierte Eigenschaften) eingeteilt. Native Eigenschaften exportieren interne Statistikinformationen und steuern das Systemverhalten von ZFS-Dateisystemen. Darüber hinaus können native Eigenschaften konfigurierbar oder schreibgeschützt sein. Benutzerdefinierte Eigenschaften wirken sich nicht auf das Verhalten von ZFS-Dateisystemen aus, können jedoch zum Versehen von Datasets mit Informationen, die für Ihre lokalen Gegebenheiten wichtig sind, verwendet werden. Weitere Informationen zu benutzerdefinierten Eigenschaften finden Sie unter Benutzerdefinierte ZFS-Eigenschaften.

Die meisten konfigurierbaren Eigenschaften sind vererbbar. Vererbbare Eigenschaften werden von einem übergeordneten Dataset an alle seine untergeordneten Datasets weitergegeben.

Alle vererbbaren Eigenschaften haben eine Quelle, die angibt, wie eine Eigenschaft erhalten wurde. Die Eigenschaftsquelle kann die folgenden Werte besitzen:

local

Dieser Wert zeigt an, dass die Eigenschaft mithilfe des Befehls zfs set (siehe Setzen von ZFS-Eigenschaften) explizit für das Dataset festgelegt wurde.

inherited from Dataset-Name

Dieser Wert zeigt an, dass die Eigenschaft von einem übergeordneten Objekt geerbt wurde.

default

Dieser Wert zeigt an, dass der Wert der betreffenden Eigenschaft weder geerbt noch lokal gesetzt wurde. Diese Quelle resultiert daraus, dass kein übergeordnetes Objekt eine Eigenschaft aufweist, die mit source local definiert ist.

In der folgenden Tabelle sind schreibgeschützte und konfigurierbare native Eigenschaften von ZFS-Dateisystemen aufgeführt. Schreibgeschützte Eigenschaften sind entsprechend gekennzeichnet. Alle anderen in dieser Tabelle aufgeführten nativen Eigenschaften sind konfigurierbar. Weitere Informationen zu benutzerdefinierten Eigenschaften finden Sie unter Benutzerdefinierte ZFS-Eigenschaften.

Tabelle 6–1 Beschreibungen nativer ZFS-Eigenschaften

Eigenschaft 

Typ 

Standardwert 

Beschreibung 

aclinherit

Zeichenkette 

secure

Legt fest, wie Einträge in Zugriffssteuerungslisten beim Erstellen von Dateien und Verzeichnissen vererbt werden. Werte: discard, noallow, secure und passthrough. Eine Beschreibung dieser Werte finden Sie unter Eigenschaften von Zugriffssteuerungslisten.

aclmode

Zeichenkette 

groupmask

Legt fest, wie Einträge von Zugriffssteuerungslisten während eines chmod-Vorgangs geändert werden. Werte: discard, groupmask und passthrough. Eine Beschreibung dieser Werte finden Sie unter Eigenschaften von Zugriffssteuerungslisten.

atime

Boolesch 

on

Legt fest, ob beim Lesen von Dateien die Dateizugriffszeit aktualisiert wird. Durch Deaktivierung dieser Eigenschaft wird vermieden, dass während des Lesens von Dateien Datenverkehr entsteht, der aus Schreibvorgängen resultiert. Dadurch kann die Leistung erheblich verbessert werden. E-Mail-Programme und ähnliche Dienstprogramme können allerdings in ihrer Funktion beeinträchtigt werden.

available

Zahl 

entf. 

Diese schreibgeschützte Eigenschaft gibt die für ein Dataset und alle seine untergeordneten Objekte verfügbare Festplattenkapazität an. Dabei wird angenommen, dass im Pool keine Aktivität vorliegt. Da Festplattenkapazität innerhalb eines Pools gemeinsam genutzt wird, kann die verfügbare Kapazität durch verschiedene Faktoren wie z. B. physische Speicherkapazität des Pools, Kontingente, Reservierungen oder andere im Pool befindliche Datasets beschränkt werden.

Die Abkürzung der Eigenschaft lautet avail.

Weitere Informationen zur Berechnung von Festplattenkapazität finden Sie unter Berechnung von ZFS-Festplattenkapazität.

canmount

Boolesch 

on

Legt fest, ob ein Dateisystem mit dem Befehl zfs mount eingehängt werden kann. Diese Eigenschaft ist für jedes Dateisystem einstellbar und kann nicht vererbt werden. Durch Setzen dieser Eigenschaft auf off kann jedoch an untergeordnete Dateisysteme ein Einhängepunkt vererbt werden. Die Dateisysteme selbst werden jedoch nicht eingehängt.

Wenn die Option noauto gesetzt ist, kann ein Dataset nur explizit ein- oder ausgehängt werden. Das Dataset wird weder beim Erstellen oder Importieren automatisch noch mit dem Befehl zfs mount- a eingehängt oder mit dem Befehl zfs unmount-a ausgehängt.

Weitere Informationen finden Sie unter Die Eigenschaft canmount.

checksum

Zeichenkette 

on

Aktiviert/deaktiviert die Prüfsumme zur Validierung der Datenintegrität. Der Standardwert ist on. Dadurch wird automatisch ein geeigneter Algorithmus (gegenwärtig fletcher4) gesetzt. Werte: on, off, fletcher2 , fletcher4 und sha256. Der Wert off deaktiviert die Integritätsprüfung von Benutzerdaten. Der Wert off wird nicht empfohlen.

compression

Zeichenkette 

off

Aktiviert oder deaktiviert die Komprimierung für ein Dataset. Werte: on, off, lzjb, gzip und gzip- N. Derzeit hat das Setzen der Eigenschaft auf lzjb, gzip oder gzip- N dieselbe Wirkung wie die Einstellung auf on. Durch Aktivieren der Komprimierung an einem Dateisystem mit bereits vorhandenen Daten werden nur neu hinzugekommene Daten komprimiert. Vorhandene Daten bleiben unkomprimiert.

Die Abkürzung der Eigenschaft lautet compress

compressratio

Zahl 

entf. 

Schreibgeschützte Eigenschaft, die das für das betreffende Dataset erreichte Komprimierungsverhältnis als Faktor ausdrückt. Die Komprimierung kann durch Ausführen von zfs set compression=on dataset aktiviert werden.

Der Wert wird aus der logischen Kapazität aller Dateien und der Kapazität der entsprechend referenzierten physischen Daten berechnet. Explizite Speicherplatzeinsparungen durch die Eigenschaft compression sind in diesem Wert enthalten.

copies

Zahl 

1

Legt die Anzahl der Kopien von Benutzerdaten pro Dateisystem fest. Verfügbare Werte sind 1, 2 oder 3. Diese Kopien werden zusätzlich zu etwaigen Redundanzfunktionen auf Pool-Ebene angelegt. Die von zusätzlichen Kopien beanspruchte Festplattenkapazität wird auf die entsprechende Datei bzw. das Dataset angerechnet und zählt für Kontingente und Reservierungen. Darüber hinaus wird die Eigenschaft used entsprechend aktualisiert, wenn das Erstellen mehrerer Kopien aktiviert wurde. Sie sollten diese Eigenschaft beim Erstellen des Dateisystems setzen, da sich das Ändern dieser Eigenschaft bei einem bereits vorhandenen Dateisystem nur auf neu geschriebene Daten auswirkt.

creation

Zeichenkette 

entf. 

Schreibgeschützte Eigenschaft, die angibt, wann ein Dataset erstellt wurde (Datum/Uhrzeit).

devices

Boolesch 

on

Legt fest, ob Gerätedateien in einem Dateisystem geöffnet werden können.

exec

Boolesch 

on

Legt fest, ob Programme innerhalb eines Dateisystems ausführbar sind. Wenn diese Eigenschaft auf off gesetzt ist, werden mmap(2)-Aufrufe mit PROT_EXEC nicht zugelassen.

mounted

Boolesch 

entf. 

Schreibgeschützte Eigenschaft, die angibt, ob gegenwärtig ein Dateisystem, Klon oder Snapshot eingehängt ist. Diese Eigenschaft gilt nicht für Volumes. Werte: yes oder no.

mountpoint

Zeichenkette 

entf. 

Legt den Einhängepunkt für das betreffende Dateisystem fest. Wenn die Eigenschaft mountpoint für ein Dateisystem geändert wird, werden das Dateisystem selbst und alle seine untergeordneten Dateisysteme, die den Einhängepunkt geerbt haben, ausgehängt. Wenn der neue Wert legacy ist, bleiben sie ausgehängt. Andernfalls werden sie, wenn die Eigenschaft vorher auf legacy oder none gesetzt war bzw. die Dateisysteme vor dem Ändern der Eigenschaft eingehängt waren, am neuen Bestimmungsort automatisch eingehängt. Darüber hinaus wird der Netzwerkzugriff auf die betreffenden Dateisysteme gesperrt und am neuen Bestimmungsort freigegeben.

Weitere Informationen zur Verwendung dieser Eigenschaft finden Sie unter Verwalten von ZFS-Einhängepunkten.

primarycache

Zeichenkette 

all

Kontrolliert, was im Primär-Cache gespeichert wird (ARC). Mögliche Werte sind all, none und metadata. Ist diese Eigenschaft auf all gesetzt, werden sowohl Benutzerdaten als auch Metadaten im Cache gespeichert. Ist diese Eigenschaft auf none gesetzt, werden weder Benutzerdaten noch Metadaten im Cache gespeichert. Ist diese Eigenschaft auf metadata gesetzt, werden nur Metadaten gespeichert.

origin

Zeichenkette 

entf. 

Schreibgeschützte Eigenschaft für geklonte Dateisysteme bzw. Volumes, die angibt, aus welchem Snapshot der betreffende Klon erstellt wurde. Das ursprüngliche Dateisystem kann (auch mit den Optionen -r oder -f) nicht gelöscht werden, solange ein Klon vorhanden ist.

Bei ungeklonten Dateisystemen besitzt diese Eigenschaft den Wertnone.

quota

Zahl (oder none)

none

Beschränkt die Festplattenkapazität, die von Datasets und untergeordneten Objekten belegt werden kann. Diese Eigenschaft erzwingt einen absoluten Grenzwert der Festplattenkapazität, die belegt werden kann. Dazu zählt auch der Speicherplatz, der von untergeordneten Objekten wie Dateisystemen und Snapshots belegt wird. Das Setzen eines Kontingentes für ein untergeordnetes Objekt eines Datasets, für den bereits ein Kontingent definiert wurde, überschreibt den vom übergeordneten Dataset geerbten Wert nicht, sondern setzt darüber hinaus einen zusätzlichen Grenzwert. Kontingente können nicht für Volumes eingestellt werden, da deren Eigenschaft volsize bereits ein Kontingent darstellt.

Weitere Informationen zum Einstellen von Kontingenten finden Sie unter Setzen von Kontingenten für ZFS-Dateisysteme.

readonly

Boolesch 

off

Legt fest, ob ein Dataset geändert werden kann. Wenn diese Eigenschaft auf on gesetzt ist, können keine Änderungen vorgenommen werden.

Die Abkürzung der Eigenschaft lautet rdonly.

recordsize

Zahl 

128K

Legt eine empfohlene Blockgröße für Dateien in einem Dateisystem fest.

Die Abkürzung der Eigenschaft lautet recsize. Eine ausführliche Beschreibung finden Sie unter Die Eigenschaft recordsize.

referenced

Zahl 

entf. 

Eine schreibgeschützte Eigenschaft, die die Datenmenge festlegt, auf die ein Dataset zugreifen kann. Solche Daten können von Datasets im Pool gemeinsam genutzt oder auch nicht gemeinsam genutzt werden.

Bei der Erstellung eines Snapshots bzw. Klons wird anfänglich die gleiche Festplattenkapazität referenziert, die der Kapazität des Dateisystems bzw. Snapshots entspricht, aus dem er erstellt wurde, da der Inhalt identisch ist. 

Die Abkürzung der Eigenschaft lautet refer.

refquota

Zahl (oder „none“) 

none

Legt fest, wie viel Festplattenkapazität ein Dataset belegen kann. Die Eigenschaft erzwingt einen absoluten Grenzwert des belegbaren Speicherplatzes. Dieser Grenzwert umfasst keine durch untergeordnete Objekte wie z. B. Snapshots und Klone belegte Festplattenkapazität.

refreservation

Zahl (oder „none“) 

none

Legt die garantierte Mindestfestplattenkapazität für ein Dataset fest (ohne untergeordnete Objekte, wie etwa Snapshots oder Klone). Liegt die belegte Festplattenkapazität unter dem hier angegebenen Wert, wird das Dataset behandelt, als würde es den mit refreservation angegebenen Speicherplatz belegen. Reservierungen durch refreservation werden in die Berechnung der Festplattenkapazität für das diesem Dataset übergeordnete Dataset einbezogen und auf die Kontingente und Reservierung für das übergeordnete Dataset angerechnet.

Wenn refreservation gesetzt ist, wird ein Snapshot nur zugelassen, wenn außerhalb dieser Reservierung genügend freier Speicherplatz im Pool vorhanden ist, um die Menge der aktuell referenzierten Byte im Dataset aufzunehmen.

Die Abkürzung der Eigenschaft lautet refreserv.

reservation

Zahl (oder „none“) 

none

Legt die Mindestfestplattenkapazität für ein Dataset und seine untergeordneten Objekte fest. Liegt die belegte Festplattenkapazität unter dem hier angegebenen Wert, wird das Dataset behandelt, als würde es den in dieser Reservierung angegebenen Speicherplatz belegen. Reservierungen werden in die Berechnung der Festplattenkapazität für das diesem Dataset übergeordneten Dataset einbezogen und auf die Kontingente und Reservierung für das übergeordneten Dataset angerechnet.

Die Abkürzung der Eigenschaft lautet reserv.

Weitere Informationen dazu finden Sie unter Setzen von Reservierungen für ZFS-Dateisysteme.

secondarycache

Zeichenkette 

all

Kontrolliert, was im Sekundär-Cache gespeichert wird (L2ARC). Mögliche Werte sind all, none und metadata. Ist diese Eigenschaft auf all gesetzt, werden sowohl Benutzerdaten als auch Metadaten im Cache gespeichert. Ist diese Eigenschaft auf none gesetzt, werden weder Benutzerdaten noch Metadaten im Cache gespeichert. Ist diese Eigenschaft auf metadata gesetzt, werden nur Metadaten gespeichert.

setuid

Boolesch 

on

Legt fest, ob das setuid-Bit in einem Dateisystem berücksichtigt wird.

shareiscsi

Zeichenkette 

off 

Legt fest, ob ein ZFS-Volume gemeinsam als iSCSI-Ziel genutzt wird. Eigenschaftswerte: on, off und type=disk. Sie können shareiscsi=on für ein Dateisystem setzen, sodass alle ZFS-Volumes innerhalb des Dateisystems standardmäßig freigegeben sind. Das Setzen dieser Eigenschaft für ein Dateisystem hat jedoch keine direkte Auswirkung.

sharenfs

Zeichenkette 

off

Legt fest, ob das Dateisystem über NFS zugänglich ist und welche Optionen verwendet werden. Wenn diese Eigenschaft auf on gesetzt ist, wird der Befehl zfs share ohne Optionen aufgerufen. Andernfalls wird der Befehl zfs share mit den Optionen aufgerufen, die dem Inhalt dieser Eigenschaft entsprechen. Wenn die Eigenschaft auf off gesetzt ist, wird das Dateisystem über die älteren Befehle share und unshare und die Datei dfstab verwaltet.

Weitere Informationen zur Nutzung von ZFS-Dateisystemen für den Netzwerkzugang finden Sie unter Freigeben und Sperren von ZFS-Dateisystemen.

snapdir

Zeichenkette 

hidden

Legt fest, ob das Verzeichnis .zfs in der Root des Dateisystems verborgen oder sichtbar ist. Weitere Informationen zur Verwendung von Snapshots finden Sie unter Überblick über ZFS-Snapshots.

type

Zeichenkette 

entf. 

Schreibgeschützte Eigenschaft, die den Typ des betreffenden Datasets (filesystem (Dateisystem oder Klon), volume oder snapshot) angibt.

used

Zahl 

entf. 

Schreibgeschützte Eigenschaft, die die für ein Dataset und alle seine untergeordneten Objekte belegte Festplattenkapazität angibt.

Eine ausführliche Beschreibung finden Sie unter Die Eigenschaft used.

usedbychildren

Zahl 

off

Schreibgeschützte Eigenschaft, die die Festplattenkapazität angibt, die von untergeordneten Objekten dieses Datasets beansprucht wird und die beim Löschen dieser untergeordneten Objekte frei werden würde. Die Abkürzung für die Eigenschaft ist usedchild.

usedbydataset

Zahl 

off

Schreibgeschützte Eigenschaft, die die Festplattenkapazität angibt, die vom Dataset selbst beansprucht wird und die beim Löschen des Datasets und vorherigem Löschen aller Snapshots und Entfernen von refreservation frei werden würde. Die Abkürzung für diese Eigenschaft ist usedds.

usedbyrefreservation

Zahl 

off

Schreibgeschützte Eigenschaft, die die von einem refreservation-Set auf diesem Dataset beanspruchte Festplattenkapazität angibt, die beim Entfernen von refreservation frei werden würde. Die Abkürzung für die Eigenschaft ist usedds.

usedbysnapshots

Zahl 

off

Schreibgeschützte Eigenschaft, die die von Snapshots dieses Datasets beanspruchte Festplattenkapazität angibt. Insbesondere geht es dabei um die Festplattenkapazität, die beim Löschen aller Snapshots des Datasets frei werden würde. Beachten Sie, dass es sich bei diesem Wert nicht einfach um die Summe der used-Eigenschaften der Snapshots handelt, da Speicherplatz von mehreren Snapshots gemeinsam genutzt werden kann. Die Abkürzung für diese Eigenschaft ist usedsnap.

version

Zahl 

entf. 

Die aktuelle, von der Pool-Version unabhängige Version eines Dateisystems auf der Festplatte. Diese Eigenschaft kann nur bei einer nachfolgenden Version der unterstützten Software gesetzt werden. Weitere Informationen finden Sie unter zfs upgrade-Befehl.

volsize

Zahl 

entf. 

Legt die logische Größe eines Volumes fest (gilt nur für Volumes).

Eine ausführliche Beschreibung finden Sie unter Die Eigenschaft volsize.

volblocksize

Zahl 

8 kB

Legt die Blockgröße eines Volumes fest (gilt nur für Volumes). Nach dem Schreiben von Daten auf das betreffende Volume kann die Blockgröße nicht mehr geändert werden. Deswegen muss diese Eigenschaft bei der Erstellung des Volumes gesetzt werden. Die Standardblockgröße für Volumes ist 8 KB. Es sind alle Werte zur Potenz von 2 im Bereich von 512 Byte bis 128 KB zulässig.

Die Abkürzung der Eigenschaft lautet volblock.

zoned

Boolesch 

entf. 

Gibt an, ob dieses Dataset zu einer nicht-globalen Zone hinzugefügt wurde. Wenn diese Eigenschaft gesetzt ist, befindet sich der Einhängepunkt nicht in der globalen Zone, und ZFS kann ein solches Dateisystem auf Anforderung nicht einhängen. Bei der ersten Installation einer Zone wird diese Eigenschaft für alle hinzugefügten Dateisysteme gesetzt.

Weitere Informationen zur Verwendung von ZFS mit installierten Zonen finden Sie in Verwendung von ZFS in einem Solaris-System mit installierten Zonen.

xattr

Boolesch 

on

Legt fest, ob für das betreffende Dateisystem erweiterte Attribute aktiviert (on) oder deaktiviert sind (off).

Schreibgeschützte native ZFS-Eigenschaften

Schreibgeschützte native Eigenschaften können gelesen, aber nicht gesetzt werden. Schreibgeschützte native Eigenschaften werden nicht vererbt. Einige native Eigenschaften gelten nur für bestimmte Dataset-Typen. In solchen Fällen ist der entsprechende Dataset-Typ in der Beschreibung in Tabelle 6–1 aufgeführt.

Die schreibgeschützten nativen Eigenschaften sind hier aufgeführt und in Tabelle 6–1 beschrieben.

Weitere Informationen zur Berechnung von Festplattenkapazität (einschließlich Informationen zu den Eigenschaften used, referenced und available) finden Sie unter Berechnung von ZFS-Festplattenkapazität.

Die Eigenschaft used

Die Eigenschaft used ist eine schreibgeschützte Eigenschaft, die die für ein Dataset und alle seine untergeordneten Objekte belegte Festplattenkapazität angibt. Dieser Wert wird gegen die für das Dataset gesetzten Kontingente und Reservierungen geprüft. Die belegte Festplattenkapazität enthält nicht die Reservierungen für das Dataset selbst, schließt jedoch die Reservierungen für untergeordnete Datasets ein. Die Festplattenkapazität, die das Dataset aufgrund seines übergeordneten Datasets belegt, sowie die Festplattenkapazität, die beim rekursiven Löschen des Datasets freigegeben wird, sind größer als die Kapazität, die das Dataset für den belegten Speicherplatz und die Reservierung benötigt.

Bei der Erstellung von Snapshots wird diese Festplattenkapazität anfänglich vom Snapshot und dem Dateisystem (sowie eventuellen früheren Snapshots) gemeinsam genutzt. Wenn sich ein Dateisystem mit der Zeit ändert, gehört zuvor gemeinsam genutzte Festplattenkapazität dann ausschließlich dem Snapshot und wird in die Berechnung des vom Snapshot belegten Speicherplatzes einbezogen. Wie viel Festplattenkapazität von einem Snapshot belegt wird, hängt von den speziellen Daten des Snapshots ab. Zudem kann durch das Löschen von Snapshots die Festplattenkapazität, die Snapshots eindeutig zugewiesen ist (und von diesen verwendet wird), größer werden. Weitere Informationen zu Snapshots und Speicherplatzaspekten finden Sie in Verhalten bei ungenügendem Speicherplatz.

In die belegte, verfügbare und referenzierte Festplattenkapazität werden keine anstehenden Änderungen einbezogen. Anstehende Änderungen werden im Allgemeinen innerhalb weniger Sekunden abgeschlossen. Nach Abschluss eines Schreibvorgangs auf dem Datenträger durch die Funktion fsync(3c) oder O_SYNC werden die Informationen zur belegten Festplattenkapazität nicht unbedingt sofort aktualisiert.

Die Informationen der Eigenschaften usedbychildren, usedbydataset , usedbyrefreservation und usedbysnapshots kann mit dem Befehl zfs list - o space angezeigt werden. Diese Eigenschaften bestimmen die Eigenschaft used für Festplattenkapazität, die von untergeordneten Objekten belegt wird. Weitere Informationen finden Sie in Tabelle 6–1.

Konfigurierbare native ZFS-Eigenschaften

Konfigurierbare native Eigenschaften können gelesen und gesetzt werden. Konfigurierbare native Eigenschaften werden mithilfe des Befehls zfs set(siehe Setzen von ZFS-Eigenschaften) bzw. zfs create (siehe Erstellen eines ZFS-Dateisystems) gesetzt. Außer Kontingenten und Reservierungen werden konfigurierbare Eigenschaften vererbt. Weitere Informationen zu Kontingenten und Reservierungen finden Sie unter Einstellen von ZFS-Kontingenten und -Reservierungen.

Einige konfigurierbare native Eigenschaften gelten nur für bestimmte Dataset-Typen. In solchen Fällen ist der entsprechende Dataset-Typ in der Beschreibung in Tabelle 6–1 aufgeführt. Sofern nichts Anderes vermerkt ist, gilt eine Eigenschaft für alle Dataset-Typen: Dateisysteme, Volumes, Klone und Snapshots.

Die konfigurierbaren Eigenschaften sind hier aufgeführt und in Tabelle 6–1 beschrieben.

Die Eigenschaft canmount

Wenn die Eigenschaft canmount auf off gesetzt wird, kann das Dateisystem nicht mithilfe der Befehle zfs mount bzw. zfs mount -a eingehängt werden. Das Setzen dieser Eigenschaft auf off gleicht dem Setzen der Eigenschaft mountpoint auf none. Der Unterschied besteht darin, dass das Dataset trotzdem noch die normale Eigenschaft mountpoint besitzt, die vererbt werden kann. Sie können diese Eigenschaft beispielsweise auf off setzen und Eigenschaften setzen, die an untergeordnete Dateisysteme vererbt werden. Das übergeordnete Dateisystem selbst wird jedoch nicht eingehängt und ist nicht für Benutzer zugänglich. In diesem Fall dient das übergeordnete Dateisystem als Container, für den Sie Eigenschaften festlegen können. Der Container selbst ist jedoch nicht zugänglich.

Im folgenden Beispiel wird das Dateisystem userpool erstellt und dessen Eigenschaft canmount auf off gesetzt. Einhängepunkte für untergeordnete Benutzerdateisysteme werden auf ein einziges Verzeichnis (/export/home ) gesetzt. Am übergeordneten Dateisystem gesetzte Eigenschaften werden von untergeordneten Dateisystemen geerbt; das übergeordnete Dateisystem selbst wird jedoch nicht eingehängt.


# zpool create userpool mirror c0t5d0 c1t6d0
# zfs set canmount=off userpool
# zfs set mountpoint=/export/home userpool
# zfs set compression=on userpool
# zfs create userpool/user1
# zfs create userpool/user2
# zfs mount
userpool/user1                  /export/home/user1
userpool/user2                  /export/home/user2

Durch Setzen der Eigenschaft canmount auf noauto kann das Dataset nur ausdrücklich, nicht aber automatisch eingehängt werden. Über diese Einstellung wird von der Oracle Solaris Upgrade-Software festgelegt, dass nur Datasets aus der aktiven Boot-Umgebung beim Booten eingehängt werden.

Die Eigenschaft recordsize

Die Eigenschaft recordsize legt eine empfohlene Blockgröße für Dateien im Dateisystem fest.

Diese Eigenschaft dient zur Zusammenarbeit mit Datenbanken, die auf Dateien in festen Blockgrößen zugreifen. ZFS passt Blockgrößen automatisch an interne Algorithmen an, die für typische Zugriffsstrukturen optimiert wurden. Für Datenbanken, die sehr große Dateien erstellen, Dateien jedoch mit wahlfreiem Zugriff in kleineren Blöcken lesen, können diese Algorithmen unter Umständen nicht optimal sein. Wenn Sie die Eigenschaft recordsize auf einen Wert setzen, der der Datensatzgröße der betreffenden Datenbank entspricht bzw. größer als diese ist, kann die Leistung bedeutend verbessert werden. Die Verwendung dieser Eigenschaft für allgemeine Dateisysteme kann sich negativ auf die Leistung auswirken und wird nicht empfohlen. Die angegebene Größe muss ein Zweierpotenzwert sein, der größer als oder gleich 512 Byte und kleiner als oder gleich 128 KB ist. Das Ändern der Eigenschaft recordsize eines Dateisystems wirkt sich nur auf Dateien aus, die nach der Änderung erstellt wurden. Bereits vorhandene Dateien bleiben unverändert.

Die Abkürzung der Eigenschaft lautet recsize.

Die Eigenschaft volsize

Die Eigenschaft volsize legt die logische Größe eines Volumes fest. Standardmäßig wird beim Erstellen eines Volumes Speicherplatz der gleichen Kapazität reserviert. Alle Änderungen der Eigenschaft volsize werden entsprechend in der Reservierung geändert. Diese Überprüfungen dienen zum Verhindern unerwarteten Systemverhaltens. Je nachdem, wie ein Volume benutzt wird, kann es undefiniertes Systemverhalten oder Datenbeschädigung verursachen, wenn es weniger Speicherplatz enthält, als es eigentlich angefordert hat. Solche Effekte können auch auftreten, wenn die Kapazität eines Volumes geändert wird, während es in Benutzung ist. Dies gilt besonders dann, wenn die Volume-Kapazität verkleinert wird. Gehen Sie bei der Änderung einer Volume-Kapazität stets mit äußerster Sorgfalt vor.

Obwohl dies nicht empfohlen wird, können Sie ein Sparse-Volume erstellen, indem Sie für den Befehl -zfs create -V das Flag s angeben oder die Reservierung nach der Erstellung des Volumes entsprechend ändern. Bei Sparse-Volumes ist der Wert der Reservierung ungleich der Volume-Kapazität. Änderungen der Eigenschaft volsize wirken sich bei Sparse-Volumes nicht auf den Reservierungswert aus.

Weitere Informationen zur Verwendung von Volumes finden Sie unter ZFS-Volumes.

Benutzerdefinierte ZFS-Eigenschaften

Zusätzlich zu den nativen Eigenschaften unterstützt ZFS auch beliebige benutzerdefinierte Eigenschaften. Benutzerdefinierte Eigenschaften wirken sich nicht auf das ZFS-Verhalten aus, können jedoch zum Versehen von Datasets mit Informationen, die für Ihre lokalen Gegebenheiten wichtig sind, verwendet werden.

Namen benutzerdefinierter Eigenschaften müssen den folgenden Konventionen genügen:

Namen benutzerdefinierter Eigenschaften sollten generell in die folgenden beiden Komponenten aufgeteilt werden, obwohl dies für ZFS nicht obligatorisch ist:


module:property

Bei der programmatischen Verwendung von Eigenschaften sollten Sie für die Komponente Modul einen umgekehrten DNS-Domänennamen verwenden. Dadurch wird die Wahrscheinlichkeit verringert, dass zwei unabhängig voneinander entwickelte Pakete die gleiche Eigenschaft für unterschiedliche Zwecke nutzen. Eigenschaftsnamen, die mit com.sun beginnen, sind für Oracle Corporation reserviert.

Die Werte benutzerdefinierter Eigenschaften müssen folgenden Konventionen entsprechen:

Beispiel:


# zfs set dept:users=finance userpool/user1
# zfs set dept:users=general userpool/user2
# zfs set dept:users=itops userpool/user3

Alle Befehle, die Eigenschaften verwenden (z. B. zfs list, zfs get, zfs set usw.) können native und benutzerdefinierte Eigenschaften nutzen.

Beispiel:


zfs get -r dept:users userpool
NAME            PROPERTY    VALUE           SOURCE
userpool        dept:users  all             local
userpool/user1  dept:users  finance         local
userpool/user2  dept:users  general         local
userpool/user3  dept:users  itops           local

Benutzerdefinierte Eigenschaften können mit dem Befehl zfs inherit gelöscht werden. Beispiel:


# zfs inherit -r dept:users userpool

Wenn die betreffende Eigenschaft nicht in einem übergeordneten Dataset definiert wurde, wird sie komplett entfernt.

Abfragen von ZFS-Dateisysteminformationen

Der Befehl zfs list bietet einen umfassenden Mechanismus zum Anzeigen und Abfragen von Dataset-Informationen. In diesem Abschnitt werden grundlegende und komplexere Abfragen erläutert.

Auflisten grundlegender ZFS-Informationen

Mit dem Befehl zfs list ohne Optionen können Sie sich grundlegende Dataset-Informationen anzeigen lassen. Dieser Befehl zeigt die Namen aller Datasets im System sowie die Werte der Eigenschaften used, available, referenced und mountpoint an. Weitere Informationen zu diesen Eigenschaften finden Sie unter ZFS-Eigenschaften.

Beispiel:


# zfs list
NAME                   USED  AVAIL  REFER  MOUNTPOINT
pool                   476K  16.5G    21K  /pool
pool/clone              18K  16.5G    18K  /pool/clone
pool/home              296K  16.5G    19K  /pool/home
pool/home/marks        277K  16.5G   277K  /pool/home/marks
pool/home/marks@snap      0      -   277K  -
pool/test               18K  16.5G    18K  /test

Mithilfe dieses Befehls können Sie auch Informationen zu bestimmten Datasets anzeigen. Geben Sie dazu in der Befehlszeile den Namen des gewünschten Datasets an. Darüber hinaus können Sie mit der Option -r rekursiv Informationen zu allen untergeordneten Datasets anzeigen. Beispiel:


# zfs list -r pool/home/marks
NAME                   USED  AVAIL  REFER  MOUNTPOINT
pool/home/marks        277K  16.5G   277K  /pool/home/marks
pool/home/marks@snap      0      -   277K  -

Sie können den Befehl zfs list zusammen mit dem Einhängepunkt eines Dateisystems verwenden. Beispiel:


# zfs list /pool/home/marks
NAME              USED  AVAIL  REFER  MOUNTPOINT
pool/home/marks   277K  16.5G   277K  /pool/home/marks

Das folgende Beispiel zeigt, wie grundlegende Informationen zum Dateisystem tank/home/chua und allen seinen untergeordneten Datasets angezeigt werden können:


# zfs list -r tank/home/chua
NAME                        USED  AVAIL  REFER  MOUNTPOINT 
tank/home/chua		          26.0K  4.81G  10.0K  /tank/home/chua 
tank/home/chua/projects       16K  4.81G   9.0K  /tank/home/chua/projects
tank/home/chua/projects/fs1    8K  4.81G     8K  /tank/home/chua/projects/fs1 
tank/home/chua/projects/fs2    8K  4.81G     8K  /tank/home/chua/projects/fs2

Zusätzliche Informationen zum Befehl zfs list finden Sie in der Man Page zfs(1M).

Erstellen komplexer ZFS-Abfragen

Die Ausgabe des Befehls zfs list kann mithilfe der Optionen -o, -f und -H speziell angepasst werden.

Mit der Option -o und einer kommagetrennten Liste gewünschter Eigenschaften können Sie die Ausgabe von Eigenschaftswerten anpassen. Sie können jede Dataset-Eigenschaft als gültiges Argument angeben. Eine Liste aller unterstützten Dataset-Eigenschaften finden Sie unter ZFS-Eigenschaften. Zusätzlich zu den hier definierten Eigenschaften kann die Option -o auch das Literal name enthalten. In diesem Fall enthält die Befehlsausgabe auch den Namen des Datasets.

Im folgenden Beispiel wird mithilfe von zfs list der Dataset-Name zusammen mit den Eigenschaftswerten sharenfs und mountpoint angezeigt.


# zfs list -o name,sharenfs,mountpoint
NAME                   SHARENFS         MOUNTPOINT
tank                   off              /tank
tank/home              on               /tank/home
tank/home/ahrens       on               /tank/home/ahrens
tank/home/bonwick      on               /tank/home/bonwick
tank/home/chua         on               /tank/home/chua
tank/home/eschrock     on               legacy
tank/home/moore        on               /tank/home/moore
tank/home/tabriz       ro               /tank/home/tabriz

Mit der Option -t können Sie festlegen, welche Dataset-Typen angezeigt werden sollen. Zulässige Typen sind in der folgenden Tabelle aufgeführt.

Tabelle 6–2 ZFS-Dataset-Typen

Typ 

Beschreibung 

filesystem

Dateisysteme und Klone 

volume

Volumes 

snapshot

Snapshots 

Die Option -t liest eine kommagetrennte Liste der anzuzeigenden Dataset-Typen. Im folgenden Beispiel wird mithilfe der Optionen -t und - o für alle Dateisysteme gleichzeitig der Name und die Eigenschaft used angezeigt:


# zfs list -t filesystem -o name,used
NAME              USED
pool              476K
pool/clone         18K
pool/home         296K
pool/home/marks   277K
pool/test          18K

Mithilfe der Option -H kann bei der Ausgabe des Befehls zfs list die Titelzeile unterdrückt werden. Bei Verwendung der Option -H werden Leerzeichen durch Tabulatorzeichen ersetzt. Diese Option ist bei der Verwendung der Befehlsausgabe für programmatische Anwendungen (z. B. Skripten) nützlich. Das folgende Beispiel zeigt die Ausgabe des Befehls zfs list mit der Option -H.


# zfs list -H -o name
pool
pool/clone
pool/home
pool/home/marks
pool/home/marks@snap
pool/test

Verwalten von ZFS-Eigenschaften

Dataset-Eigenschaften werden mithilfe der Unterbefehle set, inherit und get des Befehls zfs verwaltet.

Setzen von ZFS-Eigenschaften

Sie können konfigurierbare Dataset-Eigenschaften mit dem Befehl zfs set setzen. Bei der Erstellung eines Datasets können Eigenschaften auch mit dem Befehl zfs create gesetzt werden. Eine Liste der konfigurierbaren Dataset-Eigenschaften finden Sie unter Konfigurierbare native ZFS-Eigenschaften.

Der Befehl zfs set verwendet ein Eigenschaft-Wert-Paar im Format Eigenschaft=Wert, dem ein Dataset-Name folgt. Während eines Aufrufs von zfs set kann nur eine Eigenschaft gesetzt oder geändert werden.

Im folgenden Beispiel wird die Eigenschaft atime von tank/home auf off gesetzt.


# zfs set atime=off tank/home

Darüber hinaus können bei der Erstellung eines Dateisystems beliebige Dateisystemeigenschaften gesetzt werden. Beispiel:


# zfs create -o atime=off tank/home

Spezielle nummerische Eigenschaftswerte können durch Verwendung der folgenden verständlichen Suffixe (in ansteigender Größenordnung) angegeben werden: BKMGTPEZ. Allen diesen Suffixen außer dem Suffix B, das für Byte steht, kann ein b (für „Byte”) nachgestellt werden. In den folgenden vier Beispielen des Befehls zfs set werden entsprechende nummerische Ausdrücke angegeben, mit denen die Eigenschaft quota gesetzt wird. Damit werden Kontingente im Dateisystem tank/home/marks auf 50 GB gesetzt:


# zfs set quota=50G tank/home/marks
# zfs set quota=50g tank/home/marks
# zfs set quota=50GB tank/home/marks
# zfs set quota=50gb tank/home/marks

Bei Zeichenkettenwerten wird Groß- und Kleinschreibung unterschieden. Diese Werte dürfen nur Kleinbuchstaben enthalten. Ausnahmen bilden die Werte der Eigenschaften mountpoint und sharenfs; die Werte dieser Eigenschaften dürfen sowohl Groß- als auch Kleinbuchstaben enthalten.

Weitere Informationen zum Befehl zfs set finden Sie in der Man Page zfs(1M).

Vererben von ZFS-Eigenschaften

Alle konfigurierbaren Eigenschaften mit der Ausnahme von Kontingenten und Reservierungen erben ihren Wert von ihrem übergeordneten Dataset, es sei denn, diese Werte sind im untergeordneten Dataset explizit gesetzt. Wenn das entsprechende übergeordnete Dateisystem für eine vererbte Eigenschaft keinen Wert besitzt, wird der Standardwert für die betreffende Eigenschaft verwendet. Mit dem Befehl zfs inherit können Sie Eigenschaftswerte zurücksetzen, was zur Folge hat, dass der vom übergeordneten Dateisystem vererbte Wert verwendet wird.

Im folgenden Beispiel wird mithilfe des Befehls zfs set die Komprimierung für das Dateisystem tank/home/bonwick aktiviert. Danach wird zfs inherit verwendet, um die Eigenschaft compression zu löschen, wodurch die Eigenschaft den Standardwert (off) des erbt. Da weder bei home noch bei tank der Wert der Eigenschaft compression lokal gesetzt wurde, wird der Standardwert verwendet. Wäre bei beiden die Komprimierung aktiviert, würde der Wert des direkten übergeordneten Dateisystems (in diesem Beispiel home) verwendet werden.


# zfs set compression=on tank/home/bonwick
# zfs get -r compression tank
NAME             PROPERTY      VALUE                    SOURCE
tank             compression   off                      default
tank/home        compression   off                      default
tank/home/bonwick compression   on                      local
# zfs inherit compression tank/home/bonwick
# zfs get -r compression tank
NAME             PROPERTY      VALUE                    SOURCE
tank             compression   off                      default
tank/home        compression   off                      default
tank/home/bonwick compression  off                      default

Der Unterbefehl inherit wird bei Angabe der Option -r rekursiv ausgeführt. Im folgenden Beispiel wird durch den Befehl der Wert für die Eigenschaft compression von tank/home und allen eventuell vorhandenen untergeordneten Dateisystemen geerbt:


# zfs inherit -r compression tank/home

Hinweis –

Bitte beachten Sie, dass die Option -r die Eigenschaftswerte aller untergeordneten Datasets zurücksetzt.


Weitere Informationen zum Befehl zfs inherit finden Sie in der Man Page zfs(1M).

Abfragen von ZFS-Eigenschaften

Am Einfachsten können Eigenschaftswerte mit dem Befehl zfs list abgefragt werden. Weitere Informationen dazu finden Sie unter Auflisten grundlegender ZFS-Informationen. Für komplexere Abfragen und Skripten sollten Sie den Befehl zfs get verwenden, da dieser ausführlichere Informationen in einem anpassbaren Format anzeigt.

Sie können Dataset-Eigenschaften mit dem Befehl zfs get abrufen. Das folgende Beispiel zeigt, wie ein Eigenschaftswert eines Datasets abgerufen werden kann:


# zfs get checksum tank/ws
NAME             PROPERTY       VALUE                      SOURCE
tank/ws          checksum       on                         default

In der vierten Spalte SOURCE wird der Ursprung des betreffende Eigenschaftswerts angezeigt. In der folgenden Tabelle werden die möglichen Ursprungswerte erläutert.

Tabelle 6–3 Mögliche SOURCE-Werte (Befehl zfs get)

SOURCE-Wert 

Beschreibung 

default

Dieser Eigenschaftswert wurde für dieses Dataset bzw. seine übergeordneten Datasets nie explizit gesetzt. Es wird der Standardwert für diese Eigenschaft verwendet. 

inherited from Dataset-Name

Dieser Eigenschaftswert wurde vom übergeordneten Dataset geerbt, das in dataset-name angegeben ist.

local

Dieser Eigenschaftswert wurde mithilfe von zfs set für dieses Dataset explizit gesetzt.

temporary

Dieser Eigenschaftswert wurde mithilfe von zfs mount - o gesetzt und gilt nur solange, wie das Dateisystem eingehängt ist. Weitere Informationen zu temporären Eigenschaften von Einhängepunkten finden Sie unter Verwenden temporärer Einhängepunkte.

- (keiner) 

Diese Eigenschaft ist schreibgeschützt. Ihr Wert wird von ZFS bereitgestellt. 

Sie können alle Dataset-Eigenschaftswerte mit dem speziellen Schlüsselwort all abrufen. In den folgenden Beispielen wird das Schlüsselwort all verwendet:


# zfs get all tank/home
NAME       PROPERTY              VALUE                  SOURCE
tank/home  type                  filesystem             -
tank/home  creation              Tue Jun 29 11:44 2010  -
tank/home  used                  21K                    -
tank/home  available             66.9G                  -
tank/home  referenced            21K                    -
tank/home  compressratio         1.00x                  -
tank/home  mounted               yes                    -
tank/home  quota                 none                   default
tank/home  reservation           none                   default
tank/home  recordsize            128K                   default
tank/home  mountpoint            /tank/home             default
tank/home  sharenfs              off                    default
tank/home  checksum              on                     default
tank/home  compression           off                    default
tank/home  atime                 on                     default
tank/home  devices               on                     default
tank/home  exec                  on                     default
tank/home  setuid                on                     default
tank/home  readonly              off                    default
tank/home  zoned                 off                    default
tank/home  snapdir               hidden                 default
tank/home  aclmode               groupmask              default
tank/home  aclinherit            restricted             default
tank/home  canmount              on                     default
tank/home  shareiscsi            off                    default
tank/home  xattr                 on                     default
tank/home  copies                1                      default
tank/home  version               4                      -
tank/home  utf8only              off                    -
tank/home  normalization         none                   -
tank/home  casesensitivity       sensitive              -
tank/home  vscan                 off                    default
tank/home  nbmand                off                    default
tank/home  sharesmb              off                    default
tank/home  refquota              none                   default
tank/home  refreservation        none                   default
tank/home  primarycache          all                    default
tank/home  secondarycache        all                    default
tank/home  usedbysnapshots       0                      -
tank/home  usedbydataset         21K                    -
tank/home  usedbychildren        0                      -
tank/home  usedbyrefreservation  0                      -
tank/home  logbias               latency                default

Hinweis –

Die Eigenschaften casesensitivity, nbmand, normalization, sharesmb, utf8only und vscan sind in Oracle Solaris 10 nicht voll funktionsfähig, da der Oracle Solaris SMB-Service nicht von Oracle Solaris 10 unterstützt wird.


Mit der Option -s des Befehls zfs get können Sie die anzuzeigenden Eigenschaften nach Ursprungstyp angeben. Diese Option liest eine kommagetrennte Liste der gewünschten Ursprungstypen ein. Es werden nur Eigenschaften des gewünschten Ursprungstyps angezeigt. Zulässige Ursprungstypen sind local, default, inherited, temporary und none. Das folgende Beispiel zeigt alle Eigenschaften, die in pool lokal gesetzt wurden.


# zfs get -s local all pool
NAME             PROPERTY      VALUE                      SOURCE
pool             compression   on                         local

Alle der o. g. Optionen können zusammen mit der Option -r verwendet werden, um die angegebenen Eigenschaften aller untergeordneten Datasets rekursiv anzuzeigen. Im folgenden Beispiel werden alle temporären Eigenschaften aller Datasets in tank rekursiv angezeigt:


# zfs get -r -s temporary all tank
NAME             PROPERTY       VALUE                      SOURCE
tank/home          atime          off                      temporary
tank/home/bonwick  atime          off                      temporary
tank/home/marks    atime          off                      temporary

Mithilfe des Befehls zfs get können Sie Eigenschaftswerte abfragen ohne ein Zieldateisystem anzugeben, was bedeutet, dass alle Pools bzw. Dateisysteme abgefragt werden. Beispiel:


# zfs get -s local all
tank/home               atime          off                    local
tank/home/bonwick       atime          off                    local
tank/home/marks         quota          50G                    local

Weitere Informationen zum Befehl zfs get finden Sie in der Man Page zfs(1M).

Abfragen von ZFS-Eigenschaften für Skripten

Der Befehl zfs get unterstützt die Optionen -H und - o, die speziell für die Verwendung dieses Befehl in Skripten vorgesehen sind. Sie können die Option -H verwenden, um die Kopfzeileninformationen zu unterdrücken und Leerzeichen durch Tabulatorzeichen zu ersetzen. Dadurch können Daten einfach analysiert werden. Sie können die Option -o verwenden, um die Ausgabe wie folgt anzupassen:

Das folgende Beispiel zeigt, wie mithilfe der Optionen -H und -o des Befehls zfs get ein einzelner Wert abgerufen werden kann.


# zfs get -H -o value compression tank/home
on

Die Option -p gibt nummerische Werte exakt aus. 1 MB wird beispielsweise als 1000000 ausgegeben. Diese Option lässt sich wie folgt verwenden:


# zfs get -H -o value -p used tank/home
182983742

Mit der Option -r und allen der o. g. Optionen können Sie Werte für alle untergeordneten Datasets rekursiv abrufen. Im folgenden Beispiel werden die Optionen -H, -o und - r verwendet, um den Dataset-Namen sowie der Wert der Eigenschaft used für export/home und die untergeordneten Objekte abzurufen, während die Kopfzeile der Befehlsausgabe unterdrückt wird:


# zfs get -H -o name,value -r used export/home
export/home             5.57G
export/home/marks       1.43G
export/home/maybee      2.15G

Einhängen und Freigeben von ZFS-Dateisystemen

In diesem Abschnitt wird die Verwaltung von Einhängepunkten und freigegebenen Dateisystemen in ZFS beschrieben.

Verwalten von ZFS-Einhängepunkten

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, wenn der Befehl zfs mount -a aufgerufen wird, ohne dass Sie dafür die Datei /etc/vfstab ändern 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.

Automatische Einhängepunkte

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.

Legacy-Einhängepunkte

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/eschrock
# 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/eschrock -		/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.

Einhängen von ZFS-Dateisystemen

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
tank                            /tank
tank/home                       /tank/home
tank/home/bonwick               /tank/home/bonwick
tank/ws                         /tank/ws

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. Zum Erzwingen des Einhängens in ein nicht leeres Verzeichnis müssen Sie die Option -O verwenden. Beispiel:


# zfs mount tank/home/lalt
cannot mount '/export/home/lalt': directory is not empty
use legacy mountpoint to allow this behavior, or use the -O flag
# zfs mount -O tank/home/lalt

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 pool/home/billm
cannot mount 'pool/home/billm': 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

Eigenschaft 

Einhängeoption 

atime

atime/noatime

devices

devices/nodevices

exec

exec/noexec

nbmand

nbmand/nonbmand

readonly

ro/rw

setuid

setuid/nosetuid

xattr

xattr/noaxttr

Die Einhängeoption nosuid ist ein Alias-Name für nodevices,nosetuid .

Verwenden temporärer Einhängepunkte

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 tank/home/perrin

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 tank/home/perrin
# zfs get atime tank/home/perrin
NAME             PROPERTY      VALUE                      SOURCE
tank/home/perrin atime         off                        temporary

Weitere Informationen zum Befehl zfs mount finden Sie in der Man Page zfs(1M).

Aushängen von ZFS-Dateisystemen

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 tank/home/tabriz

Im folgenden Beispiel wird ein Dateisystem nach seinem Einhängepunkt ausgehängt:


# zfs unmount /export/home/tabriz

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/eschrock
cannot unmount '/export/home/eschrock': Device busy
# zfs unmount -f tank/home/eschrock

Zum Zweck der Abwärtskompatibilität kann der Legacy-Befehl umount auch zum Aushängen von ZFS-Dateisystemen verwendet werden. Beispiel:


# umount /export/home/bob

Weitere Informationen zum Befehl zfs unmount finden Sie in der Man Page zfs(1M).

Freigeben und Sperren von ZFS-Dateisystemen

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.

Einstellen der Freigabesemantik

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/eschrock

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/bricker
# zfs create tank/home/tabriz
# zfs set sharenfs=ro tank/home/tabriz

Die Dateisysteme tank/home/bricker und tank/home/tabriz 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/tabriz unabhängig davon, welchen Wert die Eigenschaft sharenfs für tank/home hat, schreibgeschützt freigegeben.

Sperren von ZFS-Dateisystemen für den Netzwerkzugriff

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/tabriz

Dieser Befehl sperrt das Dateisystem tank/home/tabriz für den Netzwerkzugriff. Zum Sperren aller ZFS-Dateisysteme auf einem System benötigen Sie die Option - a.


# zfs unshare -a

Freigeben von ZFS-Dateisystemen für den Netzwerkzugriff

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/tabriz

Sie können auch alle ZFS-Dateisysteme auf einem System mithilfe der Option -a freigeben.


# zfs share -a

Freigabeverhalten bei Legacy-Dateisystemen

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.

Einstellen von ZFS-Kontingenten und -Reservierungen

Mit der Eigenschaft quota können Sie die Festplattenkapazität, die ein Dateisystem verwenden kann, beschränken. Darüber hinaus können Sie mit der Eigenschaft reservation für ein Dateisystem verfügbare Festplattenkapazität garantieren. Beide Eigenschaften gelten für das Dataset, für das sie gesetzt wurden, und für alle seine untergeordneten Datasets.

Wenn beispielsweise für das Dataset tank/home ein Kontingent festgelegt wurde, heißt das, dass die insgesamt von tank/home und allen seinen untergeordneten Datasets belegte Festplattenkapazität dieses Kontingent nicht überschreiten kann. Genauso wird beim Festlegen einer Reservierung für tank/home dieses Dataset und allen seinen untergeordneten Datasets dieser Speicherplatz garantiert. Die von einem Dataset und allen seinen untergeordneten Datasets belegte Festplattenkapazität wird von der Eigenschaft used verfolgt.

Die Eigenschaften refquota und refreservation stehen zur Verwaltung von Systemspeicherplatz zur Verfügung. Die von untergeordneten Objekten wie Snapshots und Klonen beanspruchte Festplattenkapazität wird dabei nicht berücksichtigt.

In diesem Solaris-Release können Sie ein user- oder group-Kontingent für die Festplattenkapazität festlegen, die von Dateien beansprucht wird, die zu einem bestimmten Benutzer oder einer bestimmten Gruppe gehören. Die Kontingenteigenschaften des Benutzers oder der Gruppe können nicht auf einem Volume, einem Dateisystem vor Dateisystem-Version 4 oder einem Pool vor Pool-Version 15 eingerichtet werden.

Beachten Sie die folgenden Faktoren, um festzustellen, welche Kontingent- und Reservierungsfunktionen sich am besten für die Verwaltung Ihrer Dateisysteme anbieten:

Weitere Informationen zum Einrichten von Kontingenten und Reservierungen finden Sie unter Setzen von Kontingenten für ZFS-Dateisystemeund Setzen von Reservierungen für ZFS-Dateisysteme.

Setzen von Kontingenten für ZFS-Dateisysteme

Kontingente für ZFS-Dateisysteme können mit den Befehlen zfs set und zfs get festgelegt und angezeigt werden. Im folgenden Beispiel wird für das Dateisystem tank/home/bonwick ein Kontingent von 10 GB gesetzt.


# zfs set quota=10G tank/home/bonwick
# zfs get quota tank/home/bonwick
NAME              PROPERTY      VALUE                      SOURCE
tank/home/bonwick quota         10.0G                      local

ZFS-Kontingente wirken sich auch auf die Ausgabe der Befehle list und df aus. Beispiel:


# zfs list
NAME                   USED  AVAIL  REFER  MOUNTPOINT
tank/home             16.5K  33.5G  8.50K  /export/home
tank/home/bonwick     15.0K  10.0G  8.50K  /export/home/bonwick
tank/home/bonwick/ws  6.50K  10.0G  8.50K  /export/home/bonwick/ws
# df -h /export/home/bonwick
Filesystem             size   used  avail capacity  Mounted on
tank/home/bonwick       10G     8K    10G     1%    /export/home/bonwick

Bitte beachten Sie, dass, obwohl für tank/home 33,5 GB Festplattenkapazität verfügbar sind, wegen des für tank/home/bonwick gesetzten Kontingents für tank/home/bonwick und tank/home/bonwick/ws nur 10 GB verfügbar sind.

Kontingente können nicht auf Werte gesetzt werden, die kleiner als der gegenwärtig vom betreffenden Dataset belegte Speicherplatz sind. Beispiel:


# zfs set quota=10K tank/home/bonwick
cannot set quota for 'tank/home/bonwick': size is less than current used or 
reserved space

Es ist möglich, refquota für ein Dataset zu setzen, um die durch das Dataset belegbare Festplattenkapazität einzuschränken. Dieser absolute Grenzwert berücksichtigt keine Festplattenkapazität, die von untergeordneten Objekten belegt wird. Beispiel:


# zfs set refquota=10g students/studentA
# zfs list
NAME                USED  AVAIL  REFER  MOUNTPOINT
profs               106K  33.2G    18K  /profs
students           57.7M  33.2G    19K  /students
students/studentA  57.5M  9.94G  57.5M  /students/studentA
# zfs snapshot students/studentA@today
# zfs list
NAME                      USED  AVAIL  REFER  MOUNTPOINT
profs                     106K  33.2G    18K  /profs
students                 57.7M  33.2G    19K  /students
students/studentA        57.5M  9.94G  57.5M  /students/studentA
students/studentA@today      0      -  57.5M  -

Sie können ein weiteres Kontingent für ein Dataset festlegen, um die Verwaltung der durch Snapshots belegten Festplattenkapazität zu erleichtern. Beispiel:


# zfs set quota=20g students/studentA
# zfs list
NAME                      USED  AVAIL  REFER  MOUNTPOINT
profs                     106K  33.2G    18K  /profs
students                 57.7M  33.2G    19K  /students
students/studentA        57.5M  9.94G  57.5M  /students/studentA
students/studentA@today      0      -  57.5M  -

In diesem Szenario kann studentA den mit „refquota“ festgelegten absoluten Grenzwert (10 GB) erreichen und selbst bei vorhandenen Snapshots wiederherzustellende Dateien entfernen.

Im obigen Beispiel wird das kleinere der beiden Kontingente (10 GB im Vergleich mit 20 GB) in der Ausgabe von zfs list angezeigt. Zum Anzeigen der Werte beider Kontingente verwenden Sie den Befehl zfs get. Beispiel:


# zfs get refquota,quota students/studentA
NAME               PROPERTY  VALUE              SOURCE
students/studentA  refquota  10G                local
students/studentA  quota     20G                local

Einrichten von Benutzer- und Gruppenkontingenten auf einem ZFS-Dateisystem

Unter Verwendung des Befehls zfs userquota oder zfs groupquota können Sie ein Benutzer- oder Gruppenkontingent wie folgt einrichten. Beispiel:


# zfs create students/compsci
# zfs set userquota@student1=10G students/compsci
# zfs create students/labstaff
# zfs set groupquota@staff=20GB students/labstaff

Zeigen Sie das aktuelle Benutzer- oder Gruppenkontingent wie folgt an:


# zfs get userquota@student1 students/compsci
NAME              PROPERTY            VALUE               SOURCE
students/compsci  userquota@student1  10G                 local
# zfs get groupquota@staff students/labstaff
NAME               PROPERTY          VALUE             SOURCE
students/labstaff  groupquota@staff  20G               local

Sie können die von allgemeinen Benutzern und Gruppen belegte Festplattenkapazität durch Abfrage der folgenden Eigenschaften anzeigen:


# zfs userspace students/compsci
TYPE        NAME      USED  QUOTA  
POSIX User  root      227M   none  
POSIX User  student1  455M    10G  
# zfs groupspace students/labstaff
TYPE         NAME   USED  QUOTA  
POSIX Group  root   217M   none  
POSIX Group  staff  217M    20G  

Um die von einzelnen Benutzern oder Gruppen belegte Festplattenkapazität zu ermitteln, fragen Sie die folgenden Eigenschaften ab:


# zfs get userused@student1 students/compsci
NAME              PROPERTY           VALUE              SOURCE
students/compsci  userused@student1  455M               local
# zfs get groupused@staff students/labstaff
NAME               PROPERTY         VALUE            SOURCE
students/labstaff  groupused@staff  217M             local

Die Eigenschaften der Benutzer- und Gruppenkontingente werden nicht über den Befehl zfs get all dataset angezeigt. Dieser führt die Eigenschaften aller anderen Dateisysteme auf.

Sie können ein Benutzer- oder Gruppenkontingent folgendermaßen entfernen:


# zfs set userquota@user1=none students/compsci
# zfs set groupquota@staff=none students/labstaff

ZFS-Benutzer- und Gruppenkontingente in ZFS-Dateisystemen besitzen folgende Merkmale:

Das Inkrafttreten von Benutzer- und Gruppenkontingenten kann einige Sekunden dauern. Die Verzögerung kann bedeuten, dass Benutzer ihr Kontingent überschreiten, bevor das System dies registriert und weitere Schreibvorgänge mit der Fehlermeldung EDQUOT zurückweist.

Mit dem Legacy-Befehl quota können Sie Benutzerkontingente in einer NFS-Umgebung überprüfen, zum Beispiel beim Einhängen eines ZFS-Dateisystems. Ohne Auswahl von Optionen zeigt der Befehl quota nur Ergebnisse, wenn das Benutzerkontingent überschritten wird. Beispiel:


# zfs set userquota@student1=10m students/compsci   
# zfs userspace students/compsci
TYPE        NAME      USED  QUOTA  
POSIX User  root      227M   none  
POSIX User  student1  455M    10M  
# quota student1
Block limit reached on /students/compsci

Wenn Sie das Benutzerkontingent zurücksetzen und die Begrenzung des Kontingents nicht länger überschritten ist, können Sie zur Überprüfung des Benutzerkontingents den Befehl quota -v verwenden. Beispiel:


# zfs set userquota@student1=10GB students/compsci 
# zfs userspace students/compsci
TYPE        NAME      USED  QUOTA  
POSIX User  root      227M   none  
POSIX User  student1  455M    10G  
# quota student1
# quota -v student1
Disk quotas for student1 (uid 201):
Filesystem     usage  quota  limit    timeleft  files  quota  limit    timeleft
/students/compsci
              466029 10485760 10485760     

Setzen von Reservierungen für ZFS-Dateisysteme

Unter einer ZFS-Reservierung versteht man eine Zuweisung von Festplattenkapazität aus dem Pool, die einem Dataset garantiert ist. Sie können keine Reservierungen vornehmen, wenn die angeforderte Festplattenkapazität im Pool nicht zur Verfügung steht. Der Gesamtbetrag aller noch ausstehenden und nicht belegten Reservierungen darf die Gesamtsumme der nicht belegten Festplattenkapazität im Pool nicht überschreiten. ZFS-Reservierungen können mit den Befehlen zfs set und zfs get festgelegt und angezeigt werden. Beispiel:


# zfs set reservation=5G tank/home/moore
# zfs get reservation tank/home/moore
NAME             PROPERTY     VALUE   SOURCE
tank/home/moore  reservation  5G      local

ZFS-Reservierungen können sich auf die Ausgabe des Befehls zfs list auswirken. Beispiel:


# zfs list
NAME                   USED  AVAIL  REFER  MOUNTPOINT
tank/home             5.00G  33.5G  8.50K  /export/home
tank/home/moore       15.0K  33.5G  8.50K  /export/home/moore

Bitte beachten Sie, dass tank/home 5 GB Festplattenkapazität belegt, obwohl tank/home und seinen untergeordneten Dateisysteme tatsächlich viel weniger als 5 GB Festplattenkapazität belegen. Der belegte Speicherplatz berücksichtigt die Reservierung für tank/home/moore. Reservierungen werden in die belegten Festplattenkapazität des übergeordneten Datasets einbezogen und auf sein Kontingent bzw. seine Reservierung (bzw. beide) angerechnet.


# zfs set quota=5G pool/filesystem
# zfs set reservation=10G pool/filesystem/user1
cannot set reservation for 'pool/filesystem/user1': size is greater than 
available space

Ein Dataset kann mehr Festplattenkapazität belegen, als für seine Reservierung vorgesehen ist, solange nicht reservierter Speicherplatz im Pool vorhanden ist und der aktuell vom Dataset belegte Speicherplatz unter seinem Kontingent liegt. Ein Dataset kann keine Festplattenkapazität belegen, die für ein anderes Dataset reserviert wurde.

Reservierungen sind nicht kumulativ. Das bedeutet, dass durch einen zweiten Aufruf von zfs set zum Setzen einer Reservierung der Speicherplatz der zweiten Reservierung nicht zum Speicherplatz der vorhandenen Reservierung addiert wird. Die zweite Reservierung ersetzt stattdessen die erste Reservierung. Beispiel:


# zfs set reservation=10G tank/home/moore
# zfs set reservation=5G tank/home/moore
# zfs get reservation tank/home/moore
NAME             PROPERTY      VALUE                      SOURCE
tank/home/moore  reservation   5.00G                      local

Durch Setzen der Reservierung refreservation können Sie einem Dataset Festplattenkapazität garantieren, in der die von Snapshots und Klonen belegte Festplattenkapazität nicht berücksichtigt ist. Diese Reservierung wird in die Berechnung der Speicherplatzkapazität für das diesem Dataset übergeordnete Dataset einbezogen und auf die Kontingente und Reservierung für das übergeordnete Dataset angerechnet. Beispiel:


# zfs set refreservation=10g profs/prof1
# zfs list
NAME                      USED  AVAIL  REFER  MOUNTPOINT
profs                    10.0G  23.2G    19K  /profs
profs/prof1                10G  33.2G    18K  /profs/prof1

Sie können außerdem für dasselbe Dataset eine Reservierung festlegen, um Speicherplatz für das Dataset und für Snapshots zu garantieren. Beispiel:


# zfs set reservation=20g profs/prof1
# zfs list
NAME                      USED  AVAIL  REFER  MOUNTPOINT
profs                    20.0G  13.2G    19K  /profs
profs/prof1                10G  33.2G    18K  /profs/prof1

Normale Reservierungen werden in die Berechnung des belegten Speicherplatzes durch das übergeordnete Dataset einbezogen.

Im obigen Beispiel wird das kleinere der beiden Kontingente (10 GB im Vergleich mit 20 GB) in der Ausgabe von zfs list angezeigt. Zum Anzeigen der Werte beider Kontingente verwenden Sie den Befehl zfs get. Beispiel:


# zfs get reservation,refreserv profs/prof1
NAME         PROPERTY        VALUE        SOURCE
profs/prof1  reservation     20G          local
profs/prof1  refreservation  10G          local

Wenn refreservation gesetzt ist, wird ein Snapshot nur zugelassen, wenn außerhalb dieser Reservierung genügend nicht reservierter Speicherplatz im Pool vorhanden ist, um die Menge der aktuell referenzierten Byte im Dataset aufzunehmen.