Wissensdatenbank · Server Dedicated & VPS
Linux-Software-RAID verwalten (Teil II): Wiederherstellung nach einem Festplattenausfall
Zuletzt aktualisiert am 2019-02-03
Linux-Software-RAID verwalten (Teil II): Wiederherstellung nach einem Festplattenausfall
|
Dieser Artikel zeigt Ihnen, wie Sie Linux Software-RAID bei einem einzelnen Festplattenausfall wiederherstellen. Für die folgenden Beispiele gehen wir von diesen Annahmen aus:
Fehlerfreies Array cat /proc/mdstat Personalities : [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 unused devices: <none>
Beachten Sie, dass beide Arrays (md0, md1) die folgenden Merkmale aufweisen:
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 zutreffen sollten:
Degradiertes Array
Personalities : [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 pages [0KB], 65536KB chunk unused devices: <none>
Hinweis: Bei einem oder mehreren RAID-Arrays werden fehlende Mitglieder angezeigt: [2/1] [_U]
Personalities : [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 unused devices: <none> Bei einem schwerwiegenden Ausfall oder wenn eine Festplatte beim Neustart des Systems nicht initialisiert wird, kann die Festplatte selbst fehlen, wie in den folgenden Beispielen gezeigt.
Personalities : [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 unused devices: <none>
Festplatte fehlt: /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
Eine defekte Festplatte entfernen Geräte manuell als ‘failed’ markieren Sie sollten ein Gerät nur dann manuell als fehlerhaft markieren, wenn eines seiner Arrays aufgrund eines Timeouts oder eines Lesefehlers auf einer der Partitionen in einen beeinträchtigten (degraded) Zustand geraten ist. Die physische Festplatte selbst sollte weiterhin einwandfrei funktionieren.
ACHTUNG: Stellen Sie sicher, dass Sie nur die Partitionen als fehlerhaft markieren, die zur entsprechenden defekten Festplatte gehören (d. h. sda1/sda2 für sda und sdb1/sdb2 für sdb). Setzen Sie sda1 und sda1 auf faulty [root@freshinstall ~]# mdadm --manage /dev/md0 --fail /dev/sda1 mdadm: set /dev/sda1 faulty in /dev/md0
[root@freshinstall ~]# mdadm --manage /dev/md1 --fail /dev/sda2 mdadm: set /dev/sda2 faulty in /dev/md1
Suchen Sie im cat /proc/mdstat Personalities : [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 unused devices: <none>
Defekte Geräte aus dem Array entfernen Bevor ein Datenträger ersetzt werden kann, sollten die ausgefallenen Mitglieder aus den zugehörigen Arrays entfernt werden:
[root@freshinstall ~]# mdadm --manage /dev/md0 --remove /dev/sda1 mdadm: hot removed /dev/sda1 from /dev/md0
[root@freshinstall ~]# mdadm --manage /dev/md1 --remove /dev/sda2 mdadm: hot removed /dev/sda2 from /dev/md1
[root@freshinstall ~]# cat /proc/mdstat Personalities : [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 unused devices: <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 ACHTUNG: Dieser Vorgang löscht alle Daten auf dem Gerät, das im Argument "of=" angegeben ist (/dev/sda im obigen Beispiel). Hinweis: Dieser Vorgang kann einige Zeit in Anspruch nehmen.
Ersatzdatenträger hinzufügen Der Ersatzdatenträger muss exakt genauso groß oder größer sein als der ausgefallene Datenträger. Sobald der Ersatzdatenträger in das System eingebaut wurde, protokolliert der Kernel etwa Folgendes: dmesg | tail sd 0:0:0:0: [sdc] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB) sd 0:0:0:0: [sdc] 4096-byte physical blocks sd 0:0:0:0: [sdc] Write Protect is off sd 0:0:0:0: [sdc] Mode Sense: 00 3a 00 00 sd 0:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
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 Prü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 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED
Partitionierung Bevor Sie mit der Partitionierung beginnen, vergewissern Sie sich zunächst, dass die neue Festplatte nicht automatisch eingehängt wurde: mount | grep sdc Es sollte keine Ausgabe erfolgen. Wird etwas angezeigt, müssen die entsprechenden Partitionen manuell ausgehängt werden, indem Sie Folgendes ausführen: umount <partition> Da das ursprüngliche System zwei gespiegelte Laufwerke exakt gleicher Größe verwendete, können Sie das funktionierende Laufwerk als Vorlage für die Partitionierung nutzen: sfdisk -d -uS /dev/sdb | sfdisk -L -uS /dev/sdc Checking that no-one is using this disk right now ... OK
Disk /dev/sdc: 121601 cylinders, 255 heads, 63 sectors/track Bisheriger Zustand: Einheiten = Sektoren von 512 Bytes, beginnend bei 0
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 Neuer Zustand: Einheiten = Sektoren von 512 Bytes, beginnend bei 0
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: Partition 1 endet nicht an einer Zylindergrenze Warnung: Partition 2 beginnt nicht an einer Zylindergrenze Warnung: Partition 2 endet nicht an einer Zylindergrenze Die neue Partitionstabelle wurde erfolgreich geschrieben
Die Partitionstabelle wird neu eingelesen ...
Wenn Sie eine DOS-Partition, beispielsweise /dev/foo7, erstellt oder geändert haben, verwenden Sie dd(1) um die ersten 512 Bytes mit Nullen zu überschreiben: dd if=/dev/zero of=/dev/foo7 bs=512 count=1 (Siehe fdisk(8).)
Danach sollte Ihre neu partitionierte Festplatte angezeigt werden: 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
Neue Geräte zum Array hinzufügen [root@freshinstall ~]# mdadm --manage /dev/md0 --add /dev/sdc1 mdadm: added /dev/sdc1
[root@freshinstall ~]# mdadm --manage /dev/md1 --add /dev/sdc2 mdadm: added /dev/sdc2
[root@freshinstall ~]# cat /proc/mdstat Personalities : [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] [>....................] recovery = 0.1% (1618176/976247676) finish=160.6min speed=101136K/sec bitmap: 1/8 pages [4KB], 65536KB chunk unused devices: <none> Hinweis: Beide Arrays haben jeweils zwei aktive Mitglieder, und md1 wird gerade aktiv wiederhergestellt.
Bootloader neu installieren Sobald die ausgefallene Festplatte ersetzt wurde, installieren Sie GRUB erneut im MBR der neuen Festplatte, damit sichergestellt ist, dass Sie von ihr booten können: grub-install /dev/sdc Installation finished. No error reported. This is the contents of the device map /boot/grub/device.map. Check if this is correct or not. If any of the lines is incorrect, fix it and re-run the script `grub-install'.
# this device map was generated by anaconda (hd0) /dev/sdc (hd1) /dev/sdb
|
Tell us what you need
Compare available plans or describe your workload so we can discuss a suitable starting point.