Virtuelle SCSI-Kontroller unter VMWare

Virtuelle SCSI-Kontroller und Cloning oder P2V unter VMware Workstation, Server und ESX.
Bei der Übernahme physischer Maschinen in eine VM ergeben sich oft Probleme, wenn das System auf einer virtuellen SCSI-Disk liegen soll. Verschiedene Kombinationen aus Betriebssystem, Kontrollertyp und Treiber führen in der VM zum bekannten BlueScreen mit der Meldung "Inaccessible Boot Device" oder "Stop 0x0000007b".

Hinweis: Viele der hier beschriebenen Probleme sind mit dem VMware Converter gelöst, der einen automatischen P2V-Vorgang durchführt und dabei auch die Controller-Treiber der Gastsysteme anpasst. Sie finden das kostenlose Tool hier: VMware Converter

virtuelle Kontrollertypen, Treiber und Probleme

VMware emuliert wahlweise einen LSI-Logic- oder einen BusLogic-Controller. Beim Erstellen einer VM muss man sich entscheiden, welcher Typ verwendet wird. Eine nachträgliche Änderung ist nur durch manuelles Editieren der vmx-Datei möglich (sh. weiter unten).

Die Wahl eines bestimmten Controllers hängt vom OS in der VM ab, nicht alle Betriebssysteme kommen auf Anhieb mit ihren OS-integrierten Treibern zurecht.

NT4 und W2k verfügen beispielsweise schon über funktionierende Treiber für den BusLogic-Controller, Windows2003 dagegen nur für den LSI-Logic.

Windows XP liefert zwar Treiber für einen BusLogic-Controller mit, diese funktionieren aber nicht unter VMware und ein LSI-Logic-Treiber fehlt. Aus diesem Grunde kann XP nur mit zusätzlichen Treibern auf virtuelle SCSI-Platten zugreifen.

Beim Neuanlegen einer VM empfiehlt der Hardware-Wizard von VMware deswegen auch folgende Controller und Plattentypen:

NT4 SCSI BusLogic
W2K SCSI BusLogic
XP IDE (SCSI nur mit Zusatztreiber)
W2003 SCSI LSI-Logic


Weitere Probleme gibt es unter allen Betriebssystemen, wenn der richtige Treiber vor dem Klonen auf der Quellmaschine vorinstalliert werden soll, obwohl das OS den entsprechenden Kontroller noch nicht finden kann.

VMware virtual SCSI driver

Als Alternative zu den OS-integrierten Treibern bietet VMware für W2K, XP und W2003 einen speziellen "VMware SCSI Treiber" an, welcher mit dem emulierten BusLogic-Adapter (nicht LSI-Logic!) zusammenarbeitet. Er sollte anstelle des normalen BusLogic-Treibers installiert werden. VMware verspricht damit eine Verbesserung der Performance.

Interessant an diesem Treiber ist, daß er in fast allen Quellsystemen vor dem Klonvorgang unproblematisch vorinstalliert werden kann.

Der Treiber kann entweder aus der ISO-Datei der VMware-Tools extrahiert werden, oder steht auch in einer aktuelleren Version auf der Webseite von VMware bereit:

http://www.vmware.com/download/server/drivers_tools.html

Clonen mit Umweg über IDE

Der einfachste Weg eine physische Maschinen in eine VM zu klonen ist es, als Ziel vorläufig eine virtuelle IDE-Platte zu wählen. Das funktioniert auch, wenn die Ausgangsmaschine mit SCSI-Platten arbeitet!

Vorher ist nur der herstellerspezifische IDE-Treiber im Gerätemanager mit dem "Standard-PCI-Controller" zu ersetzen. (sh. Workshop P2V im aktuellen Newsletter.)

Nach erfolgreichem Klon-Vorgang kann in der Ziel-VM eine zusätzliche Platte vom Typ SCSI eingebunden werden. Jetzt wird ganz entspannt der richtige SCSI-Treiber, passend zum gewählten Kontroller installiert, ohne Angst vor einem "Inaccessible Boot Device". Mit den VMware-Tools und Plug&Play erfolgt die Installation oft schon automatisch beim Neustart. (Näheres zu den Treibern im Abschnitt "Klonen direkt auf SCSI").

Erst wenn der Zugriff auf die neue SCSI-Platte funktioniert, der Treiber also ordentlich eingebunden ist, wird die virtuelle IDE-Systemplatte unter VMware auf die SCSI-Platte geklont. Jetzt haben wir ein reines SCSI-System.

Klonen direkt auf SCSI (ESX-Server)

Einigen ist der beschriebene Umweg zu umständlich und Nutzern des ESX-Servers bleibt sowieso nichts anderes übrig - das Quellsystem soll sofort auf eine virtuelle SCSI-Platte geklont werden.

Dazu muss im Quellsystem der entsprechende SCSI-Treiber vorinstalliert sein:

W2K / XP

Unter Windows2000 Workstation und Server, sowie unter Windows XP kommt man mit dem VMware SCSI-Treiber am schnellsten zum Ziel. Er wird als neue Hardware eingerichtet, z.B unter XP:

