ESXi 会将虚拟机的磁盘文件存储到位于 SAN 存储设备上的 VMFS 数据存储内。当虚拟机客户机操作系统向其虚拟磁盘发送 SCSI 命令时,SCSI 虚拟化层会将这些命令转换成 VMFS 文件操作。
虚拟机与其在 SAN 上存储的虚拟磁盘交互时,将发生以下过程:
- 虚拟机中的客户机操作系统读写 SCSI 磁盘时,将向虚拟磁盘发送 SCSI 命令。
- 虚拟机操作系统中的设备驱动程序将与虚拟 SCSI 控制器进行通信。
- 虚拟 SCSI 控制器将命令转发至 VMkernel。
- VMkernel 将执行以下任务。
- 在 VMFS 卷中查找相应的虚拟磁盘文件。
- 将对虚拟磁盘上块的请求映射到相应物理设备上的块。
- 将修改后的 I/O 请求从 VMkernel 中的设备驱动程序发送至 iSCSI 启动器(硬件或软件)。
- 如果 iSCSI 启动器是硬件 iSCSI 适配器(独立或从属),则该适配器执行以下任务:
- 将 I/O 请求封装到 iSCSI 协议数据单元 (Protocol Data Unit, PDU)。
- 将 iSCSI PDU 封装到 TCP/IP 数据包。
- 通过以太网将 IP 数据包发送至 iSCSI 存储系统。
- 如果 iSCSI 启动器是软件 iSCSI 适配器,则将发生以下事件。
- iSCSI 启动器将 I/O 请求封装到 iSCSI PDU 中。
- 启动器通过 TCP/IP 连接发送 iSCSI PDU。
- VMkernel TCP/IP 堆栈将 TCP/IP 数据包转发到物理网卡。
- 物理网卡通过以太网将 IP 数据包发送至 iSCSI 存储系统。
- 网络上的以太网交换机和路由器将请求递送至相应的存储设备。