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

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

適用対象: Windows Server 2012 R2
元の KB 番号: 2913486

現象

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


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

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


GetContextState が失敗しました、0xD0000147

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

GetContextState が失敗しました、0xD0000147

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

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

原因

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

注:

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

解決方法

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

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

  1. フェールオーバー クラスター マネージャーを開きます。
  2. [ ロール] をクリックし、仮想マシン リソースを見つけます。
  3. [リソース] タブで、仮想マシンを右クリックします。
  4. [ プロパティ] をクリックし、[ 設定 ] タブをクリックします。
  5. [ハートビートの設定] をクリックして、[アプリケーションの正常性監視の自動回復を有効にする] チェックボックスをオフにします。
  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 分のしきい値を超えていないために発生します。