仮想マシンに変更がないにもかかわらず、vSphere Replication が大量のデータをレプリケートしている
search cancel

仮想マシンに変更がないにもかかわらず、vSphere Replication が大量のデータをレプリケートしている

book

Article ID: 410023

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

免責事項:これは英文の記事「vSphere Replication is replicating huge data though there are no changes occurring on the virtual machine」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新の内容については、英語版の記事を参照してください。

  1. vSphere Replicationが仮想マシンに変更がないにもかかわらず、現在、大量のデータをレプリケートしています。
    これにより、VM レプリケーションが「RPO 違反」状態になり、レプリケーション ジョブが完了しません。
  2. Windows OS がEvent ID 129 – LSI_SAS Errors (Reset to device, \Device\RaidPort0, was issued.) などの LSI リセット イベントを報告します。
  3. ユーザーが特にメールをダウンロードする際に、Microsoft Outlook のパフォーマンスの低下を観測します。
  4. さらに、ゲスト オペレーティング システムが応答しなくなったり、ハング状態になったりして、Exchange アプリケーションの著しい遅延につながる可能性があります。

このような仮想マシンでレプリケーションを一時停止すると、前述の問題は発生しないことに注意することが重要です。

Environment

VMware vSphere Replication 8.x
VMware vSphere Replication 9.x

Cause

この問題は、ゲスト OS で UNMAP が有効になっている場合に発生します。

UNMAP (または TRIM) は、ゲスト オペレーティング システムがストレージ サブシステムに、特定のデータ ブロックが使用されなくなったことを通知し、ストレージがその領域を再利用できるようにする機能です。

Resolution

回避策

ゲスト OS の trim/unmap コマンド使用時の vSphere Replication の動作

ゲスト OS が応答しなくなったり、ターゲット データストア (VMFS) がソース ディスク容量の使用量と比較してより高い容量を消費したりしている場合は、以下のオプションを試すことができます。

  1. Windows でゲスト OS UNMAP を無効にする
    A. 現在の UNMAP 設定を確認するには、コマンド プロンプトを起動し、次のコマンドを実行します。

    fsutil behavior query DisableDeleteNotify

    DisableDeleteNotify=0 - Trim および Unmap 機能が ON (有効) であることを示します
    DisableDeleteNotify=1 - Trim および Unmap 機能が OFF (無効) であることを示します

    機能を有効にするには、次のコマンドを実行します。

    fsutil behavior set DisableDeleteNotify 0

    機能を無効にするには、次のコマンドを実行します。

    fsutil behavior set DisableDeleteNotify 1

    B. Linux でゲスト OS UNMAP を無効にする
    RHEL またはその他の Linux で無効にするには、OS ドキュメントを参照するか、Linux ディストリビューター プロバイダーにお問い合わせください。Ubuntu や SUSE など、一部の Linux ディストリビューションでは、定期的な fstrim 操作が自動的に実行され、これを毎週の cron タスクで構成できます。

    注意: シン プロビジョニング ディスクを使用している場合、UNMAP を無効にすると、ゲスト OS が報告するサイズと、ストレージ アレイから見たシン ディスクの実際のサイズとの間に不一致が生じる可能性があります。

ESXi ホストの詳細設定を構成する
DemandlogFailCollidingUnmap オプションを 0、2、または 3 のいずれかの値に構成します。この設定の影響は、使用しているゲスト オペレーティング システムによって異なる場合があるため、特定の環境に最も適した構成を適用することをお勧めします。詳細設定の変更はすぐに適用され、ホスト システムの再起動は必要ありません。


ESXi 詳細オプション「DemandlogFailCollidingUnmap」の履歴

ESXi バージョン 7.0.3 のリリース前:
hbr_filter ドライバーは、ゲスト オペレーティング システムからのアンマッピングとの同期操作中に発生する競合を、それぞれのブロックのオンデマンド コピーを開始することで管理していました。

