Multiple BTRFS-Profile für data/metadata?

Hallo!

Vielleicht hat ja jemand mehr Erfahrung :smiley:

Also ich habe mit ein 4Bay Case von Fantec geholt. Da habe ich 4 alte Festplatten unterschiedlicher Größe eingebaut, die lagen nur herum und ich dachte, die kann ich noch sinnvoll einsetzen. Diese sind NICHT als Backup gedacht.

Nun habe ich 3 Festplatten zu einem Dateisystem zusammengefügt mittels btrfs add device und wollte daraus ein RAID0 machen mittels btrfs balance start -dconvert=raid0 -mconvert=raid1 /mnt. Es sieht jetzt so aus:

Overall:
    Device size:                   5.46TiB
    Device allocated:              1.69TiB
    Device unallocated:            3.77TiB
    Device missing:                  0.00B
    Device slack:                    0.00B
    Used:                          1.62TiB
    Free (estimated):              3.83TiB      (min: 1.95TiB)
    Free (statfs, df):             3.83TiB
    Data ratio:                       1.00
    Metadata ratio:                   2.00
    Global reserve:              512.00MiB      (used: 0.00B)
    Multiple profiles:                 yes      (data, metadata, system)

Data,single: Size:1.52TiB, Used:1.52TiB (100.00%)
   /dev/sdb        1.52TiB

Data,RAID0: Size:162.00GiB, Used:93.46GiB (57.69%)
   /dev/sdb       54.00GiB
   /dev/sdd       54.00GiB
   /dev/sde       54.00GiB

Metadata,RAID1: Size:1.00GiB, Used:219.84MiB (21.47%)
   /dev/sdb        1.00GiB
   /dev/sde        1.00GiB

Metadata,DUP: Size:4.00GiB, Used:3.83GiB (95.76%)
   /dev/sdb        8.00GiB

System,RAID1: Size:32.00MiB, Used:64.00KiB (0.20%)
   /dev/sdb       32.00MiB
   /dev/sde       32.00MiB

System,DUP: Size:8.00MiB, Used:144.00KiB (1.76%)
   /dev/sdb       16.00MiB

Unallocated:
   /dev/sdb        2.05TiB
   /dev/sdd      877.51GiB
   /dev/sde      876.48GiB

Jetzt zu der Frage:

  1. Wenn der erste Terabyte nun im RAID0 Profil ist, kann der Rest auch mit dem Single Profil geschrieben werden, oder blockiert es dann? Sind gemischte Profile innerhalb von Meta oder Data möglich?
  2. Gibt es ein mögliches Szenario, wo das DUP Profil für Data Sinn macht? Würde es bei Festplatten unterschiedlicher Größe Sinn machen?

Leider habe ich dazu nichts gefunden im großen weiten Internet, da irgendwie nie diese Frage gestellt wurde. Hat das jemand mal getestet?

Gruß, Megavolt

Seit ich 2 (baugleiche) Festplatten von IBM in kurzer Zeit verloren hab und dabei 1x Datenrettung bezahlen musste, bin ich sehr vorsichtig geworden.

Ich arbeite bei btrfs nur noch mit RAID1 oder 10. Seit btrfs zstd unterstützt, ist das keine Problem mehr, weil ich mit der zstd-kompression so viel gewinne, wie ich mit der doppelten Datenhaltung verliere :wink: . Ich bin kein speed-freak, und hab dafür die Kompression auf 9 gestellt. Das bringt bei mir über alle Daten ca 2:1

Gemischte Profile hab ich jeweils nur kurz beim Umstieg auf RAID1 gehabt. Aber btrfs verwendet wohl das aktuelle Profil immer nur für neue daten. Man kann also das Profil jederzeit wechseln. Es scheint sogar möglich zu sein balance selektiv laufen zulassen um nur bestimmte Daten in ein anderes Profil zu konvertieren.

  • Auf USB-Sticks hab ich dann halt RAID 0 (dup bringt nicht viel wenn das Device kaputt geht)

  • Für Festplatten könnte “dup” interessant sein, weil auch mal ein Sektor ausfallen kann. ABER RAID 10 ist um soviel besser, und braucht auch nicht mehr Platz.

  • Der häufigste Grund für Datenverlust ist “Dummheit”.

    • Der zweithäufigste sind “devices” die sich verabschieden.
  • Gegen das erste helfen meist die snappshots von btrfs. (und ein externes backup der snapshots)

    • Gegen das zweite hilft RAID10.

Mein Rat:

  • Wo möglich RAID10
  • KISS möglichst einfach und einheitlich, keine Experimente
  • btrfs nur zu 80% füllen :wink: und Btrfs Wartung

