Frage Die beste Möglichkeit, Linux-Software von RAID 1 bis RAID 10 zu erweitern


mdadm scheint nicht zu unterstützen, ein Array von Level 1 bis Level 10 zu wachsen.

Ich habe zwei Festplatten in RAID 1. Ich möchte zwei neue Festplatten hinzufügen und das Array in ein RAID 10-Array mit vier Festplatten konvertieren.

Meine derzeitige Strategie:

  1. Machen Sie eine gute Sicherung.
  2. Erstellen Sie ein degradiertes RAID 10-Array mit vier Festplatten mit zwei fehlenden Festplatten.
  3. rsync the RAID 1 array with the RAID 10 array.
  4. Scheitern

21
2017-07-21 18:20


Ursprung


Vergessen Sie Schritt 0 nicht. Machen Sie eine gute Sicherung von allem. - Anthony Lewis
Ich glaube, deine Schritte sind richtig. Sie verlieren die Redundanz während des Zeitraums, in dem Sie die Daten von einem Satz in einen anderen kopieren. - Kevin Kuphal
Ist es möglich, ein degradiertes 4disk RAID10 zu erstellen? - pauska
Ja, du verwendest einfach "/ dev / hda missing / dev / hdb missing", weil du sonst ein ganzes Paar verlierst und alles auseinander fällt. Die "akzeptierte Antwort" für diese Frage ist übrigens völlig falsch und funktioniert nicht. - womble♦
Ich suche auch nach einem guten Weg, dies zu tun, und ich denke, dass die in der Frage beschriebene Methode die beste ist, die ich bis jetzt gefunden habe. Mark Turners Antwort hilft nicht, da es ein 2-Geräte-Array erstellt, das nicht auf 4 Geräte umgestaltet werden kann (die anderen 2 können nur als Ersatz hinzugefügt werden). Und Suresh Kumars Antwort ist die gleiche wie in der Frage beschrieben, außer dass es nicht genau so funktionieren wird; die fehlenden Geräte müssen die 2. und 4., nicht die 3. und 4. sein. Über die Schritte in der Frage: Ich denke, Schritt 5 hat volle Redundanz und Schritt 6 hat Redundanz für die Hälfte der Daten. Ich sehe tatsächlich, dass die Stufen renumbere sind - aditsu


Antworten:


Mit Linux Softraid können Sie ein RAID 10 Array mit nur zwei Festplatten erstellen.

Gerätenamen, die unten verwendet werden:

  • md0 ist das alte Array von Typ / Level RAID1.
  • md1 ist das neue Array von Typ / Level RAID10.
  • sda1 und sdb2 sind Neu, leere Partitionen (ohne Daten).
  • sda2 und sdc1 sind alte Partitionen (mit wichtigen Daten).

Ersetzen Sie die Namen passend zu Ihrem Anwendungsfall. Verwendung z.B. lsblk um Ihr aktuelles Layout anzuzeigen.

0) Backup, Backup, Backup, Sicherung oh und BACKUP

1) Erstellen Sie das neue Array (4 Geräte: 2 vorhanden, 2 fehlen):

mdadm -v --create /dev/md1 --level=raid10 --raid-devices=4 /dev/sda1 missing /dev/sdb2 missing

Beachten Sie, dass in diesem Beispiel Layout sda1 hat ein fehlendes Gegenstück und sdb2 hat ein weiteres fehlendes Gegenstück. Ihre Daten auf md1 ist an dieser Stelle nicht sicher (effektiv ist es RAID0, bis Sie fehlende Mitglieder hinzufügen).

Um das Layout und andere Details des erstellten Arrays zu sehen, benutzen Sie:

mdadm -D /dev/md1

Hinweis! Sie sollten das Layout des Arrays speichern:

# View current mdadm config:
cat /etc/mdadm/mdadm.conf
# Add new layout (grep is to make sure you don't re-add md0):
mdadm --detail --scan | grep "/dev/md1" | tee -a /etc/mdadm/mdadm.conf
# Save config to initramfs (to be available after reboot)
update-initramfs -u

