Virtual PC und andere Produkte

Die heutigen Server sind mittlerweile so leistungsfähig, was Prozessor und Speicher angeht, dass eine normale Anwendung diese Leistung nur noch zeitweise nutzen kann. Oftmals ist das System sehr oft "Idle".  Was liegt da näher, als mehrere Server auf einer Hardware zu konsolidieren ?

Damit meine ich nun nicht den "Small Business Server", bei dem auf einem Server nicht nur Windows 2000/2003 und zudem auch jedem Menge andere Produkte parallel installiert sind und damit die Abhängigkeit beeinflussen, sondern den Betrieb von Systemen auf virtuellen PCs.

Lesen Sie dazu einfach die Seite Virtualisierung.

Hier geht es um das Produkt "VirtualPC" und ähnliche Programme, die eine Hardwarevirtualisierung bereit stellen, d.h. einen virtuellen PC auf einem GastPC. Alternativ gibt es auch eine Applikationsvirtualisierung, die auf einem höheren Level ansetzt, d.h. auf dem Betriebssystem selbst den Programmen eigene Umgebungen zuweist.

Produkte

Hierzu notwendig ist eine Software, die auf dem Server läuft und mehrere virtuelle Computer simuliert. Dazu gibt es zwei Hersteller, die im Markt bekannt sind:

XP Mode für Windows 7
http://www.microsoft.com/downloads/details.aspx?FamilyID=FB633E9D-DDBC-4044-BB09-4F99E757064E&displaylang=en

VirtualPC 6.1 (Windows 7)
http://www.microsoft.com/downloads/details.aspx?FamilyID=2B6D5C18-1441-47EA-8309-2545B08E11DD&displaylang=en

Virtual PC2007
http://go.microsoft.com/?linkid=6294111
http://www.microsoft.com/downloads/details.aspx?familyid=04D26402-3199-48A3-AFA2-2DC0B40A73B6&mg_id=10109&displaylang=en
Unterstützt nun auch 64bit Host, Hardwarevirtualisierung und Vista als Gast

VirtualPC 2007 SP1
http://www.microsoft.com/downloads/details.aspx?displaylang=de&FamilyID=28c97d22-6eb8-4a09-a7f7-f6c7a1f000b5

Virtual PC 2004 mit SP1 (kostenfrei)
http://www.Microsoft.com/downloads/details.aspx?FamilyId=6D58729D-DFA8-40BF-AFAF-20BCB7F01CD1&displaylang=en

Virtual Server (/Kostenfrei)
http://www.Microsoft.com/windowsserversystem/virtualserver/software/default.mspx
Virtual Server 2005 R2 SP1
http://www.microsoft.com/downloads/details.aspx?displaylang=de&FamilyID=bc49c7c8-4840-4e67-8dc4-1e6e218acce4
Microsoft Virtual Server 2005 R2 SP1 Update
http://www.microsoft.com/downloads/details.aspx?FamilyID=a79bcf9b-59f7-480b-a4b8-fb56f42e3348&DisplayLang=en

VMRCPlus 1.8.0
http://www.microsoft.com/downloads/details.aspx?FamilyID=80adc08c-bfc6-4c3a-b4f1-772f550ae791&DisplayLang=en
VMRCplus Blog
http://blogs.technet.com/matthts 
http://blogs.technet.com/matthts/archive/2007/06/29/vmrcplus-is-here.aspx
Steuerung des Virtual Server per MMC ohne WebGui etc.

Virtual Machine Additions for Linux
http://www.microsoft.com/downloads/details.aspx?familyid=bf12642f-77dc-4d45-ae4e-e1b05e0a2674

VMware Player
http://www.vmware.com/download/player/
Einfach installieren und vorbereitete virtuelle Maschinen starten.

Sie können VMware auch Online direkt kaufen unter http://www.vmware.com/shop.
Bei der Auswahl der Bezahlung können Sie den Referral Code "VMRC-FRACAR105" angeben, und damit 5% sparen und die MSXFAQ unterstützen.

Beide Produkten "virtualisieren" Systeme, in dem sie in einer "Box" einen eigenständigen PC abbilden. Die Unterschiede beider Lösungen sind auf den ersten Blick minimal.

Software VMware Virtual Server
Grafikkarte Standard VGA
VMware Treiber notwendig
S3
Festplatte IDE und SCSI
Als Datei, Raw, Differenz
IDE und SCSI
Als Datei, Raw, Differenz
Netzwerkkarte AMD PCNet Emulation DEC 2110 Emulation

Beide Produkte gibt es in verschiedenen Varianten.

