KENNTNISSE · DIENSTLEISTUNGEN UND VPS
Verwaltung von Linux-Software-RAID (Teil II): Wiederherstellung nach einem Festplattenfehler
Letzte Aktualisierung 2019-02-03
Verwaltung von Linux-Software-RAID (Teil II): Wiederherstellung nach einem Festplattenfehler
|
Dieser Artikel zeigt Ihnen, wie Sie Linux Software RAID im Falle eines Ausfalls einer einzelnen Festplatte wiederherstellen können. Für die folgenden Beispiele verwenden wir die folgenden Annahmen:
Gesundes Array cat /proc/mdstat Persönlichkeiten: [raid1] md0 : active raid1 sdb1[1] sda1[0] 511988 blocks super 1.0 [2/2] [UU] md1 : active raid1 sdb2[1] sda2[0] 976247676 blocks super 1.1 [2/2] [UU] bitmap: 1/8 pages [4KB], 65536KB chunk unbenutzte Geräte: <none> Beachten Sie, dass beide Arrays (md0, md1) sind:
cat /proc/partitions major minor #blocks name 8 0 976762584 sda 8 1 512000 sda1 8 2 976248832 sda2 8 16 976762584 sdb 8 17 512000 sdb1 8 18 976248832 sdb2 9 1 976247676 md1 253 0 2097152 dm-0 253 1 2097152 dm-1 9 0 511988 md0 Beachten Sie, dass die folgenden Punkte wahr sein sollten:
Degradiertes Array
Persönlichkeiten: [raid1] md0 : active raid1 sdb1[1] sda1[0](F) 511988 blocks super 1.0 [2/1] [_U] md1 : active raid1 sdb2[1] sda2[0] 976247676 blocks super 1.1 [2/2] [UU] bitmap: 0/8 Seiten [0KB], 65536KB Chunk unbenutzte Geräte: <none> Hinweis: Ein oder mehrere RAID-Arrays zeigen fehlende Mitglieder an: [2/1] [ U]
Persönlichkeiten: [raid1] md0 : active raid1 sdb1[1] sda1[0](F) 511988 blocks super 1.0 [2/1] [_U] md1 : active raid1 sdb2[1] sda2[0](F) 976247676 blocks super 1.1 [2/1] [_U] bitmap: 1/8 pages [4KB], 65536KB chunk unbenutzte Geräte: <none> Im Falle eines schweren Fehlers oder wenn eine Festplatte beim Neustart des Systems nicht initialisiert wird, kann die Festplatte selbst verloren gehen, wie in den folgenden Beispielen gezeigt.
Persönlichkeiten: [raid1] md0 : active raid1 sdb1[1] 511988 blocks super 1.0 [2/1] [_U] md1 : Active Raid1 sdb2[1] 976247676 blocks super 1.1 [2/1] [_U] bitmap: 1/8 pages [4KB], 65536KB chunk unbenutzte Geräte: <none> Disk missing: /proc/Partitionen major minor #blocks name 8 16 976762584 sdb 8 17 512000 sdb1 8 18 976248832 sdb2 9 1 976247676 md1 253 0 2097152 dm-0 253 1 2097152 dm-1 9 0 511988 md0 Entfernen einer fehlgeschlagenen Festplatte Manuelles Markieren von Geräten als ‘failed’ Sie sollten ein Gerät nur dann manuell als fehlerhaft markieren, wenn eines seiner Arrays aufgrund eines Timeouts oder eines Lesefehlers in einer der Partitionen in einem beeinträchtigten Zustand ist. Die physische Festplatte selbst sollte immer noch gut funktionieren.
CAUTION: Be sure you are failing only the partitions that belong to the corresponding failed disk (i.e. sda1/sda2 for SDA and sdb1/sdb2 for sdb). Set sda1 and sda1 as fehlerhaft [root@freshinstall ~]# mdadm --manage /dev/md0 --fail /dev/sda1 mdadm: Set /dev/sda1 fehlerhaft in /dev/md0 [root@freshinstall ~]# mdadm --manage /dev/md1 --fail /dev/sda2 mdadm: Set /dev/sda2 fehlerhaft in /dev/md1
In cat /proc/mdstat Persönlichkeiten: [raid1] md0 : active raid1 sdb1[1] sda1[0](F) 511988 blocks super 1.0 [2/1] [_U] md1 : active raid1 sdb2[1] sda2[0](F) 976247676 blocks super 1.1 [2/1] [_U] bitmap: 1/8 pages [4KB], 65536KB chunk unbenutzte Geräte: <none> Entfernen von ausgefallenen Geräten aus dem Array Bevor eine Festplatte ersetzt werden kann, sollten die ausgefallenen Mitglieder aus ihren entsprechenden Arrays entfernt werden:
[root@freshinstall ~]# mdadm --manage /dev/md0 --remove /dev/sda1 mdadm: heiß entfernt /dev/sda1 von /dev/md0 [root@freshinstall ~]# mdadm --manage /dev/md1 --remove /dev/sda2 mdadm: heiß entfernt /dev/sda2 von /dev/md1 [root@freshinstall ~]# cat /proc/mdstat Persönlichkeiten: [raid1] md0 : active raid1 sdb1[1] 511988 blocks super 1.0 [2/1] [_U] md1 : Active Raid1 sdb2[1] 976247676 blocks super 1.1 [2/1] [_U] bitmap: 1/8 pages [4KB], 65536KB chunk unbenutzte Geräte: <none>
[root@freshinstall ~]# mdadm --misc --zero-superblock /dev/sda1 [root@freshinstall ~]# mdadm --misc --zero-superblock /dev/sda2
dd if=/dev/zero of=/dev/sda bs=1M VORSICHT: Dieser Prozess löscht alle Daten im Gerät, wenn das Argument "of=" gegeben ist (/dev/sda in the above example). Anmerkung: Dieser Prozess kann einige Zeit in Anspruch nehmen. Hinzufügen einer Ersatzdiskette Die Ersatzplatte muss genau gleich groß oder größer als die ausgefallene Platte sein. Sobald die Ersatzplatte in das System eingefügt ist, protokolliert der Kernel so etwas: dmesg | tail sd 0:0:0:0: [sdc] 1953525168 512-Byte logische Blöcke: (1,00 TB / 931 GiB) sd 0:0:0:0: [sdc] 4096-Byte physische Blöcke sd 0:0:0:0: [sdc] Write Protect ist ausgeschaltet sd 0:0:0:0: [sdc] Mode Sense: 00 3a 00 00 sd 0:0:0:0: [sdc] Schreibe den Cache: enabled, lese den Cache: enabled, unterstützt DPO oder FUA nicht
cat /proc/partitions major minor #blocks name 8 16 976762584 sdb 8 17 512000 sdb1 8 18 976248832 sdb2 9 1 976247676 md1 253 0 2097152 dm-0 253 1 2097152 dm-1 9 0 511988 md0 8 0 976762584 sdc Überprüfen Sie den SMART-Status der neuen Festplatte: smartctl -H /dev/sdc smartctl 5.39.1 2010-01-28 r3054 [x86_64-unknown-linux-gnu] (local build) Copyright (C) 2002-10 von Bruce Allen, http://smartmontools.sourceforge.net === ART DER LESUNG SMART DATEN ABSCHNITT === SMART-Selbsteinschätzungstestergebnis für den Gesamtgesundheitszustand: PASSED Trennwand Um mit dem Portionieren zu beginnen, bestätigen Sie zuerst, dass die neue Festplatte nicht automatisch gemountet wurde: mount | grep sdc Es sollte keinen Output geben. Wenn etwas angezeigt wird, müssen die entsprechenden Partitionen manuell abgehängt werden, indem aufgerufen wird: umount <Partition> Da das ursprüngliche System zwei gespiegelte Laufwerke von genau der gleichen Größe verwendet hat, können wir den operativen Antrieb als Vorlage für die Partitionierung verwenden: sfdisk -d -uS /dev/sdb | sfdisk -L -uS /dev/sdc Überprüfen, ob niemand diese Festplatte gerade benutzt ... OK Disk /dev/sdc: 121601 Zylinder, 255 Köpfe, 63 Sektoren/Spur Alte Situation: Einheiten = Sektoren von 512 Bytes, ab 0 zählend Device Boot Start End #sectors Id System /dev/sdc1 * 2048 1026047 1024000 fd Linux raid autodetect /dev/sdc2 1026048 1953523711 1952497664 fd Linux raid autodetect /dev/sdc3 0 - 0 0 Empty /dev/sdc4 0 - 0 0 Empty Neue Situation: Einheiten = Sektoren von 512 Bytes, ab 0 zählend Device Boot Start End #sectors Id System /dev/sdc1 * 2048 1026047 1024000 fd Linux raid autodetect /dev/sdc2 1026048 1953523711 1952497664 fd Linux raid autodetect /dev/sdc3 0 - 0 0 Empty /dev/sdc4 0 - 0 0 Empty Warnung: Die Partition 1 endet nicht an einer Zylindergrenze Warnung: Partition 2 startet nicht an einer Zylindergrenze Warnung: Die Partition 2 endet nicht an einer Zylindergrenze Erfolgreich die neue Partitionstabelle geschrieben Wiederlesen der Partitionstabelle ... Wenn Sie eine DOS-Partition, /dev/foo7, erstellt oder geändert haben, verwenden Sie beispielsweise dd(1) um die ersten 512 Bytes zu nullen: dd if=/dev/zero of=/dev/foo7 bs=512 count=1 (Siehe fdisk(8).) Danach sollten Sie in der Lage sein, Ihre neu partitionierte Festplatte zu sehen: cat /proc/partitions major minor #blocks name 8 16 976762584 sdb 8 17 512000 sdb1 8 18 976248832 sdb2 9 1 976247676 md1 253 0 2097152 dm-0 253 1 2097152 dm-1 9 0 511988 md0 8 0 976762584 sdc 8 1 512000 sdc1 8 2 976248832 sdc2 Hinzufügen neuer Geräte zum Array [root@freshinstall ~]# mdadm --manage /dev/md0 --add /dev/sdc1 mdadm: addiert /dev/sdc1 [root@freshinstall ~]# mdadm --manage /dev/md1 --add /dev/sdc2 mdadm: addiert /dev/sdc2 [root@freshinstall ~]# cat /proc/mdstat Persönlichkeiten: [raid1] md0 : active raid1 sdc1[2] sdb1[1] 511988 blocks super 1.0 [2/2] [UU] md1 : active raid1 sdc2[2] sdb2[1] 976247676 blocks super 1.1 [2/1] [_U] [>........................] Erholung = 0.1% (1618176/976247676) finish=160.6min Geschwindigkeit=101136K/sec bitmap: 1/8 pages [4KB], 65536KB chunk unbenutzte Geräte: <none> Hinweis: Beide Arrays haben zwei aktive Mitglieder und md1 rekonstruiert aktiv. Neuinstallation des Bootloaders Sobald das ausgefallene Laufwerk ersetzt ist, installieren Sie GRUB erneut in den MBR der neuen Festplatte, um sicherzustellen, dass Sie von ihm booten können: grub-install /dev/sdc Installation abgeschlossen. Kein Fehler gemeldet. Dies ist der Inhalt der Gerätekarte /boot/grub/device.map. Prüfen Sie, ob dies korrekt ist oder nicht. Wenn eine der Zeilen falsch ist, Beheben Sie es und führen Sie das Skript "grub-install" erneut aus. # diese Gerätekarte wurde von Anaconda generiert (hd0) /dev/sdc (hd1) /dev/sdb |
Sagen Sie uns, was aufbleiben muss.
A short conversation with an engineer. No quote-bot, no callback queue. We'll tell you honestly if we're not the right fit.