Navigationslinks überspringen | |
Druckansicht beenden | |
![]() |
Oracle Solaris ZFS-Administrationshandbuch Oracle Solaris 10 1/13 Information Library (Deutsch) |
1. Oracle Solaris ZFS-Dateisystem (Einführung)
2. Erste Schritte mit Oracle Solaris ZFS
3. Verwalten von Oracle Solaris ZFS-Speicher-Pools
4. Installieren und Booten eines Oracle Solaris ZFS-Root-Dateisystems
5. Verwalten von Oracle Solaris ZFS-Dateisystemen
6. Arbeiten mit Oracle Solaris ZFS-Schnappschüssen und -Klonen
7. Schützen von Oracle Solaris ZFS-Dateien mit Zugriffskontrolllisten und Attributen
8. Delegierte Oracle Solaris ZFS-Administration
9. Fortgeschrittene Oracle Solaris ZFS-Themen
10. Problembehebung und Pool-Wiederherstellung in Oracle Solaris ZFS
Identifizieren von ZFS-Problemen
Abhilfe bei allgemeinen Hardwareproblemen
Identifizieren von Hardware- und Gerätefehlern
Systemprotokoll mit ZFS-Fehlermeldungen
Identifizieren von Problemen mit ZFS-Speicherpools
Ermitteln, ob in einem ZFS-Speicher-Pool Probleme vorhanden sind
Überprüfen der Ausgabe des Befehls zpool status
Gesamtinformationen zum Pool-Status
Informationen zur Konfiguration des ZFS-Speicherpools
Bereinigungsstatus des ZFS-Speicherpools
Abhilfe bei Problemen mit ZFS-Speichergeräten
Abhilfe bei fehlendem oder entferntem Gerät
Wiedereinbinden eines Datenspeichergeräts
Benachrichtigung von ZFS nach Wiederherstellung der Verfügbarkeit
Ersetzen oder Reparieren eines beschädigten Geräts
Ermitteln des Gerätefehlertyps
Zurücksetzen vorübergehender Gerätefehler
Austauschen eines Datenspeichergeräts in einem ZFS-Speicher-Pool
Ermitteln, ob ein Gerät ausgetauscht werden kann
Datenspeichergeräte, die nicht ausgetauscht werden können
Austauschen eines Datenspeichergeräts in einem ZFS-Speicher-Pool
Abhilfe bei Problemen mit ZFS-Dateisystemen
Abhilfe bei Datenproblemen in einem ZFS-Speicherpool
Überprüfen der Integrität des ZFS-Dateisystems
Kontrollieren der ZFS-Datenbereinigung
Explizite ZFS-Datenbereinigung
ZFS-Datenbereinigung und Resilvering
Abhilfe bei ZFS-Speicherplatzproblemen
Speicherplatzprotokollierung bei ZFS-Dateisystem
Speicherplatzprotokollierung bei ZFS-Speicherpool
Ermitteln der Art der Datenbeschädigung
Reparatur beschädigter Dateien bzw. Verzeichnisse
Abhilfe bei beschädigten Daten mit mehreren Blockreferenzen
Reparieren von Schäden am gesamten ZFS-Speicher-Pool
Reparieren einer beschädigten ZFS-Konfiguration
Reparieren eines Systems, das nicht hochgefahren werden kann
11. Empfohlene Oracle Solaris ZFS-Vorgehensweisen
In den folgenden Abschnitten wird beschrieben, wie Sie Probleme mit einem fehlenden, entfernten oder fehlerhaften Gerät beheben.
Wenn auf ein Gerät nicht zugegriffen werden kann, wird es in der Ausgabe des Befehls zpool status mit dem Status UNAVAIL angezeigt. Dieser Status bedeutet, dass ZFS beim ersten Zugriff auf den Pool nicht auf das betreffende Datenspeichergerät zugreifen konnte oder es seitdem nicht mehr verfügbar ist. Wenn durch dieses Datenspeichergerät ein virtuelles Gerät der obersten Hierarchieebene nicht mehr verfügbar ist, können von diesem Pool keine Daten abgerufen werden. Andernfalls kann die Fehlertoleranz des Pools beeinträchtigt werden. In beiden Fällen muss das Gerät dem System nur wieder zugeordnet werden, um den normalen Betrieb wiederherzustellen. Wenn Sie ein Gerät ersetzen müssen, das sich wegen eines Fehlers im Status UNAVAIL befindet, wird auf Austauschen eines Datenspeichergeräts in einem ZFS-Speicher-Pool verwiesen.
Wenn sich ein Gerät in einem Root-Pool oder einem gespiegelten Root-Pool im Status UNAVAIL wird auf folgende Referenzen verwiesen:
Fehlerhafte Festplatte bei einem gespiegelten Root-Pool – Booten von einer alternativen Festplatte in einem gespiegelten ZFS-Root-Pool
Ersetzen einer Festplatte in einem Root-Pool
Vollständige Notfallwiederherstellung eines Root-Pools – Wiederherstellen von ZFS-Root-Pools oder Root-Pool-Snapshots
Nach einem Geräteausfall wird von fmd in etwa die folgende Meldung angezeigt:
SUNW-MSG-ID: ZFS-8000-FD, TYPE: Fault, VER: 1, SEVERITY: Major EVENT-TIME: Thu Jun 24 10:42:36 PDT 2010 PLATFORM: SUNW,Sun-Fire-T200, CSN: -, HOSTNAME: daleks SOURCE: zfs-diagnosis, REV: 1.0 EVENT-ID: a1fb66d0-cc51-cd14-a835-961c15696fcb DESC: The number of I/O errors associated with a ZFS device exceeded acceptable levels. Refer to http://sun.com/msg/ZFS-8000-FD for more information. AUTO-RESPONSE: The device has been offlined and marked as faulted. An attempt will be made to activate a hot spare if available. IMPACT: Fault tolerance of the pool may be compromised. REC-ACTION: Run 'zpool status -x' and replace the bad device.
Um ausführlichere Informationen zu Geräteproblemen und deren Behebung anzuzeigen, verwenden Sie den Befehl zpool status -x. Beispiel:
# zpool status -x 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 scan: scrub repaired 0 in 0h0m with 0 errors on Tue Sep 27 16:59:07 2011 config: NAME STATE READ WRITE CKSUM tank DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 c2t2d0 ONLINE 0 0 0 c2t1d0 UNAVAIL 0 0 0 cannot open errors: No known data errors
Diese Befehlsausgabe zeigt, dass das Gerät c2t1d0 nicht funktioniert. Wenn das Gerät fehlerhaft ist, ersetzen Sie es.
Falls erforderlich setzen Sie das ersetzte Gerät dann mit dem Befehl zpool online online. Beispiel:
# zpool online tank c2t1d0
Teilen Sie FMA mit, dass das Gerät ersetzt wurde, wenn die Ausgabe von fmadm faulty den Gerätefehler identifiziert. Beispiel:
# fmadm faulty --------------- ------------------------------------ -------------- --------- TIME EVENT-ID MSG-ID SEVERITY --------------- ------------------------------------ -------------- --------- Sep 27 16:58:50 e6bb52c3-5fe0-41a1-9ccc-c2f8a6b56100 ZFS-8000-D3 Major Host : neo Platform : SUNW,Sun-Fire-T200 Chassis_id : Product_sn : Fault class : fault.fs.zfs.device Affects : zfs://pool=tank/vdev=c75a8336cda03110 faulted and taken out of service Problem in : zfs://pool=tank/vdev=c75a8336cda03110 faulted and taken out of service Description : A ZFS device failed. Refer to http://sun.com/msg/ZFS-8000-D3 for more information. Response : No automated response will occur. Impact : Fault tolerance of the pool may be compromised. Action : Run 'zpool status -x' and replace the bad device. # fmadm repaired zfs://pool=tank/vdev=c75a8336cda03110
Als Letztes stellen Sie sicher, dass der Pool mit dem ersetzten Datenspeichergerät ordnungsgemäß funktioniert. Beispiel:
# zpool status -x tank pool 'tank' is healthy
Wenn ein Datenspeichergerät vollständig aus dem System entfernt wird, erkennt ZFS, dass es nicht geöffnet werden kann und versetzt es in den Zustand REMOVED. Je nach der Datenreplikationsebene des betreffenden Pools kann es sein, dass durch das Entfernen der gesamte Pool nicht mehr zur Verfügung steht. Bei der Entfernung eines Datenträgers in Konfigurationen mit Datenspiegelung oder RAID-Z bleibt der Pool weiterhin verfügbar. Ein Pool kann in den Zustand REMOVED versetzt werden, was bedeutet, dass Daten erst dann wieder verfügbar sind, wenn das Gerät wieder eingebunden wurde. Dies gilt unter folgenden Bedingungen:
wenn alle Komponenten einer Spiegelung entfernt werden
wenn mehrere Geräte in einem RAID-Z-Gerät (raidz1) entfernt werden
wenn ein Gerät der obersten Hierarchieebene in einer Konfiguration mit einer Festplatte entfernt wird
Die Art und Weise, wie ein fehlendes Datenspeichergerät wieder in ein System eingebunden wird, hängt vom jeweiligen Gerät ab. Wenn auf das Gerät über das Netzwerk zugegriffen wird, muss die Netzwerkverbindung wiederhergestellt werden. Wenn das Datenspeichergerät ein USB-Gerät oder ein anderer Wechseldatenträger ist, muss es wieder an das System angeschlossen werden. Wenn es sich bei dem betreffenden Gerät um eine lokale Festplatte handelt, kann es sein, dass das Gerät aufgrund eines Controller-Ausfalls nicht mehr vom System erkannt wird. In diesem Fall muss der Controller ausgetauscht werden, wonach die betreffenden Datenträger wieder verfügbar sind. Es können noch weitere Probleme vorliegen, die mit der der Art der Hardware und ihrer Konfiguration in Zusammenhang stehen. Wenn ein Laufwerk ausfällt und vom System nicht mehr erkannt wird, muss das Datenspeichergerät als beschädigt eingestuft werden. Folgen Sie der unter Ersetzen oder Reparieren eines beschädigten Geräts beschriebenen Vorgehensweise.
ein Pool könnte sich im Status SUSPENDED befinden, wenn die Verbindung zu dem Gerät unterbrochen ist. Ein SUSPENDED Pool bleibt im Wartezustand, bis das Geräteproblem behoben ist. Beispiel:
# zpool status cybermen pool: cybermen state: SUSPENDED status: One or more devices are unavailable in response to IO failures. The pool is suspended. action: Make sure the affected devices are connected, then run 'zpool clear' or 'fmadm repaired'. see: http://www.sun.com/msg/ZFS-8000-HC scan: none requested config: NAME STATE READ WRITE CKSUM cybermen UNAVAIL 0 16 0 c8t3d0 UNAVAIL 0 0 0 c8t1d0 UNAVAIL 0 0 0
Nachdem die Verbindung zu dem Gerät wiederhergestellt ist, setzen Sie die Pool- oder Gerätefehler zurück.
# zpool clear cybermen # fmadm repaired zfs://pool=name/vdev=guid
Nach dem Wiedereinbinden eines Datenspeichergeräts in das System erkennt ZFS unter Umständen seine Verfügbarkeit automatisch. Dies muss aber nicht so ein. Wenn der Pool vorher UNAVAIL oder SUSPENDED war oder das System während der attach-Prozedur neu gestartet wurde, sucht ZFS automatisch alle Datenspeichergeräte ab, während es versucht, auf den Pool zuzugreifen. Wenn der Pool in seiner Funktionstüchtigkeit beeinträchtigt war und das Gerät während des Systembetriebs ausgetauscht wurde, müssen Sie ZFS mithilfe des Befehls zpool online benachrichtigen, dass das Gerät jetzt wieder verfügbar ist und wieder auf das Gerät zugegriffen werden kann. Beispiel:
# zpool online tank c0t1d0
Weitere Informationen zum Inbetriebnehmen von Geräten finden Sie unter Inbetriebnehmen eines Gerätes.
In diesem Abschnitt wird beschrieben, wie die verschiedenen Fehlertypen eines Datenspeichergerätes ermittelt, vorübergehende Fehler gelöscht und Geräte ausgetauscht werden können.
Der Begriff beschädigtes Gerät ist nicht klar umrissen und kann verschiedene mögliche Situationen beschreiben:
Bitfäule – Mit der Zeit können äußere Einflüsse wie Magnetfelder und kosmische Strahlung dazu führen, dass auf Datenträgern gespeicherte Bits unvorhergesehene Werte annehmen. Solche Ereignisse sind relativ selten, treten aber häufig genug auf, um potenzielle Datenbeschädigung in größeren und lange laufenden Systemen zu verursachen.
Fehlgeleitete Lese- oder Schreibvorgänge – Firmware- oder Hardwarebug können dazu führen, dass Lese- oder Schreibvorgänge ganzer Datenblöcke auf den falschen Bereich auf dem Datenträger verweisen. Diese Fehler sind normalerweise vorübergehend, obwohl eine große Anzahl solcher Fehler auf ein fehlerhaftes Laufwerk hinweisen kann.
Administratorfehler – Administratoren können versehentlich Datenträgerbereiche mit ungültigen Daten überschreiben (z. B. das Kopieren von /dev/zero auf bestimmte Datenträgerbereiche) und so Daten auf dem Datenträger dauerhaft beschädigen. Solche Fehler sind stets vorübergehend.
Zeitweilige Ausfälle – Datenträger können zeitweilig ausfallen, wodurch E/A-Vorgänge fehlschlagen. Diese Situation tritt normalerweise bei Datenspeichergeräten auf, auf die über das Netzwerk zugegriffen wird, obwohl auch bei lokalen Datenträgern solche Ausfälle auftreten können. Solche Fehler sind können vorübergehend sein.
Fehlerhafte bzw. unzuverlässig arbeitende Hardware – Unter diese Kategorie fallen alle durch fehlerhafte Hardware verursachten Probleme. Dies können dauerhafte E/A-Fehler, falscher Datentransport und daraus folgende regellose Datenbeschädigung sowie eine Reihe anderer Fehler sein. Solche Fehler sind normalerweise dauerhaft.
Außer Betrieb genommene Datenspeichergeräte – Wenn ein Gerät außer Betrieb genommen wurde, wird angenommen, dass es der Administrator in diesen Zustand versetzt hat, weil es fehlerhaft ist. Der Administrator, der das Gerät in diesen Zustand versetzt hat, kann überprüfen, ob diese Annahme richtig ist.
Die genaue Ermittlung von Fehlerursachen kann sich schwierig gestalten. Der erste Schritt besteht darin, die Fehlerzähler in der Ausgabe des Befehls zpool status zu überprüfen. Beispiel:
# zpool status -v tank pool: tank state: ONLINE status: One or more devices has experienced an error resulting in data corruption. Applications may be affected. action: Restore the file in question if possible. Otherwise restore the entire pool from backup. see: http://www.sun.com/msg/ZFS-8000-8A scan: scrub in progress since Tue Sep 27 17:12:40 2011 63.9M scanned out of 528M at 10.7M/s, 0h0m to go 0 repaired, 12.11% done config: NAME STATE READ WRITE CKSUM tank ONLINE 2 0 0 mirror-0 ONLINE 2 0 0 c2t2d0 ONLINE 2 0 0 c2t1d0 ONLINE 2 0 0 errors: Permanent errors have been detected in the following files: /tank/words
Die Fehler werden in E/A- und Prüfsummenfehler unterteilt. Daraus lässt sich unter Umständen auf den Fehlertyp schließen. Im Normalbetrieb treten während einer langen Systemlaufzeit nur einige wenige Fehler auf. Wenn eine hohe Anzahl von Fehlern angezeigt wird, deutet dies wahrscheinlich auf einen bevorstehenden bzw. vollständigen Geräteausfall hin. Ein Administratorfehler kann jedoch ebenfalls zu hohen Fehleranzahlen führen. Eine weitere Informationsquelle ist das Systemprotokoll. Wenn das Protokoll eine große Anzahl an Meldungen von SCSI- bzw. Fibre Channel-Treibern enthält, weist dies möglicherweise auf schwerwiegende Hardwareprobleme hin. Wenn keine Systemmeldungen protokolliert werden, ist der Schaden wahrscheinlich vorübergehend.
Das Ziel besteht in der Beantwortung der folgenden Frage:
Ist es wahrscheinlich, dass an diesem Gerät wieder ein Fehler auftritt?
Nur einmal auftretende Fehler werden als vorübergehend eingestuft und ziehen keine potenziellen Ausfälle nach sich. Fehler, die dauerhaft oder ernstlich genug sind, um potenzielle Hardwareausfälle auszulösen, werden als schwerwiegend eingestuft. Die Ermittlung von Fehlertypen sprengt den Rahmen der gegenwärtig mit ZFS verfügbaren automatisierten Softwarelösungen und muss manuell vom Administrator durchgeführt werden. Nach der Ermittlung des Fehlertyps können entsprechende Abhilfemaßnahmen ergriffen werden. Diese bestehen entweder im Löschen vorübergehender Fehler oder im Austauschen des betreffenden Datenspeichergeräts aufgrund schwerwiegender Fehler. Die entsprechenden Reparaturvorgänge werden in den nächsten Abschnitten erläutert.
Auch wenn Gerätefehler als vorübergehend eingestuft wurden, können sie trotzdem nicht mehr rückgängig zu machende Datenfehler im Pool verursacht haben. Diese Fehler erfordern auch dann spezielle Reparaturmaßnahmen, wenn das zugrunde liegende Datenspeichergerät ordnungsgemäß funktioniert oder anderweitig repariert wurde. Weitere Informationen zum Beseitigen von Datenfehlern finden Sie unter Reparieren beschädigter Daten.
Wenn Gerätefehler als vorübergehend eingestuft wurden und die zukünftige ordnungsgemäße Funktion des betreffenden Datenspeichergeräts nicht beeinträchtigen, können sie gelöscht werden. Damit wird angezeigt, dass kein schwerwiegender Fehler aufgetreten ist. Mit dem Befehl zpool clear können Sie Fehlerzähler für Datenspeichergeräte mit RAID-Z- bzw. Datenspiegelungskonfigurationen zurücksetzen. Beispiel:
# zpool clear tank c1t1d0
Mithilfe dieser Syntax werden alle Fehler gelöscht und alle Fehlerzähler zurückgesetzt, die mit dem betreffenden Datenspeichergerät in Zusammenhang stehen.
Zum Löschen aller mit den virtuellen Geräten im Pool in Verbindung stehenden Fehler und Zurücksetzen aller Fehlerzähler dient die folgende Syntax:
# zpool clear tank
Weitere Informationen zum Löschen von Pool-Fehlern finden Sie unter Löschen von Gerätefehlern im Speicher-Pool.
Wenn ein Datenspeichergerät dauerhaft beschädigt ist bzw. ein solcher Schaden bevorsteht, muss es ausgetauscht werden. Ob das betreffende Gerät ersetzt werden kann, hängt von der Konfiguration ab.
Wenn das zu ersetzende Gerät zu einer redundanten Konfiguration gehört, müssen ausreichende Replikationen vorhanden sein, aus denen unbeschädigte Daten wiederhergestellt werden können. Wenn beispielsweise zwei Datenträger in einer vierfachen Datenspiegelungskonfiguration UNAVAIL sind, können beide Datenträger ausgetauscht werden, da gültige Datenreplikationen vorhanden sind. Wenn jedoch zwei Datenträger in einer vierfachen RAID-Z-Konfiguration raidz1 UNAVAIL sind, kann keiner der beiden Datenträger ausgetauscht werden, da nicht genügend gültige Datenreplikationen verfügbar sind, aus denen Daten wiederhergestellt werden können. Wenn das Gerät beschädigt, aber noch in Betrieb ist, kann es ausgetauscht werden, solange sich der Pool nicht im Status UNAVAIL befindet. Wenn nicht genügend Replikationen mit gültigen Daten verfügbar sind, werden jedoch auch die beschädigten Daten auf das neue Datenspeichergerät kopiert.
In der folgenden Konfiguration kann der Datenträger c1t1d0 ausgetauscht werden, und die gesamten Daten im Pool werden von der ordnungsgemäßen Replikation c1t0d0 kopiert.
mirror DEGRADED c1t0d0 ONLINE c1t1d0 FAULTED
Der Datenträger c1t0d0 kann ebenfalls ausgetauscht werden, obwohl keine Datenselbstheilung erfolgen kann, da keine ordnungsgemäße Datenreplikation vorhanden ist.
In der folgenden Konfiguration kann keiner der Datenträger im Status UNAVAIL ausgetauscht werden. Die Datenträger mit dem Status ONLINE können ebenfalls nicht ausgetauscht werden, da der Pool selbst UNAVAIL ist.
raidz FAULTED c1t0d0 ONLINE c2t0d0 FAULTED c3t0d0 FAULTED c4t0d0 ONLINE
In der folgenden Konfiguration können alle Datenträger der obersten Hierarchieebene ausgetauscht werden, obwohl auch auf den alten Datenträgern befindliche ungültige Daten auf den neuen Datenträger kopiert werden.
c1t0d0 ONLINE c1t1d0 ONLINE
Wenn einer der Datenträger UNAVAIL ist, kann nichts ausgetauscht werden, da dann der Pool selbst UNAVAIL ist.
Wenn ein Pool durch den Ausfall eines Datenspeichergeräts UNAVAIL wird oder das betreffende Gerät in einer nicht redundanten Konfiguration zu viele Datenfehler enthält, kann es nicht sicher ausgetauscht werden. Ohne ausreichende Redundanz sind keine entsprechenden gültigen Daten vorhanden, die die Fehler auf dem beschädigten Gerät beseitigen könnten. In einem solchen Fall besteht nur die Möglichkeit, den Pool zu löschen, die Konfiguration neu zu erstellen und die Daten aus einer Sicherungskopie wiederherzustellen.
Weitere Informationen zum Wiederherstellen eines gesamten Pools finden Sie unter Reparieren von Schäden am gesamten ZFS-Speicher-Pool.
Wenn Sie ermittelt haben, dass ein Datenspeichergerät ausgetauscht werden kann, können Sie es mithilfe des Befehls zpool replace ersetzen. Um ein beschädigtes Gerät durch ein anderes Gerät zu ersetzen, verwenden Sie folgende Syntax:
# zpool replace tank c1t1d0 c2t0d0
Mithilfe dieses Befehls werden Daten vom beschädigten Gerät oder von anderen Geräten im Pool, sofern sich dieser in einer redundanten Konfiguration befindet, auf das neue Gerät migriert. Nach Abschluss des Befehls wird das beschädigte Datenspeichergerät von der Konfiguration abgetrennt und kann dann aus dem System entfernt werden. Wenn Sie das Datenspeichergerät bereits entfernt und an der gleichen Stelle durch ein neues Gerät ersetzt haben, sollten Sie das Einzelgeräteformat des Befehls verwenden. Beispiel:
# zpool replace tank c1t1d0
Mithilfe dieses Befehls wird das neue Datenspeichergerät formatiert, und anschließend werden die Daten aus der Konfiguration durch Resilvering aufgespielt.
Weitere Informationen zum Befehl zpool replace finden Sie unter Austauschen von Geräten in einem Speicher-Pool.
Beispiel 10-1 Austauschen einer SATA-Festplatte in einem ZFS-Speicherpool
Das folgende Beispiel zeigt, wie ein Gerät (c1t3d0) in einem Speicherpool mit Datenspiegelung tank auf einem System mit SATA-Geräten ersetzt wird. Um die Festplatte c1t3d0 durch eine neue Festplatte an derselben Position (c1t3d0) ersetzen, müssen Sie die Festplatte zunächst dekonfigurieren. Wenn die zu ersetzende Festplatte keine SATA-Festplatte ist, wird auf Austauschen von Geräten in einem Speicher-Pool verwiesen.
Der Vorgang wird im Wesentlichen wie folgt durchgeführt:
Nehmen Sie die Festplatte (c1t3d0), die ersetzt werden soll, außer Betrieb. Eine in Gebrauch befindliche SATA-Festplatte kann nicht dekonfiguriert werden.
Verwenden Sie den Befehl cfgadm, um die SATA-Festplatte (c1t3d0) zu ermitteln, und entfernen Sie sie aus der Konfiguration. Der Pool wird durch die außer Betrieb genommene Festplatte in der Datenspiegelungskonfiguration in einen eingeschränkten Zustand versetzt, bleibt aber weiterhin verfügbar.
Ersetzen Sie die Festplatte physisch (c1t3d0). Vergewissern Sie sich vor dem Ausbauen des UNAVAIL-Laufwerks, dass die blaue LED Ready to Remove leuchtet.
Konfigurieren Sie die SATA-Festplatte (c1t3d0) neu.
Setzen Sie die neue Festplatte (c1t3d0) in Betrieb.
Führen Sie den Befehl zpool replace aus, um die Festplatte (c1t3d0) zu ersetzen.
Hinweis - Wenn Sie zuvor die Eigenschaft autoreplace des Pools auf on gesetzt haben, wird jedes neue Gerät, das sich an der gleichen Stelle befindet, an der sich zuvor ein anderes zum Pool gehörendes Geräts befand, automatisch formatiert und ohne den Befehl zpool replace ersetzt. Dieses Leistungsmerkmal wird möglicherweise nicht auf jeder Art von Hardware unterstützt.
Wenn eine ausgefallene Festplatte automatisch durch eine Hot-Spare-Festplatte ersetzt wurde, müssen Sie die Hot-Spare-Festplatte möglicherweise nach dem Ersetzen der ausgefallenen Festplatte abtrennen. Wenn c2t4d0 beispielsweise noch immer eine aktive Hot-Spare-Festplatte ist, nachdem die ausgefallene Festplatte ersetzt wurde, trennen Sie sie ab.
# zpool detach tank c2t4d0
Wenn FMA das fehlerhafte Gerät protokolliert, müssen Sie den Gerätefehler zurücksetzen.
# fmadm faulty # fmadm repaired zfs://pool=name/vdev=guid
Im folgenden Beispiel wird gezeigt, wie eine Festplatte in einem ZFS-Speicher-Pool ersetzt wird.
# zpool offline tank c1t3d0 # cfgadm | grep c1t3d0 sata1/3::dsk/c1t3d0 disk connected configured ok # cfgadm -c unconfigure sata1/3 Unconfigure the device at: /devices/pci@0,0/pci1022,7458@2/pci11ab,11ab@1:3 This operation will suspend activity on the SATA device Continue (yes/no)? yes # cfgadm | grep sata1/3 sata1/3 disk connected unconfigured ok <Physically replace the failed disk c1t3d0> # cfgadm -c configure sata1/3 # cfgadm | grep sata1/3 sata1/3::dsk/c1t3d0 disk connected configured ok # zpool online tank c1t3d0 # zpool replace tank c1t3d0 # zpool status tank pool: tank state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Tue Feb 2 13:17:32 2010 config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t1d0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 c0t2d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 mirror-2 ONLINE 0 0 0 c0t3d0 ONLINE 0 0 0 c1t3d0 ONLINE 0 0 0 errors: No known data errors
Beachten Sie, dass in der obigen zpool-Ausgabe sowohl die neue als auch die alte Festplatte unter replacing (wird ersetzt) angezeigt werden kann. Beispiel:
replacing DEGRADED 0 0 0 c1t3d0s0/o FAULTED 0 0 0 c1t3d0 ONLINE 0 0 0
Dieser Text bedeutet, dass der Austauschvorgang läuft und an der neuen Festplatte das Resilvering durchgeführt wird.
Um eine Festplatte (c1t3d0) durch eine andere Festplatte (c4t3d0) zu ersetzen, müssen Sie nur den Befehl zpool replace ausführen. Beispiel:
# zpool replace tank c1t3d0 c4t3d0 # zpool status pool: tank state: DEGRADED scrub: resilver completed after 0h0m with 0 errors on Tue Feb 2 13:35:41 2010 config: NAME STATE READ WRITE CKSUM tank DEGRADED 0 0 0 mirror-0 ONLINE 0 0 0 c0t1d0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 c0t2d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 mirror-2 DEGRADED 0 0 0 c0t3d0 ONLINE 0 0 0 replacing DEGRADED 0 0 0 c1t3d0 OFFLINE 0 0 0 c4t3d0 ONLINE 0 0 0 errors: No known data errors
Mitunter muss der Befehl zpool status mehrmals ausgeführt werden, bevor der Austauschvorgang abgeschlossen ist.
# zpool status tank pool: tank state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Tue Feb 2 13:35:41 2010 config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t1d0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 c0t2d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 mirror-2 ONLINE 0 0 0 c0t3d0 ONLINE 0 0 0 c4t3d0 ONLINE 0 0 0
Beispiel 10-2 Ersetzen eines fehlgeschlagenen Protokolliergeräts
ZFS identifiziert Intent-Logfehler in der zpool status-Befehlsausgabe. 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.
Das folgende Beispiel zeigt die Wiederherstellung des Normalzustands nach dem Ausfall eines Protokolliergeräts (c0t5d0) im Speicher-Pool (pool). Der Vorgang wird im Wesentlichen wie folgt durchgeführt:
Überprüfen Sie die Ausgabe des Befehls zpool status-x und die FMA-Diagnosemeldung, beschrieben unter:
Ersetzen Sie das fehlgeschlagene Protokolliergerät physisch.
Nehmen Sie das neue Protokolliergerät in Betrieb.
Löschen Sie den Fehlerzustand des Pools.
Setzen Sie den FMA-Fehler zurück.
# 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 <Physically replace the failed log device> # zpool online pool c0t5d0 # zpool clear pool
Wenn das System beispielsweise plötzlich herunterfährt, bevor synchrone Schreibvorgänge in einem Pool mit separatem Protokolliergerät festgeschrieben 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-0 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 <Physically replace the failed log device> # zpool online pool c0t5d0 # zpool clear pool # fmadm faulty # fmadm repair zfs://pool=name/vdev=guid
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.
Je nach Kapazität des Datenträgers und der Datenmenge im Pool kann das Austauschen eines Datenspeichergeräts geraume Zeit dauern. Der Vorgang des Übertragens von Daten von einem Datenspeichergerät auf ein anderes Gerät nennt man Resilvering. Er kann mithilfe des Befehls zpool status überwacht werden.
Herkömmliche Dateisysteme kopieren Daten auf Datenblockebene. Da in ZFS die künstliche Schicht des Volume Managers beseitigt wurde, kann das Resilvering hier viel leistungsfähiger und kontrollierter durchgeführt werden. Die beiden Hauptvorteile dieser Funktion bestehen in Folgendem:
ZFS kopiert beim Resilvering nur die Mindestmenge erforderlicher Daten. Im Falle eines kurzen Ausfalls (im Gegensatz zu einem vollständigen Austausch von Datenspeichergeräten) können Daten innerhalb weniger Minuten bzw. Sekunden auf den gesamten Datenträger aufgespielt werden. Nach dem Austauschen eines Datenträgers ist der Zeitraum, den das Wiederaufspielen von Daten benötigt, proportional zur Datenmenge auf dem betreffenden Datenträger. Der Austausch eines 500-GB-Datenträgers kann in Sekundenschnelle durchgeführt werden, wenn im Pool nur einige wenige GB mit Daten belegt sind.
Das Resilvering kann unterbrochen werden und ist sicher. Wenn am System ein Stromausfall auftritt oder es neu gestartet wird, fährt der Resilvering-Vorgang an genau der Stelle fort, wo er unterbrochen wurde, ohne dass dazu manuelle Eingriffe erforderlich sind.
Der Status des Resilvering-Vorgangs kann mit dem Befehl zpool status angezeigt werden. Beispiel:
# zpool status tank pool: tank state: DEGRADED status: One or more devices is currently being resilvered. The pool will continue to function, possibly in a degraded state. action: Wait for the resilver to complete. scrub: resilver in progress for 0h0m, 22.60% done, 0h1m to go config: NAME STATE READ WRITE CKSUM tank DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 replacing-0 DEGRADED 0 0 0 c1t0d0 UNAVAIL 0 0 0 cannot open c2t0d0 ONLINE 0 0 0 85.0M resilvered c1t1d0 ONLINE 0 0 0 errors: No known data errors
In diesem Beispiel wird der Datenträger c1t0d0 durch das Gerät c2t0d0 ersetzt. Dieses Ereignis wird in der Statusausgabe durch das virtuelle Ersatzgerät in der Konfiguration dargestellt. Dieses Gerät ist kein echtes Gerät, und Sie können mit diesem Gerät auch keinen Pool erstellen. Der Zweck dieses Geräts besteht lediglich darin, den Resilvering-Vorgang anzuzeigen, damit festgestellt werden kann, welcher Datenträger ausgetauscht wird.
Beachten Sie, dass ein Pool, in dem ein Resilvering stattfindet, in den Status ONLINE oder DEGRADED versetzt wird, da er während des Resilvering-Vorgangs nicht das erforderliche Niveau an Datenredundanz gewährleisten kann. Das Resilvering findet so schnell wie möglich statt, obwohl die damit verbundenen E/A-Prozesse stets eine niedrigere Priorität als E/A-Benutzeranforderungen haben, um die Auswirkung auf die Systemleistung zu minimieren. Nach dem Abschluss des Resilvering wird die neue, vollständige Konfiguration vom System übernommen. Beispiel:
# zpool status tank pool: tank state: ONLINE scrub: resilver completed after 0h1m with 0 errors on Tue Feb 2 13:54:30 2010 config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c2t0d0 ONLINE 0 0 0 377M resilvered c1t1d0 ONLINE 0 0 0 errors: No known data errors
Der Pool befindet sich jetzt wieder im Status ONLINE, und der ursprüngliche ausgefallene Datenträger (c1t0d0) wurde aus der Konfiguration entfernt.