In diesem Abschnitt sind die neuen Leistungsmerkmale des ZFS-Dateisystems zusammengefasst.
Teilung eines ZFS-Speicher-Pools mit Datenspiegelung (zpool split)
ZFS-Zugriffssteuerungslistenvererbungsmodus "Pass Through" zur Ausführungsberechtigung
Unterstützung für Installation und Booten von ZFS-Root-Dateisystemen
ZFS-Kontingente und -Reservierungen ausschließlich für Dateisystemdaten
Verbesserungen für den Austausch von ZFS-Speichergeräten bei laufendem Betrieb
Ersetzen eines ZFS-Dateisystems durch einen ZFS-Klon (zfs promote)
Oracle Solaris 10 9/10: In dieser Solaris-Version können Sie den Befehl zpool split verwenden, um einen gespiegelten Speicher-Pool zu teilen, wodurch dem gespiegelten Pool eine oder mehrere Festplatten entnommen werden, um einen weiteren identischen Pool anzulegen.
Weitere Informationen finden Sie unter Erstellen eines neuen Pools durch Teilen eines ZFS-Speicher-Pools mit Datenspiegelung.
Oracle Solaris 10 9/10: In dieser Solaris-Version ist jedem ZFS-Speicher-Pool ein Prozess (zpool-poolname ) zugeordnet. Die Teilprozesse dieses Prozesses dienen zur Verarbeitung von E/A-Vorgängen, die den Pool betreffen, wie beispielsweise Komprimierung und Prüfsummenbildung. Dieser Prozess soll Aufschluss über die CPU-Auslastung der einzelnen Speicher-Pools geben. Informationen über diesen Prozess können mithilfe der Befehle ps und prstat angezeigt werden. Diese Prozesse stehen nur in der globalen Zone zur Verfügung. Weitere Informationen finden Sie unter SDC(7).
Oracle Solaris 10 9/10: In dieser Solaris-Version wurde die Ausgabe des Befehls zpool list geändert, um bessere Informationen zur Speicherzuordnung bereitzustellen. Beispiel:
# zpool list tank NAME SIZE ALLOC FREE CAP HEALTH ALTROOT tank 136G 55.2G 80.8G 40% ONLINE - |
Die Felder USED und AVAIL wurden durch ALLOC und FREE ersetzt.
Das Feld ALLOC ermittelt den physischen Speicherplatz, der allen Datasets und internen Metadaten zugeordnet ist. Das Feld FREE ermittelt den im Pool vorhandenen nicht zugeordneten Speicherplatz.
Weitere Informationen finden Sie unter Anzeigen von Informationen zu ZFS-Speicher-Pools.
Oracle Solaris 10 9/10: Ein Speicher-Pool kann beschädigt werden, wenn die betreffenden Geräte nicht verfügbar sind, ein Stromausfall auftritt oder in einer redundanten ZFS-Konfiguration mehr Geräte ausfallen als unterstützt wird. Diese Version bietet neue Funktionen zur Wiederherstellung eines beschädigten Speicher-Pools. Wenn diese Wiederherstellungsfunktionen verwendet werden, können jedoch die letzten Transaktionen, die vor dem Ausfall des Pools stattgefunden haben, verloren gehen.
Zur Wiederherstellung eines beschädigten Pools können die Befehle zpool clear und zpool import verwendet werden. Diese Befehle unterstützen die Option -F. Wenn einer der Befehle zpool status, zpool clear oder zpool import ausgeführt wird, wird die Beschädigung eines Pools automatisch gemeldet. Diese Befehle beschreiben, wie der Pool wiederhergestellt wird.
Weitere Informationen finden Sie unter Reparieren von Schäden am gesamten ZFS-Speicher-Pool.
Oracle Solaris 10 9/10: Folgende Verbesserungen von Protokolliergeräten stehen zur Verfügung:
Die Eigenschaft logbias – Sie können diese Eigenschaft verwenden, um eine Meldung bereitzustellen, die an ZFS übermittelt wird und die synchrone Verarbeitung von Anforderungen für ein bestimmtes Dataset betrifft. Wenn logbias auf latency gesetzt wird, verwendet ZFS die separaten Protokolliergeräte des Pools (sofern solche Geräte vorhanden sind), um die Anforderungen mit geringer Latenz zu verarbeiten. Wenn logbias auf throughput gesetzt wird, verwendet ZFS die separaten Protokolliergeräte des Pools nicht. Stattdessen optimiert ZFS die synchronen Vorgänge für den allgemeinen Pool-Durchsatz und die effiziente Nutzung von Ressourcen. Der Standardwert ist latency. Der Standardwert wird für die meisten Konfigurationen empfohlen. Durch die Verwendung des Werts logbias=throughput kann die Leistung zum Schreiben von Datenbankdateien verbessert werden.
Entfernen von Protokolliergeräten – Sie können jetzt ein Protokolliergerät aus einem ZFS-Speicher-Pool entfernen, indem Sie den Befehl zpool remove verwenden. Ein einzelnes Protokolliergerät kann entfernt werden, indem der Name des Geräts angegeben wird. Ein gespiegeltes Protokolliergerät kann entfernt werden, indem der Spiegel der obersten Hierarchieebene für das Protokoll angegeben wird. Wenn ein separates Protokolliergerät aus dem System entfernt wird, werden ZIL-Transaktionsdaten in den Haupt-Pool geschrieben.
Redundante virtuelle Geräte der obersten Hierarchieebene werden jetzt durch einen nummerischen Bezeichner identifiziert. In einem gespiegelten Speicher-Pool mit zwei Festplatten beispielsweise ist mirror-0 das virtuelle Gerät der obersten Hierarchieebene.
Weitere Informationen finden Sie unter Beispiel 4–3.
Release Solaris 10 9/10: In dieser Solaris-Version kann eine redundante RAID-Z-Konfigurationen jetzt einfache, doppelte oder dreifache Parität besitzen. Das bedeutet, dass in einem System ein, zwei oder drei Geräteausfälle ohne Datenverlust möglich sind. Eine RAID-Z-Konfiguration mit doppelter Parität kann mithilfe des Schlüsselworts raidz3 angegeben werden. Weitere Informationen finden Sie unter Erstellen eines RAID-Z-Speicher-Pools.
Oracle Solaris 10 9/10: Wenn Sie verschiedene automatische Snapshot-Richtlinien implementieren und dadurch ältere Snapshots durch zfs receive gelöscht werden, weil sie nicht mehr auf der Sendeseite vorhanden sind, können Sie die Snapshot-Aufbewahrungsfunktion dieser Solaris-Version verwenden.
Durch die Aufbewahrung eines Snapshots wird verhindert, dass er gelöscht wird. Außerdem ermöglicht diese Funktion das Löschen eines Snapshots zusammen mit Klonen in Abhängigkeit von der Entfernung des letzten Klons mithilfe des Befehls zfs destroy -d.
Sie können einen Snapshot oder eine Gruppe von Snapshots aufbewahren. Anhand der folgenden Syntax wird beispielsweise ein Aufbewahrungs-Tag, keep, für tank/home/cindys/snap@1 gesetzt.
# zfs hold keep tank/home/cindys@snap1 |
Weitere Informationen finden Sie unter Aufbewahren von ZFS-Snapshots.
Oracle Solaris 10 9/10: In dieser Solaris-Version wird ein Systemereignis (sysevent) bereitgestellt, wenn ein Gerät erweitert wird. ZFS wurde verbessert, um diese Ereignisse zu erkennen, und passt den Pool basierend auf der neuen Größe der LU-Nummer an, wobei die Einstellung der Eigenschaft autoexpand berücksichtigt wird. Sie können die Pool-Eigenschaft autoexpand verwenden, um die automatische Pool-Erweiterung zu aktivieren oder zu deaktivieren, wenn ein dynamisches LU-Nummer-Erweiterungsereignis empfangen wird.
Mithilfe dieser Funktion können Sie eine LU-Nummer erweitern, wodurch der Pool auf den erweiterten Bereich zugreifen kann, ohne einen Pool zu exportieren und zu importieren oder das System neu zu starten.
Die automatische Erweiterung der LU-Nummer ist beispielsweise für den Pool tank aktiviert.
# zpool set autoexpand=on tank |
Sie können auch einen Pool erstellen, dessen Eigenschaft autoexpand aktiviert ist.
# zpool create -o autoexpand=on tank c1t13d0 |
Die Eigenschaft autoexpand ist standardmäßig deaktiviert. Sie können entscheiden, ob die LU-Nummer erweitert werden soll oder nicht.
Eine LU-Nummer kann außerdem mithilfe des Befehls zpool online - e erweitert werden. Beispiel:
# zpool online -e tank c1t6d0 |
Außerdem können Sie, nachdem eine LU-Nummer eingebunden oder verfügbar gemacht wurde, die Eigenschaft autoexpand zurücksetzen, indem Sie die Funktion zpool replace verwenden. Der folgende Pool wird beispielsweise mit einer 8-GB-Festplatte (c0t0d0) erstellt. Die 8-GB-Festplatte wird durch eine 16-GB-Festplatte (c1t13d0) ersetzt, aber die Pool-Kapazität wird erst dann erweitert, wenn die Eigenschaft autoexpand aktiviert ist.
# zpool create pool c0t0d0 # zpool list NAME SIZE ALLOC FREE CAP HEALTH ALTROOT pool 8.44G 76.5K 8.44G 0% ONLINE - # zpool replace pool c0t0d0 c1t13d0 # zpool list NAME SIZE ALLOC FREE CAP HEALTH ALTROOT pool 8.44G 91.5K 8.44G 0% ONLINE - # zpool set autoexpand=on pool # zpool list NAME SIZE ALLOC FREE CAP HEALTH ALTROOT pool 16.8G 91.5K 16.8G 0% ONLINE - |
Eine weitere Möglichkeit im obigen Beispiel, die LU-Nummer zu erweitern ohne die Eigenschaft autoexpand zu aktivieren, ist die Verwendung des Befehls zpool online - e. Der Befehl kann auch dann ausgeführt werden, wenn das Gerät bereits in Betrieb genommen ist. Beispiel:
# zpool create tank c0t0d0 # zpool list tank NAME SIZE ALLOC FREE CAP HEALTH ALTROOT tank 8.44G 76.5K 8.44G 0% ONLINE - # zpool replace tank c0t0d0 c1t13d0 # zpool list tank NAME SIZE ALLOC FREE CAP HEALTH ALTROOT tank 8.44G 91.5K 8.44G 0% ONLINE - # zpool online -e tank c1t13d0 # zpool list tank NAME SIZE ALLOC FREE CAP HEALTH ALTROOT tank 16.8G 90K 16.8G 0% ONLINE - |
Weitere Verbesserungen für den Austausch von Speichergeräten in dieser Version sind folgende:
In früheren Versionen war ZFS nicht fähig, eine vorhandene Festplatte durch eine andere Festplatte zu ersetzen oder eine Festplatte einzubinden, wenn die Ersatzfestplatte eine geringfügig unterschiedliche Kapazität hatte. In dieser Version können Sie eine vorhandene Festplatte durch eine andere Festplatte ersetzen oder eine neue Festplatte mit derselben Kapazität einbinden, unter der Voraussetzung, dass der Pool nicht bereits voll ist.
In dieser Version müssen Sie das System nicht neu starten oder einen Pool exportieren und importieren, um eine LU-Nummer zu erweitern. Wie oben beschrieben können Sie die Eigenschaft autoexpand aktivieren oder den Befehl zpool online - e verwenden, um eine LU-Nummer auf die volle Kapazität zu erweitern.
Weitere Informationen zum Austauschen von Geräten finden Sie unter Austauschen von Geräten in einem Speicher-Pool.
Solaris 10 10/09: In dieser Solaris-Version haben Sie die Möglichkeit, ein JumpStart-Profil zur Identifizierung eines Flash-Archivs eines ZFS-Root-Pools einzurichten. Weitere Informationen finden Sie unter Installieren eines ZFS-Root-Dateisystems (Oracle Solaris Flash-Archiv-Installation).
Solaris 10 10/09: In früheren Solaris-Versionen konnten Kontingente und Reservierungen auf ZFS-Dateisysteme angewendet werden, um Festplattenkapazität zu verwalten und zu reservieren.
In dieser Solaris-Version können Sie ein Kontingent für die Festplattenkapazität einrichten, die von den Dateien eines bestimmten Benutzers oder einer bestimmten Gruppe belegt wird. Das Einrichten von Benutzer- oder Gruppenkontingenten ist in einer Umgebung mit vielen Benutzern oder Gruppen sinnvoll.
Sie können eine Benutzerkontingent mithilfe der Eigenschaft zfs userquota einrichten. Um eine Gruppenkontingent einzurichten, verwenden Sie die Eigenschaft zfs groupquota. Beispiel:
# zfs set userquota@user1=5G tank/data # zfs set groupquota@staff=10G tank/staff/admins |
Sie können die aktuelle Einstellung eines Benutzer- oder Gruppenkontingents wie folgt anzeigen:
# zfs get userquota@user1 tank/data NAME PROPERTY VALUE SOURCE tank/data userquota@user1 5G local # zfs get groupquota@staff tank/staff/admins NAME PROPERTY VALUE SOURCE tank/staff/admins groupquota@staff 10G local |
Stellen Sie allgemeine Informationen über ein Kontingent wie folgt ein:
# zfs userspace tank/data TYPE NAME USED QUOTA POSIX User root 3K none POSIX User user1 0 5G |
# zfs groupspace tank/staff/admins TYPE NAME USED QUOTA POSIX Group root 3K none POSIX Group staff 0 10G |
Sie können die von einem einzelnen Benutzer belegte Festplattenkapazität mithilfe der Eigenschaften userused@user anzeigen. Die von einer Gruppe belegte Festplattenkapazität kann mithilfe der Eigenschaft groupused@ group angezeigt werden. Beispiel:
# zfs get userused@user1 tank/staff NAME PROPERTY VALUE SOURCE tank/staff userused@user1 213M local # zfs get groupused@staff tank/staff NAME PROPERTY VALUE SOURCE tank/staff groupused@staff 213M local |
Weitere Informationen zum Einrichten von Benutzerkontingenten finden Sie unter Einstellen von ZFS-Kontingenten und -Reservierungen.
Solaris 10 10/09: In früheren Solaris-Versionen konnte die Zugriffssteuerungslistenvererbung angewendet werden, sodass alle Dateien mit den Zugriffsrechten 0664 oder 0666 erstellt wurden. Wenn Sie die Ausführungsberechtigung aus dem Dateierstellungsmodus optional in die vererbte Zugriffssteuerungsliste einschließen möchten, können Sie in dieser Version den Modus aclinherit verwenden, um die Ausführungsberechtigung auf die vererbte Zugriffssteuerungsliste zu übertragen.
Wenn aclinherit=passthrough-x für ein ZFS-Dataset aktiviert ist, können Sie die Ausführungsberechtigung für eine Ausgabedatei einschließen, die mit dem Compiler-Tool cc oder gcc erstellt wurde. Beinhaltet die vererbbare Zugriffssteuerungsliste die Ausführungsberechtigung nicht, so ist die Ausgabe des Compilers erst dann ausführbar, wenn Sie mit dem Befehl chmod die Berechtigungen der Datei ändern.
Weitere Informationen finden Sie unter Beispiel 8–12.
Solaris 10 10/09 und Oracle Solaris 10 9/10: Diese Versionen enthalten folgende Verbesserungen des ZFS-Dateisystems.
Verbesserung der Eigenschaften von ZFS-Snapshot-Datenströmen – Sie können eine empfangene Eigenschaft setzen, die sich von ihrer lokalen Einstellung unterscheidet. Sie empfangen beispielsweise einen Datenstrom, dessen Komprimierungseigenschaft deaktiviert ist, möchten aber, dass die Komprimierung im Dateisystem, das die Daten empfängt, aktiviert ist. Der empfangene Datenstrom weist den empfangenen Komprimierungswert off und den lokalen Komprimierungswert on auf. Da der lokale Wert den empfangenen Wert übersteuert, müssen Sie sich nicht darum kümmern, dass die Einstellung auf der Sendeseite den Wert auf der Empfangsseite ersetzt. Der Befehl zfs get zeigt den effektiven Wert der Komprimierungseigenschaft in der Spalte VALUE.
Es folgen neue ZFS-Befehlsoptionen und Eigenschaften, die gesendete und lokale Eigenschaftswerte unterstützen:
Verwenden Sie zfs inherit -S, um einen lokalen Eigenschaftswert auf den empfangenen Wert (sofern vorhanden) zurückzusetzen. Wenn eine Eigenschaft keinen empfangenen Wert aufweist, ist das Verhalten des Befehls zfs inherit - S dasselbe wie das des Befehls zfs inherit ohne die Option -S. Wenn die Eigenschaft einen empfangenen Wert aufweist, maskiert der Befehl zfs inherit den empfangenen Wert mit dem vererbten Wert, bis dieser durch Ausgabe des Befehls zfs inherit -S auf den empfangenen Wert zurückgesetzt wird.
Sie können den Befehl zfs get -o verwenden, um die neue nicht standardmäßige Spalte RECEIVED einzubeziehen. Sie können aber auch den Befehl zfs get -o all verwenden, um alle Spalten einschließlich RECEIVED einzubeziehen.
Sie können die Option zfs send -p verwenden, um Eigenschaften in zu sendenden Datenstrom ohne die Option -R einzubeziehen.
Außerdem können Sie die Option zfs send -e verwenden, um mithilfe des letzten Elements des gesendeten Snapshot-Namens den Namen des neuen Snapshots festzulegen. Im folgenden Beispiel wird der Snapshot poola/bee/cee@1 an das Dateisystem poold/eee gesendet, und nur das letzte Element (cee@1) des Snapshot-Namens wird verwendet, um das Dateisystem und den Snapshot zu erstellen.
# zfs list -rt all poola NAME USED AVAIL REFER MOUNTPOINT poola 134K 134G 23K /poola poola/bee 44K 134G 23K /poola/bee poola/bee/cee 21K 134G 21K /poola/bee/cee poola/bee/cee@1 0 - 21K - # zfs send -R poola/bee/cee@1 | zfs receive -e poold/eee # zfs list -rt all poold NAME USED AVAIL REFER MOUNTPOINT poold 134K 134G 23K /poold poold/eee 44K 134G 23K /poold/eee poold/eee/cee 21K 134G 21K /poold/eee/cee poold/eee/cee@1 0 - 21K - |
Einstellung der Eigenschaften von ZFS-Dateisystemen zum Zeitpunkt der Erstellung eines Pools – Sie können die Eigenschaften des ZFS-Dateisystems bei der Erstellung eines Speicher-Pool einstellen. Im folgenden Beispiel ist die Komprimierung auf dem ZFS-Dateisystem, das bei Erstellung des Pools eingerichtet wird, aktiviert:
# zpool create -O compression=on pool mirror c0t1d0 c0t2d0 |
Einstellung von Cache-Eigenschaften für ein ZFS-Dateisystem – Zwei neue Eigenschaften von ZFS-Dateisystemen werden zur Verfügung gestellt, mit denen Sie kontrollieren können, was im primären Cache (ARC) und im sekundären Cache (L2ARC) gespeichert wird. Die Cache-Eigenschaften sind folgendermaßen eingestellt:
primarycache – Kontrolliert, was im ARC gespeichert wird.
secondarycache – Kontrolliert, was im L2ARC gespeichert wird.
Mögliche Werte für beide Eigenschaften – 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 im Cache gespeichert. Die Standardeinstellung ist all.
Sie können diese Eigenschaften für ein bereits vorhandenes Dateisystem oder bei der Erstellung eines Dateisystems einstellen. Beispiel:
# zfs set primarycache=metadata tank/datab # zfs create -o primarycache=metadata tank/newdatab |
Sobald diese Eigenschaften für bereits vorhandene Dateisysteme eingestellt werden, werden nur neue E/A-Vorgänge auf der Basis des Werts dieser Eigenschaften im Cache gespeichert.
Bei einigen Datenbank-Umgebungen kann es von Vorteil sein, Benutzerdaten nicht im Cache zu speichern. Sie müssen selbst bestimmen, ob das Einstellen von Cache-Eigenschaften für Ihre Umgebung sinnvoll ist.
Anzeigen von Eigenschaften zur Berechnung von Festplattenkapazität – Mit neuen schreibgeschützten Dateisystem-Eigenschaften können Sie die Festplattenkapazitätsbelegung für Klone, Dateisysteme, Volumes und Snapshots bestimmen. Folgende Eigenschaften stehen zur Verfügung:
usedbychildren – Gibt Festplattenkapazität an, 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 lautet usedchild
usedbydataset – Gibt Festplattenkapazität an, die vom Dataset selbst beansprucht wird und die beim Löschen des Datasets und vorherigem Löschen aller Snapshots sowie Entfernen aller Reservierungen frei werden würde. Die Abkürzung für die Eigenschaft lautet usededds
usedbyrefreservation – Gibt die von einem refreservation-Set dieses Datasets beanspruchte Festplattenkapazität an, die beim Entfernen der Reservierung frei werden würde. Die Abkürzung für die Eigenschaft lautet usedrefreserv
usedbysnapshots – Gibt Festplattenkapazität an, die von Snapshots dieses Datasets beansprucht wird und die beim Löschen dieser Snapshots frei werden würde. Beachten Sie, dass es sich dabei nicht um die Summe der used-Eigenschaften der Snapshots handelt, da Festplattenkapazität von mehreren Snapshots gemeinsam genutzt werden kann. Die Abkürzung für die Eigenschaft lautet usedsnap
Diese neuen Eigenschaften teilen den Wert der used Eigenschaft in die verschiedenen Elemente auf, die Festplattenkapazität beanspruchen. Genauer betrachtet wird der Wert der used Eigenschaft folgendermaßen aufgeteilt:
used property = usedbychildren + usedbydataset + usedbyrefreservation + usedbysnapshots |
Sie können diese Eigenschaften mit dem Befehl zfs list - o space genauer betrachten. Beispiel:
$ zfs list -o space NAME AVAIL USED USEDSNAP USEDDS USEDREFRESERV USEDCHILD rpool 25.4G 7.79G 0 64K 0 7.79G rpool/ROOT 25.4G 6.29G 0 18K 0 6.29G rpool/ROOT/snv_98 25.4G 6.29G 0 6.29G 0 0 rpool/dump 25.4G 1.00G 0 1.00G 0 0 rpool/export 25.4G 38K 0 20K 0 18K rpool/export/home 25.4G 18K 0 18K 0 0 rpool/swap 25.8G 512M 0 111M 401M 0 |
Der obige Befehl entspricht dem Befehl zfs list - o name,avail,used,usedsnap,usedds,usedrefreserv,usedchild -t filesystem,volume.
Snapshots auflisten– Die Pool-Eigenschaft listsnapshots steuert, ob Snapshot-Informationen mit dem Befehl zfs list angezeigt werden. Der Standardwert ist on, Snapshot-Informationen werden also standardmäßig angezeigt.
Wenn in Ihrem System viele ZFS-Snapshots vorhanden sind und Sie verhindern möchten, dass Snapshot-Informationen mithilfe des Befehls zfs list angezeigt werden, deaktivieren Sie die Eigenschaft listsnapshots wie folgt:
# zpool get listsnapshots pool NAME PROPERTY VALUE SOURCE pool listsnapshots on default # zpool set listsnaps=off pool |
Wenn Sie die Eigenschaft listsnapshots deaktivieren, können Sie den Befehl zfs list -t snapshots verwenden, um Snapshot-Informationen anzuzeigen. Beispiel:
# zfs list -t snapshot NAME USED AVAIL REFER MOUNTPOINT pool/home@today 16K - 22K - pool/home/user1@today 0 - 18K - pool/home/user2@today 0 - 18K - pool/home/user3@today 0 - 18K - |
Solaris 10 10/09: In dieser Version identifiziert ZFS Intent-Protokoll-Fehler durch den Befehl zpool status. Diese Fehler werden auch von der Fault Management Architecture (FMA) gemeldet. Ein Intent-Protokoll-Fehler kann sowohl mit ZFS als auch mit FMA behoben werden.
Wenn das System beispielsweise plötzlich herunterfährt, bevor synchrone Schreibvorgänge in einem Pool mit separatem Protokolliergerät abgeschlossen werden können, werden Meldungen wie die folgenden angezeigt:
# zpool status -x pool: pool state: FAULTED status: One or more of the intent logs could not be read. Waiting for adminstrator intervention to fix the faulted pool. action: Either restore the affected device(s) and run 'zpool online', or ignore the intent log records by running 'zpool clear'. scrub: none requested config: NAME STATE READ WRITE CKSUM pool FAULTED 0 0 0 bad intent log mirror ONLINE 0 0 0 c0t1d0 ONLINE 0 0 0 c0t4d0 ONLINE 0 0 0 logs FAULTED 0 0 0 bad intent log c0t5d0 UNAVAIL 0 0 0 cannot open |
Nach einem Ausfall des Protokolliergeräts können Sie den Normalbetrieb folgendermaßen wiederherstellen:
Ersetzen Sie das Protokolliergerät oder stellen Sie es wieder her. In diesem Beispiel handelt es sich um das Protokolliergerät c0t5d0.
Nehmen Sie das Protokolliergerät wieder in Betrieb.
# zpool online pool c0t5d0 |
Setzen Sie den Fehlerzustand "Protokolliergerät fehlgeschlagen" zurück.
# zpool clear pool |
Wenn Sie den Normalbetrieb wiederherstellen möchten, ohne das Protokolliergerät zu ersetzen, können Sie den Fehler mit dem Befehl zpool clear löschen. In diesem Szenario läuft der Pool in eingeschränktem Modus, und die Protokolleinträge werden in den Haupt-Pool geschrieben, bis das separate Protokolliergerät ersetzt wurde.
Verwenden Sie gespiegelte Protokolliergeräte, um den Ausfall von Protokolliergeräten zu vermeiden.
Solaris 10 10/09: In dieser Version können Sie Pools erstellen und Cache-Geräte angeben, die zur Speicherung von Speicher-Pool-Daten im Cache dienen.
Cache-Speicher·bietet zwischen Hauptspeicher und Festplatte eine zusätzliche Schicht zur Datenspeicherung. Cache-Geräte bieten die größte Leistungsverbesserung für die Direktspeicherung von Daten mit vorwiegend statischem Inhalt.
Beim Erstellen eines Speicher-Pools können eines oder mehrere Cache-Speichergeräte angegeben werden. Beispiel:
# zpool create pool mirror c0t2d0 c0t4d0 cache c0t0d0 # zpool status pool pool: pool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 mirror ONLINE 0 0 0 c0t2d0 ONLINE 0 0 0 c0t4d0 ONLINE 0 0 0 cache c0t0d0 ONLINE 0 0 0 errors: No known data errors |
Nach dem Erstellen von Cache-Speichergeräten werden diese nach und nach mit Daten aus dem Hauptspeicher gefüllt. Je nach Größe eines definierten Cache-Speichergeräts kann es bis zu über eine Stunde lang dauern, bis das Gerät voll ist. Die Kapazität und Lesevorgänge können mithilfe des Befehls zpool iostat wie folgt überwacht werden:
# zpool iostat -v pool 5 |
Nach der Erstellung eines Pools können Cache-Geräte dem Pool hinzugefügt oder aus dem Pool entfernt werden.
Weitere Informationen finden Sie unter Erstellen eines ZFS-Speicher-Pools mit Cache-Geräten und Beispiel 4–4.
Solaris 10 5/09: Diese Version bietet eine erweiterte Unterstützung für das Migrieren von Zonen in einer ZFS-Umgebung mit Oracle Solaris Live Upgrade. Weitere Informationen finden Sie unter Verwenden des Oracle Solaris Live Upgrade zum Migrieren oder Aktualisieren eines Systems mit Zonen (ab Solaris 10 5/09).
Die Solaris 10 5/09-Versionshinweise enthalten eine Liste der bekannten Probleme mit diesem Release.
Solaris 10 10/08: Mit dieser Solaris-Version können ZFS-Root-Dateisysteme installiert und gebootet werden. Das Installieren eines ZFS-Root-Dateisystems ist sowohl mit der Erstinstallationsoption als auch mit der JumpStart-Funktion möglich. Sie können aber auch Oracle Solaris Live Upgrade verwenden, um ein UFS-Root-Dateisystem auf ein ZFS-Root-Dateisystem zu migrieren. Außerdem steht ZFS-Unterstützung für Swap- und Dump-Geräte zur Verfügung. Weitere Informationen finden Sie in Kapitel 5Installieren und Booten eines Oracle Solaris ZFS-Root-Dateisystems.
Eine Liste der bekannten Probleme mit dieser Version finden Sie unter:
http://hub.opensolaris.org/bin/view/Community+Group+zfs/boot
Ziehen Sie auch die Versionshinweise für Solaris 10 10/08 heran.
Solaris 10 10/08: Diese Version bietet die Möglichkeit, ein Dataset wiederherzustellen, ohne es zuvor auszuhängen. Das bedeutet, dass die Option zfs rollback -f zum Erzwingen des Aushängens nicht mehr gebraucht wird. Die Option -f wird nicht mehr unterstützt und wird bei Angabe ignoriert.
Solaris 10 10/08: Diese Version bietet die folgenden Verbesserungen des Befehls zfs send. Mit diesem Befehl können Sie folgende Aufgaben ausführen:
Senden aller inkrementellen Datenströme von einem Snapshot zu einem kumulativen Snapshot. Beispiel:
# zfs list NAME USED AVAIL REFER MOUNTPOINT pool 428K 16.5G 20K /pool pool/fs 71K 16.5G 21K /pool/fs pool/fs@snapA 16K - 18.5K - pool/fs@snapB 17K - 20K - pool/fs@snapC 17K - 20.5K - pool/fs@snapD 0 - 21K - # zfs send -I pool/fs@snapA pool/fs@snapD > /snaps/fs@combo |
Mit dieser Syntax werden alle inkrementellen Snapshots zwischen fs@snapA und fs@snapD nach fs@combo gesendet.
Senden eines inkrementellen Datenstroms vom ursprünglichen Snapshot, um einen Klon zu erstellen. Der ursprüngliche Snapshot muss auf der Empfangsseite bereits vorhanden sein, damit der inkrementelle Datenstrom angenommen werden kann. Beispiel:
# zfs send -I pool/fs@snap1 pool/clone@snapA > /snaps/fsclonesnap-I . . # zfs receive -F pool/clone < /snaps/fsclonesnap-I |
Senden eines Replikationsstreams aller abhängigen Dateisysteme zu den benannten Snapshots. Nach dem Empfang werden alle Eigenschaften, Snapshots, abhängigen Dateisysteme und Klone beibehalten. Beispiel:
# zfs send -R pool/fs@snap > snaps/fs-R |
Ein ausführlicheres Beispiel finden Sie in Beispiel 7–1.
Senden eines inkrementellen Replikationsstreams. Beispiel:
# zfs send -R -[iI] @snapA pool/fs@snapD |
Ein ausführlicheres Beispiel finden Sie in Beispiel 7–1.
Weitere Informationen finden Sie unter Senden und Empfangen komplexer ZFS-Snapshot-Datenströme.
Solaris 10 10/08: Zusätzlich zu den vorhandenen ZFS-Funktionen für Kontingente und Reservierungen enthält diese Version auch Dataset-Kontingente und -Reservierungen. Diese Kontingente und Reservierungen berücksichtigen bei der Berechnung von Festplattenkapazität keine untergeordneten Objekte wie z. B. Snapshots oder Klone.
Die Eigenschaft refquota erzwingt einen absoluten Grenzwert der Festplattenkapazität, die von einem Dataset belegt werden kann. Dieser absolute Grenzwert berücksichtigt jedoch nicht die Festplattenkapazität, die von untergeordneten Objekten wie z. B. Snapshots oder Klonen belegt wird.
Die Eigenschaft refreservation legt die für ein Dataset minimal garantierte Festplattenkapazität fest (Festplattenkapazität für untergeordnete Objekte wird nicht berücksichtigt).
Sie können beispielsweise mit refquota einen Grenzwert von 10 GB für studentA setzen, um einen absoluten Grenzwert von 10 GB für referenzierte Festplattenkapazität festzulegen. Zum Erreichen einer zusätzlichen Flexibilität können Sie ein Kontingent von 20 GB festlegen, mit dessen Hilfe Sie die Snapshots von studentA verwalten können.
# zfs set refquota=10g tank/studentA # zfs set quota=20g tank/studentA |
Weitere Informationen finden Sie unter Einstellen von ZFS-Kontingenten und -Reservierungen.
Solaris 10 10/08: Die Eigenschaften von ZFS-Speicher-Pools wurden mit einer früheren Version eingeführt. Diese Version bietet zwei Eigenschaften: cachefile und failmode.
Im Folgenden werden die neuen Speicher-Pool-Eigenschaften dieser Version beschrieben:
Die Eigenschaft cachefile – Mit dieser Eigenschaft wird bestimmt, wo Pool-Konfigurationsinformationen im Cache gespeichert werden. Alle Pools im Cache werden beim Booten des Systems automatisch importiert. Installations- und Cluster-Umgebungen können jedoch erfordern, dass diese Informationen an anderer Stelle im Cache gespeichert werden, sodass Pools nicht automatisch importiert werden.
Sie können diese Eigenschaft so einstellen, dass Poolkonfigurationen an einer anderen Stelle im Cache-Speicher abgelegt werden und später mithilfe des Befehls zpool import -c importiert werden können. Für die meisten ZFS-Konfigurationen wird diese Eigenschaft nicht verwendet.
Die Eigenschaft cachefile ist nicht beständig und wird nicht auf Festplatte gespeichert. Diese Eigenschaft löst die Eigenschaft temporary ab, die in früheren Solaris-Versionen anzeigte, dass Poolinformationen nicht im Cache gespeichert werden sollten.
Die Eigenschaft failmode – Mit dieser Eigenschaft wird festgelegt, wie sich das System im Falle eines äußerst schwerwiegenden Poolausfalls verhalten soll, der auf Verlust der Gerätekonnektivität oder den gleichzeitigen Ausfall aller Speichergeräte im Pool zurückzuführen ist. Die Eigenschaft failmode kann auf die Werte wait, continue oder panic gesetzt werden. Der Standardwert ist wait. Das bedeutet, dass Sie das ausgefallene Gerät neu in den Pool integrieren oder auswechseln und den Fehler danach mit dem Befehl zpool clear löschen müssen.
Die Eigenschaft failmode wird wie andere einstellbare ZFS-Eigenschaften auch gesetzt. Dies kann vor oder nach dem Erstellen eines Pools geschehen. Beispiel:
# zpool set failmode=continue tank # zpool get failmode tank NAME PROPERTY VALUE SOURCE tank failmode continue local |
# zpool create -o failmode=continue users mirror c0t1d0 c1t1d0 |
Eine Beschreibung dieser Eigenschaften können Sie Tabelle 4–1 entnehmen.
Solaris 10 10/08: Der Befehl zpool history wurde um die folgenden neuen Leistungsmerkmale erweitert:
Es werden jetzt Informationen zu Ereignissen im ZFS-Dateisystem angezeigt. Beispiel:
# zpool history History for 'rpool': 2010-06-23.09:30:12 zpool create -f -o failmode=continue -R /a -m legacy -o cachefile=/tmp/root/etc/zfs/zpool.cache rpool c1t0d0s0 2010-06-23.09:30:13 zfs set canmount=noauto rpool 2010-06-23.09:30:13 zfs set mountpoint=/rpool rpool 2010-06-23.09:30:13 zfs create -o mountpoint=legacy rpool/ROOT 2010-06-23.09:30:14 zfs create -b 8192 -V 2048m rpool/swap 2010-06-23.09:30:14 zfs create -b 131072 -V 1024m rpool/dump 2010-06-23.09:30:15 zfs create -o canmount=noauto rpool/ROOT/zfsBE 2010-06-23.09:30:16 zpool set bootfs=rpool/ROOT/zfsBE rpool 2010-06-23.09:30:16 zfs set mountpoint=/ rpool/ROOT/zfsBE 2010-06-23.09:30:16 zfs set canmount=on rpool 2010-06-23.09:30:16 zfs create -o mountpoint=/export rpool/export 2010-06-23.09:30:17 zfs create rpool/export/home |
Die Option -l kann verwendet werden, um ein langes Format anzuzeigen. Dieses Format enthält den Benutzernamen, den Hostnamen und die Zone, in der der Vorgang ausgeführt wurde. Beispiel:
# zpool history -l rpool History for 'tank': 2010-06-24.13:07:58 zpool create tank mirror c2t2d0 c2t5d0 [user root on neo:global] 2010-06-24.13:08:23 zpool scrub tank [user root on neo:global] 2010-06-24.13:38:42 zpool clear tank [user root on neo:global] 2010-06-29.11:44:18 zfs create tank/home [user root on neo:global] 2010-06-29.13:28:51 zpool clear tank c2t5d0 [user root on neo:global] 2010-06-30.14:07:40 zpool add tank spare c2t1d0 [user root on neo:global |
Die Option -i kann zum Anzeigen interner Ereignisinformationen verwendet werden, die bei der Diagnose behilflich sein können. Beispiel:
# zpool history -i tank History for 'tank': 2010-06-24.13:07:58 zpool create tank mirror c2t2d0 c2t5d0 2010-06-24.13:08:23 [internal pool scrub txg:6] func=1 mintxg=0 maxtxg=6 2010-06-24.13:08:23 [internal pool create txg:6] pool spa 22; zfs spa 22; zpl 4; uts neo 5.10 Generic_142909-13 sun4u 2010-06-24.13:08:23 [internal pool scrub done txg:6] complete=1 2010-06-24.13:08:23 zpool scrub tank 2010-06-24.13:38:42 zpool clear tank 2010-06-24.13:38:42 [internal pool scrub txg:69] func=1 mintxg=3 maxtxg=8 2010-06-24.13:38:42 [internal pool scrub done txg:69] complete=1 2010-06-29.11:44:18 [internal create txg:14241] dataset = 34 2010-06-29.11:44:18 zfs create tank/home 2010-06-29.13:28:51 zpool clear tank c2t5d0 2010-06-30.14:07:40 zpool add tank spare c2t1d0 |
Weitere Informationen zur Verwendung des Befehls zpool history entnehmen Sie bitte dem Abschnitt Beheben von Problemen mit ZFS.
Solaris 10 10/08: Diese Version bietet den Befehl zfs upgrade, mit dem vorhandene Dateisysteme aktualisiert werden können, um neue Verbesserungen des ZFS-Dateisystems zu nutzen. ZFS-Speicher-Pools besitzen eine ähnliche Upgrade-Funktion, um vorhandene Speicher-Pools um neue Funktionalität zu erweitern.
Beispiel:
# zfs upgrade This system is currently running ZFS filesystem version 3. All filesystems are formatted with the current version. |
Auf aktualisierte Dateisysteme und Datenströme, die aus diesen aktualisierten Dateisystemen mithilfe des Befehls zfs send erstellt wurden, kann nicht auf Systemen zugegriffen werden, auf denen ältere Softwareversion laufen.
Solaris 10 10/08: In dieser Version können Benutzern ohne Zugriffsrechte genau definierte Zugriffsrechte für die Durchführung von ZFS-Administrationsaufgaben gewährt werden.
Zum Gewähren und Verweigern von Zugriffsrechten dienen die Befehle zfs allow und zfs unallow.
Mit der Pool-Eigenschaft delegation kann die delegierte Administration modifiziert werden. Beispiel:
# zpool get delegation users NAME PROPERTY VALUE SOURCE users delegation on default # zpool set delegation=off users # zpool get delegation users NAME PROPERTY VALUE SOURCE users delegation off local |
Standardmäßig ist die Eigenschaft delegation aktiviert.
Weitere Informationen entnehmen Sie bitte Kapitel 9Delegierte ZFS-Administration und zfs(1M).
Solaris 10 10/08: Das Protokoll ZIL (ZFS Intent Log) erfüllt die POSIX-Anforderungen für synchrone Transaktionen. So setzen Datenbanken bei der Rückkehr von Systemaufrufen beispielsweise oft voraus, dass Transaktionen auf stabilen Speichergeräten stattfinden. NFS und andere Anwendungen können zur Gewährleistung der Datenstabilität ebenfalls fsync() verwenden. Standardmäßig wird das ZIL aus Blöcken innerhalb des Hauptspeicherpools zugewiesen. In dieser Solaris-Version können Sie festlegen, ob ZIL-Blöcke weiterhin vom Hauptspeicherpool oder von einem separaten Protokolliergerät zugewiesen werden sollen. Durch Verwendung separater Intent-Protokolliergeräte im ZFS-Speicher-Pool wie z. B. NVRAM oder eine spezielle Festplatte kann jedoch eine höhere Leistung erzielt werden.
Protokolliergeräte für das Intent-Protokoll von ZFS sind etwas Anderes als Datenbankprotokolldateien.
Sie können ZFS-Protokolliergeräte während oder nach der Erstellung eines Speicher-Pools einrichten. Beispiele zum Einrichten von Protokolliergeräten finden Sie unter Erstellen eines ZFS-Speicher-Pools mit Protokolliergeräten und Hinzufügen von Datenspeichergeräten zu einem Speicher-Pool.
Sie können zur Datenspiegelung an ein vorhandenes Protokolliergerät ein weiteres Protokolliergerät anschließen. Dies entspricht dem Verbinden eines Speichergeräts in einem Speicher-Pool ohne Datenspiegelung.
Berücksichtigen Sie folgende Aspekte bei der Überlegung, ob die Einrichtung eines ZFS-Protokolliergeräts für Ihre Umgebung ratsam ist:
Jegliche Leistungssteigerung durch die Implementierung eines separaten Protokolliergeräts ist von der Art des Geräts, der Hardwarekonfiguration des Speicher-Pools sowie von der Arbeitslast der Anwendung abhängig. Vorläufige Informationen zur Leistung finden Sie in diesem Blog:
Es ist möglich, Protokolliergeräte zu spiegeln oder deren Replikation aufzuheben. RAID-Z wird für Protokolliergeräte jedoch nicht unterstützt.
Wenn ein separates Protokolliergerät nicht gespiegelt wurde und das Gerät mit den Protokollen ausfällt, wird durch Speicherung von Protokollblöcken auf den Speicher-Pool zurückgeschaltet.
Protokolliergeräte können als Teil des Speicher-Pools hinzugefügt, ersetzt, angehängt, ausgehängt, importiert und exportiert werden. Protokolliergeräte können ab Solaris-Version 10 9/10 entfernt werden.
Die Mindestgröße für ein Protokolliergerät entspricht der Mindestkapazität für jedes Gerät in einem Pool. Dies sind 64 MB. Auf einem Protokolliergerät können verhältnismäßig wenige Ausführungsdaten gespeichert werden. Bei Bestätigung der Protokolltransaktion (Systemaufruf) werden die Protokollblöcke geleert.
Ein Protokolliergerät sollte nicht größer als rund die Hälfte des physischen Speichers sein, da dies die Höchstmenge an potenziellen Ausführungsdaten ist, die gespeichert werden kann. So sollten Sie beispielsweise für ein System mit 16 GB physischem Speicher ein Protokolliergerät mit 8 GB Speicher in Erwägung ziehen.
Solaris 10 10/08: Durch Verwendung der Option -p mit den Befehlen zfs create, zfs clone und zfs rename können Sie schnell ein intermediäres Dataset erstellen, falls es noch nicht vorhanden ist.
Das folgende Beispiel zeigt, wie ZFS-Datasets (users/area51) im Speicher-Pool datab erstellt werden.
# zfs list NAME USED AVAIL REFER MOUNTPOINT datab 106K 16.5G 18K /datab # zfs create -p -o compression=on datab/users/area51 |
Wenn während des Erstellungsvorgangs bereits ein intermediäres Dataset vorhanden ist, wird er ohne Fehlermeldung abgeschlossen.
Angegebene Eigenschaften gelten für das Ziel-Dataset und nicht für die intermediären Datasets. Beispiel:
# zfs get mountpoint,compression datab/users/area51 NAME PROPERTY VALUE SOURCE datab/users/area51 mountpoint /datab/users/area51 default datab/users/area51 compression on local |
Es wird ein intermediäres Dataset mit Standard-Einhängepunkt erstellt. Alle zusätzlichen Eigenschaften werden für dieses intermediäre Dataset deaktiviert. Beispiel:
# zfs get mountpoint,compression datab/users NAME PROPERTY VALUE SOURCE datab/users mountpoint /datab/users default datab/users compression off default |
Weitere Informationen finden Sie in der Manpage zfs(1M).
Solaris 10 10/08: Mit dieser Version reagiert ZFS effektiver auf Speichergeräte, die entfernt werden. Außerdem können eingefügte Speichergeräte jetzt automatisch erkannt werden.
Sie können ein Speichergerät durch ein anderes auswechseln, ohne dafür den Befehl zpool replace eingeben zu müssen.
Die Eigenschaft autoreplace legt die Charakteristika des automatischen Erkennens ausgewechselter Geräte fest. Wenn diese Eigenschaft auf off gesetzt ist, muss das Auswechseln von Speichergeräten vom Administrator mithilfe des Befehls zpool replace initiiert werden. Wenn diese Eigenschaft auf on gesetzt ist, wird jedes neue Speichergerät, das an derselben Speicherstelle erkannt wird, an der zuvor ein andres Speichergerät im Pool vorhanden war, automatisch formatiert und in den Pool eingebunden. Das Standardverhalten ist off
Wenn ein Speichergerät oder Hot-Spare bei laufendem Betrieb physisch entfernt wurde, steht jetzt der Speicherpoolstatus REMOVED zur Verfügung. Falls verfügbar, wird ein Hot-Spare für das entfernte Speichergerät in den Pool eingebunden.
Wenn ein Speichergerät entfernt und danach wieder eingesetzt wird, wird es in Betrieb genommen. Wenn für das entfernte Speichergerät ein Hot-Spare eingebunden wurde, wird dieses nach Abschluss der Inbetriebnahme wieder entfernt.
Das automatische Erkennen entfernter und hinzugefügter Speichergeräte ist hardwareabhängig und wird nicht von allen Plattformen unterstützt. So werden USB-Speichergeräte beispielsweise beim Einfügen automatisch konfiguriert. SATA-Laufwerke müssen unter Umständen jedoch mit dem Befehl cfgadm -c configure konfiguriert werden.
Hot-Spares werden regelmäßig überprüft, um sicherzustellen, dass sie in Betrieb und verfügbar sind.
Weitere Informationen finden Sie in der Manpage zpool(1M).
Solaris 10 10/08: Der Befehl zfs rename -r ermöglicht es, alle untergeordneten ZFS-Snapshots rekursiv umzubenennen. Beispiel:
Zunächst wird ein Snapshot einiger ZFS-Dateisysteme erstellt.
# zfs snapshot -r users/home@today # zfs list NAME USED AVAIL REFER MOUNTPOINT users 216K 16.5G 20K /users users/home 76K 16.5G 22K /users/home users/home@today 0 - 22K - users/home/markm 18K 16.5G 18K /users/home/markm users/home/markm@today 0 - 18K - users/home/marks 18K 16.5G 18K /users/home/marks users/home/marks@today 0 - 18K - users/home/neil 18K 16.5G 18K /users/home/neil users/home/neil@today 0 - 18K - |
Am folgenden Tag werden die Snapshots dann umbenannt.
# zfs rename -r users/home@today @yesterday # zfs list NAME USED AVAIL REFER MOUNTPOINT users 216K 16.5G 20K /users users/home 76K 16.5G 22K /users/home users/home@yesterday 0 - 22K - users/home/markm 18K 16.5G 18K /users/home/markm users/home/markm@yesterday 0 - 18K - users/home/marks 18K 16.5G 18K /users/home/marks users/home/marks@yesterday 0 - 18K - users/home/neil 18K 16.5G 18K /users/home/neil users/home/neil@yesterday 0 - 18K - |
Snapshots sind die einzigen Datasets, die rekursiv umbenannt werden können.
Weitere Informationen zu Snapshots finden Sie unter Überblick über ZFS-Snapshots und in folgendem Blog-Eintrag, in dem die Erstellung rotierender Snapshots beschrieben ist:
http://blogs.sun.com/mmusante/entry/rolling_snapshots_made_easy
Solaris 10 10/08: In dieser Solaris-Version können ZFS-Dateisysteme zusätzlich zu lzjb auch mit gzip komprimiert werden. Sie können die Komprimierung mit gzip oder gzip-N angeben, wobei N den Wert 1 bis 9 haben kann. Beispiel:
# zfs create -o compression=gzip users/home/snapshots # zfs get compression users/home/snapshots NAME PROPERTY VALUE SOURCE users/home/snapshots compression gzip local # zfs create -o compression=gzip-9 users/home/oldfiles # zfs get compression users/home/oldfiles NAME PROPERTY VALUE SOURCE users/home/oldfiles compression gzip-9 local |
Weitere Informationen zum Setzen von ZFS-Eigenschaften finden Sie unter Setzen von ZFS-Eigenschaften.
Solaris 10 10/08: Sofern möglich, werden Metadaten des ZFS-Dateisystems aus Gründen der Zuverlässigkeit automatisch auf mehreren Festplatten gespeichert. Dies wird als ditto blocks bezeichnet.
In dieser Version können Sie über den Befehl zfs set copies festlegen, dass mehrere Kopien der Benutzerdaten auch pro Dateisystem gespeichert werden. Beispiel:
# zfs set copies=2 users/home # zfs get copies users/home NAME PROPERTY VALUE SOURCE users/home copies 2 local |
Verfügbare Werte sind 1, 2 oder 3. Der Standardwert ist 1. Diese Kopien werden zusätzlich zu den von Redundanzfunktionen (Datenspiegelung bzw. RAID-Z) auf Pool-Ebene angelegten Sicherungskopien erstellt.
Die Speicherung mehrerer Kopien von ZFS-Benutzerdaten bringt die folgenden Vorteile mit sich:
Verbesserte Datenaufbewahrung, da für alle ZFS-Konfigurationen die Wiederherstellung von nicht wiederherstellbaren Blocklesefehlern zugelassen wird, z. B. Datenträgerfehler (allgemein bekannt als bit rot)
Schutz der Daten, auch wenn nur ein Laufwerk verfügbar ist
Möglichkeit der Auswahl von Datenschutzrichtlinien auf Dateisystembasis jenseits der Grenzen des Speicher-Pools
Je nach Zuweisung der ditto blocks im Speicher-Pool ist es möglich, dass mehrere Kopien auf einer einzigen Festplatte abgelegt werden. Ein Ausfall einer ganzen Festplatte kann folglich bedeuten, dass sämtliche ditto blocks unverfügbar sind.
Die Verwendung von ditto blocks kann hilfreich sein, wenn Sie versehentlich einen nicht-redundanten Pool erstellen und Richtlinien für die Datenaufbewahrung festlegen müssen.
In folgendem Blog wird ausführlich beschrieben, wie sich das Speichern mehrerer Kopien in einem System mit Einzelplatten-Pool oder Mehrplatten-Pool auf den Datenschutz im Allgemeinen auswirken kann:
http://blogs.sun.com/relling/entry/zfs_copies_and_data_protection
Weitere Informationen zum Setzen von ZFS-Eigenschaften finden Sie unter Setzen von ZFS-Eigenschaften.
Solaris 10 8/07: Mit dem Befehl zpool status -v können Sie eine Liste der Dateien mit permanenten Fehlern ausgeben lassen. Bisher mussten die Dateinamen mit Hilfe des Befehls find -inum anhand der Liste der angezeigten Knoten ermittelt werden.
Weitere Informationen zum Anzeigen einer Liste von Dateien mit dauerhaften Fehlern finden Sie unter Reparatur beschädigter Dateien bzw. Verzeichnisse.
Solaris 10 8/07: In dieser Solaris-Version können Sie durch Setzen der Eigenschaft shareiscsi im ZFS-Volume ein ZFS-Volume als ein Solaris iSCSI-Zielgerät erstellen. Mithilfe dieses Verfahrens können Solaris iSCSI-Zielgeräte schnell eingerichtet werden. Beispiel:
# zfs create -V 2g tank/volumes/v2 # zfs set shareiscsi=on tank/volumes/v2 # iscsitadm list target Target: tank/volumes/v2 iSCSI Name: iqn.1986-03.com.sun:02:984fe301-c412-ccc1-cc80-cf9a72aa062a Connections: 0 |
Nach dem Erstellen des iSCSI-Zielgeräts können Sie den iSCSI-Initiator definieren. Informationen zur Einrichtung eines Solaris iSCSI-Initiators finden Sie in Kapitel 14, Configuring Oracle Solaris iSCSI Targets and Initiators (Tasks) in System Administration Guide: Devices and File Systems.
Weitere Informationen zur Verwaltung eines ZFS-Volumes als iSCSI-Zielgerät entnehmen Sie bitte dem Abschnitt Verwendung von ZFS-Volumes als Solaris-iSCSI-Zielgerät.
Solaris 10 8/07: In dieser Solaris-Version protokolliert ZFS automatisch erfolgreich ausgeführte Aufrufe der Befehle zfs und zpool, die zur Änderung von Pool-Zustandsdaten dienen. Beispiel:
# zpool history History for 'newpool': 2007-04-25.11:37:31 zpool create newpool mirror c0t8d0 c0t10d0 2007-04-25.11:37:46 zpool replace newpool c0t10d0 c0t9d0 2007-04-25.11:38:04 zpool attach newpool c0t9d0 c0t11d0 2007-04-25.11:38:09 zfs create newpool/user1 2007-04-25.11:38:15 zfs destroy newpool/user1 History for 'tank': 2007-04-25.11:46:28 zpool create tank mirror c1t0d0 c2t0d0 mirror c3t0d0 c4t0d0 |
Dank dieses Leistungsmerkmals können Sie oder Oracle-Supportmitarbeiter feststellen, welche ZFS-Befehle bei der Behebung eines Fehlers ausgeführt wurden.
Spezifische Speicher-Pools können mit dem Befehl zpool history identifiziert werden. Beispiel:
# zpool history newpool History for 'newpool': 2007-04-25.11:37:31 zpool create newpool mirror c0t8d0 c0t10d0 2007-04-25.11:37:46 zpool replace newpool c0t10d0 c0t9d0 2007-04-25.11:38:04 zpool attach newpool c0t9d0 c0t11d0 2007-04-25.11:38:09 zfs create newpool/user1 2007-04-25.11:38:15 zfs destroy newpool/user1 |
In diesem Solaris-Release werdenuser-ID, hostname und zone-name über den Befehl zpool history nicht aufgezeichnet. Diese Informationen werden jedoch erst ab Solaris-Version 10 10/08 aufgezeichnet. Weitere Informationen finden Sie unter Verbesserungen des ZFS-Befehlsprotokolls (zpool history).
Weitere Informationen zur Behebung von ZFS-Problemen siehe Beheben von Problemen mit ZFS.
Solaris 10 8/07: Mit der Eigenschaft xattr können Sie erweiterte Attribute für ein bestimmtes ZFS-Dateisystem deaktivieren oder aktivieren. Der Standardwert ist on. Eine Beschreibung von ZFS-Eigenschaften finden Sie unter ZFS-Eigenschaften.
Solaris 10 8/07: Mit der neuen Eigenschaft canmount können Sie festlegen, ob ein Dataset mithilfe des Befehls zfs mount eingehängt werden kann. Weitere Informationen dazu finden Sie unter Die Eigenschaft canmount.
Solaris 10 8/07: Zusätzlich zu den nativen Standardeigenschaften, die zum Exportieren interner Statistiken oder Steuern des ZFS-Dateisystemverhaltens dienen, stellt ZFS benutzerdefinierte Eigenschaften bereit. 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.
Weitere Informationen finden Sie unter Benutzerdefinierte ZFS-Eigenschaften.
Solaris 10 8/07: In dieser Solaris-Version können Sie Eigenschaften nicht nur nach, sondern auch bereits während der Erstellung von Dateisystemen festlegen.
Die folgenden Beispiele zeigen die entsprechende Syntax:
# zfs create tank/home # zfs set mountpoint=/export/zfs tank/home # zfs set sharenfs=on tank/home # zfs set compression=on tank/home |
# zfs create -o mountpoint=/export/zfs -o sharenfs=on -o compression=on tank/home |
Solaris 10 8/07: In dieser Solaris-Version können Sie sich mithilfe verschiedener Formen des Befehls zfs get Informationen zu allen Datasets anzeigen lassen, wenn weder ein Dataset noch all angegeben wurde. Bisher war es nicht möglich, mit dem Befehl zfs get Informationen aller Datensätze anzuzeigen.
Beispiel:
# zfs get -s local all tank/home atime off local tank/home/bonwick atime off local tank/home/marks quota 50G local |
Solaris 10 8/07: Sie können nun die neue Option -F für den Befehl zfs receive verwenden, um das Dateisystem auf den letzten Snapshot vor dem Empfang zurückzusetzen. Die Verwendung dieser Option kann erforderlich werden, wenn das Dateisystem nach einer Rücksetzung, aber vor Beginns des Empfangs geändert wurde.
Weitere Informationen finden Sie unter Empfangen von ZFS-Snapshots.
Solaris 10 11/06: Wenn Sie mithilfe des Befehls zfs snapshot einen Dateisystem-Snapshot erstellen, können Sie die Option -r verwenden, um für alle untergeordneten Dateisysteme rekursiv Snapshots zu erstellen. Außerdem können Sie die Option - r verwenden, um alle untergeordneten Snapshots zu löschen, wenn ein Snapshot gelöscht wird.
Rekursive ZFS-Snapshots werden schnell in einem unteilbaren Vorgang erstellt. Snapshots werden entweder zusammen (d. h. alle auf einmal) oder gar nicht erstellt. Der Vorteil eines solchen Vorgangs besteht darin, dass die Snapshot-Daten stets zu einem einzigen konsistenten Zeitpunkt erstellt werden, selbst bei untergeordneten Dateisystemen.
Weitere Informationen finden Sie unter Erstellen und Löschen von ZFS-Snapshots.
Solaris 10 11/06: Redundante RAID-Z-Konfigurationen können jetzt einfache oder doppelte Parität besitzen. Das bedeutet, dass in einem System bis zu zwei Geräteausfälle ohne Datenverlust möglich sind. Eine RAID-Z-Konfiguration doppelter Parität kann mithilfe des Schlüsselworts raidz2 angegeben werden. Entsprechend können Sie für eine RAID-Z-Konfiguration mit einfacher Parität eines der Schlüsselwörter raidz oder raidz1 angeben.
Weitere Informationen finden Sie unter Erstellen eines RAID-Z-Speicher-Pools oder zpool(1M).
Solaris 10 11/06: Mithilfe der ZFS-Hot-Spare-Funktion können Sie Datenträger ermitteln, die zum Ersetzen eines ausgefallenen oder fehlerhaften Geräts in einem oder mehreren Speicher-Pools verwendet werden können. Das Vorsehen eines Datenträgers als Hot-Spare-Gerät bedeutet, dass bei Ausfall eines aktiven Datenträgers im Pool das Hot-Spare-Gerät diesen automatisch ersetzt. Alternativ dazu können Sie Datenträger in einem Speicher-Pool auch manuell durch ein Hot-Spare-Gerät ersetzen.
Weitere Informationen finden Sie unter Zuweisen von Hot-Spares im Speicher-Pool und zpool(1M).
Solaris 10 11/06: Der Befehl zfs promote ermöglicht es, ein vorhandenes ZFS-Dateisystem durch einen Klon desselben zu ersetzen. Diese Funktion ist hilfreich, wenn Sie an verschiedenen Versionen eines Dateisystems Tests ausführen wollen und danach eine alternative Version des Dateisystems zum aktiven Dateisystem machen möchten.
Weitere Informationen finden Sie in Ersetzen eines ZFS-Dateisystems durch einen ZFS-Klon und zfs(1M).
Solaris 10 6/06: Mit dem Befehl zpool upgrade können Sie eine Aktualisierung eines Speicher-Pools vornehmen, um die neuesten Funktionen zu nutzen. Außerdem wurde der Befehl zpool status so geändert, dass Sie jetzt darauf hingewiesen werden, wenn Pools mit älteren ZFS-Versionen laufen.
Weitere Informationen finden Sie unter Aktualisieren von ZFS-Speicher-Pools und zpool(1M).
Wenn Sie die ZFS-Administrationskonsole auf einem System mit einem Pool aus früheren Solaris-Versionen nutzen möchten, müssen Sie die Pools vor Verwendung der ZFS-Administrationskonsole aktualisieren. Mit dem Befehl zpool status lässt sich feststellen, ob Pools aktualisiert werden müssen. Informationen zur ZFS-Administrationskonsole finden Sie unter Webbasierte ZFS-Verwaltung.
Solaris 10 6/06: In dieser Solaris-Version heißen die Befehle zfs backup und zfs restore nun zfs send und zfs receive. Diese Namen geben die Funktion der Befehle genauer wieder. Diese Befehle dienen zum Senden und Empfangen von ZFS-Datenstromobjekten.
Weitere Informationen zu diesen Befehlen finden Sie unter Senden und Empfangen von ZFS-Daten.
Solaris 10 6/06: Diese Solaris-Version enthält den Befehl zpool import -D. Damit können Sie Pools wiederherstellen, die zuvor mit dem Befehl zpool destroy gelöscht wurden.
Weitere Informationen dazu finden Sie unter Wiederherstellen gelöschter ZFS-Speicher-Pools.
Solaris 10 6/06: Diese Version enthält ein integriertes ZFS-Diagnoseprogramm, das Pool- und Datenträgerausfälle diagnostiziert und meldet. Darüber hinaus werden auch mit solchen Pool- bzw. Datenträgerausfällen im Zusammhang stehende Prüfsummen-, E/A-, Geräte- und Poolfehler gemeldet.
Das Diagnoseprogramm enthält keine Funktion zur Früherkennung von Prüfsummen- bzw. E/A-Fehlern und umfasst auch keine auf Fehleranalysen beruhenden proaktiven Operationen.
Bei einem ZFS-Ausfall wird eine Meldung wie die folgende angezeigt:
SUNW-MSG-ID: ZFS-8000-D3, TYPE: Fault, VER: 1, SEVERITY: Major EVENT-TIME: Wed Jun 30 14:53:39 MDT 2010 PLATFORM: SUNW,Sun-Fire-880, CSN: -, HOSTNAME: neo SOURCE: zfs-diagnosis, REV: 1.0 EVENT-ID: 504a1188-b270-4ab0-af4e-8a77680576b8 DESC: A ZFS device failed. Refer to http://sun.com/msg/ZFS-8000-D3 for more information. AUTO-RESPONSE: No automated response will occur. IMPACT: Fault tolerance of the pool may be compromised. REC-ACTION: Run 'zpool status -x' and replace the bad device. |
Durch Überprüfen der empfohlenen Aktion, die nach den spezifischeren Anweisungen im Befehl zpool status angezeigt wird, können Sie die Fehlerursache schnell erkennen und beheben.
Ein Beispiel für die Wiederherstellung des Normalbetriebs nach einem aufgetretenen ZFS-Problem finden Sie unter Abhilfe bei Nichtverfügbarkeit eines Geräts.
Solaris 10 6/06: Diese Version enthält den Befehl zpool clear, mit dem Fehlerzähler für Geräte- bzw. Poolausfälle zurückgesetzt werden können. In früheren Versionen wurden Fehlerzähler bei der Wiederinbetriebnahme eines Datenträgers im Pool mithilfe des Befehls zpool online zurückgesetzt. Weitere Informationen finden Sie unter Löschen von Gerätefehlern im Speicher-Pool und zpool(1M).
Solaris 10 6/06: In dieser Version können Sie NFSv4-Zugriffssteuerungslisten in zwei Formaten setzen und anzeigen: ausführlich und kompakt. Mit dem Befehl chmod können Sie alle Zugriffssteuerungslistenformate setzen. Mit dem Befehl ls - V können Sie das kompakte Zugriffssteuerungslistenformat anzeigen. Mit dem Befehl ls -v können Sie das ausführliche Zugriffssteuerungslistenformat anzeigen.
Weitere Informationen finden Sie unter Setzen und Anzeigen von Zugriffssteuerungslisten an ZFS-Dateien im Kompaktformat, chmod(1) und ls(1).
Solaris 10 6/06: Zum Melden von Vorgängen in Dateisystemen steht das neue Tool fsstat zur Verfügung. Aktivitäten können nach Einhängepunkt oder Dateisystemtypen protokolliert werden. Das folgende Beispiel zeigt eine allgemeine Aktivität eines ZFS-Dateisystems:
$ fsstat zfs new name name attr attr lookup rddir read read write write file remov chng get set ops ops ops bytes ops bytes 7.82M 5.92M 2.76M 1.02G 3.32M 5.60G 87.0M 363M 1.86T 20.9M 251G zfs |
Weitere Informationen finden Sie in der Manpage fsstat(1M).
Solaris 10 6/06: Mit einem webbasierten ZFS-Verwaltungstool, der ZFS-Administrationskonsole, können Sie folgende Verwaltungsaufgaben ausführen:
Erstellen eines neuen Datenspeicher-Pools
Erweitern der Kapazität eines vorhandenen Datenspeicher-Pools
Verlagern (Exportieren) eines Datenspeicher-Pools auf ein anderes System
Importieren eines zuvor exportierten Datenspeicher-Pools, um diesen auf einem anderen System verfügbar zu machen
Anzeigen von Informationen zu Datenspeicher-Pools
Erstellen von Dateisystemen
Erstellen von Volumes
Erstellen eines Snapshots eines Dateisystems oder Volumes
Wiederherstellen eines früheren Snapshots eines Dateisystems
Sie können mithilfe eines sicheren Webbrowsers unter der folgenden URL auf die ZFS-Administrationskonsole zugreifen:
https://system-name:6789/zfs |
Wenn Sie die entsprechende URL eingeben und die ZFS-Administrationskonsole nicht erreichen, kann es sein, dass deren Server nicht läuft. Geben Sie den folgenden Befehl ein, um den Server zu starten:
# /usr/sbin/smcwebserver start |
Geben Sie den folgenden Befehl ein, wenn der Server beim Hochfahren des Systems automatisch gestartet werden soll:
# /usr/sbin/smcwebserver enable |
Die Solaris Management Console (smc) kann nicht zur Verwaltung von ZFS-Speicher-Pools bzw. -Dateisystemen verwendet werden.