FastLinQ CNA(QL41xxx/QL45xxx)のvib updateについて

以前とある方より情報をいただいたvib updateに関する内容について、
改めて検証を踏まえ、備忘録として記しておきたいと思います。

 

Marvell社のCNA driverについて

Marvell(旧Qlogic)社からReleaseされているFastLinQ CNAは
プロトコル毎にvibが存在しており、具体的には
qedentv (Ethernet) / qedf (FCoE) / qedil or qedi (iSCSI) / qedrntv (RoCE)の4種類。

 

このVIBは、Marvell社で定められている整合性に遵守されていないと
新規導入時やUpdate時に依存性のエラーを起こしてしまいます。

 

ちなみに、ESXi6.7U3での関連vibはデフォルトだとおおよそこんな状態です。

f:id:pocmemo:20200508210551p:plain

 

ESXi7.0GAはこんな感じ。qedrntvが追加されていますね。

f:id:pocmemo:20200508210821p:plain

 

 

その為、カスタマイズされているメディアを使用されている場合等を除くと
基本的には使用したいプロトコルに合わせてvibを新規導入していく形になりますが、
軽い気持ちで導入を試すと、ほとんどの場合エラーで弾かれてしまいます。

以下はqedfをインストールしようとしてみた図。

あえて失敗するバージョンを入れようとしています。 

f:id:pocmemo:20200508212359p:plain

 

出力されているエラー自体はとてもシンプルで
元々導入されているqedentvとコンパチが合ってない為に
インストールが拒否されている事が確認出来ます。

このCNAに関するvibの依存関係については、vmware社のページではなく
Marvell社のページから確認をする事が可能です。

https://www.marvell.com/products/ethernet-adapters-and-controllers/fastlinq-performance-nics/esxi-drivers.html

 

なおこの整合性については、所謂 "or lator" 的な概念は無いので
完全一致の組み合わせのみ導入が可能です。

ここの組み合わせについては色々検証しがいがあるのですが、
ユースケースがかなり稀だと思うので一旦割愛します。

 

VIBの更新について

vibの導入(新規インストール)については都度CLIから導入が可能なんですが、
問題はvibの更新時です。

基本的にqedentvしか使用していない場合は他のvib同様に、
適宜コマンドラインから個別アップデートという形を取って問題ないですが
このCNAに関する複数のvibが導入されている場合、個別にupdateを試みると
先程検証した際と同様の[DependancyError]が発生してしまいます。
(仮に後でupdateするつもりでも、更新した瞬間の整合性のズレを許容しないという事です。)

これは、例えば既知の問題等によりqedentv "だけ" 更新が必要な場合でも、
このCNAに関するvibはMarvell社の定める整合性に沿って
全て一括でupdateする必要がある事を意味します。

 

 

update時に発生する条件としては恐らく以下2種類のどちらかになると思います。

 

1. qedentv + qedi or qedrntvのどちらか、または双方を使用している環境で
vmware社からダウンロードできるzipファイルを解凍してからデータストアに配置し、
直接vibファイルを指定して更新を試みている

2. qedfがインストールされている

 

vmwareからダウンロードできるqedentvのzipファイルは、qedi並びにqedrntvが内包されています。

https://my.vmware.com/jp/group/vmware/details?downloadGroup=DT-ESXI60-QLOGIC-QEDENTV-311160&productId=491

その為qedfが導入されていない場合は、このzipファイルを対象にupdateをかけてやればOKです。

 

qedfが導入されている場合、このzipバンドルを使用しても
qedfとqedentvで整合性が異なる場合はインストールが弾かれてしまいます。

qedfをqedentvを同時にインストールする際、ワンライナーで複数vibを指定しても
結果は同じになってしまいます。
(ワンライナーで指定しても、結局一つ目のvib更新を試みた時にコンパチから外れてしまう為)

 

 

そこでどうするべきか、という問題が出てきます。

実施するべきワークアラウンドについては、
Marvell社の上述したKBの下部に記載されているように
Packaging Toolsを使用して、このCNAに関するvibを複数一括で導入する事が可能です。

流れとしてはこのPackaging Toolsを使用してvibバンドルをカスタマイズし、
カスタマイズ作成したzipバンドルをコマンドラインで導入する作業想定となります。

 

Packaging Toolsの事前準備

事前準備するもの:

・管理者権限 (一般ユーザで検証した所zipファイルの作成が出来ませんでした。)

・ESXi-CPT-v2.4.exe

・Marvell社の定める整合性リストに沿った各vib

※ 事前にesxcli software vib list等で、どのvibが入っているか確認する必要があります。
この各VIBは、ディレクトリ名は何でもいいので指定しやすい場所に作成し、
こんな感じでvib群だけを入れておくと作業しやすいです。

f:id:pocmemo:20200508220730p:plain

 

ESXi-CPT-v2.4.exeのダウンロード先:

https://www.v-front.de/p/esxi-community-packaging-tools.html
リンク先の"Download Latest version"を選択

 

f:id:pocmemo:20200508220144p:plain

 

ダウンロードされたexeファイルを実行してみると、こんな感じでPathの指定が求められます。
ここは深い意味は無いので、作業しやすいディレクトリを選択すればOKです。

 

f:id:pocmemo:20200508220256p:plain

 

展開したディレクトリを確認すると、いくつかファイルが確認出来ますが
"vib2zip.cmd"を管理者権限で実行しましょう。

 

f:id:pocmemo:20200508220420p:plain

 

実行するとこんな感じでポップアップが開かれます。

Name, version, Vendor等色々入力を求められますが、正直何でもいいです。

重要なのは参照先で、これは先程準備した、vibが収められているディレクトリを指定しましょう。

 

f:id:pocmemo:20200508220433p:plain

 

何がどのように反映されたかわかりやすいようにしておくため、こんな感じで指定しました。

 

f:id:pocmemo:20200508220816p:plain

 

Run! を選択。

5分もかからずに、作成が完了します。

 

f:id:pocmemo:20200508220927p:plain

 

先程zipファイルの格納先をvibの参照先と同一にしておいたので、
作成完了後同じディレクトリにzipファイルが出来上がってます。

先程指定したNameとVersionはそのままzipファイルの名前になるみたいですね。

f:id:pocmemo:20200508220712p:plain

 

このzipファイルをESXi上で指定して導入すれば晴れて作業完了です!

 

参考までにこんな感じの出力になりました。

#esxcli software vib update -d /vmfs/volumes/xxxxxxxxxxxxxxxxxxxxxxxxx/Name-Version-offline_bundle.zip
Installation Result
Message: The update completed successfully, but the system needs to be rebooted for the changes to be effective.
Reboot Required: true
VIBs Installed: QLC_bootbank_qedentv_3.11.16.0-1OEM.670.0.0.8169922, QLC_bootbank_qedf_1.3.41.0-1OEM.600.0.0.2768847, QLC_bootbank_qedi_2.10.19.0-1OEM.670.0.0.8169922, QLC_bootbank_qedrntv_3.11.16.0-1OEM.670.0.0.8169922
VIBs Removed: QLC_bootbank_qedentv_3.0.7.5-1OEM.650.0.0.4598673, QLC_bootbank_qedf_1.2.24.0-1OEM.600.0.0.2768847, QLC_bootbank_qedrntv_3.0.7.5.1-1OEM.650.0.0.4598673, QLC_bootbank_scsi-qedil_1.0.19.0-1OEM.600.0.0.2494585
VIBs Skipped:

 

 

vib updateは慣れてしまえば手軽に実行できる反面、思いもよらないポイントで弾かれると
結構焦るので、備えあれば患いなしという事で備忘録でした。