LVM-Snapshots als Sicherungsstrategie

17

Wie sinnvoll wäre eine Sicherungsstrategie für regelmäßige LVM-Snapshots von Xen-DomUs? Vor-, Nachteile, irgendwelche Fallstricke?

Für mich scheint es die perfekte Lösung für eine schnelle, hirnlose Wiederherstellung zu sein. Jede Untersuchung des defekten logischen Datenträgers kann stattfinden, wenn domU ohne Unterbrechung erfolgreich ausgeführt wird.

BEARBEITEN:

Hier bin ich gerade, wenn ich vollständige Systemsicherungen mache.

  • lvm snapshot von domU disk
  • Ein neues logisches Volume, dessen Größe der Größe des Snapshots entspricht.
  • dd if = / dev / snapshot von = / dev / new_lv
  • Schnappschuss mit lvremove entsorgen
  • Optionale Überprüfung mit kpartx / mount / ls

Jetzt muss ich das automatisieren.

Karolis T.
quelle

Antworten:

32

LVM-Snapshots sollen das Dateisystem in einem eingefrorenen Zustand erfassen. Sie sind nicht als Backup für sich selbst gedacht. Sie sind jedoch nützlich, um Backup-Images zu erhalten, die konsistent sind, da sich das eingefrorene Image während des Backup-Prozesses nicht ändern kann und wird. Während Sie sie also nicht direkt für langfristige Sicherungen verwenden, sind sie für jeden Sicherungsvorgang, für den Sie sich entscheiden, von großem Wert.

Es gibt ein paar Schritte, um einen Schnappschuss zu implementieren. Das erste ist, dass ein neues logisches Volume zugewiesen werden muss. Der Zweck dieses Volumes ist es, einen Bereich bereitzustellen, in dem Deltas (Änderungen) am Dateisystem aufgezeichnet werden. Auf diese Weise kann das ursprüngliche Volume fortgesetzt werden, ohne dass der Lese- / Schreibzugriff unterbrochen wird. Der Nachteil dabei ist, dass der Snapshot-Bereich eine begrenzte Größe hat, was bedeutet, dass er auf einem System mit vielbeschäftigten Schreibvorgängen ziemlich schnell voll werden kann. Bei Volumes mit erheblicher Schreibaktivität sollten Sie die Größe Ihres Snapshots erhöhen, damit genügend Speicherplatz für alle Änderungen vorhanden ist. Wenn Ihr Schnappschuss überläuft (sich füllt), werden beide Schnappschüsse angehalten und als unbrauchbar markiert. In diesem Fall möchten Sie Ihren Snapshot freigeben, damit Sie das ursprüngliche Volume wieder online stellen können. Sobald die Veröffentlichung abgeschlossen ist, werden Sie

Das zweite, was passiert, ist, dass LVM jetzt die wahren Zwecke der fraglichen Volumes "vertauscht". Sie würden denken, dass der neu zugewiesene Schnappschuss der Ort ist, an dem Sie nach Änderungen am Dateisystem suchen können, schließlich werden dort alle Schreibvorgänge ausgeführt, oder? Nein, es ist umgekehrt. Dateisysteme werden auf LVM - Volume montiert Namen , so das Auslagern Namen von unter dem Rest des Systems wäre ein no-no (da der Snapshot verwendet einen unterschiedlichen Namen). Die Lösung hier ist also einfach: Wenn Sie auf den ursprünglichen Datenträgernamen zugreifen, bezieht sich dieser weiterhin auf die Live- Version (Lese- / Schreibzugriff) des Datenträgers, von dem Sie den Snapshot erstellt haben. Das von Ihnen erstellte Snapshot-Volume bezieht sich auf das eingefrorene(schreibgeschützte) Version des Volumes, das Sie sichern möchten. Anfangs etwas verwirrend, aber es wird Sinn machen.

All dies geschieht in weniger als 2 Sekunden. Der Rest des Systems merkt es nicht einmal. Es sei denn, Sie geben den Schnappschuss nicht frei, bevor er überläuft ...

Irgendwann möchten Sie Ihren Snapshot freigeben, um den belegten Speicherplatz wiederherzustellen. Sobald die Freigabe abgeschlossen ist, wird das Snapshot-Volume wieder auf dem Volume freigegeben, und das Original bleibt erhalten.

Ich empfehle dies nicht als langfristige Sicherungsstrategie. Sie hosten immer noch Daten auf demselben physischen Laufwerk, bei dem ein Fehler auftreten kann, und die Wiederherstellung Ihres Dateisystems von einem ausgefallenen Laufwerk ist überhaupt keine Sicherung.

