高負荷なI/O下で仮想マシンが断続的にフリーズしたり応答しなくなったりする
search cancel

高負荷なI/O下で仮想マシンが断続的にフリーズしたり応答しなくなったりする

book

Article ID: 419534

calendar_today

Updated On:

Products

VMware vCenter Server VMware vSphere ESXi

Issue/Introduction

免責事項これは英文の記事「Virtual machines freeze intermittently or goes unresponsive under heavy I/O load」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。

  • 影響を受けた仮想マシンがあるESXiホストでコマンドを実行すると、以下のような結果が返されます。

    $ ps -s | grep <vm-name>

4313969 vmm0: vm-name COSTOP NONE 0-63
4313971 vmm1:vm-name WAIT SCSI 0-63
4313972 4313957 vmx-vthread-5:vm-name WAIT UFUTEX 0-63 /bin/vmx
4314204 4313957 vmx-vthread-6:vm-name WAIT UFUTEX 0-63 /bin/vmx
4314205 4313957 vmx-vthread-7:vm-name WAIT UFUTEX 0-63 /bin/vmx
4314206 4313957 vmx-vthread-8:vm-name WAIT UFUTEX 0-63 /bin/vmx
4314210 4313957 vmx-mks:vm-name WAIT UPOL 0-63 /bin/vmx
4314212 4313957 vmx-svga:vm-name WAIT SEMA 0-63 /bin/vmx
4314214 4313957 vmx-vcpu-0:vm-name COSTOP NONE 0-63 /bin/vmx
4314215 4313957 vmx-vcpu-1:vm-name WAIT SCSI 0-63 /bin/vmx


         注: vmm1がSCSI呼び出し(WAIT SCSI)でブロックされています。

  • 以下のエラーが表示される場合があります。
    `Unable to connect to the MKS: Error connecting to /bin/vmx process.`
  • ネットワーク経由で仮想マシンにアクセスできなくなる
  • 仮想マシンが無効な状態を報告する場合がある
  • 仮想マシンが応答しない

Environment

VMware vCenter Server 6.5.x
VMware vCenter Server 6.7.x
VMware vCenter Server 7.x
VMware vCenter Server 8.x


VMware vSphere ESXi 6.5.x
VMware vSphere ESXi 6.7.x
VMware vSphere ESXi 7.x
VMware vSphere ESXi 8.x

Cause


仮想マシンが応答しなくなる原因として、以下のようなものがあります:

  • 静止操作をされたスナップショットの取得、またはカスタムの静止操作をともなうスクリプトの使用
  •  ESXiホストへの高負荷なI/O負荷
  • デバイス、ストレージプール、および/またはLUNレベルでのストレージパフォーマンスの問題
  • Virtual Machine Monitor (VMM) スレッドの1つがVSCSI呼び出しでブロックされ、他のVMMスレッドが相互停止(Co-Stop)して、ブロックされたスレッドが進捗するのを待っている

Resolution

回避策

注意:スナップショット統合タスクが実行されていないことを確認してください。この間、VMでバックアップが実行されていないことを確認してください。

ロックされた状態から仮想マシンを復旧するには:

     1. 仮想マシンのプロセスリストを見つけ、Cartel IDを確認します。
         $ ps -s | grep <VM名>

         注: 本記事の「Issue/Introduction」セクションに記載されている ps -s の出力をご参照ください

     2.  SCSIイベントを待機している`vmx-vcpu`の値を見つけます。

         注:出力の2列目の数字がCartel IDです。

     3. 停止しているプロセスを続行するために以下のコマンドを実行します。
         $ kill -18 <Cartel ID>

     4. 上記の手順を実行した後、仮想マシンをリロードする必要がある場合があります。詳細については、「Reloading a vmx file without removing the virtual machine from Inventory.」を参照してください。

Additional Information