Security ist ein stets aktuelles Thema in der IT. Deshalb widmet sich das ADMIN-Magazin 04/2012 speziell Sicherheitsaspekten und gibt Antworten auf die Fragen: ... (mehr)

Eingefroren

Bei der Erzeugung eines Snapshots wird auch der Zustand der virtuellen Maschine gespeichert (inklusive aller CPU-Register, eines Abbilds des RAM und so weiter). Diese Daten werden in einem eigenen Segment innerhalb der QCOW2-Datei gespeichert. Die Libvirt-Dokumentation spricht in diesem Zusammenhang von VM-Snapshots. Während der Ausführung von »snapshot-create« wird die virtuelle Maschine vorübergehend angehalten. Sie läuft dann aber weiter.

Wenn man mit dem Virsh-Kommando »snapshot-revert« einen älteren Snapshot aktiviert, wird nicht nur die Image-Datei in den damaligen Zustand versetzt, sondern auch die virtuelle Maschine. Sie läuft also an der Stelle weiter, an der sie sich befand, als der Snapshot erstellt wurde.

Leider dauert das Erstellen von QCOW2-Snapshots relativ lange, wenn das Caching aktiv ist. Wenn Sie auf das Caching nicht verzichten möchten, können Sie QCOW2-Snapshots mit dem Kommando »snapshot-create --disk-only« auch ohne Speicherung des RAM-Abbilds erzeugen. Das ist wesentlich schneller, hat aber den Nachteil, dass die virtuelle Maschine bei der Nutzung eines Snapshots nicht im bisherigen Zustand fortgesetzt werden kann, sondern neu gestartet werden muss. Die virtuelle Maschine verhält sich damit wie ein Rechner, der plötzlich ausgeschaltet wurde.

LVM-Snapshots

Eine Alternative zu QCOW2-Snapshots sind LVM-Snapshots. Diese Variante kommt natürlich nur dann infrage, wenn Sie die Image-Dateien in einem Logical Volume speichern, oder wenn Sie ein Logical Volume direkt als virtuellen Datenträger verwenden. Die Administration von LVM-Backups erfolgt vollkommen losgelöst von KVM beziehungsweise von den Libvirt-Werkzeugen durch das LVM-Kommando »lvcreate« . Anders als bei QCOW2-Snapshots besteht deswegen auch keine Möglichkeit, das Speicherabbild der virtuellen Maschine zu sichern. LVM-Snapshots von laufenden virtuellen Maschinen verhalten sich daher wie QCOW2-Snapshots mit der Option »--disk-only« .

Grundsätzlich ist es einfach, ein Backup einer virtuellen Maschine durchzuführen: Sie fahren die virtuelle Maschine hinunter, kopieren die Image-Datei beziehungsweise lesen das Logical Volume aus und starten die Maschine dann neu. Diese Art des Backups ist für den Server-Einsatz aber ungeeignet: Die virtuellen Maschinen sollen selbstverständlich auch während eines Backups weiterlaufen. Umgekehrt ist es aber zwecklos, ein Logical Volume oder eine Image-Datei im laufenden Betrieb einfach auszulesen: Das Volume respektive die Datei würde sich während der Erstellung der Sicherung ändern, die resultierende Backup-Datei wäre inkonsistent und damit unbrauchbar.

Snapshots bieten einen Ausweg aus diesem Dilemma. Dabei gibt es drei Varianten: QCOW2-Snapshots, LVM-Snapshots für ein Logical Volume, das direkt als KVM-Datenträger verwendet wird, oder LVM-Snapshots für ein Logical Volume, das ein Dateisystem mit KVM-Image-Dateien enthält. Die Listings 2 , 3 und 4 fassen die Kommandos zusammen, mit denen Sie für jede dieser Varianten ein Backup durchführen beziehungsweise die virtuelle Maschine aus dem Backup wiederherstellen. Bei den Varianten 3 und 4 lautet der Name der Volume Group jeweils »vg1« . Bei der Variante 4 gehe ich zusätzlich davon aus, dass sich das Verzeichnis »/var/lib/libvirt/images« direkt im Logical Volume »lv-images« befindet.

Listing 2

Backup eines QCOW2-Image

 

Listing 3

Backup eines LV-Datenträgers

 

Listing 4

Image-Datei im Dateisystem in einem LV

 

Die QCOW2-Variante ist am sichersten. Hier wird nämlich nicht nur der Datenträger selbst gesichert, sondern auch der Zustand der virtuellen Maschine zum Zeitpunkt des Backups. Das macht aber die Wiederherstellung aufwendiger, weil auch das RAM-Abbild wieder korrekt in das Libvirt-System eingespielt werden muss.

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023