Virtuelle Maschinen in VMware Player/Workstation über HTTP streamen

    Die VMware Workstation wartet nach dem Donload der .vmx-Datei auf den manuellen Start der VM.Seit der Version 6.5 bietet die VMware Workstation ein kaum beachtetes und ein nur unvollständig dokumentiertes Feature namens VM Streaming. Es dient dazu, den Inhalt einer vmdk-Datei von einem Web-Server über HTTP herunterzuladen. Dabei handelt es um keinen ordinären Download, vielmehr kann die VM bereits starten, während der Code noch im Hintergrund über das Netz kommt. Wenn eine VM immer wieder auf verschiedenen PCs benötigt wird, ist dies eine interessante Alternative zum lokalen Speichern auf allen Rechnern.

    Bevor eine virtuelle Maschine auf einem Web-Server bereitgestellt werden kann, müssen einige Vorbereitungen getroffen werden. Die Dokumentation der Workstation 7 (S. 229) nennt in diesem Zusammenhang:

    • Alle Snapshots einer VM müssen gelöscht werden;
    • die virtuellen Festplatten (vmdk) sollten mit dem Virtual Disk Manager komprimiert werden, um sie für Streaming zu optimieren;
    • auf dem Web-Server muss KeepAlive aktiviert sein und im Fall des IIS ein Timeout von mehr als 300 Sekunden eingestellt werden;

    Danach kann man laut Dokumentation angeblich die VM auf den Web-Server hochladen und starten. In der Praxis muss man jedoch noch einige Hürden aus dem Weg räumen, bis man beginnen kann.

    Für Streaming optimierten vmdk-Typ verwenden

    Der Hinweis, man möge die vmdk komprimieren, wirft Rätsel auf, sobald man die Optionen des Virtual Disk Manager studiert. Ein Schalter für die Kompression ist nicht vorhanden, einzig eine Defragmentierung käme in Frage. Tatsächlich geht es jedoch um die Konvertierung in den neuen Typ 5 virtueller Festplatten, der für das Streaming optimiert ist:

    vmware-vdiskmanager.exe -r sourceDisk.vmdk -t 5 destinationDisk.vmdk

    Lokale Pfade aus der .vmx-Datei entfernen

    Bevor man anschließend die virtuelle Maschine zum Web-Server hochlädt, muss man noch die Pfade für die virtuellen Laufwerke in der .vmx-Datei anpassen. Diese weisen als absolute Pfade auf die lokale Instanz einer vmdk- oder ISO-Datei, die auf dem Web-Server an diesem Ort normalerweise nicht zu finden sind.

    Wenn die virtuelle Festplatte wie üblich im gleichen Verzeichnis liegt wie die .vmx-Datei, dann sollte man den kompletten Pfad entfernen und nur den Dateinamen stehen lassen. In diesem Fall erstellt die Workstation die URL zur vmdk selbständig, indem sie http://host/verzeichnis/ vorne an den Dateinamen anhängt.

    MIME-Types für .vmx und .vmdk registrieren

    Für die .vmx- und .vmdk-Dateien müssen eigene MIME-Types auf dem Web-Server registriert werden.Anschließend ist es wichtig, dass man auf dem Web-Server die .vmx und .vmdk-Dateien als eigene MIME-Types registriert. Verwendet man die Internet Information Services, dann kann man unter der Default Web Site auf das Symbol MIME-Typ klicken und für beide Dateiendungen den Typ application/octet-stream verwenden.

    Die Konfiguration des Verbindungstimeout versteckt sich übrigens im rechten Panel unter Erweiterte Einstellungen => Verbindungslimits, hier sind 400 Sekunden ein angemessener Wert. HTTP Keep-Alive ist beim IIS standardmäßig aktiviert, die Einstellung dafür verbirgt sich im IIS-Manager unter HTTP-Antwortheader => Gemeinsam genutzte Header festlegen.

    Streaming von der Kommandozeile starten

    Wenn schließlich der Web-Server konfiguriert und die VM hochgeladen ist, kann man sie von der Workstation oder dem Player aus starten. Das klappt jedoch nicht auf der grafischen Oberfläche, sondern man muss dazu auf die Kommandozeile wechseln:

    vmware.exe http://host/verzeichnis/vm.vmx

    bzw. für den Player

    vmplayer.exe http://host/verzeichnis/vm.vmx

    Während die Workstation nur die Metadaten von der .vmx-Datei einliest und auf den manuellen Start der VM wartet, legt der Player sofort los und führt die VM direkt aus.

    Änderungen können lokal gespeichert werden

    Beim Herunterfahren der VM will die Workstation wissen, ob die Änderungen lokal gespeichert werden sollen.Die vom Web-Server gestreamten Daten werden in einem lokalen Verzeichnis zwischengespeichert. Möchte man nach Beendigung der Arbeitssitzung die VM herunterfahren, fragt die Workstation, ob man die Änderungen speichern oder verwerfen möchte.

    Entscheidet man sich für das Behalten, dann bleibt im lokalen Verzeichnis ähnlich wie bei einem Snapshot nur die Differenz zur Original-VM zurück. Beim nächsten Aufruf wird die vmdk wieder vom Server nachgeladen.

    Möchte man die VM nach dem Übertragen vom Server vollständig lokal vorhalten, dann führt man über das Menü den Befehl VM => Save for Offline Use aus. Damit nabelt man sich vom Web-Server ab und kann die VM rein lokal ausführen.

    Virtuelle Maschinen elegant verteilen

    Über HTTP heruntergeladene VMs lassen sich permanent lokal einrichten und offline nutzen.Beide Varianten bieten eine interessante Möglichkeiten für die Distribution von virtuellen Maschinen, sobald sie auf mehreren PCs genutzt werden sollen. Die Online-Variante hat den Vorteil, dass man nur eine Kopie der VM zentral verwalten und aktualisieren muss (wobei unklar ist, wie sich die Änderungen an der Original-VM mit den lokal gespeicherten Differenzen vertragen).

    Bevorzugt man dagegen lokal gespeicherte VMs, ist das VM Streaming über HTTP ebenfalls ein eleganterer Verteilungsmechanismus als das Kopieren von einem Netzlaufwerk.

    Keine Kommentare