Wie funktioniert das Snapshoting von virtuellen Maschinen?


16

Da ich seit über einem Jahrzehnt eine Software zur Laufwerksabbildung verwende, ist es mir ein Rätsel, dass virtuelle Maschinen in Sekundenschnelle erstellt und wiederhergestellt werden können, während die Laufwerksabbildung häufig Stunden in Anspruch nimmt.

Ich kann einen Snapshot einer VM erstellen, auf einem anderen Betriebssystem neu installieren, dann eine Wiederherstellung durchführen und auf magische Weise innerhalb von Sekunden meine alte VM in dem Zustand sichern, in dem sie sich zuvor befand.

Wie kann das passieren? Was macht der VM-Host tatsächlich mit der VM, die dies ermöglicht?

Antworten:


16

Wenn Sie einen Snapshot erstellen, werden alle am ursprünglichen Image der virtuellen Festplatte vorgenommenen Änderungen nicht direkt am Image vorgenommen, sondern in eine neue (Snapshot-) Datenträgerdatei geschrieben. Diese Aktion ist so schnell, weil nicht das gesamte Image der virtuellen Festplatte kopiert werden muss, da beim Kopieren das Prinzip des Schreibens angewendet wird (nur geänderte, dh geschriebene Blöcke werden in das Snapshot-Image geschrieben). Beachten Sie, dass das Snapshot-Image größer wird, wenn Sie mehr und mehr Daten auf Ihrem ursprünglichen virtuellen Festplatten-Image ändern (das zum Zeitpunkt der Aufnahme des Snapshots unverändert bleibt). Es wird höchstwahrscheinlich viel kleiner sein als das Originalbild, aber im schlimmsten Fall wird es genau die gleiche Größe haben (wenn alle Blöcke geändert wurden).

Mit diesem neuen Schnappschussbild können Sie zwei Aktionen ausführen:

  1. Schnappschuss verwerfen : sehr schnelle Aktion. Der Virtual Machine Manager löscht einfach die Snapshot-Image-Datei und gibt die Kontrolle über das ursprüngliche Disk-Image oder einige der vorherigen Snapshots zurück
  2. Snapshot zusammenführen : Virtual Machine Manager führt geänderte Blöcke (dh Snapshot-Image) mit dem Original-Image zusammen. Diese Aktion wird einige Zeit in Anspruch nehmen, je nachdem, wie viel Blöcke vom Originalbild geändert wurden. Das schlimmste Szenario ist wiederum, dass das gesamte Originalbild überschrieben wird, falls alle Blöcke aus dem Originalbild nach der Erstellung eines Schnappschusses geschrieben wurden.

Alle oben beschriebenen Verfahren funktionieren auch für mehrere Schnappschüsse. In diesem Fall kann das Originalbild ein Schnappschuss sein, und der nächste Schnappschuss kann auf einen Block in diesem (ersten) Schnappschuss verweisen. Auf diese Weise können Sie viele Schnappschüsse erstellen, die Sie problemlos verwerfen oder zusammenführen können.


1
Das Verwerfen eines Schnappschusses kann, wie jedes Löschen von Bildern, sehr langsam sein, wenn das Löschen nach dem Löschen aktiviert ist. Es ist eine Sicherheitsfunktion, mit der der von einem Image oder Snapshot belegte Speicherplatz gelöscht werden kann, bevor er für andere VMs freigegeben wird. Andernfalls können bei Blocklesen auf niedriger Ebene möglicherweise die Daten der zuvor verwendeten VM gelesen werden. Und jede Virtualisierungslösung, die diese Funktion nicht bietet, weist eine große Sicherheitslücke auf
dyasny

Ich habe versucht, das Szenario des Erstellens mehrerer Snapshots zu erklären und zu erläutern, wie die Änderungen mit jedem Snapshot beibehalten werden. Lesen
Piyush Chordia,

5

Mit einem Snapshot muss Ihre Virtualisierungssoftware vier Dinge im Auge behalten: CPU-Status, RAM, Konfiguration (wie viele Netzwerkkarten in der VM?) Und Festplatte. Ich ignoriere die ersten drei Dinge, da es sich nicht um große Datenmengen handelt. Die Software kann einfach Kopien der relativ kleinen Datenstrukturen erstellen und diese in einer Datei speichern. Es bleibt also nur die Momentaufnahme der Festplatte zu erklären.

Zunächst einmal sieht die VM als Festplatte nur eine Reihe von Dateien auf dem Host-Dateisystem. Um einen Snapshot zu erstellen, nimmt die Software der virtuellen Maschine zu einem bestimmten Zeitpunkt die Festplatte der VM, bewahrt sie auf, öffnet eine neue leere Festplattendatei und führt bei jedem nachfolgenden Festplattenzugriff ein Copy-on-Write- Schema durch.

Angenommen, Ihre Festplattendatei ist BigVM.disk. Sie haben einen Schnappschuss erstellt und jetzt benennt Ihre VM-Software Ihre Festplatte in BigVM-s1.disk um und erstellt dann eine neue leere BigVM.disk. Wenn Ihre VM ausgeführt wird, werden alle Leseanforderungen über BigVM.disk gesendet. Wenn diese Datei keinen Eintrag für den von Ihrer VM gewünschten Teil der Festplatte enthält, werden die Daten von BigVM-s1.disk zurückgegeben. Beim Schreiben werden die Daten auf BigVM.disk anstelle von BigVM-s1.disk geschrieben. Bei einem zukünftigen Lesevorgang in denselben Sektor werden die Daten von BigVM.disk anstelle des in BigVM-s1.disk enthaltenen ursprünglichen Snapshots zurückgegeben. BigVM-s1.disk enthält den Festplattenstatus Ihrer VM ab Ihrem Snapshot, während BigVM.disk alle Unterschiede zu Ihrer Festplatte seit diesem Snapshot enthält.

Was passiert, wenn Sie zu einem älteren Schnappschuss zurückkehren? Die VM-Software wirft den Inhalt von BigVM.disk weg und startet erneut mit einer neuen leeren BigVM.disk, die noch auf BigVM-s1.disk verweist.


2

Es werden nur die Unterschiede in Dateien geschrieben, die zum Zeitpunkt des Snapshots geändert wurden, nicht die gesamte Festplatte der virtuellen Maschine. Wie Unix Diff und Patch, mit Ausnahme einer anspruchsvolleren Version, die sich auf Binärebene unterscheidet und andere Details Ihrer virtuellen Maschine kennt.


1

Zumindest in VMware-Snapshots ist der Snapshot im Grunde ein Signal an den VMX, einen neuen Prüfpunkt für Festplattenschreibvorgänge und den Rechnerstatus zu starten. Abhängig davon, ob Ihre VM aus- oder eingeschaltet ist, müssen Sie beim Wiederherstellen des Snapshots nur alles löschen, was nach diesem Checkpoint passiert ist. Andernfalls werden alle Festplattensektoren Ihrer VM beim Schreiben kopiert. Wenn Sie also eine Hot-Snapshot-Wiederherstellung durchführen, müssen nur die Sektoren neu geschrieben werden, die sich seit der Erstellung des Snapshots geändert haben. Deshalb ist es schneller.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.