Lately while storage team was planning to upgrade the storage system OS, during initial checks they found there are some ESXi hosts in the environment having an old version of hba driver so, they sent their recommendation to upgrade the hba driver to a minimum supported version or later.
Now here is the point, while planning to upgrade the hba or any other device driver always make sure to check and upgrade the firmware of the device to a compatible version as well otherwise you might face some serious performance and related issues (better to upgrade the device driver and firmware at same time).
One can check and verify the IO devices firmware/driver compatibly and ESXi support information on VMware Compatibility Guide Site.
Now here are the steps to check the installed firmware/driver version of any connected hba device.
First check what type of hba driver is being used on the server by running one of the following cmd,
# esxcfg-scsidevs -a
Or
To quickly check the HBA Driver in use:
1. Open a console to the ESXi/ESX host.
2. Run this command to obtain the driver type that the Host Bus Adapter is currently using:
# esxcfg-scsidevs -a
Or
Now here is the point, while planning to upgrade the hba or any other device driver always make sure to check and upgrade the firmware of the device to a compatible version as well otherwise you might face some serious performance and related issues (better to upgrade the device driver and firmware at same time).
One can check and verify the IO devices firmware/driver compatibly and ESXi support information on VMware Compatibility Guide Site.
Now here are the steps to check the installed firmware/driver version of any connected hba device.
First check what type of hba driver is being used on the server by running one of the following cmd,
# esxcfg-scsidevs -a
Or
# esxcli storage core adapter list
The second column of the output shows the driver that is configured for the HBA.
For native hba driver, use following cmds to get the driver/firmware detail:
# /usr/lib/vmware/vmkmgmt_keyval/vmkmgmt_keyval -d
Here you can see the names of connected HBAs, suppose they’re: vmhba0 and vmhba2
# /usr/lib/vmware/vmkmgmt_keyval/vmkmgmt_keyval -l -i vmhba0/Emulex (type the hba/vender_name correctly as it’s case sensitive)
The output of the cmd will show you the installed hba firemware & driver version.
To check the information when legacy driver is being in use.
Go to /proc/scsi directory and look for lpfc (for emulex) or qla (for qlogic) or bfa (for brocade and sometime for qlogic as well).
Now, change the directory to appropriate hba model dir, if its lpfc then:
# cd /proc/scsi/lpfc####
Where #### is the model of the Emulex hba
Run the cmd the content of this dir,
# ls -lia
Now check the files available here (with the names as a number), in case there is a file named 6 then:
# Cat 6
You would get an output similar to,
Chip Revision: Rev-D
Manufacturer: QLogic
Model Description: QLogic-###
Instance Num: 0
Serial Num: ALX0xxxxxxxx
Firmware Version: 5.4.x.x
Hardware Version: Rev-D
Bios Version: x.x.x.x
Optrom Version: x.x.x.x
Port Count: 1
WWNN: xxxxxxxxxxxxxxxxx
WWPN: xxxxxxxxxxxxxxxxxx
The second column of the output shows the driver that is configured for the HBA.
For native hba driver, use following cmds to get the driver/firmware detail:
# /usr/lib/vmware/vmkmgmt_keyval/vmkmgmt_keyval -d
Here you can see the names of connected HBAs, suppose they’re: vmhba0 and vmhba2
# /usr/lib/vmware/vmkmgmt_keyval/vmkmgmt_keyval -l -i vmhba0/Emulex (type the hba/vender_name correctly as it’s case sensitive)
The output of the cmd will show you the installed hba firemware & driver version.
To check the information when legacy driver is being in use.
Go to /proc/scsi directory and look for lpfc (for emulex) or qla (for qlogic) or bfa (for brocade and sometime for qlogic as well).
Now, change the directory to appropriate hba model dir, if its lpfc then:
# cd /proc/scsi/lpfc####
Where #### is the model of the Emulex hba
Run the cmd the content of this dir,
# ls -lia
Now check the files available here (with the names as a number), in case there is a file named 6 then:
# Cat 6
You would get an output similar to,
Chip Revision: Rev-D
Manufacturer: QLogic
Model Description: QLogic-###
Instance Num: 0
Serial Num: ALX0xxxxxxxx
Firmware Version: 5.4.x.x
Hardware Version: Rev-D
Bios Version: x.x.x.x
Optrom Version: x.x.x.x
Port Count: 1
WWNN: xxxxxxxxxxxxxxxxx
WWPN: xxxxxxxxxxxxxxxxxx
To quickly check the HBA Driver in use:
1. Open a console to the ESXi/ESX host.
2. Run this command to obtain the driver type that the Host Bus Adapter is currently using:
# esxcfg-scsidevs -a
Or
# esxcli storage core adapter list
Note: The second column shows the driver that is configured for the HBA.
1. Run this command to view the driver version in use:
# vmkload_mod -s HBADriver | grep Version
Note: The second column shows the driver that is configured for the HBA.
1. Run this command to view the driver version in use:
# vmkload_mod -s HBADriver | grep Version
For example, run this command to check the vmkata driver:
# vmkload_mod -s vmkata | grep Version
# vmkload_mod -s vmkata | grep Version
Great info. Is there way to get HBA firmware drivers for all ESX hosts?
ReplyDeleteYes, this can be done using a PowerCLI script...
DeleteHow?
DeleteYou may find this useful, https://www.vcloudnotes.com/2019/12/powercli-script-to-get-hba-firmware-and.html
Deletethank you for the command for a in $(esxcfg-scsidevs -a |awk '{print $2}') ;do vmkload_mod -s $a |grep -i version ;done
ReplyDeleteGreat
Good to know that it helped.
Delete