「Could not initialize AIO handles #########: No free handles」により hostd がクラッシュします
search cancel

「Could not initialize AIO handles #########: No free handles」により hostd がクラッシュします

book

Article ID: 416392

calendar_today

Updated On:

Products

VMware vSphere ESXi VMware vSphere ESX 8.x VMware vSphere ESX 7.x

Issue/Introduction

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”

このような状況では、次のような問題が確認されています。

  • Hostdプロセスがクラッシュする
  • ハードウェアヘルスアラームがトリガーされる
  • デバイスファイルを開こうとすると失敗する
  • 仮想マシンがクラッシュし、ブルースクリーン(BSOD)が表示される

Environment

VMware vSphere ESX 7.0
VMware vSphere ESX 8.0
VMware ESX 9.0

Cause

ESXiは、システム上のFDSに最大32,768個のAIOハンドルを割り当てることができます。単一のホスト上でvGPUが接続された多数の仮想マシンを実行すると、利用可能なAIO​​ハンドルが枯渇し、空きAIOハンドル不足によりデバイスファイルを開けなくなる可能性があります。

このような状況では、デバイス ファイルを開こうとすると hostd サービスがクラッシュしたり、ESXi サービスが IPMI デバイス ファイルにアクセスできない場合にハードウェア センサーの監視に失敗したり、その他の不安定な症状が見られる場合もあります。

Resolution

この問題は、VMware ESX 8.0 では VMware ESX 8.0 Update 3i へアップデートし、カーネルパラメータ FDSNumAIOHandles65536 に変更することで解決します。
VMware ESX 8.0 Update 3i のインストール完了後、以下の手順に従って FDSNumAIOHandles を変更してください。

Broadcom エンジニアリングチームは VMware ESX 9.0 での修正に向けて取り組んでいます。

 

FDSNumAIOHandles の変更手順:

 

  1. ssh または DCUI を使用して、対象の ESXi ホストにログインします。

  2. 以下のコマンドを実行し、FDSNumAIOHandles の値を 65536 に設定します。

      esxcli system settings kernel set -s FDSNumAIOHandles -v 65536

    実行例:
    # esxcli system settings kernel set -s FDSNumAIOHandles -v 65536
    (コマンド実行後の出力はありません)


  3. ESX ホストを再起動します。

  4. 以下のコマンドを実行し、新しい値が適用されていることを確認します。

      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: ##########################################
...