Wenn ein Device stirbt, kein Problem; neues Device mit add hinzufügen, altes mit delete entfernen. btrfs macht den Rest schon richtig :- Es ist kein extra balance notwendig, weil btrfs das selbst organisiert.

P.S. meine Festplatten haben alle unterschiedliche Größe, unterschiedliches Alter und (vor allem) unterschiedliche Hersteller !!!

ok… RAID10, eigentlich brauch es ja dann 4 Mal gleich großen Speicher. Nehmen wir mal an:

  • HDD1 → 1TB
  • HDD2 → 1.5TB
  • HDD3 → 2TB
  • HDD4 → 6TB

Nun haben wir “gebalanced”. Bleiben jetzt die restlichen 6,5 TB wirklich ungenutzt? Das war ja eher die Frage.


Ja, je länger ich darüber nachdenke, ist das DUP Profil mit hoher Kompression schon besser geeignet für ein Setup mit:

4TB + 1TB + 1TB + 160GB

Ein Festplattenausfall kann es nicht abfedern, aber Daten-Korruption, was meist die ersten Anzeichen sind, andererseits muss man schauen, ob das dann performant genug sein wird.

Ich denke ich würde dann:

  • Metadata: RAID1
  • Data: DUP

einstellen.

Diese Ansicht ist “veraltet” und gilt nicht für btrfs !

Für btrfs gilt: RAID arbeit in chunks zu je 1GB
1+1.5+2+6=10.5 TB gesamt → maximal 5.5TB als RAID
ABER die größte Platte ist größer als die 3 anderen zusammen. Daraus folgt:
1+1.5+2=4.5TB maximal als RAID nutzbar. Auf der 6TB-Platte bleiben dann 1.5TB ungenutzt (oder man partitioniert die 6TB-Platte auf 4.5TB und 2.Partition auf 1.5TB und nimmt die 4.5TB ins RAID mit rein, die 1.5TB extra)

Aber denk mal weiter. Nächstes Jahr schmeißt du die kleinste Platte raus, und ersetzt sie durch eine größere. Dann werden die “ungenutzten 1.5TB” plötzlich von selbst verfügbar :wink:

DUP braucht genau so viel Platz wie RAID. Aber RAID ist bei btrfs viel besser (siehe Link oben)

Das Ungleichgewicht entsteht nur dadurch dass die jeweils größte Platte in deinen Beispielen immer größer ist als alle anderen zusammen.
Schmeiß die Kleinste raus, und kauf was billiges was der Markt gerade hergibt. Und auf einmal passt die Rechnung.

Bsp:

  • 1+2+4+6 passt (=6.5TB)
  • 1+2+3+4 passt (=5TB)
  • 1+1+2+4 passt (=4TB)
  • 2+2+6+8 passt (=9TB)
  • 4+1+1+6 passt (=6GB)

Denk insbesondere auch an den Stromverbrauch :wink: der 160GB-Platte (pro GB)

Irgendwie macht es noch nicht Klick bei der Chunk-Verteilung. Muss ich mir später mal genau ansehen. Danke für die Erklärung.

Joa… hast ja recht. Aber noch funktioniert die 160er. Werde die nutzen, bis sie krepiert. Dann kann ich diese wohlwollend entsorgen. Habe auch noch mehrere 1GB und 10GB und 25GB Festplatten, aber mit IDE Anschluss. Man das waren noch Zeiten als man mit 512MB RAM der King im Dorf war, als alle mit 64MB RAM herum gurkten. xD (Sorry, manchmal werde ich nostalgisch, weil ich alt werde :stuck_out_tongue: )

Hey,

Cool, das sich hier einer mit BTRFS beschäftigt.

Ich stelle mir bissher die Frage bei RAID1:
Was passiert wenn das 1. Device mal defekt geht?
Da bei mir die UUID des RAIDs die der 1. Platte ist und das auch so in der fstab drin steht.
Das wird doch dann nichtmehr mounten oder hab ich da nen denkfehler?

BTW: Hatte das nur mal zum testen, würde mich dennoch interessieren ob da jemand was zu weis.

Wenn du 2 Festplatten in BTRFS zusammenfügst, dann haben beide die gleiche UUID. Also wird ein RAID1 auch mit nur einer Festplatte funktionieren.

1 Like

Ich glaube ich verstehe jetzt was du meinst.

