Mithilfe des Befehls zpool list können Sie mit unterschiedlichen Methoden Informationen zum Pool-Status abrufen. Die verfügbaren Informationen unterteilen sich im Allgemeinen in drei Kategorien: grundlegende Informationen zur Auslastung, E/A-Statistiken und Informationen zum Funktionsstatus. In diesem Abschnitt werden alle drei Kategorien dieser Informationen zu Speicher-Pools behandelt.
Mit dem Befehl zpool list können Sie grundlegende Pool-Informationen anzeigen.
Ohne Argumente werden mithilfe des Befehls zpool list folgende Informationen für alle Pools des Systems angezeigt:
# zpool list NAME SIZE ALLOC FREE CAP HEALTH ALTROOT tank 80.0G 22.3G 47.7G 28% ONLINE - dozer 1.2T 384G 816G 32% ONLINE - |
Diese Befehlsausgabe zeigt folgende Informationen an:
Der Name des Pools.
Die Gesamtkapazität des Pools entspricht der Summe der Speicherkapazität aller virtuellen Geräte der obersten Hierarchieebene.
Der von allen Datasets und internen Metadaten belegte physische Speicherplatz. Bitte beachten Sie, dass sich dieser Wert von der auf Dateisystemebene gemeldeten Festplattenkapazität unterscheidet.
Weitere Informationen zum Ermitteln des verfügbaren Dateisystemspeicherplatzes finden Sie unter Berechnung von ZFS-Festplattenkapazität.
Der Wert des nicht belegten Speicherplatzes im Pool.
Der Wert der belegten Festplattenkapazität als Verhältnis zur Gesamtkapazität, in Prozent.
Der gegenwärtige Funktionsstatus des Pools.
Weitere Informationen zum Pool-Status finden Sie unter Ermitteln des Funktionsstatus von ZFS-Speicher-Pools.
Das alternative Root-Verzeichnis des Pools (falls vorhanden).
Weitere Informationen zu Speicher-Pools mit alternativem Root-Verzeichnis finden Sie unter Verwenden von ZFS-Speicher-Pools mit alternativem Root-Verzeichnis.
Durch Angabe eines Pool-Namens können Sie sich auch Statistiken zu diesem bestimmten Pool anzeigen lassen. Beispiel:
# zpool list tank NAME SIZE ALLOC FREE CAP HEALTH ALTROOT tank 80.0G 22.3G 47.7G 28% ONLINE - |
Mithilfe der Option -o können Sie sich spezifische Statistikinformationen anzeigen lassen. Auch können Sie mithilfe dieser Option benutzerdefinierte Berichte erstellen oder sich gewünschte Informationen anzeigen lassen. Mit der folgenden Syntax wird beispielsweise nur der Name und die Speicherkapazität jedes Pools angezeigt:
# zpool list -o name,size NAME SIZE tank 80.0G dozer 1.2T |
Die Spaltentitel sind unter Anzeigen von Informationen zu allen Speicher-Pools oder einem bestimmten Pool erläutert.
Die Standardausgabe des Befehls zpool list dient der Lesbarkeit am Bildschirm und ist für Shell-Skripten nicht zu verwenden. Zur Unterstützung programmatischer Verwendungen dieses Befehls kann mithilfe der Option -H die Ausgabe der Spaltentitel unterdrückt werden, und die einzelnen Felder werden durch Leerzeichen statt durch Tabulatoren getrennt. So rufen Sie beispielsweise eine Liste aller Pool-Namen im System mithilfe der folgenden Syntax ab:
# zpool list -Ho name tank dozer |
Hier ist ein weiteres Beispiel:
# zpool list -H -o name,size tank 80.0G dozer 1.2T |
ZFS protokolliert automatisch zfs- und zpool-Befehle, durch die Pool-Zustandsinformationen geändert werden. Diese Informationen können mit dem Befehl zpool history angezeigt werden.
Die folgende Syntax zeigt beispielsweise die Befehlsausgabe für den Root-Pool:
# zpool history History for 'rpool': 2010-05-11.10:18:54 zpool create -f -o failmode=continue -R /a -m legacy -o cachefile=/tmp/root/etc/zfs/zpool.cache rpool mirror c1t0d0s0 c1t1d0s0 2010-05-11.10:18:55 zfs set canmount=noauto rpool 2010-05-11.10:18:55 zfs set mountpoint=/rpool rpool 2010-05-11.10:18:56 zfs create -o mountpoint=legacy rpool/ROOT 2010-05-11.10:18:57 zfs create -b 8192 -V 2048m rpool/swap 2010-05-11.10:18:58 zfs create -b 131072 -V 1536m rpool/dump 2010-05-11.10:19:01 zfs create -o canmount=noauto rpool/ROOT/zfsBE 2010-05-11.10:19:02 zpool set bootfs=rpool/ROOT/zfsBE rpool 2010-05-11.10:19:02 zfs set mountpoint=/ rpool/ROOT/zfsBE 2010-05-11.10:19:03 zfs set canmount=on rpool 2010-05-11.10:19:04 zfs create -o mountpoint=/export rpool/export 2010-05-11.10:19:05 zfs create rpool/export/home 2010-05-11.11:11:10 zpool set bootfs=rpool rpool 2010-05-11.11:11:10 zpool set bootfs=rpool/ROOT/zfsBE rpool |
Sie können auf Ihrem System eine ähnliche Ausgabe verwenden, um die ZFS-Befehle zu identifizieren, die bei der Behebung eines Fehlers ausgeführt wurden.
Das Verlaufsprotokoll weist folgende Merkmale auf:
Das Protokoll kann nicht deaktiviert werden.
Das Protokoll wird persistent gespeichert, es wird also neustartübergreifend geführt.
Das Protokoll wird in Form eines Ringpuffers implementiert. Die Mindestgröße beträgt 128 KB. Die Maximalgröße beträgt 32 MB.
Für kleinere Pools ist die maximale Größe auf 1 Prozent der Pool-Größe beschränkt, wobei die Größe zum Zeitpunkt der Pool-Erstellung bestimmt wird.
Das Protokoll erfordert keine Verwaltung, d. h., eine Anpassung der Protokollgröße bzw. eine Änderung des Speicherorts sind nicht nötig.
Verwenden Sie zur Identifizierung des Befehlsprotokolls eines bestimten Speicher-Pools in etwa folgende Syntax:
# zpool history tank History for 'tank': 2010-05-13.14:13:15 zpool create tank mirror c1t2d0 c1t3d0 2010-05-13.14:21:19 zfs create tank/snaps 2010-05-14.08:10:29 zfs create tank/ws01 2010-05-14.08:10:54 zfs snapshot tank/ws01@now 2010-05-14.08:11:05 zfs clone tank/ws01@now tank/ws01bugfix |
Verwenden Sie die Option -l zum Anzeigen eines langen Formats mit Benutzernamen, Hostnamen und Angabe der Zone, in der der Vorgang ausgeführt wurde. Beispiel:
# zpool history -l tank History for 'tank': 2010-05-13.14:13:15 zpool create tank mirror c1t2d0 c1t3d0 [user root on neo] 2010-05-13.14:21:19 zfs create tank/snaps [user root on neo] 2010-05-14.08:10:29 zfs create tank/ws01 [user root on neo] 2010-05-14.08:10:54 zfs snapshot tank/ws01@now [user root on neo] 2010-05-14.08:11:05 zfs clone tank/ws01@now tank/ws01bugfix [user root on neo] |
Verwenden Sie die Option -i zum Anzeigen interner Ereignisinformationen, die bei der Diagnose behilflich sein können. Beispiel:
# zpool history -i tank 2010-05-13.14:13:15 zpool create -f tank mirror c1t2d0 c1t23d0 2010-05-13.14:13:45 [internal pool create txg:6] pool spa 19; zfs spa 19; zpl 4;... 2010-05-13.14:21:19 zfs create tank/snaps 2010-05-13.14:22:02 [internal replay_inc_sync txg:20451] dataset = 41 2010-05-13.14:25:25 [internal snapshot txg:20480] dataset = 52 2010-05-13.14:25:25 [internal destroy_begin_sync txg:20481] dataset = 41 2010-05-13.14:25:26 [internal destroy txg:20488] dataset = 41 2010-05-13.14:25:26 [internal reservation set txg:20488] 0 dataset = 0 2010-05-14.08:10:29 zfs create tank/ws01 2010-05-14.08:10:54 [internal snapshot txg:53992] dataset = 42 2010-05-14.08:10:54 zfs snapshot tank/ws01@now 2010-05-14.08:11:04 [internal create txg:53994] dataset = 58 2010-05-14.08:11:05 zfs clone tank/ws01@now tank/ws01bugfix |
Mit dem Befehl zpool iostat können Sie E/A-Statistikinformationen für einen Pool bzw. ein virtuelles Datenspeichergerät abrufen. Dieser Befehl zeigt ähnlich wie der Befehl iostat eine statische ?Momentaufnahme“ aller E/A-Aktivitäten sowie aktualisierte Statistikinformationen für jedes definierte Zeitintervall an. Es werden die folgenden Statistikinformationen ausgegeben:
Die Kapazität der gegenwärtig im Pool bzw. Gerät gespeicherten Daten. Aufgrund interner Implementierungsaspekte unterscheidet sich dieser Wert geringfügig von der für die betreffenden Dateisysteme verfügbaren Festplattenkapazität.
Weitere Informationen zu Unterschieden zwischen Pool- und Dataset-Speicherplatz finden Sie in Berechnung von ZFS-Festplattenkapazität.
Die im Pool bzw. Gerät verfügbare Festplattenkapazität. Wie in der used-Statistik unterscheidet sich dieser Wert geringfügig von der für Datasets verfügbaren Festplattenkapazität.
Die Anzahl der zum Pool bzw. Gerät gesendeten E/A-Vorgänge einschließlich Metadaten-Anforderungen.
Die Anzahl der zum Pool bzw. Gerät gesendeten E/A-Schreiboperationen.
Die Bandbreite aller Leseoperationen (einschließlich Metadaten) in Einheiten pro Sekunde.
Die Bandbreite aller Schreiboperationen in Einheiten pro Sekunde.
Ohne Optionen zeigt der Befehl zpool iostat die bisher aufgelaufenen Statistikinformationen für alle Pools im System seit dem Hochfahren des Systems an. Beispiel:
# zpool iostat capacity operations bandwidth pool alloc free read write read write ---------- ----- ----- ----- ----- ----- ----- rpool 6.05G 61.9G 0 0 786 107 tank 31.3G 36.7G 4 1 296K 86.1K ---------- ----- ----- ----- ----- ----- ----- |
Da die angezeigten Statistikinformationen seit dem Hochfahren des Systems aufgelaufen sind, kann es sein, dass die Bandbreite bei relativ geringer Auslastung des Pools gering erscheint. Durch Angabe eines Zeitintervalls erhalten Sie ein realistischeres Bild der aktuellen Bandbreite. Beispiel:
# zpool iostat tank 2 capacity operations bandwidth pool alloc free read write read write ---------- ----- ----- ----- ----- ----- ----- tank 18.5G 49.5G 0 187 0 23.3M tank 18.5G 49.5G 0 464 0 57.7M tank 18.5G 49.5G 0 457 0 56.6M tank 18.8G 49.2G 0 435 0 51.3M |
In diesem Beispiel zeigt der Befehl alle zwei Sekunden lang die Statistikinformationen zur Auslastung für den Pool tank an, und zwar lange, bis Sie die Tastenkombination CTRL-C drücken. Als Alternative können Sie ein zusätzliches Argument (count) angeben, das die Ausführung des Befehls nach einer bestimmten Anzahl von Wiederholungen beendet. So gibt zpool iostat 2 3 beispielsweise dreimal alle zwei Sekunden (also insgesamt sechs Sekunden lang) eine Übersicht aus. Wenn nur ein einziger Pool vorhanden ist, werden die Statistikinformationen in aufeinander folgenden Zeilen angezeigt. Sind mehrere Pools vorhanden, werden die Werte für die einzelnen Pools zur besseren Lesbarkeit durch gestrichelte Linien getrennt.
Neben den globalen E/A-Statistikinformationen für einen Pool kann der Befehl zpool iostat außerdem E/A-Statistikinformationen für bestimmte virtuelle Datenspeichergeräte anzeigen. Mit diesem Befehl können Sie unverhältnismäßig langsame Datenspeichergeräte identifizieren oder die Verteilung der von ZFS generierten E/A-Vorgänge überprüfen. Zum Abrufen der vollständigen virtuellen Gerätestruktur sowie aller E/A-Statistikinformationen können Sie den Befehl zpool iostat -v nutzen. Beispiel:
# zpool iostat -v capacity operations bandwidth pool alloc free read write read write ---------- ----- ----- ----- ----- ----- ----- rpool 6.05G 61.9G 0 0 785 107 mirror 6.05G 61.9G 0 0 785 107 c1t0d0s0 - - 0 0 578 109 c1t1d0s0 - - 0 0 595 109 ---------- ----- ----- ----- ----- ----- ----- tank 36.5G 31.5G 4 1 295K 146K mirror 36.5G 31.5G 126 45 8.13M 4.01M c1t2d0 - - 0 3 100K 386K c1t3d0 - - 0 3 104K 386K ---------- ----- ----- ----- ----- ----- ----- |
Bitte beachten Sie zwei wichtige Aspekte, wenn Sie E/A-Statistikinformationen für virtuelle Geräte abrufen:
Erstens sind Statistikinformationen zur Belegung von Festplattenkapazität nur für virtuelle Geräte der obersten Hierarchieebene verfügbar. Die Art und Weise der Zuweisung von Festplattenkapazität bei virtuellen Geräten mit Datenspiegelung und RAID-Z ist implementierungsspezifisch und kann nicht in Form einer einzelnen Zahl ausgedrückt werden.
Zweitens kann es sein, dass die einzelnen Werte nicht die erwartete Summe ergeben. Insbesondere sind Werte bei Geräten mit Datenspiegelung und RAID-Z nicht genau gleich. Diese Unterschiede sind besonders nach der Erstellung eines Pools bemerkbar, da ein großer Teil der E/A-Vorgänge infolge der Pool-Erstellung direkt auf den Datenträgern ausgeführt wird, was auf der Datenspiegelungsebene nicht berücksichtigt wird. Im Laufe der Zeit gleichen sich diese Werte allmählich an. Allerdings können auch defekte, nicht reagierende bzw. außer Betrieb genommen Geräte diese Symmetrie beeinträchtigen.
Bei der Untersuchung von Statistikinformationen zu virtuellen Geräten können Sie die gleichen Optionen (Zeitintervall und Zählparameter) verwenden.
ZFS bietet eine integrierte Methode zur Untersuchung der ordnungsgemäßen Funktion von Pools und Datenspeichergeräten. Der Funktionsstatus eines Pools wird aus dem Funktionsstatus aller seiner Datenspeichergeräte ermittelt. Diese Statusinformationen werden mit dem Befehl zpool status angezeigt. Außerdem werden potenzielle Pool- und Geräteausfälle von fmd gemeldet, an der Systemkonsole angezeigt und in der Datei /var/adm/messages protokolliert.
In diesem Abschnitt wird die Ermittlung des Funktionsstatus von Pools und Datenspeichergeräten erläutert. Dieses Kapitel enthält jedoch keine Informationen zur Reparatur fehlerhafter Pools bzw. Wiederherstellen des Normalbetriebs eines Pools. Weitere Informationen zur Fehlerbehebung und Datenwiederherstellung finden Sie in Kapitel 11Problembehebung und Pool-Wiederherstellung in Oracle Solaris ZFS.
Datenspeichergeräte können sich in einem der folgenden Zustände befinden:
Das Gerät bzw. virtuelle Gerät arbeitet normal. Obwohl zeitweilige Übergangsfehler auftreten können, arbeitet das Gerät sonst einwandfrei.
Am virtuellen Gerät ist ein Fehler aufgetreten, es funktioniert jedoch noch. Dieser Zustand tritt am Häufigsten auf, wenn in einer RAID-Z-Konfiguration ein oder mehrere Datenspeichergeräte nicht mehr verfügbar sind. Die Fehlertoleranz des Pools kann beeinträchtigt werden, da ein Ausfall eines weiteren Geräts nicht behebbar sein könnte.
Auf das Gerät bzw. virtuelle Gerät kann nicht zugegriffen werden. Dieser Status zeigt normalerweise einen Totalausfall des Geräts an, bei dem ZFS mit dem Gerät keine Daten mehr austauschen kann. Wenn sich ein virtuelles Gerät der obersten Hierarchieebene in diesem Status befindet, kann auf den gesamten Pool nicht mehr zugegriffen werden.
Das Gerät wurde vom Administrator außer Betrieb genommen.
Mit dem Gerät bzw. virtuellen Gerät kann nicht kommuniziert werden. In manchen Fällen gehen Pools mit Geräten im Status UNAVAIL in den Status DEGRADED. Wenn sich ein virtuelles Gerät der obersten Hierarchieebene im Status UNAVAIL befindet, können von diesem Pool keine Daten abgerufen werden.
Das Gerät wurde bei laufendem Systembetrieb physisch ausgebaut. Die Erkennung ausgebauter Geräte ist von der jeweiligen Hardware abhängig und wird möglicherweise nicht auf allen Plattformen unterstützt.
Der Funktionsstatus eines Pools wird aus dem Funktionsstatus aller seiner Datenspeichergeräte der obersten Hierarchieebene ermittelt. Befinden sich alle virtuellen Geräte eines Pools im Status ONLINE, besitzt der Pool ebenfalls den Status ONLINE. Befindet sich eines der virtuellen Geräte eines Pools im Status DEGRADED bzw. UNAVAIL, besitzt der Pool den Status DEGRADED. Wenn sich ein virtuelles Gerät der obersten Hierarchieebene im Status FAULTED bzw. OFFLINE befindet, besitzt der Pool den Status FAULTED. Auf einen Pool im Status FAULTED kann nicht zugegriffen werden. Es können erst wieder Daten abgerufen werden, wenn erforderliche Datenspeichergeräte verbunden bzw. repariert werden. Ein Pool im Status DEGRADED bleibt zwar weiterhin aktiv, es kann jedoch sein, dass nicht das gleiche Datenredundanz- bzw. Datendurchsatzniveau wie bei einem ordnungsgemäßen Funktionieren des Pools erreicht wird.
Sie können den Funktionsstatus eines Pools mithilfe des Befehls zpool status wie folgt rasch abrufen:
# zpool status -x all pools are healthy |
Bestimmte Pools können geprüft werden, indem der Pool-Name in der Befehlssyntax angegeben wird. Pools, die sich nicht im Status ONLINE befinden, sollten auf potenzielle Probleme untersucht werden (siehe folgender Abschnitt).
Mithilfe der Option -v können Sie ausführlichere Informationen zum Funktionsstatus abrufen. Beispiel:
# zpool status -v tank pool: tank 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 Wed Jan 20 15:13:59 2010 config: NAME STATE READ WRITE CKSUM tank DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 c1t0d0 ONLINE 0 0 0 c1t1d0 UNAVAIL 0 0 0 cannot open errors: No known data errors |
Diese Ausgabe enthält eine vollständige Beschreibung darüber, warum sich der Pool in seinem gegenwärtigen Funktionsstatus befindet. Es findet sich auch eine lesbare Erläuterung des Problems und ein Verweis auf einen Artikel in der Sun Knowledge Base, wenn Sie weitere Informationen dazu benötigen. Die Artikel der Sun Knowledge Base enthalten die aktuellsten Informationen zur Behebung eines bestimmten Problems. Mithilfe der aufgeführten ausführlichen Konfigurationsinformationen sollten Sie feststellen können, welches Datenspeichergerät defekt ist und wie Sie den Pool reparieren können.
Im vorherigen Beispiel muss das defekte Datenspeichergerät ausgetauscht werden. Nach dem Austauschen des Geräts können Sie es mit dem Befehl zpool online wieder in Betrieb nehmen. Beispiel:
# zpool online tank c1t0d0 Bringing device c1t0d0 online # zpool status -x all pools are healthy |
Wenn die Eigenschaft autoreplace aktiviert ist, müssen Sie das ausgetauschte Gerät möglicherweise nicht in Betrieb nehmen.
Wenn in einem Pool ein außer Betrieb genommenes Gerät vorhanden ist, kann es mithilfe der vom Befehl ausgegebenen Informationen identifiziert werden. Beispiel:
# zpool status -x pool: tank state: DEGRADED status: One or more devices has been taken offline by the administrator. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Online the device using 'zpool online' or replace the device with 'zpool replace'. scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 15:15:09 2010 config: NAME STATE READ WRITE CKSUM tank DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 c1t0d0 ONLINE 0 0 0 c1t1d0 OFFLINE 0 0 0 48K resilvered errors: No known data errors |
In den Spalten READ und WRITE wird die Anzahl der für das betreffende Gerät gezählten E/A-Fehler angezeigt, und die Spalte CKSUM enthält die Anzahl der am Gerät aufgetretenen nicht behebbaren Prüfsummenfehler. Da beide Fehlerzähler auf einen wahrscheinlichen Geräteausfall hinweisen, sollten Sie Maßnahmen zur Behebung dieses Problems einleiten. Wenn für ein virtuelles Gerät der obersten Hierarchieebene Fehlerwerte angezeigt werden, die nicht gleich null sind, kann es sein, dass auf Daten teilweise nicht mehr zugegriffen werden kann
Das Feld errors: weist auf bekannte Datenfehler hin.
In der Befehlsausgabe des vorherigen Beispiels verursacht das außer Betrieb genommene Gerät keine Datenfehler.
Weitere Informationen zum Auffinden von Fehlern und Reparieren fehlerhafter Pools und Daten finden Sie in Kapitel 11Problembehebung und Pool-Wiederherstellung in Oracle Solaris ZFS.