A.3. ダンプファイルの作成

ゲスト仮想マシンのコアのファイルへのダンプを要求して仮想マシンのエラーを診断することができます。

A.3.1. virsh ダンプファイルの作成

virsh dump コマンドを実行すると、ゲスト仮想マシンのコアをファイルにダンプする要求が送信されるので、仮想マシンのエラーを診断することができます。このコマンドの実行には、引数の corefilepath で指定されるファイルとパスに適切な権限があることを手動で確認することが必要になります。virsh dump コマンドは、coredump (または crash ユーティリティー) と同様です。
詳細は、ゲスト仮想マシンのコアのダンプファイルの作成 を参照してください。

A.3.2. Python スクリプトを使用したコアダンプの保存

dump-guest-memory.py python スクリプトは、qemu-kvm プロセスがホストでクラッシュした後にコアダンプからゲスト仮想マシンのメモリーを抽出し、保存する GNU Debugger (GDB) の拡張を実装します。ホスト側の QEMU プロセスのクラッシュがゲストのアクションに関連する場合、QEMU プロセスのクラッシュ時にゲストの状態を調べると役立ちます。
python スクリプトは GDB の拡張を実装します。これは GDB の新規コマンドです。元の (クラッシュした) QEMU プロセスのコアダンプファイルを GDB で開いた後に、python スクリプトを GDB にロードできます。次に、新規コマンドは GDB プロンプトから実行できます。これにより、QEMU コアダンプから新規ローカルファイルにゲストメモリーのダンプが抽出されます。
dump-guest-memory.py python スクリプトを使用するには、以下を実行します。
  1. システムに qemu-kvm[-rhev]-debuginfo パッケージをインストールします。
  2. GDB を起動し、クラッシュした /usr/libexec/qemu-kvm バイナリー用に保存されたコアダンプファイルを開きます。デバッグ記号が自動的にロードされます。
  3. GDB での新規コマンドのロード:
    # source /usr/share/qemu-kvm/dump-guest-memory.py

    注記

    python スクリプトのロード後に、組み込み GDB help コマンドは dump-guest-memory 拡張についての詳細情報を提供できます。
  4. GDB でコマンドを実行します。以下は例になります。
    # dump-guest-memory /home/user/extracted-vmcore X86_64
  5. ゲストカーネルの分析用に crash ユーティリティーで /home/user/extracted-vmcore を開きます。
crash ユーティリティーで使用するために QEMU コアファイルからゲスト仮想マシンのコアを抽出する方法についての詳細は、How to extract ELF cores from 'gcore' generated qemu core files for use with the 'crash' utility を参照してください。