VMware ESXにてゲストOSの強制メモリダンプ(NMICrashDump)を取得する方法

IBM IMMやHP iLOなどでは手軽にNMIスイッチ押せますが、仮想環境でも出来るのかなぁと。
そんな訳で、VMware ESXにてNMIスイッチでメモリダンプを出力させてみたー。

事前設定は、通常のNMIスイッチを入れます。
VMware-Dump_NMICrashDump_1.jpgVMware-Dump_NMICrashDump_2.jpgVMware-Dump_NMICrashDump_3.jpg
VMwareESX上で動いている仮想ゲストOSにログイン後、レジストリに以下の値を追加。
キー:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl
値の名前:NMICrashDump
値の種類:DWORD
値:1(1)

How to generate a complete crash dump file or a kernel crash dump file by using an NMI on a Windows-based system
めんどくさい場合は、コマンドプロンプトにて次のコマンドを実行でもOK。
2行に分かれてますが、実際は1行です。

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl /v NMICrashDump /t REG_DWORD /d 1
ファイル:NMICrashDump_add.txt
設定後、仮想OSを再起動させて設定を有効化。

後は、リソース不足や不具合等、ダンプを取得するタイミングを待つだけ。


実際に取得する際は、次の手順。

まずは、仮想OSが稼働しているホストを探し、それにコンソールにてログイン。
VMware-Dump_NMICrashDump_4.jpgVMware-Dump_NMICrashDump_5.jpgVMware-Dump_NMICrashDump_6.jpg
ログイン後、ゲストOSのvmidを調べるため「vm-support -x」コマンドを実行。

[root@localhost ~]# vm-support -x

VMware ESX Support Script 1.30


Acailable worlds to debug:

vmid=4229 Windows Server

このコマンドによって、付いているラベルごとのvmidが分かります。
今回はOSが一つなので分かりやすいけど、複数OSはある場合はその数分表示。
調べて分かったvmidに対し、「/usr/lib/vmware/bin/vmdumper <vmid> nmi」コマンドでNMIコマンドを発行すれば、ゲストOSでダンプが出力されます。
[root@localhost ~]# /usr/lib/vmware/bin/vmdumper 4229 nmi
Sending NMI to guest...

VMware-Dump_NMICrashDump_7.jpgVMware-Dump_NMICrashDump_8.jpg
こんな感じで、0x00000080のStop Codeエラーによりダンプ出力。
この際のイベントログは、次のようなものが記録。

イベントの種類: エラー
イベント ソース: System Error
イベント カテゴリ: (102)
イベント ID: 1003
日付: 2010/04/21
時刻: 10:10:51
ユーザー: N/A
コンピュータ: TESTS
説明:
エラー コード 00000080、パラメータ1 004f4454、パラメータ2 00000000, パラメータ3 00000000、パラメータ4 00000000.

詳細な情報は、http://go.microsoft.com/fwlink/events.asp の [ヘルプとサポート センター] を参照してください。
データ:
0000: 53 79 73 74 65 6d 20 45 System E
0008: 72 72 6f 72 20 20 45 72 rror Er
0010: 72 6f 72 20 63 6f 64 65 ror code
0018: 20 30 30 30 30 30 30 38 0000008
0020: 30 20 20 50 61 72 61 6d 0 Param
0028: 65 74 65 72 73 20 30 30 eters 00
0030: 34 66 34 34 35 34 2c 20 4f4454,
0038: 30 30 30 30 30 30 30 30 00000000
0040: 2c 20 30 30 30 30 30 30 , 000000
0048: 30 30 2c 20 30 30 30 30 00, 0000
0050: 30 30 30 30 0000

後は、出力した「MEMORY.DMP」ファイルを解析にまわせばOK。

そんな感じで、仮想環境でも手軽にNMIダンプ取れるみたい。
ただ問題は、ESX側のホストOSへのroot特権が必要な事ですかね。
運用担当が分かれてる場合など、調整がめんどくさいかも。

たぶん、VMware vSphere側でも出来そうな気がする。
詳しく調べてないので分からないけど。
そのうち、vSphereの方も出来るかどうかテストしてみますか。

Windowsダンプの極意 エラーが発生したら、まずダンプ解析!Windowsダンプの極意 エラーが発生したら、まずダンプ解析!
アスキー・メディアワークス 2008-11-27
売り上げランキング : 37736

おすすめ平均 star
star物足りない点
star日本語で読むWinDbg
starリリース後のトラブル解析やデバイスドライバのデバッグに

Amazonで詳しく見る
by G-Tools

| コメント(0) | トラックバック(1) |
■Yahoo!オークション おすすめ商品■
Web Services by Yahoo! JAPAN

トラックバック(1)

トラックバックURL: http://type-y.com/mt/mt-tb.cgi/1259

BUFFALO ノートPC用増設メモリ PC2700 (DDR333) 1GB ... 続きを読む

コメントする