it-swarm.com.de

RAIDing mit LVM vs MDRAID - Vor- und Nachteile?

In seine Antwort auf die Frage "Mixed Raid Types" schlägt HBruijn vor, LVM zur Implementierung von RAID im Vergleich zum Standard-MDRAID zu verwenden.

Nach einer kleinen Untersuchung scheint LVM auch RAID-Funktionen zu unterstützen. In der Vergangenheit habe ich LVM zusätzlich zu MDRAID verwendet und war mir bisher nicht bewusst, dass LVM auch RAID-Funktionen unterstützt. Dies scheint eine relativ junge Entwicklung zu sein, aber ich habe nicht genau herausgefunden, wann dies implementiert wurde.

Dies sind also alternative Möglichkeiten, um Software-RAID unter Linux zu implementieren. Was sind die Vor- und Nachteile dieser beiden unterschiedlichen Ansätze? Ich suche nach Funktionsvergleichen zwischen den beiden Ansätzen, damit die Leute entscheiden können, welcher für sie besser ist. Auf Experimenten basierende Schlussfolgerungen (wie in, diese Funktion funktioniert nicht so gut wie diese Funktion und hier ist der Grund dafür) sind ebenfalls in Ordnung, vorausgesetzt, Sie geben Ihre Daten in die Antwort ein.

Einige spezifische Probleme, die behoben werden müssen:

  1. Angenommen, ich möchte sw RAID + LVM ausführen (ein häufiges Szenario). Sollte ich die LVM-Unterstützung für sw RAID verwenden und daher ein Dienstprogramm anstelle von zwei verwenden? Hat dieser stärker integrierte Ansatz Vorteile?
  2. Hat LVMs, die sw RAID unterstützen, im Vergleich zum ausgereifteren MDADM erhebliche Mängel? Wie stabil/fehlerfrei ist die LVM-Unterstützung für sw RAID? Es scheint, dass diese Unterstützung nur bis 2011 zurückreicht (siehe unten), während MDADM viel älter ist. Wie ist der Vergleich in Bezug auf den Funktionsumfang? Hat es im Vergleich zu MDADM erhebliche Funktionsmängel? Unterstützt es umgekehrt SW-RAID-Funktionen, die MDADM nicht bietet?

ANMERKUNGEN:

  1. Es gibt eine ausführliche Diskussion unter http://www.olearycomputers.com/ll/linux_mirrors.html , aber ich konnte nicht herausfinden, an welchem ​​Datum es geschrieben wurde.

    Ähnliche Frage zu Serverfault: Linux LVM Mirror vs. MD Mirror . Diese Frage wurde jedoch 2010 gestellt, und die Antworten sind möglicherweise veraltet.

  2. Der Änderungsprotokolleintrag für Version 2.02.87 - 12. August 2011 hat

    Fügen Sie configure --with-raid für den neuen segtype 'raid' für die Unterstützung von MD RAID 1/4/5/6 hinzu

    Es sieht also so aus, als ob die RAID-Unterstützung in LVM ungefähr 3 Jahre alt ist.

60
Faheem Mitha

Wie ausgereift und funktionsfähig ist LVM RAID?

LVM-RAID hat eigentlich Angst unter der Decke. Grundsätzlich werden zwei logische Volumes pro RAID-Gerät erstellt (eines für Daten, "Rimage" genannt; eines für Metadaten, "Rmeta" genannt). Diese werden dann an die vorhandenen mdraid-Treiber weitergegeben. Daher sollten Dinge wie der Umgang mit Festplattenlesefehlern, der E/A-Lastausgleich usw. ziemlich ausgereift sein.

Das sind die guten Nachrichten.

Werkzeuge

Sie können mdadm nicht verwenden (zumindest nicht auf einfache Weise¹), und die LVM-RAID-Tools sind bei weitem nicht so ausgereift. In Debian Wheezy kann lvs beispielsweise den RAID5-Synchronisierungsstatus nicht anzeigen. Ich bezweifle sehr, dass Reparatur und Wiederherstellung (insbesondere in Situationen, in denen "das sollte niemals passieren!") Bei weitem nicht so gut sind wie mdadm (und ich bin bei meinen Tests versehentlich auf eine davon gestoßen und habe es schließlich einfach aufgegeben, sie wiederherzustellen - Wiederherstellung mit mdadm wäre einfach gewesen).

