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
Komponenten eines ZFS-Speicher-Pools
Verwenden von Datenträgern in einem ZFS-Speicher-Pool
Verwenden von Bereichen in einem ZFS-Speicher-Pool
Verwenden von Dateien in einem ZFS-Speicher-Pool
Replikationsfunktionen eines ZFS-Speicher-Pools
Speicher-Pools mit Datenspiegelung
Speicher-Pools mit RAID-Z-Konfiguration
Selbstheilende Daten in einer redundanten Konfiguration
Dynamisches Striping in einem Speicher-Pool
Erstellen und Entfernen von ZFS-Speicher-Pools
Erstellen eines ZFS-Speicher-Pools
Erstellen eines einfachen Speicher-Pools
Erstellen eines Speicher-Pools mit Datenspiegelung
Erstellen eines ZFS-Root-Pools
Erstellen eines RAID-Z-Speicher-Pools
Erstellen eines ZFS-Speicher-Pools mit Protokolliergeräten
Erstellen eines ZFS-Speicher-Pools mit Cache-Geräten
Anzeigen von Informationen zu virtuellen Geräten in Storage-Pools
Behandlung von Fehlern beim Erstellen von ZFS-Speicher-Pools
Inkongruente Replikationsmethoden
Ausführen eines Testlaufs für die Erstellung eines Speicher-Pools
Standard-Einhängepunkt für Speicher-Pools
Löschen von ZFS-Speicher-Pools
Löschen eines Pools mit fehlerhaften Geräten
Verwalten von Datenspeichergeräten in ZFS-Speicher-Pools
Hinzufügen von Datenspeichergeräten zu einem Speicher-Pool
Verbinden und Trennen von Geräten in einem Speicher-Pool
Erstellen eines neuen Pools durch Teilen eines ZFS-Speicher-Pools mit Datenspiegelung
In- und Außerbetriebnehmen von Geräten in einem Speicher-Pool
Außerbetriebnehmen eines Geräts
Löschen von Gerätefehlern im Speicher-Pool
Austauschen von Geräten in einem Speicher-Pool
Zuweisen von Hot-Spares im Speicher-Pool
Aktivieren und Deaktivieren von Hot-Spares im Speicher-Pool
Eigenschaften von ZFS-Speicher-Pools
Abfragen des Status von ZFS-Speicher-Pools
Anzeigen von Informationen zu ZFS-Speicher-Pools
Anzeigen von Informationen zu allen Speicher-Pools oder einem bestimmten Pool
Anzeigen spezifischer Speicher-Pool-Statistikinformationen
Verwenden von Ausgaben von ZFS-Speicher-Pools für Skripten
Anzeige des Befehlsprotokolls von ZFS-Speicher-Pools
Anzeigen von E/A-Statistiken für ZFS-Speicher-Pools
Anzeigen globaler Pool-E/A-Statistikinformationen
Anzeigen von E/A-Statistikinformationen zu virtuellen Geräten
Ermitteln des Funktionsstatus von ZFS-Speicher-Pools
Grundlegender Funktionsstatus eines Speicher-Pools
Ausführliche Informationen zum Funktionsstatus
Sammeln von Informationen des ZFS-Speicher-Pools
Migrieren von ZFS-Speicher-Pools
Vorbereiten der Migration eines ZFS-Speicher-Pools
Exportieren eines ZFS-Speicher-Pools
Ermitteln verfügbarer Speicher-Pools für den Import
Importieren von ZFS-Speicher-Pools aus anderen Verzeichnissen
Importieren von ZFS-Speicher-Pools
Importieren eines Pools mit fehlendem Protokolliergerät
Importieren eines Pools im schreibgeschützten Modus
Aktualisieren von ZFS-Speicher-Pools
5. Installieren und Booten eines Oracle Solaris ZFS-Root-Dateisystems
6. Verwalten von Oracle Solaris 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
Gelegentlich kann es vorkommen, dass Speicher-Pools zwischen Systemen transferiert werden müssen. Dafür müssen Sie die Datenspeichergeräte aus dem ursprünglichen System herausnehmen und an das neue System anschließen. Dies kann durch Neuverkabelung der betreffenden Geräte bzw. die Verwendung von Geräten mit mehreren Anschlüssen, z. B. Geräte in einem Speichernetzwerk (SAN), bewerkstelligt werden. Mit ZFS können Sie einen Pool aus einem System exportieren und in das Zielsystem importieren. Dies ist auch möglich, wenn beide Rechnerarchitekturen unterschiedliche Bitbreiten besitzen. Informationen zum Replizieren bzw. Migrieren von Dateisystemen zwischen verschiedenen Speicher-Pools, die auf unterschiedlichen Rechnersystemen installiert sind, finden Sie unter Senden und Empfangen von ZFS-Daten.
Speicher-Pools sollten explizit exportiert werden, um anzuzeigen, dass sie zur Migration bereit sind. Bei diesem Vorgang werden ungeschriebene Daten auf die Festplatte ausgespeichert und Daten auf die Festplatte geschrieben, wodurch angezeigt wird, dass der Export abgeschlossen ist. Anschließend werden alle Informationen, die den Pool betreffen, aus dem System entfernt.
Wenn Sie den Pool nicht explizit exportieren, sondern die Datenträger manuell entfernen, kann der resultierende Pool trotzdem noch in ein anderes System importiert werden. Es kann jedoch sein, dass die in den allerletzten Sekunden ausgeführten Datentransaktionen verloren gehen und der betreffende Pool auf dem ursprünglichen System als fehlerhaft angezeigt wird, da die Datenspeichergeräte nicht mehr vorhanden sind. Standardmäßig kann ein Pool, der nicht explizit exportiert wurde, nicht vom Zielsystem importiert werden. Dies ist erforderlich, um zu verhindern, dass versehentlich ein aktiver Pool importiert wird, der Speicherplatz enthält, der über das Netzwerk zugänglich ist und noch von einem anderem System belegt wird.
Speicher-Pools können mit dem Befehl zpool export exportiert werden. Beispiel:
# zpool export tank
Vor dem Fortfahren versucht der Befehl alle innerhalb des Pools eingehängten Dateisysteme auszuhängen. Falls das Aushängen von Dateisystemen fehlschlägt, können Sie mithilfe der Option -f ein Aushängen erzwingen. Beispiel:
# zpool export tank cannot unmount '/export/home/eschrock': Device busy # zpool export -f tank
Nach der Ausführung dieses Befehls ist der Pool tank im System nicht mehr sichtbar.
Falls Datenspeichergeräte zum Zeitpunkt des Exports nicht verfügbar sind, können die betreffenden Geräte nicht als "sauber" exportiert eingestuft werden. Wenn ein solches Datenspeichergerät später ohne die funktionierenden Datenspeichergeräte mit einem System verbunden wird, erscheint das betreffende Gerät als potenziell aktiv.
Wenn im Pool ZFS-Volumes vorhanden sind, kann der Pool auch nicht mithilfe der Option -f exportiert werden. Wenn Sie einen Pool mit einem ZFS-Volume exportieren möchten, müssen Sie zunächst sicherstellen, dass das Volume nicht von aktiven Ressourcen belegt wird.
Weitere Informationen zu ZFS-Volumes finden Sie unter ZFS-Volumes.
Nachdem ein Pool (durch expliziten Export oder erzwungenes Entfernen von Datenspeichergeräten) aus einem System entfernt wurde, müssen die betreffenden Geräte mit dem Zielsystem verbunden werden. ZFS kann Situationen bewältigen, in denen nur einige der Geräte verfügbar sind. Der Erfolg der Pool-Migration hängt jedoch von der Funktionstüchtigkeit der Geräte ab. Die Geräte müssen jedoch nicht notwendigerweise unter dem gleichen Gerätenamen verbunden werden. ZFS erkennt verschobene bzw. umbenannte Geräte und passt die Konfiguration entsprechend an. Führen Sie zum Ermitteln importierbarer Pools den Befehl zpool export aus. Beispiel:
# zpool import pool: tank id: 11809215114195894163 state: ONLINE action: The pool can be imported using its name or numeric identifier. config: tank ONLINE mirror-0 ONLINE c1t0d0 ONLINE c1t1d0 ONLINE
In diesem Beispiel kann der Pool tank in ein Zielsystem importiert werden. Jeder Pool wird durch einen Namen und einen eindeutigen numerischen Bezeichner identifiziert. Wenn mehrere Pools mit dem gleichen Namen für den Import verfügbar sind, können sie mithilfe des numerischen Bezeichners unterschieden werden.
Ebenso wie die Ausgabe des Befehls zpool status verweist die Ausgabe des Befehls zpool import auf einen Artikel der Sun Knowledge Base, der die aktuellsten Informationen und Reparaturhinweise zu Problemen enthält, die das Importieren von Pools verhindern. In diesem Fall kann das Importieren eines Pools erzwungen werden. Das Importieren eines Pools, der gegenwärtig über Netzwerkzugriff von einem anderen System verwendet wird, kann Daten beschädigen und auf beiden Systemen zu Abstürzen führen, wenn diese Systeme Daten auf das gleiche Datenspeichergerät schreiben. Wenn einige Geräte eines Pools nicht verfügbar sind, zum Bereitstellen eines funktionierenden Pools jedoch genügend Redundanzdaten vorhanden sind, geht der Pool in den Status DEGRADED. Beispiel:
# zpool import pool: tank id: 11809215114195894163 state: DEGRADED status: One or more devices are missing from the system. action: The pool can be imported despite missing or damaged devices. The fault tolerance of the pool may be compromised if imported. see: http://www.sun.com/msg/ZFS-8000-2Q config: NAME STATE READ WRITE CKSUM tank DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 c1t0d0 UNAVAIL 0 0 0 cannot open c1t3d0 ONLINE 0 0 0
In diesem Beispiel ist der erste Datenträger beschädigt oder nicht vorhanden, der Pool kann aber trotzdem importiert werden, da die gespiegelten Daten noch verfügbar sind. Wenn zuviele fehlerhafte Datenspeichergeräte vorhanden sind bzw. Geräte fehlen, kann der Pool nicht importiert werden. Beispiel:
# zpool import pool: dozer id: 9784486589352144634 state: FAULTED action: The pool cannot be imported. Attach the missing devices and try again. see: http://www.sun.com/msg/ZFS-8000-6X config: raidz1-0 FAULTED c1t0d0 ONLINE c1t1d0 FAULTED c1t2d0 ONLINE c1t3d0 FAULTED
In diesem Beispiel fehlen in einem virtuellen RAID-Z-Gerät zwei Datenträger, was bedeutet, dass zum Rekonstruieren des Pools nicht genügend Redundanz verfügbar ist. In einigen Fällen kann es auch sein, dass zum Ermitteln der vollständigen Konfiguration nicht genügend Datenspeichergeräte vorhanden sind. In einem solchen Fall kann ZFS nicht bestimmen, welche anderen Geräte zu diesem Pool gehört haben, obwohl ZFS diesbezüglich so viele Informationen wie möglich meldet. Beispiel:
# zpool import pool: dozer id: 9784486589352144634 state: FAULTED status: One or more devices are missing from the system. action: The pool cannot be imported. Attach the missing devices and try again. see: http://www.sun.com/msg/ZFS-8000-6X config: dozer FAULTED missing device raidz1-0 ONLINE c1t0d0 ONLINE c1t1d0 ONLINE c1t2d0 ONLINE c1t3d0 ONLINE Additional devices are known to be part of this pool, though their exact configuration cannot be determined.
Standardmäßig durchsucht der Befehl zpool import nur im Verzeichnis /dev/dsk enthaltene Datenspeichergeräte. Wenn Geräte in einem anderen Verzeichnis vorhanden sind oder Sie Pools verwenden, die durch Dateien gesichert sind, müssen Sie mithilfe der Option -d andere Verzeichnisse durchsuchen. Beispiel:
# zpool create dozer mirror /file/a /file/b # zpool export dozer # zpool import -d /file pool: dozer id: 7318163511366751416 state: ONLINE action: The pool can be imported using its name or numeric identifier. config: dozer ONLINE mirror-0 ONLINE /file/a ONLINE /file/b ONLINE # zpool import -d /file dozer
Sie können die Option - d mehrmals angeben, wenn Datenspeichergeräte in mehreren Verzeichnissen vorhanden sind.
Wenn ein Pool für den Import ermittelt wurde, können Sie ihn durch Angabe seines Namens oder numerischen Bezeichners als Argument für den Befehl zpool import importieren. Beispiel:
# zpool import tank
Wenn mehrere Pools den gleichen Namen besitzen, müssen Sie mithilfe des numerischen Bezeichners angeben, welcher Pool importiert werden soll. Beispiel:
# zpool import pool: dozer id: 2704475622193776801 state: ONLINE action: The pool can be imported using its name or numeric identifier. config: dozer ONLINE c1t9d0 ONLINE pool: dozer id: 6223921996155991199 state: ONLINE action: The pool can be imported using its name or numeric identifier. config: dozer ONLINE c1t8d0 ONLINE # zpool import dozer cannot import 'dozer': more than one matching pool import by numeric ID instead # zpool import 6223921996155991199
Wenn ein Pool-Name mit einem bereits vorhandenen Pool-Namen in Konflikt steht, können Sie den Pool unter einem anderen Namen importieren. Beispiel:
# zpool import dozer zeepool
Dieser Befehl importiert den exportierten Pool dozer unter dem neuen Namen zeepool. Der Name des neuen Pools ist dauerhaft.
Wenn ein Pool nicht ordnungsgemäß exportiert wurde, benötigt ZFS das -f-Flag, um zu verhindern, dass versehentlich ein Pool importiert wird, der noch von einem anderen System benutzt wird. Beispiel:
# zpool import dozer cannot import 'dozer': pool may be in use on another system use '-f' to import anyway # zpool import -f dozer
Hinweis - Versuchen Sie nicht, einen in einem System aktiven Pool in ein anderes System zu importieren. ZFS ist kein natives Cluster-, verteiltes oder paralleles Dateisystem und bietet keinen gleichzeitigen Zugriff von mehreren verschiedenen Hosts aus.
Pools können mithilfe der Option -R in ein anderes Root-Verzeichnis importiert werden. Weitere Informationen zu Speicher-Pools mit alternativem Root-Verzeichnis finden Sie unter Verwenden von ZFS-Speicher-Pools mit alternativem Root-Verzeichnis.
Standardmäßig kann ein Pool mit einem fehlenden Protokolliergerät nicht importiert werden. Mit dem Befehl zpool import -m können Sie den Import eines Pools mit einem fehlenden Protokolliergerät erzwingen. Beispiel:
# zpool import dozer The devices below are missing, use '-m' to import the pool anyway: c3t3d0 [log] cannot import 'dozer': one or more devices is currently unavailable
Importieren Sie den Pool mit dem fehlenden Protokolliergerät. Beispiel:
# zpool import -m dozer # zpool status dozer pool: dozer state: DEGRADED status: One or more devices could not be opened. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Attach the missing device and online it using 'zpool online'. see: http://www.sun.com/msg/ZFS-8000-2Q scan: scrub repaired 0 in 0h0m with 0 errors on Fri Oct 15 16:43:03 2010 config: NAME STATE READ WRITE CKSUM dozer DEGRADED 0 0 0 mirror-0 ONLINE 0 0 0 c3t1d0 ONLINE 0 0 0 c3t2d0 ONLINE 0 0 0 logs 14685044587769991702 UNAVAIL 0 0 0 was c3t3d0
Führen Sie nach dem Anschließen des fehlenden Protokolliergeräts den Befehl zpool clear aus, um die Pool-Fehler zu löschen.
Eine ähnliche Wiederherstellung kann mit fehlenden gespiegelten Protokolliergeräten versucht werden. Beispiel:
# zpool import dozer The devices below are missing, use '-m' to import the pool anyway: mirror-1 [log] c3t3d0 c3t4d0 cannot import 'dozer': one or more devices is currently unavailable # zpool import -m dozer # zpool status dozer pool: dozer state: DEGRADED status: One or more devices could not be opened. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Attach the missing device and online it using 'zpool online'. see: http://www.sun.com/msg/ZFS-8000-2Q scan: scrub repaired 0 in 0h0m with 0 errors on Fri Oct 15 16:51:39 2010 config: NAME STATE READ WRITE CKSUM dozer DEGRADED 0 0 0 mirror-0 ONLINE 0 0 0 c3t1d0 ONLINE 0 0 0 c3t2d0 ONLINE 0 0 0 logs mirror-1 UNAVAIL 0 0 0 insufficient replicas 13514061426445294202 UNAVAIL 0 0 0 was c3t3d0 16839344638582008929 UNAVAIL 0 0 0 was c3t4d0
Führen Sie nach dem Anschließen der fehlenden Protokolliergeräte den Befehl zpool clear aus, um die Pool-Fehler zu löschen.
Sie können einen Pool im schreibgeschützten Modus importieren. Ist ein Pool dermaßen beschädigt, dass nicht auf ihn zugegriffen werden kann, können Sie mithilfe dieser Funktion die Daten des Pools eventuell wiederherstellen. Beispiel:
# zpool import -o readonly=on tank # zpool scrub tank cannot scrub tank: pool is read-only
Beim Importieren eines Pools im schreibgeschützten Modus gelten die folgenden Bedingungen:
Alle Dateisysteme und Volumes werden im schreibgeschützten Modus eingehängt.
Die Pool-Transaktionsverarbeitung ist deaktiviert. Dies bedeutet auch, dass alle anstehenden synchronen Schreibvorgänge im Intent-Protokoll nicht wiedergegeben werden, ehe der Pool mit Lese- und Schreibzugriff importiert wird.
Jegliche Versuche, während des Imports mit Lese- und Schreibzugriff eine Pool-Eigenschaft festzulegen, werden ignoriert.
Ein schreibgeschützter Pool kann durch Exportieren und Importieren in den Lese- und Schreibmodus zurückgesetzt werden. Beispiel:
# zpool export tank # zpool import tank # zpool scrub tank
Der folgende Befehl importiert den Pool dpool, indem er eines der spezifischen Geräte (hier /dev/dsk/c2t3d0) identifiziert.
# zpool import -d /dev/dsk/c2t3d0s0 dpool # zpool status dpool pool: dpool state: ONLINE scan: resilvered 952K in 0h0m with 0 errors on Thu Mar 10 10:28:46 2011 config: NAME STATE READ WRITE CKSUM dpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0
Eine Einschränkung besteht darin, dass der Befehl den Bereichsbezeichner des spezifischen Geräts einschließen muss, obwohl dieser Pool ganze Festplatten enthält.
Gelöschte Speicher-Pools können mit dem Befehl zpool import -D wiederhergestellt werden. Beispiel:
# zpool destroy tank # zpool import -D pool: tank id: 5154272182900538157 state: ONLINE (DESTROYED) action: The pool can be imported using its name or numeric identifier. config: tank ONLINE mirror-0 ONLINE c1t0d0 ONLINE c1t1d0 ONLINE
In dieser Ausgabe des Befehls zpool import kann der tank-Pool aufgrund der folgenden Statusinformationen als gelöscht erkannt werden:
state: ONLINE (DESTROYED)
Führen Sie zum Wiederherstellen des gelöschten Pools den Befehl zpool import - D erneut aus. Beispiel:
# zpool import -D tank # zpool status tank pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE mirror-0 ONLINE c1t0d0 ONLINE c1t1d0 ONLINE errors: No known data errors
Wenn eines der Datenspeichergeräte im gelöschten Pool fehlerhaft oder nicht verfügbar ist, können Sie den gelöschten Pool unter Umständen mit der Option -f trotzdem wiederherstellen. Importieren Sie in einer solchen Situation den im eingeschränkten Zustand befindlichen Pool und versuchen Sie dann, den Geräteausfall zu beheben. Beispiel:
# zpool destroy dozer # zpool import -D pool: dozer id: 13643595538644303788 state: DEGRADED (DESTROYED) status: One or more devices could not be opened. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Attach the missing device and online it using 'zpool online'. see: http://www.sun.com/msg/ZFS-8000-2Q config: NAME STATE READ WRITE CKSUM dozer DEGRADED 0 0 0 raidz2-0 DEGRADED 0 0 0 c2t8d0 ONLINE 0 0 0 c2t9d0 ONLINE 0 0 0 c2t10d0 ONLINE 0 0 0 c2t11d0 UNAVAIL 0 35 1 cannot open c2t12d0 ONLINE 0 0 0 errors: No known data errors # zpool import -Df dozer # zpool status -x pool: dozer state: DEGRADED status: One or more devices could not be opened. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Attach the missing device and online it using 'zpool online'. see: http://www.sun.com/msg/ZFS-8000-2Q scrub: scrub completed after 0h0m with 0 errors on Thu Jan 21 15:38:48 2010 config: NAME STATE READ WRITE CKSUM dozer DEGRADED 0 0 0 raidz2-0 DEGRADED 0 0 0 c2t8d0 ONLINE 0 0 0 c2t9d0 ONLINE 0 0 0 c2t10d0 ONLINE 0 0 0 c2t11d0 UNAVAIL 0 37 0 cannot open c2t12d0 ONLINE 0 0 0 errors: No known data errors # zpool online dozer c2t11d0 Bringing device c2t11d0 online # zpool status -x all pools are healthy