(57)【特許請求の範囲】
【請求項１】
処理の割当対象である実サーバ上に構築された仮想サーバに対応する凍結時刻に基づいて、凍結可でない処理については前記仮想サーバを前記割当対象から除外する指示を行う指示部と、
処理の凍結可否情報に基づいて、受け付けた処理依頼が凍結可でないと判定された場合に、該処理依頼の終了予定時刻が、前記仮想サーバについて設定された凍結時刻を越えるか否かの判定を行う判定部と、
凍結可でないと判定された処理依頼については、前記判定の結果、前記終了予定時刻が前記凍結時刻を越えない場合に、前記仮想サーバに前記処理依頼を送信し、処理の凍結可否情報に基づいて、受け付けた処理依頼が凍結可であると判定された処理依頼については、処理の途中で凍結され、再開される仮想サーバも処理依頼の送信対象として許容する送信部と、
を含むことを特徴とする管理装置。
【請求項２】
処理の割当対象である実サーバ上に構築された仮想サーバに対応する凍結時刻に基づいて、凍結可でない処理については前記仮想サーバを前記割当対象から除外する指示を行う指示ステップと、
処理の凍結可否情報に基づいて、受け付けた処理依頼が凍結可でないと判定された場合に、該処理依頼の終了予定時刻が、前記仮想サーバについて設定された凍結時刻を越えるか否かの判定を行う判定ステップと、
凍結可でないと判定された処理依頼については、前記判定の結果、前記終了予定時刻が前記凍結時刻を越えない場合に、前記仮想サーバに前記処理依頼を送信し、処理の凍結可否情報に基づいて、受け付けた処理依頼が凍結可であると判定された処理依頼については、処理の途中で凍結され、再開される仮想サーバも処理依頼の送信対象として許容する送信ステップと、
を備えたことを特徴とする管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、実サーバ上に構築される仮想サーバを管理するサーバ管理方法、プログラム及び装置に関し、特に、コンピューティンググリッド環境における各種シミュレーション計算等のジョブを複数の仮想サーバに分散して実行する際の仮想サーバの停止と再開を制御するサーバ管理方法、プログラム及び装置に関する。
【背景技術】
【０００２】
従来、地球環境や気象環境等の各種のシミュレーション計算は、非常に長時間を要し、計算ジョブが長時間計算機資源を使用した状態が継続され、膨大な計算機資源を必要とするため、近年、コンピューティンググリッド環境における各種シミュレーション計算システムが構築されている。【０００３】
コンピューティンググリッド環境によるシミュレーション計算システムは、計算ジョブを最適な計算機資源に割り当て、分散された計算機資源を効率的に利用する。またコンピューティンググリッド環境の場合、計算機資源はシミュレーション計算ジョブのための占有リソースでない場合があり、他の利用目的で計算機資源が利用される場合があり、計算機資源の貸し借りが必要となる。【０００４】
長時間の実行を要するシミュレーション計算ジョブが計算機資源を利用している場合、他の目的で同じ計算機資源を利用できない。また、他の目的で利用することが判っている計算機資源をシミュレーション計算ジョブで利用することもできない。【０００５】
このためコンピューティンググリッド環境に割り当てた計算機資源であっても、オフィス業務など他の目的で利用中の計算機資源は除外し、空き計算機資源でシミュレーション計算ジョブを実行させる。しかし、シミュレーション計算ジョブが長時間にわたり計算機資源を占有した場合、他の業務でその計算機資源を使いたくても使えないなどの問題が発生する。【０００６】
この問題を解決する一般的な方法として、ジョブのチェックポイント・リスタート機能がある。チェックポイント・リスタート機能は、ジョブを司るジョブ管理制御装置と計算アプリケーションが連携し、アプリケーションにおける計算処理がどこまで進んでいるかを定期的に保存し、一時的に計算ジョブを停止させ、他の目的で計算機資源を利用できるようにする。【０００７】
このため、長時間を要するシミュレーション計算ジョブを、チェックポイント・リスタート機能によるジョブ実行と停止を繰り返して少ない空き計算機資源を積み重ねることで、他の業務に影響を与えることなくシミュレーション計算ジョブを継続することができる。
【特許文献１】特開２００５−２０８９１９号公報
【特許文献２】特開２００５−１９６５６１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、このような従来のチェックポイント・リスタート機能を利用した計算機資源の利用方法にあっては、シミュレーション計算ジョブとして動作するアプリケーションにおいて、チェックポイント・リスタートのための制御処理が必須であり、アプリケーションの開発コストが膨らむという問題がある。【０００９】
また、市販ソフトウェアなどチェックポイント・リスタート機能を保持しないアプリケーションによりシミュレーション計算ジョブを実行する場合、一時的にシミュレーション計算ジョブを停止させることが困難である。【００１０】
また、他の目的で計算機資源を利用する際に、サーバ自身を別のＯＳ等で再起動するような運用を行いたい場合、チェックポイント・リスタート機能は利用できない。この理由は、チェックポイント・リスタート機能では、チェックポイントを採るためには、アプリケーション側にチェックポイントを採るためのロジックが必須である。また、チェックポイントによる情報が保存された資源はジョブ単位で管理され、ジョブ管理制御装置の配下で管理される。【００１１】
このため、サーバ自身を停止させて別のＯＳで計算機資源を利用する場合は、ジョブ管理制御装置が停止してしまうため、シミュレーション計算ジョブを一時的に凍結しても、その後再開することは困難である。【００１２】
また他の業務で使用している計算機資源の空き時間を利用してシミュレーション計算ジョブに計算機資源を割り当てる環境においては、計算機資源を夜間および休日のみ利用する場合、数十台あるいは数百台ある計算機資源を手動で切り替えるのは運用コストが増大するため、外部のスケジュール機能などを利用した時刻管理による自動化運用が行われる。【００１３】
しかし、計算機資源の利用を時刻管理により自動化した場合、終了時刻を迎える直前に実行時間の短いジョブが計算機へ依頼されたとき、ジョブ実行中に終了時刻となってチェックポイント・リスタート機能によりジョブの実行が中断される。このため、実行時間の短いジョブであっても、次の利用開始時刻に達してジョブが再開されない限り、ジョブの実行結果を得ることができず、ジョブの実行に長時間待たされることで、処理効率が大きく低下する問題がある。【００１４】
本発明は、実サーバ上に構築される仮想サーバに計算ジョブを実行させ、アプリケーションやＯＳに依存することなくジョブの停止と再開を任意のタイミングで可能とすると同時に、時刻管理により計算機資源の利用する際のジョブ実行を資源利用の中断によって長時間待たせないようにするサーバ管理方法、プログラム及び装置を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明はサーバ管理方法を提供する。本発明は、実サーバ上に構築された仮想サーバを管理サーバにより管理するサーバ管理方法に於いて、
仮想サーバの凍結時刻と再開時刻を含む計算機計画情報を管理し、現在時刻が凍結時刻に到達した際に凍結を指示し、現在時刻が再開時刻に到達した際に再開を指示する計算機計画ステップと、
ジョブの依頼を受付けてキューに格納するジョブ受付ステップと、
キューからジョブを取出し、サーバ管理情報に基づいてジョブ依頼先の仮想サーバを決定した際に、ジョブ管理情報から得られたジョブの実行終了時刻と仮想サーバの凍結時刻とを比較し、実行終了時刻が凍結時刻より前の場合は決定した仮想サーバのジョブ制御部にジョブの実行を依頼し、実行終了時刻が凍結時刻を過ぎている場合は、実行終了時刻が凍結時刻前となる仮想サーバを決定する処理を繰り返すジョブ実行依頼ステップと
仮想サーバの凍結指示を受けた際に、依頼先の仮想サーバが稼動状態にあることを判別して、仮想サーバを構築する実サーバの仮想サーバ制御部に凍結指示を送信し、稼動中の仮想サーバを凍結させる凍結ステップと、
仮想サーバの再開指示を受けた際に、依頼先の仮想サーバが凍結状態にあることを判別して仮想サーバを構築する実サーバの仮想サーバ制御部に再開指示を送信し、凍結中の仮想サーバを稼動してジョブの実行を再開させる再開ステップと、
仮想サーバのジョブ終了を認識した際に、仮想サーバのジョブ制御部に依頼して終了したジョブを回収するジョブ回収ステップと、
を備えたことを特徴とする。【００１６】
ここで、ジョブ管理情報は、ジョブ識別子、ジョブが凍結が可能か又は不可かを示す凍結可否情報、ジョブが凍結不可の場合の予想実行時間を含み、
ジョブ実行依頼ステップは、キューから取出したジョブが凍結不可で且つ予想実行時間から求めた実行終了時刻が前記凍結時刻を過ぎている場合に、実行終了時刻が凍結時刻より前となるジョブ依頼先となる仮想サーバを決定する処理を繰り返す。【００１７】
サーバ管理情報は、
ジョブを実行するサーバ名又はネットワークアドレス、実サーバか仮想サーバかの種別、各サーバの稼動、停止又は凍結の状態、各サーバの実行ジョブ数を含む分散制御情報と、
実サーバと仮想サーバの対応関係、仮想サーバの稼動、停止又は凍結の状態、仮想サーバ毎の実行中のジョブ一覧を含む仮想サーバ管理情報と、
を備える。【００１８】  ジョブ実行依頼ステップは、分散制御情報を参照して稼動状態にある複数の仮想サーバの中から実行ジョブ数が最小の仮想サーバをジョブ依頼先として検索する。【００１９】  凍結ステップ及び再開ステップは、仮想サーバ管理情報から仮想サーバの状態と仮想サーバを構築している実サーバを検索して凍結指示又は再開指示を行う。【００２０】  ジョブ実行依頼ステップは、実サーバ上に構築されている仮想サーバとの通信途絶による異常を検出した際に、前記サーバ管理情報を参照してサーバの凍結状態を認識した場合は正常と判断して異常検出を破棄する。【００２１】
ジョブ受付ステップは、コンピューティング環境によるジョブを受付けて複数の仮想サーバにジョブ実行を依頼させる。【００２２】
（プログラム）
本発明はサーバ管理プログラムを提供する。本発明は、実サーバ上に構築された仮想サーバを管理するサーバ管理装置のコンピュータに、
仮想サーバの凍結時刻と再開時刻を含む計算機計画情報を管理し、現在時刻が凍結時刻に到達した際に凍結を指示し、現在時刻が再開時刻に到達した際に再開を指示する計算機計画ステップと、
ジョブの依頼を受付けてキューに格納するジョブ受付ステップと、
キューからジョブを取出し、サーバ管理情報に基づいてジョブ依頼先の仮想サーバを決定した際に、ジョブ管理情報から得られたジョブの実行終了時刻と仮想サーバの凍結時刻とを比較し、実行終了時刻が凍結時刻より前の場合は決定した仮想サーバのジョブ制御部にジョブの実行を依頼し、実行終了時刻が凍結時刻を過ぎている場合は、実行終了時刻が凍結時刻前となる仮想サーバを決定する処理を繰り返すジョブ実行依頼ステップと
仮想サーバの凍結指示を受けた際に、依頼先の仮想サーバが稼動状態にあることを判別して、仮想サーバを構築する実サーバの仮想サーバ制御部に凍結指示を送信し、稼動中の仮想サーバを凍結させる凍結ステップと、
仮想サーバの再開指示を受けた際に、依頼先の仮想サーバが凍結状態にあることを判別して仮想サーバを構築する実サーバの仮想サーバ制御部に再開指示を送信し、凍結中の仮想サーバを稼動してジョブの実行を再開させる再開ステップと、
仮想サーバのジョブ終了を認識した際に、仮想サーバのジョブ制御部に依頼して終了したジョブを回収するジョブ回収ステップと、
を実行させることを特徴とする。【００２３】
（装置）
本発明はサーバ管理装置を提供する。本発明は、実サーバ上に構築された仮想サーバを管理するサーバ管理装置に於いて、
前記仮想サーバの凍結時刻と再開時刻を含む計算機計画情報を管理する計算機計画部と、
前記仮想サーバに設けられたジョブ制御部を管理するジョブ管理部と、
前記仮想サーバを構築する物理サーバの仮想サーバ制御部を管理する計算機管理部と、
を備え、
計算機計画部は、
仮想サーバの凍結時刻と再開時刻を設定した計算機計画情報を作成する計画作成部と、
現在時刻が前記凍結時刻に到達した際に計算機管理部に凍結を指示し、現在時刻が再開時刻に到達した際に計算機管理部に再開を指示する計画指示部と、
を備え、
ジョブ管理部は、
ジョブの依頼を受付けてキューに格納するジョブ受付部と、
キューからジョブを取出し、計算機管理部に問合せてジョブの実行を依頼する仮想サーバを決定した際に、ジョブ管理情報から得られたジョブの実行終了時刻と仮想サーバの凍結時刻とを比較し、実行終了時刻が凍結時刻より前の場合は決定した仮想サーバのジョブ制御部にジョブの実行を依頼し、実行終了時刻が凍結時刻を過ぎている場合は計算機管理部に再度問合せて実行終了時刻が凍結時刻前となる仮想サーバを決定する処理を繰り返すジョブ実行依頼部と、
仮想サーバのジョブ終了を認識した際に、仮想サーバのジョブ制御部に依頼して終了したジョブを回収するジョブ回収部と、
を備え、
計算機管理部は、
ジョブ管理部から問合せを受けた際に、ジョブ依頼先の実サーバと仮想サーバを検索して計画指示部の計算機計画情報から得られた凍結時刻と共に応答する依頼先検索部と、
仮想サーバの凍結指示を受けた際に、依頼先の仮想サーバが実行状態にあることを判別して、仮想サーバを構築する実サーバの仮想サーバ制御部に凍結指示を送信し、ジョブ実行中の仮想サーバを凍結させる凍結部と、
仮想サーバの再開指示を受けた際に、依頼先の仮想サーバが凍結状態にあることを判別して、仮想サーバを構築する実サーバの仮想サーバ制御部に再開指示を送信し、凍結中の仮想サーバにジョブの実行を再開させる再開部と、
を備えたことを特徴とする。
【発明の効果】
【００２４】
本発明によければ、仮想サーバにジョブの実行を依頼する際に，依頼するジョブが凍結不可である場合は、計算機計画情報を参照して依頼先の仮想サーバがこれから依頼しようとしているジョブが終了する前に計画的に凍結されるか否か判定し、もしジョブ終了前に凍結する計画となっている場合は、ジョブ終了後に凍結する計画のある他の仮想サーバを検索してジョブを依頼し、これによって短時間で終了するはずのジョブが。凍結する計画ある仮想サーバで実行されることで、長時間待たないとジョブ実行結果がえられないという問題を回避することができる。【００２５】
また仮想サーバに対する時刻管理による凍結と再開の指示により、例えば昼間は事務処理等の業務で利用している計算機資源を夜間のみコンピューティンググリッド環境によるシミュレーション計算ジョブに利用でき、サーバ仮想化基盤の導入コストだけで、連続して計算機の空き時間を有効に利用して長時間を要するシミュレーション計算を実行することができる。【００２６】
また仮想サーバを凍結することで計算機資源を開放するため、シミュレーション計算ジョブとして動作しているアプリケーション側において、従来のようなチェックポイント・リスタート機能を実装する必要がなく、アプリケーションの開発コスト、保守コストを大幅に削減することができる。【００２７】
また、チェックポイント・リスタート機能を実装していない市販のアプリケーションなど、どのようなアプリケーションでも仮想サーバ上で計算ジョブを実行することで、任意のタイミングで一時凍結し、また任意のタイミングで再開することができる。
【図面の簡単な説明】
【００２８】
【図１】本発明が適用されるコンピューティンググリッド環境の説明図
【図２】本実施形態における管理サーバと実サーバ上に構築される仮想サーバを示した機能構成のブロック図
【図３】本実施形態における仮想サーバの論理アーキテクチャの説明図
【図４】図２のジョブ管理テーブルの説明図
【図５】図２の計算機計画テーブルの説明図
【図６】図２の分散制御テーブルの説明図
【図７】図２の仮想サーバ管理テーブルの説明図
【図８】本実施形態における仮想サーバの凍結と再開の処理機能の説明図
【図９】本実施形態の管理サーバが適用されるコンピュータのハードウェア環境の説明図
【図１０】本実施形態のサーバ管理処理のタイムチャート
【図１１】図１０に続く本実施形態のサーバ管理処理のタイムチャート
【図１２】図２の管理サーバにおけるジョブ管理処理のフローチャート
【図１３】図１２のステップ６の非同期ジョブ終了待合せ処理のフローチャート
【図１４】図２の仮想サーバにおける計算機計画処理のフローチャート
【図１５】図２の管理サーバにおける計算機管理処理のフローチャート
【図１６】図２の仮想サーバにおけるジョブ制御処理のフローチャート
【図１７】図１６のステップ４における非同期ジョブ終了待ち合せ処理のフローチャート
【図１８】図２の実サーバにおける仮想サーバ制御処理のフローチャート
【発明を実施するための最良の形態】
【００２９】
図１は本発明が適用されるコンピューティンググリッド環境の説明図である。図１において、本実施形態の管理サーバ１０はネットワーク１２に接続され、ネットワーク１２にはシミュレーション計算ジョブなどを依頼する計算機群１４として、本実施形態にあっては実サーバ１６−１〜１６−３９を接続している。【００３０】
管理サーバ１０に対しては、オペレータ１８−１の操作でシミュレーション計算ジョブのジョブ投入２０が行われ、管理サーバ１０による管理の下に、計算機群１４に含まれる実サーバ１６−１〜１６−３９のいずれかにジョブを依頼して実行させる。【００３１】
また管理サーバ１０に対しては、実行中のジョブに対し仮想サーバに対する凍結・再開指示２２をオペレータ１８−２から行うことができる。【００３２】  外部スケジューラ２４には計算機計画を作成するために使用する定義ファイル２６が準備されており、定義ファイル２６に基づいて管理サーバ１６は計算機群１４の実サーバ１６−１〜１６−３６に構築される仮想サーバの凍結時刻と再開時刻を含む計算機計画テーブルを作成して管理する。【００３３】
図２は本実施形態における管理サーバと実サーバ上に構築される仮想サーバを示した機能構成のブロック図である。図２において、本実施形態にあっては、説明を簡単にするため、管理サーバ１０に対し１台の実サーバ１６を配置した場合を例にとっている。【００３４】
管理サーバ１０には、ジョブ管理部２８、計算機管理部３０、分散制御テーブル３２、仮想サーバ管理テーブル３４，ジョブ管理テーブル４４、計算機計画部４６、計算機計画テーブル４８が設けられる。【００３５】
一方、実サーバ１６には仮想サーバ３６と仮想サーバ制御部３８が設けられ、仮想サーバ３６の中にはジョブ制御部４０と計算ジョブ４２が設けられることになる。【００３６】
ここで、管理サーバ１０及び実サーバ１６におけるそれぞれの機能は、コンピュータによるプログラムの実行により実現される機能である。【００３７】
管理サーバ１０のジョブ管理部２８には、ジョブ受付部２８−１、ジョブ実行依頼部２８−２、ジョブ回収部２８−３が設けられる。ジョブ受付部２８−１は、図１に示したようなオペレータ１８−２もしくは外部スケジューラ２４からのジョブ投入２０によるジョブの依頼を受けて、内蔵したキューに格納する。【００３８】  ジョブ実行依頼部２８−２は、キューからジョブを取り出し、計算機管理部３０に依頼して決定した仮想サーバ３６のジョブ制御部４０にジョブの実行を依頼する。更に、ジョブ実行依頼部２８−２は、計算機管理部３０に問合せてジョブの実行を依頼する仮想サーバを決定した際に、依頼しようとしているジョブが凍結不可の場合、ジョブの実行終了時刻と仮想サーバの凍結時刻とを比較し、実行終了時刻が凍結時刻より前の場合は決定した仮想サーバ１６のジョブ制御部３６にジョブの実行を依頼し、実行終了時刻が凍結時刻を過ぎている場合は計算機管理部３０に再度問合せて実行終了時刻が凍結時刻前となる仮想サーバを決定する処理を繰り返す。【００３９】
ここでジョブ管理テーブル４４には、ジョブ識別子、ジョブが凍結可能か又は凍結不可かを示す凍結可否情報、ジョブが凍結不可の場合の予想実行時間が登録されており、ジョブ実行依頼部３０は、現在時刻にジョブ管理テーブル４４から取得した予想実行時間を加算して実行終了時刻を求め、計算機管理部３０側から得られた依頼先の仮想サーバ１６の凍結時刻と比較する。【００４０】
ジョブ回収部２８−１は、仮想サーバ３６のジョブ終了を認識した際に、ジョブ制御部４０に依頼して終了したジョブを回収する。【００４１】
計算機管理部３０には、依頼先検索部３０−１、凍結処理部３０−２及び再開処理部３０−３が設けられている。依頼先検索部３０−１は、ジョブ管理部２８からの問合せを受けた際に、ジョブ依頼先の実サーバ１６と仮想サーバ３６を検索し、計算機計画部４６の計算機計画テーブル４８から得られた凍結時刻と共に応答する。【００４２】
図２にあっては実サーバ１６は１台で、且つ実サーバ１６上に構築された仮想サーバ３６も１台であるが、実際には図１のように管理サーバ１０の依頼先となる実サーバは計算機群１４に示すように複数であり、また実サーバ１６上に構築される仮想サーバ３６の数も複数台構築される場合がある。【００４３】
凍結処理部３０−２は、外部からの操作依頼２２又は計算機計画部４６から仮想サーバ３６の凍結依頼を受けた際に、依頼先の仮想サーバ３６が計算ジョブ４２の実行状態にあることを判別して、仮想サーバ３６を構築する実サーバ１６の仮想サーバ制御部３８に凍結指示を送信し、計算ジョブ４２によるジョブ実行中の仮想サーバ３６を凍結させる。【００４４】
再開処理部３０−３は、外部からの操作依頼２２又は計算機計画部４６から仮想サーバ３６の再開依頼を受けた際に、依頼先の仮想サーバ３６が凍結状態にあることを判別して、仮想サーバ３６を構築する実サーバ１６の仮想サーバ制御部３８に再開指示を送信し、凍結中の仮想サーバ３６に計算ジョブ４２の実行を再開させる。【００４５】
計算機計画部４６には計画作成部４６−１と計画指示部４６−２が設けられる。計画作成部４６−１は、図１の外部スケジューラ２４の定義ファイル２６を読込んで仮想サーバの凍結時刻と再開時刻を含む計算機計画テーブル４８を作成する。計画指示部４６−２は、計算機計画テーブル４８の凍結時刻と再開時刻を現在時刻と比較しており、現在時刻が凍結時刻に到達した際に計算機管理部３０に凍結を指示し、現在時刻が再開時刻に到達した際に計算機管理部３０に再開を指示する。【００４６】
一方、実サーバ１６に構築された仮想サーバ３６のジョブ制御部４０は、管理サーバ１０のジョブ管理部２８からジョブ実行依頼を受け付け、アプリケーションにより計算ジョブ４２を実行し、計算ジョブ４２が終了すると実行終了をジョブ管理部２８に通知する。これを受けてジョブ管理部２８は、終了したジョブの回収を依頼し、依頼を受けてジョブ制御部４０は、終了したジョブを編集する。【００４７】
管理サーバ３６が構築された実サーバ１６に設けた仮想サーバ制御部３８は、管理サーバ１０の計算機管理部３０からの操作依頼を受けて仮想サーバ３６を制御する。この操作依頼として本発明にあっては、計算機管理部３０は凍結指示または再開指示を発行することから、凍結指示を受け付けたときには仮想サーバ３６を凍結し、その後、仮想サーバ３６の凍結中に再開指示を受け付けると、凍結している仮想サーバ３６を復元して計算ジョブ４２を実行させる。【００４８】
更に、本実施形態において、管理サーバ１０の計算機管理部３０の指示で仮想サーバ３６が凍結された場合、管理サーバ１０に設けているジョブ管理部２８と仮想サーバ３６の通信が途絶することになるが、ジョブ管理部２８が通信途絶による仮想サーバ３６の異常を検出した際には、仮想サーバ管理テーブル３４を参照すれば、異常を起こしている仮想サーバにつき「凍結」の状態を知ることができる。【００４９】
このためジョブ管理部２８は、仮想サーバ３６との通信途絶による異常を検出しても、これは異常ではなく仮想サーバが凍結状態にあるものと判断し、異常と判断した場合に、ジョブを異常終了するか、別の計算機に異常終了したジョブの再実行を依頼するなどの不必要な処理を回避することができる。【００５０】
図３は本実施形態における仮想サーバの論理アーキテクチャの説明図である。図３において、実サーバに相当する計算機５０上にはハードウエア５２が構築され、ハードウエア５２を基板としてウィンドウズ（Ｒ）などのＯＳ５４が動作する。ＯＳ５４上には仮想プラットフォーム５６が構築され、この仮想プラットフォーム５６上で例えば仮想ＯＳ５８−１，５８−２が動作し、それぞれ個別にアプリケーションを実行することができる。【００５１】
このような仮想プラットフォーム５６及び仮想ＯＳ５８−１，５８−２としては、例えばＶＭウエア（Ｒ）やマイクロソフト（Ｒ）・バーチャルサーバ２００５などのサーバ仮想化製品を実装することができる。【００５２】
図４は図２の管理サーバ１０に設けた分散制御テーブル３２の説明図である。分散制御テーブル３２は、計算機名６０、計算機種別６２、状態６４、ジョブ多重度６６及びジョブ数６８を登録している。計算機名６０としては、ジョブを実行する計算機のホスト名またはＩＰアドレスを登録する。【００５３】
計算機種別６２は実サーバまたは仮想サーバである。状態６４は実サーバまたは仮想サーバの状態であり、この状態は、実サーバの場合には「稼動」又は「停止」の２つの状態があり、仮想サーバにあっては「稼動」、「停止」又は「凍結」の３つの状態がある。【００５４】
分散制御テーブル３２における実サーバ及び仮想サーバの状態６４は、各計算機のハートビートに基づいて状態を監視している。即ち状態「稼動」とは、計算機のハートビートにより正常に稼動していることが確認できた状態である。また状態「停止」は、計算機のハートビートに失敗し、稼動していると確認できない状態である。更に本実施形態の仮想サーバに固有な状態である「凍結」は、仮想サーバが凍結指示を受けて凍結された状態である。【００５５】
なお、ハートビート(heart beat)とは、 HYPERLINK "http://e-words.jp/w/E3838DE38383E38388E383AFE383BCE382AF.html" ネットワーク上で、 HYPERLINK "http://e-words.jp/w/E382B3E383B3E38394E383A5E383BCE382BF.html" コンピュータやネットワーク機器が自身が正常に稼動していることを一定時間ごとに外部に知らせるために信号やパケットを送ることである。【００５６】
分散制御テーブル３２のジョブ多重度６６は、各計算機に依頼可能なジョブ数の上限値である。更にジョブ数６８は各計算機で現在処理中のジョブ数であり、状態が「凍結」の計算機の場合は凍結状態のジョブ数を示している。【００５７】
この分散制御テーブル３２は、図２のジョブ管理部２８に外部からジョブの依頼を受けた際に、計算機管理部３０の依頼先検索部３０−１により参照され、状態６４が「稼動」となっている計算機を依頼先候補として選択し、複数候補が選択された場合には例えば最小ジョブ数となる計算機を依頼先として決定する。もちろん、この場合、状態が「停止」または「凍結」となっている計算機は依頼先から除外されることになる。【００５８】
図５は図２の管理サーバ１０に設けた仮想サーバ管理テーブル３４の説明図である。仮想サーバ管理テーブル３４は、実サーバ名７０、仮想サーバ名７２、各仮想サーバの状態７４、及び各仮想サーバのジョブ一覧７６で構成されている。実サーバ名７０は実計算機のホスト名またはＩＰアドレスである。仮想サーバ名７２は実サーバ上で起動されて稼動している仮想サーバのホスト名またはＩＰアドレスである。【００５９】
ここで、実サーバ名７０と仮想サーバ名７２から、実サーバと仮想サーバの対応関係が分かる。例えば実サーバ名７０として、実サーバ「ｒ＿ｈｏｓｔ０１」上にはサーバ名「ｖ＿ｈｏｓｔ０１」及び「ｖ＿ｈｏｓｔ０２」を持つ２台の仮想サーバが構築されている。【００６０】
状態７４は各仮想サーバの状態であり、「稼動」、「停止」又は「凍結」のいずれかであり、それぞれ図４の分散制御テーブル３２の状態と同じ内容である。ジョブ一覧７６には、各仮想サーバに実行を依頼中のジョブ番号の一覧が登録されている。【００６１】
図６は図２のジョブ管理部２８に対し設けたジョブ管理テーブル４４の説明図である。ジョブ管理テーブル４４は、ジョブＩＤ７８、凍結可否８０、予想実行時間８２、その他のジョブ情報８４を登録する。【００６２】
ジョブＩＤ７８は依頼されたジョブの識別子である。凍結可否８０は、仮想サーバに依頼する際に、実行途中で凍結しても良いか否かを示し、実行中に凍結しても問題ないジョブについては「可能」が設定され、実行中に凍結してはならないジョブについては「不可」を設定している。この凍結可否８０を「不可」とするジョブは、例えば比較的短時間で実行できるジョブである。【００６３】  予想実行時間８２は、凍結可否８０を「不可」に設定したジョブについて設定され、この予想実行時間を現在時刻に加算することで、ジョブの実行終了時刻を求めることができる。【００６４】
図７は図２の計算機計画部４６で生成された計算機計画テーブル４８の説明図である。計算機計画テーブル４６には、計算機名８６、凍結時刻８８、再開時刻９０が登録される。計算機名８６には凍結及び再開が行われる仮想計算機のホスト名又はＩＰアドレスが登録される。【００６５】
凍結時刻８８と再開時刻９０は図１の定義ファイル２６から作成され、各仮想サーバをシミュレーション計算に利用する夜間から朝にかけての計画時間帯が設定されている。この時間計画テーブル４８に基づき計算機計画部４６は計算機管理部３０に仮想計算機の凍結と再開を依頼することになる。【００６６】
図８は本実施形態における仮想サーバの凍結と再開の処理機能の説明図である。図８において、実サーバ１６にはハードウエアとして物理ボリューム９２及び各種デバイス９４が設けられており、物理ボリューム９２に格納しているＯＳを実行することで仮想プラットフォーム５６が構築され、仮想プラットフォーム５６上で仮想サーバ３６が動作している。【００６７】
この仮想サーバ３６には、実サーバ１６の計算機資源を使用して、仮想メモリ９６、仮想ボリューム９８及び仮想デバイス１００が構成され、これら仮想計算機資源を使用して、図３に示したように、１または複数の仮想ＯＳ５８−１，５８−２が実行され、これらのＯＳ上でアプリケーションとしての計算ジョブが実行される。【００６８】
仮想サーバ３６によるジョブ実行中に、図２に示した管理サーバ１０の計算機管理部３０より凍結指示１０２が仮想プラットフォーム５６に与えられると、仮想プラットフォーム５６は仮想サーバ３６全体を凍結処理１０６に示すように物理ボリューム９２にｖｍｘｆファイル１１０として保存さし、実行中のジョブを停止した凍結状態とする。【００６９】
凍結状態で仮想プラットフォーム５６に対し図２の管理サーバ１０の計算機管理部３０より再開指示１０４が与えられると、仮想プラットフォーム５６は、物理ボリューム９２に退避しているｖｍｘｆファイル１１０を再開処理１０８に示すように読み出して管理サーバ３６を再構築し、凍結したジョブの実行を再開する。【００７０】
仮想プラットフォーム５６に対する凍結指示１０２及び再開指示１０４は、図２の計算機管理部３０から発行されるコマンドであり、凍結指示１０２は例えばコマンド「ｖｍｒｕｎ  ｓｕｓｐｅｎｄファイル名」となり、また再開指示１０４はコマンド「ｖｍｒｕｎ  ｓｔａｒｔファイル名」となる。【００７１】
即ち凍結コマンドは、仮想サーバ３６の全情報を物理ボリューム９２のｖｍｘｆファイル１１０という専用の制御ファイルに保存する命令となる。また再開コマンドは、コマンドで指定された制御ファイル例えばｖｍｘｆファイル１１０に保存されている情報を元に、仮想サーバ３６の状態を復元する命令となる。【００７２】
図９は本実施形態の管理サーバが適用されるコンピュータのハードウエア環境の説明図である。図７において、ＣＰＵ１１２のバス１１４には、ＲＡＭ１１６、ＲＯＭ１１８、ハードディスクドライブ１２０、キーボード１２４，マウス１２６及びディスプレイ１２８を接続するデバイスインタフェース１２２、及びネットワークアダプタ１３０が接続されている。【００７３】
ハードディスクドライブ１２０には本実施形態のサーバ管理プログラムが格納されており、コンピュータ起動によるブート後のＯＳのＲＡＭ１１６への読出展開による実行に続いて、サーバ管理プログラムがＲＡＭ１１６に読み出され、ＣＰＵ１１２により実行される。【００７４】
図１０及び図１１は本実施形態のサーバ管理処理のタイムチャートである。図１０において、管理サーバ１０のジョブ管理部２８にあっては、ステップＳ１で外部からのジョブ依頼１３２を受け付けると、受付けたジョブをキューに格納するキューイングを行う。【００７５】
続いてステップＳ２でキューから受け付けたジョブを取り出し、ステップＳ３で実行を依頼する計算機を計算機管理部３０に問い合わせて決定する。計算機管理部３０は、ジョブ管理部２８からの問合せを受けると、ステップＳ１０１で図４の分散制御テーブル３２を参照し、状態５８が「稼動」となっている計算機を依頼先候補として検索し、複数候補が検索された場合にはジョブ数６２が最小となる計算機を依頼先として応答する。【００７６】
この場合に依頼先として仮想サーバ３６が検索された場合には、図５の仮想サーバ管理テーブル３４を参照し、依頼先に決定された仮想サーバ３６を構築している実サーバ名を取得して応答する。同時に計算機管理部３０は計算機計画部４６にアクセスして候補計算機が仮想サーバの場合の凍結時刻を取得して応答する。【００７７】
ジョブ管理部２８にあっては、計算機管理部３０に対する問合せで、もし仮想サーバを依頼先として決定した場合には、図６のジョブ管理テーブル４８を参照して受付けているジョブの凍結可否８２を参照し、例えばジョブＩＤ＝０２であったとすると、凍結可否８２は「不可」であることから、その予想実行時間８２として「１８０秒」を取得し、
実行終了時刻＝現在時刻＋１８０秒
を求める。【００７８】
そして、計算機管理部３０に対する問合せの応答してえられている凍結時刻と実行終了時刻を比較し、
（実行終了時刻）＜（凍結時刻）
であれば、凍結時刻前にジョブ実行を終了することから、応答のあった仮想サーバ及び仮想サーバを構築している実サーバを依頼先として決定し、ステップＳ４で決定したサーバにジョブの実行を依頼する。【００７９】
これに対し
（実行終了時刻）＞（凍結時刻）
の場合には、凍結時刻後にジョブ実行が終了してジョブが長時間再開待ちになることから、この仮想サーバは不適切と判断し、再度、計算機管理部３０にジョブ依頼先の計算機を問合せ、凍結時刻前にジョブ実行を終了する仮想サーバを決定してステップＳ３でジョブの実行を依頼する。【００８０】
ステップＳ４におけるサーバにジョブの依頼は、仮想サーバ３６を構築している実サーバ１６の例えばＩＰアドレスなどの指定でジョブを依頼し、ジョブ依頼に仮想サーバ３６のＩＰアドレスを含めておくことで、仮想サーバ３６のジョブ制御部４０に対しジョブを依頼することができる。仮想サーバ３６のジョブ制御部４０は、管理サーバ１０のジョブ管理部２８からのジョブの依頼を受け付けて、計算機ジョブにステップＳ４０１のようにジョブを実行させる。【００８１】
凍結不可のジョブについては、仮想サーバ３６の凍結時刻前にジョブの実行が終了し，ジョブ実行結果が管理サーバ１０に回収されてファイルに保存される。【００８２】
一方、凍結可能なジョブの実行を仮想サーバ３６に依頼している場合には、仮想サーバ３６によるジョブ実行中に管理サーバ１０の計算機管理部３０に対し凍結依頼１３４が行われると、ステップＳ１０２で仮想サーバの凍結依頼を受け付け、ステップＳ１０３で仮想サーバ３６を管理する実サーバ１６を図５の仮想サーバ管理テーブル３４から検索し、ステップＳ１０４で検索した実サーバ１６の仮想サーバ制御部３８に対し凍結を指示する。【００８３】
これを受けて実サーバ１６の仮想サーバ制御部３８は、ステップＳ２０１で計算機管理部３０からの凍結指示を受け、仮想サーバ３６にステップＳ３０２で凍結操作を行って凍結させる。仮想サーバの凍結により凍結完了通知がステップＳ３０３で仮想サーバ制御部３８に応答されると、ステップＳ２０２で凍結完了応答を管理サーバ１０の計算機管理部３０に対し行う。【００８４】
これを受けて計算機管理部３０は、ステップＳ１０６で図４の分散制御テーブル３２及び図５の仮想サーバ管理テーブル３４における対応する仮想サーバの状態を、それまでの「稼動」から「凍結」に変更する。【００８５】
なお、図８のステップＳ３０２，Ｓ３０３の処理は、ジョブ制御部４０の処理として説明の都合上示しているが、実際には仮想サーバ３６の凍結制御と凍結完了通知となる。【００８６】
続いて図９において、管理サーバ１０の計算機管理部３０に対し再開依頼１３６が行われると、これをステップＳ１０６で受け付け、ステップＳ１０７で図５の仮想サーバ管理部３４の参照により仮想サーバ３６を管理する実サーバ１６を検索し、ステップＳ１０８で実サーバ１６の仮想サーバ制御部３８に再開指示のコマンドを送る。【００８７】
仮想サーバ制御部３８はステップＳ２０３で再開指示を受けて仮想サーバ３６はステップＳ３０４で再開制御を行い、これによって計算ジョブ４２がステップＳ１０３のように稼動状態となってジョブ実行が再開される。【００８８】
仮想サーバの再開制御が完了すると、ステップＳ３０５で再開完了通知が仮想サーバ制御部３８に送られ、ステップＳ２０４で再開完了応答を管理サーバ１０の計算機管理部３０に送る。これを受けて計算機管理部３０は、ステップＳ１０９で仮想サーバ３６の状態を「稼動」に変更する。【００８９】
更に仮想サーバ３６で実行している計算ジョブが終了すると、ジョブ制御部４０はステップＳ３０６で、終了通知を管理サーバ１０の計算機管理部３０を経由してジョブ管理部２８に通知する。このジョブ終了通知を認識したジョブ管理部２８は、ステップＳ５で仮想サーバ３６のジョブ制御部４０にジョブ回収を依頼し、これを受けてジョブ制御部４０は、ステップＳ３０７でジョブを回収して応答し、ジョブ管理部２８はステップＳ６で、回収したジョブをファイルに保存する。【００９０】
図１２は図２の管理サーバ１０に設けたジョブ管理部２８によるジョブ管理処理のフローチャートである。図１２において、ジョブ管理処理は、ステップＳ１で外部からのジョブ依頼を受け付けると、ステップＳ２で受け付けたジョブをキューにキューイングした後、ステップＳ３でジョブをキューから取り出し、ステップＳ４で計算機管理部３０に問い合わせて実行を依頼する計算機を決定する。この問合せに対し計算機管理部３０は依頼先の計算機として仮想サーバを検索した場合には、仮想サーバを構築している実サーバと、仮想サーバの凍結時刻を併せて応答する。【００９１】
続いてステップＳ５でジョブを依頼する計算機が決定できたか否か判別し、決定でき無い場合はステップＳ３に戻り、次のジョブをキューから取出してジョブを依頼する計算機を決定する。【００９２】
ステップＳ５でジョブを依頼する計算機を決定した場合はステップＳ６に進み、仮想サーバか否か判定する。仮想サーバの場合は、ステップＳ７で図６のジョブ管理テーブル４４の参照でジョブは凍結可能か否か判定し、凍結不可であればステップＳ８に進み、
（予測実行終了時刻）＞（凍結時刻）
であれば、決定した仮想サーバは不適切としてステップＳ４に戻って別の計算機を依頼先として決定する処理を繰り返す。【００９３】
ステップＳ８の条件に該当せず、ジョブが凍結時刻前に終了する場合はステップＳ９に進み、決定した仮想サーバ３６のジョブ制御部４０にジョブを依頼し、これによって計算ジョブ４２によるジョブの実行が開始される。【００９４】
続いてステップＳ１０で非同期ジョブ終了待ち合せ処理を実行している。この非同期ジョブ終了待ち合せ処理は、図１３に取り出して示すように、シグナルハンドラとしてのサブルーチンにより実行されている。非同期ジョブ終了待ち合せ処理は、ステップＳ１でジョブ終了通知の受信の有無をチェックしており、もしジョブ終了通知を受信すると、ステップＳ２でジョブ管理部２８におけるジョブ状態を「実行終了」に設定した後、ステップＳ３で実行終了を図１２のジョブ管理処理のメインルーチンに返信する。【００９５】
再び図１２を参照するに、ステップＳ１０の非同期ジョブ終了待ち合せ処理に続いて、ステップＳ１１でジョブは終了状態か否かチェックしており、ジョブ実行中にあっては終了状態でないことから、ステップＳ１２に進み、依頼先の仮想サーバは凍結状態か否かチェックする。【００９６】
もし依頼先の仮想サーバが凍結状態であった場合には、ステップＳ１３で依頼先の仮想サーバ３６のジョブ制御部４０に状態を確認し、ステップＳ１４で一定時間例えば２分の待ち合せを行った後、ステップＳ６で非同期ジョブ終了待ち合せ処理に戻る。【００９７】
このような仮想サーバにおけるジョブ実行状態でジョブが終了し、ステップＳ７でジョブ終了状態を判別するとステップＳ１５に進み、依頼した仮想サーバ３６のジョブ制御部４０にジョブの回収を依頼し、ステップＳ１６でジョブを回収してファイルに保存する。【００９８】
図１４は図２の計算機計画処理部４６による計算機計画処理のフローチャートである。図１４において、計算機計画処理は、ステップＳ１で図１の外部スケジューラ２４から定義ファイル２６を読込み、図７の計算機計画テーブル４８をメモリ上に作成する。次にステップＳ２に進み、計算機計画テーブル４８から現在時刻に対し最初に操作を依頼する時刻を検索する。【００９９】  続いてステップＳ３で検索した時刻が凍結時刻であることを判別するとステップＳ４で種別を「凍結」にセットし、凍結時刻でなければステップＳ５に進んで種別を「再開」にセットする。【０１００】
続いて現在時刻が検索した待合せ時刻に到達したか否か判定し、待合せ時刻になるとステップＳ７で種別が凍結であればステップＳ８で計算機管理部３０に凍結を指示し、種別が凍結出なければステップＳ９で計算機管理部３０に再開を指示する。このステップＳ２〜Ｓ９の処理をステップＳ１０で停止指示を判別するまで繰り返す。【０１０１】
図１５は図２の管理サーバ１０に設けた計算機管理部３０における計算機処理のフローチャートである。図１５において、計算機管理処理は、ステップＳ１で仮想サーバの操作依頼を受け付けると、ステップＳ２で操作依頼が凍結依頼か否かチェックする。【０１０２】  凍結依頼であった場合にはステップＳ３に進み、依頼先の仮想サーバ３６が稼働中か否かチェックし、稼働中であった場合にはステップＳ４に進み、図５の仮想サーバ管理テーブル３４から依頼先の仮想サーバを管理する実サーバを検索する。【０１０３】
次にステップＳ５で、検索した実サーバ１６の仮想サーバ制御部３８に凍結をコマンド送信により指示して仮想サーバ３６を凍結させる。次にステップＳ６で、図４の分散制御テーブル３２及び図５の仮想サーバ管理テーブル３４における依頼先の仮想サーバの状態を「凍結」に変更する。なおステップＳ３で凍結依頼を受けたにも関わらず仮想サーバが稼動中でなかった場合には、ステップＳ７で操作不可エラーメッセージを出力して処理を終了する。【０１０４】
一方、ステップＳ１で受け付けた仮想サーバの操作命令が再開依頼であった場合には、ステップＳ２からステップＳ８に進み、仮想サーバ３６が凍結中か否かチェックし、凍結中であれば、ステップＳ９で仮想サーバ３６を管理する実サーバ１６の仮想サーバ制御部３８に再開を指示するコマンドを送って、凍結状態にある仮想サーバ３６を復元して稼動状態とする。これにより一旦凍結された計算ジョブ４２の実行が再開される。【０１０５】
次にステップＳ１１で、図４の分散制御テーブル３２及び図５の仮想サーバ管理テーブル３４の状態を「稼動」に変更する。なおステップＳ８で再開依頼を受けたにも関わらず仮想サーバが凍結中でなかった場合には、ステップＳ１２で操作不可エラーメッセージを出力して処理を終了する。【０１０６】
また計算機管理処理は、ジョブ管理部３０からの問合せに対し、ジョブを依頼する計算機を検索して応答し、もし仮想計算機を検索した場合は、凍結時刻を同時に応答するが、図１５は、この問合せに対する応答処理は省略している。【０１０７】
図１６は図２の実サーバ１６上に構築される仮想サーバ３６のジョブ制御部４０によるジョブ制御処理のフローチャートである。図１６のジョブ制御処理にあっては、ステップＳ１で管理サーバ１０のジョブ管理部２８からジョブの実行依頼を受け付け、計算ジョブ４２をステップＳ２で起動し、ステップＳ３でジョブ状態を稼動中に設定する。【０１０８】
続いてステップＳ４で非同期ジョブ終了待ち合せ処理を実行する。この非同期ジョブ終了待ち合せ処理は、図１７に示すように、ステップＳ１でジョブプロセス終了検知の有無をチェックし、終了を検知すると、ステップＳ２でジョブ状態を「実行終了」に設定し、ステップＳ３で図１３のジョブ制御処理のメインルーチンに実行終了を返信する。【０１０９】
続いて図１６のステップＳ５で管理サーバ１０のジョブ管理部２８から状態の問合せがあるか否かチェックし、状態問合せがあった場合には、ステップＳ６でジョブ状態は稼動中か否かチェックし、稼動中であれば、ステップＳ７でジョブ実行中を返信する。一方、ステップＳ６でジョブ状態が「停止」であった場合には、ステップＳ８で実行終了を管理サーバ１０のジョブ管理部２８に返信する。【０１１０】
図１８は図２の実サーバ１６に設けた仮想サーバ制御部３８による仮想サーバ制御処理のフローチャートである。図１８において、仮想サーバ制御処理にあっては、ステップＳ１で管理サーバ１０の計算機管理部３０から仮想サーバ３６の操作依頼を受け付け、ステップＳ２で操作依頼が凍結依頼であることを判別すると、ステップＳ３で仮想サーバ３６にコマンドにより凍結を依頼し、仮想サーバ３６を凍結する。【０１１１】
一方、ステップＳ１で受け付けた操作依頼が仮想サーバの再開依頼であった場合には、ステップＳ２からステップＳ４に進み、仮想サーバ３６にコマンドによって再開を依頼し、凍結中の仮想サーバ３６を復元して稼動することで、凍結中のジョブの実行を再開する。【０１１２】
ステップＳ３またはステップＳ４の処理が済むと、ステップＳ５で処理結果を管理サーバ１０の計算機管理部３０に返信し、分散制御テーブル３２及び仮想サーバ管理テーブル３４における状態を「凍結」または「再開」に変更させる。【０１１３】
また本実施形態は図２の管理サーバ１０で実行されるサーバ管理プログラムを提供するものであり、このサーバ管理プログラムは図１２〜図１８のフローチャートに示した内容を持つことになる。【０１１４】
また本実施形態は、管理サーバ１０を構成するコンピュータで可読なサーバ管理プログラムを格納した記憶媒体を提供する。この記憶媒体は、ＣＤ−ＲＯＭ、フロッピィ（Ｒ）ディスク、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの可搬型記憶媒体や、コンピュータシステムの内外に備えられたハードディスクドライブなどの記憶装置の他、回線を介してプログラムを保持するデータベース、あるいは他のコンピュータシステム並びにそのデータベースや、更に回線上の伝送媒体を含むものである。【０１１５】
なお上記の実施形態はコンピューティンググリッド環境の仮想サーバに対するサーバ管理を例に取るものであったが、これ以外の適宜の仮想サーバを使用したコンピュータシステムにつき、そのまま適用することができる。【０１１６】
また本発明は、その目的と利点を損なうことのない適宜の変形を含み、更に上記の実施形態で示した数値による限定は受けない。
【図１】
0004700104.tif 000002
【図２】
0004700104.tif 000003
【図３】
0004700104.tif 000004
【図４】
0004700104.tif 000005
【図５】
0004700104.tif 000006
【図６】
0004700104.tif 000007
【図７】
0004700104.tif 000008
【図８】
0004700104.tif 000009
【図９】
0004700104.tif 000010
【図１０】
0004700104.tif 000011
【図１１】
0004700104.tif 000012
【図１２】
0004700104.tif 000013
【図１３】
0004700104.tif 000014
【図１４】
0004700104.tif 000015
【図１５】
0004700104.tif 000016
【図１６】
0004700104.tif 000017
【図１７】
0004700104.tif 000018
【図１８】
0004700104.tif 000019