第8章 ジョブ、イベントおよびエラーの理解
単一の操作は、多くの場合、次の例のように複数のジョブで構成されます。
操作 |
ジョブ |
---|---|
クラスタ化されたサーバー・プールの作成 |
サーバー・プールを作成します クラスタ・ハートビート・デバイスを作成します クラスタを作成します |
仮想マシンの作成 |
仮想マシンを作成します 仮想マシンをサーバー・プールに追加します 仮想ディスクを作成します 仮想ディスクを仮想マシンに追加します 仮想マシンにVNICを作成します |
Oracle VMは、物理および仮想オブジェクトの構成の柔軟な方法をサポートするジョブ操作フレームワークを使用します。 Oracle VM Managerは、ユーザーが個別のジョブを同時に実行する間、仮想化環境の正確で一貫性のある表示を維持します。 Oracle VM Manager内の個々のオブジェクト・タイプでの構成変更は、ジョブであるとみなされます。 Oracle VMでは、環境内のオブジェクト・タイプごとに非常にきめ細かい構成が可能なため、構成変更を行うと、Oracle VM Manager内の複数のプロジェクト・タイプが影響を受ける場合があります。 つまり、各種のオブジェクトと、それらの関係はOracle VM Managerデータベース内で作成、更新または削除されるため、クラスタ化されたサーバー・プールの作成などの一部の構成アクションは、多くの連続するジョブで構成されている場合があります。
Oracle VM Managerで変更を行うと、ジョブが開始します。 実行した各変更は、別々の操作として「Job Summary」ペインの「Jobs」タブに表示されます。 仮想マシンの名前の変更など、ジョブ操作は、比較的小さなアクションである場合があります。 新しいネットワークまたはストレージ・デバイスの作成など、操作の有効範囲がより広い場合もあります。 これらのアクションのどれを実行しても、Oracle VM Managerの構成は変更されます。 新しいジョブが開始されると、ジョブの進捗状況を示すために、ジョブについての情報が管理ペインの下部にある「Job Summary」ペインに表示されます。
さらに、一部のジョブは、内部的に設定された再帰ジョブ操作の結果、またはユーザーによって開始された大きいジョブ操作のサブセットとしてトリガーされる子ジョブとして、特定のイベントによって、Oracle VM Manager内で内部的にトリガーされます。 ユーザ・アクションまたはOracle VM Manager内の内部イベントによるジョブに違いはありません。
リリース3.3の時点では、Oracle VM Managerはジョブを非同期に処理します。 つまり、Oracle VM Manager WebインタフェースまたはOracle VM Managerコマンドライン・インタフェースを使用した操作で1つ以上のジョブをトリガーした場合、ジョブが失敗しても、エラーがすぐに返されないことがあります。 すべてのジョブが正常に完了することをチェックする操作を実行する場合は、ジョブの進捗を監視することが重要になります。
8.1 ジョブの状態
Oracle VM Managerにリストされたジョブは、表8.2「ジョブの状態」に定義されているいずれかの状態になることがあります。
ジョブの状態 |
説明 |
---|---|
Completed |
ジョブが正常に完了しています。 |
In Progress |
ジョブが現在進行中です。 |
Aborted |
ジョブは中断されました。 前の状態に戻す操作をOracle VM Managerが試行しています。 |
Failed |
ジョブが正常に完了していません。 Oracle VM Managerが前の状態に戻しています。 |
Child Queued |
ジョブが子ジョブに分散されています。 子ジョブキュー内にありますが、まだ実行されていません。 すべての子ジョブが完了するのを親ジョブが待機しています。 |
Child Running |
ジョブが子ジョブに分散されています。 この子ジョブが現在実行中です。 すべての子ジョブが完了するのを親ジョブが待機しています。 |
オブジェクトの名前の変更など、一部のジョブ操作はすぐに完了します。 仮想マシンで使用されるメモリーの調節など、他の操作は、より長くかかります。 「Monitoring Job States」では、ジョブの進行状況を把握できます。
ジョブが実行中であるか、完了に失敗した場合、取り消すためにジョブを中断できます。 たとえば、仮想マシンまたはOracle VM Serverが応答しない状態になったり、開始リクエストまたは停止リクエストへの応答に失敗する場合があります。 適切なアクションはジョブを中断することです。 ジョブがこのように取り消されると、状態は「Aborted」に変更されます。 ジョブが中断される場合がありますが、アクションがトリガーされていると、Oracle VM Managerで前の状態にロールバックできなくなる場合があります。 この場合は、ジョブを中断するアクションが成功する場合がありますが、ジョブによってトリガーされたアクションは完了しています。 この状況では、ジョブの状態は「Aborted」に変更されますが、ジョブによってトリガーされたアクションが完了していることに気付く場合があります。 たとえば、仮想マシンの停止を試み、その後に停止のジョブを中断しても、仮想マシン内のオペレーティング・システムには、Oracle VM Managerから停止メッセージがすでに送信されている場合があります。 この場合、仮想マシンではその停止プロセスが続行されているため、ジョブによってトリガーされたアクションは実際に成功していますが、ジョブはまだ「Aborted」の状態です。 ジョブの中断の詳細は、『Oracle VM Managerユーザーズ・ガイド』のジョブの中断に関する項を参照してください。
仮想マシンが起動または停止するたびに、ジョブが「hang」になったり、「In Progress」のままになる場合があります。 様々な理由で準仮想化マシンが応答しない状態なり、結果として開始または停止リクエストへの応答に失敗することもあります。 この場合の適切なアクションはジョブを中断することです。 たとえば、無効なネットワークURLを指定したPXEタイプの起動を使用してPVM仮想マシンを起動すると、仮想マシンのステータスが「In Progress」のままになります。 これを解決するには、仮想マシンの起動ジョブを強制終了します。 仮想マシンを編集し、正しいURLを指定します。
ジョブの状態が「Failed」の場合、通常は失敗の理由を示したジョブの詳細情報を確認できます。 この情報は、Oracle VM Managerに提供されるインタフェースを使用してアクセスできます。
一部のジョブは子ジョブに分散される場合があります。 この場合は、親ジョブのステータスは「Child Queued」または「Child Running」になります。 親ジョブは、分散されたすべての子ジョブが完了し、ステータスをレポートするまで待機する必要があります。 これは、Oracle VM Manager内の様々なオブジェクトで複数のアクションを実行する必要がある状況によく見られます。 たとえば、複数のサーバーにリポジトリを提示している場合、親ジョブが作成され、アクションを処理して全体のステータスについてレポートしますが、後続の子ジョブは分散され、各サーバーでタスクを実際に実行します。
ジョブが長時間「Child Queued」状態の様子の場合は、サーバーのアクセス可能性をチェックしてください。 Oracle VM Managerは、サーバーにアクセスできない場合でも、ジョブの実行を試行し続けます。 ジョブが完了するか、ジョブが中断されるまで、ジョブの実行の試行は停止されません。 これにより、ジョブ・キューのロックが可能になるため、Oracle VM Manager内の後続のアクションはジョブ・キューに追加されません。 これが発生した場合は、この状態のままのジョブを中断して、ジョブ・キュー解放する必要が生じる場合があります。
8.2 失敗したジョブの対処方法
ジョブ操作は、Oracle VM Managerによって検証され、「Jobs」タブに追加されます。 ジョブ操作の失敗によって次が発生します。
-
失敗したジョブは取り消されます。
-
残りのジョブは試行されます。
以前のOracle VMリリース(リリース3.3.xより前)では、複数の操作を1つのジョブに統合できました。 ジョブが失敗すると、まだ実行されていないジョブに属する操作を取り消し、データベースに対する変更を、ジョブがトリガーされる前の一貫性のある状態にロールバックできました。 ロールバックが無効になった場合は、手動によるクリーンアップが一部必要になることがありました。 残念なことに、操作は1つのジョブにバンドルされていたため、ジョブ内の各操作の実際のステータスは透過的ではありませんでした。 これにより、状況を解決するために実行する必要のあるアクションの判断が困難でした。
リリース3.3.x以降では、これは発生しなくなりました。 現在のアーキテクチャでは、各ジョブでそれぞれ1つのアクションが実行されるように、各操作を1つのAPIコールとして扱います。 これにより、各操作がより透過的になり、ジョブが失敗した場合でも、環境の状態が明確になり、ジョブの失敗の原因の判断が容易になります。 1つのジョブを子ジョブに分散できますが、各ジョブは個別の操作になります。 これは、操作が失敗した場合は、ジョブ・リストに目を通して、失敗したジョブと成功したジョブを確認する必要があることを意味します。 失敗したジョブが見つかった場合は、エラーまたは障害を修正してから、ジョブを再試行してください。 失敗したジョブにより、Oracle VM環境が一貫性のない状態になっている場合は、Oracle VM Manager Webインタフェースを使用してクリーンアップするか、これが実行できない場合は、Oracle VM Managerコマンドライン・インタフェースを使用してクリーンアップする必要があります。
8.3 再帰ジョブとは
Oracle VM Managerでは、サーバー更新リポジトリをチェックして、Oracle VM Serverのソフトウェア更新があるかどうかを確認するなど、再帰ジョブを定期的に実行します。 これらのジョブおよびそれらに使用可能な設定は、Oracle VM Manager Webインタフェース内で構成できます。 再帰ジョブのリストは、『Oracle VM Managerユーザーズ・ガイド』の再帰に関する項を参照してください。
一部の定期的タスクが内部的に実行されますが、ユーザー構成パラメータは含まれません。 これらのタスクは、Oracle VM Manager Webインタフェースで公開される再帰ジョブの中にはリストされません。
8.4 イベント/エラーの確認
ジョブ操作が失敗すると、1つ以上のイベントが生成される場合があります。 これらは、Oracle VM Managerとのインタフェースから表示可能で、ユーザー・インタフェースに表示されます(ナビゲーション・ツリーに黄色または赤色のアイコンでフラグが付けられます)。 オブジェクトにエラー・イベントが関連付けられている場合、そのイベントの原因となった問題を解決してから、イベントを確認してエラーをクリアし、オブジェクトを通常操作に戻すことができることをOracle VM Managerに通知する必要があります。 たとえば、これは、エラーの結果Oracle VM Serverまたは仮想マシンが停止した場合に発生する可能性があります。 または、スイッチまたはネットワーク・インタフェース・カードに影響するハードウェアの問題により、ネットワークが停止した場合に、イベントが生成される可能性もあります。 Oracle VM Server、仮想マシン、リポジトリおよび記憶域オブジェクトでは、それぞれに関連付けられたエラー・イベントが発生する可能性があります。
Oracle VM Managerの外部の問題の結果、イベントが頻繁に発生する場合もあります。 イベントを最初にトリガーした問題が解決されたことが確認された場合のみ、イベントを確認するようにしてください。 イベントを確認しても問題が解決されていない場合、Oracle VM Managerは、イベントによってブロックされている可能性のある残りのジョブを引き続き処理します。 これにより、環境のロールバックが困難になる可能性があり、さらなるエラーが発生する場合があります。
イベントを確認するには、『Oracle VM Managerユーザーズ・ガイド』の「イベント・パースペクティブ」のオブジェクトのイベント・パースペクティブに関する項を参照してください。