ALL SYSTEMS OPERATIONALUPTIME 99.97%FLEET 18/18IN-MUM · US-LAX · EU-FSN EST. 2003 · +91 11 4998 4038

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:

  • Sie verwenden die neueste Version von Linux (CentOS 5+).
  • You have two (2) HDDs (sda, sdb) connected to SAS/SATA controller, which isnot Linux Hardware RAID.
  • Sie haben Linux Software RAID (MD).
  • Sie haben zwei (2) RAID1-Arrays, nämlich:
    • md0 (sda1+sdb1): /boot
    • md1 (sda2+sdb2): LVM
  • Eines Ihrer Arrays ist degradiert, aber funktionsfähig (nur Einzelmitgliedsfehler).
  • Sie haben vollen Root-Zugriff.


Einen Gesundheitscheck durchführen


Check the health status of your disks. You should see the following results depending on your disks’ status:

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>

&nbsp;

Beachten Sie, dass beide Arrays (md0, md1) sind:

    1. Aktiv
    2. Enthalten zwei Mitglieder: sdb1[1], sda1[0]
    3. Zwei von zwei Mitgliedern sind up: [2/2] [UU]

&nbsp;

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

&nbsp;

Beachten Sie, dass die folgenden Punkte wahr sein sollten:

    1. Beide physikalischen Festplatten sind vorhanden: sda, sdb
    2. Beide Arrays sind vorhanden: md0, md1
    3. Beide Festplatten sind gleich groß: sda = sdb = 976762584
    4. Beide Disks sind auf die gleiche Weise partitioniert:
    • sda1 = sdb1 = 512000
    • sda2 = sdb2 = 976248832

&nbsp;

Degradiertes Array


Fehler bei einer einzelnen Partition (sda1)

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]

&nbsp;&nbsp;&nbsp;&nbsp;bitmap: 0/8 Seiten [0KB], 65536KB Chunk

unbenutzte Geräte: <none>

&nbsp;

Hinweis: Ein oder mehrere RAID-Arrays zeigen fehlende Mitglieder an: [2/1] [ U]


Ausfall der gesamten Festplatte (sda)

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.


Disk missing:&nbsp;
/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>

&nbsp;

Disk missing:&nbsp;/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

&nbsp;

Entfernen einer fehlgeschlagenen Festplatte

Manuelles Markieren von Geräten als &lsquo;failed&rsquo;

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.

    • Take a look at /proc/mdstat&nbsp;und stellen Sie sicher, dass alle Partitionen auf der ausgefallenen Festplatte als &lsquo;faulty eingestellt sind. &rsquo;

CAUTION: Be sure you are failing only the partitions that belong to the corresponding failed disk (i.e. sda1/sda2&nbsp;for&nbsp;SDA&nbsp;and&nbsp;sdb1/sdb2&nbsp;for&nbsp;sdb).

Set&nbsp;sda1&nbsp;and&nbsp;sda1&nbsp;as&nbsp;fehlerhaft

[root@freshinstall ~]# mdadm --manage /dev/md0 --fail /dev/sda1

mdadm: Set /dev/sda1 fehlerhaft in /dev/md0

&nbsp;

[root@freshinstall ~]# mdadm --manage /dev/md1 --fail /dev/sda2

mdadm: Set /dev/sda2 fehlerhaft in /dev/md1

&nbsp;

    • Bestätigen Sie, dass beide Partitionen derselben Festplatte als fehlgeschlagen gekennzeichnet sind.

In&nbsp;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>

&nbsp;

Entfernen von ausgefallenen Geräten aus dem Array

Bevor eine Festplatte ersetzt werden kann, sollten die ausgefallenen Mitglieder aus ihren entsprechenden Arrays entfernt werden:

    • Ausgefallene Mitglieder entfernen:

[root@freshinstall ~]# mdadm --manage /dev/md0 --remove /dev/sda1

mdadm: heiß entfernt /dev/sda1 von /dev/md0

&nbsp;

[root@freshinstall ~]# mdadm --manage /dev/md1 --remove /dev/sda2

mdadm: heiß entfernt /dev/sda2 von /dev/md1

&nbsp;

[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>

&nbsp;

    • Stellen Sie sicher, dass Sie RAID-Superblöcke löschen, wenn Sie planen, die gleichen Partitionen wieder in das Array hinzuzufügen oder wenn Sie die Partitionen für etwas anderes wiederverwenden möchten:

&nbsp;[root@freshinstall ~]# mdadm --misc --zero-superblock /dev/sda1

[root@freshinstall ~]# mdadm --misc --zero-superblock /dev/sda2

&nbsp;

    • Sie können auch alle Informationen auf der Festplatte löschen, bevor Sie sie verwerfen , vorausgesetzt, dass die physische Festplatte noch funktioniert:

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&nbsp;in the above example).

Anmerkung: Dieser Prozess kann einige Zeit in Anspruch nehmen.

&nbsp;

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


Confirm if the system sees the new drive (sdc in this case):

cat /proc/partitions

major   minor    #blocks  name

&nbsp;

   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

&nbsp;

=== ART DER LESUNG SMART DATEN ABSCHNITT ===

SMART-Selbsteinschätzungstestergebnis für den Gesamtgesundheitszustand: PASSED

&nbsp;

Trennwand

Um mit dem Portionieren zu beginnen, bestätigen Sie zuerst, dass die neue Festplatte nicht automatisch gemountet wurde:

&nbsp; 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

&nbsp;

Disk /dev/sdc: 121601 Zylinder, 255 Köpfe, 63 Sektoren/Spur

Alte Situation:

Einheiten = Sektoren von 512 Bytes, ab 0 zählend

&nbsp;

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

&nbsp;

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

&nbsp;

Wiederlesen der Partitionstabelle ...

&nbsp;

Wenn Sie eine DOS-Partition, /dev/foo7, erstellt oder geändert haben, verwenden Sie beispielsweise dd(1)

um die ersten 512 Bytes zu nullen: &nbsp; dd if=/dev/zero of=/dev/foo7 bs=512 count=1

(Siehe fdisk(8).)

&nbsp;

Danach sollten Sie in der Lage sein, Ihre neu partitionierte Festplatte zu sehen:

cat /proc/partitions

major   minor   #blocks  name

&nbsp;

   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

&nbsp;

Hinzufügen neuer Geräte zum Array

&nbsp;[root@freshinstall ~]# mdadm --manage /dev/md0 --add /dev/sdc1

mdadm: addiert /dev/sdc1

&nbsp;

[root@freshinstall ~]# mdadm --manage /dev/md1 --add /dev/sdc2

mdadm: addiert /dev/sdc2

&nbsp;

[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]

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [>........................]&nbsp; Erholung =&nbsp; 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.

&nbsp;

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.

&nbsp;

# diese Gerätekarte wurde von Anaconda generiert

(hd0)     /dev/sdc

(hd1)     /dev/sdb

&nbsp;

← Alle Knowledgebase Artikel

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.