(57)【要約】  ジョブを実行する仮想計算機に障害が発生した場合に、実行時間を考慮したスケジュール変更を実現することを目的とする。計算機上に生成された仮想計算機が実行するジョブを管理する管理サーバであって、複数のジョブから構成されるジョブネットの情報を管理し、仮想計算機に対してジョブネットに含まれるジョブを割り当てるジョブ管理部と、ジョブネットにおけるジョブの実行状況を監視し、仮想計算機における障害を検出した場合に、回復処理を実行する回復部と、を備え、ジョブネットに含まれる第１のジョブを実行する第１の仮想計算機に障害が発生した場合に、ジョブネットに含まれるジョブのうち、割り当てを変更する対象ジョブを特定し、対象ジョブを実行するために必要な前記仮想計算機の性能を決定する。
2012164689.tif 000002
【特許請求の範囲】
【請求項１】
第１のプロセッサと、前記第１のプロセッサに接続される第１のメモリと、前記第１のプロセッサに接続され、外部装置と接続するための第１のインタフェースとを備え、計算機上に生成された仮想計算機が実行するジョブを管理する管理サーバであって、
前記管理サーバは、
複数の前記ジョブから構成されるジョブネットの情報を管理し、前記仮想計算機に対して前記ジョブネットに含まれる前記ジョブを割り当てるジョブ管理部と、
前記ジョブネットにおける前記ジョブの実行状況を監視し、前記ジョブを実行する前記仮想計算機における障害を検出した場合に、回復処理を実行する回復部と、
を備え、
第１のジョブネットの実行命令を受信した場合に、前記第１のジョブネットに含まれる前記ジョブを前記仮想計算機に割り当て、
前記第１のジョブネットに含まれる第１のジョブを実行する第１の仮想計算機に障害が発生した場合に、前記第１のジョブネットに含まれる前記ジョブのうち、割り当てを変更する対象ジョブを特定し、
前記対象ジョブを実行するために必要な前記仮想計算機の性能を決定し、
前記決定された性能を有する新規仮想計算機へ、前記対象ジョブを割り当てるための変更情報を生成することを特徴とするジョブ管理サーバ。
【請求項２】
前記ジョブ管理サーバは、さらに、前記ジョブネットの構成と、前記ジョブネットの完了期限とに関する情報を格納するジョブネット管理情報を格納し、
前記ジョブネットは、前記ジョブの実行経路であるパスを含み、
前記ジョブ管理サーバは、
前記第１のジョブネットに含まれる前記パス毎に、当該パスに含まれる全ての前記ジョブの実行時間の合計値である完了予測時間を算出し、
前記算出されたパスの完了予測時間に基づいて前記ジョブネット管理情報を参照して、前記第１のジョブネットの前記完了期限以内に完了しない対象パスを特定し、
前記特定された対象パスに含まれる前記ジョブのうち、前記第１のジョブ及び前記第１のジョブの完了後に実行される前記ジョブを、前記対象ジョブとして特定することを特徴とする請求項１に記載のジョブ管理サーバ。
【請求項３】
前記ジョブ管理サーバは、前記対象パスの完了予測時間が、前記第１のジョブネットの完了期限内になるように、前記対象ジョブを割り当てる前記仮想計算機の性能を決定することを特徴とする請求項２に記載のジョブ管理サーバ。
【請求項４】
前記ジョブ管理サーバは、
さらに、前記ジョブと、前記仮想計算機の性能と、前記ジョブの完了時間を表す実行時間との対応関係を格納するジョブ実行時間管理情報を格納し、
前記ジョブ実行時間管理情報を参照して、前記対象ジョブの割り当てが変更される前の前記仮想計算機における第１の実行時間を取得し、
前記ジョブ実行時間管理情報を参照して、前記第１の実行時間より短い前記実行時間で前記対象ジョブの実行が可能な前記仮想計算機の性能を検索し、
検索された前記仮想計算機の性能を前記新規仮想計算機の性能として決定することを特徴とする請求項３に記載のジョブ管理サーバ。
【請求項５】
前記ジョブ管理サーバは、
さらに、前記計算機上に生成された前記仮想計算機の構成及び状態に関する仮想構成情報を格納し、
前記仮想構成情報を参照して、前記決定された仮想計算機の性能を満たし、かつ、他の前記ジョブが割り当てられていない前記仮想計算機が存在するか否かを判定し、
前述した条件を満たす前記仮想計算機が存在する場合には、当該仮想計算機を前記新規仮想計算機として使用するための予約処理を実行して、予約された前記新規仮想計算機に前記対象ジョブを割り当てるための前記変更情報を生成し、
前述した条件を満たす前記仮想計算機が存在しない場合には、前記決定された仮想計算機の性能を満たす前記新規仮想計算機を生成するための情報を含み、生成された前記新規仮想計算機に前記対象ジョブを割り当てるための前記変更情報を生成することを特徴とする請求項４に記載のジョブ管理サーバ。
【請求項６】
前記ジョブ管理サーバは、
前記対象パスの中から第２のジョブを選択し、
前記ジョブ実行時間管理情報を参照して、前記第２のジョブの割り当て変更前の前記仮想計算機における第２の実行時間を取得し、
前記ジョブ実行時間管理情報を参照して、前記第２の実行時間より短い前記実行時間で前記第２のジョブの実行が可能な前記仮想計算機の性能を前記第２のジョブを割り当てる前記新規仮想計算機の性能として決定し、
前記新規仮想計算機へ前記第２のジョブの割り当てが変更された場合の前記対象パスの完了予測時間を算出し、
前記算出された対象パスの完了予測時間が、前記第１のジョブネットの完了期限内であるか否かを判定し、
前記算出された完了予測時間が、前記第１のジョブネットの完了期限内ではない場合には、前記対象パスの中から第３のジョブを選択し、
前記ジョブ実行時間管理情報を参照して、前記第３のジョブの割り当て変更前の前記仮想計算機における第３の実行時間を取得し、
前記ジョブ実行時間管理情報を参照して、前記第３の実行時間より短い前記実行時間で前記第３のジョブの実行が可能な前記仮想計算機の性能を前記第３のジョブを割り当てる前記新規仮想計算機の性能として決定することを特徴とする請求項２に記載のジョブ管理サーバ。
【請求項７】
複数の計算機と、前記計算機上に生成された仮想計算機が実行するジョブを管理する管理サーバとを備える計算機システムにおけるジョブ管理方法であって、
前記各計算機は、第１のプロセッサと、前記第１のプロセッサに接続される第１のメモリと、前記第１のプロセッサに接続され、前記ジョブ管理サーバと接続するための第１のインタフェースとを有し、
前記管理サーバは、第２のプロセッサと、前記第２のプロセッサに接続される第２のメモリと、前記第２のプロセッサに接続され、前記計算機と接続するための第２のインタフェースとを有し
前記第２のメモリは、複数の前記ジョブから構成されるジョブネットの情報を管理し、前記仮想計算機に対して前記ジョブネットに含まれる前記ジョブを割り当てるジョブ管理部と、前記ジョブネットにおける前記ジョブの実行状況を監視し、前記ジョブを実行する前記仮想計算機における障害を検出した場合に、回復処理を実行する回復部と、を実現するためのプログラムを格納し、
前記プログラムは前記第２のプロセッサによって実行され、
前記ジョブ管理方法は、
前記管理サーバが、第１のジョブネットの実行命令を受信した場合に、前記第１のジョブネットに含まれる前記ジョブを前記仮想計算機に割り当てる第１のステップと、
前記管理サーバが、前記第１のジョブネットに含まれる第１のジョブを実行する第１の仮想計算機において障害の発生が検出された場合に、前記第１のジョブネットに含まれる前記ジョブのうち、割り当てを変更する対象ジョブを特定する第２のステップと、
前記管理サーバが、前記対象ジョブを実行するために必要な前記仮想系先の性能を決定する第３のステップと、
前記決定された性能を有する新規仮想計算機へ、前記対象ジョブを割り当てるための変更情報を生成する第４のステップと、を含むことを特徴とするジョブ管理方法。
【請求項８】
前記ジョブ管理サーバは、さらに、前記ジョブネットの構成と、前記ジョブネットの完了期限とに関する情報を格納するジョブネット管理情報を格納し、
前記ジョブネットは、前記ジョブの実行経路であるパスを含み、
前記第２のステップは、
前記第１のジョブネットに含まれる前記パス毎に、当該パスに含まれる全ての前記ジョブの実行時間の合計値である完了予測時間を算出する第５のステップと、
前記算出されたパスの完了予測時間に基づいて前記ジョブネット管理情報を参照して、前記第１のジョブネットの前記完了期限以内に完了しない対象パスを特定する第６のステップと、
前記特定された対象パスに含まれる前記ジョブのうち、前記第１のジョブ及び前記第１のジョブの完了後に実行される前記ジョブを、前記対象ジョブとして特定する第７のステップと、を含むことを特徴とする請求項７に記載のジョブ管理方法。
【請求項９】
前記第３のステップでは、前記対象パスの完了予測時間が、前記第１のジョブネットの完了期限内になるように、前記対象ジョブを割り当てる前記仮想計算機の性能を決定することを特徴とする請求項８に記載のジョブ管理方法。
【請求項１０】
前記ジョブ管理サーバは、さらに、前記ジョブと、前記仮想計算機の性能と、前記ジョブの完了時間を表す実行時間との対応関係を格納するジョブ実行時間管理情報を格納し、
前記第３のステップは、
前記ジョブ実行時間管理情報を参照して、前記対象ジョブの割り当てが変更される前の前記仮想計算機における第１の実行時間を取得する第８のステップと、
前記ジョブ実行時間管理情報を参照して、前記第１の実行時間より短い前記実行時間で前記対象ジョブの実行が可能な前記仮想計算機の性能を検索する第９のステップと、を含むことを特徴とする請求項９に記載のジョブ管理方法。
【請求項１１】
前記ジョブ管理サーバは、さらに、前記計算機上に生成された前記仮想計算機の構成及び状態に関する仮想構成情報を格納し、
前記第３のステップは、
前記仮想構成情報を参照して、前記決定された仮想計算機の性能を満たし、かつ、他の前記ジョブが割り当てられていない前記仮想計算機が存在するか否かを判定するステップと、
前述した条件を満たす仮想計算機が存在する場合には、当該仮想計算機を前記新規仮想計算機として使用するための予約処理を実行して、予約された前記新規仮想計算機に前記対象ジョブを割り当てるための前記変更情報を生成するステップと、
前述した条件を満たす仮想計算機が存在しない場合には、前記特定された仮想計算機の性能を満たす前記新規仮想計算機を生成するための情報を含み、生成された前記新規仮想計算機に前記対象ジョブを割り当てるための前記変更情報を生成するステップと、を含むことを特徴とする請求項１０に記載のジョブ管理方法。
【請求項１２】
前記第３のステップは、
前記対象パスの中から第２のジョブを選択するステップと、
前記ジョブ実行時間管理情報を参照して、前記第２のジョブの割り当て変更前の前記仮想計算機における第２の実行時間を取得するステップと、
前記ジョブ実行時間管理情報を参照して、前記第２の実行時間より短い前記実行時間で前記第２のジョブの実行が可能な前記仮想計算機の性能を決定するステップと、
前記新規仮想計算機へ前記第２のジョブの割り当てが変更された場合の前記対象パスの完了予測時間を算出するステップと、
前記算出された対象パスの完了予測時間が、前記第１のジョブネットの完了期限内であるか否かを判定するステップと、
前記算出された完了予測時間が、前記第１のジョブネットの完了期限内ではない場合には、前記対象パスの中から第３のジョブを選択するステップと、
前記ジョブ実行時間管理情報を参照して、前記第３のジョブの割り当て変更前の前記仮想計算機における第３の実行時間を取得するステップと、
前記ジョブ実行時間管理情報を参照して、前記第３の実行時間より短い前記実行時間で前記第３のジョブの実行が可能な前記仮想計算機の性能を前記第３のジョブを割り当てる前記新規仮想計算機の性能として決定するステップと、を含むことを特徴とする請求項８に記載のジョブ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ジョブのスケジュールの管理方法に関し、特に障害発生時のジョブのスケジュールの管理方法に関する。
【背景技術】
【０００２】
物理計算機上に複数の仮想計算機を稼働させる仮想化技術が広く用いられている。仮想計算機上では、所定の業務を実行するために複数のジョブが実行される。仮想計算機の障害に対するジョブの回復方法は様々考えられている。【０００３】
例えば、仮想計算機上で障害が発生した場合に、実行中のジョブを他の仮想計算機に移動する方法が知られている。【０００４】
特許文献１には、仮想計算機に障害又は性能低下が発生した場合に、未処理のジョブを割り当てる計算機を検索し、当該ジョブを移動させることが記載されている。また、特許文献２には、第１のサーバと、当該第１のサーバと同一のサーバ環境が設定された第２サーバとに、ジョブネットに含まれるジョブを実行させることが記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−３１７７１号公報
【特許文献２】特開２００８−９６２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１に記載の発明では、ジョブを移動するための計算機を予め準備する必要がある。また、特許文献２に記載の発明では、一つのジョブネットに対して、第１のサーバと第２のサーバとを用意する必要があり、他のジョブネットが使用するリソースが占有される。【０００７】
また、従来技術では、ジョブネットの終了時間も考慮されていないため、ジョブを移動しても所定の時間内に当該ジョブが完了せず、業務全体に影響を与える可能性がある。
【課題を解決するための手段】
【０００８】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、第１のプロセッサと、前記第１のプロセッサに接続される第１のメモリと、前記第１のプロセッサに接続され、外部装置と接続するための第１のインタフェースとを備え、計算機上に生成された仮想計算機が実行するジョブを管理する管理サーバであって、前記管理サーバは、複数の前記ジョブから構成されるジョブネットの情報を管理し、前記仮想計算機に対して前記ジョブネットに含まれる前記ジョブを割り当てるジョブ管理部と、前記ジョブネットにおける前記ジョブの実行状況を監視し、前記ジョブを実行する前記仮想計算機における障害を検出した場合に、回復処理を実行する回復部と、を備え、第１のジョブネットの実行命令を受信した場合に、前記第１のジョブネットに含まれる前記ジョブを前記仮想計算機に割り当て、前記第１のジョブネットに含まれる第１のジョブを実行する第１の仮想計算機に障害が発生した場合に、前記第１のジョブネットに含まれる前記ジョブのうち、割り当てを変更する対象ジョブを特定し、前記対象ジョブを実行するために必要な前記仮想計算機の性能を決定し、前記決定された性能を有する新規仮想計算機へ、前記対象ジョブを割り当てるための変更情報を生成することを特徴とする。
【発明の効果】
【０００９】
本発明の一形態によれば、管理サーバは、ジョブネットを構成するジョブの実行に必要な仮想計算機の性能を自動的に決定することができる。これによって、予めジョブを移動させるための待機系の仮想サーバを用意する必要がなく、物理リソースを有効に活用することができる。また、本発明の一形態によれば、実行期限時間内にジョブネットの処理が終了するように仮想計算機の性能が決定されるため、業務全体に影響を与えることなく障害に対応することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態における計算機システムの構成を説明するブロック図である。
【図２】本発明の実施形態におけるジョブ管理サーバのハードウェア構成及びソフトウェア構成の一例を示すブロック図である。
【図３】本発明の実施形態におけるサーバのハードウェア構成及びソフトウェア構成の一例を説明するブロック図である。
【図４】本発明の実施形態におけるジョブネットの一例を示す説明図である。
【図５】本発明の実施形態における物理構成管理テーブルの一例を示す説明図である。
【図６】本発明の実施形態における仮想構成管理テーブルの一例を示す説明図である。
【図７】本発明の実施形態におけるデプロイ実行時間管理テーブルの一例を示す説明図である。
【図８】本発明の実施形態における空きリソース管理テーブルの一例を示す説明図である。
【図９】本発明の実施形態におけるジョブネット構成管理テーブルの一例を示す説明図である。
【図１０】本発明の実施形態におけるジョブネット実行管理テーブルの一例を示す説明図である。
【図１１】本発明の実施形態におけるジョブ実行時間管理テーブルの一例を示す説明図である。
【図１２】本発明の実施形態における割り当て管理テーブルの一例を示す説明図である。
【図１３】本発明の実施形態における処理の概要を説明するフローチャートである。
【図１４】本発明の実施形態における障害回復処理の詳細を説明するフローチャートである。
【図１５】本発明の実施形態におけるパス特定処理の詳細を説明するフローチャートである。
【図１６Ａ】本発明の実施形態における割り当て管理テーブルのエントリの生成方法を説明するフローチャートである。
【図１６Ｂ】本発明の実施形態における割り当て管理テーブルのエントリの生成方法を説明するフローチャートである。
【図１７Ａ】本発明の実施形態におけるスペック決定処理の詳細を説明するフローチャートである。
【図１７Ｂ】本発明の実施形態におけるスペック決定処理の詳細を説明するフローチャートである。
【図１８】本発明の実施形態における予約処理の詳細を説明するフローチャートである。
【図１９Ａ】本発明の実施形態におけるスペック決定処理の詳細を説明するフローチャートである。
【図１９Ｂ】本発明の実施形態におけるスペック決定処理の詳細を説明するフローチャートである。
【発明を実施するための形態】
【００１１】
図１は、本発明の実施形態における計算機システムの構成を説明するブロック図である。
【００１２】
計算機システムは、ジョブ管理サーバ１００及び複数のサーバ２００から構成される。ジョブ管理サーバ１００と各サーバ２００とは、管理ネットワーク３００を介して接続される。
【００１３】
なお、管理ネットワーク３００は、ＷＡＮ、ＬＡＮ等が考えられるが、互いに通信できるものであればどのような接続方法を用いてもよい。また、ジョブ管理サーバ１００とサーバ２００とが直接接続されていてもよい。
【００１４】
ジョブ管理サーバ１００は、計算機システムの構成、及び各サーバ２００上で実行されるジョブのスケジュールを管理する。ジョブ管理サーバ１００は、構成管理部１１０、ジョブ管理部１２０、障害回復部１３０、構成管理ＤＢ１４０、及びジョブＤＢ１５０を備える。
【００１５】
構成管理部１１０は、計算機システムの構成を管理する。ここで、計算機システムの構成は、サーバ２００の物理構成、仮想サーバ２２０の構成、及びネットワークの接続構成等が含まれる。
【００１６】
ジョブ管理部１２０は、各サーバ２００上で稼動する仮想サーバ２２０上で実行されるジョブを管理する。ジョブ管理部１２０は、ジョブのスケジューラ機能を備える。ジョブ管理部１２０は、当該機能を用いて、ジョブの配置、ジョブの実行順序を管理する。
【００１７】
障害回復部１３０は、ジョブを実行する仮想サーバ２２０に障害発生した場合に、障害回復処理を実行する。
【００１８】
構成管理ＤＢ１４０は、計算機システムの構成を示す情報を格納する。ジョブＤＢ１５０は、ジョブを管理するための情報を格納する。
【００１９】
なお、ジョブ管理サーバ１００の構成については、図２を用いて説明する。
【００２０】
サーバ２００は、複数の仮想サーバ２２０を生成し、当該仮想サーバ２２０を稼動させる。サーバ２００は、仮想化制御部２１０を備える。
【００２１】
仮想化制御部２１０は、仮想サーバ２２０の生成、及び管理を行う。具体的には、サーバ２００が備える物理リソースを仮想サーバ２２０に割り当てることによって、仮想サーバ２２０を生成する。
【００２２】
なお、仮想サーバ２２０に対する物理リソースの割り当て方法はどのような方法であってもよい。例えば、論理的に分割された物理リソース（ＬＰＡＲ）を割り当てる方法、及び時分割で物理リソースを割り当てる方法等が考えられる。
【００２３】
仮想サーバ２２０は、ジョブを実行する仮想的な計算機である。仮想サーバ２２０は、ＯＳ２３０を備え、当該ＯＳ２３０が一以上のジョブ２４０を実行する。
【００２４】
なお、サーバ２００の構成については図３を用いて説明する。
【００２５】
図２は、本発明の実施形態におけるジョブ管理サーバ１００のハードウェア構成及びソフトウェア構成の一例を示すブロック図である。
【００２６】
ジョブ管理サーバ１００は、プロセッサ４００、メモリ４１０、入出力インタフェース４２０、及びネットワークインタフェース４３０を備える。
【００２７】
プロセッサ４００は、メモリ４１０に格納されるプログラムを実行する。プロセッサ４００がプログラムを実行することによって、ジョブ管理サーバ１００が備える機能を実現することができる。
【００２８】
メモリ４１０は、プロセッサ４００によって実行されるプログラム及び当該プログラムを実行するために必要な情報を格納する。メモリ４１０は、構成管理部１１０、ジョブ管理部１２０、障害回復部１３０、構成管理ＤＢ１４０、及びジョブＤＢ１５０を格納する。
【００２９】
以下、構成管理部１１０、ジョブ管理部１２０、及び障害回復部１３０を主語として処理を説明する場合には、プロセッサ４００によって各構成部を実現するプログラムが実行されていることを示す。
【００３０】
構成管理ＤＢ１４０は、物理構成管理テーブル１４１、仮想構成管理テーブル１４２、デプロイ実行時間管理テーブル１４３、及び空きリソース管理テーブル１４４を格納する。
【００３１】
物理構成管理テーブル１４１は、サーバ２００が有する物理リソースの構成及びソフトウェア構成に関する情報を格納する。物理構成管理テーブル１４１の詳細については、図５を用いて後述する。
【００３２】
仮想構成管理テーブル１４２は、仮想サーバ２２０の構成情報を格納する。なお、仮想構成管理テーブル１４２の詳細については、図６を用いて後述する。
【００３３】
デプロイ実行時間管理テーブル１４３は、ジョブのデプロイ処理の実行時間に関する情報を格納する。ここで、ジョブのデプロイ処理とは、仮想サーバ２２０を生成し、生成された仮想サーバ２２０にジョブを割り当てて、ジョブ開始までの設定をするための処理を示す。なお、デプロイ実行時間管理テーブル１４３の詳細については、図７を用いて後述する。
【００３４】
空きリソース管理テーブル１４４は、各サーバ２００における未使用の物理リソースのリソース量に関する情報を格納する。なお、空きリソース管理テーブル１４４の詳細については、図８を用いて後述する。
【００３５】
なお、空きリソース管理テーブル１４４は、物理構成管理テーブル１４１及び仮想構成管理テーブル１４２を用いて作成することが可能であるため、予め構成管理ＤＢ１４０に格納されている必要はない。この場合、所定の処理が実行される場合に、ジョブ管理サーバ１００によって生成され、メモリ４１０上に格納される。
【００３６】
ジョブＤＢ１５０は、ジョブネット構成管理テーブル１５１、ジョブネット実行管理テーブル１５２、ジョブ実行時間管理テーブル１５３、及び割り当て管理テーブル１５４を格納する。
【００３７】
ジョブネット構成管理テーブル１５１は、ジョブネットの構成情報を格納する。ここで、ジョブネットとは、ジョブの実行順序を表すジョブのグループを示す。なお、ジョブネット構成管理テーブル１５１の詳細については、図９を用いて後述する。
【００３８】
ジョブネット実行管理テーブル１５２は、ジョブネットに含まれる各ジョブの実行状態を示す情報を格納する。なお、ジョブネット実行管理テーブル１５２の詳細については、図１０を用いて後述する。
【００３９】
ジョブ実行時間管理テーブル１５３は、仮想サーバ２２０毎の各ジョブの実行時間に関する情報を格納する。すなわち、各仮想サーバ２２０のスペック毎にジョブの実行時間が格納される。ここで、仮想サーバ２２０のスペックとは、仮想サーバ２２０に割り当てられるプロセッサ及びメモリの性能、並びにＯＳの種類が含まれる。なお、ジョブ実行時間管理テーブル１５３の詳細については、図１１を用いて後述する。
【００４０】
割り当て管理テーブル１５４は、障害発生時に、ジョブの割り当て先を変更するための情報を格納する。なお、割り当て管理テーブル１５４の詳細については、図１２を用いて後述する。
【００４１】
なお、図２に示す例では、各ＤＢは、メモリ４１０上に格納されているが、ストレージシステムなどの外部装置に格納されていてもよい。この場合、ジョブ管理サーバ１００が、ストレージシステム（図示省略）から各ＤＢを読み出し、メモリ４１０上に読み出された各ＤＢを格納する。
【００４２】
入出力インタフェース４２０は、ストレージシステム等の外部装置と接続するためのインタフェースである。ネットワークインタフェース４３０は、ネットワークを介して各サーバ２００と接続するためのインタフェースである。
【００４３】
なお、ジョブ管理サーバ１００は、構成管理部１１０、ジョブ管理部１２０、及び障害回復部１３０が備える機能を実現するためのハードウェアを備えていてもよい。
【００４４】
図３は、本発明の実施形態におけるサーバ２００のハードウェア構成及びソフトウェア構成の一例を説明するブロック図である。
【００４５】
サーバ２００は、プロセッサ５００、メモリ５１０、入出力インタフェース５２０、ネットワークインタフェース５３０、及びディスク装置５４０を備える。
【００４６】
プロセッサ５００は、メモリ５１０に格納されるプログラムを実行する。プロセッサ５００がプログラムを実行することによって、サーバ２００が備える機能を実現することができる。
【００４７】
メモリ５１０は、プロセッサ５００によって実行されるプログラム及び当該プログラムを実行するために必要な情報を格納する。メモリ５１０は、仮想化制御部２１０を格納する。また、メモリ５１０には、仮想化制御部２１０によって制御される仮想サーバ２２０のインスタンスが複数格納される。
【００４８】
仮想サーバ２２０は、ＯＳ２３０を備え、当該ＯＳ２３０によって一以上のジョブ２４０が実行される。
【００４９】
入出力インタフェース５２０は、ストレージシステム等の外部装置と接続するためのインタフェースである。ネットワークインタフェース５３０は、ネットワークを介してジョブ管理サーバ１００と接続するためのインタフェースである。
【００５０】
ディスク装置５４０は、各種データを格納する記憶媒体であり、例えば、ＨＤＤ等が考えられる。なお、サーバ２００は、ディスク装置５４０以外の記憶媒体、例えば、ＳＳＤを備えていてもよい。
【００５１】
図４は、本発明の実施形態におけるジョブネットの一例を示す説明図である。
【００５２】
ジョブネット６００は、複数のジョブから構成されるグループであり、各ジョブの実行順序が指定されている。本実施形態では、一つのジョブネット６００が一つの業務に対応するものとする。
【００５３】
図４に示す例では、ジョブ２の実行後に、ジョブ３又はジョブ６に分岐している。これは、所定の条件を満たす場合にジョブ３若しくはジョブ６のいずれかが実行されるジョブネット、又は、ジョブ３及びジョブ６が並列実行されるジョブネットを示す。
【００５４】
図４に示す例では、ジョブの開始からジョブの終了までの実行経路を示すパスが３つ存在する。１つ目のパスは、ジョブ１、ジョブ２、ジョブ３、ジョブ４、及びジョブ５の順でジョブが実行されるパスである。２つ目のパスは、ジョブ１、ジョブ２、ジョブ６、ジョブ７、及びジョブ５の順にジョブが実行されるパスである。３つ目のパスは、ジョブ１、ジョブ２、ジョブ６、及びジョブ８の順にジョブが実行されるパスである。
【００５５】
本実施形態では、ジョブ管理サーバ１００の管理者によって予め所定のジョブネットが登録されている場合を例に説明する。
【００５６】
以下、各ＤＢに格納されるテーブルについて説明する。
【００５７】
図５は、本発明の実施形態における物理構成管理テーブル１４１の一例を示す説明図である。
【００５８】
物理構成管理テーブル１４１は、サーバ名７０１、仮想化制御部名７０２、プロセッサ７０３、メモリ７０４、及び記憶容量７０５を含む。
【００５９】
サーバ名７０１は、サーバ２００を一意に識別するための識別子を格納する。
【００６０】
仮想化制御部名７０２、サーバ名７０１に対応するサーバ２００が備える仮想化制御部２１０の識別子を格納する。
【００６１】
プロセッサ７０３は、サーバ名７０１に対応するサーバ２００が備えるプロセッサ５００の性能情報を格納する。ここで、プロセッサ５００の性能情報は、周波数及びコア数を示す。なお、プロセッサ５００の性能情報には他の情報が含まれてもよい。
【００６２】
メモリ７０４は、サーバ名７０１に対応するサーバ２００が備えるメモリ５１０の性能情報を格納する。ここで、メモリ５１０の性能情報は、メモリ容量を示す。なお、メモリ５１０の性能情報には、他の情報が含まれてもよい。
【００６３】
記憶容量７０５は、サーバ名７０１に対応するサーバ２００が備えるディスク装置５４０の性能情報を格納する。ここで、ディスク装置５４０の性能情報は、ディスク装置５４０の記憶容量を示す。なお、ディスク装置５４０の性能情報には、他の情報が含まれてもよい。
【００６４】
図６は、本発明の実施形態における仮想構成管理テーブル１４２の一例を示す説明図である。
【００６５】
仮想構成管理テーブル１４２は、仮想サーバ名８０１、サーバ名８０２、ＯＳ８０３、プロセッサ８０４、メモリ８０５、記憶容量８０６、及び状態８０７を含む。
【００６６】
仮想サーバ名８０１は、仮想サーバ２２０を一意に識別するための識別子を格納する。
【００６７】
サーバ名８０２は、仮想サーバ名８０１に対応する仮想サーバ２２０が生成されているサーバ２００を一意に識別するための識別子を格納する。サーバ名８０２は、サーバ名７０１と同一のものである。
【００６８】
ＯＳ８０３は、仮想サーバ名８０１に対応する仮想サーバ２２０が備えるＯＳ２３０を識別するための識別子を格納する。
【００６９】
プロセッサ８０４は、仮想サーバ名８０１に対応する仮想サーバ２２０に割り当てられたプロセッサの性能情報を格納する。具体的には、周波数及びコア数が格納される。なお、仮想サーバ２２０に割り当てられたプロセッサの性能情報には他の情報が含まれてもよい。
【００７０】
メモリ８０５は、仮想サーバ名８０１に対応する仮想サーバ２２０に割り当てられたメモリの性能情報を格納する。具体的には、メモリ容量が格納される。なお、仮想サーバ２２０に割り当てられたメモリの性能情報には他の情報が含まれてもよい。
【００７１】
記憶容量８０６は、仮想サーバ名８０１に対応する仮想サーバ２２０に割り当てられた記憶領域の性能情報を格納する。具体的には、記憶領域の容量を示す。なお、仮想サーバ名８０１に対応する仮想サーバ２２０に割り当てられた記憶領域の性能情報には、他の情報が含まれてもよい。
【００７２】
状態８０７は、仮想サーバ名８０１に対応する仮想サーバ２２０の稼動状態を示す情報を格納する。具体的には、「リソース予約」、「作成中」、「未使用」、「予約」、「使用中」及び「消去中」のいずれかが格納される。
【００７３】
「リソース予約」は、仮想サーバ２２０に割り当てるリソースが確保された状態を示す。「作成中」は、仮想サーバ２２０が生成されている状態を示す。
【００７４】
「未使用」は、ジョブが割り当てられていない状態を示す。「予約」は、生成された仮想サーバ２２０にジョブが割り当てられ、かつ、当該ジョブが実行されていない状態を示す。「使用中」は、生成された仮想サーバ２２０がジョブを実行している状態を示す。
【００７５】
「消去中」は、生成された仮想サーバ２２０が消去中である状態を示す。仮想サーバ２２０を消去することによって、当該仮想サーバ２２０に割り当てられていた物理リソースを解放することができ、空きリソースを確保することが可能となる。
【００７６】
図７は、本発明の実施形態におけるデプロイ実行時間管理テーブル１４３の一例を示す説明図である。
【００７７】
デプロイ実行時間管理テーブル１４３は、サーバ名９０１、ＯＳ９０２、及びデプロイ時間９０３を含む。
【００７８】
サーバ名９０１は、サーバ２００を一意に識別するための識別子を格納する。サーバ名９０１はサーバ名７０１と同一のものである。
【００７９】
ＯＳ９０２は、サーバ名９０１に対応するサーバ２００上に生成される仮想サーバ２２０が備えるＯＳ２３０の識別子を格納する。ＯＳ９０２は、ＯＳ８０３と同一のものである。
【００８０】
デプロイ時間９０３は、サーバ名９０１に対応するサーバ２００がデプロイ処理の実行に要する時間を格納する。
【００８１】
図８は、本発明の実施形態における空きリソース管理テーブル１４４の一例を示す説明図である。
【００８２】
空きリソース管理テーブル１４４は、サーバ名１００１、プロセッサ１００２、メモリ１００３、及び記憶容量１００４を含む。
【００８３】
サーバ名１００１は、サーバ２００を一意に識別するための識別子を格納する。サーバ名１００１は、サーバ名７０１と同一のものである。
【００８４】
プロセッサ１００２は、サーバ名１００１に対応するサーバ２００のプロセッサ５００のうち、未割当てのプロセッサ５００の性能情報を格納する。なお、プロセッサ１００２には、プロセッサ７０３からプロセッサ８０４を減算した値が格納される。例えば、周波数が「２ＧＨｚ」、コア数「８」のプロセッサを備えるサーバ２００上に、周波数が「２ＧＨｚ」、コア数が「２」のプロセッサが割り当てられた仮想サーバ２２０が２つ生成されている場合、プロセッサ１００２には「８ＧＨｚ」が格納される。
【００８５】
メモリ１００３は、サーバ名１００１に対応するサーバ２００のメモリ５１０のうち、未割当てのメモリ５１０の性能情報を格納する。なお、メモリ１００３には、メモリ７０４からメモリ８０５を減算した値が格納される。
【００８６】
記憶容量１００４は、サーバ名１００１に対応するサーバ２００が備えるディスク装置５４０のうち、仮想サーバ２２０に未割当てのディスク装置５４０の性能情報を格納する。
【００８７】
図９は、本発明の実施形態におけるジョブネット構成管理テーブル１５１の一例を示す説明図である。
【００８８】
ジョブネット構成管理テーブル１５１は、ジョブネット名１１０１、ジョブ名１１０２、関連ジョブ１１０３、ジョブ開始条件１１０４、及び実行期限時間１１０５を含む。
【００８９】
ジョブネット名１１０１は、ジョブネットを一意に識別するための識別子を格納する。
【００９０】
ジョブ名１１０２は、ジョブネット名１１０１に対応するジョブネットに含まれるジョブ２４０の識別子を格納する。
【００９１】
関連ジョブ１１０３は、ジョブ名１１０２に対応するジョブ２４０の実行後に開始されるジョブ２４０の識別子が格納される。なお、ジョブ名１１０２に対応するジョブ２４０が実行された後に処理が終了する場合には、処理の終了を示す「ＥＸＩＴ」が格納される。
【００９２】
ジョブ開始条件１１０４は、関連ジョブ１１０３に対応するジョブ２４０が開始される条件を格納する。開始条件がない場合には、開始条件がない旨を示す情報が格納される。
【００９３】
実行期限時間１１０５は、ジョブネット名１１０１に対応するジョブネットの処理の期限を表す情報が格納される。図５に示す例では、処理の実行時間が格納されているが、「午前０時」等の時刻情報が格納されてもよい。
【００９４】
図１０は、本発明の実施形態におけるジョブネット実行管理テーブル１５２の一例を示す説明図である。
【００９５】
ジョブネット実行管理テーブル１５２は、ジョブネット名１２０１、ジョブ名１２０２、仮想サーバ名１２０３、状態１２０４、経過時間１２０５、及び戻り値１２０６を含む。
【００９６】
ジョブネット名１２０１は、ジョブネットを一意に識別するための識別子を格納する。ジョブネット名１２０１は、ジョブネット名１１０１と同一のものである。
【００９７】
ジョブ名１２０２は、ジョブネット名１２０１に対応するジョブネットに含まれるジョブ２４０の識別子を格納する。ジョブ名１２０２は、ジョブ名１１０２と同一のものである。
【００９８】
仮想サーバ名１２０３は、ジョブ名１２０２に対応するジョブ２４０を実行する仮想サーバ２２０を一意に識別するための識別子を格納する。すなわち、ジョブ２４０が割り当てられた仮想サーバ２２０の識別子を格納する。
【００９９】
状態１２０４は、ジョブ名１２０２に対応するジョブ２４０の実行状態を示す情報を格納する。具体的には、「実行待ち」、「実行中」、「正常終了」、及び「異常終了」等が格納される。なお、「異常終了」の場合には、当該異常に対して障害回復処理の実行状態を示す情報として「未対応」、「対応中」、及び「対応済み」等の情報が含まれてもよい。
【０１００】
経過時間１２０５は、ジョブ名１２０２に対応するジョブ２４０の実行時間を格納する。状態１２０４が「正常終了」の場合には、ジョブ２４０の開始から終了までの間の実行時間が格納される。状態が「異常終了」の場合には、ジョブの２４０の開始から異常発生までの間の実行時間が格納される。なお、状態１２０４が「実行待ち」及び「実行中」の場合には経過時間１２０５には値は格納されない。
【０１０１】
戻り値１２０６は、ジョブ名１２０２に対応するジョブ２４０が実行されることによって出力される戻り値を格納する。
【０１０２】
図１１は、本発明の実施形態におけるジョブ実行時間管理テーブル１５３の一例を示す説明図である。
【０１０３】
ジョブ実行時間管理テーブル１５３は、ジョブ名１３０１、スペック１３０２、及び実行時間１３０３を含む。
【０１０４】
ジョブ名１３０１は、ジョブ２４０を一意に識別するための識別子を格納する。
【０１０５】
スペック１３０２は、ジョブ名１３０１に対応するジョブ２４０を実行する仮想サーバ２２０の性能情報を格納する。スペック１３０２は、ＯＳ１３０４、プロセッサ１３０５、及びメモリ１３０６を含む。
【０１０６】
ＯＳ１３０４は、仮想サーバ２２０が備えるＯＳ２３０の識別子を格納する。プロセッサ１３０５は、仮想サーバ２２０に割り当てられたプロセッサの性能情報を格納する。メモリ１３０６は、仮想サーバ２２０に割り当てられたメモリの性能情報を格納する。
【０１０７】
実行時間１３０３は、スペック１３０２に示されたスペックを有する仮想サーバ２２０がジョブ名１３０１に対応するジョブ２４０を実行した場合の実行時間を格納する。
【０１０８】
なお、ジョブ実行時間管理テーブル１５３は、ジョブ２４０の実行履歴に基づいて生成されてもよいし、予め管理者が設定してもよい。また、管理者が予め設定した後、ジョブ管理サーバ１００がジョブの実行履歴を収集して逐次更新してもよい。
【０１０９】
図１２は、本発明の実施形態における割り当て管理テーブル１５４の一例を示す説明図である。
【０１１０】
割り当て管理テーブル１５４は、パス名１４０１、ジョブ名１４０２、状態１４０３、経過時間１４０４、完了予測時間１４０５、完了予測時間１４０６、及びスペック１４０７を含む。
【０１１１】
パス名１４０１は、ジョブネットにおけるパスを一意に識別するための識別子を格納する。
【０１１２】
ジョブ名１４０２は、パス名１４０１に対応するパスに含まれるジョブ２４０を一意に識別するための識別子を格納する。なお、ジョブ名１４０２には、ジョブ２４０の実行順に識別子が格納される。
【０１１３】
状態１４０３は、ジョブ名１４０２に対応するジョブ２４０の実行状態を格納する。状態１４０３は、状態１２０４と同一のものである。
【０１１４】
経過時間１４０４は、ジョブ名１４０２に対応するジョブ２４０の実行時間を格納する。なお、経過時間１４０４は、経過時間１２０５と同一のものである。
【０１１５】
完了予測時間１４０５は、ジョブ名１４０２に対応するジョブ２４０が完了する予測時間を格納する。完了予測時間１４０５には、障害の発生よってジョブ２４０の割り当てが変更される前の予測時間が格納される。
【０１１６】
状態１４０３が「正常終了」の場合、完了予測時間１４０５には、経過時間１４０４の値と同一の値が格納される。
【０１１７】
状態１４０３が「障害発生」の場合、完了予測時間１４０５には、経過時間１４０４の値、仮想サーバ２２０のデプロイ時間、及びジョブ２４０の実行時間の合計値が格納される。
【０１１８】
仮想サーバ２２０のデプロイ時間は、デプロイ実行時間管理テーブル１４３のデプロイ時間９０３の値である。ジョブ２４０の実行時間は、ジョブ実行時間管理テーブル１５３の実行時間１３０３の値である。
【０１１９】
状態１４０３が「実行待ち」の場合、完了予測時間１４０５には、ジョブ２４０の実行時間、すなわち、ジョブ実行時間管理テーブル１５３の実行時間１３０３の値が格納される。
【０１２０】
完了予測時間１４０６は、障害の発生によってジョブ名１４０２に対応するジョブ２４０が新たな仮想サーバ２２０に割り当てられた場合に、当該ジョブ２４０が完了する予測時間を格納する。完了予測時間１４０６には、ジョブ実行時間管理テーブル１５３の実行時間１３０３の値が格納される。
【０１２１】
スペック１４０７は、ジョブ２４０の割り当て変更後の仮想サーバ２２０の性能情報を格納する。
【０１２２】
以下、本発明の処理について説明する。
【０１２３】
図１３は、本発明の実施形態における処理の概要を説明するフローチャートである。
【０１２４】
ジョブ管理サーバ１００は、所定の業務に対応するジョブネットの処理を開始するため、ジョブネット構成管理テーブル１５１から対応するジョブネットの情報を読み出す（ステップＳ１５０１）。
【０１２５】
なお、ジョブ管理サーバ１００は、管理者からジョブネットの開始命令が入力された場合、又は、ジョブネットの開始時間になった場合に処理を開始する。
【０１２６】
ジョブ管理サーバ１００は、読み出されたジョブネットの情報に基づいて、当該ジョブネットに含まれるジョブ２４０のデプロイ処理を実行する（ステップＳ１５０２）。
【０１２７】
具体的には、ジョブ管理サーバ１００は、ジョブネットに含まれるジョブ２４０を割り当てる仮想サーバ２２０を決定し、各仮想サーバ２２０にジョブ２４０を割り当てる。なお、ジョブ２４０のデプロイ処理は、公知の方法を用いればよいため説明を省略する。
【０１２８】
以下、ジョブ２４０が割り当てられた仮想サーバ２２０を実行系の仮想サーバ２２０とも記載する。
【０１２９】
ジョブ管理サーバ１００は、実行系の仮想サーバ２２０にジョブ２４０の実行を命令する（ステップＳ１５０３）。
【０１３０】
例えば、図８に示すジョブネット６００の場合、まず、ジョブ管理サーバ１００は、ジョブ１が割り当てられた仮想サーバ２２０に当該ジョブ１の実行を命令する。当該実行命令を受信した仮想サーバ２２０は、ジョブ１の実行を開始する。
【０１３１】
ジョブ管理サーバ１００は、実行中のジョブ２４０に障害が発生したか否かを監視する（ステップＳ１５０４）。
【０１３２】
ジョブ２４０の障害管理の方法としては、ジョブ管理サーバ１００が、実行系の仮想サーバ２２０に問い合わせる方法、実行系の仮想サーバ２２０から障害発生の通知を受信する方法等が考えられ。ただし、本発明は障害の監視方法に限定されない。
【０１３３】
ジョブ管理サーバ１００は、実行中のジョブ２４０に障害が発生したか否かを判定する（ステップＳ１５０５）。すなわち、実行中のジョブ２４０において障害の発生が検出されたか否かが判定される。
【０１３４】
実行中のジョブ２４０に障害が発生してない場合には、ジョブ管理サーバ１００は、実行系の仮想サーバ２２０からジョブ２４０の完了通知を受信する（ステップＳ１５０６）。なお、当該完了通知には、ジョブ２４０の実行結果である、返り値が含まれる。
【０１３５】
このとき、ジョブ管理サーバ１００は、ジョブ２４０を完了した実行系の仮想サーバ２２０を消去するか否かを選択するための情報を管理者に対して表示してもよい。仮想サーバ２２０が消去されると空きリソースが増加する。一方、仮想サーバ２２０をそのまま残した場合、他のジョブ２４０を割り当てる仮想サーバ２２０として利用することができる。また、ジョブ管理サーバ１００は、ジョブ２４０を完了した実行系の仮想サーバ２２０を自動的に消去してもよい。
【０１３６】
ジョブ管理サーバ１００は、読み出されたジョブネットの情報に基づいて、次に実行するジョブ２４０が存在するか否かを判定する（ステップＳ１５０７）。なお、ジョブ管理サーバ１００は、ジョブネットの情報と、ジョブ２４０の完了通知に含まれる返り値に基づいて、次に実行するジョブ２４０が存在するか否かを判定できる。
【０１３７】
次に実行するジョブ２４０が存在すると判定された場合、ジョブ管理サーバ１００は、ステップＳ１５０３に戻り、次のジョブ２４０の実行を実行系の仮想サーバ２２０に命令する。
【０１３８】
次に実行するジョブ２４０が存在しないと判定された場合、ジョブ管理サーバ１００は、処理を終了する。
【０１３９】
ステップＳ１５０５において、実行中のジョブ２４０に障害が発生した場合、ジョブ管理サーバ１００は、障害回復処理を実行する（ステップＳ１５０８）。
【０１４０】
当該処理によって、ジョブ管理サーバ１００は、障害が発生した実行系の仮想サーバ２２０上で実行されたジョブ２４０を含む複数のジョブ２４０を、新たな仮想サーバ２２０に移動できる。なお、障害回復処理の詳細については、図１４を用いて後述する。
【０１４１】
図１４は、本発明の実施形態における障害回復処理の詳細を説明するフローチャートである。
【０１４２】
障害回復処理は、実行系の仮想サーバ２２０の障害を検出した障害回復部１３０によって実行される。
【０１４３】
障害回復部１３０は、対象パスを特定するためのパス特定処理を実行する（ステップＳ１６０１）。ここで、対象パスとは、ジョブネットに含まれるパスのうち、実行期限時間１１０５内にパス内の全ジョブが終了しないパスを示す。なお、パス特定処理の詳細については、図１５を用いて後述する。
【０１４４】
障害回復部１３０は、パス特定処理の結果に基づいて、対象パスが存在するか否かを判定する（ステップＳ１６０２）。対象パスが存在する場合には、当該対象パスに含まれるジョブ２４０の移動を考慮する必要があるためである。
【０１４５】
対象パスが存在すると判定された場合、障害回復部１３０は、スペック決定処理を実行する（ステップＳ１６０３）。スペック決定処理では、実行期限時間１１０５内にパスに含まれる全てのジョブ２４０を完了するために必要な仮想サーバ２２０のスペックが決定される。なお、スペック決定処理の詳細については、図１６Ａ及び図１６Ｂを用いて後述する。
【０１４６】
以下、ステップＳ１６０３において決定される仮想サーバ２２０のスペックを要求スペックとも記載する。また、新たにジョブ２４０が割り当てられる仮想サーバ２２０を新規仮想サーバ２２０とも記載する。
【０１４７】
障害回復部１３０は、要求スペックに基づいて、新規仮想サーバ２２０の予約処理を実行し（ステップＳ１６０４）、処理を終了する。なお、予約処理の詳細については、図１８を用いて後述する。
【０１４８】
ステップＳ１６０２において、対象パスが存在しないと判定された場合、障害回復部１３０は、障害が発生した実行系の仮想サーバ２２０の性能情報を取得する（ステップＳ１６０５）。
【０１４９】
具体的には、障害回復部１３０は、ジョブネットの識別子及びジョブ２４０の識別子に基づいてジョブネット実行管理テーブル１５２を参照して、障害が発生した実行系の仮想サーバ２２０を特定する。さらに、障害回復部１３０は、実行系の仮想サーバ２２０の識別子に基づいて仮想構成管理テーブル１４２を参照して、実行系の仮想サーバ２２０の性能情報を取得する。
【０１５０】
障害回復部１３０は、取得された実行系の仮想サーバ２２０の性能情報に基づいて、障害が発生した実行系の仮想サーバ２２０と同一のスペックを有する新規仮想サーバ２２０の予約処理を実行する（ステップＳ１６０５）。なお、新規仮想サーバ２２０のスペックは、障害が発生した実行系の仮想サーバ２２０以上のスペックを有していればよい。
【０１５１】
なお、障害回復部１３０は、予約処理が終了した後、新規仮想サーバ２２０へジョブ２４０の割り当てを変更するための変更情報を生成する。生成された変更情報は、ジョブ管理部１２０に出力される。ジョブ管理部１２０は、入力された変更情報に基づいて、ジョブ２４０の割り当てを変更する。
【０１５２】
図１５は、本発明の実施形態におけるパス特定処理の詳細を説明するフローチャートである。
【０１５３】
障害回復部１３０は、読み出されたジョブネットの情報を参照して、当該ジョブネットにおける全てのパスを抽出する（ステップＳ１７０１）。
【０１５４】
具体的には、障害回復部１３０は、障害が発生した実行系の仮想サーバ２２０が実行していたジョブ２４０以下に分岐可能な全てのパスを抽出する。
【０１５５】
例えば、図８に示すジョブネット６００において、ジョブ２を実行する実行系の仮想サーバ２２０に障害が発生した場合には、以下の３つのパスが抽出される。すなわち、パス１（ジョブ１、ジョブ２、ジョブ３、ジョブ４、ジョブ５）、パス２（ジョブ１、ジョブ２、ジョブ６、ジョブ７、ジョブ５）、及びパス３（ジョブ１、ジョブ２、ジョブ６、ジョブ８）の３つのパスが抽出される。また、ジョブ６を実行する仮想サーバ２２０に障害が発生した場合には、前述したパス２及びパス３が抽出される。
【０１５６】
なお、障害回復部１３０は、抽出されたパスに「１」から始まる識別番号を付与する。
【０１５７】
障害回復部１３０は、識別番号を「１」に設定し（ステップＳ１７０２）、最初のパスを選択する（ステップＳ１７０３）。
【０１５８】
次に、障害回復部１３０は、割り当て管理テーブル１５４に、選択されたパスに対応するエントリを生成する（ステップＳ１７０４）。ここで、図１６Ａ及び図１６Ｂを用いて、エントリの生成方法について説明する。
【０１５９】
図１６Ａ及び図１６Ｂは、本発明の実施形態における割り当て管理テーブル１５４のエントリの生成方法を説明するフローチャートである。
【０１６０】
まず、障害回復部１３０は、抽出されたパスの情報に基づいて、パス名１４０１、ジョブ名１４０２に必要な情報を格納する（ステップＳ１８０１）。
【０１６１】
また、障害回復部１３０は、ジョブネット実行管理テーブル１５２の対応するエントリの状態１２０４を参照して、状態１４０３に必要な情報を格納する（ステップＳ１８０２）。
【０１６２】
次に、障害回復部１３０は、割り当て管理テーブル１５４から一つのジョブ２４０を選択する（ステップＳ１８０３）。なお、ジョブ２４０の選択方法としては、割り当て管理テーブル１５４の上から順に選択する方法が考えられる。
【０１６３】
障害回復部１３０は、選択されたジョブ２４０の状態１４０３が「正常終了」であるか否かを判定する（ステップＳ１８０４）。
【０１６４】
選択されたジョブ２４０の状態１４０３が「正常終了」であると判定された場合、障害回復部１３０は、経過時間１４０４、完了予測時間１４０５、及び完了予測時間１４０６のそれぞれに値を格納する（ステップＳ１８０５）。
【０１６５】
具体的には、障害回復部１３０は、経過時間１４０４、完了予測時間１４０５、及び完了予測時間１４０６のそれぞれに経過時間１２０５と同一の値を格納する。
【０１６６】
その後、障害回復部１３０は、パスに含まれる全てのジョブ２４０について処理が完了したか否かを判定する（ステップＳ１８０６）。
【０１６７】
パスに含まれる全てのジョブ２４０について処理が完了していないと判定された場合、障害回復部１３０は、ステップＳ１８０３に戻り同様の処理（ステップＳ１８０３〜ステップＳ１８１９）を実行する。
【０１６８】
パスに含まれる全てのジョブ２４０について処理が完了したと判定された場合、障害回復部１３０は、処理を終了する。
【０１６９】
ステップＳ１８０４において、選択されたジョブ２４０の状態１４０３が「正常終了」でないと判定された場合、障害回復部１３０は、選択されたジョブ２４０の状態１４０３が「実行待ち」であるか否かを判定する（ステップＳ１８１０）。
【０１７０】
選択されたジョブ２４０の状態１４０３が「実行待ち」であると判定された場合、障害回復部１３０は、当該ジョブ２４０が割り当てられた実行系の仮想サーバ２２０の性能情報を取得する（ステップＳ１８１１）。具体的には、以下のような処理が実行される。
【０１７１】
障害回復部１３０は、ジョブネット実行管理テーブル１５２を参照して、ジョブ名１４０２と一致するエントリを検索する。当該エントリの仮想サーバ名１２０３が、ジョブ名１４０２に対応するジョブ２４０が割り当てられた実行系の仮想サーバ２２０の識別子を示す。
【０１７２】
さらに、障害回復部１３０は、仮想構成管理テーブル１４２を参照して、仮想サーバ名１２０３に一致するエントリを検索する。当該エントリのＯＳ８０３、プロセッサ８０４、及びメモリ８０５が、実行系の仮想サーバ２２０の性能情報である。
【０１７３】
次に、障害回復部１３０は、選択されたジョブ２４０を実行系の仮想サーバ２２０が実行した場合の実行時間を取得する（ステップＳ１８１２）。
【０１７４】
具体的には、障害回復部１３０は、ジョブ実行時間管理テーブル１５３を参照して、ジョブ２４０の識別子及び実行系の仮想サーバ２２０の性能情報と一致するエントリを検索する。当該エントリの実行時間１３０３が、選択されたジョブ２４０の実行時間である。
【０１７５】
障害回復部１３０は、取得された実行時間１３０３を完了予測時間１４０５に格納し（ステップＳ１８１３）、ステップＳ１８０６に進む。なお、状態１４０３が「実行待ち」のエントリの経過時間１４０４及び完了予測時間１４０６には値は格納されない。
【０１７６】
ステップＳ１８１０において、選択されたジョブ２４０の状態１４０３が「実行待ち」でないと判定された場合、すなわち、選択されたジョブ２４０の状態１４０３が「障害発生」の場合、障害回復部１３０は、当該ジョブ２４０が割り当てられた実行系の仮想サーバ２２０の性能情報を取得する（ステップＳ１８１４）。なお、当該処理はステップＳ１８１１と同一の処理である。
【０１７７】
障害回復部１３０は、取得された実行系の仮想サーバ２２０の性能情報に基づいて、ジョブの２４０の実行時間を取得する（ステップＳ１８１５）。なお、当該処理はステップＳ１８１２と同一の処理である。
【０１７８】
障害回復部１３０は、ジョブ２４０の開始から障害発生までの間の経過時間を取得する（ステップＳ１８１６）。
【０１７９】
具体的には、障害回復部１３０は、ジョブネット実行管理テーブル１５２を参照して、ジョブ２４０の識別子に一致するエントリを検索する。当該エントリの経過時間１２０５が、ジョブ２４０の開始から障害発生までの間の経過時間である。
【０１８０】
障害回復部１３０は、実行系の仮想サーバ２２０が稼動するサーバ２００を特定する（ステップＳ１８１７）。
【０１８１】
具体的には、障害回復部１３０は、仮想構成管理テーブル１４２を参照して、実行系の仮想サーバ２２０の識別子と一致するエントリを検索する。当該エントリのサーバ名８０２名が、実行系の仮想サーバ２２０が稼動するサーバ２００の識別子である。
【０１８２】
障害回復部１３０は、ジョブ２４０のデプロイ処理の実行時間を取得する（ステップＳ１８１８）。
【０１８３】
具体的には、障害回復部１３０は、デプロイ実行時間管理テーブル１４３を参照し、サーバ名８０２と一致するエントリを検索する。当該エントリのデプロイ時間９０３が、ジョブ２４０のデプロイ処理の実行時間である。
【０１８４】
障害回復部１３０は、取得された情報に基づいて、経過時間１４０４及び完了予測時間１４０５に値を格納し（ステップＳ１８１９）、ステップＳ１８０６に進む。
【０１８５】
具体的には、障害回復部１３０は、取得された実行時間１３０３の値を経過時間１４０４に格納する。また、障害回復部１３０は、取得された経過時間１２０５、実行時間１３０３、及びデプロイ時間９０３を合計し、当該合計値を完了予測時間１４０５に格納する。
【０１８６】
以上がステップＳ１７０４の処理である。図１５の説明に戻る。
【０１８７】
障害回復部１３０は、パスに含まれる全てのジョブ２４０の完了予測時間１４０５の合計値を算出し（ステップＳ１７０５）、算出された合計値が実行期限時間１１０５より大きいか否かを判定する（ステップＳ１７０６）。すなわち、障害が発生したジョブ２４０のみを移動させた場合に、実行期限時間内にジョブネットの処理が完了するか否かが判定される。
【０１８８】
なお、実行期限時間１１０５が時刻で指定されている場合には、以下のような判定方法が考えられる。障害回復部１３０は、ジョブネットの開始時刻に算出された合計値を加算して終了時刻を算出する。障害回復部１３０は、算出された終了時刻が実行期限時間１１０５に示された時刻を超過するか否かを判定する。
【０１８９】
算出された合計値が実行期限時間１１０５より大きいと判定された場合、障害回復部１３０は、ステップＳ１７０８に進む。
【０１９０】
算出された合計値が実行期限時間１１０５以下であると判定された場合、障害回復部１３０は、割り当て管理テーブル１５４からパスのエントリを削除する（ステップＳ１７０７）。
【０１９１】
障害回復部１３０は、全てのパスについて処理が完了したか否かを判定する（ステップＳ１７０８）。
【０１９２】
全てのパスについて処理が完了していないと判定された場合、障害回復部１３０は、パスの識別番号を「１」加算してステップＳ１７０３に戻り、同様の処理（ステップＳ１７０３〜ステップＳ１７０９）を実行する。
【０１９３】
全てのパスについて処理が完了したと判定された場合、障害回復部１３０は、処理を終了する。
【０１９４】
図１７Ａ及び図１７Ｂは、本発明の実施形態におけるスペック決定処理の詳細を説明するフローチャートである。
【０１９５】
障害回復部１３０は、割り当て管理テーブル１５４から一つのパスを選択する（ステップＳ１９０１）。
【０１９６】
障害回復部１３０は、選択されたパスに含まれるジョブ２４０の中から、検索対象のジョブ２４０を一つ選択する（ステップＳ１９０２）。ここで、検索対象のジョブ２４０とは、状態１４０３が、「障害発生」及び「実行待ち」であるエントリを示す。以下、ステップＳ１９０２において選択されたジョブ２４０を対象ジョブとも記載する。
【０１９７】
障害回復部１３０は、ジョブ実行時間管理テーブル１５３を参照し、対象ジョブ２４０を割り当てる新規仮想サーバ２２０のスペックを決定する（ステップＳ１９０３）。すなわち、要求スペックが決定される。具体的には、以下のような処理が実行される。
【０１９８】
障害回復部１３０は、ジョブ実行時間管理テーブル１５３から対象ジョブ２４０のジョブ名１４０２と一致するエントリを検索する。障害回復部１３０は、検索されたエントリの実行時間１３０３が、対象ジョブ２４０の完了予測時間１４０５より小さいか否かを判定する。
【０１９９】
検索されたエントリの実行時間１３０３が、対象ジョブ２４０の完了予測時間１４０５より小さいと判定された場合、障害回復部１３０は、当該エントリのスペック１３０２を要求スペックとして決定する。なお、要求スペックは複数決定されてもよい。
【０２００】
次に、障害回復部１３０は、実行時間の短縮ができるか否かを判定する（ステップＳ１９０４）。
【０２０１】
具体的には、ステップＳ１９０３において要求スペックが一以上決定されか否かが判定される。要求スペックが決定されなかった場合、すなわち、検索されたエントリの実行時間１３０３が、対象ジョブ２４０の完了予測時間１４０５より小さいエントリが存在しない場合、実行時間の短縮ができないと判定される。
【０２０２】
実行時間の短縮ができないと判定された場合、障害回復部１３０は、対象ジョブ２４０に対応するエントリのスペック１４０７に「短縮不可」を格納する（ステップＳ１９０５）。また、障害回復部１３０は、完了予測時間１４０６に完了予測時間１４０５と同一の値を格納する。
【０２０３】
実行時間の短縮ができると判定された場合、障害回復部１３０は、仮想構成管理テーブル１４２を参照して、新規仮想サーバ２２０のスペック、すなわち、要求スペック（スペック１３０２）を満たす仮想サーバ２２０が予約可能か否かを判定する（ステップＳ１９０８）。
【０２０４】
当該処理では、要求スペック（スペック１３０２）を満たし、かつ、使用可能な仮想サーバ２２０が存在するか否かが判定される。具体的には以下のような処理が実行される。
【０２０５】
障害回復部１３０は、仮想構成管理テーブル１４２を参照して、要求スペック（スペック１３０２）を満たす仮想サーバ２２０を検索する。本実施形態では、要求スペック（スペック１３０２）と同一のスペックを有する仮想サーバ２２０を検索するものとする。なお、本発明はこれに限定されず、要求スペック（スペック１３０２）以上のスペックを有する仮想サーバ２２０が検索されてもよい。
【０２０６】
要求スペック（スペック１３０２）を満たす仮想サーバ２２０が存在しない場合には、新規仮想サーバ２２０の予約が不可能であると判定される。
【０２０７】
要求スペック（スペック１３０２）を満たす仮想サーバ２２０が存在すると判定された場合、障害回復部１３０は、検索された仮想サーバ２２０に対応するエントリの状態８０７が「未使用」であるか否かを判定する。なお、障害回復部１３０は、状態８０７が「作成中」のエントリであるか否かを判定してもよい。
【０２０８】
検索された仮想サーバ２２０に対応するエントリの状態８０７が「未使用」でない場合、仮想サーバ２２０の予約が不可能であると判定される。一方、検索された仮想サーバ２２０に対応するエントリの状態８０７が「未使用」である場合、仮想サーバ２２０の予約が可能であると判定される。
【０２０９】
なお、ステップＳ１９０３において複数の要求スペックが決定された場合、最もスペックの高い要求スペックの情報を格納する方法が考えられる。ただし、本発明はこれに限定されず、他の要求スペックの情報が格納されてもよい。
【０２１０】
要求スペック（スペック１３０２）を満たす仮想サーバ２２０の予約が可能であると判定された場合、障害回復部１３０は、対象ジョブ２４０に対応するエントリの完了予測時間１４０６に、新規仮想サーバ２２０に対応するエントリの実行時間１３０３の値を格納する（ステップＳ１９０９）。
【０２１１】
さらに、障害回復部１３０は、対象ジョブ２４０に対応するエントリのスペック１４０７に、要求スペック（スペック１３０２）の情報を格納し（ステップＳ１９１０）、ステップＳ１９０６に進む。
【０２１２】
ステップＳ１９０８において、要求スペック（スペック１３０２）を満たす仮想サーバ２２０の予約が不可能であると判定された場合、障害回復部１３０は、要求スペック（スペック１３０２）を満たす仮想サーバ２２０が生成できるか否かを判定する（ステップＳ１９１１）。すなわち、新規仮想サーバ２２０が生成できるか否かが判定される。
【０２１３】
具体的には、障害回復部１３０は、空きリソース管理テーブル１４４を参照して、新規仮想サーバ２２０を生成するための空きリソースが存在するか否かを判定する。
【０２１４】
新規仮想サーバ２２０を生成するための空きリソースが存在しない場合、新規仮想サーバ２２０が生成できないと判定される。一方、新規仮想サーバ２２０を生成する空きリソースが存在する場合、新規仮想サーバ２２０が生成できると判定される。このとき、新規仮想サーバ２２０の生成が可能なサーバ２００の識別子が取得される。
【０２１５】
新規仮想サーバ２２０を生成できないと判定された場合、障害回復部１３０は、対象ジョブ２４０に対応するエントリのスペック１４０７に「短縮不可」を格納する（ステップＳ１９０５）。また、障害回復部１３０は、完了予測時間１４０６に完了予測時間１４０５と同一の値を格納する。
【０２１６】
新規仮想サーバ２２０を生成できると判定された場合、障害回復部１３０は、完了予測時間１４０６に、実行時間１３０３とデプロイ時間９０３との合計値を格納し（ステップＳ１９１２）、ステップＳ１９１０に進む。
【０２１７】
なお、デプロイ時間９０３は、取得されたサーバ２００の識別子に一致するエントリのデプロイ時間９０３である。
【０２１８】
障害回復部１３０は、選択されたパスに含まれる全てのジョブ２４０について処理が完了したか否かを判定する（ステップＳ１９０６）。
【０２１９】
選択されたパスに含まれる全てのジョブ２４０について処理が完了していないと判定された場合、障害回復部１３０は、ステップＳ１９０２に戻り、次のジョブ２４０を選択して同様の処理を実行する（ステップＳ１９０２〜ステップＳ１９０８）。
【０２２０】
選択されたパスに含まれる全てのジョブ２４０について処理が完了していると判定された場合、障害回復部１３０は、割り当て管理テーブル１５４の全てのパスについて処理が完了したか否かを判定する（ステップＳ１９０７）。
【０２２１】
割り当て管理テーブル１５４の全てのパスについて処理が完了していないと判定された場合、障害回復部１３０は、割り当て管理テーブル１５４から次のパスを選択し（ステップＳ１９０１）、同様の処理を実行する（ステップＳ１９０１〜ステップＳ１９０８）。
【０２２２】
割り当て管理テーブル１５４の全てのパスについて処理が完了していると判定された場合、障害回復部１３０は、処理を終了する。
【０２２３】
以上の処理によって割り当て管理テーブル１５４の全てのカラムに必要な情報が格納される。
【０２２４】
図１８は、本発明の実施形態における予約処理の詳細を説明するフローチャートである。
【０２２５】
障害回復部１３０は、割り当て管理テーブル１５４から一つのパスを選択する（ステップＳ２００１）。当該処理は、ステップＳ１９０１と同一の処理である。
【０２２６】
障害回復部１３０は、選択されたパスに含まれるジョブ２４０の中から、検索対象のジョブ２４０を一つ選択する（ステップＳ２００２）。
【０２２７】
具体的には、スペック１４０７に要求スペックが格納されたエントリが選択される。
【０２２８】
障害回復部１３０は、選択されたエントリのスペック１４０７を満たす仮想サーバ２２０の予約が可能か否かを判定する（ステップＳ２００３）。当該処理は、ステップＳ１９０８と同一の処理である。なお、障害回復部１３０は、ステップＳ１９０８の判定結果を用いてもよい。
【０２２９】
スペック１４０７を満たす仮想サーバ２２０の予約が可能であると判定された場合、障害回復部１３０は、当該仮想サーバ２２０に対応するエントリの状態８０７を「使用予約」に変更する（ステップＳ２００４）。また、障害回復部１３０は、当該仮想サーバ２２０へのジョブ２４０の割り当てを変更するための変更情報を生成し、ジョブ管理部１２０に出力する。変更情報には、少なくとも仮想サーバ２２０の識別子及びジョブ２４０の識別子が含まれる。
【０２３０】
なお、ジョブ管理部１２０は、変更情報が入力されると、当該変更情報に基づいてジョブの２４０の割り当てを変更する。
【０２３１】
障害回復部１３０は、選択されたパスに含まれる全てのジョブ２４０について処理が完了したか否かを判定する（ステップＳ２００５）。
【０２３２】
選択されたパスに含まれる全てのジョブ２４０について処理が完了していないと判定された場合、障害回復部１３０は、ステップＳ２００２に戻り、次のジョブ２４０を選択して同様の処理を実行する（ステップＳ２００２〜ステップＳ２００９）。
【０２３３】
選択されたパスに含まれる全てのジョブ２４０について処理が完了していると判定された場合、障害回復部１３０は、割り当て管理テーブル１５４の全てのパスについて処理が完了したか否かを判定する（ステップＳ２００６）。
【０２３４】
割り当て管理テーブル１５４の全てのパスについて処理が完了していないと判定された場合、障害回復部１３０は、割り当て管理テーブル１５４から次のパスを選択し（ステップＳ２００１）、同様の処理を実行する（ステップＳ２００１〜ステップＳ２００９）。
【０２３５】
ステップＳ２００３において、スペック１４０７を満たす仮想サーバ２２０の予約が不可能であると判定された場合、障害回復部１３０は、空きリソース管理テーブル１４４を参照し、新規仮想サーバ２２０が生成可能なサーバ２００を検索する（ステップＳ２００７）。
【０２３６】
障害回復部１３０は、仮想構成管理テーブル１４２に新たなエントリを作成し（ステップＳ２００８）、ステップＳ２００５に進む。
【０２３７】
具体的には、障害回復部１３０は、新たに生成されたエントリの仮想サーバ名８０１、サーバ名８０２、ＯＳ８０３、プロセッサ８０４、メモリ８０５、及び記憶容量８０６に必要な情報を格納し、また、状態８０７に「リソース予約」を格納する。さらに、障害回復部１３０は、新規仮想サーバ２２０へのジョブ２４０の割り当てを変更するための変更情報を生成し、ジョブ管理部１２０に出力する。変更情報には、サーバ２００の識別子、仮想サーバ２２０の識別子、要求スペック及びジョブ２４０の識別子が含まれる。
【０２３８】
なお、ジョブ管理部１２０は、変更情報が入力されると、当該変更情報に基づいて、サーバ２００に新規仮想サーバ２２０の生成要求を送信する。このとき、ジョブ管理部１２０は、状態８０７に「作成中」に変更する。
【０２３９】
サーバ２００は、新規仮想サーバ２２０の生成命令を受信すると、当該生成命令に含まれる要求スペックに基づいて、新規仮想サーバ２２０を生成し、生成が完了した旨をジョブ管理サーバ１００に通知する。
【０２４０】
当該通知を受信したジョブ管理部１２０は、新規仮想サーバ２２０にジョブ２４０を割り当てる。また、ジョブ管理部１２０は、状態８０７を「予約」に変更する。さらに、ジョブ管理部１２０は、空きリソース管理テーブル１４４のうち、仮想サーバ２２０が生成されたサーバ２００に対応するエントリから予約されたリソースを減算することによって各カラムを更新する。
【０２４１】
なお、障害回復部１３０は、ステップＳ１６０４及びステップＳ１６０７の検索処理の結果を管理者に表示し、予約処理を実行するか否かを選択できるようにしてもよい。
【０２４２】
本発明の一形態によれば、ジョブ２４０を実行する仮想サーバ２２０に障害が発生した場合に、当該ジョブ２４０の実行に必要な仮想サーバ２２０の性能を決定し、仮想サーバ２２０が予約される。
【０２４３】
これによって、予めジョブを移動させるための待機系のサーバ２００又は待機系の仮想サーバ２２０を用意する必要がない。また、ジョブ２４０の実行時に仮想サーバ２２０が生成され、ジョブ２４０の完了後は仮想サーバ２２０が消去されるため物理リソースを有効に活用することができる。
【０２４４】
また、本発明の一形態によれば、実行期限時間１１０５内にジョブネットの処理が終了しない場合には、さらに、ジョブネット全体を考慮した、ジョブ２４０の割り当てが変更（スケジューリング）される。したがって、業務全体に影響を与えることなく障害に対応することが可能となる。
【０２４５】
［変形例］
【０２４６】
変形例では、スペック決定処理において、必要な数だけのジョブ２４０の割り当てを変更する点が異なる。以下、差異を中心に説明する。
【０２４７】
図１９Ａ及び図１９Ｂは、本発明の実施形態におけるスペック決定処理の詳細を説明するフローチャートである。
【０２４８】
ステップＳ１９０１〜ステップＳ１９１２は、同一の処理であるため説明を省略する。
【０２４９】
変形例では、ステップＳ１９０５及びステップＳ１９１０の後に、障害回復部１３０が、割り当て変更後の完了予測時間の合計値を算出する（ステップＳ２１０１）。
【０２５０】
具体的には、障害回復部１３０は、ステップＳ１９０２において選択されたジョブ２４０については完了予測時間１４０６の値を読み出し、ステップＳ１９０２においてまだ選択されていないジョブ２４０については完了予測時間１４０５の値を読み出す。さらに、障害回復部１３０は、読み出された完了予測時間１４０６の値と完了予測時間１４０５の値とを合計する。
【０２５１】
障害回復部１３０は、算出された完了予測時間の合計値が実行期限時間１１０５より小さいか否かを判定する（ステップＳ２１０２）。
【０２５２】
算出された完了予測時間の合計値が実行期限時間１１０５より小さいと判定された場合、障害回復部１３０は、選択されたパスについてのスペック決定処理を終了し、ステップＳ１９０７に進む。
【０２５３】
算出された完了予測時間の合計値が実行期限時間１１０５以上であると判定された場合、障害回復部１３０は、ステップＳ１９０６に進む。
【０２５４】
当該処理によって、必要なジョブ２４０についてのみ割り当てが変更されるため、システム全体の負荷を低減でき、また、リソースの使用量を抑制することができる。
【図１】
2012164689.tif 000003
【図２】
2012164689.tif 000004
【図３】
2012164689.tif 000005
【図４】
2012164689.tif 000006
【図５】
2012164689.tif 000007
【図６】
2012164689.tif 000008
【図７】
2012164689.tif 000009
【図８】
2012164689.tif 000010
【図９】
2012164689.tif 000011
【図１０】
2012164689.tif 000012
【図１１】
2012164689.tif 000013
【図１２】
2012164689.tif 000014
【図１３】
2012164689.tif 000015
【図１４】
2012164689.tif 000016
【図１５】
2012164689.tif 000017
【図１６Ａ】
2012164689.tif 000018
【図１６Ｂ】
2012164689.tif 000019
【図１７Ａ】
2012164689.tif 000020
【図１７Ｂ】
2012164689.tif 000021
【図１８】
2012164689.tif 000022
【図１９Ａ】
2012164689.tif 000023
【図１９Ｂ】
2012164689.tif 000024
【国際調査報告】
2012164689.tif 000025
2012164689.tif 000026
2012164689.tif 000027
2012164689.tif 000028