To access virtual disks, CD/DVD-ROM, and SCSI devices, a virtual machine uses storage controllers, which are added by default when you create the virtual machine. You can add controllers or change the controller type after virtual machine creation or while you are in the creation wizard.

If you know about node behavior, controller limitations, and compatibility of different types of controllers before you change or add a controller, you can avoid potential boot problems.

How Storage Controller Technology Works

Storage controllers appear to a virtual machine as different types of SCSI controllers, including BusLogic Parallel, LSI Logic Parallel, LSI Logic SAS, and VMware Paravirtual SCSI. AHCI, SATA, and NVM Express (NVMe) controllers are also available.

NVMe is a standardized protocol designed specifically for high-performance multi-queue communication with NVM devices. ESXi supports the NVMe protocol to connect to local and networked storage devices. For more information, see the vSphere Storage documentation.

When you create a virtual machine, the default controller is optimized for best performance. The controller type depends on the guest operating system, the device type, and sometimes, the virtual machine's compatibility. For example, when you create virtual machines with Apple Mac OS X guests and ESXi 5.5 and later compatibility, the default controller type for both the hard disk and the CD/DVD drive is SATA. When you create virtual machines with Windows Vista and later guests, a SCSI controller is the default for the hard disk and a SATA controller is the default for the CD/DVD drive.

In high performance storage environments you can benefit from using VMware Paravirtual SCSI controllers. The VMware Paravirtual SCSI controller ensures greater throughput and lower CPU use, which boosts performance as compared to the other SCSI controller options. For platform support for VMware Paravirtual SCSI controllers, see the VMware Compatibility Guide at http://www.vmware.com/resources/compatibility.

Each virtual machine can have a maximum of four SCSI controllers and four SATA controllers. The default SCSI or SATA controller is 0. When you create a virtual machine, the default hard disk is assigned to the default controller 0 at bus node (0:0).

When you add storage controllers, they are numbered sequentially 1, 2, and 3. If you add a hard disk, SCSI, or CD/DVD-ROM device to a virtual machine after virtual machine creation, the device is assigned to the first available virtual device node on the default controller, for example (0:1).

If you add a SCSI controller, you can reassign an existing or new hard disk or device to that controller. For example, you can assign the device to (1:z ), where 1 is SCSI controller 1 and z is a virtual device node from 0 to 15. For SCSI controllers, z cannot be 7. By default, the virtual SCSI controller is assigned to virtual device node (z:7), so that device node is unavailable for hard disks or other devices.

If you add a SATA controller, you can reassign an existing or new hard disk or device to that controller. For example, you can assign the device to (1:z ), where 1 is SATA controller 1 and z is a virtual device node from 0 to 29. For SATA controllers, you can use device nodes 0 through 29, including 0:7.

Alternatively, each virtual machine can have a maximum of four NVMe controllers. You can reassign an existing or new hard disk or device to that controller. For example, you can assign the hard disk to (x:z ), where x is NVMe controller and z is a virtual device node. x has values from 0 to 3, and z has values from 0 to 14.

Storage Controller Limitations

Storage controllers have the following requirements and limitations:

  • LSI Logic SAS and VMware Paravirtual SCSI are available for virtual machines with ESXi 4.x and later compatibility.
  • AHCI SATA is available only for virtual machines with ESXi 5.5 and later compatibility.
  • NVMe is available only for virtual machines with ESXi 6.5 and later compatibility.
  • BusLogic Parallel controllers do not support virtual machines with disks larger than 2TB.
  • Disks on VMware Paravirtual SCSI controllers might not experience optimal performance if they have snapshots or if the hosts memory is overcommitted.
Caution: Changing the controller type after the guest operating system is installed will make the disk and any other devices connected to the adapter inaccessible. Before you change the controller type or add a new controller, make sure that the guest operating system installation media contains the necessary drivers. On Windows guest operating systems, the driver must be installed and configured as the boot driver.

Storage Controller Compatibility

Adding different types of storage controllers to virtual machines that use BIOS firmware can cause operating system boot problems. In the following cases, the virtual machine might fail to boot correctly and you might have to enter the BIOS setup and select the correct boot device:
  • If the virtual machine boots from LSI Logic SAS or VMware Paravirtual SCSI, and you add a disk that uses BusLogic, LSI Logic, or AHCI SATA controllers.
  • If the virtual machine boots from AHCI SATA, and you add BusLogic Parallel or LSI Logic controllers.

Adding additional disks to virtual machines that use EFI firmware does not cause boot problems.

Table 1. VMware Storage Controller Compatibility
Existing Controller Added Controller
BusLogic Parallel LSI Logic LSI Logic SAS VMware Paravirtual SCSI AHCI SATA IDE NVMe
BusLogic Parallel Yes Yes Yes Yes Yes Yes Yes
LSI Logic Yes Yes Yes Yes Yes Yes Yes
LSI Logic SAS Requires BIOS setup Requires BIOS setup Usually Works Usually Works Requires BIOS setup Yes Usually Works
VMware Paravirtual SCSI Requires BIOS setup Requires BIOS setup Usually Works Usually Works Requires BIOS setup Yes Usually Works
AHCI SATA Requires BIOS setup Requires BIOS setup Yes Yes Yes Yes Yes
IDE Yes Yes Yes Yes Yes N/A Yes
NVMe Requires BIOS setup Requires BIOS setup Usually Works Usually Works Requires BIOS setup Yes Usually Works

