ESXi stores a virtual machine's disk files within a VMFS datastore that resides on a SAN storage device. When virtual machine guest operating systems send SCSI commands to their virtual disks, the SCSI virtualization layer translates these commands to VMFS file operations.
When a virtual machine interacts with its virtual disk stored on a SAN, the following process takes place:
When the guest operating system in a virtual machine reads or writes to SCSI disk, it sends SCSI commands to the virtual disk.
Device drivers in the virtual machine’s operating system communicate with the virtual SCSI controllers.
The virtual SCSI controller forwards the commands to the VMkernel.
The VMkernel performs the following tasks.
Locates an appropriate virtual disk file in the VMFS volume.
Maps the requests for the blocks on the virtual disk to blocks on the appropriate physical device.
Sends the modified I/O request from the device driver in the VMkernel to the iSCSI initiator (hardware or software).
If the iSCSI initiator is a hardware iSCSI adapter, both independent or dependent, the adapter performs the following tasks.
Encapsulates I/O requests into iSCSI Protocol Data Units (PDUs).
Encapsulates iSCSI PDUs into TCP/IP packets.
Sends IP packets over Ethernet to the iSCSI storage system.
If the iSCSI initiator is a software iSCSI adapter, the following takes place.
The iSCSI initiator encapsulates I/O requests into iSCSI PDUs.
The initiator sends iSCSI PDUs through TCP/IP connections.
The VMkernel TCP/IP stack relays TCP/IP packets to a physical NIC.
The physical NIC sends IP packets over Ethernet to the iSCSI storage system.
Ethernet switches and routers on the network carry the request to the appropriate storage device.