2) Formatieren und mounten. Das /dev/md1 sollte sofort nutzbar sein, muss aber formatiert und dann gemountet werden.

3) Dateien kopieren Verwendung z.B. rsync zum Kopieren von Daten von altem RAID 1 auf das neue RAID 10. (Dies ist nur ein Beispielbefehl, lesen Sie die man-Seiten für rsync)

rsync -arHx / /where/ever/you/mounted/the/RAID10

4) 1. Teil des alten RAID1 (md0) auslassen und zum neuen RAID10 (md1) hinzufügen

mdadm /dev/md0 --fail /dev/sda2 --remove /dev/sda2
mdadm /dev/md1 --add /dev/sda2

Hinweis! Dadurch werden Daten gelöscht sda2. Das md0 sollte immer noch nutzbar sein, aber nur wenn das andere Raid-Mitglied voll funktionsfähig war.

Beachten Sie auch, dass damit die Synchronisierung / Wiederherstellung gestartet wird md1. Verwenden Sie einen der folgenden Befehle, um den Status zu überprüfen:

# status of sync/recovery
cat /proc/mdstat
# details
mdadm -D /dev/md1

Warten bis die Wiederherstellung beendet ist.

5) Installieren Sie GRUB auf dem neuen Array (vorausgesetzt, Sie starten von dort). Einige Linux-Rettungs- / Boot-CDs funktionieren am besten.

6) Booten Sie auf einem neuen Array. WENN ES RICHTIG ARBEITET Zerstöre altes Array und füge die restliche Festplatte dem neuen Array hinzu.

PUNKT OHNE WIEDERKEHR

An diesem Punkt werden Sie Daten auf dem letzten Mitglied des alten md0-Arrays zerstören. Sei absolut sicher, dass alles funktioniert.

mdadm --stop /dev/md0
mdadm /dev/md0 --remove /dev/sdc1
mdadm /dev/md1 --add /dev/sdc1

Und wieder - warten bis zur Genesung md1 ist fertig.

# status of sync/recovery
cat /proc/mdstat
# details
mdadm -D /dev/md1

7) Aktualisieren Sie die Konfiguration von mdadm

Denken Sie daran zu aktualisieren /etc/mdadm/mdadm.conf (entferne md0).

Und speichern Sie die Konfiguration in initramfs (um nach dem Neustart verfügbar zu sein)

update-initramfs -u

8
2017-07-21 19:13



Wo kommen die vier Scheiben hinein? - womble♦
Eh? Ich behaupte eindeutig, das Array mit 2 Festplatten zu erstellen, die Daten zu kopieren, den Raid 1 durch Entfernen eines Laufwerks, das Hinzufügen des Laufwerks zum RAID10 und das Booten zum RAID10 zu beenden, falls es funktioniert, das RAID1 zu zerstören und das letzte Laufwerk zu verschieben das neue RAID .... - Mark Turner
Du hast deine Antwort nach meinem Kommentar bearbeitet. Außerdem gibt Ihr Verfahren ein RAID-10 mit zwei Festplatten und zwei Ersatzteilen ... kaum ein RAID-10 mit vier Festplatten. RAID-10-Volumes können auch nicht neu gestaltet werden. - womble♦
Ich habe die Befehle ausgeführt, wie Sie sie angegeben haben, und am Ende habe ich ein RAID-10 mit zwei Festplatten und zwei Ersatzteilen, wie in / proc / mdstat gezeigt. Dies ist auf Kernel 2.6.30 mit mdadm v2.6.7.2. - womble♦
"mdadm: raid10 array / dev / md1 kann nicht umgestaltet werden." Dies wird auch in der Manpage mdadm erwähnt. - womble♦