Add a SATA Controller

If a virtual machine has multiple hard disks or CD/DVD-ROM devices, you can add up to three additional SATA controllers to assign the devices to. When you spread the devices among several controllers, you can improve performance and avoid data traffic congestion. You can also add additional controllers if you exceed the thirty-device limit for a single controller.

You can boot virtual machines from SATA controllers and use them for large-capacity virtual hard disks.

Not all guest operating systems support AHCI SATA controllers. Typically, when you create virtual machines with ESXi 5.5 and later compatibility and Mac OS X guest operating systems, a SATA controller is added by default for the virtual hard disk and CD/DVD-ROM devices. Most guest operating systems, including Windows Vista and later have a default SATA controller for CD/DVD-ROM devices. To verify support, see the VMware Compatibility Guides at http://www.vmware.com/resources/compatibility.

Prerequisites

  • Verify that the virtual machine compatibility is ESXi 5.5 and later.
  • Verify that you are familiar with storage controller behavior and limitations.
  • Verify that you have the Virtual machine.Change Configuration.Add or remove device privilege on the virtual machine.

Procedure

  1. Right-click a virtual machine in the inventory and select Edit Settings.
  2. On the Virtual Hardware tab, click the Add New Device button.
  3. Select SATA Controller from the drop-down menu.
    The controller appears in the Virtual Hardware devices list.
  4. Click OK.

What to do next

You can add a hard disk or CD/DVD drive to the virtual machine and assign it to the new controller.

Add a SCSI Controller to a Virtual Machine

Many virtual machines have a SCSI controller by default, depending on the guest operating system. If you have a heavily loaded virtual machine with multiple hard disks, you can add up to three additional SCSI controllers to assign the disks to. When you spread the disks among several controllers, you can improve performance and avoid data traffic congestion. You can also add additional controllers if you exceed the 15-device limit for a single controller.

Prerequisites

Verify that you have the Virtual machine.Change Configuration.Add or remove device privilege on the virtual machine.

Procedure

  1. Right-click a virtual machine in the inventory and select Edit Settings.
  2. On the Virtual Hardware tab, click the Add New Device button. add a new SCSI controller.
  3. Select SCSI Controller from the drop-down menu.
    The controller appears in the Virtual Hardware device list.
  4. From the Change Type drop-down menu, select the controller type.
    Do not select a BusLogic Parallel controller for virtual machines with disks larger than 2 TB. This controller does not support large capacity hard disks.
  5. On the Virtual Hardware tab, expand New SCSI Controller, and select the type of sharing in the SCSI Bus Sharing drop-down menu.
    Option Description
    None Virtual disks cannot be shared by other virtual machines.
    Virtual Virtual disks can be shared by virtual machines on the same ESXi host. Select Thick provision eager zeroed when you create the disk.
    Physical Virtual disks can be shared by virtual machines on any ESXi host. Select Thick provision eager zeroed when you create the disk.
  6. Click OK.

What to do next

You can now add a hard disk or other SCSI device to the virtual machine and assign it to the new SCSI controller.

How to Activate and Deactivate the Automatic Replacement of the LSI SAS Controller

vSphere 8.0 can automatically and safely replace the LSI SAS controller with the native VMware PVSCSI controller for existing virtual machines.

Starting with vSphere 8.0, you can activate and deactivate the automatic replacement of the LSI SAS controller by configuring the VMware Tools Device Helper policy, which is unconfigured by default. The default unconfigured policy setting deactivates the automatic replacement of the LSI SAS controller.

You can configure the VMware Tools policy settings by using the Local Group Policy Editor (gpedit.msc). You can also place the VMware Tools policy files to a domain controller and assign the policy to all virtual machines in the domain.

To enable the VMware Tools policy and activate the replacement of the LSI SAS controller with the VMware PVSCSI controller, perform the following steps.

Prerequisites

  • Verify that the guest operating system of the virtual machines is Windows 10 and later or Windows Server 2016 and later.
  • Verify that you have VMware Tools version 12.1.0 or later.
  • The automatic replacement is possible for virtual machines that have VMware Paravirtual SCSI (PVSCSI) driver installed with VMware Tools.
  • Verify that the VMware Tools Device Helper policy is enabled.

