Inhaltsverzeichnis
Virtualisierung Gast-Systeme Snapshot
WICHTIG - Der Installation zugrunde liegendes Gast-Dateisystem muss „qcow2“ sein !!!
Nachfolgend soll gezeigt werde, wie ein Gast-Systen innerhalb der Virtualisierungsumgebung - KVM/Qemu - über den „Snapshot“-Mechanismus
- ein „Snapshot“ erstellt wird
- der Zustand zu dem „Snapshot“ wiederhergestellt wird
- ein „Snapshot“ gelöscht wird
Snapshot
Ein „Snapshot“ speichern den Zustand der gesamten virtuellen Maschine (CPU, Speicher, Geräte und beschreibbare Datenträger). Auf diese Weise können Änderungen am System rückgängig gemacht werden. Ältere QEMU-Versionen speichern einen „Snapshot“ in einer separaten Datei oder mehreren separaten Dateien.
Ab der QEMU (qemu-kvm) Version 0.9.0 erfolgt die Speicherung eines „Snapshots“ direkt auf die virtuellen Festplatten-Image. Voraussetzung dazu ist, dass zumindest eines der eingebundenen Festplatten-Images im Format qcow2 vorliegt.
Voraussetzungen
Um zu überprüfen, welche qemu-kvm
Version installiert ist, kann z.B. nachfolgender Befehl verwendet werden:
# yum info qemu-kvm | grep Version Version : 0.12.1.2
Um festzustellen, ob zumindest eines der eingebundenen Festplatten-Images im Format qcow2 vorliegt, kann nachfolgender Befehl verwendet werden (Der Name des Images lautet in diesem Beispiel vmltest.img
):
# qemu-img info /var/lib/libvirt/images/vmltest.img image: /var/lib/libvirt/images/vmltest.img file format: qcow2 virtual size: 20G (20971520000 bytes) disk size: 1.1G cluster_size: 65536
WICHTIG - Es ist wichtig, dass hier file format: qcow2
erscheint!
Shell: virsh
Der Befehl virsh
, ist ein Werkzeug zum Verwalten virtueller Maschinen.
HINWEIS - Der Befehl virsh
hat den Vorteil, das er auch innerhalb einer ssh
Verbindung zum Host-System genutzt werden kann!
virsh
ist ein Teil des Libvirt-Projekts, das eine Befehlssammlung zur Verfügung stellt, mit denen sowohl Teile des Host-Systems, sowie auch Teile des Gast-System gesteuert werden können. Es stellt gewissermaßen die Befehlssätze in der shell
zur Verfügung.
Nachfolgender Befehl, listet die Möglichkeiten von virsh
in Bezug auf den Mechanismus „Snapshot“ auf:
# virsh help snapshot Snapshot (help keyword 'snapshot'): snapshot-create Create a snapshot from XML snapshot-create-as Create a snapshot from a set of args snapshot-current Get or set the current snapshot snapshot-delete Delete a domain snapshot snapshot-dumpxml Dump XML for a domain snapshot snapshot-edit edit XML for a snapshot snapshot-info snapshot information snapshot-list List snapshots for a domain snapshot-parent Get the name of the parent of a snapshot snapshot-revert Revert a domain to a snapshot
snapshot-create
Dazu sollen zuerst die Möglichkeiten des Befehls snapshot-create
mit nachfolgendem Befehl aufgelistet werden:
# virsh help snapshot-create NAME snapshot-create - Create a snapshot from XML SYNOPSIS snapshot-create <domain> [<xmlfile>] [--redefine] [--current] [--no-metadata] [--halt] [--disk-only] [--reuse-external] [--quiesce] [--atomic] [--live] DESCRIPTION Create a snapshot (disk and RAM) from XML OPTIONS [--domain] <string> domain name, id or uuid [--xmlfile] <string> domain snapshot XML --redefine redefine metadata for existing snapshot --current with redefine, set current snapshot --no-metadata take snapshot but create no metadata --halt halt domain after snapshot is created --disk-only capture disk state but not vm state --reuse-external reuse any existing external files --quiesce quiesce guest's file systems --atomic require atomic operation --live take a live snapshot
Nachfolgendes Beispiel zeigt, wie ein „Snapshot“ für ein Gast-System (Domain) mit dem Namen, hier vmltest
erstellt werden kann:
# virsh snapshot-create vmltest Domain snapshot 1379080157 created
HINWEIS - Dies kann einige Zeit, je nach Größe des Gast-Systems (Domain) dauern!
HINWEIS - Während der Erstellung eines „Snapshots“, wird das Gast-System (Domain) pausiert!
Nachfolgender Befehl listet die erstellten „Snapshots“ für ein Gast-System (Domain) auf:
# virsh snapshot-list vmltest Name Creation Time State ------------------------------------------------------------ 1379080157 2013-09-13 15:49:17 +0200 running
Es wird eine XML-Datei im Verzeichnis, hier für das Gast-System vmltest
(Domain)
/var/lib/libvirt/qemu/snapshot/vmltest/
mit dem Namen 1379080157.xml (was mit nachfolgendem Befehl abgefragt werden kann)
# ll /var/lib/libvirt/qemu/snapshot/vmltest/1379080157.xml -rw------- 1 root root 2485 Sep 13 15:52 /var/lib/libvirt/qemu/snapshot/vmltest/1379080157.xml
erzeugt.
Die Daten werden, wie schon erwähnt, an das Image angehängt!
snapshot-revert
HINWEIS - Zu Demonstrationszwecken, soll im home
-Verzeichnis des Benutzers root
eine Datei angelegt werden!
Dies erfolgt mit nachfolgendem Befehl:
[root@vmltest ~]# touch /root/Testdatei.txt
Nachfolgender Befehl, listet das home
-Verzeichnis des Benutzers root
auf:
[root@vmltest ~]# ll total 20 -rw-------. 1 root root 1963 Sep 13 14:25 anaconda-ks.cfg -rw-r--r--. 1 root root 9277 Sep 13 14:25 install.log -rw-r--r--. 1 root root 3161 Sep 13 14:24 install.log.syslog -rw-r--r-- 1 root root 0 Sep 13 16:03 Testdatei.txt
Jetzt sollen zuerst die Möglichkeiten des Befehls snapshot-revert
mit nachfolgendem Befehl aufgelistet werden:
# virsh help snapshot-revert NAME snapshot-revert - Revert a domain to a snapshot SYNOPSIS snapshot-revert <domain> [<snapshotname>] [--current] [--running] [--paused] [--force] DESCRIPTION Revert domain to snapshot OPTIONS [--domain] <string> domain name, id or uuid [--snapshotname] <string> snapshot name --current revert to current snapshot --running after reverting, change state to running --paused after reverting, change state to paused --force try harder on risky reverts
WICHTIG - Bevor snapshot-revert
ausgeführt werden kann, muss das Gast-System (Domain) heruntergefahren werden!
Dies kann mit nachfolgendem Befehlen durchgeführt werden:
[root@vmltest ~]# shutdown -h now
oder auch, wenn der acpid
-Daemon/Dienst installiert ist und läuft:
# virsh shutdown vmltest Domain vmltest is being shutdown
Falls das Gast-System (Domain) nicht heruntergefahren ist, erscheint nachfolgende Fehlermeldung:
... error: revert requires force: Target device address type none does not match source pci
Nachfolgendes Beispiel zeigt, wie ein „Snapshot“ für ein Gast-System (Domain) mit dem Namen, hier vmltest
und dem „Snapshot“-Namen 1379080157
wiederhergestellt werden kann:
# virsh snapshot-revert vmltest 1379080157
HINWEIS - Standardmäßig wird das Gast-System (Domain) anschließend gestartet!
Nachfolgender Befehl, listet das home
-Verzeichnis des Benutzers root
erneut auf:
[root@vmltest ~]# ll total 20 -rw-------. 1 root root 1963 Sep 13 14:25 anaconda-ks.cfg -rw-r--r--. 1 root root 9277 Sep 13 14:25 install.log -rw-r--r--. 1 root root 3161 Sep 13 14:24 install.log.syslog
HINWEIS - Die zuvor zu Demonstrationszwecken angelegte Datei, ist nicht mehr vorhanden!
Nachfolgender Befehl listet erneut die erstellten „Snapshots“ für ein Gast-System (Domain) auf:
# virsh snapshot-list vmltest Name Creation Time State ------------------------------------------------------------ 1379080157 2013-09-13 15:49:17 +0200 running
HINWEIS - Der erstellte „Snapshot“ ist immer noch vorhanden!
snapshot-delete
Jetzt sollen zuerst die Möglichkeiten des Befehls snapshot-delete
mit nachfolgendem Befehl aufgelistet werden:
# virsh help snapshot-delete NAME snapshot-delete - Delete a domain snapshot SYNOPSIS snapshot-delete <domain> [<snapshotname>] [--current] [--children] [--children-only] [--metadata] DESCRIPTION Snapshot Delete OPTIONS [--domain] <string> domain name, id or uuid [--snapshotname] <string> snapshot name --current delete current snapshot --children delete snapshot and all children --children-only delete children but not snapshot --metadata delete only libvirt metadata, leaving snapshot contents behind
Nachfolgendes Beispiel zeigt, wie ein „Snapshot“ für ein Gast-System (Domain) mit dem Namen, hier vmltest
und dem „Snapshot“-Namen 1379080157
gelöscht werden kann:
# virsh snapshot-delete vmltest 1379080157 Domain snapshot 1379080157 deleted
Nachfolgender Befehl listet die erstellten „Snapshots“ für ein Gast-System (Domain) auf:
# virsh snapshot-list vmltest Name Creation Time State ------------------------------------------------------------
Die erstellte XML-Datei im Verzeichnis, hier für das Gast-System vmltest
(Domain)
/var/lib/libvirt/qemu/snapshot/vmltest/
mit dem Namen 1379080157.xml (was mit nachfolgendem Befehl abgefragt werden kann)
# ll /var/lib/libvirt/qemu/snapshot/vmltest/ total 0
existiert nicht mehr, das Verzeichnis jedoch schon!