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

仮想マシンのエラーを分析するために、ゲスト仮想マシンのコアをファイルにダンプするようリクエストすることができます (例: crash ユーティリティー)。

警告

Red Hat Enterprise Linux 7.5 以上では、Kernel Address Space Randomization (KASLR) 機能が原因で crash はゲストダンプファイルを読み取りできません。これを修正するには <vmcoreinfo/> 要素をゲストの XML 設定ファイルの <features> セクションに追加します。
宛先のホストが <vmcoreinfo/> をサポートしない OS を使用している場合は、<vmcoreinfo/> を使用したゲストの 移行に失敗することに注意してください。これには、Red Hat Enterprise Linux 7.4 以下のバージョンと、Red Hat Enterprise Linux 6.9 以下のバージョンが該当します。

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

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

A.2.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-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. ゲストカーネルの分析用に /home/user/extracted-vmcore ユーティリティーで crash を開きます。
crash ユーティリティーで使用するために QEMU コアファイルからゲスト仮想マシンのコアを抽出する方法についての詳細は、How to extract ELF cores from 'gcore' generated qemu core files for use with the 'crash' utility を参照してください。