ESXi 会将虚拟机的磁盘文件存储到位于 SAN 存储设备上的 VMFS 数据存储内。当虚拟机客户机操作系统向其虚拟磁盘发送 SCSI 命令时,SCSI 虚拟化层会将这些命令转换成 VMFS 文件操作。

虚拟机与其在 SAN 上存储的虚拟磁盘交互时,将发生以下过程:

  1. 虚拟机中的客户机操作系统读写 SCSI 磁盘时,将向虚拟磁盘发送 SCSI 命令。

  2. 虚拟机操作系统中的设备驱动程序将与虚拟 SCSI 控制器进行通信。

  3. 虚拟 SCSI 控制器将命令转发至 VMkernel。

  4. VMkernel 将执行以下任务。

    1. 在 VMFS 卷中查找相应的虚拟磁盘文件。

    2. 将对虚拟磁盘上块的请求映射到相应物理设备上的块。

    3. 将修改后的 I/O 请求从 VMkernel 中的设备驱动程序发送至 iSCSI 启动器(硬件或软件)。

  5. 如果 iSCSI 启动器是硬件 iSCSI 适配器(独立或从属),则该适配器执行以下任务:

    1. 将 I/O 请求封装到 iSCSI 协议数据单元 (Protocol Data Unit, PDU)。

    2. 将 iSCSI PDU 封装到 TCP/IP 数据包。

    3. 通过以太网将 IP 数据包发送至 iSCSI 存储系统。

  6. 如果 iSCSI 启动器是软件 iSCSI 适配器,则将发生以下事件。

    1. iSCSI 启动器将 I/O 请求封装到 iSCSI PDU 中。

    2. 启动器通过 TCP/IP 连接发送 iSCSI PDU。

    3. VMkernel TCP/IP 堆栈将 TCP/IP 数据包转发到物理网卡。

    4. 物理网卡通过以太网将 IP 数据包发送至 iSCSI 存储系统。

  7. 网络上的以太网交换机和路由器将请求递送至相应的存储设备。