RAID mit LVM vs MDRAID - Vor- und Nachteile?

51

In seiner Antwort auf die Frage "Mixed Raid Types" schlägt HBruijn vor, LVM zur Implementierung von RAID gegenüber dem Standard-MDRAID zu verwenden.

Nach einer kurzen Untersuchung scheint LVM auch RAID-Funktionen zu unterstützen. In der Vergangenheit habe ich LVM zusätzlich zu MDRAID verwendet und mir war bisher nicht bewusst, dass LVM auch RAID-Funktionen unterstützt. Dies scheint eine relativ neue 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 Feature-Vergleichen zwischen den beiden Ansätzen, damit die Leute entscheiden können, was für sie besser ist. Auf Experimenten basierende Schlussfolgerungen (wie in, diese Funktion funktioniert nicht so gut wie diese Funktion und aus diesem Grund) sind auch in Ordnung, vorausgesetzt, Sie geben Ihre Daten in die Antwort ein.

Einige spezifische Probleme:

  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 irgendwelche Vorteile?
  2. Hat die LVM-Unterstützung für SW-RAID erhebliche Mängel im Vergleich zum ausgereifteren MDADM? 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 wird der Funktionsumfang verglichen? Hat es signifikante Funktionsmängel im Vergleich zu MDADM? Umgekehrt, werden alle SW-RAID-Funktionen unterstützt, 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-Spiegel vs. MD-Spiegel . Diese Frage wurde jedoch im Jahr 2010 gestellt, und die Antworten sind möglicherweise veraltet.

  2. Der Changelog-Eintrag für Version 2.02.87 - 12. August 2011 hat

    Füge configure --with-raid für den neuen Segtyp 'raid' für MD RAID 1/4/5/6 hinzu

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

Faheem Mitha
quelle
Ein Vorteil, den ich mir vorstellen kann, ist die Verwendung von HA-bezogenen Funktionen, die für LVM verfügbar sind.
Bratchley
1
@JoelDavis Kannst du das näher erläutern? Ich weiß nicht, was HA-bezogene Funktionen bedeuten.
Faheem Mitha
Außerdem gibt es den üblichen Vorteil, dass Sie mit logischen Volumes anstelle von mdVolumes arbeiten. So haben Sie lvextendund pvmoveverfügbar für die Bewegung zwischen den Geräten während bei mddem Prozess viel mehr manuell ohne klaren Nutzen ist.
Bratchley
@ JoelDavis vielleicht eine Antwort schreiben?
Faheem Mitha
2
LVM hat immer raid1 und raid0 unterstützt. In jüngerer Zeit haben sie ihre eigene Implementierung eingestellt und stattdessen intern den md-Code für die RAID-Persönlichkeit verwendet, wodurch die anderen RAID-Ebenen geöffnet wurden.
Psusi

Antworten:

55

Wie ausgereift und leistungsfähig ist LVM RAID?

LVM-RAID ist eigentlich im Verborgenen. Grundsätzlich werden zwei logische Volumes pro RAID-Gerät erstellt (eines für Daten mit der Bezeichnung "rimage" und eines für Metadaten mit der Bezeichnung "rmeta"). Diese werden dann an die vorhandenen mdraid-Fahrer weitergeleitet. Dinge wie der Umgang mit Festplattenlesefehlern, E / A-Lastausgleich usw. sollten also ziemlich ausgereift sein.

Das sind die guten Nachrichten.

Werkzeuge

