(57)【特許請求の範囲】
【請求項１】
自身のコンピュータリソースに仮想マシンを起動する複数の物理マシンに接続された仮想マシン配置装置であって、
前記複数の物理マシン間の距離を示す物理マシン距離情報が記憶されている物理マシン距離情報記憶部と、
前記複数の物理マシンのうち、第１の仮想マシンが起動される物理マシンと、第２の仮想マシンが起動される物理マシンとの距離の種別である距離種別を示す仮想マシン距離情報が記憶されている仮想マシン距離情報記憶部と、
前記第１の仮想マシンが前記複数の物理マシンのいずれかに起動されている状態にて、前記第２の仮想マシンを前記複数の物理マシンのいずれかに起動させる際、前記第１の仮想マシンが起動されている物理マシンからの距離が、前記仮想マシン距離情報記憶部に記憶されている前記仮想マシン距離情報が示す距離種別に対応する物理マシンを、前記物理マシン距離情報記憶部に記憶されている物理マシン距離情報が示す距離を用いて検出する仮想マシン配置部と、
を備えることを特徴とする仮想マシン配置装置。
【請求項２】
前記仮想マシン距離情報に示される前記距離種別は、前記第１の仮想マシンと前記第２の仮想マシンとを同一の物理マシンに起動させるか否かを示す情報を含む
ことを特徴とする請求項１に記載の仮想マシン配置装置。
【請求項３】
前記物理マシン距離情報が示す距離は、物理マシン間のホップ数であり、
前記仮想マシン距離情報に示される前記距離種別は、前記第１の仮想マシンが起動される物理マシンと前記第２の仮想マシンが起動される物理マシンとの間のホップ数が最小であって前記第１の仮想マシンが起動される物理マシンとは異なる物理マシンに起動させるか否かを示す情報を含む
ことを特徴とする請求項１または請求項２に記載の仮想マシン配置装置。
【請求項４】
前記物理マシン距離情報が示す距離は、物理マシン間のホップ数であり、
前記仮想マシン距離情報に示される前記距離種別は、前記第１の仮想マシンが起動される物理マシンと前記第２の仮想マシンが起動される物理マシンとの間のホップ数が最大となる物理マシンに起動させるか否かを示す情報を含む
ことを特徴とする請求項１から請求項２に記載の仮想マシン配置装置。
【請求項５】
前記仮想マシン配置部は、検出した物理マシンで前記第２の仮想マシンを起動できない場合には、前記仮想マシン距離情報に示される前記距離種別に従って、前記第２の仮想マシンを起動可能な他の物理マシンを前記物理マシン距離情報が示す距離を用いて検出する
ことを特徴とする請求項１から請求項４のいずれか１項に記載の仮想マシン配置装置。
【請求項６】
自身のコンピュータリソースに仮想マシンを起動する複数の物理マシンに接続され、前記複数の物理マシン間の距離を示す物理マシン距離情報が記憶されている物理マシン距離情報記憶部と、前記複数の物理マシンのうち、第１の仮想マシンが起動される物理マシンと、第２の仮想マシンが起動される物理マシンとの距離の種別である距離種別を示す仮想マシン距離情報が記憶されている仮想マシン距離情報記憶部とを備えた仮想マシン配置装置の仮想マシン配置方法であって、
前記第１の仮想マシンが前記複数の物理マシンのいずれかに起動されている状態にて、前記第２の仮想マシンを前記複数の物理マシンのいずれかに起動させる際、前記第１の仮想マシンが起動されている物理マシンからの距離が、前記仮想マシン距離情報記憶部に記憶されている前記仮想マシン距離情報が示す距離種別に対応する物理マシンを、前記物理マシン距離情報記憶部に記憶されている物理マシン距離情報が示す距離を用いて検出するステップ
を備えることを特徴とする仮想マシン配置方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の物理マシンのいずれかに仮想マシンを配置する技術に関する。
【背景技術】
【０００２】
ユーザ端末からの要求を受けて、予め用意した複数の物理マシンのいずれかに仮想マシンを起動させ、起動した仮想マシンをユーザに利用させる仮想マシン提供システムが存在する。これにより、例えばユーザが何らかのコンピュータシステムを構築する場合、ユーザ自身で物理マシンを用意しなくとも、ネットワークを介して接続された物理マシンにより構成される仮想環境に起動させた仮想マシンを用いて、コンピュータシステムを構築することができる。このような仮想マシン提供システムが複数の物理マシンに仮想マシンを配置する方法として、ラウンドロビン方式やグリーディ方式が存在する。
図１８は、仮想マシン提供システムがラウンドロビン方式により物理マシンに仮想マシンを配置する例を示す図である。ここでは、物理マシン１３１と、物理マシン１３２と、物理マシン１３３との仮想環境に、ＶＭ（仮想マシン）１からＶＭ６を配置した例を示している。ＶＭ１からＶＭ６は、その数値の順に起動されたことを示す。ラウンドロビン方式では、コンピュータリソースに空きのある複数の物理マシンに、仮想マシンを１台ずつ順番に配置する。図１９は、仮想マシン提供システムがグリーディ方式により物理マシンに仮想マシンを配置する例を示す図である。ここでは、あるひとつの物理マシンのコンピュータリソースに余剰リソースがある限りその物理マシンに仮想マシンを起動させ、コンピュータリソースが足りなくなった場合に他の物理マシンに仮想マシンを起動していく。特許文献１には、このような仮想環境における物理マシン上に起動している仮想マシンを、負荷に応じて他の物理マシンに移動させることが記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１１７７６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、関連性のある複数の仮想マシンを仮想環境に起動する場合、複数の仮想マシン同士を近くに配置したい場合や、遠くに配置したい場合がある。例えば、ウェブサーバとＤＢ（データベース）サーバとを備えるウェブシステムを構築する場合、ウェブサーバとＤＢサーバとが頻繁に通信を行うものであれば、パフォーマンス向上のため、近くに配置することが望ましい。一方、例えばＤＢサーバのバックアップサーバを用意する場合、震災等による物理的なデータ消失を回避するために、遠くに配置することが望ましい。上述のようなラウンドロビン方式やグリーディ方式は、このような状況を考慮して仮想マシンを配置するものではない。
【０００５】
本発明は、このような状況に鑑みてなされたもので、複数の物理マシンに仮想マシンを適切に配置する仮想マシン配置装置、仮想マシン配置方法を提供する。
【課題を解決するための手段】
【０００６】
上述した課題を解決するために、本発明は、自身のコンピュータリソースに仮想マシンを起動する複数の物理マシンに接続された仮想マシン配置装置であって、前記複数の物理マシン間の距離を示す物理マシン距離情報が記憶されている物理マシン距離情報記憶部と、前記複数の物理マシンのうち、第１の仮想マシンが起動される物理マシンと、第２の仮想マシンが起動される物理マシンとの距離の種別である距離種別を示す仮想マシン距離情報が記憶されている仮想マシン距離情報記憶部と、前記第１の仮想マシンが前記複数の物理マシンのいずれかに起動されている状態にて、前記第２の仮想マシンを前記複数の物理マシンのいずれかに起動させる際、前記第１の仮想マシンが起動されている物理マシンからの距離が、前記仮想マシン距離情報記憶部に記憶されている前記仮想マシン距離情報が示す距離種別に対応する物理マシンを、前記物理マシン距離情報記憶部に記憶されている物理マシン距離情報が示す距離を用いて検出する仮想マシン配置部と、を備えることを特徴とする。
【０００７】
また、本発明は、前記仮想マシン距離情報に示される前記距離種別は、前記第１の仮想マシンと前記第２の仮想マシンとを同一の物理マシンに起動させるか否かを示す情報を含むことを特徴とする。
【０００８】
また、本発明は、前記物理マシン距離情報が示す距離は、物理マシン間のホップ数であり、前記仮想マシン距離情報に示される前記距離種別は、前記第１の仮想マシンが起動される物理マシンと前記第２の仮想マシンが起動される物理マシンとの間のホップ数が最小であって前記第１の仮想マシンが起動される物理マシンとは異なる物理マシンに起動させるか否かを示す情報を含むことを特徴とする。
【０００９】
また、本発明は、前記物理マシン距離情報が示す距離は、物理マシン間のホップ数であり、前記仮想マシン距離情報に示される前記距離種別は、前記第１の仮想マシンが起動される物理マシンと前記第２の仮想マシンが起動される物理マシンとの間のホップ数が最大となる物理マシンに起動させるか否かを示す情報を含むことを特徴とする。
【００１０】
また、本発明は、前記仮想マシン配置部は、検出した物理マシンで前記第２の仮想マシンを起動できない場合には、前記仮想マシン距離情報に示される前記距離種別に従って、前記第２の仮想マシンを起動可能な他の物理マシンを前記物理マシン距離情報が示す距離を用いて検出することを特徴とする。
【００１１】
また、本発明は、自身のコンピュータリソースに仮想マシンを起動する複数の物理マシンに接続され、前記複数の物理マシン間の距離を示す物理マシン距離情報が記憶されている物理マシン距離情報記憶部と、前記複数の物理マシンのうち、第１の仮想マシンが起動される物理マシンと、第２の仮想マシンが起動される物理マシンとの距離の種別である距離種別を示す仮想マシン距離情報が記憶されている仮想マシン距離情報記憶部とを備えた仮想マシン配置装置の仮想マシン配置方法であって、前記第１の仮想マシンが前記複数の物理マシンのいずれかに起動されている状態にて、前記第２の仮想マシンを前記複数の物理マシンのいずれかに起動させる際、前記第１の仮想マシンが起動されている物理マシンからの距離が、前記仮想マシン距離情報記憶部に記憶されている前記仮想マシン距離情報が示す距離種別に対応する物理マシンを、前記物理マシン距離情報記憶部に記憶されている物理マシン距離情報が示す距離を用いて検出するステップを備えることを特徴とする仮想マシン配置方法である。
【発明の効果】
【００１２】
以上説明したように、本発明によれば、複数の物理マシンに仮想マシンを適切に配置することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の一実施形態による仮想マシン提供システムの構成例を示すブロック図である。
【図２】本発明の一実施形態による仮想マシン情報記憶部に記憶される仮想マシン情報のデータ例を示す図である。
【図３】本発明の一実施形態による物理マシン情報記憶部に記憶される物理マシン情報のデータ例を示す図である。
【図４】本発明の一実施形態による仮想マシン配置情報記憶部に記憶される仮想マシン配置情報のデータ例を示す図である。
【図５】本発明の一実施形態によるシステム情報記憶部に記憶されるシステム情報のデータ例を示す図である。
【図６】本発明の一実施形態による仮想マシン距離情報記憶部に記憶される仮想マシン距離情報のデータ例を示す図である。
【図７】本発明の一実施形態による仮想マシン距離情報に応じた仮想マシン間の関係を示す図である。
【図８】本発明の一実施形態による物理マシン距離情報記憶部に記憶される物理マシン距離情報のデータ例を示す図である。
【図９】本発明の一実施形態により仮想マシン配置部が第２の仮想マシンを起動する物理マシンを検出する例を示す図である。
【図１０】本発明の一実施形態による仮想マシン配置部が第２の仮想マシンを起動する物理マシンを検出する例を示す図である。
【図１１】本発明の一実施形態による仮想マシン配置部が第２の仮想マシンを起動する物理マシンを検出する例を示す図である。
【図１２】本発明の一実施形態による仮想マシン距離情報と、物理マシン距離情報とに基づいて、仮想マシン配置部によって配置された仮想マシンの例を示す図である。
【図１３】本発明の一実施形態による仮想マシン提供システムの動作例を示すフローチャートである。
【図１４】本発明の一実施形態による設置位置情報のデータ例を示す図である。
【図１５】本発明の一実施形態によるサーバルーム距離情報のデータ例を示す図である。
【図１６】本発明の一実施形態によるラック距離情報のデータ例を示す図である。
【図１７】本発明の一実施形態による仮想マシン距離情報のデータ例を示す図である。
【図１８】従来技術によりラウンドロビン方式によって物理マシンに仮想マシンを配置する例を示す図である。
【図１９】従来技術によりグリーディ方式によって物理マシンに仮想マシンを配置する例を示す図である。
【発明を実施するための形態】
【００１４】
以下、本発明の一実施形態について、図面を参照して説明する。
図１は、本実施形態による仮想マシン提供システム１の構成を示すブロック図である。仮想マシン提供システム１は、ユーザ端末１０と、仮想マシン配置装置２０と、複数の物理マシン（物理マシン３０、物理マシン３１、物理マシン３２、・・・）から構成される仮想環境とを備えている。ここで、仮想環境には３台の物理マシンを図示して説明するが、仮想環境は４台以上の物理マシンから構成されていてよい。物理マシン３０、物理マシン３１、物理マシン３２は同様の構成であるため、特に区別しない場合には物理マシン３０として説明する。仮想マシン提供システム１は、ユーザ端末１０からの仮想マシンの起動要求に応じて、複数の物理マシンによって構成される仮想環境に仮想マシンを起動させ、起動した仮想マシンをユーザ端末１０に利用させるリソース提供サービスを提供する。
このようなサービスはクラウドサービスなどとも呼ばれるものである。
【００１５】
ユーザ端末１０は、仮想マシン提供システム１によって提供される仮想マシンを利用するユーザのコンピュータ装置である。ユーザ端末１０は、ユーザからの入力に応じて、仮想マシンの起動要求を仮想マシン配置装置２０に送信する。ユーザ端末１０は、起動された仮想マシンにネットワークを介して接続し、利用することができる。ここでは、仮想マシン提供システム１を用いて提供するコンピュータシステムを構成する複数の仮想マシンのマシンイメージを予め仮想マシン配置装置２０のマシンイメージ記憶部２６に記憶させておき、ユーザ端末１０は、このようなコンピュータシステムの起動要求を仮想マシン配置装置２０に送信することができる。
【００１６】
仮想マシン配置装置２０は、ユーザ端末１０や複数の物理マシンから構成される仮想環境にネットワークを介して接続されており、ユーザ端末１０からの仮想マシン、コンピュータシステムの起動要求に応じて、複数の物理マシン３０のいずれかに仮想マシンを起動させるクラウド管理装置である。仮想マシン配置装置２０は、通信部２１と、仮想マシン情報記憶部２２と、物理マシン情報記憶部２３と、仮想マシン配置情報記憶部２４と、システム情報記憶部２５と、マシンイメージ記憶部２６と、仮想マシン距離情報記憶部２７と、物理マシン距離情報記憶部２８と、仮想マシン配置部２９とを備えている。
【００１７】
通信部２１は、ネットワークを介して接続された他のコンピュータ装置と通信を行う。例えば、通信部２１は、ユーザ端末１０から送信される、起動したい仮想マシンを識別する仮想マシンＩＤ（Identifier）や、起動したいコンピュータシステムを識別するシステムＩＤが含まれる起動要求等の情報を受信する。
【００１８】
仮想マシン情報記憶部２２には、物理マシン３０に起動される仮想マシンに関する仮想マシン情報が記憶される。図２は、仮想マシン情報記憶部２２に記憶される仮想マシン情報のデータ例を示す図である。仮想マシン情報には、仮想マシンＩＤと、リソース種別と、必要リソースとの情報が含まれる。仮想マシンＩＤは、ユーザ端末１０からの起動要求に応じて起動する仮想マシンを識別する情報である。リソース種別は、対応する仮想マシンに対して割り当てられるコンピュータリソースの種別を示す。必要リソースは、リソース種別に定められる種別毎に、その対応する仮想マシンに対して割り当てられるコンピュータリソースの量を示す。図の例では、仮想マシンＩＤが「Ｖ００１」である仮想マシンは、仮想ＣＰＵを２コア、仮想ＲＡＭを４ＧＢ、仮想ＨＤＤを４０ＧＢのリソースが必要であることを示す。
【００１９】
物理マシン情報記憶部２３には、仮想環境が備える物理マシンに関する物理マシン情報が記憶される。図３は、物理マシン情報記憶部２３に記憶される物理マシン情報のデータ例を示す図である。物理マシン情報には、物理マシンＩＤと、リソース種別と、キャパシティとの情報が含まれる。物理マシンＩＤは、仮想環境が備える物理マシンを識別する情報である。リソース種別は、対応する物理マシンが備えるコンピュータリソースの種別を示す。キャパシティは、リソース種別に定められる種別毎に、対応する物理マシンが備えるコンピュータリソースの量を示す。図の例では、物理マシンＩＤが「Ｐ００１」である物理マシンは、仮想ＣＰＵを１６コア、仮想ＲＡＭを１２８ＧＢ、仮想ＨＤＤを１０００ＧＢ備えていることを示す。
【００２０】
仮想マシン配置情報記憶部２４は、複数の仮想マシンＩＤ毎に、その仮想マシンＩＤが示す仮想マシンが起動している物理マシンを識別する物理マシンＩＤが対応付けられた仮想マシン配置情報が記憶される。図４は、仮想マシン配置情報記憶部２４に記憶される仮想マシン配置情報のデータ例を示す図である。例えば、仮想マシンＩＤが「Ｖ００１」である仮想マシンは、物理マシンＩＤが「Ｐ００１」である物理マシン上に起動されており、その物理マシンから仮想ＣＰＵとして２コア、仮想ＲＡＭとして４ＧＢ、仮想ＨＤＤとして４０ＧＢのコンピュータリソースが割り当てられていることを示す。このような仮想マシン配置情報は、仮想マシン配置部２９によって仮想マシンが起動された際に、仮想マシン配置部２４によって書き込まれる。
【００２１】
システム情報記憶部２５には、仮想マシン提供システム１が備える仮想環境の物理マシンを用いて提供されるコンピュータシステムに関するシステム情報が記憶される。図５は、このようなシステム情報のデータ例を示す図である。システム情報には、システムＩＤと、仮想マシンＩＤとの情報が含まれる。システムＩＤは、仮想マシン提供システム１が備える仮想環境の物理マシンを用いて提供するコンピュータシステムを識別する情報である。仮想マシンＩＤは、対応するコンピュータシステムを構成する複数の仮想マシンを識別する情報である。ここでは、システムＩＤが「Ｓ００１」であるコンピュータシステムは、５台の仮想マシンにより構成されることが示されている。例えば、仮想マシンＩＤが「Ｖ００１」である仮想マシンはロードバランサーであり、仮想マシンＩＤが「Ｖ００２」である仮想マシンと「Ｖ００３」である仮想マシンとはウェブサーバであり、仮想マシンＩＤが「Ｖ００４」である仮想マシンはＤＢサーバであり、仮想マシンＩＤが「Ｖ００５」である仮想マシンはバックアップサーバである。このようなシステム情報は、例えばユーザからユーザ端末１０に入力されて仮想マシン配置装置２０に送信され、システム情報記憶部２５に記憶される。
【００２２】
マシンイメージ記憶部２６には、予め定められたＯＳ（Operating System）やソフトウェアが含まれる複数のマシンイメージが記憶されている。
仮想マシン距離情報記憶部２７には、仮想環境が備える複数の物理マシンのうち、第１の仮想マシンが起動される物理マシンと、第２の仮想マシンが起動される物理マシンとの距離を示す仮想マシン距離情報が記憶されている。図６は、仮想マシン距離情報記憶部２７に記憶される仮想マシン距離情報のデータ例を示す図である。仮想マシン距離情報には、第１の仮想マシンＩＤと、第２の仮想マシンＩＤと、距離種別とが含まれる。ここでは、距離種別によって、第１の仮想マシンＩＤが示す仮想マシンと第２の仮想マシンＩＤが示す仮想マシンとの間の距離が定められる。例えば、距離種別は、第１の仮想マシンと第２の仮想マシンとを同一の物理マシンに起動させるか否かを示す。また、距離種別は、第１の仮想マシンと第２の仮想マシンとを異なる近隣の物理マシンに起動させるか否かを示す。また、距離種別は、第１の仮想マシンと第２の仮想マシンとを、仮想環境が備える複数の物理マシンのうち、より距離が離れた異なる物理マシンに起動させるか否かを示す。
【００２３】
ここでは、距離種別が「１」であれば、第１の仮想マシンと第２の仮想マシンとを同一の物理マシンに起動させることを示す。距離種別が「２」であれば、第１の仮想マシンと第２の仮想マシンとを異なる近隣の物理マシンに起動させることを示す。距離種別が「３」であれば、第１の仮想マシンと第２の仮想マシンとを、仮想環境が備える複数の物理マシンのうち、より距離が離れた異なる物理マシンに起動させることを示す。図７は、図６に示した仮想マシン距離情報に応じた仮想マシン間の関係を示す図である。図におけるノード間の数字は距離種別を示している。
【００２４】
物理マシン距離情報記憶部２８には、仮想環境が備える複数の物理マシン間の距離を示す物理マシン距離情報が記憶されている。図８は、物理マシン距離情報記憶部２８に記憶される物理マシン距離情報のデータ例を示す図である。物理マシン距離情報には、物理マシンＩＤ毎に、他の物理マシンとの距離を示す情報が対応付けられる。ここで、距離とは、例えば、物理マシン間のスイッチのホップ数である。例えば、物理マシンＩＤが「Ｐ００１」である物理マシンから、物理マシンＩＤが「Ｐ００２」である物理マシンまでは１ホップの距離であり、物理マシンＩＤが「Ｐ００３」である物理マシンまでは２ホップの距離であり、物理マシンＩＤが「Ｐ００４」である物理マシンまでは３ホップの距離であることを示している。
【００２５】
仮想マシン配置部２９は、第１の仮想マシンが複数の物理マシンのいずれかに起動されている状態にて、第２の仮想マシンを複数の物理マシンのいずれかに起動させる際、仮想マシン距離情報記憶部２７に記憶されている仮想マシン距離情報と、物理マシン距離情報記憶部２８に記憶されている物理マシン距離情報とに基づいて、複数の物理マシンから、第２の仮想マシンを起動させる物理マシンを検出する。
【００２６】
図９は、第１の仮想マシンと第２の仮想マシンとの距離種別が「１」である場合に仮想マシン配置部２９が第２の仮想マシンを起動する物理マシン３１を検出する例を示す図である。第１の仮想マシンが物理マシン３１に起動されている場合、仮想マシン配置部２９は、第１の仮想マシンと同一の物理マシン３１に、第２の仮想マシンを起動させることができるか否かを判定する。例えば、物理マシン３１に対応する物理マシン情報を物理マシン情報記憶部２３から読み出し、物理マシン３１に起動されている第１の仮想マシンの仮想マシン配置情報を仮想マシン配置情報記憶部２４から読み出す。そして、物理マシン情報記憶部２３から読み出した仮想マシンのキャパシティと、仮想マシン配置情報記憶部２４から読み出した仮想マシン配置情報における確保リソースとの差を、物理マシン３１の余剰リソースとして算出する。
【００２７】
また、仮想マシン配置部２９は、第２の仮想マシンの仮想マシン情報を仮想マシン情報記憶部２２から読み出し、第２の仮想マシンの必要リソースが、物理マシン３１の余剰リソースより少ないか否かを判定する。仮想マシン配置部２９が、第２の仮想マシンの必要リソースが、物理マシン３１の余剰リソースより少ないと判定すれば、第１の仮想マシンと同一の物理マシン３１に、第２の仮想マシンを起動させることができると判定する。第２の仮想マシンの必要リソースが、物理マシン３１の余剰リソースより少なくないと判定すれば、物理マシン３１に、第２の仮想マシンを起動させることができないと判定する。
ここで、仮想マシン配置部２９は、物理マシン３１に、第２の仮想マシンを起動させることができないと判定すれば、物理マシン３１の近隣の物理マシンの余剰リソースを算出し、第２の仮想マシンを起動できる物理マシンを検出する。すなわち、仮想マシン配置部２９は、図に示す（１）、（２）、（３）、（４）の順に、仮想マシンを起動できるか否かを判定し、最初に起動できると判定した物理マシンに仮想マシンを起動する。
【００２８】
図１０は、第１の仮想マシンと第２の仮想マシンとの距離種別が「２」である場合に仮想マシン配置部２９が第２の仮想マシンを起動する物理マシン３１を検出する例を示す図である。第１の仮想マシンが物理マシン３１に起動されている場合、仮想マシン配置部２９は、第１の仮想マシンと異なる近隣の物理マシン３０または物理マシン３２に、第２の仮想マシンを起動させることができるか否かを判定する。ここで、近隣の物理マシンとは、物理マシン距離情報記憶部２８に記憶されている物理マシン距離情報において、第１の仮想マシンが起動されている物理マシンとの距離が近い（ホップ数が少ない）他の物理マシンを示す。仮想マシン配置部２９は、物理マシン距離情報記憶部２８に記憶されている物理マシン距離情報に基づいて、第１の仮想マシンが起動されている物理マシンとの距離が近い他の物理マシンを検出する。そして、検出した物理マシンの余剰リソースと第２の仮想マシンの必要リソースとを比較して、第２の仮想マシンが起動できるか否かを判定する。仮想マシン配置部２９は、起動できると判定すれば、その物理マシンに第２の仮想マシンを起動させ、起動できないと判定すれば、他の近隣の物理マシンを検出して、第２の仮想マシンを起動できる物理マシンを検出する。ここで、近隣の物理マシンを検出する際、同一の距離である他の物理マシンが複数存在する場合には、例えば物理マシンＩＤの数値が小さい方の物理マシンを検出してもよいし、より余剰リソースが多い方の物理マシンを検出してもよい。図の例では、仮想マシン配置部２９は、（１）、（２）、（３）の順に、仮想マシンを起動できるか否かを判定し、最初に起動できると判定した物理マシンに仮想マシンを起動する。
【００２９】
図１１は、第１の仮想マシンと第２の仮想マシンとの距離種別が「３」である場合に仮想マシン配置部２９が第２の仮想マシンを起動する物理マシン３１を検出する例を示す図である。第１の仮想マシンが物理マシン３１に起動されている場合、仮想マシン配置部２９は、第２の仮想マシンを、複数の物理マシンのうち、第１の仮想マシンが起動された物理マシンから、より距離が離れた異なる物理マシンを検出する。ここで、より距離が離れた物理マシンとは、物理マシン距離情報記憶部２８に記憶されている物理マシン距離情報において、第１の仮想マシンが起動されている物理マシンとの距離が遠い（ホップ数が多い）他の物理マシンを示す。仮想マシン配置部２９は、物理マシン距離情報記憶部２８に記憶されている物理マシン距離情報に基づいて、第１の仮想マシンが起動されている物理マシンとの距離が遠い他の物理マシンを検出する。そして、検出した物理マシンの余剰リソースと第２の仮想マシンの必要リソースとを比較して、第２の仮想マシンが起動できるか否かを判定する。仮想マシン配置部２９は、起動できると判定すれば、その物理マシンに第２の仮想マシンを起動させ、起動できないと判定すれば、その物理マシンを除いたうちで最も距離の遠い他の物理マシンを検出して、第２の仮想マシンを起動できる物理マシンを検出する。ここで、より距離の遠い物理マシンを検出する際、同一の距離である他の物理マシンが複数存在する場合には、例えば物理マシンＩＤの数値が小さい方の物理マシンを検出してもよいし、より余剰リソースが多い方の物理マシンを検出してもよい。図の例では、仮想マシン配置部２９は、（１）、（２）、（３）の順に、仮想マシンを起動できるか否かを判定し、最初に起動できると判定した物理マシンに仮想マシンを起動する。
図１２は、図６に示した仮想マシン距離情報と、図８に示した物理マシン距離情報とに基づいて、仮想マシン配置部２９によって配置された仮想マシンの例を示す図である。
物理マシン３０は、ユーザ端末１０からの起動要求に応じて、自身のコンピュータリソースを仮想化して仮想マシンを起動するコンピュータ装置である。ここでは、複数の物理マシンによって仮想環境を構成する。
【００３０】
次に、図面を参照して、本実施形態による仮想マシン提供システム１の動作例を説明する。図１３は、本実施形態による仮想マシン提供システム１の動作例を示すフローチャートである。
仮想マシン配置装置２０の通信部２１が、ユーザ端末１０から、システムＩＤが「Ｓ００１」であるコンピュータシステムの起動要求を受信すると（ステップＳ１）、仮想マシン配置部２９は、そのシステムＩＤに対応付けられた複数の仮想マシンＩＤを、システム情報記憶部２５から読み出す。そして、仮想マシン配置部２９は、読み出した複数の仮想マシンＩＤのうち、予め定められた基準となる仮想マシン（例えば、仮想マシンＩＤの数値が最も小さい仮想マシン）の仮想マシンＩＤに対応する必要リソースを仮想マシン情報記憶部２２から読み出す。そして、仮想マシン配置部２９は、物理マシン情報記憶部２３と仮想マシン配置情報記憶部２４とを参照して、読み出した必要リソースを超える余剰リソースを持つ物理マシンを検出する（ステップＳ２）。
【００３１】
仮想マシン配置部２９は、マシンイメージ記憶部２６に記憶されているマシンイメージを読み出し、読み出したマシンイメージを、ステップＳ２において検出した物理マシンに送信し、仮想マシンを起動させる（ステップＳ３）。そして、ステップＳ１において受信したシステムＩＤに対応する複数の仮想マシンのうち、また起動していない仮想マシンがあれば（ステップＳ４：ＮＯ）、システム情報記憶部２５から次の仮想マシンＩＤを読み出し、前回起動した仮想マシンを第１の仮想マシンとし、新たに読み出した仮想マシンＩＤの仮想マシンを第２の仮想マシンとして仮想マシン距離情報記憶部２７に記憶されている仮想マシン距離情報を読み出す。仮想マシン配置部２９は、読み出した仮想マシン距離情報の距離種別が「１」であれば（ステップＳ５：ＹＥＳ）、第１の仮想マシンが起動されている物理マシンの余剰リソースを算出して第２の仮想マシンの必要リソースと比較し、第２の仮想マシンを、その物理マシンに起動可能か否かを判定する（ステップＳ６）。
【００３２】
仮想マシン配置部２９が、第２の仮想マシンを、第１の仮想マシンが起動された物理マシンに起動可能であると判定すると（ステップＳ６：ＹＥＳ）、その物理マシンに第２の仮想マシンを起動させると判定し、その物理マシンに第２の仮想マシンの起動要求を送信して（ステップＳ７）、ステップＳ４にもどる。ステップＳ６において、仮想マシン配置部２９が、第２の仮想マシンを、第１の仮想マシンが起動された物理マシンに起動可能でないと判定すれば（ステップＳ６：ＮＯ）、ステップＳ９にすすむ。
【００３３】
ステップＳ５において、距離種別が「１」でなければ、仮想マシン配置部２９は、読み出した仮想マシン距離情報の距離種別が「２」であるか否かを判定する（ステップＳ８）。距離種別が「２」であれば（ステップＳ８：ＹＥＳ）、仮想マシン配置部２９は、第１の仮想マシンとの距離が近い他の物理マシンを検出する（ステップＳ９）。ステップＳ８において、距離種別が「２」でなければ、距離種別は「３」であり、仮想マシン配置部２９は、第１の仮想マシンとの距離が遠い他の物理マシンを検出する（ステップＳ１０）。仮想マシン配置部２９は、ステップＳ９またはステップＳ１０において検出した物理マシンに第２の仮想マシンを起動させると判定し、その物理マシンに第２の仮想マシンの起動要求を送信して（ステップＳ１１）、ステップＳ４にもどる。
【００３４】
以上説明したように、本実施形態によれば、仮想環境の物理マシンに起動する複数の仮想マシンを、その性質に応じて配置することができる。これにより、例えばウェブサーバとロードバランサーなど、できるだけ同一の物理マシン上で稼働するとパフォーマンスが向上するような場合、同一の物理マシン上で稼働させることができる。あるいは、ＤＢサーバのバックアップサーバのように、できるだけマスターのサーバから離れている方がネットワーク機器の障害等の影響を受けないような場合、できるだけ離れた物理マシンに起動させることができる。
【００３５】
なお、上述の例では、物理マシン距離情報として、物理マシン間のスイッチのホップ数を適用する例を示したが、例えば、物理マシンが設置されたサーバルームの拠点位置や、その物理マシンが設置されたラックの位置等を、物理マシン距離情報に含ませるようにしても良い。図１４は、物理マシンＩＤに、その物理マシンＩＤが示す物理マシンが設置された設置拠点であるサーバルームを識別するサーバルーム識別情報と、その物理マシンがそのサーバルームにおいて設置されたラックを識別するラック識別情報とが対応付けられた設置位置情報のデータ例を示す図である。
【００３６】
図１５は、このようなサーバルーム間の距離を示すサーバルーム距離情報のデータ例を示す図である。サーバルーム距離情報において距離を示す数値は、例えばサーバルーム間のスイッチのホップ数や、物理的な距離等とすることができる。図１６は、このようなサーバルームにおけるラック間の距離を示すラック距離情報のデータ例を示す図である。ラック距離情報において距離を示す数値は、例えば物理的な距離等とすることができる。仮想マシン配置部２９は、このような距離情報に基づいて、第１の仮想マシンに対する第２の仮想マシンを起動する物理マシンを検出する。
【００３７】
また、上述の例では、仮想マシンＩＤが「Ｖ００１」である仮想マシンを第１の仮想マシンとし、仮想マシンＩＤが「Ｖ００２」である仮想マシンを第２の仮想マシンとした場合の距離種別を対応付けているが、仮想マシンＩＤが「Ｖ００１」である仮想マシンを第１の仮想マシンとし、仮想マシンＩＤが「Ｖ００３」である仮想マシンを第２の仮想マシンとした場合の距離種別を対応付けていない例を示した。これは、仮想マシンＩＤが「Ｖ００１」である仮想マシンはロードバランサーであり、仮想マシンＩＤが「Ｖ００２」である仮想マシンと仮想マシンＩＤが「Ｖ００３」である仮想マシンとはウェブサーバであるため、またユーザによる設定を簡単にするためであるが、図１７に示すように、いずれについても設定しても良い。図１７は、仮想マシンＩＤが「Ｖ００１」である仮想マシンを第１の仮想マシンとし、仮想マシンＩＤが「Ｖ００３」である仮想マシンを第２の仮想マシンとした場合の距離種別を対応付けた仮想マシン距離情報のデータ例を示す図である。
【００３８】
また、上述のようなロードバランサー、ウェブサーバ、ＤＢサーバのような構成のコンピュータシステムを運用する場合、例えば一時的にアクセスが増えるようなことがあれば、ウェブサーバのみを一時的に増やすようなことが考えられる。このような場合のために、ロードバランサー、ウェブサーバ、ＤＢサーバのような仮想マシンの用途を示す種別毎に、距離種別を定めることができるようにしてもよい。
【００３９】
なお、本発明における処理部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより仮想マシンの配置を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、ホームページ提供環境（あるいは表示環境）を備えたＷＷＷシステムも含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【００４０】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【符号の説明】
【００４１】
１  仮想マシン提供システム
１０  ユーザ端末
２０  仮想マシン配置装置
２１  通信部
２２  仮想マシン情報記憶部
２３  物理マシン情報記憶部
２４  仮想マシン配置情報記憶部
２５  システム情報記憶部
２６  マシンイメージ記憶部
２７  仮想マシン距離情報記憶部
２８  物理マシン距離情報記憶部
２９  仮想マシン配置部
３０  物理マシン
３１  物理マシン
３２  物理マシン
【図１】
0005887149.tif 000002
【図２】
0005887149.tif 000003
【図３】
0005887149.tif 000004
【図４】
0005887149.tif 000005
【図５】
0005887149.tif 000006
【図６】
0005887149.tif 000007
【図７】
0005887149.tif 000008
【図８】
0005887149.tif 000009
【図９】
0005887149.tif 000010
【図１０】
0005887149.tif 000011
【図１１】
0005887149.tif 000012
【図１２】
0005887149.tif 000013
【図１３】
0005887149.tif 000014
【図１４】
0005887149.tif 000015
【図１５】
0005887149.tif 000016
【図１６】
0005887149.tif 000017
【図１７】
0005887149.tif 000018
【図１８】
0005887149.tif 000019
【図１９】
0005887149.tif 000020