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 issue 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 issues 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 command to the VMkernel.
The VMkernel performs the following tasks.
Locates the file, which corresponds to the guest virtual machine disk, 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.
Depending on which port the iSCSI initiator uses to connect to the network, Ethernet switches and routers carry the request to the storage device that the host wants to access.