Einzelplatz VMware Workstation (Win/Linux) Virtual PC (Win/Mac)
Server VMware GSX (Win/Linux) Virtual Server (Win)
Enterprise VMware ESX (noch) kein Gegenstück

Durch die Übernahme eines Teils von Connectix durch Microsoft und den sehr veränderlichen Markt sollten Sie im Moment der Auswahl einen eigenen Vergleich der Produkte durchführen. Beide Hersteller liefern stabile und geeignete Produkte. Ich habe mit VMware Workstation 2.0/3.0 seit mehreren Jahren Erfahrung und Virtual PC ist aktuell meine Testplattform.

Die Einzelplatzversionen unterstützen oftmals USB und sonstige Geräte, sind aber im Speicher beschränkt. Interessant ist, dass die Images innerhalb der Produktlinie austauschbar sind, d.h. einen "Virtuellen PC" kann ich auch unter Virtual Server starten

Einsatzbeispiele

Lange Zeit waren Lösungen wie VMware belächelt, weil die System nicht entsprechend leistungsfähig waren. Mittlerweile ist aber die CPU eines Systems nicht mehr der Engpass und moderne Systeme sind viel zu schnell für den normalen Einsatz als Dateiserver, Mailserver oder Arbeitsplatz. Die Kapazität der Festplatten erlaubt heute ebenso die Bereithaltung mehrerer Instanzen. So ist der Bereich der Servervirtualisierung heute sinnvoll einsetzbar. Einige Beispiele

Grenzen

So elegant Virtuelle Systeme wirken, sie haben auch ihre Einschränkungen. Zwar mögen viele Server in der Regel kaum belastet sein, so gibt es Zeiten, wo jede Sekunde zählt.

Meine eigener Einsatz

Ich selbst nutze Virtual PC und VMWare auf einem IBM R40 Notebook (2,4 GHz, 768 MB RAM) unter Windows XP Professional und fahre darauf zu Testzwecken auch mehrere Server parallel. und könnte mir eine Arbeit ohne diese Möglichkeiten nicht mehr vorstellen. Vorher habe ich drei Jahre mit VMWare Workstation 3.0 z.B. Checkpoint Workshops auf Windows NT4 gefahren und in einer parallelen VM ein SUSE Linux für SATAN genutzt. Insgesamt habe ich meist über zehn VMs für die unterschiedlichsten Einsatzbereiche definiert, die aber nicht alle gleichzeitig aktiv sind. VMs lassen sich recht einfach "einfrieren", so dass diese auch sehr schnell wieder aktiviert werden können.

Performance

Beide Produkte sind vom Prinzip her vergleichbar aber unterscheiden sich in Details, die den Ausschlag für den ein oder anderen Einsatz bedeuten. Ein wichtiger Punkt ist die Performance. Hier habe ich mit DT einen Test gemacht und beide Produkte waren durchweg langsamer als der Start auf dem System selbst. Trotzdem habe ich den Eindruck, dass Microsoft Virtual Server in der Festplattenleistung die Nase etwas vorne hat. Allerdings ist Performance nicht das einzige Entscheidungsmerkmal für den Einsatz von virtuellen Servern. Andere Faktoren wie Verfügbarkeit, Sicherung zählen hier auch. Wichtig ist aber, dass wer allein auf die maximale Performance Wert legt, auch wenn sie nur kurze Zeit abgefordert wird, besser mehrere einzelne Server installiert.

Praxistipps

Durch meinen umfangreichen Einsatz der Virtualisierung von Systemen sind mir so die ein oder anderen Dinge aufgefallen, die den Umgang vereinfachen. Die meisten Tipps beziehen Sich auf Microsoft Virtual Server, sind aber ähnlich auch mit VMware verwendbar

Loopback

Die virtuellen Server können entweder in ihrem "privaten Netzwerk" untereinander kommunizieren oder über eine Bridge mit dem Hauptnetz. Dann ist auch eine Kommunikation zwischen Host und den Servern möglich. Speziell mit einem Notebook, welcher manchmal "offline" ist, ist dann eine Kommunikation zwischen Host und den virtuellen Systemen schwierig. Hier kann man sich bei Virtual Server mit dem Microsoft Loopback Adapter behelfen:

  1. Installiere den Microsoft Loopback Adapter auf dem Host über "Hardware hinzufügen)
  2. Konfigurieren eine eine IP-Adresse (z.B.: 10.10.10.254/255.255.255.0) auf dieser Netzwerkkarte, die nicht im Konflikt mit dem Hausnetzwerk steht
  3. Im Virtual Server musst nun ein virtuelles LAN hinzugefügt werden
    Masterstatus - Virtual Network Manager - Create Network
    Dies könnte so aussehen:

    DHCP kann optional aktiviert werden, sollte aber die statisch vergebene Adresse des Hosts ausschließen
  4. In den VMs muss nun eine Netzwerkkarte auf dieses neue Netzwerk verbunden werden. Die VMs erhalten per DHCP eine IP-Adresse. Statische Adressen können ebenfalls genutzt werden. (Jede VM eine eigene Adresse)
  5. Prüfe in einer DOS-Box auf dem Host mit einem einfachen "PING <Adresse_der_vm>" die Verbindung. Entsprechend kann man mit NET USE * \\10.10.10.1\c$ /user:Administrator Kennwort ein Laufwerk verbinden oder per Terminal Dienste fernsteuern etc.

