Ich habe kürzlich begonnen, LVM auf einigen Servern für Festplatten mit mehr als 1 TB zu verwenden. Sie sind nützlich, erweiterbar und recht einfach zu installieren. Ich konnte jedoch keine Daten über die Gefahren und Vorbehalte von LVM finden.
Was sind die Nachteile von LVM?
linux
filesystems
lvm
data-integrity
advanced-format
Adam Matan
quelle
quelle
Antworten:
Zusammenfassung
Risiken bei der Verwendung von LVM:
Die ersten beiden LVM-Probleme lassen sich zusammenfassen: Wenn das Schreib-Caching nicht ordnungsgemäß funktioniert und Sie einen Stromausfall haben (z. B. Netzteil- oder USV-Ausfall), müssen Sie möglicherweise eine Wiederherstellung nach einem Backup durchführen, was erhebliche Ausfallzeiten zur Folge hat. Ein Hauptgrund für die Verwendung von LVM ist die höhere Betriebszeit (beim Hinzufügen von Festplatten, Ändern der Größe von Dateisystemen usw.), aber es ist wichtig, dass die Schreibcache-Einrichtung korrekt ist, um zu vermeiden, dass LVM die Betriebszeit tatsächlich verringert.
- Aktualisiert im Dezember 2018: Aktualisiertes Snapshot-Material, einschließlich der Stabilität von ZFS und BTRFS als Alternative zu LVM-Snapshots
Risiken mindern
LVM kann immer noch gut funktionieren, wenn Sie:
Einzelheiten
Ich habe dies in der Vergangenheit ziemlich genau untersucht, nachdem ich einen Datenverlust im Zusammenhang mit LVM erlebt habe. Die wichtigsten LVM-Risiken und Probleme, die mir bekannt sind, sind:
Aufgrund von VM-Hypervisoren, Festplatten-Caching oder alten Linux-Kerneln anfällig für Schreibcaches auf der Festplatte. Aufgrund komplexerer Strukturen auf der Festplatte ist es schwieriger, Daten wiederherzustellen. Weitere Informationen finden Sie weiter unten. Ich habe festgestellt, dass vollständige LVM-Setups auf mehreren Datenträgern beschädigt wurden, ohne dass eine Wiederherstellung möglich war, und LVM plus Festplatten-Schreibcache ist eine gefährliche Kombination.
data=ordered
Option ext3 verwenden (oderdata=journal
für zusätzliche Sicherheit) undbarrier=1
sicherstellen, dass das Kernel-Caching die Integrität nicht beeinträchtigt. (Oder verwenden Sie ext4, das standardmäßig Barrieren aktiviert .) Dies ist die einfachste Option und bietet eine gute Datenintegrität zu Lasten der Leistung. (Linux hat die Standardoption ext3 vor einiger Zeit in die gefährlichere Option geändert. Verlassen Sie sichdata=writeback
also nicht auf die Standardeinstellungen für den FS.)hdparm -q -W0 /dev/sdX
für alle Laufwerke/etc/rc.local
(für SATA) hinzu, oder verwenden Sie sdparm für SCSI / SAS. Laut diesem Eintrag in den häufig gestellten Fragen zu XFS (der zu diesem Thema sehr gut ist) kann ein SATA-Laufwerk diese Einstellung nach einer Wiederherstellung nach einem Laufwerksfehler jedoch vergessen. Verwenden Sie daher SCSI / SAS, oder setzen Sie das ein, wenn Sie SATA verwenden müssen Befehl hdparm in einem Cron-Job, der etwa jede Minute ausgeführt wird.Schreib-Caching für die Leistung aktiviert lassen (und mit liegenden Laufwerken umgehen)
Eine komplexere, aber leistungsfähigere Option besteht darin, das SSD- / Festplatten-Schreib-Caching aktiviert zu lassen und sich auf Kernel-Schreibbarrieren zu verlassen, die mit LVM auf Kernel 2.6.33+ funktionieren.
Sie sollten auch sicherstellen, dass das RAID-Setup, das VM-Hypervisor-Setup und das Dateisystem Schreibbarrieren verwenden (dh das Laufwerk muss ausstehende Schreibvorgänge vor und nach Schlüsselmetadaten- / Journalschreibvorgängen löschen). XFS verwendet standardmäßig Barrieren, ext3 jedoch nicht . Daher sollten Sie ext3
barrier=1
in den Mount-Optionen verwenden und weiterhindata=ordered
oderdata=journal
wie oben verwenden.SSDs sind problematisch, da die Verwendung von Schreibcache für die Lebensdauer der SSD von entscheidender Bedeutung ist. Verwenden Sie am besten eine SSD mit einem Superkondensator (um das Leeren des Cache bei Stromausfall zu ermöglichen und damit das Zurückschreiben des Cache zu ermöglichen, nicht das Durchschreiben).
Advanced Format Drive Setup - Schreibcache, Ausrichtung, RAID, GPT
pvcreate
zum Ausrichten der PVs zu verwenden. Dieser LVM-E-Mail-Listenthread verweist auf die im Jahr 2011 in Kerneln durchgeführten Arbeiten und das Problem der Teilblockschreibvorgänge beim Mischen von Festplatten mit 512-Byte- und 4-KB-Sektoren in einer einzelnen LV.Schwieriger, Daten aufgrund komplexerer Strukturen auf der Festplatte wiederherzustellen :
/etc/lvm
sichern. Dies kann zur Wiederherstellung der Grundstruktur von LVs, VGs und PVs beitragen, hilft jedoch nicht bei verlorenen Metadaten des Dateisystems.Schwieriger, die Größe von Dateisystemen korrekt zu ändern - Die einfache Größenänderung von Dateisystemen wird häufig als Vorteil von LVM angegeben, aber Sie müssen ein halbes Dutzend Shell-Befehle ausführen, um die Größe eines LVM-basierten FS zu ändern mit dem FS gemountet, aber ich würde letzteres niemals riskieren ohne aktuelle Backups und mit Befehlen, die auf einem äquivalenten Server vorgetestet wurden (zB Disaster Recovery Clone des Produktionsservers).
lvextend
unterstützen die Option-r
(--resizefs
). Wenn diese verfügbar ist, können Sie die Größe des LV und des Dateisystems sicherer und schneller ändern, insbesondere, wenn Sie den FS verkleinern, und Sie können diesen Abschnitt meistens überspringen.resize2fs
für ext3 und fürlvextend
oderlvreduce
. Ohne große Sorgfalt, werden die Größen aufgrund der Differenz zwischen 1 GB etwas anders können (10 ^ 9) und 1 GiB (2 ^ 30) oder die Art und Weise die verschiedenen Werkzeuge Rundgrößen nach oben oder unten.Es scheint, dass die LV-Größe um das Zweifache der Größe des physischen LVM-Bereichs (PE) größer sein sollte als die FS-Größe. Überprüfen Sie jedoch den obigen Link auf Details, da die Quelle dafür nicht maßgeblich ist. Oft reicht es aus, 8 MiB zuzulassen, aber möglicherweise ist es aus Sicherheitsgründen besser, mehr zuzulassen, z. B. 100 MiB oder 1 GiB. So überprüfen Sie die PE-Größe und Ihr logisches Volumen + FS-Größen mit 4 KiB = 4096-Byte-Blöcken:
Zeigt die PE-Größe in KiB an:
vgdisplay --units k myVGname | grep "PE Size"
Größe aller LVs:
lvs --units 4096b
Größe von (ext3) FS, nimmt 4 KiB FS-Blockgröße an:
tune2fs -l /dev/myVGname/myLVname | grep 'Block count'
Im Gegensatz dazu macht eine Nicht-LVM-Einrichtung das Ändern der Größe des FS sehr zuverlässig und einfach - führen Sie Gparted aus und ändern Sie die Größe der erforderlichen FSs, dann erledigt es alles für Sie. Auf Servern können Sie
parted
von der Shell aus verwenden.Schnappschüsse sind schwer zu verwenden, langsam und fehlerhaft - wenn der vorab zugewiesene Speicherplatz für Schnappschüsse knapp wird, werden sie automatisch gelöscht . Jeder Snapshot eines bestimmten LV ist ein Delta zu diesem LV (nicht zu vorherigen Snapshots), was viel Speicherplatz erfordern kann, wenn Sie Dateisysteme mit erheblicher Schreibaktivität snapshoten (jeder Snapshot ist größer als der vorherige). Es ist sicher, eine Snapshot-LV zu erstellen, die dieselbe Größe wie die Original-LV hat, da der Snapshot dann niemals keinen freien Speicherplatz mehr hat.
Snapshots können auch sehr langsam sein (dh 3 bis 6-mal langsamer als ohne LVM für diese MySQL-Tests ). In dieser Antwort werden verschiedene Snapshot-Probleme behandelt . Die Langsamkeit ist teilweise darauf zurückzuführen, dass für Schnappschüsse viele synchrone Schreibvorgänge erforderlich sind .
Snapshots hatten einige schwerwiegende Fehler, z. B. in einigen Fällen können sie das Booten sehr verlangsamen oder dazu führen, dass das Booten vollständig fehlschlägt (da der Kernel das Warten auf den Root-FS aussetzen kann, wenn es sich um einen LVM-Snapshot handelt [behoben im Debian-
initramfs-tools
Update, März 2015] ).Snapshot-Alternativen - Dateisysteme und VM-Hypervisoren
VM / Cloud-Snapshots:
Dateisystem-Snapshots:
Schnappschüsse auf Dateisystemebene mit ZFS oder btrfs sind einfach zu verwenden und im Allgemeinen besser als LVM, wenn Sie auf Bare-Metal-Systemen arbeiten (ZFS scheint jedoch weitaus ausgereifter zu sein und nur umständlicher zu installieren):
Snapshots für Online-Backups und fsck
Snapshots können verwendet werden, um eine konsistente Quelle für Backups bereitzustellen , sofern Sie den zugewiesenen Speicherplatz berücksichtigen (idealerweise hat der Snapshot die gleiche Größe wie der zu sichernde LV). Der exzellente rsnapshot (seit 1.3.1) verwaltet sogar die Erstellung / Löschung von LVM-Snapshots für Sie - siehe dieses HOWTO zu rsnapshot mit LVM . Beachten Sie jedoch die allgemeinen Probleme mit Snapshots und dass ein Snapshot nicht als Backup an sich betrachtet werden sollte.
Sie können auch LVM-Snapshots verwenden, um einen Online-Fsck durchzuführen: Snapshot des LV und Fsck des Snapshots, wobei der hier beschriebene FS , der nicht zum Snapshot gehört, weiterhin verwendet wird. Daher ist es nicht ganz einfach , e2croncheck wie von Ted Ts beschrieben zu verwenden 'o , Betreuer von ext3.
Sie sollten das Dateisystem vorübergehend "einfrieren", während Sie den Snapshot erstellen. Einige Dateisysteme wie ext3 und XFS tun dies automatisch, wenn LVM den Snapshot erstellt.
Schlussfolgerungen
Trotz alledem verwende ich LVM immer noch auf einigen Systemen, aber für ein Desktop-Setup bevorzuge ich Raw-Partitionen. Der Hauptvorteil von LVM ist die Flexibilität beim Verschieben und Ändern der Größe von FSs, wenn auf einem Server eine hohe Verfügbarkeit erforderlich ist. Wenn Sie dies nicht benötigen, ist gparted einfacher und birgt ein geringeres Risiko für Datenverluste.
LVM erfordert aufgrund von VM-Hypervisoren, Festplatten- / SSD-Schreibcache usw. große Sorgfalt bei der Einrichtung des Schreibcaches. Dies gilt jedoch auch für die Verwendung von Linux als DB-Server. Der Mangel an Unterstützung durch die meisten Tools (
gparted
einschließlich der kritischen Größenberechnungentestdisk
usw.) erschwert die Verwendung.Gehen Sie bei der Verwendung von LVM sehr vorsichtig mit Snapshots um: Verwenden Sie nach Möglichkeit VM / Cloud-Snapshots oder untersuchen Sie ZFS / BTRFS, um LVM vollständig zu vermeiden. Möglicherweise ist ZFS oder BTRS im Vergleich zu LVM mit Snapshots ausreichend ausgereift.
Fazit: Wenn Sie die oben aufgeführten Probleme nicht kennen und nicht wissen, wie Sie sie beheben können, sollten Sie LVM nicht verwenden.
quelle
Ich habe diesen Post [+1] und zumindest für mich denke ich, dass die meisten Probleme existieren. Ich habe sie gesehen, während ein paar 100 Server und ein paar 100 TB Daten laufen. Für mich fühlt sich der LVM2 unter Linux wie eine "clevere Idee" an, die jemand hatte. Wie einige von ihnen erweisen sie sich manchmal als "nicht schlau". Das heißt, wenn Kernel- und Userspace-Zustände (lvmtab) nicht strikt voneinander getrennt sind, hat sich dies möglicherweise als sehr klug herausgestellt, da es zu Korruptionsproblemen kommen kann (wenn Sie den Code nicht richtig verstehen).
Nun, nur, dass diese Trennung aus einem Grund bestand - die Unterschiede zeigen sich bei der Behandlung von PV-Verlusten und der Online-Reaktivierung einer VG mit zB fehlenden PVs, um sie wieder ins Spiel zu bringen - Was ist ein Kinderspiel bei "Original-LVMs" (AIX , HP-UX) wird auf LVM2 zu Mist, da die Zustandsbehandlung nicht gut genug ist. Und bringen Sie mich nicht einmal dazu, über die Erkennung von Quorum-Verlusten (haha) oder die Statusverwaltung (wenn ich eine Festplatte entferne, wird diese nicht als nicht verfügbar markiert. Sie enthält nicht einmal die Spalte mit dem verdammten Status) zu sprechen.
Re: Stabilität pvmove ... warum ist
So ein Top-Artikel in meinem Blog, hmmm? Im Moment schaue ich auf eine Diskette, auf der sich die Daten der phyiscal lvm noch in der Mitte von pvmove befinden. Ich denke, es gab einige Memleaks, und die allgemeine Idee, dass es eine gute Sache ist, Live-Blockdaten aus dem Benutzerraum zu kopieren, ist einfach traurig. Nettes Zitat aus der lvm-Liste "scheint wie vgreduce --missing behandelt pvmove nicht" Bedeutet in der Tat, dass das lvm-Verwaltungstool von lvm zu vi wechselt, wenn sich eine Festplatte während pvmove löst. Oh, und es gab auch einen Fehler, bei dem pvmove nach einem Block-Lese- / Schreibfehler fortgesetzt wird und tatsächlich keine Daten mehr auf das Zielgerät schreibt. WTF?
Betreff : Snapshots Die CoW wird unsicher ausgeführt, indem die NEUEN Daten im Snapshot-Level-Bereich aktualisiert und dann wieder zusammengeführt werden, sobald Sie den Snap löschen. Dies bedeutet, dass Sie beim endgültigen Zusammenführen neuer Daten in die ursprüngliche LV starke E / A-Spitzen haben und, was noch wichtiger ist, natürlich auch ein viel höheres Risiko für Datenbeschädigungen, da der Snapshot nicht beschädigt wird, sobald Sie die Datei öffnen Wand, aber das Original.
Der Vorteil liegt in der Leistung, 1 Schreibvorgänge statt 3 auszuführen. Die Auswahl des schnellen, aber unsicheren Algorithmus ist etwas, das man offensichtlich von Leuten wie VMware und MS unter "Unix" erwartet. Ich würde eher vermuten, dass die Dinge "richtig gemacht" werden. Ich habe nicht viele Leistungsprobleme festgestellt, solange ich den Snapshot-Sicherungsspeicher auf einem anderen Laufwerk als die primären Daten habe (und die Sicherung auf einem anderen natürlich).
Betreff: Barrieren Ich bin mir nicht sicher, ob man LVM dafür verantwortlich machen kann. Soweit ich weiß, war es ein Devmapper-Problem. Es kann jedoch einige Schuld daran geben, dass dieses Problem von Kernel 2.6 bis 2.6.33 nicht wirklich berücksichtigt wird. AFAIK Xen ist der einzige Hypervisor, der O_DIRECT für die virtuellen Maschinen verwendet. Das Problem bestand früher, als "loop" verwendet wurde, weil der Kernel verwendet wurde würde immer noch damit zwischenspeichern. Virtualbox hat zumindest einige Einstellungen, um solche Dinge zu deaktivieren, und Qemu / KVM scheint generell das Cachen zuzulassen. Alle FUSE FS haben auch dort Probleme (kein O_DIRECT)
Betreff: Größen Ich denke, LVM "rundet" die angezeigte Größe. Oder es verwendet GiB. Wie auch immer, Sie müssen die VG Pe-Größe verwenden und mit der LE-Nummer des LV multiplizieren. Das sollte die richtige Netzgröße ergeben, und dieses Problem ist immer ein Verwendungsproblem. Es wird durch Dateisysteme verschlimmert, die so etwas bei fsck / mount nicht bemerken (hallo, ext3) oder online kein "fsck -n" haben (hallo, ext3)
Natürlich ist es bezeichnend, dass Sie für solche Informationen keine guten Quellen finden können. "Wie viele LE für die VRA?" "Wie hoch ist der Steuerausgleich für PVRA, VGDA, ... usw."
Im Vergleich zum Original ist LVM2 das beste Beispiel für "Wer UNIX nicht versteht, ist verdammt, es schlecht neu zu erfinden."
Update ein paar Monate später: Ich habe jetzt das "Full Snapshot" -Szenario für einen Test getroffen. Wenn sie voll sind, wird der Snapshot blockiert, nicht der ursprüngliche LV. Ich habe mich dort geirrt, als ich das zum ersten Mal gepostet hatte. Ich habe bei einem Arzt falsche Informationen abgerufen, oder vielleicht habe ich sie verstanden. In meinen Setups war ich immer sehr paranoid, sie nicht voll werden zu lassen, und so wurde ich nie korrigiert. Es ist auch möglich, Schnappschüsse zu vergrößern / zu verkleinern, was ein Vergnügen ist.
Was ich immer noch nicht lösen konnte, ist, wie ich das Alter eines Schnappschusses identifiziere. In Bezug auf ihre Leistung gibt es auf der "thinp" -Fedora-Projektseite einen Hinweis, der besagt, dass die Schnappschuss-Technik überarbeitet wird, damit sie nicht mit jedem Schnappschuss langsamer wird. Ich weiß nicht, wie sie das umsetzen.
quelle
Wenn Sie vorhaben, Snapshots für Backups zu verwenden, sollten Sie auf einen großen Leistungseinbruch vorbereitet sein, wenn ein Snapshot vorhanden ist. Lesen Sie hier mehr . sonst ist alles gut Ich habe Lvm in der Produktion für ein paar Jahre auf Dutzenden von Servern verwendet, obwohl mein Hauptgrund für die Verwendung ist die atomare Momentaufnahme nicht die Fähigkeit, Volumes einfach zu erweitern.
Wenn Sie übrigens ein 1-TB-Laufwerk verwenden, denken Sie an die Partitionsausrichtung - dieses Laufwerk hat höchstwahrscheinlich 4-KB-Sektoren.
quelle
Adam,
Ein weiterer Vorteil: Sie können ein neues physisches Volume (PV) hinzufügen, alle Daten in dieses PV verschieben und dann das alte PV ohne Betriebsunterbrechungen entfernen. Ich habe diese Funktion in den letzten fünf Jahren mindestens vier Mal verwendet.
Ein Nachteil, den ich noch nicht klar herausgestellt habe: Es gibt eine etwas steile Lernkurve für LVM2. Meist in der Abstraktion, die es zwischen Ihren Dateien und den zugrunde liegenden Medien erstellt. Wenn Sie mit nur wenigen Personen zusammenarbeiten, die Aufgaben auf einer Reihe von Servern teilen, ist die zusätzliche Komplexität für Ihr gesamtes Team möglicherweise überwältigend. Größere Teams, die sich der IT-Arbeit widmen, haben im Allgemeinen kein solches Problem.
Beispielsweise verwenden wir es hier bei meiner Arbeit häufig und haben uns die Zeit genommen, dem gesamten Team die Grundlagen, die Sprache und das Nötigste zum Wiederherstellen von Systemen beizubringen, die nicht ordnungsgemäß gestartet werden.
Eine Warnung, die Sie besonders hervorheben sollten: Wenn Sie von einem logischen LVM2-Volume booten, war es schwierig, Wiederherstellungsvorgänge durchzuführen, wenn der Server abstürzt. Knoppix und seine Freunde haben nicht immer das richtige Zeug dafür. Deshalb haben wir beschlossen, dass sich unser / boot-Verzeichnis auf einer eigenen Partition befindet und immer klein und nativ ist.
Insgesamt bin ich ein Fan von LVM2.
quelle
/boot
getrennt ist immer eine gute Ideevgchange -ay
, um die LVM-Volumes zu finden.