(57)【要約】【課題】  マルチコアプロセッサ環境において、高信頼／高可用化を実現すること。【解決手段】  複数のマルチコアプロセッサからなるシステムにおいて、プロセッサとプロセッサが有するコアを管理するテーブルを有し、仮想サーバの生成時において異なるプロセッサのコアを用いて単一の仮想サーバを構成する。また、プロセッサが有するコアの数に応じて、プロセッサの数を可変にする。また、プロセッサの障害予兆を検出した場合に、前記障害の予兆を検出したプロセッサには仮想化機構の実行スケジュールを渡さないように制御する。また、複数のマルチコアプロセッサからなるシステムにおいて、オペレーティングシステムのプロセス又はスレッドの処理に、複数の異なるプロセッサが有する演算コアを割り当てる。また、複数のマルチコアプロセッサからなるシステムにおいて、オペレーティングシステムに、複数の異なるプロセッサが有する演算コアを割り当てる。【選択図】図１
2008152594.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算コアを有する複数のプロセッサを有するサーバであって、前記サーバでは仮想サーバを生成し制御する仮想化機構が稼働する仮想化環境において、
前記仮想サーバ生成時において、前記プロセッサと前記演算コアの対応を管理する演算コア管理テーブルを参照し、複数の異なる前記プロセッサが有する演算コアを前記仮想サーバに割り当てることを特徴とするマルチコアプロセッサ高信頼化方法。
【請求項２】
複数の演算コアを有する複数のプロセッサを有するサーバであって、前記サーバでは仮想サーバを生成し制御する仮想化機構が稼働し、前記仮想化機構は管理サーバによって管理される仮想化環境において、
前記管理サーバは、前記プロセッサと前記演算コアの対応を管理する演算コア管理テーブルを有し、
前記仮想サーバ生成時において、前記演算コア管理テーブルを参照し、複数の異なる前記プロセッサが有する演算コアを前記仮想サーバに割り当てることを特徴とする請求項１記載のマルチコアプロセッサ高信頼化方法。
【請求項３】
前記演算コア管理テーブルは、各々のプロセッサが有する演算コアの数を有し、前記プロセッサが有する演算コアの数が多いほど、前記仮想サーバに割り当てるプロセッサの数を多くすることを特徴とする請求項２記載のマルチコアプロセッサ高信頼化方法。
【請求項４】
前記プロセッサが有する演算コアの数が異なる場合、前記プロセッサが有する演算コアの数が同一のプロセッサの演算コアを優先して前記仮想サーバに割り当てることを特徴とする請求項２記載のマルチコアプロセッサ高信頼化方法。
【請求項５】
前記管理サーバのユーザインターフェースは、少なくとも信頼性重視と性能重視の割り当て指示する指示部を有し、
信頼性重視が指示された場合は、前記仮想サーバへの演算コア割り当てを複数のプロセッサに分散し、
性能重視が指示された場合は、同一の前記プロセッサが有するコアを優先して割り当てることを特徴とする請求項２記載のマルチコアプロセッサ高信頼化方法。
【請求項６】
複数の演算コアを有する複数のプロセッサを有するサーバであって、前記サーバでは仮想サーバを生成し制御する仮想化機構が稼働し、前記仮想化機構は管理サーバによって管理される仮想化環境において、
前記仮想化機構は前記プロセッサの障害予兆を検出する障害予兆検出機構を有し、
前記障害予兆検出機構がプロセッサあるいはコアの障害予兆を検出した場合に、前記管理サーバは前記仮想化機構が前記障害を検出したプロセッサあるいは演算コアで実行されないように実行スケジュールを変更することを特徴とするマルチコアプロセッサ高信頼化方法。
【請求項７】
前記管理サーバは、前記プロセッサの部位に対応した障害予兆検出時の対応テーブルを有し、
障害予兆を検出した場合に、前記対応テーブルに基づき前記プロセッサあるいは前記演算コアを交代することを特徴とする請求項６記載のマルチコアプロセッサ高信頼化方法。
【請求項８】
前記プロセッサあるいは前記演算コアの交代は、前記演算コアを命令単位で実行の停止が可能なステップ実行モードに切り替えた後に、前記交代を行うことを特徴とする請求項７記載のマルチコアプロセッサ高信頼化方法。
【請求項９】
前記プロセッサが異なる種類の演算コアを有する場合、障害予兆検出時に種類が少ない前記演算コアを優先して交代することを特徴とする請求項７記載のマルチコアプロセッサ高信頼化方法。
【請求項１０】
複数の演算コアを有する複数のプロセッサを有するサーバであって、
オペレーティングシステムのプロセス又はスレッドの処理に、複数の異なる前記プロセッサが有する演算コアを割り当てることを特徴とするマルチコアプロセッサ高信頼化方法。
【請求項１１】
複数の演算コアを有する複数のプロセッサを有するサーバであって、前記サーバでは複数のオペレーティングシステムを稼動させており、
前記オペレーティングシステムに、複数の異なる前記プロセッサが有する演算コアを割り当てることを特徴とするマルチコアプロセッサ高信頼化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチコアプロセッサで稼働する計算機の高信頼化方法に関する。
【背景技術】
【０００２】
企業の計算機システムやデータセンタにおいて、サーバの保有台数が増大した結果、運用管理コストも増大している。この問題を解決する技術としてプロセッサの高性能化がある。従来から、プロセッサの動作周波数の向上によりプロセッサの性能は向上してきた。プロセッサの性能向上に対するユーザの期待にはいくつかの異なる方向がある。一つは、より早く処理を行うための高性能化である。より複雑な処理を短時間で処理することで高度な処理結果を短い時間で得ることができるようになる。もう一つは、運用管理の容易化である。処理性能が高いプロセッサをサーバに用いることで、単一のサーバ上でより多くの処理を行うことができるため、管理すべきサーバの台数を少なくすることができる。その結果、運用管理対象となるサーバ数が少なくなり、運用管理が容易になる。現在は、特に運用管理を容易するためのプロセッサ高性能化に対する期待が大きくなっている。こういった背景の中、マルチコアプロセッサがプロセッサアーキテクチャの中心に位置づけられつつある。マルチコアプロセッサとは、単一の物理プロセッサ内に、並列に演算を行うことができるコアを複数内蔵するアーキテクチャである。従来のように、単一のコアの動作周波数を向上させる方法ではなく、コアを多数有することで性能を向上させる方法である。マルチコアプロセッサのメリットはいくつかあるが、多数の複雑な論理を必要とする従来のプロセッサに比べ、消費電力や全体性能を向上させることができる。こういったマルチコアプロセッサによって、サーバ単体の性能は従来よりも向上し、その結果運用管理の容易化を加速する技術として期待されている。
【０００３】
【特許文献１】特開２００６−２６０５６８
【特許文献２】特開２００４−３０３６３
【特許文献３】特開２００３−３３０７４０
【発明の開示】
【発明が解決しようとする課題】
【０００４】
マルチコアプロセッサにより性能向上と共に運用管理は容易化されることが期待できる。しかし、一方で可用性が低下する問題がある。特定の部位に障害が発生した場合でもシステムの処理を継続できる事が高可用性の条件となる。マルチコアプロセッサは、多数のコアを単一のプロセッサに内蔵することで性能を向上させるが、可用性の観点で見ると単一プロセッサの障害によって影響を受ける範囲が大きくなる事を意味している。つまり、マルチコアプロセッサによって、少ないプロセッサでシステムを構築することができる代わりに、可用性が低下する。例えば、２ＧＨｚのコアを１つ搭載したシングルコアプロセッサを使用して、合計２０ＧＨｚのシステムを構築する場合は２０個のプロセッサを要する。２０個のプロセッサ上でシステムを構築した場合、単一プロセッサの障害によって影響を受ける範囲は１／２０である。一方、２ＧＨｚのコアを単一のプロセッサに４つ搭載したマルチコアプロセッサは、同性能を得るのに５つのプロセッサで構築する事ができる。しかし、この場合、単一プロセッサの障害によって影響を受ける範囲は最大で４／２０となり、マルチコアプロセッサの方が障害時の影響が大きくなる課題がある。
【０００５】
また、別の課題としてマルチコアプロセッサを搭載したサーバの仮想化における可用性の低下がある。運用管理を容易化するもう一つの方法として、サーバの仮想化技術がある。サーバの仮想化技術は、単一の物理サーバ上で複数の仮想サーバを稼働することができる技術である。物理サーバには、プロセッサやメモリといったリソースがあり、サーバの仮想化技術はリソースを分割し、それぞれを異なる仮想的なサーバに割り当てることで単一の物理サーバ上で複数の仮想サーバを同時に実行する。マルチコアプロセッサ等による性能向上とメモリなどのリソースが低コスト化したことで、サーバの仮想化技術に関するニーズが増大している。また、サーバの仮想化技術は、複数の仮想サーバを単一の物理サーバ上で稼働させることによる統合のメリット以外にも、ワークロード制御により一層のサーバリソースの有効利用を図るメリットがある。ここで、ワークロード制御とは、物理サーバのＣＰＵやメモリといったリソースを状況に応じて仮想サーバに増減させる処理である。例えば、ある仮想サーバの負荷が高くなった場合に、同一の物理サーバ上で稼働する他の仮想サーバの中で負荷が低い仮想サーバからリソースを融通することで、物理サーバのリソースを有効に使用することができるようになる。
【０００６】
マルチコアプロセッサは、サーバの仮想化環境においては、多くのプロセッサリソースを保有できることで、単一のプロセッサから多数の仮想サーバを生成する能力を有することができる。つまり、多数のサーバをより少ないサーバに統合することができるようになる。このようにマルチコアプロセッサと仮想化技術の相乗効果によって、運用管理の容易化が進むことが期待できる。実際、仮想化技術と複数のプロセッサを組み合わせることで、システムの信頼性を向上させることもできる。例えば、物理サーバに生成された複数の仮想サーバを用い、正副のホットスタンバイ環境を構築することで、従来は複数の物理サーバを要した高信頼環境を、単一の物理サーバで構築するなどの技術がある。従来技術では、複数の仮想サーバ間でホットスタンバイを構築する技術や、障害の予兆を検出することで新たな仮想サーバを構築し障害に備えるなどの技術はある。しかし、これらの技術は、マルチコアプロセッサを対象にした技術ではなく、シングルコアプロセッサ環境における仮想サーバを用いた高信頼化技術である。また、障害の影響範囲の大きさを考慮しておらず、マルチコアプロセッサに対応した技術ではない。従って、マルチコアプロセッサ環境における仮想サーバの信頼性や可用性を向上することが課題である。
【課題を解決するための手段】
【０００７】
複数のマルチコアプロセッサからなるシステムにおいて、プロセッサとプロセッサが有するコアを管理するテーブルを有し、仮想サーバの生成時において異なるプロセッサのコアを用いて単一の仮想サーバを構成する。
【０００８】
また、プロセッサが有するコアの数に応じて、プロセッサの数を可変にする。また、プロセッサの障害予兆を検出した場合に、前記障害の予兆を検出したプロセッサには仮想化機構の実行スケジュールを渡さないように制御する。
【０００９】
また、複数のマルチコアプロセッサからなるシステムにおいて、オペレーティングシステムのプロセス又はスレッドの処理に、複数の異なるプロセッサが有する演算コアを割り当てる。
【００１０】
また、複数のマルチコアプロセッサからなるシステムにおいて、オペレーティングシステムに、複数の異なるプロセッサが有する演算コアを割り当てる。
【発明の効果】
【００１１】
マルチコアプロセッサ環境において、可用性を向上することができるようになる。
【発明を実施するための最良の形態】
【００１２】
以下、図面を用いて本願発明の実施の形態を説明する。
【実施例１】
【００１３】
図１は、本発明における実施例の全体図を示している。本実施例における制御の中心は、管理サーバ１０１である。仮想化機構管理プログラム１０２は、管理対象となるサーバ装置１１２で稼働する仮想化機構１１５を管理するプログラムである。仮想化機構管理プログラム１０２は、コア割当てプログラム１０３と障害管理プログラム１０４とスケジュール制御プログラム１０５とマイグレーション制御プログラム１０６から構成される。コア割当てプログラム１０３は、仮想サーバ１１４に対しサーバ装置１１２が有するプロセッサ１１９やプロセッサ１１９内のコア１１６を割り当てる制御を行う。障害管理プログラム１０４は、プロセッサ１１９やコア１１６に障害や障害の予兆を検出した際に実行され、プロセッサ１１９やコア１１６の交代などの管理を行う。スケジュール制御プログラム１０５は、仮想化機構１１５に対して、プロセッサ１１９やコア１１６の実行スケジュールを変更する指示を発行する。マイグレーション制御プログラム１０６は、プロセッサ１１９やコア１１６の交代を仮想化機構１１５に対して指示するプログラムである。これらは、コア管理テーブル１０７，サーバ構成テーブル１０８，仮想化機構管理テーブル１０９，プロセッサ管理テーブル１１０，障害対応テーブル１１１を更新・参照しながら実行される。管理対象であるサーバ装置１１２は、メモリ１１３，プロセッサ１１９，プロセッサ１１９に内蔵されるコア１１６，プロセッサコントローラ１１７，I/Oデバイス１１８から構成される。メモリ１１３内には、仮想化機構１１５が格納および実行され、これにより仮想サーバ１１４が生成される。仮想サーバ１１４は、仮想化機構１１５によってサーバ装置１１２内のメモリ１１３やプロセッサ１１９やI/Oデバイス１１８等のリソースを分配することで、サーバと同等の機能を有することができる。
【００１４】
なお、図２９は、管理サーバ１０１のハードウェアとプログラムの関係を記載しており、管理サーバ１０１は、プログラムやテーブルなどのデータを格納するメモリ２９０１、プログラムを実行するプロセッサ２９０２、ディスクアクセスのインターフェースであるHBA（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｏｒ）、ネットワークインターフェース２９０４から構成され、本発明における仮想化機構管理プログラム１０２や各テーブルはメモリ内に格納されている。仮想化機構管理プログラム１０２はプロセッサ２９０２で実行することにより実現するが、説明を簡単にするため、以下、プロセッサ２９０２の処理に関してはプログラムを実行主体として説明する。また、コア割当てプログラム１０３、スケジュール制御プログラム１０５，障害管理プログラム１０４、マイグレーション制御プログラム１０６は、プロセッサ２９０２が実行することで、仮想化機構管理処理を実現するが、これらはコア割当て部、スケジュール制御部，障害管理部、マイグレーション制御部など、各処理を行う処理部として集積回路化するなどしてハードウェアで実現することもできる。
【００１５】
図２は、プロセッサ１１９の構成例を示している。プロセッサ１１９内には複数のコア１１６が内蔵されている。コア１１６は、メモリ１１３から命令を読み込み、命令の実行やメモリ１１３とデータ読み込みや書き込みを行うことができる。コア１１６内の１次キャッシュ２０２は、命令やデータを高速に読み書きするための高速なメモリである。複数のコア１１６は、１次キャッシュ２０１よりも容量の大きな２次キャッシュ２０３を有する、２次キャッシュ２０３は複数のコア１１６から共有される。また、外部のメモリ１１３とのデータや命令を入出力するためのメモリインターフェースを有する。複数のコア１１６は、それぞれ独立に動作することができる。従って、コア１１６の数が多いほど処理性能が向上する。また、複数のコア１１６は、マルチプロセッサの形態をとることができる。つまり、コア１１６は独立に動作するが、メモリ１１３上のプログラムからは単一システムのような使い勝手を得ることができる。例えば、メモリ１１３上に複数のプログラムが同時に稼働する場合、一般的にはオペレーティングシステムと呼ばれるシステムプログラムが自動的に複数のコア１１６へ実行の制御を割当てるため、プログラムからはあたかも複数のプログラムが同時に実行されたように見ることができる。
【００１６】
図３は仮想化機構１１５の詳細を示している。サーバ装置１１２内のメモリ１１３内には仮想化機構１１５が稼働する。仮想化機構１１５内には、スケジュール制御機構３０１とプロセッサ制御機構３０３と障害予兆検出機構３０２と割り込み制御テーブル３０４と制御インターフェース（Ｉ／Ｆ）３０５から構成される。スケジュール制御機構３０１は、仮想化機構１１５に関連するプログラムの実行スケジュール制御を行う。プロセッサ制御機構３０３はプロセッサ１１９の動作モードの制御を行う。障害予兆検出機構３０２は、定期的あるいは、プロセッサ１１９が空き状態になると動作し、ハードウェアのチェックを行う機構である。これらの動作は、外部から制御Ｉ／Ｆ３０５を介して制御することができる。
【００１７】
図４は、仮想化機構１１５によって、プロセッサ１１９が仮想サーバ１１４に割り当てられている状態を示している。仮想サーバ１１４への割り当て方にはいくつかの方法がある。４０１の割り当て方は、単一のプロセッサ１１９を、複数の仮想サーバ１１４に割り当てる方法である。共有割当て方法とも呼ばれ、通常は複数の仮想サーバ１１４で同一のプロセッサ１１９リソースを共有し、プロセッサ１１９よりも多い仮想サーバ１１４を構築する際に使用される割当て方法である。４０２と４０３の割当て方は、占有割当て方法とも呼ばれ、仮想サーバ１１４は専用のプロセッサ１１９が割り当てられ他の仮想サーバ１１４から共有されることはない。割り当て方には、いくつかのパターンがあり、４０２のように複数のプロセッサ１１９を単一の仮想サーバ１１４に割り当てる。高性能な仮想サーバ１１４を要求される場合にはこういった割り当て方を行う。このように、仮想化機構１１５は、プロセッサ１１９などのサーバ装置１１２のリソースを複数の仮想サーバ１１４に分配する事で、複数の仮想サーバ１１４を生成し、かつ複数の仮想サーバ１１４は並列に動作することもできる。また、ここではプロセッサ１１９の割当て方について述べたが、Ｉ／Ｏデバイス１１８やメモリ１１３などのリソースも同様に分割して割り当てることができる。
【００１８】
図５はサーバ構成テーブル１０８を示している。サーバ構成テーブル１０８は、主にサーバ装置１１２のハードウェアの構成を管理するために設けられたテーブルである。カラム５０１は、システム識別子（ＩＤ）を示している。システムＩＤ５０１とは、例えば単一のサーバ構成を単位とした識別子である。一例として、マルチプロセッサ構成などが考えられる。単一のシステムＩＤ５０１には、カラム５０２に示すように単一あるいは複数のプロセッサから構成される。さらに、プロセッサには、カラム５０３に示すように複数のコアが搭載される。カラム５０３では、プロセッサ内に有するコアの数が記載される。カラム５０４では、システムが有するメモリの総容量が格納される。カラム５０５では、システムが有するＩ／Ｏデバイスの種類と数が格納される。例えば、Ｉ／Ｏデバイスとは、ネットワークと接続するためのネットワークアダプタや、ディスクと接続するためのディスクアダプタなどである。カラム５０６には、仮想化機構の識別子（ＩＤ）が格納される。これらのカラムにより、システム当たりのハードウェアリソースを把握することができ、また仮想化機構と対応づけることで仮想化機構が使用することができるハードウェアリソースを管理することができるようになる。
【００１９】
図６は、仮想化機構管理テーブル１０９の構成を示している。カラム６０１は、仮想化機構ＩＤを示す。これは、図５のカラム５０６に対応する仮想化機構ＩＤである。カラム６０２は、生成された仮想サーバＩＤが格納される。仮想化機構によって生成された全ての仮想サーバＩＤが格納される。また、生成された仮想サーバだけではなく、仮想化機構が有する空きハードウェアリソースであるリソースプールに関する情報も記載される。これは、新たに仮想サーバを生成する場合や既存の仮想サーバにリソースを追加する場合に、システムが有する空きリソースから割り当てるため、リソースの残りを管理する必要があるためである。カラム６０３は、仮想サーバに割り当てられているプロセッサＩＤが格納される。複数のプロセッサが割り当てられている場合には複数のプロセッサＩＤが記載される。カラム６０４は、カラム６０３に記載されたプロセッサが有するコアＩＤが格納される。これにより、仮想サーバへの割当てを、コア単位で管理することができるようになる。カラム６０５は、仮想サーバに割り当てられたメモリ容量が格納される。カラム６０６には、仮想サーバに割り当てられたＩ／Ｏデバイスが格納される。仮想化機構管理テーブル１０９は、新たな仮想サーバの生成や、削除、あるいは割り当てリソースに変更が生じた場合に更新される。
【００２０】
図７はプロセッサ管理テーブル１１０の構成を示している。プロセッサ管理テーブル１１０は主に、プロセッサの障害に関する情報が格納される。カラム７０１は、プロセッサＩＤが格納される。カラム７０２には、プロセッサが有するコアＩＤが格納される。カラム７０３には各プロセッサやコアの状態が格納される。例えば、障害の予兆を検出した場合や障害が発生した場合には部位が格納される。プロセッサ管理テーブル１１０によって、複数のプロセッサや複数のコアを有するサーバ環境において、障害の予兆検出時や障害時にプロセッサ内の部位を特定することができる。
【００２１】
図８は障害対応テーブル１１１の構成を示している。障害対応テーブル１１１は、プロセッサに障害が発生した場合や障害の予兆を検出した場合の対策が記載される。対策はプロセッサの種別８０１毎に記載される。プロセッサ種別８０１によって、該プロセッサのアーキテクチャを特定でき、またアーキテクチャの違いから生じる障害時の対策を管理することができる。カラム８０２は、プロセッサ部位が格納される。カラム８０３は、障害予兆を検出した場合の対応が格納される。例えば、コア交代や仮想化機構スケジュール禁止といった内容である。コア交代とは、障害予兆を検出したことで、交代コアを割り当てる事を意味する。また、仮想化機構スケジュール禁止は、当該コアあるいはプロセッサに対し、仮想化機構のスケジュールを禁止することを意味する。プロセッサ交代とは、当該プロセッサの全てのコアを他のプロセッサのコアと交代することを意味する。対応は、部位によって異なる。例えば、コアと１次キャッシュが同一コア内に内蔵され他のコアとは独立している場合には、コア単位の交代で良い。しかし、２次キャッシュが複数のコアから共有されている場合には、障害発生時の影響が大きいためプロセッサ単位で交代した方が良い。カラム８０４は障害時の対応が記載される。内容は、カラム８０３と同様である。このように、プロセッサのアーキテクチャによって、障害予兆検出時の優先度が異なる。これらをアーキテクチャ毎に管理するために障害対応テーブル１１１を設けている。
【００２２】
図９は、仮想サーバコンソールの例を示している。図９では、新たに仮想サーバを生成する場合のユーザインターフェースを記述している。９０１はユーザインタフェースの全体図を示している。９０２〜９０４は、仮想サーバに対するアクションを選択するメニューである。ここで選択されたメニューの内容が管理サーバコンソール９０１の右に表示される。図９では、仮想サーバ追加の内容が表示されている。９０５は、新たに生成する仮想サーバのＩＤを入力する。仮想サーバをどのシステムＩＤに生成するかは、ユーザが選択することができる。９０６は、生成する仮想サーバの特性を入力する。これは、本発明の特徴となる内容である。仮想サーバの特性には、例えば、信頼性重視や性能重視、あるいは一般といった特性が考えられる。信頼性重視とは、同じ量のリソースを割り当てる場合であっても、障害に対して強くなる割り当て方をする事を意味する。また、性能重視とは、信頼性よりも性能が高いことを重視する割り当て方を意味する。一般とは、信頼性も性能も重視せず、空きリソースを割り当てることを意味する。９０７はプロセッサの割り当て方を選択する。例えば、占有割り当て／共有割り当てといった割り当て方や、割り当ての単位としてコア単位やプロセッサ単位、またその数を記載する。９０８は、割り当てメモリ量を入力する。９０９は、割り当てるＩ／Ｏデバイスを入力する。リソースの入力の際には、仮想化機構管理テーブル１０９のリソースプールに記載された内容をユーザインタフェースに反映すると入力ミスを少なくでき、また入力が容易になる。全ての項目を入力し終わると、９１０のボタンを押すことで入力されたパラメタで新たな仮想サーバを生成することができる。
【００２３】
図１０は、コア割り当てプログラム１０３のフローチャートを示している。コア割り当てプログラム１０３は、図９におけるユーザインタフェースの９０６の入力結果に応じて動作が変わる。コア割り当てプログラム１０３の各ステップについて説明する。ステップ１００１は信頼性重視が入力された場合に、ステップ１００３に移行し信頼性重視型コア割り当て処理を行う。ステップ１００２は、性能重視が入力された場合に、ステップ１００４に移行し性能重視型コア割り当て処理を行う。いずれでもない場合は、ステップ１００５に移行し、一般型コア割り当て処理を行う。
【００２４】
次に、各割り当て処理について詳細なフローチャートで説明する。信頼性重視型コア割り当て処理１００３は、仮想サーバ生成時に、信頼性が高くなるコアの割り当て方を行う。ここで、信頼性が高いコアの割り当てとは、単一の仮想サーバに複数のコアを割り当てる場合に、異なるプロセッサのコアを選択して割り当てることを意味する。ステップ１１０１は、サーバ構成テーブル１０７から、プロセッサ当たりのコア数を取得する。ステップ１１０２は、コア数から、分散するプロセッサ数を決定する。例えば、プロセッサ内のコア数が多いほど、できるだけ多くの異なるプロセッサのコアを選択することを意味する。これは、コア数が多いプロセッサほど、障害が発生した場合の影響が大きくなるためである。そのため、できるだけ多くの異なるプロセッサのコアを選択して割り当てることで、プロセッサ単位で障害が発生した場合でも、仮想サーバの全てのコアが障害によって停止することを防ぐことができる。ステップ１１０３は、仮想化機構管理テーブル１０９のリソースプールから、プロセッサを選択する。ステップ１１０４は、選択されたプロセッサが、全て同一プロセッサかどうか判定する。ステップ１１０５は、リソースプールから同タイプのプロセッサを選択する。これは、単一の仮想サーバに割り当てるコアを決定する場合に、できるだけ同じコア数を有するプロセッサを選択した方が、信頼性のばらつきを少なくすることができるためである。同一種類の空きプロセッサが存在しない場合は、できるだけコア数が近いプロセッサを選択するなどの方法も考えられる。ステップ１１０６は、仮想化機構管理テーブル１０９を更新する。ステップ１１０７は、選択されたコアに基づいて、仮想化機構１１５に対して、新たな仮想サーバの生成を指示する。このように、単一の仮想サーバに対して、異なるプロセッサのコアを選択することで、単一のプロセッサの障害によって、仮想サーバの全てのコアが同時に障害になることを防ぐことができる。
【００２５】
図１２は、性能重視型のコア割り当て処理１００４のフローチャートを示している。ここで性能重視型とは、仮想サーバに割り当てるコアをできるだけ同一プロセッサのコアを割り当てることを意味する。これは、例えば複数のコアから共有される２次キャッシュを効率的に使用するためである。単一の仮想サーバ内で実行されるプログラムは、同じ命令やデータを参照／更新する可能性が高い。こういったケースでは、できるだけキャッシュを共有した方が、キャッシュのヒット率を向上させることができる。従って、キャッシュを効率よく使用し高い性能を得るためには、できるだけ同一プロセッサのコアを割り当てた方が良い。性能重視型のコア割り当て処理１００４におけるステップ１２０１は、仮想化機構管理テーブル１０９のリソースプールから、プロセッサ当たりのコア数が多く、空きも多いコアを選択する。ステップ１２０３は、予定のコア数に達したかどうか判定する。予定のコア数に達していない場合は、ステップ１２０４にて、仮想化機構管理テーブル１０９のリソースプールから、プロセッサ当たりのコア数が多く、空きも多いコアを選択し、ステップ１２０３を繰り返す。ステップ１２０５は、仮想化機構管理テーブル１０９を更新する。ステップ１２０６は、選択されたコアに基づいて、仮想化機構１１５に対して、新たな仮想サーバの生成を指示する。これらの処理により、仮想サーバの性能を向上させる割り当て方を提供することができるようになる。
【００２６】
図１３は、一般型コア割り当て処理１００５のフローチャートを示している。一般型とは、信頼性も性能も重視しない場合の割り当て方である。基本的には、空きリソースを順番に検索しコアを割り当てる。一般型コア割り当て処理１００５にけるステップ１３０１は、仮想化機構管理テーブル１０９のリソースプールから、空きコアを選択する。ステップ１３０２は、予定のコア数に達したかどうか判定する。予定のコア数に達していない場合は、ステップ１３０３にて、仮想化機構管理テーブルのリソースプールから、空きコアを選択した後にステップ１３０２を繰り返す。ステップ１３０４は、仮想化機構管理テーブル１０９を更新する。ステップ１３０５は、仮想化機構１１５に対して、新たな仮想サーバの生成を指示する。
【００２７】
図１４は、信頼性重視型コア割り当て処理と、性能重視型コア割り当て処理の結果の一例を示している。１４０１は、信頼性重視型コア割り当て処理の結果である。このように、複数の異なるプロセッサのコアを、単一の仮想サーバに割り当てる事が特徴である。これにより、プロセッサに障害が発生しても、仮想サーバの全てを停止させることがない。一方、１４０２は、性能重視型コア割り当て結果の一例である。このように、できるだけ同一のプロセッサのコアを仮想サーバに割り当てることが特徴である。これにより、共有される２次キャッシュの命令やデータを有効に使用することで、性能を向上させることができる。図では述べていないが、性能と信頼性の両方を重視する割り当て方法もある。例えば、異なるプロセッサの数を少なくし、その代わりに同一プロセッサのコアを優先して割り当てるといった２つの割り当て方の混在である。こうすることで、信頼性と性能を満たす仮想サーバを生成することも可能である。
【００２８】
図１５は、障害予兆検出機構３０２のフローチャートを示している。障害予兆検出機構３０２は、仮想化機構１１５内で実行され、プロセッサの空き（アイドル）時や、所定の時間を経過した場合にハードウェアのチェックを行う。障害予兆検出機構３０２におけるステップ１５０１は、プロセッサがアイドルかどうかを判定する。ステップ１５０２は、前回のチェックから所定の時間が経過したかを判定する。ステップ１５０１あるいはステップ１５０２のいずれかの条件が一致すれば、ステップ１５０３以降のハードウェアチェックを実行する。ステップ１５０３は、プロセッサコアチェックを実行する。プロセッサのコアに障害の予兆がないかチェックする処理を行う。ステップ１５０４はプロセッサ内の１次キャッシュに障害の予兆がないかチェックする。ステップ１５０５は、プロセッサ内の２次キャッシュに障害の予兆がないかチェックする。ステップ１５０６は、プロセッサ内のメモリバスに障害の予兆がないかチェックする。これらプロセッサ内の障害予兆チェックには、例えば、プロセッサに対しチェックのための専用命令を発効するなどの方法が考えられる。ステップ１５０７は、メモリに障害の予兆がないかチェックする。メモリのチェックは、例えば、パリティやＥＣＣ（Error Check and Correct memory）等のメモリエラー検出機構を使用する等が考えられる。ステップ１５０８は、Ｉ／Ｏデバイスチェックを行う。ステップ１５０９は、プロセッサコントローラチェックを行う。ステップ１５１０では、ステップ１５０３〜ステップ１５０９までのチェック結果をプロセッサ管理テーブル１１０に書き込む。ステップ１５１１では、チェックした現在の時間を記録する。これは、次回のチェック判定（ステップ１５０２）に使用される。また、チェック時に障害の予兆ではなく、障害が発生していた場合にも、障害予兆と同様にプロセッサ管理テーブル１１０に記録する。これらの処理により、ハードウェアの障害を事前に把握することができるようになる。
【００２９】
図１６は、障害管理プログラム１０４のフローチャートを示している。障害管理プログラム１０４におけるステップ１６０１は、障害が発生したかどうかを判定する。これは、プロセッサ管理テーブル１１０を参照することで判定することができる。ステップ１６０２は、障害の予兆を検出したかどうかを判定する。これもステップ１６０１と同様に、プロセッサ管理テーブル１１０を参照することで判定することができる。障害が発生していた場合には、ステップ１６０３に移行し、障害対策プログラムを実行する。また、障害の予兆が検出された場合には、ステップ１６０４に移行し、障害予兆対策プログラムを実行する。
【００３０】
図１７は、障害対策プログラム１６０３のフローチャートを示している。障害が発生したプロセッサやコアは、基本的には他のプロセッサやコアと交代する処理を行う。障害対策プログラム１６０３におけるステップ１７０１は、プロセッサ管理テーブル１１０から障害発生プロセッサを検索する。ステップ１７０２は、プロセッサ管理テーブル１１０から障害発生部位を検索する。ステップ１７０３は障害対応テーブル１１１を参照し、障害部位に対応した処理を検索する。ステップ１７０４は、障害対応がコア交代かどうかを判定する。コア交代の場合は、ステップ１６０５に移行し、仮想化機構管理テーブル１０９を検索し、障害発生プロセッサとは異なるプロセッサのコアを交代コアとして選択する。ステップ１７０６は、障害コアを仮想サーバから切り離し、ステップ１７０５にて選択した交代コアを割り当てる。ステップ１７０７は、障害対応がプロセッサ交代かどうかを判定する。プロセッサ交代の場合は、ステップ１７０８に移行し、仮想化機構管理テーブル１０９を検索し、異なるプロセッサを交代プロセッサとして選択する。ステップ１７０９では、障害プロセッサを切り離し、交代プロセッサを割り当てる。これらの処理により、障害が発生したコア、あるいはプロセッサに割り当てられていた仮想サーバを正常な状態に戻すことができる。
【００３１】
図１８は、障害予兆対策プログラム１６０４のフローチャートを示している。障害予兆が検出したプロセッサやコアは、基本的には他のプロセッサやコアと交代する処理を行う。障害予兆対策プログラム１６０４におけるステップ１８０１は、プロセッサ管理テーブル１１０から障害予兆が検出されたプロセッサを検索する。ステップ１８０２は、プロセッサ管理テーブル１１０から障害予兆の発生部位を検索する。ステップ１８０３は障害対応テーブル１１１を参照し、障害予兆部位に対応した処理を検索する。ステップ１８０４は、スケジュール制御機構３０１に対し、概要部位を仮想化機構１１５の実行スケジュール対象から外す指示を発行する。これは、仮想化機構１１５を将来発生する可能性がある障害から保護することを目的としている。仮想化機構１１５は、生成された仮想サーバを含むシステム全体に影響を及ぼす可能性があるため、システム内において優先して保護すべき対象である。このステップ１８０４によって、障害予兆を検出したプロセッサあるいはコアをスケジュール対象から外すことで、システム全体の信頼性を向上することができる。ステップ１８０５は、障害予兆対応がコア交代かどうかを判定する。コア交代の場合は、ステップ１８０６に移行し、仮想化機構管理テーブル１０９を検索し、障害予兆を検出したプロセッサとは異なるプロセッサのコアを交代コアとして選択する。ステップ１８０７は、マイグレーション制御プログラム呼び出しを行う。ここで、マイグレーションとは、コアの交代時にシステムに影響を与えないようにする処理である。ステップ１８０８は、障害予兆対応がプロセッサ交代かどうかを判定する。プロセッサ交代の場合は、ステップ１８０９に移行し、仮想化機構管理テーブル１０９を検索し、異なるプロセッサを交代プロセッサとして選択する。ステップ１８１０では、マイグレーション制御プログラムの呼び出しを行う。これらの処理により、障害予兆が検出されたコア、あるいはプロセッサをシステムに影響を及ぼすことなく仮想サーバを正常な状態に戻すことができる。
【００３２】
図１９は、スケジュール制御機構３０１のフローチャートを示す。スケジュール制御機構３０１におけるステップ１９０１は、コア障害の予兆を検出したかどうかを検出する。コア障害の予兆を検出した場合、ステップ１９０２に移行し、該当コアをスケジュール対象から外すように、割り込み制御テーブル３０４を変更する。ステップ１９０３は、プロセッサ全体に影響する障害予兆を検出したかどうかを判定する。例えば、複数のコアから共有される２次キャッシュやメモリバスなどの障害予兆である。プロセッサ全体に影響を及ぼす障害の予兆を検出した場合には、該当プロセッサの全コアをスケジュール対象から外すように、割り込み制御テーブル３０４を変更する。
【００３３】
図２０は、割り込み制御テーブル３０４を示している。カラム２００１は、プロセッサＩＤが格納される。カラム２００２は、コアＩＤが格納される。カラム２００３は、割り込みレベルに応じた割り込み可／不可が格納される。割り込みレベルは、プロセッサアーキテクチャによって、レベル数や意味が異なるが、障害予兆を検出した場合には、プログラムの保護を目的として割り込みを不可に変更する。これにより、仮想化機構１１５のようなシステム全体に影響を及ぼすプログラムを保護することができる。一般に、プロセッサによって実行されるプログラムは、割り込みを受け付けたプロセッサ内のコアで実行される。コアやプロセッサに障害が発生していない場合は、発生した割り込みは複数のコアで均等にプログラムが実行されるように分散される。しかし、障害予兆を検出した場合は、近い将来に障害が発生する可能性を有するため、特に仮想化機構１１５のような信頼性を重視されるプログラムは保護する必要がある。そのため、障害予兆を検出したコアやプロセッサには、割り込みを不可にすることで、実行スケジュールから外す処理を行う。図２０では、例えばコアの障害予兆を検出したプロセッサ１のコア１は割り込みが不可に設定される。また、プロセッサ全体に影響する障害予兆を検出したプロセッサ２は全てのコアに対して、割り込みが不可となるように設定される。
【００３４】
図２１は、マイグレーション制御プログラム１０６のフローチャートを示している。マイグレーション制御プログラム１０６におけるステップ２１０１は、コア障害予兆を検出したかどうかを判定する。コア障害予兆を検出した場合は、ステップ２１０２に移行し、プロセッサ制御機構３０３に対し、障害予兆検出コアと交代コアの制御モードをステップ実行に切替指示を行う。これは、プロセッサの実行モードをステップ実行に変更することで、命令がどこまで実行されたかを正確に把握するためである。通常の実行モードでは、コア内で複数の命令が同時に実行されるため、どこまでの命令を実行したか判定することができない。そのため、プロセッサを一時的にステップ実行モードに移行し、外部からプロセッサの命令レベルの動作を管理する。交代コアをステップ実行モードに移行するのは、実行を外部から制御するためである。ステップ２１０３は、プロセッサ制御機構３０３から、該当コアの状態を取得する。ここで状態とは、交代コアに制御をスムーズに移行するために必要な情報である。例えば、プログラムカウンタのように命令の実行アドレスが格納された制御レジスタの内容などである。ステップ２１０４は、交代コアに対し、コアの状態を設定する。ステップ２１０５では、コア交代のために、障害予兆検出コアを停止し、交代コアの実行を指示する。これにより、システムに影響を与えることなく、交代コアに移行することができる。ステップ２１０６は、プロセッサ障害予兆を検出したかどうかを判定する。プロセッサ障害予兆を検出した場合には、ステップ２１０７に移行し、プロセッサ制御機構３０３に対し、障害予兆検出プロセッサと交代プロセッサの全コアの制御モードをステップ実行に切替指示を行う。ステップ２１０８は、プロセッサ制御機構３０３から、該当する全コアの状態を取得する。ステップ２１０９は、交代プロセッサのコアに対して、ステップ２１０８で取得したコアの状態を設定する。ステップ２１１０は、障害予兆検出プロセッサを停止し、交代プロセッサの実行を指示する。これにより、システムに影響を与えることなく、プロセッサ全体のマイグレーションが可能になる。
【００３５】
図２２は、プロセッサ制御機構３０３のフローチャートを示す。プロセッサ制御機構３０３におけるステップ２２０１は、通常実行モードへの変更指示かどうかを判定する。通常実行モードへの変更指示の場合はステップ２２０２に移行し、指定コアを通常実行モードに切り替える。ステップ２２０３は、ステップ実行モードへの切替かどうかを判定する。ステップ実行モードへの切替の場合は、指定コアをステップ実行モードに切り替える。
【００３６】
上記実施例１により、プロセッサの障害の予兆検出によって事前に障害を回避し、かつ障害が発生した場合でも、複数のプロセッサのコアを単一の仮想サーバに割り当てることで信頼性を高めることができる。また、ユーザインタフェースとして、高信頼重視と性能重視を設け、仮想サーバに対するコアの割り当てを制御することで、プロセッサを効率よく使用することができるようになる。
【００３７】
なお、本実施例１では、仮想化機構管理プログラム１０２や各種テーブルは管理サーバ１０１のメモリ２９０１に格納されているが、サーバ装置１１２のメモリ１１３に格納されても良い。例えば、サーバ装置１１２に仮想化機構管理プログラム１０２や各種テーブルを配置する方法の一つとして、仮想サーバ１１４の一つに管理サーバ１０１の仮想化機構管理プログラム１０２や各種テーブルを配置しても良い。
【００３８】
また、本実施例１では、仮想化機構１１５を用いてプロセッサコア１１６の割当てを行っているが、仮想化機構１１５は必ずしも必要ではない。例えば、単一のオペレーティングシステムがマルチコアの割当てを行う場合にも本発明を適用できる。例えば、オペレーティングシステムのプロセスやスレッドといったプログラム実行環境に対して本発明を適用できる。また他の例では、オペレーティングシステムが異なる複数のオペレーティングシステムを実行可能な環境を生成する場合にも本発明を適用できる。
【実施例２】
【００３９】
図２３は、本発明における実施例２のプロセッサの構成を示している。実施例１におけるコアは、実施例２における汎用コアであるが、実施例２では同種のコアだけでなく、異なる種類のコアが搭載されたプロセッサ１１９における管理方法について述べる。大きく異なる部分は、プロセッサ１１９に専用コア２３０１を搭載している点である。専用コア２３０１とは、特定の処理を高速化することを目的としたコアを意味する。例えば、浮動小数点演算の高速化や、文字列処理の高速化などが考えられる。
【００４０】
図２４は、実施例２における障害対応テーブル１１１の構成を示している。実施例１とは異なり、カラム８０２のプロセッサ部位に専用コアの項目が追加される。実施例２では、専用コアの数が汎用コアに比べて少ないため、障害に対する優先順位は汎用コアよりも高く設定することを意味する。つまり、数が少ない種類のコアの障害はシステムに与える影響が大きいため交替を優先するように設定する。実施例２では、専用コアより汎用コアの数が多い例を示しているが、逆のケースも考えられる。本発明においては、専用コアか汎用コアかに関係なく、数が少ないコアの交替優先度を高めることが特徴となる。このように、種類が異なるコアが搭載されると、仮想サーバのコア管理方法も異なる。
【００４１】
図２５は、実施例２における障害対策プログラム１６０３のフローチャートを示している。障害が発生したプロセッサやコアは、基本的には他のプロセッサやコアと交代する処理を行う。実施例２における障害対策プログラム１６０３におけるステップ１７０１は、プロセッサ管理テーブル１１０から障害発生プロセッサを検索する。ステップ１７０２は、プロセッサ管理テーブル１１０から障害発生部位を検索する。ステップ１７０３は障害対応テーブル１１１を参照し、障害部位に対応した処理を検索する。ステップ１７０４は、障害対応がコア交代かどうかを判定する。コア交代の場合は、ステップ１６０５に移行し、仮想化機構管理テーブル１０９を検索し、障害発生プロセッサとは異なるプロセッサのコアを交代コアとして選択する。ステップ１７０６は、障害コアを仮想サーバから切り離し、ステップ１７０５にて選択した交代コアを割り当てる。ステップ１７０７は、障害対応がプロセッサ交代かどうかを判定する。プロセッサ交代の場合は、ステップ１７０８に移行し、仮想化機構管理テーブル１０９を検索し、異なるプロセッサを交代プロセッサとして選択する。ステップ１７０９では、障害プロセッサを切り離し、交代プロセッサを割り当てる。ステップ２５０１では、専用コアの交替かどうかを判定する。専用コアの交替であればステップ２５０２に移行し、専用コア交替プログラムの呼び出しを行う。これらの処理により、障害が発生したコア、あるいはプロセッサに割り当てられていた仮想サーバを正常な状態に戻すことができる。
【００４２】
図２６は、専用コア交替プログラム２５０２のフローチャートを示す。専用コア交替プログラム２５０２におけるステップ２６０１は、交替のための専用コアが存在するかどうかを判定する。交替コアがあれば、ステップ２６０２に移行し、仮想化機構管理テーブル１０９を検索し、障害発生プロセッサとは異なるプロセッサのコアを選択する。ここでコアとは専用コアを意味する。ステップ２６０３では、障害コアを切り離し、交替コアを割り当てる。一方、交替コアが存在しなかった場合は、ステップ２６０４に移行し、仮想化機構管理テーブル１０９を検索し、障害が発生したプロセッサとは異なるプロセッサの汎用コアを選択する。ステップ２６０５では、汎用コア上で専用コアの機能をエミュレーションするプログラムを実行し、専用コアの交替とする。ステップ２６０６は、当該汎用コアを専用コアとして割り当てる。これらの処理により、数が少ないコアを汎用コアでエミュレーションすることで、システムを停止することなく処理を継続できる。なお、障害予兆検出時の動作についても同様の処理を適用できる。
【００４３】
図２７は、プロセッサやプロセッサのコア障害時にアプリケーションプログラムのリカバリ例を示している。仮想サーバ１１４内では、オペレーティングシステム２７０４が稼働し、またその上でアプリケーションプログラム２７０１が実行されている。アプリケーションプログラムは、スナップショット取得プログラム２７０２とリカバリプログラム２７０３を有する。スナップショット取得プログラム２７０２は、定期的にアプリケーションの動作状態を記録する機能を有する。これは、障害が発生した際に、再実行可能にするためである。例えば、アプリケーションプログラムの実行結果等である。プロセッサやコアに障害が発生した場合には、スナップショット取得プログラム２７０２が取得した状態を、リカバリプログラム２７０３が読み込み、アプリケーションプログラム２７０１の実行を再開することで目的を果たすことができる。
【実施例３】
【００４４】
図２８は、実施例３におけるサーバ構成テーブル１０８を示す。実施例１と異なる箇所はカラム２８０１が追加されたことである。カラム２８０１は、仮想化機構どうしが連携しあうことを意味している。システムＩＤは異なるが、仮想化機構がお互いに連携することで、複数のシステムを単一のシステムに見せることができる。図２８では、仮想化機構１と仮想化機構２が連携している事を意味している。こういった場合、障害予兆や障害を検出した場合に、交代の対象を拡大することができる。例えば、仮想化機構１に属するプロセッサＩＤ１のコアに障害が発生した場合に、プロセッサ３が有するコアを交代の対象に選択することができる。この連携によって、システムの信頼性や可用性を向上することができるようになる。
【産業上の利用可能性】
【００４５】
マルチコアプロセッサで稼働する計算機を用いる分野に利用される。
【図面の簡単な説明】
【００４６】
【図１】本発明の全体構成図を示す。
【図２】プロセッサの構成図を示す。
【図３】仮想化機構の構成図を示す。
【図４】仮想サーバへのプロセッサ割り当て方法を示す。
【図５】サーバ構成テーブルを示す。
【図６】仮想化機構管理テーブルを示す。
【図７】プロセッサ管理テーブルを示す。
【図８】障害対応テーブルを示す。
【図９】ユーザインターフェースを示す。
【図１０】コア割り当てプログラムのフローチャートを示す。
【図１１】信頼性重視型コア割り当てのフローチャートを示す。
【図１２】性能重視型コア割り当てのフローチャートを示す。
【図１３】一般型コア割り当てのフローチャートを示す。
【図１４】コア割り当て例を示す。
【図１５】障害予兆検出機構のフローチャートを示す。
【図１６】障害管理プログラムのフローチャートを示す。
【図１７】障害対策プログラムのフローチャートを示す。
【図１８】障害予兆対策プログラムのフローチャートを示す。
【図１９】スケジュール制御機構のフローチャートを示す。
【図２０】割り込み制御テーブルを示す。
【図２１】マイグレーション制御プログラムのフローチャートを示す。
【図２２】プロセッサ制御機構のフローチャートを示す。
【図２３】実施例２における異なるコアを有するプロセッサの構成を示す。
【図２４】実施例２における障害対応テーブルを示す。
【図２５】実施例２における障害対応プログラムのフローチャートを示す。
【図２６】実施例２における専用コア交代プログラムのフローチャートを示す。
【図２７】実施例２におけるアプリケーションプログラムのリカバリ構成を示す。
【図２８】仮想化機構の連携時のサーバ構成テーブル。
【図２９】管理サーバの構成を示す。
【符号の説明】
【００４７】
１０１    管理サーバ
１０２    仮想化機構管理プログラム
１０３    コア割り当てプログラム
１０４    障害管理プログラム
１０５    スケジュール制御プログラム
１０６    マイグレーション制御プログラム
１０７    コア管理テーブル
１０８    サーバ構成テーブル
１０９    仮想化機構管理テーブル
１１０    プロセッサ管理テーブル
１１１    障害対応テーブル
１１２    サーバ装置
１１５    仮想化機構
１１４    仮想サーバ
１１９    プロセッサ
１１６    コア
【図１】
2008152594.tif 000003
【図２】
2008152594.tif 000004
【図３】
2008152594.tif 000005
【図４】
2008152594.tif 000006
【図５】
2008152594.tif 000007
【図６】
2008152594.tif 000008
【図７】
2008152594.tif 000009
【図８】
2008152594.tif 000010
【図９】
2008152594.tif 000011
【図１０】
2008152594.tif 000012
【図１１】
2008152594.tif 000013
【図１２】
2008152594.tif 000014
【図１３】
2008152594.tif 000015
【図１４】
2008152594.tif 000016
【図１５】
2008152594.tif 000017
【図１６】
2008152594.tif 000018
【図１７】
2008152594.tif 000019
【図１８】
2008152594.tif 000020
【図１９】
2008152594.tif 000021
【図２０】
2008152594.tif 000022
【図２１】
2008152594.tif 000023
【図２２】
2008152594.tif 000024
【図２３】
2008152594.tif 000025
【図２４】
2008152594.tif 000026
【図２５】
2008152594.tif 000027
【図２６】
2008152594.tif 000028
【図２７】
2008152594.tif 000029
【図２８】
2008152594.tif 000030
【図２９】
2008152594.tif 000031