Also, auf den Punkt gebracht:

  • Snapshots eignen sich gut zur Unterstützung von Backups
  • Snapshots sind an sich keine Form der Sicherung
  • Schnappschüsse halten nicht ewig
  • Ein vollständiger Schnappschuss ist keine gute Sache
  • Schnappschüsse müssen irgendwann veröffentlicht werden
  • LVM ist dein Freund, wenn du es weise verwendest.
Avery Payne
quelle
4
Auch die Leistung von LVM-Snapshots verschlechtert sich linear - 8 Snapshots, das 8-fache der E / A.
Steven
9
Es gibt ein paar Punkte in Ihrer Beschreibung, die meiner Meinung nach falsch sind. Wenn in aktuellen Versionen von LVM ein Snapshot voll ist, wird er einfach als unbrauchbar markiert und muss gelöscht werden. I / O auf dem Gerät wird nicht angehalten. Zweitens werden beim Löschen eines Schnappschusses keine Daten auf das ursprüngliche Volume zurückkopiert. Wenn Sie auf das Live-Volume schreiben, werden die ursprünglichen Blöcke zunächst in den Snapshot kopiert und anschließend die Live-Blöcke aktualisiert. Wenn Sie dann den Schnappschuss ablegen, müssen Sie nur den Eintrag aus dem Geräte-Mapper entfernen. Kein Kopieren erforderlich.
Kamil Kisiel
2
Der Vollständigkeit halber hat Kamil Kisiel Recht. Siehe: tldp.org/HOWTO/LVM-HOWTO/snapshotintro.html
ktower
1
Nachdem ich mich über falsche Informationen beschwert habe, wurde die Antwort auf der Grundlage mehrerer Dokumentations- und Diskussionsquellen geändert. Tut mir leid, mein Böser.
Avery Payne
10

LVM-Snapshots eignen sich hervorragend, um Ihren Server zu sichern, ohne ihn offline zu schalten. Wie bereits erwähnt, handelt es sich bei LVM-Snapshots fast um Sofortkopien. Sie erstellen sie mit dem lvcreateBefehl so, wie Sie die LV selbst erstellen würden. Nur Sie geben ihr die --snapshotOption und die ursprüngliche LV anstelle der VG. Zum Beispiel:

lvcreate -L <LV size> -s -n <snapshot name> /dev/<VG name>/<LV name>

Auf diese Weise wird ein Snapshot des angegebenen LV mit dem angegebenen Snapshot-Namen erstellt, den Sie mounten und verwenden können, um Ihre Sicherungskopie zu erstellen, ohne sich Gedanken darüber zu machen, ob Dateien aktiv verwendet werden. Dies ist besonders hilfreich, wenn Sie versuchen, einen aktiven Datenbankserver zu sichern.

Nachdem Sie mit dem Sichern von dem Snapshot fertig sind, möchten Sie ihn entfernen, um zusätzlichen E / A-Aufwand oder andere Leistungsprobleme zu verringern, wie von anderen erwähnt:

lvremove /dev/<VG name>/<snapshot name>

LVM-Snapshots können für die Erstellung einer zuverlässigen Sicherung von Systemen wie Datenbanken von unschätzbarem Wert sein, sodass Sie normalerweise die Sicherung beenden möchten, um Dateikonflikte zu vermeiden. Sie eignen sich jedoch nicht für den langfristigen Betrieb als schnelle Wiederherstellung.

Jeremy Bouse
quelle
9

Keine gute Idee, IMO.

