4.14. Die GFS2-Rückzugsfunktion
Die GFS2-Rückzugsfunktion (auch engl. Withdraw-Funktion) ist ein Feature zur Sicherung der Datenintegrität auf GFS2-Dateisystemen in einem Cluster. Falls das GFS2-Kernel-Modul nach einer I/O-Operation eine Inkonsistenz in einem GFS2-Dateisystem entdeckt, wird dem Cluster der Zugriff auf das Dateisystem verwehrt. Die I/O-Operation stoppt und das System wartet, bis weitere I/O-Operationen ebenfalls mit einem Fehler fehlschlagen, um weiteren Schaden zu verhindern. Sie können in dieser Situation andere Dienste oder Applikationen manuell stoppen, anschließend neu starten und das GFS2-Dateisystem wieder einhängen, um anhand der Journale wiederherzustellen. Wenn das Problem weiterhin besteht, können Sie das Dateisystem auf allen Knoten im Cluster aushängen und mit dem
fsck.gfs2
-Befehl eine Wiederherstellung des Dateisystems durchführen. Die GFS-Rückzugsfunktion ist weniger schwerwiegend als eine Kernel-Panic, bei der ein anderer Knoten diesen Knoten abgrenzen würde.
Falls auf Ihrem System das
gfs2
-Startup-Skript aktiviert ist und das GFS2-Dateisystem in der /etc/fstab
-Datei enthalten ist, wird das GFS2-Dateisystem bei einem Neustart neu eingehängt. Falls sich das GFS2-Dateisystem aufgrund eines beschädigten Dateisystems zurückgezogen hat, ist es empfehlenswert, den fsck.gfs2
-Befehl auszuführen, bevor Sie das Dateisystem wieder einhängen. Um in diesem Fall zu verhindern, dass Ihr Dateisystem beim Neustart wieder eingehängt wird, führen Sie die folgenden Schritte aus:
- Deaktivieren Sie vorübergehend das Startup-Skript auf dem betroffenen Knoten mit dem folgenden Befehl:
#
chkconfig gfs2 off
- Starten Sie den betroffenen Knoten neu und starten Sie die Cluster-Software. Das GFS2-Dateisystem wird nicht eingehängt werden.
- Hängen Sie das Dateisystem auf allen Knoten im Cluster aus.
- Führen Sie auf nur einem Knoten den
fsck.gfs2
-Befehl auf dem Dateisystem aus, um sicherzustellen, dass das Dateisystem nicht beschädigt ist. - Aktivieren Sie wieder das Startup-Skript auf dem betroffenen Knoten mit dem folgenden Befehl:
#
chkconfig gfs2 on
- Hängen Sie das GFS-Dateisystem auf allen Knoten im Cluster neu ein.
Ein Beispiel für eine Inkonsistenz, die zu einem GFS2-Rückzug führt, ist eine fehlerhafte Blockanzahl. Wenn der GFS-Kernel eine Datei aus einem Dateisystem löscht, entfernt er systematisch sämtliche zu dieser Datei gehörende Daten- und Metadaten-Blöcke. Sobald er damit fertig ist, überprüft er die Blockanzahl. Falls die Blockanzahl nicht eins ist (was bedeutet, dass nur der Festplatten-Inode selbst übrig ist), weist dies auf eine Dateisysteminkonsistenz hin, da die Blockanzahl nicht mit der Liste der gefundenen Blöcke übereinstimmt.
Sie können die GFS2-Rückzugsfunktion außer Kraft setzen, indem Sie das Dateisystem mit der Option
-o errors=panic
einhängen. Wenn diese Option angegeben wird, führen Fehler, die normalerweise zu einem Rückzug des Systems führen, stattdessen zu einer Panic des Systems. Dadurch stoppt die Cluster-Kommunikation des Knotens, woraufhin der Knoten abgegrenzt wird.
Intern funktioniert die GFS2-Rückzugsfunktion, indem der Kernel eine Nachricht an den Daemon
gfs_controld
sendet und den Rückzug fordert. Der Daemon gfs_controld
führt das dmsetup
-Programm aus, um das Device-Mapper Error-Ziel unter das Dateisystem zu platzieren, um weitere Zugriffe auf das Blockgerät zu verhindern. Es teilt dem Kernel mit, wenn dieser Vorgang abgeschlossen wurde. Aus diesem Grund wird zur Unterstützung von GFS2 vorausgesetzt, dass immer ein CLVM-Gerät unter GFS2 verwendet wird, denn andernfalls ist es nicht möglich, ein Device-Mapper-Ziel einzufügen.
Der Zweck des Device-Mapper Error-Ziels besteht darin sicherzustellen, dass alle nachfolgenden I/O-Operationen zu einem I/O-Fehler führen, wodurch es dem Dateisystem ermöglicht wird, ordnungsgemäß ausgehängt zu werden. Deshalb ist es im Falle eines Rückzugs völlig normal, eine Reihe von I/O-Fehlern vom Device-Mapper-Gerät in den Systemprotokollen vorzufinden.
Gelegentlich schlägt der Rückzug fehl, falls es dem
dmsetup
-Programm nicht möglich war, das Error-Ziel wie angefordert einzufügen. Dies kann auftreten, wenn zum Zeitpunkt des Rückzugs der Speicher knapp ist und dieser Speicher aufgrund des Fehlers, der den Rückzug überhaupt erst ausgelöst hat, auch nicht neu zugewiesen werden kann.
Ein Rückzug bedeutet nicht immer, dass ein Fehler in GFS2 vorliegt. Manchmal wird die Rückzugsfunktion durch I/O-Fehler im zugrunde liegenden Blockgerät verursacht. Wir empfehlen Ihnen dringend, die Protokolle einzusehen, um zu überprüfen, ob dies der Fall ist.