GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Funktionieren LVM-Snapshots so?

Lösung 1:

Werfen Sie doch mal einen Blick in den Snapshots-Abschnitt des LVM-HOWTO?

LVM-Snapshots sind Ihre grundlegende „Copy-on-Write“-Snapshot-Lösung. Der Schnappschuss ist wirklich nichts anderes als die Bitte an den LVM, Ihnen einen „Zeiger“ auf den aktuellen Zustand des Dateisystems zu geben und Änderungen, die nach dem Schnappschuss vorgenommen wurden, in einen bestimmten Bereich zu schreiben.

LVM-Snapshots „leben“ innerhalb der Volume-Gruppe, die das Volume hostet, das Gegenstand des Snapshots ist – nicht in einem anderen Volume. Ihre Aussage "... viel, viel nicht zugeordneter freier Speicherplatz, nicht die Partition" lässt es so klingen, als würden Sie denken, dass die Snapshots außerhalb der Volume-Gruppe "leben", die dem Snapshot unterliegt, und das ist nicht korrekt. Ihre Volume-Gruppe befindet sich in einer Festplattenpartition, und das Volume, das einem Snapshot unterzogen wird, und alle von Ihnen aufgenommenen Shapshots leben in dieser Volume-Gruppe.

Normalerweise werden LVM-Snapshots nicht für die Langzeitspeicherung verwendet, sondern um ein konsistentes "Bild" des Dateisystems zu erhalten, damit eine Sicherung erstellt 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 zu speichern, die vorgenommen werden, während der Snapshot aktiv ist. Wenn mehr Änderungen vorgenommen werden, als Sie Speicherplatz für den Snapshot vorgesehen haben, wird dieser unbrauchbar und muss verworfen werden. Sie möchten keine Snapshots herumliegen lassen, weil (a) sie sich füllen und unbrauchbar werden und (b) die Systemleistung beeinträchtigt wird, während ein Snapshot 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 etwas umfassender (wie es normalerweise bei Microsoft 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 unterstützen, und softwarebasierte Snapshots 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, während sich LVM-Snapshots nur mit Snapshots befassen - jedes Stilllegen von Anwendungen ist Ihr Problem (Versetzen von Datenbanken in den "Backup" -Zustand usw.).

Lösung 2:

LVM-Snapshots sind ein Beispiel für eine Copy-on-Write-Snapshot-Lösung, wie Evan sagte. Wie es funktioniert, unterscheidet sich ein wenig von Evans Andeutung, aber nicht sehr viel.

Wenn Sie ein LVM-Volume ohne Snapshots haben, erfolgen Schreibvorgänge auf dem Volume wie erwartet. Ein Block wird 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 Datenträgers. Wenn Schreibvorgänge auf dem Hauptvolume stattfinden, wie z. B. das Aktualisieren eines Inodes, wird der zu überschreibende Block in diesen neuen Pool kopiert und der neue Block wird auf das Hauptvolume geschrieben. Dies ist das 'Copy-on-Write'. Je mehr Daten zwischen der Erstellung eines Snapshots und dem aktuellen Status des Hauptvolumes geändert werden, desto mehr Speicherplatz wird daher von diesem Snapshot-Pool verbraucht.

Wenn Sie den Snapshot mounten, ermöglichen die beim Erstellen des Snapshots geschriebenen Metadaten die Zuordnung von Snapshot-Pool-Blöcken zu geänderten Blöcken im Volume (oder Snapshot auf höherer Ebene). Auf diese Weise weiß LVM, wenn ein Zugriff für einen bestimmten Block erfolgt, welcher Blockzugriff erfolgt. 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, möglicherweise Schreibvorgänge in jedem einzelnen Snapshot aus. Dies liegt daran, dass jeder Snapshot seinen eigenen Pool geänderter Blöcke verwaltet. Bei langen Snapshot-Bäumen kann der Zugriff auf einen Snapshot außerdem eine Menge Rechenarbeit auf dem Server verursachen, um herauszufinden, welcher genaue Block für einen Zugriff bedient werden muss.

Wenn Sie einen Snapshot löschen, löscht LVM einfach den Snapshot-Pool und aktualisiert den Snapshot-Baum nach Bedarf. Wenn der abgelegte Snapshot Teil eines Snapshot-Baums ist, werden einige Blöcke in einen Snapshot auf niedrigerer Ebene kopiert. Wenn es sich um den niedrigsten Snapshot (oder den einzigen) handelt, wird der Pool einfach gelöscht und die Operation ist sehr schnell.

Einige Dateisysteme bieten Snapshots im Dateisystem an, ZFS und BTRFS sind nur zwei der bekannteren. Sie funktionieren ähnlich, obwohl das Dateisystem selbst die geänderte/unveränderte Zuordnung verwaltet. Dies ist wohl ein besserer Weg, da Sie eine ganze Snapshot-Familie auf Konsistenz überprüfen können, was Sie mit einfachem LVM nicht tun können.

Lösung 3:

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

Ich unterstütze nur xfs, da es das ist, was wir verwenden, und xfs_freeze kann verwendet werden, um neue Zugriffe auf das Dateisystem zu stoppen und ein stabiles Image auf der Festplatte zu erstellen.

Copy on Write wird verwendet, um den Speicherplatz effizient zu nutzen.

Sie haben ein Dateisystem in einem logischen Volume erstellt, das über freien Speicherplatz für die Snapshots verfügt.

Dies ist ein Beispiel aus den FAQ

Lösung 4:

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

Das Entfernen eines Snapshots in HP-UX erfolgt durch Unmounten des Volumes; unter Linux erfolgt dies durch die Verwendung von lvremove, um das logische Volume zu entfernen.

In jedem Fall sind die Änderungen das einzige, was auf Ihrem Snapshot gespeichert wird. Je länger der Snapshot verfügbar bleibt, desto mehr Änderungen werden gespeichert – und es besteht die Möglichkeit, dass er sich füllt, wenn er nicht die richtige Größe hat oder freigegeben wird.

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


Linux
  1. So erweitern Sie LVM, wenn in der Volumengruppe kein freier Speicherplatz vorhanden ist

  2. So verwenden Sie Snapshots, Klone und Replikation in ZFS unter Linux

  3. So erstellen Sie ein physisches Volume unter Linux mit LVM

  4. So konvertieren Sie ein Volume in ein Stripe-Volume (RAID0) in LVM

  5. So reduzieren Sie ein LVM-Volume unter Ubuntu

Ein Leitfaden zu LVM-Snapshots mit ext4 unter CentOS 7

So erstellen Sie eine Volumengruppe in Linux mit LVM

So verwenden Sie LVM-Snapshots zum Wiederherstellen von Linux-Systemen

So ändern Sie die Größe eines logischen Volumes mit 5 einfachen LVM-Befehlen

So erstellen und wiederherstellen Sie VM-Snapshots in VirtualBox

Sicherung und Wiederherstellung von LVM-Snapshots unter Linux