Hyper-V のゲスト OS でクラッシュダンプを取得したい。

Windows Server 2008 R2 で Hyper-V を利用しゲスト OS を運用している際にゲスト OS が不調に陥り、原因調査のため手動によるメモリダンプ出力をしたい場合があります。

質問の内容

ゲスト OS のレジストリに CrashOnCtrlScroll を設定し、Hyper-V マネージャで画面をアクティブにし、右の Ctrl キーを押しながら、ScrollLock キーを2回入力しました。

しかし、ゲスト OS は反応せず STOP エラー画面になりません。ゲスト OS のメモリダンプを取得するにはどのような設定と操作が必要ですか?

現象

KB244319 「キーボード操作でメモリダンプファイルを作成できる Windows の機能」または、KB969028 「Windows Server 2008 でカーネルまたは完全メモリ ダンプ ファイルを生成する方法」に従い、 キーボードによるメモリ ダンプ ファイル (Memory.dmp) を作成する設定をしましたが、 Hyper-V のゲスト OS で有効に機能しません。

原因

Hyper-V のゲスト OS では、KB244319 「キーボード操作でメモリダンプファイルを作成できる Windows の機能」の設定と操作は機能しません。ゲスト OS のダンプを取得するには、 MS 社が提供する vm2dmp.exe を用います。

解決方法

vm2dmp.exe をダウンロードし、Hyper-V ホスト OS 上で下記コマンドを実行します。

vm2dmp.exe -vm <GuestMachineName> -dmp <OutputDumpName.dmp>

vm2dmp.exe の素晴らしいところは、スナップショットとして保存した状態や、一時停止状態の vsv ファイルを dmp ファイルにコンバートする事ができます。ゲスト OS が何であっても取得できそうです。

デメリットとしては、ホスト OS 上で実行して採取するツールなので、完全メモリダンプのみの採取となります。カーネルメモリダンプや最小メモリダンプは取得できません。 大容量のメモリを割り当てている場合にはダンプファイルサイズが大きくなってしまいます。

vm2dmp を実行するには、あらかじめ、Debugging tools for Windows のインストールをする必要があります。運用しているすべての Hyper-V ホスト OS にデバッガーをインストールしたくない場合は、 デバッグ用 Hyper-V ホストを1台用意し、不具合が生じたゲストをホストで状態保存。OS をエクスポート。デバッグ用 ホストでこれをインポートし vm2dmp を実行する事が良いかと思います。

ただし、エクスポートイメージの容量は大きいと思いますが…。

対象 OS

  • Windows Server 2008 R2

参考情報

キーワード

  • Windows feature lets you generate a memory dump file by using the keyboard
  • How to generate a kernel or a complete memory dump file in Windows Server 2008 and Windows Server 2008 R2,
  • Manualy Crash Dump Memory
  • vm2dmp.exe

本ページの内容は、利用者に対し何も保証いたしません。本内容で生じたあらゆる問題について一切責任を負いません。利用者が、このページの内容を利用する場合は、自己責任で行う必要があります。