BTRFS mit SoftwareRAID erweitern? (Neu)

Hinweis: In dem Thema BTRFS mit SoftwareRAID erweitern? (Neu) gibt es 10 Antworten auf 2 Seiten. Der letzte Beitrag () befindet sich auf der letzten Seite.
  • Hallo,


    ich will ein etwas älteres, bereits gesperrtes Thema nochmal heraus buddeln. Ursprungs-Posting war hier: BTRFS mit SoftwareRAID erweitern? . Ich hab die Antworten leider nicht mitbekommen (Profil-Einstellungen vergessen anzupassen :S ) An dieser Stelle danke an die User "KosstAmojan" und "Berichtigung" für ihre Hilfe.


    Ich fasse meine Frage hier nochmal zentral zusammen, ergänze mit einer Grafik und versuche, Antworten auf die bereits aufgekommenen Fragen zu geben.


    Ich habe hier ein quasi doppeltes Software-RAID (/dev/sda1 + /dev/sdb1 und /dev/sda2 + /dev/sdb2) als Mirror (RAID-1) betrieben. Auf dem RAID-Laufwerk (/dev/md127) sitzt ein BTRFS-Volume und enthält den /-Bereich. Auf dem anderen RAID-Laufwerk (/dev/md126) liegt /home als XFS formatiert. (Siehe dazu auch die nachfolgende Grafik - Sektion "Ausgangslage").


    Warum das so gebaut wurde? Der Installateur ahnte, dass ein RAID-1 eine gute Sache ist, um die Verfügbarkeit der Daten (etwas) zu erhöhen. Nach der manuellen Festplattenkonfiguration (Einrichten der RAIDs) wurde openSUSE ganz normal weiter installiert. Und da kam dann BTRFS automatisch ins Spiel.


    Der Platz auf / wird langsam eng. Daher soll dieses BTRFS-Volumen vergrößert werden. Dazu wurden zwei weitere Platten (/dev/sdc und /dev/sdd) eingebaut. Die Idee war, hier ebenfalls wieder ein RAID-Laufwerk zu erstellen, mit BTRFS zu formatieren und dieses dann per "btrfs device add" in das BTRFS-/-Volumen einzubinden. (Dargestellt in der Grafik in der Sektion "Erweiterung").



    Soweit die Theorie / der Plan.


    Das Einbinden mit den folgenden Befehlen klappt soweit auch prima:

    Bash
    btrfs device add /dev/md125 /
    btrfs device scan
    btrfs balance start /


    Die Anzeige der verschiedenen BTRFS-Kommandos zeigt soweit alles schick und erfolgreich an.


    Problem: bei nächsten Reboot hängt der Rechner fest.


    Code
    A start job is running for dev-disk-by\x2duuid-9b21edde\x2dc014\x2d...(1min 10s/ no limit)


    Das ganze läuft in einer VM von Virtual Box.
    Im Ursprung ist OpenSUSE 13.2 installiert. Ich hab auch alles soweit es geht geupdated und auch mit dem Upgrade 42.2 Leap probiert. Ohne Erfolg :(



    Hi, das es nicht funktioniert liegt daran, dass der Befehl
    btrfs device addfür die BTRFS-interne RAID Funktion ist, und nicht um ein Device einem mdadm.RAID hinzuzufügen.

    Ich will das neue Laufwerk eigentlich nicht dem (mdmadm) RAID-1 zuweisen, sondern ein neues RAID-1 bilden und das so entstandene Laufwerk (/dev/md125) mit BTRFS formatiert dem bestehenden BTRFS-/-Laufwerk zuführen. (Hoffe, das mit der Grafik verdeutlicht zu haben...) ... sofern das so überhaupt geht?!


    Frage am Rande: kann man denn einen RAID-1 (Mirror) Verbund aus zwei Platten um weitere Platten nachträglich vergrößern? Ich dachte, das geht nicht. ?(


    Ich glaube, dass lediglich versucht wird mit btrfs- internen Befehlen ein tatsächliches md RAID zu betreiben.

    Also, mein Ziel war das nicht ;) Den Unterschied zw. BTRFS-Volumen (mit seinen eigenen RAID-Fähigkeiten) und dem klassischen mdadm RAID kenne ich - zumind. vom Grundprinzip. Aber vielleicht mach ich ja was falsch ...? (Bestimmt! Denn sonst würde es ja klappen ^^ )


    Hat der eine oder andere von Euch noch den einen oder anderen Tipp?


    Grüße
    Susanux

    Für den Inhalt des Beitrages 110859 haftet ausdrücklich der jeweilige Autor: susanux

  • Alles, was RAID1 erreichen kann, ist, dass eventuelle Fehler auf beiden Platten gleichzeigtig landen.
    Ich halte RAID<5 für schlichte Platzverschwendung zum Wohle der Hersteller.


    Zu deinen eigenwilligen Theorien, nur eine Frage:


    Was wird wohl der RAID1 Teil auf sdb tun, wenn sda plötzlich viel größer ist?

  • Was wird wohl der RAID1 Teil auf sdb tun, wenn sda plötzlich viel größer ist?

    Wenn man sda vergrößern würde, dann ist klar, dass es dann so einige Bits gibt, die auf der sdb kein Platz mehr finden. Ein RAID-1 kann halt nur so groß sein, wie die kleinste Platte. Soweit klar!


    Aber: ich will ja nicht sda vergrößern - sondern das darüber liegende BTRFS-/-Volumen!
    Da ist sda ja nur ein Teil von.


    Ich bin kein BTRFS-Experte, aber so wie ich das ganze verstanden habe, ist das BTRFS eine Zwischenschicht. Da werden die eigentlichen Laufwerke, Partitionen, RAIDs gekapselt und zusammengeführt. Wahlweise als große Erweiterung (maximaler Platz) oder mit BTRFS-eigenen RAID1 Funktionalitäten (Sicherheit). Und das auch entweder nur auf die META-Daten oder auf alle Daten bezogen.


    Wenn ein BTRFS-Volumen zu klein wird, kann man dem ein neues Laufwerk zufügen und hat dann mehr Platz. Ob das Laufwerk nur eine Partition oder eine eigene Platte ist, ist dabei wohl egal. Und von dem Ansatz her sollte es auch egal sein, ob ein md-Laufwerk zur Erweiterung verwendet wird. Es wird ja die Summe der zwei einzelnen Platten genutzt und nicht nur ein Teil des RAIDs. Für das BTRFS sollte die md125-Platte aussehen, wie eine andere sdX-Platte. Für das RAID1 ist ja dann das OS / SoftwareRAID zuständig.


    BTRFS managed die Verteilung der Daten auf den jeweiligen Datenträgern. Wenn BTRFS einen Datensatz speichert, wird - so meine Vorstellung - der Datensatz "nur" auf dem md-Laufwerk gespeichert. Und das OS / SoftwareRaid macht dann eine Kopie davon und speichert auf jeder Platte des RAID-1 Verbundes diesen Datensatz.


    Nebenbei: wenn ich "nur" eine einzelne neue Platte sdc ohne den RAID-1 Verbund md125 einbinde, klappt es auch mit dem Neustart. Insofern kommen sdb und sda schon damit klar, wenn das BTRFS-/-Laufwerk um sdc vergrößert wird.



    Also die Erweiterung um sdc geht - um md125 geht nicht.

    Für den Inhalt des Beitrages 110864 haftet ausdrücklich der jeweilige Autor: susanux

  • Nach dieser fundierten Erklärung muss offensichtlich die Realität einen Bug haben.
    Probier mal ein zypper up Realität


    gez. Pipi Langstrumpf

  • Nach dieser fundierten Erklärung muss offensichtlich die Realität einen Bug haben.
    Probier mal ein zypper up Realität


    gez. Pipi Langstrumpf

    Ähm ... Verzeihung, ich glaube es besteht da eine Verwechslung. Ich bin derjenige, der fragt, der etwas versucht zu lernen und seinen Wissensstand und seine Gedanken darstellt. Anhand derer haben - so hoffe ich - Helfenwollende eine Möglichkeit,zu helfen. Sofern sie wollen. Wer nicht will, meine Frage zu unverschämt empfindet, muss ja nicht helfen.


    Ich bin nicht derjenige, der behauptet, die Weisheit für sich gepachtet zu haben und hier nur mal seine klugen Gedanken in dem digitalen Raum zur Schau stellen zu wollen.


    Ich bin mir auch nicht bewusst, irgendwie unhöflich geworden zu sein. Falls Du das so empfunden hast, sag bescheid, dann kann man darüber reden. War jedenfalls nicht meine Absicht.


    Mit Deinen Ausführungen hast Du mir leider nicht auf die Sprünge geholfen.

    Für den Inhalt des Beitrages 110880 haftet ausdrücklich der jeweilige Autor: susanux

  • Ich will das neue Laufwerk eigentlich nicht dem (mdmadm) RAID-1 zuweisen,

    mit
    btrfs device add /dev/md125 /
    Erstellst Du ein neues, BTRFS Dateisystemraid in dem Du ein bereits existierendes mdadm Raid hinzufügst. Du schachtelst also ein RAID im RAID.


    Das hast Du ja auch in Deiner Grafik skizziert:


    Du erstellst ein mdadm RAID (md127) aus sda1 & sdb1.
    Du erstellst ein mdadm RAID (md125) aus sdc1 & sdd1.


    mit btrfs device add fügst du nun beide mdadm RAIDS zu einem neuen BTRFS Dateisystem-RAID zusammen.


    Du kannst ein mdadm RAID nicht mit dem Befehl für die Erstellung eines BTRFS Dateisystem-RAIDS erweitern.



    Was Du eigentlich willst, ist ja ein RAID0 über zwei RAID1 zu machen, also ein RAID10.

  • Hey, KosstAmojan, danke für Deine Antwort!


    Mir ist das alles noch immer nicht so ganz klar. Vielleicht hab ich das Prinzip vom BTRFS auch nur halb verstanden ...


    Was Du eigentlich willst, ist ja ein RAID0 über zwei RAID1 zu machen, also ein RAID10

    Ja, so im Prinzip. Mit dem Umstand, dass das eine RAID1 bereits läuft und nun im Nachhinein erweitert werden muss. Meines Wissens geht das auf mdadm-Ebene nicht. Man müsste das RAID10 wohl gleich zu Anfang so eingerichtet, oder?


    Mit dem BTRFS scheint es nun die Möglichkeit zu geben (ähnlich wohl wie bei LVM) , ein bestehendes Volumen nachträglich zu vergrößern.


    mit
    btrfs device add /dev/md125 /
    Erstellst Du ein neues, BTRFS Dateisystemraid in dem Du ein bereits existierendes mdadm Raid hinzufügst. Du schachtelst also ein RAID im RAID.

    Ja, Jein ... hmmm ... Ich hatte es so verstanden, dass ich mit diesem Befehl ein neues BTRFS-Volumen dem bestehenden BTRFS-Volumen zuweise. Dabei entsteht dann automatisch ein BTRFS-RAID1. Das BTRFS-RAID hat mit dem mdadm RAID nicht so viel zu tun, denn BTRFS managed das für sich intern und verteilt die Bits und Bytes nach seinen eigenen Regeln auf den dem BTRFS-Volumen zugrundeliegenden Datenträgern. Ich kann beim BTRFS-RAID nun wählen, ob nur die META-Daten oder alle Daten dupliziert werden.


    Insofern stapel ich natürlich ein RAID auf einem RAID. Wobei: das BTRFS-RAID wollte ich gar nicht haben ;) Aber es geht wohl nicht ohne. Zumindest, die META-Daten werden gemirrored. Mir hätte ein reines Vergrößern des Volumens gereicht. Sofern unten drunter alles mit einem mdadm-RAID1 gesichert ist.


    Du kannst ein mdadm RAID nicht mit dem Befehl für die Erstellung eines BTRFS Dateisystem-RAIDS erweitern.

    Ja, dass ich das RAID1 md127 aus sda1 & sdb1 mit den BTRFS-Kommandos nicht um ein weiteres sdc1 vergrößern kann, ist mir - denke ich - klar. Aber mit dem BTRFS-Kommandos bewege ich mich doch - so verstehe ich das ganze - auf einer logisch anderen Schicht. Und die soll erweitert werden. Das hat mit dem mdadm-RAID nix zu tun, da das logisch darunter liegen soll.


    Was ich nicht verstehe: BTRFS-Volumen können aus verschiedenen Dingen aufgebaut sein. Ob eine komplette Disk oder nur eine Partition einer Disk. Und mit einem (1) RAID gehts ja (erstmal) auch. Warum nicht mit zweien? Das md12x ist für BTRFS doch nur eine Disk wie auch ein sdx.


    Und: Wenn das alles nicht gehen soll, warum kann ich dann eine einzelne sdc1 per BTRFS-Kommando zufügen? Und alles ist schick?! ?(


    Und was ich auch nicht verstehe: warum scheint alles zu funktionieren, nach dem ich die BTRFS-Kommandos ausgeführt habe? BTRFS meckert nicht, die BTRFS-Checks sind alle ok. Nur beim Reboot klappts nicht? Muss man in fstab vielleicht irgendwas eintragen/ändern? Das wäre eher so mein Bauchgefühl --- wie gesagt -> Bauch ;)


    Hast Du dazu eine Idee? Wo liegt mein Irrtum?

    Für den Inhalt des Beitrages 110933 haftet ausdrücklich der jeweilige Autor: susanux

  • Wenn Du ein "LVM RAID" betreibst, kannst Du es auch nur mit LVM erweitern (mdadm)
    Wenn Du ein BTRFS Dateisystem RAID betreibst, kannst Du es nur mit BTRFS erweitern.


    Nur weil Du Dein LVM RAID mit BTRFS formatiert hast, ist es noch lange kein BTRFS RAID.


    Bei einem BTRFS RAID "kümmert" sich das Dateisystem selbst um die Organisation/Verwaltung des RAIDS. Bei einem LVM RAID der LVM
    Du hast hier zwei verschiedene Organisations-/Verwaltungsstrukturen.
    BTRFS vs LVM

  • Mich würde mal interessieren, was davon der Zweck sein soll.


    Irgendwie klingt das so, als würde man auf einen 42to Sattelschlepper einen LKW mit Anhänger packen....

  • Danke KosstAmojan für Deine Bemühungen, mir das ganze klarer zu machen. :) Ich nehme es erstmal so hin, dass das nicht geht. Die genauen Hintergründe versuche ich dann später nochmal in Ruhe nachzulesen.


    Nur, wie macht man jetzt am besten weiter?


    Damit kommen wir zur nächsten Frage:

    Mich würde mal interessieren, was davon der Zweck sein soll.
    Irgendwie klingt das so, als würde man auf einen 42to Sattelschlepper einen LKW mit Anhänger packen....


    Das ganze ist historisch gewachsen. Als der Rechner installiert wurde, sollte der Crash einer Festplatte abgefangen werden. Also wurden zwei Platten eingebaut. Die sollten als Spiegel betrieben werden. Also bei der Installation ein RAID-1 eingerichtet. (RAID-5 wäre natürlich besser, hat man aber nicht gemacht.) OpenSUSE bot bei der weiteren Installation standardmäßig das BTRFS für die /-Partition an. Man las "Snapshots", fand das als Feature toll und hat die Einstellung übernommen.


    Die Root-Partition wurde jedoch zu klein gewählt und läuft jetzt voll. Unter anderem die Snapshots brauchen Platz. Alte löschen reicht da nicht. Das ganze muss nun vergrößert werden.


    Vielleicht ist das die eigentliche Frage: wie vergrößert man so ein Konstrukt?


    Das Sauberste wäre sicherlich Backup-Platt-Neu-Restore-Machen. Aber gibt es noch andere sinnvolle Möglichkeiten?


    Man könnte die Platten ganz klassisch reinmounten und dann ein paar Ordner "umbiegen". Also z.B. /snapshots auf eine Disk legen und /var auf eine andere. Aber dann steht der neue Platz immer nur in diesen speziellen Ordnern zur Verfügung. Wenn ich plötzlich unter /opt mehr brauche, stehe ich vor dem nächsten Problem. Und einen Spiegel hab ich dann auch nicht mehr.


    Wie wäre da euer Tipp?

    Für den Inhalt des Beitrages 111029 haftet ausdrücklich der jeweilige Autor: susanux