2013/12/25

Windows Server 2012 R2 > Debug-VM で NMI を送る

こちら (↓) のブログに Windows Server 2012 R2 Hyper-V 上の Linux ゲストにおける NMI (Non Maskable Interrupts) のサポートについて書かれています。

Server & Tools Blogs > Server & Management Blogs > Virtualization Blog > Enabling Linux Support on Windows Server 2012 R2 Hyper-V
[URL] http://blogs.technet.com/b/virtualization/archive/2013/07/24/enabling-linux-support-on-windows-server-2012-r2-hyper-v.aspx


へぇと思っていたのですが、NMI のサポートは Windows Server 2012 R2 Hyper-V (Windows 8.1 Hyper-V、Microsoft Hyper-V Server 2012 R2) からの新機能なんですね。Linux ゲストに限らず、Windows ゲストに対しても機能します。


仮想マシンには当然のことですが、物理的な NMI スイッチは存在しません。代わりに Debug-VM という Windows PowerShell コマンドレットが提供されます。VMware ESXi の vmdumper <vmid> nmi に相当する機能ですね。

TechNet Library >Hyper-V Cmdlets > Debug-VM
[URL] http://technet.microsoft.com/en-us/library/dn464280.aspx

MSDN Blogs > Windows SDK Support Team Blog > Get a kernel dump of a 2012 R2 Hyper-V server with Powershell
[URL] http://blogs.msdn.com/b/winsdk/archive/2013/08/19/get-a-kernel-dump-of-a-2012-r2-hyper-v-server-with-powershell.aspx



Windows ゲストの場合は、ホストまたはリモート コンピューターから Debug-VM コマンドレットを使用して、ゲスト OS を強制的にクラッシュさせることができます。Linux の場合は NMI でカーネル パニックになるように構成しないと何も起こらないと思います。

Debug-VM -Name "仮想マシン名" -InjectNonMaskableInterrupt -Confirm:$false -Force

単にクラッシュさせるのは何の意味もないので、通常は NMI によるクラッシュ ダンプの取得をゲスト OS で構成して利用することになります。

Windows ベースのシステムに、NMI を使用して完全クラッシュ ダンプ ファイルまたはカーネル クラッシュ ダンプ ファイルを生成する方法
[URL] http://support.microsoft.com/kb/927069/ja
RHEL 6: 第26章 kdump クラッシュリカバリーサービス
[URL] https://access.redhat.com/site/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/ch-kdump.html
openSUSE 13.1: 第18章 kexec と kdump
[URL] http://opensuse-man-ja.berlios.de/opensuse-html/cha.tuning.kexec.html

RHEL 6.5 で kdump を構成して試してみた。NMI でクラッシュ ダンプを開始させるには、kdmup の有効化だけでなく、/etc/sysctl.conf に kernel.unknown_nmi_panic = 1 を追記して、sysctl -p & reboot する必要があります。


Windows Server 2012 Hyper-V の Linux ゲストの場合、kdump で次のような注意点がありましたが、Windows Server 2012 R2 Hyper-V では解消されたようです。

Hyper-V 上で Linux 仮想コンピューターの kdump または kexec を使用できない
[URL] http://support.microsoft.com/kb/2858695/ja
 
Hyper-V の仮想マシンのクラッシュダンプというと、vm2dmp や Windows Sysinternalsの LiveKd (どちらもサポート対象外のツール、どちらも Debugging Tools for Windows が必要) を使う方法もあります。vm2dmp は Windows Server 2008 R2 Hyper-V 向けであり、Windows Server 2012 R2 Hyper-V でもちゃんと動くかは知りません。LiveKd はつい先日、最新の v5.31 に更新されたばかり。あいかわらず日本語環境では仮想マシン名の表示と指定ができませんが (GUID で指定する必要あり)。

TechNet Blogs > The World Simplefied is a Virtual World > VM2DMP - Hyper-V (tm) VM State to Memory Dump Converter
[URL] http://blogs.technet.com/b/virtualworld/archive/2010/02/02/vm2dmp-hyper-v-tm-vm-state-to-memory-dump-converter.aspx
Windows Sysinternals > LiveKd
[URL] http://technet.microsoft.com/en-us/sysinternals/bb897415.aspx


0 件のコメント: