この章では、ジョブ・フレームワークの使用とOracle VMのトラブルシューティングについて、次の内容を説明します。
詳細は、Oracleがサポートしている次のWebサイトを参照してください。
My Oracle Support: http://support.oracle.com
Oracle仮想化フォーラム: http://forums.oracle.com/forums/forum.jspa?forumID=823
Oracle VM Managerは、物理および仮想オブジェクトの構成の柔軟な方法をサポートするジョブ操作フレームワークを使用します。Oracle VM Managerは、ユーザーが個別のジョブを同時に実行する間、仮想環境の正確で一貫性がある表示を維持します。それぞれの構成変更(単一のユーザーによって実行されるトランザクション)はジョブとみなされます。
次の項では、ジョブ、各ジョブの開始および終了時のリソースのロックおよび解除方法、およびジョブの管理方法について説明します。この項には、次の内容が含まれます。
ジョブとは、1つ以上の物理または仮想オブジェクトに影響する構成の変更のことです。ジョブに含めることができるユーザー操作の例は、次のとおりです。
サーバー・プールの追加または削除
仮想マシンへのVNICの追加
単一のジョブには1つ以上の個々の操作を含めることができます。ジョブの処理中、ジョブに含まれているリソースの左側に黄色のロックが表示されます。
単一のジョブには1つ以上の個々の操作を含めることができます。ジョブの処理中、ジョブに含まれているリソースの左側に黄色のロックが表示されます。
ジョブに関連するオブジェクトは、ジョブが完了または中断されるまで、他のすべてのOracle VM Managerユーザーに対してロックされます。オブジェクトの同じ権限レベルのユーザーのみがロック解除できます。これによって、一貫性のある正確な表示がすべてのユーザーに対して維持されます。
ロックされているオブジェクトの状態は、ロックが解除されるまで確認できません。Oracle VM Managerの状態は、ロックされていないオブジェクトの状態によって常に正確に反映されます。
様々なオブジェクトに対するジョブを実行する場合に、多くの様々なユーザーがジョブを同時に実行することがあります。たとえば、ユーザーAがFinance-Oneサーバー・プールを作成し、Oracle VM Serverを別のサーバー・プールに移動してジョブを開始するとします。同時に、ユーザーBがCommoditiesサーバー・プールのリソースを変更します。各ユーザーには、ジョブの個別のジョブ・ペインがあり、互いのオブジェクトはロックされていると表示されます。オブジェクトは、ジョブが完了するまでロックされたままになります。
ジョブを完了する前に、ロックを次の2つの方法で解除できます。
ロックを開始したユーザーがログアウトする。この操作はユーザーまたはOracle VM Manager管理者が実行できます。
Oracle VM Manager管理者が直接操作する。
ジョブが完了するときに、進行状況が「Jobs」タブに表示されます。ジョブが完了すると、すべてのロックが解除されます。
ジョブ操作は、「Job」タブに追加されるときに、Oracle VM Managerによって検証されます。操作の失敗によって次が発生します。
ジョブは取り消されます。
ジョブによって指定されたすべての操作は取り消されます。
Oracle VM Managerの状態は、ジョブ開始以前の状態にロールバックされます。
操作のすべてのロックは解放されます。
ジョブ操作が失敗すると、1つ以上のイベントが生成され、Oracle VM Managerに表示されます。イベントは、ナビゲーション・ツリーで黄色のアイコンのフラグが付けられます。
失敗したイベントの情報を取得するには、「Jobs」管理ペインの「Events」タブをクリックします。
「Job」タブにリストされたジョブは表B-1で定義されている任意の状態にすることができます。
Oracle VM Managerで変更を行うと、ジョブが開始します。行った各変更は、別々の操作としてジョブ・ペインに表示されます。仮想マシンの名前の変更など、ジョブ操作は、比較的小さなアクションである場合があります。新しいネットワークまたはストレージ・デバイスの作成など、操作の有効範囲がより広い場合もあります。これらのアクションのどれを実行しても、Oracle VM Managerの構成は変更されます。新しいジョブが開始されるとき、ジョブの進捗状況を示すために、ジョブについての情報が管理ペインの下部にあるジョブ・ペインに表示されます。
ジョブが実行中であるか、完了に失敗した場合、取り消すためにジョブを中断できます。管理者は、すべてのユーザーのジョブを中断できます。
ジョブを中断する場合、キューに入っているすべての操作はジョブ開始以前の状態にロールバックされます。オブジェクトの名前の変更など、一部のジョブ操作はすぐに完了します。仮想マシンで使用されるメモリーの調節など、他の操作は、より長くかかります。
ジョブを中断するには2つの方法があります。
ジョブ・ビューの使用
ジョブ・ビュー以外の、任意のビューのジョブ・ペインの使用
ジョブを中断するための両方のプロシージャを次に示します。
ジョブ・ビューを使用してジョブを中断するには、次の手順を実行します。
「Jobs」ビューを選択します。
「Jobs」タブを選択します。
「Jobs」表のジョブを選択します。
ツールバーの「Abort」をクリックします。
ジョブ・ペインを使用してジョブを中断するには、次の手順を実行します。
ジョブ・ビュー以外の任意のビューで、「Jobs」ペインのジョブを選択します。
「Abort」列の「Abort」をクリックします。
ジョブが成功する場合、それに関連付けられているすべての操作はOracle VM Managerで実行されています。「Job Succeeded」メッセージが「Job Progress」領域に表示されます。
ジョブが失敗する場合、Oracle VM Managerの状態はジョブ開始以前の状態に戻ります。「Details」をクリックして、ジョブのすべての操作の詳細を参照してください。
この項では、Oracle VM Serverの使用時に発生する可能性があるいくつかの問題およびその解決方法について説明します。内容は次のとおりです。
ドメインの作成に失敗した場合、Oracle VM Serverのログ・ファイルを確認し、コマンドライン・ツールを使用して問題の原因を特定してください。Oracle VM Serverの問題をトラブルシューティングする際に使用する多くの便利なコマンドライン・ツールや、確認する必要のある重要なディレクトリおよびログ・ファイルがあります。この項では次を説明します。
Oracle VM Serverのディレクトリ
Oracle VM Serverのログ・ファイル
Oracle VM Serverのコマンドライン・ツール
表B-2「Oracle VM Serverのディレクトリ」に、Oracle VM Serverの問題をトラブルシューティングする際に確認する必要がある重要なOracle VM Serverのディレクトリを示します。
表B-2 Oracle VM Serverのディレクトリ
ディレクトリ | 目的 |
---|---|
/etc/xen |
Oracle VM Serverデーモンと仮想化ゲストのOracle VM Server構成ファイルを含みます。 |
/etc/xen/scripts |
ネットワーク関連スクリプトを含みます。 |
/var/log |
Oracle VMエージェントのログ・ファイルのovs-agent.logを含みます。 仮想マシン・ライフ・サイクル・イベントを記録するovmwatch.logを含みます。 リモートVNCコンソール・アクセスを記録し、Oracle VM Managerとのすべての通信を記録するovm-consoled.logを含みます。 |
/var/log/xen |
Oracle VM Serverのログ・ファイルを含みます。 |
/var/log/messages |
Oracle VM Serverのメッセージを含みます。 |
表B-3「Oracle VM Serverのログ・ファイル」に、Oracle VM Serverの問題をトラブルシューティングする際に確認する必要があるOracle VM Serverのログ・ファイルを示します。
表B-3 Oracle VM Serverのログ・ファイル
ログ・ファイル | 目的 |
---|---|
xend.log |
Oracle VM Serverデーモンのすべてのアクションのログを含みます。アクションは、通常の条件またはエラー条件です。このログ・ファイルには、 |
xend-debug.log |
Oracle VM Serverデーモンのアクションの詳細ログを含みます。このファイルは/var/log/xenディレクトリにあります。 |
xen-hotplug.log |
ホットプラグ・イベントのログを含みます。デバイスまたはネットワーク・スクリプトが起動しない、または使用できない場合、ホットプラグ・イベントがログに記録されます。このファイルは/var/log/xenディレクトリにあります。 |
qemu-dm.pid.log |
各ハードウェア仮想化ゲストのログを含みます。このログは、quemu-dmプロセスによって作成されます。psコマンドを使用してpid(プロセス識別子)を検索し、これをファイル名に置き換えます。このファイルは/var/log/xenディレクトリにあります。 |
表B-4「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 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を再起動します。サーバー・プールの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
この項では、Oracle VM Managerの使用時に発生する可能性があるいくつかの問題およびその解決方法について説明します。内容は、次のとおりです。
Oracle VM Managerメッセージは、オブジェクトの「Events」タブのジョブ・ビューのユーザー・インタフェースに表示されます。
表B-5「Oracle VM Managerのログ・ファイル」に、Oracle VM Managerのすべてのログ・ファイルを示します。
Oracle VM Managerの仮想マシン・コンソールを起動するとエラーが表示される場合、Oracle VM Managerホスト・コンピュータにVNC Viewerをインストールしていない可能性があります。Oracle VM Managerホスト・コンピュータにVNC Viewerをインストールしていない場合、仮想マシン・コンソールを起動しようとすると次のエラーが表示されます。
Unable to launch the application.
Name: VncViewer
Publisher: TightVnc
From: URL
この問題を解決するには、Oracle VM Managerホスト・コンピュータにVNC Viewerをインストールします。詳細は、『Oracle VMリリース・ノート』を参照してください。
Oracle VM Manager UIにアクセスするクライアントにVNC Viewerをインストールすることもできます。クライアントにVNC Viewerがない場合でも、この問題が発生しないように、Oracle VM Managerホスト・コンピュータにVNC Viewerをインストールすることをお薦めします。
「Error: There is no server supporting hardware virtualization in the selected server pool.」というメッセージが表示されます。
この問題を解決するために、仮想マシン・サーバーがハードウェア仮想化をサポートしているかどうかを確認します。
確認するには、次の手順を実行します。
次のコマンドを実行して、ハードウェア仮想化がCPUでサポートされているかどうかを確認します。
# cat /proc/cpuinfo |grep -E 'vmx|smx'
vmx
またはsmx
を含む情報が表示される場合、CPUはハードウェア仮想化をサポートしています。返されるメッセージの例は、次のとおりです。
flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr lahf_lm
BIOSのハードウェア仮想化が有効になっていることを確認します。
次のコマンドを実行して、オペレーティング・システムがハードウェア仮想化をサポートしているかどうかを確認します。
# xm info |grep hvm
返されるメッセージの例は、次のとおりです。
xen_caps : xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x
CPUでハードウェア仮想化がサポートされていない場合は、準仮想化の方法を使用して仮想マシンを作成してください。詳細は第 8.7 項「仮想マシンの作成」を参照してください。
仮想マシンのCDを変更するには、次の手順を実行します。
最初のCDをアンマウントします。
# umount mount-point
2番目のISOファイルを選択し、「Change CD」をクリックします。
2番目のCDをマウントします。
# mount /dev/cdrom mount-point