After upgrading the HBA card driver, storage adapter names change for some of the FC vmhbas
search cancel

After upgrading the HBA card driver, storage adapter names change for some of the FC vmhbas

book

Article ID: 344268

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

After upgrading an HBA card driver, storage adapter names change for some of the Fiber Channel vmhbas.

For Example

  • Before Upgrade
    • vmhba2
    • vmhba3
  • After Upgrade
    • vmhba64
    • vmhba65

The example illustrates the random change that occurs when using the "esxcli storage core adapter list" command. In this case, the device alias numbers vmhba2 and vmhba3 change to vmhba64 and vmhba65, when device numbers vmhba5 and vmhba6 are not changed. However, using the "esxcli hardware pci list" command, the device numbers do not change after upgrade.

Cause

This is not an ESXi issue. A driver did not understand the API Contract and has broken upgrade compatibility.

During the esx boot process, the esx.conf file was changed.

Example esx.conf file

/vmkdevmgr/pci/s00000001.00/alias = "vmhba2"
/vmkdevmgr/pci/s00000001.01/alias = "vmhba3"
/vmkdevmgr/pci/s00000003.00/alias = "vmhba5"
/vmkdevmgr/pci/s00000003.01/alias = "vmhba6"
/vmkdevmgr/logical/pci#s00000001.00#2/alias = "vmhba2"
/vmkdevmgr/logical/pci#s00000001.01#3/alias = "vmhba3"
/vmkdevmgr/logical/pci#s00000003.00#256/alias = "vmhba5"
/vmkdevmgr/logical/pci#s00000003.01#512/alias = "vmhba6"
/vmkdevmgr/logical/pci#s00000001.00#256/alias = "vmhba64"
/vmkdevmgr/logical/pci#s00000001.01#512/alias = "vmhba65"


Note: This issue is external to VMware and not all ESXi hosts may be affected. ESXi displays device alias names but it does not use them for any operations.

Resolution

To resolve this issue, use any one of these options:
  • Using host profile to change the vmhba alias name
  • Change the esx.conf file manually
Caution: VMware does not recommend changing the esx.conf file manually.
 

Addressing ESXi 7.0 Hosts

To resolve this issue, use configstorecli to change the vmhba alias name.
  1. List all vmhba alias entries:

    configstorecli config current get -c esx -g system -k device_data

  2. Identify affected vmhba alias based on the 'bus_address' + 'alias' fields.

    For example:

       {
         "alias": "vmhba3",
         "alias_pending": false,
         "bus_address": "pci#s00000005.00#2"
         "bus_type": "logical"
         "cs_generated_id: "52 3c 3a 77 cf 0d ad ba-26 86 29 be 72 97 72 72"
       }

  3. Delete affected vmhba alias:

    configstorecli config current delete -c esx -g system -k device_data -i <CS_GENERATED_ID>

    For example:

    configstorecli config current delete -c esx -g system -k device_data -i "52 3c 3a 77 cf 0d ad ba-26 86 29 be 72 97 72 72"

  4. Change affected vmhba alias as previous

    localcli --plugin-dir /usr/lib/vmware/esxcli/int/ deviceInternal alias store --bus-type logical --alias <ALIAS> --bus-address <LOGICAL_ADDRESS>

    For example:

    localcli --plugin-dir /usr/lib/vmware/esxcli/int/ deviceInternal alias store --bus-type logical --alias vmhba9 --bus-address "pci#s00000003.00#0"

    configstorecli config current get -c esx -g system -k device_data
       {
          "alias": "vmhba9",
          "alias_pending": true,
          "bus_address": "pci#s00000003.00#0",
          "bus_type": "logical",
          "cs_generated_id": "52 d5 30 30 4d cf 9a 40-80 6b 97 5d 25 b9 60 b9"
       },

    5. List vmhba alias to confirm alias has changed correctly.

    6. Reboot the ESXi host

Addressing ESXi 6.x Hosts

  1. SSH to the ESXi host via root
  2. Run this command to save the original esx.conf file:

    cp /etc/vmware/esx.conf /etc/vmware/esx.conf.bak
     
  3. Using a text editor, open the /etc/esx.conf file. The content of the file looks similar to:

    /vmkdevmgr/pci/s00000001.00/alias = "vmhba2"
    /vmkdevmgr/pci/s00000001.01/alias = "vmhba3"
    /vmkdevmgr/pci/s00000003.00/alias = "vmhba5"
    /vmkdevmgr/pci/s00000003.01/alias = "vmhba6"
    /vmkdevmgr/logical/pci#s00000001.00#2/alias = "vmhba2"
    /vmkdevmgr/logical/pci#s00000001.01#3/alias = "vmhba3"
    /vmkdevmgr/logical/pci#s00000003.00#256/alias = "vmhba5"
    /vmkdevmgr/logical/pci#s00000003.01#512/alias = "vmhba6"
    /vmkdevmgr/logical/pci#s00000001.00#256/alias = "vmhba64"
    /vmkdevmgr/logical/pci#s00000001.01#512/alias = "vmhba65"
     
  4. In the /etc/esx.conf file, locate this line:

    /vmkdevmgr/logical/pci#s00000003.00#0/alias = "vmhba5"

    Modify the line as:

    /vmkdevmgr/logical/pci#s00000003.00#256/alias = "vmhba5"
     
  5. In the /etc/esx.conf file, locate this line:

    /vmkdevmgr/logical/pci#s00000003.01#0/alias = "vmhba6"

    Modify the line as:

    /vmkdevmgr/logical/pci#s00000003.01#512/alias = "vmhba6"
     
  6. In the /etc/esx.conf file, locate these two lines and delete them:

    /vmkdevmgr/logical/pci#s00000001.00#256/alias = "vmhba64"
    /vmkdevmgr/logical/pci#s00000001.01#512/alias = "vmhba65"
     
  7. Save and close the file.
  8. Reboot the ESXi host.

Additional Information