hbrsrv のデッドロックによりレプリケーションが「ディスクの統合が進行中です」で停止してRPO 違反が発生する
search cancel

hbrsrv のデッドロックによりレプリケーションが「ディスクの統合が進行中です」で停止してRPO 違反が発生する

book

Article ID: 446356

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

多数の仮想マシンで拡張レプリケーション(Enhanced Replication)を使用している場合、以下の事象が発生することがあります。

  • 複数の仮想マシンで、断続的または継続的に RPO 違反が発生する。
  • 影響を受ける仮想マシンのレプリケーション タスクが 「ディスクの統合が進行中です (Disk consolidation in progress)」 の状態で停止したように見える。
  • リカバリ サイト上の hbrsrv サービスが、メモリ不足 (OOM: Out-of-Memory) 条件により断続的にクラッシュする。

Environment

vSphere Replication 9.0.x

Cause

この問題は、多数のレプリケーション プロセスが同時に集中したことによって、リカバリサイトの hbrsrv サービス内でデッドロック条件が引き起こされるために発生します。

デッドロックの原因は、大量の同時レプリケーション管理タスク(RefreshInstances() など)によって内部の統合キューが飽和することにあります。
依存関係にあるタスク(ディスクの統合や子 LRO など)も同じキューに追加されますが、管理タスクがこれら依存タスクの完了を待機しながら利用可能なスレッドをすべて占有してしまうため、依存タスクが処理されなくなります。

この相互に待ち合う状態がデッドロックを招きます。タスクがキューに蓄積され続けると、最終的にメモリ不足 (OOM) 状態に至り、サービスがクラッシュします。


 

 

Resolution

Broadcom エンジニアリングはこの問題を認識しており、将来のリリースでの修正に向けて現在取り組んでいます。

デッドロックのリスクを軽減するための暫定的な回避策として、以下の手順を実行し、configstorecli を使用して hbrsrv 構成内のキューおよび同時実行の制限値を増やします。

Workaround

この手順は、リカバリ サイトに配置されているすべての ESXi ホストで実行する必要があります。

  1. リカバリ サイトの ESXi ホストに root ユーザーとして SSH でログイン

  2. 現在の構成を一時的な JSON ファイルにエクスポート

    configstorecli config default get -c hbr -g services -k hbrsrv -p vmacore -o /tmp/config.json

  3. vi エディタを使用してファイルを開く

    vi /tmp/config.json

  4. thread_pool セクションを探し、max_concurrency を 321 に、task_max256 に変更
    Before:
    "thread_pool": {
      "io_max": 64,
      "io_min": 2,
      "max_concurrency": 193,
      "task_max": 128,
      "task_min": 2,
      "thread_name_prefix": "hbrsrv",
      "thread_stack_size_kb": 64
    }

    After:

    "thread_pool": {
      "io_max": 64,
      "io_min": 2,
      "max_concurrency": 321,
      "task_max": 256,
      "task_min": 2,
      "thread_name_prefix": "hbrsrv",
      "thread_stack_size_kb": 64
    }

  5. ファイルを保存し、変更した構成を適用
    configstorecli config current set -c hbr -g services -k hbrsrv -p vmacore -j /tmp/config.json
  6. 変更が正常に適用されたことを確認
    configstorecli config current get -c hbr -g services -k hbrsrv -p vmacore
  7. hbrsrv サービスを再起動して変更を反映
    /etc/init.d/hbrsrv restart

Additional Information

RPO violations occur and replication gets stuck at "Disk consolidation in progress" due to hbrsrv deadlock