RAID1: Defekte Festplatte ersetzen und testen
TL;DR
Simulieren Sie einen Festplattenausfall, ersetzen Sie die defekte Platte, kopieren Sie die Partitionstabelle und fügen Sie sie wieder dem RAID1-Verbund hinzu. Überwachen Sie die Synchronisation mit /proc/mdstat und installieren Sie anschließend den Bootloader auf beiden Laufwerken.
Überblick
Dieses Dokument beschreibt Schritt für Schritt, wie Sie in einem RAID1-Array eine ausgefallene Festplatte ersetzen und das System danach testen. Es enthält die notwendigen mdadm- und sfdisk-Kommandos, typische Konsolenausgaben zur Kontrolle sowie eine kurze Playbook-Checkliste, Abnahmekriterien und Hinweise zu möglichen Fehlerfällen.
Vorbereitung: Welches Laufwerk ist gefallen?
Es ist egal, ob /dev/sda oder /dev/sdb ausgefallen ist — das Vorgehen ist identisch. In diesem Beispiel wird angenommen, dass /dev/sdb ausgefallen ist.
Wichtig: Arbeiten Sie nur auf dem Host, auf dem das Array aktiv ist. Erstellen Sie vor Änderungen ein Backup der wichtigsten Daten, wenn möglich.
1. Ausfall simulieren
Sie können die Platte physisch entfernen oder softwareseitig als ausgefallen markieren. Beispiele (als root):
mdadm --manage /dev/md0 --fail /dev/sdb1
mdadm --manage /dev/md1 --fail /dev/sdb2
mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm --manage /dev/md1 --remove /dev/sdb2
Alternativ: System herunterfahren und das Laufwerk entfernen:
shutdown -h now
Setzen Sie danach eine neue Festplatte ein (oder das Ersatzlaufwerk). Wenn Sie ursprünglich /dev/sda ersetzt haben, müssen Sie sicherstellen, dass die neue Hardware die gleiche Gerätebezeichnung erhält oder die Partitionen entsprechend angepasst werden.
2. Degradierter Zustand prüfen
Starten Sie das System und kontrollieren Sie den RAID-Status:
cat /proc/mdstat
Beispielausgabe:
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[0]
104320 blocks [2/1] [U_]
md1 : active raid1 sda2[0]
10377920 blocks [2/1] [U_]
unused devices:
[root@server1 ~]#
Sie sehen hier, welches Array degradiert ist (U_ bedeutet ein fehlendes Mitglied).
Prüfen Sie außerdem die Partitionen:
fdisk -l
(Das Beispiel in der Originalausgabe zeigt /dev/sdb ohne gültige Partitionstabelle.)
3. Partitionstabelle kopieren
Kopieren Sie die Partitionstabelle von der intakten Platte (/dev/sda) auf die neue Platte (/dev/sdb):
sfdisk -d /dev/sda | sfdisk /dev/sdb
Wenn Sie einen Fehler wegen fehlender Signatur erhalten, versuchen Sie es mit –force:
sfdisk -d /dev/sda | sfdisk --force /dev/sdb
Beispielausgabe (gekürzt):
[root@server1 ~]# sfdisk -d /dev/sda | sfdisk /dev/sdb
Checking that no-one is using this disk right now ...
OK
Disk /dev/sdb: 1305 cylinders, 255 heads, 63 sectors/track
sfdisk: ERROR: sector 0 does not have an msdos signature
/dev/sdb: unrecognized partition table type
Old situation:
No partitions found
New situation:
Units = sectors of 512 bytes, counting from 0
Device Boot Start End #sectors Id System
/dev/sdb1 * 63 208844 208782 fd Linux raid autodetect
/dev/sdb2 208845 20964824 20755980 fd Linux raid autodetect
/dev/sdb3 0 - 0 0 Empty
/dev/sdb4 0 - 0 0 Empty
Successfully wrote the new partition table
Re-reading the partition table ...
Hinweis: Moderne Systeme mit GPT verwenden statt sfdisk ggf. gdisk oder parted. Passen Sie das Werkzeug an das Partitionstabellenformat an.
4. Alte RAID-Metadaten löschen
Vor dem Hinzufügen zur Array sollten Sie eventuelle alte Superblöcke löschen:
mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdb2
5. Platte zum Array hinzufügen
Fügen Sie die neuen Partitionen dem RAID hinzu:
mdadm -a /dev/md0 /dev/sdb1
mdadm -a /dev/md1 /dev/sdb2
Prüfen Sie erneut den Status:
cat /proc/mdstat
Beispiel während der Wiederherstellung:
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[1] sda1[0]
104320 blocks [2/2] [UU]
md1 : active raid1 sdb2[2] sda2[0]
10377920 blocks [2/1] [U_]
[======>..............] recovery = 32.3% (3360768/10377920) finish=1.5min speed=74238K/sec
unused devices:
[root@server1 ~]#
Warten Sie, bis die Synchronisation abgeschlossen ist. Danach sollte in /proc/mdstat [UU] für jedes Array erscheinen.
6. Bootloader installieren
Installieren Sie GRUB auf beiden Datenträgern, damit das System auch von der Ersatzplatte booten kann:
grub
Dann in der GRUB-Konsole:
root (hd0,0)
setup (hd0)
root (hd1,0)
setup (hd1)
quit
Damit ist die neue Platte vollständig in das RAID1-Array integriert.
Playbook: Kurze Checkliste (Rollenbasiert)
- Systemadministrator (Vorbereitung): Prüfen der RAID-Status, Backup erstellen, Ersatzlaufwerk bereitstellen.
- Systemadministrator (Ersatz): Platte einsetzen, Partitionstabelle kopieren, mdadm –zero-superblock ausführen, mdadm -a ausführen.
- Systemadministrator (Abschluss): /proc/mdstat überwachen, GRUB installieren, Systemneustart testen.
Checkliste (Schnell):
- RAID-Status notieren (cat /proc/mdstat).
- Partitionstabelle kopieren (sfdisk).
- Alte Superblöcke löschen (mdadm –zero-superblock).
- Neue Partitionen hinzufügen (mdadm -a).
- Synchronisation abwarten (cat /proc/mdstat).
- Bootloader auf beide Laufwerke schreiben.
Kriterien bei Abnahme
- Beide Arrays zeigen [UU] in /proc/mdstat.
- Kein Degraded-Status mehr nach Abschluss der Resynchronisation.
- System bootet erfolgreich von jedem Datenträger.
- Wichtige Dienste laufen ohne Fehler.
Wann das Vorgehen fehlschlägt und Alternativen
- GPT-Partitionstabellen: Verwenden Sie gdisk oder parted statt sfdisk.
- Verschlüsselte Partitionen (LUKS): Stellen Sie sicher, dass die Verschlüsselungsheader kopiert/wiederhergestellt werden; nutzen Sie cryptsetup und richten Sie ggf. LUKS neu ein.
- Hardware- oder Controller-Probleme: Falls das Laufwerk nicht erkannt wird, prüfen Sie Kabel, Controller-Firmware und dmesg/kern.log auf Fehler.
Alternative: Bei kritischen Systemen kann ein Hot-Swap-fähiger Server den physikalischen Austausch erlauben, ohne das System herunterzufahren.
Kurze Fehlerbehebung (Edge-Cases)
- sfdisk meldet “sector 0 does not have an msdos signature”: Wenn die Platte vorher GPT hatte, nutzen Sie gdisk oder parted.
- Nach dem Schreiben der Partitionstabelle wird die Partition nicht neu erkannt: Verwenden Sie partprobe oder ein Reboot.
- Wiederherstellungsprozess sehr langsam: Prüfen Sie IO-Last, Priorität und sysfs-Parameter wie /proc/sys/dev/raid/speed_limit_min und speed_limit_max.
Factbox: Wichtige Kommandos auf einen Blick
- RAID-Status: cat /proc/mdstat
- Partitionstabelle kopieren: sfdisk -d /dev/sda | sfdisk /dev/sdb
- Alte Superblöcke löschen: mdadm –zero-superblock /dev/sdXN
- Partitionen hinzufügen: mdadm -a /dev/mdX /dev/sdXN
- Bootloader installieren: grub -> setup (hd0), setup (hd1)
Sicherheit & Datenschutz
Arbeiten Sie als root oder mit privilegierten Rechten. Stellen Sie sicher, dass sensible Daten gesichert sind, bevor Sie Partitionstabellen oder RAID-Konfigurationen ändern.
Zusammenfassung
Sie haben gelernt, wie Sie eine ausgefallene Festplatte in einem RAID1-Array ersetzen: markieren oder entfernen Sie die defekte Platte, kopieren Sie die Partitionstabelle, löschen Sie alte RAID-Metadaten, fügen Sie die neue Platte ins Array ein und überwachen Sie die Resynchronisation. Abschließend installieren Sie den Bootloader auf beiden Platten.
Wichtig:
- Prüfen Sie /proc/mdstat regelmäßig während der Wiederherstellung.
- Achten Sie auf Partitionstabellentypen (MBR vs. GPT) und passen Sie Werkzeuge entsprechend an.
Links
- The Software-RAID Howto: http://tldp.org/HOWTO/Software-RAID-HOWTO.html
- CentOS: http://www.centos.org/