(57)【特許請求の範囲】
【請求項１】
それぞれ複数の仮想マシンを稼動させる複数の仮想マシンモニタと、
複数のノード装置と、少なくとも１つのメタデータサーバと、を含む分散ファイルシステムと、
を有する仮想マシンシステムであって、
前記メタデータサーバは、前記複数の仮想マシンモニタのそれぞれと前記複数のノード装置のそれぞれとの間の応答時間に関する情報を保持し、
前記複数の仮想マシンモニタのそれぞれは、利用者の仮想マシン作成要求に応答して、前記メタデータサーバと通信し、当該仮想マシンモニタとの前記応答時間が最短のノード装置の情報を取得し、前記応答時間が最短のノード装置に仮想マシンの仮想マシンイメージの作成を指示し、
前記複数のノード装置は、受信した前記仮想マシンイメージの作成指示に応答して、仮想マシンイメージを作成し、前記作成指示をした仮想マシンモニタに対応付けて前記作成した仮想マシンイメージを保持し、
前記複数の仮想マシンモニタのそれぞれは、前記利用者の仮想マシンイメージ複製要求に応答して、前記応答時間に関する情報に基づいて、当該仮想マシンイメージの複製先ノード装置を決定し、前記仮想マシンイメージを格納する複製元ノード装置に対して前記仮想マシンイメージの複製を指示し、
前記複製元ノード装置は、前記仮想マシンイメージを前記複製先ノード装置に送信して格納させることを特徴とする仮想マシンシステム。
【請求項２】
請求項１において、
前記仮想マシンモニタは、前記ノード装置に対して、前記仮想マシンイメージを差分形式で保持するように指示し、
前記ノード装置は、前記差分形式の保持の指示に応答して、過去の仮想マシンイメージと更新後の仮想マシンイメージとの差分イメージを作成して、当該差分イメージを保持することを特徴とする仮想マシンシステム。
【請求項３】
請求項１において、
前記仮想マシンモニタは、前記利用者の仮想マシンイメージ起動要求に応答して、前記メタデータサーバから前記応答時間に関する情報と前記複数のノード装置の構成情報を取得し、応答時間が最短のノード装置から順に前記仮想マシンイメージ起動要求に対応する仮想マシンイメージのデータを格納するノード装置を特定し、当該特定されたノード装置から所望の仮想マシンイメージを取得して利用可能にすることを特徴とする仮想マシンシステム。
【請求項４】
それぞれ複数の仮想マシンを稼動させる複数の仮想マシンモニタと、
複数のノード装置と、少なくとも１つのメタデータサーバと、を含む分散ファイルシステムと、
を有する仮想マシンシステムであって、
前記メタデータサーバは、前記複数の仮想マシンモニタのそれぞれと前記複数のノード装置のそれぞれとの間の応答時間に関する情報を保持し、
前記複数の仮想マシンモニタのそれぞれは、利用者の仮想マシン作成要求に応答して、前記メタデータサーバと通信し、当該仮想マシンモニタとの前記応答時間が最短のノード装置の情報を取得し、前記応答時間が最短のノード装置に仮想マシンの仮想マシンイメージの作成を指示し、
前記複数のノード装置は、受信した前記仮想マシンイメージの作成指示に応答して、仮想マシンイメージを作成し、前記作成指示をした仮想マシンモニタに対応付けて前記作成した仮想マシンイメージを保持し、
前記メタデータサーバは、さらに、前記複数の仮想マシンモニタのそれぞれと前記複数のノード装置のそれぞれとの間の帯域幅に関する情報を保持し、
前記仮想マシンモニタは、さらに、前記メタデータサーバから前記帯域幅に関する情報を取得し、前記最短の応答時間を示すノード装置が複数存在する場合に、前記帯域幅がより大きい値を示すノード装置に対して前記仮想マシンイメージの作成を指示することを特徴とする仮想マシンシステム。
【請求項５】
仮想マシンシステムの制御方法であって、
前記仮想マシンシステムは、
それぞれ複数の仮想マシンを稼動させる複数の仮想マシンモニタと、
複数のノード装置と、前記複数の仮想マシンモニタのそれぞれと前記複数のノード装置のそれぞれとの間の応答時間に関する情報を保持する少なくとも１つのメタデータサーバと、を含む分散ファイルシステムと、を有し、
前記制御方法は、
前記仮想マシンモニタが、利用者の仮想マシン作成要求に応答して、前記メタデータサーバと通信し、当該仮想マシンモニタとの前記応答時間が最短のノード装置の情報を取得するステップと、
前記仮想マシンモニタが、前記応答時間が最短のノード装置に仮想マシンの仮想マシンイメージの作成を指示するステップと、
前記ノード装置が、前記仮想マシンイメージの作成指示を受信するステップと、
前記ノード装置が、前記仮想マシンイメージの作成指示に応答して、仮想マシンイメージを作成し、前記作成指示をした仮想マシンモニタに対応付けて前記作成した仮想マシンイメージを保持するステップと、
前記仮想マシンモニタが、前記利用者の仮想マシンイメージ複製要求に応答して、前記応答時間に関する情報に基づいて、当該仮想マシンイメージの複製先ノード装置を決定するステップと、
前記仮想マシンモニタが、前記仮想マシンイメージを格納する複製元ノード装置に対して前記仮想マシンイメージの複製を指示するステップと、
前記複製元ノード装置が、前記仮想マシンイメージの複製指示に応答して、前記仮想マシンイメージを前記複製先ノード装置に送信して格納を指示するステップと、
を有することを特徴とする制御方法。
【請求項６】
請求項５において、
さらに、前記仮想マシンモニタが、前記ノード装置に対して、前記仮想マシンイメージを差分形式で保持するように指示するステップと、
前記ノード装置が、前記差分形式の保持の指示に応答して、過去の仮想マシンイメージと更新後の仮想マシンイメージとの差分イメージを作成して、当該差分イメージを保持するステップと、
を有することを特徴とする制御方法。
【請求項７】
請求項５において、
さらに、前記仮想マシンモニタが、前記利用者の仮想マシンイメージ起動要求に応答して、前記メタデータサーバから前記応答時間に関する情報と前記複数のノード装置の構成情報を取得するステップと、
前記仮想マシンモニタが、前記応答時間が最短のノード装置から順に前記仮想マシンイメージ起動要求に対応する仮想マシンイメージのデータを格納するノード装置を特定するステップと、
前記仮想マシンモニタが、前記特定されたノード装置から所望の仮想マシンイメージを取得して利用可能にするステップと、
を有することを特徴とする制御方法。
【請求項８】
仮想マシンシステムの制御方法であって、
前記仮想マシンシステムは、
それぞれ複数の仮想マシンを稼動させる複数の仮想マシンモニタと、
複数のノード装置と、前記複数の仮想マシンモニタのそれぞれと前記複数のノード装置のそれぞれとの間の応答時間に関する情報を保持する少なくとも１つのメタデータサーバと、を含む分散ファイルシステムと、を有し、
前記制御方法は、
前記仮想マシンモニタが、利用者の仮想マシン作成要求に応答して、前記メタデータサーバと通信し、当該仮想マシンモニタとの前記応答時間が最短のノード装置の情報を取得するステップと、
前記仮想マシンモニタが、前記応答時間が最短のノード装置に仮想マシンの仮想マシンイメージの作成を指示するステップと、
前記ノード装置が、前記仮想マシンイメージの作成指示を受信するステップと、
前記ノード装置が、前記仮想マシンイメージの作成指示に応答して、仮想マシンイメージを作成し、前記作成指示をした仮想マシンモニタに対応付けて前記作成した仮想マシンイメージを保持するステップと、を有し、
前記メタデータサーバは、さらに、前記複数の仮想マシンモニタのそれぞれと前記複数のノード装置のそれぞれとの間の帯域幅に関する情報を保持し、
前記応答時間が最短のノード装置の情報を取得するステップにおいて、前記仮想マシンモニタが、さらに、前記メタデータサーバから前記帯域幅に関する情報を取得し、
前記仮想マシンイメージの作成を指示するステップにおいて、前記最短の応答時間を示すノード装置が複数存在する場合に、前記帯域幅がより大きい値を示すノード装置に対して前記仮想マシンイメージの作成を指示することを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシンシステム、及びその制御方法に関し、例えば、データを複数ノードに格納する分散ファイルシステムに仮想マシンイメージと仮想マシンイメージに対する更新データを格納するための技術に関するものである。
【背景技術】
【０００２】
近年、クラウドの発展により、利用者が必要時に必要な量のコンピュータリソースを安価に借りることができるようになってきた。クラウドを支える基盤技術は仮想化技術である。物理マシンにハイパーバイザと呼ばれる仮想マシンモニタを導入することで、１台の物理マシン上で異なるＯＳを複数台同時に実行させることが可能となり、物理マシンのコンピュータリソースを有用に活用できるようになる。ハイパーバイザ上で動作するマシンのことを仮想マシンと呼ぶ。ハイパーバイザの一例として、ＶＭｗａｒｅ（登録商標）社のＥＳＸやＥＳＸｉがある。
【０００３】
上記の様な物理マシンを多数配置し運用している施設はデータセンタと呼ばれている。１つのデータセンタは、地理的には一箇所であるため、例えばその地域が地震等の災害にあった場合、データセンタ内のデータが失われてしまう可能性がある。そこで、地理的に離れた複数のデータセンタに、データの複製を保持するなどして、災害による被害からの復旧を図るディザスタリカバリが良く用いられている。また、災害まで行かなくとも、データセンタの計画停止やネットワーク障害などで、データセンタにアクセスする手段が失われる場合もある。その場合でもディザスタリカバリにより復旧できる。
【０００４】
一方、分散ファイルシステムと呼ばれるファイルシステムがあり、これはネットワーク上の複数ノードをまたがるファイルシステムであって、それぞれのノードにデータを分散して保存できることが特徴である。分散ファイルシステムの一例として、非特許文献１のＣｏｄａがある。この様な分散ファイルシステムを用いることで、データセンタ間にまたがったファイルシステムを構成できる。また、分散ファイルシステムには複製（レプリカ）機能があり、同一ファイルを複数もしくは全てのノードに持つこともできる。各ハイパーバイザがこのファイルシステム内に仮想マシンを保存するようにすれば、上記の複製作業が何度も発生することは避けられる。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Ｃｏｄａ：http://www.coda.cs.cmu.edu/
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、一般に、仮想マシンはハイパーバイザが搭載されている物理マシンに接続したストレージに保存されている。従って、あるデータセンタ内の仮想マシンを別のデータセンタ内に複製するには、複製元のデータセンタから２つのデータセンタが共有しているストレージ装置に複製をまず格納する。そして、共有のストレージ装置から複製先のデータセンタに複製を格納する。このため、何度も複製を繰り返すことになるという問題がある。
【０００７】
また、非特許文献１に示されるような従来のファイルシステム（分散ファイルシステム）を用いれば、複製を繰り返す必要はなくなるが、当該ファイルシステムは、各ノードを同等に扱っており、ネットワーク的に距離が近いことや、ノードまでのネットワーク帯域を考えていない。従って、ハイパーバイザが分散ファイルシステム内に仮想マシンを保存する場合、ハイパーバイザから高速にアクセスできるノードに仮想マシンが保存されることを保証できない。また、各ノードを同等に扱っているため、仮想マシンの複製が、ハイパーバイザからネットワーク的に遠いノードに保存されてしまうという問題もある。現実的には、ハイパーバイザからネットワーク的に近い順にいくつかのノードに複製が配置されることが望ましい。
【０００８】
本発明はこのような状況に鑑みてなされたものであり、分散ファイルシステム内のノードであって、ネットワーク的な距離が近い（応答時間が早い）ノードに仮想マシンイメージの情報を格納して、仮想マシンの起動を迅速に実行できるようにするための技術を提供するものである。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明では、仮想マシンシステムは、それぞれ複数の仮想マシンを稼動させる複数の仮想マシンモニタと、複数のノード装置と、少なくとも１つのメタデータサーバと、を含む分散ファイルシステムと、を有している。メタデータサーバは、複数の仮想マシンモニタのそれぞれと複数のノード装置のそれぞれとの間の応答時間に関する情報を管理している。複数の仮想マシンモニタのそれぞれは、利用者の仮想マシン作成要求に応答して、メタデータサーバと通信し、当該仮想マシンモニタとの応答時間が最短のノード装置の情報を取得し、応答時間が最短のノード装置に仮想マシンの仮想マシンイメージの作成を指示する。仮想マシンイメージの作成指示を受信したノード装置は、当該指示に応答して、仮想マシンイメージを作成し、作成指示をした仮想マシンモニタに対応付けて作成した仮想マシンイメージを管理する。
【発明の効果】
【００１０】
本発明によれば、仮想マシンの起動を迅速に実行できるようになる。
なお、上述した以外の課題、構成及び効果は、以下の本発明を実施するための形態および添付図面によって明らかになるものである。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態に係わるシステム（仮想マシンシステム）の概略構成を示す図である。
【図２】本発明の実施形態に係わる仮想マシンモニタの内部構成を示す図である。
【図３】本発明の実施形態に係わるノード装置の内部構成を示す図である。
【図４】本発明の実施形態に係わるメタデータサーバの内部構成を示す図である。
【図５】本発明の実施形態に係わるスコアファイルの構成例を示す図である。
【図６】本発明の実施形態に係わるノード構成ファイルの構成例を示す図である。
【図７】本発明の実施形態に係わる仮想マシンイメージ構成ファイルの構成例を示す図である。
【図８】本発明の実施形態に係わるスコアファイルを作成する処理を説明するためのフローチャートである。
【図９】本発明の実施形態に係わる新規仮想マシンイメージを作成する処理を説明するためのフローチャートである。
【図１０】本発明の実施形態に係わる仮想マシンイメージを複製する処理を説明するためのフローチャートである。
【図１１】本発明の実施形態に係わる既存仮想マシンイメージを起動する処理を説明するためのフローチャートである。
【発明を実施するための形態】
【００１２】
本発明は、データを複数ノード装置に格納する分散ファイルシステムを用いて、仮想マシンイメージと仮想マシンイメージに対する更新データを効率的に格納するための技術に関する。
【００１３】
以下、添付図面を参照して本発明の実施形態について説明する。ただし、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。また、各図において共通の構成については同一の参照番号が付されている。
【００１４】
なお、以後の説明では「テーブル」を用いて本発明の各種情報を説明するが、これら情報は必ずしもテーブルによるデータ構造で表現されていなくても良く、リスト、ＤＢ、キュー等のデータ構造やそれ以外で表現されていても良い。そのため、データ構造に依存しないことを示すために「テーブル」、「リスト」、「ＤＢ」、「キュー」等について単に「情報」と呼ぶことがある。
【００１５】
また、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ＩＤ」という表現を用いることが可能であり、これらについてはお互いに置換が可能である。
【００１６】
以後の説明では「プログラム」を主語として説明を行うが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート（通信制御装置）を用いながら行うため、プロセッサを主語とした説明としてもよい。また、プログラムを主語として開示された処理は管理サーバ等の計算機、情報処理装置が行う処理としてもよい。プログラムの一部または全ては専用ハードウェアで実現してもよく、また、モジュール化されていても良い。各種プログラムはプログラム配布サーバや記憶メディアによって各計算機にインストールされてもよい。
【００１７】
＜システム構成＞
図１は、本発明の実施形態による仮想マシンシステムの概略構成を示す図である。仮想マシンシステムは、少なくとも１つの仮想マシンモニタ１０１（１０１Ａ及び１０１Ｂ）と、分散ファイルシステム１０２と、を有している。
【００１８】
仮想マシンモニタ１０１（１０１Ａ・１０１Ｂ）は、ネットワーク（例えば、インターネット等のＷＡＮ）を介して分散ファイルシステム１０２に接続されている。また、仮想マシンモニタ１０１は、１つの物理マシン上で複数の仮想マシンを動作させることを可能にするソフトウェアを有するコンピュータで構成される。
【００１９】
分散ファイルシステム１０２は、ノード１０３（１０３Ａ・１０３Ｂ・１０３Ｃ）とメタデータサーバ１０４とを含むシステムである。ここで、分散ファイルシステム１０２において、ノード１０３とメタデータサーバ１０４とは、ネットワーク（例えば、ＷＡＮやＬＡＮ）を介して相互に接続されている。
【００２０】
また、分散ファイルシステム１０２は、ファイルなどのデータを複数のノード１０３に分散して保存することを特徴とするファイルシステムである。分散ファイルシステム１０２を構成するメタデータサーバ１０４は、分散ファイルシステムに保存したファイルがどのノードに保存されているかなどを管理することを特徴としたコンピュータである。
【００２１】
なお、ネットワークの詳細は図示していないが、情報の伝達が可能な任意の接続形態で良く、有線・無線のどちらか一方、もしくは両方で構成される。
【００２２】
また、図１では、２つの仮想マシンモニタ１０１と、３つのノード１０３と、１つのメタデータサーバ１０４のみが示されているが、これらの設置数は任意でよい。
【００２３】
＜仮想マシンモニタの構成＞
図２は、本発明の実施形態による仮想マシンモニタ１０１の内部構成を示す図である。仮想マシンモニタ１０１は、メモリ２００と、メモリ２００内の各プログラムを動作させるためのＣＰＵ２１０と、ネットワーク接続デバイス２２０と、を有するコンピュータである。また、仮想マシンモニタ１０１は、ハイパーバイザ（ソフトウェア）を有し、その上に複数の仮想マシンを動作させている。
【００２４】
メモリ２００は、スコアファイル処理プログラム２０１と、ノード処理プログラム２０２と、複製処理プログラム２０３と、ネットワーク性能測定プログラム２０４と、仮想マシンモニタプログラム２０５と、を格納している。
【００２５】
なお、図２の仮想マシンモニタ１０１には、メモリ２００、ＣＰＵ２１０、ネットワーク接続デバイス２２０のほか、記憶装置、出力装置（ディスプレイやプリンタ等）や入力指示装置（キーボードやマウス等）など一般的なコンピュータを構成するために必要な装置が、必要に応じて含まれるものであることに注意すべきである。
【００２６】
スコアファイル処理プログラム２０１は、メタデータサーバとの間で、後述するスコアファイル４３２の送受信を実行したり、スコアファイル作成処理を実行したりするためのソフトウェアである。
【００２７】
ノード処理プログラム２０２は、メタデータサーバ１０４から、後述するノード構成ファイル４３１の受信処理を行うためのソフトウェアである。複製処理プログラム２０３は、あるノード１０３に保存されているファイルの複製を別ノード１０３に保存する処理をするためのソフトウェアである。例えば、仮想マシンを作成したときに複製処理が実行される。
【００２８】
ネットワーク性能測定プログラム２０４は、仮想マシンモニタ１０１とノード１０３との間のネットワーク性能の測定を行うためのソフトウェアである。ネットワーク性能の測定手順に関しては、後述する。仮想マシンモニタプログラム２０５は、１つの物理マシン上で複数の仮想マシンを動作させることを可能にするためのソフトウェアである。
【００２９】
ネットワーク接続デバイス２２０は、仮想マシンモニタ１０１とネットワークとを接続する装置であり、例えばＮＩＣ（ネットワーク・インタフェース・カード）が該当する。
【００３０】
＜ノードの構成＞
図３は、本発明の実施形態によるノード１０３の内部構成を示す図である。ノード１０３は、メモリ３００と、メモリ３００が格納する各プログラムを動作させるＣＰＵ３１０と、ネットワーク接続デバイス３２０と、記憶装置３３０と、を有するコンピュータで構成される。
【００３１】
メモリ３００は、ファイル操作プログラム３０１と、複製処理プログラム３０２と、ネットワーク性能測定プログラム３０３と、を格納している。
【００３２】
記憶装置３３０は、仮想マシンイメージ構成ファイル３３１と、仮想マシンイメージ３３２と、差分イメージ３３３と、を格納している。
【００３３】
ファイル操作プログラム３０１は、記憶装置３３０に格納された各種ファイルの読み書き処理をするためのソフトウェアである。複製処理プログラム３０２は、仮想マシンモニタ１０１からの複製指示を受けたファイルを、ノード１０３の記憶装置３３０に保存する処理をするためのソフトウェアである。
【００３４】
ネットワーク性能測定プログラム３０３は、仮想マシンモニタ１０１のネットワーク性能測定プログラム２０４と同一の処理を行う。
【００３５】
ネットワーク接続デバイス３２０は、ノード１０３とネットワークとを接続する装置であり、例えばＮＩＣ（ネットワーク・インタフェース・カード）が該当する。
【００３６】
記憶装置３３０は、情報を記憶または読み出す装置であり、例えばＨＤＤ（ハード・ディスク・ドライブ）が該当する。
【００３７】
＜メタデータサーバの構成＞
図４は、本発明の実施形態によるメタデータサーバ１０４の内部構成を示す図である。メタデータサーバ１０４は、メモリ４００と、メモリ４００が格納する各プログラムを動作させるＣＰＵ４１０と、ネットワーク接続デバイス４２０と、記憶装置４３０と、を有するコンピュータである。
【００３８】
メモリ４００は、スコアファイル処理プログラム４０１と、ノード管理プログラム４０２と、を格納している。
【００３９】
記憶装置４３０は、ノード構成ファイル４３１と、スコアファイル４３２と、を格納している。
【００４０】
スコアファイル処理プログラム４０１は、各仮想マシンモニタ１０１との間で、後述するスコアファイル４３２の送受信処理を行うためのソフトウェアである。
【００４１】
ノード管理プログラム４０２は、各仮想マシンモニタ１０１との間で、後述するノード構成ファイル４３１の送受信処理を行うためのソフトウェアである。
【００４２】
ネットワーク接続デバイス４２０は、メタデータサーバ１０４とネットワークとを接続するための装置であり、例えばＮＩＣ（ネットワーク・インタフェース・カード）が該当する。
【００４３】
記憶装置４３０は、情報を記憶または読み出す装置であり、例えばＨＤＤ（ハード・ディスク・ドライブ）が該当する。
【００４４】
＜スコアファイルの構造図＞
図５は、メタデータサーバ１０４が管理するスコアファイル４３２の構成例を示す図である。図５ではスコアファイルのテーブルが１つしか示されていないが、実際には、仮想マシンモニタ１０１（１０１Ａ、１０１Ｂ、・・・）毎に作成され、管理されている。
【００４５】
スコアファイル４３２は、ノード識別子５０１と、ＲＴＴ５０２と、帯域幅５０３と、を構成項目として含んでいる。
【００４６】
ノード識別子５０１は、ノード１０３を一意に識別可能な文字列であり、例えばＦＱＤＮ（完全修飾ドメイン名）やＧＵＩＤ（グローバル一意識別子）が該当する。
【００４７】
ＲＴＴ５０２は、ＲＴＴ（ラウンド・トリップ・タイム）である。ＲＴＴとは、ネットワーク上のある地点（仮想マシンモニタ）から別の地点（各ノード）へデータを送信してから、データの確認応答が返ってくるまでの時間（単位は秒）である。ＲＴＴの値は、例えば、所定期間内に数回測定動作を行い、その平均値とて表すことができる。
【００４８】
帯域幅５０３は、ネットワーク上のある地点から別の地点へデータを送信した場合に、１秒当たりに送ることが可能なビット数（単位はビット／秒）である。帯域幅も、ＲＴＴ同様に、所定期間において数回測定して得られた値の平均値とすることが可能である。
【００４９】
なお、各情報の単位は定義されているため、スコアファイル４３２には数値のみが記載され、単位は含まれない。
【００５０】
＜ノード構成ファイルの構造図＞
図６は、メタデータサーバ１０４が管理するノード構成ファイル４３１の構成例を示す図である。ノード構成ファイル４３１は、ノード識別子６０１と、ＩＰアドレス６０２と、を構成項目として含んでいる。
【００５１】
ノード識別子６０１は、図５のノード識別子５０１と同じものである。ＩＰアドレス６０２は、各のノードのＩＰアドレスを示す情報であり、インターネット・プロトコルで用いられるアドレスであって、データを送受信する装置を識別するために用いられる。現在、ＩＰアドレスとして、ＩＰｖ４とＩＰｖ６の２つが用いられているが、本発明はいずれかに限定されるわけではない。
【００５２】
なお、以下の説明ではＩＰｖ４を用いて説明する。例えば、図６に示したノード構成ファイル４３１の構成例は、２行で構成されている。ノード識別子６０１が「Ｘ」でＩＰアドレス６０２が「１９２．０．２．１」、ノード識別子６０１が「Ｙ」でＩＰアドレス６０２が「１９２．０．２．２」である。
【００５３】
＜仮想マシンイメージ構成ファイルの構造図＞
図７は、各ノード１０３が管理する仮想マシンイメージ構成ファイル３３１の構成例を示す図である。仮想マシンイメージ構成ファイル３３１は、仮想マシンイメージファイル名７０１と、差分フラグ７０２と、差分イメージファイル名７０３と、を構成項目として含んでいる。
【００５４】
仮想マシンイメージファイル名７０１は、仮想マシンイメージ３３２を一意に特定するための文字列である。
【００５５】
差分フラグ７０２は、仮想マシンイメージ３３２に対する書き込みを、仮想マシンイメージ３３２に上書きするか、差分イメージル３３３に書き込むかを判定するためのフラグである。当該フラグが「ＴＲＵＥ」である場合は、差分イメージル３３３にデータが書き込まれる。当該フラグが「ＦＡＬＳＥ」である場合は、仮想マシンイメージ３３２にデータが書き込まれる。
【００５６】
差分イメージファイル名７０３は、差分イメージル３３３を一意に特定するための文字列である。差分イメージファイル名７０３に文字列が書き込まれていない場合は、差分イメージ３３３が作成されていないことを表す。ここで、差分イメージ３３３は、初期のＯＳと、所定期間使用されて追加や変更があったＯＳとの差分イメージを含む情報である。
【００５７】
＜仮想マシンモニタに関連する各処理の内容＞
続いて、仮想マシンモニタ１０１が上述した分散ファイルシステムを使用する際の処理について説明する。まず、ネットワーク的に近い概念を表すスコアファイル４３２の作成処理について述べ、その後に、仮想マシンの新規作成処理、仮想マシンの複製処理、既存仮想マシンの起動処理について説明する。
【００５８】
（１）スコアファイルの作成処理
図８は、仮想マシンモニタ１０１が分散ファイルシステム１０２を構成するノード１０３との間のネットワーク性能を測定し、スコアファイル４３２を作成する処理を説明するためのフローチャートである。スコアファイル４３２は、例えば、仮想マシン作成時、仮想マシン作成後所定期間経過後、新しいノード追加時等に作成される。
【００５９】
仮想マシンモニタ１０１の管理者が、仮想マシンモニタ１０１のキーボード（図示せず）などの入力指示装置を使い、スコアファイル処理プログラム２０１に対してスコアファイル作成指示をすると、仮想マシンモニタ１０１のスコアファイル処理プログラム２０１は、その指示を受け付ける（Ｓ８０１）。
【００６０】
作成指示を受けたスコアファイル処理プログラム２０１は、メタデータサーバ１０４のノード管理プログラム４０２に対してノード構成ファイル４３１の送信するように指示（取得指示）をする（Ｓ８０２）。
【００６１】
測定対象のノード１０３のノード管理プログラム４０２は、記憶装置４３０に格納されているノード構成ファイル４３１を読み出し、それを要求先の仮想マシンモニタ１０１のスコアファイル処理プログラム２０１に対して送信する（Ｓ８０３）。
【００６２】
スコアファイル処理プログラム２０１は、ネットワーク性能測定プログラム２０４に対してネットワーク性能測定指示をする（Ｓ８０４）。
【００６３】
仮想マシンモニタ１０１のネットワーク性能測定プログラム２０４は、ネットワーク性能測定指示に応答して、ステップＳ８０３で取得したノード構成ファイル４３１から、ノード識別子６０１とＩＰアドレス６０２を取り出す（Ｓ８０５）。
【００６４】
そして、ネットワーク性能測定プログラム２０４と、取得したノード識別子６０１に対応するノード１０３のネットワーク性能測定プログラム３０３とが、ネットワーク通信を行うことで、ＲＴＴと帯域幅を測定する（Ｓ８０６）。ここで、ＲＴＴと帯域幅の測定方法についてそれぞれ説明する。ＲＴＴの測定は、ネットワーク性能測定プログラム２０４が、ノード１０３のＩＰアドレス６０２を用いてネットワーク性能測定プログラム３０３に対してｐｉｎｇコマンドを発行することにより可能となる。ｐｉｎｇコマンドは、ＬｉｎｕｘやＷｉｎｄｏｗｓといった現在広く普及しているＯＳに一般的に付属しているものである。また、帯域幅については、ネットワーク性能測定プログラム２０４が、ノード１０３のＩＰアドレス６０２を用いてネットワーク性能測定プログラム３０３に対して、データを送信し、１秒当たりに何ビット送信できたかを確認することで測定できる。例えば、ネットワーク性能測定プログラム３０３に対して、１ギガビットのデータを送信するのに１秒かかったのであれば、帯域幅は１ギガビット／秒ということになる。
【００６５】
次に、スコアファイル処理プログラム２０１は、ステップＳ８０５とステップＳ８０６で得られた、ノード識別子６０１、ＲＴＴ、帯域幅からスコアファイル４３２を作成する（Ｓ８０７）。また、スコアファイル処理プログラム２０１は、図５のスコアファイル４３２のノード識別子、ＲＴＴ、及び帯域幅の組の情報について、ＲＴＴに関して行を昇順に（ＲＴＴが早い順に）ソートし、同一ＲＴＴの行が２つ以上あれば、それらの行については帯域幅に関して降順にソートをする。或いは、同一ＲＴＴの行について再度ＲＴＴを測定し、優劣を決定しても良い。
【００６６】
次に、スコアファイル処理プログラム２０１は、メタデータサーバ１０４のスコアファイル処理プログラム４０１に対して、ステップＳ８０７で作成したスコアファイル４３２を、送信して記憶装置４３０に格納するよう指示する（Ｓ８０８）。
【００６７】
メタデータサーバ１０４のスコアファイル処理プログラム４０１は、受信したスコアファイル４３２を記憶装置４３０に格納する（Ｓ８０９）。
以上で、図８のフローチャートの説明を終える。
【００６８】
（２）新規仮想マシンイメージの作成処理
図９は、仮想マシンモニタ１０１の利用者の要求に応じて、仮想マシンモニタ１０１が仮想マシンイメージ３３２を作成する処理を説明するためのフローチャートである。当該処理は、例えば、利用者が新たに仮想マシンをインストールしたときに実行される。
【００６９】
まず、仮想マシンモニタ１０１の利用者が、仮想マシンモニタプログラム２０５に対して仮想マシンの作成指示をすると、仮想マシンモニタプログラム２０５がその指示を受け付ける（Ｓ９０１）。
【００７０】
仮想マシンモニタプログラム２０５は、スコアファイル処理プログラム２０１に対してスコアファイル４３２の取得指示をする（Ｓ９０２）。
【００７１】
スコアファイル処理プログラム２０１は、メタデータサーバ１０４のスコアファイル処理プログラム４０１に対してスコアファイル４３２を送信するように指示（取得指示）をする（Ｓ９０３）。
【００７２】
メタデータサーバ１０４のスコアファイル処理プログラム４０１は、記憶装置４３０に格納されているスコアファイル４３２を読み出し、それを取得要求した仮想マシンモニタ１０１のスコアファイル処理プログラム２０１に対して送信し、スコアファイル処理プログラム２０１がスコアファイル４３２を受信する（Ｓ９０４）。
【００７３】
続いて、仮想マシンモニタプログラム２０５は、ノード処理プログラム２０２に対してノード構成ファイル４３１の取得指示をする（Ｓ９０５）。
【００７４】
ノード処理プログラム２０２は、メタデータサーバ１０４のノード管理プログラム４０２に対してノード構成ファイル４３１を送信するように指示（取得指示）をする（Ｓ９０６）。
【００７５】
メタデータサーバ１０４のノード管理プログラム４０２は、記憶装置４３０に格納されているノード構成ファイル４３１を読み出し、仮想マシンモニタ１０１のノード処理プログラム２０２に対して送信し、ノード処理プログラム２０２がノード構成ファイル４３１を受信する（Ｓ９０７）。
【００７６】
仮想マシンモニタプログラム２０５は、ステップＳ９０４で受信したスコアファイル４３２の一行目に記載されているノード識別子５０１を取得し、ステップＳ９０７受信したノード構成ファイル４３１と比較することで、ノード識別子５０１に対応したＩＰアドレス６０２を取得する（Ｓ９０８）。
【００７７】
さらに、仮想マシンモニタプログラム２０５は、ステップＳ９０８で取得したＩＰアドレス６０２に基づき、当該ＩＰアドレス６０２に対応するノード１０３のファイル操作プログラム３０１に対して、仮想マシンイメージ構成ファイル３３１と仮想マシンイメージ３３２の作成指示をする（Ｓ９０９）。
【００７８】
対象のノード１０３のファイル操作プログラム３０１は、仮想マシンイメージ３３２の名前を決め（例えば、「ａ．ｖｍｄｋ」）、ファイルの生成を行う。その後、当該ファイル操作プログラム３０１は、仮想マシンイメージ構成ファイル３３１の仮想マシンイメージファイル名７０１に、例えば「ａ．ｖｍｄｋ」を記載し、差分フラグ７０２に「ＦＡＬＳＥ」を記載する（Ｓ９１０）。
【００７９】
そして、仮想マシンモニタ１０１の利用者の指示に従って、仮想マシンモニタプログラム２０５は、取得した仮想マシンイメージを用いてＯＳのインストールを行う（Ｓ９１１）。
【００８０】
次に、仮想マシンモニタ１０１の利用者が仮想マシンイメージ３３２を差分形式にするよう指示すると、仮想マシンモニタプログラム２０５はその指示を受け付ける（Ｓ９１２）。
【００８１】
仮想マシンモニタプログラム２０５は、対象のノード１０３のファイル操作プログラム３０１に対し、仮想マシンイメージ構成ファイル３３１の差分フラグ７０２を「ＴＲＵＥ」に変更するように指示する（Ｓ９１３）。
以上で、図９のフローチャートの説明を終える。
【００８２】
（３）仮想マシンイメージの複製処理
図１０は、仮想マシンモニタ１０１の利用者の要求に応答して、仮想マシンイメージ３３２を複製する処理を説明するためのフローチャートである。ここでは、複製処理が仮想マシン作成直後に実行されることを想定しているので、仮想マシンモニタはスコアファイルを保持していることが前提となっている。仮想マシン作成直後でなければ、メタデータサーバ１０４に問い合わせる等して、スコアファイルを取得することが必要となる。
【００８３】
利用者が、図９のステップＳ９０４で取得したスコアファイル４３２の第１行目を除き第２行目から、仮想マシンイメージ構成ファイル３３１と仮想マシンイメージ３３２との複製先ノードを、任意の数だけ選ぶと、そのノードの情報を複製処理プログラム２０３が取得する（Ｓ１００１）。第１行目に記載されているノード１０３には、図９のフローチャートで示したように、仮想マシンイメージ構成ファイル３３１と仮想マシンイメージ３３２とが既に保存されている。つまり、一行目のノードにはオリジナルデータが既に格納されている。ここでは、第２行目と第３行目を選択したと想定して説明する。
【００８４】
利用者が、図９のフローチャートで作成した仮想マシンイメージ構成ファイル３３１と仮想マシンイメージ３３２とを、第２行目と第３行目に記載されているノード１０３に複製を作るように指示すると、仮想マシンモニタ１０１の複製処理プログラム２０３はその指示を受け付け、第１行目に記載されているノード１０３の複製処理プログラム３０２に複製指示をする（Ｓ１００２）。
【００８５】
第１行目に記載されているノード１０３の複製処理プログラム３０２は、仮想マシンイメージ構成ファイル３３１と仮想マシンイメージ３３２とを、第２行目と第３行目に記載されているノード１０３の複製処理プログラム３０２に対して送信し、複製指示する（Ｓ１００３）。
【００８６】
第２行目と第３行目に記載されているノード１０３の複製処理プログラム３０２は、受信した仮想マシンイメージ構成ファイル３３１と仮想マシンイメージ３３２とを、記憶装置３３０に保存する（Ｓ１００４）。
以上で図１０のフローチャートの説明を終える。
【００８７】
（４）既存仮想マシンイメージの起動処理
図１１は、仮想マシンモニタ１０１の利用者の要求に応答して、仮想マシンイメージ３３２を起動する処理を説明するためのフローチャートである。
【００８８】
利用者が仮想マシンイメージ３３２の起動を指示すると、仮想マシンモニタプログラム２０５は、その指示を受け付ける（Ｓ１１０１）。
【００８９】
仮想マシンモニタプログラム２０５は、スコアファイル４３２とノード構成ファイル４３１とを、図９に示したフローチャート内のステップＳ９０２からステップＳ９０７と同様の手順で取得する（Ｓ１１０２）。
【００９０】
続いて、仮想マシンモニタプログラム２０５は、スコアファイル４３２の第ｉ行目から順番以下のループ処理をする（Ｓ１１０３）。尚、最初はｉ＝１とし、スコアファイル４３２は全部でＮ行あるものとする。
【００９１】
仮想マシンモニタプログラム２０５は、スコアファイル４３２の第ｉ行目に記載のノード識別子５０１と、ノード構成ファイル４３１のノード識別子６０１を比較し、ノード識別子５０１に対応するＩＰアドレス６０２を取得する（Ｓ１１０４）。
【００９２】
そして、仮想マシンモニタプログラム２０５は、対象のＩＰアドレス６０２に対応したノード１０３のファイル操作プログラム３０１に対し、利用者が起動する仮想マシンイメージ３３２が存在するか問い合わせる（Ｓ１１０５）。
【００９３】
問合せを受けたファイル操作プログラム３０１は、問合せに対応する仮想マシンイメージ３３２が存在するか否かを確認する（Ｓ１１０６）。
【００９４】
ステップＳ１１０５で仮想マシンイメージ３３２が存在しないと判断された場合は、次のスコアファイルの行について（ｉを１つ増やして）ステップＳ１１０３以降の処理が繰り返される。また、ネットワーク障害などにより、ノード１０３とのネットワーク接続ができない場合も、次のスコアファイルの行についての処理に移行する（ｉを１つ増やして処理がステップＳ１１０３に戻る）。なお、仮想マシンイメージは、仮想マシンモニタ１０１とネットワーク距離が一番近いノードから取得するようになっているので、例えば、より近いネットワーク距離に新しいノードが新規追加されたような場合には、その新規ノードには仮想マシンイメージが格納されていない。このような場合には、ステップＳ１１０６では、当該ノードには所望の仮想イメージが存在しないと判断されることになる。また、仮想マシンイメージは、なるべく仮想マシンモニタ１０１からネットワーク距離が近いノードに格納しておくことが望ましいため、適当なタイミングで（例えば、図１１の処理終了後に）、よりネットワーク距離が近い新規追加のノードに改めて仮想イメージを格納しなおす処理を実行しても良い。
【００９５】
仮想マシンモニタプログラム２０５は、ｉを１つ増やした後、ｉ＞Ｎの場合はループ処理を終了する。
【００９６】
ステップＳ１１０５で仮想マシンイメージ３３２が存在すると判断された場合は、対象ノードのファイル操作プログラム３０１は、仮想マシンイメージ構成ファイル３３１の中で、該当する仮想マシンイメージファイル名７０１に対する差分イメージファイル名７０３が空か否か調べる。空の場合は、ファイル操作プログラム３０１は、新規に差分イメージル３３３を作成し、そのファイル名を差分イメージファイル名７０３に記載する。存在する場合は、ファイル操作プログラム３０１は、その差分イメージ３３３を利用する（Ｓ１１０７）。
【００９７】
続いて、仮想マシンモニタプログラム２０５は、仮想マシンイメージ３３２と差分イメージル３３３とに基づいて、仮想マシンを起動させる（Ｓ１１０８）。仮想マシンイメージ３３２への書き込みは、差分イメージル３３３に書き込まれると共に、書き込んだデータは図１０で説明した複製を作成したノード１０３の記憶部３３０内の差分イメージル３３３にも書き込まれる。
以上で図１１のフローチャートの説明を終える。
【００９８】
＜適用例＞
以下に、本発明の適用例を述べる。ここでは、ノード１０３が３つ（１０３Ａ・１０３Ｂ・１０３Ｃ）、仮想マシンモニタ１０１が１つ、メタデータサーバ４０４が１つの場合を想定する。
【００９９】
まず、図８で説明した処理に基づいてスコアファイル４３２が作成される。ここでは、スコアファイルの１行目のノード識別子５０１がノード１０３Ｂ、２行目のノード識別子５０１がノード１０３Ｃ、３行目のノード識別子５０１がノード１０３Ａだったと仮定する。
【０１００】
図９の処理に基づき、新規仮想マシンを作成する場合は、ノード１０３Ｂ内の記憶装置３３０に仮想マシンイメージ構成ファイル３３１と仮想マシンイメージ３３２とが保存される。
【０１０１】
次に、図１０の処理に基づき、作成した仮想マシンイメージ構成ファイル３３１と仮想マシンイメージ３３２の複製が作成される。ここでは、ノード１０３Ｃとノード１０３Ａの記憶装置３３０に複製を作成したとする。
【０１０２】
このとき、ノード１０３Ｂとノード１０３Ｃのネットワーク接続デバイス３２０が破損し、ネットワークによる通信が行えなくなったと仮定する。この場合、仮想マシンを起動する処理を示した図１１に従い、ノード１０３Ｂとノード１０３Ｃへはネットワーク的にアクセスできないため、ノード１０３Ａ内の仮想マシンイメージ構成ファイル３３１と仮想マシンイメージ３３２とを用いて、仮想マシンを起動することができる。つまり、仮想マシンを起動する際は、ネットワーク的に近いノードから順に起動を試み、起動可能なノード１０３を発見した時点で、そのノード１０３から仮想マシンを起動することになる。
【０１０３】
＜まとめ＞
複数の仮想マシンモニタのそれぞれは、利用者の仮想マシン作成要求を受けた場合、当該要求に応答して、メタデータサーバと通信し、当該仮想マシンモニタとの応答時間が最短のノード装置の情報を取得する。そして、当該仮想マシンモニタは、応答時間が最短のノード装置に仮想マシンの仮想マシンイメージの作成を指示する。一方、複数のノード装置は、仮想マシンイメージの作成指示を受信した場合、その指示に応答して、仮想マシンイメージを作成し、作成指示をした仮想マシンモニタに対応付けて作成した仮想マシンイメージを管理する。このようにすることにより、仮想マシンイメージをネットワーク的に近いノード装置に格納することができるので、仮想マシンモニタから仮想マシンを起動する場合は、ネットワーク的に近いノードから順番に起動可能か確認し、なるべくネットワーク的に近いノードから仮想マシンを起動できるようにある。よって、仮想マシンの起動が効率的に実行することが可能となる。
【０１０４】
複数の仮想マシンモニタのそれぞれは、利用者の仮想マシンイメージ複製要求を受けた場合、当該複製要求に応答して、応答時間に関する情報に基づいて、当該仮想マシンイメージの複製先ノード装置を決定する。そして、当該仮想マシンモニタは、仮想マシンイメージを格納する複製元ノード装置に対して仮想マシンイメージの複製を指示する。複製元ノード装置は、複製指示に応答して、仮想マシンイメージを複製先ノード装置に送信して格納させるようにする。このようにすることにより、複製元のノード装置が故障しても複製先のノード装置から仮想マシンイメージを取得することができるようになる。なお、複製先のノード装置として、複製元のノード装置の次に応答時間が短い値を示すノード装置を選択することができる。これにより、仮想マシンの起動の効率性を担保することが可能となる。また、予備として、複製元のノード装置と物理的に所定距離以上離れたノード装置に複製を格納するようにしても良い。このようにすることにより、災害が発生した場合などのリカバリにも確実に対応することが可能となる。
【０１０５】
また、ノード装置は、仮想マシンモニタから仮想マシンイメージを差分形式で管理するための指示を受信すると、その指示に応答して、過去の仮想マシンイメージと更新後の仮想マシンイメージとの差分を作成して、当該差分イメージを管理する。このようにすることにより、ノード装置におけるリソースの節減と、ネットワーク通信時のリソースの負荷を軽減することが可能となる。
【０１０６】
メタデータサーバは、さらに、複数の仮想マシンモニタのそれぞれと複数のノード装置のそれぞれとの間の帯域幅に関する情報を管理する。この場合、仮想マシンモニタは、さらに、メタデータサーバから帯域幅に関する情報を取得する。そして、仮想マシンモニタは、最短の応答時間を示すノード装置が複数存在する場合に、帯域幅がより大きい値を示すノード装置に対して仮想マシンイメージの作成を指示する。このようにすることにより、より効率的に仮想マシンの起動を可能とするノード装置を特定することができるようになる。
【０１０７】
なお、本発明は、実施形態そのままに限定されるものではなく、実施段階では、その要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【０１０８】
また、実施形態で示された各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現しても良い。また、上記各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現しても良い。各機能等を実現するプログラム、テーブル、ファイル等の情報は、メモリやハードディスク、ＳＳＤ（Solid State Drive）等の記録或いは記憶装置、またはＩＣカード、ＳＤカード、ＤＶＤ等の記録或いは記憶媒体に格納することができる。
【０１０９】
さらに、上述の実施形態において、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていても良い。
【符号の説明】
【０１１０】
１０１・・・仮想マシンモニタ
１０２・・・分散ファイルシステム
１０３・・・ノード
１０４・・・メタデータサーバ
２００・・・メモリ
２０１・・・スコアファイル処理プログラム（スコアファイル処理部）
２０２・・・ノード処理プログラム（ノード処理部）
２０３・・・複製処理プログラム（複製処理部）
２０４・・・ネットワーク性能測定プログラム（ネットワーク性能測定部）
２０５・・・仮想マシンモニタプログラム（仮想マシンモニタ部）
２１０・・・ＣＰＵ
２２０・・・ネットワーク接続デバイス
３００・・・メモリ
３０１・・・ファイル操作プログラム（ファイル操作部）
３０２・・・複製処理プログラム（複製処理部）
３０３・・・ネットワーク性能測定プログラム（ネットワーク性能測定部）
３１０・・・ＣＰＵ
３２０・・・ネットワーク接続デバイス
３３０・・・記憶装置
３３１・・・仮想マシンイメージ構成ファイル
３３２・・・仮想マシンイメージ
３３３・・・差分イメージ
４００・・・メモリ
４０１・・・スコアファイル処理プログラム（スコアファイル処理部）
４０２・・・ノード管理プログラム（ノード管理部）
４１０・・・ＣＰＵ
４２０・・・ネットワーク接続デバイス
４３０・・・記憶装置
４３１・・・ノード構成ファイル
４３２・・・スコアファイル
５０１・・・ノード識別子
５０２・・・ＲＴＴ
５０３・・・帯域幅
６０１・・・ノード識別子
６０２・・・ＩＰアドレス
７０１・・・仮想マシンイメージファイル名
７０２・・・差分フラグ
７０３・・・差分イメージファイル名
【図１】
0005608551.tif 000002
【図２】
0005608551.tif 000003
【図３】
0005608551.tif 000004
【図４】
0005608551.tif 000005
【図５】
0005608551.tif 000006
【図６】
0005608551.tif 000007
【図７】
0005608551.tif 000008
【図８】
0005608551.tif 000009
【図９】
0005608551.tif 000010
【図１０】
0005608551.tif 000011
【図１１】
0005608551.tif 000012