(57)【要約】【課題】計算機能力を最大限に使用してジョブを実行するための処理時間を短縮すること。【解決手段】ユーザからジョブの依頼を受けたときに、コンピュータ１のＬＤＳプログラム１１１からジョブ依頼をコンピュータ２に転送し、コンピュータ２において、ストレージ（ディスクＡ）１０１に対してデータ準備処理と空き領域確保処理を実行し、その結果をコンピュータ１のＦＩＦＯ１０１に格納し、ＦＩＦＯ１０９の出力がジョブリリースプログラム１１０を介してＬＤＳプログラム１１１に転送されると、その内容がコンピュータ３に転送され、コンピュータ３において、コンピュータ群１１２の中から実行すべきコンピュータを選択し、選択したコンピュータ１１２に対してジョブの実行を指令する。【選択図】図１
2008015888.tif 000002
【特許請求の範囲】
【請求項１】
複数の計算機を備え、ジョブを前記複数の計算機に分散して実行させる、負荷分散システムにおいて、
前記複数の計算機が前記ジョブを実行するためにアクセスするストレージと、
前記複数の計算機のうち、負荷が少ない計算機に前記ジョブを実行させる、第１の管理装置と、
複数の前記ジョブを受付け、当該受付けた複数のジョブをキューイングして、第１のジョブキューに順番に格納する、第２の管理装置と、
前記第１のジョブキューのジョブを順番に取り出し、前記計算機が前記取り出したジョブを実行するのに必要なデータに対する処理を前記ストレージ装置に対して実行する第３の管理装置と、
前記処理が終了した複数のジョブを、前記計算機によって実行されることを待つ実行待ちジョブとして順番に格納する、第２のジョブキューと、
を備え、
前記第１の管理装置は、第２のジョブキューから前記複数のジョブを順番に取り出し、当該取り出したジョブを前記計算機に実行させる、
負荷分散システム。
【請求項２】
前記ストレージを第１のストレージとし、さらに第２のストレージを備え、
前記第３の管理装置は、前記第１のストレージに前記第１のジョブキューのジョブに必要なデータがあるか否かを判断し、この判断が否定された時には、前記第２のストレージから前記データを前記第１のジョブに移動させる、請求項１記載の負荷分散システム。
【請求項３】
前記第３の管理装置は、前記第１のジョブキューのジョブを前記計算機が処理するのに必要なデータ量格納できる記憶容量が前記ストレージにあるか否かを判断し、この容量が無い場合には、前記ストレージに当該容量を確保する、請求項１記載の負荷分散システム。
【請求項４】
前記ストレージを第１のストレージとし、さらに第２のストレージを備え、前記第３の管理装置は、前記第１のストレージのデータを前記第２のストレージに移動させて、前記記憶容量を前記第１のストレージに確保する、請求項３記載の負荷分散システム。
【請求項５】
前記第１のストレージは前記第２のストレージより前記計算機が高速にアクセスできる、記憶デバイスを備えている、請求項２又は４記載の負荷分散システム。
【請求項６】
前記計算機によりアクセスされてから、所定の時間経過したデータを前記第１のストレージから前記第２のストレージに移動させる、請求項２又は４記載の負荷分散システム。
【請求項７】
前記第３の管理装置は、前記ジョブに必要な前記記憶容量を見積もり、当該見積もられた記憶容量を前記第１のストレージに確保する、請求項３記載のシステム。
【請求項８】
前記第１の管理装置は、前記各計算機が搭載するＣＰＵ数をパラメータとして、前記各計算機の残計算能力を算出し、前記算出結果の最大のコンピュータを、前記ジョブを実行すべきコンピュータとして選択する、請求項１記載の負荷分散制御システム。
【請求項９】
前記第１の管理装置は、前記複数の計算機をクラスタとして管理するプログラムを備え、
各計算機は前記管理プログラムとアクセスするブリッジプログラムを備え、
前記計算機がジョブの実行過程で、前記ジョブの実行に関数する情報の授受を、前記クラスタ管理プログラムと前記ブリッジプログラムとの間で実行してなることを特徴とする請求項１に記載の負荷分散制御システム。
【請求項１０】
前記第１の管理装置は、前記各計算機が同時に実行できるジョブ数をパラメータとして、前記計算機の残計算能力を算出し、前記算出値をＣＰＵアイドル率で補正し、前記補正された残計算能力の最大の計算機をジョブを実行すべき計算機として選択してなる、請求項９に記載の負荷分散制御システム。
【請求項１１】
前記第３の管理装置は、ジョブを実行すべき計算機によってジョブが終了したときに、前記ジョブの実行前に前記ストレージに確保した空き容量よりも過剰な記憶容量を前記ジョブを実行する計算機が当該ジョブを処理する過程で使用したときには、その過剰分を含む空き容量を、次のジョブに対して前記ストレージに確保してなる、請求項７記載の負荷分散制御システム。
【請求項１２】
前記何れかの一つの管理装置が有するプログラムに基づく処理は親プロセスと子プロセスに分割され、前記プログラム全体の処理を前記子プロセスが受け持ち、前記親プロセスは、前記子プロセスの存在を監視し、前記子プロセスが消滅したときには、新たな子プロセスを生成してなる、請求項１に記載の負荷分散制御システム。
【請求項１３】
複数の計算機のうち、計算余力がある計算機を選択し、選択された計算機にジョブを実行させる、負荷分散制御方法において、
前記計算機に処理の要求があったジョブを第１の行列に格納する第１の工程と、
前記第１の待ち行列から前記ジョブを取り出し、前記計算機が前記ジョブを実行する際にアクセスするストレージに、取り出したジョブの実行に必要なデータに対する処理を前記ストレージに対して実行する第２工程と、
前記第２の工程の処理が終わったジョブを第２の行列に格納する第３の工程と、
前記第２の行列のジョブを順番に取り出して、前記選択された計算機に、取り出されたジョブを実行させる第４の工程と、
を備える、負荷分散制御方法。
【請求項１４】
複数の計算機からある、一つ又は複数の計算機を選択し、選択された計算機にジョブを実行させる、ジョブ実行方法において、
前記計算機に処理の要求があったジョブを第１の行列に格納する第１の工程と、
前記第１の待ち行列から前記ジョブを取り出し、前記計算機が前記ジョブを実行する際にアクセスするストレージに、取り出したジョブの実行に必要なデータに対する処理を前記ストレージに対して実行する第２工程と、
前記第２の工程の処理が終わったジョブを第２の行列に格納する第３の工程と、
前記第２の行列のジョブを順番に取り出して、前記選択された計算機に、取り出されたジョブを実行させる第４の工程と、
を備える、ジョブ実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は複数の計算機を備えるシステムにおいて、複数の計算機の負荷を分散して、計算機にジョブを実行させるための負荷分散制御システム及び負荷分散制御方法に関するものである。
【背景技術】
【０００２】
近年、計算機の負荷分散技術として各種のものが提案されている（後記の特許文献１、２、３を参照されたい）。負荷分散制御を行うに際しては、計算機が高性能になることにより、計算機に実行させるジョブを分散させることの良し悪しによって、実行ジョブに対する処理結果が求まるまでの処理時間（TAT（Turn  Around  Time））に大きな差が生じる。また、ワークステーション（ＷＳ）が普及していることにより、負荷分散のための制御パラメータが複雑化し、負荷分散を効率良く行うことが難しくなっている。
【０００３】
一方、アプリケーションの大規模・高機能化により、アプリケーションを実行して結果を出すまでの、計算機システムに必要な処理時間が急増しており、アプリケーションが果たそうとしている全てのジョブに対して、ジョブを安定的に実行するための環境が必要であるが、それが達成されるに至っていない。ジョブが完了前にジョブが異常に終了した際の原因を解析してみると、データの記憶手段であるディスクの容量が不足していることや、アプリケーションに対してオペレータがデータを間違って指示することが多数見受けられた。さらに、ディスクへのIO  Waitが発生したＣＰＵをみてみると、そのＣＰＵの使用率が大幅に低下していることも多い。
【特許文献１】特開平１０−４９５０４号公報
【特許文献２】特開平１１−３３２３号公報
【特許文献３】特開平１０−３３４０５７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
既述の負荷分散制御を行うに際して、特許文献１では、ジョブを単一ジョブあるいはジョブグループとして階層的に負荷分散単位に記憶保持してこれを管理し、保持管理された任意階層のジョブをジョブ登録マシンからジョブ実行マシンに負荷分散単位で転送する構成が採用されているが、ディスクを最適化したり、プログラムプロセスを安定化したりすることは十分配慮されていない。
【０００５】
特許文献２は、負荷状況を集中的に監視・管理し、この結果を基に負荷が最も低い計算機を選択して、この計算機にジョブを実行する構成を採用している。ディスクに関してはパラメータを用いて、実行可能なマシンの候補から外すことは可能であるが、このことを考慮すると計算機の稼働率が低下することになる。
【０００６】
さらに、特許文献３では、バッジジョブの資源使用特性を分類し、分類に適合した資源負荷状況にあるバッジジョブ実行サーバをバッジジョブ実行サーバ資源負荷状況取得サブシステムからの情報を基に動的に決定する構成を採用しているが、ディスクを最適化したり、プログラムプロセスを安定化したりすることは十分考慮されていない。
【０００７】
すなわち、従来の負荷分散技術であっても、ＲＡＩＤの論理設計のためのアプリケーションプログラムなどが大量のデータを処理する場合に、アプリケーションプログラムを実行するジョブの処理が不安定になる場合や、ジョブの処理時間が長くなる場合や、さらに、データが格納されているストレージへの計算機のアクセス性能が低下する場合が発生していた。
【０００８】
例えば、後述のように“ＤＬＣＭ”の考え方から、計算機がアクセスするデータを複数のストレージに分散して、記憶資源を有効に使用しようとする技術がある。計算機がアクセスするストレージに、ジョブの実行に必要なデータが存在しない場合には、負荷分散が実現された環境下でも、計算機によるストレージへのＩ／Ｏアクセスが、待ち或いはエラーになるおそれがある。また、計算機がアクセスするストレージに、ジョブを完了するために必要な記憶容量が無い場合も同様である。
【０００９】
そこで、本発明は、複数の計算機を備え、計算機の負荷を分散させるシステムにおいて、データが格納されているストレージ装置への計算機のアクセス性能を向上させることにより、前記計算機がアプリケーションプログラムを実行して前記ジョブの処理を効率的に行い、以って前記ＴＡＴを短縮可能な負荷分散システムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、前記目的を達成するために、ジョブを計算機が実行するのに必要なデータを格納するストレージを、ジョブを実行する上で最適化し、この最適化が終わったジョブを計算機に実行させる際、計算機の負荷を分散させるようにしたことを特徴とするものである。
【００１１】
さらに、本発明は、前記ジョブに対して、前記ストレージを最適化するステップと、最適化が終わったジョブを前記計算機に実行させるステップと、を処理する際に、キュー構造を採用し、ユーザ装置から送られた複数のジョブを順番に処理することによって、ジョブの処理を遅らせることなく前記目的を達成することを特徴とする。“最適化”の具体例には、計算機がジョブを実行する上で参照するデータを、ジョブの実行前に計算機がアクセスするストレージへ移動させること、あるいは、ジョブに必要な記憶容量をストレージに確保する、ことがある。
【００１２】
本発明の第１は、複数の計算機を備え、ユーザから受付けたジョブを、前記複数の計算機に分散して実行させる、負荷分散システムにおいて、前記複数の計算機が前記ジョブを実行するためにアクセスするストレージと、前記複数の計算機のうち、負荷が少ない計算機に前記ジョブを実行させる、第１の管理装置と、前記ユーザから、複数の前記ジョブを受付け、当該受付けた複数のジョブをキューイングして、第１のジョブキューに順番に格納する、第２の管理装置と、前記第１のジョブキューのジョブ順番に取り出し、前記計算機が前記取り出したジョブを実行するのに必要なデータに対する処理を前記ストレージ装置に対して実行する第３の管理装置と、前記処理が終了した複数のジョブを、前記計算機によって実行されることを待つ実行待ちジョブとして順番に格納する、第２のジョブキューと、を備え、前記第１の管理装置は、第２のジョブキューから前記複数のジョブを順番に取り出し、当該取り出したジョブを前記計算機に実行させる、ことを特徴とするものである。
【００１３】
本発明の第２は、複数の計算機のうち、計算余力がある計算機を選択し、選択された計算機にジョブを実行させる、負荷分散制御方法において、前記計算機に処理の要求があったジョブを第１の行列に格納する第１の工程と、前記第１の待ち行列から前記ジョブを取り出し、前記計算機が前記ジョブを実行する際にアクセスするストレージに、取り出したジョブの実行に必要なデータに対する処理を前記ストレージに対して実行する第２工程と、前記第２の工程の処理が終わったジョブを第２の行列に格納する第３の工程と、前記第２の行列のジョブを順番に取り出して、前記選択された計算機に、取り出されたジョブを実行させる第４の工程と、を備えることを特徴とするものである。
【発明の効果】
【００１４】
本発明によれば、複数の計算機を備え、計算機の負荷を分散させるシステムにおいて、データが格納されているストレージ装置への計算機のアクセス性能を向上させることにより、前記計算機がアプリケーションプログラムを実行して前記ジョブの処理を効率的に行い、以って前記ＴＡＴを短縮可能な負荷分散システムを提供することが可能になる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施形態を図面に基づいて説明する。図１は本発明の一実施形態を示す負荷分散制御システムのブロック構成図である。図１において、負荷分散制御システムは、計算機が高速にIOアクセス可能なインターフェースを有する、RAID（Redundant Arrays of  Independent Disks）によって構成された複数のハードディスクドライブをアレイ状に備える、第１のストレージ１０１、大容量ディスクドライブを備える、第２のストレージと１０５、入庫用のディスク装置を備える、第３のストレージ１０６を備えているとともに、ストレージ１０１と情報の授受を行って、ジョブを実行する複数の計算機（１１２）からなる群を備えている。
【００１６】
ストレージ１０１は、ファイバチャネルをインターフェースとする複数のハードディスクドライブを備えている。ストレージ１０１は、スイッチングハブ１０２、ネットワークとしてのＳＡＮ（Storage Area Network）１０７を介して各計算機１１２に接続されている。ストレージ１０１の記憶資源によって論理ボリュームＬＵ１，ＬＵ２，ＬＵ３・・・が構成されている。スイッチ１０２には複数のポートがあり、計算機１１２が特定のポートに接続している。ポートには論理ボリュームがマッピングされているために、計算機は特定の論理ボリュームに接続してジョブを実行する。ストレージ１０１には計算機のジョブ実行に必要なデータが格納されている。計算機はストレージ１０１のハードディスクドライブに格納されたデータに高速アクセスすることができる。ストレージ１０１は、スイッチングハブ１０２を介して管理用コンピュータ２に接続され、コンピュータ２は管理用コンピュータ１に接続され、コンピュータ１は管理用コンピュータ３に接続されている。
【００１７】
各計算機１１２はジョブを実行する実行コンピュータとして構成されている。各計算機１１２のＯＳは統一される必要がなく、異なったＯＳでも良い。各計算機１１２は、ジョブを実行するためのプログラムとは独立したブリッジプログラム１１３を備えて構成されている。ブリッジプログラムは、コンピュータ３のクラスタ管理プログラムと、ジョブを実行するプログラムとの間を仲介するものである。クラスタとは複数の計算機１１２からなる群である。複数の計算機は、何らかの基準に基づいてグループ化され、このグループ化された複数の複数の計算機１１２がクラスタとして管理される。
【００１８】
コンピュータ１は、ジョブ処理用管理装置として、FIFO（First In First Out）１０９、ジョブリリースプログラム１１０、ＬＤＳプログラム１１２を備えて構成されている。コンピュータ２は、ストレージ１０１,１０５,及び１０６を管理するレイドマネージャプログラムと、ＤＬＣＭ待ち  キュー１０８、ＤＬＣＭプログラム１０３を備え、大容量ストレージ１０５、入庫用ストレージ１０６に接続されている。
【００１９】
ここでＤＬＣＭについて説明する。ＤＬＣＭとはDATA LIFE CYCLE MANEGEMENTの略であり、データの寿命に着目して、ジョブを実行する計算機１１２からアクセスされて間もないデータとアクセスされてから時間が経過されたデータとを別々の記憶領域に保管する技術のことである。前者のデータは、ジョブを実行する計算機１１２からアクセスされる頻度や可能性が高いために、計算機１１２が高速アクセスできる記憶デバイスを有するストレージ１０１に格納される。後者のデータは、アクセスされてからの経過時間にしたがって、ストレージ１０５、次いでストレージ１０６に格納されている。ストレージ１０６は、当面計算機１１２からアクセスされる予定の無いデータを格納する入庫用記憶手段として機能する。テープデバイスを備える記憶装置でも良い。
【００２０】
ＤＬＣＭプログラム１０３は、ＤＬＣＭ待ちキューに格納された複数のジョブを順番に取り出し、ジョブを実行する上で必要な容量の記憶領域を見積もり、この容量の記憶領域がストレージ１０１に存在するか否かをチェックする。必要な記憶領域が無い場合には、ＤＬＣＭプログラムはストレージ１０１内のデータのうち、アクセスから時間が経過しているデータを選択して、これをストレージ１０５に移動させる。これによって、ストレージ１０１内に計算機１１２が実行するジョブに必要な記憶容量を確保する。この記憶容量は、ジョブを実行する計算機１１２に割り当てられた、ストレージ１０１内の論理ボリュームに対して付与される。
【００２１】
ＤＬＣＭプログラムは、ジョブの実行に必要なデータがストレージ１０１内に無い場合には、ストレージ１０５又は１０６からこのデータをストレージ１０１にマイグレーションする。この場合、ストレージ１０１に必要な記憶領域が無い場合には、既述のとおり、記憶領域をストレージ１０１に形成するようにする。
【００２２】
ジョブの実行前に、既述のようにＤＬＣＭプログラムはストレージ１０１，１０５，１０６に対して、記憶領域の確保やデータの移動などの、ストレージ１０１を最適化する事前準備を行なう。ＤＬＣＭ待ちキューとは、この事前準備を待っているジョブの待ち行列である。
【００２３】
コンピュータ２は、ストレージ１０１、１０５、１０６と情報の授受を行って各ストレージの状態を管理する管理装置としての機能を備えている。この機能はＲＡＩＤマネージャプログラムによって実行される。ＲＡＩＤマネージャプログラムは、ストレージに格納されたファイル情報、ファイルへのアクセス日、及びサイズを管理している。
【００２４】
コンピュータ３は、負荷分散処理部として、クラスタ管理プログラム１０４を備える。クラスタ管理プログラム１０４は、コンピュータ１からの情報を基に、複数の計算機１１２からなる群(クラスタ)のうち、ジョブを実行すべきコンピュータを選択し、選択した計算機１１２に対してジョブの実行を指令する。クラスタ管理プログラムは、ジョブを実行する計算機として、そのジョブに対して実行権限があり、かつＣＰＵの稼動率が最も低いものを選択する。
【００２５】
図１の構成による負荷分散システムをユーザが利用するに際しては、例えば、ユーザがジョブなどを依頼するためのＷｅｂ１１５を利用してアプリケーションジョブ（以下、「ジョブ」と称する。）をコンピュータ１に依頼する。コンピュータ１はＬＤＳプログラム１１１にしたがってジョブの依頼を受付け、受付けたジョブをコンピュータ２のＤＬＣＭ待ちキュー１０８に転送する。ＤＬＣＭ待ちキュー１０８に転送されたジョブはＤＬＣＭプログラム１０３の処理によって取り出され、取り出されたジョブにしたがってＤＬＣＭプログラム１０３の処理が実行される。ＤＬＣＭプログラム１０３は、ＲＡＩＤマネージャプログラム１１４のファイル情報を利用して、ストレージ１０１に対して、既述の最適化処理を実行する。
【００２６】
この処理結果がスイッチングハブ１０２を介して、ストレージ１０１からコンピュータ２に通知された後、ＤＬＣＭプログラム１０３の処理結果に対してキューイング処理が実行され、キューイング処理されたジョブは、コンピュータ１のＦＩＦＯ１０９に送り出される。ＦＩＦＯ１０９は実行待ちジョブのキュー、即ち、既述の事前準備処理がストレージ１０１に対して完了した、換言すれば、ストレージ１０１がジョブの実行に対してスタンバイできた、当該ジョブの実行待ち行列をいう。
【００２７】
ストレージリリースプログラム１１０はＦＩＦＯ１０９に対してキューイング処理を実行して、ＦＩＦＯに格納された実行待ちジョブのキューを取り出す。ストレージリリースプログラム１１０は、ＦＩＦＯ１０９から取り出したキューのジョブをＬＤＳ（負荷分散：Load Distribution system）プログラム１１１に依頼する。ＬＤＳプログラムは、依頼されたジョブについて認証などを行なってこれをＤＬＣＭ待ちキュー１０８に渡すこと、ＦＩＦＯから取り出されたジョブをクラスタ管理プログラム１０４に渡す機能を実行する。さらに、ＬＤＳプログラム１１１は、Ｗｅｂ１１５から依頼されたジョブの内容とキューイング処理されたジョブの内容との比較を行い、両者の内容が一致すると、ジョブに関する情報をコンピュータ３に送信する。
【００２８】
コンピュータ３は、ジョブを受信したときには、クラスタ管理プログラム１０４の処理を基に、負荷分散処理を実施して、コンピュータ群１１２の中から、ジョブを実行すべき計算機１１２を選択し、選択された計算機１１２に対してジョブを送信する。ジョブを受信した計算機１１２はジョブを実行する。
【００２９】
このように、計算機１１２がジョブを実行するに先立って、コンピュータ２において、ストレージ１０１に対してデータ準備処理と空き領域確保処理を実行するようにしているため、実行計算機１１２がジョブする過程でストレージへのＩ／Ｏ待ちが発生しないようになる。すなわち、図１のシステムでは、ジョブを開始してこれを完了するまでのＴＡＴを短縮することができる。
【００３０】
さらに、これに加えて、図１のシステムでは、クラスタ管理プログラム１０４が、ジョブを実行すべき計算機を選択して、クラスタを構成するなるべく多くの計算機のＣＰＵ使用率が極力高く、好ましくは１００％になるようにした。例えば、ＣＰＵの使用率が最も低い計算機に対してジョブをクラスタ管理プログラムが割り当てるようにした。負荷分散制御実現するために、計算機１１２のＣＰＵ使用率を１００％になるように、ロード負荷バランスが最良の状態下でジョブを実行する必要がある。
【００３１】
そこで、計算機１１２に割り当てることができるジョブの最大数を計算機１１２のＣＰＵ搭載数にした。クラスタ管理プルグラム１０４は、計算機１１２当たりのＣＰＵ搭載数（計算機が同時に実行できるジョブ数）からなるパラメータで、各計算機の残計算能力を算出し、算出結果を基に最大のパフォーマンスが得られる計算機を選択することによって、計算機郡において負荷を分散する。このことを図２に基づいて説明する。
【００３２】
図２に示すように、計算機群１１２を、例えば、ＷＳ１、ＷＳ２、ＷＳ３、ＷＳ４に分けてこれをクラスタ（２０１）として、管理用テーブルに登録する。ＷＳ１、ＷＳ２、ＷＳ３、ＷＳ４の一つ一つが、ジョブを実行するワークステーションに相当する。クラスタ（２０１）にはジョブの処理順番であるキュー２０２と、クラスタ設定コンフィグレーションパラメータ２０３とが設定されている。キュー２０２は、ジョブＢ（キューＢ）とジョブＣ（キューＣ）とから構成されている。ＷＳ１、ＷＳ２、ＷＳ３、ＷＳ４はそれぞれキューＢを同時２個実行でき、ＷＳ２とＷＳ４がそれぞれジョブキューを一つ実行できる権限をもっている。キューＢを同時に実行できるＣＰＵ数の最大値は６であり、キューＣの最大値は２である。
【００３３】
クラスタ設定コンフィグレーションパラメータ２０３には、計算機ごとにＣＰＵ能力と同時実行可能ジョブ数が設定されている。さらに、キューを規定するパラメータとして、キューを実行可能な計算機名と、それぞれの計算機でそのキューに対応するジョブを同時に実行できる数が設定されている。そして、クラスタ管理プログラム１０４は、これらのパラメータと現在のジョブ実行数から、クラスタ管理テーブル２０４を作成し、クラスタ管理テーブル２０４の内容を基に計算機ごとの残計算能力を算出し、算出結果のうち最も残計算能力の値の大きい計算機に対してジョブを依頼する。
【００３４】
この場合、クラスタ管理プログラムは、計算機に実行を依頼したジョブの管理を、実行中管理テーブル２０５のジョブ依頼者のログイン名とジョブ管理番号で行う。このように、クラスタ管理プログラムは、各計算機（ＷＳ１、ＷＳ２、ＷＳ３、ＷＳ４）でのジョブ実行数を管理することにより、各計算機（ＷＳ１、ＷＳ２、ＷＳ３、ＷＳ４）の残計算能力を算出することができる。
【００３５】
クラスタ管理プログラムは、この残計算能力が高い計算機をクラスタの中から選択して、選択された計算機にジョブを実行させることで、最短のジョブＴＡＴが得られる負荷分散制御を実現する。クラスタ管理プログラムが、負荷分散制御を実現するためには、各計算機１１２から、計算機上で実行中のジョブ数、同時に実行可能なジョブ数（これは計算機が搭載するＣＰＵ数に等しい）に関する情報を取得することが望ましいし、また、これが必要でもある。計算機は、クラスタ管理プログラムからの問い合わせに対して、実行しているジョブ数を答えなければならい。
【００３６】
しかしながら、実行コンピュータ１１２としてＰＣをサポートしようとすると、ＰＣはシングルタスクＯＳの下で稼動しているためにマルチタスクを処理できないことから、クラスタ管理プログラムからの問い合わせに対して確実に応答きないことがある。そこで、ジョブ依頼元であるクラスタ管理プログラム１０４と実行計算機１１２のジョブを実行するプログラムとの間に、ジョブを中継し、ジョブ実行プログラムに依頼したジョブのステータスを管理し、ステータスをクラスタ管理プログラムに報告できる機能を、実行プログラムから切り離しこの機能をブリッジプログラム１１３に搭載するようにした。これにより、ジョブを実行するコンピュータとして、ワークステーションの他にＰＣを利用することも可能になる。以下、具体的な内容を図３にしたがって説明する。
【００３７】
まず、クラスタ管理プログラム１０４がジョブ実行数を確実に把握するために、ジョブの依頼は、実行コマンドとキュー名およびジョブ依頼者のログイン名をＬＤＳプログラム１１１に対して送ることによって達成される。ＬＤＳプログラム１１１はクラスタ管理プログラム１０４にジョブを依頼する。クラスタ管理プログラム１０４は、ジョブ管理番号を１カウントアップする。クラスタ管理プログラム１０４は、クラスタ管理テーブル２０４を参照して最も残計算能力の値が大きいコンピュータ（ＷＳ２）に対してジョブ依頼することを決定し、実行中ジョブ管理テーブル２０５の、決定された計算機に対して未使用エリアを探し、そこに、ジョブ依頼者のログイン名とジョブ管理番号を登録する。
【００３８】
クラスタ管理プログラムは、クラスタ管理テーブル２０４のジョブを依頼することに決定された計算機のキューの現在の実行数を１カウントアップすると同時に、当該計算機の残計算能力を求める処理を実行する。さらに、クラスタ管理プログラムは、計算機で稼動しているブリッジプログラム１１３に対してジョブ実行を依頼する。ジョブが依頼された計算機（実行サーバ）のジョブ実行プログラムは、自身の計算機で実行中のジョブ数を１カウントアップし、実行するジョブの最後で自計算機のブリッジプログラム１１３に対して、ジョブが終了したことを報告する。
【００３９】
ブリッジプログラム１１３に依頼されたジョブを計算機が実行した後、ブリッジプログラム１１３に対してジョブ終了が報告され、ブリッジプログラム１１３は自計算機で実行中のジョブ数を１カウントダウンし、さらにクラスタ管理プログラム１０４に対してジョブの終了を通知する。
【００４０】
ジョブ終了通知を受け取ったクラスタ管理プログラム１０４は、実行中のジョブ管理テーブル２０５において、ジョブを実行した計算機に割り当てられた、ジョブの内容を登録する領域を未使用状態に変更し、クラスタ管理テーブル２０４の計算機のキューの現在の実行数を１カウントダウンする。それと同時に、クラスタ管理プログラムは、この計算機の残り計算能力を求める処理を実行する。
【００４１】
クラスタ管理テーブル２０４が消滅した場合（例えば、ハード障害などによるリプート、プロセス消滅など）には、ジョブを実行している各計算機における、現在のジョブの実行数を復旧する必要がある。クラスタ管理プログラムは、ジョブの実行数を管理しているブリッジプログラム１１３に対して、ジョブ実行数の問い合わせをして、ジョブの実行数をブリッジプログラム１１３から取得してクラスタ管理テーブルを復旧する。
【００４２】
以下、図４を参照して説明する。クラスタを管理しているコンピュータ３のクラスタ管理プログラム１０４は、クラスタ管理テーブル２０４および実行中のジョブを管理する管理テーブル２０５を作成する前に、クラスタの計算機のブリッジプログラム１１３に対し、現在の実行ジョブ数の報告を依頼し、報告のあったジョブ数に基づいて管理テーブル２０４を作成する。この処理によって、クラスタ管理プログラムは、ジョブを実行する計算機の残計算能力を容易に管理し、かつ、クラスタを構成する計算機に対する負荷(ジョブ)を分散することができる。
【００４３】
図１のシステムは、複数のプログラムが協調することによって、達成されるが、いずれかのプログラムが何らかの原因で稼動停止に至ると、負荷分散処理ができなくなりシステムダウンに繋がるため、プログラムは安定して稼動しなければならない。そのためには、プログラムが自分の消滅を検知して、プログラムを再生することが望ましい。特に、全てのプログラムが再生機能を有することが望ましい。このことを図５にしたがって説明する。
【００４４】
コンピュータのシステムコールであるｆｏｒｋ処理により、プログラムに基づくプロセスを親プロセス４０１と子プロセス４０２とに分割する構成が図５に記載されている。プログラムに基づく処理は、全て子プロセス４０２によって達成される。親プロセス４０１は子プロセス４０２の存在を監視し、子プロセス４０２が消滅したことを検知したときには、子プロセス４０２を生成する処理だけを行う。
【００４５】
具体的には、親プロセス４０１は、ｆｏｒｋ前処理４０３として、子プロセス数と子プロセスカウンタを初期化し、子プロセス終了シグナルを受け取った場合の手続きを定義する。次に、ｆｏｒｋ実行（初期）４０４では、ｆｏｒｋ処理を実施し、子プロセスカウンタを１加算する。
【００４６】
次に、ｆｏｒｋ実行（再起動）４０５では、子プロセス終了を待つ。何らかの原因で子プロセス４０２が消滅した場合は、親プロセス４０１では、子プロセス終了シグナルの割り込みが発生し、予め設定してあった子プロセスカウンタを１減算することで、消滅した子プロセス数分のｆｏｒｋ処理を実施する。このような構成によって、常時、プログラムに基づく処理が保障されることになり、何らかの原因でプログラムに消滅など障害が発生しても、プログラムが再生されて、負荷分散を継続できる高い安定性をもったシステムが実現できる。
【００４７】
次に、計算機の残計算能力に基づいて、ジョブを実行する計算機を選択して、クラスタ内での計算機に対する負荷を分散する方式の具体的な内容を図６にしたがって説明する。まず、クラスタ管理プログラム１０４は、クラスタ管理テーブル２０４の各計算機（ＷＳ１、ＷＳ２、ＷＳ３、ＷＳ４）ごとにＣＰＵ能力と現在の実行数の各キュー分の合計値および最大同時実行数を利用して各計算機の残り計算能力を計算する。この計算式５０３は、残計算能力＝ＣＰＵ能力−（ＣＰＵ能力×現在の実行数の各キュー分の合計値÷最大同時実行数）である。  クラスタ管理プログラムは、この計算を計算機（ＷＳ１、ＷＳ２、ＷＳ３、ＷＳ４）ごとに実施し、それぞれの計算機が計算の時点で持っている残り計算能力を把握し計算結果を比較することで、残り計算能力の値が最も高い計算機を選択することができる。このようにして選択された計算機は、その時点で最も効率よくＣＰＵを使用できる状態にある。クラスタ管理プログラムは、選択された計算機のブリッジプログラム１１３に対してジョブを依頼する。このように、少しのパラメータと単純な計算式で、計算機の残存計算能力を把握することができる。
【００４８】
近年のコンピュータは高価で高性能になっているため、一つの目的だけに利用するのではなく、複数の目的で利用されることがある。目的ごとにクラスタを設定した場合に、クラスタ間でコンピュータが共有される。このマルチクラスタ構成における負荷分散処理を図７にしたがって説明する。
【００４９】
ＦＩＦＯ１０９からジョブリリースプログラムによってリリースされたジョブは、ＬＤＳプログラム１１１からクラスタ管理プログラム１０４に送られる。このジョブのキューを実行可能な全てのクラスタについてのクラスタ管理テーブル（＃１〜＃ｎのクラスタ管理テーブル）２０４を用いて、クラスタ管理プログラムは、ジョブを実行する計算機をジョブに対して割り当てる。クラスタ管理プログラムの、複数のクラスタ間を調停する機能であるアービタ（ＡＢＴ）６０４により、ジョブを実行するクラスタ（例えば、クラスタ１、クラスタ２）と、ジョブを実行する計算機（例えば、ＷＳ１、ＷＡ２、ＰＣ１など）とがジョブに割り当てられる。また、アービタ６０４は、クラスタ１、クラスタ２に属している計算機を把握し、計算機ごとのＣＰＵの稼動状況を既述するテーブル６０５を作成する。このテーブルが、計算機の残存能力を計算することにより利用される。クラスタ管理プログラムは、この残存残計算能力を全てのクラスタのクラスタ管理テーブル２０４に割り当てる。したがって、クラスタ管理プログラムは、複数のクラスタで１つの計算機を共有した場合でも負荷分散を可能とする。
【００５０】
次に、ジョブを実行するコンピュータを選択し、このジョブがこのコンピュータで実行されるまでのシーケンスについて、図８にしたがって説明する。
【００５１】
ジョブは、クラスタ管理プログラム１０４のジョブ依頼待ち（ステップ７０３）で受付けられ、このジョブを実行可能な計算機が抽出される（ステップ７０４）。具体的には、クラスタ管理プログラム１０４は、クラスタ管理テーブル２０４のジョブの最大同時実行数と計算機の残存計算能力、およびマルチクラスタで共用されるコンピュータのＣＰＵアイドル状況（％）を使用する。この場合、ジョブを計算機に割り当てる前の計算機の残存計算能力値を全ての計算機で同じ、例えば、１００（％）とする。ジョブを最大で同時に実行できる数については、クラスタ１の計算機であるＷＳ２を３、クラスタ１のＰＣ１を３、クラスタ１のＰＣ２を２とする。マルチクラスタで共用される計算機ＰＣ１のＣＰＵアイドル率については、クラスタ１とクラスタ２で最大同時実行数の大きい方を採用して計算することとしている。
【００５２】
ジョブ依頼前の時点では、残存計算能力はどの計算機についても同じなので、クラスタ管理テーブル２０４の最初に出てくるクラスタ１のＷＳ２を選択し、選択されたＷＳ２について残存計算能力を計算し直す。次に選択されるのはクラスタ１のＰＣ１となる。ＰＣ１はマルチクラスタで共用される計算機であるため、前述の残計算能力算出式に加え、ＣＰＵアイドル率をかけてＰＣ１の残計算能力を計算し直す。共有計算機の残計算能力算出式７０２を利用して計算すると、クラスタ１のＰＣ１の残計算能力は、（１００−１００×１÷３）×０．６６＝４４となり、クラスタ２のＰＣ１の残計算能力は、（１００−１００×０÷２）×０．６６＝６６となる。
【００５３】
ジョブを実行する計算機の全てについて残計算能力が最大値を検索する（ステップ７０５）。クラスタ２のＰＣ１がジョブを実行する計算機として選択される。この手順により、クラスタ管理テーブル２０４の太枠で囲まれた箇所が残計算能力最大値となり、これに基づいてジョブを実行する計算機とクラスタ名が決定される。
【００５４】
このように、クラスタ管理テーブル２０４のジョブを同時に実行できる最大数と、ＣＰＵの残計算能力、およびマルチクラスタで共用される計算機についてのＣＰＵアイドル状況の値を使用し、前述の計算式を用いてＣＰＵの残計算能力を再計算することにより、マルチクラスタ構成の場合においても負荷分散処理を実現できる。
【００５５】
次に、選択された計算機にジョブを依頼するシーケンスについて説明する。クラスタ管理プログラムが、コンピュータへジョブの実行を依頼することは、ソケット通信技術を利用して、計算機で稼動しているブリッジプログラム１１３に対して行う。ソケット通信するには、通信相手の計算機名とポート番号が必要であり、このポート番号は予めクラスタごとに決められている（ステップ７０７、７０８）。つまり、クラスタとジョブを実行すべき計算機名からポート番号が決まる（ステップ７０６）。ジョブを実行する計算機が複数のタスクに属する場合、ブリッジプログラムはクラスタの数分動作している。ブリッジプログラム１１３をクラスタごとに持つシステム構成であれば、クラスタ管理プログラム１０４を再起動するとき、全てのクラスタを復元することを可能にする。
【００５６】
ブリッジプログラム１１３は、常時ソケットへの接続要求待ちであり（ステップ７０８）、クラスタ管理プログラム１０４からのジョブを受付け、クラスタ管理プログラムからジョブの実行コマンドを受け取ってジョブを実行する（ステップ７０９）。
【００５７】
次に、計算機１１２からストレージサブシステムへのＩ／Ｏがウエイトされ、ジョブが最大のパフォーマンスで実行できないことを解決するために、負荷分散システムに追加されたＤＬＣＭ機能を図９にしたがって説明する。まず、ジョブはＬＤＳプログラム１１１によって受付けられ、クラスタ管理プログラム１０４によって負荷分散処理が実行される前に、ＤＬＣＭサブシステム８０１にジョブが送り込まれる。ジョブは一旦ＤＬＣＭ待ちキューに格納され、順番にＤＬＣＭプログラム１０３がジョブをキュー１０８から呼び出し、ジョブについてストレージサブシステム１０１の記憶領域を最適化する。
【００５８】
最適化とは、ジョブを実行する計算機が記憶資源にアクセスする際に、Ｉ／Ｏ待ちとならない状態に、ジョブの実行前に記憶資源を調整しておくことである。ＤＬＣＭプログラム１０３はこの最適化を実現する。例えば、図１において説明したように、ストレージサブシステム１０１にジョブの実行に必要なデータの記憶領域を確保すること、及び/又は、他のストレージサブシステム１０５，１０６からストレージサブシステム１０１に必要なデータをマイグレーションすることである。ＤＬＣＭプログラムに基づく処理を施されたジョブは、ジョブ実行待ちキューであるＦＩＦＯに格納される。ジョブリリースプログラムは、ジョブをＦＩＦＯから順番にリリースしてジョブを再度ＬＤＳプログラム１１１に戻す。次いで、ＬＤＳプログラムは、クラスタ管理プログラム１０４にジョブを渡すことによりジョブについての負荷分散処理を行う。すなわち、負荷分散処理される前処理として、ディスクＩ／Ｏネックが発生しない状況を作り、ジョブを最大のパフォーマンスで実行できるようにした。
【００５９】
ＤＬＣＭプログラム１０３は、ジョブで使用されるデータの準備とジョブ実行で使用する空き領域（容量）を確保するために、ジョブをＬＤＳプログラムに依頼する際に、ジョブが使用するデータのバスを示すＩＯ情報８０６をジョブリクエストに追加して、ジョブをＬＤＳプログラム１１１からＤＬＣＭサブシステム８０１に送り込む。
【００６０】
ＤＬＣＭ機能は、ジョブを実行するコンピュータが高速にアクセスできるインターフェースを持った記憶資源１０１に、大記憶容量という特性を有する記憶資源１０５や、さらに古いデータが入庫されている、記憶資源１０３から、ジョブリクエストに含まれるＩＯ情報に基づき、データを移動する。
【００６１】
また、ＤＬＣＭ機能は、ジョブの実行に伴って使用されるデータの容量を見積もり、記憶デバイス（ディスクＡ）１０１に対して、見積もり分の空きデータ容量が確保されるまで、ストレージサブシステム１０１からデータが古い順に、データをストレージサブシステム）１０５に退避する処理を実施する。ストレージサブシステム１０５に退避用の領域がない場合には、古いデータの順にデータを記憶資源１０６に退避させる。
【００６２】
このＤＬＣＭ処理が完了すると、ＦＩＦＯ１０９にジョブが送り出されジョブが実行待ち状態となる。ジョブリリースプログラム１１０は、ジョブをＦＩＦＯ１０９から順番に呼び出し、ＬＤＳプログラム１１１にジョブを依頼する。ＬＤＳプログラム１１１に戻ってきたジョブは負荷分散処理に回される。
【００６３】
次に、ジョブの終了時に実施されるＤＬＣＭ機能について図１０を参照して説明する。ジョブの実行前に見積もられ、ストレージ１０１に確保された記憶容量量だけでは、容量不足で、計算機１１２においてジョブが異常終了する場合もある。そこで、計算機１１２はジョブが正常に終了したか否かをチェックし（９０１）、これがＮＧの場合には、ＤＬＣＭ待ちキューに、ジョブが正常に終了しなかったというステータスを付加して、ジョブを再度格納する。ＤＬＣＭプログラム１０３は、ジョブの実行に必要なデータの容量の見積量を増やし、再度、ストレージサブに空き容量を確保する処理を実施し（ステップ９０２）、その後、ジョブを実行待ちするＦＩＦＯ１０９に、再投入するリトライ制御（９０３）を行なう。
【００６４】
ＦＩＦＯ１０９はジョブのタイプの数分存在しても良い。例えば、一つのＦＩＦＯがジョブタイプＡのキュー行列であり、他のＦＩＦＯがジョブタイプＢのキュー行列である。既述ＤＬＣＭ待ちキューはジョブのタイプ毎に存在せず、全てのタイプのジョブキューに対して共通のものとなっている。ジョブタイプの例として、銀行業務、或いは設計業務などである。
【００６５】
なお、ジョブが大容量のデータを扱うものの、負荷分散処理によってジョブの実行が短時間で終了する場合、ＤＬＣＭプログラム１０３による最適化処理がジョブの実行に対してボルトネックになることが考えられる。
【００６６】
これに対処するために、ジョブの終了後、ジョブで使用したデータ容量が残ったか否かをコンピュータが評価し（９０４）、ジョブ実行前に見積もった記憶容量に比べて、過剰にデータ容量を使用した場合には、過剰に使用したデータ容量分の空き容量をストレージサブシステムに確保するための処理を実施する（９０２）。これは次回以降に投入されるジョブの実行前で、実施するＤＬＣＭ処理において、空きデータ容量確保処理がより短時間で終了させられることになり、ジョブ投入から終了までの時間を短くすることで、ボルトネックを解消することができる。
【００６７】
このように、ジョブの実行前に、ストレージサブシステム１０１にジョブに必要なデータを準備し、また、ジョブに必要なデータの空き容量の確保を行う処理を実施し、ジョブ終了後に、ＤＬＣＭプログラムが見積もったデータの容量と実績データ容量の差分のデータ容量を確保しておく処理と、空きデータ容量不足によるジョブ異常終了時の空きデータ容量確保の再処理とリトライ制御を実施するＤＬＣＭ機能を有するＤＬＣＭサブシステム８０１により、高品質・高性能な負荷分散システムを実現することができる。
【００６８】
以下、ＤＬＣＭ機能を、図１１を参照して説明する。ＤＬＣＭプログラムは、ジョブの実行するに際して予定される記憶容量を算出する（ステップ１００１）。コンピュータ１に指示されたＩＯ情報に対応するファイル情報１００７と、初回に実行されるジョブかリトライされるジョブかによって、算出結果が異なる。ファイル情報１００７は、ストレージ１０１にあるファイルへのアクセス日と、ファイルのサイズに関する情報である。ファイル情報は、ファイルに対するアクセス日の古い順に構成されている。  
【００６９】
コンピュータ１に指示されたＩＯ情報が、ストレージのファイル情報にも、ストレージ１０５のファイル情報にも、ストレージ１０６のファイル情報にもない場合は、ジョブが新規であるとして、デフォルトで決まった記憶容量を用いて、コンピュータ２のＤＬＣＭプログラムは、ストレージに記憶容量を確保する。記憶容量はパラメータで指示される。指示されたＩＯ情報が、ファイル情報Ｂまたはファイル情報Ｃのどこかに存在する場合、ファイルを更新するジョブであるとＤＬＣＭプログラムが判断し、このファイルの現状の容量をストレージに確保する。現状容量に加えて、ＤＬＣＭプログラムは、パラメータをストレージ１０１に指示して、現状容量に所定容量を加えることが可能である。ジョブのリトライ制御の際には、ジョブに必要なデータ容量がストレージサブ１０１に不足していることから、ジョブの実行に必要なファイルの現在の記憶容量の値の２倍をＤＬＣＭプログラムはストレージに確保する。なお、倍率はＤＬＣＭプログラムがパラメータを用いて変更することができる
次に、ＤＬＣＭプログラム１０３は、計算機１１２によって使用されているストレージ１０１の記憶容量を取得する（ステップ１００２）。次いで、ＤＬＣＭプログラムは、実推評価値を算出する（ステップ１００３）。これは、ストレージの最大の記憶容量（ディスクＭａｘ容量）と、フラグ処理が発生しない範囲のディスク使用率（使用可能利用率）と現在使用されている記憶容量および使用が予定されている記憶容量を利用して算出する。実推評価値の算出式は、ディスクＭａｘ容量×使用可能利用率−（現使用量＋予定使用量）である。
【００７０】
ステップ１００４において実推評価値が０より大きい値のケースとは、これから実行するジョブが、ストレージへのＩＯ処理が原因で異常終了したり、ＩＯ  Ｗａｉｔが発生したりして、ＣＰＵ稼動率が低下した状況下でジョブを実行する可能性が低い状況にあることであり、この場合には、データが、既にストレージサブシステム１０１に存在するケースと、どの記憶資源にも存在しないケース（ステップ１０５）を除いて、ＤＬＣＭプログラムは、ジョブで必要なデータをストレージサブシステムに準備しておく処理を実施し（ステップ１００６）、その後ＦＩＦＯ１０９にジョブを送り出す。
【００７１】
反対に、実推評価値が０以下のケースとは、これから実行するジョブがストレージへのＩＯ処理が原因で異常終了したり、ＩＯ  Ｗａｉｔが発生したりしてＣＰＵ稼動率が低下した状況下で、ジョブを実行する可能性が高い状況にあるということである。この場合、ＤＬＣＭプログラムは、ストレージに空き容量を確保する（ステップ１０１２）。
【００７２】
データ準備処理（ステップ１００６）では、ジョブを実行するコンピュータがストレージ１０１に指示されたＩＯ情報に関するデータを準備する処理を実施する。ここでは、ストレージ１０５に存在するデータをストレージ１０１に移すｍｏｄｅＡ処理（ステップ１０８）と、ストレージ１０６に存在するデータを、ストレージ１０１に移すｍｏｄｅＢの処理（ステップ１０９）を実施する。
【００７３】
ｍｏｄｅＡの処理（ステップ１００８）は、指示されたＩＯ情報に対するファイル情報をストレージ１０５から取得し、当該データをストレージ１０５からストレージ１０１に移動する。
【００７４】
ｍｏｄｅＢの処理（ステップ１０９）は、指示されたＩＯ情報に対応するファイル情報をストレージ１０５から取得し、該当データをストレージ１０６からストレージに１０１に移動する。これらの処理により、ジョブで使用するデータがストレージ１０１に移ったことになる。
【００７５】
空き容量確保処理（ステップ１０１２）は、ストレージ１０１に必要な空き容量を確保する処理であるが、データをストレージ１０１からストレージ１０５に移すｍｏｄｅＣの処理（ステップ１０１０）だけを実施すれば良いケースと、データをストレージ１０１からストレージ１０５に移すために、ストレージ１０５のデータをストレージ１０６に移すｍｏｄｅＤの処理（ステップ１０１１）を実施してから、ｍｏｄｅＣ（ステップ１０１０）の処理を実施しないといけないケースがある。
【００７６】
ｍｏｄｅＣの処理（ステップ１０１０）は、ストレージ１０１のファイル情報を古い順から取り出し、そのサイズの合計が実推評価値よりも大きくなるまで移動データとしてファイル情報を記憶する。そして、記憶したファイル情報に該当するデータ全てをストレージ１０１からストレージ置１０５に移動する。ｍｏｄｅＤの処理（ステップ１０１１）は、ｍｏｄｅＣ（ステップ１１０の処理）の機能と同じで、対象とするストレージの移動元がストレージ１０５で移動先がストレージ１０６としたものである。ｍｏｄｅＣの処理と、場合によって、ｍｏｄｅＤの処理とｍｏｄｅＣの処理の両方を実行した結果、ストレージ（ディスクＡ）１０１に必要な空き容量データを確保することになる。
【００７７】
次に、ＤＬＣＭ機能におけるデータ準備モードの決定と空き容量確保モードの決定について図１２を参照して説明する。まず、データ準備モードの決定については、本事象が決定するケースは、ストレージ１０５あるいはストレージ１０６に存在するケースに限られることから、移動データがストレージ１０５に存在するかどうかを調べ（ステップ１１０１）、存在する場合はｍｏｄｅＡと決定し（ステップ１１０２）、存在しない場合はｍｏｄｅＢと決定する（ステップ１１０３）。
【００７８】
次に、空き容量確保モードを決定するに際しては、ストレージ１０５の現使用量を取得し（ステップ１１０４）、ストレージ１０５のディスクＭａｘ容量とストレージ１０５の使用可能利用率と既に算出した実推評価値を使用して、ストレージ１０５の実推評価値を算出する。実推評価値の算出式（１１０５）は、ディスクＭａｘ×容量×使用可能利用率−（現使用量×実推評価値）となる。この計算の結果、実推評価値が０より大きい場合、ｍｏｄｅＣと決定し（ステップ１１０７）、０以下の場合ｍｏｄｅＤと決定する（ステップ１１０８）。
【００７９】
ｍｏｄｅＤを実行した後には、再度、空き容量確保モードの決定を実行する。この場合には、必ずｍｏｄｅＣの実行が決定され、結果として、ｍｏｄｅＤを実行したあと、ｍｏｄｅＣを実行することになる。
【００８０】
次に、ジョブの依頼方法について図１３を参照して説明する。本システムを使用するためには、ユーザは認証を受ける必要があり、本システムでは、例えば、ＵＮＩＸ（登録商標）ユーザアカウント管理を利用している。ユーザ認証管理機能は、Ｗｅｂの認証画面１２０１を用い、ユーザにユーザ名とパスワードを入力させ、ＵＮＩＸ（登録商標）のユーザアカウント管理プログラム１２０２を利用して、ＵＩＤに対するＧＩＤの取得とＵＩＤに対するパスワード一致チェックを実施する。これらが成功すると、本システムが利用可能ということになり、これ以降、ＵＩＤとＧＩＤを利用して実際のジョブ依頼処理が実施される。
【００８１】
まず、ストレージ１０１にジョブで使用するための領域が確保される。これは、プロジェクトに対してＬＵを割り当てることで実現し、ＷｅｂのＬＵ割当画面１２０３を使い、ユーザに決定させる。この際、ストレージ１０１の管理者が予め作成しておいた、ＬＵ番号に対する該当ＧＩＤを定義したＬＵ該当管理情報１２０４から、ユーザが使用可能なＬＵに対して使用状況一覧を表示し、ユーザはストレージ１０１の空き容量と先行しているプロジェクトとの関係から、ユーザがこれから使用するＬＵを決定し、このＬＵ番号とプロジェクトＷｅｂ画面に入力する。
【００８２】
ユーザが入力を完了すると、システムは、ＬＵ割当管理情報１２０４のユーザが指定したＬＵ番号の行の管理ユーザ欄にＵＩＤを、プロジェクト欄にプロジェクトを登録し、その内容がＬＵ管理情報１２０５となる
次にジョブ依頼について説明する。これも、Ｗｅｂのジョブ依頼画面１２０６を使用して行う。ジョブ依頼画面１２０６には、プロジェクト選択メニューとキューとコマンドとＩＯ情報を入力するテキスト入力エリアがある。プロジェクト選択メニューは、ＬＵ該当管理情報１２０５からユーザのＧＩＤと一致するプロジェクトのみを抽出して作られ、選択する方式である。
【００８３】
キューとコマンドおよびＩＯ情報はユーザが入力する。これらの入力が完了すると、実際にジョブを実行するために、これらの情報が入力パラメータ１２０７として本システムに送られることになる。このように、本システムでは、Ｗｅｂを利用してジョブ依頼をすることができる。
【００８４】
次に、ＬＵ制御方式を、図１４を参照して説明する。本システムでは、ユーザがＷｅｂを介して入力したパラメータ１２１０はＬＤＳプログラム１１１に送られる。ＬＤＳプログラム１１１はユーザが指定したプログラム情報とＬＵ割当管理情報１２１１のプロジェクト情報とを比較し、一致したＬＵ番号１２１３を割り出し、ＬＵ番号１２１３をＤＬＣＭ待ちキュー１０８に対して送り出す。
【００８５】
ＤＬＣＭプログラム１０３は、ＤＬＣＭ待ちキュー１０８から入力したパラメータとＬＵ番号１２１３を取り出し、まず、ストレージ１０１の該当ＬＵ番号をリードマウント処理し、指定されたＩＯ情報がストレージ１０１に既に存在するか否かを調べてからアンマウント処理を行う。該当ＩＯ情報がストレージ１０１に存在しない場合には、ストレージ１０５をリードマウント処理し、指定されたＩＯ情報がストレージ１０５に存在するか否かを調べ、アンマウント処理を実行する。ストレージ１０５にも存在しない場合には、ストレージ１０６に対しても同様の処理を実施する。該当ＩＯ情報がストレージ１０１に存在せず、ストレージ１０５またはストレージ１０６に存在する場合、ストレージ１０１の該当ＬＵ番号をライトマウント処理し、さらに指定されたＩＯ情報が存在するストレージをライトマウント処理し、該当ＩＯ情報を移動し、移動完了後、双方のストレージをアンマウント処理する。さらに、前述の空き容量確保処理を実施したあと、ＤＬＣＭ待ちキュー１０８から取り出した入力パラメータとＬＵ番号１２１３をＦＩＦＯ１０９に送り出す処理を実施する。
【００８６】
ジョブリリースプログラム１１０は、ＦＩＦＯ１０９から入力パラメータとＬＵ番号を取り出し、ＬＤＳプログラム１１１に送信する。ＬＤＳプログラム１１１はクラスタ管理プログラム１０４に対し、入力パラメータとＬＵ番号１２１３を送信する。クラスタ管理プログラム１０４は、ジョブ実行コンピュータを決定し、決定したコンピュータのブリッジプログラム１１３に対し、入力パラメータとＬＵ番号１２１３を送信する。ブリッジプログラム１１３は、受信したストレージ１０１のＬＵ番号をマウント処理したあと、入力パラメータのコマンドを実行し、コマンド終了後、受信したＬＵ番号をアンマウント処理する。このように、本システムでは、ユーザがＷｅｂからジョブ依頼する際に、プロジェクトを指定するだけで、ストレージ１０１に対するＬＵ制御を自動的に実行することができる。
【００８７】
既述の説明において、ストレージとは、複数のハードディスク・光ディスクからなる記憶媒体を備えた、ディスク装置、ディスクアレイサブシステム、又は、記憶媒体としての複数の、フラッシュメモリなどの半導体メモリを備えた記憶装置である。
【図面の簡単な説明】
【００８８】
【図１】本発明の一実施形態を示す負荷分散制御システムのブロック構成図である。
【図２】クラスタ管理方法を説明するための図である。
【図３】実行ジョブ数の把握方法を説明するための図である。
【図４】実行ジョブ数の把握方法を説明するための図である。
【図５】負荷分散処理を高安定稼動で行うときの方法を説明するための図である。
【図６】実行ＣＰＵ選択方法を説明するための図である。
【図７】マルチクラスタによる負荷分散制御方法を説明するための図である。
【図８】マルチクラスタによるアービトレーション制御方法を説明するため図である。
【図９】ＤＬＣＭの構成を説明するためのブロック図である。
【図１０】ＤＬＣＭの制御方式を説明するための図である。
【図１１】ＤＬＣＭの機能を説明するための図である。
【図１２】ＤＬＣＭ機能におけるデータ準備モード決定と空き容量確保モード決定方法を説明するための図である。
【図１３】Ｗｅｂを用いたジョブの依頼方法を説明するための図である。
【図１４】Ｗｅｂを用いてＬＵ制御を行う方法を説明するための図である。
【符号の説明】
【００８９】
１０１  ストレージ
１０２  スイッチチングハブ
１０３  ＤＬＣＭプログラム
１０４  クラスタ管理プログラム
１０５  大容量ストレージ
１０６  入庫用ストレージ
１０７  ＳＡＮ
１０８  ＤＬＣＭ待ちキュー
１０９  ＦＩＦＯ
１１０  ジョブリリースプログラム
１１１  ＬＤＳプログラム
１１２  実行コンピュータ
【図１】
2008015888.tif 000003
【図２】
2008015888.tif 000004
【図３】
2008015888.tif 000005
【図４】
2008015888.tif 000006
【図５】
2008015888.tif 000007
【図６】
2008015888.tif 000008
【図７】
2008015888.tif 000009
【図８】
2008015888.tif 000010
【図９】
2008015888.tif 000011
【図１０】
2008015888.tif 000012
【図１１】
2008015888.tif 000013
【図１２】
2008015888.tif 000014
【図１３】
2008015888.tif 000015
【図１４】
2008015888.tif 000016