RAID1: Ausgefallene Festplatte ersetzen und testen
Kurzanleitung: Simuliere einen Festplattenausfall, entferne die defekte Partition aus dem Array, kopiere die Partitionstabelle auf die Ersatzplatte, nulliere alte RAID-Metadaten, füge die neue Platte dem Array hinzu und warte auf die vollständige Resynchronisation. Installiere abschließend den Bootloader auf beiden Laufwerken.
9 Test
In diesem Abschnitt simulieren wir einen Festplattenausfall. Es ist egal, ob /dev/sda oder /dev/sdb ausfällt. Im Beispiel nehmen wir an, dass /dev/sdb ausgefallen ist.
Du kannst die Platte physisch entfernen (System herunterfahren und HDD austauschen) oder sie soft entfernen. Beispiel für das Soft-Removalszenario:
mdadm --manage /dev/md0 --fail /dev/sdb1
mdadm --manage /dev/md1 --fail /dev/sdb2
mdadm --manage /dev/md2 --fail /dev/sdb3
Dann entferne die Partitionen aus dem Array:
mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm --manage /dev/md1 --remove /dev/sdb2
mdadm --manage /dev/md2 --remove /dev/sdb3
Fahre das System herunter:
shutdown -h now
Setze eine neue Platte ein (oder tausche physisch aus). Wichtiger Hinweis: Wenn du ursprünglich /dev/sda simuliert hast, musst du die neue HDD anstelle von /dev/sda anschließen und die Ersatzplatte als /dev/sdb verfügbar machen, wie im ursprünglichen Setup.
Starte das System neu. Es sollte weiterhin booten. Überprüfe den Zustand des RAID-Arrays:
cat /proc/mdstat
Bei einem ausgefallenen Laufwerk siehst du ein degradiertes Array, zum Beispiel:
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid1 sda1[0]
104320 blocks [2/1] [U_]
md1 : active raid1 sda2[0]
513984 blocks [2/1] [U_]
md2 : active raid1 sda3[0]
4618560 blocks [2/1] [U_]
unused devices:
[root@server1 ~]#
Das Ausgabebeispiel von fdisk -l sollte zeigen, dass die Ersatzplatte noch keine gültige Partitionstabelle hat:
[root@server1 ~]# fdisk -l
Disk /dev/sda: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0007b217
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 fd Linux raid autodetect
/dev/sda2 14 77 514080 fd Linux raid autodetect
/dev/sda3 78 652 4618687+ fd Linux raid autodetect
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000
Disk /dev/sdb doesn't contain a valid partition table
Disk /dev/md2: 4729 MB, 4729405440 bytes
2 heads, 4 sectors/track, 1154640 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk identifier: 0x00000000
Disk /dev/md2 doesn't contain a valid partition table
Disk /dev/md1: 526 MB, 526319616 bytes
2 heads, 4 sectors/track, 128496 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk identifier: 0x00000000
Disk /dev/md1 doesn't contain a valid partition table
Disk /dev/md0: 106 MB, 106823680 bytes
2 heads, 4 sectors/track, 26080 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk identifier: 0x00000000
Disk /dev/md0 doesn't contain a valid partition table
[root@server1 ~]#
Jetzt kopieren wir die Partitionstabelle von /dev/sda nach /dev/sdb:
sfdisk -d /dev/sda | sfdisk /dev/sdb
Wenn sfdisk einen Fehler meldet, versuche die Option –force:
sfdisk -d /dev/sda | sfdisk --force /dev/sdb
Ein typischer erfolgreicher Output sieht so aus:
[root@server1 ~]# sfdisk -d /dev/sda | sfdisk /dev/sdb
Checking that no-one is using this disk right now ...
OK
Disk /dev/sdb: 652 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 1237004 1028160 fd Linux raid autodetect
/dev/sdb3 1237005 10474379 9237375 fd Linux raid autodetect
/dev/sdb4 0 - 0 0 Empty
Successfully wrote the new partition table
Re-reading the partition table ...
If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
[root@server1 ~]#
Anschließend entfernst du alte RAID-Signaturen von /dev/sdb, falls vorhanden:
mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdb2
mdadm --zero-superblock /dev/sdb3
Füge dann die neuen Partitionen dem RAID-Array hinzu:
mdadm -a /dev/md0 /dev/sdb1
mdadm -a /dev/md1 /dev/sdb2
mdadm -a /dev/md2 /dev/sdb3
Prüfe erneut /proc/mdstat:
cat /proc/mdstat
Während der Resynchronisation sieht das so aus:
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid1 sdb1[1] sda1[0]
104320 blocks [2/2] [UU]
md1 : active raid1 sdb2[1] sda2[0]
513984 blocks [2/2] [UU]
md2 : active raid1 sdb3[2] sda3[0]
4618560 blocks [2/1] [U_]
[===>.................] recovery = 15.4% (715584/4618560) finish=4.9min speed=13222K/sec
unused devices:
[root@server1 ~]#
Warte, bis die Synchronisation abgeschlossen ist. Vollständig synchronisiert sieht /proc/mdstat so aus:
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid1 sdb1[1] sda1[0]
104320 blocks [2/2] [UU]
md1 : active raid1 sdb2[1] sda2[0]
513984 blocks [2/2] [UU]
md2 : active raid1 sdb3[1] sda3[0]
4618560 blocks [2/2] [UU]
unused devices:
[root@server1 ~]#
Installiere abschließend den Bootloader auf beiden Festplatten. Starte grub im interaktiven Modus und führe folgende Befehle aus:
grub
root (hd0,0)
setup (hd0)
root (hd1,0)
setup (hd1)
quit
Damit ist der Austausch der ausgefallenen Festplatte im RAID1 abgeschlossen.
Wichtig
- Achte darauf, die richtigen Gerätedateien zu verwenden. Ein Vertauschen von sda und sdb kann das System unbootbar machen.
- Führ Befehle mit Root-Rechten aus.
- Wenn du unsicher bist: vorher Backup erstellen.
SOP: Kurzanleitung (Playbook)
- Degradiertes Array identifizieren: cat /proc/mdstat
- Defekte Partition markieren und entfernen (mdadm –fail, –remove)
- System herunterfahren und physisch ersetzen oder Ersatzplatte anschließen
- Partitionstabelle kopieren: sfdisk -d /dev/sda | sfdisk /dev/sdb
- Alte Superblöcke löschen: mdadm –zero-superblock /dev/sdbX
- Neue Partitionen dem Array hinzufügen: mdadm -a /dev/mdX /dev/sdbX
- Synchronisation abwarten: cat /proc/mdstat
- Bootloader auf beiden Laufwerken installieren (grub)
Rollenspezifische Checkliste
- Betreiber / On-Call:
- Überwache /proc/mdstat während der Wiederherstellung
- Melde ungewöhnliche Fehler an Systemadmin
- Systemadministrator:
- Prüfe Partitionstabellen und kopiere sie korrekt
- Installiere GRUB auf beiden Laufwerken
- Sicherheitsbeauftragter:
- Verifiziere, dass keine sensiblen Daten bei Austausch exponiert wurden
Wann diese Methode fehlschlägt
- Wenn die Ersatzplatte kleinere/andere Geometrie hat und sfdisk die Tabelle nicht übernehmen kann.
- Wenn mehrere Laufwerke gleichzeitig ausgefallen sind (keine redundante Kopie vorhanden).
- Wenn die Bootloader-Installation auf dem Ersatzlaufwerk fehlschlägt; dann manuelle Reparatur von /boot oder EFI nötig.
10 Links
- The Software-RAID Howto: http://tldp.org/HOWTO/Software-RAID-HOWTO.html
- Fedora: http://fedoraproject.org
Zusammenfassung
Du hast gelernt, wie man einen RAID1-Laufwerksausfall simuliert, die Partitionstabelle auf eine Ersatzplatte kopiert, alte RAID-Metadaten löscht, die neue Platte wieder in das Array aufnimmt, die Resynchronisation überwacht und den Bootloader auf beiden Festplatten installiert. Befolge die Checklisten und Hinweise, bevor du Änderungen an Produktionssystemen vornimmst.
Ähnliche Materialien

Kamera-Lag auf Android schnell beheben

Gelöschte Dateien dauerhaft unzugänglich machen
MySQL Slave einrichten und prüfen

Explorer Patcher unter Windows 11 deinstallieren

Packet Loss in Sea of Thieves beheben
