(57)【特許請求の範囲】
【請求項１】
クラスタシステムにおいて実行されるジョブを管理するための装置であって、
前記クラスタシステムのキュー毎に、キューが提供できるリソースと、前記リソースの要件を満たす仮想ノードのグループとを特定するキュー情報に基づいて、前記キューに投入されたジョブに対応可能な仮想ノードのグループを特定し、特定した仮想ノードのグループの中から、前記ジョブに割り当てる前記仮想ノードを選択する、仮想ノード選択部と、
前記仮想ノードのグループ毎に、当該グループに使用可能な物理ノードについてのノード間の構成要件を特定する、仮想ノードグループ情報に基づいて、前記ジョブが割り当てられた前記仮想ノードに割り当てる前記物理ノードを選択する、物理ノード選択部と、
を備え、
前記仮想ノードグループ情報が、前記仮想ノードのグループ毎に、当該グループに使用可能な物理ノードについてのノード間の構成要件として、少なくとも、前記物理ノードが所属しているネットワークトポロジについての要件と、前記物理ノードが利用可能なファイルシステムについての要件とを特定している、
ていることを特徴とするジョブ管理装置。
【請求項２】
前記物理ノード選択部が、選択された前記物理ノードに障害が発生した場合に、
前記仮想ノードグループ情報に基づいて、障害が発生した物理ノードが割当てられていた前記仮想ノードに対して、新たに割り当てる新たな物理ノードを選択する、請求項１に記載のジョブ管理装置。
【請求項３】
前記障害が物理ノードのノード間接続機能の故障である場合に、前記物理ノード選択部が、前記仮想ノードグループ情報に基づいて、前記障害が発生した物理ノードを割り当てることが可能な仮想ノードが存在しているかどうかを判定し、存在している場合に、当該仮想ノードに割り当てる物理ノードとして、前記障害が発生した物理ノードを選択する、
請求項２に記載のジョブ管理装置。
【請求項４】
前記キューに投入された前記ジョブを実行可能な時間帯を検索する、空き情報検索部と、
検索された時間帯の中から、前記キューに投入された前記ジョブの実行を開始する時刻を決定する、開始時刻決定部と、を備えている、請求項１〜３のいずれかに記載のジョブ管理装置。
【請求項５】
クラスタシステムにおいて実行されるジョブを管理するための方法であって、
（ａ）前記クラスタシステムのキュー毎に、キューが提供できるリソースと、前記リソースの要件を満たす仮想ノードのグループとを特定するキュー情報に基づいて、前記ジョブに対応可能な仮想ノードのグループを特定し、特定した仮想ノードのグループの中から、前記ジョブに割り当てる前記仮想ノードを選択する、ステップと、
（ｂ）前記仮想ノードのグループ毎に、当該グループに使用可能な物理ノードについてのノード間の構成要件を特定する、仮想ノードグループ情報に基づいて、前記ジョブが割り当てられた前記仮想ノードに割り当てる前記物理ノードを選択する、ステップと、
を有し、
前記仮想ノードグループ情報が、前記仮想ノードのグループ毎に、当該グループに使用可能な物理ノードについてのノード間の構成要件として、少なくとも、前記物理ノードが所属しているネットワークトポロジについての要件と、前記物理ノードが利用可能なファイルシステムについての要件とを特定している、
することを特徴とするジョブ管理方法。
【請求項６】
コンピュータによって、クラスタシステムにおいて実行されるジョブを管理するためのプログラムであって、
前記コンピュータに、
（ａ）前記クラスタシステムのキュー毎に、キューが提供できるリソースと、前記リソースの要件を満たす仮想ノードのグループとを特定するキュー情報に基づいて、前記ジョブに対応可能な仮想ノードのグループを特定し、特定した仮想ノードのグループの中から、前記ジョブに割り当てる前記仮想ノードを選択する、ステップと、
（ｂ）前記仮想ノードのグループ毎に、当該グループに使用可能な物理ノードについてのノード間の構成要件を特定する、仮想ノードグループ情報に基づいて、前記ジョブが割り当てられた前記仮想ノードに割り当てる前記物理ノードを選択する、ステップと、
を実行させ、
前記仮想ノードグループ情報が、前記仮想ノードのグループ毎に、当該グループに使用可能な物理ノードについてのノード間の構成要件として、少なくとも、前記物理ノードが所属しているネットワークトポロジについての要件と、前記物理ノードが利用可能なファイルシステムについての要件とを特定している、
るプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クラスタシステムで実行されるジョブにノードを割り当てるための、ジョブ管理装置、及びジョブ管理方法に関し、更には、これらを実現するためのプログラムに関する。
【背景技術】
【０００２】
従来から、ＨＰＣ（High Performance Computing）分野を中心に利用されるバッチ処理システムにおいては、多数のノードを接続して構成したクラスタシステムと、バックフィルスケジューリングを実行可能なジョブスケジューラ（以下「バックフィルスケジューラ」と表記）とが利用されている。
【０００３】
バックフィルスケジューラとは、クラスタシステムに接続されているノード等のリソースを現在から未来に渡って管理し、ジョブに対してリソースを占有して使用可能な時間枠を割り当てる、ことを特徴とした、ジョブ管理システムのジョブスケジューラである。
【０００４】
バックフィルスケジューラの特徴であるスケジューラマップについて、図１３（ａ）及び（ｂ）の例を用いて説明する。スケジューラマップとは、ジョブが使用するノードと実行する時刻についての情報を保持するマップである。図１３（ａ）は、投入されたジョブに設定された優先度の一例を示す図であり、図１３（ｂ）は、ジョブのアサインの一例を示す図である。
【０００５】
図１３（ａ）に示すように、投入されたジョブは、まずキューに繋がれ、各ジョブに優先度が設定される。図１３（ｂ）に示すように、バックフィルスケジューラは、キュー内のジョブを、優先順位の高い順にスケジューラマップ上の未使用空間に配置し（以降、ジョブを配置することを「アサイン」と表記）、時間経過とともに予定されたジョブを実行する。
【０００６】
例えば、図１３（ａ）に示すように、キューに投入されたジョブは、ジョブＡ〜ジョブＦの順に優先度が高いとする。そして、図１３（ｂ）に示すスケジューラマップでは、ジョブＡ〜Ｅがアサインされた状態にある。図１３（ｂ）において、Node0の部分（１）及び（３）と、Node1の部分（２）とは、この時の未使用空間を示している。この場合において、バックフィルスケジューラは、ユーザが指定したジョブＦの使用ノード数及び予定実行時間等の情報に基づいて、ジョブＦを未使用空間にアサインする。
【０００７】
バックフィルスケジューラによってジョブを管理しているシステムで、ノードに障害が発生すると、現在実行しているジョブと、それ以降の全ジョブとについて、障害ノードを除いたスケジューラマップ上で再スケジューリングする必要がある。図１３（ｂ）の例において、例えば、Node0に障害がおきると、ジョブＣ、Ｄ、Ｅ、Ｆの再スケジューリングが発生してしまう。再スケジューリングが発生した場合、システム全体でジョブの再開が遅れてしまいシステムの使用率が低下することになる。
【０００８】
例えば、特許文献１は障害ノードと正常ノードを入れ替え、障害ジョブを再実行するノード管理システムを開示している。このノード管理システムによれば、バックフィルスケジューラを利用することもでき、ジョブ再開の遅延の軽減も可能と考えられる。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特表２００７−５３３０３２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、特許文献１に開示されたようなノード管理システムを、ＨＰＣシステムに適用した場合には、再構成可能なノード構成が柔軟性に欠けるという問題と、ＨＰＣシステムの性能向上を図れないという問題とが発生してしまう。以下、これらの問題について説明する。
【００１１】
従来のノード管理システムでは、図１４に示すように、ジョブに割り当てるノード群（以下「プール」と表記する。）が予め静的に作成され、このジョブには、同じプールに所属するノードしか割り当てることができない仕組みとなっている。このため、交換可能なノードの状態（ＣＰＵ、メモリ、ネットワークトポロジ等）がＨＰＣジョブ実行に適していない可能性がある。また、他のプールからのノードの割り当てが不可能であるため、他のプールに所属するノード、又は他のクラスタシステムを利用した方が良い場合でも利用できない。図１４は、プールを用いたノードの割り当ての仕組みを説明する図である。
【００１２】
具体例を、図１５を用いて説明する。図１５は、ネットワークトポロジを構成するクラスタシステムの一例を示す図である。図１５に示すようなネットワークトポロジを構成するクラスタシステムは、従来のノード管理方式で管理されているとする。この場合、図１５に示す例では、異なるスイッチに接続されたノードが交換ノードとしてジョブに割り当てられ、ノード間の通信速度が低下してしまう。
【００１３】
具体的には、マルチノード用プールにNode0、Node1、Node3、Node4を設定しておくと、Node0と通信していたNode1が障害で通信できなくなった場合、Node3及びNode4のいずれかがが交換ノードに選ばれる。その場合、スイッチ１を経由する通信が発生してしまい通信速度が低下する。また、異なるプール（シングルノード用プール）に所属するNode2は、交換ノードの候補にも入らない。
【００１４】
また、バックフィルスケジューリングとは別に、カレントスケジューリングも知られている。カレントスケジューリングでは、ジョブの実行時にプールの中から必要数の物理ノードが選択され、割り当てられるので、上述の問題は解消されるとも考えられる。
【００１５】
しかしながら、カレントスケジューリングでは、ジョブ実行時にならないと使用できる物理ノードが判らない仕組みとなっており、割り当ての仕組みの違いから、上述のバックフィルスケジューラにカレントスケジューリングを適用することは困難である。また、カレントスケジューリングは、一つのプールだけを管理対象とするため、複数のキュー（プール）を跨いだ仮想ノードの管理ができないという問題もある。
【００１６】
本発明の目的の一例は、上記問題を解消し、クラスタシステムにおける再スケジューリング時のノード構成の柔軟性とシステムの性能とを向上させ得る、ジョブ管理装置、ジョブ管理方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【００１７】
上記目的を達成するため、本発明の一側面におけるジョブ管理装置は、クラスタシステムにおいて実行されるジョブを管理するための装置であって、
前記クラスタシステムのキュー毎に、キューが提供できるリソースと、前記リソースを満たす仮想ノードのグループとを特定するキュー情報に基づいて、前記ジョブに対応可能な仮想ノードのグループを特定し、特定した仮想ノードのグループの中から、前記ジョブに割り当てる前記仮想ノードを選択する、仮想ノード選択部と、
前記仮想ノードのグループ毎に、当該グループに使用可能な物理ノードについてのノード間の構成要件を特定する、仮想ノードグループ情報に基づいて、前記ジョブが割り当てられた前記仮想ノードに割り当てる前記物理ノードを選択する、物理ノード選択部と、
を備えていることを特徴とする。
【００１８】
また、上記目的を達成するため、本発明の一側面におけるジョブ管理方法は、クラスタシステムにおいて実行されるジョブを管理するための方法であって、
（ａ）前記クラスタシステムのキュー毎に、キューが提供できるリソースと、前記リソースを満たす仮想ノードのグループとを特定するキュー情報に基づいて、前記ジョブに対応可能な仮想ノードのグループを特定し、特定した仮想ノードのグループの中から、前記ジョブに割り当てる前記仮想ノードを選択する、ステップと、
（ｂ）前記仮想ノードのグループ毎に、当該グループに使用可能な物理ノードについてのノード間の構成要件を特定する、仮想ノードグループ情報に基づいて、前記ジョブが割り当てられた前記仮想ノードに割り当てる前記物理ノードを選択する、ステップと、
を有することを特徴とする。
【００１９】
更に、上記目的を達成するため、本発明の一側面におけるプログラムは、コンピュータによって、クラスタシステムにおいて実行されるジョブを管理するためのプログラムであって、
前記コンピュータに、
（ａ）前記クラスタシステムのキュー毎に、キューが提供できるリソースと、前記リソースを満たす仮想ノードのグループとを特定するキュー情報に基づいて、前記ジョブに対応可能な仮想ノードのグループを特定し、特定した仮想ノードのグループの中から、前記ジョブに割り当てる前記仮想ノードを選択する、ステップと、
（ｂ）前記仮想ノードのグループ毎に、当該グループに使用可能な物理ノードについてのノード間の構成要件を特定する、仮想ノードグループ情報に基づいて、前記ジョブが割り当てられた前記仮想ノードに割り当てる前記物理ノードを選択する、ステップと、
を実行させることを特徴とする。
【発明の効果】
【００２０】
以上のように、本発明によれば、クラスタシステムにおける再スケジューリング時のノード構成の柔軟性とシステムの性能とを向上させることができる。
【図面の簡単な説明】
【００２１】
【図１】図１は、本発明の実施の形態で行なわれるマッチングを説明するための図である。
【図２】図２は、本発明の実施の形態におけるジョブ管理装置の構成を示すブロック図である。
【図３】図３は、本実施の形態で用いられるキュー情報の一例を示す図である。
【図４】図４は、本実施の形態で用いられる仮想ノードグループ情報の一例を示す図である。
【図５】図５は、本実施の形態で用いられる実リソース情報の一例を示す図である。
【図６】図６は、本発明の実施の形態におけるジョブ管理装置のジョブアサイン時の動作を示すフロー図である。
【図７】図７は、本発明の実施の形態におけるジョブ管理装置の障害発生時の動作を示すフロー図である。
【図８】図８（ａ）は、障害発生時の物理ノードの状態の一例を示す図であり、図８（ｂ）は、障害発生時の仮想ノードへの物理ノードの再割り当ての状態の一例を示す図である。
【図９】図９は、本発明の実施の形態で用いられる物理ノードの一例を示す図である。
【図１０】図１０は、本発明の実施の形態で用いられるスケジューラマップの一例を示す図である。
【図１１】図１１（ａ）は、従来方式によって実行順序が設定されたジョブを実行する場合を説明する図であり、図１１（ｂ）は、本実施の形態によって実行順序が設定されたジョブを実行する場合を説明する図である。
【図１２】図１２は、本発明の実施の形態におけるジョブ管理装置を実現するコンピュータの一例を示すブロック図である。
【図１３】図１３（ａ）は、投入されたジョブに設定された優先度の一例を示す図であり、図１３（ｂ）は、ジョブのアサインの一例を示す図である。
【図１４】図１４は、プールを用いたノードの割り当ての仕組みを説明する図である。
【図１５】図１５は、ネットワークトポロジを構成するクラスタシステムの一例を示す図である。
【発明を実施するための形態】
【００２２】
（実施の形態の概要）
本発明における実施の形態は、クラスタシステムと共に利用されるバックフィルスケジューラに関連し、ジョブに割り当てられる仮想ノードの選択及び管理に特徴がある。また、本実施の形態は、この特徴により、再スケジューリング時のノード構成の柔軟性とクラスタシステムの性能とを向上させる。
【００２３】
また、本実施の形態では、キューによって定義された資源（リソース）を備える仮想ノード群（以下「仮想ノードグループ」と表記する。）と、各キューとが、対応付けられており、ジョブに仮想ノードを割り当てる際のマッチング制御が階層的に表現されている。このため、最適なリソース探索と割り当て制御（グループ間の物理リソースの安全な交換）とが達成される。なお、キューは、管理者によって設定されており、ジョブを受付ける窓口である。
【００２４】
更に、このマッチング制御は、物理ノードの障害発生時に有用である。また、このマッチング制御は、複数のネットワークインタフェース、ネットワークトポロジといった、複数の構成要件を同時に考慮したマッチング（ジョブへの仮想ノードの割り当て）を可能とする。
【００２５】
上述の機構について、図１を用いて説明する。図１は、本発明の実施の形態で行なわれるマッチングを説明するための図である。図１に示すように、本実施の形態では、ジョブに物理ノードを割り当てる際、ジョブと仮想ノードとの間のマッチング、仮想ノードと物理ノードとの間のマッチング、の二つのマッチングが実行される。
【００２６】
また、ジョブが投入される各キューには、サービスが対応付けられている。サービスは、ユーザに見えるキューの特徴を表わしており、そのキューを利用することで使えるもの、保障される性能などが、サービスと称される。本実施の形態では、キューとサービスとは、１対１の関係にある。更に、各キューには、それぞれが提供できるリソースが定義されている。つまり、各キューには、キューに投入されたジョブが要求する基本的なリソース要件が設定されている。そして、各キューには、このリソース要件を満たす１又は２以上の仮想ノードグループが対応している。
【００２７】
また、各仮想ノードグループは、電源単位、ＣＰＵ、アーキテクチャ、ネットワークトポロジ、分散ファイルシステムの接続環境などの条件に応じて動的に構成される。そして、ユーザが、希望のサービスに対応するキューにジョブを投入すると、ジョブに対して、動的に構成された仮想ノードグループの中から、ジョブ実行の要件を満たす仮想ノードが割り当てられる。
【００２８】
次に、ジョブに仮想ノードが割り当てられると、仮想ノードへの物理ノードの割り当てが行なわれる。物理ノードの割り当ては、仮想ノードが要求するリソースを有する物理ノードを選択することによって行われる。
【００２９】
このとき、従来においては、物理ノードが備える資源のみで、物理ノードの割り当てが行なわれている。しかし、本実施の形態では、個々の物理ノードの属性に加えて、物理ノードが接続されているネットワークトポロジの情報、及び物理ノードが利用可能なファイルシステムの情報、といったノード間資源の情報（ノード間の構成要件）も加えられ、これらの情報に基づいて、物理ノードが選択される。結果、物理ノードの選択の幅が拡大するため、再構成可能なノード構成の柔軟性の向上とクラスタシステムの性能向上とが図られる。
【００３０】
また、言い換えると、ノード管理の階層を「キュー／仮想ノードグループ／仮想ノード／物理ノード」として、キュー、仮想ノードグループ、及び仮想ノードの層と、物理ノードの層とで切り離すことができるので、スケジューリングの可用性を実現できる。また、仮想ノードと物理ノードとのマッチングによって、サービスの可用性も達成される。そして、キューの定義によって、マルチノード用キュー及びシングルノード用キュー等のサービスを同時に提供でき、且つ、サービスレベルを維持することも可能となる。
【００３１】
更に、本実施の形態では、スケジューラマップにアサインされたジョブには、仮想ノードの情報と、対応する物理ノードの情報とを付加することができる。この場合、物理ノードの障害発生時において、障害が起きた物理ノードと同等の交換ノード（物理ノード）を選択しなおし、それと置き換えることで、サービスレベルの低下、スケジューラマップの再スケジューリングを回避することができる。
【００３２】
また、ジョブは、現在から未来にわたって管理されているため、物理ノードの交換は、ジョブが実行されていない安全なタイミングで行うことが可能である。更に、障害ノードが増え、同じスイッチの配下にある物理ノード群では、交換可能な物理ノードが無くなった場合等、サービスレベルが維持できなくなった場合は、キューに対応付けられている仮想ノードは、仮想ノードグループごと交換される。この場合は、正常な物理ノードも含めて全物理ノードが交換されることになる。
【００３３】
（実施の形態）
以下、本発明の実施の形態における、ジョブ管理装置、ジョブ管理方法、及びプログラムについて、図２〜図１１を参照しながら説明する。
【００３４】
［装置構成］
最初に、図２を用いて、本発明の実施の形態におけるジョブ管理装置の構成について説明する。図２は、本発明の実施の形態におけるジョブ管理装置の構成を示すブロック図である。
【００３５】
図２に示す本実施の形態におけるジョブ管理装置４００は、多数のノードを共有するクラスタシステム（図２において図示せず）において、バックフィルスケジューラを使用して、当該システムで実行されるジョブを管理する装置である。図２に示すように、ジョブ管理装置４００は、仮想ノード選択部４３０と、物理ノード選択部４４０とを備えている。
【００３６】
仮想ノード選択部４３０は、キュー情報４３２に基づいて、ジョブに対応可能な仮想ノードのグループ（以下「仮想ノードグループ」と表記する。）を特定し、そして、特定した仮想ノードグループの中から、ジョブに割り当てる仮想ノードを選択する。また、キュー情報４３２は、クラスタシステムのキュー毎に、キューが提供できるリソースと、このリソースを満たす仮想ノードグループとを特定する情報である（図３参照）。
【００３７】
また、物理ノード選択部４４０は、仮想ノードグループ情報４４１に基づいて、ジョブが割り当てられた仮想ノードに割り当てる物理ノードを選択する。また、仮想ノードグループ情報４４１は、仮想ノードグループ毎に、各仮想ノードグループに使用可能な物理ノードについてのノード間の構成要件を特定する情報である（図４参照）。ノード間の構成要件としては、物理ノードが所属しているネットワークトポロジについての要件、物理ノードが利用可能なファイルシステムについての要件等が挙げられる。
【００３８】
このように、ジョブ管理装置４００では、仮想ノードに物理ノードを割り当てる際に、物理ノードが備える資源のみではなく、物理ノードのノード間の構成要件が考慮される。よって、選択可能な物理ノードの幅が拡大するため、再構成可能なノード構成の柔軟性が向上し、加えて、クラスタシステムの性能も向上する。
【００３９】
ここで、図２に加えて図３〜図５を用いて、本実施の形態におけるジョブ管理装置４００の構成について更に具体的に説明する。図３は、本実施の形態で用いられるキュー情報の一例を示す図である。図４は、本実施の形態で用いられる仮想ノードグループ情報の一例を示す図である。図５は、本実施の形態で用いられる実リソース情報の一例を示す図である。
【００４０】
まず、図２に示すように、本実施の形態におけるジョブ管理装置４００は、ジョブアサイン部４０１と、情報管理部４０２と、情報格納部４０３とを備えている。このうち、情報格納部４０３は、スケジューラマップ４１１と、ジョブ情報４６０と、キュー情報４３２と、ポリシー４３１と、仮想ノードグループ情報４４１と、実リソース情報４７３とを格納している。
【００４１】
スケジューラマップ４１１は、図１３（ｂ）に示したスケジューラマップと同様のものであり、ジョブのアサインの状況を示すマップである。ジョブ情報４６０は、アサインが予定されているジョブについての情報、及びアサインが確定したジョブについての情報を含む。なお、ポリシー４３１については後述する。
【００４２】
図３に示すように、キュー情報４３２は、キューに設定されたリソースのリストであり、キュー毎に、キューが提供するリソースと、このリソースを満たす仮想ノードグループとを特定する。例えば、キュー１は、リソースとして「マルチノード」及び「システムA」を提供でき、これらを満たす仮想ノードグループは、「グループ１」と「グループ２」とであることが示されている。
【００４３】
なお、キュー情報４３２おける各キューについての情報は、当該キューの作成時に登録される。また、ユーザは、使用するリソースを指定することができる。ユーザによって指定されたリソースは、ジョブ情報４６０に登録される。そして、ユーザによって指定されたリソースの内容は、仮想ノード選択部４３０によって、仮想ノードグループの選択時に、参照される。
【００４４】
また、キュー情報４３２においては、１つのキュー（サービス）に対して、１組のリソースが割り当てられているが、これに限定されず、１つのキューに対して、複数組のリソースが割り当てられていても良い。なお、１つのキューに対して、複数組のリソースが割り当てられる場合は、１組のリソース毎に、仮想ノードグループも設定される。また、ここでいう「１組のリソース」とは、図３中の行「リソースの内容」において一つの欄に記載されている単一又は２以上のリソースを意味する。
【００４５】
図４に示すように、仮想ノードグループ情報４４１は、仮想ノードグループ毎に、各仮想ノードグループに使用可能な物理ノードについてのノード間の構成要件を特定している。また、具体的には、図４の例では、ノード間の構成要件として、物理ノードが所属しているネットワークトポロジについての要件、物理ノードが利用可能なファイルシステムについての要件、各物理ノードのリソースの要件（CPU、メモリ等）が示されている。
【００４６】
更に、図４の例では、仮想ノードグループ情報４４１には、各仮想ノードグループに所属する仮想ノードの識別子、ノード数も登録されているが、これ以外の情報、例えば、未だ割り当てられていない仮想ノードの識別子及びその数が登録されていても良い。また、本実施の形態では、仮想ノードグループ情報は、キュー作成時に定義されるリソースの内容（CPU、メモリ、ネットワークトポロジ等）に基づいて、管理者によって作成される。なお、仮想ノードグループ情報は、ジョブ管理装置又は外部のコンピュータ等によって自動生成されていても良い。
【００４７】
また、図５に示すように、実リソース情報４７３には、物理ノード毎のリソース、例えば、CPUの個数、メモリ容量、ノード間接続の有無、所属しているネットワークトポロジの構成、等が登録されている。実リソース情報４７３は、後述するように物理ノードに障害が発生した場合、新たな物理ノードが追加された場合等に更新される。
【００４８】
また、図２に示すように、ジョブアサイン部４０１は、空き情報検索部４１０と、開始時刻決定部４２０と、仮想ノード選択部４３０と、物理ノード選択部４４０とを備えている。ジョブアサイン部４０１は、これらによって、キューに投入されたジョブを現在から未来に渡るノード空間にアサインする。
【００４９】
空き情報検索部４１０は、情報格納部４０３に格納されているスケジューラマップ４１１にアクセスし、スケジューラマップ４１１上の、アサイン対象となるジョブを実行可能な未使用空間（時間帯）を検索する。また、空き情報検索部４１０は、未使用空間を特定する情報（以下「空き情報」と表記する。）を、開始時刻決定部４２０に出力する。
【００５０】
開始時刻決定部４２０は、ジョブ情報４６０からアサイン対象となるジョブに関する情報を取得し、更に、検索によって得られた空き情報に基づいて、アサイン対象となるジョブを最も早く実行開始できる時刻を決定する。また、開始時刻決定部４２０は、開始時刻とアサイン対象となるジョブとを仮想ノード選択部４３０に通知する。
【００５１】
仮想ノード選択部４３０は、上述したようにキュー情報４３２に基づいて、ジョブに対応可能な仮想ノードグループを特定する。その後、本実施の形態では、仮想ノード選択部４３０は、情報格納部４０３に格納されているポリシー４３１に基づいて、特定された仮想ノードグループに属する仮想ノードに対して優先順位を付与し、優先順位に基づいて、使用する仮想ノードを決定する。
【００５２】
また、本実施の形態で用いられるポリシー４３１は、例えば、クラスタ内ポリシーと、クラスタ間ポリシーとを含む。このうち、クラスタ内ポリシーは、特定のクラスタ（システム）に所属する仮想ノードをジョブに割り当てる場合に使用する順位付けルールである。また、クラスタ間ポリシーは、複数のクラスタ（システム）間でジョブの割り当てを実行する場合に使用する順位付けルールである。
【００５３】
物理ノード選択部４４０は、上述したように、仮想ノードグループ情報４４１に基づいて、ジョブが割り当てられた仮想ノードに割り当てる物理ノードを選択する。また、物理ノード選択部４４０は、選択された物理ノードに障害が発生した場合は、仮想ノードグループ情報４４１に基づいて、障害が発生した物理ノードが割当てられていた仮想ノードに対して、新たに割り当てる新たな物理ノードを選択する。
【００５４】
更に、物理ノード選択部４４０は、仮想ノードグループ情報４４１に基づいて、障害が発生した物理ノードを割り当てることが可能な仮想ノードが存在しているかどうかを判定することもできる。そして、物理ノード選択部４４０は、存在している場合は、仮想ノードに割り当てる物理ノードとして、障害が発生した物理ノードを選択することができる。
【００５５】
また、図１に示すように、情報管理部４０２は、情報更新部４５０と、リソース情報管理部４７０とを備えている。情報管理部４０２は、これらによって、ジョブ及びクラスタシステムに関する情報を管理している。
【００５６】
このうち、情報更新部４５０は、ジョブについてアサインが確定すると、アサインが確定したジョブの情報を用いて、ジョブ情報４６０を更新する。また、リソース情報管理部４７０は、状態管理部４７１と、状態監視部４７２とを備え、これらによって実ノードの構成を保持している。
【００５７】
状態監視部４７２は、物理ノードのリソースを監視し、物理ノードに障害が発生すると、状態管理部４７１に対して、実リソース情報４７３の更新依頼を通知する。状態管理部４７１は、状態監視部４７２から更新依頼の通知を受け取ると、それに応じて実リソース情報４７３の更新及び管理を行い、物理ノードの再選択を物理ノード選択部４４０に依頼する。
【００５８】
［装置動作］
次に、本発明の実施の形態１におけるジョブ管理装置４０の動作について図６〜図８を用いて説明する。また、以下の説明においては、適宜図２〜図５を参酌する。更に、本実施の形態では、ジョブ管理装置４０を動作させることによって、ジョブ管理方法が実施される。よって、本実施の形態におけるジョブ管理方法の説明は、以下のジョブ管理装置４０の動作説明に代える。
【００５９】
最初に、図６を用いて、クラスタシステムのキューにジョブを投入した際のジョブアサイン時の処理（仮想ノード及び物理ノードの割り当て処理）について説明する。図６は、本発明の実施の形態におけるジョブ管理装置のジョブアサイン時の動作を示すフロー図である。
【００６０】
まず、前提として、ユーザが、投入するジョブで使用するノード数、メモリ量、ネットワークトポロジ、予定実行時間などを指定して、クラスタシステムのキューにジョブを投入する。
【００６１】
図６に示すように、仮想ノード選択部４３０は、ユーザが指定したリソース要求を元に、キュー情報４３２から、投入されたジョブに対応可能な仮想ノードグループを１つ選択する（ステップＳ１）。
【００６２】
次に、仮想ノード選択部４３０は、選択した１つの仮想ノードグループだけで必要ノード数を満たすかどうかを判定する（ステップＳ２）。ステップＳ２の判定の結果、選択したグループ１つだけでは必要ノード数が不足する場合は、仮想ノード選択部４３０は、仮想ノードグループ情報４４１を参照して、一階層上のレベルを検索対象に設定し（ステップＳ３）、再度ステップＳ１を実行する。
【００６３】
例えば、仮想ノード選択部４３０は、図３に示すグループ２を選択したが、仮想ノード数が足りない場合は、グループ１を再度選択する。また、本実施の形態では、ステップＳ３は、上位の階層のグループが対応するリソースの内容と下位の階層のグループが対応するリソースの内容とが等しくなるように行なわれる（同じスイッチに接続している等）。
【００６４】
また、スイッチ接続単位で、仮想ノードグループが設定されているとする。例えば、図１５に示した例における、物理ノード（Node 0〜5）を仮想ノード（L#0〜L#5）と読み替えるとする。この場合、スイッチ２のレベルで接続される仮想ノード群（マルチノードジョブに使用可能なL#0〜L#1）で１つの仮想ノードグループとなる。この場合において、必要ノード数に満たない場合は、仮想ノード群（L#0〜L#1）に加えて、一階層上のスイッチ１のレベルで接続される仮想ノード群(マルチノードジョブに使用可能なL#3〜L#4）も選ばれる。
【００６５】
一方、ステップＳ２の判定の結果、選択したグループ１つだけで必要ノード数が不足しない場合は、ステップＳ４が実行される。ステップＳ４では、空き情報検索部４１０が、投入されたジョブについて、ユーザが指定した予定実行時間以上の空きがあり、且つ、最も早く実行可能な、未使用空間を検索する。そして、開始時刻決定部４２０は、検索によって得られた空き情報に基づいて、ジョブを最も早く実行開始できる時刻を決定する。
【００６６】
なお、ステップＳ４において、空き情報検索部４１０が、条件に合う未使用空間を見つけることができない場合は、一旦処理を終了する。この場合、投入されたジョブは、次回の未使用空間検索が行われるまで待ち状態になる。
【００６７】
次に、仮想ノード選択部４３０は、情報格納部４０３に格納されているポリシー４３１に基づいて、ステップＳ１で選択されたグループに属する仮想ノードに優先順位を設定し、優先順位に従って、投入されたジョブに割り当てる仮想ノードを選択する（ステップＳ５）。
【００６８】
ここで、後述する図８（ｂ）を用いてステップＳ５について説明する。まず、図８（ｂ）において、ジョブＦは配置されておらず、更に、仮想ノード#L2は、マルチノード用に使用可能であるとする。この場合において、例えば、２ノードを使用するジョブが投入され、実行開始時刻では、仮想ノードL#2、L#3、L#4が最も早い時刻にジョブを開始できる状態にあるとする。また、新しく配置するジョブは、ノード数が同一となるジョブの後ろに配置した方が、先行ジョブの終了後すぐに実行できる点で、好ましい。
【００６９】
従って、仮想ノードL#3と仮想ノードL#4とで実行されるジョブの後ろに、未使用空間が存在する場合は、仮想ノード選択部４３０は、新たに投入されたジョブに対して、仮想ノードL#3と仮想ノードL#4とを選択する。また、この結果、これらの仮想ノードの未使用空間に新たに投入されたジョブが配置される。
【００７０】
次に、物理ノード選択部４４０は、仮想ノードグループ情報４４１に基づいて、ジョブが割り当てられた仮想ノードに割り当てる物理ノードを選択する（ステップＳ６）。その後、情報更新部４５０はアサインしたジョブについて、情報格納部４０３に格納されているジョブ情報を更新する（ステップＳ７）。以上のステップＳ１〜Ｓ７の実行により、キューに投入されたジョブがアサインされ、更に、仮想ノード及び物理ノードの割り当てが完了する。
【００７１】
次に、図７及び図８を用いて、物理ノードに障害が発生した場合の処理について説明する。図７は、本発明の実施の形態におけるジョブ管理装置の障害発生時の動作を示すフロー図である。図８（ａ）は、障害発生時の物理ノードの状態の一例を示す図であり、図８（ｂ）は、障害発生時の仮想ノードへの物理ノードの再割り当ての状態の一例を示す図である。
【００７２】
図７に示すように、状態監視部４７２は、各物理ノードの状態を監視し（ステップＳ１１）、各物理ノードに障害が発生していないかどうかを判定する（ステップＳ１２）。ステップＳ２の判定の結果、障害が発生していない場合は、状態監視部４７２は、監視を継続する。一方、ステップＳ２の判定の結果、障害が発生している場合は、状態監視部４７２は、障害が発生した物理ノードを使用しているジョブを異常終了させる（ステップＳ１３）。
【００７３】
次に、状態監視部４７２は、状態管理部４７１に対して、実リソース情報４７３の更新を依頼すると共に、物理ノード選択部４４０に対して、障害が発生した物理ノード（以下「障害ノード」と表記する。）が割り当てられていたジョブの物理ノードの再アサインも依頼する（ステップＳ１４）。
【００７４】
次に、ステップＳ１４が実行されると、状態管理４７１部は、障害ノードの実リソース情報４７３を更新する（ステップＳ１５）。
【００７５】
次に、物理ノード選択部４４０は、更新された実リソース情報４７３と仮想ノードグループ情報とに基づいて、障害ノードと同等の要件を満たす物理ノードを選択する（ステップＳ１６）。更に、物理ノード選択部４４０は、アサイン済ジョブに対して、障害ノードに代えて、新しく選択した物理ノードを割り当てる（ステップＳ１７）。
【００７６】
以上のステップＳ１１〜Ｓ１７の実行により、障害ノードの代わりに新しい物理ノードが選択されるので、ジョブは再度実行される。ここで、具体例を図８（ａ）及び（ｂ）を用いて説明する。
【００７７】
図８（ａ）及び（ｂ）に示すように、もともとマルチノードジョブ用として割り当てられていた物理ノードNode1が障害により通信できなくなってしまった場合、ジョブAは異常終了する。そして、状態管理４７１によって、物理ノードNode1の実リソース情報４７３が通信不可の状態に更新される。
【００７８】
次に、物理ノード選択部４４０は、状態監視部４７２から物理ノードの再アサインが依頼されると、更新された実リソース情報４７３に基づいて、物理ノードNode2（通信可能）を交換ノードに選択する。そして、物理ノード選択部４４０は、アサイン済みのジョブＥの仮想ノードL#1に割り当てる物理ノードを、物理ノードNode1から物理ノードNode2に変更する。なお、障害前において、物理ノードNode1と物理ノードNode2との実リソースは等しいとする。
【００７９】
また、このとき、障害によって物理ノードNode1のノード間接続機能のみが故障したとすると、物理ノードNode1はシングルノードジョブの実行には問題がない。よって、物理ノード選択部４４０が、シングルノードジョブ用の仮想ノードL#2に対して、物理ノードNode1を割り当てることができる。この場合、障害ノードの有効利用が図られる。
【００８０】
［実施の形態の第１の効果］
本実施の形態における第１の効果は、障害発生後もサービスレベルを落とすことなく、ＨＰＣ用クラスタシステムの運用を継続できることである。その理由は、ジョブに割り当てる仮想ノードへの物理ノードの割り当てに、ＨＰＣ用ジョブの性能にかかわる物理ノード間の構成要件（ネットワークトポロジ、分散ファイルシステム等）を使用するためである。また、本実施の形態では、バックフィルスケジューラが用いられるため、ジョブが走行していない時に、障害ノードを正常ノードに交換（再割り当て）することができる。よって、交換処理の安全性を高めつつ、交換処理を容易なものとできる。
【００８１】
［実施の形態の第２の効果］
本実施の形態における第２の効果は、障害が起きた物理ノードを継続的に運用でき、クラスタシステムの使用率を向上させることである。その理由は、ある条件下では利用不可である障害ノードでも、別の条件下では利用可能である場合に、仮想ノードが要求する条件に合致する限り、仮想ノードに動的に割り当てることができるからである。このため、従来では遊休としていた物理ノードを減らす運用が可能となるので、上述したようにクラスタシステムの使用率が向上する。
【００８２】
［実施の形態の第３の効果］
本実施の形態における第３の効果を図９及び図１０を用いて説明する。図９は、本発明の実施の形態で用いられる物理ノードの一例を示す図である。図１０は、本発明の実施の形態で用いられるスケジューラマップの一例を示す図である。 
【００８３】
本実施の形態によれば、クラスタシステムを使用状況によって使い分けることが可能となる。まず、図９に示すサービス１及びサービス２は、使用するノードの条件（「ノード条件」）をSYS1としているが、サービス１では、更に「代替システム」としてSYS2が指定されている。また、図１０に示すように、ジョブAは、処理単位によってジョブA-1とA-2とに分割されており、処理順は、A-1→A-2に設定されているとする。
【００８４】
以上の状況下において、ユーザが、ジョブAにサービス１を選択し、ジョブBにサービス２を選択して、これらのジョブを投入するとする。この場合、スケジューラマップへの割り当ての際、ジョブBには、SYS1に所属するノードが割り当てられ、ジョブA-1には、SYS1が使用中のため、代替システムのSYS2に所属する物理ノードが割り当てられる。なお、この割り当てでは、仮想ノードの割り当ての際に、上述したクラスタ間ポリシーが用いられる。
【００８５】
また、ジョブBが終了するとSYS1の物理ノードは開放されるので、ジョブA-2が開始されるときには、ジョブA-1には、SYS1が割り当てられる。このとき使用されるクラスタシステムが変更になっているにもかかわらず、ジョブの再投入及びスケジューラマップの変更は発生しない。
【００８６】
そして、通常であれば実行待ちとなる時間においては、代替システムによって処理が実行され、更に実行性能の高いシステムが利用可能になった時間においては、システムの切り替えが行なわれる。このため、ジョブのターンアラウンドタイム（TAT）を短縮することが可能となる。
【００８７】
［実施の形態の第４の効果］
本実施の形態における第４の効果を以下に説明する。まず、従来のジョブ管理では、ジョブの実行順序が予め設定されている場合、先行ジョブの終了状態は、ワークフロー管理システム、又はユーザの作成するスクリプトによって監視され、終了後に後続ジョブが投入されるという手順がとられている。
【００８８】
但し、この従来の方法では、先行ジョブを監視するために、ワークフロー管理システム、又はユーザの作成するスクリプトが必要となり、後者の場合は、更に、システム専用のワークフロー記述言語も必要となる。また、この従来の方法では、前のジョブが終了してから後続ジョブが実行されるまでの待ち時間が必要になるという問題もある。
【００８９】
これに対して、本実施の形態においては、スケジューラマップ上で、連続して実行される複数のジョブが存在し、これらに同一の仮想ノードが割り当てられていても、各ジョブの実行時においては、選択したサービスの条件に合致する物理ノードが使用される。このため、本実施の形態では、先行ジョブのすぐ後ろに後続ジョブを配置することが可能となり、ジョブの実行待ち時間を縮減できる。
【００９０】
本実施の形態における第４の効果を、図１１（ａ）及び（ｂ）を用いて具体的に説明する。図１１（ａ）は、従来方式によって実行順序が設定されたジョブを実行する場合を説明する図であり、図１１（ｂ）は、本実施の形態によって実行順序が設定されたジョブを実行する場合を説明する図である。
【００９１】
図１１（ａ）及び（ｂ）の例は、ジョブAには、物理ノードとしてスカラノードを使うサービスが選択され、ジョブBには、物理ノードとしてベクトルノードを使うサービスが選択される。図１１（ｂ）に示すように、本実施の形態によれば、ジョブAの直後にジョブBを配置することができるため、従来方式に比べて、処理の終了時刻を早くすることが可能となる。
【００９２】
［プログラム］
本実施の形態におけるプログラムは、コンピュータに、図６に示すステップＳ１〜Ｓ７、図７に示すステップＳ１１〜Ｓ１７を実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、本実施の形態におけるジョブ管理装置４００とジョブ管理方法とを実現することができる。この場合、コンピュータのＣＰＵ（Central Processing Unit）は、ジョブアサイン部４０１及び情報管理部４０２として機能し、処理を行なう。また、コンピュータに備えられたハードディスク等の記憶装置は、情報格納部４０３として機能する。
【００９３】
ここで、本実施の形態におけるプログラムを実行することによって、ジョブ管理装置４００を実現するコンピュータについて図１１を用いて説明する。図１２は、本発明の実施の形態におけるジョブ管理装置を実現するコンピュータの一例を示すブロック図である。
【００９４】
図１１に示すように、コンピュータ１１０は、ＣＰＵ１１１と、メインメモリ１１２と、記憶装置１１３と、入力インターフェイス１１４と、表示コントローラ１１５と、データリーダ／ライタ１１６と、通信インターフェイス１１７とを備える。これらの各部は、バス１２１を介して、互いにデータ通信可能に接続される。
【００９５】
ＣＰＵ１１１は、記憶装置１１３に格納された、本実施の形態におけるプログラム（コード）をメインメモリ１１２に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ１１２は、典型的には、ＤＲＡＭ（Dynamic Random Access Memory）等の揮発性の記憶装置である。また、本実施の形態におけるプログラムは、コンピュータ読み取り可能な記録媒体１２０に格納された状態で提供される。なお、本実施の形態におけるプログラムは、通信インターフェイス１１７を介して接続されたインターネット上で流通するものであっても良い。
【００９６】
また、記憶装置１１３の具体例としては、ハードディスクドライブの他、フラッシュメモリ等の半導体記憶装置が挙げられる。入力インターフェイス１１４は、ＣＰＵ１１１と、キーボード及びマウスといった入力機器１１８との間のデータ伝送を仲介する。表示コントローラ１１５は、ディスプレイ装置１１９と接続され、ディスプレイ装置１１９での表示を制御する。
【００９７】
データリーダ／ライタ１１６は、ＣＰＵ１１１と記録媒体１２０との間のデータ伝送を仲介し、記録媒体１２０からのプログラムの読み出し、及びコンピュータ１１０における処理結果の記録媒体１２０への書き込みを実行する。通信インターフェイス１１７は、ＣＰＵ１１１と、他のコンピュータとの間のデータ伝送を仲介する。
【００９８】
また、記録媒体１２０の具体例としては、ＣＦ（Compact Flash（登録商標））及びＳＤ（Secure Digital）等の汎用的な半導体記憶デバイス、フレキシブルディスク（Flexible Disk）等の磁気記憶媒体、又はＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの光学記憶媒体が挙げられる。
【００９９】
上述した実施の形態の一部又は全部は、以下に記載する（付記１）〜（付記１５）によって表現することができるが、以下の記載に限定されるものではない。
【０１００】
（付記１）
クラスタシステムにおいて実行されるジョブを管理するための装置であって、
前記クラスタシステムのキュー毎に、キューが提供できるリソースと、前記リソースを満たす仮想ノードのグループとを特定するキュー情報に基づいて、前記ジョブに対応可能な仮想ノードのグループを特定し、特定した仮想ノードのグループの中から、前記ジョブに割り当てる前記仮想ノードを選択する、仮想ノード選択部と、
前記仮想ノードのグループ毎に、当該グループに使用可能な物理ノードについてのノード間の構成要件を特定する、仮想ノードグループ情報に基づいて、前記ジョブが割り当てられた前記仮想ノードに割り当てる前記物理ノードを選択する、物理ノード選択部と、
を備えていることを特徴とするジョブ管理装置。
【０１０１】
（付記２）
前記物理ノード選択部が、選択された前記物理ノードに障害が発生した場合に、
前記仮想ノードグループ情報に基づいて、障害が発生した物理ノードが割当てられていた前記仮想ノードに対して、新たに割り当てる新たな物理ノードを選択する、付記１に記載のジョブ管理装置。
【０１０２】
（付記３）
前記物理ノード選択部が、前記仮想ノードグループ情報に基づいて、前記障害が発生した物理ノードを割り当てることが可能な仮想ノードが存在しているかどうかを判定し、存在している場合に、当該仮想ノードに割り当てる物理ノードとして、前記障害が発生した物理ノードを選択する、
付記１または２に記載のジョブ管理装置。
【０１０３】
（付記４）
前記仮想ノードグループ情報が、前記仮想ノードのグループ毎に、当該グループに使用可能な物理ノードについてのノード間の構成要件として、少なくとも、前記物理ノードが所属しているネットワークトポロジについての要件と、前記物理ノードが利用可能なファイルシステムについての要件とを特定している、
付記１〜３のいずれかに記載のジョブ管理装置。
【０１０４】
（付記５）
前記キューに投入された前記ジョブを実行可能な時間帯を検索する、空き情報検索部と、
検索された時間帯の中から、前記キューに投入された前記ジョブの実行を開始する時刻を決定する、開始時刻決定部と、を備えている、付記１〜４のいずれかに記載のジョブ管理装置。
【０１０５】
（付記６）
クラスタシステムにおいて実行されるジョブを管理するための方法であって、
（ａ）前記クラスタシステムのキュー毎に、キューが提供できるリソースと、前記リソースを満たす仮想ノードのグループとを特定するキュー情報に基づいて、前記ジョブに対応可能な仮想ノードのグループを特定し、特定した仮想ノードのグループの中から、前記ジョブに割り当てる前記仮想ノードを選択する、ステップと、
（ｂ）前記仮想ノードのグループ毎に、当該グループに使用可能な物理ノードについてのノード間の構成要件を特定する、仮想ノードグループ情報に基づいて、前記ジョブが割り当てられた前記仮想ノードに割り当てる前記物理ノードを選択する、ステップと、
を有することを特徴とするジョブ管理方法。
【０１０６】
（付記７）
（ｃ）選択された前記物理ノードに障害が発生した場合に、前記仮想ノードグループ情報に基づいて、障害が発生した物理ノードが割当てられていた前記仮想ノードに対して、新たに割り当てる新たな物理ノードを選択する、ステップを更に有する、付記６に記載のジョブ管理方法。
【０１０７】
（付記８）
（ｄ）前記仮想ノードグループ情報に基づいて、前記障害が発生した物理ノードを割り当てることが可能な仮想ノードが存在しているかどうかを判定し、存在している場合に、当該仮想ノードに割り当てる物理ノードとして、前記障害が発生した物理ノードを選択する、ステップを更に有する、付記６または７に記載のジョブ管理方法。
【０１０８】
（付記９）
前記仮想ノードグループ情報が、前記仮想ノードのグループ毎に、当該グループに使用可能な物理ノードについてのノード間の構成要件として、前記物理ノードが所属しているネットワークトポロジについての要件と、前記物理ノードが利用可能なファイルシステムについての要件とを特定している、
付記６〜８のいずれかに記載のジョブ管理方法。
【０１０９】
（付記１０）
（ｅ）前記キューに投入された前記ジョブを実行可能な時間帯を検索する、ステップと、
（ｆ）検索された時間帯の中から、前記キューに投入された前記ジョブの実行を開始する時刻を決定する、ステップと、
を更に有する、付記６〜９のいずれかに記載のジョブ管理方法。
【０１１０】
（付記１１）
コンピュータによって、クラスタシステムにおいて実行されるジョブを管理するためのプログラムであって、
前記コンピュータに、
（ａ）前記クラスタシステムのキュー毎に、キューが提供できるリソースと、前記リソースを満たす仮想ノードのグループとを特定するキュー情報に基づいて、前記ジョブに対応可能な仮想ノードのグループを特定し、特定した仮想ノードのグループの中から、前記ジョブに割り当てる前記仮想ノードを選択する、ステップと、
（ｂ）前記仮想ノードのグループ毎に、当該グループに使用可能な物理ノードについてのノード間の構成要件を特定する、仮想ノードグループ情報に基づいて、前記ジョブが割り当てられた前記仮想ノードに割り当てる前記物理ノードを選択する、ステップと、
を実行させるプログラム。
【０１１１】
（付記１２）
（ｃ）選択された前記物理ノードに障害が発生した場合に、前記仮想ノードグループ情報に基づいて、障害が発生した物理ノードが割当てられていた前記仮想ノードに対して、新たに割り当てる新たな物理ノードを選択する、ステップを更に前記コンピュータに実行させる、付記１１に記載のプログラム。
【０１１２】
（付記１３）
（ｄ）前記仮想ノードグループ情報に基づいて、前記障害が発生した物理ノードを割り当てることが可能な仮想ノードが存在しているかどうかを判定し、存在している場合に、当該仮想ノードに割り当てる物理ノードとして、前記障害が発生した物理ノードを選択する、ステップを更に前記コンピュータに実行させる、付記１１または１２に記載のプログラム。
【０１１３】
（付記１４）
前記仮想ノードグループ情報が、前記仮想ノードのグループ毎に、当該グループに使用可能な物理ノードについてのノード間の構成要件として、前記物理ノードが所属しているネットワークトポロジについての要件と、前記物理ノードが利用可能なファイルシステムについての要件とを特定している、
付記１１〜１３のいずれかに記載のプログラム。
【０１１４】
（付記１５）
（ｅ）前記キューに投入された前記ジョブを実行可能な時間帯を検索する、ステップと、
（ｆ）検索された時間帯の中から、前記キューに投入された前記ジョブの実行を開始する時刻を決定する、ステップと、
を更に前記コンピュータに実行させる、付記１１〜１４のいずれかに記載のプログラム。
【産業上の利用可能性】
【０１１５】
以上のように、本発明によれば、クラスタシステムにおける再スケジューリング時のノード構成の柔軟性とシステムの性能とを向上させることができる。本発明は、バックフィル型ジョブスケジューラが管理するパーティション（クラスタ）において、クラスタシステムの高使用率を実現するジョブアサイン方法に有用である。
【符号の説明】
【０１１６】
１１０  コンピュータ
１１１  ＣＰＵ
１１２  メインメモリ
１１３  記憶装置
１１４  入力インターフェイス
１１５  表示コントローラ
１１６  データリーダ／ライタ
１１７  通信インターフェイス
１１８  入力機器
１１９  ディスプレイ装置
１２０  記録媒体
１２１  バス
４００  ジョブ管理装置
４０１  アサイン部
４０２  情報管理部
４０３  情報格納部
４１０  空き情報検索部
４１１  スケジューラマップ
４２０  開始時刻決定部
４３０  仮想ノード選択部
４３１  ポリシー
４３２  キュー情報
４４０  物理ノード選択部
４４１  仮想ノードグループ情報
４５０  情報更新部
４６０  ジョブ情報
４７０  リソース情報管理部
４７１  状態管理部
４７２  状態監視部
【図１】
0006010975.tif 000002
【図２】
0006010975.tif 000003
【図３】
0006010975.tif 000004
【図４】
0006010975.tif 000005
【図５】
0006010975.tif 000006
【図６】
0006010975.tif 000007
【図７】
0006010975.tif 000008
【図８】
0006010975.tif 000009
【図９】
0006010975.tif 000010
【図１０】
0006010975.tif 000011
【図１１】
0006010975.tif 000012
【図１２】
0006010975.tif 000013
【図１３】
0006010975.tif 000014
【図１４】
0006010975.tif 000015
【図１５】
0006010975.tif 000016