Frage Funktionieren LVM Snapshots?


Ich versuche herauszufinden, wie LVM-Snapshots funktionieren, so dass ich es auf meinem Fileserver implementieren kann, aber ich habe Schwierigkeiten bei der Suche nach irgendetwas bei Google, das erklärt, wie es funktioniert, anstatt es für ein Basis-Backup-System zu verwenden.

Von dem, was ich gelesen habe, denke ich, dass es ungefähr so ​​funktioniert:

  • Sie haben einen LVM mit einer primären Partition und viele und nicht zugewiesene freie Speicherplatz nicht in der Partition
  • Dann erstellen Sie einen Snapshot und mounten ihn auf einem neuen logischen Volume. Snapshots sollten Änderungen enthalten, damit dieser erste Snapshot eine ganze Kopie ist, richtig?
  • Am nächsten Tag nehmen Sie dann einen anderen Snapshot (die Partitionsgröße muss nicht so groß sein) und mounten ihn.
  • Irgendwie verfolgt der LVM die Snapshots und speichert keine unveränderten Bits auf dem primären Datenträger.
  • Dann entscheiden Sie, dass Sie genügend Snapshots haben und den ersten loswerden. Ich habe keine Ahnung, wie das funktioniert oder wie sich das auf den nächsten Snapshot auswirkt.

Kann mich jemand korrigieren, wo ich falsch liege? Im besten Fall, vermute ich, kann ich bei Google nichts finden.


vgdiplay

obu1: / home / jail / home / qps / backup / D # vgdisplay
  --- Volumengruppe ---
  VG Name fileserverLVM
  System-ID
  Format lvm2
  Metadatenbereiche 1
  Metadatensequenz Nr. 3
  VG Zugriff lesen / schreiben
  VG Status veränderbar
  MAX. LV 0
  Cur LV 2
  Öffne LV 2
  Max PV 0
  Strom PV 1
  Akt PV 1
  VG Größe 931,51 GB
  PE Größe 4.00 MB
  Gesamt PE 238467
  Alloc PE / Größe 238336 / 931,00 GB
  Kostenlose PE / Größe 131 / 524,00 MB
  VGUUID qSGaG1-SQYO-D2bm-ohDf-d4eG-oGCY-4jOegU

18
2017-07-15 13:15


Ursprung




Antworten:


Wny, sieh dir das nicht an Snapshot-Sektion des LVM-HOWTO?

LVM-Snapshots sind Ihre grundlegende Snapshot-Lösung zum Kopieren. Der Schnappschuss ist wirklich nichts anderes als die Aufforderung an den LVM, Ihnen einen "Zeiger" auf den aktuellen Zustand des Dateisystems zu geben und Änderungen, die nach dem Schnappschuss gemacht wurden, in einen bestimmten Bereich zu schreiben.

LVM-Snapshots "leben" innerhalb der Volume-Gruppe, die das Volume hostet, das dem Snapshot unterliegt - kein anderes Volume. Ihre Aussage "... viel und viel nicht zugewiesener freier Speicherplatz, nicht die Partition" lässt es so klingen, als ob Sie denken, dass die Snapshots außerhalb der Volume-Gruppe "Momentaufnahmen" unterliegen, und das ist nicht korrekt. Ihre Volume-Gruppe befindet sich auf einer Festplattenpartition und das Volume, das dem Snapshot unterliegt, und alle Shapshots, die Sie aufgenommen haben, befinden sich in dieser Volume-Gruppe.

Die normale Art und Weise, in der LVM-Snapshots verwendet werden, ist nicht für eine Langzeitspeicherung gedacht, sondern um ein konsistentes "Bild" des Dateisystems zu erhalten, so dass eine Sicherung durchgeführt werden kann. Sobald die Sicherung abgeschlossen ist, wird der Snapshot verworfen.

