次の方法で共有


クラスター環境で実行されている仮想マシンから完全なメモリ ダンプ ファイルを取得しようとすると、メモリ ダンプ ファイルが破損する

この記事では、仮想マシンから完全なメモリ ダンプ ファイルを取得しようとすると、破損したメモリ ダンプ ファイルが生成される問題の解決策について説明します。

元の KB 番号: 2913486

現象

Windows Server 2012 または Windows Server 2008 R2 のクラスター環境で実行されている仮想マシンがある。 仮想マシンから完全なメモリ ダンプ ファイルを取得しようとすると、破損したメモリ ダンプ ファイルが生成されます。 メモリ ダンプ ファイルの読み込み中に、次のメッセージが表示されることがあります。


このダンプ ファイルは部分的に破損しています。

KdDebuggerDataBlock が存在しないか、読み取り不可能です。


GetContextState が失敗しました、0xD0000147

プログラム カウンターを取得できません

GetContextState が失敗しました、0xD0000147

現在のコンピューター コンテキストを取得できません。NTSTATUS 0xC0000147

さらに、完全なメモリ ダンプ ファイルの書き込みが完了せず、クラスター内の別のノードで仮想マシンが再起動されていることにも気付く場合があります。

原因

この問題は、仮想マシンの 有効なハートビート監視 オプションが仮想マシンに対して選択されているために発生します。 このオプションは、クラスター化された仮想マシンを 1 分後にリセットします (既定値)。クラスター化された仮想マシンでは、メモリ ダンプの書き込みが完了するまでに 1 分以上かかる必要があります。

Note

仮想マシンと仮想マシン マネージャーの間のハートビートは、数秒ごとに発生します。 仮想マシン リソースが isAlive エントリ ポイント関数で Virtual Machine Manager からのハートビートの状態をチェックするため、仮想マシンがダウンしていることを検出するには最大 1 分が必要な場合があります。 既定では、isAlive は 1 分ごとに 1 回発生します。 ただし、ハートビートは 1 分間隔の 30 秒前に停止することがあります。 この場合、クラスターは、同じサーバー上の仮想マシンを再起動するか、別のノードにフェールオーバーできます。

解決方法

この問題を解決するには、 仮想マシンのハートビート監視を有効にする オプションを無効にします。

オプション 1: GUI から設定を変更する

  1. フェールオーバー クラスター マネージャーを開きます。
  2. Roles をクリックし、仮想マシン リソースを見つけます。
  3. [リソース] タブで、仮想マシンを右クリックします。
  4. Propertiesをクリックし、Settings タブをクリックします。
  5. Heartbeat 設定で、アプリケーションの正常性の監視の自動回復を有効にする] チェック ボックスをオフにします。
  6. [仮想マシンのハートビート監視を有効にする] をオフにするには チェック ボックスをオフにして、[ OK をクリックします。

オプション 2: Windows PowerShell を使用して設定を変更する

  1. Windows PowerShell を起動します。

  2. 仮想マシン名を確認します。 これを行うには、次の Windows PowerShell コマンドを入力します。

    PS C:\> Get-ClusterResource
    
  3. 仮想マシンの有効なハートビート監視アプリケーションの正常性監視の自動回復を有効にするオプションが選択されているかどうかを確認します。 これを行うには、次の Windows PowerShell コマンドを入力します。

    PS C:\> Get-ClusterResource <VirtualMachineName> | Get-ClusterParameter CheckHeartbeat
    
  4. CheckHeartbeat 値が 1 の場合、両方のオプションが選択されます。 両方のオプションを取り消すには、この値を 0 に変更します。 これを行うには、次の Windows PowerShell コマンドを入力します。

    PS C:\> Get-ClusterResource <VirtualMachineName> | Set-ClusterParameter CheckHeartbeat 0
    

    アプリケーションの正常性監視の自動回復を有効にするオプションのみを取り消す場合は、次の Windows PowerShell コマンドを実行する必要があります。

    PS C:\> (Get-ClusterResource <Object>).EmbeddedFailureAction = 1
    

詳細

ミニおよびカーネル メモリ ダンプ ファイルが正常に書き込まれます。 これは、これらのファイルの書き込みに必要な時間が 1 分のしきい値を超えていないために発生します。