Die Snapshots werden beim Schreiben kopiert, sodass Sie jeden Schreibvorgang in einen Lesevorgang und zwei Schreibvorgänge umwandeln (der Block, auf den Sie aktualisieren, wird zuerst vom Haupt-Volume gelesen und auf dem Snapshot-Volume gespeichert, bevor Sie neue Daten speichern Wenn auf den VMs häufig geschrieben wird, kann dies zu Leistungseinbußen führen.

Auch IIRC, wenn das Snapshot-Volume voll wird, wird es einfach kurzerhand gelöscht. Dies ist nicht gut für Sicherungszwecke! Wenn Sie dies als Sicherungsmethode versuchen, stellen Sie sicher, dass das Snapshot-Volume groß genug ist, um alle Änderungen zu verarbeiten, die während der Nutzungsdauer des Snapshots auftreten. Wenn Sie das Größenproblem kennen und überwachen und das Leistungsproblem für Sie kein Problem darstellt, ist das, was Sie vorschlagen, möglicherweise eine nützliche Ergänzung zu anderen vorhandenen Sicherungsprozessen.

LVM-Snapshots sind sehr nützlich als Teil eines Sicherungsprozesses (Erstellen eines Snapshots, Sichern des Snapshots an einem anderen Ort, um sicherzustellen, dass das Backup konsistent ist, ohne dass Aktualisierungen des "echten" Volumes deaktiviert werden müssen, und Löschen des Snapshots danach). Sie sind jedoch nicht als eigenständige Backup-Einrichtung gedacht.

David Spillett
quelle
Vielleicht verstehe ich nicht, wie Schnappschüsse funktionieren. Das Handbuch besagt, dass ein Snapshot eine fast sofortige Kopie des logischen Datenträgers ist, so dass das System, das ihn offline verwendet, nicht in Betrieb genommen werden muss. Ihrer Beschreibung zufolge handelt es sich bei einem Snapshot eher um einen Zweig, eine Replik, als um eine eingefrorene Kopie. Wird der Schnappschuss mit allen Änderungen aktualisiert, die am ursprünglichen System vorgenommen wurden, nachdem diese vorgenommen wurden? Wenn ja, muss ich die Daten sofort entfernen und den Schnappschuss zerstören, weil er nicht als Speichermechanismus für Sicherungen gedacht ist? Vielen Dank!
Karolis T.
2
Es ist eine eingefrorene Kopie des Volumes, aus dem es erstellt wurde, enthält jedoch nur Blöcke, die sich seit der Erstellung des Snapshots geändert haben (daher kann das Snapshot-Volume viel kleiner sein als das Volume, von dem es ein Snapshot ist). Wenn Blöcke im Live-Volume aktualisiert werden, wird der Inhalt der ursprünglichen Blöcke zum Speicher des Snapshots hinzugefügt. Wenn Sie sich also den Snapshot ansehen, kann LVM die ursprünglichen Blöcke anstelle der aktualisierten Blöcke bereitstellen.
David Spillett
Aber wenn es geändert wird (der Schnappschuss), woher kommt dieser "eingefrorene"? Nehmen wir an, ich habe dieses Szenario, ein funktionierendes System wird mit der Zeit irgendwie beschädigt. Ich habe einen Schnappschuss davon, als es richtig funktionierte. Wird der Schnappschuss eine Darstellung des Systems sein, während es noch ordnungsgemäß funktionierte, oder werden die Änderungen vorgenommen, die das ursprüngliche System überhaupt beschädigt haben? Hoffe, ich bin klar genug, möchte nur sichergehen, dass ich es wirklich verstehe.
Karolis T.
Um zu verstehen, woher Frozen kommt, müssen Sie feststellen, dass Sie jetzt zwei separate Volumes haben - das Original, das das aktive Dateisystem enthält, und den Snapshot, der die Frozen-Version des Dateisystems ändert. Siehe meine Antwort für weitere Details.
Avery Payne
1
Ihr Leute macht es komplizierter als es ist. Der Snapshot speichert den Status des Quelldateisystems so, wie er war, als der Snapshot erstellt wurde. Wenn sich das Quell-Fs ändert, ändert sich der Schnappschuss nicht, sodass Sie Ihr Sicherungsprogramm so einstellen können, dass es anstelle des Quell-Fs aus dem Schnappschuss liest. Ja, ein Copy-on-Write-Vorgang findet hinter den Bildschirmen statt, der Benutzer bemerkt dies jedoch nur, wenn zusätzliche E / A-Funktionen verwendet werden.
Martijn Heemels
6

Sie müssen sicherstellen, dass sich die Daten auf der Festplatte in einem konsistenten Zustand befinden, bevor der Snapshot erstellt wird. Zum Beispiel kann es sein, dass in mysql Daten zwischengespeichert sind, die auf die Festplatte kopiert werden müssen, indem die Datenbank entleert oder heruntergefahren wird. Einzelheiten finden Sie in Ihren Anwendungshandbüchern.

pgs
quelle
5

LVMs sind nicht nur ein Trick für Geräte-Mapper. Das Erstellen eines Snapshots mit lvcreate ist nicht viel mehr als ein Wrapper für einige Dmsetup-Dinge. Der Wrapper erstellt ein neues Gerät (das Snapshot-Volume) aus einem alten (dem Original-Volume) und einem neuen (dem Copy-on-Write-Volume). Zusammen damit wird die ursprüngliche LV in -real umbenannt (siehe unten, dmsetup ls --tree output). Diese echte LV wird sowohl dem Snapshot-Volume als auch dem Original-Volume zugeordnet, sodass sie an beiden Orten verwendet werden kann. Das Copy-on-Write-Volume fungiert als Overlay für das echte LV. Der -snap LV zeigt Ihnen die Kombination des Copy-on-Write-Volumes und des -real-Volumes. Dies verursacht in der Tat einen gewissen Leistungsaufwand.

Volume00-snap (253:11)
 |-Volume00-snap-cow (253:13)
 |  `- (104:2)
 `-Volume00-LogVol01-real (253:12)
    `- (104:2)

Volume00-LogVol01 (253:5)
 `-Volume00-LogVol01-real (253:12)
    `- (104:2)

Beim Entfernen des Schnappschusses kommt es erneut zu Umbenennungen und Zuordnungen. Danach sieht die Situation wieder so aus

Volume00-LogVol01 (253:5)
 `- (104:2)

Dies ist eine gute Methode zum Sichern von Daten: Wenn Sie berücksichtigen, dass dies (1) nicht für den Arbeitsspeicher der virtuellen Maschinen hilfreich ist, (2) eine Leistungsbeeinträchtigung verursacht und (3) erforderlich ist um Bilder des Schnappschusses an einer anderen Stelle zu speichern.

VMware VCB funktioniert auch mit Snapshots, allerdings nicht mit LVM.

wzzrd
quelle
4

Auch wenn Snapshots keine Auswirkungen auf die Leistung hatten, müssen Sie wissen: Snapshots sind keine Sicherungskopien mehr als eine Kopie in einen anderen Ordner auf derselben Festplatte.

Wenn die Festplatte bremst, gehen Ihre Daten und Ihre Sicherung verloren. Auch wenn Sie den Snapshot-Bereich einem anderen PE in der VG zuweisen, enthält er nur die Daten, die seit dem Snapshot geändert wurden.

Sichern bedeutet mindestens eine Kopie auf ein vollständig separates Laufwerk.

Sven
quelle
Ja ich verstehe das. RAID 1 ist vorhanden, um vor Ausfällen von Speichergeräten und dem Sichern an einem Remotestandort zu schützen - vor Beschädigung der Software. Ich betrachte LVM-Snapshots als Werkzeug für eine WIRKLICH schnelle Wiederherstellung, wenn Sie nicht wissen, was passiert ist und Sie das System jetzt online benötigen. Gibt es andere Optionen, die schneller als das Wiederherstellen einer DomU aus einer LVM-Sicherung sind?
Karolis T.
3

Ich benutze ein solches Setup für Snapshots von VMware-Servern und MySQL-Datenbanken. funktioniert soweit gut es gab ein paar restaurierungen - alles ohne probleme. eine sache, die beachtet werden muss - beim laufen mit snapshot wird lvm für i / o-operationen erheblich leistungsfähiger. schau hier . Ignorieren Sie die Tatsache, dass sie über MySQL sprechen, I / O-Operationen sind I / O-Operationen ... egal, welche Art von Daten sich auf LVM befinden.

pQd
quelle
1
Aha. Ja, ich gehe davon aus, dass ein Snapshot erstellt und auf einen Remote-Storage-Server exportiert wird. nicht auf dem lokalen Host gelassen.
pQd
2

Ich benutze lvm-Snapshots nur, um die DomU Lv einer anderen in eine separate Vg zu kopieren, wobei jeder Domain drei Backup- "Nodes" zur Verfügung stehen.

Danach wird der Snapshot zerstört und die Backup-Lvs bleiben bis zur nächsten Runde erhalten. Wenn ich eine Wiederherstellung durchführen muss, muss ich nur eine Quell-Lv aus der Sicherungs-Vg auswählen und in die Domain-Lv kopieren.

Hin und wieder wird ein Backup-Lv in eine Image-Datei auf einem separaten Server gespeichert.

All dies wird per Skript automatisiert, mit einem Backup alle zwei Tage und einem Dump jede Woche.

Ich hatte sogar einen "Panik" -Modus im Sinn, in dem die Domain Lv wiederhergestellt, aber von einem Schnappschuss aus ausgeführt und alle 2 Stunden zurückgesetzt wurde, um die Site im Falle schwerwiegender Hacks online zu halten, bis eine ordnungsgemäße Verteidigung organisiert werden konnte .

Berzemus
quelle
1

Was wurde aus der Idee der Verteidigungslinie „Panikmodus“?

NginUS
quelle