如果 ESXi 主机对 LUN 生成的命令超过 LUN 队列深度所允许的数量,则超出的命令会在 VMkernel 中排队。这会增加滞后时间,或是完成 I/O 请求所需的时间。

问题

主机完成 I/O 请求所需的时间更长,且虚拟机会显示性能不佳。

原因

这个问题可能是由于 LUN 队列深度不够而引起的。SCSI 设备驱动程序有一个名为 LUN 队列深度的可配置参数,可确定向给定 LUN 发出的命令中同时处于活动状态的数量。如果主机对 LUN 生成过多的命令,则超出的命令会在 VMkernel 中排队。

解决方案

  1. 如果所有虚拟机中活动命令的总和总是超出 LUN 深度,则会增加队列深度。
    用于增加队列深度的过程取决于主机使用的存储适配器类型。
  2. 多个虚拟机在 LUN 上处于活动状态时,请更改 Disk.SchedNumReqOutstanding (DSNRO) 参数,使其与队列深度值相匹配。