この付録では、Oracle VM Serverのトラブルシューティングについて説明します。 内容は次のとおりです。
ドメインの作成に失敗した場合、Oracle VM Serverのログ・ファイルを確認し、コマンドライン・ツールを使用して問題の原因を特定してください。 Oracle VM Serverの問題をトラブルシューティングする際に使用する多くの便利なコマンドライン・ツールや、確認する必要のある重要なディレクトリおよびログ・ファイルがあります。 この項では次を説明します。
Oracle VM Serverのディレクトリ
Oracle VM Serverのログ・ファイル
Oracle VM Serverのコマンドライン・ツール
表E-1「Oracle VM Serverのディレクトリ」に、Oracle VM Serverの問題をトラブルシューティングする際に確認する必要がある重要なOracle VM Serverのディレクトリを示します。
表E-2「Oracle VM Serverのログ・ファイル」に、Oracle VM Serverの問題をトラブルシューティングする際に確認する必要があるOracle VM Serverのログ・ファイルを示します。
表E-2 Oracle VM Serverのログ・ファイル
ログ・ファイル | 目的 |
---|---|
xend.log |
Oracle VM Serverデーモンのすべてのアクションのログを含みます。 アクションは、通常の条件またはエラー条件です。 このログには、 |
xend-debug.log |
Oracle VM Serverデーモンのアクションの詳細ログを含みます。 |
xen-hotplug.log |
ホットプラグ・イベントのログを含みます。 デバイスまたはネットワーク・スクリプトが起動しない、または使用できない場合、ホットプラグ・イベントがログに記録されます。 |
qemu-dm.pid.log |
各ハードウェア仮想化ゲストのログを含みます。 このログは、quemu-dmプロセスによって作成されます。 psコマンドを使用してpid(プロセス識別子)を検索し、これをファイル名に置き換えます。 |
表E-3「Oracle VM Serverのコマンドライン・ツール」に、Oracle VM Serverの問題をトラブルシューティングする際に使用する必要があるOracle VM Serverのコマンドライン・ツールを示します。
Oracle VM Serverは、静的IPアドレスのコンピュータにインストールすることをお薦めします。 コンピュータでDHCPを使用する場合は、DHCPサーバーを構成して静的DHCPアドレスを割り当てる必要があります。 これによって、ホストは常に同じIPアドレスを受信できます。 DHCPのリース期間によってIPアドレスが変わる可能性のある環境で使用すると、Oracle VM Serverホストの動作が不確定になります。
Oracle VM Managerを使用してゲストのコンソールに接続できます。 Oracle VM Managerにアクセスできない場合、VNC(仮想ネットワーク・コンピューティング)を使用して、ゲストのコンソールへのアクセスを構成できます。 ゲストのVNCアクセスは、ゲスト構成ファイルのvm.cfgでVNCアクセスを有効にする必要があります。リスニング・アドレスやパスワードなどの一部のVNCパラメータは、次の場所で構成できます。
Oracle VM Server構成ファイル
/etc/xen/xend-config.sxp
次の場所のいずれかのゲスト構成ファイル:
/etc/xen/name
/OVS/running_pool/name/vm.cfg
ハードウェア仮想化ゲストは、ゲスト構成ファイルでvnc=1
パラメータを使用します。次に例を示します。
vnc=1 vnclisten '0.0.0.0'
準仮想化ゲストは、次のようにゲスト構成ファイルのVNC仮想フレーム・バッファを使用します。
vfb = ['type=vnc,vncunused=1,vnclisten=0.0.0.0,vncpasswd=mypassword']
ゲスト構成ファイルで定義されるVNC設定は、Oracle VM Server構成ファイルの設定より優先されます。 たとえば、ハードウェア仮想化ゲストの構成ファイルに次が指定される場合、
vnc=1
vnclisten '0.0.0.0'
vncpassword 'mypassword'
Oracle VM Server構成で設定された値ではなく、ゲスト構成ファイルに設定された値がVNCアクセスに使用されます。
注意: vnclisten を0.0.0.0 に設定すると、コンピュータへのアクセスを許可するVNCが設定されます。 これによって、ホスト・コンピュータのセキュリティが低下する場合があります。 |
ハードウェア仮想化ゲストの構成ファイルに次が指定される場合、
vnc=1
ゲストのVNCが有効になります。vnclisten
パラメータは、Oracle VM Server構成ファイルから使用されます。 vnclisten
がOracle VM Server構成ファイルで指定されない場合、デフォルト値である127.0.0.1
が使用されます。 ハードウェア仮想化ゲストの構成ファイルに次が指定される場合、
vnc=0
ゲストのVNCアクセスが無効になります。
Oracle VM Server構成ファイルのVNCアクセス用のデフォルト構成オプションを設定すると、すべてのゲストのアクセスを構成してから、ゲスト構成ファイルのVNCパラメータを設定することでVNCアクセスを個別に変更できます。
準仮想化ゲストの構成ファイルにおけるVNC構成エントリの例は、次のとおりです。
vfb = ['type=vnc,vncunused=1,vnclisten=0.0.0.0,vncpasswd=mypassword']
ハードウェア仮想化ゲストの構成ファイルにおけるVNC構成エントリの例は、次のとおりです。
vnc = 1 # vnc=1 enabled, 0=disabled
vncconsole = 1 # vncconsole=1 enables spawning VNC viewer for domain's
# console. Default=0
vnclisten = 0.0.0.0 # Address that should be listened on for the VNC server
# if VNC is set. Default (if vnc=0) is to use
# 'vnc-listen' setting from /etc/xen/xend-config.sxp
vncpasswd = 'mypassword' # VNC password
vncunused = 1 # vncunused=1 - find an unused port for the VNC server
# to listen on. Default=1
この例では、ゲストが作成されてVNCポート番号がゲストに割り当てられるたびに、vncunused=1
パラメータが新しいVNCポート番号を割り当てます。 ポート番号は、デフォルトのVNCポート番号の5900から割り当てられます。このため、dom1にはポート5900、dom2にはポート5901、dom3にはポート5902のように割り当てられます。
コマンドを使用して、ホスト・コンピュータのゲストに接続します。
# vncviewer -Shared ipaddress:port
-Shared
パラメータを使用すると、VNC接続を共有できます。 このパラメータを設定しない場合、別のユーザーが同時に接続して、VNCセッションを破棄することがあります。 接続文字列を使用してVNC Viewerでリモート・コンピュータから接続します。
ipaddress:port
いずれの例でも、ipaddress
はOracle VM ServerのIPアドレスまたはホスト名で、port
はゲストのVNCポート番号です。
virt-installコマンドライン・ツールを使用してゲストを作成する際にグラフィカル・インストーラが起動しない場合、X11構成を確認する必要があります。 ssh(セキュア・シェル)接続でコンソールを使用している場合、コンソールに接続して、次のようにDISPLAY環境変数を設定します。
# ssh root@example # export DISPLAY=example:0.0
また、コンソール接続を有効にし、次のようなssh -X
コマンドによるssh転送を有効にできます。
# ssh -X root@example
Puttyを使用してコンソールに接続する場合、X11対応のオペレーティング・システムから接続する必要があります。
ハードウェア仮想化ゲストを作成した後にコンソールが表示されない場合、ディスク・デバイスの指定が正しくない可能性があります。 ハードウェア仮想化ゲストを作成する場合、VNCコンソール設定を指定する必要があります。 これは、準仮想化ゲストには必要ありません。
準仮想化ゲストは、NTPD(ネットワーク・タイム・プロトコル・デーモン)などを使用して、固有のシステム・クロック管理を実行できます。ハイパーバイザは、すべてのゲストのシステム・クロック管理を実行します。
/etc/sysctl.confファイルのxen.independent_wallclock
パラメータを1
に設定すると、固有のシステム・クロックを管理するために準仮想化ゲストを設定できます。 次に例を示します。
"xen.independent_wallclock = 1"
ハイパーバイザを設定して準仮想化ゲストのシステム・クロックを管理する場合、xen.independent_wallclock
を0
に設定します。 ゲストの時間の設定または変更の処理は失敗します。
/procファイルの設定を一時的に変更できます。 次に例を示します。
"echo 1 > /proc/sys/xen/independent_wallclock"
注意: この設定は、ハードウェア仮想化ゲストに適用されません。 |
Oracle VMリリース2.1.1では、ハードウェア仮想化ゲストのtimer_mode
パラメータを使用できます。 このパラメータを正しく適用すると、ほとんどのハードウェア仮想化ゲストのwallclock時刻のずれの問題を軽減または排除できます。 wallclock時刻のずれの問題は、準仮想化ゲストでは発生しません。
timer_mode
パラメータの正しい値の適用を決定するのが困難なため、os-type
およびos-variant
コマンドライン・スイッチをvirt-installに渡し、ゲスト・オペレーティング・システム用の最適なtimer_mode
値を選択できます。 これらのvirt-installパラメータを使用すると、正しいtimer_mode
値がゲスト構成ファイルに自動的に追加されます。 たとえば、64ビットのOracle Enterprise Linux 5ゲストを作成する場合、次のコマンドをvirt-installコマンドラインに追加します。
# virt-install --hvm ... --os-type=linux --os-variant=el5_64 ...
最適な結果を取得するには、ゲストのインストール後に特定のオペレーティング・システム・バリアントのブート・ローダー(grub.conf)構成ファイルに追加のパラメータが必要になる場合があります。 特に、最適かつ正確なクロックには、Linuxゲスト・ブート・パラメータを指定して、pitクロック・ソースを使用する必要があります。 ほとんどのゲストにclock=pit nohpet nopmtimer
を追加することで、ゲストのクロック・ソースとしてpitが選択されます。 Oracle VM用に公開されているテンプレートには、これらの追加パラメータが含まれます。
仮想時間を正確に保守することは困難です。 様々なパラメータが仮想時間の管理と補完のチューニングを行います。ただし、ゲスト内で実行されるntp時間サービスの代わりにはなりません。 ntpd
サービスが実行され、/etc/ntpd.conf構成ファイルが有効な時間サーバーを示していることを確認してください。
マウス・ポインタがハードウェア仮想化ゲストのVNC Viewerセッションのカーソルを追跡しない場合、次を/etc/xen/xend-config.sxpのOracle VM Server構成ファイルに追加して、デバイス・モデルで絶対(タブレット)座標が使用されるようにします。
usbdevice='tablet'
変更を有効にするには、Oracle VM Serverを再起動します。
ハードウェア仮想化ゲストを実行すると、QEMUプロセス(qemu-dm)のメモリー使用量が特に負荷の高いI/Oで大幅に増加する可能性があります。 このため、メモリーが不足してハードウェア仮想化ゲストが停止する場合があります。 ゲストが停止した場合は、dom0のメモリーの割当てを(たとえば、512MBから768MBに)増加します。
サウンド・カードなどの一部のデバイスがハードウェア仮想化ゲストで正常に動作しない場合があります。 ハードウェア仮想化ゲストで、物理メモリー・アドレスを必要とするデバイスは、仮想化されたメモリー・アドレスを使用します。このため、正しくないメモリー位置の値が設定される可能性があります。 これは、ハードウェア仮想化ゲストのDMA(ダイレクト・メモリー・アクセス)が仮想化されるためです。
ハードウェア仮想化ゲストのオペレーティング・システムは、アドレス0以上のメモリーにロードされます。 これは、最初にロードされるハードウェア仮想化ゲストに対してのみ実行されます。 Oracle VM Serverは、メモリー・アドレス0を割り当てられたメモリーのサイズに仮想化します。ただし、ゲスト・オペレーティング・システムは、実際には別のメモリー位置にロードされます。 違いがシャドウ・ページ・テーブルで修正されますが、オペレーティング・システムはこれを認識しません。
たとえば、100MBのアドレスでWindowsを実行しているハードウェア仮想化ゲストのメモリーに音声がロードされると、目的の音声ではなく、サウンド・カードによってガベージが生成されることがあります。 これは、実際の音声が100MB+256MBの位置でロードされるためです。 サウンド・カードは100MBのアドレスを受け取りますが、実際は256MBの位置です。
コンピュータのメモリー管理単位のIOMMU(I/Oメモリー管理ユニット)では、仮想アドレスと物理アドレスをマッピングし、ハードウェア仮想化ゲストからハードウェアに直接アクセスできるようになるため、この問題はなくなります。
構成ファイルを使用して準仮想化ゲストまたはハードウェア仮想化ゲストを作成し、インストール中にCD-ROMイメージが見つからない場合、不正な順番でIDEデバイスを使用している可能性があります。 正しくIDEデバイスを配置すると、この問題は解決します。 disk = [ ... ]
パラメータがhdc:cdrom
として定義され、hda
の前に設定されていることを確認してください。そうではない場合、通常のboot='dc'
構成ではCD-ROMイメージを検出できません。
Oracle VM Serverは、デフォルトで外部コンピュータ(またはゲスト)からのNFSアクセスをブロックします。 このため、NFS接続を使用してゲストを作成する場合に問題が発生することがあります。 これを解決するには、次のコマンドでファイアウォールを無効にします。
# service iptables stop
同等ではないハードウェアを使用すると、コンピュータのドメインを移行できません。 ドメインを移行するには、同じ型および同じモデルのハードウェアを使用する必要があります。 同じOracle VM Serverリリースを使用する必要もあります。
xm console
コマンドでコンソールに接続できない可能性があるので、ハードウェア仮想化ゲストの起動の問題を追跡することが困難な場合があります。 この問題を回避するには、ゲストのGrubブート・ローダーにコンソールを設定し、ブート中にコンソールに接続します。
Grubブート・ローダーにコンソールを設定するには、/etc/grub.confファイルの最初の"title ..."
行の前に次の行を追加します。
serial --unit=0 --speed=9600 --word=8 --parity=no --stop=1 terminal --timeout=10 serial console