Systemsteuerung > Hardware
Punkt setzen "Ja, die Hardware wurde bereits angeschlossen" (obwohl das nicht stimmt!)
neue Hardware hinzufügen (in der Liste ganz unten auswählen)
Punkt setzen "Hardware manuell aus einer Liste wählen"
SCSI/RAID-Controller in der Liste auswählen
Button Datenträger anklicken
Zum Speicherort des Treibers navigieren - VMware SCSI-Controller wählen
Windows moniert den fehlenden Logo-Test > Installation fortsetzen

Nach erfolgter Installation hat der Treiber im Grätemanager ein gelbes Ausrufezeichen, da der Kontroller noch nicht existiert. Trotzdem kann das vorbereitete physische System direkt auf eine leere virtuelle SCSI-Platte geklont werden. Das funktioniert auch, wenn im Quellsystem ursprünglich nur IDE-Platten vorhanden waren.

ACHTUNG! Es ist wichtig, dass beim Erstellen der Ziel-VM als Controller-Typ "BusLogic" ausgewählt wurde!

Nach dem Hochfahren der geklonten VM erscheinen merkwürdigerweise zwei Kontroller im Gerätemanager. Ein BusLogic und der vorinstallierte VMWare SCSI mit einem gelben Ausrufezeichen:



Der VMware SCSI mit dem gelben Ausrufezeichen kann deinstalliert werden und der BusLogic wird in einen VMware SCSI gewandelt (Treiber ersetzen). Nach einem Neustart ist das System fertig.

Windows 2003

Der Weg mit dem VMware SCSI funktioniert zwar auch hier, aber W2003 bringt schon einen eigenen LSI-Logic-Treiber mit, welcher von VMware empfohlen wird. Zum Vorinstallieren dieses Treibers mittels "Systemsteuerung > Hardware" muss allerdings ein kleiner Trick angewendet werden, da er normalerweise nicht in der Hardwareliste erscheint.

Wir suchen in der Datei "c:\windows\inf\pnpscsi.inf" den Abschnitt "[ControlFlags]" und löschen alle Zeilen "ExcludeFromSelect = *" darunter. Jetzt kann unter Hardware mittels "alle Geräte anzeigen" der "LSI Logic PCI-X Ultra320-SCSI-Hostadapter" ausgewählt werden.



Wie unter XP erscheint der Treiber im Gerätemanager mit einem gelben Ausrufezeichen und nach dem Neustart taucht ein einfacher "SCSI-Controller" auf. Dieser kann mittels "Treiber aktualisieren" in den richtigen Treiber gewandelt werden und das System ist fertig.

NT

Unter NT funktioniert der VMware SCSI-Treiber nicht. Aber dafür kann der BusLogic von der NT4-CD nachinstalliert werden. Dazu wird über "Systemsteuerung > SCSI-Adapter > Treiber" der "BusLogic MultiMaster SCSI Host-Adapter" installiert:



Eventuell ist noch darauf zu achten, dass unter "Systemsteuerung > Geräte" der Dienst "Buslogic" nicht deaktiviert ist.


Fertig!

Unsere geklonten Systeme sollten jetzt normal starten und dank voreingestellter Treiber die virtuellen SCSI-Platte auf Anhieb erkennen. Damit ist das P2V-Klonen auch unter einem ESX-Server kein Problem mehr.


Umwandeln der Kontrollertypen

Wer etwas experimentieren möchte, kann direkt in der VMX-Datei den Typ des virtuellen SCSI-Kontrollers ändern. Dazu ist die Zeile mit dem Typ zu ersetzen:

scsi0.present = "TRUE"
scsi0.virtualDev = "buslogic"
oder
scsi1.virtualDev = "lsilogic"

Der Typ buslogic ist Standard und erscheint nicht immer explizit in der VMX-Datei.

Nach der Umwandlung fragt VMware beim nächsten Start, ob die virtuelle Platte dem neuen Kontrollertyp angepasst werden soll, was gefahrlos mit "JA" bestätigt werden kann. Als nächstes dürfte dann ein fotogener Bluescreen zu bewundern sein...

... warum? Klar - weil wir vor dem Umwandeln in der VM den richtigen Treiber für den neuen Kontroller vorinstallieren müssen! ;-) (Sh. oben)

Beim Hersteller LSI gibt es ebenfalls aktuelle Treiber zum LSI-Logic-Controller. In diversen Foren kann man verschiedene Diskussionen über Performancevorteile oder Nachteile verfolgen. Die oben genannten Treiber genügen in den meisten Fällen. Bei W2K vor SP4 kann der Einsatz des LSI-Treibers anstelle Buslogic Leistungsvorteile bringen. Wer Probleme hat, oder experimentieren möchte sucht auf der LSI-Seite nach dem Typ LSI20320:

http://www.lsilogic.com/

quelle: http://www.vmaschinen.de/cgi-bin/vmware.cgi?scsi