30.14. Xen エラーメッセージの解釈

次のようなエラー表示があるとします:
failed domain creation due to memory shortage, unable to balloon domain0
RAM が充分にないと、ドメインは失敗する可能性があります。Domain0 は、新規作成のゲスト用に領域を提供する為に縮小はしません。このエラーについては xend.logファイルを確認することになります:
[2006-12-21] 20:33:31 xend 3198] DEBUG (balloon:133) Balloon: 558432 Kib free; 0 to scrub; need 1048576; retries: 20
[2006-12-21] 20:33:31 xend. XendDomainInfo 3198] ERROR (XendDomainInfo: 202
Domain construction failed
xm list Domain0 コマンドを使うと domain0 が使用しているメモリーの量をチェックできます。domain0 が縮小しなければ、コマンド virsh setmem dom0 NewMemSize を使用してメモリーをチェックできます。
次のようなエラー表示があるとします:
wrong kernel image: non-PAE kernel on a PAE
このメッセージは、ユーザーが Hypervisor 上でサポートされていないゲストカーネルイメージを実行しようとしていることを示すものです。これは、Red Hat Enterprise Linux 5 ホスト上ので 非 PAE の para-virtualized ゲストカーネルを起動しようとする時に発生します。Red Hat kernel-xen パッケージは PAE と 64bit アーキテクチャを 持つゲストカーネルのみをサポートします。
次のコマンドを入力します:
# xm create -c va-base

Using config file "va-base"
Error: (22, 'invalid argument')
[2006-12-14 14:55:46 xend.XendDomainInfo 3874] ERRORs
(XendDomainInfo:202) Domain construction failed

Traceback (most recent call last)
File "/usr/lib/python2.4/site-packages/xen/xend/XendDomainInfo.py", line 195 in create vm.initDomain()
File " /usr/lib/python2.4/site-packages/xen/xend/XendDomainInfo.py", line 1363 in initDomain raise VmError(str(exn))
VmError: (22, 'Invalid argument')
[2006-12-14 14:55:46 xend.XendDomainInfo 3874] DEBUG (XenDomainInfo: 1449]
XendDlomainInfo.destroy: domain=1
[2006-12-14 14:55:46 xend.XendDomainInfo 3874] DEBUG (XenDomainInfo: 1457]
XendDlomainInfo.destroy:Domain(1)
32 bit 非-PAE カーネルを実行する必要がある場合は、使用中のゲストを完全仮想化の仮想マシンとして実行する必要があります。para-virtualized のゲストの為に 32bit PAE ゲストを実行する必要がある場合は、32bit PAE hypervisor が必要となります。para-virtualized のゲストの為に、64bit PAE ゲストを実行する必要がある場合は、64bit PAE hypervisor が必要となります。完全仮想化のゲスト用には、64bit hypervisor を持つ 64bit ゲストを実行しなければなりません。Red Hat Enterprise Linux 5 i686 に 同梱してある 32bit PAE hypervisor は 32bit PAE para-virtualized ゲスト OS と 32 bit の完全仮想化ゲスト OS の実行のみをサポートします。64bit hypervisor は 64bit para-virtualized のゲストのみをサポートします。
これは、完全仮想化の HVM ゲストを Red Hat Enterprise Linux 5 システムに移動する時に 発覚します。ユーザーのゲストは起動に失敗する可能性があり、コンソール画面にエラーが出るでしょう。設定ファイル内の PAE エントリをチェックして、pae=1 であることを確認します。32bit のディストリビューションを使用する必要があります。
次のようなエラー表示があるとします:
Unable to open a connection to the Xen hypervisor or daemon
これは、virt-manager アプリケーションが起動に失敗した時に発生します。このエラーは/etc/hosts 設定ファイル内にローカルホストのエントリがない場合に起こります。そのファイルをチェックして、ローカルホストが有効であるかどうか確認します。以下に間違えたローカルホストのエントリ例を示します:
# Do not remove the following line, or various programs
# that require network functionality will fail.
localhost.localdomain localhost
以下に正しいローカルホストエントリの例を示します:
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
localhost.localdomain. localhost
以下のエラーが表示されます ( xen-xend.logfile 内で) :
Bridge xenbr1 does not exist!
これは、ゲストのブリッジが間違えた設定を持っている時に発生し、これが Xen hotplug スクリプトを強制的にタイムアウトにします。設定ファイルをホスト間で移動する場合は、ゲストの設定ファイルを更新してネットワークのトポロジーと設定修正を反映するようにしなければなりません。間違えた、又は存在しない Xen ブリッジの設定を持つゲストを開始しようとすると、以下のようなエラーが出ます:
# xm create mySQL01

Using config file " mySQL01"
Going to boot Red Hat Enterprise Linux Server (2.6.18.-1.2747 .el5xen)
kernel: /vmlinuz-2.6.18-12747.el5xen
initrd: /initrd-2.6.18-1.2747.el5xen.img
Error: Device 0 (vif) could not be connected. Hotplug scripts not working.
更には、xend.log は次のエラーを表示します:
[2006-11-14 15:07:08 xend 3875] DEBUG (DevController:143) Waiting for devices vif
[2006-11-14 15:07:08 xend 3875] DEBUG (DevController:149) Waiting for 0
[2006-11-14 15:07:08 xend 3875] DEBUG (DevController:464) hotplugStatusCallback

/local/domain/0/backend/vif/2/0/hotplug-status

[2006-11-14 15:08:09 xend.XendDomainInfo 3875] DEBUG (XendDomainInfo:1449) XendDomainInfo.destroy: domid=2
[2006-11-14 15:08:09 xend.XendDomainInfo 3875] DEBUG (XendDomainInfo:1457) XendDomainInfo.destroyDomain(2)
[2006-11-14 15:07:08 xend 3875] DEBUG (DevController:464) hotplugStatusCallback

/local/domain/0/backend/vif/2/0/hotplug-status
この問題を解決するには、/etc/xen ディレクトリにある ゲスト設定ファイルを開きます。例えば、ゲスト mySQL01 を 編集する場合、
# vim /etc/xen/mySQL01
vif エントリを見つけます。xenbr0 を デフォルトブリッジとして使用していると想定すると、適切なエントリは以下に似ているはずです:
# vif = ['mac=00:16:3e:49:1d:11, bridge=xenbr0',]
次のような python depreciation エラーを受け取ります:
# xm shutdown win2k3xen12
# xm create win2k3xen12

Using config file "win2k3xen12".

/usr/lib64/python2.4/site-packages/xenxm/opts.py:520: Deprecation Warning:
Non ASCII character '\xc0' in file win2k3xen12 on line 1, but no encoding
declared; see http://www.python.org/peps/pep-0263.html for details

execfile (defconfig, globs, locs,)
Error: invalid syntax 9win2k3xen12, line1)
Python は、無効な(又は間違えた) 設定ファイルがある場合にこれらのメッセージを生成します。この問題を解決するには、間違えた設定ファイルを修正するか、又は新しいものを生成します。