Sie können es nicht verwenden mdadm(zumindest nicht auf einfache Weise¹), und die LVM-RAID-Tools sind bei weitem nicht so ausgereift. lvsKann Ihnen beispielsweise in Debian Wheezy nicht den RAID5-Synchronisationsstatus mitteilen. Ich bezweifle sehr, dass Reparatur und Wiederherstellung (insbesondere in Situationen, in denen "das niemals passieren sollte!") Annähernd so gut ist wie mdadm (und ich bin versehentlich auf eine dieser in meinen Tests gestoßen und habe sie schließlich einfach aufgegeben - 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 (es lvconvertwird eine Fehlermeldung angezeigt, die besagt, dass dies noch nicht unterstützt wird). lvextendfunktioniert und kann sogar RAID-Level erhöhen, für die mdraid erst kürzlich Unterstützung gewonnen hat, wie z. B. RAID10. Nach meiner Erfahrung ist das Erweitern von LVs weitaus häufiger als das Reduzieren von LVs.

Einige andere Funktionen von mdraid sind nicht vorhanden, und insbesondere können Sie nicht alle Optionen von mdadm anpassen.

In älteren Versionen (wie zum Beispiel Debian Wheezy) unterstützt LVM RAID auch keine Erweiterung. Zum Beispiel bei Wheezy:

root@LVM-RAID:~# 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. Auch das ist kein trivialer Prozess.

Werkzeugprobleme

Ich habe mit meiner Jessie-VM (virtuell) eine Festplatte getrennt. Das hat funktioniert, die Maschine lief weiter. lvsEs gab jedoch keinen Hinweis darauf, dass die Arrays abgebaut waren. Ich brachte die Scheibe wieder an und entfernte eine Sekunde. Bin am Laufen geblieben (das ist raid6). Neu angebracht, noch keine Anzeige ab lvs. Ich habe lvconvert --repairdie Lautstärke eingestellt, es hat mir gesagt, dass es in Ordnung ist. Dann zog ich eine dritte Scheibe ... und die Maschine starb. Steckte es wieder ein, startete neu und bin jetzt unsicher, wie man es repariert. mdadm --force --assemblewürde das beheben; weder vgchangenoch lvchangescheint diese Option zu haben (lvchange akzeptiert --force, aber es scheint nicht , etwas zu tun). Selbst als dmsetupich versuchte , die Zuordnungstabelle direkt an den Kernel zu übergeben, konnte ich nicht herausfinden, wie ich sie wiederherstellen sollte.

Es mdadmist auch ein spezielles Tool für die Verwaltung von RAID. LVM leistet viel mehr, aber es fühlt sich an (und ich gebe zu, dass dies ziemlich subjektiv ist), als ob die RAID-Funktionalität in gewisser Weise da reingeschoben worden wäre. 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; beachte, wenn du das auf Wheezy probierst, lies das Ganze zuerst…

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

  2. Fahren Sie wie gewohnt fort, wechseln Sie zur Festplattenpartitionierung und richten Sie die physischen LVM-Volumes ein. Sie können setzen /boot(auf Jessie, und auf Wheezy mit etwas Arbeit unten beschrieben) auf LVM-RAID.

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

  4. Erster Spaß: Der Installer hat das dm-raid.koModul nicht geladen oder ist gar nicht verfügbar! Sie können es also aus dem zu installierenden Linux-Image-Paket herunterladen. Wechseln Sie zu einer Konsole (z. B. 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 weiß nicht, wie LVM-RAID-LVs erstellt werden, daher müssen Sie die Befehlszeile verwenden, um dies zu tun. Hinweis: Ich habe kein Benchmarking durchgeführt. Die Stripe-Größ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. RAID10 wird auf Wheezy nicht unterstützt. Sie können also stattdessen zwei Swap-Partitionen verwenden, jede mit RAID1. Sie müssen jedoch genau angeben, auf welchen physischen Datenträgern sie abgelegt werden sollen, oder es werden beide Hälften des Spiegels auf derselben Festplatte abgelegt . 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". Es werden nun viele logische Volumes angezeigt. Das ist der Installateur, der nicht versteht, was los ist. ignoriere alles mit rimageoder rmetain ihrem Namen (siehe den ersten Absatz oben für eine Erklärung dessen, was das ist).

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

  9. Auf Jessie funktioniert grub2, wenn es auf dem MBR installiert ist (oder wahrscheinlich mit EFI, aber ich habe das nicht getestet). Bei Wheezy schlägt die Installation fehl, und die einzige Lösung besteht darin, Jessies grub2 zurückzuspielen. Das ist eigentlich ziemlich einfach, es kompiliert sauber auf Wheezy. Holen Sie sich irgendwie Ihre zurückportierten Grub-Pakete hinein /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. Eigentlich hing auf meiner letzten Jessie VM Grub-Installation. Das Umschalten auf F2 und das Ausführen while kill $(pidof vgs); do sleep 0.25; done, gefolgt von demselben für lvs, haben es durch grub-install geschafft. Trotzdem schien es eine gültige Konfiguration zu generieren, aber nur für den Fall, dass ich eine chroot /target /bin/bashgemacht habe, mich vergewissert habe /procund /sysgemountet bin und eine gemacht habe update-grub. Damals war es vollbracht. Ich habe dann a dpkg-reconfigure grub-pcausgewählt, um grub auf allen MBRs der virtuellen Laufwerke zu installieren.

  11. Wählen Sie auf Wheezy, nachdem Sie die oben genannten Schritte ausgeführt haben, "Ohne Bootloader fortfahren".

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

Community-Wissen

Es gibt eine ganze Reihe von Leuten, die sich damit auskennen mdadmund viel Erfahrung mit der Bereitstellung haben. Google wird wahrscheinlich die meisten Fragen dazu beantworten. Im Allgemeinen können Sie hier eine Frage dazu erwarten, um Antworten zu erhalten, wahrscheinlich innerhalb eines Tages.

Das Gleiche gilt nicht für LVM RAID. Es ist schwer, Führer zu finden. Die meisten von mir ausgeführten Google-Suchanfragen enthalten Informationen zur Verwendung von mdadm-Arrays als PVs. Um ehrlich zu sein, liegt dies wahrscheinlich größtenteils daran, dass es neuer und weniger verbreitet ist. Irgendwie fühlt es sich unfair an, dies abzulehnen - aber wenn etwas schief geht, macht es die viel größere Community um mdadm wahrscheinlicher, meine Daten wiederherzustellen.

Fazit

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

Wenn einige große mdadm-RAID-Arrays, die mit LVM in Partitionen aufgeteilt wurden, Ihren Anforderungen gerecht werden, würde ich vorschlagen, diese weiterhin zu verwenden. Wenn Sie stattdessen viele Arrays (oder sogar Arrays mit logischen Volumes) erstellen müssen, sollten Sie stattdessen auf LVM-RAID umsteigen. Aber machen Sie gute Backups.

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 besser Ihren Bedürfnissen entsprechen.


Vielen Dank

Ich möchte psusi dafür danken, dass ich den Status von LVM-RAID überarbeitet und diesen Beitrag aktualisiert habe.

Fußnoten

  1. Ich vermute, Sie könnten Device Mapper verwenden, um die Metadaten und Daten so zusammenzufügen, dass mdadm --assemblesie es aufnehmen. Natürlich könnte man auch einfach mdadmauf logischen Volumes laufen ... und das wäre vernünftiger.

  2. Bei der Wheezy-Installation habe ich dies nicht zum ersten Mal getan und bin ohne Grub-Konfiguration gelandet. Ich musste das System booten, indem ich alle Informationen an der Eingabeaufforderung von grub eingab. Nach dem Booten hat das geklappt, daher denke ich, dass es vom Installationsprogramm aus gut funktioniert. Wenn Sie an 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 die ursprünglichen Experimente durchgeführt habe. Ich habe meine Originalnotizen zur Verfügung gestellt. Beachten Sie, dass ich jetzt neuere Arbeiten durchgeführt habe, die in dieser Antwort und nicht in diesen Notizen behandelt werden.

derobert
quelle
2
Sie bekommen diesen Fehler tatsächlich, weil die Version von lvm in wheezy extrem alt und fehlerhaft ist. es funktioniert hier auf Ubuntu 14.04 mit der lvm-version 2.02.98 einwandfrei (ich glaube, jessie ist mindestens so neu). Zweitens ist der Befehl, den Sie als fehlerhaft erwiesen haben, eine Größenänderung - die Formänderung ist etwas ganz anderes. Umformen bedeutet, von RAID 1 auf RAID 5 oder von RAID 5 auf RAID 5 mit 3 Festplatten zu wechseln. Das wird immer noch nicht unterstützt, aber das einfache Ändern der Größe funktioniert einwandfrei.
Psusi
@psusi Ah, ich dachte, dass sie die Größenänderung auch als eine Formänderung betrachteten (da sie die RAID-Geometrie ändert, da sie nicht annähernd so stark ist wie die Anzahl der Festplatten). Ich dachte, bevor ich einen Fehler beim Versuch mit Jessie bekam, werde ich das noch einmal testen. (Müssen Sie eine neue Jessie LVM-RAID-VM erstellen, so wird es ein bisschen dauern.) Vielen Dank.
Derobert
dpkg-debBietet eine sauberere Möglichkeit, Dateien aus Deb-Paketen zu extrahieren, ohne stufenweise herumhüpfen zu müssen.
Muru
@muru ist dpkg-debin der Installationsumgebung verfügbar? Früher war es nicht ... Stellen Sie sicher, dass Sie auch Wheezy überprüfen.
Derobert
@derobert ar -xsollte auch funktionieren, um deb-Archive zu entpacken, obwohl es umständlicher ist. Wie wäre es auch, wenn Sie Ihre Antwort mit dem aktuellen Status aktualisieren?
Faheem Mitha
7

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 dasselbe tut. Wenn etwas mit LVM-RAID nicht funktioniert, können Sie wahrscheinlich nicht so viel Unterstützung erhalten, wie wenn Sie mit mdadm gegangen wären. Darüber hinaus würde ich LVM RAID nicht vertrauen, da LVM sich in der Vergangenheit als nicht die robusteste Software erwiesen hat.

ZFS und BTRFS sind die Zukunft. Die Vorteile, die sie bieten, gehen über das hinaus, was auf der Blockebene möglich ist. Sofern ich keine Kompatibilität anstrebe, verwende ich LVM / mdadm nicht mehr. ZFS und BTRFS verfügen über zahlreiche Funktionen wie Komprimierung, Deduplizierung und Copy-on-Write, auf die ich hier jedoch nicht näher eingehen werde, da sie etwas außerhalb des Anwendungsbereichs liegen würden.

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

Freie Kugeln
quelle
Danke für die Antwort. Erwägen Sie, ein bisschen darüber nachzudenken, warum Sie LVM nicht vertrauen.
Faheem Mitha
2
"ZFS und BTRFS sind die Zukunft" Nicht unbedingt. Meines Wissens ist ZFS unter Linux immer noch FUSE-basiert, daher wird es meistens verwendet, um ZFS-Funktionen ohne Verwendung von Solaris oder FreeBSD zu erhalten. BTRFS ist großartig, aber es ist nicht unbedingt die Zukunft. Zum Beispiel scheint sich Red Hat eher in Richtung LVM+XFSBTRFS zu bewegen als in Richtung . Sie unterstützen BTRFS, aber das ist eher eine Oracle / SuSE-Sache.
Bratchley
Um nicht zu sagen, ich mag BTRFS aus irgendeinem Grund nicht (ich mag es tatsächlich sehr). Es ist nur so, dass es nicht die Richtung ist, in die sich eine große Distribution wie Red Hat begibt, und ich kann mir nichts vorstellen, was BTRFS tun kann, was LVM / XFS nicht mindestens annähernd annähern kann.
Bratchley
Ich würde auch sagen, dass BTRFS nett sein wird, aber LVM kann eine Menge Dinge, die BTRFS (noch) nicht kann. Zum Beispiel können Sie Hybrid-Volumes und Thin-Provisioning-Snapshots erstellen, ohne dass dies mit (AFAIK) BTRFS möglich ist.
Bratchley
9
"Meines Wissens ist ZFS unter Linux immer noch FUSE-basiert", das stimmt seit mehr als fünf Jahren nicht mehr. ZoL ist ein Kernelmodul und vollständig produktionsbereit. Ich benutze es seit Anfang 2010 ausgiebig.
Jim Salter