Определение прошивки и версии драйвера устройств в ESXi

Очень часто у администратора vSphere возникает потребность проверить оборудование физического сервера (да и сам сервер) на предмет совместимости с определенной версией ESXi, удостовериться в совместимости версии Firmware определенного компонента, например сетевой карты с версией драйвера, присутствующего в ESXi ну или просто найти подходящий драйвер.

Отсутствие совместимости может критически повлиять на работу гипервизора и привести к различным проблемам, включая самые невероятные и труднодиагностируемые. Поэтому признаком хорошего воспитания считается перед закупом оборудования производить проверку его компонентов (сетевая карта, HBA-адаптер и так далее) на совместимость с требуемой версией ESXi а так же определить так называемую пару firmware version – driver version.

Для этих целей решением служит VMware Hardware Compatibility List (HCL сокращенно), доступный по адресу —  https://www.vmware.com/resources/compatibility/.

Для того что бы проверить компоненты отвечающие за ввод-вывод, а это как правило у нас HBA и NIC, нам нужен раздел с IO Devices — https://www.vmware.com/resources/compatibility/search.php?deviceCategory=io. Мы забиваем в поиске модель нашего оборудования и нередко возникает ситуация типа такого.

Вроде одна и таже модель… А нет не совсем одна и та же. Если открыть каждый из результатов, то как правило мы увидим не совсем одинаковую информацию, по версиям и совместимости. И как понять какое из этих устройств стоит в моем ESXi?

Но, разумеется, есть выход и каждый конкретный экземпляр какого-либо девайса может быть однозначно идентифицирован. Для этого на каждом устройстве присутствует ряд особых идентификаторов.

  • VID – Vendor ID, однозначно идентифицирует производителя чипа.
  • DID – Device ID, идентифицирует устройство в рамках Vendor ID.
  • SVID – Sub Vendor ID, однозначно идентифицирует производителя карты (на которой установлен чип).
  • SSID/SDID – Subsystem ID или Sub-Device ID, идентифицирует устройство в рамках SubSystem Vendor ID.

Как раз таки в ситуациях как на скрине до этого различия заключается в двух последних идентификаторах. И можно искать оборудование в HCL как раз используя данные значения.

Теперь нужно найти эти ID на оборудовании. Так как сетевая карта и HBA адаптер являются на мой взгляд самыми популярными запросами в HCL, разберем на их примере. Большую часть действий будем производить из SSH консоли нашего ESXi сервера.

Сетевая карта

Сначала выведем общую информацию о нашей сетевой карте. Пусть это будет vmnic2.

esxcli network nic get -n vmnic2 

Смотрим результат.

Advertised Auto Negotiation: true
 Advertised Link Modes: 1000BaseSR/Full, 25000BaseSR/Full, Auto
 Auto Negotiation: true
 Cable Type: FIBRE
 Current Message Level: 0
 Driver Info: 
       Bus Info: 0000:33:00:0
       Driver: bnxtnet
       Firmware Version: 222.0.158.0 /pkg 22.21.07.80
       Version: 222.0.155.0
 Link Detected: true
 Link Status: Up 
 Name: vmnic2
 PHYAddress: 1
 Pause Autonegotiate: true
 Pause RX: false
 Pause TX: false
 Supported Ports: FIBRE
 Supports Auto Negotiation: true
 Supports Pause: true
 Supports Wakeon: true
 Transceiver: internal
 Virtual Address: 00:50:56:58:fb:9b
 Wakeon: MagicPacket(tm)

Определяем драйвер (в нашем случае bnxnet), его версию (222.0.155.0). Так же тут видна версия Firmware, но на нее не стоит ориентироваться, лучше определить версию Firmware через инструменты вендора (ILO, IDRAC и так далее).

Затем следующая команда для определения VID, DID, SVID, SDID нашего устройства.

vmkchdev -l | grep vmnic2

Вывод.

0000:33:00.0 14e4:16d7 14e4:4145 vmkernel vmnic2

Разберем полученную информацию. Сначала следует адрес на шине PCI, а затем разделенные двоеточием и пробелом наши идентификаторы.

VID = 14e4
DID = 16d7
SVID = 14e4
SDID = 4145

На основе полученной информации мы можем однозначно определить наше оборудование в VMware HCL.

HBA адаптер

Схема максимально похожа на предыдущий пример. В зависимости от типа HBA выбираем один из вариантов из квадратных скобок. В нашем примере пусть будет fc, и часть вывода с информацией о vmhba4.

esxcli storage san [fc|iscsi|fcoe|sas] list
...
Adapter: vmhba4
    Port ID: 650100
    Node Name: 20:00:00:10:9b:f7:e1:d8
    Port Name: 10:00:00:10:9b:f7:e1:d8
    Speed: 32 Gbps
    Port Type: NPort
    Port State: ONLINE
    Model Description: Emulex LPe35002-M2-D 2-Port 32Gb Fibre Channel Adapter
    Hardware Version: 0000000d
    OptionROM Version: 14.0.539.16
    Firmware Version: 14.0.539.16
    Driver Name: lpfc
    DriverVersion: 14.0.622.0
...

Все как в первом примере, драйвер, его версия и прошивка (lpfc, 14.0.622.0, 14.0.539.16). И таже самая команда для определения ID-шников и тот же самый принцип вывода.

[root@esxi:~] vmkchdev -l | grep vmhba2
0000:00:11.5 8086:a1d2 1028:090e vmkernel vmhba2

VID = 8086
DID = a1d2
SVID = 1028
SDID = 090e

P.S.

Так же есть утиллита esxcfg-info.

esxcfg-info | less 

Это достаточная комплексная, интерактивная и громоздкая утилита по поиску информации обо всех устройствах на борту ESXi. После ее запуска можно ввести «/» и идентификатор любого интересующего нас устройства в контексте vmkernel, например vmhba1 или vmnic0 и увидеть всю связанную с ним «железную» информацию, в том числе и VID, DID, SVID, SDID. Что бы выйти из нее нажмите «Ctrl+Z».

Описанные в данной статье пути определения VID, DID, SVID, SDID не является единственным. Ознакомиться с полным набором можно тут — https://kb.vmware.com/s/article/1027206#NIC.