How to switch the VMware SCSI controller from parallel to SAS
Having upgraded to vSphere 4 (which seems to perform quite well, by the way) I discovered that VMware has added a new hard disk controller “LSI Logic SAS” – this controller is now the default controller for Windows 2008 systems.
I’m not sure if there’s any performance boost in switching to this new virtual hardware? – VMware only lists added Windows Cluster support as a new feature. But I’m the type of guy who is bugged by having Windows 2008 templates which doesn’t match the default hardware, so I set out on the quest to upgrade the SCSI controller of my 2008-templates…
It’s not quite as simple as it might sound – you can’t just switch the controller as Windows lacks the driver to use the new controller, so this operation renders the OS unbootable. (until you switch the controller back)
Before you try to use the described procedure, be sure to have the VMware Tools in the VM up-to-date and upgrade the virtual hardware to version 7!
The idea behind this procedure is:
- Add a temporary IDE hard disk (VMware allows you to have SCSI and IDE drives simultanious, but not two SCSI drives with different controllers).
- Let Windows install the IDE-drivers.
- Remove the temporary hard disk.
- Switch the active hard disk controller to an IDE controller.
- Add a temporary SCSI hard disk with the new controller type.
- Let Windows install the new SCSI-drivers.
- Remove the temporary hard disk.
- Switch the active hard disk controller back to a SCSI-controller.
- Clean up unused drivers.
If you want the detailed instructions on how to perform the operation, read on below.
I’m sure there’s an easier way to install the new drivers before switching the SCSI-controller, but I’m no Windows wizard, so I prefer to let Windows discover the new hardware by itself.
This procedure should work on other Windows versions as well, but I’ve not tried it on anything besides Windows Server 2008.
Needless to say: make sure you have a backup of your VM before something is screwed up!
Detailed instructions.
Power down the VM or convert it to a virtual machine if it is a template.
Add an IDE hard disk:


Boot the server and let Windows install the IDE drivers (answer “I moved it” if asked). If you wan’t you can see the two disk drives in the Device manager:

Shut down the server.
Delete the IDE drive again (remove the files from disk):

Also remove the SCSI hard drive (make sure NOT to delete the files from disk!).
Log into the Service Console and find the .vmdk file defining the hard disk. Edit this file with your favorite Linux text editor (“vi” for instance).
Change the adapter type in the line:
ddb.adapterType = “lsilogic”
to
ddb.adapterType = “ide”
Add a new hard disk, choose to use an existing virtual disk:

Browse to the harddisk file, and make sure it is recognized as an IDE disk:

Add another new hard disk, this time create a new virtual disk:

Make the new drive a SCSI disk:

This will get assigned a “LSI Logic SAS” controller if it’s Windows 2008:

Boot the server, log in and let Windows install the new SCSI driver.
Shut down the server and delete the new SCSI-drive again and remove the “old” IDE disk retaining the file:

Edit the .vmdk file in the service console, and the adapter type back to “lsilogic”:
ddb.adapterType = “lsilogic”
Add a new hard disk, choose to use an existing virtual disk. Browse to the harddisk file.
It will now recognise it as a SCSI drive:

And it will use the new SAS controller (if it’s Windows 2008):

Boot the server and check that everything work as expected.
If you want to clean up the now unused drivers, start a command prompt with admin rights (Run as administrator):

Type “set devmgr_show_nonpresent_devices=1″ at the prompt.
Launch the Device Manager from the prompt with the “devmgmt.msc” command:

Select “Show hidden devices”:

Find the non present devices that are grayed out, and delete them (the old “VMware Virtual disk SCSI Disk Device”, the “IDE Hard Drive ATA Device” and the old “LSI Adapter, Ultra 320 SCSI 2000 series”):

Now everything looks neat and clean:

If it original was a template, shut the server down and convert it back to a template.
I think you have missed something. If you add a new HD to a VM and select fex. 1:0 as the SCSI ID, in my experience you will indeed have a new SCSI controller created, and you are free to set this to any type you like. That hes been my experience on 3.5, to make sure I’m correct in my assumption, I added the new SAS controller to a VM and it worked as expected without incident. There is no such limitation.
Yes, you are indeed correct! You can actually install different SCSI controllers at the same time – so it is possible to skip many of the steps described above. Thank you for that observation!
Good blog.
MBA – Nice pickup. You blog comment made it so easy to change to SAS controller type.
Thanks guys,