Befolgen Sie die gleichen Schritte wie bei Mark Turner, aber erwähnen Sie beim Erstellen des Raid-Arrays zwei fehlende Laufwerke

mdadm -v --create /dev/md1 --level=raid10 --raid-devices=4 /dev/sda1 missing /dev/sdb2 missing

Und dann mit anderen Schritten fortfahren.

Kurz gesagt, erstellen Sie RAID10 mit insgesamt 4 Festplatten (von denen 2 fehlen), Resynchronisierung, fügen Sie danach zwei weitere Festplatten hinzu.


9
2018-01-09 12:59





Gerade fertig von LVM auf zwei 2 TB Disk mdadm RAID 1 zu LVM auf einem Vier-Platten-RAID 10 (zwei Original + zwei neue Festplatten).

Wie @aditsu feststellte, ist die Laufwerksreihenfolge wichtig, wenn das Array erstellt wird.

mdadm -v --create /dev/md1 --level=raid10 --raid-devices=4 /dev/sda missing /dev/sdb missing

Der obige Code gibt ein verwendbares Array mit zwei fehlenden Festplatten an (fügen Sie Partitionsnummern hinzu, wenn Sie nicht ganze Festplatten verwenden). Sobald die dritte Festplatte hinzugefügt wurde, wird mit der Synchronisierung begonnen. Ich habe die vierte Festplatte vor der dritten abgeschlossenen Synchronisierung hinzugefügt. Es zeigte sich als Ersatz, bis die dritte Platte fertig war und dann begann es zu synchronisieren.

Schritte für meine Situation:

  1. Machen Sie eine gute Sicherung.

  2. Erstellen Sie ein degraded 4 disk RAID 10 Array mit zwei fehlenden Festplatten (wir wird die fehlenden Festplatten # 2 und # aufrufen 4).

  3. Sage der Frau, dass sie nichts ändern / hinzufügen darf Dateien, die ihr wichtig sind

  4. Fehler und entfernen Sie eine Festplatte aus der RAID 1-Array (Festplatte 4).

  5. Verschieben Sie physische Extents vom RAID 1 Array zum RAID 10 Array verlassen Datenträger 2 leer.

  6. Töte das aktive RAID 1 Array, füge hinzu die nun leere Platte (Platte 2) zum RAID 10-Array und warten auf die Resynchronisierung fertigstellen.

  7. Fügen Sie die erste aus dem RAID entfernte Festplatte hinzu 1 (Datenträger 4) an das RAID 10-Array.

  8. Gib Frau weiter.

In Schritt 7 denke ich Laufwerk 1, 2, ODER 4 kann fehlschlagen (während der Resynchronisierung von Datenträger 4), ohne das Array zu löschen. Wenn Laufwerk 3 fehlschlägt, werden die Daten im Array mit Toast überschrieben.


6
2018-03-23 23:04



+1, insbesondere für Schritt 3;) - Jack Douglas
-1, Anweisung unklar, habe keine Frau, verliere meine Daten - ZAB


Ich habe meine raid1 jetzt zu raid10 verschoben und während diese Seite mir geholfen hat, fehlen in den obigen Antworten einige Dinge. Insbesondere war es mein Ziel, die ext4-Geburtenzeiten zu halten.

Das Setup war:

  • 2 Raid1 Disketten von jedem Typ msdos und md0 mit ext4 Partition und mbr mit msdos
  • 2 frische neue Disks werden zu den neuen Primaries (alle gleich groß)
  • was zu einem 4 Platten Raid md127 ext4, aber aufgrund der Größe musste ich von wechseln mbr zu gpt
  • es ist meine Heimatdiskette, also ist kein Bootmanager Setup erforderlich oder beabsichtigt
  • benutze mein alltägliches Ubuntu (also: benutze die externe Rettungsdiskette nicht)
  • mit gparted, dd und mdadm

