付録B 一般的なlibvirtエラーとトラブルシューティング
この付録では、一般的な libvirt 関連の問題とエラー、およびそれらに対処するための手順について説明します。
トラブルシューティングの詳細は、以下の表でエラーを特定し、
Solution
の対応するリンクを参照してください。
Error | 問題の説明 | ソリューション |
---|---|---|
libvirtd Failed to Start | libvirt デーモンの起動に失敗しました。ただし、/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 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 の開始時に存在するゲスト仮想マシンがない」 |
Unable to connect to server at 'host:16509': Connection refused ... error: failed to connect to the hypervisor | libvirtd は接続のために 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 ページでは、libvirt をListen 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
変数を変更します。