Besonders wenn Sie nicht die neuesten Versionen aller Tools verwenden, wird es schlimmer.

Fehlende Funktionen

Aktuelle Versionen von LVM-RAID unterstützen das Verkleinern (lvreduce) eines logischen RAID-Volumes nicht. Sie unterstützen auch nicht das Ändern der Anzahl der Festplatten oder des RAID-Levels (lvconvert gibt eine Fehlermeldung aus, die besagt, dass noch nicht unterstützt wird). lvextend funktioniert und kann sogar RAID-Levels erhöhen, für die mdraid erst kürzlich Unterstützung erhalten hat, wie z. B. RAID10. Nach meiner Erfahrung ist die Erweiterung von LVs weitaus häufiger als die Reduzierung von LVs. Das ist also eigentlich vernünftig.

Einige andere mdraid-Funktionen sind nicht vorhanden, und insbesondere können Sie nicht alle Optionen anpassen, die Sie mit mdadm verwenden können.

In älteren Versionen (wie zum Beispiel in Debian Wheezy) unterstützt LVM RAID auch kein Wachstum. Zum Beispiel auf Wheezy:

[email protected]:~# lvextend -L+1g vg0/root
Extending logical volume root to 11.00 GiB
Internal error: _alloc_init called for non-virtual segment with no disk space.

Im Allgemeinen möchten Sie die Wheezy-Versionen nicht ausführen.

Das Obige ist, sobald Sie es installiert haben. Das ist auch kein trivialer Prozess.

Werkzeugprobleme

Beim Spielen mit meiner Jessie-VM habe ich (praktisch) eine Festplatte getrennt. Das hat funktioniert, die Maschine lief weiter. lvs gab jedoch keinen Hinweis darauf, dass die Arrays verschlechtert waren. Ich habe die Festplatte wieder angeschlossen und eine Sekunde entfernt. Bin am Laufen geblieben (das ist raid6). Erneut angehängt, immer noch keine Angabe von lvs. Ich habe lvconvert --repair auf dem Volume ausgeführt und festgestellt, dass es in Ordnung ist. Dann habe ich eine dritte Scheibe gezogen ... und die Maschine ist gestorben. Erneut eingefügt, neu gestartet und bin mir jetzt nicht sicher, wie ich das Problem beheben soll. mdadm --force --assemble würde dies beheben; Weder vgchange noch lvchange scheinen diese Option zu haben (lvchange akzeptiert --force, aber es scheint nichts zu tun). Selbst wenn ich dmsetup versuchte, die Zuordnungstabelle direkt dem Kernel zuzuführen, konnte ich nicht herausfinden, wie ich sie wiederherstellen kann.

Außerdem ist mdadm ein spezielles Tool nur zur Verwaltung von RAID. LVM macht viel mehr, aber es fühlt sich an (und ich gebe zu, dass dies ziemlich subjektiv ist), als ob die RAID-Funktionalität irgendwie hineingeschoben wurde; es passt nicht ganz.

Wie installiert man eigentlich ein System mit LVM RAID?

