仮想マシンがクラッシュした場合、デバッグや分析などの目的で、メモリに対するコアダンプを採取しておくと便利です。物理マシンの場合は Kexec と Kdump がクラッシュダンプの採取を実施しますが、仮想マシンの場合は、完全仮想化マシンなのか準仮想化マシンなのかによって、異なる方式を使用します。
完全仮想化マシンに対してクラッシュダンプを採取する場合は、物理マシンと全く同じ方式 (Kexec および Kdump) を使用します。
完全仮想化マシンとは異なり、準仮想化マシンでは Kexec/Kdump は動作しません。その代わりとして、ホストツールスタック側でクラッシュダンプを採取します。 Xen domU で xl
ツールスタックを使用している場合は xl dump-core
コマンドを、 libvirt
ベースの VM ゲスト の場合は virsh dump
コマンドを実行することで、ダンプを採取することができます。
それ以外にも、 VM ゲスト の設定内で on_crash
の設定をすることで、クラッシュダンプを自動的に採取させることもできます。この設定では、ホストツールスタック側に対して、クラッシュ発生時に行うべき処理を指定することもできます。なお、 xl
と libvirt
のいずれも、既定値は destroy
(仮想マシンを終了する) です。クラッシュダンプの自動採取を指定したい場合は、 coredump-destroy
(コアダンプを採取して停止する) もしくは coredump-restart
(コアダンプを採取して再起動する) のいずれかを指定してください。
完全仮想化マシンと準仮想化マシンの違いについては、 1.3項 「仮想化モード」 をお読みください。
Kexec/Kdump の仕組みに関する詳細は、 第18章 「Kexec と Kdump」 をお読みください。
xl
の設定書式に関する詳細は、 xl.cfg のマニュアルページ ( man 5 xl.cfg
) をお読みください。
libvirt
の XML 設定に関する詳細は、 https://libvirt.org/formatdomain.html#events-configuration をお読みください。