KVM -Gast -Schnappschüsse mit libvirt

KVM -Gast -Schnappschüsse mit libvirt
VMs haben viele Anwendungsfälle, von denen eine die Kapazität von VMs als Testmaschinen ist. Sie können in einer VM experimentieren, Patches anwenden und Upgrades testen, bevor das Gleiche auf Ihren Produktionssystemen oder Ihrer Workstation durchgeführt wird. Sie können auch Einweg -VMs verwenden, deren persönliche oder sensible Daten für Malware -Tests wie der größte Teil der Sicherheitsgemeinschaft fehlen, stellen Sie einfach sicher, dass das Netzwerk des VM von Ihrem Host und LAN isoliert ist.

Es wird jedoch lästig, das Betriebssystem in Ihrem VM immer wieder neu zu installieren. Es behindert Ihren Workflow und Sie benötigen daher einen zuverlässigen Weg, um:

  1. Machen Sie zu einem bestimmten Zeitpunkt einen Schnappschuss Ihrer VM.
  2. Sie haben einen Mechanismus, um den Schnappschuss zu verwenden, um Ihre VM in einen zuvor Arbeitszustand zurückzukehren.

Ich habe zuvor besprochen, wie Schnappschüsse in VirtualBox funktionieren, und diesmal wollte ich Snapshots innerhalb von libvirt besprechen. Ich werde Qemu-KVM als Backend Hypervisor für meine libvirt-Installation verwenden. Ihr Fall könnte unterschiedlich sein, aber die Gesamtfunktionalität und -Rinform sollte nicht sehr unterschiedlich sein, da libvirt das Beste versucht, die Frontend -Schnittstelle zu standardisieren.

Wenn Sie mit Libvirt und Qemu-KVM nicht vertraut sind, finden Sie hier eine Anleitung, wie Sie KVM auf Debian einrichten können.

Erstellen eines Schnappschusss

Es gibt verschiedene Möglichkeiten, mit denen Sie Schnappschüsse Ihrer VM aufnehmen und verwalten können. GUI-Anwendungen wie Virt-Manager und Ovirt bieten die Funktionalität und Sie können sogar benutzerdefinierte Skripte schreiben, die mit der libvirt-API mit der gesamten Snapshots für Sie verbunden sind.

Ich werde jedoch die Virsh -Befehlszeilenschnittstelle verwenden, um zu zeigen, wie Sie Ihre VMs und ihre Schnappschüsse verwalten können. Dieses Dienstprogramm verfügt über fast alle Standard -Libvirt -Installationen und sollte für eine Vielzahl von Verteilungen verfügbar sein.

Für die folgenden Befehle ersetzen Sie den Namen meines VM, VM1, durch den tatsächlichen Namen Ihres VM. Libvirt bezieht sich oft auf virtuelle Maschine und Behälter als Domänen. Wenn Sie also eine Fehlermeldung sehen, die vorschlägt, beispielsweise "Domänenname angeben". Verwenden Sie den folgenden Befehl, um alle VMs unter Libvirts Management aufzulisten.

$ virsh list -alle

Um einen Snapshot eines VM zu machen, rennen Sie einfach:

$ virsh snapshot-create vm1

Und um alle Schnappschüsse eines bestimmten VM aufzulisten, verwenden Sie den Befehl:

$ virsh snapshot-list vm1
Nennen Sie den Zustand der Erstellung
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 Laufen

Sie können sehen, dass der Schnappschuss erstellt wird. Standardmäßig ist der Name des Snapshots seine Erstellungszeitstempel (die Anzahl der Sekunden seit der Unix -Epoche). Die Spalte Zeit für die Schöpfungszeit zeigt die Zeit der Schöpfung auf eine menschliche lesbare Weise und die staatliche Spalte zeigt den Zustand der VM, wenn sie sparsam war. Als dieser VM lief der Status des Snapshots auch "läuft", aber das bedeutete nicht, dass der Schnappschuss selbst ausgeführt wird. Es wird sich mit der Zeit nicht ändern. Diese Funktion ist auch als Live -Snapshot bezeichnet und ist ziemlich wertvoll, da Sie es Ihnen ermöglichen, einen Schnappschuss Ihrer VM ohne Ausfallzeiten aufzunehmen. Die KVM -Gäste arbeiten zumindest gut mit Live -Schnappschüssen.

