(57)【特許請求の範囲】
【請求項１】
一又は複数の情報処理装置をそれぞれ含む複数のグループを制御する制御装置において、
前記複数のグループのうち第１のグループに属する情報処理装置のいずれかが処理対象のジョブを実行できない場合、前記複数のグループのうちいずれのグループに属する情報処理装置に切り替えるかの対応情報と、前記複数のグループに属する各情報処理装置に付与された優先順位情報とを記憶する記憶部と、
前記複数のグループのうち、前記第１のグループに属する第１の情報処理装置が、処理対象のジョブを実行できない場合、前記第１の情報処理装置を前記第１のグループから外すとともに、前記対応情報と前記優先順位情報とに基づき、前記複数のグループのうち第２のグループに属する第２の情報処理装置を前記第２のグループから外して前記第１のグループに属させる切替部と、
前記切替部が前記第２の情報処理装置を前記第１のグループに属させた後、前記第１のグループに属した前記第２の情報処理装置に前記処理対象のジョブを実行させる実行部と、
を有することを特徴とする制御装置。
【請求項２】
前記切替部は、更に、前記第１の情報処理装置の電源をオフにすることを特徴とする請求項１記載の制御装置。
【請求項３】
前記切替部は、更に、前記第２の情報処理装置の電源がオフである場合、該電源をオンにし、前記第２の情報処理装置を前記第１のグループに属させることを特徴とする請求項１又は２記載の制御装置。
【請求項４】
前記実行部は、更に、前記第１の情報処理装置が前記処理対象のジョブを実行中に、該ジョブを実行できなくなった場合、該ジョブをキャンセルし、前記切替部によって前記第２の情報処理装置が前記第１グループに属した後、前記第１のグループに属した前記第２の情報処理装置に前記キャンセルしたジョブを再実行させることを特徴とする請求項１乃至３のいずれか１項に記載の制御装置。
【請求項５】
複数のグループにそれぞれ含まれる一又は複数の情報処理装置と、前記複数のグループを制御する制御装置とを有する情報処理システムにおいて、
前記制御装置は、
前記複数のグループのうち第１のグループに属する情報処理装置のいずれかが処理対象のジョブを実行できない場合、前記複数のグループのうちいずれのグループに属する情報処理装置に切り替えるかの対応情報と、前記複数のグループに属する各情報処理装置に付与された優先順位情報とを記憶する記憶部と、
前記複数のグループのうち、前記第１のグループに属する第１の情報処理装置が、処理対象のジョブを実行できない場合、前記第１の情報処理装置を前記第１のグループから外すとともに、前記対応情報と前記優先順位情報とに基づき、前記複数のグループのうち第２のグループに属する第２の情報処理装置を前記第２のグループから外して前記第１のグループに属させる切替部と、
前記切替部が前記第２の情報処理装置を前記第１のグループに属させた後、前記第１のグループに属した前記第２の情報処理装置に前記処理対象のジョブを実行させる実行部と、
を有することを特徴とする情報処理システム。
【請求項６】
複数のグループにそれぞれ含まれる一又は複数の情報処理装置と、前記複数のグループのうち第１のグループに属する情報処理装置のいずれかが処理対象のジョブを実行できない場合、前記複数のグループのうちいずれのグループに属する情報処理装置に切り替えるかの対応情報と、前記複数のグループに属する各情報処理装置に付与された優先順位情報とを記憶する記憶部を有するとともに、前記複数のグループを制御する制御装置とを有する情報処理システムの制御方法において、
前記複数のグループのうち、前記第１のグループに属する第１の情報処理装置が、処理対象のジョブを実行できない場合、前記制御装置が有する切替部が、前記第１の情報処理装置を前記第１のグループから外すとともに、前記対応情報と前記優先順位情報とに基づき、前記複数のグループのうち第２のグループに属する第２の情報処理装置を前記第２のグループから外して前記第１のグループに属させ、
前記切替部が前記第２の情報処理装置を前記第１のグループに属させた後、前記制御装置が有する実行部が、前記第１のグループに属した前記第２の情報処理装置に前記処理対象のジョブを実行させることを特徴とする情報処理システムの制御方法。
【請求項７】
複数のグループにそれぞれ含まれる一又は複数の情報処理装置と、前記複数のグループのうち第１のグループに属する情報処理装置のいずれかが処理対象のジョブを実行できない場合、前記複数のグループのうちいずれのグループに属する情報処理装置に切り替えるかの対応情報と、前記複数のグループに属する各情報処理装置に付与された優先順位情報とを記憶する記憶部を有するとともに、前記複数のグループを制御する制御装置とを有する情報処理システムの制御プログラムにおいて、
前記複数のグループのうち、前記第１のグループに属する第１の情報処理装置が、処理対象のジョブを実行できない場合、前記制御装置が有する切替部に、前記第１の情報処理装置を前記第１のグループから外させるとともに、前記対応情報と前記優先順位情報とに基づき、前記複数のグループのうち第２のグループに属する第２の情報処理装置を前記第２のグループから外させて前記第１のグループに属させ、
前記切替部に前記第２の情報処理装置を前記第１のグループに属させた後、前記制御装置が有する実行部に、前記第１のグループに属した前記第２の情報処理装置に前記処理対象のジョブを実行させることを特徴とする情報処理システムの制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
処理すべきジョブを実行できないサーバを切り離すクラスタリング制御装置、制御システム、制御方法及び制御プログラムに関する。
【背景技術】
【０００２】
複数のコンピュータを１つに束ねて１つの計算機システムに見せるクラスタリングシステムが、科学技術系の演算処理システムや企業の基幹システムとして広く使われている。クラスタリングシステム上のコンピュータ（以下、ノードと称す）は、計算を実行するための計算ノードと、計算ノード全体を管理するための管理ノードの大きく２つに分類することができる。
【０００３】
クラスタリングシステムは、１つの計算（以下、この１つの計算を「ジョブ」と称す）を複数の計算ノード上で実行させたり、複数の計算を複数の計算ノード上で同時に実行させたりしている。以下、必要に応じ複数の計算ノードに跨って並列に実行させるジョブを「並列ジョブ」と称し、単一のジョブを１つの計算ノードで実行させるジョブを「逐次ジョブ」と称す。
【０００４】
図９に、複数の計算ノード上でジョブ（並列ジョブ）が実行されている場合の模式図を示す。クラスタリングシステム内に３台の計算ノードがあり、計算ノードをすべて使って並列ジョブが実行されている場合、１台の計算ノードが異常などにより停止してしまうと、計算ノードが２台しかなくなる。つまり、クラスタリングシステムは、計算ノードを３台必要と定義されているジョブを実行することができず、また、たとえ２台で実行可能であっても、その処理スピードが低下する。
【０００５】
このような時のために、バックアップ用の計算ノードを準備している場合がある。バックアップ用の計算ノードをどのように組み込むかの手段として、手動の場合と自動の場合が考えられる。特に自動の場合は、ソフトウェアの実装によってその動作が異なる。以下、従来の組み込み手段について記す。
【０００６】
まず、従来技術として、最初から計算ノードを余分に組み込んでおき、余分の計算ノードは通常の運用時は利用しないとする手段がある（第１の組み込み手段）。本手段は、ジョブ実行の運用方法を決めておき、組み込んでいるが計算ノードを利用しないようにしておく。具体的には図１０に示すように、クラスタシステム上には計算ノードが４台あるが、ジョブとしては３台しか利用しないようにする（図１０（ａ）参照）。このような構成にすることで、通常時は１台の計算ノードは利用されない状態となるが、利用している１台が停止しても、３台構成が維持されるため、ジョブは実行可能である（図１０（ｂ）参照）。
【０００７】
また、従来技術として、計算ノードを停止させ、利用しないようにしておく手段がある（第２の組み込み手段）。具体的には図１１にて示すように、クラスタリングシステム上には計算ノードが４台あるが、１台は停止させておく（図１１（ａ）参照）。運用中の３台のうち１台が故障したことを管理ノードが検出した場合に、管理ノードが停止している計算ノードの電源を上げて運用に組み込む（図１１（ｂ）参照）。これにより、利用している１台が停止しても、３台構成が維持されるため、ジョブ運用が保たれる。
【０００８】
さらに、従来技術として、図１２にて示すように用途目的が異なる計算ノード群（以下、「ジョブ実行グループ」と称す）に分けて運用している場合（図１２（ａ）参照）、片方のジョブ実行グループの計算ノードが停止した場合、もう片方のジョブ実行グループの計算ノードを兼用して利用する手段がある（図１２（ｂ）参照）（第３の組み込み手段）。本手段では、ジョブ運用に必要なノード数を保つことができる。
【０００９】
また、従来技術として、各クラスタに属するサーバ装置の役割を自在に変更可能なフレキシブルクラスタシステムが開示されている。また、複数のＰＧ（プロセッサグループ）から構成され、それぞれのＰＧ指定でジョブを実行する密結合マルチプロセッサシステムにおいて、ジョブ実行不能なＰＧを指定するジョブを他のＰＧで代替処理する際、各ＰＧの負荷を均等化する交替処理方式が開示されている。さらに、ブート、もしくは通常のＯＳ稼働時に何らかの異常が起こってリブートする際、システム立ち上げに使用するマスタプロセッサとして異常のあるプロセッサを選択することのない機構が開示されている。
【特許文献１】特開２００６−３０９４３９号公報
【特許文献２】特開平９−２８２２９４号公報
【特許文献３】特開平９−２１２４７０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上述の第１の組み込み手段では、実装が容易であるというメリットがある反面、ジョブの運用が固定されてしまい使い勝手が悪いというデメリットや、未使用の計算ノードを別目的にも利用できない上、通電しておく必要がある等のデメリットがある。また計算ノード２台構成を実行要件とするジョブや、計算ノード１台構成を実行要件とするジョブの実行依頼等、運用の想定範囲外のジョブ実行依頼があると、その前提が崩れてしまう。
【００１１】
上述の第２の組み込み手段では、運用を固定する必要が無いというメリットや、利用していない計算ノードの電源がオフとなるため、電力消費を抑止できるというメリットがある。その一方で、あらかじめ起動後の状態を意識した設定をしておく必要があるため、停止中の計算ノードの設定は固定的なものとなるというデメリットや、停止中の計算ノードを別目的に利用できない等のデメリットがある。
【００１２】
また、上述の第３の組み込み手段によって、計算ノードを無駄にすることがなく、運用を固定的にする必要も無いというメリットがあり、また障害発生時、計算ノードがジョブ実行グループを切り替える前と略同一な運用を継続できるというメリットがある。一方、計算ノードを共有するため、互いに処理スピードに影響しあう、また資源管理の観点でジョブの排他処理をした場合、どちらのジョブが実行されるかが不明となる等のデメリットもある。
【００１３】
また、代替する計算ノードを運用で使用しない場合は停止させておきたかったり、別の処理を行うジョブ実行グループに組み込んでおきたかったり等、様々なユーザの要望が考えられるため、これらにフレキシブルに対応できることが求められる。
【００１４】
上述した問題点を解決するため、グループ内に属するサーバが障害等で処理すべきジョブを実行できない場合、障害サーバを切り離し、他のグループに属するサーバを当該他のサーバから切り離し、切り離されたサーバを組み込むことで処理を可能にするクラスタリング制御装置、制御システム、制御方法及び制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
クラスタリング制御装置は、一つまたは複数のサーバをまとめたグループの一つである第１グループに属する一つまたは複数のサーバが、処理すべきジョブを実行できない場合、前記処理すべきジョブを実行できないサーバを前記第１グループから外し、該第１グループとは別のグループである第２グループに属する一つまたは複数のサーバを該第２グループから外すとともに前記第１グループに属させる切替え部と、前記切替え部によって前記第２グループに属していた一つまたは複数のサーバが前記第１グループに属した後、該第１グループに属する一つまたは複数のサーバに前記処理すべきジョブを実行させるジョブ実行部と、を備える。
【００１６】
また、制御システムは、ジョブを実行すべき複数のサーバと、一つまたは複数の前記サーバをまとめたグループの一つである第１グループに属する一つまたは複数のサーバが、処理すべきジョブを実行できない場合、前記処理すべきジョブを実行できないサーバを前記第１グループから外し、該第１グループとは別のグループである第２グループに属する一つまたは複数のサーバを該第２グループから外すとともに前記第１グループに属させる切替え部と、前記切替え部によって前記第２グループに属していた一つまたは複数のサーバが前記第１グループに属した後、該第１グループに属する一つまたは複数のサーバに前記処理すべきジョブを実行させるジョブ実行部と、を備える。
【００１７】
さらに、制御方法は、一つまたは複数のサーバについて、サーバをグループ化するクラスタリングを制御するクラスタリング制御装置の制御方法において、一つまたは複数のサーバをまとめたグループの一つである第１グループに属する一つまたは複数のサーバが、処理すべきジョブを実行できない場合、前記処理すべきジョブを実行できないサーバを前記第１グループから外し、該第１グループとは別のグループである第２グループに属する一つまたは複数のサーバを該第２グループから外すとともに前記第１グループに属させる切替えステップと、前記切替えステップによって前記第２グループに属していた一つまたは複数のサーバが前記第１グループに属した後、該第１グループに属する一つまたは複数のサーバに前記処理すべきジョブを実行させるジョブ実行ステップと、を有することを特徴とする。
【００１８】
また、制御プログラムは、一つまたは複数のサーバについて、サーバをグループ化するクラスタリングを制御するクラスタリング制御装置の制御プログラムにおいて、前記クラスタリング制御装置に、一つまたは複数のサーバをまとめたグループの一つである第１グループに属する一つまたは複数のサーバが、処理すべきジョブを実行できない場合、前記処理すべきジョブを実行できないサーバを前記第１グループから外し、該第１グループとは別のグループである第２グループに属する一つまたは複数のサーバを該第２グループから外すとともに前記第１グループに属させる切替えステップと、前記切替えステップによって前記第２グループに属していた一つまたは複数のサーバが前記第１グループに属した後、該第１グループに属する一つまたは複数のサーバに前記処理すべきジョブを実行させるジョブ実行ステップと、を実行させることを特徴とする。
【発明の効果】
【００１９】
ジョブを実行できないサーバを所属しているグループから切り離し、別のグループに所属しているサーバを追加することで、ジョブを実行することができる。
【発明を実施するための最良の形態】
【００２０】
本実施の形態におけるクラスタリングシステムを図１に示す。クラスタリングシステム１００（制御システム）は、各計算ノードのクラスタ構成を管理および制御する管理ノード群１（クラスタリング制御装置）、およびジョブを実行すべき５台の計算ノード２０Ａ、２０Ｂ、２０Ｃ、２０Ｄ、２０Ｅを備えている。
【００２１】
また、本実施の形態における管理ノード群１は、クラスタリングシステム１００を統括制御するとともに、通知取得部１１、ノード停止部１３、ノード起動部１４を備えた制御ノード５０と、ノード切り離し部１２、ノード組み込み部１５、ジョブ実行部１６、管理ノードＤＢ群３０（ＤＢ：Ｄａｔａｂａｓｅ）を備えた管理ノード４０を備えている。尚、本実施の形態における管理ノード群１は、負荷を分散させるため管理ノード４０、制御ノード５０の２台構成としたが、態様を限定するものではない。管理ノード４０、制御ノード５０の両サーバを１台のクラスタリング制御装置としてもよい。また、管理ノードＤＢ群３０は制御ノード５０からも読書き可能であるものとする。
【００２２】
以下、上述の各ユニットについて説明する。
【００２３】
通知取得部１１は、処理すべきジョブを実行できない計算ノードから、ＩＰネットワーク上のネットワーク機器を監視又は制御するための情報の通信方法を定めるプロトコルであるＳＮＭＰ(Simple Network Management Protocol)におけるＳＮＭＰ  Ｔｒａｐによる通知や、安全にリモートコンピュータと通信するために暗号や認証の技術を利用するコマンドであるｓｓｈ(Secure Shell)コマンドによる切り離し依頼（以下、ＳＮＭＰ  Ｔｒａｐによる通知やｓｓｈコマンドによる切り離し依頼を必要に応じアラートと記す。）を取得する。尚、処理すべきジョブを実行できない状況に関する情報として、例えばＳＮＭＰ  Ｔｒａｐではネットワークデバイスの機能を管理するためにシステムによって使用される所定の識別子であるＯＩＤが付与され、ｓｓｈコマンドでは切り替えコマンドの後に引数として付与される。
【００２４】
ノード切り離し部１２は、通知取得部１１がアラートを取得した場合、処理すべきジョブを実行できない計算ノードを、その計算ノードが所属しているジョブ実行グループから切り離す。
【００２５】
ノード停止部１３は、ノード切り離し部１２によって切り離された、処理すべきジョブを実行できない計算ノードの電源をオフにする。
【００２６】
ノード起動部１４は、上述の処理すべきジョブを実行できない計算ノードが属していたジョブ実行グループに対し新たに属することとなる計算ノードの電源がオフである場合、その計算ノードの電源をオンにする。
【００２７】
ノード組み込み部１５は、ジョブ実行グループとは別のジョブ実行グループに属する計算ノードを、当該別のジョブ実行グループから切り離すとともに、当該ジョブ実行グループに組み込む。またノード組み込み部１５は、組み込むべき計算ノードが現在ジョブを実行している場合、そのジョブが終了するまで組み込みを待機し、ジョブが終了次第計算ノードをジョブ実行グループに組み込む、もしくは、そのジョブはそのまま実行させながら、計算ノードをジョブ実行グループに組み込む。尚、別のジョブ実行グループからの切り離しは、上述のノード切り離し部１２にて行ってもよい。
【００２８】
ジョブ実行部１６は、資源ＤＢ３４にて保持されている対応テーブルを参照することで、ジョブ実行グループに属する計算ノードにジョブを実行させる。また、ジョブ実行部１６は、上述のノード切り離し部１２、ノード組み込み部１５によって新たに再構成されたジョブ実行グループに属する計算ノードに、処理すべきジョブを実行させる。ただし、ジョブを実行するために必要な計算ノードの数が不足している場合には、ジョブが実行できる必要な計算ノードが空くまで、実行を待ち合わせる。
【００２９】
また、ジョブ実行部１６は、ジョブを処理している最中（計算している最中）に計算ノードが処理すべきジョブを実行できない状況になった場合、その実行中のジョブをキャンセルし、ジョブ実行グループの再構成が成された後に、キャンセルしたジョブを計算ノードに再実行させる。
【００３０】
管理ノードＤＢ群３０は、複数のＤＢの集合体であり、ノード種別ＤＢ３１、代替ＤＢ３２、ジョブクラスＤＢ３３、資源ＤＢ３４を備える。
【００３１】
ノード種別ＤＢ３１は、ＩＰアドレス、ホスト名等、計算ノードを一意に識別するためのノード名と、当該計算ノードがジョブ実行グループを跨いで切替え可能な計算ノードであるか（タイプ名：ＡＪ）、切替え不可な計算ノードであるか（タイプ名：Ｊ）を示すノード種別と、当該計算ノードがジョブ実行グループに切り離されているか（「Ｄ」（Ｄｉｓａｂｌｅの意））、組み込まれているか（「Ｅ」（Ｅｎａｂｌｅの意））を示すノード状態との対応をテーブルとして保持している。
【００３２】
代替ＤＢ３２は、いずれの計算ノードに障害等が発生した場合、いずれの計算ノードに切替えるかの対応テーブルを保持する。本対応テーブルは、例えば計算ノード２０Ａと計算ノード２０Ｅとの対応、または、ジョブ実行グループ＃１に属する計算ノードに障害が発生した場合はジョブ実行グループ＃２に属する計算ノードのいずれか等、ジョブ実行グループ間の対応などである（尚、ジョブ実行グループ間の対応の場合は、さらに各計算ノードに対し切替え優先順位が付与され、優先順位の順番に切替えられる）。また代替ＤＢ３２は、現在いずれの計算ノードがいずれの計算ノードに切り替えられたかの情報も保持する。
【００３３】
ジョブクラスＤＢ３３は、ジョブ実行グループ（以降、ジョブクラスとも表記する場合がある）に現在いずれの計算ノードが属しているかを示す対応テーブル（ジョブ実行グループと、当該ジョブ実行グループに属する計算ノードとの対応）を保持する。また、上述の対応の初期値も保持している。
【００３４】
資源ＤＢ３４は、ジョブの識別情報と、当該ジョブが実行される計算ノードとの対応テーブルを保持するとともに、ジョブの実行状況（待ち状況、終了等）、ジョブを実行していない計算ノードである空き計算ノードの情報を保持している。
【００３５】
上述の各ユニットの機能は、管理ノード４０、制御ノード５０に備えられた図示しない中央演算装置（ＣＰＵ）が、図示しない記憶媒体（不揮発性、揮発性）に格納されたソフトウェアを実行することで実現される。
【００３６】
次に、管理ノード群１の計算ノードに対する制御方法の概要を図２、図３を参照しつつ説明する。
【００３７】
図２に、一例として５台の計算ノードのうち、３台の計算ノードが稼動しており、２台の計算ノードが待機している場合を示す。尚、２台の待機している計算ノードは共に電源オフの状態であるものとする（図２上段参照）。尚、稼動している計算ノードはジョブ実行グループＡに属し、待機している計算ノードはジョブ実行グループＢに属しているものとする。
【００３８】
ここで、図２中段にて示すように、稼働中の計算ノードのうちの１台が故障した場合、図２下段に示すように、管理ノード群１は、故障した計算ノードをジョブ実行グループから切り離し、ユーザのオペレーションミス等により再度組み込まれないようにするため故障した計算ノードの電源をオフにする。また管理ノード群は、待機している計算ノードのうちの一つの電源を投入し、電源が投入された計算ノードをジョブ実行グループに組み込む。
【００３９】
次に、図３を参照しつつ複数のジョブ実行グループが定義されている場合について説明する。図３において、２つのジョブ実行グループがあり、一方のジョブ実行グループ（ジョブ実行グループＡ）に２台の計算ノードが属しており、他方のジョブ実行グループ（ジョブ実行グループＢ）に３台の計算ノードが属しているものとする（図３上段参照）。
【００４０】
ここで、ジョブ実行グループＡに属する計算ノードの１台が故障した場合（図３中段参照）、ジョブ実行グループＡの計算ノードで実行中であったジョブは、そのジョブ結果も不安定なものである蓋然性が高いため、一旦ここで刈り取られる（キャンセルされる）。尚、ジョブのキャンセルは、例えばジョブ実行グループＡに属し、故障ノードの影響を受けるジョブが実行されている計算ノードに対し、管理ノード群１がｓｓｈ等を用いてＫＩＬＬコマンドを発行することでなされる。
【００４１】
その後、図３下段に示すように、管理ノード群１は、故障した計算ノードをジョブ実行グループＡから切り離し、ジョブ実行グループＢの計算ノードをジョブ実行グループＡに組み込む。尚、管理ノード群１は、この時点で故障によって切り離された計算ノードの電源をオフにし、またジョブ実行グループＡに組み込まれるべき計算ノードの電源がオフである場合、電源をオンにする。また、計算ノードが新しくジョブ実行グループＡに属することになった後、キャンセルされたジョブは再実行される。
【００４２】
また、本実施の形態におけるクラスタリングシステム１００は、クラスタリングを統括的に制御および管理している実行モジュールを起動する際、計算ノードに障害等が発生した場合の挙動を、「ＮＯＮＥ」、「ＤＩＳＡＢＬＥ」、「ＣＨＡＮＧＥ」の３つのモードで指定することができる。ここで、これら３つのモードを図４を参照しつつ説明する。尚、図４は所定のジョブ実行グループに計算ノード２０Ａが属しており、他のジョブ実行グループに計算ノード２０Ｅが属しているものとし、計算ノード２０Ａの代替計算ノードとして計算ノード２０Ｅが定義されているものとする。また図４において、実線で示した計算ノードが上述の所定のジョブ実行グループに属しているものとする。
【００４３】
「ＮＯＮＥ」モードは、計算ノードが故障した場合でも運用（ジョブ実行グループ）から切り離さないモードであり、故障した計算ノードが停止し、その後起動した場合に運用（ジョブ実行グループ）に組み込まれるモードである。尚、「ＮＯＮＥ」モードは、本特許の範囲ではないため、以降の説明は省略する。
【００４４】
「ＤＩＳＡＢＬＥ」モードは、計算ノードが故障した場合、運用（ジョブ実行グループ）から切り離すモードであり、故障した計算ノードが停止し、その後起動した場合でも運用（ジョブ実行グループ）には組み込まれないモードである。尚、「ＤＩＳＡＢＬＥ」モードについては、以降の説明は省略する。
【００４５】
「ＣＨＡＮＧＥ」モードは、計算ノードが故障した場合、故障した計算ノードを運用（ジョブ実行グループ）から切り離すとともに、代替用の計算ノードを運用（ジョブ実行グループ）に組み込むモードである。尚、「ＤＩＳＡＢＬＥ」のモードと同様、故障した計算ノードが停止し、その後起動した場合でも運用（ジョブ実行グループ）に組み込まれない。
【００４６】
次に、クラスタリングシステム１００の計算ノードに対する管理および制御について、図５から図８のタイムチャートを参照しつつ説明する。尚、図５から図８のタイムチャートの右側に、タイムチャートと対応した管理ノードＤＢ群３０にて保持されている各種情報の遷移も示す。
【００４７】
以降のタイムチャートの説明では、その初期値としてジョブクラスＤＢ３３にジョブ実行グループ＃１、ジョブ実行グループ＃２の２つのジョブ実行グループが定義されているものとする。また、ジョブクラスＤＢ３３の初期値として、計算ノード２０Ａ、２０Ｂがジョブ実行グループ＃１に属しており、計算ノード２０Ｃ、２０Ｄ、２０Ｅがジョブ実行グループ＃２に属しているものとする。尚、図５から図８のタイムチャートでは、ジョブ実行グループを破線枠にて示している。
【００４８】
また、ジョブ実行グループ＃１に２ノード対応ジョブ（並列ジョブ）、ジョブ実行グループ＃２に１ノード対応ジョブ（逐次ジョブ）が実行されるものとする（資源ＤＢ３４に定義されている）。さらに、計算ノード２０Ａの代替計算ノードとして計算ノード２０Ｅが代替ＤＢ３２の初期値として定義されているものとする（尚、代替ＤＢ３２の初期値は図示せず）。
【００４９】
またノード種別ＤＢ３１の初期値として、計算ノード２０Ａ、２０Ｂ、２０Ｃは切り替え不可な計算ノード（Ｊ）かつノード状態がジョブ実行グループに組み込まれている計算ノード（Ｅ）として定義され、計算ノード２０Ｄ、２０Ｅは切り替え可能な計算ノード（ＡＪ）かつノード状態がジョブ実行グループに組み込まれている計算ノード（Ｅ）として定義されているものとする。
【００５０】
まず、図５に、計算ノード２０Ａに障害が発生し、ＳＮＭＰ  Ｔｒａｐが送信される場合についてのタイムチャートを示す。
【００５１】
クラスタリングを制御および管理を統括する実行モジュール（以下、統括モジュールと称す）が制御ノード５０上で「ＣＨＡＮＧＥ」モードとして実行されているものとする（ステップＳ１）。計算ノード２０Ａに異常が生じＳＮＭＰ  Ｔｒａｐが制御ノード５０へ通知された場合（ステップＳ２）、通知取得部１１がＳＮＭＰ  Ｔｒａｐを取得し、異常が発生した計算ノードのホスト名およびＳＮＭＰ  ＴｒａｐのＯＩＤを獲得する。
【００５２】
その後、通知取得部１１は、取得したＯＩＤから異常が発生した旨の情報（ジョブが実行できない状況に関する情報）を取得し、管理ノード４０のジョブ実行部１６にジョブのキャンセル指示およびノード切り離し部１２に計算ノード２０Ａの切り離し指示をする（ステップＳ３）。
【００５３】
ジョブ実行部１６は、ｓｓｈを使用することで、現在計算ノード２０Ｂで稼動しているジョブをキャンセルする（ステップＳ４、ステップＳ４ａ）。また、ジョブ実行部１６は、資源ＤＢ３４の空き計算ノードの情報を「なし」から「２０Ｂ」に更新する。また、切り離し指示を受けたノード切り離し部１２は、ノード種別ＤＢ３１に保持されている計算ノード２０Ａのノード状態を「Ｅ」から「Ｄ」に更新し、計算ノード２０Ａをジョブ実行グループ＃１から切り離す（ステップＳ４）。
【００５４】
ノード停止部１３は、その後故障ノードである計算ノード２０Ａの電源がオフになるよう制御することで（ステップＳ５）、計算ノード２０Ａが停止する（ステップＳ６）。
【００５５】
次に、ノード起動部１４は、代替ＤＢ３２を参照することで、計算ノード２０Ａの代替となる計算ノード（ここでは計算ノード２０Ｅ）を選択し、計算ノード２０Ｅが停止している場合、計算ノード２０Ｅを起動させる（ステップＳ７、ステップＳ８）。
【００５６】
その後、ノード組み込み部１５は、代替ＤＢ３２を参照し、ジョブクラスＤＢ３３に対し、計算ノード２０Ｅをジョブ実行グループ＃２からジョブ実行グループ＃１に切り替え、ジョブクラスＤＢ３３を更新することで（ジョブ実行グループ＃２から計算ノード２０Ｅを切り離し、計算ノード２０Ｅをジョブ実行グループ＃１へ組み込む）、計算ノード２０Ｅは、ジョブ実行グループ＃１に組み込まれる（ステップＳ９）。また、このタイミングでノード組み込み部１５は、代替ＤＢ３２に対し現在計算ノード２０Ａが計算ノード２０Ｅに切り替えられた旨の更新を行う。また、資源ＤＢ３４の空き計算ノードの情報も更新される。
【００５７】
尚、ノード組み込み部１５は、この時点で計算ノード２０Ｅが別のジョブを実行中である場合（資源ＤＢが参照される）、計算ノード２０Ｅは現在実行しているジョブをそのまま継続して実行し、当該ジョブが終了した場合（資源ＤＢ３４による実行状態が「終了」となった場合）にジョブ実行グループが切り替わるものとする。
【００５８】
その後、ステップＳ９でノード組み込み部１５は、資源ＤＢ３４に対しジョブ実行グループの変更に伴い、ジョブの識別情報と計算ノードとの対応を更新する。
【００５９】
ジョブ実行部１６は、更新された資源ＤＢ３４を参照することで、キャンセルしたジョブをジョブ実行グループ＃１に属する計算ノード（計算ノード２０Ｂ、２０Ｅ）に再実行させる（ステップＳ１０）。また、資源ＤＢ３４の空き計算ノードの情報も更新される。
【００６０】
次に、計算ノード２０ＡにＰａｎｉｃが発生し、ＳＮＭＰ  Ｔｒａｐが送信されない場合についてのタイムチャートを図６に示す。尚、図６において、計算ノードが正常に停止、起動する場合の例を、ステップＳ１２、ステップＳ１３に示し、Ｐａｎｉｃによる異常停止が生じた後に起動する場合の例をステップＳ１４以降に示す。また、統括モジュールは制御ノード５０上で「ＣＨＡＮＧＥ」モードとして実行されているものとする（ステップＳ１１）。
【００６１】
まず、計算ノード２０Ｂを例に、本実施の形態における計算ノードの通常の停止および起動処理をステップＳ１２、ステップＳ１３に示す。クラスタリングのクライアントモジュール（クライアントモジュールは各計算ノードにて稼動する）が停止する際、所定のフラグファイルが生成される（ステップＳ１２）。その後、計算ノード２０Ｂが起動し、クライアントモジュールが起動する際、クライアントモジュールは上述のフラグファイルの存在確認を行い、フラグファイルがあった場合はフラグファイルを削除し、通常に起動する（ステップＳ１３）。
【００６２】
一方、計算ノード２０ＡがＰａｎｉｃによって異常停止した場合をステップＳ１４以降に説明する。計算ノード２０ＡがＰａｎｉｃによって異常停止した場合、計算ノード２０Ａは自動起動する。しかし、上述ステップＳ１２のような通常の停止処理がなされなかったため、クライアントモジュールは起動の際、本来あるべき所定のフラグファイルを確認することができない。所定のフラグファイルが確認できない場合は、クライアントモジュールはｓｓｈ等を用いて制御ノード５０へ自らの計算ノードの切り離しを依頼する（ステップＳ１４）。
【００６３】
ｓｓｈによる切り離し依頼が取得された後、通知取得部１１は、ジョブ実行部１６にジョブのキャンセル指示を発行し、ノード切り離し部１２に対し切り離し指示を行う（ステップＳ１５）。ジョブのキャンセル指示を受けたジョブ実行部１６および切り離し指示を受けたノード切り離し部１２は、ステップＳ４と同様手法でジョブをキャンセルするとともに計算ノード２０Ａを切り離し（ステップＳ１６、ステップＳ１６ａ）、ノード起動部１４は、代替計算ノードである計算ノード２０Ｅが停止している場合、計算ノード２０Ｅを起動させる（ステップＳ１７、ステップＳ１８）。
【００６４】
次に、ノード組み込み部１５は、ステップＳ９と同様処理で計算ノード２０Ｅをジョブ実行グループ＃２から切り離し、ジョブ実行グループ＃１に組み込む（ステップＳ１９）。尚、ステップＳ９同様、この時点で計算ノード２０Ｅが別のジョブを実行中である場合、計算ノード２０Ｅは現在実行しているジョブをそのまま継続して実行し、当該ジョブが終了した場合にジョブ実行グループが切り替わるものとする。
【００６５】
尚、計算ノード２０Ａは、ステップＳ１６でのノード切り離し部１２による切り離し完了後、ｓｓｈ等にて管理ノード４０から起動指示を受けることでクライアントモジュールを起動する（ステップＳ２０）。
【００６６】
ジョブ実行部１６は、ユーザから並列ジョブの実行依頼が来た場合は、資源ＤＢ３４を参照することで、ジョブ実行グループ＃１に属する計算ノード（計算ノード２０Ｂ、２０Ｅ）に並列ジョブを実行させる（ステップＳ２１）。尚、ジョブの実行がキャンセルされている場合、ジョブ実行部１６はキャンセルされたジョブをジョブ実行グループ＃１に属する計算ノード（計算ノード２０Ｂ、２０Ｅ）に再実行させる。計算ノード２０Ａは、電源断されていないが、ステップＳ１６にてジョブ実行グループ＃１より切り離されているため、ジョブを実行しない。
【００６７】
処理すべきジョブを実行できない状況の他の例として、計算ノードに障害が発生した場合以外に、計算ノードのメンテナンスを実施する場合が考えられる。計算ノードに対しメンテナンスを行う場合、メンテナンスの影響がジョブに反映しないように当該計算ノードをジョブ実行グループから切り離す必要がある。かかる場合のジョブ実行グループからの切り離し、組み込み処理を図７、図８のタイムチャートに示す。尚、図７、図８は、計算ノード２０Ａに対しメンテナンスを行うものとして説明する。以降の説明においても前提条件（管理ノードＤＢ群３０の初期値）は、上述の図５、図６で説明したものと同様とする。
【００６８】
まず、メンテナンス開始前の計算ノードのジョブ実行グループ切替え処理を図７に示すとともに説明する。尚、図７にて示した一連の処理は、ユーザによるメンテナンス開始コマンドの実行をトリガとして行われるものとするが、各ステップ個別に実行されてもよい。
【００６９】
ユーザによって、メンテナンス対象である計算ノードのノード名を引数としたメンテナンス開始コマンドが制御ノード５０上で起動された場合、ノード切り離し部１２は、ステップＳ４の処理と同様、計算ノード２０Ａをジョブ実行グループ＃１から切り離す（ステップＳ３０）。その後、ノード起動部１４は、ステップＳ７と同様の処理で計算ノード２０Ａの代替ノード（計算ノード２０Ｅ）を選択し、計算ノード２０Ｅが停止している場合は起動させる（ステップＳ３１、ステップＳ３２）。
【００７０】
次に、ステップＳ９と同様処理にてノード組み込み部１５は、計算ノード２０Ａの代替である計算ノード２０Ｅをジョブ実行グループ＃２から切り離すと共にジョブ実行グループ＃１に組み込み、資源ＤＢ３４を更新する（ステップＳ３３）。
【００７１】
ジョブ実行部１６は、ユーザから並列ジョブの実行依頼が来た場合は、資源ＤＢ３４を参照することで、ジョブ実行グループ＃１に属する計算ノード（計算ノード２０Ｂ、２０Ｅ）に並列ジョブを実行させる（ステップＳ３４）。尚、計算ノード２０Ａは電源断されていないが、ジョブ実行グループ＃１より切り離されているため、ジョブを実行しない。
【００７２】
尚、ジョブ実行グループからの計算ノードの切り離し、組み込みは、当該計算ノードがジョブを実行中である場合、現在実行しているジョブをそのまま継続して処理する。実行中のジョブが終了した場合（資源ＤＢ３４による実行状態が「終了」となった場合）に計算ノードはジョブ実行グループから切り離される（または組み込まれる）ものとする。
【００７３】
次に、計算ノード２０Ａのメンテナンスが終了した場合にジョブ実行グループの構成を戻す処理を図８のタイムチャートを参照しつつ説明する。
【００７４】
計算ノード２０Ａに対するメンテナンスが終了し（ステップＳ４０）、計算ノード２０Ａが起動したとする（ステップＳ４１）。尚、本実施の形態では、計算ノードが停止する際、ジョブ実行グループから切り離されている場合（ノード種別ＤＢ３１にて保持されている計算ノード２０Ａのノード状態が「Ｄ」である場合）、計算ノードが起動した場合でも自動でジョブ実行グループに組み込まれない。
【００７５】
制御ノード５０上で、メンテナンスが完了した計算ノードのノード名を引数としたメンテナンス完了コマンドが実行された場合（ステップＳ４２）、制御ノード５０は、組み込み指示を管理ノード４０に対し行う（ステップＳ４３）。
【００７６】
更新指示を受けた管理ノード４０のノード組み込み部１５は、ノード種別ＤＢの計算ノード２０Ａのノード状態を「Ｅ」にして計算ノード２０Ａをジョブ実行グループ＃１に組み込み、ノード切り離し部１２は、ノード種別ＤＢ３１の計算ノード２０Ｅのノード状態を「Ｄ」にすることでジョブ実行グループ＃１から計算ノード２０Ｅを切り離す（ステップＳ４４、Ｓ４５、Ｓ４６）。
【００７７】
この時点で、資源ＤＢ３４にて保持されている対応も更新され、ジョブ実行グループ＃１は、計算ノード２０Ｅが切り離され、計算ノード２０Ａが組み込まれた運用（ジョブの実行）がなされる（ステップＳ４７）。
【００７８】
次に、ノード組み込み部１５は、計算ノード２０Ｅをジョブ実行グループ＃２に組み込むことで（ステップＳ４８、Ｓ４９）、メンテナンス前のジョブ実行グループと、計算ノードとの対応となる。
【００７９】
更に、管理ノード群（クラスタリング制御装置）を構成するコンピュータにおいて上述した各ステップを実行させるプログラムを、制御プログラムとして提供することができる。上述したプログラムは、コンピュータにより読取り可能な記録媒体に記憶させることによって、管理ノード群（クラスタリング制御装置）を構成するコンピュータに実行させることが可能となる。ここで、上記コンピュータにより読取り可能な記録媒体としては、ＲＯＭやＲＡＭ等のコンピュータに内部実装される内部記憶装置、ＣＤ−ＲＯＭやフレキシブルディスク、ＤＶＤディスク、光磁気ディスク、ＩＣカード等の可搬型記憶媒体や、コンピュータプログラムを保持するデータベース、或いは、他のコンピュータ並びにそのデータベースや、更に回線上の伝送媒体をも含むものである。
【００８０】
(付記１)  一つまたは複数のサーバをまとめたグループの一つである第１グループに属する一つまたは複数のサーバが、処理すべきジョブを実行できない場合、前記処理すべきジョブを実行できないサーバを前記第１グループから外し、該第１グループとは別のグループである第２グループに属する一つまたは複数のサーバを該第２グループから外すとともに前記第１グループに属させる切替え部と、
前記切替え部によって前記第２グループに属していた一つまたは複数のサーバが前記第１グループに属した後、該第１グループに属する一つまたは複数のサーバに前記処理すべきジョブを実行させるジョブ実行部と、
を備えるクラスタリング制御装置。
(付記２)  前記クラスタリング制御装置において、
前記切替え部は、更に、処理すべきジョブを実行できない前記一つまたは複数のサーバの電源をオフにすることを特徴とする付記１記載のクラスタリング制御装置。
（付記３）  前記クラスタリング制御装置において、
前記切替え部は、更に、前記第１グループに属すべき前記第２グループの一つまたは複数のサーバの電源がオフである場合、該電源をオンにし、前記第１グループに属すべき前記第２グループの一つまたは複数のサーバを前記第１グループに属させることを特徴とする付記１又は２記載のクラスタリング制御装置。
（付記４）  前記クラスタリング制御装置において、
前記ジョブ実行部は、更に、前記第１グループに属する一つまたは複数のサーバが処理すべきジョブを実行中に、該処理を実行できなくなった場合、該ジョブをキャンセルし、前記切替え部によって前記第２グループに属していた一つまたは複数のサーバが前記第１グループに属した後、前記第１グループに属する一つまたは複数のサーバに前記キャンセルしたジョブを再実行させることを特徴とする付記１又は３記載のクラスタリング制御装置。
（付記５）  前記クラスタリング制御装置において、
前記切替え部は、更に、前記第２グループに属していた一つまたは複数のサーバがジョブを実行中である場合、該ジョブが終了した後に、前記サーバを前記第１グループに属させることを特徴とする付記１乃至付記４のいずれかに記載のクラスタリング制御装置。
（付記６）  ジョブを実行すべき複数のサーバと、
一つまたは複数の前記サーバをまとめたグループの一つである第１グループに属する一つまたは複数のサーバが、処理すべきジョブを実行できない場合、前記処理すべきジョブを実行できないサーバを前記第１グループから外し、該第１グループとは別のグループである第２グループに属する一つまたは複数のサーバを該第２グループから外すとともに前記第１グループに属させる切替え部と、
前記切替え部によって前記第２グループに属していた一つまたは複数のサーバが前記第１グループに属した後、該第１グループに属する一つまたは複数のサーバに前記処理すべきジョブを実行させるジョブ実行部と、
を備える制御システム。
（付記７）  前記制御システムにおいて、
前記切替え部は、更に、処理すべきジョブを実行できない前記一つまたは複数のサーバの電源をオフにすることを特徴とする付記６に記載の制御システム。
（付記８）  前記制御システムにおいて、
前記切替え部は、更に、前記第１グループに属すべき前記第２グループの一つまたは複数のサーバの電源がオフである場合、該電源をオンにし、前記第１グループに属すべき前記第２グループの一つまたは複数のサーバを前記第１グループに属させることを特徴とする付記６または付記７に記載の制御システム。
（付記９）  前記制御システムにおいて、
前記ジョブ実行部は、更に、前記第１グループに属する一つまたは複数のサーバが処理すべきジョブを実行中に該処理を実行できなくなった場合、該ジョブをキャンセルし、前記切替え部によって前記第２グループに属していた一つまたは複数のサーバが前記第１グループに属した後、前記第１グループに属する一つまたは複数のサーバに前記キャンセルしたジョブを再実行させることを特徴とする付記６乃至付記８のいずれかに記載の制御システム。
（付記１０）  前記制御システムにおいて、
前記切替え部は、更に、前記第２グループに属していた一つまたは複数のサーバがジョブを実行中である場合、該ジョブが終了した後に、前記サーバを前記第１グループに属させることを特徴とする付記６乃至付記９のいずれかに記載の制御システム。
（付記１１）  一つまたは複数のサーバについて、サーバをグループ化するクラスタリングを制御するクラスタリング制御装置の制御プログラムにおいて、
前記クラスタリング制御装置に、
一つまたは複数のサーバをまとめたグループの一つである第１グループに属する一つまたは複数のサーバが、処理すべきジョブを実行できない場合、前記処理すべきジョブを実行できないサーバを前記第１グループから外し、該第１グループとは別のグループである第２グループに属する一つまたは複数のサーバを該第２グループから外すとともに前記第１グループに属させる切替えステップと、
前記切替えステップによって前記第２グループに属していた一つまたは複数のサーバが前記第１グループに属した後、該第１グループに属する一つまたは複数のサーバに前記処理すべきジョブを実行させるジョブ実行ステップと、
を実行させることを特徴とする制御プログラム。
（付記１２）  前記制御プログラムにおいて、
前記切替えステップは、更に、処理すべきジョブを実行できない前記一つまたは複数のサーバの電源をオフにさせることを特徴とする付記１１に記載の制御プログラム。
（付記１３）  前記制御プログラムにおいて、
前記切替えステップは、更に、前記第１グループに属すべき前記第２グループの一つまたは複数のサーバの電源がオフである場合、該電源をオンにさせ、前記第１グループに属すべき前記第２グループの一つまたは複数のサーバを前記第１グループに属させることを特徴とする付記１１または付記１２に記載の制御プログラム。
（付記１４）  前記制御プログラムにおいて、
前記ジョブ実行ステップは、更に、前記第１グループに属する一つまたは複数のサーバが処理すべきジョブを実行中に該処理を実行できなくなった場合、該ジョブをキャンセルし、前記切替えステップによって前記第２グループに属していた一つまたは複数のサーバが前記第１グループに属した後、前記第１グループに属する一つまたは複数のサーバに前記キャンセルしたジョブを再実行させることを特徴とする付記１１乃至付記１３のいずれかに記載の制御プログラム。
（付記１５）  前記制御プログラムにおいて、
前記切替えステップは、更に、前記第２グループに属していた一つまたは複数のサーバがジョブを実行中である場合、該ジョブが終了した後に、前記サーバを前記第１グループに属させることを特徴とする付記１１乃至付記１４のいずれかに記載の制御プログラム。
（付記１６）  一つまたは複数のサーバについて、サーバをグループ化するクラスタリングを制御するクラスタリング制御装置の制御方法において、
一つまたは複数のサーバをまとめたグループの一つである第１グループに属する一つまたは複数のサーバが、処理すべきジョブを実行できない場合、前記処理すべきジョブを実行できないサーバを前記第１グループから外し、該第１グループとは別のグループである第２グループに属する一つまたは複数のサーバを該第２グループから外すとともに前記第１グループに属させる切替えステップと、
前記切替えステップによって前記第２グループに属していた一つまたは複数のサーバが前記第１グループに属した後、該第１グループに属する一つまたは複数のサーバに前記処理すべきジョブを実行させるジョブ実行ステップと、
を有することを特徴とする制御方法。
【図面の簡単な説明】
【００８１】
【図１】本実施の形態におけるクラスタリングシステムの構成の一例を示す図である。
【図２】本実施の形態における管理ノード群の計算ノードに対する制御方法の概要の一例を示す図（一方のジョブ実行グループの計算ノードが電源断）である。
【図３】本実施の形態における管理ノード群の計算ノードに対する制御方法の概要の一例を示す図（両ジョブ実行グループが運用稼動）である。
【図４】本実施の形態における統括モジュールのモードの一例を示す図である。
【図５】本実施の形態におけるクラスタリングシステムの処理（ＳＮＭＰ  Ｔｒａｐ通知）の一例を示すタイムチャートおよび管理ノードＤＢ群内のデータ遷移の一例を示す図である。
【図６】本実施の形態におけるクラスタリングシステムの処理（計算ノードＰＡＮＩＣ）の一例を示すタイムチャートおよび管理ノードＤＢ群内のデータ遷移の一例を示す図である。
【図７】本実施の形態における計算ノードのメンテナンス開始前の処理の一例を示すタイムチャートおよび管理ノードＤＢ群内のデータ遷移の一例を示す図である。
【図８】本実施の形態における計算ノードのメンテナンス終了後の処理の一例を示すタイムチャートおよび管理ノードＤＢ群内のデータ遷移の一例を示す図である。
【図９】従来の複数の計算ノード上でジョブ（並列ジョブ）が実行されているクラスタリングシステムを示す模式図である。
【図１０】従来の予め計算ノードをジョブ実行グループに余分に組み込んでおくクラスタリングシステムを示す模式図である。
【図１１】従来の使用しない計算ノードを電源断するクラスタリングシステムの一例を示す模式図である。
【図１２】従来の計算ノードをジョブ実行グループにグループ化したクラスタリングシステムを示す模式図である。
【符号の説明】
【００８２】
１  管理ノード群、１１  通知取得部、１２  ノード切り離し部、１３  ノード停止部、１４  ノード起動部、１５  ノード組み込み部、１６  ジョブ実行部、２０Ａ、２０Ｂ、２０Ｃ、２０Ｄ、２０Ｅ  計算ノード、３０  管理ノードＤＢ群、３１  ノード種別ＤＢ、３２  代替ＤＢ、３３  ジョブクラスＤＢ、３４  資源ＤＢ、４０  管理ノード、５０  制御ノード、１００  クラスタリングシステム。
【図１】
0005056504.tif 000002
【図２】
0005056504.tif 000003
【図３】
0005056504.tif 000004
【図４】
0005056504.tif 000005
【図５】
0005056504.tif 000006
【図６】
0005056504.tif 000007
【図７】
0005056504.tif 000008
【図８】
0005056504.tif 000009
【図９】
0005056504.tif 000010
【図１０】
0005056504.tif 000011
【図１１】
0005056504.tif 000012
【図１２】
0005056504.tif 000013