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+).
  • Sie haben zwei (2) Festplatten (sda, sdb), die mit dem SAS/SATA-Controller verbunden sind, der nicht & nbsp; Linux Hardware RAID ist.
  • 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


Überprüfen Sie den Gesundheitszustand Ihrer Festplatten. Sie sollten die folgenden Ergebnisse sehen, abhängig von Ihrem Disks & Rsquo; Status:

Gesundes Array

Katze /proc/mdstat

Persönlichkeiten: [raid1]

md0 : active raid1 sdb1[1] sda1[0]

        511988 Blöcke super 1.0 [2/2] [UU]

md1 : active raid1 sdb2[1] sda2[0]

        976247676 Blöcke super 1.1 [2/2] [UU]

      Bitmap: 1/8 Seiten [4KB], 65536KB Chunk

unbenutzte Geräte: <none>

 

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]

 

Katze / Proc / Partitionen

major    minor   #blocks  name

                                                   &

                                                   &

                                                   &

                                                   &

                                                   &

                                                   &

                                                   &

 253                                                 &nbsp

 253                                                 &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

 

Degradiertes Array


Fehler bei einer einzelnen Partition (sda1)

Persönlichkeiten: [raid1]

md0 : active raid1 sdb1[1] sda1[0](F)

      511988 Blöcke super 1.0 [2/1] [ U]

md1 : active raid1 sdb2[1] sda2[0]

     976247676 Blöcke 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]


Ausfall der gesamten Festplatte (sda)

Persönlichkeiten: [raid1]

md0 : active raid1 sdb1[1] sda1[0](F)

         511988 Blöcke super 1.0 [2/1] [ U]

md1 : active raid1 sdb2[1] sda2[0](F)

         976247676 Blöcke super 1.1 [2/1] [ U]

      Bitmap: 1/8 Seiten [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: 
/proc/mdstat

Persönlichkeiten: [raid1]

md0 : active raid1 sdb1[1]

         511988 Blöcke super 1.0 [2/1] [ U]

md1 : Active Raid1 sdb2[1]

         976247676 Blöcke super 1.1 [2/1] [ U]

      Bitmap: 1/8 Seiten [4KB], 65536KB Chunk

unbenutzte Geräte: <none>

 

Disk missing: /proc/Partitionen

major   minor  #blocks  name

                                                   &

                                                   &

                                                   &

                                                   &

 253                                                 &nbsp

 253                                                 &nbsp

                                                   &

 

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.

    • Werfen Sie einen Blick auf & nbsp;/proc/mdstat und stellen Sie sicher, dass alle Partitionen auf der ausgefallenen Festplatte als ‘faulty eingestellt sind. ’

ACHTUNG: Stellen Sie sicher, dass Sie nur die Partitionen ausfallen lassen, die zu der entsprechenden ausgefallenen Festplatte gehören (d.h. );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

 

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

In Katze /proc/mdstat

Persönlichkeiten: [raid1]

md0 : active raid1 sdb1[1] sda1[0](F)

         511988 Blöcke super 1.0 [2/1] [ U]

md1 : active raid1 sdb2[1] sda2[0](F)

         976247676 Blöcke super 1.1 [2/1] [ U]

      Bitmap: 1/8 Seiten [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:

    • Ausgefallene Mitglieder entfernen:

[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 Blöcke super 1.0 [2/1] [ U]

md1 : Active Raid1 sdb2[1]

         976247676 Blöcke super 1.1 [2/1] [ U]

      Bitmap: 1/8 Seiten [4KB], 65536KB Chunk

unbenutzte Geräte: <none>

 

    • 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:

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

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

 

    • 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 im obigen Beispiel.

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


Bestätigen Sie, ob das System das neue Laufwerk sieht ()sdc in diesem Fall:

Katze / Proc / Partitionen

major   minor  #blocks  name

 

                                                   &

                                                   &

                                                   &

                                                   &

 253                                                  &nbsp

 253                                                 &nbsp

                                                   &

                                                   &

Überprüfen Sie den SMART-Status der neuen Festplatte:

smartctl -H /dev/sdc

smartctl 5.39.1 2010-01-28 r3054 [x86 64-unbekannt-linux-gnu] (lokaler Aufbau)

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        End  #sectors  Id  System

/dev/sdc1   *                 *      1024000  fd  Linux raid autodetect

/dev/sdc2             1026048 1953523711 1952497664 fd  Linux raid autodetect

/dev/sdc3                                                 &nb

/dev/sdc4                                                 &nb

Neue Situation:

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

 

Device Boot        End  #sectors  Id  System

/dev/sdc1   *                 *      1024000  fd  Linux raid autodetect

/dev/sdc2             1026048 1953523711 1952497664 fd  Linux raid autodetect

/dev/sdc3                                                 &nb

/dev/sdc4                                                  &nb

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:

Katze / Proc / Partitionen

major   minor  #blocks  name

 

                                                   &

                                                   &

                                                   &

                                                   &

 253                                                 2097152

 253                                         2097152 dm-1

                                                   &

                                                   &

                                                   &

                                                   &

 

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 Blöcke super 1.0 [2/2] [UU]

md1 : active raid1 sdc2[2] sdb2[1]

         976247676 Blöcke super 1.1 [2/1] [ U]

      [>........................]  Erholung =  0.1% (1618176/976247676) finish=160.6min Geschwindigkeit=101136K/sec

      Bitmap: 1/8 Seiten [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

 

← Alle Knowledgebase Artikel

Sagen Sie uns, was aufbleiben muss.

Ein kurzes Gespräch mit einem Ingenieur. Kein quote-bot, keine callback-warteschlange.