Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:virtualisierung_gast-systeme_snapshot

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!

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/virtualisierung_gast-systeme_snapshot.txt · Zuletzt geändert: 2013/09/13 16:54 von klaus