Menu Close
Settings Close

Language and Page Formatting Options

第21章 仮想マシンの問題診断

仮想マシンを使用していると、さまざまな重大度の問題が発生する可能性があります。問題によってはすぐ簡単に修正できる可能性がありますが、仮想マシン関連のデータおよびログを取得して、問題を報告または診断しなければならない場合もあります。

以下のセクションでは、ログの生成および一般的な仮想マシンの問題の診断方法と、このような問題の報告方法を説明します。

21.1. libvirt デバッグログの生成

仮想マシンの問題を診断するには、libvirt デバッグログを生成し、確認すると便利です。また仮想マシン関連の問題解決のサポートを受ける場合には、デバッグログを添付すると役立ちます。

次のセクションでは、デバッグログとは何かデバッグログの永続設定実行時の有効化、問題報告時の 添付方法 について説明します。

21.1.1. libvirt デバッグログについて

デバッグログは、仮想マシンランタイム時に発生するイベント関連のデータが含まれるテキストファイルです。ログには、ホストライブラリーや libvirt デーモンなどの、サーバー側の基本機能に関する情報が含まれます。ログファイルには、実行中の全仮想マシンの標準エラー出力 (stderr) も含まれます。

デバッグロギングはデフォルトでは有効ではないので、libvirt の起動時に有効にする必要があります。セッション 1 回分のロギングを有効にしたり、永続的 にロギングを有効にすることができます。また、デーモンのランタイム設定を変更 することにより、libvirt デーモンセッションがすでに実行中の場合にロギングを有効にすることもできます。

仮想マシンの問題のサポートを受ける場合に、libvirt デバッグログ を添付すると役立ちます。

21.1.2. libvirt デバッグログの永続的な設定の有効化

libvirt の起動時に毎回、libvirt デバッグロギングを自動的に有効にするように設定できます。デフォルトでは、virtqemud は RHEL 9 の主な libvirt デーモンになります。libvirt 設定で永続的な変更を行うには、/etc/libvirt ディレクトリーにある virtqemud.conf ファイルを編集する必要があります。

注記

場合によっては、たとえば、RHEL 8 からアップグレードするときに、libvirtd は依然として有効な libvirt デーモンである可能性があります。この場合は、代わりに libvirtd.conf ファイルを編集する必要があります。

手順

  1. エディターで virtqemud.conf ファイルを開きます。
  2. 要件に応じてフィルターを置き換えるか、または設定します。

    表21.1 フィルター値のデバッグ

    1

    libvirt が生成したすべてのメッセージをログに記録します。

    2

    すべての非デバッグ情報をログに記録します。

    3

    すべての警告およびエラーメッセージをログに記録します。これはデフォルト値です。

    4

    エラーメッセージのみをログに記録します。

    例21.1 ロギングフィルターのデーモン設定例

    以下の設定を行います。

    • remoteutil.json、および rpc 層からのすべてのエラーメッセージおよび警告メッセージをログに記録します。
    • event レイヤーからのエラーメッセージのみを記録します。
    • フィルターされたログを /var/log/libvirt/libvirt.log に保存します。
    log_filters="3:remote 4:event 3:util.json 3:rpc"
    log_outputs="1:file:/var/log/libvirt/libvirt.log"
  3. 保存して終了します。
  4. libvirt デーモンを再起動します。

    $ systemctl restart virtqemud.service

21.1.3. ランタイム時の libvirt デバッグログの有効化

libvirt デーモンのランタイム設定を変更し、デバッグログを有効にして出力ファイルに保存できます。

これは、再起動すると問題が解決するため、libvirt デーモンを再起動できない場合や、マイグレーションやバックアップなどの別のプロセスが同時に実行されている場合などに便利です。設定ファイルを編集したり、デーモンを再起動せずにコマンドを試行したりする場合にも、ランタイム設定を変更すると便利です。

前提条件

  • libvirt-admin パッケージがインストールされている。

手順

  1. オプション:ログフィルターのアクティブなセットのバックアップを作成します。

    # virt-admin -c virtqemud:///system daemon-log-filters >> virt-filters-backup
    注記

    ログの生成後に復元できるように、アクティブなフィルターセットをバックアップすることが推奨されます。フィルターを復元しないと、メッセージがログに記録され、システムパフォーマンスに影響する可能性があります。

  2. virt-admin ユーティリティーを使用してデバッグを有効にし、要件に応じてフィルターを設定します。

    表21.2 フィルター値のデバッグ

    1

    libvirt が生成したすべてのメッセージをログに記録します。

    2

    すべての非デバッグ情報をログに記録します。

    3

    すべての警告およびエラーメッセージをログに記録します。これはデフォルト値です。

    4

    エラーメッセージのみをログに記録します。

    例21.2 ロギングフィルターの virt-admin 設定の例

    以下のコマンドを実行します。

    • remoteutil.json、および rpc レイヤーからのエラーメッセージおよび警告メッセージをすべてログに記録します。
    • イベント レイヤーからのエラーメッセージのみを記録します。
    # virt-admin -c virtqemud:///system daemon-log-filters "3:remote 4:event 3:util.json 3:rpc"
  3. virt-admin ユーティリティーを使用して、ログを特定のファイルまたはディレクトリーに保存します。

    たとえば、以下のコマンドはログ出力を /var/log/libvirt/ ディレクトリーの libvirt.log ファイルに保存します。

    # virt-admin -c virtqemud:///system daemon-log-outputs "1:file:/var/log/libvirt/libvirt.log"
  4. オプション:フィルターを削除して、仮想マシン関連の情報をすべて含むログファイルを生成することもできます。ただし、このファイルには libvirt のモジュールが生成した多くの冗長情報が含まれる可能性があるため、推奨されません。

    • virt-admin ユーティリティーを使用して空のフィルターのセットを指定します。

      # virt-admin -c virtqemud:///system daemon-log-filters
        Logging filters:
  5. オプション:バックアップファイルを使用して、フィルターを元の状態に復元します。
    保存した値を使用して 2 番目の手順を実行し、フィルターを復元します。

21.1.4. サポートリクエストへの libvirt デバッグログの添付

仮想マシンの問題の診断および解決に追加のサポートを依頼する必要がある場合があります。仮想マシン関連の問題を迅速に解決するために、サポートチームが必要な情報すべてにアクセスできるように、サポートリクエストにデバッグログを添付することを強く推奨します。

手順

  • 問題およびサポートを報告するには、サポートケースを作成 してください。
  • 発生した問題に応じて、レポートに以下のログを添付します。

    • libvirt サービスに問題がある場合は、ホストから /var/log/libvirt/libvirt.log ファイルを添付します。
    • 特定の仮想マシンに関する問題は、該当するログファイルを添付します。

      たとえば、仮想マシン testguest1 の場合は、/var/log/libvirt/qemu/testguest1.log にある testguest1.log ファイルを添付します。