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
Freigeben von ZFS-Dateisystemen für den Netzwerkzugriff
Freigabeverhalten bei Legacy-Dateisystemen
Einstellen von ZFS-Kontingenten und -Reservierungen
Setzen von Kontingenten für ZFS-Dateisysteme
Einrichten von Benutzer- und Gruppenkontingenten auf einem ZFS-Dateisystem
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
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 Schnappschüssen 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:
Die Eigenschaften quota und reservation eignen sich zur Verwaltung von Festplattenkapazität, die durch Datasets und deren untergeordnete Datasets belegt ist.
Die Eigenschaften refquota und refreservation eignen sich zur Verwaltung von Festplattenkapazität, die durch Datasets belegt ist.
Das Setzen der Eigenschaft refquota oder refreservation auf einen höheren Wert als die Eigenschaft quota oder reservation hat keine Wirkung. Wenn Sie die Eigenschaft quota oder refquota setzen, schlagen Vorgänge, bei denen einer dieser Werte überschritten wird, fehl. Es ist möglich, ein Kontingent (quota) zu überschreiten, das größer ist als refquota. Wenn Schnappschussblöcke beispielsweise geändert werden, kann tatsächlich eher quota als refquota überschritten werden.
Benutzer- und Gruppenkontingente vereinfachen die Verwaltung des Festplattenspeichers bei Vorhandensein vieler Benutzerkonten, zum Beispiel in einer universitären Umgebung.
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.
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/jeffein Kontingent von 10 GB festgelegt:
# zfs set quota=10G tank/home/jeff # zfs get quota tank/home/jeff NAME PROPERTY VALUE SOURCE tank/home/jeff quota 10G local
ZFS-Kontingente wirken sich auch auf die Ausgabe der Befehle list und df aus. Beispiel:
# zfs list -r tank/home NAME USED AVAIL REFER MOUNTPOINT tank/home 1.45M 66.9G 36K /tank/home tank/home/eric 547K 66.9G 547K /tank/home/eric tank/home/jeff 322K 10.0G 291K /tank/home/jeff tank/home/jeff/ws 31K 10.0G 31K /tank/home/jeff/ws tank/home/lori 547K 66.9G 547K /tank/home/lori tank/home/mark 31K 66.9G 31K /tank/home/mark # df -h /tank/home/jeff Filesystem Size Used Avail Use% Mounted on tank/home/jeff 10G 306K 10G 1% /tank/home/jeff
Bitte beachten Sie, dass obwohl für tank/home 66,9 GB Festplattenkapazität verfügbar sind, wegen des für tank/home/jeff festgelegten Kontingents für tank/home/jeff und tank/home/jeff/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/jeff cannot set property for 'tank/home/jeff': 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. Beispielsweise wirkt sich die von Schnappschüssen beanspruchte Festplattenkapazität nicht auf das 10-GB-Kontingent von studentA aus.
# zfs set refquota=10g students/studentA # zfs list -t all -r students NAME USED AVAIL REFER MOUNTPOINT students 150M 66.8G 32K /students students/studentA 150M 9.85G 150M /students/studentA students/studentA@yesterday 0 - 150M - # zfs snapshot students/studentA@today # zfs list -t all -r students students 150M 66.8G 32K /students students/studentA 150M 9.90G 100M /students/studentA students/studentA@yesterday 50.0M - 150M - students/studentA@today 0 - 100M -
Sie können ein weiteres Kontingent für ein Dataset festlegen, um die Verwaltung der durch Schnappschüsse belegten Festplattenkapazität zu erleichtern. Beispiel:
# zfs set quota=20g students/studentA # zfs list -t all -r students NAME USED AVAIL REFER MOUNTPOINT students 150M 66.8G 32K /students students/studentA 150M 9.90G 100M /students/studentA students/studentA@yesterday 50.0M - 150M - students/studentA@today 0 - 100M -
In diesem Szenario kann studentA den mit "refquota" festgelegten absoluten Grenzwert (10 GB) erreichen und selbst bei vorhandenen Schnappschüssen 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
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@labstaff=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@labstaff students/labstaff NAME PROPERTY VALUE SOURCE students/labstaff groupquota@labstaff 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 350M none POSIX User student1 426M 10G # zfs groupspace students/labstaff TYPE NAME USED QUOTA POSIX Group labstaff 250M 20G POSIX Group root 350M none
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 550M local # zfs get groupused@labstaff students/labstaff NAME PROPERTY VALUE SOURCE students/labstaff groupused@labstaff 250 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@student1=none students/compsci # zfs set groupquota@labstaff=none students/labstaff
ZFS-Benutzer- und Gruppenkontingente in ZFS-Dateisystemen besitzen folgende Merkmale:
Ein in einem übergeordneten Dateisystem eingerichtetes Benutzer- oder Gruppenkontingent wird nicht automatisch von einem untergeordneten Dateisystem übernommen.
Allerdings wird das Benutzer- oder Gruppenkontingent angewendet, wenn ein Klon oder Schnappschuss aus einem Dateisystem mit einem Benutzer- oder Gruppenkontingent erstellt wird. Ebenso wird ein Benutzer- oder Gruppenkontingent in das Dateisystem aufgenommen, wenn mit dem Befehl zfs send ein Datenstrom erstellt wird, auch ohne Anwendung der Option -R.
Benutzer ohne Privilegien haben nur Zugriff auf ihre eigene Festplattenkapazität. Der Root-Benutzer oder ein Benutzer, dem das Privileg userused oder groupused erteilt wurde, kann auf Informationen zur Berechnung der Festplattenkapazität sämtlicher Benutzer und Gruppen zugreifen.
Die Eigenschaften userquota und groupquota können nicht auf ZFS-Volumes, auf einem Dateisystem vor Dateisystem-Version 4 oder auf einem Pool vor Pool-Version 15 eingerichtet werden.
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 350M none POSIX User student1 550M 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 350M none POSIX User student1 550M 10G # quota student1 # quota -v student1 Disk quotas for student1 (uid 102): Filesystem usage quota limit timeleft files quota limit timeleft /students/compsci 563287 10485760 10485760 - - - - -
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/bill # zfs get reservation tank/home/bill NAME PROPERTY VALUE SOURCE tank/home/bill reservation 5G local
ZFS-Reservierungen können sich auf die Ausgabe des Befehls zfs list auswirken. Beispiel:
# zfs list -r tank/home NAME USED AVAIL REFER MOUNTPOINT tank/home 5.00G 61.9G 37K /tank/home tank/home/bill 31K 66.9G 31K /tank/home/bill tank/home/jeff 337K 10.0G 306K /tank/home/jeff tank/home/lori 547K 61.9G 547K /tank/home/lori tank/home/mark 31K 61.9G 31K /tank/home/mark
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/bill. 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/bill # zfs set reservation=5G tank/home/bill # zfs get reservation tank/home/bill NAME PROPERTY VALUE SOURCE tank/home/bill reservation 5G local
Durch Setzen der Reservierung refreservation können Sie einem Dataset Festplattenkapazität garantieren, in der die von Schnappschüssen 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 Schnappschüsse 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 Schnappschuss 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.