Wenn Sie einen LVM-Snapshot erstellen, legen Sie eine Menge an Speicherplatz fest, um alle Änderungen beizubehalten, die während der aktiven Momentaufnahme vorgenommen wurden. Wenn mehr Änderungen vorgenommen werden, als Sie Speicherplatz für den Snapshot angegeben haben, wird er unbrauchbar und muss verworfen werden. Sie möchten keine Schnappschüsse zurücklassen, weil (a) sie voll werden und unbrauchbar werden und (b) die Systemleistung beeinträchtigt wird, während ein Schnappschuss aktiv ist - die Dinge werden langsamer.

Bearbeiten:

Was Microsoft Volume Shadow Copy Services und LVM-Snapshots tun, unterscheidet sich nicht allzu sehr. Die Lösung von Microsoft ist ein wenig umfangreicher (wie es bei Microsoft normalerweise der Fall ist). Ihre Tools und Produkte versuchen oft, ziemlich große Probleme zu lösen, anstatt sich auf eine Sache zu konzentrieren.

VSS ist eine umfassendere Lösung, die die Unterstützung für Hardwaregeräte, die Snapshots und softwarebasierte Snapshots unterstützen, in einer einzigen API vereint. Darüber hinaus verfügt VSS über APIs, mit denen Anwendungen über die Snapshot-APIs in den Ruhezustand versetzt werden können, wohingegen LVM-Snapshots sich nur um Snapshots drehen - bei Problemen mit stillstehenden Anwendungen (Datenbanken in "Backup" -Zustände versetzen usw.).


28
2017-07-15 13:31



Es ist also nicht wirklich nach Volume Shadow Copy (VSS) modelliert, weil VSS nicht so funktioniert. - Malfist
Das macht viel mehr Sinn. - Malfist
Ich denke du verstehst LVM Snapshots etwas falsch. LVM-Snapshots erstellen "virtuelle" Geräte, die wie eigenständige Volumes bereitgestellt werden, sie sind jedoch keine "Partitionen". LVM-Snapshots "leben" auf dem Volume, das dem Snapshot unterliegt, genau wie VSS-Snapshots. - Evan Anderson
Könnten Sie bitte klären, wohin die aktualisierten Daten gehen, während ein Snapshot aktiv ist? in den Haupt-LV und der Snapshot speichert eine Kopie des alten Blocks? oder zum Snapshot LV, während das Haupt-LV unberührt bleibt? - Benoît
@benoit der Link in der ersten Zeile der Antwort deckt dies ab. Lesen Sie dort den Hinweis zu LVM1 schreibgeschütztem Snapshot-Verhalten und ich denke, Sie werden Ihre Antwort erhalten. (Es ist der erste Ansatz, den Sie beschreiben, nicht der zweite.) - Peter Hansen


LVM-Snapshots sind ein Beispiel für eine Kopie-auf-Schreib-Snapshot-Lösung, wie Evan sagte. Wie es funktioniert, ist ein bisschen anders als von Evan impliziert, aber nicht von einer ganzen Menge.

Wenn Sie ein LVM-Volume ohne Snapshots haben, werden Schreibvorgänge auf dem Volume wie erwartet ausgeführt. Ein Block wurde geändert und das war's.

Sobald Sie einen Snapshot erstellen, erstellt LVM einen Pool von Blöcken. Dieser Pool enthält auch eine vollständige Kopie der LVM-Metadaten des Volumes. Wenn Schreibvorgänge mit dem Hauptdatenträger geschehen, wie z. B. das Aktualisieren eines Inodes, wird der überschriebene Block in diesen neuen Pool kopiert, und der neue Block wird in das Hauptvolume geschrieben. Dies ist die 'Kopie-beim-Schreiben'. Je mehr Daten zwischen der Erstellung eines Snapshots und dem aktuellen Status des Hauptvolumes geändert werden, desto mehr Speicherplatz wird von diesem Snapshotpool belegt.

Wenn Sie den Snapshot bereitstellen, ermöglichen die beim Erstellen des Snapshots geschriebenen Metadaten das Zuordnen von Snapshot-Pool-Blöcken zu geänderten Blöcken im Volume (oder Snapshot auf höherer Ebene). Auf diese Weise weiß LVM bei Zugriff auf einen bestimmten Block, welchen Blockzugriff er hat. Was das Dateisystem auf diesem Volume betrifft, gibt es keine Snapshots.