So kann ich in der VM dynamisch die Konfiguration ändern, so dass auch unterwegs eine Kommunikation zwischen Host und virtuellem Server möglich ist.

Übrigens kann man den Loopback Adapter auch per Kommandozeile installieren:

devcon install %windir%\INF\netloop.inf *msloop

Normal wird VirtualPC in c:\Programme\Microsoft Virtual PC installiert und die virtuellen Maschinen landen im Home-Verzeichnis. Über eine Umgebungsvariable können Sie den Pfad für virtuelle Maschinen vorgeben, z.B.:
MYVIRTUALMACHINES=C:\VM

Unter Windows 7 kann die Installation des Loopback Adapters nur per Kommandozeile gestartet werden:
Start "hdwwiz" und dann manuell Netzwerkkarten von Hersteller "Microsoft" auswählen und den Loopback-Adapter installieren

Masterimages

Sehr schnell hat mich gestört, dass ich einen Test-PC immer in einer VM neu installieren musste. Daher habe ich seht bald entsprechende "Masterimages" erzeugt. Direkt nach der Installation eines "Standardsystems" habe ich dieses herunter gefahren und die virtuelle Festplatte und Konfigurationsdatei eingepackt.

Nach einigen Anläufen habe ich folgende Dinge optimiert:

Dieses Image habe ich dann einfach gepackt. So habe ich universelle Masterimages mit akzeptablen Größen.

Nicht so gute Erfahrungen habe ich mit "Differenz"-Festplatten gemacht. Eine Masterplatte wird dabei "Read-Only" genutzt und der virtuelle PC speichert nur die Änderungen dieser Platte in einer eigenen Datei. Die erhoffte Platzersparnis war nur gering.

Image aktivieren

Wird nun ein neuer Testserver benötigt, durchlaufe ich folgende Schritte:

VirtualPC 2007 Installation

Im Februar 2007 habe ich dann auch Virtual PC 2007 installiert. Vorher war die Deinstallation von Virtual PC 2004 erforderlich. Warum auch immer hat danach die Installation nicht funktioniert. Zwar wurde VirtualPC 2007 installiert aber konnte mangels "Product-ID" nicht gestartet werden.

Nach etwas suchen habe ich aber in "%Temp%/VPCInstallLog.txt" den Fehler gefunden. Das Setup konnte warum auch immer, den Productkey nicht in die Registrierung schreiben. Aber sowohl der Pfad der Registrierung als auch die Product-ID waren im Logfile zu finden und mit RegEdit schnell eingetragen. Suchen Sie einfach nach "ProductKey" und Sie  sollten eine Zeile ähnlich der folgenden finden (Key habe ich unkenntlich gemacht)

"Executing op: ProductInfo(ProductKey={xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx},ProductName=Microsoft Virtual PC 2007,PackageName=Virtual_PC_2007_Install.msi,Language=0,...

Übernehmen Sie den ProductKey einfach ohne die geschweiften Klammen nach:

HKLM/Software/Microsoft/Virtual PC\5.ß\Registration\PID:regSZ=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Fertige Images, Diskettenimages und Programme

Da mittlerweile sowohl VirtualPC, Virtual Server als auch der VMware Player kostenfrei sind, verteilen immer mehr Firmen fertig vorkonfigurierte virtuelle Maschinen als DVD oder sogar zum Download. So können Sie sich die Installation selbst sparen und z.B.: sehr schnell ein Produkt evaluieren. Der Hersteller kann Sie einfach unterstützen, da alle Tests von der gleichen Basis ausgehen.

Images für Virtual PC von Microsoft

Die meisten fertigen VMs von Microsoft sind Evaluationsprodukte, die nach Tagen oder Wochen ablaufen bzw. aktiviert werden können. Zudem sollten Sie vor einer Verbindung an ein Produktivnetz alle zwischenzeitlich erschienenen Patches einspielen.

