Certain virtual machines with RDMs must obtain the SCSI INQUIRY information from the LUN instead of using SCSI INQUIRY data cached by ESXi.

Problem

Certain guest operating systems or applications that run in the virtual machines with the RDMs display unpredictable behavior.

Cause

This behavior might be caused by cached SCSI INQUIRY data that interferes with specific guest operating systems and applications.

When the ESXi host first connects to a target storage device, it issues the SCSI INQUIRY command to obtain basic identification data from the device. By default, ESXi caches the received SCSI INQUIRY data (Standard, page 80, and page 83), and the data remains unchanged afterwards. Responses for subsequent SCSI INQUIRY commands are returned from the cache.

However, specific guest operating systems running in virtual machines with RDMs must query the LUN instead of using SCSI INQUIRY data cached by ESXi. In these cases, you can configure the VM to ignore the SCSI INQUIRY cache.

Solution

  • Use one of the following methods.
    Option Description
    Modify the .vmx file of the virtual machine with the RDM

    Use this method for the VMs with hardware version 8 or later.

    1. Add the following parameter to the file:
      scsix:y.ignoreDeviceInquiryCache = "true"

      where x is the SCSI controller number and y is the SCSI target number of the RDM.

    2. Reboot the VM.
    Use the esxcli command

    Because you configure the setting at a host level, no VM hardware version limitations apply.

    esxcli storage core device inquirycache set --device device id --ignore true
    No VM reboot is required.
    No matter which method you use to set the SCSI INQUIRY cache parameter to true, the VM starts contacting the LUN directly for the SCSI INQUIRY data.
    ignoreDeviceInquiryCache parameter in vmx ignore inquirycache parameter in esxcli Inquiry request serviced from
    True True LUN
    False (default if the parameter is not present) True LUN
    True False LUN
    False (default if the parameter is not present) False Cache