(57)【要約】【課題】ジョブ処理の途中の経過情報の保存をジョブ処理装置に拠らず可能とするプログラム、装置、および方法の提供を目的とする。【解決手段】ジョブ処理装置でのジョブ処理の実行の結果を取得する分散処理装置は以下を実行する。分散処理装置は、ジョブ処理装置が有する仮想計算機で動作する基本ソフトウェアがジョブ処理を検出する第一の手順情報を作成する。そして、分散処理装置は、仮想計算機の特定の時点での処理の状態を再現し得る仮想計算機の状態情報を、ジョブ処理装置から分散処理装置に送信する第二の手順情報を作成する。そして、分散処理装置は、第一の手順情報と第二の手順情報とを含むジョブスクリプトファイルをジョブ処理装置のジョブ管理部に送信する。そして、分散処理装置は、ジョブ処理装置から送信された状態情報を記憶部に格納する。【選択図】図１
2008293358.tif 000002
【特許請求の範囲】
【請求項１】
ジョブ処理装置でのジョブ処理の実行の結果を取得する分散処理装置の分散処理プログラムであって、
該分散処理装置に、
該ジョブ処理装置が有する仮想計算機内で動作する基本ソフトウェアが該ジョブ処理を検出する第一の手順情報を作成するステップ、
該仮想計算機の特定の時点での処理の状態を再現し得る該仮想計算機の状態情報を、該ジョブ処理装置から該分散処理装置に送信する第二の手順情報を作成するステップ、
該第一の手順情報と該第二の手順情報とを含むジョブスクリプトファイルを該ジョブ処理装置のジョブ管理部に送信するステップ、
該ジョブ処理装置から送信された該状態情報を記憶部に格納するステップ、
を実行させることを特徴とする分散処理プログラム。
【請求項２】
該第二の手順情報を作成するステップは更に、該仮想計算機の特定の時点での状態を再現し得る該仮想計算機の状態情報を送信させるときに、該仮想計算機を中断する処理を実行させる手順情報を有するジョブスクリプトファイルを作成すること特徴とする請求項１に記載の分散処理プログラム。
【請求項３】
該ジョブ処理が異常終了したことを検出すると、該ジョブ処理に対応する該状態情報を該記憶部から読出するステップ、
該読み出した該状態情報を該仮想計算機で展開させる手順を記載した再開ジョブスクリプト情報を作成するステップ、
該再開ジョブスクリプトファイルを該ジョブ処理装置に送信するステップ、
をさらに実行させることを特徴とする請求項１に記載の分散処理プログラム。
【請求項４】
該ジョブ処理を実行させる該仮想計算機に該ジョブ処理の対象および該ジョブの入力データを格納した該状態情報を該ジョブ処理装置に送信するステップ、
をさらに実行させることを特徴とする請求項１に記載の分散処理プログラム。
【請求項５】
ジョブ処理装置が実行したジョブ処理の結果を取得する分散処理装置の分散処理方法であって、
該分散処理装置が、該ジョブ処理装置が有する仮想計算機で動作する基本ソフトウェアが該ジョブ処理を検出する第一の手順情報を作成し、
該分散処理装置が、該仮想計算機の特定の時点での処理の状態を再現し得る該仮想計算機の状態情報を、該ジョブ処理装置から該分散処理装置に送信する第二の手順情報を作成し、
該分散処理装置が、該第一の手順情報と該第二の手順情報とを含むジョブスクリプトファイルを該ジョブ処理装置のジョブ管理部に送信し、
該分散処理装置が、該ジョブ処理装置から送信された該状態情報を記憶部に格納する
ことを特徴とする分散処理方法。
【請求項６】
ジョブ処理装置が実行したジョブ処理の結果を取得する分散処理装置であって、
該ジョブ処理装置が有する仮想計算機で動作する基本ソフトウェアが該ジョブ処理を検出する第一の手順情報を作成し、
該仮想計算機の特定の時点での処理の状態を再現し得る該仮想計算機の状態情報を、該ジョブ処理装置から該分散処理装置に送信する第二の手順情報を作成し、
該第一の手順情報と該第二の手順情報とを含むジョブスクリプトファイルを該ジョブ処理装置のジョブ管理部に送信し、
該ジョブ処理装置から送信された該状態情報を記憶部に格納する
ことを特徴とする分散処理装置。
【請求項７】
ジョブ処理装置と該ジョブ処理装置が実行したジョブ処理の結果を取得する分散処理装置とからなる分散処理システムであって、
該分散処理装置は、
該ジョブ処理装置が有する仮想計算機で動作する基本ソフトウェアが該ジョブ処理を検出する第一の手順情報を作成し、
該仮想計算機の特定の時点での処理の状態を再現し得る該仮想計算機の状態情報を、該ジョブ処理装置から該分散処理装置に送信する第二の手順情報を作成し、
該第一の手順情報と該第二の手順情報とを含むジョブスクリプトファイルを該ジョブ処理装置のジョブ管理部に送信し、
該ジョブ処理装置から送信された該状態情報を記憶部に格納する
該ジョブ処理装置は、
ジョブ処理を実行し、該ソフトウェア状態情報を該分散処理装置に送信する
ことを特徴とする分散処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散処理システムのジョブの復旧を可能とする技術に関する。
【背景技術】
【０００２】
ネットワーク上にある複数のコンピュータ資源によって構成されるコンピュータシステムには、コンピュータ・クラスターやグリッド・コンピューティングなどがある。コンピュータ・クラスターやグリッド・コンピューティングなどの分散処理システムでは、処理の対象となるプログラムを処理の単位（以下ジョブという）で区切り、各コンピュータ資源はジョブ毎に処理を実行する。分散処理システムでは、各コンピュータ資源の故障およびコンピュータシステムの保守を原因とするシステムダウンが発生する場合がある。分散処理システムでは、各コンピュータ資源の利用可能な時間帯が夜間に限られていたり、各コンピュータ資源のユーザが各コンピュータ資源のシャットダウンあるいはリブート処理を実行したりするためである。そこで、分散処理システムでは、システムダウンまでに行ったジョブ処理の結果の利用を可能とするために、実行途中の状態を定期的にあるいは適当なタイミングで保存（チェックポイント）することが行われる。コンピュータシステムが復旧すると、チェックポイントされた時点からジョブ処理の実行を再開（リスタート）することが可能となる。分散処理システムでは、チェックポイントから再開する以下の方式がある。
【０００３】
第一の方法は、処理の対象となるプログラムの実行途中の状態を記憶装置に保存させる機能を持たせることである。第一の方法は、処理の対象となるプログラムの実行を再開するとき、記憶装置に保存させた実行途中の状態を読み出す。しかし、第一の方法はプログラム作成者の負担が大きくかつ汎用性もない。自作でチェックポイントリスタートする方式では、プログラム作成者はジョブの対象のソースプログラムが入手可能であり、かつソースプログラム中のどのデータを保存すればよいかを熟知している必要がある。このため、この方式は、事実上自作のプログラムのみでしか利用できない。
【０００４】
第二の方法は、チェックポイントから処理の対象となるプログラムの実行を再開するためのライブラリを利用するものである。例えば、Ｗｉｓｃｏｎｓｈｉｎ大により公開されたシステム（Ｃｏｎｄｏｒ）は、チェックポイント用のライブラリを利用するオブジェクトファイルや実行ファイルなどのコンパイルされたプログラムを作成することが可能である。Ｃｏｎｄｏｒはチェックポイント用のライブラリの機能を用いてジョブの実行途中の状態のチェックポイントをすることができる。チェックポイントされたファイルがある場合には、ジョブの再実行時には自動的にその状態から実行を再開できる。しかし、Ｃｏｎｄｏｒなどバッチシステムが行うチェックポイントでは、実装が公開されていないＯＳではチェックポイントを作成することが不可能である。また、Ｃｏｎｄｏｒはバイナリの再コンパイルが必要であり、ソースプログラムの入手ができない場合は、チェックポイントできない。例えば、チェックポイントを実現するために、Ｃｏｎｄｏｒのようにバッチシステムの内部機能として実装する必要がある。
【０００５】
第三の方法は、仮想計算機（ＶＭ）のサスペンド機能を用いることでチェックポイントおよびリスタートをするものである。例えば、ＶＭＷａｒｅ社の製品ＶＭＷａｒｅは、システムがサスペンド状態になるとＯＳおよび全てのプロセスの状態をゲストＯＳのイメージに保存することができる。第三の方法は、ゲストＯＳに保存されたイメージをリジュームすることで実行を再開できる。ＶＭＷａｒｅを利用するチェックポイントは、一般のバッチシステムでチェックポイントリスタートすることができない。このため、キューイングやワーカ計算機の計算資源の利用ポリシー（キュー設定）などを柔軟に設定できず、ファイル転送などの設定も利用者が設定する必要がある。また、バッチシステムを利用してチェックポイントリスタートするジョブを書く仕組みがない。
【０００６】
従来技術として、下記の文献がある。
【特許文献１】特開２００４−３３４４９３号公報
【特許文献２】特開２００６−５６０２８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、ジョブ処理の途中の経過情報の保存をジョブ処理装置に拠らず可能とするプログラム、方法、装置、およびシステムの提供を目的とする。
【課題を解決するための手段】
【０００８】
本発明の第一の解決手段では、ジョブ処理装置でのジョブ処理の実行の結果を取得する分散処理装置は以下を実行する。分散処理装置は、ジョブ処理装置が有する仮想計算機で動作する基本ソフトウェアがジョブ処理を検出する第一の手順情報を作成する。そして、分散処理装置は、仮想計算機の特定の時点での処理の状態を再現し得る仮想計算機の状態情報を、ジョブ処理装置から分散処理装置に送信する第二の手順情報を作成する。そして、分散処理装置は、第一の手順情報と第二の手順情報とを含むジョブスクリプトファイルをジョブ処理装置のジョブ管理部に送信する。そして、分散処理装置は、ジョブ処理装置から送信された状態情報を記憶部に格納する。
【０００９】
本発明の第二の解決手段では、第一の解決手段に加えて、分散処理装置は、第二の手順情報を作成するステップは更に、仮想計算機の特定の時点での状態を再現し得る仮想計算機の状態情報を送信させるときに、仮想計算機を中断する処理を実行させる手順情報を有するジョブスクリプトファイルを作成する。
【００１０】
本発明の第三の解決手段では第一の解決手段に加えて、ジョブ処理が異常終了したことを検出すると、ジョブ処理に対応する状態情報を記憶部から読出する。そして、分散処理装置は、読み出した状態情報をソフトウェアで展開させる手順を記載した再開ジョブスクリプト情報を作成する。そして、分散処理装置は、再開ジョブスクリプトファイルをジョブ処理装置に送信する。
【００１１】
本発明の第四の解決手段では第一の解決手段に加えて、分散処理装置は、ジョブ処理を実行させるソフトウェアにジョブ処理の対象およびジョブの入力データを格納した状態情報を、ジョブ処理装置に送信する。
【発明の効果】
【００１２】
本発明は、ジョブ処理装置の仮想的な計算機でジョブ処理を実行させ、仮想的な計算機の特定の時点での状態を再現し得る仮想計算機情報をジョブ処理装置から取得する。本発明によって、ジョブ処理の途中の経過情報の保存がジョブ処理装置に拠らず可能となる。その結果、ジョブ処理装置の計算資源を最適に利用することが可能となる。
【発明を実施するための最良の形態】
【００１３】
以下、本実施例では、「ジョブ」は、利用者がマスター計算機１０に対して要求する仕事の単位あるいはワーカ計算機２０が実際に処理を実行する対象のプログラムであるとする。また、本実施例では、「ジョブ記述」は、ジョブ記述はジョブを実行させるために必要な処理手順を規定したワークフロー情報であるとする。また、本実施例では、「ジョブスクリプト」は、ワーカ計算機２０がジョブの処理を実行するための手順情報を有するファイルであるとする。
【００１４】
図１は本実施例でのバッチシステム１のシステム構成図である。
【００１５】
バッチシステム１は、ジョブの処理を管理するマスター計算機１０と各ジョブを実行するワーカ計算機２０とがネットワーク３０によって接続される構成である。ネットワーク３０は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどである。本実施例のバッチシステム１の一つの計算機がマスター計算機１０となり、一つ以上の複数のワーカ計算機２０にジョブを割り振る構成となる。
【００１６】
バッチシステム１の処理の概要は以下となる。マスター計算機１０（分散処理装置）はバッチシステム１の利用者からジョブ記述を受付ける。マスター計算機１０はジョブ記述からＶｉｒｔｕａｌ  Ｍａｃｈｉｎｅ（仮想計算機である。以下、ＶＭとする）イメージデータおよびジョブスクリプトを作成する。ＶＭイメージデータは仮想計算機が動作する特定の時点における状態が保存されたファイルである。マスター計算機２０はジョブ記述、ＶＭイメージデータ、およびジョブスクリプトをワーカ計算機２０に送信する。
【００１７】
ワーカ計算機２０は仮想計算機を実行する機能を有する。仮想計算機は、ワーカ計算機２０内にＣＰＵや記憶部等のリソースを仮想化したコンピュータを実行するソフトウェアである。仮想化とは、ワーカ計算機２０を構成する複数のハードウェア的な要素（ＣＰＵ、メモリ、ハードディスク、通信回線等）をワーカ計算機２０の実際の構成とは異なる構成であるかのように認識させる技術のことである。
計算機はＶＭイメージデータを展開することにより、ＶＭイメージデータに格納された時点の仮想計算機を再現することが可能となる。仮想計算機のソフトウェアとして、ＶＭｗａｒｅ  ＥＳＸ  Ｓｅｒｖｅｒ（登録商標）、Ｘｅｎ（登録商標）等が提供されている。
【００１８】
ワーカ計算機２０は仮想計算機上でジョブを実行する。ワーカ計算機２０はジョブの処理の結果をマスター計算機１０に送信する。
【００１９】
次に、マスター計算機１０について説明する。なお、本実施例のマスター計算機１０のＯＳはＵＮＩＸ（登録商標）またはＬｉｎｕｘ（登録商標）であるとして記載するが、Ｗｉｎｄｏｗｓ（登録商標）など他のＯＳでも容易に実装可能である。
【００２０】
図２は本実施例でのマスター計算機１０の機能ブロック図である。マスター計算機１０は、ジョブ投入モジュール１１およびバッチ管理モジュール１２を有する。
【００２１】
バッチ管理モジュール１２は、ジョブ投入モジュール１１から投入されたジョブに対してジョブＩＤを付与する。また、バッチ管理モジュール１２は、入力されたジョブを適当なワーカ計算機２０への振分けを行う。また、バッチ管理モジュール１２は、ワーカ計算機２０にジョブ処理を実行させる。また、バッチ管理モジュール１２は、ジョブ処理結果を回収する。また、バッチ管理モジュール１２が複数のジョブの処理を行う場合、ジョブ投入モジュール１１から受付けたジョブをバッチ処理管理テーブル７０に格納する。
【００２２】
バッチ管理モジュール１２は、エージェント１６、ワーカ計算機管理テーブル５０、およびバッチ処理管理テーブル７０を有する。バッチ管理モジュール１２は、ジョブ投入モジュール１１からジョブを受付ける機能を有する。バッチ管理モジュール１２は、受付けたジョブの処理を実行するワーカ計算機２０を選択する。
【００２３】
エージェント１６は、ワーカ計算機２０に対して各種の情報の送受信を行う。ワーカ計算機２０に送信する情報は、例えば、ＶＭイメージデータ、入力ファイル情報、ジョブスクリプトなどである。またワーカ計算機２０から受信する情報は、ジョブの終了情報、チェックポイントファイルデータなどである。
【００２４】
ワーカ計算機管理テーブル５０は、各ワーカ計算機２０の処理能力の情報を管理するテーブルである。ワーカ計算機管理テーブル５０は、バッチシステム１に接続する各ワーカ計算機２０の処理能力の情報を有する。また、バッチ管理モジュール１２は、一定時間毎にワーカ計算機２０の負荷の情報を取得し、ワーカ計算機管理テーブル５０に負荷の情報を格納する。バッチ管理モジュール１２は、例えば、ワーカ計算機２０の負荷の状況、計算処理能力に応じてジョブを実行させるワーカ計算機２０を決定する。
【００２５】
バッチ処理管理テーブル７０は、バッチ処理の対象のジョブを一時的に格納するテーブルである。
【００２６】
ジョブ投入モジュール１１は、既存のバッチ管理モジュール１２の追加機能としてマスター計算機１０に実装する。ジョブ投入モジュール１１は、入力されたジョブ記述１７から実行すべきジョブの検出処理、ジョブの進行状態の管理などを行う。
【００２７】
ジョブ投入モジュール１１は、ＶＭイメージ作成部１３、ジョブスクリプト作成部１４、ジョブ管理部１５、ＶＭイメージテーブル４０、およびジョブ状態管理テーブル６０を有する。
【００２８】
ジョブ投入モジュール１１のＶＭイメージ作成部１３は、ワーカ計算機２０に実行させるための仮想計算機のデータを生成する。
【００２９】
ジョブ投入モジュール１１のジョブスクリプト作成部１４は、ジョブスクリプトを作成する。ジョブスクリプトは、ワーカ計算機２０に与えるジョブ記述の処理の手順である。ジョブスクリプトはワーカ計算機２０のＶＭ管理モジュール２２で実行される。ジョブスクリプトはワーカ計算機２０のＶＭイメージデータを展開して仮想計算機を起動する機能、ワーカ計算機２０のジョブの結果を送信する機能、ワーカ計算機２０のゲストＯＳ２６の起動あるいは停止をする機能、ワーカ計算機２０のスタータ機能２８にジョブ記述の実行の開始を指示する機能、ワーカ計算機２０のスタータ機能２８を監視する機能、ゲストＯＳ２６の機能を用いてジョブ記述を共有フォルダ２９に書き出す機能、ワーカ計算機２０のチェックポイントの送信機能などをワーカ計算機２０に実行させるプログラムである。
【００３０】
ジョブ投入モジュール１１のジョブ管理部１５は、ワーカ計算機２０でのジョブ処理の実行の状態を管理する。例えば、バッチ管理モジュール１２がワーカ計算機２０にジョブを投入済みか否か、ワーカ計算機２０がジョブを実行中か否か、ワーカ計算機２０がジョブ処理を完了したか否か、ワーカ計算機２０にてジョブ処理が異常終了したか否かなどを管理する。また、ジョブ管理部１５は入力されたチェックポイントファイルを管理する。また、ジョブ管理部１５はジョブ処理の異常終了を検出した場合にジョブの再投入をジョブ投入モジュール１１に指示する。
【００３１】
ＶＭイメージテーブル４０は、雛形となるＶＭイメージデータ、ＶＭイメージ作成部１３が作成したジョブ毎のＶＭイメージデータ、およびチェックポイント毎にワーカ計算機２０から受信したチェックポイントファイルを格納するテーブルである。
【００３２】
ジョブ状態管理テーブル６０は、ワーカ計算機２０に投入するジョブの状態の情報を格納するテーブルである。図３は本実施例でのジョブ状態管理テーブル６０の構成図である。
【００３３】
ここで、ジョブ状態管理テーブル６０について説明する。ジョブ状態管理テーブル６０は、ジョブＩＤ情報６１、ジョブ名情報６２、状態情報６３、チェックポイント名情報６４、およびジョブスクリプト名情報６６とから構成されるレコード６５をジョブ毎に有する。
【００３４】
ジョブＩＤ情報６１は、ジョブ毎に一意に付される番号である。バッチ管理モジュール１２がジョブ毎に付加する。ジョブ名情報６２は、利用者から入力されたジョブ記述１７によって登録されたジョブ名である。
【００３５】
状態情報６３は、ジョブ処理の現在の状態が格納される。例えば、ジョブがワーカ計算機２０にて実行中であることを示す「処理中」、ワーカ計算機２０でのジョブ処理が終了し、ジョブ処理の結果を取得したことを示す「終了」、ワーカ計算機２０でのジョブ処理が異常終了したことを示す「異常終了」の状態に区分する。
【００３６】
チェックポイント名情報６４は、ジョブに対応するチェックポイントのファイル名情報である。本実施例のチェックポイントファイルはＶＭイメージデータである。チェックポイントファイルはジョブ毎にファイル名を対応づけられる。チェックポイントファイルはＶＭイメージテーブル４０に格納される。
【００３７】
ジョブスクリプト名情報６６は、ジョブスクリプト作成部１４が作成したジョブ記述１７に応じたジョブスクリプトファイルのファイル名を格納する。ジョブスクリプトファイルは記憶部１０４に格納する。
【００３８】
次に、マスター計算機１０のハードウェア構成について説明する。図４は本実施例でのマスター計算機１０のハードウェア構成である。
【００３９】
マスター計算機１０は、制御部１０１、メモリ１０２、入力部１０３、記憶部１０４、出力部１０５、およびネットワークインターフェース部１０６を有し、それぞれがバス１０７に接続された構成である。
【００４０】
制御部１０１はマスター計算機１０の全体を制御する。例えば、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）である。また、制御部１０１はメモリ１０２に展開されたジョブ管理プログラム１０８を実行する。ジョブ管理プログラム１０８は制御部１０１をジョブ投入モジュール１１、バッチ管理モジュール１２として機能させる。
【００４１】
メモリ１０２は、記憶部１０４に格納されたジョブ管理プログラム１０８が展開される記憶領域である。また、メモリ１０２は制御部１０１がジョブ管理プログラム１０８を実行する際に生成される種々の演算結果が格納される記憶領域である。メモリ１０２は例えばＲａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ）である。
【００４２】
入力部１０３は利用者からのジョブの処理の対象となるジョブ記述１７を受付ける。入力部１０３は、例えば、キーボード、マウス、タッチパネル等である。なお、ジョブ記述１７はネットワーク３０を経由して入力されることも可能である。出力部１０５は、ジョブの処理結果を出力する。
【００４３】
出力部１０５は、例えば、ディスプレイ（表示装置）等である。記憶部１０４は、ジョブ管理プログラム１０８、ＶＭイメージテーブル４０、ワーカ計算機管理テーブル５０、ジョブ状態管理テーブル６０、およびバッチ処理管理テーブル７０が格納される。記憶部１０４は例えばハードディスク装置である。
【００４４】
ネットワークインターフェース部１０６は、ネットワーク３０に接続し、ワーカ計算機２０との間で各種の情報の送受信を行う。
【００４５】
次にワーカ計算機２０について説明する。図５は本実施例でのワーカ計算機の機能ブロック図である。ワーカ計算機２０は、ワーカ計算機２０の全体を管理するソフトウェアであるホストＯＳ２１を有する。
【００４６】
ホストＯＳ２１は仮想計算機に相当するＶＭイメージデータを管理するＶＭ管理モジュール２２を有する。ＶＭ管理モジュール２２はジョブスクリプトに従って動作する。また、ＶＭ管理モジュール２２はマスター計算機１０との間の情報の送受信を行う。
【００４７】
また、ホストＯＳ２１はディレクトリ２３を有する。ディレクトリ２３はジョブを処理するためのファイルを格納する領域である。ワーカ計算機２０はディレクトリ２３をジョブ毎に生成する。例えば、ワーカ計算機２０は、複数のジョブをジョブに対応する複数のディレクトリ２３毎に格納する。ディレクトリ２３には、ＶＭイメージデータ２４、入力ファイル情報２５１、および出力ファイル情報２５２が格納される。入力ファイル情報２５１は、ジョブを実行するために必要な変数情報などが格納される。出力ファイル情報２５２は、ジョブの処理結果情報が格納される。
【００４８】
ＶＭイメージデータ２４による仮想計算機はゲストＯＳ２６を有する。ゲストＯＳ２６は実行すべきジョブ記述であるジョブ２７、ゲストＯＳ２６上でのジョブ処理を管理するスタータ機能２８、およびホストＯＳ２１とゲストＯＳ２６との間のデータを送受信するための共有フォルダ２９を有する。
【００４９】
ホストＯＳ２１はゲストＯＳ２６をＶＭイメージデータによって扱う。また、ホストＯＳ２１はゲストＯＳ２６に対するサスペンド機能を有する。本実施例でのサスペンド機能は、ゲストＯＳ２６の任意の時点の状態を保存して、次にゲストＯＳ２６が処理を再開するときに、保存した状態からの処理を再開することを可能とする。
【００５０】
ここで、本実施例でのワーカ計算機２０で実行される仮想計算機について説明する。ワーカ計算機２０で動作する仮想計算機はサスペンド（中断）およびリジューム（再起動）の機能を有する。仮想計算機のゲストＯＳ２６の特定の時点の状態情報を保存するためである。
【００５１】
本実施例の仮想計算機のゲストＯＳ２６の仮想的なネットワークの構成は、ゲストＯＳ２６がホストＯＳ２１にのみアクセスできるホストオンリーネットワーク３１の構成とする。
【００５２】
図６は本実施例でのホストオンリーネットワーク３１の概念図である。ホストオンリーネットワーク３１の構成は、ホストＯＳ２１およびゲストＯＳ２６のみが接続する特別なネットワークである。すなわち、ゲストＯＳ２６の共有フォルダ２９をネットワーク３０に接続する他の計算機が共有することを防ぐことが可能となる。この結果、ゲストＯＳ２６のネットワーク上のセキュリティが確保され、ジョブに関するデータの漏洩を防ぐことが可能となる。なお、ゲストＯＳ２６がネットワーク３０に接続する構成とすることも可能である。
【００５３】
また、ゲストＯＳ２６およびホストＯＳ２１を接続する仮想的なネットワークは、例えばＩｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ（以下、ＩＰとする）プロトコルによって接続する。ゲストＯＳ２６およびホストＯＳ２１はＩＰアドレスを固定値に設定する。なお、ＩＰアドレスは、マスター計算機１０およびワーカ計算機２０が属するネットワーク３０内のＩＰアドレスと競合しないプライベートアドレスを任意に設定することが可能である。
【００５４】
次に、ワーカ計算機２０のハードウェア構成について説明する。図７は本実施例でのワーカ計算機２０のハードウェア構成である。ワーカ計算機２０は、制御部１１１、メモリ１１２、入力部１１３、記憶部１１４、出力部１１５、およびネットワークインターフェース部１１６を有し、それぞれがバス１１７に接続された構成である。
【００５５】
制御部１１１はワーカ計算機２０の全体を制御する。例えば、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）である。また、制御部１１１はメモリ１１２に展開されたＶＭ管理プログラム１１８を実行する。ＶＭ管理プログラム１１８は制御部１１１をＶＭ管理モジュール２２として機能させる。なお、以降の説明では、説明の簡単化のため、制御部１１１が実行すると記述する。
【００５６】
メモリ１１２は、記憶部１１４に格納されたＶＭ管理プログラム１１８が展開される記憶領域である。また、メモリ１１２は制御部１１１がＶＭ管理プログラム１１８を実行する際に生成される種々の演算結果が格納される記憶領域である。メモリ１１２は例えばＲａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ）である。
【００５７】
入力部１１３は利用者からのジョブの処理の対象となるジョブ記述を受付ける。入力部１１３は、例えば、キーボード、マウス、タッチパネル等である。出力部１１５は、ジョブの処理結果を出力する。
【００５８】
出力部１１５は、例えば、ディスプレイ（表示装置）等である。記憶部１１４は、ＶＭ管理プログラム１１８およびディレクトリ２３の情報が格納される。記憶部１１４は例えばハードディスク装置である。
【００５９】
ネットワークインターフェース部１１６は、ネットワーク３０に接続し、マスター計算機１０との間で各種の情報の送受信を行う。
【００６０】
次に、バッチシステム１に利用者からジョブ記述を新規に登録された場合に、マスター計算機１０が実行する処理について説明する。図８は本実施例でのジョブ投入モジュール１１が実行する処理のフローチャートである。ジョブ投入モジュール１１は、利用者からバッチシステム１に対して与えられたジョブネットとしてのジョブ記述１７を受付ける（Ｓ０１）。ジョブ投入モジュール１１は、ジョブ記述１７からチェックポイントファイル名、ＶＭイメージデータ、およびジョブスクリプトを作成する（Ｓ０２、Ｓ０３、Ｓ０４）。また、ジョブ投入モジュール１１はジョブをバッチ管理モジュール１２に投入する（Ｓ０５）。またジョブ投入モジュール１１はジョブの処理状況を管理する（Ｓ０６）。以下、各ステップについて詳細に説明する。
【００６１】
マスター計算機１０のジョブ投入モジュール１１は利用者からジョブ記述１７を受信する（Ｓ０１）。
【００６２】
本実施例のジョブ記述１７には、ワーカ計算機２０のジョブ２７に対応する実行すべきジョブ記述、ジョブ処理の実行の開始前にワーカ計算機２０に送信すべき入力ファイル情報、およびジョブ処理の実行の完了後にワーカ計算機２０から受信すべき出力ファイル情報が格納される。図９は本実施例でのジョブ記述１７の一例である。本実施例でのジョブ記述１７は、テキスト形式で利用者が記述する。なお、図９中の行頭の数字は、説明のための行番号であり、ジョブ記述には含まれない。図９のジョブ記述の４行目にジョブ処理の実行の開始前に転送するファイル群が記載される。実行の開始前に転送するファイル群は例えば、入力パラメータや外部関数情報である。図９のジョブ記述の５行目にジョブ処理の実行後に転送するファイル群が記載される。なお、記載される複数のファイル群はカンマ文字で区切られる。図９のジョブ記述の７行目に実行すべきジョブ記述が記載される。ジョブは実行すべきジョブ記述にしたがって処理を実行することである。実行すべきジョブ記述は複数行の記載が可能である。なお、テキスト形式によるジョブ記述１７からの情報の抽出は適当な構文解析装置が行う。
【００６３】
次に、ジョブ投入モジュール１１はチェックポイントを保存するファイル名を設定する（Ｓ０２）。本実施例のチェックポイントは、所定の状態での仮想計算機の状態が格納されたＶＭイメージデータである。チェックポイントはジョブの処理の途中の状態を保存しておき、ジョブの処理の途中でデータを失った場合にチェックポイントの時点から処理の再開を可能とするために記憶する。チェックポイントを保存するファイル名はジョブ投入モジュール１１で管理する対象のジョブ毎に一意となる名前を設定する。
【００６４】
ジョブ投入モジュール１１はジョブ記述１７からＶＭイメージデータ２４を作成する（Ｓ０３）。本実施例では、マスター計算機１０およびワーカ計算機２０は仮想計算機を一つのファイルとして扱う。ＶＭイメージデータ２４はゲストＯＳ２６がインストールされた状態である。ＶＭイメージデータ２４のゲストＯＳ２６は、例えばＷｉｎｄｏｗｓ（登録商標）、ＵＮＩＸ（登録商標）またはＬｉｎｕｘ（登録商標）などの一般的なＯＳである。
【００６５】
ゲストＯＳ２６は、ゲストＯＳ２６とホストＯＳ２１とがデータを共有するための共有フォルダ２９を有する。なお、共有フォルダ２９はマスター計算機１０によって共有される必要はない。ＶＭイメージデータ２４はスタータ機能２８を有する。
【００６６】
スタータ機能２８は、ワーカ計算機２０の仮想計算機にジョブ処理を実行させるプログラムである。スタータ機能２８は、ゲストＯＳ２６内の共有フォルダ２９内に格納された実行すべきジョブ記述であるジョブ２７を検出する。スタータ機能２８は、ジョブ２７に従ってジョブを実行する。スタータ機能２８はワーカ計算機２０のホストＯＳ２１と情報を送受信する機能を有する。スタータ機能２８はホストＯＳ２１にジョブの処理の完了を通知する。例えば、スタータ機能２８は共有フォルダ２９に出力ファイル情報を格納する。共有フォルダ２９がない場合、スタータ機能２８がＶＭ管理モジュール２２にデータを送信およびスタータ機能２８がＶＭ管理モジュール２２からデータを受信する方法も可能である。
【００６７】
ＶＭイメージデータは、ＶＭイメージデータがワーカ計算機２０内で起動されるとゲストＯＳ２６内のスタータ機能２８が実行を開始するように構成される。例えば、ＯＳがＷｉｎｄｏｗｓ（登録商標）のときは自動起動するサービスとしてスタータ機能２８を登録し、ＯＳがＵＮＩＸ（登録商標）またはＬｉｎｕｘ（登録商標）のときは必ず実行するデーモンとしてスタータ機能２８を登録する。
【００６８】
ここで、マスター計算機１０のジョブ投入モジュール１１がＶＭイメージデータ２４を作成するＳ０３の処理について説明する。図１０は本実施例でのジョブ投入モジュール１１がＶＭイメージデータ２４を作成する処理のフローチャートである。
【００６９】
ジョブ投入モジュール１１はジョブ記述１７を受付ける（Ｓ１１）。
【００７０】
ジョブ投入モジュール１１はＶＭイメージテーブル４０の雛型のＶＭイメージデータをコピーする（Ｓ１２）。コピーされたＶＭイメージデータは、以降の処理においてワーカ計算機２０で展開するＶＭイメージデータ２４の作成に使用する。
【００７１】
ジョブ投入モジュール１１は、ジョブ記述１７内の実行すべきジョブ記述をジョブ情報２７としてコピーされたＶＭイメージデータ内の共有フォルダ２９に格納する（Ｓ１３）。なお、実行すべきジョブの記述の共有フォルダ２９への格納は仮想計算機のツールを用いる。
【００７２】
ジョブ投入モジュール１１は作成したＶＭイメージデータ２４をチェックポイントファイル保存先に保存する（Ｓ１４）。将来、ワーカ計算機２０からチェックポイントファイルを取得する前にジョブ処理が異常終了した場合に、保存したＶＭイメージデータ２４を使用してジョブ処理の再開をするためである。
【００７３】
ジョブ投入モジュール１１はＶＭイメージデータ２４を他の手順によって作成することも可能である。雛形となるＶＭイメージデータは、ホストＯＳ２１がＶＭイメージデータ中のゲストＯＳ２６の共有フォルダ２９のファイルを共有できる設定であるものとする。ジョブ投入モジュール１１はジョブ２７を共有フォルダ２９に格納する。ワーカ計算機２０では、ゲストＯＳ２６のスタータ機能２８は、ホストＯＳ２１からジョブの実行を開始する指示を受けた場合、共有フォルダ２９に格納されたジョブ２７を実行するように設定する。なお、スタータ機能２８が複数回のジョブの実行を開始する指示をホストＯＳ２１から受けた場合は、一回目の指示のみを有効と判定するように構成する。なお、スタータ機能２８は、共有フォルダ２９内のジョブ２７を監視する必要はない。
【００７４】
また、マスター計算機１０がＶＭイメージデータの仮想計算機を実行する機能を有する場合は、ジョブ投入モジュール１１は以下の手法によってＶＭイメージデータ２４を作成することが可能である。
【００７５】
ジョブ投入モジュール１１は、マスター計算機１０でＶＭイメージデータを展開する。ジョブ投入モジュール１１は、ＶＭイメージデータのゲストＯＳが有するファイル共有機能を用いてジョブ２７を共有フォルダに書き出す。図８の説明に戻る。
【００７６】
ジョブ投入モジュール１１はジョブ記述とチェックポイントとからジョブスクリプトを作成する（Ｓ０４）。
【００７７】
ここで、ジョブ投入モジュール１１がジョブスクリプトを作成するＳ０４の処理について説明する。図１１は本実施例でのジョブスクリプト作成部の処理のフローチャートである。
【００７８】
ジョブ投入モジュール１１は入力情報を取得する（Ｓ２１）。入力情報はジョブ２７およびチェックポイントファイルの保存先情報である。
【００７９】
ジョブスクリプトの作成は、雛形となるジョブスクリプトのデータを予め有しておき、雛型となるジョブスクリプトのデータを修正することによって作成することも可能であるし、ジョブ毎に新規にジョブスクリプトを作成することも可能である。
【００８０】
本実施例では、雛形となるジョブスクリプトのデータをコピーして、コピーされた雛形となるジョブスクリプトのデータを修正することでジョブスクリプトを作成する方法を説明する。雛形となるジョブスクリプトは、ジョブ処理の実行の開始をスタータ機能２８に指示する機能を有する。
【００８１】
ジョブ投入モジュール１１はジョブ記述情報１７から入力ファイル情報２５１となる部分を取り出す。ジョブ投入モジュール１１は、ワーカ計算機２０でのジョブ処理の実行の開始前にワーカ計算機２０に送信すべき入力ファイル情報２５１に取り出した入力ファイル情報２５１の記述の部分を設定する（Ｓ２２）。
【００８２】
ジョブ投入モジュール１１は、ディレクトリ２３の入力ファイル情報２５１をＶＭイメージデータ２４の共有フォルダ２９にコピーするように、ジョブスクリプトを書き換える（Ｓ２３）。ワーカ計算機２０はＳ２３で書き換えられたジョブスクリプトを実行する。例えば、Ｓ２３での入力ファイル情報２５１のコピー処理は、ＶＭイメージデータ２４の内容について読み書きをするワーカ計算機２０のツールが行う。また、ゲストＯＳ２６のファイル共有の機能を用いて行うことも可能である。スタータ機能２８とＶＭ管理モジュール２２との間は共有フォルダ２９を介して情報の受け渡しを行う。
【００８３】
なお、マスター計算機１０がＶＭイメージデータの内容について読み書きをするツールを有する場合、ジョブ投入モジュール１１は入力ファイル情報２５１を、バッチ管理モジュール１２に投入する前に共有フォルダ２９内に予め格納することも可能である。ＶＭイメージデータの共有フォルダ２９に入力ファイル情報２５１予め格納することにより、バッチ管理モジュール１２、ワーカ計算機２０で扱うファイルがＶＭイメージデータのみとなる利点がある。
【００８４】
ジョブ投入モジュール１１は、ジョブ処理の完了時の処理のジョブスクリプトを書き換える（Ｓ２４）。ワーカ計算機２０はＳ２４で書き換えられたジョブスクリプトに従って処理を実行する。Ｓ２４で書き換えられるジョブスクリプトは例えば以下となる。ジョブ処理が完了すると、ワーカ計算機２０はジョブ処理の結果として得た出力ファイルをＶＭイメージデータ２４の共有フォルダ２９に格納する。ワーカ計算機２０が実行するコピー処理は、ワーカ計算機２０のＶＭイメージデータ２４の内容について読み書きが可能なツールによって行う方法、ゲストＯＳ２６のファイル共有の機能を用いて行う方法などがある。ジョブ投入モジュール１１は、ワーカ計算機２０が共有フォルダ２９の出力ファイルからディレクトリ２３内の出力ファイル情報２５２にジョブ処理の結果をコピーする処理を実行するようにジョブスクリプトを書き換える。
【００８５】
マスター計算機２０のネットワーク識別子を設定する（Ｓ２５）。ジョブ管理部１５とワーカ計算機２０との間で通信を可能とするためである。ネットワーク識別子は例えば、ＩＰアドレスあるいはホスト名である。ネットワーク識別子はバッチシステム１上でマスター計算機１０を特定する情報である。なお、Ｓ２５の処理を毎回のジョブスクリプトの作成時に実行するのではなく、ジョブスクリプトの雛形を更新することによっても可能である。
【００８６】
ジョブ投入モジュール１１は、Ｓ０２で設定したチェックポイントファイルを格納するファイル名を設定する（Ｓ２６）。ワーカ計算機２０のＶＭ管理モジュール２２がチェックポイントファイルをマスター計算機１０に対して送信する。マスター計算機１０は受信したチェックポイントファイルを格納する場所情報を知る必要があるためである。
以上によってジョブスクリプトが作成される。ジョブ投入モジュール１１は作成したジョブスクリプトファイルを記憶部１０４に保存する。ジョブ投入モジュール１１はジョブスクリプトファイル名情報６６をジョブ状態管理テーブル６０に格納する。
【００８７】
また、マスター計算機１０およびワーカ計算機２０はファイル共有機能を利用してジョブ状態管理テーブル６０を共有する構成とすることも可能である。ＶＭ管理モジュール２２は、共有されたジョブ状態管理テーブル６０にジョブ処理の状態情報６３を更新する。
【００８８】
ジョブ投入モジュール１１のジョブ管理部１５は、ワーカ計算機２０で実行されるジョブスクリプトが送信するジョブ処理の実行の状態を受信する。
【００８９】
次に、ジョブ投入モジュール１１は、ジョブ、作成したＶＭイメージデータ、およびジョブスクリプトファイルをバッチ管理モジュール１２に送る（Ｓ０５）。
【００９０】
バッチ管理モジュール１２はジョブ投入モジュール１１から受付けたジョブをワーカ計算機２０に実行させる。バッチ管理モジュール１２は、ワーカ計算機２０が送信するファイルを受信することが可能である。
【００９１】
バッチ管理モジュール１２は、ジョブ投入モジュール１１から受付けたジョブに対してジョブＩＤを付加する。ジョブＩＤは対象のジョブを特定するための識別番号情報である。バッチ管理モジュール１２は、付加したジョブＩＤ情報をジョブ投入モジュール１１に送る。
【００９２】
ジョブ投入モジュール１１のジョブ管理部１５は、ジョブＩＤ情報をバッチ管理モジュール１２から取得する。ジョブ管理部１５は、ジョブ名情報、チェックポイントファイル名情報をジョブ投入モジュール１１から取得する。ジョブ管理部１５は、ジョブＩＤ情報６１、ジョブ名情報６２、およびチェックポイントファイル名情報６４をジョブ管理テーブルの新規のレコード６５に登録する（Ｓ０６）。
【００９３】
一方、バッチ管理モジュール１２は、ワーカ計算機管理テーブル５０によってジョブの処理を実行させるワーカ計算機２０を決定する。エージェント１６は、決定したワーカ計算機２０にジョブの処理に必要な情報を送信する。バッチ管理モジュール１２がワーカ計算機２０に新規のジョブを投入した場合、ジョブ投入モジュール１１は、ジョブ状態管理テーブル６０に、状態情報６３を「処理中」状態として格納する。
【００９４】
バッチ管理モジュール１２は、受付けたジョブに対するバッチ処理を管理する。以上によって、バッチ管理モジュール１２はワーカ計算機２０にジョブを与える。
【００９５】
バッチ管理モジュール１２は、ワーカ計算機２０に格納された出力ファイル情報２５２をマスター計算機１０に送信する旨の指示をワーカ計算機２０に送信する。
【００９６】
バッチ管理モジュール１２は、チェックポイントファイルの転送をワーカ計算機２０に対して指示する機能を有する。なお、バッチ管理モジュール１２がＶＭイメージデータファイルの転送を指示する機能を有さない場合、ワーカ計算機２０がジョブ投入モジュール１１にアクセスしてチェックポイントファイルを取得する機能を持つこととしてもよい。
【００９７】
マスター計算機１０のバッチ管理モジュール１２がワーカ計算機２０からのチェックポイントファイルを受信する機能を持たない場合、ジョブ投入モジュール１１が既存のファイル共有機能によってチェックポイントファイルを転送することも可能である。既存のファイル共有機能はＵＮＩＸ（登録商標）ではＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）、ｒｓｙｎｃ、ｆｔｐ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ），ｒｃｐ（Ｒｅｍｏｔｅ  Ｃｏｐｙ）などである。
【００９８】
マスター計算機１０のジョブ管理部１５は、バッチ処理モジュール１２に投入したジョブの終了を監視する。ジョブ管理部１５はバッチシステム１に定期的にジョブ状態管理テーブル６０の全てレコード６５のジョブの状態を問い合わせる。ジョブ管理部１５は、チェックポイントの作成を監視する。ジョブ管理部１５は、ＶＭ管理モジュール２２からチェックポイントデータを受信したことを検出した場合は、ジョブ状態管理テーブル６０の状態情報６３を更新する。
【００９９】
ジョブ管理部１５は、ジョブが完了の状態になったら終了する。ジョブ管理部１５はジョブ処理の結果を取得したレコードをジョブ状態管理テーブル６０から削除する。ジョブ投入モジュール１１は出力ファイル情報２５２をジョブ処理の結果として利用者に送信する。
【０１００】
別の構成例として、バッチ管理モジュール１２がＶＭイメージデータのみを転送するバッチシステム１の構成の場合、ジョブ管理部１５は、ワーカ計算機２０からジョブＩＤ及びチェックポイント保存先の他にジョブスクリプトを受け取る。ジョブ管理部１５は、ジョブ処理が完了すると、ジョブスクリプトに記載された出力ファイル情報２５２を特定する。ジョブ管理部１５は、バッチ管理モジュール１２がワーカ計算機２０からチェックポイントファイルから、ジョブ処理の実行が完了した後に出力ファイル情報２５２を取り出す。
【０１０１】
一方、ジョブ管理部１５は、ジョブ状態管理テーブル６０にチェックポイントがあること、状態情報６３が「終了」ではないこと、およびバッチ管理モジュール１２ではジョブがないことを満たす場合に、ジョブは「異常終了」したと判定する。ジョブ管理部１５は、ジョブ状態管理テーブル６０のジョブＩＤ情報６１がバッチ管理モジュール１２のバッチ処理管理テーブル７０に実行中のジョブとして存在することを確認する。ジョブの存在の確認は、ジョブ管理部１５が例えば予め定めた時間間隔によって定期的に行う。
【０１０２】
ジョブ管理部１５は異常終了したジョブを検出すると、ジョブ状態管理テーブル６０の状態情報６３を「異常終了」状態に更新する。なお、ジョブが異常終了し、かつ、チェックポイントファイルがない場合、ジョブ管理部１５はジョブを最初から実行させる。
【０１０３】
一方、チェックポイントファイルがあるとき、ジョブ管理部１５は、ジョブを再投入する。ジョブを再投入した場合、バッチ管理モジュール１２はジョブＩＤを更新する。ジョブ管理部１５はジョブ状態管理テーブル６０のジョブＩＤ情報６１を更新する。
【０１０４】
ジョブ投入モジュール１１は、リスタートジョブに対応するジョブスクリプトを作成する。ジョブ管理部１５は、ジョブ処理の再開のためのジョブであるチェックポイントファイルをバッチ管理モジュール１２に送信する。
【０１０５】
ジョブ投入モジュール１１のジョブ管理部１５は、リスタートジョブのジョブＩＤを監視対象とする。ジョブ管理部１５はジョブ処理の結果を取得すると、結果を取得したジョブの管理を終了する。
【０１０６】
次にワーカ計算機２０が実行する処理について説明する。
【０１０７】
ワーカ計算機２０は、ジョブ処理の実行、チェックポイントファイルの送信、およびジョブ処理結果の通知を行う。ワーカ計算機２０のＶＭ管理モジュール２２は、エージェント１６から取得したジョブスクリプトに従って、上記の処理を実行する。
【０１０８】
ここで、ワーカ計算機２０が実行するジョブスクリプトの動作について説明する。図１２は、本実施例でのワーカ計算機２０で動作するジョブスクリプトのフローチャートである。
【０１０９】
ワーカ計算機２０のＶＭ管理モジュール２２はマスター計算機１０のバッチ管理モジュール１２のエージェント１６から取得した入力ファイル情報２５１、ＶＭイメージデータ２４をディレクトリ２３に格納する（Ｓ３１）。ＶＭ管理モジュール２２はマスター計算機１０のバッチ管理モジュール１２のエージェント１６から取得したＶＭイメージデータ２４から仮想計算機を起動する（Ｓ３２）。
【０１１０】
ＶＭ管理モジュール２２は、ＶＭイメージデータ２４内のゲストＯＳ２６が実行するスタータ機能２８にジョブ処理の開始コマンドを発行する（Ｓ３３）。スタータ機能２８は入力ファイル情報２５１をジョブの入力情報として取得し、ジョブ処理を開始する。スタータ機能２８は、例えば、デーモンとして構築し、ゲストＯＳ２６の起動時に同時に起動させる。スタータ機能２８は、ジョブ２７がコピーされた処理の結果生成されるファイルを監視し、ファイルができるまで何もしない。スタータ機能２８は、ジョブ２７のファイル出力を検出したら、ジョブ処理の実行を開始する。
【０１１１】
なお、入力ファイル情報２５１があれば、スタータ機能２８は仮想計算機が起動されると自動で処理を開始する構成としてもよい。また、マスター計算機１０がＶＭイメージデータの内容について読み書きをするツールによって予め入力ファイル情報を共有フォルダ２９に書き込んだ状態である場合、スタータ機能２８は入力ファイル情報２５１から共有フォルダ２９にコピーする処理は不要である。
【０１１２】
ジョブ処理の開始コマンドを発行されたスタータ機能２８はジョブ処理の終了を監視する（Ｓ３４）。スタータ機能２８は、ゲストＯＳ２６上のジョブ処理の実行プロセスを監視する。ワーカ計算機２０のＶＭ管理モジュール２２は、出力ファイル情報２５２のファイルの存在を検知することによりジョブ処理の終了監視を行う。終了監視は、例えば、１秒に１回行う。ＶＭ管理モジュール２２は、例えば、チェックポイントの転送を１時間に１回行う。終了監視およびチェックポイントの転送の時間間隔は、バッチシステム１の環境に合わせて適当に変更する。
【０１１３】
ＶＭ管理モジュール２２はチェックポイントファイルを送信するか否かを判別する条件を満たすか否かを判定する（Ｓ３５）。条件は、例えば、ワーカ計算機２０で予め定めた時間を経過した場合に条件を満たすと設定する。条件を満たすとき（Ｓ３５：Ｙｅｓ）、ＶＭ管理モジュール２２はチェックポイントファイルの作成、送信処理を実行する（Ｓ３６）。
【０１１４】
ここで、Ｓ３６のチェックポイントファイルの作成、送信処理について説明する。図１３は本実施例でのチェックポイントファイルの作成、送信処理のフローチャートである。
【０１１５】
ＶＭ管理モジュール２２は仮想計算機を中断（サスペンド）する。仮想計算機の動作を停止させ、現時点での仮想計算機の状態の再現を可能とする情報を取得するためである（Ｓ４１）。ＶＭ管理モジュール２２はＶＭイメージデータ２４をチェックポイントファイルとしてマスター計算機１０に送信する（Ｓ４２）。
【０１１６】
マスター計算機１０のエージェント１６はチェックポイントファイルを取得する。エージェント１６は、ジョブ投入モジュールのジョブ管理部１５にチェックポイントファイルが到達したことを通知する。ジョブ管理部１５はチェックポイントファイルをＶＭイメージテーブル４０に格納する。ジョブ管理部１５はジョブ状態管理テーブル６０の状態情報６３を「処理中」に変更する。
【０１１７】
ＶＭ管理モジュール２２は仮想計算機を再起動する（Ｓ４３）。仮想計算機は再起動するとサスペンドした時点のジョブ処理の続きを実行する。図１２のフローチャートの説明に戻る。
【０１１８】
スタータ機能２８はジョブ処理が終了したか否かを判定する（Ｓ３７）。スタータ機能２８は、実行プロセスの有無によってジョブ処理の終了を判別する。ジョブ処理が終了していない場合（Ｓ３７：Ｎｏ）、スタータ機能２８は引き続きジョブ処理の終了を監視する。一方、ジョブ処理が終了した場合（Ｓ３７：Ｙｅｓ）、スタータ機能２８は処理結果を共有フォルダ２９に格納する（Ｓ３８）。スタータ機能２８は、実行プロセスがなくなったら、ジョブ処理の結果のファイルを出力ファイル情報２５２に格納する。
【０１１９】
ＶＭ管理モジュール２２は共有フォルダ２９にジョブ処理の結果が格納されたことを検出すると、ジョブ処理の結果を共有フォルダ２９から読込み、出力ファイル情報２５２として格納する（Ｓ３９）。従来のバッチシステム１では、ワーカ計算機２０のホストＯＳ２１がジョブの終了を検知することができた。本実施例では、仮想計算機のゲストＯＳ２６がジョブを処理する。本実施例のＶＭ管理モジュール２２では、ホストＯＳ２１はゲストＯＳ２６のジョブ処理の完了を直接には検出することができない。そこで、スタータ機能２８はジョブ処理の結果を共有フォルダ２９に格納する。ホストＯＳ２１は共有フォルダ２９に格納されたジョブ処理の結果を検出することができる。ＶＭ管理モジュール２２は共有フォルダ２９に格納されたジョブ処理の結果をマスター計算機１０に送信する。
【０１２０】
また、ＶＭ管理モジュールはマスター計算機１０のエージェント１６にジョブ処理の結果を送信する。他の方法として、マスター計算機１０がチェックポイントファイル内のデータに関して読込または書込が可能な場合、ワーカ計算機１０はチェックポイントファイルそのものをマスター計算機１０に送信することも可能である。この場合、データ転送量は増加するが、ジョブスクリプトの処理は単純化される。
【０１２１】
マスター計算機１０のエージェント１６はジョブ処理の結果を取得し、ジョブ記述１７を入力した利用者に出力する。エージェント１６は、ジョブ投入モジュールのジョブ管理部１５にジョブ処理が完了したことを通知する。ジョブ管理部１５はジョブ状態管理テーブル６０の状態情報６３を「終了」に変更する。
【０１２２】
一方、バッチ処理では、ジョブ処理が異常終了する場合がある。例えば、ワーカ計算機２０が電源断した場合、ワーカ計算機２０のホストＯＳ２１にエラーが発生した場合などである。
【０１２３】
ジョブ投入モジュール１１は、以下の手順でワーカ計算機２０に投入したジョブ処理が異常終了したと判定する。ジョブ投入モジュール１１は、所定の時間毎にバッチ管理モジュール１２のバッチ処理管理テーブル７０のジョブ処理結果を確認する。ジョブ投入モジュール１１は、バッチ処理管理テーブル７０のジョブ処理結果が終了であり、かつ、バッチ処理管理テーブル７０のジョブ処理結果が終了となってから所定の時間を経過してもワーカ計算機２０からジョブ処理の結果情報を取得していない、ジョブ処理が異常終了したと判定する。
【０１２４】
ジョブ投入モジュール１１がワーカ計算機２０でのジョブ処理が異常終了したことを検出した場合、ジョブ投入モジュール１１は、バッチ管理モジュール１２へのジョブの再投入処理を実行する。
【０１２５】
ジョブ状態管理テーブル６０内のジョブ処置の対象のレコード６５を元に、作成済みのジョブスクリプトファイル６６を読み出す。ジョブ投入モジュール１１はジョブ処理を再開させるためのジョブスクリプトを作成する。
【０１２６】
ジョブ投入モジュール１１は、ＶＭイメージテーブル４０からＶＭイメージデータを読み出す。読み出す対象のＶＭイメージデータは、異常終了したジョブに対応する最新のチェックポイントファイルである。チェックポイントを保存してあるため、バッチシステム１内の他のワーカ計算機２０でジョブ処理の続きを実行することができる。
【０１２７】
ジョブ投入モジュール１１はジョブ処理を再開させるためのジョブスクリプトをバッチ管理モジュール１２に投入する。
【０１２８】
ここでジョブ処理を再開させるためのジョブスクリプトについて説明する。
【０１２９】
図１４は、本実施例でのワーカ計算機２０でジョブ処理の再開時に動作するジョブスクリプトのフローチャートである。
【０１３０】
ワーカ計算機２０のＶＭ管理モジュール２２はマスター計算機１０のバッチ管理モジュール１２のエージェント１６から取得したＶＭイメージデータ２４をディレクトリ２３に格納する（Ｓ５１）。Ｓ５１で取得するＶＭイメージデータ２４はＶＭイメージテーブル４０に格納されたチェックポイントファイルである。ジョブ投入モジュール１１は、ジョブ状態管理テーブル６０のチェックポイント名情報６４に対応するＶＭイメージテーブル４０に格納されたチェックポイントファイルを読み出す。なお、ジョブ処理の再開時では、ジョブ処理の途中から実行を開始するため、入力ファイル情報２５１は不要である。
【０１３１】
ＶＭ管理モジュール２２はエージェント１６から取得したチェックポイントファイルから仮想計算機を起動する（Ｓ５２）。起動された仮想計算機のスタータ機能２８はジョブ処理の実行を開始している状態である。スタータ機能２８は既に実行中であるため、ＶＭ管理モジュール２２がスタータ機能２８にジョブ処理の開始コマンドを発行する処理は不要である。
【０１３２】
スタータ機能２８はジョブ処理の終了を監視する（Ｓ５３）。ＶＭ管理モジュール２２は条件を満たすか否かを判定する（Ｓ５４）。条件を満たすとき（Ｓ５４：Ｙｅｓ）、ＶＭ管理モジュール２２はチェックポイントファイルの作成、送信処理を実行する（Ｓ５５）。なお、Ｓ５５の送信処理は図１３の処理と同様である。
【０１３３】
スタータ機能２８はジョブ処理が終了したか否かを判定する（Ｓ５６）。ジョブ処理が終了していない場合（Ｓ５６：Ｎｏ）、スタータ機能２８は引き続きジョブ処理の終了を監視する。一方、ジョブ処理が終了した場合（Ｓ５６：Ｙｅｓ）、スタータ機能２８は処理結果を共有フォルダ２９に格納する（Ｓ５７）。
【０１３４】
ＶＭ管理モジュール２２は共有フォルダ２９にジョブ処理の結果が格納されたことを検出すると、ジョブ処理の結果を共有フォルダ２９から読込み、出力ファイル情報２５２として格納する（Ｓ５８）。また、ＶＭ管理モジュールはマスター計算機１０のエージェント１６にジョブ処理の結果を送信することも可能である。
【０１３５】
以上により、仮想計算機の中断・再起動機能を活用し、仮想計算機の中で実行しているジョブの終了を検知することを可能とし、検知したジョブ終了をバッチシステム１に通知することができる。
【０１３６】
本実施例は、ワーカ計算機２０のホストＯＳ２１が仮想計算機で実行しているジョブの終了を検知し得るジョブスクリプトを作成するため、ジョブの終了をバッチ管理モジュール１２に通知することが可能となる。本実施例は、仮想計算機によってジョブを実行するため、ワーカ計算機２０のホストＯＳ２１の種類に制限されない。
【０１３７】
また、ファイル情報の送受信はワーカ計算機２０のホストＯＳ２１上のＶＭ管理モジュール２２とマスター計算機１０のバッチ管理モジュール１２との間で行う。
【０１３８】
したがって、バッチシステム１において、また、任意のＯＳや任意のプログラムに関してチェックポイントおよびリスタートを行うことが可能になる。
【０１３９】
また、ファイル転送はバッチ管理モジュール１２が有する手段を利用するため、グリッド・コンピューティングの環境での特殊なファイル転送手段を利用する必要がある場合でも、仮想計算機の機能およびゲストＯＳ２６の機能では行えないようなファイル転送（例えばファイアーウォールを越える）が可能となる。
【０１４０】
別の構成例として、ＶＭイメージデータの雛型データを予めワーカ計算機２０に格納しておくことも可能である。マスター計算機１０はワーカ計算機２０に、ジョブスクリプトおよび入力ファイル情報を送信する。ジョブスクリプトは、ワーカ計算機２０が有するＶＭイメージデータから、ジョブ処理を実行する。ワーカ計算機２０はチェックポイント毎のチェックポイントファイルはマスター計算機１０に送信する。この構成により、マスター計算機１０は最初のＶＭイメージデータの送信をする必要が無くなる。その結果、通信に要するデータ量が軽減する効果がある。
【０１４１】
別の構成例として、マスター計算機１０のバッチ管理モジュール１２がワーカ計算機２０からのファイル転送の機能を持たない場合がある。この場合マスター計算機１０のジョブ投入モジュール１１がワーカ計算機２０のチェックポイントファイルの取得することも可能である。また、マスター計算機１０のバッチ管理モジュール１２がワーカ計算機２０からのファイル転送の機能を持たない場合、ジョブ投入モジュール１１はワーカ計算機２０にジョブを開始させる旨の情報を通知する。
【０１４２】
また、マスター計算機１０のバッチ管理モジュール１２がワーカ計算機２０からのファイル転送の機能を持たない場合、ジョブ投入モジュール１１のジョブ管理部１５がワーカ計算機２０からチェックポイントファイルを取得し、ジョブ管理部１５がチェックポイントファイルをバッチ管理モジュール１２に転送するよう構成する。
【０１４３】
別の構成例として、バッチ管理モジュール１２のファイル転送機能を利用する際に、ＶＭイメージデータのみをワーカ計算機２０に転送することも可能である。一つのジョブに対応するファイルが一つとなるため、バッチ管理モジュール１２での管理が容易となる。
【０１４４】
ＶＭイメージだけを転送する場合、ジョブ投入モジュール１１は、以下の処理を行う。ジョブ投入モジュール１１はワーカ計算機２０でジョブ処理の実行の前に転送するファイルとしてＶＭイメージデータ２４を指定する。ジョブ投入モジュール１１はジョブ処理の実行の結果としてワーカ計算機２０から受け取るファイルとして、ＶＭイメージデータ２４を指定する。なお、この場合のジョブスクリプトは、実行開始前に転送すべき入力ファイル情報２５１をコピーするステップ、およびジョブ処理の完了後に転送すべき出力ファイル情報２５２をコピーするステップを省略する。
【図面の簡単な説明】
【０１４５】
【図１】本実施例でのバッチシステム１のシステム構成図である。
【図２】本実施例でのマスター計算機１０の機能ブロック図である。
【図３】本実施例でのジョブ状態管理テーブル６０の構成図である。
【図４】本実施例でのマスター計算機１０のハードウェア構成である。
【図５】本実施例でのワーカ計算機２０の機能ブロック図である。
【図６】本実施例でのホストオンリーネットワーク３１の概念図である。
【図７】本実施例でのワーカ計算機２０のハードウェア構成である。
【図８】本実施例でのジョブ投入モジュール１１が実行する処理のフローチャートである。
【図９】本実施例でのジョブ記述１７の一例である。
【図１０】本実施例でのジョブ投入モジュール１１がＶＭイメージデータを作成する処理のフローチャートである。
【図１１】本実施例でのジョブスクリプト作成部の処理のフローチャートである。
【図１２】本実施例でのワーカ計算機２０で動作するジョブスクリプトのフローチャートである。
【図１３】本実施例でのチェックポイントファイルの作成、送信処理のフローチャートである。
【図１４】本実施例でのワーカ計算機２０でジョブ処理の再開時に動作するジョブスクリプトのフローチャートである。
【符号の説明】
【０１４６】
１  バッチシステム
１０  マスター計算機
１１  ジョブ投入モジュール
１２  バッチ管理モジュール
２０  ワーカ計算機
２１  ホストＯＳ
２２  ＶＭ管理モジュール
２４  ＶＭイメージデータ
２５１  入力ファイル情報
２５２  出力ファイル情報
２６  ゲストＯＳ
３０  ネットワーク
３１  ホストオンリーネットワーク
４０  ＶＭイメージテーブル
５０  ワーカ計算機管理テーブル
６０  ジョブ状態管理テーブル
７０  バッチ処理管理テーブル
１０１  制御部
１０２  メモリ
１０３  入力部
１０４  記憶部
１０５  出力部
１０６  ネットワークインターフェース部
１０７  バス
１０８  ジョブ管理プログラム
１１１  制御部
１１２  メモリ
１１３  入力部
１１４  記憶部
１１５  出力部
１１６  ネットワークインターフェース部
１１７  バス
１１８  ＶＭ管理プログラム
【図１】
2008293358.tif 000003
【図２】
2008293358.tif 000004
【図３】
2008293358.tif 000005
【図４】
2008293358.tif 000006
【図５】
2008293358.tif 000007
【図６】
2008293358.tif 000008
【図７】
2008293358.tif 000009
【図８】
2008293358.tif 000010
【図９】
2008293358.tif 000011
【図１０】
2008293358.tif 000012
【図１１】
2008293358.tif 000013
【図１２】
2008293358.tif 000014
【図１３】
2008293358.tif 000015
【図１４】
2008293358.tif 000016