Symptoms:
免責事項:これは英文の記事「hostd crashes due to "Could not initialize AIO handles #########: No free handles"」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。
vGPU が接続された複数の仮想マシンが単一のホスト上で同時に実行されている場合、次の警告メッセージが vmkernel.log ファイルに頻繁に記録されます。
“WARNING: FDS: ###: Could not initialize AIO handles ########: No free handles”
このような状況では、次のような問題が確認されています。
VMware vSphere ESX 7.0
VMware vSphere ESX 8.0
VMware ESX 9.0
ESXiは、システム上のFDSに最大32,768個のAIOハンドルを割り当てることができます。単一のホスト上でvGPUが接続された多数の仮想マシンを実行すると、利用可能なAIOハンドルが枯渇し、空きAIOハンドル不足によりデバイスファイルを開けなくなる可能性があります。
このような状況では、デバイス ファイルを開こうとすると hostd サービスがクラッシュしたり、ESXi サービスが IPMI デバイス ファイルにアクセスできない場合にハードウェア センサーの監視に失敗したり、その他の不安定な症状が見られる場合もあります。
この問題は、VMware ESX 8.0 では VMware ESX 8.0 Update 3i へアップデートし、カーネルパラメータ FDSNumAIOHandles を 65536 に変更することで解決します。
VMware ESX 8.0 Update 3i のインストール完了後、以下の手順に従って FDSNumAIOHandles を変更してください。
Broadcom エンジニアリングチームは VMware ESX 9.0 での修正に向けて取り組んでいます。
FDSNumAIOHandles の変更手順:
FDSNumAIOHandles の値を 65536 に設定します。 esxcli system settings kernel set -s FDSNumAIOHandles -v 65536実行例:# esxcli system settings kernel set -s FDSNumAIOHandles -v 65536
(コマンド実行後の出力はありません) esxcli system settings kernel list -o FDSNumAIOHandles
Example:
# esxcli system settings kernel list -o FDSNumAIOHandles
Name Type Configured Runtime Default Description---------------- ------ ---------- ------- ------- -----------FDSNumAIOHandles uint32 65536 65536 32768 Number of AIO handles that we expect LibAIO at the FDS level to dole out. (Range: 1 - 65536)注記: Runtime 列の値が 65536 に変更されていることを確認してください。
回避策:
VMware ESX 8.0 Update 3h 以前のバージョンもしくは VMware ESX 9.0 ではAIOハンドルを消費している仮想マシンをパワーオフするか、消費量の少ないホストに移行することで、この問題を回避できます。AIOハンドルの使用量を確認するには、ESXシェルのvmkvsitoolsコマンドを以下のように実行してください。
以下のコマンドラインの出力では、最初の列の値が大きいVMが大量のAIOハンドルを消費していることがわかります。2番目の列は、VMのプロセスID(VMX Cartel ID)を示しています。
vmkvsitools lsof | awk '$3=="CHAR" {print $0}' | grep vmgfx | awk '$2=="vmx" {print $1}' | sort | uniq -c | sort -k 1 -n
Ex)# vmkvsitools lsof | awk '$3=="CHAR" {print $0}' | grep vmgfx | awk '$2=="vmx" {print $1}' | sort | uniq -c | sort -k 1 -n<Value1> <VMX_Cartel_ID1><Value2> <VMX_Cartel_ID2><Value3> <VMX_Cartel_ID3>...
VM の VMX Cartel ID は、esxcli vm process list を使用して識別できます。
esxcli vm process list
Ex)# esxcli vm process list<VM Name>World ID: ########Process ID: ###VMX Cartel ID: #######UUID: ## ## ## ## ## ## ## ##-## ## ## ## ## ## ## ##Display Name: ####-########-####-####-####-############Config File: ##########################################...