Hier ist eine kurze Übersicht über die Installation auf Debian Jessie oder Wheezy. Jessie ist viel einfacher; Beachten Sie, wenn Sie dies auf Wheezy versuchen möchten, lesen Sie zuerst das Ganze…

  1. Verwenden Sie zur Installation ein vollständiges CD-Image, kein Netinst-Image.

  2. Fahren Sie wie gewohnt fort, gehen Sie zur Festplattenpartitionierung und richten Sie Ihre physischen LVM-Volumes ein. Sie können/boot auf LVM-RAID setzen (auf Jessie und auf Wheezy mit einigen unten beschriebenen Arbeiten).

  3. Erstellen Sie Ihre Volume-Gruppe (n). Belassen Sie es im LVM-Menü.

  4. Erster Spaß - das Installationsprogramm hat das Modul dm-raid.ko nicht geladen oder ist sogar nicht verfügbar! Sie können es also aus dem Linux-Image-Paket herunterladen, das installiert wird. Wechseln Sie zu einer Konsole (z. Alt- -F2) und:

    cd /tmp
    dpkg-deb --fsys-tarfile /cdrom/pool/main/l/linux/linux-image-*.deb | tar x
    depmod -a -b /tmp
    modprobe -d /tmp dm-raid
    
  5. Das Installationsprogramm kann keine LVM-RAID-LVs erstellen, daher müssen Sie die Befehlszeile verwenden, um dies zu tun. Beachten Sie, dass ich kein Benchmarking durchgeführt habe. Die Streifengröße (-I) unten ist eine Vermutung für mein VM Setup:

    lvcreate --type raid5 -i 4 -I 256 -L 10G -n root vg0
    
  6. Auf Jessie können Sie RAID10 für den Austausch verwenden. Auf Wheezy wird RAID10 nicht unterstützt. Sie können stattdessen zwei Swap-Partitionen verwenden, jedes RAID1. Aber Sie müssen genau angeben, auf welchen physischen Volumes sie abgelegt werden sollen, oder es legt beide Hälften des Spiegels auf dieselbe Festplatte. Ja. Ernsthaft. Wie auch immer, das sieht so aus:

    lvcreate --type raid1 -m1 -L 1G -n swap0 vg0 /dev/vda1 /dev/vdb1
    lvcreate --type raid1 -m1 -L 1G -n swap1 vg0 /dev/vdc1 /dev/vdd1
    
  7. Wechseln Sie schließlich zurück zum Installationsprogramm und klicken Sie im LVM-Menü auf "Fertig stellen". Sie erhalten nun ein Los der angezeigten logischen Volumes. Das ist der Installer, der nicht versteht, was los ist. Ignorieren Sie alles mit rimage oder rmeta im Namen (eine Erklärung dessen finden Sie im ersten Absatz oben).

  8. Erstellen Sie wie gewohnt Dateisysteme, tauschen Sie Partitionen usw. aus. Installieren Sie das Basissystem usw., bis Sie zur Eingabeaufforderung von grub gelangen.

  9. Auf Jessie funktioniert grub2, wenn es auf dem MBR installiert ist (oder wahrscheinlich mit EFI, aber das habe ich nicht getestet). Auf Wheezy schlägt die Installation fehl und die einzige Lösung besteht darin, Jessies grub2 zurück zu portieren. Das ist eigentlich ziemlich einfach, es kompiliert sauber auf Wheezy. Holen Sie sich irgendwie Ihre zurückportierten Grub-Pakete in /target (oder machen Sie es in einer Sekunde nach der Chroot) dann:

    chroot /target /bin/bash
    mount /sys
    dpkg -i grub-pc_*.deb grub-pc-bin_*.deb grub-common_*.deb grub2-common_*.deb 
    grub-install /dev/vda … grub-install /dev/vdd # for each disk
    echo 'dm_raid' >> /etc/initramfs-tools/modules
    update-initramfs -kall -u
    update-grub # should work, technically not quite tested²
    umount /sys
    exit
    
  10. Tatsächlich hat es bei meiner letzten Jessie VM Grub-Installation hängen geblieben. Durch Umschalten auf F2 und Ausführen von while kill $(pidof vgs); do sleep 0.25; done, gefolgt von demselben für lvs, ist es durchgekommen grub-install. Trotzdem schien es eine gültige Konfiguration zu generieren, aber nur für den Fall, dass ich einen chroot /target /bin/bash gemacht habe, habe ich sichergestellt, dass /proc und /sys gemountet wurden und einen update-grub gemacht habe. Dieses Mal war es abgeschlossen. Ich habe dann einen dpkg-reconfigure grub-pc gemacht, um die Installation auszuwählen Grub auf allen MBRs der virtuellen Festplatten.

  11. Wählen Sie auf Wheezy nach den oben beschriebenen Schritten "Weiter ohne Bootloader".

  12. Beenden Sie die Installation. Es wird booten. Wahrscheinlich.

Community-Wissen

Es gibt eine ganze Reihe von Leuten, die sich mit mdadm auskennen und viel Erfahrung mit der Bereitstellung haben. Google wird wahrscheinlich die meisten Fragen dazu beantworten, die Sie haben. Sie können im Allgemeinen erwarten, dass eine Frage hier Antworten erhält, wahrscheinlich innerhalb eines Tages.

Das Gleiche gilt nicht für LVM-RAID. Es ist schwer, Führer zu finden. Die meisten Google-Suchanfragen, die ich stattdessen durchgeführt habe, finden mich in Bezug auf die Verwendung von MDADM-Arrays als PVs. Um ehrlich zu sein, liegt dies wahrscheinlich hauptsächlich daran, dass es neuer ist und weniger häufig verwendet wird. Es fühlt sich irgendwie unfair an, dies dagegen zu halten - aber wenn etwas schief geht, macht die viel größere bestehende Community um mdadm die Wiederherstellung meiner Daten wahrscheinlicher.

