具有 RDM 的某些虚拟机必须从 LUN 获取 SCSI INQUIRY 信息,而不是使用 ESXi 缓存的 SCSI INQUIRY 数据。

问题

在具有 RDM 的虚拟机中运行的某些客户机操作系统或应用程序会显示不可预知的行为。

原因

该行为可能是由于影响特定客户机操作系统和应用程序的缓存 SCSI INQUIRY 数据所致。

ESXi 主机首次连接到目标存储设备时,此主机会发出 SCSI INQUIRY 命令以从设备获取基本标识数据。默认情况下,ESXi 会缓存收到的 SCSI INQUIRY 数据(标准,第 80 页和第 83 页),且这些数据之后保持不变。从缓存返回对后续 SCSI INQUIRY 命令的响应。

但是,在具有 RDM 的虚拟机中运行的特定客户机操作系统必须查询 LUN,而不是使用 ESXi 缓存的 SCSI INQUIRY 数据。在这些情况下,您可以配置虚拟机忽略 SCSI INQUIRY 缓存。

解决方案

  • 使用下列方法之一。
    选项 描述
    修改具有 RDM 的虚拟机的 .vmx 文件

    为具有硬件版本 8 或更高版本的虚拟机使用此方法。

    1. 将以下参数添加到该文件:
      scsix:y.ignoreDeviceInquiryCache = "true"

      其中,x 是 SCSI 控制器编号,y 是 RDM 的 SCSI 目标编号。

    2. 重新引导虚拟机。
    使用 esxcli 命令

    由于是在主机级别配置此设置的,因此任何虚拟机硬件版本限制均不适用。

    esxcli storage core device inquirycache set --device device id --ignore true
    无需重新引导虚拟机。
    无论使用哪种方法将 SCSI INQUIRY 缓存参数设置为 true,虚拟机均会直接开始为 SCSI INQUIRY 数据连接 LUN。
    忽略 vmx 中的 DeviceInquiryCache 参数 忽略 esxcli 中的 inquirycache 参数 查询请求的出处
    True True LUN
    False(参数不存在时的默认值) True LUN
    True False LUN
    False(参数不存在时的默认值) False 缓存