Wie man Daten wiederherstellt und fehlgeschlagene Software-RAID wiederherstellt - Teil 8
In den vorherigen Artikeln dieser RAID-Serie sind Sie von Null zum RAID-Helden geworden. Wir haben mehrere Software-RAID-Konfigurationen überprüft und die Grundlagen der einzelnen Konfigurationen erläutert, zusammen mit den Gründen, warum Sie sich je nach Ihrem spezifischen Szenario für die eine oder andere entscheiden würden.
In diesem Handbuch besprechen wir, wie Sie im Falle eines Festplattenausfalls ein Software-RAID-Array ohne Datenverlust wiederherstellen können. Der Kürze halber betrachten wir nur ein RAID 1-Setup – aber die Konzepte und Befehle gelten für alle Fälle gleichermaßen.
RAID-Testszenario
Bevor Sie fortfahren, stellen Sie bitte sicher, dass Sie ein RAID 1-Array eingerichtet haben, indem Sie die Anweisungen in Teil 3 dieser Serie befolgen: Einrichten von RAID 1 (Spiegelung) unter Linux.
Die einzigen Variationen in unserem vorliegenden Fall sind:
1) eine andere Version von CentOS (v7) als die in diesem Artikel verwendete (v6.5) und
2) unterschiedliche Festplattengrößen für /dev/sdb und /dev/sdc (jeweils 8 GB).
Wenn SELinux im Erzwingungsmodus aktiviert ist, müssen Sie außerdem die entsprechenden Labels zu dem Verzeichnis hinzufügen, in dem Sie das RAID-Gerät bereitstellen möchten. Andernfalls wird beim Versuch, die Installation zu mounten, die folgende Warnmeldung angezeigt:
Sie können dies beheben, indem Sie Folgendes ausführen:
restorecon -R /mnt/raid1
Einrichten der RAID-Überwachung
Es gibt eine Vielzahl von Gründen, warum ein Speichergerät ausfallen kann (SSDs haben die Wahrscheinlichkeit, dass dies passiert, jedoch stark verringert), aber unabhängig von der Ursache können Sie sicher sein, dass jederzeit Probleme auftreten können, und Sie müssen darauf vorbereitet sein, das ausgefallene Teil zu ersetzen und die Verfügbarkeit und Integrität Ihrer Daten sicherzustellen.
Zuerst ein Ratschlag. Selbst wenn Sie /proc/mdstat überprüfen können, um den Status Ihrer RAIDs zu überprüfen, gibt es eine bessere und zeitsparende Methode, die darin besteht, mdadm im Monitor + Scan-Modus auszuführen, der Warnungen per E-Mail an einen vordefinierten Empfänger sendet.
Um dies einzurichten, fügen Sie die folgende Zeile in /etc/mdadm.conf hinzu:
MAILADDR user@<domain or localhost>
In meinem Fall:
MAILADDR gacanepa@localhost
Um mdadm im Monitor + Scan-Modus auszuführen, fügen Sie den folgenden crontab-Eintrag als root hinzu:
@reboot /sbin/mdadm --monitor --scan --oneshot
Standardmäßig überprüft mdadm die RAID-Arrays alle 60 Sekunden und sendet eine Warnung, wenn ein Problem gefunden wird. Sie können dieses Verhalten ändern, indem Sie die Option --delay zusammen mit der Anzahl der Sekunden zum obigen crontab-Eintrag hinzufügen (z. B. bedeutet --delay 1800 30 Minuten).
Stellen Sie abschließend sicher, dass Sie einen Mail User Agent (MUA) installiert haben, z. B. mutt oder mailx. Andernfalls erhalten Sie keine Benachrichtigungen.
In einer Minute werden wir sehen, wie eine von mdadm gesendete Warnung aussieht.
Simulieren und Austauschen eines ausgefallenen RAID-Speichergeräts
Um ein Problem mit einem der Speichergeräte im RAID-Array zu simulieren, verwenden wir die Optionen --manage und --set-faulty wie folgt:
mdadm --manage --set-faulty /dev/md0 /dev/sdc1
Dies führt dazu, dass /dev/sdc1 als fehlerhaft markiert wird, wie wir in /proc/mdstat sehen können:
Noch wichtiger ist, dass wir sehen, ob wir eine E-Mail-Benachrichtigung mit der gleichen Warnung erhalten haben:
In diesem Fall müssen Sie das Gerät aus dem Software-RAID-Array entfernen:
mdadm /dev/md0 --remove /dev/sdc1
Dann können Sie es physisch von der Maschine entfernen und durch ein Ersatzteil ersetzen (/dev/sdd, wo zuvor eine Partition vom Typ fd erstellt wurde):
mdadm --manage /dev/md0 --add /dev/sdd1
Zu unserem Glück beginnt das System automatisch mit dem Neuaufbau des Arrays mit dem Teil, den wir gerade hinzugefügt haben. Wir können dies testen, indem wir /dev/sdb1 als fehlerhaft markieren, es aus dem Array entfernen und sicherstellen, dass die Datei tecmint.txt unter /mnt/raid1 noch zugänglich ist:
mdadm --detail /dev/md0
mount | grep raid1
ls -l /mnt/raid1 | grep tecmint
cat /mnt/raid1/tecmint.txt
Das obige Bild zeigt deutlich, dass nach dem Hinzufügen von /dev/sdd1 zum Array als Ersatz für /dev/sdc1 die Wiederherstellung der Daten automatisch vom System durchgeführt wurde, ohne dass wir eingreifen mussten.
Obwohl es nicht unbedingt erforderlich ist, ist es eine gute Idee, ein Ersatzgerät zur Hand zu haben, damit das defekte Gerät im Handumdrehen durch ein gutes Laufwerk ersetzt werden kann. Um dies zu tun, fügen wir /dev/sdb1 und /dev/sdc1 erneut hinzu:
mdadm --manage /dev/md0 --add /dev/sdb1
mdadm --manage /dev/md0 --add /dev/sdc1
Wiederherstellung nach einem Entlassungsverlust
Wie bereits erläutert, erstellt mdadm die Daten automatisch neu, wenn ein Datenträger ausfällt. Aber was passiert, wenn 2 Festplatten im Array ausfallen? Simulieren wir ein solches Szenario, indem wir /dev/sdb1 und /dev/sdd1 als fehlerhaft markieren:
umount /mnt/raid1
mdadm --manage --set-faulty /dev/md0 /dev/sdb1
mdadm --stop /dev/md0
mdadm --manage --set-faulty /dev/md0 /dev/sdd1
Versuche, das Array auf die gleiche Weise neu zu erstellen, wie es zu diesem Zeitpunkt erstellt wurde (oder die Option --assume-clean verwenden), können zu Datenverlust führen, daher sollte dies als letzter Ausweg beibehalten werden.
Versuchen wir, die Daten von /dev/sdb1 wiederherzustellen, zum Beispiel in eine ähnliche Festplattenpartition (/dev/sde1 – beachten Sie, dass dies erfordert, dass Sie eine Partition vom Typ fd in /dev/sde erstellen, bevor Sie fortfahren) mit ddrescue:
ddrescue -r 2 /dev/sdb1 /dev/sde1
Bitte beachten Sie, dass wir bis zu diesem Zeitpunkt /dev/sdb oder /dev/sdd, die Partitionen, die Teil des RAID-Arrays waren, nicht berührt haben.
Lassen Sie uns nun das Array mit /dev/sde1 und /dev/sdf1 neu erstellen:
mdadm --create /dev/md0 --level=mirror --raid-devices=2 /dev/sd[e-f]1
Bitte beachten Sie, dass Sie in einer realen Situation in der Regel die gleichen Gerätenamen wie beim ursprünglichen Array verwenden, d.h. /dev/sdb1 und /dev/sdc1, nachdem die ausgefallenen Festplatten durch neue ersetzt wurden.
In diesem Artikel habe ich mich dafür entschieden, zusätzliche Geräte zu verwenden, um das Array mit brandneuen Festplatten neu zu erstellen und Verwechslungen mit den ursprünglichen ausgefallenen Laufwerken zu vermeiden.
Wenn Sie gefragt werden, ob Sie mit dem Schreiben des Arrays fortfahren möchten, geben Sie Y ein, und drücken Sie die Eingabetaste. Das Array sollte gestartet sein und Sie sollten in der Lage sein, seinen Fortschritt zu verfolgen mit:
watch -n 1 cat /proc/mdstat
Wenn der Vorgang abgeschlossen ist, sollten Sie in der Lage sein, auf den Inhalt Ihres RAID zuzugreifen:
Zusammenfassung
In diesem Artikel haben wir uns mit der Wiederherstellung nach RAID-Ausfällen und Redundanzverlusten befasst. Sie müssen jedoch bedenken, dass es sich bei dieser Technologie um eine Speicherlösung handelt, die Backups NICHT ersetzt.
Die in diesem Leitfaden erläuterten Prinzipien gelten für alle RAID-Setups gleichermaßen, ebenso wie die Konzepte, die wir im nächsten und letzten Leitfaden dieser Serie (RAID-Management) behandeln werden.
Wenn Sie Fragen zu diesem Artikel haben, können Sie uns gerne eine Nachricht über das untenstehende Kommentarformular schreiben. Wir freuen uns auf Sie!








