Version de firmware des HBA

En prévision d’une montée de version des contrôleurs d’une baie SAN, il nous a été demandé de fournir des informations sur les serveurs ESXi qui étaient connectés à ces baies, notamment des informations sur leurs HBA.

Dans les informations demandées, il y avait du simple (driver, modèle de la carte, …) et du plus compliqué (version de firmware de chaque carte).

Une bonne partie des informations étaient disponibles en PowerCLI dans la partie Config.StorageDevice.HostBusAdapter d’un objet de type HostSystem :

Cependant, pour récupérer la version du firmware de la carte, ce fut plus tendu … Après pas mal de recherche (infructueuse) dans les objets et propriétés, on est tombé sur cette KB VMware : Identifying the firmware of a Qlogic or Emulex FC HBA et de la note en fin de page qui explique le pourquoi du comment :

Note: You can determine the firmware of HBAs only using Direct Console access or SSH and not via RCLI or vMA.

Donc pour le coup, on a pas le choix, on est obligé de passer par SSH et récupérer les infos en commandes. Comme on ne voulait pas faire 2 scripts distincts, on a utilisé plink.exe (exécutable fournit avec puTTy qui permet d’exécuter des commandes à travers une session SSH en automatique) en l’appelant via le script PowerCLI.

Voici un exemple d’informations récupérées sur une carte EMULEX :

~ # head -9 /proc/scsi/lpfc820/7
Emulex LightPulse Fibre Channel SCSI driver 8.2.1.30.1-58vmw
IBM 42C2071 4Gb 2-Port PCIe FC HBA for System x on PCI bus 0000:1e device 00 irq 200 port 0
BoardNum: 0
Firmware Version: 2.82A3 (Z3F2.82A3)
Portname: XXX   Nodename: XXX

SLI Rev: 3
   NPIV Unsupported by Fabric
   RPIs max 512  RPIs used 1

Voici un exemple d’informations récupérées sur une carte QLOGIC :

~ # head -8 /proc/scsi/qla2xxx/9
QLogic PCI to Fibre Channel Host Adapter for QLE2460:
       FC Firmware version 5.02.00 (496), Driver version 831.k

Host Device Name vmhba5

BIOS version 1.28
FCODE version 1.24
EFI version 1.08

Voici donc un script PowerCLI qui va récupérer les informations suivantes :

  • Host Name
  • ESXi Product Version
  • Hba Device
  • Hba World Wide Name
  • Hba Driver
  • Hba Model
  • Hba Firmware Version
  • Hardware Model

Le script prend 4 paramètres :

  • PlinkPath : Chemin vers l’exécutable plink.exe pour le lancement des commandes SSH
  • Username : Nom de compte utilisé pour la connexion SSH
  • Password : Mot de passe du compte utilisé pour la connexion SSH
  • CSVPath : [OPTIONNEL] Chemin pour un export vers un fichier csv. Si ce paramètre n’est pas renseigné, le résultat sera affiché.
.\hba-infos.ps1 -PlinkPath 'C:\Program Files (x86)\PuTTY\plink.exe' -Username root -Password VMwareRox
.\hba-infos.ps1 -PlinkPath 'C:\Program Files (x86)\PuTTY\plink.exe' -Username root -Password VMwareRox -CSVPath C:\HBA-infos.csv

Si vous avez renseigné le paramètre CSVPath vous aurez un fichier csv qui sera facilement exploitable sous Excel :

Vous pouvez télécharger le script ici : hba-infos.ps1
Post also available in : Anglais

3 comments

  1. Hello,

    MErci pour ce script très utile ! En revanche j’ai relevé deux erreurs :

    - Dans votre article ou se trouve l’encadré avec les deux lignes de commande en CLI, ce n’est pas « PlinPath » mais « PlinKPtah » (manque le « k »). C’est vicieux ! ;o)

    - En revanche lorsque je lance le script, il me renvoi une erreur « tentative de division par zéro » (ligne 47, caractère 283).
    Apparemment cela correspond à l’opération de division, mais je ne comprend pas bien comment le résoudre…

    Merci d’avance !
    Cdt,

    • Effectivement, il manquait le ‘k’ dnas l’exemple sur l’article, c’est corrigé (merci :p)
      Pour l’erreur de division par zéro, ça correspond à la barre de progression qui se base sur le total des hôtes qu’il va interroger.
      Si il te met division par zéro, cela veut dire que ($hostsview | ?{$_.runtime.PowerState -match "poweredOn"}).count) est égal à zero, bizarre…
      Essaye de faire un source du script (en mettant . .\hba-infos.ps1) et essaye de voir ce que contient la valeur $hostsview.
      Cette valeur devrait contenir : $hostsview = Get-View -ViewType HostSystem -Property ("runtime", "name", "config", "hardware")
      Regarde et tiens moi au courant :p

Laisser un commentaire

Required fields are marked *.

*