Очень часто у администратора 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.