Raid1 mit aktiver und Ersatzpartition

8

Ich habe das folgende Problem mit einer RAID1-Software-RAID-Partition auf meinem Ubuntu-System (10.04 LTS, 2.6.32-24-Server, falls es darauf ankommt).

Eine meiner Festplatten (sdb5) meldete E / A-Fehler und wurde daher im Array als fehlerhaft markiert. Das Array wurde dann mit einem aktiven Gerät abgebaut. Daher habe ich die Festplatte ersetzt, die Partitionstabelle geklont und alle neuen Partitionen zu meinen RAID-Arrays hinzugefügt. Nach der Synchronisierung waren alle Partitionen in Ordnung und hatten 2 aktive Geräte - außer einem von ihnen. Die Partition, die zuvor die fehlerhafte Festplatte gemeldet hat, enthielt die neue Partition jedoch nicht als aktives Gerät, sondern als Ersatzfestplatte:

md3 : active raid1 sdb5[2] sda5[1]
  4881344 blocks [2/1] [_U]

Ein detaillierter Blick zeigt:

root@server:~# mdadm --detail /dev/md3
[...]
Number   Major   Minor   RaidDevice State
   2       8       21        0      spare rebuilding   /dev/sdb5
   1       8        5        1      active sync   /dev/sda5

Hier ist also die Frage: Wie kann ich meinem Raid mitteilen, dass die Ersatzfestplatte in eine aktive umgewandelt werden soll? Und warum wurde es als Ersatzgerät hinzugefügt? Das Neuerstellen oder Zusammensetzen des Arrays ist keine Option, da es sich um meine Root-Partition handelt. Und ich kann im Software Raid HOWTO keine Hinweise zu diesem Thema finden.

Jede Hilfe wäre dankbar.

Aktuelle Lösung

Ich habe eine Lösung für mein Problem gefunden, bin mir aber nicht sicher, ob dies der tatsächliche Weg ist. Bei näherer Betrachtung meines Überfalls stellte ich fest, dass sdb5 immer als Ersatzgerät aufgeführt war:

mdadm --examine /dev/sdb5
[...]
Number   Major   Minor   RaidDevice State
this     2       8       21        2      spare   /dev/sdb5

   0     0       0        0        0      removed
   1     1       8        5        1      active sync   /dev/sda5
   2     2       8       21        2      spare   /dev/sdb5

Das Lesen des Geräts sdb5 in das Array md3 führte also immer dazu, dass das Gerät als Ersatz hinzugefügt wurde.

Schließlich habe ich gerade das Array neu erstellt

mdadm --create /dev/md3 --level=1 -n2 -x0 /dev/sda5 /dev/sdb5

was funktioniert hat.

Die Frage bleibt für mich jedoch offen: Gibt es eine bessere Möglichkeit, die Zusammenfassungen im Superblock zu bearbeiten und das Array anzuweisen, sdb5 von einer Ersatzfestplatte auf eine aktive Festplatte umzustellen? Ich bin immer noch neugierig auf eine Antwort.

Daniel Baron
quelle
Was zeigt "cat / proc / mdstat"? Ist es nicht nur ein Wiederaufbau und das "Ersatzteil" verschwindet einfach, wenn der Wiederaufbau abgeschlossen ist? Was zeigt "mdadm --version"? Es gab einen alten Fehler ... siehe mail-archive.com/[email protected]/msg09818.html .
Rems
Nein, das ist das Problem. Das erste Snippet in der Frage zeigt die Ausgabe von / proc / mdstat für das Array. Das Gerät wurde bereits synchronisiert, aber wie Sie nach dem erfolgreichen Synchronisierungsvorgang sehen können, bleibt das Gerät als Ersatzgerät erhalten und wird nicht in ein aktives Gerät umgewandelt.
Daniel Baron
mdadm - v2.6.7.1
Daniel Baron

Antworten:

1

Daniel: Überprüfen Sie zunächst noch einmal, ob das Ersatzteil in das Array integriert wird, indem Sie Folgendes ausführen:

cat / proc / mdstat

welche sollte melden, ob ein Build-Prozess läuft und wie lange dies zu erwarten ist.

Wenn kein Gebäude vorhanden ist, versuchen Sie Folgendes

mdadm / dev / md3 --remove / dev / sdb5

mdadm / dev / md3 --add / dev / sdb5

Und berichten Sie zurück, wie das bei Ihnen funktioniert. Weitere Informationen finden Sie unter http://linux.die.net/man/8/mdadm .

Rolnik
quelle
Danke für deine Hilfe, Rolnik. Wie Sie aus meinem ersten Snippet sehen können, zeigt / proc / mdstat beide Geräte im Array. Das Gerät wurde bereits zuvor (hier nicht gezeigt) ohne Probleme synchronisiert. Nach Abschluss des Resync-Vorgangs wurden die Geräte jedoch nicht in ein aktives Gerät umgewandelt. Das Entfernen und erneute Hinzufügen hat dieses Verhalten nicht geändert.
Daniel Baron
1

Ziemlich spät, aber dies würde nur das Ersatzlaufwerk aktivieren:

mdadm --grow /dev/md3 -n 2

Wie die Manpage sagt:

Zum Erstellen, Erstellen oder Erweitern: -n, --raid-Geräte = Geben Sie die Anzahl der aktiven Geräte im Array an. Dies und die Anzahl der Ersatzgeräte (siehe unten) müssen der Anzahl der Komponentengeräte (einschließlich "fehlender" Geräte) entsprechen, die in der Befehlszeile für --create aufgeführt sind. Das Festlegen eines Werts von 1 ist wahrscheinlich ein Fehler und erfordert daher, dass zuerst --force angegeben wird. Für Linear, Multipath, RAID0 und RAID1 ist dann der Wert 1 zulässig. Für RAID4, RAID5 oder RAID6 ist dies niemals zulässig. Diese Nummer kann nur mit --grow für RAID1-, RAID4-, RAID5- und RAID6-Arrays und nur auf Kerneln geändert werden, die die erforderliche Unterstützung bieten.

Pablo Montepagano
quelle
0

Soweit ich mich erinnere, musste ich, als ich dieses Problem hatte (aus einem anderen Grund), --grow verwenden, um das Ersatzlaufwerk "richtig" wieder hinzuzufügen (und auch den Fehlerzustand zu löschen).

So etwas (überprüfen Sie mit Ihrer Dokumentation!):

mdadm --grow --level = fehlerhaft --layout = flush / dev / sdb5

Dann können Sie das Gerät hinzufügen und es sollte erkannt werden.

Das Problem ist, dass der MD-Treiber den Status jeder Partition in den Startdaten des Laufwerks speichert. Selbst nach einem Neustart kennt es den Status und vermeidet Partitionen, die als fehlerhaft markiert sind.

Alexis Wilke
quelle