説明

仮想マシンシステム、及びその制御方法

【課題】より効率的に仮想マシンを起動できるようにする。
【解決手段】複数の仮想マシンモニタのそれぞれは、利用者の仮想マシン作成要求を受けた場合、当該要求に応答して、メタデータサーバと通信し、当該仮想マシンモニタとの応答時間が最短のノード装置の情報を取得する。そして、当該仮想マシンモニタは、応答時間が最短のノード装置に仮想マシンの仮想マシンイメージの作成を指示する。一方、複数のノード装置は、仮想マシンイメージの作成指示を受信した場合、その指示に応答して、仮想マシンイメージを作成し、作成指示をした仮想マシンモニタに対応付けて作成した仮想マシンイメージを管理する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、仮想マシンシステム、及びその制御方法に関し、例えば、データを複数ノードに格納する分散ファイルシステムに仮想マシンイメージと仮想マシンイメージに対する更新データを格納するための技術に関するものである。
【背景技術】
【0002】
近年、クラウドの発展により、利用者が必要時に必要な量のコンピュータリソースを安価に借りることができるようになってきた。クラウドを支える基盤技術は仮想化技術である。物理マシンにハイパーバイザと呼ばれる仮想マシンモニタを導入することで、1台の物理マシン上で異なるOSを複数台同時に実行させることが可能となり、物理マシンのコンピュータリソースを有用に活用できるようになる。ハイパーバイザ上で動作するマシンのことを仮想マシンと呼ぶ。ハイパーバイザの一例として、VMware(登録商標)社のESXやESXiがある。
【0003】
上記の様な物理マシンを多数配置し運用している施設はデータセンタと呼ばれている。1つのデータセンタは、地理的には一箇所であるため、例えばその地域が地震等の災害にあった場合、データセンタ内のデータが失われてしまう可能性がある。そこで、地理的に離れた複数のデータセンタに、データの複製を保持するなどして、災害による被害からの復旧を図るディザスタリカバリが良く用いられている。また、災害まで行かなくとも、データセンタの計画停止やネットワーク障害などで、データセンタにアクセスする手段が失われる場合もある。その場合でもディザスタリカバリにより復旧できる。
【0004】
一方、分散ファイルシステムと呼ばれるファイルシステムがあり、これはネットワーク上の複数ノードをまたがるファイルシステムであって、それぞれのノードにデータを分散して保存できることが特徴である。分散ファイルシステムの一例として、非特許文献1のCodaがある。この様な分散ファイルシステムを用いることで、データセンタ間にまたがったファイルシステムを構成できる。また、分散ファイルシステムには複製(レプリカ)機能があり、同一ファイルを複数もしくは全てのノードに持つこともできる。各ハイパーバイザがこのファイルシステム内に仮想マシンを保存するようにすれば、上記の複製作業が何度も発生することは避けられる。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】Coda:http://www.coda.cs.cmu.edu/
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、一般に、仮想マシンはハイパーバイザが搭載されている物理マシンに接続したストレージに保存されている。従って、あるデータセンタ内の仮想マシンを別のデータセンタ内に複製するには、複製元のデータセンタから2つのデータセンタが共有しているストレージ装置に複製をまず格納する。そして、共有のストレージ装置から複製先のデータセンタに複製を格納する。このため、何度も複製を繰り返すことになるという問題がある。
【0007】
また、非特許文献1に示されるような従来のファイルシステム(分散ファイルシステム)を用いれば、複製を繰り返す必要はなくなるが、当該ファイルシステムは、各ノードを同等に扱っており、ネットワーク的に距離が近いことや、ノードまでのネットワーク帯域を考えていない。従って、ハイパーバイザが分散ファイルシステム内に仮想マシンを保存する場合、ハイパーバイザから高速にアクセスできるノードに仮想マシンが保存されることを保証できない。また、各ノードを同等に扱っているため、仮想マシンの複製が、ハイパーバイザからネットワーク的に遠いノードに保存されてしまうという問題もある。現実的には、ハイパーバイザからネットワーク的に近い順にいくつかのノードに複製が配置されることが望ましい。
【0008】
本発明はこのような状況に鑑みてなされたものであり、分散ファイルシステム内のノードであって、ネットワーク的な距離が近い(応答時間が早い)ノードに仮想マシンイメージの情報を格納して、仮想マシンの起動を迅速に実行できるようにするための技術を提供するものである。
【課題を解決するための手段】
【0009】
上記課題を解決するために、本発明では、仮想マシンシステムは、それぞれ複数の仮想マシンを稼動させる複数の仮想マシンモニタと、複数のノード装置と、少なくとも1つのメタデータサーバと、を含む分散ファイルシステムと、を有している。メタデータサーバは、複数の仮想マシンモニタのそれぞれと複数のノード装置のそれぞれとの間の応答時間に関する情報を管理している。複数の仮想マシンモニタのそれぞれは、利用者の仮想マシン作成要求に応答して、メタデータサーバと通信し、当該仮想マシンモニタとの応答時間が最短のノード装置の情報を取得し、応答時間が最短のノード装置に仮想マシンの仮想マシンイメージの作成を指示する。仮想マシンイメージの作成指示を受信したノード装置は、当該指示に応答して、仮想マシンイメージを作成し、作成指示をした仮想マシンモニタに対応付けて作成した仮想マシンイメージを管理する。
【発明の効果】
【0010】
本発明によれば、仮想マシンの起動を迅速に実行できるようになる。
なお、上述した以外の課題、構成及び効果は、以下の本発明を実施するための形態および添付図面によって明らかになるものである。
【図面の簡単な説明】
【0011】
【図1】本発明の実施形態に係わるシステム(仮想マシンシステム)の概略構成を示す図である。
【図2】本発明の実施形態に係わる仮想マシンモニタの内部構成を示す図である。
【図3】本発明の実施形態に係わるノード装置の内部構成を示す図である。
【図4】本発明の実施形態に係わるメタデータサーバの内部構成を示す図である。
【図5】本発明の実施形態に係わるスコアファイルの構成例を示す図である。
【図6】本発明の実施形態に係わるノード構成ファイルの構成例を示す図である。
【図7】本発明の実施形態に係わる仮想マシンイメージ構成ファイルの構成例を示す図である。
【図8】本発明の実施形態に係わるスコアファイルを作成する処理を説明するためのフローチャートである。
【図9】本発明の実施形態に係わる新規仮想マシンイメージを作成する処理を説明するためのフローチャートである。
【図10】本発明の実施形態に係わる仮想マシンイメージを複製する処理を説明するためのフローチャートである。
【図11】本発明の実施形態に係わる既存仮想マシンイメージを起動する処理を説明するためのフローチャートである。
【発明を実施するための形態】
【0012】
本発明は、データを複数ノード装置に格納する分散ファイルシステムを用いて、仮想マシンイメージと仮想マシンイメージに対する更新データを効率的に格納するための技術に関する。
【0013】
以下、添付図面を参照して本発明の実施形態について説明する。ただし、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。また、各図において共通の構成については同一の参照番号が付されている。
【0014】
なお、以後の説明では「テーブル」を用いて本発明の各種情報を説明するが、これら情報は必ずしもテーブルによるデータ構造で表現されていなくても良く、リスト、DB、キュー等のデータ構造やそれ以外で表現されていても良い。そのため、データ構造に依存しないことを示すために「テーブル」、「リスト」、「DB」、「キュー」等について単に「情報」と呼ぶことがある。
【0015】
また、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ID」という表現を用いることが可能であり、これらについてはお互いに置換が可能である。
【0016】
以後の説明では「プログラム」を主語として説明を行うが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート(通信制御装置)を用いながら行うため、プロセッサを主語とした説明としてもよい。また、プログラムを主語として開示された処理は管理サーバ等の計算機、情報処理装置が行う処理としてもよい。プログラムの一部または全ては専用ハードウェアで実現してもよく、また、モジュール化されていても良い。各種プログラムはプログラム配布サーバや記憶メディアによって各計算機にインストールされてもよい。
【0017】
<システム構成>
図1は、本発明の実施形態による仮想マシンシステムの概略構成を示す図である。仮想マシンシステムは、少なくとも1つの仮想マシンモニタ101(101A及び101B)と、分散ファイルシステム102と、を有している。
【0018】
仮想マシンモニタ101(101A・101B)は、ネットワーク(例えば、インターネット等のWAN)を介して分散ファイルシステム102に接続されている。また、仮想マシンモニタ101は、1つの物理マシン上で複数の仮想マシンを動作させることを可能にするソフトウェアを有するコンピュータで構成される。
【0019】
分散ファイルシステム102は、ノード103(103A・103B・103C)とメタデータサーバ104とを含むシステムである。ここで、分散ファイルシステム102において、ノード103とメタデータサーバ104とは、ネットワーク(例えば、WANやLAN)を介して相互に接続されている。
【0020】
また、分散ファイルシステム102は、ファイルなどのデータを複数のノード103に分散して保存することを特徴とするファイルシステムである。分散ファイルシステム102を構成するメタデータサーバ104は、分散ファイルシステムに保存したファイルがどのノードに保存されているかなどを管理することを特徴としたコンピュータである。
【0021】
なお、ネットワークの詳細は図示していないが、情報の伝達が可能な任意の接続形態で良く、有線・無線のどちらか一方、もしくは両方で構成される。
【0022】
また、図1では、2つの仮想マシンモニタ101と、3つのノード103と、1つのメタデータサーバ104のみが示されているが、これらの設置数は任意でよい。
【0023】
<仮想マシンモニタの構成>
図2は、本発明の実施形態による仮想マシンモニタ101の内部構成を示す図である。仮想マシンモニタ101は、メモリ200と、メモリ200内の各プログラムを動作させるためのCPU210と、ネットワーク接続デバイス220と、を有するコンピュータである。また、仮想マシンモニタ101は、ハイパーバイザ(ソフトウェア)を有し、その上に複数の仮想マシンを動作させている。
【0024】
メモリ200は、スコアファイル処理プログラム201と、ノード処理プログラム202と、複製処理プログラム203と、ネットワーク性能測定プログラム204と、仮想マシンモニタプログラム205と、を格納している。
【0025】
なお、図2の仮想マシンモニタ101には、メモリ200、CPU210、ネットワーク接続デバイス220のほか、記憶装置、出力装置(ディスプレイやプリンタ等)や入力指示装置(キーボードやマウス等)など一般的なコンピュータを構成するために必要な装置が、必要に応じて含まれるものであることに注意すべきである。
【0026】
スコアファイル処理プログラム201は、メタデータサーバとの間で、後述するスコアファイル432の送受信を実行したり、スコアファイル作成処理を実行したりするためのソフトウェアである。
【0027】
ノード処理プログラム202は、メタデータサーバ104から、後述するノード構成ファイル431の受信処理を行うためのソフトウェアである。複製処理プログラム203は、あるノード103に保存されているファイルの複製を別ノード103に保存する処理をするためのソフトウェアである。例えば、仮想マシンを作成したときに複製処理が実行される。
【0028】
ネットワーク性能測定プログラム204は、仮想マシンモニタ101とノード103との間のネットワーク性能の測定を行うためのソフトウェアである。ネットワーク性能の測定手順に関しては、後述する。仮想マシンモニタプログラム205は、1つの物理マシン上で複数の仮想マシンを動作させることを可能にするためのソフトウェアである。
【0029】
ネットワーク接続デバイス220は、仮想マシンモニタ101とネットワークとを接続する装置であり、例えばNIC(ネットワーク・インタフェース・カード)が該当する。
【0030】
<ノードの構成>
図3は、本発明の実施形態によるノード103の内部構成を示す図である。ノード103は、メモリ300と、メモリ300が格納する各プログラムを動作させるCPU310と、ネットワーク接続デバイス320と、記憶装置330と、を有するコンピュータで構成される。
【0031】
メモリ300は、ファイル操作プログラム301と、複製処理プログラム302と、ネットワーク性能測定プログラム303と、を格納している。
【0032】
記憶装置330は、仮想マシンイメージ構成ファイル331と、仮想マシンイメージ332と、差分イメージ333と、を格納している。
【0033】
ファイル操作プログラム301は、記憶装置330に格納された各種ファイルの読み書き処理をするためのソフトウェアである。複製処理プログラム302は、仮想マシンモニタ101からの複製指示を受けたファイルを、ノード103の記憶装置330に保存する処理をするためのソフトウェアである。
【0034】
ネットワーク性能測定プログラム303は、仮想マシンモニタ101のネットワーク性能測定プログラム204と同一の処理を行う。
【0035】
ネットワーク接続デバイス320は、ノード103とネットワークとを接続する装置であり、例えばNIC(ネットワーク・インタフェース・カード)が該当する。
【0036】
記憶装置330は、情報を記憶または読み出す装置であり、例えばHDD(ハード・ディスク・ドライブ)が該当する。
【0037】
<メタデータサーバの構成>
図4は、本発明の実施形態によるメタデータサーバ104の内部構成を示す図である。メタデータサーバ104は、メモリ400と、メモリ400が格納する各プログラムを動作させるCPU410と、ネットワーク接続デバイス420と、記憶装置430と、を有するコンピュータである。
【0038】
メモリ400は、スコアファイル処理プログラム401と、ノード管理プログラム402と、を格納している。
【0039】
記憶装置430は、ノード構成ファイル431と、スコアファイル432と、を格納している。
【0040】
スコアファイル処理プログラム401は、各仮想マシンモニタ101との間で、後述するスコアファイル432の送受信処理を行うためのソフトウェアである。
【0041】
ノード管理プログラム402は、各仮想マシンモニタ101との間で、後述するノード構成ファイル431の送受信処理を行うためのソフトウェアである。
【0042】
ネットワーク接続デバイス420は、メタデータサーバ104とネットワークとを接続するための装置であり、例えばNIC(ネットワーク・インタフェース・カード)が該当する。
【0043】
記憶装置430は、情報を記憶または読み出す装置であり、例えばHDD(ハード・ディスク・ドライブ)が該当する。
【0044】
<スコアファイルの構造図>
図5は、メタデータサーバ104が管理するスコアファイル432の構成例を示す図である。図5ではスコアファイルのテーブルが1つしか示されていないが、実際には、仮想マシンモニタ101(101A、101B、・・・)毎に作成され、管理されている。
【0045】
スコアファイル432は、ノード識別子501と、RTT502と、帯域幅503と、を構成項目として含んでいる。
【0046】
ノード識別子501は、ノード103を一意に識別可能な文字列であり、例えばFQDN(完全修飾ドメイン名)やGUID(グローバル一意識別子)が該当する。
【0047】
RTT502は、RTT(ラウンド・トリップ・タイム)である。RTTとは、ネットワーク上のある地点(仮想マシンモニタ)から別の地点(各ノード)へデータを送信してから、データの確認応答が返ってくるまでの時間(単位は秒)である。RTTの値は、例えば、所定期間内に数回測定動作を行い、その平均値とて表すことができる。
【0048】
帯域幅503は、ネットワーク上のある地点から別の地点へデータを送信した場合に、1秒当たりに送ることが可能なビット数(単位はビット/秒)である。帯域幅も、RTT同様に、所定期間において数回測定して得られた値の平均値とすることが可能である。
【0049】
なお、各情報の単位は定義されているため、スコアファイル432には数値のみが記載され、単位は含まれない。
【0050】
<ノード構成ファイルの構造図>
図6は、メタデータサーバ104が管理するノード構成ファイル431の構成例を示す図である。ノード構成ファイル431は、ノード識別子601と、IPアドレス602と、を構成項目として含んでいる。
【0051】
ノード識別子601は、図5のノード識別子501と同じものである。IPアドレス602は、各のノードのIPアドレスを示す情報であり、インターネット・プロトコルで用いられるアドレスであって、データを送受信する装置を識別するために用いられる。現在、IPアドレスとして、IPv4とIPv6の2つが用いられているが、本発明はいずれかに限定されるわけではない。
【0052】
なお、以下の説明ではIPv4を用いて説明する。例えば、図6に示したノード構成ファイル431の構成例は、2行で構成されている。ノード識別子601が「X」でIPアドレス602が「192.0.2.1」、ノード識別子601が「Y」でIPアドレス602が「192.0.2.2」である。
【0053】
<仮想マシンイメージ構成ファイルの構造図>
図7は、各ノード103が管理する仮想マシンイメージ構成ファイル331の構成例を示す図である。仮想マシンイメージ構成ファイル331は、仮想マシンイメージファイル名701と、差分フラグ702と、差分イメージファイル名703と、を構成項目として含んでいる。
【0054】
仮想マシンイメージファイル名701は、仮想マシンイメージ332を一意に特定するための文字列である。
【0055】
差分フラグ702は、仮想マシンイメージ332に対する書き込みを、仮想マシンイメージ332に上書きするか、差分イメージル333に書き込むかを判定するためのフラグである。当該フラグが「TRUE」である場合は、差分イメージル333にデータが書き込まれる。当該フラグが「FALSE」である場合は、仮想マシンイメージ332にデータが書き込まれる。
【0056】
差分イメージファイル名703は、差分イメージル333を一意に特定するための文字列である。差分イメージファイル名703に文字列が書き込まれていない場合は、差分イメージ333が作成されていないことを表す。ここで、差分イメージ333は、初期のOSと、所定期間使用されて追加や変更があったOSとの差分イメージを含む情報である。
【0057】
<仮想マシンモニタに関連する各処理の内容>
続いて、仮想マシンモニタ101が上述した分散ファイルシステムを使用する際の処理について説明する。まず、ネットワーク的に近い概念を表すスコアファイル432の作成処理について述べ、その後に、仮想マシンの新規作成処理、仮想マシンの複製処理、既存仮想マシンの起動処理について説明する。
【0058】
(1)スコアファイルの作成処理
図8は、仮想マシンモニタ101が分散ファイルシステム102を構成するノード103との間のネットワーク性能を測定し、スコアファイル432を作成する処理を説明するためのフローチャートである。スコアファイル432は、例えば、仮想マシン作成時、仮想マシン作成後所定期間経過後、新しいノード追加時等に作成される。
【0059】
仮想マシンモニタ101の管理者が、仮想マシンモニタ101のキーボード(図示せず)などの入力指示装置を使い、スコアファイル処理プログラム201に対してスコアファイル作成指示をすると、仮想マシンモニタ101のスコアファイル処理プログラム201は、その指示を受け付ける(S801)。
【0060】
作成指示を受けたスコアファイル処理プログラム201は、メタデータサーバ104のノード管理プログラム402に対してノード構成ファイル431の送信するように指示(取得指示)をする(S802)。
【0061】
測定対象のノード103のノード管理プログラム402は、記憶装置430に格納されているノード構成ファイル431を読み出し、それを要求先の仮想マシンモニタ101のスコアファイル処理プログラム201に対して送信する(S803)。
【0062】
スコアファイル処理プログラム201は、ネットワーク性能測定プログラム204に対してネットワーク性能測定指示をする(S804)。
【0063】
仮想マシンモニタ101のネットワーク性能測定プログラム204は、ネットワーク性能測定指示に応答して、ステップS803で取得したノード構成ファイル431から、ノード識別子601とIPアドレス602を取り出す(S805)。
【0064】
そして、ネットワーク性能測定プログラム204と、取得したノード識別子601に対応するノード103のネットワーク性能測定プログラム303とが、ネットワーク通信を行うことで、RTTと帯域幅を測定する(S806)。ここで、RTTと帯域幅の測定方法についてそれぞれ説明する。RTTの測定は、ネットワーク性能測定プログラム204が、ノード103のIPアドレス602を用いてネットワーク性能測定プログラム303に対してpingコマンドを発行することにより可能となる。pingコマンドは、LinuxやWindowsといった現在広く普及しているOSに一般的に付属しているものである。また、帯域幅については、ネットワーク性能測定プログラム204が、ノード103のIPアドレス602を用いてネットワーク性能測定プログラム303に対して、データを送信し、1秒当たりに何ビット送信できたかを確認することで測定できる。例えば、ネットワーク性能測定プログラム303に対して、1ギガビットのデータを送信するのに1秒かかったのであれば、帯域幅は1ギガビット/秒ということになる。
【0065】
次に、スコアファイル処理プログラム201は、ステップS805とステップS806で得られた、ノード識別子601、RTT、帯域幅からスコアファイル432を作成する(S807)。また、スコアファイル処理プログラム201は、図5のスコアファイル432のノード識別子、RTT、及び帯域幅の組の情報について、RTTに関して行を昇順に(RTTが早い順に)ソートし、同一RTTの行が2つ以上あれば、それらの行については帯域幅に関して降順にソートをする。或いは、同一RTTの行について再度RTTを測定し、優劣を決定しても良い。
【0066】
次に、スコアファイル処理プログラム201は、メタデータサーバ104のスコアファイル処理プログラム401に対して、ステップS807で作成したスコアファイル432を、送信して記憶装置430に格納するよう指示する(S808)。
【0067】
メタデータサーバ104のスコアファイル処理プログラム401は、受信したスコアファイル432を記憶装置430に格納する(S809)。
以上で、図8のフローチャートの説明を終える。
【0068】
(2)新規仮想マシンイメージの作成処理
図9は、仮想マシンモニタ101の利用者の要求に応じて、仮想マシンモニタ101が仮想マシンイメージ332を作成する処理を説明するためのフローチャートである。当該処理は、例えば、利用者が新たに仮想マシンをインストールしたときに実行される。
【0069】
まず、仮想マシンモニタ101の利用者が、仮想マシンモニタプログラム205に対して仮想マシンの作成指示をすると、仮想マシンモニタプログラム205がその指示を受け付ける(S901)。
【0070】
仮想マシンモニタプログラム205は、スコアファイル処理プログラム201に対してスコアファイル432の取得指示をする(S902)。
【0071】
スコアファイル処理プログラム201は、メタデータサーバ104のスコアファイル処理プログラム401に対してスコアファイル432を送信するように指示(取得指示)をする(S903)。
【0072】
メタデータサーバ104のスコアファイル処理プログラム401は、記憶装置430に格納されているスコアファイル432を読み出し、それを取得要求した仮想マシンモニタ101のスコアファイル処理プログラム201に対して送信し、スコアファイル処理プログラム201がスコアファイル432を受信する(S904)。
【0073】
続いて、仮想マシンモニタプログラム205は、ノード処理プログラム202に対してノード構成ファイル431の取得指示をする(S905)。
【0074】
ノード処理プログラム202は、メタデータサーバ104のノード管理プログラム402に対してノード構成ファイル431を送信するように指示(取得指示)をする(S906)。
【0075】
メタデータサーバ104のノード管理プログラム402は、記憶装置430に格納されているノード構成ファイル431を読み出し、仮想マシンモニタ101のノード処理プログラム202に対して送信し、ノード処理プログラム202がノード構成ファイル431を受信する(S907)。
【0076】
仮想マシンモニタプログラム205は、ステップS904で受信したスコアファイル432の一行目に記載されているノード識別子501を取得し、ステップS907受信したノード構成ファイル431と比較することで、ノード識別子501に対応したIPアドレス602を取得する(S908)。
【0077】
さらに、仮想マシンモニタプログラム205は、ステップS908で取得したIPアドレス602に基づき、当該IPアドレス602に対応するノード103のファイル操作プログラム301に対して、仮想マシンイメージ構成ファイル331と仮想マシンイメージ332の作成指示をする(S909)。
【0078】
対象のノード103のファイル操作プログラム301は、仮想マシンイメージ332の名前を決め(例えば、「a.vmdk」)、ファイルの生成を行う。その後、当該ファイル操作プログラム301は、仮想マシンイメージ構成ファイル331の仮想マシンイメージファイル名701に、例えば「a.vmdk」を記載し、差分フラグ702に「FALSE」を記載する(S910)。
【0079】
そして、仮想マシンモニタ101の利用者の指示に従って、仮想マシンモニタプログラム205は、取得した仮想マシンイメージを用いてOSのインストールを行う(S911)。
【0080】
次に、仮想マシンモニタ101の利用者が仮想マシンイメージ332を差分形式にするよう指示すると、仮想マシンモニタプログラム205はその指示を受け付ける(S912)。
【0081】
仮想マシンモニタプログラム205は、対象のノード103のファイル操作プログラム301に対し、仮想マシンイメージ構成ファイル331の差分フラグ702を「TRUE」に変更するように指示する(S913)。
以上で、図9のフローチャートの説明を終える。
【0082】
(3)仮想マシンイメージの複製処理
図10は、仮想マシンモニタ101の利用者の要求に応答して、仮想マシンイメージ332を複製する処理を説明するためのフローチャートである。ここでは、複製処理が仮想マシン作成直後に実行されることを想定しているので、仮想マシンモニタはスコアファイルを保持していることが前提となっている。仮想マシン作成直後でなければ、メタデータサーバ104に問い合わせる等して、スコアファイルを取得することが必要となる。
【0083】
利用者が、図9のステップS904で取得したスコアファイル432の第1行目を除き第2行目から、仮想マシンイメージ構成ファイル331と仮想マシンイメージ332との複製先ノードを、任意の数だけ選ぶと、そのノードの情報を複製処理プログラム203が取得する(S1001)。第1行目に記載されているノード103には、図9のフローチャートで示したように、仮想マシンイメージ構成ファイル331と仮想マシンイメージ332とが既に保存されている。つまり、一行目のノードにはオリジナルデータが既に格納されている。ここでは、第2行目と第3行目を選択したと想定して説明する。
【0084】
利用者が、図9のフローチャートで作成した仮想マシンイメージ構成ファイル331と仮想マシンイメージ332とを、第2行目と第3行目に記載されているノード103に複製を作るように指示すると、仮想マシンモニタ101の複製処理プログラム203はその指示を受け付け、第1行目に記載されているノード103の複製処理プログラム302に複製指示をする(S1002)。
【0085】
第1行目に記載されているノード103の複製処理プログラム302は、仮想マシンイメージ構成ファイル331と仮想マシンイメージ332とを、第2行目と第3行目に記載されているノード103の複製処理プログラム302に対して送信し、複製指示する(S1003)。
【0086】
第2行目と第3行目に記載されているノード103の複製処理プログラム302は、受信した仮想マシンイメージ構成ファイル331と仮想マシンイメージ332とを、記憶装置330に保存する(S1004)。
以上で図10のフローチャートの説明を終える。
【0087】
(4)既存仮想マシンイメージの起動処理
図11は、仮想マシンモニタ101の利用者の要求に応答して、仮想マシンイメージ332を起動する処理を説明するためのフローチャートである。
【0088】
利用者が仮想マシンイメージ332の起動を指示すると、仮想マシンモニタプログラム205は、その指示を受け付ける(S1101)。
【0089】
仮想マシンモニタプログラム205は、スコアファイル432とノード構成ファイル431とを、図9に示したフローチャート内のステップS902からステップS907と同様の手順で取得する(S1102)。
【0090】
続いて、仮想マシンモニタプログラム205は、スコアファイル432の第i行目から順番以下のループ処理をする(S1103)。尚、最初はi=1とし、スコアファイル432は全部でN行あるものとする。
【0091】
仮想マシンモニタプログラム205は、スコアファイル432の第i行目に記載のノード識別子501と、ノード構成ファイル431のノード識別子601を比較し、ノード識別子501に対応するIPアドレス602を取得する(S1104)。
【0092】
そして、仮想マシンモニタプログラム205は、対象のIPアドレス602に対応したノード103のファイル操作プログラム301に対し、利用者が起動する仮想マシンイメージ332が存在するか問い合わせる(S1105)。
【0093】
問合せを受けたファイル操作プログラム301は、問合せに対応する仮想マシンイメージ332が存在するか否かを確認する(S1106)。
【0094】
ステップS1105で仮想マシンイメージ332が存在しないと判断された場合は、次のスコアファイルの行について(iを1つ増やして)ステップS1103以降の処理が繰り返される。また、ネットワーク障害などにより、ノード103とのネットワーク接続ができない場合も、次のスコアファイルの行についての処理に移行する(iを1つ増やして処理がステップS1103に戻る)。なお、仮想マシンイメージは、仮想マシンモニタ101とネットワーク距離が一番近いノードから取得するようになっているので、例えば、より近いネットワーク距離に新しいノードが新規追加されたような場合には、その新規ノードには仮想マシンイメージが格納されていない。このような場合には、ステップS1106では、当該ノードには所望の仮想イメージが存在しないと判断されることになる。また、仮想マシンイメージは、なるべく仮想マシンモニタ101からネットワーク距離が近いノードに格納しておくことが望ましいため、適当なタイミングで(例えば、図11の処理終了後に)、よりネットワーク距離が近い新規追加のノードに改めて仮想イメージを格納しなおす処理を実行しても良い。
【0095】
仮想マシンモニタプログラム205は、iを1つ増やした後、i>Nの場合はループ処理を終了する。
【0096】
ステップS1105で仮想マシンイメージ332が存在すると判断された場合は、対象ノードのファイル操作プログラム301は、仮想マシンイメージ構成ファイル331の中で、該当する仮想マシンイメージファイル名701に対する差分イメージファイル名703が空か否か調べる。空の場合は、ファイル操作プログラム301は、新規に差分イメージル333を作成し、そのファイル名を差分イメージファイル名703に記載する。存在する場合は、ファイル操作プログラム301は、その差分イメージ333を利用する(S1107)。
【0097】
続いて、仮想マシンモニタプログラム205は、仮想マシンイメージ332と差分イメージル333とに基づいて、仮想マシンを起動させる(S1108)。仮想マシンイメージ332への書き込みは、差分イメージル333に書き込まれると共に、書き込んだデータは図10で説明した複製を作成したノード103の記憶部330内の差分イメージル333にも書き込まれる。
以上で図11のフローチャートの説明を終える。
【0098】
<適用例>
以下に、本発明の適用例を述べる。ここでは、ノード103が3つ(103A・103B・103C)、仮想マシンモニタ101が1つ、メタデータサーバ404が1つの場合を想定する。
【0099】
まず、図8で説明した処理に基づいてスコアファイル432が作成される。ここでは、スコアファイルの1行目のノード識別子501がノード103B、2行目のノード識別子501がノード103C、3行目のノード識別子501がノード103Aだったと仮定する。
【0100】
図9の処理に基づき、新規仮想マシンを作成する場合は、ノード103B内の記憶装置330に仮想マシンイメージ構成ファイル331と仮想マシンイメージ332とが保存される。
【0101】
次に、図10の処理に基づき、作成した仮想マシンイメージ構成ファイル331と仮想マシンイメージ332の複製が作成される。ここでは、ノード103Cとノード103Aの記憶装置330に複製を作成したとする。
【0102】
このとき、ノード103Bとノード103Cのネットワーク接続デバイス320が破損し、ネットワークによる通信が行えなくなったと仮定する。この場合、仮想マシンを起動する処理を示した図11に従い、ノード103Bとノード103Cへはネットワーク的にアクセスできないため、ノード103A内の仮想マシンイメージ構成ファイル331と仮想マシンイメージ332とを用いて、仮想マシンを起動することができる。つまり、仮想マシンを起動する際は、ネットワーク的に近いノードから順に起動を試み、起動可能なノード103を発見した時点で、そのノード103から仮想マシンを起動することになる。
【0103】
<まとめ>
複数の仮想マシンモニタのそれぞれは、利用者の仮想マシン作成要求を受けた場合、当該要求に応答して、メタデータサーバと通信し、当該仮想マシンモニタとの応答時間が最短のノード装置の情報を取得する。そして、当該仮想マシンモニタは、応答時間が最短のノード装置に仮想マシンの仮想マシンイメージの作成を指示する。一方、複数のノード装置は、仮想マシンイメージの作成指示を受信した場合、その指示に応答して、仮想マシンイメージを作成し、作成指示をした仮想マシンモニタに対応付けて作成した仮想マシンイメージを管理する。このようにすることにより、仮想マシンイメージをネットワーク的に近いノード装置に格納することができるので、仮想マシンモニタから仮想マシンを起動する場合は、ネットワーク的に近いノードから順番に起動可能か確認し、なるべくネットワーク的に近いノードから仮想マシンを起動できるようにある。よって、仮想マシンの起動が効率的に実行することが可能となる。
【0104】
複数の仮想マシンモニタのそれぞれは、利用者の仮想マシンイメージ複製要求を受けた場合、当該複製要求に応答して、応答時間に関する情報に基づいて、当該仮想マシンイメージの複製先ノード装置を決定する。そして、当該仮想マシンモニタは、仮想マシンイメージを格納する複製元ノード装置に対して仮想マシンイメージの複製を指示する。複製元ノード装置は、複製指示に応答して、仮想マシンイメージを複製先ノード装置に送信して格納させるようにする。このようにすることにより、複製元のノード装置が故障しても複製先のノード装置から仮想マシンイメージを取得することができるようになる。なお、複製先のノード装置として、複製元のノード装置の次に応答時間が短い値を示すノード装置を選択することができる。これにより、仮想マシンの起動の効率性を担保することが可能となる。また、予備として、複製元のノード装置と物理的に所定距離以上離れたノード装置に複製を格納するようにしても良い。このようにすることにより、災害が発生した場合などのリカバリにも確実に対応することが可能となる。
【0105】
また、ノード装置は、仮想マシンモニタから仮想マシンイメージを差分形式で管理するための指示を受信すると、その指示に応答して、過去の仮想マシンイメージと更新後の仮想マシンイメージとの差分を作成して、当該差分イメージを管理する。このようにすることにより、ノード装置におけるリソースの節減と、ネットワーク通信時のリソースの負荷を軽減することが可能となる。
【0106】
メタデータサーバは、さらに、複数の仮想マシンモニタのそれぞれと複数のノード装置のそれぞれとの間の帯域幅に関する情報を管理する。この場合、仮想マシンモニタは、さらに、メタデータサーバから帯域幅に関する情報を取得する。そして、仮想マシンモニタは、最短の応答時間を示すノード装置が複数存在する場合に、帯域幅がより大きい値を示すノード装置に対して仮想マシンイメージの作成を指示する。このようにすることにより、より効率的に仮想マシンの起動を可能とするノード装置を特定することができるようになる。
【0107】
なお、本発明は、実施形態そのままに限定されるものではなく、実施段階では、その要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【0108】
また、実施形態で示された各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現しても良い。また、上記各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現しても良い。各機能等を実現するプログラム、テーブル、ファイル等の情報は、メモリやハードディスク、SSD(Solid State Drive)等の記録或いは記憶装置、またはICカード、SDカード、DVD等の記録或いは記憶媒体に格納することができる。
【0109】
さらに、上述の実施形態において、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていても良い。
【符号の説明】
【0110】
101・・・仮想マシンモニタ
102・・・分散ファイルシステム
103・・・ノード
104・・・メタデータサーバ
200・・・メモリ
201・・・スコアファイル処理プログラム(スコアファイル処理部)
202・・・ノード処理プログラム(ノード処理部)
203・・・複製処理プログラム(複製処理部)
204・・・ネットワーク性能測定プログラム(ネットワーク性能測定部)
205・・・仮想マシンモニタプログラム(仮想マシンモニタ部)
210・・・CPU
220・・・ネットワーク接続デバイス
300・・・メモリ
301・・・ファイル操作プログラム(ファイル操作部)
302・・・複製処理プログラム(複製処理部)
303・・・ネットワーク性能測定プログラム(ネットワーク性能測定部)
310・・・CPU
320・・・ネットワーク接続デバイス
330・・・記憶装置
331・・・仮想マシンイメージ構成ファイル
332・・・仮想マシンイメージ
333・・・差分イメージ
400・・・メモリ
401・・・スコアファイル処理プログラム(スコアファイル処理部)
402・・・ノード管理プログラム(ノード管理部)
410・・・CPU
420・・・ネットワーク接続デバイス
430・・・記憶装置
431・・・ノード構成ファイル
432・・・スコアファイル
501・・・ノード識別子
502・・・RTT
503・・・帯域幅
601・・・ノード識別子
602・・・IPアドレス
701・・・仮想マシンイメージファイル名
702・・・差分フラグ
703・・・差分イメージファイル名