欠点: この方法では、重複領域を維持するために余分な READ および WRITE 操作が必要であり、予期せぬ遅延が発生する可能性がありました。

注: この動作は、後から導入された詳細オプション「DemandlogFailCollidingUnmap」と似ており、オプション 0 が選択されています。

ESXi バージョン 7.0.3:
DemandlogFailCollidingUnmap オプションは ESXi 7.0.3 で導入されました。

デフォルト オプション: 1

  • デフォルト設定では、hbr_filter ドライバーは、ゲスト オペレーティング システムから発信される SCSI UNMAP コマンドが、ターゲット データストアに転送されているデータと交差する場合、同期操作中にこれを抑制します。
  • ドライバーは、ゲスト オペレーティング システムに「ビジー」ステータス (SCSI イベント ステータス コード 08h) を伝え、ゲスト OS が後でトリム/アンマッピング コマンドを再試行することを期待して、仮想マシン内で動作するアプリケーションへの悪影響を防ぎます。

ESXi バージョン 7.0.3 から 7.0.3 P07、および 8.0 から 8.0.1 の間

DemandlogFailCollidingUnmap オプションは、0 と 1 の 2 つの値で利用可能でした。

ESXi バージョン 7.0.3 以降の現在の構成設定を確認するには、次のコマンドを実行してください。
$ esxcli system settings advanced list -o /HBR/DemandlogFailCollidingUnmap

このオプションを変更するには、次のコマンドを使用します。
$ esxcli system settings advanced set -o /HBR/DemandlogFailCollidingUnmap -i 0

デフォルト設定を復元するには、次のコマンドを実行する必要があります。
$ esxcli system settings advanced set -o /HBR/DemandlogFailCollidingUnmap -i 1

ESXi 7.0.3 P08 以降のパッチおよび ESXi 8.0.2 以降のバージョン

DemandlogFailCollidingUnmap 構成オプションは、2 つの追加値 (2 および 3) を組み込むように改訂されました。これらの新しい値は、ゲスト オペレーティング システムによって発行されたアンマッピング/トリム コマンドに対するドライバーの応答の柔軟性を向上させます。

DemandlogFailCollidingUnmap 構成オプションの新しい値:
オプション値「2」: 「チェック条件」エラー (SCSI イベント ステータス コード 02h)
hbr_filter ドライバーは、追加のセンス データを提供せずに「チェック条件」エラーを生成します。その結果、ゲスト オペレーティング システムは、即時再試行を試みずにコマンドを失敗させます。
$ esxcli system settings advanced set -o /HBR/DemandlogFailCollidingUnmap -i 2

オプション値「3」: 「成功」応答 (SCSI イベント ステータス コード 00h)
hbr_filter ドライバーは、ゲスト オペレーティング システムによって発行されたトリム/アンマッピング コマンドに対して成功ステータスを返します。

$ esxcli system settings advanced set -o /HBR/DemandlogFailCollidingUnmap -i 3

ESXi 8.0.3 以降のバージョン

DemandlogFailCollidingUnmap は ESXi 8.0u3 以降機能していません。この問題は今後のリリースで修正される予定です。

Additional Information

ディスク ファイルにストレージ ポリシーを適用すると、ディスクの消費容量が再び大きくなります。これはストレージ ポリシーの構成です。ストレージ ポリシーのため、使用容量は元のサイズよりも大きくなります。これは想定どおりです。
たとえば、1 つのファイルが 10 GB の場合、RAID 1 ポリシーを適用すると、約 20 GB になります。
ゲスト OS の Unmap を無効にし、VM がシン プロビジョニング ディスクを使用している場合、以下を考慮する必要があります。

  • アレイにブロックが解放されたことを知らせることができず、vCenter がシン ディスクのサイズと考えているものと、ゲスト OS が報告するサイズとの間に不一致が生じます。
  • SQL ディスクのベスト プラクティスは、シン プロビジョニング ディスクではなく EZT ディスクを使用することです。