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:

  1. Add a temporary IDE hard disk (VMware allows you to have SCSI and IDE drives simultanious, but not two SCSI drives with different controllers).
  2. Let Windows install the IDE-drivers.
  3. Remove the temporary hard disk.
  4. Switch the active hard disk controller to an IDE controller.
  5. Add a temporary SCSI hard disk with the new controller type.
  6. Let Windows install the new SCSI-drivers.
  7. Remove the temporary hard disk.
  8. Switch the active hard disk controller back to a SCSI-controller.
  9. 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:

parallel_to_sas_01

parallel_to_sas_02

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:

parallel_to_sas_03

Shut down the server.

Delete the IDE drive again (remove the files from disk):

parallel_to_sas_04

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:

parallel_to_sas_05

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

parallel_to_sas_06

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

parallel_to_sas_07

Make the new drive a SCSI disk:

parallel_to_sas_08

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

parallel_to_sas_09

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:

parallel_to_sas_10

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:

parallel_to_sas_11

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

parallel_to_sas_12

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):

parallel_to_sas_13

Type “set devmgr_show_nonpresent_devices=1″ at the prompt.

Launch the Device Manager from the prompt with the “devmgmt.msc” command:

parallel_to_sas_14

Select “Show hidden devices”:

parallel_to_sas_15

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”):

parallel_to_sas_16

Now everything looks neat and clean:

parallel_to_sas_17

If it original was a template, shut the server down and convert it back to a template.