図1は、本発明の実施例1における計算機システムの構成例を示す説明図である。
本実施例の計算機システムは、ジョブ管理サーバ101、複数のサーバ102、及びファイルサーバ103から構成される。
ジョブ管理サーバ101、サーバ102、及びファイルサーバ103は、互いに、ネットワーク104を介して接続される。ネットワーク104は、WAN、LAN、及びIPネットワークなどが考えられる。なお、ジョブ管理サーバ101、サーバ102、及びファイルサーバ103は直接接続されてもよい。
ファイルサーバ103は、プロセッサ125、メモリ126、及びインタフェース182−3、183を有する。プロセッサ125、メモリ126、及びインタフェース182−3、183は、内部バス等を介して互いに接続される。なお、ファイルサーバ103は、キーボード、マウス、及びディスプレイ等の入出力装置を備えていてもよい。
プロセッサ125は、メモリ126に格納されるプログラムを実行する。プロセッサ125が、メモリ126に格納されるプログラムを実行することによってファイルサーバ103が備える機能を実現する。
メモリ126は、プロセッサ125によって実行されるプログラム及び当該プログラムの実行に必要な情報を格納する。メモリ126に格納されるプログラムについては後述する。
インタフェース182−3、183は、外部装置又はネットワーク104と接続する。実施例1では、インタフェース183を介して記憶装置113と接続され、インタフェース182−3を介してネットワーク104と接続される。
記憶装置113には、複数のファイル117のデータが格納される。
なお、記憶装置113は、ファイル117を永続的に保持できるものであればどのようなものでもよい。例えば、HDD(Hard Disk Drive)及びSSD(Solid State Drive)等の記憶媒体を複数備えるストレージシステム、フラッシュメモリを記憶媒体として用いた半導体ディスク装置、光ディスク装置等が考えられる。
なお、メモリ126に格納されるプログラムは、記憶装置113に格納されてもよい。この場合、プロセッサ125が、記憶装置113からメモリ126上にプログラムを読み出し、読み出されたプログラムを実行する。
記憶装置113がストレージシステムである場合、当該ストレージシステムは、複数の記憶媒体を用いてRAIDを構成してもよい。
メモリ126は、ファイルシステム管理部135を実現するプログラムを格納する。
ファイルシステム管理部135は、ファイルシステムを管理する。また、ファイルシステム管理部135は、ファイル名等のファイル117の識別情報に基づいて、ファイルシステム上に格納されるファイル117に対するファイルI/Oの処理を実行する。
実施例1では、ファイルシステム管理部135は、共有ファイルシステムを管理する。この共有ファイルシステムは、複数のファイルサーバにそれぞれ接続された記憶装置にファイルを分散して格納する分散ファイルシステムでもよい。分散ファイルシステムは、複数の記憶媒体の記憶領域が統合された記憶領域上に構築されるファイルシステムである。
分散ファイルシステムには、ファイル117のデータが、分散ファイルシステムを構成する複数の記憶媒体に分散して配置される。例えば、分散ファイルシステムには、ファイル117のデータがシステムによって決められる方法で分割して格納される。
以下では、分散共有ストレージを用いた場合を例に説明する。なお、本発明は、ファイル117の格納方法及び管理方法に限定されない。
なお、共有ファイルシステムでは、複数のサーバ102が同一のファイル117にアクセス可能であるため、データの一貫性を確保するためトークンが用いられる。本実施例では、ファイル117毎に、トークンの対象となるデータ、属性、サイズ、及び名前等の種類が複数存在する。また、トークンは、Read、Write等の状態を保持する。
例えば、サーバ102がファイルAのデータを読み出す場合、ファイルAのデータReadトークンを保持する必要がある。
ファイルシステム管理部135は、サーバ側トークン管理部171、トークン付与判定部172、トークン管理情報173、付与定義情報174、及びファイル管理情報175を有する。
サーバ側トークン管理部171は、各サーバ102が保持するトークンを管理し、また、各サーバ102へのトークンの付与を制御する。サーバ側トークン管理部171が実行する処理の詳細は、図15を用いて後述する。
トークン付与判定部172は、サーバ102から要求されたトークンを付与するか否かを判定する。トークン付与判定部172が実行する処理の詳細は、図16を用いて後述する。
トークン管理情報173は、各サーバ102が保持するトークンに関する情報を格納する。トークン管理情報173の詳細については、図3を用いて後述する。
付与定義情報174は、サーバ102から要求されたトークンを付与するか否かを判定するための条件を格納する。付与定義情報174の詳細については、図4を用いて後述する。
ファイル管理情報175は、ファイル117を管理するための情報を格納する。本実施例では、一つのファイル117に対して一つのファイル管理情報175が存在する。ファイル管理情報175の詳細については、図2を用いて後述する。
ジョブ管理サーバ101は、プロセッサ121、メモリ122及びインタフェース181−1、182−1を有する。プロセッサ121、メモリ122及びインタフェース181−1、182−1は、内部バス等を介して互いに接続される。なお、ジョブ管理サーバ101は、キーボード、マウス、及びディスプレイ等の入出力装置を備えていてもよい。
プロセッサ121は、メモリ122に格納されるプログラムを実行する。プロセッサ121が、メモリ122に格納されるプログラムを実行することによってジョブ管理サーバ101が備える機能を実現する。
メモリ122は、プロセッサ121によって実行されるプログラム及び当該プログラムの実行に必要な情報を格納する。メモリ122に格納されるプログラムについては後述する。
インタフェース181−1、182−1は、外部装置又はネットワーク104と接続する。本実施例では、インタフェース181−1を介して記憶装置111と接続され、インタフェース182−1を介してネットワーク104と接続される。
記憶装置111は、データを永続的に保持できるものであればどのようなものでもよい。例えば、HDD等の記憶媒体を複数備えるストレージシステム、フラッシュメモリを記憶媒体として用いた半導体ディスク装置、光ディスク装置等が考えられる。
なお、メモリ122に格納されるプログラムは、記憶装置111に格納されてもよい。この場合、プロセッサ121が、記憶装置111からメモリ122上にプログラムを読み出し、読み出されたプログラムを実行する。
メモリ122は、ジョブスケジューラ131を実現するプログラムを格納する。
ジョブスケジューラ131は、ジョブネットを構成するジョブの実行スケジュールを管理する。
ジョブネットは、実行順序を含む、一つ以上のジョブから構成される。本実施例では、同一のファイルを用いるジョブが少なくとも二つ以上存在するジョブネットを想定する。
ジョブスケジューラ131は、イベント通知準備部141を有し、また、ジョブネット管理情報(図示省略)を保持する。
イベント通知準備部141は、ジョブの実行契機となるイベントを検出するための各種情報を設定する。本実施例では、所定のファイルI/Oがイベントとして検出される。イベント通知準備部141が実行する処理の詳細は、図7、図8及び図9を用いて後述する。
ジョブネット管理情報(図示省略)は、ジョブネットを管理するための情報である。ジョブネット管理情報は、公知のものであるため詳細な説明は省略するが、少なくとも、ジョブの識別子及びジョブの実行順序が対応づけられた情報が含まれる。本実施例では、ジョブの実行順を表す番号をジョブの識別子として用いる。
なお、本発明はジョブネット管理情報のデータ形式に限定されず、ジョブネットの構成を管理できる情報であればどのような情報であってもよい。
サーバ102は、プロセッサ123、メモリ124及びインタフェース181−2、182−2を有する。プロセッサ123、メモリ124及びインタフェース181−2、182−2は、内部バス等を介して互いに接続される。なお、サーバ102は、キーボード、マウス、及びディスプレイ等の入出力装置を備えていてもよい。
プロセッサ123は、メモリ124に格納されるプログラムを実行する。プロセッサ123が、メモリ124に格納されるプログラムを実行することによってサーバ102が備える機能を実現する。
メモリ124は、プロセッサ123によって実行されるプログラム及び当該プログラムの実行に必要な情報を格納する。メモリ124に格納されるプログラムについては後述する。
インタフェース181−2、182−2は、外部装置又はネットワーク104と接続する。本実施例では、インタフェース181−2を介して記憶装置112と接続され、インタフェース182−2を介してネットワーク104と接続される。
記憶装置111は、データを永続的に保持できるものであればどのようなものでもよい。例えば、HDD等の記憶媒体を複数備えるストレージシステム、フラッシュメモリを記憶媒体として用いた半導体ディスク装置、光ディスク装置等が考えられる。
なお、メモリ124に格納されるプログラムは、記憶装置112に格納されてもよい。この場合、プロセッサ123が、記憶装置112からメモリ124上にプログラムを読み出し、読み出されたプログラムを実行する。
メモリ124は、ジョブ実行管理部132及びファイルシステムクライアント133を実現するプログラム、並びに、ジョブを実行するUAP(アプリケーションプログラム)134を格納する。また、メモリ124は、ジョブを実行するワークエリアを含む。
UAP134は、ジョブを実行する。UAP134は、ジョブの実行時に、ファイル117に対するオペレーションを行うために、ファイルシステムクライアント133に対して、オペレーション要求を出力する。
なお、オペレーション要求には、処理対象、及び、オペレーション種別等のオペレーションの処理内容を示す情報が含まれる。処理対対象は、ファイル117の識別子、ファイル117のデータ範囲等のオペレーションの処理対象を示す情報である。オペレーション種別は、Open、Read、Write、及びClose等の処理の種別を示す情報である。
ジョブ実行管理部132は、ジョブ管理サーバ101によって割り当てられたジョブを管理する。ジョブ実行管理部132は、ジョブ実行制御部151を有する。ジョブ実行制御部151は、ジョブの実行タイミングを制御する。ジョブ実行制御部151が実行する処理の詳細は、図11を用いて後述する。
ファイルシステムクライアント133は、一般的なファイルI/Fを用いて、ファイルシステムに格納されるファイル117に対するオペレーションを行う。具体的には、UAP134から出力されるオペレーション要求に基づいて、所定のファイルI/Oを出力することによってファイル117に対するオペレーションを行う。
ファイルシステムクライアント133は、クライアント側トークン管理部161、トークン監視部162、イベント通知部163、取得トークン情報164、及び監視対象定義情報165を有する。
クライアント側トークン管理部161は、ファイルシステム管理部135に、オペレーションの実行に必要なトークンの付与を要求し、また、付与されたトークンを返却する。クライアント側トークン管理部161が実行する処理の詳細は、図12を用いて後述する。
トークン監視部162は、サーバ102が保持するトークンの状態を監視する。トークン監視部162が実行する処理の詳細は、図13を用いて後述する。
イベント通知部163は、ジョブ実行制御部151に、ジョブ実行開始の契機となるイベントの発生を通知する。イベント通知部163が実行する処理の詳細は、図14を用いて後述する。
取得トークン情報164は、サーバ102が保持するトークンに関する情報を格納する。取得トークン情報164の詳細は、図5を用いて後述する。
監視対象定義情報165は、監視対象となるオペレーション要求、すなわち、ファイルI/Oに関する情報を格納する。監視対象定義情報165の詳細は、図6を用いて後述する。
図2は、本発明の実施例1におけるファイル管理情報175の一例を示す説明図である。
ファイル管理情報175は、ファイルID211、パーミション212、オーナー213、サイズ214、タイムスタンプ215、及びトークン管理情報ポインタ216を含む。なお、ファイル管理情報175は、iノード等のその他の情報を含んでいてもよい。
ファイルID211は、ファイル117を一意に識別するための識別子を格納する。パーミション212は、ファイル117へのアクセス権を有するクライアント(サーバ102又はユーザ等)の情報を格納する。なお、アクセス権が設定されていないクライアントには、トークンは付与されない。
オーナー213は、ファイル117の所有者の情報を格納する。サイズ214は、ファイル117の大きさを表す情報を格納する。タイムスタンプ215は、ファイル117がアクセスされた時間を格納する。
トークン管理情報ポインタ216は、トークン管理情報173へのポインタを格納する。
なお、サーバ102は、読出処理又は書込処理等を実行する場合、ファイル管理情報175とともにファイル117を取得する。この場合、ファイル管理情報175のトークン管理情報ポインタ216には、サーバ102によって、取得トークン情報164へのポインタが格納される。
図3は、本発明の実施例1におけるトークン管理情報173の一例を示す説明図である。
トークン管理情報173は、ファイルID301、トークン種別302、トークン状態303、及び付与状態304を含む。
ファイルID301は、ファイルI/O(トークンの付与要求)の対象となるファイル117の識別子を格納する。ファイルID301は、ファイルID201と同一のものである。
トークン種別302は、データ、属性、サイズ、及び名前等のトークンの種類を示す情報を格納する。
図3には一例として、オープン311、メタデータ312、及びデータ313の三つのトークンの種類を示している。
オープン311は、排他的にファイルをオープンするために必要なトークンに関するエントリである。メタデータ312は、ファイル117のメタデータ、すなわち、ファイル管理情報175を操作するために必要なトークンに関するエントリである。データ313は、ファイル117のデータ本体を操作するために必要なトークンに関するエントリである。なお、本発明は前述したトークンの種類に限定されない。
トークン状態303は、Read、Write等のトークンの状態を格納する。例えば、メタデータ312のエントリのトークン状態303が「Read」のエントリは、メタデータ312を読み出すために必要なReadトークンであることを示す。
付与状態304は、各サーバ102に付与されているトークンを特定するための情報を格納する。本実施例では、エントリに対応するトークンが付与されているサーバ102の欄には「1」が格納され、エントリに対応するトークンが付与されていないサーバ102の欄には「0」が格納される。
図4は、本発明の実施例1における付与定義情報174の一例を示す説明図である。
付与定義情報174は、監視対象410及び条件420を含む。
監視対象410は、監視対象を識別するための情報を格納する。具体的には、トークンの付与対象であるファイル117の識別子を格納するファイルID411を含む。
条件420は、トークンを付与するための条件を格納する。具体的には、条件420は、条件式430及び一つ以上の要素440、450を含む。
条件式430は、トークン付与の判定処理の実行時に用いられる条件式を格納する。例えば、AND条件などが考えられる。
要素440、450は、条件式430に代入する情報を格納する。要素440、450には、サーバID441、451及びトークン条件442、452が格納される。
サーバID441、451は、対象となるサーバ102の識別子を格納する。
トークン条件442、452は、サーバ102におけるトークンの条件を格納する。トークン条件442、452には、トークンの種類、トークンの状態及び処理状態を示す情報が格納される。処理状態は、サーバ102が保持するトークンの保持状態を表し、トークンが付与済み、トークンが回収済み等を示す情報が対応する。
例えば、第1のサーバ及びジョブ2を実行する第2のサーバから、ファイルAのデータReadトークンの回収を条件として設定する場合、以下のような付与定義情報174となる。
ファイルID411には、ファイルAが格納される。条件式430には、「要素1(440)、AND、要素2(450)」等の条件式が格納される。また、サーバID441には「第1のサーバ」が格納され、トークン条件442には「データReadトークンの回収完了」が格納される。同様に、サーバID451には「第2のサーバ」が格納され、トークン条件452には「データReadトークンの回収完了」が格納される。
なお、条件420に格納される情報は一例であって、前述した条件式に限定されない。
図5は、本発明の実施例1における取得トークン情報164の一例を示す説明図である。
取得トークン情報164は、ファイルID501、トークン種別502、及びトークン状態503を含む。
ファイルID501、トークン種別502、及びトークン状態503は、それぞれ、ファイルID301、トークン種別302、及びトークン状態303と同一のものであるため説明を省略する。
取得トークン情報164は、サーバ102自身の情報のみが格納される点がトークン管理情報173と異なる。
図6は、本発明の実施例1における監視対象定義情報165の一例を示す説明図である。
監視対象定義情報165は、イベント通知先610、監視対象620及び監視動作630を含む。
イベント通知先610は、イベントの発生を通知するプロセスの情報としてプロセスID611を格納する。なお、イベントの発生を通知するプロセスは、ジョブを実行するためのプロセスである。これによって、イベントの通知を受けたプロセスがジョブを開始することができる。
監視対象620は、イベントとして検出されるファイルI/Oの対象を識別するための情報を格納する。具体的には、ファイル117の識別子を格納するファイルID621を含む。
監視動作630は、オペレーションの処理内容、すなわち、監視対象のファイルI/Oに関する情報を格納する。本実施例では、トークン付与要求のためのファイルI/Oがイベントとして検出されるため、監視動作630には、トークンの種類及びトークンの状態が格納される。
図6に示す例では、ファイルID621に対応するファイル117のデータReadトークン又はデータWriteトークンが監視動作630として設定される。なお、本発明は、前述したファイルI/Oに限定されない。
次に、実施例1の具体的な処理について説明する。
図7は、本発明の実施例1におけるイベント通知準備部141が実行する初期処理を説明するフローチャートである。
イベント通知準備部141は、ジョブネット管理情報を参照して、ジョブスケジューラ131にジョブネットを登録する(ステップS701)。なお、ジョブネット管理情報は、ジョブ管理サーバ101が有する入出力装置から入力されてもよいし、記憶装置111に格納されてもよい。
次に、イベント通知準備部141は、ファイルサーバ103に対して、フラグファイルの生成指示を送信する(ステップS702)。具体的には、以下のような処理が実行される。
イベント通知準備部141は、ジョブネット管理情報を解析して、ジョブネットを構成する各ジョブの実行時に必要なファイルを特定する。
さらに、イベント通知準備部141は、特定されたファイルを用いるジョブの総数を算出する。
イベント通知準備部141は、ファイルサーバ103に、特定されたファイルに対するフラグファイルの生成指示を送信する。
具体的には、一つの特定されたファイルに対して、当該ファイルを用いるジョブの総数から1を減算した数だけフラグファイルを生成するように指示される。
なお、当該生成指示には、生成するフラグファイルの識別情報が含まれる。実施例1では、フラグファイルの識別情報として識別番号を用いるものとする。
ファイルサーバ103は、受信した生成指示に基づいて、フラグファイルを生成する。フラグファイルは、イベント検出のために用いられるファイルである。フラグファイルは、少なくとも、メタデータ等のファイルの識別情報を保持すればよく、実体的なデータは必要ない。
なお、ファイルサーバ103がフラグファイルの識別情報を決定してもよい。この場合、生成指示にはフラグファイルの識別情報は含まれない。
イベント通知準備部141は、メモリ122に、ジョブとフラグファイルとの対応関係を示す情報を一時的に保持する。
以上がステップS702の処理である。
次に、イベント通知準備部141は、ジョブスケジューラ131に付与定義情報174を登録する(ステップS703)。具体的には、以下のような処理が実行される。
イベント通知準備部141は、付与定義情報174を登録するためのテンプレートを取得する。ここで、付与定義情報174を登録するためのテンプレートは、ファイルID411及びサーバID441が空欄であり、条件式430及びトークン条件442、452には予め所定の情報が設定されている。以下では、当該テンプレートを付与定義用テンプレートと記載する。
実施例1では、付与定義用テンプレートは、記憶装置111に格納されているものとする。なお、付与定義用テンプレートは外部から入力されてもよい。
イベント通知準備部141は、付与定義用テンプレートのファイルID411にフラグファイルの識別子を設定する。これによって、フラグファイルの数だけ付与定義情報174が生成される。ただし、この時点では、ジョブの割り当て前であるためサーバID441、451は空欄のままである。
イベント通知準備部141は、ジョブスケジューラ131に、フラグファイルの数だけ付与定義情報174を登録する。
以上がステップS703の処理である。
次に、イベント通知準備部141は、ジョブスケジューラ131に監視対象定義情報165を登録する(ステップS704)。具体的には、以下のような処理が実行される。
イベント通知準備部141は、監視対象定義情報165を登録するためのテンプレートを取得する。ここで、監視対象定義情報165を登録するためのテンプレートは、プロセスID611及びファイルID621が空欄であり、監視動作630には予め所定の情報が設定されている。以下では、当該テンプレートを監視対象定義用テンプレートと記載する。
実施例1では、監視対象定義用テンプレートは、記憶装置111に格納されているものとする。なお、監視対象定義用テンプレートは、外部から入力されてもよい。
イベント通知準備部141は、監視対象定義用テンプレートのファイルID621にフラグファイルの識別子を設定する。これによって、フラグファイルの数だけ監視対象定義情報165が生成される。ただし、この時点では、ジョブの割り当て前であるためプロセスID611は空欄のままである。
イベント通知準備部141は、ジョブスケジューラ131に、フラグファイルの数だけ監視対象定義情報165を登録する。
なお、付与定義用テンプレート及び監視対象定義用テンプレートは、複数の種類が存在してもよい。この場合、ジョブ管理サーバ101は、ユーザインタフェースを介して、管理者に使用可能なテンプレートを表示し、管理者が各フラグファイルに適用するテンプレートを選択する方法が考えられる。
なお、前述したテンプレートを用いずに、外部から付与定義情報174及び監視対象定義情報165を入力してもよい。例えば、管理者がジョブ管理サーバ101のユーザインタフェースを用いて入力する方法が考えられる。
図8は、本発明の実施例1におけるイベント通知準備部141が実行するジョブ割当処理を説明するフローチャートである。
イベント通知準備部141は、管理者からジョブの割当指示を受け付けた場合、ジョブの実行指示を受け付けた場合、又は、タイマを経過した場合等にジョブ割当処理を開始する。
イベント通知準備部141は、登録されたジョブネットを構成するジョブを割り当てるサーバ102を決定する(ステップS801)。
ジョブを割り当てるサーバ102の決定方法は、公知の技術を用いればよいため説明を省略するが、例えば、サーバ102の負荷又は性能等に基づいて決定する方法が考えられる。
イベント通知準備部141は、メモリ122に、ジョブの割当結果を一時的に格納する。
イベント通知準備部141は、フラグファイルの配布先決定処理を実行する(ステップS802)。フラグファイルの配布とは、例えば、サーバ102におけるフラグファイルの読み出しによる特定のトークンを取得することを示す。ここで、図9を用いてフラグファイルの配布先決定処理について説明する。
図9は、本発明の実施例1におけるイベント通知準備部141が実行するフラグファイルの配布先決定処理を説明するフローチャートである。
イベント通知準備部141は、変数kを1に初期化する(ステップS901)。ここで、変数kは1から(n−1)までの整数であり、ジョブネットを構成するジョブの識別子を表す。実施例1では、ジョブの識別子は、ジョブの実行順を表す番号に一致する。
イベント通知準備部141は、ジョブネット管理情報を参照して、ジョブkの実行時に用いられるファイル117を特定する(ステップS902)。例えば、ファイルA及びファイルBを用いた処理を実行するジョブ1の場合、ファイルA及びファイルBが特定される。
イベント通知準備部141は、特定されたファイル117の中から、処理対象のファイル117を選択する(ステップS903)。以下、処理対象のファイル117を対象ファイル117とも記載する。
なお、ステップS902において特定されたファイル117が一つである場合、当該処理を省略できる。
イベント通知準備部141は、対象ファイル117に対応するフラグファイルの中から、配布用フラグファイルを選択する(ステップS904)。
実施例1では、イベント通知準備部141は、対象ファイル117に対応するフラグファイルのうち、識別番号が小さいフラグファイルを配布用フラグファイルとして選択する。例えば、ファイルAのフラグファイルとしてフラグファイルA1及びフラグファイルA2が存在する場合、フラグファイルA1、フラグファイルA2の順に選択される。
なお、配布用フラグファイルとして選択されたフラグファイルは、次に選択されるフラグファイルから除かれる。これは、同一のフラグファイルが重複して配布用フラグファイルとして選択されないようにするためである。
イベント通知準備部141は、配布用フラグファイルの配布先を決定する(ステップS905)。
具体的には、イベント通知準備部141は、ジョブの割当結果を参照して、ジョブkが割り当てられる予定のサーバ102、及び、ジョブk+1が割り当てられる予定のサーバ102を配布用フラグ用ファイルの配布先に決定する。すなわち、二つのサーバ102に同一のフラグファイルが配布されることとなる。
イベント通知準備部141は、ステップS902において特定された全てのファイル117について処理が終了したか否かを判定する(ステップS906)。
特定された全てのファイル117について処理が終了していないと判定された場合、イベント通知準備部141は、ステップS903に戻り同様の処理を実行する。
特定された全てのファイル117について処理が終了したと判定された場合、イベント通知準備部141は、全てのジョブについて処理が終了したか否かを判定する(ステップS907)。
全てのジョブについて処理が終了していないと判定された場合、イベント通知準備部141は、変数kの値を1加算して(ステップS908)、ステップS902に戻る。
全てのジョブについて処理が終了していると判定された場合、イベント通知準備部141は、処理を終了する。
イベント通知準備部141は、メモリ122に、フラグファイルの配布先決定処理の結果を一時的に保持する。
図8の説明に戻る。
イベント通知準備部141は、フラグファイルの配布先決定処理の結果に基づいて、登録された付与定義情報174を更新する(ステップS803)。
具体的には、同一のフラグファイルが配布される予定の二つのサーバ102のうち、先に実行されるジョブ(ジョブk)が割り当てられる予定のサーバ102の識別子がサーバID441に格納され、後に実行されるジョブ(ジョブk+1)が割り当てられる予定のサーバ102の識別子がサーバID451に格納される。
ステップS803の処理が終了すると、付与定義情報174には必要な情報が全て設定される。
次に、イベント通知準備部141は、ファイルサーバ103に、付与定義情報174を送信し(ステップS804)、処理を終了する。なお、受信した付与定義情報174は、ファイルシステム管理部135によって保持される。
図10は、本発明の実施例1におけるジョブスケジューラ131が実行する処理を説明するフローチャートである。
ジョブスケジューラ131は、ジョブネットの実行指示を受け付けると、以下で説明する処理を開始する。なお、ジョブスケジューラ131は、ジョブネットに予め設定された実行時間に基づいて処理を開始してもよい。
ジョブスケジューラ131は、ジョブネット管理情報及びジョブの割当結果に基づいて、サーバ102にジョブを割り当てる(ステップS1001)。
なお、サーバ102にジョブを割り当てる方法は公知の技術であるため説明を省略する。
ジョブスケジューラ131は、ジョブが割り当てられたサーバに、監視対象定義情報165を送信する(ステップS1002)。具体的には、以下のような処理が実行される。
ジョブスケジューラ131は、まず、対象ジョブを選択する。なお、ジョブスケジューラ131はジョブの実行順に対象ジョブを選択するものとする。
ジョブスケジューラ131は、ジョブの割当結果及びフラグファイルの配布先決定処理の結果に基づいて、対象ジョブが割り当てられたサーバ102及び対象ジョブの次に実行されるジョブが割り当てられたサーバ102の両方に配布される予定のフラグファイルを特定する。
ジョブスケジューラ131は、特定されたフラグファイルに対応する監視対象定義情報165を検索する。すなわち、ファイルID621が特定されたフラグファイルの識別子と一致する監視対象定義情報165が検索される。
ジョブスケジューラ131は、ジョブの割当結果に基づいて、対象ジョブの次に実行されるジョブが割り当てられたサーバ102を特定する。
ジョブスケジューラ131は、特定されたサーバ102に、特定された監視対象定義情報165を送信する。すなわち、対象ジョブの次に実行されるジョブが割り当てられたサーバ102に、対象ジョブに関する監視対象定義情報165が送信される。
前述した処理がジョブネットを構成する全てのジョブに対して実行される。
以上がステップS1002に処理である。
次に、ジョブスケジューラ131は、ファイルサーバ103に、フラグファイルの配布指示を送信する(ステップS1003)。当該配布指示には、ジョブの割当結果及びフラグファイルの配布先決定処理の結果が含まれる。
ジョブスケジューラ131は、ジョブが割り当てられたサーバ102に、当該ジョブの実行指示を送信する(ステップS1004)。実施例1では、ジョブスケジューラ131は、ジョブネットを構成するジョブのうち、最初に実行されるジョブが割り当てられたサーバ102に、ジョブの実行指示を送信する。
ジョブスケジューラ131は、ジョブを割り当てた全てのサーバ102からジョブ完了の通知の受信を待ち、全てのサーバ102からジョブ完了の通知を受信すると処理を終了する(ステップS1005)。
なお、ジョブスケジューラ131は、サーバ102へのジョブの割り当て時に、ファイルサーバ103にフラグファイルの配布指示を送信しているが、本発明はこれに限定されない。例えば、イベント通知準備部141が、フラグファイルの配布先決定処理の実行後、ファイルサーバ103にフラグファイルの配布指示を送信してもよい。
なお、ファイルサーバ103は、配布指示を受信した場合、以下のような処理が実行される。
ファイルサーバ103は、受信した配布指示に基づいて、所定のサーバ102に所定のフラグファイルを配布する。このとき、ファイルサーバ103は、サーバ102に、配布されたフラグファイルのメタデータReadトークンを付与する。
また、ファイルサーバ103は、トークン管理情報173に、フラグファイルのエントリを生成する。ファイルサーバ103は、フラグファイルのトークン種別302がメタデータ、及び、トークン状態303がReadであるエントリの所定のサーバの欄に「1」を格納する。
一方、サーバ102は、フラグファイルとメタデータReadトークンを取得すると、取得トークン情報164に、フラグファイルのエントリを生成し、トークン種別502がメタデータ、かつ、トークン状態503がReadの欄に「1」を格納する。
図11は、本発明の実施例1におけるジョブ実行制御部151が実行する処理を説明するフローチャートである。
ジョブ実行制御部151は、ジョブスケジューラ131からジョブが割り当てられ、監視対象定義情報165及びフラグファイルを受信すると処理を開始する。
ジョブ実行制御部151は、割り当てられたジョブを実行するためのプロセスを生成し、また、受信した監視対象定義情報165を更新する(ステップS1101)。
具体的には、ジョブ実行制御部151は、受信した監視対象定義情報165のプロセスID611に生成されたプロセスの識別子を格納する。なお、監視対象定義情報165が複数存在する場合、各監視対象定義情報165のプロセスID611には、同一のプロセスの識別子が格納される。
ジョブ実行制御部151は、ジョブの実行指示を受信したか否かを判定する(ステップS1102)。実施例1では、ジョブネットを構成するジョブのうち、最初に実行されるジョブが割り当てられたサーバ102に対してジョブの実行指示が送信される。
ジョブの実行指示を受信したと判定された場合、ジョブ実行制御部151は、UAP134に、割り当てられたジョブの実行を指示する(ステップS1104)。
ジョブの実行指示を受信していないと判定された場合、ジョブ実行制御部151は、イベント通知部163からイベントの通知を受信したか否かを判定する(ステップS1103)。
イベント通知部163からイベントの通知を受信していないと判定された場合、ジョブ実行制御部151は、ステップS1103に戻る。すなわち、ジョブ実行制御部151は、イベント通知部163からイベントの通知を受信するまでジョブの実行を待ち続ける。
イベント通知部163からイベントの通知を受信したと判定された場合、ジョブ実行制御部151は、UAP134に、割り当てられたジョブの実行を指示する(ステップS1104)。
UAP134は、ジョブの実行が指示されると、ファイル117を用いて割り当てられたジョブを実行する。このとき、UAP134は、ファイル117に対するオペレーション要求をファイルシステムクライアント133に送信する。
なお、オペレーション要求にはファイル117の識別子、及び、オペレーションの種別等が含まれる。
ジョブ実行制御部151は、ジョブが完了したか否かを判定する(ステップS1105)。
例えば、UAP134がジョブ実行制御部151にジョブの完了を通知する方法、ジョブ実行制御部151がUAP134におけるジョブの実行状況を監視する方法等が考えられる。
ジョブが完了していないと判定された場合、ジョブ実行制御部151は、ジョブが完了するまで待ち続ける。
ジョブが完了したと判定された場合、ジョブ実行制御部151は、ファイルシステムクライアント133に、フラグファイルのメタデータに対するWrite要求を送信する(ステップS1106)。
具体的には、ジョブ実行制御部151は、監視対象定義情報165を参照して、監視対象定義情報165のファイルID531に対応するフラグファイルのメタデータに対するWrite要求を送信する。なお、複数の監視対象定義情報165が存在する場合、全てのフラグファイルのメタデータに対してWrite要求が送信される。
図12は、本発明の実施例1におけるクライアント側トークン管理部161が実行する処理を説明するフローチャートである。
クライアント側トークン管理部161は、UAP134又はジョブ実行制御部151からファイル117に対するオペレーション要求を受け付けると処理を開始する。
なお、実施例1では、ファイルサーバ103によって、フラグファイルが予め配布される。したがって、ジョブの開始時点において、取得トークン情報164には、フラグファイルに対応するエントリが生成され、当該エントリのトークン状態503のReadに対応する欄には「1」が格納される。
クライアント側トークン管理部161は、オペレーション要求を受け付ける(ステップS1201)。
クライアント側トークン管理部161は、ファイルサーバ103に、オペレーション要求に対応するオペレーションを実行するために必要なトークン付与要求を送信する(ステップS1202)。
例えば、オペレーション要求が、ファイルAのデータに対するRead要求の場合、クライアント側トークン管理部161は、ファイルサーバ103に、ファイルAのデータReadトークンの付与要求を送信する。また、オペレーション要求がファイルAのメタデータに対するWrite要求の場合、クライアント側トークン管理部161は、ファイルサーバ103に、ファイルAのメタデータWriteトークンの付与要求を送信する。
クライアント側トークン管理部161は、ファイルサーバ103から、所定のトークンを取得した後、取得トークン情報164を更新する(ステップS1203)。具体的には、以下のような処理が実行される。
クライアント側トークン管理部161は、取得トークン情報164のファイルID501を参照し、オペレーション要求に対応するエントリが存在するか否かを判定する。
オペレーション要求に対応するエントリが存在しないと判定された場合、クライアント側トークン管理部161は、取得トークン情報164に新たにエントリを生成する。なお、クライアント側トークン管理部161は、トークン種別502及びトークン状態503には全ての種類のカラムを生成するものとする。また、トークン状態503の全ての欄には「0」が設定される。
さらに、クライアント側トークン管理部161は、オペレーション要求を解析して、新たに生成されたエントリの、トークン種別502及びトークン状態503に一致する欄を「1」に更新する。
オペレーション要求に対応するエントリが存在すると判定された場合、クライアント側トークン管理部161は、オペレーション要求を解析して、対応するエントリの、トークン種別502及びトークン状態503に一致する欄を「1」に更新する。
なお、クライアント側トークン管理部161は、メモリ124のワークエリアに、更新前の取得トークン情報164を一時的に保持する。なお、クライアント側トークン管理部161は、メモリ124のワークエリアに、更新前の取得トークン情報164が存在する場合、当該ワークエリアに、今回の取得トークン情報164を上書きする。
以上がステップS1203の処理である。
次に、クライアント側トークン管理部161は、オペレーション要求に対応するオペレーションを実行する(ステップS1204)。オペレーションの実行処理は公知の技術を用いればよいため説明を省略する。
図13は、本発明の実施例1におけるトークン監視部162が実行する処理を説明するフローチャートである。
トークン監視部162は、ステップS1101において監視対象定義情報165が更新された後、処理を開始する。トークン監視部162は、ファイルI/Oとしてオペレーション要求を監視し、オペレーション要求を検出した場合に以下で説明する処理を開始する。
トークン監視部162は、監視対象定義情報165を参照して、オペレーション要求の処理対象が監視対象410に一致するか否かを判定する(ステップS1301)。具体的には、以下のような処理が実行される。
トークン監視部162は、オペレーション要求を解析し、オペレーションの処理対象のファイル117の識別子を特定する。トークン監視部162は、監視対象定義情報165のファイルID621を参照して、特定されたファイルの識別子と一致する監視対象定義情報165を検索する。
特定されたファイルの識別子と一致する監視対象定義情報165が存在する場合、トークン監視部162は、オペレーション要求の処理対象が監視対象410に一致すると判定する。
実施例1では、フラグファイルのメタデータに対する書込処理又は読出処理等を受け付けた場合に、上記処理によって、監視対象定義情報165が検索される。
以上がステップS1301の処理である。
オペレーション要求の処理対象が監視対象410に一致しないと判定された場合、トークン監視部162は、オペレーション要求の監視を継続する。
オペレーション要求の処理対象が監視対象410に一致すると判定された場合、トークン監視部162は、監視対象定義情報165を参照して、オペレーション(ファイルI/O)の処理内容が監視動作630と一致するか否かを判定する(ステップS1302)。すなわち、イベントとして検出すべきファイルI/Oであるか否かが判定される。
オペレーションの処理内容が、監視動作630と一致しないと判定された場合、トークン監視部162は、オペレーション要求の監視を継続する。
オペレーションの処理内容が、監視動作630と一致する判定された場合、トークン監視部162は、取得トークン情報164を参照して、オペレーションの実行に必要なトークンの状態が変化したか否かを判定する(ステップS1303)。
具体的には、トークン監視部162は、取得トークン情報164と、ワークエリアに保持される更新前の取得トークン情報164とを比較して、ファイルID621に対応するファイル117のエントリの、所定のトークン種別502及び所定のトークン状態503の欄の値が変化したか否かを判定する。
なお、オペレーション要求が出力されてから、トークンの状態が変化するまでには時間を要するため、一定期間経過後にステップS1303の判定処理を実行するようにしてもよい。
オペレーションの実行に必要なトークンの状態が変化していないと判定された場合、トークン監視部162は、オペレーション要求の監視を継続する。
オペレーションの実行に必要なトークンの状態が変化したと判定された場合、トークン監視部162は、対応する監視対象定義情報165に、処理済みであることを示すフラグを付与する(ステップS1304)。
トークン監視部162は、全ての監視対象定義情報165について処理が完了したか否かを判定する(ステップS1305)。
具体的には、トークン監視部162は、保持する全ての監視対象定義情報165に、処理済みであることを示すフラグが付与されているか否かを判定する。全ての監視対象定義情報165に、処理済みであることを示すフラグが付与されている場合、全ての監視対象定義情報165について処理が完了したと判定される。
全ての監視対象定義情報165について処理が完了していないと判定された場合、トークン監視部162は、オペレーション要求の監視を継続する。
全ての監視対象定義情報165について処理が完了したと判定された場合、トークン監視部162は、イベント通知部163にイベントの発生を通知する(ステップS1306)。その後、トークン監視部162は、オペレーション要求の監視を継続する。
実施例1では、トークン監視部162は、サーバ102に配布された全てのフラグファイルに付与されたメタデータReadトークンが回収されたことを検出すると、その旨をイベント通知部163に通知する。
なお、イベント通知部163への通知には、フラグファイルの識別子が含まれる。
図14は、本発明の実施例1におけるイベント通知部163が実行する処理を説明する処理である。
イベント通知部163は、トークン監視部162から所定のイベントが発生した旨を受信すると処理を開始する。
イベント通知部163は、トークン監視部162からの通知に基づいて、プロセスを特定する(ステップS1401)。
具体的には、イベント通知部163は、監視対象定義情報165のプロセスID521を参照して、プロセスを特定する。なお、監視対象定義情報165が複数ある場合、全ての監視対象定義情報165には、同一のプロセスID521が設定されているため、イベント通知部163は、一つの監視対象定義情報165を参照すればよい。
イベント通知部163は、ジョブ実行制御部151に、特定されたプロセスの識別情報を含めてイベントを通知する(ステップS1402)。
これによって、ジョブ実行制御部151は、プロセスID521に対応するジョブの実行指示が開始される(ステップS1104)。
図15は、本発明の実施例1におけるサーバ側トークン管理部171が実行する処理を説明するフローチャートである。
サーバ側トークン管理部171は、クライアント側トークン管理部161からトークン付与要求を受信すると処理を開始する。
サーバ側トークン管理部171は、トークン付与要求を受信すると(ステップS1501)、トークン管理情報173を参照して、オペレーションの処理対象に関連するトークンの回収が必要か否かを判定する(ステップS1502)。ここで、トークン付与要求がファイルAのデータWriteトークンの付与要求である場合を例にステップS1502の処理を説明する。
サーバ側トークン管理部171は、ファイルID301がファイルAのデータ313のエントリを参照して、データWriteトークンが付与されているサーバ102が存在するか否かを判定する。
データWriteトークンが付与されているサーバ102が存在しないと判定された場合、サーバ側トークン管理部171は、ファイルAのデータに関連するトークンの回収が必要ないと判定する。
一方、データWriteトークンが付与されているサーバ102が存在すると判定された場合、サーバ側トークン管理部171は、ファイルAのデータに関連するトークンの回収が必要であると判定する。具体的には、他のサーバ102に付与されたデータWriteトークンの回収が必要であると判定する。
以上が、ステップS1502の処理の一例である。なお、オペレーションの処理内容によって、トークンの回収の判定基準が異なるが、公知の技術であるため詳細な説明を省略する。
オペレーションの処理対象に関連するトークンの回収が必要でないと判定された場合、サーバ側トークン管理部171は、ステップS1504に進む。
オペレーションの処理対象に関連するトークンの回収が必要であると判定された場合、サーバ側トークン管理部171は、所定のサーバ102にトークンの返却要求を送信する(ステップS1503)。
サーバ側トークン管理部171は、トークン付与要求によって要求されたトークンを付与するために、トークン付与判定部172を呼び出す(ステップS1504)。
サーバ側トークン管理部171は、トークン付与判定部172の処理結果に基づいて、トークン付与要求によって要求されたトークンをサーバ102に付与し、トークン管理情報173を更新する(ステップS1505)。
具体的には、サーバ側トークン管理部171は、トークン付与要求を解析して、トークン管理情報173の対応する付与状態304の欄を「1」に更新する。また、サーバ側トークン管理部171は、トークンが回収された場合には、回収されたトークンに対応する付与状態304の欄を「0」に更新する。
図16は、本発明の実施例1におけるトークン付与判定部172が実行する処理を説明するフローチャートである。
トークン付与判定部172は、トークン付与要求の解析結果に基づいて付与定義情報174を参照し、当該トークン付与要求が処理対象であるか否かを判定する(ステップS1601)。
具体的には、トークン付与判定部172は、トークン付与要求の解析結果からファイルの識別子を取得する。トークン付与判定部172は、ファイルID411が、取得されたファイルの識別子と一致する付与定義情報174が存在するか否かを判定する。
ファイルID411が、取得されたファイルの識別子と一致する付与定義情報174が存在する場合、トークン付与判定部172は、受信したトークン付与要求が処理対象であると判定する。
受信したトークン付与要求が処理対象でないと判定された場合、トークン付与判定部172は、サーバ側トークン管理部171に、トークンの付与を許可する旨を通知する(ステップS1604)。
受信したトークン付与要求が処理対象であると判定された場合、トークン付与判定部172は、対応する付与定義情報174の条件420に示された条件を満たすか否かを判定する(ステップS1602)。
対応する付与定義情報174の条件420に示された条件を満たさないと判定された場合、トークン付与判定部172は、ステップS1602に戻り、当該条件が満たされるまで待ち続ける。
対応する付与定義情報174の条件420に示された条件を満たすと判定された場合、トークン付与判定部172は、サーバ側トークン管理部171に、トークンの付与を許可する旨を通知する(ステップS1604)。
なお、判定処理用のタイマを設定しておき、当該タイマが経過後も条件が満たされていない場合、トークン付与判定部172は、サーバ側トークン管理部171にエラーを通知してもよい。
トークン付与判定部172が実行する処理によって、現在実行中のジョブの次に実行されるジョブの開始時に、現在実行中のジョブの処理結果が反映されないなどの不具合を解消することができる。すなわち、ファイルの一貫性を確保することができる。
ここで、ジョブネットの具体例を用いて処理の流れについて説明する。
以下では、ジョブ1、ジョブ2、及びジョブ3の順に実行されるジョブネットを例に説明する。なお、ジョブ1はファイルAを用いた処理を実行するジョブ、ジョブ2はファイルA及びファイルBを用いた処理を実行するジョブ、ジョブ3はファイルBを用いた処理を実行するジョブであると仮定する。
(イベント通知準備部141)
ステップS702では、イベント通知準備部141は、以下のような処理を実行する。イベント通知準備部141は、ファイルAはジョブ1及びジョブ2に用いられるため、フラグファイルA1の生成指示を送信する。また、イベント通知準備部141は、ファイルBはジョブ2及びジョブ3に用いられるため、フラグファイルB1の生成指示を送信する。
ステップS703では、イベント通知準備部141は、二つの付与定義情報174を登録する。
具体的には、ファイルID411にフラグファイルA1の識別子が格納された第1の付与定義情報と、ファイルID411にフラグファイルB1の識別子が格納された第2の付与定義情報とが登録される。
なお、具体例では、全ての付与定義情報174の条件式430には、同一の条件式が設定される。具体的には、「要素1(440)、AND、要素2(450)」という条件式が格納される。また、トークン条件442及びトークン条件452には「メタデータReadトークンの回収完了」が格納される。
すなわち、具体例では、フラグファイルのメタデータReadトークンの回収完了を契機にジョブが実行される。
ステップS704では、イベント通知準備部141は、二つの監視対象定義情報165を登録する。
具体的には、ファイルID621にフラグファイルA1の識別子が格納された第1の監視対象定義情報と、ファイルID621にフラグファイルB1の識別子が格納された第2の監視対象定義情報とが登録される。
なお、具体例では、全ての監視対象定義情報165の監視動作630には、同一の情報が設定される。具体的には、「メタデータRead」が格納される。
ステップS801では、イベント通知準備部141は、ジョブ1を第1のサーバに、ジョブ2を第2のサーバに、ジョブ3を第3のサーバに割り当てるように決定する。
ステップS802では、イベント通知準備部141は、フラグファイルの配布先決定処理を実行して、フラグファイルの配布先を決定する。
具体的には、フラグファイルA1の配布先は、第1のサーバ及び第2のサーバに決定される。フラグファイルB1の配布先は、第2のサーバ及び第3のサーバに決定される。
ステップS803では、イベント通知準備部141は、二つの付与定義情報174を更新する。
具体的には、イベント通知準備部141は、第1の付与定義情報のサーバID441に第1のサーバの識別子を格納し、サーバID451に第2のサーバの識別子を格納する。また、イベント通知準備部141は、第2の付与定義情報のサーバID441に第2のサーバの識別子を格納し、サーバID451に第3のサーバの識別子を格納する。
(ジョブスケジューラ131)
ステップS1001では、ジョブスケジューラ131は、ジョブ1を第1のサーバに、ジョブ2を第2のサーバに、ジョブ3を第3のサーバに割り当てる。
ステップS1002では、ジョブスケジューラ131は、所定のサーバ102に、二つの監視対象定義情報165を送信する。具体的には、以下のように監視対象定義情報165が送信される。
第1のサーバ及び第2のサーバにはフラグファイルA1が配布予定であるため、第1の監視対象定義情報が第2のサーバに送信される。同様に、第2のサーバ及び第3のサーバにはフラグファイルB1が配布予定であるため、第2の監視対象定義情報が第3のサーバに送信される。
ステップS1003では、ジョブスケジューラ131は、ファイルサーバ103にフラグファイルの配布を指示する。
具体的には、ジョブスケジューラ131は、第1のサーバにフラグファイルA1を配布し、第2のサーバにフラグファイルA1及びフラグファイルB1を配布し、また、第3のサーバにフラグファイルB1を配布するように指示する。
ファイルサーバ103は、配布指示に基づいて、第1のサーバにフラグファイルA1を配布し、第2のサーバにフラグファイルA1及びフラグファイルB1を配布し、また、第3のサーバにフラグファイルB1を配布する。また、ファイルサーバ103は、各サーバに、配布されたフラグファイルのメタデータReadトークンを付与する。
ステップS1004では、ジョブスケジューラ131は、第1のサーバにジョブ1の実行を指示する。
次に、サーバ102及びファイルサーバ103が実行する処理を説明する。なお、通常のファイル117のオペレーションに関する処理は公知技術と同一であるため、フラグファイルのオペレーションに関する処理を中心に説明する。
(第1のサーバのジョブ実行制御部151)
ステップS1101では、ジョブ実行制御部151は、ジョブ1を実行するためのプロセスを生成する。なお、第1のサーバには監視対象定義情報165が送信されていないため、監視対象定義情報165の更新処理は省略される。
ステップS1102では、ジョブ実行制御部151は、ジョブスケジューラ131からジョブ1の実行指示を受信しているため、ステップS1104に進み、UAP134にジョブ1の実行を指示する。
ステップS1106では、ジョブ実行制御部151は、フラグファイルA1のメタデータに対するWrite要求を送信する。
(第1のサーバのクライアント側トークン管理部161)
ステップS1201では、クライアント側トークン管理部161は、フラグファイルA1のメタデータに対するWrite要求を受け付ける。
ステップS1202では、クライアント側トークン管理部161は、フラグファイルA1のメタデータWriteトークンの付与要求を送信する。
ステップS1203では、クライアント側トークン管理部161は、フラグファイルA1のメタデータWriteトークンを取得した後、取得トークン情報164を更新する。
ステップS1204では、クライアント側トークン管理部161は、フラグファイルA1のメタデータに対する書込処理を実行する。
本発明では、フラグファイルA1のメタデータに対する書込処理に限定されない。例えば、クライアント側トークン管理部161は、フラグファイルA1のメタデータに対して0バイトデータの書込処理を実行するようにしてもよい。その後、クライアント側トークン管理部161は、フラグファイルA1を破棄し、また、取得トークン情報164からフラグファイルA1のエントリを削除する。
(サーバ側トークン管理部171及びトークン付与判定部172)
ステップS1501及びステップS1502では、サーバ側トークン管理部171は、フラグファイルA1のメタデータWriteトークンの付与要求を受信すると、フラグファイルA1のメタデータReadトークンの回収が必要であると判定する。
通常、ファイルのデータWriteトークンの付与要求を受信した場合、ファイルの一貫性を確保するために、サーバ102に付与されたファイルのデータReadトークンを回収する必要があるためである。
ステップS1503では、サーバ側トークン管理部171は、トークン管理情報173を参照して、フラグファイルA1のメタデータReadトークンが付与された第1のサーバ及び第2のサーバを特定する。さらに、サーバ側トークン管理部171は、第1のサーバ及び第2のサーバに、フラグファイルA1のメタデータReadトークンの返還要求を送信する。
ステップS1602では、トークン付与判定部172は、第1の付与定義情報を参照し、第1のサーバ及び第2のサーバから、フラグファイルA1のメタデータReadトークンが回収されたか否かを判定する。
ステップS1604では、トークン付与判定部172は、前述した条件が満たされると、フラグファイルA1のメタデータWriteトークンの付与を許可する。
ステップS1505では、サーバ側トークン管理部171は、第1のサーバにフラグファイルA1のメタデータWriteトークンを付与する。
(第2のサーバのトークン監視部162)
ステップS1301では、トークン監視部162は、フラグファイルA1のメタデータReadトークンの返却要求を検出した場合、処理対象が監視対象410に一致すると判定する。
ステップS1302では、トークン監視部162は、オペレーション(ファイルI/O)の処理内容が監視動作630と一致すると判定する。
ステップS1303では、トークン監視部162は、フラグファイルA1のメタデータReadトークンを返却すると、トークンの状態が変化したと判定する。
ステップS1304では、トークン監視部162は、第1の監視対象定義情報に処理済みであることを示すフラグを付与する。
ステップS1305では、トークン監視部162は、第1の監視定義情報に処理済みであることを示すフラグが付与されているため、全ての監視対象定義情報165について処理が完了したと判定する。
ステップS1306では、トークン監視部162は、イベント通知部163にイベントの発生を通知する。
(第2のサーバのイベント通知部163)
ステップS1401では、イベント通知部163は、監視対象定義情報165のプロセスID611を参照して、ジョブ2を実行するためのプロセスを特定する。
ステップS1402では、イベント通知部163は、ジョブ実行制御部151にジョブ2を開始するためのイベントを通知する。
(第2のサーバのジョブ実行制御部151)
ステップS1101では、第1のサーバのジョブ実行制御部151が実行した処理と同一の処理が実行される。
ステップS1102では、ジョブ実行制御部151は、ジョブの実行指示は送信されないためステップS1103に進む。
ステップS1103では、ジョブ実行制御部151は、イベントが通知されるまで、ジョブ2の実行を待ち合わせている。ジョブ実行制御部151は、イベント通知部163からイベントが通知されると、UAP134にジョブ2の実行を指示する。
ステップS1106では、ジョブ実行制御部151は、フラグファイルB1のメタデータに対するWrite要求を送信する。
以下、前述した処理と同様の処理が実行される。簡単に説明すると、以下のような処理が実行される。
まず、ファイルサーバ103によって、フラグファイルB1のメタデータReadトークンが回収される。
第3のサーバのトークン監視部162は、フラグファイルB1のメタデータReadトークンが回収を検出すると、第2の監視対象定義情報に基づいてイベントの発生であると判定し、イベント通知部163にその旨を通知する。第3のサーバのイベント通知部163は、第3のサーバのジョブ実行制御部151にイベントを通知する。第3のサーバのジョブ実行制御部151は、イベントの通知を受け付けると、UAP134にジョブ3の実行を指示する。
(変形例1)
実施例1では、フラグファイルに対するファイルI/Oを用いてイベントを検出していたが、本発明はこれに限定されない。サーバ102が、自身に割り当てられたジョブの前に実行されるジョブ(先行ジョブ)の実行時に入出力されるファイルI/Oに基づいてイベントを検出する方法も可能である。以下の説明では、先行ジョブの後に実行されるジョブを後続ジョブと記載する。
ここで、実施例1とは異なるイベントの検出方式について説明する。
変形例1では、フラグファイルを用いずに、先行ジョブの実行時に用いられるファイルのデータWriteトークンの返却を契機に後続ジョブを開始する。
以下、適用例を用いて、実施例1との差異を中心に説明する。
変形例1では、計算機システムのハードウェア構成、ファイル管理情報175、トークン管理情報173、取得トークン情報164は、実施例1と同一であるため説明を省略する。
変形例1では、監視対象定義情報165に設定される内容が異なる。
監視対象定義情報165のファイルID621には、先行ジョブが用いるファイルの識別子が格納される。また、監視動作630には、「データRead」が格納される。
また、変形例1では、付与定義情報174が異なる。
図17は、本発明の変形例1における付与定義情報174の一例を示す説明図である。
変形例1の付与定義情報174は、ファイルI/O1700を新たに含む。ファイルI/O1700は、条件420に設定された条件が満たされた場合に、後続ジョブが割り当てられたサーバ102に出力するファイルI/Oの情報を格納する。具体的には、ファイルI/O1700は、サーバID1701及び付与トークン1702を含む。
サーバID1701は、後続ジョブが割り当てられたサーバ102の識別子を格納する。
付与トークン1702は、後続ジョブが割り当てられたサーバ102に付与するトークンに関する情報を格納する。具体的には、「(ファイルID411)のデータReadトークンの付与」が格納される。
なお、変形例1では、ファイルID411には、先行ジョブが用いるファイルの識別子が格納される。条件430については後述する。
その他の情報は実施例1と同一であるため説明を省略する。
以下では、ジョブ1、ジョブ2、及びジョブ3の順に実行されるジョブネットを例に説明する。なお、ジョブ1はファイルAを用いた処理を実行するジョブ、ジョブ2はファイルA及びファイルBを用いた処理を実行するジョブ、ジョブ3はファイルBを用いた処理を実行するジョブであると仮定する。
(イベント通知準備部141)
変形例1では、フラグファイルを用いないためステップS702の処理は省略される。
ステップS703では、イベント通知準備部141は、第1の付与定義情報、第2の付与定義情報、及び第3の付与定義情報の三つの付与定義情報174を登録する。
第1の付与定義情報では、ファイルID411にファイルAの識別子が格納され、サーバID1701に第2のサーバの識別子が格納される。第2の付与定義情報では、ファイルID411にファイルAの識別子が格納され、サーバID1701に第3のサーバの識別子が格納される。第3の付与定義情報では、ファイルID411にファイルBの識別子が格納され、サーバID1701に第3のサーバの識別子が格納される。
また、付与定義情報174の条件420には、条件式430と要素1(440)が含まれる。条件式430には、「(サーバID441)が(ファイルID411)のデータの(トークン条件442)の検出」が格納される。また、トークン条件442には、「データWriteトークンの返却」が格納される。
すなわち、変形例1では、先行ジョブの実行時に用いられるファイルのデータWriteトークンが返却を契機に後続ジョブが実行される。
ステップS704では、イベント通知準備部141は、第1の監視対象定義情報、第2の監視対象定義情報、及び第3の監視対象定義情報の三つの監視対象定義情報165を登録する。
第1の監視対象定義情報のファイルID621にファイルAの識別子が格納される。第2の監視対象定義情報のファイルID621にファイルAの識別子が格納される。第3の監視対象定義情報のファイルID621にファイルBの識別子が格納される。
ステップS801では、イベント通知準備部141は、ジョブ1を第1のサーバに、ジョブ2を第2のサーバに、ジョブ3を第3のサーバに割り当てるように決定する。
変形例1では、フラグファイルを用いないためフラグファイルの配布先決定処理は省略される。
ステップS803では、イベント通知準備部141は、三つの付与定義情報174を更新する。
具体的には、イベント通知準備部141は、第1の付与定義情報のサーバID441に第1のサーバの識別子を格納する。イベント通知準備部141は、第2の付与定義情報のサーバID441に第2のサーバの識別子を格納する。イベント通知準備部141は、第3の付与定義情報のサーバID441に第2のサーバの識別子を格納する。
(ジョブスケジューラ131)
ステップS1001では、ジョブスケジューラ131は、ジョブ1を第1のサーバに、ジョブ2を第2のサーバに、ジョブ3を第3のサーバに割り当てる。
ステップS1002において、ジョブスケジューラ131は、所定のサーバ102に、三つの監視対象定義情報165を送信する。具体的には、以下のように監視対象定義情報165が送信される。
変形例1では、後続ジョブが割り当てられたサーバ102が、先行ジョブの実行時に用いられたファイルのデータReadトークンの付与を検出するように監視対象定義情報165が送信される。
そのため、第2のサーバには、ジョブ1の実行時に用いられるファイルAのデータReadトークンの付与を検出するために、第1の監視対象定義情報が送信される。また、第3のサーバには、ジョブ2の実行時に用いられるファイルA及びファイルBのデータReadトークンの付与を検出するために、第2の監視対象定義情報及ぶ第3の監視対象定義情報が送信される。
変形例1では、フラグファイルを用いないためステップS1003の処理は省略される。
次に、サーバ102及びファイルサーバ103が実行する処理を説明する。
(第1のサーバのジョブ実行制御部151)
ステップS1101では、ジョブ実行制御部151は、ジョブ1を実行するためのプロセスを生成する。なお、第1のサーバには監視対象定義情報165が送信されていないため、監視対象定義情報165の更新処理は省略される。
ステップS1102では、ジョブ実行制御部151は、ジョブスケジューラ131からジョブ1の実行指示を受信しているため、ステップS1104に進み、UAP134にジョブ1の実行を指示する。
ステップS1106では、ジョブ実行制御部151は、ファイルA1のデータに対するWrite要求を送信する。これによって、ジョブ1の処理結果がファイルAに反映され、その後、ファイルAのデータWriteトークンが返却される。
(第1のサーバのクライアント側トークン管理部161)
ステップS1201では、クライアント側トークン管理部161は、ファイルAへの書込処理の終了通知を受け付ける。
ステップS1202では、クライアント側トークン管理部161は、付与要求の代わりに、ファイルAのデータWriteトークンの返却通知を送信する。
ステップS1203では、クライアント側トークン管理部161は、ファイルAのデータWriteトークンを返却した後、取得トークン情報164を更新する。この場合、ステップS1204の処理は省略される。
(サーバ側トークン管理部171及びトークン付与判定部172)
ステップS1501では、サーバ側トークン管理部171は、第1のサーバからファイルAのデータWriteトークンの返却通知を受信する。この場合、トークンの回収は必要ないためステップS1502及びステップS1503の処理は省略される。
ステップS1602では、トークン付与判定部172は、第1の付与定義情報を参照し、第1のサーバから、ファイルAのデータWriteトークンを回収したか否かを判定する。例えば、トークン管理情報173を参照することによって判定することができる。
ステップS1604では、トークン付与判定部172は、前述した条件が満たされると、ファイルAのReadトークンの付与を許可する。
ステップS1505では、サーバ側トークン管理部171は、第1の付与定義情報を参照して、第2のサーバにファイルAのデータReadトークンを付与するための付与通知を送信する。
(第2のサーバのトークン監視部162)
ステップS1301では、トークン監視部162は、ファイルAのデータReadトークンの付与通知を検出した場合、処理対象が監視対象410と一致すると判定する。
ステップS1302では、トークン監視部162は、ファイルI/Oの処理内容が監視動作630に一致すると判定する。
ステップS1304では、トークン監視部162は、第1の監視対象定義情報に処理済みであることを示すフラグを付与する。
ステップS1305では、トークン監視部162は、第1の監視対象定義情報に処理済みであることを示すフラグが付与されているため、全ての監視対象定義情報165について処理が完了したと判定する。
ステップS1306では、トークン監視部162は、イベント通知部163にイベントの発生を通知する。
(第2のサーバのイベント通知部163)
ステップS1401では、イベント通知部163は、監視対象定義情報165のプロセスID611を参照して、ジョブ2を実行するためのプロセスを特定する。
ステップS1402では、イベント通知部163は、ジョブ実行制御部151にジョブ2を開始するためのイベントを通知する。
(第2のサーバのジョブ実行制御部151)
ステップS1101では、第1のサーバのジョブ実行制御部151が実行した処理と同一の処理が実行される。
ステップS1102では、ジョブ実行制御部151は、ジョブの実行指示は送信されないためステップS1103に進む。
ステップS1103では、ジョブ実行制御部151は、イベントが通知されるまで、ジョブ2の実行を待ち合わせている。ジョブ実行制御部151は、イベント通知部163からイベントが通知されると、UAP134にジョブ2の実行を指示する。
ステップS1106では、ジョブ実行制御部151は、ファイルA及びファイルBのデータWriteトークンの返却通知を送信する。
以下、前述した処理と同様の処理が実行される。簡単に説明すると、以下のような処理が実行される。
まず、ファイルサーバ103が、第3のサーバに、ファイルA及びファイルBのデータReadトークンの付与通知を送信する。
第3のサーバのトークン監視部162は、ファイルA及びファイルBのデータReadトークンが付与されたことを検出すると、イベントの発生をイベント通知部163に通知する。なお、いずれか一方のファイル117のデータReadトークンのみが付与されている場合、他のファイル117のデータReadトークンが付与されるまで待ち続ける。
第3のサーバのイベント通知部163は、第3のサーバのジョブ実行制御部151にイベントを通知する。第3のサーバのジョブ実行制御部151は、イベントの通知を受け付けると、UAP134にジョブ3の実行を指示する。
以上で説明したように、付与定義情報174及び監視対象定義情報165を適宜変更することによって、サーバ102は、所定のファイルI/Oの検出を契機にジョブを開始することができる。
(変形例2)
変形例2では、先行ジョブの実行時に用いられるファイルのデータ書込処理に対応するI/Oの検出を契機に後続ジョブを開始する。
以下、適用例を用いて、実施例1との差異を中心に説明する。
変形例では、計算機システムの構成、ファイル管理情報175、トークン管理情報173、取得トークン情報164は、実施例1と同一であるため説明を省略する。
変形例では、監視対象定義情報165に設定される内容が異なる。
監視対象定義情報165のファイルID621には、先行ジョブが用いるファイルの識別子が格納される。また、監視動作630には、「ファイルへのデータ書込処理」が格納される。
変形例2の付与定義情報174は、変形例1と同一のものであるため説明を省略する。
変形例2では、ファイルサーバ103がファイルAへのデータ書込処理に対応するI/Oを検出した場合に、付与定義情報174に基づいて、ファイルAのReadトークンを付与する点が異なる。
その他の処理は、変形例2と同一であるため説明を省略する。
本発明によれば、ジョブが割り当てられたサーバ102は、ファイルサーバ103に対する所定のファイルI/Oを検出することによってジョブを開始することができる。
したがって、ジョブ管理サーバ101とサーバ102との間、サーバ102間において通信することなくジョブを自動的に実行することができる。これによって、ジョブネット実行時における計算機システム内の通信量の削減、及びジョブ実行開始までの遅延時間の削減が可能となる。また、ファイルI/Oは一般的なものであり、特殊なファイルI/Oを用いることなく本発明を実現することができる。
なお、本実施例で例示した種々のソフトウェアは、電磁的、電子的及び光学式等の種々の記録媒体(例えば、非一時的な記憶媒体)に格納可能であり、インターネット等の通信網を通じて、コンピュータにダウンロード可能である。
さらに、本実施例では、ソフトウェアによる制御を用いた例について説明したが、その一部をハードウェアによって実現することも可能である。
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。