以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
まず第1の実施の形態について説明する。
図1は、第1の実施の形態に係るシステムの構成例を示す図である。第1の実施の形態で、ストレージ装置1に複数のファイル1a,1b,1c,・・・が格納されている。ストレージ装置1に格納された複数のファイル1a,1b,1c,・・・は、複数の実行サーバ4〜6で共有される。
ファイル管理サーバ2,3は、ストレージ装置1に格納されている複数のファイル1a,1b,1c,・・・を管理する。例えばファイル管理サーバ2,3は、ファイルの排他制御を行う。すなわちファイル管理サーバ2,3は、ファイルを使用する処理に伴う、そのファイルを指定した排他獲得要求に応じて、その処理によるファイルの排他的な使用を許可する。その後、ファイル管理サーバ2,3は、排他的に使用されているファイルに対する排他獲得要求を受け取っても、その排他獲得要求は拒絶する。またファイル管理サーバ2,3は、処理の終了に伴い、その処理で使用していたファイルの排他解除要求を受け取ると、そのファイルの排他的な使用を終了し、他の処理での使用を可能とする。以下、排他獲得要求と排他解除要求とを総称して、排他制御要求と呼ぶこととする。
実行サーバ4,5,6は、管理サーバ7からの処理の実行依頼に応じて処理を実行する。実行サーバ4,5,6は、実行する処理で使用するファイルを占有する。そのために実行サーバ4,5,6は、処理の実行開始時に、その処理で使用するファイルの排他獲得要求を、いずれかのファイル管理サーバに送信する。なお、どのファイル管理サーバに排他獲得要求を送信すればよいのかは、予め管理サーバ7から指示されている。実行サーバ4,5,6は、処理が終了すると、その処理で使用したファイルの排他解除要求を、そのファイルの排他獲得要求の送信先と同じファイル管理サーバに送信する。
管理サーバ7は、複数の処理の実行スケジュール7aと、複数の処理それぞれで使用するファイルを示す使用ファイル情報7bを有している。そして管理サーバ7は、実行スケジュール7aと使用ファイル情報7bとに基づいて、各実行サーバ4,5,6に、処理の実行依頼を送信すると共に、実行する処理で使用するファイルの排他制御要求の送信先を指定する。このうち、排他制御要求の送信先は、以下のようにして決定される。
管理サーバ7は、実行スケジュール7aに基づいて、所定の時間帯内にファイルの排他制御要求を行う処理を特定する。例えば管理サーバ7は、処理の実行期間を複数の単位時間帯に分け、単位時間帯内に行われるファイルの排他制御要求の数が所定数を超える場合に、その単位時間帯内にファイルの排他制御要求を行う処理を特定する。
なお所定の時間帯内に排他制御要求を行う処理かどうかの判断については、その時間帯内に開始または終了する処理かどうかに基づいて判断できる。例えば管理サーバ7は、所定の時間帯内に開始または終了する処理は、その時間帯内にファイルの排他制御要求を行う処理であると判断する。
時間帯内にファイルの排他制御要求を行う処理が特定されると、管理サーバ7は、複数の処理それぞれで使用するファイルを示す使用ファイル情報7bに基づいて、所定の時間帯内で排他制御の対象となるファイルを特定する。例えば管理サーバ7は、特定された処理で使用するファイルを、所定の時間帯内で排他制御の対象となるファイルとする。
排他制御の対象となるファイルが特定されると、管理サーバ7は、特定されたファイルそれぞれの排他制御要求の送信先とするファイル管理サーバを決定する。この際、管理サーバ7は、ファイルの排他制御を行う複数のファイル管理サーバそれぞれに対して所定の時間帯内に送信される排他制御要求の数が、所定数を超えないようにする。例えば、管理サーバ7は、複数のファイル管理サーバそれぞれに送信される排他制御要求数が均等になるように、排他制御要求の送信先を決定する。
そして管理サーバ7は、特定されたファイルそれぞれの排他制御要求の送信先とするファイル管理サーバを示す送信先情報7cを、特定された処理を実行する実行サーバに送信する。例えば管理サーバ7は、所定の時間帯の開始時刻に達したときに、その時間帯内で行われる排他制御要求の送信先を示す送信先情報7cを送信する。
このようなシステムによれば、まず、実行スケジュール7aと使用ファイル情報7bとに基づいて、管理サーバ7により、送信先情報7cが生成される。図1の例では、実行スケジュール9において、時間帯t1〜t2の間に、処理A、処理B、処理Dを実行することが示されている。一方、使用ファイル情報7bには、処理Aがファイルaとファイルbとを使用すること、処理Bがファイルcとファイルdとを使用すること、処理Dがファイルgとファイルhとを使用することが示されている。そこで、管理サーバ7は、時間帯「t1〜t2」において排他制御要求がファイル管理サーバ2,3に均等に送信されるように、各ファイルの排他制御要求の送信先を決定する。例えば管理サーバ7は、ファイルa,b,cについての排他制御要求の送信先を、名称「α」のファイル管理サーバ2とし、ファイルd,g,hについての排他制御要求の送信先を、名称「β」のファイル管理サーバ3とする。
同様に、時間帯t2〜t3の間に排他制御要求を送信する処理(処理C、処理E、処理F)に基づいて、その時間帯t2〜t3における、処理C・処理E・処理Fそれぞれで使用するファイルの排他制御要求の送信先が決定される。図1の例では、ファイルe,f,iについての排他制御要求の送信先が、名称「α」のファイル管理サーバ2に決定され、ファイルj,k,lについての排他制御要求の送信先が、名称「β」のファイル管理サーバ3に決定されている。
排他制御要求の送信先が決定されると、決定内容を示す送信先情報7cが、管理サーバ7から各実行サーバ4,5,6に配布される。
その後、管理サーバ7は、時間帯t1〜t2の間に、実行スケジュール7aに従って、処理A、処理B、処理Dの実行指示を、各実行サーバ4,5,6に送信する。処理Aを実行する実行サーバ4は、送信先情報7cに基づいて、ファイルa,bに関する排他制御要求を、ファイル管理サーバ2に送信する。処理Bを実行する実行サーバ5は、送信先情報7cに基づいて、ファイルcに関する排他制御要求をファイル管理サーバ2に送信し、ファイルdに関する排他制御要求をファイル管理サーバ3に送信する。処理Dを実行する実行サーバ5は、送信先情報7cに基づいて、ファイルg,hに関する排他制御要求を、ファイル管理サーバ3に送信する。
さらに管理サーバ7は、時間帯t2〜t3の間に、実行スケジュール7aに従って、処理C、処理E、処理Fの実行要求を、各実行サーバ4,5,6に送信する。処理Cを実行する実行サーバ4は、送信先情報7cに基づいて、ファイルe,fに関する排他制御要求を、ファイル管理サーバ2に送信する。処理Eを実行する実行サーバ6は、送信先情報7cに基づいて、ファイルiに関する排他制御要求をファイル管理サーバ2に送信し、ファイルjに関する排他制御要求をファイル管理サーバ3に送信する。処理Fを実行する実行サーバ5は、送信先情報7cに基づいて、ファイルk,lに関する排他制御要求を、ファイル管理サーバ3に送信する。
このように第1の実施の形態では、所定の時間帯内で排他制御の対象となるファイルを特定し、特定したファイルに関する排他制御要求の送信先を決定する。これにより、ファイルの排他制御要求を適切に分散させることができる。その結果、ファイルの排他制御の遅延によりシステム全体の処理効率が低下することが抑止される。
ところで、CPU(Central Processing Unit)ビジー率やファイルアクセス数などに関する過去の負荷情報から過去に発生した負荷の集中は把握できるが、過去の負荷情報からは今後実行する処理により排他制御要求が集中する時間帯を特定することはできない。このため、過去の負荷情報に基づいて排他制御要求の集中の有無を判断しても、実際に負荷の集中は発生した後にしか負荷を平準化できない。例えば、1分間隔で性能情報を収集している場合、少なくとも1分間は負荷が集中した状態が継続し、結果的に処理の実行時間を長期化させる影響が発生する。このような自体を避けようとすると、従来はどのタイミングでファイルの排他制御要求の送信先を切り替えればよいかは人が判断することとなり、判断の誤りが生じやすい。
そこで、第1の実施の形態では、処理の実行スケジュールに基づいて、排他制御の遅延が生じる可能性がある時間帯を特定している。これにより、実際に排他制御要求数が過大となる時間帯を的確に判断し、その時間帯における排他制御要求の送信先が平準化するように、排他制御要求の送信先を、負荷が過大になる前に変更しておくことができる。
またCPUビジー率やファイルアクセス数などの負荷情報と、排他制御要求数との間には、相関関係が弱い場合がある。そのため、CPUビジー率やファイルアクセス数などの負荷情報に基づく排他制御の負荷の大小判断は、不正確である。
図2は、CPUビジー率、ファイルアクセス、および排他制御要求数の時間変化の比較例を示す図である。図2には、CPUビジー率、ファイルアクセス、および排他制御要求数それぞれの推移を示すグラフが示されている。
一般に、ファイルの排他制御要求数は、CPUの処理負荷またはファイルアクセスの負荷と同期しない。CPUの負荷は、例えばCPUのビジー率で表される。ファイルアクセスの負荷は、例えばファイルアクセスの最大性能(例えば単位時間当たりの最大の入出力可能データ量)に対する、実際に入出力されたデータ量の割合で表される。
例えば図2では、ファイルアクセスが少なく、サイズは小さいが多数のファイルを扱う処理(JOB#1)と、ファイルアクセスが多く、ファイルのサイズが大きい処理(JOB#2)とのそれぞれを実行したときの、負荷の時間遷移を示している。図2に示すように、ファイルの排他制御要求の処理に関する負荷、CPU等の処理負荷、ファイルアクセスの負荷は、それぞれ異なる。例えばJOB#1の場合、CPU使用率やファイルアクセスによる負荷が適正範囲内であっても、排他制御要求数は過大な時間帯が存在する。逆に、JOB#2では、CPUビジー率やファイルアクセスの負荷が過大であっても、排他制御要求数は少ない。
このように、CPUビジー率やファイルアクセス利用状況とファイルの排他制御要求は必ずしも同期しない。そのため、CPU利用状況(負荷)による偏りを判断して、排他制御要求を平準化しようとしても、実際のファイル排他制御要求の負荷は偏った状況に陥る可能性がある。
第1の実施の形態では、実際に行われる排他制御要求の数を事前に求め、その排他制御要求数に基づいて、今後実行される排他制御の負荷の大小を判断している。そのため、排他制御の負荷が適切に判断される。例えば、第1の実施の形態では、処理の実行期間を複数の単位時間帯に分け、単位時間帯内に行われるファイルの排他制御要求の数が所定数を超える場合に、その単位時間帯内にファイルの排他制御要求の送信先を切り替えることができる。これにより、排他制御要求の負荷が過大となる時間帯を適切に判定し、その時間帯の排他制御要求を適切に分散させることができる。図2に示したJOB#1の例であれば、排他制御要求数が6000を超える時間帯について、排他制御要求の送信先を適切に分散させることができる。
しかも第1の実施の形態では、排他要求数が所定数を超える時間帯における、排他要求の対象となるファイルを特定し、そのファイルの排他制御要求の送信先を決定する。そのため、複数のファイル管理サーバそれぞれに所定の時間帯内に送信される排他制御要求数を、可能な限り、所定値以下に抑止することができる。
なお、ファイル管理サーバ2,3、実行サーバ4,5,6、および管理サーバ7は、例えばプロセッサやメモリを有するコンピュータである。その場合、ファイル管理サーバ2,3、実行サーバ4,5,6、および管理サーバ7によって実現される処理が記述されたプログラムが用意される。
また、図1に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
〔第2の実施の形態〕
次に第2の実施の形態について説明する。なお、第2の実施の形態では、実行サーバで実行する処理の単位を「ジョブ」と呼ぶこととする。
図3は、第2の実施の形態のシステム構成例を示す図である。第2の実施の形態では、ネットワーク20を介して、管理サーバ100、複数の実行サーバ200,200a,200b,・・・、ストレージ装置300、ファイル管理サーバ400,400a,・・・、および端末装置31,32,・・・が接続されている。
管理サーバ100は、実行するジョブを管理するコンピュータである。例えば管理サーバ100は、ジョブのスケジューリングを行い、各ジョブの実行期間を決定する。そして管理サーバ100は、実行開始時刻になったジョブの実行指示を、いずれかの実行サーバに送信する。ジョブの実行指示を送信する場合、例えば管理サーバ100は、負荷分散処理を行い、各実行サーバの負荷が均等になるように、ジョブの実行指示を振り分ける。
また管理サーバ100は、ファイル管理サーバ400,400a,・・・それぞれの排他制御の負荷が均等になるように、各ファイルの排他制御を行うファイル管理サーバを決定する。例えば管理サーバ100は、ある期間内に実行されるジョブで使用されるファイルを特定し、そのファイルの排他制御が均等になるように、各ファイルの排他制御を行うファイル管理サーバを決定する。管理サーバ100は、各ファイルの排他制御を行うファイル管理サーバの指定を、所定間隔で動的に変更することもできる。そして管理サーバ100は、ジョブの実行の際に使用するファイルの排他制御を、そのファイル管理サーバ400,400a,・・・に依頼するのかに関する情報を、各実行サーバ200,200a,200b,・・・に通知する。
実行サーバ200,200a,200b,・・・は、ジョブを実行するコンピュータである。例えば実行サーバ200,200a,200b,・・・には、ジョブの実行に用いられるアプリケーションプログラムがインストールされている。そして実行サーバ200,200a,200b,・・・は、ジョブの実行要求に応じて、アプリケーションプログラムを用いたジョブを実行する。以下、実行サーバ200,200a,200b,・・・がアプリケーションプログラムを実行することで実現する機能を、単に「アプリケーション」と呼ぶこととする。
ストレージ装置300は、ジョブの実行に使用するファイルを記憶する記憶装置である。例えばストレージ装置300には、数千や万単位のファイルが格納されている。ストレージ装置300としては、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)が用いられる。またストレージ装置300は、RAID(Redundant Arrays of Inexpensive Disks)のようなディスクアレイであってもよい。
ファイル管理サーバ400,400a,・・・は、ストレージ装置300に格納されているファイルの排他制御を行う。例えばファイル管理サーバ400,400a,・・・は、いずれかの実行サーバからのファイルの排他獲得の依頼に基づいて、そのファイルを、その実行サーバ内のジョブによる占有状態とする。占有状態となったファイルは、例えば、占有しているジョブ以外のジョブからの更新を伴うアクセスが抑止される。またファイル管理サーバ400,400a,・・・は、いずれかの実行サーバからのファイルの排他解除の依頼に基づいて、そのファイルの占有状態を解除する。占有状態が解除されたファイルは、いずれのジョブからも更新操作が可能となる。
端末装置31,32,・・・は、ユーザが使用するコンピュータである。例えばユーザは、端末装置31,32,・・・を介して、管理サーバ100に、実行するジョブを指示する。
図4は、管理サーバのハードウェアの一構成例を示す図である。管理サーバ100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101の機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
メモリ102は、管理サーバ100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に必要な各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
バス109に接続されている周辺機器としては、HDD103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108がある。
HDD103は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103は、管理サーバ100の補助記憶装置として使用される。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの不揮発性の半導体記憶装置を使用することもできる。
グラフィック処理装置104には、モニタ21が接続されている。グラフィック処理装置104は、プロセッサ101からの命令に従って、画像をモニタ21の画面に表示させる。モニタ21としては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置などがある。
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をプロセッサ101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取りを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
機器接続インタフェース107は、管理サーバ100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
ネットワークインタフェース108は、ネットワーク20に接続されている。ネットワークインタフェース108は、ネットワーク20を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
以上のようなハードウェア構成によって、管理サーバ100の処理機能を実現することができる。なお、図4には、管理サーバ100のハードウェア構成を示したが、他の実行サーバ200,200a,200b,・・・、およびファイル管理サーバ400,400a,・・・も同様のハードウェアで実現できる。また第1の実施の形態に示した装置も、図4に示した管理サーバ100と同様のハードウェアにより実現することができる。
管理サーバ100、実行サーバ200,200a,200b,・・・、およびファイル管理サーバ400,400a,・・・は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。各サーバに実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、各サーバに実行させるプログラムをHDDに格納しておくことができる。各サーバのプロセッサは、HDD内のプログラムの少なくとも一部をメモリにロードし、プログラムを実行する。また各サーバに実行させるプログラムを、光ディスク、メモリ装置、メモリカードなどの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサからの制御により、HDDにインストールされた後、実行可能となる。またプロセッサが、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
図5は、各装置の機能の一例を示すブロック図である。管理サーバ100は、ジョブスケジューラ110とコントローラ120とを有する。
ジョブスケジューラ110は、ジョブの実行時間のスケジューリングを行う。例えばジョブスケジューラ110は、所定期間内に実行するバッチジョブを複数の実行サーバ200,200a,200b,・・・に均等に分散実行させるように、各ジョブの実行時間と、各ジョブを実行する実行サーバとを決定する。
コントローラ120は、ジョブスケジューラ110で決定された実行スケジュールに従って、ジョブの実行指示を、そのジョブを実行する実行サーバに送信する。またコントローラ120は、ジョブスケジューラ110で決定された実行スケジュールに基づいて、ストレージ装置300に格納されている各ファイル301,302,303,・・・の排他制御を行うファイル管理サーバを決定する。そしてコントローラ120は、各ファイル301,302,303,・・・の排他制御を行うファイル管理サーバを示す共有ファイル定義を、各実行サーバ200,200a,200b,・・・に配布する。
実行サーバ200は、複数のジョブ制御部211,212,213,・・・、複数のアプリケーション221,222,223,・・・、およびファイル管理部230を有する。ジョブ制御部211,212,213,・・・は、管理サーバ100からのジョブの実行指示に従ってアプリケーション221,222,223,・・・を起動し、ジョブを実行させる。またジョブ制御部211,212,213,・・・は、実行対象のジョブで使用するファイルの排他制御要求をファイル管理部230に送信する。他の実行サーバ200a,200b,・・・も、実行サーバ200と同様の機能を有している。
アプリケーション221,222,223,・・・は、ジョブ制御部211,212,213,・・・から与えられたジョブを実行する。なおアプリケーション221,222,223,・・・は、ジョブの実行に際し、ストレージ装置300内のファイルにアクセスする。
ファイル管理部230は、ジョブ制御部211,212,213,・・・からのファイルの排他制御要求を、ファイル管理サーバ400,400a,・・・に送信する。例えばファイル管理部230は、管理サーバ100から送られた共有ファイル定義を取得する。そしてファイル管理部230は、共有ファイル定義に従って、排他制御要求の送信先のファイル管理サーバを決定する。
ファイル管理サーバ400,400a,・・・は、ファイル排他制御部410,410a,・・・を有する。ファイル排他制御部410,410a,・・・は、排他制御要求に応じて、ファイルの排他制御を行う。
各装置がこのような機能を有していることにより、ファイルの排他制御が複数のファイル管理サーバ400,400a,・・・で分散処理される。なお、図5に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
図6は、ファイルの排他制御の分散処理の例を示す図である。なお図6には、3台の実行サーバ200,200a,200b、2台のファイル管理サーバ400,400aの場合の例を示しているが、さらに多くの実行サーバやファイル管理サーバがあってもよい。
管理サーバ100では、ジョブスケジューラ110が、所定期間内に実行するジョブに関するジョブ定義40,40a,40b,・・・に基づいて、ジョブの実行予定を示す実行スケジュール50を作成する。作成された実行スケジュール50とジョブ定義40,40a,40b,・・・とに基づいて、コントローラ120が共有ファイル定義60を作成する。共有ファイル定義60には、所定の時間帯ごとの、各ファイル管理サーバ400,400aが管理するファイルの分担が定義されている。コントローラ120は、共有ファイル定義60に設定された時間帯の開始時刻になると、その時間帯に関する時間帯別定義情報を、各実行サーバ200,200a,200bに送信する。送信された時間帯別定義情報は、各実行サーバ200,200a,200bのファイル管理部230,230a,230bで受信される。ファイル管理部230,230a,230bは、時間帯別定義情報を内部のメモリなどの記憶媒体に保持し、ジョブ制御部211,211a,211bからのファイルの排他制御要求を待つ。図6の例では、ストレージ装置300内のファイルのうち、「ファイルA」と「ファイルB」はファイル管理サーバ400で管理され、「ファイルC」と「ファイルD」はファイル管理サーバ400aで管理されるものとする。
その後、管理サーバ100のコントローラ120は、ジョブの実行スケジュールに基づいて、実行開始時刻になったジョブの実行指示を、実行サーバ200,200a,200bに送信する。実行サーバ200,200a,200bでは、ジョブ制御部211,211a,211bがジョブの実行指示を受信する。そしてジョブ制御部211,211a,211bは、実行するジョブで使用するファイルの排他獲得の排他制御要求を、ファイル管理部230,230a,230bに送信する。ファイル管理部230,230a,230bは、排他獲得の排他制御要求を受信すると、予め受信している時間帯別定義情報を参照し、制御対象のファイルごとに、排他制御を行うファイル管理サーバを判定する。そしてファイル管理部230,230a,230bは、各ファイルの排他制御を行うファイル管理サーバに、排他獲得の排他制御要求を送信する。
図6の例では、実行サーバ200のアプリケーション221が実行するジョブでは「ファイルA」を使用する。実行サーバ200aのアプリケーション221aが実行するジョブでは「ファイルB」と「ファイルC」とを使用する。実行サーバ200bのアプリケーション221bが実行するジョブでは「ファイルD」を使用する。この場合、実行サーバ200のファイル管理部230は、「ファイルA」を管理するファイル管理サーバ400に、「ファイルA」の排他獲得の排他制御要求を送信する。実行サーバ200aのファイル管理部230aは、「ファイルB」を管理するファイル管理サーバ400に、「ファイルB」の排他獲得の排他制御要求を送信する。またファイル管理部230aは、「ファイルC」を管理するファイル管理サーバ400aに、「ファイルC」の排他獲得の排他制御要求を送信する。実行サーバ200bのファイル管理部230bは、「ファイルD」を管理するファイル管理サーバ400aに、「ファイルD」の排他獲得の排他制御要求を送信する。
その後、各実行サーバ200のジョブ制御部211,211a,211bは、ジョブの実行指示内容に従ってアプリケーション221,221a,221bを起動する。そしてジョブ制御部211,211a,211bは、起動したアプリケーション221,221a,221bに、指示内容に応じたジョブを実行させる。アプリケーション221,221a,221bは、与えられたジョブを実行する。アプリケーション221,221a,221bは、ジョブの実行過程で、ストレージ装置300内のファイルにアクセスし、例えばファイルの内容を更新する。
このようにして、ファイルの排他制御の負荷が分散される。なお第2の実施の形態では、管理サーバ100が、所定の時間帯ごとに、その時間帯内で使用されるジョブが使用するファイルの情報を用いて、ファイル管理サーバ400,400a,・・・の負荷が均等になるように、共有ファイル定義を作成する。各ジョブで使用されるファイルは、ジョブ定義40,40a,40b,・・・に示されている。
図7は、ジョブ定義の一例を示す図である。ジョブごとに設けられたジョブ定義40,40a,40b,・・・には、ジョブ名が設定されている。ジョブ定義40,40a,40b,・・・には、複数のジョブステップ定義41,42,43,・・・が設定されている。ジョブステップ定義41,42,43,・・・は、ジョブ内で実行するステップごとの処理を定義している。ジョブステップ定義41,42,43,・・・には、ジョブの実行に使用するアプリケーションと1以上のファイルとが指定されている。またジョブステップ定義41,42,43,・・・には、例えばアプリケーションの実行時に指定する各種パラメータを含めることができる。このような内容のジョブ定義40,40a,40b,・・・は、図1に示した第1の実施の形態における使用ファイル情報7bの一例である。
なおジョブ定義40,40a,40b,・・・は、予め端末装置31,32,・・・などから管理サーバ100に入力される。このようなジョブ定義40,40a,40b,・・・に基づいて、実行するジョブの内容が認識でき、ジョブスケジューラ110によって、実行サーバ200,200a,200bの負荷が均等になるように、実行スケジュール50が作成される。
図8は、実行スケジュールの一例を示す図である。作成された実行スケジュール50には、ジョブのジョブ名に対応付けて、そのジョブを実行する実行サーバ、ジョブ実行の開始時刻、およびジョブ実行の終了時刻が設定されている。
図7・図8に示したようなジョブ定義40,40a,40b,・・・と実行スケジュール50とに基づいて、共有ファイル定義60が生成される。
図9は、共有ファイル定義の構造例を示す図である。共有ファイル定義60は、複数の時間帯別定義情報61,62,・・・を含んでいる。時間帯別定義情報61,62,・・・それぞれには、時刻情報が設定されている。時刻情報は、適用する時間帯別定義情報の切り替え時刻を示している。換言すると、時刻情報は、その下に設定されている時間帯別定義情報が適用される時間帯の開始時刻を示している。
時刻情報の下には、ファイル管理サーバのIPアドレスと、「ディレクトリ名+ファイル名」とが交互に設定されている。「ディレクトリ名+ファイル名」は、ファイルを管理するファイル管理サーバを判断するときの判定基準として使用される。
図10は、ファイル管理サーバが管理するファイルの定義例を示す図である。例えばストレージ装置300内のファイルの一覧が、「ディレクトリ名+ファイル名」の文字列でソートされる。そして各ファイル管理サーバには、ソート後のファイル一覧64のうちの、一定の範囲内の連続するファイルが、管理対象として割り当てられる。
文字列のソートでは、まず、文字列内の先頭の文字が比較される。比較された文字の文字コードの値が小さい文字列ほど、ソート後に上位に設定される。先頭の文字が同じ複数の文字列がある場合、後続の文字が順次比較され、比較される文字が最初に異なる文字となったとき、その文字の文字コードの値の大小が比較される。そして、文字コードの値が小さい方の文字列が上位、文字コードの値が大きい方の文字列が下位となる。
例えば特定のIPアドレスに対応するファイル管理サーバは、そのIPアドレスの上に設定されている「ディレクトリ名+ファイル名」に対応するファイルの次のファイルが、管理対象のファイルの範囲の先頭である。またそのIPアドレスの下に設定されている「ディレクトリ名+ファイル名」に対応するファイルが、管理対象のファイルの範囲の末尾である。図10の例では、ファイル管理サーバ「B」が管理するのは、ファイル一覧64において「/data/data-file5」から「/etc/etc-file6」までのファイルである。
IPアドレスの上に「ディレクトリ名+ファイル名」が設定されていない場合、そのIPアドレスに対応するファイル管理サーバは、ソート後のファイル一覧64の先頭のファイルを、管理対象のファイルの範囲の先頭とする。したがって、図10に示すファイル管理サーバ「A」が管理するのは、ファイル一覧64において「/apl/apl-file1」から「/data/data-file4」までのファイルである。
IPアドレスの下に「ディレクトリ名+ファイル名」が設定されていない場合、そのIPアドレスに対応するファイル管理サーバは、ソート後のファイル一覧64の末尾のファイルを、管理対象のファイルの範囲の末尾とする。したがって、図10に示すファイル管理サーバ「Z」が管理するのは、ファイル一覧64において「/work/work-file10」から「/work/work-file1000」までのファイルである。
このように、共有ファイル定義60において、各ファイル管理サーバが管理するファイルが、時間帯ごとに定義される。しかも、同一時間帯での各ファイル管理サーバでの排他制御の負荷が均等になるように、各ファイル管理サーバが管理するファイルが決定される。
以下に、共有ファイル定義の生成処理について詳細に説明する。
図11は、共有ファイル定義生成処理の手順の一例を示すフローチャートの前半である。
[ステップS101]コントローラ120は、実行予定のすべてのジョブについての、ジョブの開始時刻と終了時刻とを採取する。例えばコントローラ120は、ジョブスケジューラ110からすべてのジョブの実行予定を示す実行スケジュール50(図8参照)を受け取り、その実行スケジュール50からジョブの開始時刻と終了時刻とを取得する。
[ステップS102]コントローラ120は、ファイル一覧を作成する。ファイル一覧は、実行するジョブで使用されるファイルをリストアップしたものである。ファイル一覧には、例えば、そのファイルを実行するジョブや、そのジョブの開始時刻・終了時刻を設定することができる。ただし、ファイルにアクセスしないジョブに関する情報は、ファイル一覧への設定対象から除外される。なお、ファイル一覧作成処理の詳細は後述する(図13参照)。
[ステップS103]コントローラ120は、ファイル一覧の各ファイルのレコードを、そのファイルを実行するジョブの開始時刻を付与したレコードと、ファイルを実行するジョブの終了時刻を付与したレコードとに分ける。そしてコントローラは、ファイル一覧の各レコードを、開始時刻および終了時刻の値によって、昇順にソートする。
[ステップS104]コントローラ120は、変数nに「0」を設定する。変数nは、後述する配列B[n]のインデックスとして使用される。
[ステップS105]コントローラ120は、ファイル一覧の上位から順に、開始時刻または終了時刻の分単位までの値が同じレコードを選択し、そのレコードの数を変数N1に設定する。すなわち、開始時刻または終了時刻が、秒以下の値を無視したときに同じ時刻となるレコードが選択され、選択されたレコード数が変数N1に設定される。変数N1の値は、1分間隔の時間帯内に実行されるファイルの排他制御要求の数を表している。なお、すでにファイル一覧に設定されているすべての開始時刻または終了時刻についてレコード数のカウントが完了している場合、新たなレコードは選択されず、変数N1には0が設定される。
[ステップS106]コントローラ120は、変数N1の値が0か否かを判断する。変数N1の値が0の場合、ファイル一覧に設定されているすべての開始時刻または終了時刻について、同じ時間帯のレコード数のカウントが完了している。変数N1の値が0であれば、処理がステップS121(図15参照)に進められる。変数N1の値が0でなければ、処理がステップS107に進められる。
[ステップS107]コントローラ120は、変数N1の値が6000以下か否かを判断する。変数N1の値が6000以下であれば、処理がステップS105に進められる。変数N1の値が6000を超えている場合、処理がステップS108に進められる。
[ステップS108]コントローラ120は、ステップS105で選択したレコードの範囲を、配列B[n]に設定する。選択したレコードの範囲は、例えば、選択したレコードのうちの先頭のレコードの位置と、そのレコードと同じ時間帯の時刻が設定されたレコード数(変数N1に設定されている)との組で表される。
[ステップS109]コントローラ120は、変数nの値に1を加算し、処理をステップS105に進める。
このようにして、ファイル一覧の格納情報から、同一時間帯にファイルの排他制御要求が集中する箇所が導出される。図11の例では、1分幅の時間帯ごとに、その時間帯内の開始時刻または終了時刻が設定されたレコードの個数がカウントされる。各レコードの開始時刻または終了時刻は、そのレコードに示されるファイルの、排他獲得または排他解除の排他制御要求の出力時刻を示している。従って、ファイル一覧において、開始時刻または終了時刻が特定の時間帯内であるレコードの数は、その時間帯内に発生する排他制御要求の数を表している。
そして、ある時間帯内に発生する排他制御要求の数が所定数を超えた場合に、該当する時間帯において排他制御要求が集中すると判断される。図11の例では、1分間内の排他制御要求の数が6000を超えた場合に、処理が集中すると判断している(ステップS107)。6000という値は、1つのファイル管理サーバがボトルネックとならずに処理できる、1分あたりの排他制御要求数の最大値であり、以下のようにして導き出している。
ファイル管理処理には、オンライン処理と同様にTCP/IP(Transmission Control Protocol/Internet Protocol)を利用できる。ここで、1秒当たり処理可能なオンライン数(TPS:Transaction Per Second)が1000程度であるとする。すると、排他制御に対してCPUの1割を使用するとして、排他制御に100トランザクション分の資源が割り当てられる。すると1秒当たり100の排他制御要求を処理することができ、1分あたりに換算して6000となる。
排他制御要求数が6000を超えた時間帯については、ステップS108に示すように、その時間帯内の開始時刻または終了時刻が設定されたレコードの範囲が、配列B[n]に設定される。配列B[n]に設定された情報は、共有ファイル定義内の時間帯別定義情報の生成に使用される。
他方、排他制御要求数が6000以下の時間帯については、1つのファイル管理サーバに排他制御要求が集中したとしてもボトルネックにはならない。そのような場合、図11のステップS107で「YES」判定となり、ステップS108の処理は行われない。その結果、排他制御要求数が6000以下の時間帯内のレコードの範囲については、配列B[n]に設定されず、その時間帯は、時間帯別定義情報の生成対象から除外される。このように、排他制御要求がボトルネックとならないことが分かっている時間帯は、例えば、直前に適用していた時間帯別定義情報が継続して適用される。
次に、ステップS102に示したファイル一覧作成処理について詳細に説明する。
図12は、ファイル一覧作成処理の手順の一例を示すフローチャートである。
[ステップS111]コントローラ120は、実行スケジュール50から、1日に動作するジョブのうちの未処理のジョブを1つ選択し、そのジョブのジョブ名を変数Cに設定する。
[ステップS112]コントローラ120は、ステップS111においてジョブが選択されたか否かを判断する。例えば実行スケジュール50に設定されているすべてのジョブに対する処理が終了した場合、ステップS111ではジョブが選択されない。ジョブが選択されていない場合、ファイル一覧作成処理が終了する。ジョブが選択された場合、処理がステップS113に進められる。
[ステップS113]コントローラ120は、ジョブ名に対応するジョブ定義を取得する。例えば管理サーバ100は、予め入力されたジョブ定義をメモリ102に保持する。そしてコントローラ120は、メモリ102から、取得したジョブ名が設定されたジョブ定義を取得する。
[ステップS114]コントローラ120は、取得したジョブ定義内に設定されているファイルのうちの未選択のファイルを1つ選択し、そのファイルの「ディレクトリ名+ファイル名」を変数Dに設定する。
[ステップS115]コントローラ120は、ステップS114においてファイルが選択されたか否かを判断する。例えば取得したジョブ定義内のすべてのファイルが選択済みとなった場合、その後のステップS114ではファイルが選択されない。ファイルが選択されなかった場合、処理がステップS111に進められる。ファイルが選択された場合、処理がステップS116に進められる。
[ステップS116]コントローラ120は、ファイル一覧における、変数Cで示されるジョブ名と、変数Dに設定された「ディレクトリ名+ファイル名」を設定する。またコントローラ120は、実行スケジュール50から、変数Cで示されたジョブ名に対応する開始時刻と終了時刻とを取得する。そしてコントローラ120は、取得した開始時刻と終了時刻とを、変数Cで示されるジョブ名に対応付けて、ファイル一覧に設定する。その後、処理がステップS114に進められる。
このようにして、実行する各ジョブで使用するファイルのリストであるファイル一覧が作成される。
図13は、ファイル一覧の一例を示す図である。ファイル一覧64には、ジョブ名、ディレクトリ名、ファイル名、開始時刻、および終了時刻が設定されている。ジョブ名は、実行されるジョブの名称である。ディレクトリ名は、実行されるジョブで使用されるファイルが格納されたディレクトリの名称である。ファイル名は、実行されるジョブで使用されるファイルの名称である。開始時刻は、ジョブの開始時刻である。ジョブの開始時刻に、そのジョブで使用されるファイルの排他獲得を示す排他制御要求が出力される。終了時刻は、ジョブの終了時刻である。ジョブの終了時刻に、そのジョブで使用されるファイルの排他解除を示す排他制御要求が出力される。
作成されたファイル一覧64の各レコードは、図11のステップS103において、開始時刻は設定されているが、終了時刻は設定されていないレコードと、終了時刻は設定されているが、開始時刻は設定されていないレコードとに分離される。そして、開始時刻または終了時刻に設定された時刻により、ファイル一覧64内のレコードがソートされる。
図14は、ソート後のファイル一覧の一例を示す図である。ファイル一覧64内の各レコードを時刻でソートすることにより、時刻が早い順に、レコードが並べられる。そして同じ時刻(分単位まで)が設定されたレコードの数が数えられる。図14の例では、2時17分が設定されたレコードが9000個、2:20分が設定されたレコードが6000個である。一分間に6000を超える排他制御要求が出力されたときに、排他制御がボトルネックとなる可能性がある場合、2時17分の1分間の時間帯が、排他制御要求の振り分け最適化の対象とされる。排他制御要求の振り分け最適化の対象となった時間帯に対応する、ファイル一覧64内のレコードの範囲が、配列B[n]に設定される。
次に、配列B[n]に設定された情報に基づき、時間帯別定義情報が生成され、共有ファイル定義に設定される。
図15は、共有ファイル定義生成処理の手順の一例を示すフローチャートの後半である。
[ステップS121]コントローラ120は、配列B[n]をn=0から順に取得する。配列B[n]には、ファイル管理サーバの負荷が大きくなる時間帯において、排他制御の対象となるファイルを示すレコードの範囲が、変数Aと変数N1とで示されている。変数Aは、ファイル一覧内の該当する複数のレコードのうちの先頭のレコードの位置を示しており、変数N1は、該当するレコード数を示している。そこで、コントローラ120は、ファイル一覧内の変数Aで示される位置のレコードから順に、変数N1に示された数のレコードを取得する。
[ステップS122]コントローラ120は、ステップS121において配列B[n]に設定された情報が取得できたか否かを判断する。例えば、nに対応する要素が配列B[n]に登録されていない場合、ステップS121において情報が取得できない。情報が取得できなかった場合、コントローラ120は、配列B[n]に登録されたすべての要素に関して処理が完了したものと認識し、共有ファイル定義生成処理を終了する。情報が取得できた場合、処理がステップS123に進められる。
[ステップS123]コントローラ120は、取得した情報で示された範囲のレコードをファイル一覧から取得し、各レコードを「ディレクトリ名+ファイル名」でソートする。
[ステップS124]コントローラ120は、取得したファイルの数をファイル管理サーバ数で割った商を、変数N2に設定する。なおコントローラ120は、ファイル数がファイル管理サーバ数で割り切れなかった場合、例えば除算の商に1を加えた値を、変数N2に設定してもよい。
[ステップS125]コントローラ120は、取得したレコードに基づく時間帯別定義情報を、共有ファイル定義に設定する。例えばコントローラ120は、取得したレコードそれぞれに設定されている開始時刻または終了時刻のうちの最先の時刻を、共有ファイル定義に追加する。次にコントローラ120は、ソートされたレコードのうちの、先頭から、N2、N2×2、・・・番目のレコードを特定し、特定したレコードからディレクトリ名ファイル名を抽出する。そしてコントローラ120は、ファイル管理サーバのIPアドレスと取得した「ディレクトリ名+ファイル名」とを交互に追加する。例えばコントローラ120は、共有ファイル定義の時刻情報の下に、1台のファイル管理サーバのIPアドレスを設定する。次にコントローラ120は、N2番目のレコードから抽出された「ディレクトリ名+ファイル名」を設定する。その後、IPアドレスの設定、N2×2番目のレコードの「ディレクトリ名+ファイル名」の設定、IPアドレスの設定という順に、共有ファイル定義に情報が設定される。その結果、ファイル管理定義に、配列B[n]に基づく時間帯別定義情報が追加される。時間帯別定義情報の追加が完了すると処理がステップS121に進められる。このような時間帯別定義情報の追加処理が、配列B[n]に設定された要素に対して実行されることで、共有ファイル定義が生成される。
なお、コントローラ120は、取得したレコードそれぞれに設定されている開始時刻または終了時刻のうちの最先の時刻を跨いで実行されるジョブが存在しない場合のみ、新たな時間帯別定義情報を設定するようにしてもよい。ある時刻を跨いで実行されるジョブとは、その時刻よりも早く実行が開始され、その時刻の後に実行が終了するジョブである。このようなジョブが存在しない場合のみ新たな時間帯別定義情報を設定することで、あるジョブがファイルを占有している間に、そのファイルの排他制御を行うファイル管理サーバが切り替わることを抑止できる。
なお、排他制御中のファイルを管理するファイル管理サーバの変更を可能とするように、複数のファイル管理サーバが連携動作している場合もあり得る。このような場合には、取得したレコードそれぞれに設定されている開始時刻または終了時刻のうちの最先の時刻を跨いで実行されるジョブが存在しても、その時刻を適用開始時刻とする時間帯別定義情報を設定することができる。
このようにして、ディレクトリをどのファイル管理サーバで管理するのかが決定され、共有ファイル定義が自動生成される。以下、図16、図17を参照して、図14に示す、2時17分のレコードに基づく時間帯別定義情報の生成例を示す。
図16は、過大な負荷がかかる時間帯のレコードのソート結果を示す図である。図14に示すファイル一覧64から、開始時刻または終了時刻が、負荷が過大となる時間帯(2時17分の1分間)に含まれるレコードが抽出され、「ディレクトリ名+ファイル名」の文字列でソートされる。ここで、ファイル管理サーバ数が「3」の場合を想定する。抽出されるレコード数は9000であるため、レコード数をファイル管理サーバ数で除算すると、3000となる。するとソート後の3000番目のレコード65と6000番目のレコード66とが特定される。そして特定されたレコード65,66が、2時17分の時間帯別定義情報として、共有ファイル定義に設定される。
図17は、共有ファイル定義の一例を示す図である。共有ファイル定義70には、2時17分を適用開始時刻とする時間帯別定義情報71が設定されている。時間帯別定義情報71には、図16に示す複数のレコードのうち、特定されたレコード65,66の「ディレクトリ名+ファイル名」が、ファイル管理サーバのIPアドレスの間に挿入されている。
このような共有ファイル定義70に設定された時間帯別定義情報71は、適用開始時刻になると、実行サーバ200,200a,200b,・・・に配信される。
図18は、共有ファイル定義配信処理の手順の一例を示すフローチャートである。
[ステップS131]管理サーバ100のコントローラ120は、共有ファイル定義70の先頭から順に、未選択の時刻を1つ選択する。
[ステップS132]コントローラ120は、ステップS131において時刻が選択されたか否かを判断する。例えば共有ファイル定義70に設定されている時刻のすべてが選択済みになった後は、ステップS131において時刻が選択されない。時刻が選択されなかった場合、共有ファイル定義配信処理が終了する。時刻が選択された場合、処理がステップS133に進められる。
[ステップS133]コントローラ120は、現在時刻を取得する。例えばコントローラ120は、管理サーバ100内の時刻管理機能から現在時刻を取得する。
[ステップS134]コントローラ120は、選択した時刻と現在時刻が一致したか否かを判断する。一致した場合、処理がステップS135に進められる。一致しない場合、処理がステップS133に進められる。
[ステップS135]コントローラ120は、選択した時刻に対応する時間帯別定義情報を、各実行サーバ200,200a,200b,・・・に配信する。配信された時間帯別定義情報は、各実行サーバ200,200a,200b,・・・において、メモリに展開される。その後、処理がステップS131に進められる。
共有ファイル定義内の最初の時間の時間帯別定義情報を配信した後、コントローラ120は、実行スケジュール50に従って、ジョブの実行指示を、実行サーバに送信する。すると実行サーバでジョブが実行される。
図19は、実行サーバによるジョブ制御処理の手順の一例を示すフローチャートである。以下、実行サーバ200がジョブ制御を行う場合を例に採り、図19の処理を説明する。
[ステップS201]ジョブ制御部211は、管理サーバ100からのジョブの実行指示を受信する。ジョブの実行指示には、例えば実行するジョブのジョブ定義が含まれる。
[ステップS202]ジョブ制御部211は、ファイル管理部230にファイルの排他獲得を依頼する。例えばジョブ制御部211は、実行するジョブのジョブ定義から、そのジョブで使用するファイルの「ディレクトリ名+ファイル名」を取得する。そしてジョブ制御部211は、「ディレクトリ名+ファイル名」により排他制御対象のファイルを指定した排他獲得の依頼を、ファイル管理部230に送信する。
[ステップS203]ジョブ制御部211は、ジョブ定義で指定されたアプリケーションを実行する。この際、ジョブ制御部211は、例えばジョブ定義に示されるパラメータなどの情報をアプリケーションに入力することで、実行するジョブの内容をアプリケーションに指示する。
[ステップS204]ジョブ制御部211は、アプリケーションによるジョブの実行が完了すると、ファイルの排他解除依頼をファイル管理部230に送信する。その後、ジョブ制御が終了する。
このようにして、ジョブ実行開始時と終了時に、それぞれファイルの排他制御の依頼が出力される。出力された排他制御要求に基づいて、ファイル管理部230によって、排他制御対象のファイルを管理するファイル管理サーバに、排他制御要求が送信される。
図20は、排他制御要求処理の手順の一例を示すフローチャートである。
[ステップS211]ファイル管理部230は、ジョブ制御部211からの排他制御要求を受信する。
[ステップS212]ファイル管理部230は、排他制御要求の内容を判断する。排他獲得依頼であれば、処理がステップS213に進められる。排他解除依頼であれば、処理がステップS216に進められる。
[ステップS213]依頼内容が排他獲得の場合、ファイル管理部230は、ジョブ定義から、ジョブで使用するファイルの「ディレクトリ名+ファイル名」を取得する。
[ステップS214]ファイル管理部230は、ジョブで使用するファイルを、管理するファイル管理サーバごとに分類する。この処理の詳細は後述する(図21参照)。
[ステップS215]ファイル管理部230は、ジョブで使用するファイルを管理するファイル管理サーバそれぞれに、排他獲得の排他制御を依頼する。この処理の詳細は後述する(図23参照)。その後、排他制御要求処理が終了する。
[ステップS216]依頼内容が排他解除の場合、ファイル管理部230は、ジョブで使用したファイルを管理するファイル管理サーバそれぞれに、排他解除の排他制御を依頼する。この処理の詳細は後述する(図24参照)。その後、排他制御要求処理が終了する。
次に、ファイル分類処理の詳細について説明する。
図21は、ファイル分類処理の手順の一例を示すフローチャートである。
[ステップS221]ファイル管理部230は、ステップS213(図20参照)で取得した「ディレクトリ名+ファイル名」のうちの、未処理の「ディレクトリ名+ファイル名」の1つを変数Eに設定する。
[ステップS222]ファイル管理部230は、ステップS221の処理により変数Eに情報が設定されたか否かを判断する。例えば取得した「ディレクトリ名+ファイル名」のすべてが選択済みとなった後にステップS221の処理が行われた場合、変数Eには情報が設定されない。情報が設定されていない場合、ファイル分類処理が終了する。情報が設定されている場合、処理がステップS223に進められる。
[ステップS223]ファイル管理部230は、予めメモリに展開されている時間帯別定義情報に示されるファイル管理サーバのうちの、未選択のファイル管理サーバの1つを選択し、変数Sに設定する。例えば時間帯別定義情報には、IPアドレスによってファイル管理サーバが示されている。そこでファイル管理部230は、時間帯別定義情報からファイル管理サーバのIPアドレスを1つ選択する。さらにファイル管理部230は、選択したファイル管理サーバ(IPアドレス)の下の「ディレクトリ名+ファイル名」を変数Fに設定する。
[ステップS224]ファイル管理部230は、変数Fに情報が設定されたか否かを判断する。例えばステップS223で選択したファイル管理サーバが、時間帯別定義情報内の最後のファイル管理サーバの場合、その下には「ディレクトリ名+ファイル名」は設定されていない。このような場合、変数Fには情報が設定されない。情報が設定されていない場合、処理がステップS226に進められる。情報が設定されていれば、処理がステップS225に進められる。
[ステップS225]ファイル管理部230は、変数Eに設定された「ディレクトリ名+ファイル名」と変数Fに設定された「ディレクトリ名+ファイル名」との、文字列を比較する。例えばファイル管理部230は、文字列を比較し、文字列をソートしたときに、どちらの「ディレクトリ名+ファイル名」が上位となるかを判断する。文字列のソートでは、例えば文字列の先頭から順位文字コードが比較され、最初に異なる文字コードとなったとき、文字コードの値が小さい方が上位となる。変数Eに設定された文字列の方が下位(Eの文字コードの方が値が大きい)となるのであれば、処理がステップS223に進められる。文字列が同じか、あるいは変数Eに設定された文字列の方が上位(Fの文字コードの方が値が大きい)となるのであれば、処理がステップS226に進められる。
[ステップS226]ファイル管理部230は、変数Sに設定されているサーバに対応する排他依頼テーブルがあるか否かを判断する。該当する排他依頼テーブルがあれば、処理がステップS228に進められる。該当する排他依頼テーブルがなければ、処理がステップS227に進められる。
[ステップS227]ファイル管理部230は、変数Sに設定されているサーバに対応する排他依頼テーブルを作成する。
[ステップS228]ファイル管理部230は、変数Sに対応する排他依頼テーブルに変数Eの「ディレクトリ名+ファイル名」を追加する。その後、処理がステップS221に進められる。
このようにして、ファイル管理サーバごとの排他依頼テーブルが作成され、ジョブで使用するファイルの「ディレクトリ名+ファイル名」が、いずれかの排他依頼テーブルに設定される。
図22は、排他依頼テーブルの一例を示す図である。排他依頼テーブル81,82,・・・は、ファイル管理サーバごとに設けられている。例えば排他依頼テーブル81,82,・・・は、ファイル管理サーバのIPアドレスに対応付けられている。そして、排他依頼テーブル81,82,・・・には、実行するジョブで使用するファイルのうち、対応するファイル管理サーバで管理するファイルの「ディレクトリ名+ファイル名」が設定されている。
このような排他依頼テーブルをファイル管理サーバに送信することで、複数のファイルに関する排他制御の依頼を一括で行うことができる。
図23は、排他獲得の排他制御要求の手順の一例を示すフローチャートである。
[ステップS231]ファイル管理部230は、未選択の排他依頼テーブルのうちの1つを選択する。
[ステップS232]ファイル管理部230は、ステップS231において排他依頼テーブルが選択されたか否かを判断する。例えばすべての排他依頼テーブルが選択済みであり、ステップS231を実行する際に、未選択の排他依頼テーブルが残っていない場合、排他依頼テーブルは選択されない。排他依頼テーブルが選択されていなければ、排他獲得の排他制御要求処理が終了する。排他依頼テーブルが選択されていれば、処理がステップS233に進められる。
[ステップS233]ファイル管理部230は、選択された排他依頼テーブルに対応するファイル管理サーバに、その排他依頼テーブルに設定されているファイルの排他獲得の排他制御要求を送信する。例えばファイル管理部230は、排他依頼テーブルに対応するIPアドレスを宛先として、ジョブ定義に示されるジョブ名および排他依頼テーブルを含む排他獲得依頼を送信する。その後、処理がステップS231に進められる。
ジョブで使用するファイルの排他獲得が完了すると、実行サーバでジョブが実行される。そしてジョブの実行が完了すると、排他解除の排他制御要求が行われる。
図24は、排他解除の排他制御要求の手順の一例を示すフローチャートである。
[ステップS241]ファイル管理部230は、未選択の排他依頼テーブルのうちの1つを選択する。
[ステップS242]ファイル管理部230は、ステップS241において排他依頼テーブルが選択されたか否かを判断する。例えばすべての排他依頼テーブルが選択済みであり、ステップS241を実行する際に、未選択の排他依頼テーブルが残っていない場合、排他依頼テーブルは選択されない。排他依頼テーブルが選択されていなければ、排他解除の排他制御要求処理が終了する。排他依頼テーブルが選択されていれば、処理がステップS243に進められる。
[ステップS243]ファイル管理部230は、選択された排他依頼テーブルに対応するファイル管理サーバに、その排他依頼テーブルに設定されているファイルの排他解除の排他制御要求を送信する。例えばファイル管理部230は、排他依頼テーブルに対応するIPアドレスを宛先として、ジョブ定義に示されるジョブ名および排他依頼テーブルを含む排他解除依頼を送信する。その後、処理がステップS241に進められる。
次に、ファイル管理サーバによる排他制御処理について説明する。
図25は、排他制御処理の手順の一例を示すフローチャートである。
[ステップS301]ファイル管理サーバ400のファイル排他制御部411は、いずれかの実行サーバから、排他獲得または排他解除の排他制御要求を受信する。排他制御要求には、排他制御の対象となるファイルを示す排他依頼テーブルと、それらのファイルを使用するジョブを示すジョブ名とが含まれる。
[ステップS302]ファイル排他制御部411は、制御対象のファイルのうち、未選択のファイルを1つ選択する。
[ステップS303]ファイル排他制御部411は、ステップS302でファイルが選択されたか否かを判断する。例えばすべてのファイルが選択済みとなった後に、ステップS302の処理を実行すると、ファイルが選択されない。ファイルが選択されていない場合、排他制御処理が終了する。ファイルが選択されていれば、処理がステップS304に進められる。
[ステップS304]ファイル排他制御部411は、排他制御を実行する。例えばファイル制御部411は、排他獲得の排他制御要求であれば、排他制御要求に含まれる排他依頼テーブルに示される「ディレクトリ名+ファイル名」に対応する各ファイルの状態を、排他制御要求で示されるジョブによる占有状態にする。ファイル排他制御部411は、占有状態となったファイルに関し、そのファイルを占有するジョブを実行するアプリケーション以外からの排他制御要求や更新操作を抑止する。またファイル排他制御部411は、排他解除の排他制御要求であれば、排他制御要求に含まれる排他依頼テーブルに示される「ディレクトリ名+ファイル名」に対応する各ファイルの状態を、解放状態にする。解放状態となったファイルは、占有状態が解除され、以後、任意のジョブによる占有が可能となる。
[ステップS305]ファイル排他制御部411は、ステップS304の排他制御が成功したか否かを判断する。排他制御が成功した場合、処理がステップS302に進められる。成功していなければ、処理がステップS304に進められる。
以上のようにして、分散システム環境でのファイルの排他制御を、適切に分散させることができ、ファイルの排他制御がボトルネックとなることが抑止される。その結果、システム全体を効率的に運用できる。
しかも、ジョブ実行時には、ジョブで使用するファイルを管理するファイル管理サーバが自動で割り出され、そのファイル管理サーバでファイルの排他制御が行われる。このように、ファイルの排他要求の負荷の分散が自動で行われるため、ファイルの排他制御要求数の増大をユーザが意識する必要がなくなる。その結果、システム運用の人的負荷が軽減される。また排他制御要求の送信先の切り替え判断に、人の判断が介在しないため、人の判断の誤りによる不適切な排他制御要求の分散が行われることが抑止される。
さらに第2の実施の形態では、例えば排他制御要求が所定数以上となる時間帯に限定して、排他制御要求の送信先の決定処理を行う。これにより、排他制御要求数が過大となる時間帯を適切に判定し、その時間帯における排他制御要求の送信先を適切に分散させることができる。しかも、排他制御要求数が過大となる時間帯だけ、排他制御要求の送信先の切り替えを行うようにすることで、排他制御が遅延するおそれのない時間帯におけるシステムの処理負荷を軽減できる。
なお第2の実施の形態では、ファイルごとに、そのファイルの排他制御を行うファイル管理サーバを決定しているが、ディレクトリごとに、そのディレクトリ内のファイルの排他制御を行うファイル管理サーバを決定することもできる。ただし、ディレクトリ単位での排他制御の分散を行うと、すべてのファイルが同一ディレクトリに配置されている場合に、排他制御の処理を分散できない。そのため、同一ディレクトリに大量のファイルが格納されている場合には、ファイルごとにファイルの排他制御を行うファイル管理サーバを決定するのが適切である。
また第2の実施の形態では、ジョブスケジューラ110がジョブの実行スケジュール50を作成しているが、ユーザが任意に編集した実行スケジュール50をコントローラ120に入力することもできる。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。