Gibt es eine Möglichkeit, das RAID 5-Laufwerk auszutauschen, ohne es vorher auszufallen?

494
Rodrigo

Ich habe ein Software-RAID-5, das aus 3 Laufwerken besteht. Nennen Sie es A, B, C. Ich möchte das alte Laufwerk C durch ein neueres Laufwerk mit größerer Kapazität ersetzen, um das Array schließlich zu erweitern. Dies ist auf einem Ubuntu 16.04-System, auf dem mdadm ausgeführt wird, um die Laufwerke zu verwalten.

Bei Online-Suchen wird empfohlen, Laufwerk C offline zu setzen, indem Sie den Fehlermodus festlegen, es aus dem Array entfernen, ein neues Laufwerk D hinzufügen und das Array neu synchronisieren. Ich mache mir Sorgen, dass das Array während des Resync-Prozesses (bei einem 1,5-TB-Laufwerk in der Größenordnung eines Tages) zerbrechlich ist und verloren gehen kann, wenn die Laufwerke A oder B ausfallen.

Gibt es eine Möglichkeit, stattdessen ein neues Laufwerk D zum Array hinzuzufügen und es den Inhalt von Laufwerk C zuerst "spiegeln / synchronisieren" und dann Laufwerk C so ausfallen / entfernen, dass das Array nicht erneut synchronisiert werden muss?

Hinweis: Ich habe einige der Terminologie bearbeitet, um das Problem dank der Kommentare zu klären

0
Sie stellen die falsche Frage. Wenn Sie Ihre Daten angerufen haben, sollten Sie aufhören, RAID5 zu verwenden - es wird nach 2 TB Gesamtspeicher nicht als robust betrachtet. Vielleicht auf RAID10 umsteigen. davidgo vor 5 Jahren 0
Ihre Terminologie ist falsch. Sie * versagen * ein Laufwerk nicht, Sie machen es * offline *. Sie erwähnen auch keine Betriebssystem- oder RAID-Software. Das sind einschränkende Faktoren. Keltari vor 5 Jahren 0

2 Antworten auf die Frage

0
Austin Hemmelgarn

Kommt darauf an, was Sie genau verwenden. Für alle möglichen Optionen, die ich mir vorstellen kann, müssen Sie das neue Laufwerk einstecken können, während alle alten verbunden sind. Im Allgemeinen können Sie jedoch Folgendes tun:

  • Ändern Sie das Array so, dass es das neue Laufwerk enthält, und ändern Sie es erneut, um das alte Laufwerk zu entfernen. Praktisch jede vernünftige Software-RAID-Implementierung sollte dazu in der Lage sein, die meisten davon auch online, obwohl sie schrecklich ineffizient ist.
  • Fügen Sie das neue Laufwerk als Hot-Spare zum Array hinzu, setzen Sie das alte aus und entfernen Sie das alte Laufwerk aus dem Array (da es jetzt vom Array als Hot-Spare behandelt werden sollte). Dies wird normalerweise von den meisten Software-RAID-Implementierungen unterstützt und ist wesentlich effizienter als die erste Option (es wird nur die Parität nur einmal und nicht zweimal wiederhergestellt).
  • Wenn Sie eine wirklich gute Software-RAID-Implementierung haben oder BTRFS verwenden (oder möglicherweise ZFS, ich weiß nicht, ob sie es unterstützen oder nicht), können Sie das Laufwerk tatsächlich ersetzen, ohne das Array neu erstellen zu müssen. Bei BTRFS würde dies über den btrfs device replaceBefehl erfolgen, der im Wesentlichen das Online-Äquivalent des Klonens des alten Geräts darstellt.
Danke für diesen Hinweis. Ich werde BTRFS und ZFZ betrachten. Ich benutze Mdadm. Rodrigo vor 5 Jahren 0
@Rodrigo Nur eine Vorwarnung in Bezug auf BTRFS. Es verwendet Terminologie wie RAID, aber es gibt einige recht wichtige Unterschiede zwischen dem Verhalten von BTRFS und dem klassischen RAID (RIAD1 zum Beispiel besteht derzeit nur aus zwei Kopien auf BTRFS, unabhängig davon, wie viele Geräte Sie verwenden Volumen). Austin Hemmelgarn vor 5 Jahren 0
Danke @Austin. Ich habe mir BTRFS und RAID-5-Looks angesehen, die noch nicht ausgereift sind. Stattdessen habe ich gelernt, dass mdadm tatsächlich eine Platte ersetzen kann. Genau das habe ich gesucht und werde diesen Weg gehen. Rodrigo vor 5 Jahren 0
0
plugwash

Dies scheint ein Duplikat von https://unix.stackexchange.com/questions/74924/how-to-safely-replace-a-not-yet-failed-disk-in-a-linux-raid5-array zu sein

Entsprechend der akzeptierten Antwort, vorausgesetzt, Sie haben mindestens mdadm 3.3 und den Kernel 3.2 (afaict ubuntu 16.04 tut), fügen Sie das Gerät zunächst als Ersatz hinzu und teilen Sie mdadm mit, dass Sie das alte Laufwerk durch das neue ersetzen möchten.

# mdadm /dev/md0 --add /dev/sdc1 # mdadm /dev/md0 --replace /dev/sdd1 --with /dev/sdc1 

Dabei ist sdc1 das neue Laufwerk und sdd1 das alte Laufwerk.

Ja!!! Genau das habe ich gesucht. Vielen Dank. Rodrigo vor 5 Jahren 0