mdadm - Entfernen Sie die Festplatte von RAID0

11

Ich würde gerne wissen, dass es mit mdadm möglich ist, Folgendes zu tun:

  1. Ich beginne mit der RAID0-Konfiguration auf 2 Festplatten: sdaund sdb.
  2. Ich möchte dem Array eine weitere Festplatte hinzufügen sdcund alle Daten von sdbdort verschieben.
  3. Trennen sdb.

Im Moment sehe ich nur eine Option - ich das Array zu stoppen, zu kopieren , sdbum sdcmit ddoder einem anderen Block-Kopie - Tool und starten Sie das Array zurück.

Vermisse ich etwas Ist das mit mdadm möglich?

Maniaque
quelle
Sie können SDB zu einem temporären Spiegel machen und dann SDC im Hintergrund damit synchronisieren - dies reduziert die erforderlichen Ausfallzeiten, obwohl ich dies als Anfänger an Ihrer Stelle nicht getan habe.
Peterh - Wiedereinsetzung Monica
Ich bin sicher kein Anfänger :) Kannst du mir mehr über temporäre Spiegel erzählen? Ist es mdadm Funktion?
Maniaque
Nein, es ist eine einfache Schlachtzugsfunktion. Ich dachte, ein temporäres raid1-Array, das den Platz von sdb in Ihrem raid1-Array erhalten könnte. Während Sie sdb mit sdc synchronisieren, können Sie es auch als Teil Ihres raid0-Arrays verwenden.
Peterh - Wiedereinsetzung Monica
Also, verstehe ich dich richtig? 1. Stoppen Sie das Array. 2. Erstellen Sie ein weiteres RAID1-Array mit sbd und sdc. 3. Und wie könnte ich mdadm fragen, also starte ich mein RAID0 mit md1 anstelle von sdb?
Maniaque
Ich habe nicht viel recherchiert, aber es scheint sicher, dass Sie in der Lage sein sollten, von einem RAID0 -> RAID5 zu wachsen. Dann schrumpfen Sie wieder auf ein RAID0.
Zoredache

Antworten:

17

Zuallererst: für diejenigen, die immer noch an "RAID0 hat kein Hot Spare" glauben. Es könnte ein manuelles Ersatzteil haben, das von Menschen erstellt wurde, die RAID-Level und MDADM verstehen. mdadm ist Software-RAID, daher kann es viele interessante Dinge tun.

Dank an Zoredache für die Idee!

Also die Situation:

  • Sie haben ein RAID0-Array mit zwei Festplatten
  • Sie möchten eine davon ohne Ausfallzeiten des Arrays ersetzen

Wenn die Ausfallzeit akzeptabel ist, können Sie mit dd immer nur eine Blockkopie der Festplatte erstellen und das Array wieder zusammensetzen. MDADM ist in Ordnung.

Lösung: Verwenden Sie RAID4 als Zwischenlösung

RAID0 -> RAID4 -> RAID0

Wenn Sie sich also nicht an RAID4 erinnern, ist es einfach. Es hat einen Paritätsblock, ist aber im Gegensatz zu RAID5 nicht über das Array verteilt, sondern befindet sich auf EINER Festplatte. Das ist der Punkt, das ist wichtig und das ist der Grund, warum RAID5 nicht funktioniert.

Was Sie benötigen: zwei weitere Festplatten derselben Größe wie die Festplatte, die Sie ersetzen möchten.

Umgebung:

  • Ubuntu 14.04 Thrusty Thar
  • mdadm - v3.2.5 - 18. Mai 2012
  • / dev / sdb - beginne damit, wird es ersetzen
  • / dev / sdc - fang damit an
  • / dev / sdd - wird vorübergehend verwendet
  • / dev / sde - wird anstelle von sdb verwendet

Der ultimative RAID0 Hot-Spare-MDADM-Leitfaden;)

sudo mdadm -C /dev/md0 -l 0 -n 2 /dev/sd[bc]

md0 : active raid0 sdc[1] sdb[0]
      2096128 blocks super 1.2 512k chunks

Wir haben ein raid0-Array erstellt, es sieht süß aus.

sudo md5sum /dev/md0

b422ba644a3c83cdf28adfa94cb658f3  /dev/md0

Dies ist unser Kontrollpunkt - wenn sich auch nur ein Bit im Ergebnis unterscheidet /dev/md0- sind wir gescheitert.

sudo mdadm /dev/md0 --grow --level=4

md0 : active raid4 sdc[1] sdb[0]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]

Deshalb haben wir unser Array auf RAID4 erweitert. Wir haben die Paritätsdiskette noch nicht hinzugefügt, also machen wir es. Das Wachstum erfolgt sofort - es gibt nichts zu berechnen oder neu zu berechnen.

sudo mdadm /dev/md0 -a /dev/sdd

