Red Hat Training

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

付録B 一般的なlibvirtエラーとトラブルシューティング

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

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

Error問題の説明ソリューション
libvirtd Failed to Startlibvirt デーモンの起動に失敗しました。ただし、/var/log/messages にはこのエラーに関する情報はありません。libvirtd が起動しない」
Cannot read CA certificateこれは、URI がハイパーバイザーに接続できない場合に発生するいくつかのエラーのいずれかになります。「URI のハイパーバイザー接続に失敗する」
Failed to connect socket ... : Permission deniedこれは、URI がハイパーバイザーに接続できない場合に発生するいくつかのエラーのいずれかになります。「URI のハイパーバイザー接続に失敗する」
その他の接続エラーこれは、URI がハイパーバイザーに接続できない場合に発生するその他のエラーです。「URI のハイパーバイザー接続に失敗する」
Internal error guest CPU is not compatible with host CPUホストとゲストプロセッサーが異なるため、ゲスト仮想マシンを開始できません。「ゲスト仮想マシンを起動できません。 internal error guest CPU is not compatible with host CPU
Failed to create domain from vm.xml error: monitor socket did not show up.: Connection refusedゲスト仮想マシン(またはドメイン)の起動に失敗し、このエラーまたは同様のエラーが返されます。「ゲストの起動は、以下のエラーで失敗します。 monitor socket did not show up
Internal error cannot find character device (null)このエラーは、ゲストのコンソールを接続しようとすると発生する可能性があります。ゲスト仮想マシンにシリアルコンソールが設定されていないことが報告されます。Internal error cannot find character device (null)
No boot device既存のディスクイメージからゲスト仮想マシンを構築した後、ゲストの起動が停止します。ただし、ゲストは QEMU コマンドを直接使用して正常に起動できます。「ゲスト仮想マシンの停止をエラーで起動します。 No boot device
The virtual network "default" has not been started
デフォルト のネットワーク(またはその他のローカルで作成されたネットワーク)が起動できない場合、その接続にそのネットワークを使用するように設定された仮想マシンも起動に失敗します。
「仮想ネットワークの デフォルト は開始されていません」
ゲスト上の PXE ブート (または DHCP ) が失敗ゲスト仮想マシンは正常に起動しますが、DHCP、PXE プロトコルを使用した起動、またはその両方から IP アドレスを取得することはできません。これは多くの場合、ブリッジの転送遅延時間が長く設定されているか、iptables パッケージとカーネルがチェックサムの難号化ルールをサポートしていない場合に発生します。「ゲスト上の 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 は、ゲストの(またはドメインの) <interface> 定義で指定されたブリッジデバイスが存在しないことを示しています。「Unable to add bridge br0 port vnet0: No such device」
Warning: could not open /dev/net/tun: no virtual network emulation qemu-kvm: -netdev tap,script=/etc/my-qemu-ifup,id=hostnet0: Device 'tap' could not be initialized ホストシステムに type='ethernet' (または generic ethernet)インターフェイスを設定した後は、ゲスト仮想マシンが起動しません。このエラーは、libvirtd.log/var/log/libvirt/qemu/name_of_guest.log、またはその両方で表示されます。「ゲストが Unable to Start with Error: warning: could not open /dev/net/tun
Unable to resolve address name_of_host service '49155': Name or service not knownQEMU ゲストの移行が失敗し、このエラーメッセージが見慣れないホスト名で表示されます。「で移行に失敗する Error: unable to resolve address
Unable to allow access for disk path /var/lib/libvirt/images/qemu.img: No such file or directorylibvirt がディスクイメージにアクセスできないため、ゲスト仮想マシンを移行できません。Unable to allow access for disk path: No such file or directoryで移行に失敗」
libvirtd の開始時に存在するゲスト仮想マシンがないlibvirt デーモンは正常に起動しますが、virsh list --all の実行時にゲスト仮想マシンが存在しないように見えます。libvirtd の開始時に存在するゲスト仮想マシンがない」
Unable to connect to server at 'host:16509': Connection refused ... error: failed to connect to the hypervisorlibvirtd は接続のために TCP ポートをリッスンする必要がありますが、ハイパーバイザーへの接続に失敗します。「Unable to connect to server at 'host:16509': Connection refused ... error: failed to connect to the hypervisor」
一般的な XML エラーlibvirt は、XML ドキュメントを使用して構造化データを保存します。XML ドキュメントが、API を介してlibvirt に渡されると、いくつかの一般的なエラーが発生します。このエントリーでは、ゲスト XML 定義の編集方法と、XML 構文および設定における一般的なエラーの詳細を説明します。「一般的な XML エラー」

B.1. libvirtd が起動しない

現象
libvirt デーモンが自動的に起動しない。libvirt デーモンの手動による起動も失敗。
# /etc/init.d/libvirtd start
* 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.conf で libvirt のロギングを変更します。行のコメントを解除しるには、テキストエディターで /etc/libvirt/libvirtd.conf ファイルを開き、以下の行の先頭からハッシュ(または #)記号を削除して変更を保存します。
log_outputs="3:syslog:libvirtd"
注記
この行は、libvirt が過剰なログメッセージを作成しないように、デフォルトではコメントアウトされています。問題を診断したら、/etc/libvirt/libvirtd.conf ファイルーでこの行を再度コメント入力することが推奨されます。
libvirt を再起動し、問題が解決されたかどうかを確認します。
それでも libvirtd が正常に起動しない場合は、以下のようなエラーが /var/log/messages ファイルに表示されます。
Feb  6 17:22:09 bart libvirtd: 17576: info : libvirt version: 0.9.9
Feb  6 17:22:09 bart libvirtd: 17576: error : virNetTLSContextCheckCertFile:92: Cannot read CA certificate '/etc/pki/CA/cacert.pem': No such file or directory
Feb  6 17:22:09 bart /etc/init.d/libvirtd[17573]: start-stop-daemon: failed to start `/usr/sbin/libvirtd'
Feb  6 17:22:09 bart /etc/init.d/libvirtd[17565]: ERROR: libvirtd failed to start
libvirtd の man ページでは、libvirtListen for TCP/IP connections モードで実行すると、足りない cacert.pem ファイルが TLS 認証局として使用されることを示しています。これは、--listen パラメーターが渡されることを意味します。
ソリューション
libvirt デーモンを以下のいずれかの方法で設定します。
  • CA 証明書をインストールする。
    注記
    CA 証明書およびシステム認証の設定に関する詳細は、『Red Hat Enterprise Linux 6 デプロイメントガイド』 の 認証の設定 の章を参照してください。
  • 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 変数を変更します。