wie schon gesagt: der Nullschritt sollte Backup sein und dabei kann immer etwas schiefgehen, was zu extremen Datenverlusten führt

  1. Sicherung

  2. Setup des neuen Raids

    1. Erstelle einen neuen Raid

      mdadm -v --create /dev/md127 --level=raid10 --raid-devices=4 /dev/sdb1 missing /dev/sde1 missing
      

      (Ich fand, dass das Layout wichtig ist. Das 2. und 4. scheinen die Duplikate in einem Standard "nahe" Raid zu sein)

    2. setze die Partition des Raids Ich benutzte gparted, gpt auf dem md127 und dann eine neue Partition (ext4) der Größe des alten oder größer
  3. Wandern

    1. Jetzt bekomme ich die Daten über ... Ich habe zuerst versucht, Rsync zu verwenden, die funktionierte, aber die Geburtszeit nicht halten konnte ... benutze dd um Klon vom alten Überfall zum neuen

      dd if=/dev/md0 of=/dev/md127p1 bs=1M conv=notrunc,noerror,sync
      

      WARTE DARAUF 
      Sie können dies überprüfen, indem Sie USR1 an diesen Prozess senden

      kill -s USR1 <pid>
      
    2. repariere den Überfall
      gparted ist ein großartiges Tool: Sie sagen ihm, die Partition zu überprüfen und zu reparieren und die Größe mit wenigen Mausklicks auf die volle Größe der Festplatte zu ändern;)

    3. setze eine neue UUID auf diese Partition und aktualisiere deine fstab damit (ändere UUID)

    4. Speichere deinen Raid in conf

      mdadm --examine --scan  >> /etc/mdadm/mdadm.conf
      

      und entferne das alte

      vim /etc/mdadm/mdadm.conf 
      
    5. neustarten, wenn du nicht auf einem rescusystem bist
  4. das alte zerstören

    1. scheitern Sie die erste und fügen Sie sie dem neuen Überfall hinzu

      mdadm /dev/md0 --fail /dev/sdc1 --remove /dev/sdc1
      

      dann gpt auf diesem Gerät und legen Sie eine neue leere Partition

      mdadm /dev/md127 --add /dev/sdc1
      

      WARTE DARAUF 
      Sie können mit überprüfen

      cat /proc/mdstat
      
    2. Stoppen Sie den zweiten

      mdadm --stop /dev/md0 
      

      dann gpt auf dem letzten Gerät gpt und setzt erneut eine neue leere Partition

      mdadm /dev/md127 --add /dev/sdd1
      

      WARTE ES noch einmal


1
2017-07-09 06:34





Ich habe es mit LVM gemacht. Anfangskonfiguration: - sda2, sdb2 - und raid1 md1 oben erstellt. sda1 und sdb1 wurden für den zweiten Raid1 für die / boot-Partition verwendet. - md1 war pv im Volume Group Space, mit einigen LVMs darauf.

Ich habe Festplatten SDC und SDD hinzugefügt und dort Partitionen wie auf sda / sdb erstellt.

So:

  1. erstellt md10 als:

    mdadm --create / dev / md10 --level raid10 --raid-devices = 4 / dev / sdc2 fehlt / dev / sdd2

  2. erweitere vg darauf:

    pvcreate / dev / md10 vgextend space / dev / md10

  3. verschobene Volumes von MD1 nach MD10:

    pvmove -v / dev / md1 / dev / md10

(warte fertig) 4. Volumengruppe reduzieren:

vgreduce space /dev/md1
pvremove /dev/md1
  1. stoppe Array md1:

    mdadm -S / dev / md1

  2. füge Disketten von altem md1 zu md10 hinzu:

    mdadm -a / dev / md10 / dev / sda2 / dev / sdb2

  3. Konfiguration in /etc/mdadm/mdadm.conf aktualisieren:

    mdadm -E --scan >> / dev / mdadm / mdadm.conf

(und entferne dort altes md1)

Alles auf Live-System, mit aktiven Volumes für KVMs;)


0
2018-01-29 16:46