Bei bestimmten Workloads müssen Sie jedoch die VM anhalten, bevor sie geschnappt werden. Dies stellt sicher, dass die Daten im Snapshot konsistent sind und keine halb geschriebene Datei oder fehlende Daten vorhanden sind. Wenn die in Ihrem VM ausgeführte Arbeitsbelastung einen hohen IO hat, müssen Sie wahrscheinlich die VM ausschalten, bevor Sie den Snapshot erstellen. Lassen Sie uns auf diese Weise einen erstellen.

$ virsh stilldown vm1

Domain VM1 wird heruntergefahren

$ virsh snapshot-create vm1

Domain Snapshot 1556533868 Erstellt

root@deb: ~# virsh snapshot-list vm1
Nennen Sie den Zustand der Erstellung
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 Laufen
1556533868 2019-04-29 16:01:08 +0530 Abschluss
$ virsh starten vm1
Domain VM1 begann

Wenn Sie die Snapshots als TimeStamp benennen möchten, verwenden Sie den Befehl:

$ virsh snapshot-create-as vm1-name snap1
Nennen Sie den Zustand der Erstellung
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 Laufen
1556533868 2019-04-29 16:01:08 +0530 Abschluss
SNAP1 2019-05-02 22:27:48 +0530 Laufen

Offensichtlich müssen Sie es nicht nennen, Snap1, Sie können einen bequemen Namen auswählen.

Zurück aus einem Schnappschuss zurückkehren

Um einen Schnappschuss zu machen, nützt es nicht, wenn Sie nicht darauf zurückkehren können. Falls Sie zu einem Snapshot zurückkehren müssen, verwenden Sie einfach den Befehl:

$ virsh snapshot-revert $ vmname $ snapshot-name

Der Name kann der Zeitstempel oder der Benutzer zugewiesen werden, der dem Snapshot gegeben wurde.

Stellen Sie sicher, dass in Ihrem aktuellen VM keine wichtigen Daten vorhanden sind oder wenn es etwas Wichtigeres gibt, dann haben Sie eine Momentaufnahme Ihres aktuellen VM und kehren Sie dann zu einem älteren Schnappschuss zurück.

Vorteile von Qcow2

Mit dem Kopie-auf-Schreiben-Mechanismus von QCOW2-Dateien kann jeder Schnappschuss einen sehr kleinen Platz einnehmen. Der Speicherplatz eines Schnappschusses nimmt mit der Zeit zu, da das laufende Bild vom Snapshot abweist. Solange Sie nicht viele Daten umschreiben, benötigen Ihre Schnappschüsse nur ein paar MBS Speicherplatz.

Es bedeutet auch, dass die Schnappschüsse auch sehr schnell sind. Da der Mechanismus des Kopierschreibens nur den Zeitstempel markieren muss, wenn der Schnappschuss aufgenommen wurde. Die in der QCOW2 -Datei geschriebenen Datenblöcke, nachdem der Snapshot nicht dazu gehört, aber die älteren tun dies. Es ist so einfach das. Meine Testbank verwendet eine Festplatte von 5400 U / min, die auf dem Höhepunkt seiner Leistung keineswegs ist. Es dauert immer noch weniger als ein paar Sekunden, um eine Live -Schnappnahme an eine VM auf dieser Festplatte zu machen.

Abschluss

Wie bei den meisten Versorgungsunternehmen Libvirt- und Virsh-verwandte Versorgungsunternehmen bietet die Snapshot-Funktionalität eine sehr flexible Schnittstelle mit Unternehmensfunktionen wie Live-Snapshotting sowie den Vorteilen des Kopierschreibsmechanismus.

Die Standardnamenkonvention erleichtert Shell -Skripte auch, alte Schnappschüsse regelmäßig zu entfernen und sie durch neuere zu ersetzen. Einer meiner älteren Artikel zu OpenZFS -Snapshots und Snapshot -Richtlinien kann auch für Ihren KVM -Gast angewendet werden. Weitere Informationen zum Virsh Snapshot -Dienstprogramm erhalten Sie mit dem Befehl virsh hilf Snapshot. Die Hilfeseite ist sehr klein, präzise und leicht zu verstehen.