After upgrading an HBA card driver, storage adapter names change for some of the Fiber Channel vmhbas.
For Example
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.
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.
configstorecli config current get -c esx -g system -k device_data
{
"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"
}
configstorecli config current delete -c esx -g system -k device_data -i <CS_GENERATED_ID>
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"
localcli --plugin-dir /usr/lib/vmware/esxcli/int/ deviceInternal alias store --bus-type logical --alias <ALIAS> --bus-address <LOGICAL_ADDRESS
>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"
},
cp /etc/vmware/esx.conf /etc/vmware/esx.conf.bak
/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"
/vmkdevmgr/logical/pci#s00000003.00#0/alias = "vmhba5"
/vmkdevmgr/logical/pci#s00000003.00#256/alias = "vmhba5"
/vmkdevmgr/logical/pci#s00000003.01#0/alias = "vmhba6"
/vmkdevmgr/logical/pci#s00000003.01#512/alias = "vmhba6"
/vmkdevmgr/logical/pci#s00000001.00#256/alias = "vmhba64"
/vmkdevmgr/logical/pci#s00000001.01#512/alias = "vmhba65"