slideshow 6 slideshow 4 slideshow 8 slideshow 1 slideshow 2 slideshow 3 slideshow 5 slideshow 7

How to change the storage adapter to Paravirtual (PVSCSI) for a Windows guest

VMware offers multiple types of virtual SCSI-adapters to use in your virtual machines. Based on your choice of operating system VMware will offer a Buslogic or LSI logic adapter. There is however a Paravirtual SCSI-controller that can improve performance for your virtual machines, especially in environments with high IO-loads. This controller will provide greater throughput and lower CPU utilization for your VMkernel. This adapter is not selected by default because your operating system (Windows) installation disc doesn't contain the driver for this VMware-adapter. All operating systems support a Buslogic or LSI Logic adapter so that is the reason VMware uses that as these as the default.

To use the Paravirtual SCSI-adapter (PVSCSI) you need to install the driver, which is automatically installed with the VMware tools so you can easily switch to this controller after installation. It is also possible to use a PVSCSI-disk during OS-installation because it is located on a virtual floppy available on your host that you can select at the start of the Windows-installation by pressing F6 in the setup-screen. Since many administrators will have installed their servers with the regular adapter I will be explaining in this article how to modify an existing adapter to PVSCSI.

NoteAlways first check if the PVSCSI-adapter is supported for your guest operating system and version and your ESXi-version. And check this VMware knowledge base article for limitations and requirements: Configuring disks to use VMware Paravirtual SCSI (PVSCSI) adapters (1010398) (MSCS clusters are not supported for VMware Paravirtual SCSI Controllers KB 1037959.)

More information about using the PVSCSI-adapter and what the performance benefits are can be found in these documents:

Performance Best Practices for VMware vSphere® 5.5

Oracle Databases on VMware Best Practices Guide

TipYou could do this in all your virtual machines after installing Windows but you probably are going to use a template to deploy Windows-servers. Therefor I suggest that you perform the tasks described here in your master virtual machine that will become your template.

Add a second SCSI-controller to your virtual machine

You can not simply change the SCSI-controller type for your virtual machine to PVSCSI. The problem is that Windows contains the driver but it is not loaded (why should it, there is no PVSCSI-adapter present). And therefor when you would just change the adapter type Windows would find an unsupported storage controller during the boot process and stop with a blue screen. Therefor we first need to add a PVSCSI-adapter in the virtual machine and start the machine to have Windows load the driver. Open the virtual machine settings in the vSphere Web Client and add a SCSI Controller. Don't forget to change the type of this new controller to VMware Paravirtual. You can do this while the virtual machine is powered on.

Add PVSCSI Controller

When the virtual machine is running you will see a message that informs you that the new hardware is installed. If your virtual machine was powered off you first need to boot it once to load the driver for the new adapter.

New device installed

If you want to double check you can open Device Manager and look at the list of installed Storage controllers. It should list the VMware PVSCSI Controller.

Device Manager with PVSCSI Controller

Change the type of the currently installed adapter

Now that the new controller is installed it is time to change the adapter type of the currently installed adapter. For this task the virtual machine must be powered off. Open the virtual machine settings in the vSphere Web Client, expand the settings of the SCSI controller and change the type to VMware Paravirtual. This will bring up the warning message displayed in the next image.

Change SCSI controller adapter type

Do this for all present Buslogic or LSI logic SCSI controllers but make sure that you have verified that the PVSCSI-adapter can be used for both the OS-disk and the data disk.

TipVMware recommends that you create a primary adapter for use with a disk that will host the system software (boot disk) and a separate PVSCSI adapter for the disk that will store the data files. If you look at the screen shot below you can see that hard disk 1 is the first disk (0) on SCSI Controller 0 and disk 2 is the first disk (0) on SCSI Controller 1.

Change hard disk adapter type

When you now power on the virtual machine Windows will use the new controller type for your hard disks. At this time you are ready, but it's best to remove the old adapter because the driver will be loaded for this non-present device. And don't forget to also remove the unnecessary extra PVSCSI controller from the virtual machine hardware that we have added in the beginning of this procedure. But remove it after the operating system is completely started. 

You will however have to enable Windows to show nonpresent devices. I have found that you can do this from Device Manager in Windows Server 2012 without any extra settings, but for older Windows versions you might first need to set an environment variable: 

set devmgr_show_nonpresent_devices=1

Then start Device Manager and from the View-menu select Show hidden devices. You can then see and uninstall the old adapter.

Remvoe LSI logic adapter

If you look closely at the image you can see that there is also a light-gray PVSCSI Controller. This is because this screen shot is from a server that only has one disk and one storage controller. But because we added a new controller in the first step of this procedure there will now be a non-present device for that storage controller. The best is to also remove the light-gray and non-present controller.

Follow us on LinkedIn