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. lvs
Kann 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 lvconvert
wird eine Fehlermeldung angezeigt, die besagt, dass dies noch nicht unterstützt wird). lvextend
funktioniert 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. lvs
Es 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 --repair
die 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 --assemble
würde das beheben; weder vgchange
noch lvchange
scheint diese Option zu haben (lvchange akzeptiert --force
, aber es scheint nicht , etwas zu tun). Selbst als dmsetup
ich versuchte , die Zuordnungstabelle direkt an den Kernel zu übergeben, konnte ich nicht herausfinden, wie ich sie wiederherstellen sollte.
Es mdadm
ist 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…
Verwenden Sie zur Installation ein vollständiges CD-Image, kein Netinst-Image.
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.
Erstellen Sie Ihre Volumengruppe (n). Belassen Sie es im LVM-Menü.
Erster Spaß: Der Installer hat das dm-raid.ko
Modul 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
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
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
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 rimage
oder rmeta
in ihrem Namen (siehe den ersten Absatz oben für eine Erklärung dessen, was das ist).
Erstellen Sie wie gewohnt Dateisysteme, tauschen Sie Partitionen usw. aus. Installieren Sie das Basissystem usw., bis Sie zur Eingabeaufforderung grub gelangen.
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
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/bash
gemacht habe, mich vergewissert habe /proc
und /sys
gemountet bin und eine gemacht habe update-grub
. Damals war es vollbracht. Ich habe dann a dpkg-reconfigure grub-pc
ausgewählt, um grub auf allen MBRs der virtuellen Laufwerke zu installieren.
Wählen Sie auf Wheezy, nachdem Sie die oben genannten Schritte ausgeführt haben, "Ohne Bootloader fortfahren".
Beenden Sie die Installation. Es wird hochfahren. Wahrscheinlich.
Community-Wissen
Es gibt eine ganze Reihe von Leuten, die sich damit auskennen mdadm
und 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
Ich vermute, Sie könnten Device Mapper verwenden, um die Metadaten und Daten so zusammenzufügen, dass mdadm --assemble
sie es aufnehmen. Natürlich könnte man auch einfach mdadm
auf logischen Volumes laufen ... und das wäre vernünftiger.
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.