How Virtual Machines Access Storage
Virtual machines use virtual disks for their operating system, application software, and other data files. A virtual disk is stored as a VMDK file on a datastore. The virtual disk hides the physical storage layer from the virtual machine’s operating system. Regardless of the type of storage device that your host uses, the virtual disk always appears to the virtual machine as a local SCSI device. As a result, you can run operating systems that are not certified for specific storage equipment, such as SAN, in the virtual machine.
When a virtual machine communicates with its virtual disk stored on a datastore, it issues SCSI commands. Because datastores can exist on different types of physical storage, these commands are encapsulated into other forms, depending on the protocol that the ESX/ESXi host uses to connect to the physical storage device.
To the applications and guest operating systems running on each virtual machine, the storage subsystem appears as a virtual SCSI controller connected to one or more virtual SCSI disks as shown in the top half of Storage Architecture. These controllers are the only types of SCSI controllers that a virtual machine can see and access, and include the objects that extend VirtualSCSIController:
- ParaVirtualSCSIController
- VirtualBusLogicController
- VirtualLsiLogicController
- VirtualLsiLogicSASController
How precisely a virtual machine accesses storage depends on the setup of the host. Storage API Architecture gives an overview of the different possibilities.
