(57)【特許請求の範囲】
【請求項１】
仮想マシンホストが実装された複数台の物理サーバに接続され、前記仮想マシンホストごとに管理される仮想マシンゲストを特定可能とするために、前記仮想マシンホストと前記仮想マシンゲストとのリンク関係情報が登録されるデータベースを有する管理サーバに、
前記仮想マシンホストから、該仮想マシンホストにより管理される仮想マシンゲストの
情報を取得する仮想マシン情報取得部と、
前記仮想マシン情報取得部により一の仮想マシンホストから、前記データベースにおいて前記一の仮想マシンホストにリンクされた第１の仮想マシンゲストが取得できなかったときに、前記一の仮想マシンホストと前記第１の仮想マシンゲストとのリンクを切断したリンク関係となるよう前記データベースに記憶されたリンク関係情報を更新するリンク切断部と、
前記仮想マシン情報取得部により前記一の仮想マシンホストから、前記データベースにおいて前記一の仮想マシンホストと異なる他の仮想マシンホストにリンクされることにより、前記第１の仮想マシンゲストと同一の識別情報を有する第２の仮想マシンゲストが取得できたときに、前記他の仮想マシンホストと前記第２の仮想マシンゲストとのリンクがあるリンク関係となるよう前記データベースに記憶されたリンク関係情報を更新するリンク更新部と、
して機能させる仮想マシン管理プログラム。
【請求項２】
前記管理サーバに、前記リンク切断部による更新処理の後、前記仮想マシン情報取得部が、すべての仮想マシンホストから前記第１の仮想マシンゲストの情報が取得できなかったときに、前記データベースから前記第１の仮想マシンゲストの情報を削除する仮想マシンゲスト削除部を更に実現させることを特徴とする請求項１記載の仮想マシン管理プログラム。
【請求項３】
前記データベースには、仮想マシンごとに電源状態が更に登録されているとともに、
前記管理サーバは、ライフサイクルマネジメント機能の実装の有無を判定するための情報に基づいて前記仮想マシンホストに前記ライフサイクルマネジメント機能が実装されていないと判定したときに、前記仮想マシン情報取得部により取得された前記仮想マシンゲストの情報、及び、前記データベースの登録内容に基づいて、前記データベースにおける前記仮想マシンホストと前記仮想マシンゲストとのリンク、及び、前記仮想マシンゲストの電源状態を更新する代替処理部を更に実現させ、
前記代替処理部は、
前記一の仮想マシンホストから取得された第３の仮想マシンゲストの電源状態がＯＮ、かつ、前記データベースにおいて前記第３の仮想マシンゲストが前記一の仮想マシンホストと異なる前記他の仮想マシンホストにリンクされているときに、前記他の仮想マシンホストと前記第３の仮想マシンゲストとのリンク関係を有するよう前記データベースのリンク関係情報を更新し、
前記一の仮想マシンホストから取得された第４の仮想マシンゲストの電源状態がＯＦＦ、前記データベースにおいて前記第４の仮想マシンゲストの電源状態がＯＮ、かつ、前記第４の仮想マシンゲストの電源ＯＦＦ検出時刻が前記一の仮想マシンホストと異なる他のすべての仮想マシンホストから情報を取得した時刻よりも前の時刻のときに、前記データベース上で前記第４の仮想マシンゲストの電源状態をＯＦＦに設定すること
を特徴とする請求項２記載の仮想マシン管理プログラム。
【請求項４】
仮想マシンホストが実装された複数台の物理サーバに接続され、前記仮想マシンホストごとに管理される仮想マシンゲストを特定可能とするために、前記仮想マシンホストと前記仮想マシンゲストとのリンク関係情報が登録されるデータベースを有する管理サーバが、
一の仮想マシンホストから、前記データベースにおいて前記一の仮想マシンホストにリンクされた第１の仮想マシンゲストが取得できなかったときに、前記一の仮想マシンホストと前記第１の仮想マシンゲストとのリンクを切断したリンク関係となるよう前記データベースに記憶されたリンク関係情報を更新し、
前記一の仮想マシンホストから、前記データベースにおいて前記一の仮想マシンホストと異なる他の仮想マシンホストにリンクされた第２の仮想マシンゲストが取得できたときに、前記他の仮想マシンホストと前記第２の仮想マシンゲストとのリンクがあるリンク関係となるよう前記データベースに記憶されたリンク関係情報を更新する、
仮想マシン管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシンを管理する技術に関する。
【背景技術】
【０００２】
近年、１台の物理サーバ上に複数台の仮想マシンを構築し、仮想マシンごとに任意のＯＳ（Operating System）やアプリケーションを動作させる仮想化技術が実用化されている。仮想マシン環境においては、例えば、ある物理サーバの保守を行うときに、その物理サーバ上で作動していた仮想マシンを他のサーバに移動させ、移動先の物理サーバでサービスを提供することができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２６１１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、仮想マシンの移動操作を行った者は、仮想マシンの移動元及び移動先を認識している。しかしながら、他の者は、各物理サーバにおける仮想マシンの稼働状況を詳細に調べなければ、ある物理サーバから仮想マシンがいなくなったのは、仮想マシンが移動した結果なのか削除された結果なのかを判断できなかった。
【０００５】
そこで、本提案技術は従来の問題点に鑑み、複数台の物理サーバを有する情報システムにおいて、各物理サーバに存在する仮想マシンを容易に管理できるようにした仮想マシン管理技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
このため、本提案技術では、管理サーバが、一の仮想マシンホストから、データベースにおいて一の仮想マシンホストにリンクされた第１の仮想マシンゲストが取得できなかったときに、データベース上で一の仮想マシンホストと第１の仮想マシンゲストとのリンクを切断する。また、管理サーバが、一の仮想マシンホストから、データベースにおいて一の仮想マシンホストと異なる他の仮想マシンホストにリンクされた第２の仮想マシンゲストが取得できたときに、データベース上で他の仮想マシンホストと第２の仮想マシンゲストとのリンクを生成する。
【発明の効果】
【０００７】
本提案技術によれば、仮想マシンゲストの移動操作を行った者でなくても、データベースの内容を調べることで、ある物理サーバから仮想マシンゲストがいなくなったのは、仮想マシンゲストが移動された結果なのか削除された結果なのかを判断することができる。このため、仮想マシン管理に要する労力を軽減することができる。
【図面の簡単な説明】
【０００８】
【図１】本提案技術を適用した情報システムの全体構成図である。
【図２】ＤＢに登録されるＶＭホスト情報の説明図である。
【図３】ＤＢに登録されるＶＭゲスト情報の説明図である。
【図４】管理サーバで具現化される各種機能の一例を示すブロック図である。
【図５】ＶＭ管理処理を示すフローチャートである。
【図６】ＶＭ管理処理を示すフローチャートである。
【図７】ＶＭ管理処理を示すフローチャートである。
【図８】ＶＭ管理処理を示すフローチャートである。
【図９】ＶＭゲスト移動処理の説明図である。
【図１０】ＶＭゲスト移動直前のＤＢ状態の説明図である。
【図１１】ＶＭゲスト移動中のＤＢ状態の説明図である。
【図１２】ＶＭゲスト移動直後のＤＢ状態の説明図である。
【図１３】ＶＭゲスト削除処理の説明図である。
【図１４】ＶＭゲスト削除直前のＤＢ状態の説明図である。
【図１５】ＶＭゲスト削除中のＤＢ状態の説明図である。
【図１６】ＶＭゲスト削除直後のＤＢ状態の説明図である。
【図１７】管理サーバで具現化される各種機能の他の例を示すブロック図である。
【図１８】ライフサイクルマネジメント機能代替処理を示すフローチャートである。
【図１９】ライフサイクルマネジメント機能代替処理を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下、添付された図面を参照して本提案技術を詳述する。
図１は、本提案技術を適用した情報システムの全体構成を示す。
管理対象となる複数の物理サーバ１０は、インターネットなどのコンピュータネットワーク２０を介して、汎用コンピュータからなる管理サーバ３０（仮想マシン管理装置）に接続される。物理サーバ１０では、仮想マシン（ＶＭ：Virtual Machine）を動作させるためのＯＳ（Operating System）としてのＶＭホスト４０を実装することで、１つ以上のＶＭゲスト５０を動作させることができる。ここで、ＶＭゲスト５０は、ＶＭホスト４０上で動作するゲストＯＳ及びアプリケーションを含む。また、管理サーバ３０には、管理対象となる物理サーバ１０、具体的には、物理サーバ１０上で動作するＶＭホスト４０及びＶＭゲスト５０を管理するためのＤＢ（Database）６０が備え付けられる。
【００１０】
ＤＢ６０には、図２及び図３に示すように、各ＶＭホスト４０に関するＶＭホスト情報６０Ａ、及び、各ＶＭゲスト５０に関するＶＭゲスト情報６０Ｂが登録される。
ＶＭホスト情報６０Ａは、図２に示すように、ＶＭホスト名，キー，ＵＵＩＤ（Universal Unique Identifier：汎用一意識別子）及び更新時刻を関連付けたレコードである。ＶＭホスト名は、ＶＭホスト４０を表す文字列である。キーは、ＤＢ６０においてＶＭホスト４０を一意に特定するための値（数字）である。ＵＵＩＤは、情報システムにおいてＶＭホスト４０を一意に特定するための識別子である。更新時刻は、ＶＭホスト情報６０Ａのレコードを更新した日時を表し、例えば、起算点1970/01/01 00:00:00からの経過秒数を表す数字からなる。
【００１１】
ＶＭゲスト情報６０Ｂは、図３に示すように、ＶＭゲスト名，キー，ＵＵＩＤ，リンク切断時刻，電源ＯＦＦ検出時刻，電源状態及び管理ＶＭホスト（リンク関係情報）を関連付けたレコードである。ＶＭゲスト名は、ＶＭゲスト５０を表す文字列である。キーは、ＤＢ６０においてＶＭゲスト５０を一意に特定するための値（数字）である。ＵＵＩＤは、情報システムにおいてＶＭゲスト５０を一意に特定するための識別子である。リンク切断時刻は、ＶＭゲスト５０とＶＭホスト４０とのリンクが切断された日時を表し、例えば、起算点1970/01/01 00:00:00からの経過秒数を表す数字からなる。ここで、ＶＭゲスト５０とＶＭホスト４０とのリンクが切断されていないときには、リンク切断時刻には、例えば、「nil」が設定される。電源ＯＦＦ検出時刻は、ＶＭゲスト５０の電源ＯＦＦ状態が検出された日時を表し、例えば、起算点1970/01/01 00:00:00からの経過秒数を表す数字からなる。ここで、ＶＭゲスト５０の電源がＯＦＦでないときには、電源ＯＦＦ検出時刻には、例えば、「nil」が設定される。電源状態は、ＶＭゲスト５０の電源状態（ＯＮ又はＯＦＦ）を表す。管理ＶＭホストは、ＶＭゲスト５０を管理しているＶＭホスト４０、即ち、ＶＭゲスト５０にリンクされているＶＭホスト４０を表し、例えば、ＶＭホスト４０のキーからなる。ここで、ＶＭホスト４０が不明であるときには、管理ＶＭホストには、例えば、「nil」が設定される。なお、ＶＭゲスト情報６０Ｂの電源ＯＦＦ検出時刻，電源状態及び管理ＶＭホストは、ＶＭホスト４０に実装された公知のライフサイクルマネジメント機能により自動的に更新されるものとする。
【００１２】
管理サーバ３０は、仮想マシン管理プログラムを実行することで、図４に示すように、ＶＭ情報取得部３０Ａ，更新ロック部３０Ｂ，リンク切断部３０Ｃ，リンク更新部３０Ｄ，ＶＭゲスト登録部３０Ｅ及びＶＭゲスト削除部３０Ｆを夫々具現化する。なお、仮想マシン管理プログラムは、ＣＤ−ＲＯＭなどのコンピュータ読取可能な記録媒体から、管理サーバ３０のハードディスクなどのストレージにインストールされる。
【００１３】
ここで、ＶＭ情報取得部３０Ａが、仮想マシン情報取得手段として機能する。リンク切断部３０Ｃが、リンク切断手段として機能する。リンク更新部３０Ｄが、リンク更新手段として機能する。ＶＭゲスト削除部３０Ｆが、仮想マシンゲスト削除手段として機能する。
【００１４】
ＶＭ情報取得部３０Ａは、各物理サーバ１０のＶＭホスト４０から、どのようなＶＭゲストが構築されているかを表すＶＭ情報を取得する。更新ロック部３０Ｂは、更新対象となるＤＢ６０のＶＭホスト情報６０Ａ及びＶＭゲスト情報６０Ｂが他の処理で更新されないようにすべく、ＶＭホスト情報６０Ａ及びＶＭゲスト情報６０Ｂをレコード単位でロックする。リンク切断部３０Ｃは、ＶＭ情報並びにＤＢ６０のＶＭホスト情報６０Ａ及びＶＭゲスト情報６０Ｂに基づいて、ＶＭホスト４０とＶＭゲスト５０とのリンクを切断したリンク関係となるようＤＢ６０に記憶されたリンク関係情報を更新する。リンク更新部３０Ｄは、ＶＭ情報並びにＤＢ６０のＶＭホスト情報６０Ａ及びＶＭゲスト情報６０Ｂに基づいて、ＶＭホスト４０とＶＭゲスト５０とのリンクがあるリンク関係となるようＤＢ６０に記憶されたリンク関係情報を更新する。ＶＭゲスト登録部３０Ｅは、ＶＭ情報並びにＤＢ６０のＶＭホスト情報６０Ａ及びＶＭゲスト情報６０Ｂに基づいて、ＤＢ６０のＶＭゲスト情報６０Ｂに新たなＶＭゲストのレコードを追加登録する。ＶＭゲスト削除部３０Ｆは、ＶＭ情報並びにＤＢ６０のＶＭホスト情報６０Ａ及びＶＭゲスト情報６０Ｂに基づいて、ＤＢ６０のＶＭゲスト情報６０ＢからＶＭゲストのレコードを削除する。
【００１５】
図５〜図８は、例えば、予め設定されたスケジュールに従って、又は、情報システムの管理者から指示があったことを契機として、管理サーバ３０が、所定時間ごとに繰り返し実行するＶＭ管理処理の一例を示す。ＶＭ管理処理は、情報システムを構築する各物理サーバ１０のＶＭホスト４０を対象として順次巡回実行される。なお、以下の説明では、特に断らない限り、ＶＭ管理処理の対象となるＶＭホストを「ＶＭホスト」と呼ぶこととする。
【００１６】
ステップ１（図では「Ｓ１」と略記する。以下同様。）では、更新ロック部３０Ｂが、ＤＢ６０のＶＭホスト情報６０Ａ及びＶＭゲスト情報６０Ｂを参照し、更新対象となるＶＭホスト４０及びＶＭゲスト５０、即ち、ＶＭホスト４０及びこれにリンクされているＶＭゲスト５０のレコードの更新ロックを取得する。なお、ＶＭホスト４０及びＶＭゲスト５０の特定は、ＵＵＩＤを用いて行われる（以下同様）。
【００１７】
ステップ２では、ＶＭ情報取得部３０Ａが、例えば、物理サーバ１０のＶＭホスト４０に問い合わせることで、ＶＭホスト４０に構築されているＶＭ情報を取得する。
ステップ３では、リンク切断部３０Ｃが、ＤＢ６０のＶＭホスト情報６０Ａ及びＶＭゲスト情報６０Ｂを参照し、ＶＭホスト４０にリンクされたＶＭゲスト５０を順番に選択する。即ち、リンク切断部３０Ｃは、ＶＭホスト情報６０ＡからＶＭホスト４０のキーを読み出し、ＶＭゲスト情報６０Ｂの管理ＶＭホストにそのキーが設定されているＶＭゲスト５０を順番に選択する。なお、以下の説明では、特に断らない限り、選択されたＶＭゲストを「ＶＭゲスト」と呼ぶこととする。
【００１８】
ステップ４では、リンク切断部３０Ｃが、ＶＭゲスト５０が選択できたか否か、即ち、ＶＭホスト４０にリンクされたＶＭゲスト５０をすべて処理したか否かを判定する。そして、リンク切断部３０Ｃは、ＶＭゲスト５０が選択できたと判定すれば処理をステップ５へと進める一方（Ｙｅｓ）、ＶＭゲスト５０が選択できない（ＶＭゲスト５０をすべて処理した）と判定すれば処理をステップ９へと進める（Ｎｏ）。
【００１９】
ステップ５では、リンク切断部３０Ｃが、ＶＭゲスト５０がＶＭ情報に存在しているか否かを判定する。そして、リンク切断部３０Ｃは、ＶＭゲスト５０がＶＭ情報に存在していると判定すれば処理をステップ６へと進める一方（Ｙｅｓ）、ＶＭゲスト５０がＶＭ情報に存在していないと判定すれば処理をステップ７へと進める（Ｎｏ）。
【００２０】
ステップ６では、ＶＭゲスト登録部３０Ｅが、メモリなどに記憶領域が確保された一時的なリストにＶＭゲスト５０を追加登録した後、処理をステップ３へと戻す。
ステップ７では、リンク切断部３０Ｃが、ＤＢ６０のＶＭゲスト情報６０Ｂにおいて、ＶＭゲスト５０の管理ＶＭホストに「nil」を設定することで、ＤＢ６０上でＶＭホスト４０とＶＭゲスト５０とのリンクを切断する。
【００２１】
ステップ８では、リンク切断部３０Ｃが、ＤＢ６０のＶＭゲスト情報６０Ｂにおいて、ＶＭゲスト５０のリンク切断時刻に現在の時刻を設定した後、処理をステップ３へと戻す。ここで、現在の時刻は、例えば、管理サーバ３０の計時機能から取得するようにすればよい。
【００２２】
ステップ９では、ＶＭゲスト登録部３０Ｅが、ＶＭ情報からＶＭゲスト５０を順番に選択する。
ステップ１０では、ＶＭゲスト登録部３０Ｅが、ＶＭゲスト５０が選択できたか否か、即ち、ＶＭ情報に含まれるＶＭゲスト５０をすべて処理したか否かを判定する。そして、ＶＭゲスト登録部３０Ｅは、ＶＭゲスト５０が選択できたと判定すれば処理をステップ１１へと進める一方（Ｙｅｓ）、ＶＭゲスト５０が選択できない（ＶＭゲスト５０をすべて処理した）と判定すれば処理をステップ２４へと進める（Ｎｏ）。
【００２３】
ステップ１１では、ＶＭゲスト登録部３０Ｅが、リストを参照し、ＶＭゲスト５０がリストに存在するか否かを判定する。そして、ＶＭゲスト登録部３０Ｅは、ＶＭゲスト５０がリストに存在しないと判定すれば処理をステップ１２へと進める一方（Ｙｅｓ）、ＶＭゲスト５０がリストに存在すると判定すれば処理をステップ９へと戻す（Ｎｏ）。
【００２４】
ステップ１２では、ＶＭゲスト登録部３０Ｅが、ＤＢ６０のＶＭゲスト情報６０Ｂを参照し、ＶＭゲスト５０がＶＭゲスト情報６０Ｂに存在するか否かを判定する。そして、ＶＭゲスト登録部３０Ｅは、ＶＭゲスト５０がＶＭゲスト情報６０Ｂに存在しないと判定すれば処理をステップ１３へと進める一方（Ｙｅｓ）、ＶＭゲスト５０がＶＭゲスト情報６０Ｂに存在すると判定すれば処理をステップ１４へと進める（Ｎｏ）。
【００２５】
ステップ１３では、ＶＭゲスト登録部３０Ｅが、ＤＢ６０のＶＭゲスト情報６０ＢにＶＭゲスト５０のレコードを新規に登録した後、処理をステップ９へと戻す。
ステップ１４では、更新ロック部３０Ｂが、ＤＢ６０のＶＭゲスト情報６０Ｂを参照し、ＶＭゲスト５０がＶＭホスト４０と異なる他のＶＭホスト４０にリンクされているか否かを判定する。そして、更新ロック部３０Ｂは、ＶＭゲスト５０が他のＶＭホスト４０にリンクされていると判定すれば処理をステップ１５へと進める一方（Ｙｅｓ）、ＶＭゲスト５０が他のＶＭホスト４０にリンクされていない（リンク切断状態）と判定すれば処理をステップ１６へと進める（Ｎｏ）。
【００２６】
ステップ１５では、更新ロック部３０Ｂが、他のＶＭホスト４０及びＶＭゲスト５０をロック対象に設定する。
ステップ１６では、更新ロック部３０Ｂが、ＶＭゲスト５０をロック対象に設定する。
【００２７】
ステップ１７では、更新ロック部３０Ｂが、ロック対象のレコードの更新ロックを取得する。
ステップ１８では、リンク切断部３０Ｃが、ＤＢ６０のＶＭゲスト情報６０Ｂを参照し、ＶＭゲスト５０が他のＶＭホスト４０にリンクされているか否かを判定する。そして、リンク切断部３０Ｃは、ＶＭゲスト５０が他のＶＭホスト４０にリンクされていると判定すれば処理をステップ１９へと進める一方（Ｙｅｓ）、ＶＭゲスト５０が他のＶＭホスト４０にリンクされていない（リンク切断状態）と判定すれば処理をステップ２１へと進める（Ｎｏ）。
【００２８】
ステップ１９では、リンク切断部３０Ｃが、ＤＢ６０のＶＭゲスト情報６０Ｂにおいて、ＶＭゲスト５０の管理ＶＭホストに「nil」を設定することで、ＤＢ６０上で他のＶＭホスト４０とＶＭゲスト５０とのリンクを切断する。
【００２９】
ステップ２０では、リンク切断部３０Ｃが、ＤＢ６０のＶＭゲスト情報６０Ｂにおいて、ＶＭゲスト５０のリンク切断時刻に現在の時刻を設定する。
ステップ２１では、リンク更新部３０Ｄが、ＤＢ６０のＶＭゲスト情報６０Ｂにおいて、ＶＭゲスト５０の管理ＶＭホストにＶＭホスト４０のキーを設定することで、ＤＢ６０上でＶＭホスト４０とＶＭゲスト５０とのリンクを生成する。
【００３０】
ステップ２２では、リンク更新部３０Ｄが、ＤＢ６０のＶＭゲスト情報６０Ｂにおいて、ＶＭゲスト５０のリンク切断時刻に「nil」を設定することで、ＶＭゲスト５０のリンク切断時刻をクリアする。
【００３１】
ステップ２３では、更新ロック部３０Ｂが、ロック対象のレコードの更新ロックを解放した後、処理をステップ９へと戻す。
ステップ２４では、ＶＭゲスト削除部３０Ｆが、ＤＢ６０のＶＭホスト情報６０Ａにおいて、ＶＭホスト４０の更新時刻に現在の時刻を設定する。
【００３２】
ステップ２５では、ＶＭゲスト削除部３０Ｆが、ＤＢ６０のＶＭゲスト情報６０Ｂを参照し、リンク切断状態、即ち、管理ＶＭホストが「nil」に設定されているＶＭゲスト５０を順番に選択する。
【００３３】
ステップ２６では、ＶＭゲスト削除部３０Ｆが、ＶＭゲスト５０が選択できたか否か、即ち、ＤＢ６０のＶＭゲスト情報６０Ｂにおいてリンク切断状態のＶＭゲスト５０をすべて処理したか否かを判定する。そして、ＶＭゲスト削除部３０Ｆは、ＶＭゲスト５０が選択できたと判定すれば処理をステップ２７へと進める一方（Ｙｅｓ）、ＶＭゲスト５０が選択できない（ＶＭゲスト５０をすべて処理した）と判定すれば処理をステップ３２へと進める（Ｎｏ）。
【００３４】
ステップ２７では、ＶＭゲスト削除部３０Ｆが、ＤＢ６０のＶＭホスト情報６０Ａ及びＶＭゲスト情報６０Ｂを参照し、ＶＭゲスト５０のリンク切断時刻とすべてのＶＭホスト４０の更新時刻とを比較する。
【００３５】
ステップ２８では、ＶＭゲスト削除部３０Ｆが、ステップ２７における比較結果から、ＶＭゲスト５０のリンク切断時刻から所定時間内に更新されたＶＭホスト４０があるか否かを判定する。ここで、所定時間としては、情報システムを構築するすべての物理サーバ１０のＶＭホスト４０のレコードが更新される時間を考慮し、例えば、１分とすることができる。そして、ＶＭゲスト削除部３０Ｆは、所定時間内に更新されたＶＭホスト４０があると判定すれば処理をステップ２５へと戻す一方（Ｙｅｓ）、所定時間内に更新されたＶＭホスト４０がないと判定すれば処理をステップ２９へと進める（Ｎｏ）。
【００３６】
ステップ２９では、更新ロック部３０Ｂが、ＤＢ６０のＶＭゲスト情報６０Ｂのうち、ＶＭゲスト５０のレコードの更新ロックを取得する。
ステップ３０では、ＶＭゲスト削除部３０Ｆが、ＤＢ６０のＶＭゲスト情報６０ＢからＶＭゲスト５０のレコードを削除する。なお、ＤＢ６０からＶＭゲスト５０のレコードを削除したことを容易に認識できるようにすべく、その旨をログファイルなどに出力することが好ましい。
【００３７】
ステップ３１では、更新ロック部３０Ｂが、ＶＭゲスト５０のレコードの更新ロックを解放した後、処理をステップ２５へと戻す。
ステップ３２では、更新ロック部３０Ｂが、更新対象となるＶＭホスト４０及びＶＭゲスト５０のレコードの更新ロックを解放する。
【００３８】
このような管理サーバ３０によれば、あるＶＭホスト４０において、ＤＢ６０に存在するＶＭゲスト５０が取得できなかったとき、ＶＭゲスト５０が移動又は削除された可能性があると判断して、ＶＭホスト４０とＶＭゲスト５０とのリンクが切断される。一方、あるＶＭホスト４０において、ＤＢ６０に存在しないＶＭゲスト５０が取得でき、かつ、そのＶＭゲスト５０がリンク切断状態であるとき、ＶＭホスト４０とＶＭゲスト５０とのリンクが生成される。また、あるＶＭホスト４０において、ＤＢ６０に存在しないＶＭゲスト５０が取得でき、かつ、ＤＢ６０上で他のＶＭホスト４０にそのＶＭゲスト５０が存在しないとき、ＶＭホスト４０にリンクされたＶＭゲスト５０として、そのＶＭゲスト５０がＤＢ６０に新規登録される。さらに、あるＶＭホスト４０において、ＤＢ６０上で他のＶＭホスト４０に存在するＶＭゲスト５０が取得できたとき、他のＶＭホスト４０とＶＭゲスト５０とのリンクが切断されると共に、リンクを切断したＶＭゲスト５０とＶＭホスト４０とのリンクが生成される。
【００３９】
要するに、一のＶＭホスト４０から、ＤＢ６０において一のＶＭホスト４０にリンクされた第１のＶＭゲスト５０が取得できなかったときに、ＤＢ６０上で一のＶＭホスト４０と第１のＶＭゲスト５０とのリンクが切断される。また、一のＶＭホスト４０から、ＤＢ６０において一のＶＭホスト４０と異なる他のＶＭホスト４０にリンクされた第２のＶＭゲスト５０が取得できたときに、ＤＢ６０上で一のＶＭホスト４０と第２のＶＭゲスト５０とのリンクが生成される。
【００４０】
ここで、かかる管理サーバ３０の作用の理解を容易ならしめることを目的として、ＶＭゲストの移動について簡単な事例を用いて説明する。
前提条件として、ＶＭゲストの移動直前では、図９に示すように、物理サーバ１のＶＭホスト１にＶＭゲスト１及びＶＭゲスト２が構築されていると共に、物理サーバ２のＶＭホスト２にＶＭゲスト３が構築されているものを想定する。そして、物理サーバ１のＶＭゲスト２が物理サーバ２に移動されたものとする。
【００４１】
ＶＭゲスト２の移動直前では、図１０に示すように、ＤＢ６０のＶＭホスト１には、ＶＭゲスト１及びＶＭゲスト２がリンクされ、また、ＤＢ６０のＶＭホスト２には、ＶＭゲスト３がリンクされている。ＶＭホスト１のＶＭゲスト２がＶＭホスト２に移動されると、ＤＢ６０に存在するＶＭゲスト２がＶＭホスト１から取得できなくなるので、図１１に示すように、ＶＭホスト１とＶＭゲスト２とのリンクが切断される。この状態では、ＤＢ６０には、ＶＭゲスト２がリンク切断状態で存在することとなる。その後、ＶＭホスト２からＤＢ６０に存在しないＶＭゲスト２が取得されると、そのＶＭゲスト２はリンク切断状態であることから、図１２に示すように、ＶＭホスト２とＶＭゲスト２とのリンクが生成される。
【００４２】
従って、ＶＭゲスト５０の移動操作を行った者でなくても、ＤＢ６０の内容を調べることで、ある物理サーバ１０からＶＭゲスト５０がいなくなったのは、ＶＭゲスト５０が移動された結果なのか削除された結果なのかを判断することができる。このため、ＶＭ管理に要する管理者の労力を軽減することができる。
【００４３】
情報システムの管理対象からあるＶＭゲスト５０が削除されると、ＤＢ６０には、ＶＭホスト４０とのリンクが切断されたＶＭゲスト５０が存在したままとなってしまう。しかし、ＶＭゲスト５０のリンク切断後すべてのＶＭホスト４０のレコードが更新された時点において、リンクが切断されたＶＭゲスト５０がいずれかのＶＭホスト４０から取得されなければ、そのＶＭゲスト５０は削除されたと判断できる。そして、ＶＭゲスト５０が削除されたと判断されたときには、ＤＢ６０からＶＭゲスト５０のレコードが削除される。
【００４４】
要するに、一のＶＭホスト４０と第１のＶＭゲスト５０とのリンクが切断された後の所定時間内に、すべてのＶＭホスト４０から第１のＶＭゲスト５０の情報が取得できなかったときに、ＤＢ６０から第１のＶＭゲスト５０が削除される。
【００４５】
ここで、かかる管理サーバ３０の作用の理解を容易ならしめることを目的として、ＶＭゲストの削除について簡単な事例を用いて説明する。
前提条件として、ＶＭゲストの削除直前では、図１３に示すように、物理サーバ１のＶＭホスト１にＶＭゲスト１及びＶＭゲスト２が構築されていると共に、物理サーバ２のＶＭホスト２にＶＭゲスト３及びＶＭゲスト４が構築されているものを想定する。そして、物理サーバ１のＶＭゲスト２が削除されたものとする。
【００４６】
ＶＭゲスト２の削除直前では、図１４に示すように、ＤＢ６０のＶＭホスト１には、ＶＭゲスト１及びＶＭゲスト２がリンクされ、また、ＤＢ６０のＶＭホスト２には、ＶＭゲスト３及びＶＭゲスト４がリンクされている。ＶＭホスト１のＶＭゲスト２が削除されると、ＤＢ６０に存在するＶＭゲスト２がＶＭホスト１から取得できなくなるので、図１５に示すように、ＶＭホスト１とＶＭゲスト２とのリンクが切断される。この状態では、ＤＢ６０には、ＶＭゲスト２がリンク切断状態で存在することとなる。その後、ＶＭホスト２のレコードが更新された時点において、ＶＭホスト１及びＶＭホスト２からＶＭゲスト２が取得できなかったため、図１６に示すように、ＤＢ６０からＶＭゲスト２が削除される。
【００４７】
従って、ＶＭゲスト５０を削除した場合であっても、ＶＭホスト４０とのリンクが切断されたＶＭゲスト５０がいつまでもＤＢ６０に存在したままとなる事態を回避でき、ＤＢ６０に不必要な情報が存在することを抑制できる。このため、ＤＢ６０の内容を調べる労力が軽減し、ＶＭ管理に要する管理者の労力をさらに軽減することができる。
【００４８】
ところで、ＶＭホスト４０にライフサイクルマネジメント機能が実装されていないとき、ＶＭホスト４０間で共有しているＶＭゲスト５０について、現時点でどのＶＭホスト４０で管理・稼動しているのかを特定する仕組みが存在しない。そこで、管理サーバ３０にライフサイクルマネジメント機能の代替処理機能を追加すべく、図１７に示すように、ＶＭ管理プログラムにより具現化される代替処理部３０Ｇがさらに実装される。
【００４９】
図１８及び図１９は、管理サーバ３０が、図５〜図８に示すＶＭ管理処理と平行して、所定時間ごとに繰り返し実行する代替処理の一例を示す。なお、代替処理は、ＶＭ管理処理と同様に、情報システムを構築する各物理サーバ１０のＶＭホスト４０を対象として順次巡回実行される。
【００５０】
ステップ４１では、ＶＭ情報取得部３０Ａが、例えば、物理サーバ１０のＶＭホスト４０に問い合わせることで、ＶＭホスト４０に構築されているＶＭ情報を取得する。
ステップ４２では、代替処理部３０Ｇが、例えば、ＶＭ情報のapi_typeに基づいて、ＶＭホスト４０にライフサイクルマネジメント機能が実装されているか否かを判定する。そして、代替処理部３０Ｇは、ＶＭホスト４０にライフサイクルマネジメント機能が実装されていないと判定すれば処理をステップ４３へと進める一方（Ｙｅｓ）、ＶＭホスト４０にライフサイクルマネジメント機能が実装されていると判定すれば処理を終了させる（Ｎｏ）。ここで、ライフサイクルマネジメント機能が実装されていないＶＭホスト４０としては、例えば、ＲＨＥＬ（Red Hat Enterprise Linux：登録商標），Ｘｅｎ（商標）などがある。
【００５１】
ステップ４３では、代替処理部３０Ｇが、ＶＭ情報からＶＭゲスト５０を順番に選択する。
ステップ４４では、代替処理部３０Ｇが、ＶＭゲスト５０が選択できたか、即ち、ＶＭ情報に含まれるＶＭゲスト５０をすべて処理したか否かを判定する。そして、代替処理部３０Ｇは、ＶＭゲスト５０が選択できたと判定すれば処理をステップ４５へと進める一方（Ｙｅｓ）、ＶＭゲスト５０が選択できない（ＶＭゲスト５０をすべて処理した）と判定すれば処理を終了させる（Ｎｏ）。
【００５２】
ステップ４５では、代替処理部３０Ｇが、ＶＭゲスト５０の電源状態がＯＮであるか否か、即ち、ＶＭゲスト５０が稼働中であるか否かを判定する。そして、代替処理部３０Ｇは、ＶＭゲスト５０の電源状態がＯＮであると判定すれば処理をステップ４６へと進める一方（Ｙｅｓ）、ＶＭゲスト５０の電源状態がＯＮでない（ＯＦＦである）と判定すれば処理をステップ５２へと進める（Ｎｏ）。
【００５３】
ステップ４６では、代替処理部３０Ｇが、ＤＢ６０のＶＭゲスト情報６０Ｂを参照し、ＶＭゲスト５０がＶＭゲスト情報６０Ｂに存在するか否かを判定する。そして、代替処理部３０Ｇは、ＶＭゲスト５０がＶＭゲスト情報６０Ｂに存在すると判定すれば処理をステップ４７へと進める一方（Ｙｅｓ）、ＶＭゲスト５０がＶＭゲスト情報６０Ｂに存在しないと判定すれば処理をステップ５７へと進める（Ｎｏ）。
【００５４】
ステップ４７では、代替処理部３０Ｇが、ＤＢ６０のＶＭゲスト情報６０Ｂにおいて、ＶＭゲスト５０の電源ＯＦＦ検出時間に「nil」を設定する。
ステップ４８では、代替処理部３０Ｇが、ＤＢ６０のＶＭゲスト情報６０Ｂを参照し、ＶＭホスト４０とＶＭゲスト５０の管理ＶＭホストとが同一であるか否かを判定する。そして、代替処理部３０Ｇは、ＶＭホスト４０と管理ＶＭホストとが同一であると判定すれば処理をステップ５０へと進める一方（Ｙｅｓ）、ＶＭホスト４０と管理ＶＭホストとが同一でないと判定すれば処理をステップ４９へと進める（Ｎｏ）。
【００５５】
ステップ４９では、代替処理部３０Ｇが、ＤＢ６０のＶＭゲスト情報６０Ｂにおいて、ＶＭゲスト５０の管理ＶＭホストにＶＭホスト４０のキーを設定した後、処理をステップ５０へと進める。
【００５６】
ステップ５０では、代替処理部３０Ｇが、ＤＢ６０のＶＭゲスト情報６０Ｂを参照し、ＶＭゲスト５０の電源状態がＯＦＦであるか否かを判定する。そして、代替処理部３０Ｇは、ＶＭゲスト５０の電源状態がＯＦＦであると判定すれば処理をステップ５１へと進める一方（Ｙｅｓ）、ＶＭゲスト５０の電源状態がＯＦＦでない（ＯＮである）と判定すれば処理をステップ４３へと戻す（Ｎｏ）。
【００５７】
ステップ５１では、代替処理部３０Ｇが、ＤＢ６０のＶＭゲスト情報６０Ｂにおいて、ＶＭゲスト５０の電源状態にＯＮを設定した後、処理をステップ４３へと戻す。
ステップ５２では、代替処理部３０Ｇが、ＤＢ６０のＶＭゲスト情報６０Ｂを参照し、ＤＢ６０のＶＭゲスト５０の電源状態がＯＮであるか否かを判定する。そして、代替処理部３０Ｇは、ＶＭゲスト５０の電源状態がＯＮであると判定すれば処理をステップ５３へと進める一方（Ｙｅｓ）、ＶＭゲスト５０の電源状態がＯＮでない（ＯＮである）と判定すれば処理をステップ４３へと戻す（Ｎｏ）。
【００５８】
ステップ５３では、代替処理部３０Ｇが、ＤＢ６０のＶＭゲスト情報６０Ｂを参照し、ＶＭゲスト５０の電源ＯＦＦ検出時刻が「nil」であるか否かを判定する。そして、代替処理部３０Ｇは、ＶＭゲスト５０の電源ＯＦＦ検出時刻が「nil」であると判定すれば処理をステップ５４へと進める一方（Ｙｅｓ）、ＶＭゲスト５０の電源ＯＦＦ検出時刻が「nil」でないと判定すれば処理をステップ５５へと進める（Ｎｏ）。
【００５９】
ステップ５４では、代替処理部３０Ｇが、ＤＢ６０のＶＭゲスト情報６０Ｂについて、ＶＭゲスト５０の電源ＯＦＦ検出時刻に現在の時刻を設定し、処理をステップ４３へと戻す。
【００６０】
ステップ５５では、代替処理部３０Ｇが、ＤＢ６０のＶＭホスト情報６０Ａを参照し、ＶＭゲスト５０の電源ＯＦＦ検出時刻が他のすべてのＶＭホスト４０の更新時刻よりも前の時刻であるか否かを判定する。そして、代替処理部３０Ｇは、この条件が成立すると判定すれば処理をステップ５６へと進める一方（Ｙｅｓ）、この条件が成立しないと判定すれば処理をステップ４３へと戻す（Ｎｏ）。
【００６１】
ステップ５６では、代替処理部３０Ｇが、ＤＢ６０のＶＭゲスト情報６０Ｂについて、ＶＭホスト５０の電源状態にＯＦＦ、電源ＯＦＦ検出時刻に「nil」を設定した後、処理をステップ４３へと戻す。
【００６２】
ステップ５７では、代替処理部３０Ｇが、ＤＢ６０のＶＭゲスト情報６０Ｂについて、ＶＭゲスト５０のレコードを作成（新規登録）する。
ステップ５８では、代替処理部３０Ｇが、ＤＢ６０のＶＭゲスト情報６０Ｂについて、ＶＭゲスト５０の電源状態にＯＮ、電源ＯＦＦ検出時刻に「nil」、管理ＶＭホストにＶＭホスト４０のキーを設定した後、処理をステップ４３へと戻す。
【００６３】
このような代替処理機能を有する管理サーバ３０によれば、ＶＭホスト４０にライフサイクルマネジメント機能が実装されていないとき、次のような処理が行われる。
あるＶＭホスト４０において、ＤＢ６０に存在しないＶＭゲスト５０であって、電源状態がＯＮであるＶＭゲスト５０が取得できたとき、ＤＢ６０にＶＭゲスト５０のレコードが新規に登録される。また、あるＶＭホスト４０において、ＤＢ６０に存在するＶＭゲスト５０であって、電源状態がＯＮであるＶＭゲスト５０が取得できたとき、ＤＢ６０におけるＶＭゲスト５０の電源状態がＯＮに変更される。このとき、ＶＭホスト４０とＶＭゲスト５０の管理ＶＭホストが異なれば、ＤＢ６０におけるＶＭゲスト５０の管理ＶＭホストがＶＭホスト４０に変更される。
【００６４】
一方、あるＶＭホスト４０において、ＤＢ６０では電源状態がＯＮのＶＭゲスト５０であって、電源状態がＯＦＦであるＶＭゲスト５０が取得できたとき、電源ＯＦＦ検出時刻に現在時刻が設定される。また、前記条件を満たすＶＭゲスト５０が取得できたとき、ＶＭゲスト５０の電源ＯＦＦ検出時刻が他のすべてのＶＭホスト４０の更新時刻よりも前の時刻であれば、ＶＭゲスト５０の電源状態がＯＦＦ、電源ＯＦＦ検出時刻が「nil」に設定される。
【００６５】
要するに、一のＶＭホスト４０から取得された第３のＶＭゲスト５０の電源状態がＯＮ、かつ、ＤＢ６０において第３のＶＭゲスト５０が一のＶＭホスト４０と異なる他のＶＭホスト４０にリンクされているときに、ＤＢ６０上で一のＶＭホスト４０と第３のＶＭゲスト５０とのリンクが生成される。また、一のＶＭホスト４０から取得された第４のＶＭゲスト５０の電源状態がＯＦＦ、ＤＢ６０において第４のＶＭゲスト５０の電源状態がＯＮ、かつ、第４のＶＭゲスト５０の電源ＯＦＦ検出時刻が一のＶＭホスト４０と異なる他のすべてのＶＭホスト４０から情報を取得した時刻よりも前の時刻のときに、ＤＢ６０上で第４のＶＭゲスト５０の電源状態がＯＦＦに設定される。
【００６６】
従って、ライフサイクルマネジメント機能が実装されていないＶＭホスト４０であっても、ＶＭホスト４０間で共有しているＶＭゲスト５０について、現時点でどのＶＭホスト４０で管理・稼動しているのかを特定することができる。このため、同一のＶＭゲスト５０を複数のＶＭホスト４０で起動させることが抑制され、例えば、複数のＶＭゲスト５０で同じＤＢを更新することによって生じる不具合を回避することができる。
【００６７】
以上の実施形態に関し、更に以下の付記を開示する。
【００６８】
（付記１）仮想マシンホストが実装された複数台の物理サーバに接続され、前記仮想マシンホストごとに管理される仮想マシンゲストを特定可能とするために、前記仮想マシンホストと仮想マシンゲストとのリンク関係情報が登録されるデータベースを有する管理サーバに、前記仮想マシンホストから、該仮想マシンホストにより管理される仮想マシンゲストの情報を取得する仮想マシン情報取得部と、前記仮想マシン情報取得部により一の仮想マシンホストから、前記データベースにおいて一の仮想マシンホストにリンクされた第１の仮想マシンゲストが取得できなかったときに、一の仮想マシンホストと第１の仮想マシンゲストとのリンクを切断したリンク関係となるよう前記データベースに記憶されたリンク関係情報を更新するリンク切断部と、前記仮想マシン情報取得部により一の仮想マシンホストから、前記データベースにおいて一の仮想マシンホストと異なる他の仮想マシンホストにリンクされた第２の仮想マシンゲストが取得できたときに、一の仮想マシンホストと第２の仮想マシンゲストとのリンクがあるリンク関係となるよう前記データベースに記憶されたリンク関係情報を更新するリンク更新部と、して機能させる仮想マシン管理プログラム。
【００６９】
（付記２）前記管理サーバに、前記リンク切断部による更新処理の後、前記仮想マシン情報取得部が、すべての仮想マシンホストから第１の仮想マシンゲストの情報が取得できなかったときに、前記データベースから第１の仮想マシンゲストの情報を削除する仮想マシンゲスト削除部を更に実現させることを特徴とする付記１記載の仮想マシン管理プログラム。
【００７０】
（付記３）前記データベースには、仮想マシンごとに電源状態が更に登録されているとともに、前記管理サーバは、前記仮想マシンホストにライフサイクルマネジメント機能が実装されていないときに、前記仮想マシン情報取得部により取得された仮想マシンゲストの情報、及び、前記データベースの登録内容に基づいて、前記データベースにおける仮想マシンホストと仮想マシンゲストとのリンク、及び、前記仮想マシンゲストの電源状態を更新する代替処理部を更に実現させることを特徴とする付記１又は付記２に記載の仮想マシン管理プログラム。
【００７１】
（付記４）前記代替処理部は、一の仮想マシンホストから取得された第３の仮想マシンゲストの電源状態がＯＮ、かつ、前記データベースにおいて第３の仮想マシンゲストが一の仮想マシンホストと異なる他の仮想マシンホストにリンクされているときに、一の仮想マシンホストと第３の仮想マシンゲストとのリンク関係を有するよう前記データベースのリンク関係情報を更新し、一の仮想マシンホストから取得された第４の仮想マシンゲストの電源状態がＯＦＦ、前記データベースにおいて第４の仮想マシンゲストの電源状態がＯＮ、かつ、前記第４の仮想マシンゲストの電源ＯＦＦ検出時刻が一の仮想マシンホストと異なる他のすべての仮想マシンホストから情報を取得した時刻よりも前の時刻のときに、前記データベース上で第４の仮想マシンゲストの電源状態をＯＦＦに設定することを特徴とする付記３記載の仮想マシン管理プログラム。
【００７２】
（付記５）仮想マシンホストが実装された複数台の物理サーバに接続され、前記仮想マシンホストごとに管理される仮想マシンゲストを特定可能とするために、前記仮想マシンホストと仮想マシンゲストとのリンク関係情報が登録されるデータベースを有する管理サーバが、一の仮想マシンホストから、前記データベースにおいて一の仮想マシンホストにリンクされた第１の仮想マシンゲストが取得できなかったときに、一の仮想マシンホストと第１の仮想マシンゲストとのリンクを切断したリンク関係となるよう前記データベースに記憶されたリンク関係情報を更新し、一の仮想マシンホストから、前記データベースにおいて一の仮想マシンホストと異なる他の仮想マシンホストにリンクされた第２の仮想マシンゲストが取得できたときに、一の仮想マシンホストと第２の仮想マシンゲストとのリンクがあるリンク関係となるよう前記データベースに記憶されたリンク関係情報を更新する、仮想マシン管理方法。
【００７３】
（付記６）前記管理サーバが、前記一の仮想マシンホストと第１の仮想マシンゲストとのリンクを切断したリンク関係となるよう前記データベースに記憶されたリンク関係情報を更新した後、すべての仮想マシンホストから第１の仮想マシンゲストの情報が取得できなかったときに、前記データベースから第１の仮想マシンゲストの情報を削除することを特徴とする付記５記載の仮想マシン管理方法。
【００７４】
（付記７）複数台の物理サーバに実装された仮想マシンホストから、該仮想マシンホストにより管理される仮想マシンゲストの情報を取得する仮想マシン情報取得手段と、前記仮想マシンホストごとに管理される仮想マシンゲストを特定可能とするために、前記仮想マシンホストと仮想マシンゲストとのリンク関係情報が登録されるデータベースと、前記仮想マシン情報取得手段により一の仮想マシンホストから、前記データベースにおいて一の仮想マシンホストにリンクされた第１の仮想マシンゲストが取得できなかったときに、一の仮想マシンホストと第１の仮想マシンゲストとのリンクを切断したリンク関係となるよう前記データベースに記憶されたリンク関係情報を更新するリンク切断手段と、前記仮想マシン情報取得手段により一の仮想マシンホストから、前記データベースにおいて一の仮想マシンホストと異なる他の仮想マシンホストにリンクされた第２の仮想マシンゲストが取得できたときに、一の仮想マシンホストと第２の仮想マシンゲストとのリンクがあるリンク関係となるよう前記データベースに記憶されたリンク関係情報を更新するリンク更新手段と、を有することを特徴とする仮想マシン管理装置。
【００７５】
（付記８）前記リンク切断手段による更新処理の後、前記仮想マシン情報取得手段によりすべての仮想マシンホストから第１の仮想マシンゲストの情報が取得できなかったときに、前記データベースから第１の仮想マシンゲストの情報を削除する仮想マシンゲスト削除手段を更に有することを特徴とする付記７記載の仮想マシン管理装置。
【符号の説明】
【００７６】
１０    物理サーバ
３０    管理サーバ
３０Ａ  ＶＭ情報取得部
３０Ｃ  リンク切断部
３０Ｄ  リンク更新部
３０Ｆ  ＶＭゲスト削除部
３０Ｇ  代替処理部
４０    ＶＭホスト
５０    ＶＭゲスト
６０    ＤＢ
６０Ａ  ＶＭホスト情報
６０Ｂ  ＶＭゲスト情報
【図１】
0005428581.tif 000002
【図２】
0005428581.tif 000003
【図３】
0005428581.tif 000004
【図４】
0005428581.tif 000005
【図５】
0005428581.tif 000006
【図６】
0005428581.tif 000007
【図７】
0005428581.tif 000008
【図８】
0005428581.tif 000009
【図９】
0005428581.tif 000010
【図１０】
0005428581.tif 000011
【図１１】
0005428581.tif 000012
【図１２】
0005428581.tif 000013
【図１３】
0005428581.tif 000014
【図１４】
0005428581.tif 000015
【図１５】
0005428581.tif 000016
【図１６】
0005428581.tif 000017
【図１７】
0005428581.tif 000018
【図１８】
0005428581.tif 000019
【図１９】
0005428581.tif 000020