Eine besondere Sammlung virtueller Maschinen stellt Microsoft den Partnern über die Musterfirma Contoso zur Verfügung. Diese VMs sind quasi Vollversionen mit einem  Musterdatenbestand, welche erste nach mehreren Monaten ablaufen.

Images für VMWare Workstation

Auch VMware nutzt natürlich seine Software als Demoplattform und bietet dazu jede Menge vorgefertigte virtuelle Maschinen an.

Natürlich kann der VMware Importer auch Images von VirtualPC oder anderen Quellen einfach importieren und weiter nutzen. Allerdings müssen Sie dann zumindest die Konfiguration der Netzwerkkarte anpassen.

Hilfsprogramme als Images für Virtual PC und VMware

Fast alle Virtualisierungsprodukte können CDs als ISO-Images oder Diskettenimages einbinden. Daher bietet es sich an, die ein oder anderen Tools einfach über diesen Weg in den VMs bereitzustellen.

risboot.zip
Image der Windows 2000 PXE-Bootdiskette zum Start der virtuellen Maschine mit einem PXE-Rom.

netboot.zip
Abbild einer angepassten NETBOOT-Diskette basierend auf Bart Universal Network Bootdisk (http://www.nu2.nu) Diese Diskette bootet ein einfaches DOS mit NDIS2-Treibern, erkennt eigenständig die Netzwerkkarte, lädt TCP/IP und meldet sich an eine Domäne an. Von dort können Sie dann Ghost oder andere Tools starten, um ein Image der logischen Festplatte zu erstellen.

nullfile.zip
Kleines Turbo Pascal 5.5 Programme, welches die als Parameter angegebene Datei anlegt und mit 00h voll schreibt, bis die Festplatte voll ist und danach die Datei wieder löscht. So werden alle ungenutzten Sektoren mit 00h gefüllt und das VHD-Image der Festplatte kann danach kompaktiert werden.

Trotz Turbo Pascal 5.5 und MS-DOS kann das Programm problemlos auf einem P2,4 GHz und NTFS-Festplatten >2GB genutzt werden. Eine Version, die auch mit großen FAT32-Partitionen klar kommt, habe ich noch nicht erstellt. Auf www.janko.at gibt es ein vergleichbares Programm mit grafischer Oberfläche. Siehe http://www.janko.at/Software/GeloeschteDatenVernichten/

Speziell über die Netboot-Diskette und einen Partitionskopierprogramm ist es mit schon gelungen, virtuelle Server zwischen VMware und Virtual Server zu transferieren.

Updates

Seit April 2006 verschenkt auch Microsoft seinen Virtual Server R2 kostenfrei. Damit stand natürlich auch bei mir ein Update auf der Tagesordnung. Meine Erfahrungen waren sehr gut, wenn man ein paar Randbedingungen beachtet:

Alles in allem waren die Updates reibungslos aber etwas zeitaufwändig, wenn man so viele virtuelle Systeme parallel vorhält.

Virtual Server per Skript steuern.

Für VirtualPC gibt es anscheinend keine Möglichkeit, Befehle per Script auszuführen. Der Virtual Server R2, der kostenfrei verfügbar ist und auch auf Windows XP installierbar ist, bietet jedoch ein COM-Objekt zur Steuerung an. Hier ein Beispiel, um z.B. die Netzwerkbelastung der Systeme auszugeben.

Set vs = CreateObject("VirtualServer.Application")
set vms = vs.VirtualMachines

For Each vm in vms
        Wscript.Echo "Maschinenname: " & vm.Name
        Wscript.Echo "Netzwerk: Bytes gesendet :" & vm.Accountant.NetworkBytesSent
        Wscript.Echo "Netzwerk: Bytes empfangen:" & vm.Accountant.NetworkBytesReceived
        Wscript.Echo
Next

Die weiteren Objekte lassen sich ganz einfach mit einem COM-Browser, z.B. aus Visual Studio Express anzeigen.

Über diese Objekt kann man wunderbar feststellen, welche virtuelle Systeme gerade laufen. Sie können natürlich die Systeme damit natürlich auch einfach starten.

Interessant wäre in dem Bereich natürlich ein Script, welches alle "laufenden Maschinen" pausiert, dann die Updates per WSUS oder Windows Update auf dem Host installiert, eventuell neu bootet und dann die vormals laufenden Systeme wieder startet (Resümee).

Weitere Links

Produkte

Treiber für VMs

Anleitungen

Sonstiges Produkte zu Virtualisierung

Tags:Virtual PC VMware ESX GSX