md0 : active raid4 sdd[3] sdc[1] sdb[0]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
      [===>.................]  recovery = 19.7% (207784/1048064) finish=0.2min speed=51946K/sec

Wir haben sddals Paritätsdiskette hinzugefügt . Dies ist wichtig zu beachten - die Reihenfolge der Festplatten in der ersten Reihe ist nicht mit dem Bild in der zweiten Reihe synchronisiert! [UU_]

sdd wird zuerst angezeigt, aber tatsächlich ist es das letzte und enthält nicht die Daten, sondern die Parität.

sudo mdadm /dev/md0 -f /dev/sdb

md0 : active raid4 sdd[3] sdc[1] sdb[0](F)
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]

Wir haben unsere Festplatten-SDB fehlerhaft gemacht, um sie in den nächsten Schritten zu entfernen.

sudo mdadm --detail /dev/md0

State : clean, degraded

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       32        1      active sync   /dev/sdc
       3       8       48        2      active sync   /dev/sdd

       0       8       16        -      faulty spare   /dev/sdb

Details zeigen uns das Entfernen der ersten Festplatte und hier können wir die wahre Reihenfolge der Festplatten im Array sehen. Es ist wichtig, die Festplatte mit Parität zu verfolgen. Wir sollten sie nicht im Array belassen, wenn wir zu RAID0 zurückkehren.

sudo mdadm /dev/md0 -r /dev/sdb

md0 : active raid4 sdd[3] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]

sdb ist komplett entfernt, könnte weggenommen werden.

sudo mdadm /dev/md0 -a /dev/sde

md0 : active raid4 sde[4] sdd[3] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]
      [==>..................]  recovery = 14.8% (156648/1048064) finish=0.2min speed=52216K/sec

Wir haben den Ersatz für unsere SDB-Festplatte hinzugefügt. Und los geht's: Jetzt werden die Daten von sdb mit Parität wiederhergestellt. Sweeeeet.

md0 : active raid4 sde[4] sdd[3] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/3] [UUU]

Getan. Im Moment sind wir völlig sicher - alle Daten von sdb werden wiederhergestellt, und jetzt müssen wir sdd entfernen (denken Sie daran, es hält Parität).

sudo mdadm /dev/md0 -f /dev/sdd

md0 : active raid4 sde[4] sdd[3](F) sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]

Sdd fehlerhaft gemacht.

sudo mdadm /dev/md0 -r /dev/sdd

md0 : active raid4 sde[4] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]

Sdd wurde aus unserem Array entfernt. Wir sind bereit, wieder RAID0 zu werden.

sudo mdadm /dev/md0 --grow --level=0 --backup-file=backup

md0 : active raid4 sde[4] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
      [=>...................]  reshape =  7.0% (73728/1048064) finish=1.5min speed=10532K/sec

Aaaaaaund Knall!

md0 : active raid0 sde[4] sdc[1]
      2096128 blocks super 1.2 512k chunks

Getan. Schauen wir uns die md5-Prüfsumme an.

sudo md5sum /dev/md0

b422ba644a3c83cdf28adfa94cb658f3  /dev/md0

Noch Fragen? RAID0 könnte also einen Ersatz haben. Es heißt "Benutzer";)

Maniaque
quelle
1

Soweit ich weiß, können Sie nach dem Einrichten eines RAID0 keine der Festplatten mehr wechseln. Sie können ein Backup erstellen, die Festplatten wechseln und das Backup wiederherstellen. Ich würde nur RAID5 diese 3 Festplatten, die Sie haben. Auf diese Weise können Sie in Zukunft eine Festplatte löschen und dennoch neu erstellen.

joeg1ff
quelle
Nun, ich weiß, wie man das macht, worüber ich mit RAID5 spreche - ich kann dem Array eine neue Festplatte hinzufügen (als Ersatz), dann die Festplatte, die ich ausziehen möchte, als fehlerhaft markieren und aus dem Array entfernen und anschließend den Superblock löschen. Aber ich bin an der gleichen Operation mit RAID0 interessiert :)
Maniaque
@maniaque Es heißt RAID 0, weil Null ist, wie viel RAID Sie erhalten. Es sollte absolut nichts Wichtiges auf ein RAID 0 gelegt werden.
Michael Hampton
@ MichaelHampton Ich denke, Sie meinen Redundanz nicht RAID, aber Ihre Aussage ist 100% korrekt.
Joeg1ff
@ MichaelHampton Bitte sehen Sie meine Antwort unten :)
Maniaque
0

RAID 0 bietet keine Redundanz.

Daher wird der Austausch heißer Laufwerke nicht unterstützt.

user2743554
quelle
1
Schauen Sie bitte unten nach. Es ist nichts unmöglich, wenn Sie RAID-Level verstehen;)
Maniaque