【特許請求の範囲】
【請求項1】
それぞれ複数の仮想マシンを稼動させる複数の仮想マシンモニタと、
複数のノード装置と、少なくとも1つのメタデータサーバと、を含む分散ファイルシステムと、
を有する仮想マシンシステムであって、
前記メタデータサーバは、前記複数の仮想マシンモニタのそれぞれと前記複数のノード装置のそれぞれとの間の応答時間に関する情報を管理し、
前記複数の仮想マシンモニタのそれぞれは、利用者の仮想マシン作成要求に応答して、前記メタデータサーバと通信し、当該仮想マシンモニタとの前記応答時間が最短のノード装置の情報を取得し、前記応答時間が最短のノード装置に仮想マシンの仮想マシンイメージの作成を指示し、
前記複数のノード装置は、受信した前記仮想マシンイメージの作成指示に応答して、仮想マシンイメージを作成し、前記作成指示をした仮想マシンモニタに対応付けて前記作成した仮想マシンイメージを管理する、ことを特徴とする仮想マシンシステム。
【請求項2】
請求項1において、
前記複数の仮想マシンモニタのそれぞれは、前記利用者の仮想マシンイメージ複製要求に応答して、前記応答時間に関する情報に基づいて、当該仮想マシンイメージの複製先ノード装置を決定し、前記仮想マシンイメージを格納する複製元ノード装置に対して前記仮想マシンイメージの複製を指示し、
前記複製元ノード装置は、前記仮想マシンイメージを前記複製先ノード装置に送信して格納させることを特徴とする仮想マシンシステム。
【請求項3】
請求項1において、
前記仮想マシンモニタは、前記ノード装置に対して、前記仮想マシンイメージを差分形式で管理するように指示し、
前記ノード装置は、前記差分形式の管理の指示に応答して、過去の仮想マシンイメージと更新後の仮想マシンイメージとの差分を作成して、当該差分イメージを管理することを特徴とする仮想マシンシステム。
【請求項4】
請求項1において、
前記仮想マシンモニタは、前記利用者の仮想マシンイメージ起動要求に応答して、前記メタデータサーバから前記応答時間に関する情報と前記複数のノード装置の構成情報を取得し、応答時間が最短のノード装置から順に前記仮想マシンイメージ起動要求に対応する仮想マシンイメージのデータを格納するノード装置を特定し、当該特定されたノード装置から所望の仮想マシンイメージを取得して利用可能にすることを特徴とする仮想マシンシステム。
【請求項5】
請求項1において、
前記メタデータサーバは、さらに、前記複数の仮想マシンモニタのそれぞれと前記複数のノード装置のそれぞれとの間の帯域幅に関する情報を管理し、
前記仮想マシンモニタは、さらに、前記メタデータサーバから前記帯域幅に関する情報を取得し、前記最短の応答時間を示すノード装置が複数存在する場合に、前記帯域幅がより大きい値を示すノード装置に対して前記仮想マシンイメージの作成を指示することを特徴とする仮想マシンシステム。
【請求項6】
仮想マシンシステムの制御方法であって、
前記仮想マシンシステムは、
それぞれ複数の仮想マシンを稼動させる複数の仮想マシンモニタと、
複数のノード装置と、前記複数の仮想マシンモニタのそれぞれと前記複数のノード装置のそれぞれとの間の応答時間に関する情報を管理する少なくとも1つのメタデータサーバと、を含む分散ファイルシステムと、を有し、
前記制御方法は、
前記仮想マシンモニタが、利用者の仮想マシン作成要求に応答して、前記メタデータサーバと通信し、当該仮想マシンモニタとの前記応答時間が最短のノード装置の情報を取得するステップと、
前記仮想マシンモニタが、前記応答時間が最短のノード装置に仮想マシンの仮想マシンイメージの作成を指示するステップと、
前記ノード装置が、前記仮想マシンイメージの作成指示を受信するステップと、
前記ノード装置が、前記仮想マシンイメージの作成指示に応答して、仮想マシンイメージを作成し、前記作成指示をした仮想マシンモニタに対応付けて前記作成した仮想マシンイメージを管理するステップと、
を有することを特徴とする制御方法。
【請求項7】
請求項6において、
さらに、前記仮想マシンモニタが、前記利用者の仮想マシンイメージ複製要求に応答して、前記応答時間に関する情報に基づいて、当該仮想マシンイメージの複製先ノード装置を決定するステップと、
前記仮想マシンモニタが、前記仮想マシンイメージを格納する複製元ノード装置に対して前記仮想マシンイメージの複製を指示するステップと、
前記複製元ノード装置が、前記仮想マシンイメージの複製指示に応答して、前記仮想マシンイメージを前記複製先ノード装置に送信して格納を指示するステップと、
を有することを特徴とする制御方法。
【請求項8】
請求項6において、
さらに、前記仮想マシンモニタが、前記ノード装置に対して、前記仮想マシンイメージを差分形式で管理するように指示するステップと、
前記ノード装置が、前記差分形式の管理の指示に応答して、過去の仮想マシンイメージと更新後の仮想マシンイメージとの差分を作成して、当該差分イメージを管理するステップと、
を有することを特徴とする制御方法。
【請求項9】
請求項6において、
さらに、前記仮想マシンモニタが、前記利用者の仮想マシンイメージ起動要求に応答して、前記メタデータサーバから前記応答時間に関する情報と前記複数のノード装置の構成情報を取得するステップと、
前記仮想マシンモニタが、前記応答時間が最短のノード装置から順に前記仮想マシンイメージ起動要求に対応する仮想マシンイメージのデータを格納するノード装置を特定するステップと、
前記仮想マシンモニタが、前記特定されたノード装置から所望の仮想マシンイメージを取得して利用可能にするステップと、
を有することを特徴とする制御方法。
【請求項10】
請求項6において、
前記メタデータサーバは、さらに、前記複数の仮想マシンモニタのそれぞれと前記複数のノード装置のそれぞれとの間の帯域幅に関する情報を管理し、
前記応答時間が最短のノード装置の情報を取得するステップにおいて、前記仮想マシンモニタが、さらに、前記メタデータサーバから前記帯域幅に関する情報を取得し、
前記仮想マシンイメージの作成を指示するステップにおいて、前記最短の応答時間を示すノード装置が複数存在する場合に、前記帯域幅がより大きい値を示すノード装置に対して前記仮想マシンイメージの作成を指示することを特徴とする制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2012−141727(P2012−141727A)
【公開日】平成24年7月26日(2012.7.26)
【国際特許分類】
【出願番号】特願2010−293317(P2010−293317)
【出願日】平成22年12月28日(2010.12.28)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
2.WINDOWS
【出願人】(000233055)株式会社日立ソリューションズ (1,610)