Virtualization adds both simplicity and complexity to the computing environment. When deployed correctly, the use of virtualization software can be a boon from a cost and availability perspective. Live migration techniques keep servers moving around to available hardware which means that the services provided by those servers remain available to users.
At the same time, virtualization requires much closer attention to detail than traditional physical infrastructures. Virtualization administrators must take care to eke out every possible performance gain in order to maximize the organization’s investment in the virtual environment.
Hypervisor vendors and software application providers have made great strides in recent years when it comes to finding ways to do more with less. One such case in point is the introduction of paravirtual SCSI (PVSCSI) adapters to VMware ESX. PVSCSI adapters, available only for a very specific list of guest operating systems, are high-performance virtual storage adapters that can be added to a virtual machine. These new storage adapters can provide some significant benefits to a virtual environment by increasing overall storage throughput while, at the same time, reducing CPU utilization, but only in high I/O situations. VMware has developed the PVSCSI adapter in order to better support organizations with high performance shared storage needs, such as those with heavy reliance on SAN-based SQL databases or other storage-intensive tools. VMware recommends that you do not use the PVSCSI adapter in environments that use direct-attached storage.
When it comes to system support, up until vSphere 4.0 update 1, only data volumes could use PVSCSI adapters. Boot volumes were not supported. With the release of U1, however, system boot disks can leverage PVSCSI adapters, too. The following guest operating systems support the use of PVSCSI adapters:
- Windows Server 2008 R2
- Windows Server 2008
- Windows Server 2003
- Red Hat Linux (RHEL) 5
In order to use a PVSCSI adapter, your virtual machine must be using hardware version 7. If you create a virtual machine at a lower hardware level, the PVSCSI option will not be available. Prior to vSphere 4.0 update 1, PVSCSI adapters could not be used to support virtual machine boot disks. In order to use PVSCSI, you had to configure the boot disk to use one of vSphere’s other SCSI controller types and then add the PVSCSI adapter solely to support additional virtual data drives added to the virtual machine. Starting with vSphere 4.0U1, PVSCSI can be used for virtual machine boot disks, too.
When used with the right kind of workload, when PVSCSI is used with Fibre Channel storage, there can be a 10% to 30% reduction in “cycles per I/O (CPIO)” or processor usage. For iSCSI workloads, this CPIO reduction can be anywhere up to about 25%. The actual performance boost is dependent on I/O block size.
When to use PVSCSI
Clearly, PVSCSI is an evolving technology, as evidenced by the fact that significant changes and enhancements – such as the addition of boot disk support – are being introduced in minor vSphere updates. As such, VMware provides some specific guidance with regard to the use of PVSCSI in new virtual machines. When it comes to PVSCSI, VMware recommends that the new controller be used only for relatively high I/O virtual machines. For low I/O virtual machines, VMware recommends that you stick with the tried and true LSI Logic SCSI adapter. VMware has outlined the full reasoning behind this recommendation in their knowledgebase article 1017652. At the end of KB article 1017652, VMware summarizes the guidance saying, “The test results show that PVSCSI is better than LSI Logic, except under one condition – the virtual machine is performing less than 2,000 IOPS and issuing greater than 4 outstanding I/Os.”
If you have already created new low I/O virtual machines, it is not recommended that you revert to the LSI Logic SCSI adapter. Simply put, reverting takes time and the low I/O performance impact is negligible when compared to LSI Logic performance.
In high I/O environments, VMware has determined that the PVSCSI adapter can provide a 12% storage performance increase while consuming 18% less CPU. Their tests were performed in very high I/O situations – as in 350,000 IOPS on VMFS volumes.
When Not to use PVSCSI
Although PVSCSI clearly provides major benefits, there are times when it is not a good choice. Most importantly, if you have virtual machines configured for fault tolerance, you can’t use PVSCSI. Moreover, if you have a need to use Microsoft Cluster Service (MSCS), you need to choose a different SCSI adapter type. And, as already mentioned, if you’re creating a new virtual machine that won’t have high I/O requirements, there is no need to use PVSCSI, either, as there will be no performance benefits.
Creating a PVSCSI-based Virtual Machine
Creating a new virtual machine that uses a PVSCSI adapter is relatively easy as long as you use a supported guest operating system. To start with, when you create a new virtual machine, you need to choose the Custom option in order to be able to choose the PVSCSI option. Figure 1 gives you a look at this screen.
Figure 1: Choose the Custom option for creating a new virtual machine
After choosing the Custom virtual machine option, follow the wizard until you get to the Virtual Machine Version page. On this page, make sure to choose Virtual Machine Version 7, as shown in Figure 2. If you choose version 4 for the virtual machine hardware, the PVSCSI option will not be available.
Figure 2: Choose the version 7 hardware type
When you get to the operating system selection page, make sure to choose an operating system that is supported by the PVSCSI adapter. If you don’t, when you get to the SCSI Controller page of the wizard, you will get a warning next to the VMware Paravirtual option that reads “not recommended for this guest OS”. If you choose a supported operating system, you will get no such warnings.
Figure 3: Choose your SCSI Controller type
From here, the remainder of the virtual machine provisioning process is the same as it is for other SCSI controller types. It’s only once you begin your guest operating system installation that you need to take additional steps to make sure that you can use the PVSCSI controller.
For this example, I will use Windows Server 2008 R2 as the guest operating system on a virtual machine to which I’ve allocated 40GB of disk space. As I begin the installation of Windows 2008 R2, you will notice in Figure 4 that I am not being offered any disks to which to install an operating system.
Figure 4: No storage devices are available
The reason: The Windows Server 2008 R2 installation media does not include drivers for VMware’s paravirtualized SCSI adapter meaning that no attached storage can be identified. You need to provide drivers that can be used by the installer to locate and use the storage that has been provided. VMware has included floppy disk images that include the PVSCSI drivers. These images are available in the host data store. To connect to the floppy image, click the icon of the floppy disk in vCenter and go to Floppy drive 1 > Connect to floppy image on a datastore.
Figure 5: Connect to a floppy disk image
Once you are presented with the Browse Datastores dialog box, browse to vmimages> floppies and choose the floppy image that suits your operating system. Figure 6 gives you a look at the floppy disk image options.
Figure 6: Choose the vmimages folder
Back on the Windows installation screen, click the Load Driver button and, on the following screen, click Browse and expand the newly connected floppy device. Choose the top level folder for your operating system type – 32-bit (i386) or 64-bit (amd64). Don’t get confused about the name “amd64”. This is the driver that you should use on any 64-bit version of Windows, regardless of what processor vendor you’re using. AMD64 is a generic name for 64-bit systems.
Figure 7: Choose the appropriate driver type for your OS
Now, Windows will load the new driver and you’ll be able to choose the virtual hard drive that you create when you created the virtual machine. Figure 8 gives you a look at the newly discovered storage device.
Figure 8: The storage device has now been located
From this point forward, the remainder of the Windows installation goes exactly as it would for any other virtual machine.
Adding a PVSCSI Adapter to an Existing Virtual Machine
PVSCSI is not just for new virtual machines. You might have a virtual SQL server, for example, that could benefit from the performance gains offered by using PVSCSI. Unless your virtual machine has major I/O needs on the boot volume, it is recommended that you stick with the existing controller for the boot volume and add the PVSCSI adapter as a second controller.
In order to configure an existing virtual machine to use PVSCSI, the VM should have VMware Tools installed.You first need to add a new hard drive to the system so that the new controller has something connected to it. We will walk through the process with these steps:
First, open vCenter and right-click on the target virtual machine and, from the shortcut menu, select Edit Settings.
Figure 9: Open the virtual machine settings page
From the Virtual Machines Settings page, click the Add button to add new hardware. When you get to the Add Hardware page, select Hard Disk and click Next.
Figure 10: Add a new hard drive
Follow the on-screen steps to choose the size for the new virtual hard drive. When you get to the Virtual Device Node option, it’s critical that you connect the hard drive to a separate virtual SCSI adapter. Do not attach the hard drive to anything starting with a zero as this is generally the default SCSI adapter. In this example, I’ll use 1:0 for the Virtual Device Node, as shown in Figure 11.
Figure 11: Choose a virtual device node
Continue with the remainder of the process. When you are done, notice that the device list now shows two new devices: Your new hard drive as well as a new SCSI controller of the default LSI Logic type. The reason that the new adapter was created is because we chose to attach the new hard drive to something other than the default adapter.
Now, select the new SCSI controller and click the Change Type button. On the Change SCSI Controller Type window, choose VMware Paravirtual and click OK.
Figure 13: Choose the PVSCSI controller type
At this point, when you reboot your system and open the Disk Manager tool, you will see the new volume available and ready for formatting and use.