Ist es möglich, ein btrfs-RAID5 mit denselben Festplatten in ein RAID6 umzuwandeln, ohne Daten zu verlieren?

Ist es möglich, ein btrfs-RAID5 mit denselben Festplatten in ein RAID6 umzuwandeln, ohne Daten zu verlieren?

Wie konvertiere ich ein vorhandenes RAID5-BTRFS-Setup (einfache Parität) in eine RAID6-Konfiguration mit doppelter Parität, sofern genügend freier Speicherplatz verfügbar ist, und verwende dabei dieselben Festplatten, ohne Daten auszulagern?

Im Grunde genommen sollte das nur das Entfernen einer Festplatte und das Beibehalten einer redundanten Festplatte sein, sodass BTRFS alles auf den verbleibenden Festplatten neu verteilt und die entfernte Festplatte wieder hinzufügt?

Was ist also das empfohlene Vorgehen?

Ich dachte an so etwas in der Art

btrfs device delete /dev/sdx /mnt/fs
btrfs balance start -dconvert=raid6 -mconvert=raid6 /mnt/fs
btrfs device add /dev/sdx /mnt/fs

Muss ich die Platte überhaupt löschen und hinzufügen oder kann ich das Setup direkt konvertieren?

btrfs balance start -dconvert=raid6 -mconvert=raid6 /mnt/fs

Antwort1

https://www.howtoforge.com/a-beginners-guide-to-btrfs-p2

Dies besagt, dass Sie den RAID-Level eines laufenden Arrays ändern können, vorausgesetzt, Sie haben genügend freien Speicherplatz. Stellen Sie sicher, dass Sie den neuesten stabilen Linux-Kernel verwenden.

Beispiel (aus Link): btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt

-dconvert ist für die Daten

-mconvert ist für die Metadatei (Sie möchten diese duplizieren, glauben Sie mir)

/mnt ist der Ort, an dem das BTRFS-Volume gemountet ist. Sie können dies auch unmountet tun, aber ich habe es nicht versucht und möchte ehrlich bleiben.

Sie haben raid0, raid1, raid5 und raid6. Wenn Sie genügend freien Speicherplatz haben, ist es meines Erachtens n-2 oder Anzahl der Laufwerke [freier Speicherplatz] minus 2 für raid6. Mit BTRFS können Sie jedoch mit weniger auskommen und stattdessen die Daten zum Messen verwenden. Es ist möglich, raid6-ähnliche Funktionen mit weniger als der akzeptablen Anzahl von Laufwerken zu haben, wenn Sie eine kleine Datenmenge speichern. Möglich, aber nicht empfohlen.

Beachten Sie auch, dass dies eine Weile dauern kann, je nachdem, wie viele Daten Sie auf den Laufwerken haben. Es besteht auch eine geringe Wahrscheinlichkeit, dass der Ausgleich fehlschlägt und das Array entweder vollständig zerstört oder in einen instabilen Nur-Lese-Modus versetzt wird. Bewahren Sie wie immer Backups auf.

Antwort2

RAID6 - Wikipedia

  • RAID5 erfordert 3+ Laufwerke mit einer Speichereffizienz von 1-1/n
  • RAID6 erfordert 4+ Laufwerke(n) mit 1-2/n Speichereffizienz

Gesamtspeicherplatz (ungefähr) eines 1-TiB-Arrays und Änderung (%) von RAID5 -> RAID6:

  • 4 x 250 GiB ~ 1 TiB -> RAID5 ~ 768 GiB -> RAID6 ~ 512 GiB -> -50 %
  • 5 x 200 GiB ~ 1 TiB -> RAID5 ~ 819,2 GiB -> RAID6 ~ 614,4 GiB -> -25 %
  • 6 x 170 GiB ~ 1 TiB -> RAID5 ~ 853,3 GiB -> RAID6 ~ 682,6 GiB -> -20 %

Sie können den RAID-Level eines laufenden Arrays ändern, vorausgesetzt, Sie verfügen über ausreichend freien Speicherplatz und Laufwerke.

  • Löschen oder entfernen Sie keine Laufwerke, die Sie im endgültigen Array haben möchten.
  • durch Löschen -> Hinzufügen -> Konvertieren würden Sie einen „doppelten“ Ausgleich erzielen
    • Während des Entfernens/Löschens werden Metadaten und Datenblöcke auf die verbleibenden Laufwerke neu verteilt. Anschließend fügen Sie ein Laufwerk hinzu, das bei der Konvertierung zu RAID6 erneut ausgeglichen werden muss.

Wenn Sie ein oder mehrere Laufwerke hinzufügen müssen, fügen Sie sie alle hinzu, bevor Sie ausbalancieren/konvertieren.

btrfs device add /dev/sdc /mnt
btrfs device add /dev/sdd /mnt

Filter ausgleichen – btrfs.wiki.kernel.org

Beispiel zum „Konvertieren“ des BTRFS-Balances vom Link (aktualisiert):

btrfs balance start -dusage=90 -dconvert=raid6 -mconvert=raid6 /mnt

-dusage ist der Nutzungsschwellenwert für Ihren Datenblockausgleich.

-dconvert ist für die Daten

-mconvert ist für die Metadaten

Das BTRFS-Volume ist unter /mnt gemountet. Unmountet ist dies nicht möglich.

btrfs-Daten und/oder Metadaten können sein:

  1. einzel
  2. raid0
  3. raid01
  4. Überfall1
  5. überfall5
  6. raid6
  7. raid1c3
  8. raid1c4

Es können Befehle zum Anhalten, Fortsetzen, Abbrechen oder Abrufen des Status verwendet werden.

btrfs balance pause /mnt
btrfs balance resume /mnt
btrfs balance cancel /mnt
btrfs balance status -v /mnt

Vorbehalte

  1. Je nachdem, wie viele Daten Sie auf den Laufwerken haben, dauert der Ausgleich einige Zeit.
  2. Es besteht die Möglichkeit, dass der Ausgleich ausfällt und das Array beschädigt und/oder in einen instabilen schreibgeschützten Modus versetzt wird.
  3. Sichern Sie die Daten vor der Konvertierung.
  4. Stellen Sie sicher, dass Sie den neuesten stabilen Linux-Kernel verwenden.

verwandte Informationen