Benutzer-Werkzeuge

Webseiten-Werkzeuge


it-wiki:linux:lvm_index:lvm-snapshots

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
it-wiki:linux:lvm_index:lvm-snapshots [2023/02/10 12:16] – angelegt markoit-wiki:linux:lvm_index:lvm-snapshots [2023/02/11 07:25] (aktuell) – [Konfigurations-Beispiel] marko
Zeile 1: Zeile 1:
 ====== LVM Snapshots ====== ====== LVM Snapshots ======
 **LVM Snapshots** ermöglichen einfache Point-In-Time Kopien von [[it-wiki:linux:lvm_index:lvm-grundlagen#logical_volumes_lvs|LVM Logical Volume]] (LVs). Bei Snapshots handelt es sich jedoch nicht um echte Kopien des Original-LVs. Nur wenn Daten des Original-LV nach der Erstellung eines Snapshots verändert werden, werden jeweils zuvor die ursprünglichen Daten in den Snapshot kopiert (Copy-on-Write). **LVM Snapshots** ermöglichen einfache Point-In-Time Kopien von [[it-wiki:linux:lvm_index:lvm-grundlagen#logical_volumes_lvs|LVM Logical Volume]] (LVs). Bei Snapshots handelt es sich jedoch nicht um echte Kopien des Original-LVs. Nur wenn Daten des Original-LV nach der Erstellung eines Snapshots verändert werden, werden jeweils zuvor die ursprünglichen Daten in den Snapshot kopiert (Copy-on-Write).
 +
 +----
 +===== Funktionsweise und Verwendungen =====
 +Snapshots belegen nur dann denselben Plattenplatz wie deren zugehörige originale LVs, wenn nach dem Erstellen des Snapshots alle Daten des Original-LV verändert werden. Ändern sich nach dem Erstellen nur wenig Daten, reicht auch weniger Platz aus. Man kann daher durchaus einen Snapshot erstellen, der nur 10% der Größe des Original-LVs hat. Wichtig ist dann, den freien Platz des Snapshot-Volumes im Auge zu behalten, da ein voll ausgelastetes Snapshot-Volume unbrauchbar wird (Änderungen gegenüber des Original-LVs können nicht mehr protokolliert werden). Mittels lvs-Befehl kann die Auslastung eines Snapshot-Volumes überprüft werden. Hervorzuheben ist auch, dass Snapshots selbst nicht als Backup-Mittel gedacht sind, da ja nur die Änderungen gespeichert werden. Typischerweise sieht das Backup-Szenario wie folgt aus:
 +
 +  - Snapshot erstellen
 +  - Backup der Daten des Snapshots erstellen - das originale LV kann weiterlaufen und "online" sein.
 +  - Snapshot wieder entfernen, da ansonsten die Verfolgung der Änderungen weiterlaufen würde.
 +
 +Dadurch kann z.B. vermieden werden, dass Server für ein Backup heruntergefahren werden müssen, da der Snapshot die Daten für die Sicherung zur Verfügung stellt.
 +
 +Ein weitere Verwendung von Snapshots wäre für experimentelle Tests, die nicht am original Dateisystem durchgeführt werden soll. Hierbei kann ein Snapshot erstell werden, dieser gemountet und die Tests durchgeführt werden. Somit wird nur der Snapshot verändert und das originale Dateisystem bleibt unverändert.
 +
 +----
 +===== Konfigurations-Beispiel =====
 +In jener Volume Group, für die ein Snapshot erstellt werden soll, muss nicht allokierter Speicherplatz für den Snapshot vorhanden sein. Sollte bereits der gesamte Speicherplatz der Volume Group für Logical Volumes im Einsatz sein, zeigt der Artikel [[it-wiki:linux:lvm_index:lvm-vergroessern|LVM vergrößern]] wie eine Volume Group vergrößert wird.
 +
 +Im folgenden Beispiel stehen noch 2GB zur Verfügung, die für einen Snapshot zum Einsatz kommen:
 +<code bash>
 +root@ubuntu:~# vgdisplay
 +  --- Volume group ---
 +  VG Name               vg00
 +[...]  
 +  VG Size               7.98 GiB   
 +  PE Size               4.00 MiB   
 +  Total PE              2044   
 +  Alloc PE / Size       1533 / 5.99 GiB   
 +  Free  PE / Size       511 / 2.00 GiB   
 +  VG UUID               YTEj9f-9LCT-EOP5-JBEA-YHSz-c0R1-TMzVmy
 +</code>
 +
 +Der vorhandene Platz von 2 GiB in vg00 wird als Snapshot-Volume eingesetzt:
 +<code bash>
 +root@ubuntu:~# lvcreate -l100%FREE -s -n data_snap /dev/vg00/data   
 +  Logical volume "data_snap" created
 +</code>
 +
 +Nun sind die gesamten 2 GiB als Snapshot-LV für das LV "data" verfügbar. Möchte man die 2 GiB nun aber aufteilen, um es für mehrere LVs als Snapshot-LV zu verwenden, muss zuerst data_snap entfernt werden:
 +<code bash>
 +root@ubuntu:~# lvremove /dev/vg00/data_snap  
 +  Do you really want to remove active logical volume data_snap? [y/n]: y   
 +  Logical volume "data_snap" successfully removed
 +</code>
 +
 +Nun ist der vorhandene Platz wieder frei und kann aufgeteilt werden:
 +<code bash>
 +root@ubuntu:~# vgs   
 +  VG   #PV #LV #SN Attr   VSize VFree   
 +  vg00       0 wz--n- 7.98g 2.00g 
 +root@ubuntu:~# lvcreate -l50%FREE -s -n data_snap /dev/vg00/data   
 +  Logical volume "data_snap" created 
 +root@ubuntu:~# vgs   
 +  VG   #PV #LV #SN Attr   VSize VFree   
 +  vg00       1 wz--n- 7.98g 1.00g
 +root@ubuntu:~# lvcreate -l100%FREE -s -n data_snap1 /dev/vg00/data1   
 +  Logical volume "data_snap1" created
 +</code>
 +
 +Werden nun im laufenden Betrieb Daten im Filesystem verändert, so wird dessen ursprünglicher Inhalt zuerst in den Snapshot kopiert. Dieser Block wird auch als "kopiert" in der Exception Table markiert. Seit dem lvm2-Format werden standardmäßig read/write Snapshots erstellt. Greift man nun auf einen Snapshot zu, werden die geänderten Blöcke als "used" in der Exception Table markiert und von nun an niemals kopiert. Bezüglich der Größe des Snapshots dürfen sich im Orignial-Volume "data" maximal 1 GiB ändern, damit der Snapshot nutzbar bleibt. Ändern sich im Original-Volume mehr Daten, wird der Snapshot verworfen und ist verloren.
 +
 +Für die Erstellung einer Sicherung kann der Snapshot wie üblich gemountet und anschließend gesichert werden. Im obigen Beispiel befand sich zum Zeitpunkt der Erstellung von "data_snap" Datei im LV "data", von derer nun ein Snapshot existiert. Diese Datei soll nun gelöscht und dessen Vorhanden-Sein im Snapshot verifiziert werden.
 +<code bash>
 +root@ubuntu:~# mount /dev/vg00/data data
 +root@ubuntu:~# mount /dev/vg00/data_snap data_snap
 +root@ubuntu:~# cd data 
 +root@ubuntu:~/data#
 +  file  lost+found/
 +root@ubuntu:~/data# rm file  
 +root@ubuntu:~/data# cd .. 
 +root@ubuntu:~# cd data_snap/ 
 +root@ubuntu:~/data_snap#
 +  file  lost+found/
 +</code>
 +
 +Die gelöschte Datei ist im Snapshot durchaus noch verfügbar und kann daher auch gesichert oder auch wiederhergestellt werden.
 +
 +\\
 +\\
 +\\
 + --- //[[marko.oldenburg@cooltux.net|Marko Oldenburg]] 2023/02/11 08:25//
it-wiki/linux/lvm_index/lvm-snapshots.1676031377.txt.gz · Zuletzt geändert: 2023/02/10 12:16 von marko