Menu Close
Settings Close

Language and Page Formatting Options

Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

A.19. 一般的なlibvirtエラーとトラブルシューティング

この付録では、一般的な libvirt 関連の問題とエラー、およびそれらに対処するための手順について説明します。
トラブルシューティングの詳細は、以下の表でエラーを特定し、Solution の対応するリンクを参照してください。

表A.1 一般的なlibvirtエラー

Error 問題の説明 解決方法
libvirtd の起動に失敗しました。 libvirt デーモンの起動に失敗しました。ただし、/var/log/messages にはこのエラーに関する情報はありません。 libvirtd が起動しない」
Cannot read CA certificate これは、URI がハイパーバイザーに接続できない場合に発生するいくつかのエラーのいずれかになります。 「URI のハイパーバイザー接続に失敗する」
その他の接続エラー これは、URI がハイパーバイザーに接続できない場合に発生するその他のエラーです。 「URI のハイパーバイザー接続に失敗する」
ゲスト上の PXE ブート (または DHCP ) が失敗 ゲスト仮想マシンは正常に起動しますが、DHCP、PXE プロトコルを使用した起動、またはその両方から IP アドレスを取得することはできません。これは、多くの場合、ブリッジの転送遅延時間が長く設定されている場合、または iptables パッケージとカーネルがチェックサムの難号化 (mangle) 規則をサポートしない場合に発生します。 「ゲスト上の PXE ブート (または DHCP ) が失敗」
ゲストは外部ネットワークにアクセスできるが、macvtap インターフェイスの使用時にはホストにアクセスできない
ゲストは他のゲストと通信できますが、macvtap (または type='direct') ネットワークインターフェイスを使用するように設定するとホストマシンに接続できません。
これは、実際にはエラーではなく、macvtap の定義済みの動作です。
「ゲストは外部ネットワークにアクセスできるが、macvtap インターフェイスの使用時にはホストにアクセスできない」
Could not add rule to fixup DHCP response checksums on network 'default' この警告メッセージはほぼ常に無害ですが、間違って問題の証拠と見なされることがよくあります。 「Could not add rule to fixup DHCP response checksums on network 'default'
Unable to add bridge br0 port vnet0: No such device このエラーメッセージまたは同様の Failed to add tap interface to bridge 'br0': No such device shows the bridge device specified in the guest's (または domain's) <interface> definition does not exist. 「Unable to add bridge br0 port vnet0: No such device」
Unable to resolve address name_of_host service '49155': Name or service not known QEMU ゲストの移行が失敗し、このエラーメッセージが見慣れないホスト名で表示されます。 error: unable to resolve address で移行が失敗する」
Unable to allow access for disk path /var/lib/libvirt/images/qemu.img: No such file or directory libvirt がディスクイメージにアクセスできないため、ゲスト仮想マシンを移行できません。 Unable to allow access for disk path: No such file or directoryが表示され、移行が失敗する」
libvirtd の開始時に存在するゲスト仮想マシンがない libvirt デーモンは正常に起動しますが、virsh list --all の実行時にゲスト仮想マシンが存在しないように見えます。 libvirtd の開始時に存在するゲスト仮想マシンがない」
一般的な XML エラー libvirt は、XML ドキュメントを使用して構造化データを保存します。XML ドキュメントが、API を介してlibvirt に渡されると、いくつかの一般的なエラーが発生します。このエントリーでは、ゲスト XML 定義の編集方法と、XML 構文および設定における一般的なエラーの詳細を説明します。 「一般的な XML エラー」

A.19.1. libvirtd が起動しない

現象
libvirt デーモンが自動的に起動しない。libvirt デーモンの手動による起動も失敗。
# systemctl start libvirtd.service
* Caching service dependencies ...                                                                                             [ ok ]
* Starting libvirtd ...
/usr/sbin/libvirtd: error: Unable to initialize network sockets. Check /var/log/messages or run without --daemon for more info.
* start-stop-daemon: failed to start `/usr/sbin/libvirtd'                                                                      [ !! ]
* ERROR: libvirtd failed to start
また、/var/log/messages ではこのエラーに関する'more info'はありません。
調査
以下の行を有効にして、/etc/libvirt/libvirtd.conflibvirt のログを変更します。この行を有効にするには、テキストエディターで/etc/libvirt/libvirtd.conf ファイルを開き、次の行の先頭からハッシュ (#) 記号を削除して、変更を保存します。
log_outputs="3:syslog:libvirtd"
注記
この行は、libvirt が過剰なログメッセージを作成しないように、デフォルトではコメントアウトされています。問題を診断したら、/etc/libvirt/libvirtd.conf ファイルーでこの行を再度コメント入力することが推奨されます。
libvirt を再起動し、問題が解決されたかどうかを確認します。
それでもlibvirtd が引き続き正常に起動しない場合は、以下のようなエラーが表示されます。
# systemctl restart libvirtd
Job for libvirtd.service failed because the control process exited with error code. See "systemctl status libvirtd.service" and "journalctl -xe" for details.

Sep 19 16:06:02 jsrh libvirtd[30708]: 2017-09-19 14:06:02.097+0000: 30708: info : libvirt version: 3.7.0, package: 1.el7 (Unknown, 2017-09-06-09:01:55, js
Sep 19 16:06:02 jsrh libvirtd[30708]: 2017-09-19 14:06:02.097+0000: 30708: info : hostname: jsrh
Sep 19 16:06:02 jsrh libvirtd[30708]: 2017-09-19 14:06:02.097+0000: 30708: error : daemonSetupNetworking:502 : unsupported configuration: No server certif
Sep 19 16:06:02 jsrh systemd[1]: libvirtd.service: main process exited, code=exited, status=6/NOTCONFIGURED
Sep 19 16:06:02 jsrh systemd[1]: Failed to start Virtualization daemon.

-- Subject: Unit libvirtd.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit libvirtd.service has failed.
--
-- The result is failed.
libvirtd の man ページでは、libvirtListen for TCP/IP connections モードで実行すると、足りない cacert.pem ファイルが TLS 認証局として使用されることを示しています。これは、--listen パラメーターが渡されることを意味します。
解決方法
libvirt デーモンを以下のいずれかの方法で設定します。
  • CA 証明書をインストールする。
    注記
    CA 証明書およびシステム認証の設定に関する詳細は、Red Hat Enterprise Linux 7 Domain Identity, Authentication, and Policy Guide の Managing Certificates および Certificate Authorities の章を参照してください。
  • TLS は使用せずに TCP を使用してください。/etc/libvirt/libvirtd.conf で、listen_tls = 0 および listen_tcp = 1 を設定します。デフォルト値は listen_tls = 1 および listen_tcp = 0 です。
  • --listen パラメーターを渡さないでください。/etc/sysconfig/libvirtd.conf で、LIBVIRTD_ARGS 変数を変更します。