Fazit

LVM-RAID schreitet ziemlich schnell voran. Auf Wheezy ist es nicht wirklich verwendbar (zumindest ohne Backports von LVM und dem Kernel). Bei Debian-Tests im Jahr 2014 schien dies eine interessante, aber noch nicht abgeschlossene Idee zu sein. Aktuelle Tests, im Grunde genommen das, was Jessie werden wird, fühlen sich wie etwas an, das Sie möglicherweise tatsächlich verwenden, wenn Sie häufig kleine Slices mit unterschiedlichen RAID-Konfigurationen erstellen müssen (etwas, das mit mdadm ein administrativer Albtraum ist).

Wenn Ihre Anforderungen von einigen großen mdadm-RAID-Arrays angemessen erfüllt werden, die mithilfe von LVM in Partitionen aufgeteilt wurden, würde ich empfehlen, diese weiterhin zu verwenden. Wenn Sie stattdessen viele Arrays (oder sogar Arrays logischer Volumes) erstellen müssen, sollten Sie stattdessen auf LVM-RAID umsteigen. Aber bewahren Sie gute Backups auf.

Viele der Anwendungen von LVM-RAID (und sogar von MDADM-RAID) werden von Dingen wie Cluster-Speicher-/Objektsystemen, ZFS und btrfs übernommen. Ich empfehle auch, diese zu untersuchen, da sie möglicherweise Ihren Anforderungen besser entsprechen.


Vielen Dank

Ich möchte mich bei psusi dafür bedanken, dass ich den Status von LVM-RAID erneut überprüft und diesen Beitrag aktualisiert habe.

Fußnoten

  1. Ich vermute, Sie könnten Device Mapper verwenden, um die Metadaten und Daten so zusammenzukleben, dass mdadm --assemble sie übernimmt. Natürlich könnten Sie mdadm einfach auf logischen Volumes ausführen ... und das wäre vernünftiger.

  2. Bei der Wheezy-Installation habe ich dies beim ersten Mal nicht getan und keine Grub-Konfiguration erhalten. Ich musste das System booten, indem ich alle Informationen an der grub-Eingabeaufforderung eingab. Nach dem Booten hat das funktioniert, daher denke ich, dass es vom Installationsprogramm aus einwandfrei funktioniert. Wenn Sie bei der Grub-Eingabeaufforderung landen, müssen Sie die folgenden magischen Zeilen eingeben:

    linux /boot/vmlinuz-3.2.0-4-AMD64 root=/dev/mapper/vg0-root
    initrd /boot/initrd.image-3.2.0-4-AMD64
    boot
    

PS: Es ist schon eine Weile her, dass ich tatsächlich die ursprünglichen Experimente durchgeführt habe. Ich habe meine Originalnotizen zur Verfügung gestellt. Beachten Sie, dass ich jetzt neuere gemacht habe, die in dieser Antwort und nicht in diesen Notizen behandelt werden.

64
derobert

Ich wusste auch nicht, dass LVM RAID ausführen kann. Persönlich würde ich bei mdadm bleiben, da es eine viel ausgereiftere Software ist, die das Gleiche tut. Wenn etwas mit LVM RAID kaputt geht, werden Sie wahrscheinlich nicht so viel Unterstützung erhalten können, als wenn Sie mit mdadm gegangen wären. Außerdem würde ich LVM RAID nicht vertrauen, da LVM in der Vergangenheit gezeigt hat, dass es nicht die robusteste Software ist.

ZFS und BTRFS sind die Zukunft. Die Vorteile, die sie bieten, gehen über das hinaus, was auf der Blockebene möglich ist. Wenn ich nicht auf Kompatibilität abziele, werde ich LVM/mdadm nicht mehr verwenden. ZFS und BTRFS verfügen über viele Funktionen wie Komprimierung, Deduplizierung und Copy-on-Write, aber darauf werde ich hier nicht eingehen, da dies etwas außerhalb des Anwendungsbereichs liegt.

Am Ende recherchieren Sie und verwenden Sie, was Ihren Bedürfnissen/Wünschen entspricht.

7
Free Bullets