Ich versuche herauszufinden, wie LVM-Snapshots funktionieren, damit ich sie auf meinem Dateiserver implementieren kann, aber ich habe Schwierigkeiten, bei Google etwas zu finden, das erklärt, wie es funktioniert, anstatt es für ein Basissicherungssystem zu verwenden.
Nach dem, was ich gelesen habe, funktioniert es ungefähr so:
- Sie haben eine LVM mit einer primären Partition und sehr viel nicht zugewiesenem freiem Speicherplatz, der sich nicht in der Partition befindet
- Anschließend erstellen Sie einen Snapshot und hängen ihn auf einem neuen logischen Volume an. Snapshots sollten Änderungen aufweisen, sodass dieser erste Snapshot eine vollständige Kopie ist, richtig?
- Am nächsten Tag erstellen Sie dann einen weiteren Snapshot (die Partitionsgröße muss nicht so groß sein) und hängen ihn ein.
- Irgendwie verfolgt der LVM die Snapshots und speichert keine unveränderten Bits auf dem primären Volume.
- Dann entscheiden Sie, dass Sie genug Schnappschüsse haben und den ersten loswerden. Ich habe keine Ahnung, wie das funktioniert oder wie sich das auf den nächsten Schnappschuss auswirken würde.
Kann mich jemand korrigieren wo ich falsch liege. Ich schätze, ich kann bei Google nichts finden.
vgdiplay
obu1: / home / jail / home / qps / backup / D # vgdisplay --- Volumengruppe --- VG Name fileserverLVM System ID Formatieren Sie lvm2 Metadatenbereiche 1 Metadatensequenz Nr. 3 VG Access lesen / schreiben VG Status veränderbar MAX LV 0 Cur LV 2 Öffnen Sie LV 2 Max PV 0 Aktuelle PV 1 Handlung 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 Freies PE / Größe 131 / 524,00 MB VG UUID qSGaG1-SQYO-D2bm-ohDf-d4eG-oGCY-4jOegU
LVM-Snapshots sind ein Beispiel für eine Copy-on-Write-Snapshot-Lösung, wie Evan sagte. Wie es funktioniert, ist ein bisschen anders als bei Evan, aber nicht viel anders.
Wenn Sie ein LVM-Volume ohne Snapshots haben, geschieht das Schreiben auf das Volume wie erwartet. Ein Block wird geändert und das wars.
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 auf dem Hauptdatenträger stattfinden, z. B. das Aktualisieren eines Inodes, wird der zu überschreibende Block in diesen neuen Pool kopiert und der neue Block auf den Hauptdatenträger 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 beansprucht der Snapshot-Pool.
Wenn Sie den Snapshot mounten, können die beim Erstellen des Snapshots geschriebenen Metadaten die Zuordnung von Snapshot-Poolblöcken zu geänderten Blöcken im Volume (oder Snapshot einer höheren Ebene) ermöglichen. Auf diese Weise weiß LVM, welcher Blockzugriff vorliegt, wenn ein Zugriff für einen bestimmten Block erfolgt. Für das Dateisystem auf diesem Volume gibt es keine Snapshots.
James wies auf einen der Fehler dieses Systems hin. Wenn Sie mehrere Snapshots auf demselben Volume haben, lösen Sie jedes Mal, wenn Sie in einen Block auf dem Haupt-Volume 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 dazu führen, dass auf dem Server eine Reihe von Berechnungen durchgeführt werden, um herauszufinden, welcher Block für einen Zugriff bereitgestellt werden muss.
Wenn Sie einen Snapshot löschen, löscht LVM nur 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 einer niedrigeren Ebene kopiert. Wenn es sich um den niedrigsten (oder den einzigen) Snapshot 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 das geänderte / unveränderte Mapping verwaltet. Dies ist wahrscheinlich eine bessere Methode, da Sie eine ganze Snapshot-Familie auf Konsistenz prüfen können, was mit Straight-up-LVM nicht möglich ist.
quelle
Sie geben nicht an, ob Sie Linux oder HP-UX verwenden. In HP-UX erstellen Sie ein logisches Volume und hängen es als Momentaufnahme eines anderen logischen Volumes an. Unter Linux erstellen Sie ein logisches Volume als Snapshot-Volume.
Das Entfernen eines Schnappschusses in HP-UX erfolgt durch Umhängen des Volumes. In Linux wird das logische Volume mit lvremove entfernt.
In jedem Fall sind die Änderungen das einzige, was in Ihrem Schnappschuss gespeichert wird. Je länger der Schnappschuss verfügbar ist, desto mehr Änderungen werden gespeichert - und es besteht die Möglichkeit, dass er aufgefüllt wird, wenn er nicht die richtige Größe hat oder nicht freigegeben wird.
Der Datenträgerzugriff auf ein Snapshot-Volume ist langsamer als auf ein normales Volume. Sie müssen das berücksichtigen.
quelle
LVM-Snapshots sind ineffizient. Je mehr Snapshots vorhanden sind, desto langsamer wird das System.
Ich unterstütze nur xfs als das, 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.
Beim Schreiben kopieren wird verwendet, um den Speicherplatz effizient zu nutzen.
Sie haben ein Dateisystem auf einem logischen Datenträger erstellt, auf dem Platz für die Snapshots ist.
Dies ist ein Beispiel aus der FAQ
quelle