In den folgenden Abschnitten wird beschrieben, wie Sie Probleme mit ZFS-Dateisystem oder Speicher-Pools erkennen und beheben können:
Die folgenden Leistungsmerkmale dienen zur Problemerkennung in ZFS-Konfigurationen:
Mithilfe des Befehls zpool status können ausführliche Informationen zum ZFS-Speicher-Pool angezeigt werden.
Pool- und Gerätefehler werden mit ZFS/FMA-Diagnosemeldungen gemeldet.
Frühere ZFS-Befehle, durch die Informationen zum Pool-Status geändert wurden, können mithilfe des Befehls zpool history angezeigt werden.
Die meisten ZFS-Probleme können mithilfe des Befehls zpool status erkannt werden. Mithilfe dieses Befehls werden verschiedene Fehlfunktionen im System analysiert, die wichtigsten Probleme erkannt und Empfehlungen zu Abhilfemaßnahmen sowie Verweise auf entsprechende Artikel in der Sun Knowledge Base angezeigt. Beachten Sie, dass der Befehl nur ein einziges Problem im Pool erkennen kann, obwohl mehrere Probleme vorhanden sein können. Bei Datenbeschädigungsfehlern wird beispielsweise stets vorausgesetzt, dass ein Datenspeichergerät ausgefallen ist. Durch den Austausch des ausgefallenen Geräts werden jedoch möglicherweise nicht alle Datenbeschädungsprobleme behoben.
Außerdem diagnostiziert und meldet ein ZFS-Diagnoseprogramm Pool- und Datenträgerausfälle. Darüber hinaus werden mit solchen Ausfällen im Zusammenhang stehende Prüfsummen-, E/A-, Geräte- und Poolfehler gemeldet. Von fmd gemeldete ZFS-Fehler werden auf der Konsole angezeigt und in der Systemprotokolldatei festgehalten. In den meisten Fällen verweist Sie die fmd-Meldung auf den Befehl zpool status, mit dessen Hilfe Sie das Problem weiter verfolgen können.
Der grundlegende Problembehebungsvorgang läuft wie folgt ab:
Suchen Sie, falls möglich, mit dem Befehl zpool history die früheren ZFS-Befehle, die vor Auftreten des Problems ausgeführt wurden. Beispiel:
# zpool history tank History for 'tank': 2010-07-15.12:06:50 zpool create tank mirror c0t1d0 c0t2d0 c0t3d0 2010-07-15.12:06:58 zfs create tank/erick 2010-07-15.12:07:01 zfs set checksum=off tank/erick |
Beachten Sie, dass in dieser Befehlsausgabe die Prüfsummen für das Dateisystem tank/erick deaktiviert sind. Diese Konfiguration wird nicht empfohlen.
Suchen Sie die Fehler in den fmd-Meldungen, die an der Systemkonsole bzw. in der Datei unter /var/adm/messages angezeigt werden.
Weitere Reparaturanweisungen finden Sie mithilfe des Befehls zpool status -x.
Beheben Sie die Probleme, indem Sie wie folgt vorgehen:
Ersetzen Sie das ausgefallen oder fehlende Gerät durch ein neues Gerät, und setzen Sie das neue Gerät in Betrieb.
Stellen Sie mithilfe einer Sicherungskopie die fehlerhafte Konfiguration bzw. die beschädigten Daten wieder her.
Überprüfen Sie die Wiederherstellung mithilfe des Befehls zpool status - x.
Erstellen Sie eine Sicherungskopie der wiederhergestellten Konfiguration (falls möglich).
In diesem Abschnitt wird beschrieben, wie Sie die Ausgabe des Befehls zpool status interpretieren, damit Sie Fehler diagnostizieren können. Obwohl die meisten Aufgaben automatisch mithilfe des Befehls ausgeführt werden, müssen Sie genau wissen, um welche Probleme es sich handelt, damit Sie den Ausfall diagnostizieren können. In den nachfolgenden Abschnitten wird beschrieben, wie Sie verschiedenen vorgefundene Probleme beheben können.
Mit dem Befehl zpool status -x können Sie am einfachsten herausfinden, ob in einem System Probleme vorliegen. Mithilfe dieses Befehls werden nur Pools angezeigt, die problembehaftet sind. Wenn in einem System alle Pools ordnungsgemäß funktionieren, wird nur Folgendes angezeigt:
# zpool status -x all pools are healthy |
Ohne das Flag -x werden mithilfe des Befehls die gesamten Statusinformationen aller Pools (oder eines in der Befehlszeile angegebenen Pools) angezeigt, auch wenn diese ordnungsgemäß funktionieren.
Weitere Informationen zu Befehlszeilenoptionen des Befehls zpool status finden Sie unter Abfragen des Status von ZFS-Speicher-Pools.
Die gesamte Ausgabe des Befehls zpool status sieht ungefähr wie folgt aus:
# zpool status tank # zpool status 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: none requested 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 |
Es folgt eine Beschreibung dieser Ausgabe:
Dieser Abschnitt der Ausgabe des Befehls zpool status enthält die folgenden Felder (einige dieser Felder werden nur angezeigt, wenn im Pool Probleme auftreten):
Gibt den Namen des Pools an.
Zeigt den aktuellen Funktionsstatus des Pools an. Diese Informationen beziehen sich lediglich auf die Fähigkeit des Pools, für die erforderliche Replikation zu sorgen.
Beschreibt, was mit dem Pool nicht in Ordnung ist. Dieses Feld wird nicht angezeigt, wenn keine Fehler gefunden wurden.
Eine empfohlene Aktion zur Fehlerbehebung. Dieses Feld wird nicht angezeigt, wenn keine Fehler gefunden wurden.
Verweist auf einen Artikel in der Sun Knowledge Base, der ausführliche Reparaturinformationen enthält. Online-Artikel werden öfter als dieses Handbuch aktualisiert und enthalten stets die aktuellsten Reparaturanweisungen. Dieses Feld wird nicht angezeigt, wenn keine Fehler gefunden wurden.
Zeigt den aktuellen Status einer Bereinigung an (Datum und Uhrzeit der letzten Bereinigung, Informationen zu einer laufenden Bereinigung, Informationen zur Anforderung von Bereinigungen).
Zeigt bekannte bzw. unbekannte Datenfehler an.
Das Feld config in der Ausgabe des Befehls zpool status beschreibt die Konfigurationsstruktur der Datenspeichergeräte, die den Pool bilden, sowie deren Status und die von diesen Geräten herrührenden Fehler. Der Status kann die folgenden Werte annehmen: ONLINE, FAULTED, DEGRADED, UNAVAIL oder OFFLINE. Wenn der Status eines Pools nicht ONLINE ist, wurde die Fehlertoleranz des Pools eingeschränkt.
Im zweiten Abschnitt der Konfigurationsinformationen wird die Fehlerstatistik angezeigt. Diese Fehler werden in drei Kategorien eingeteilt:
READ – E/A-Fehler während der Ausgabe einer Leseanforderung
WRITE – E/A-Fehler während der Ausgabe einer Schreibanforderung
CKSUM – Prüfsummenfehler, d. h., das Gerät hat nach einer Leseanforderung beschädigte Daten zurückgegeben.
Mithilfe dieser Kategorien kann ermittelt werden, ob es sich um bleibende Schäden handelt. Eine geringe Anzahl auftretender E/A-Fehler kann die Folge zeitweiliger Ausfälle sein, während eine größere Anzahl an E/A-Fehlern auf ein bleibendes Problem mit dem entsprechenden Gerät hinweisen kann. Bei diesen Fehlern muss es sich nicht unbedingt um Datenbeschädigung handeln, auch wenn sie von den Anwendungen so interpretiert werden. Wenn das Gerät zu einer redundanten Konfiguration gehört, kann es sein, dass die Datenträger nicht behebbare Fehler aufweisen, während auf der RAID-Z- bzw. Datenspiegelungsebene keine Fehler angezeigt werden. In solchen Fällen hat ZFS die unbeschädigten Daten erfolgreich abgerufen und versucht, die beschädigten Daten durch vorhandene Replikationen zu ersetzen.
Weitere Informationen zur Interpretation dieser Fehler finden Sie unter Ermitteln des Gerätefehlertyps.
Zusätzliche hilfreiche Informationen werden in der letzten Spalte der Ausgabe des Befehls zpool status angezeigt. Diese Information ergänzen die im Feld state enthaltenen Informationen und helfen bei der Diagnose von Fehlern. Bei Datenspeichergeräten mit dem Status FAULTED zeigt dieses Feld an, ob auf das betreffende Gerät zugegriffen werden kann oder die Daten auf dem Gerät beschädigt sind. Wenn auf das Datenspeichergerät mithilfe von Resilvering Daten neu aufgespielt werden, zeigt dieses Feld den Verlauf dieses Vorgangs an.
Weitere Informationen zur Überwachung des Resilvering-Vorgangs finden Sie in Anzeigen des Resilvering-Status.
Im Bereinigungsabschnitt der Ausgabe des Befehls zpool status wird der aktuelle Status von Bereinigungsvorgängen angezeigt, die explizit ausgeführt werden. Diese Informationen weisen nicht auf Fehler hin, die im System aufgetreten sind, können aber zum Ermitteln der Genauigkeit des Meldens von Datenbeschädigungsfehlern herangezogen werden. Wenn die letzte Bereinigung erst vor kurzem ausgeführt wurde, sind Datenbeschädigungen höchstwahrscheinlich bereits bekannt.
Meldungen zum Abschluss von Bereinigungen bleiben nach Systemneustarts erhalten.
Weitere Informationen zur Datenbereinigung und zur Interpretation dieser Informationen finden Sie unter Überprüfen der Integrität des ZFS-Dateisystems.
Der Befehl zpool status zeigt auch an, ob im Zusammenhang mit einem Pool bekannte Fehler aufgetreten sind. Diese Fehler können während der Datenbereinigung oder im Normalbetrieb gefunden worden sein. ZFS führt ein kontinuierliches Protokoll aller mit einem Pool im Zusammenhang stehenden Datenfehler. Nach jedem Abschluss einer vollständigen Systembereinigung wird das Protokoll entsprechend aktualisiert.
Datenbeschädigungsfehler sind stets schwerwiegend. Ihr Vorhandensein weist darauf hin, dass bei mindestens einem Anwendungsprogramm aufgrund beschädigter Daten im Pool ein E/A-Fehler aufgetreten ist. Gerätefehler innerhalb eines redundanten Pools verursachen keine Datenbeschädigung und werden in diesem Protokoll nicht festgehalten. Standardmäßig wird nur die Anzahl der gefundenen Fehler angezeigt. Eine vollständige Liste mit Fehlern und deren Informationen kann mit dem Befehl zpool status -v angezeigt werden. Beispiel:
# zpool status -v pool: tank state: UNAVAIL status: One or more devices are faulted in response to IO failures. action: Make sure the affected devices are connected, then run 'zpool clear'. see: http://www.sun.com/msg/ZFS-8000-HC scrub: scrub completed after 0h0m with 0 errors on Tue Feb 2 13:08:42 2010 config: NAME STATE READ WRITE CKSUM tank UNAVAIL 0 0 0 insufficient replicas c1t0d0 ONLINE 0 0 0 c1t1d0 UNAVAIL 4 1 0 cannot open errors: Permanent errors have been detected in the following files: /tank/data/aaa /tank/data/bbb /tank/data/ccc |
Eine ähnliche Meldung wird auch von fmd auf der Systemkonsole angezeigt und in der Datei /var/adm/messages protokolliert. Diese Meldungen können auch mit dem Befehl fmdump verfolgt werden.
Weitere Informationen zur Interpretation von Datenbeschädigungsfehlern finden Sie unter Ermitteln der Art der Datenbeschädigung.
Neben der kontinuierlichen Verfolgung von Fehlern innerhalb eines Pools zeigt ZFS beim Auftreten bestimmter Ereignisse auch Systemprotokollmeldungen an. In den folgenden Situationen werden Ereignisse zur Benachrichtigung des Administrators ausgelöst:
Statusübergang eines Datenspeichergeräts – Wenn ein Datenspeichergerät in den Status FAULTED übergeht, protokolliert ZFS eine Meldung, die darauf hinweist, dass die Fehlertoleranz des Pools beeinträchtigt werden könnte. Eine ähnliche Meldung wird gesendet, wenn das Gerät später wieder in Betrieb genommen und die ordnungsgemäße Pool-Funktion wiederhergestellt wird.
Datenbeschädigung – Beim Erkennen von Datenbeschädigungen protokolliert ZFS eine Meldung, die beschreibt, wann und wo die Datenbeschädigung erkannt wurde. Diese Meldung wird nur beim allerersten Auftreten des Ereignisses protokolliert. Ein nachfolgendes Auftreten dieser Ereignisses löst keine Meldung mehr aus.
Pool- und Geräteausfälle – Wenn ein Pool oder Gerät ausfällt, meldet der Fehlerverwaltungsdämon diese Fehler mithilfe von Systemprotokollmeldungen und mit dem Befehl fmdump.
Wenn ZFS einen Gerätefehler erkennt und diesen automatisch behebt, wird keine Benachrichtigung gesendet. Solche Fehler stellen keine Einschränkung der Pool-Redundanz bzw. Datenintegrität dar und sind darüber hinaus normalerweise die Folge eines Treiberproblems mit eigenen entsprechenden Fehlermeldungen.