Procedure

  1. Open a command-line window with the Run as administrator setting.
    For example, click Start, type cmd, right-click the cmd.exe icon, and select Run as administrator.
  2. Enter xcopy "c:\ProgramData\Vmware\Vmware Tools\deviceHelperPolicy.admx" "c:\Windows\PolicyDefinitions".
  3. Enter xcopy "c:\ProgramData\Vmware\Vmware Tools\en-US\deviceHelperPolicy.adml" "c:\Windows\PolicyDefinitions\en-US".
  4. Start the Local Group Policy Editor (gpedit.msc) and navigate to Computer Configuration > Administrative Templates > VMware Tools Configuration.
  5. Select the Device Helper Enable setting and select Enabled.
  6. Click OK and exit the Local Group Policy Editor.
  7. Stop and start the VMTools service.
    1. To stop the VMTools service, enter sc stop vmtools.
    2. To start the VMTools service, enter sc start vmtools.
    When you restart the VMTools service, the configuration is read and the Device Helper installs the PVSCSI driver for the next system restart.
  8. Restart the virtual machine.
    The LSI SAS controller is replaced with the VMware PVSCSI controller.

Results

You can view the changes in the virtual machine settings or in the Windows virtual machine by using the Device Manager utility.

What to do next

You can deactivate the automatic replacement of the LSI SAS controller by using the Local Group Policy Editor.
Option Action
Deactivate by using the Local Group Policy Editor In the Windows virtual machine, set the VMware Tools policy to Disabled or Not configured.

Add a Paravirtualized SCSI Adapter

You can add a VMware Paravirtual SCSI high performance storage controller to a virtual machine to provide greater throughput and lower CPU use.

VMware Paravirtual SCSI controllers are best suited for environments, especially SAN environments, running I/O-intensive applications.

Prerequisites

  • Verify that the virtual machine has a guest operating system with VMware Tools installed.
  • Verify that the virtual machine compatibility is ESXi 4.x and later.
  • Ensure that you are familiar with the VMware Paravirtual SCSI controller type.
  • To access boot disk devices attached to a VMware Paravirtual SCSI controller, verify that the virtual machine has a Windows 2003 or Windows 2008 guest operating system.
  • In some operating systems, before you change the controller type, create a virtual machine with an LSI Logic controller, install VMware Tools, and then change to paravirtual mode.

Procedure

  1. Right-click a virtual machine in the inventory and select Edit Settings.
  2. On the Virtual Hardware tab, click the Add New Device button.
  3. Select SCSI Controller from the drop-down menu.
  4. Expand New SCSI controller and from the Change Type menu, select VMware Paravirtual.
    The controller appears at the bottom of the Virtual Hardware device list.
  5. Click OK.

Add an NVMe Controller

If a virtual machine has multiple hard disks, you can add up to four virtual NVMe controllers to which to assign the virtual disks. Using an NVMe controller significantly reduces the software overhead for processing guest OS I/O, as compared to AHCI SATA or SCSI controllers.

NVMe controllers perform best with virtual disks on an all-flash disk array, local NVMe SSD, and PMem storage.

Prerequisites

  • Verify that the virtual machine has a guest operating system that supports NVMe.
  • Verify that the virtual machine compatibility is ESXi 6.5 or later.
  • Verify that you are familiar with storage controller behavior and limitations.
  • Verify that you have the Virtual machine.Change Configuration.Add new disk privilege on the virtual machine.

Procedure

  1. Right-click a virtual machine in the inventory and select Edit Settings.
  2. On the Virtual Hardware tab, click the Add New Device button.
  3. Select NVMe Controller from the drop-down menu.
    The controller appears in the Virtual Hardware devices list.
  4. Click OK.

What to do next

You can add a hard disk to the virtual machine and assign it to the NVMe controller.

Change the SCSI Controller Configuration

You can specify the SCSI controller type and you can set the type of SCSI bus sharing for a virtual machine.

The choice of a SCSI controller type does not affect whether your virtual disk is an IDE or SCSI disk. The IDE adapter is always ATAPI. The default for your guest operating system is already selected.

The choice of a SCSI bus sharing option determines whether virtual machines on different hosts can access the same virtual disk.

Prerequisites

  • Verify that you are familiar with the limitations and conditions for configuring SCSI controllers.
  • Verify that you have the Virtual machine.Change Configuration.Modify device settings privilege on the virtual machine.

Procedure

  1. Right-click a virtual machine in the inventory and select Edit Settings.
  2. On the Virtual Hardware tab, expand SCSI controller, and select a SCSI controller type from the Change Type drop-down menu.
    Caution: Changing the SCSI controller type might result in a virtual machine boot failure.

    Do not select a BusLogic Parallel controller for virtual machines with disks larger than 2 TB. This controller does not support large capacity hard disks.

    The vSphere Client displays information about what happens if you change the SCSI controller type. If you select a controller type that is not recommended for the virtual machine's guest operating system, a warning is displayed.
  3. Expand SCSI controller and select the type of sharing in the SCSI Bus Sharing drop-down menu.
    Option Description
    None Virtual disks cannot be shared by other virtual machines.
    Physical Virtual disks can be shared by virtual machines on any ESXi host.
    Virtual Virtual disks can be shared by virtual machines on the same ESXi host.
    For virtual or physical bus sharing, select Thick provision eager zeroed when you create the disk.
  4. Click OK.