James wies auf einen der Fehler dieses Systems hin. Wenn Sie mehrere Snapshots desselben Volumes haben, lösen Sie jedes Mal, wenn Sie in einen Block im Hauptvolume schreiben, Schreibvorgänge in jedem einzelnen Snapshot aus. Dies liegt daran, dass jeder Snapshot seinen eigenen Pool geänderter Blöcke beibehält. Bei langen Snapshot-Bäumen kann das Zugreifen auf einen Snapshot außerdem eine Menge Rechenleistung auf dem Server verursachen, um herauszufinden, welcher exakte Block für einen Zugriff bedient werden muss.

Wenn Sie einen Snapshot entsorgen, löscht LVM einfach den Snapshot-Pool und aktualisiert den Snapshot-Baum nach Bedarf. Wenn der gelöschte Snapshot Teil einer Snapshot-Struktur ist, werden einige Blöcke in den Snapshot der unteren Ebene kopiert. Wenn es der niedrigste Snapshot (oder der einzige) ist, wird der Pool einfach gelöscht und die Operation ist sehr schnell.


Einige Dateisysteme bieten In-Dateisystem-Snapshots, ZFS und BTRFS sind nur zwei der bekannteren. Sie arbeiten ähnlich, obwohl das Dateisystem selbst das geänderte / unveränderte Mapping verwaltet. Dies ist wohl ein besserer Weg, dies zu tun, da Sie eine gesamte Snapshot-Familie aus Konsistenzgründen durchsuchen können, was Sie mit linearem LVM nicht tun können.


27
2017-07-15 18:51



Dankbar für diese detaillierte Erklärung. Tut mir leid, dass ich verwirrt bin "Was das Dateisystem auf diesem Volume betrifft, gibt es keine Snapshots." Kannst du mehr darüber erklären? Sehr dankbar für jede Antwort ~ - Carr
@Carr Es bedeutet, dass Snapshots vollständig außerhalb des Dateisystems behandelt werden. Andere Dateisysteme, die Snapshot-Funktionen enthalten, wie BTRFS und XFS, verfügen über ein Snapshot-Konzept und Sie sollten keine LVM-Snapshots mit diesen Systemen verwenden. - sysadmin1138♦
Fantastische Antwort. Vielen Dank - ThiagoAlves


Sie geben nicht an, ob Sie Linux oder HP-UX verwenden. In HP-UX erstellen Sie ein logisches Volume und hängen es als Snapshot eines anderen logischen Volumes ein. Unter Linux erstellen Sie ein logisches Volume als Snapshot-Volume.

Das Entfernen eines Snapshots in HP-UX erfolgt durch Umhängen des Volumes. In Linux wird dies mithilfe von lvremove ausgeführt, um das logische Volume zu entfernen.

In jedem Fall sind die Änderungen das einzige, was in Ihrem Snapshot gespeichert ist. Je länger der Snapshot verfügbar ist, desto mehr Änderungen werden gespeichert - und es besteht die Möglichkeit, dass er sich füllt, wenn er nicht richtig dimensioniert oder freigegeben wird.

Die Geschwindigkeit des Festplattenzugriffs auf ein Snapshot-Volume ist langsamer als bei einem normalen Volume; Sie müssen das berücksichtigen.


2
2017-07-17 00:42





LVM-Snapshots sind ineffizient, je mehr Snapshots, desto langsamer wird das System.

Ich unterstütze nur xfs als was wir verwenden und xfs_freeze kann verwendet werden, um den neuen Zugriff auf das Dateisystem zu stoppen und ein stabiles Image auf der Festplatte zu erstellen.

Kopieren beim Schreiben wird verwendet, damit der Speicherplatz auf der Disc effizient genutzt wird.

Sie haben ein Dateisystem in einem logischen Volume erstellt, in dem Speicherplatz für die Snapshots vorhanden ist.

Dies ist ein Beispiel aus der FAQ


1
2017-07-15 13:30