Overall:
    Device size:                   5.60TiB
    Device allocated:              2.09TiB
    Device unallocated:            3.52TiB
    Device missing:                  0.00B
    Device slack:                    0.00B
    Used:                          2.05TiB
    Free (estimated):              2.96TiB      (min: 1.79TiB)
    Free (statfs, df):             1.12TiB
    Data ratio:                       1.20
    Metadata ratio:                   2.00
    Global reserve:              512.00MiB      (used: 0.00B)
    Multiple profiles:                 yes      (data)

Data,single: Size:1.39TiB, Used:1.38TiB (100.00%)
   /dev/sda        1.39TiB

Data,RAID10: Size:354.07GiB, Used:334.05GiB (94.35%)
   /dev/sda      207.53GiB
   /dev/sdc      176.53GiB
   /dev/sdd      177.53GiB
   /dev/sdb      146.53GiB

Metadata,RAID10: Size:5.00GiB, Used:4.12GiB (82.40%)
   /dev/sda        2.50GiB
   /dev/sdc        2.50GiB
   /dev/sdd        2.50GiB
   /dev/sdb        2.50GiB

System,RAID10: Size:32.00MiB, Used:240.00KiB (0.73%)
   /dev/sda       16.00MiB
   /dev/sdc       16.00MiB
   /dev/sdd       16.00MiB
   /dev/sdb       16.00MiB

Unallocated:
   /dev/sda        2.05TiB
   /dev/sdc      752.46GiB
   /dev/sdd      751.46GiB
   /dev/sdb        1.02MiB

sdb ist voll. Nun werden die Chunks, die eigentlich auf sdb sollten, auf die größte Festplatte sda verlagert. Also passt sich das dynamisch an und es wird der gesamte Speicher bestmöglich genutzt, auch wenn es ab jetzt ein halbgares RAID10 ist.

Wirklich interessant. Warum wird das nirgends so explizit gesagt? Ist doch eine gute Lösung von den BTRFS Entwicklern. :man_shrugging:

Das ist auch der Grund für einige erstaunliche Eigenschaften von btrfs:

  • Umziehen auf eine andere Festplatte:
    • die neue Partition per add hinzufügen. Dann die alte Partition per delete entfernen. Fertig !

Der PC kann während dessen munter weiter genutzt werden. Btrfs liest die Chunks dann langsam von der alten Partition und überträgt sie auf die neue. Die UUID bleibt die selbe. Das entfernen der alten Partition ist erst abgeschlossen, wenn alle Daten rüber kopiert sind.

Vor btrfs war RAID zwar schon leistungsfähig, aber nur was für echte Fachleute !

  • nur gleiche Festplatten
  • Notbetrieb bei Ausfall einer Platte
  • EIN Fehler (des admin) und das RAID ist im Eimer !

Btrfs hebt RAID10 auf einen neuen Level und macht es massentauglich.
:footprints:

Das funktioniert natürlich nicht, wenn jemand in der fstab oder in der grub.cfg nach alter Art /dev/sda2 reingeschrieben hat !

Und das ist auch der Grund warum man von einem btrfs filesystem keinesfalls (also niemals !!!) eine Kopie per dd anfertigen sollte.
Wenn der kernel auf eine solche Kopie stößt (und zwar nicht nur beim booten), gibt es garantiert Datensalat (ich spreche aus eigener Erfahrung)

hm ja… aber ich denke das ist die denkbar schlechteste Bezeichnung. Bei delete denkt man ja an löschen (ich zumindest), was btrfs device delete /dev/sdX nicht tut, sondern es verschieb die Chunks auf die übrigen Platten und entfernt es von der Liste. Zum Glück ist der Parameter delete und remove dasselbe.

The operation can take long as it needs to move all data from the device.
man btrfs-device

Aber naja, wenn man mit btrfs warm wird, dann kann man schon sage:

  • Ciao Bella LVM !
  • Ciao Bella MDADM!

Ich sollte man zfs näher testen, aber auf Manjaro sicher nicht :dizzy_face:

Ja, solche faulen DAUs gibt es immer noch. Bei BTRFS sollte definitiv auf UUID setzen oder alternativ Labels.

Beispiel? Wo ist es passiert?

Ich hab das gemacht. Hab eine Partition kopiert weil eine Festplatte am ableben war. Und irgendwann waren mal Kopie und Original gleichzeitig für den kernel sichtbar … :boom:

Das Dateisystem kann dabei soweit kaputt gehen, dass es nicht weiter betrieben werden kann. (Und so war das bei mir. Unreparierbar !)

ABER wegen CoW ist es jederzeit readonly mountbar geblieben.

Hab alle Daten mit rsync in ein neues btrfs-volume gerettet. Das ist das system auf dem ich gerade schreibe.