-
Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind dabei, entsprechend den Vorschriften des Gebrauchsmustergesetzes, lediglich Vorrichtungen wie in den beigefügten Schutzansprüchen definiert, jedoch keine Verfahren. Soweit nachfolgend in der Beschreibung gegebenenfalls auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich der beispielhaften Erläuterung der in den beigefügten Schutzansprüchen unter Schutz gestellten Vorrichtung oder Vorrichtungen.
-
HINTERGRUND
-
Ein Computer kann als virtuelle Maschine fungieren. Der Computer kann z. B. die Konfiguration eines Computers emulieren, der sich von der Konfiguration des Servers unterscheidet. Ein Host-Server mit Linux als Betriebssystem kann z. B. ein Programm ausführen, das einen Server emuliert, der ein Windows-Betriebssystem und Windowskompatible Anwendungen bootet und ausführt. Derselbe Server kann nachfolgend oder gleichzeitig ein Programm ausführen, das einen persönlichen Computer emuliert, der MAC-OS und MAC-OS-kompatible Anwendungen bootet und ausführt.
-
Die identische virtuelle Maschine kann auf mehreren Hostrechnern oder zu unterschiedlichen Zeiten verwendet werden. In dieser Hinsicht kann die virtuelle Maschine in den Speicher des Hostrechners geladen und gebootet werden und eine Momentaufnahme des Speichers kann für den zukünftigen Gebrauch auf demselben oder auf anderen Rechnern abgespeichert werden. Wenn eine virtuelle Maschine mit den gleichen Eigenschaften benötigt wird, kann das Image direkt in den Hostrechner geladen werden, z. B. von einem Plattenspeicher, anstatt die Maschine vollständig neu zu booten.
-
KURZE ZUSAMMENFASSUNG
-
In einem Aspekt wird eine Methode bereitgestellt, bei der eine erste und eine zweite virtuelle Maschine in einen ersten bzw. einen zweiten Computerspeicher geladen und ein erstes bzw. ein zweites Image der virtuellen Maschinen abgespeichert wird. Ein Satz Unterschiede zwischen dem ersten und dem zweiten Image kann dann ermittelt werden. Das erste Image kann dann in den Speicher eines dritten Computers geladen und die Werte des dritten Speichers entsprechend dem Satz Unterschiede verändert werden.
-
In einem weiteren Aspekt wird ein System bereitgestellt, das einen oder mehrere Prozessoren und einen Speicher beinhaltet, in dem Daten und Anweisungen gespeichert sind und wo die Anweisungen vom Prozessor ausgeführt werden können. Die Daten können ein erstes Image beinhalten, das für eine erste virtuelle Maschine mit einem ersten Betriebssystem steht, das zumindest virtuell zu booten begonnen hat. Die Anweisungen können den Zugriff auf eine Datei beinhalten, die die Unterschiede zwischen dem ersten Image und einem zweiten Image angeben, wobei das zweite Image eine zweite virtuelle Maschine mit einem zweiten Betriebssystem darstellt, das zumindest virtuell zu booten begonnen hat. Das erste Image kann dann entsprechend der Datei verändert werden.
-
In noch einem weiteren Aspekt wird ein System bereitgestellt, das einen oder mehrere Prozessoren und Speicher beinhaltet, in denen Anweisungen gespeichert sind, die vom Prozessor ausgeführt werden können, wobei zu diesen Anweisungen gehören: die Erstellung der ersten, zweiten und dritten virtuellen Maschine und das Speichern des ersten, zweiten bzw. dritten Images der virtuellen Maschinen auf der Basis der mit den virtuellen Maschinen verbundenen Speicherwerte; Vergleich des ersten Images und des zweiten Images zur Erzeugung des ersten Satzes Unterschiede zwischen diesen beiden Images; Vergleich des zweiten Images und des dritten Images zur Erzeugung eines zweiten Satzes Unterschiede zwischen diesen beiden Images; Erstellung einer Kopie der ersten virtuellen Maschine auf der Basis des ersten Images und abspeichern der Kopie im Speicher; Veränderung der Kopie der ersten virtuellen Maschine entsprechend dem ersten Satz Unterschiede und Veränderung der veränderten Kopie der ersten virtuellen Maschine entsprechend dem zweiten Satz Unterschiede.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 ist ein Funktionsschaltbild eines Systems entsprechend einem Aspekt des Systems und des Verfahrens.
-
2 ist ein Funktionsschaltbild von Vergleichen zwischen Image-Disks und virtuellen Images.
-
3 ist ein Diagramm eines Prozesses zur Umwandlung einer ersten virtuellen Maschine in eine zweite virtuelle Maschine.
-
4 ist ein Diagramm eines Prozesses zur Umwandlung einer ersten virtuellen Maschine in eine dritte virtuelle Maschine.
-
5 ist ein Fließdiagramm eines Prozesses entsprechend einem Aspekt des dargestellten Systems.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Übersicht
-
In bestimmten Aspekten bezieht sich die Technologie auf den Austausch einer ersten virtuellen Maschine gegen eine zweite virtuellen Maschine im selben Speicher auf der Basis der Unterschiede zwischen den Maschinen. Zum Beispiel kann eine erste virtuelle Maschine gebootet und ein Image der ersten virtuellen Maschine erstellt werden, bevor oder nachdem die in Betrieb befindliche virtuelle Maschine vollständig gebootet wurde. Ein zweite virtuelle Maschine kann ebenfalls gebootet und ein zweites Image in ähnlicher Weise erstellt werden. Die so erstellten Images können verglichen und ihre Unterschiede zum späteren Gebrauch abgespeichert werden. Zum Beispiel kann die erste virtuelle Maschine in den Hauptspeicher (RAM) geladen und in Erwartung einer Anforderung zum Zugriff auf die erste virtuelle Maschine zum Gebrauch bereit gemacht werden. Geht stattdessen eine solche Anforderung zum Zugriff auf die zweite virtuelle Maschine ein, können die Unterschiede zwischen dem ersten und zweiten Image abgerufen und auf das Image der ersten virtuellen Maschine angewendet werden, die sich gegenwärtig im Speicher befindet. Die zweite virtuelle Maschine kann dann einsatzbereit sein, ohne dass die zweite virtuelle Maschine gebootet oder das Image der gesamten zweiten virtuellen Maschine in den Speicher geladen werden muss.
-
Beispielsysteme
-
1 stellt ein mögliches System 100 dar, in dem die hierin offengelegten Aspekte implementiert werden können. In diesem Beispiel kann System 100 Computergeräte 110 und 120 beinhalten. Der Rechner 110 kann einen oder mehrere Prozessoren 112, den Speicher 114 und sonstige Bauteile enthalten, die typischerweise in Mehrzweckrechnern vorhanden sind. Obwohl 1 den Prozessor 112 und den Speicher 114 funktional als Block 110 darstellt, können das System und die hierin beschriebenen Verfahren mehrere Prozessoren, Speicher und Geräte enthalten, die im selben physischen Gehäuse enthalten sein können oder auch nicht. Zum Beispiel können verschiedene Verfahren, die nachstehend als eine einzige Komponente (z. B. Prozessor 112) umfassend beschrieben werden, mehrere Komponenten (z. B. mehrere Prozessoren in einer lastverteilenden Serverfarm) umfassen. In gleicher Weise können verschiedene Verfahren, die nachstehend als verschiedene Komponenten (z. B. Vorrichtung 110 und Vorrichtung 120) umfassend beschrieben werden, eine einzige Komponente umfassen (z. B. anstelle von Vorrichtung 120, die eine nachstehend beschriebene Bestimmung durchführt, kann Vorrichtung 120 die relevanten Daten zur Verarbeitung an Vorrichtung 110 senden und die Ergebnisse der Bestimmung zur weiteren Verarbeitung oder Anzeige empfangen).
-
Speicher 114 von Computergerät 110 kann Informationen speichern, die von Prozessor 112 abgerufen werden können, einschließlich der Anweisungen 116, die durch den Prozessor 112 ausgeführt werden können. Der Speicher 114 kann zudem Daten beinhalten, die von dem Prozessor 112 abgerufen, bearbeitet oder gespeichert werden können. Der Speicher 114 und die sonstigen hierin beschriebenen Speicher können jede Art von Speicher sein, der für den jeweiligen Prozessor zugängliche Informationen speichern kann, z. B. ein Festplattenlaufwerk, ein Solid-State-Laufwerk, eine Speicherkarte, RAM 119, DVD, beschreibbarer Speicher oder nur lesbarer Speicher. Darüber hinaus kann der Speicher ein verteiltes Speichersystem beinhalten, wobei Daten, wie die Daten 150, auf mehreren verschiedenen Speichervorrichtungen gespeichert werden, die sich physisch an demselben oder an unterschiedlichen geografischen Standorten befinden können. Darüber hinaus kann eine Datei aus Daten bestehen, die gemeinsam oder in Teilen aus einem Speicher an einen anderen Speicher übertragen werden. Eine Datei kann z. B. aus einer Sammlung von Dateien oder aus einer gesamten oder einem Teil einer Datenbank stehen.
-
Die Anweisungen 116 können ein beliebiger Satz von Anweisungen sein, die durch den Prozessor 112 oder ein sonstiges Computergerät auszuführen sind. Insofern können die hierin verwendeten Begriffe „Anweisungen”, „Schritte” und „Programme” austauschbar verwendet werden. Die Anweisungen können in Object Code Format zur sofortigen Verarbeitung durch den Prozessor oder in einer anderen Computergerätesprache gespeichert werden, die Skripte oder Sammlungen von unabhängigen Quellcode-Modulen beinhaltet, die auf Anforderung interpretiert oder vorab kompiliert werden. Funktionen, Verfahren und Routinen der Anweisungen werden unten ausführlicher erklärt. Der Prozessor 112 kann jeder herkömmliche Prozessor sein, wie eine im Handel erhältliche CPU. Alternativ kann der Prozessor eine dedizierte Komponente wie ein ASIC oder ein anderer hardwarebasierter Prozessor sein.
-
Die Daten können gemäß den Anweisungen 116 durch das Computergerät 110 abgerufen, gespeichert oder verändert werden. So können beispielsweise, obwohl der hierin beschriebene Gegenstand nicht durch eine beliebige bestimmte Datenstruktur beschränkt ist, die Daten in Computerregistern, in einer relationalen Datenbank als Tabelle, die viele verschiedene Felder und Datensätze aufweist oder XML-Dokumenten gespeichert werden. Die Daten können außerdem in einem beliebigen computergerätlesbaren Format wie, aber nicht beschränkt auf, Binärwerten, ASCII oder Unicode formatiert sein. Des Weiteren können die Daten beliebige Informationen umfassen, die ausreichend sind, um die relevanten Informationen zu identifizieren, wie Zahlen, beschreibenden Text, proprietäre Codes, Zeiger, Referenzen auf Daten, die in anderen Speichern wie anderen Netzwerkstandorten gespeichert sind oder Informationen, die von einer Funktion verwendet werden, um die relevanten Daten zu berechnen, umfassen.
-
Das Computergerät 110 kann sich an einem Knoten eines Netzwerks 160 befinden und entweder direkt oder indirekt mit anderen Knoten des Netzwerks 160 kommunizieren können. Obwohl nur einige Computergeräte in 1 dargestellt sind, kann ein typisches System eine große Anzahl verbundener Computergeräte beinhalten, wobei sich jedes unterschiedliche Computergerät an einem unterschiedlichen Knoten des Netzwerks 160 befindet. Das Netzwerk 160 und dazwischenliegende Knoten, die hierin beschrieben sind, können unter Verwendung verschiedener Protokolle und Systeme vernetzt sein, sodass das Netzwerk Teil des Internets, Word Wide Web, spezifischer Intranets, Langstreckennetze oder lokaler Netzwerke sein kann. Das Netzwerk kann Standardkommunikationsprotokolle, wie Ethernet, WLAN und HTTP, Protokolle, die proprietär für ein oder mehrere Unternehmen sind und verschiedene Kombinationen der vorstehenden nutzen. Als ein Beispiel kann Computergerät 110 ein Webserver sein, der imstande ist, mit Computergeräte 120 über das Netzwerk 160 zu kommunizieren. Das Computergerät 120 kann ein Client-Computergerät sein und Server 110 kann Informationen unter Verwendung eines Netzwerks 160 anzeigen und einem Benutzer 125 von Vorrichtung 120 über ein Display 122 Informationen bereitstellen. Obwohl bestimmte Vorteile erzielt werden, wenn Informationen wie oben beschrieben übertragen oder empfangen werden, sind andere Aspekte des hierin beschriebenen Gegenstands nicht auf eine bestimmte Art der Übertragung von Informationen beschränkt.
-
Das Computergerät 120 kann ähnlich dem Server 110 mit einem Prozessor, Speicher und Anweisungen wie oben beschrieben konfiguriert sein. Das Computergerät 120 kann ein persönliches Computergerät sein, das zur Verwendung durch einen Benutzer vorgesehen ist und das alle Bauteile beinhalten kann, die üblicherweise in Verbindung mit einem persönlichen Computergerät verwendet werden, z. B. eine zentrale Verarbeitungseinheit (CPU), einen Speicher, der Daten und Anweisungen speichert, eine Anzeige wie Anzeige 122 (z. B. einen Monitor mit einem Bildschirm, einem berührungsempfindlichen Bildschirm, einem Projektor, einem Fernseher oder einem anderen Gerät, das zur Anzeige von Informationen betrieben werden kann), sowie einem Eingabegerät 124 (z. B. einer Maus, einer Tastatur, einem Berührungsbildschirm, einem Mikrofon usw.). Das Computergerät 120 kann außerdem ein mobiles Computergerät enthalten, das Daten drahtlos über ein Netzwerk wie das Internet mit einem Server austauschen kann. Nur beispielhaft kann Computergerät 120 ein Mobiltelefon oder eine Vorrichtung wie ein funkfähiger PDA, ein Tablet-PC, ein tragbares Computergerät oder ein Netbook sein, die in der Lage sind, Informationen über das Internet abzurufen. Die Vorrichtung kann konfiguriert sein, mit einem Betriebssystem wie Googles Betriebssystem Android, Microsoft Windows oder Apple iOS zu funktionieren. Computergeräte gemäß den hierin beschriebenen Systemen und Verfahren können andere Vorrichtungen beinhalten, die imstande sind, Instruktionen zu verarbeiten und Daten an und von Menschen und/oder anderen Computer, einschließlich Netzwerkcomputern, denen eine lokale Speichermöglichkeit fehlt und Set-Top-Boxen für Fernseher, zu übertragen. Beispielverfahren
-
Im Folgenden werden Operationen entsprechend vielfältigen Aspekten der Erfindung beschrieben. Es sollte sich verstehen, dass die folgenden Operationen nicht in der nachstehend beschriebenen genauen Reihenfolge durchgeführt werden müssen. Vielmehr können verschiedene Schritte in beliebiger Reihenfolge oder auch gleichzeitig gehandhabt werden.
-
Eine erste virtuelle Maschine kann durch virtuelles Booten eines Betriebssystems, z. B. eines Betriebssystems, das sich vom Betriebssystem der virtuellen Maschine unterscheidet, in den Speicher des Hostrechners geladen werden. Nur als Beispiel und wie in 1 gezeigt, kann der Prozessor 112 auf einem Linux-Server 110 auf den externen Speicher 150 zugreifen und das Image-Disk A 152 auslesen, wobei das Image-Disk A Daten vom gleichen Typ enthält, wie sie ein physisches Gerät von einem Festplattenlaufwerk auslesen würde, um ein Betriebssystem zu booten. Das Image-Disk A kann z. B. die gleichen Daten enthalten, wie sie auf der Festplatte eines persönlichen Computers gespeichert sind, der beim Hochfahren Windows 7 booten soll. Zu den Anweisungen 116 kann ein Hypervisor gehören, der ein virtuelles Festplattenlaufwerk (VHD) 186 erstellt, das anfänglich im Wesentlichen den Daten entspricht, die im Image-Disk A enthalten sind. Der Hypervisor kann dann virtuell ein Betriebssystem booten (z. B. das Betriebssystem A 184), indem er Dateien vom VHD ausführt und die daraus resultierenden Daten und Prozesse des Betriebssystems 184 im Host-RAM 119 speichert. Wie bereits weiter oben angemerkt, ist das System nicht auf einen einzigen Speichertyp beschränkt. Obwohl VHD 186 in 1 so veranschaulicht wird, dass sie in den Host-RAM geladen wird, können entweder alle oder ein Teil der in der VHD enthaltenen Daten außerhalb des Host-RAMs gespeichert werden, z. B. auf einem physischen Festplattenlaufwerk des Servers 110.
-
Unter gewissen Umständen können eine oder mehrere Anwendungen automatisch zusammen mit dem Betriebssystem geladen werden. Die virtuelle Maschine kann z. B. einen Computer emulieren, auf dem Windows 7 und SQL Server laufen. In diesem Beispiel können auch Anwendungen „A” 182 in das RAM 119 von VHD 186 geladen werden.
-
Nachdem die virtuelle Maschine vollständig oder teilweise erstellt wurde, kann der Prozessor eine Kopie der Teile des physischen Speichers des Hosts erstellen, die Teile der virtuellen Maschine speichern. Zum Beispiel kann, nachdem das virtuelle Betriebssystem A virtuell gebootet und Anwendungen A geladen und ausgeführt wurden, der Prozessor 112 eine Momentaufnahme der Werte machen, die unter den Adressen des Host-RAM 119 gespeichert sind, die von den VHD 186, dem virtuellen Betriebssystem A und den Anwendungen A belegt werden. Obwohl im Rest dieser Darstellung davon ausgegangen wird, dass das Image der virtuellen Maschine in diesem Stadium erzeugt wird, kann das Image einer virtuellen Maschine auch zu anderen Zeitpunkten erstellt werden, z. B., und nur als Beispiel, nachdem das virtuelle Betriebssystem den Bootprozess begonnen hat, jedoch bevor das virtuelle Betriebssystem vollständig gebootet hat, nachdem das virtuelle Betriebssystem gebootet wurde und bevor die Anwendungen geladen wurden; nachdem die Anwendungen geladen wurden, jedoch vor Beginn der Ausführung der Anwendungen, sowie sonstige Stadien, bei denen die virtuelle Maschine mit einiger Wahrscheinlichkeit in einen Zustand versetzt wird, der zukünftige Ladezeiten verringert und der die Präferenzen des Benutzers wiedergibt. Darüber hinaus können u. U. nicht alle der in den Speicher geladenen Komponenten der virtuellen Maschine in dem Image enthalten sein. Das Image der virtuellen Maschine kann z. B. VHD 186 ausschließen.
-
Die Kopie des Images der virtuellen Maschine kann zum späteren Abrufen gespeichert werden. Das Image 156 der virtuellen Maschine, das ein Image der virtuellen Maschine A („VM-A”) 180 ist, kann z. B. in dem externen Speicher 150 zum späteren Zugriff durch den Server 110 gespeichert werden.
-
Sobald das Image der ersten virtuellen Maschine gespeichert wurde, kann der Prozess für eine weitere virtuelle Maschine wiederholt werden. Der Prozessor 112 kann z. B. den Server 110 veranlassen, auf den externen Speicher 150 zuzugreifen und das Image-Disk B 154 zu laden. Das Image-Disk B kann Daten vom selben Typ enthalten, wie sie ein physisches Gerät von einem Festplattenlaufwerk laden würde, um ein Betriebssystem zu booten, wie z. B. das Betriebssystem B. Beispielsweise könnte das Betriebssystem B Windows 8 sein und die virtuelle Maschine B („VM-B”) könnte auf diesem Betriebssystem eine Kopie von Visual Studio laufen lassen. Das Image von VMB kann erstellt und als Image 158 im Speicher 150 gespeichert werden.
-
Unterschiede zwischen den beiden Images der virtuellen Maschine lassen sich dann ermitteln. In vielen Fällen wird es zwischen den Images der virtuellen Maschinen weniger Unterschiede geben als zwischen den Image-Disks, aus denen sie erstellt wurden. Solange die Dateien z. B. auffindbar sind, können die verschiedenen Dateien eines Betriebssystems und der Anwendungen physisch an beliebiger Stelle auf einem Plattenlaufwerk gespeichert sein, und somit auch an beliebiger Stelle des Disk-Images. Darüber hinaus kann, selbst wenn zwei verschiedene zu emulierende physische Maschinen dasselbe Betriebssystem haben, jede Maschine über unterschiedliche Anwendungskonfigurationen und Einstellungen verfügen, in denen die Gliederung ihrer Plattenlaufwerke sich erheblich unterscheidet. Andererseits können viele Betriebssysteme, wenn sie während des Bootprozesses einmal in den Speicher geladen wurden, hinsichtlich der Speicherzuordnung relativ konsistent sein. Zum Beispiel können die Betriebssysteme unabhängig von dem Ort, an dem die Dateien auf der Platte gespeichert sind, und unabhängig von der genauen physischen Maschine, auf der das OS läuft, trotzdem den Kernel an einen weitgehend festen Ort laden, die gleichen Gerätetreiber in der gleichen Reihenfolge initialisieren und in der Anwendungsschicht Speicher in der gleichen Weise zuweisen.
-
2 stellt ein Diagramm der möglichen Unterschiede zwischen den Image-Disks und dem Image der oben beschriebenen virtuellen Maschinen dar. Bei den Image-Disks A und B 201–02 kann davon ausgegangen werden, dass sie eine Reihe von Sektoren einschließen, die Datensequenzen unter bestimmten Adressen enthalten. Die Länge der Boxen mit der Bezeichnung „dd” in der Darstellung 203 gibt das Ausmaß der Unterschiede zwischen den jeweiligen Sektoren der beiden Image-Disks wieder. Auch wenn sich die Betriebssysteme auf den beiden Disks z. B. stärker unterscheiden mögen, kann der Ort, an dem die jeweiligen Informationen im ersten Sektor von Image-Disk A und im ersten Sektor von Image-Disk B gespeichert sind, relativ groß sein, wie durch die relative Länge des Blocks ddl dargestellt wird. (Der Größenvergleich soll lediglich der Veranschaulichung dienen.)
-
Die von den Image-Disks gebooteten Images der virtuellen Maschinen A und B mögen sich voneinander weniger unterscheiden als die Image-Disks. Ähneln sich z. B. Betriebssystem A und Betriebssystem B der Images der virtuellen Maschinen 204–05, kann die Speicherzuordnung im RAM typischerweise sehr ähnlich sein, mit dem Ergebnis relativ geringer Unterschiede, wie im vmdl in Schaubild 206 dargestellt. Wenn jedes Betriebssystem in der Folge die gleiche Anwendung al lädt, beginnend an derselben Adresse im RAM, kann der Unterschied zwischen den Images der Anwendungen sogar noch geringer ausfallen. Wenn jedes Betriebssystem dann eine andere Anwendung in den Speicher lädt, z. B. Anwendung a2 und Anwendung a3, können die Unterschiede vmd3 zwar vergleichsweise groß ausfallen, insgesamt wird es aber relativ wenige Unterschiede zwischen den Images der virtuellen Maschinen im Vergleich zu den Image-Disks geben.
-
Ein Satz Unterschiede, die zwischen den beiden Images der virtuellen Maschinen ermittelt werden, können zum späteren Gebrauch gespeichert werden usw. Beispielsweise kann ein binärer Diff-Algorithmus, z. B. bsdiff oder Googles Courgette, dafür verwendet werden, eine Datei zu erzeugen, in der die unterschiedlichen Adressen angegeben werden, in denen sich die beiden Images der virtuellen Maschinen unterscheiden, wenn sie im RAM des Host-Gerätes gespeichert werden. Die Differenzdatei kann die Werte von entweder einer oder aus beiden Images der virtuellen Maschinen an diesen Adressen angeben. Zur Veranschaulichung werde die Differenzdatei 159 betrachtet, in der nur diejenigen Adressen gespeichert sind, an denen sich das Image der virtuellen Maschine A 156 und das Image der virtuellen Maschine B 158 unterscheiden, sowie der Wert des Images der virtuellen Maschine B an dieser Adresse.
-
Die Differenzdatei kann dazu verwendet werden, die eine virtuelle Maschine gegen die andere auszutauschen. Zum Beispiel kann VM-A eine relativ beliebte Konfiguration aus Betriebssystem und Anwendung darstellen und somit vom VMA-Image 156 vorsorglich in das RAM 119 geladen werden, falls ein Endnutzer eine virtuelle Maschine mit dieser Konfiguration anfordert.
-
Das System kann in der Folge eine Anforderung erhalten, eine andere virtuelle Maschine zu laden als die gegenwärtig in das Host-Gerät geladene. Zum Beispiel kann der Nutzer 125 eine Anfrage an den Server 110 senden, um auf eine virtuelle Maschine mit der Konfiguration von VM-B zuzugreifen. Als Reaktion auf eine solche Anforderung kann der Prozessor 112 beim externen Speicher 150 anfragen, ob dieser eine Differenzdatei zur Umwandlung der gegenwärtig geladenen virtuellen Maschine (VM-A) in die neuerdings angeforderte virtuelle Maschine (VM-B) enthält. Falls nicht, kann der Server 110 eine vollständige Momentaufnahme laden, von der aus die neuerdings angeforderte virtuelle Maschine gebootet wird, oder ggf. das Image einer bereits gebooteten virtuellen Maschine.
-
In dem Beispiel in 1 ermittelt der Server eine Differenzdatei, die zum Austausch der gegenwärtig gespeicherten virtuellen Maschine gegen die neuerdings angeforderte virtuelle Maschine verwendet werden kann, z. B. VM Differenzdatei 159. Daher kann der Server 110, anstatt das gesamte Image der virtuellen Maschine B 158 neu zu laden, die Differenzdatei 159 laden und die in der Datei enthaltenen Informationen dazu verwenden, nur diejenigen Teile des Speichers 119 zu ändern, die für die Konvertierung des Images der virtuellen Maschine A in das Image der virtuellen Maschine B erforderlich sind.
-
Nachdem die Änderungen erfolgt sind, ist die neuerdings angeforderte virtuelle Maschine ggf. einsatzbereit für den Benutzer 125. Der Benutzer 125 kann z. B. die Eingabe 124 und die Anzeige 122 des monetären Computergerätes 120 verwenden, um über das Netzwerk 160 mit der virtuellen Maschine B zu kommunizieren.
-
Das System kann mehrere Differenzdateien enthalten, die verschiedene Paare von Konversionen virtueller Maschinen darstellen. Das System kann z. B., wie im oberen Diagramm in 3 gezeigt und weiter oben erklärt, eine Differenzdatei 159 für die Konvertierung von VM-A 310 in VM-B 330 speichern. Das System kann auch eine zweite Differenzdatei 340 zur Konvertierung der im Speicher gespeicherten virtuellen Maschine von VM-B 330 in VM-A 310 speichern. Weitere Differenzdateien können zur Konvertierung anderer virtueller Maschinen ebenfalls gespeichert werden, z. B. von VM-A in eine dritte virtuelle Maschine, die sich von VM-B unterscheidet, oder zur Konvertierung von einer damit nicht zusammenhängenden vierten virtuellen Maschine in eine damit in keiner Beziehung stehenden fünfte virtuelle Maschine.
-
In manchen Aspekten kann das System eine virtuelle Maschine durch eine andere ersetzen, indem zuerst eine virtuelle Maschine geladen wird, die weder die gegenwärtig geladene virtuelle Maschine noch die zuletzt angeforderte virtuelle Maschine ist. Zum Beispiel kann das System, wie in 4 gezeigt, zwei Differenzdateien enthalten: die Datei 159, die die zu ändernden Speicherwerte darstellt, um den Speicher von VM-A 310 in VM-B 330 umzuwandeln, und die Datei 420, die die zu ändernden Speicherwerte darstellt, um VM-B durch die virtuelle Maschine C („VM-C”) 440 zu ersetzen. In dieser Hinsicht kann das System, wenn es eine Anfrage empfangt, die auf dem Server 110 gehostete virtuelle Maschine von VM-A in VM-C ändern, und wenn das System erkennt, dass es über keine Differenzdatei zwischen VM-A und VM-C verfügt, bestimmen, ob es irgendwelche anderen Differenzdateien vergleichen kann, um die Konversion durchzuführen. Das System kann z. B. überprüfen, ob es zwei oder mehr Differenzdateien gibt, die nacheinander angewendet werden können, um das gewünschte Image zu erhalten. In dieser Hinsicht kann das System nach der Ermittlung der Dateien 320 und 420 zunächst VM-A in den Speicher laden, die Differenzdatei 320 anwenden, um eine Kopie von VM-B zu erhalten, und dann die Differenzdatei 420 anwenden, um eine Kopie von VMC zu erhalten. Dieser Aspekt kann besonders vorteilhaft sein, wenn verschiedene Versionen desselben Betriebssystems geladen werden, z. B. das Durchprobieren früherer Versionen eines Betriebssystems durch Anwendung der entsprechenden Differenzdatei zwischen jeder Version, bis die gewünschte Version in den Speicher geladen ist.
-
In einem weiteren Aspekt kann das System automatisch Dateien ermitteln und erzeugen, in denen die Unterschiede zwischen Images virtueller Maschinen gespeichert sind. Beispielsweise kann das System 100 hunderte verschiedener Images virtueller Maschinen speichern. Das System 100 kann die beliebtesten Images ermitteln, indem es die Häufigkeit verfolgt, mit der diese angefordert werden. Das System kann dann automatisch Differenzdateien erzeugen, indem es eine bestimmte Anzahl Paare der beliebtesten Images virtueller Maschinen auswählt. Das System kann des Weiteren die beliebtesten Übergängen zwischen Images virtueller Maschinen verfolgen. Das System kann z. B. für jedes gegebene Image einer virtuellen Maschine eine Differenzdatei zwischen diesem Image und demjenigen Image erstellen, das nach dem jeweiligen Image mit der größten Wahrscheinlichkeit geladen wird.
-
Wie oben angemerkt, läuft auf der ersten und zweiten virtuellen Maschine nicht dasselbe Betriebssystem. VM-A kann z. B. einen persönlichen Computer emulieren, auf dem Windows 8 läuft, der von einem einzelnen Benutzer genutzt werden soll, und VM-B kann einen Linux-Internetserver emulieren.
-
Obwohl der größte Teil der obigen Beschreibung die meisten Prozesse so beschreibt, dass sie auf demselben Host-Server 110 laufen, kann der Prozess mithilfe verschiedener Speicher auf unterschiedlichen Computergeräten ablaufen. VM-A kann z. B. an einem Netzwerkknoten 160 erstellt und gespeichert und das resultierende Image der virtuellen Maschine an einem zweiten Knoten gespeichert werden; VM-B kann an einem dritten Knoten erstellt und gespeichert und das resultierende Image der virtuellen Maschine an einem vierten Knoten gespeichert werden; der Vergleich der Images kann an einem fünften Knoten erfolgen und an einem sechsten Knoten gespeichert werden usw.
-
5 ist ein Fließdiagramm einiger der oben beschriebenen Prozesse. Am Block 501 wird die erste virtuelle Maschine (VM-A) gebootet. Am Block 502 wartet das System darauf, bis VM-A bereit ist und, sobald sie bereit und am Block 503 ist, wird ein Image von VM-A gespeichert. Am Block 503 wird die erste virtuelle Maschine B (VM-B) gebootet. Am Block 504 wartet das System darauf, dass VM-B bereit ist und, sobald sie bereit und am Block 506 ist, wird ein Image von VM-B gespeichert. An den Blöcken 507–08 werden die Unterschiede zwischen dem Image von VM-A und dem Image von VM-B ermittelt und gespeichert. Am Block 509 wird das Image von VM-A geladen. Eine Anforderung für VM-B geht ein (Block 510) und die Differenzdatei zwischen den Images von VM-A und VM-B wird ermittelt (Block 511). Am Block 512 werden die in der Differenzdatei ermittelten Unterschiede auf das im Speicher befindliche Image von VM-A angewendet, und am Block 514 erhält der Anforderer Zugriff auf VM-B, die sich jetzt anstelle von VM-A im Speicher befindet. Die Anforderung kann von einem Endnutzer oder von einem weiteren Gerät stammen, der/das die von VM-B bereitgestellten Dienste benötigt.
-
Da diese und weitere Variationen und Kombinationen der vorstehend erörterten Merkmale zur Anwendung kommen können, ohne sich von der Erfindung laut Definition in den Ansprüchen zu entfernen, ist die vorstehende Beschreibung der Ausführungsformen als Veranschaulichung aufzufassen und nicht zur Einschränkung der durch die Ansprüche definierten Erfindung. Es versteht sich darüber hinaus, dass die Bereitstellung von Beispielen der Erfindung (sowie auch Teilsätze, die mit Begriffen wie „wie etwa”, „z.°B.”, „einschließlich” und dergleichen formuliert werden) nicht als Einschränkung der Erfindung auf diese Beispiele zu verstehen ist; vielmehr sollen diese Beispiele lediglich dazu dienen, einige der vielen möglichen Aspekte zu veranschaulichen.