Der eine oder andere hats vielleicht mitbekommen. Mein Blog war vor ein paar Tagen für ein paar Tage mit einer einzigen, aber fatalen Fehlermeldung garniert. Dieser kam daher, dass mein MySQL Server nicht erreichbar war, auf dem alle Informationen in diesem Blog gespeichert und abgerufen werden.
Der Grund dafür lag in einem bösen Absturz meines Server, der das RootFS (xfs) teilweise zerstört hatte, u. a. genau den Teil, wo der binlog (/var/log/mysql/) des MySQLs lag, was diesen eben daran hinderte hochzufahren.
Lösung: Dateisystem reparireren mit im Falle von xfs xfs_repair.
Was so lapidar dahergesagt recht einfach klingt, gestaltet sich in der Praxis etwas komplizierter. Denn ein gemountetes Dateisystem lässt sich unter Linux (genauso wie NTFS unter Windows) nicht im laufenden Betrieb behandeln. Und /dev/md0 (dieser 2TB große, 5 Festplatten umfassende Datenmoloch) wird direkt nach dem durchbooten des Kernels, beim Starten des init-Prozesses gemounted und bleibt dies auch bis zum Herunterfahren.
Im Quakenet haben mich die User blackwing und Gabriel_Black im Channel #linux.de darüber aufgeklärt, dass man mit mdadm (das Verwaltungstool für Software Raids) auch „von aussen“, d. h. einer Linux Live CD wie Knoppix ein Raid erkennen und assemblieren kann. Gute Idee soweit! Aber die zum jetzigen Zeitpunkt aktuelle Knoppix verwendet den Kernel 2.6.19.x, was für meine verwendete Hardware leider viel zu alt ist und folglich meine Festplatten gar nicht erst erkannt hat.
Mit einer gehörigen Portion Mut habe ich meine mit dem Kernel 2.6.23.1 gepunked-e Debian Etch Installations CD herausgeholt und eine Shell gestartet:
Raid suchen und Config nach /tmp/ schreiben:
mdadm –examine –scan –config=partitions > /tmp/mdadm.confRaid anhand der Configdatei dem System bekannt machen
mdadm –assemble –scan –config=/tmp/mdadm.conf
Soweit so gut, nun konnte ich es aber nicht reparieren oder überprüfen, weil die dazu notwendigen xfs_* Tools auf dem Debian Live System nicht vorhanden waren, aber hier kommt die Portion Mut zum Einsatz:
/dev/md0 nach /mnt/md0 mounten:
cd /mnt/ && mkdir md0
mount /dev/md0 /mnt/md0
cp /mnt/md0/sbin/xfs_repair /tmp/
umount /mnt/md0
Ich habe also das Raid gemounted und das Reparaturprogramm xfs_repair in das Temp-Verzeichnis (im RAM) der Debian-Installer-CD kopiert und danach das Raid wieder ausgehängt. Dass dies funktionieren könnte war lediglich ein Hoffnungsschimmer am Horizont und tatsächlich.
Auf befehl xfs_repair /dev/md0 rasselten die 5 Platten los und es wanderten einige Info- und Reparaturmeldungen über den Bildschirm um schlussendlich mit etwas wie „finished“ mir ins Gesicht zu strahlen. Nachdem das geschafft war und der Rechner wieder aus eigenen Stücken bootete, war die Reparatur des MySQL Servers nur noch Kür nach der Pflicht.