(57)【要約】【課題】ＶＭＭの種類に依存せず適切な移行先サーバを決定し、コンバートにともなうＶＭのダウンタイムを抑制することを可能とする仮想マシンシステムを提供する。【解決手段】ＶＭＭが動作しているサーバに対し指示を出し管理する管理サーバ３００に、コンバート処理時間が記録されているコンバートタイムテーブル３７１、移行処理中にＶＭが何分間停止するかが記録されているダウンタイムテーブル３７２、ハードウエアの構成の違いを評価するために使うペナルティテーブル３７３、および、コンバート処理に必要なソフトが記録されているコンバートテーブル３７５を予め格納し、管理サーバが、これらのテーブル及びサーバ１００，２００から集めた情報に基づきＣＰＵ使用率、メモリ使用量及び移行に必要な時間を考慮して算出した評価値を用いることにより、適切な移行先サーバを決定する。【選択図】図１
2008217302.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１台以上の仮想マシンを構築する仮想化ソフトウェアを実行可能な複数のサーバを備える仮想マシンシステムにおいて、
所定の前記サーバで所定の仮想化ソフトウェアにより稼動する前記仮想マシンを、複数の前記他のサーバ上の前記仮想化ソフトウェアから、移行に最適な他のサーバ上の前記仮想化ソフトウェア上に移行する管理サーバを有することを特徴とする仮想マシンシステム。
【請求項２】
前記管理サーバは、
複数の前記サーバからハードウエア、前記仮想マシンシステム、及び前記仮想マシンに関する情報を取得し、ＣＰＵ使用率、メモリ使用量及び移行に必要な時間に基づいて、
複数の前記他のサーバ上の前記仮想化ソフトウェアから、移行に最適な他のサーバ上の前記仮想化ソフトウェアを選択することを特徴とする請求項１に記載の仮想マシンシステム。
【請求項３】
前記管理サーバは、
前記サーバからハードウエア、前記仮想マシンシステム、及び前記仮想マシンに関する情報を取得し、
移行処理時間を示す移行時間情報と、移行処理中の前記仮想マシンの停止時間を示す停止時間情報と、ハードウエアの構成の違いを評価するために使うペナルティ情報と、前記仮想化ソフトウェアと移行先の前記仮想化ソフトウェアの種類に基づく移行方法を示す移行情報とに基づいて、
複数の前記他のサーバ上の前記仮想化ソフトウェアから、移行に最適な他のサーバ上の前記仮想化ソフトウェアを選択することを特徴とする請求項２に記載の仮想マシンシステム。
【請求項４】
前記管理サーバは、
複数の前記サーバから取得した情報に基づいて、移行先として適する指標を示す評価値を算出することを特徴とする請求項２又は請求項３に記載の仮想マシンシステム。
【請求項５】
前記管理サーバは、
所定の閾値と前記評価値との関係に基づいて、移行先の前記サーバを決定し、又は決定しないことを特徴とする請求項４に記載の仮想マシンシステム。
【請求項６】
前記管理サーバは、
移行先の前記サーバを決定した後、前記移行情報に基づいてライブマイグレーションの可否を判断し、
可能な場合に、ライブマイグレーションを用いて前記移行を実行し、
可能でない場合に、移行する前記仮想マシンのイメージ形式を、移行先の前記サーバ上にある仮想化ソフトウェアが扱うことができるイメージ形式に移行することを特徴とする請求項２又は請求項３に記載の仮想マシンシステム。
【請求項７】
移行する前記仮想マシン内に存在する移行終了時のファイルを、移行後のイメージに適用することを特徴とする請求項１から請求項６のいずれか１項に記載の仮想マシンシステム。
【請求項８】
前記サーバは、移行する前記仮想マシンのディスクアクセスを監視する手段を有し、
移行する前記仮想マシン内で更新されたファイルを記録する記録手段を備えることを特徴とする請求項７に記載の仮想マシンシステム。
【請求項９】
前記他のサーバ上の前記仮想化ソフトウェアが、前記所定の仮想化ソフトウェアと種類が異なる仮想化ソフトウェアであることを特徴とする請求項１から請求項８のいずれか１項に記載の仮想マシンシステム。
【請求項１０】
少なくとも１台以上の仮想マシンを構築する仮想化ソフトウェアを実行可能な複数のサーバを備える仮想マシンシステム内で前記仮想マシンの移行を管理する管理サーバにおいて、
所定の前記サーバで所定の仮想化ソフトウェアにより稼動する前記仮想マシンを、複数の前記他のサーバ上の前記仮想化ソフトウェアから、移行に最適な他のサーバ上の前記仮想化ソフトウェア上に移行することを特徴とする管理サーバ。
【請求項１１】
複数の前記サーバからハードウエア、前記仮想マシンシステム、及び前記仮想マシンに関する情報を取得し、ＣＰＵ使用率、メモリ使用量及び移行に必要な時間に基づいて、
複数の前記他のサーバ上の前記仮想化ソフトウェアから、移行に最適な他のサーバ上の前記仮想化ソフトウェアを選択することを特徴とする請求項１０に記載の管理サーバ。
【請求項１２】
複数の前記サーバからハードウエア、前記仮想マシンシステム、及び前記仮想マシンに関する情報を取得し、
移行処理時間を示す移行時間情報と、移行処理中の前記仮想マシンの停止時間を示す停止時間情報と、ハードウエアの構成の違いを評価するために使うペナルティ情報と、前記仮想化ソフトウェアと移行先の前記仮想化ソフトウェアの種類に基づく移行方法を示す移行情報とに基づいて、
複数の前記他のサーバ上の前記仮想化ソフトウェアから、移行に最適な他のサーバ上の前記仮想化ソフトウェアを選択することを特徴とする請求項１１に記載の管理サーバ。
【請求項１３】
複数の前記サーバから取得した情報に基づいて、移行先として適する指標を示す評価値を算出することを特徴とする請求項１１又は請求項１２に記載の管理サーバ。
【請求項１４】
所定の閾値と前記評価値との関係に基づいて、移行先の前記サーバを決定し、又は決定しないことを特徴とする請求項１３に記載の管理サーバ。
【請求項１５】
移行先の前記サーバを決定した後、前記移行情報に基づいてライブマイグレーションの可否を判断し、
可能な場合に、ライブマイグレーションを用いて前記移行を実行し、
可能でない場合に、移行する前記仮想マシンのイメージ形式を、移行先の前記サーバ上にある仮想化ソフトウェアが扱うことができるイメージ形式に移行することを特徴とする請求項１１又は請求項１２に記載の管理サーバ。
【請求項１６】
移行する前記仮想マシン内に存在する移行終了時のファイルを、移行後のイメージに適用することを特徴とする請求項１０から請求項１５のいずれか１項に記載の管理サーバ。
【請求項１７】
少なくとも１台以上の仮想マシンを構築する仮想化ソフトウェアを実行可能な複数のサーバを備える仮想マシンシステムの仮想マシン移行方法であって、
所定の前記サーバで所定の仮想化ソフトウェアにより稼動する前記仮想マシンを、複数の前記他のサーバ上の前記仮想化ソフトウェアから、移行に最適な他のサーバ上の前記仮想化ソフトウェア上に移行する移行ステップを有することを特徴とする仮想マシン移行方法。
【請求項１８】
前記移行ステップにおいて、
前記サーバからハードウエア、前記仮想マシンシステム、及び前記仮想マシンに関する情報を取得し、
移行処理時間を示す移行時間情報と、移行処理中の前記仮想マシンの停止時間を示す停止時間情報と、ハードウエアの構成の違いを評価するために使うペナルティ情報と、前記仮想化ソフトウェアと移行先の前記仮想化ソフトウェアの種類に基づく移行方法を示す移行情報とに基づいて、
複数の前記他のサーバ上の前記仮想化ソフトウェアから、移行に最適な他のサーバ上の前記仮想化ソフトウェアを選択することを特徴とする請求項１７に記載の仮想マシン移行方法。
【請求項１９】
少なくとも１台以上の仮想マシンを構築する仮想化ソフトウェアを実行可能な複数のサーバを備える仮想マシンシステム内で前記仮想マシンの移行を管理する管理サーバ上で実行されるプログラムであって、
前記管理サーバに、
所定の前記サーバで所定の仮想化ソフトウェアにより稼動する前記仮想マシンを、複数の前記他のサーバ上の前記仮想化ソフトウェアから、移行に最適な他のサーバ上の前記仮想化ソフトウェア上に移行する処理を実行させることを特徴とするプログラム。
【請求項２０】
前記管理サーバに、
複数の前記サーバからハードウエア、前記仮想マシンシステム、及び前記仮想マシンに関する情報を取得し、
移行処理時間を示す移行時間情報と、移行処理中の前記仮想マシンの停止時間を示す停止時間情報と、ハードウエアの構成の違いを評価するために使うペナルティ情報と、前記仮想化ソフトウェアと移行先の前記仮想化ソフトウェアの種類に基づく移行方法を示す移行情報とに基づいて、
複数の前記他のサーバ上の前記仮想化ソフトウェアから、移行に最適な他のサーバ上の前記仮想化ソフトウェアを選択する処理を実行させることを特徴とする請求項１９に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、少なくとも１台以上の仮想マシンを構築する仮想化ソフトウェアを実行可能な複数のサーバを備える仮想マシンシステム、仮想マシンシステム内の管理サーバ、仮想マシン移行方法及びプログラムに関するものである。
【背景技術】
【０００２】
近年、サーバでは仮想化技術が注目されており、導入されているサーバも多い。この技術を適用した仮想化ソフトウエア（ＶＭＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍｏｎｉｔｏｒ）として有名なものに、ＶＭｗａｒｅ社の「ＶＭｗａｒｅ  ＥＳＸ  Ｓｅｒｖｅｒ」やＸｅｎ  Ｓｏｕｒｃｅ社の「Ｘｅｎ」、Ｍｉｃｒｏｓｏｆｔ社の「Ｖｉｒｔｕａｌ  Ｓｅｒｖｅｒ」などがある。また、仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）はストレージ上にイメージとして構成されているため、管理がしやすいというメリットがある。
【０００３】
ＶＭは、ＶＭの移行を使うことで別のサーバ上にＶＭを移動させることも可能であるが、通常、移行元ＶＭＭと移行先ＶＭＭは同じものが使われている。また、移行元ＶＭＭと移行先ＶＭＭが異なる場合には、移行元ＶＭＭ上で動作しているＶＭを移行先ＶＭＭで扱えるよう、コンバータを用い変換する必要がある。この種のソフトウェアとして、例えば、ＶＭｗａｒｅ社の「ＶＭｗａｒｅ  Ｃｏｎｖｅｒｔｅｒ」等が挙げられる。
【０００４】
これら、ＶＭの移行に関して、適切な移行先サーバを見つける方法は従来いくつか考えられており、例えば、特許文献１が挙げられる。
【０００５】
しかし、特許文献１（特願２００６−１４３６２６号）を一例とする上記従来の方法では移行元ＶＭＭと移行先ＶＭＭの種類については触れられていないため、移行元ＶＭＭと移行先ＶＭＭの種類が異なっていた場合、適切な移行先サーバを見つけられない可能性がある。その結果、移行元ＶＭＭと、異なるＶＭＭが動いているサーバにはリソースに余裕があるにもかかわらず、ＶＭの移行自体ができないという問題が発生する。
【０００６】
これに対し、従来の他の手法は、このような問題を、導入するＶＭＭの種類を同じにしておくことによって、又、ＶＭの移行先を事前に管理者が決めておくこと等によって解決していた。
【特許文献１】特願２００６−１４３６２６号
【発明の開示】
【発明が解決しようとする課題】
【０００７】
一般に、業務システムは複数のサーバによって構成されるが、これら各サーバの稼動状態は常に一定ではない。すなわち、例えば、あるサーバが低負荷状態の場合には処理能力に余力が生じるが、この余力を他のサーバ装置に融通することはできないため、各サーバ装置間では負荷の不均衡が生じやすく、システム全体を効率的に稼動させることは困難である。一方、ＶＭＭとＶＭを用いた業務システムでは、ＶＭをその処理負荷の状況に応じて常に適切なＶＭＭ上に配置することができれば、負荷の再配分が可能となり、サーバ装置の処理能力を効率的に利用できる。しかし現実には再配置のための移行には以下のような課題があり十分な効率が発揮できない。
【０００８】
第１の課題は、従来の手法はＶＭの移行を行う際、上述したように、移行先とするＶＭＭを現在そのＶＭが稼動しているＶＭＭと同種のものに限定して選定しているため、ＶＭＭが混在する環境では最適な選択が行えないという点である。
【０００９】
一般に、ＶＭは特定の種類のＶＭＭを前提として作成され、それ以外の種類のＶＭＭでは稼動することができない。しかし移行元ＶＭＭと移行先ＶＭＭの種類が異なる場合でも、ＶＭが稼動するために必要なディスクイメージや設定ファイルなど（以下ＶＭイメージ）の書式を、移行先ＶＭＭに合わせて変換することで、ＶＭを異なるＶＭＭで稼動させる（以下この処理をコンバートと呼ぶ）ことが可能である。従来の手法では、移行に際してコンバートを行うことを考慮しておらず、同一のＶＭＭの中から、ＣＰＵ使用率およびメモリ使用量のみを考慮して移行先を決定していた。この結果、ＶＭＭの種類が異なるときには、適切な移行先サーバを見つけることができなかった。
【００１０】
第２の課題は、コンバートにともなうＶＭのダウンタイムが長くなるという点である。コンバートを行うためには、変換を行う処理時間が必要であり、通常、この処理時間中は対象となるＶＭ  を停止（シャットダウン）しておかなければならない。ＶＭのコンバートにともなうダウンタイムは、同一のＶＭＭ間でのＶＭの移行に比べ相対的に非常に長いため、これが、コンバートが実用的な移行方法の一部として考慮されない主な要因ともなっている。
【００１１】
（目的）
本発明の目的は、ＶＭＭの種類に依存せず適切な移行先サーバを決定し、コンバートにともなうＶＭのダウンタイムを抑制することを可能とする仮想マシンシステムを提供することにある。
【課題を解決するための手段】
【００１２】
上記目的を達成する本発明は、少なくとも１台以上の仮想マシンを構築する仮想化ソフトウェアを実行可能な複数のサーバを備える仮想マシンシステムにおいて、所定の前記サーバで所定の仮想化ソフトウェアにより稼動する前記仮想マシンを、複数の前記他のサーバ上の前記仮想化ソフトウェアから、移行に最適な他のサーバ上の前記仮想化ソフトウェア上に移行する管理サーバを有することを特徴とする。
【００１３】
（作用）
上記構成により、管理サーバが、複数のサーバ上の仮想化ソフトウェアから、移行に最適なサーバ上の仮想化ソフトウェアを検出する。
【００１４】
ここで、課題を解決するための手段をより詳細に説明すると、第１の課題に対する解決手段は、ＣＰＵ使用率およびメモリ使用量のみならず移行に必要な時間を考慮して、ＶＭＭが動作している移行先のサーバ（移行先サーバ）を決めることである。この解決手段を可能とさせるため、あらかじめＶＭＭが動作しているサーバに対し指示を出し管理するマシン（管理サーバ）に以下４つの表を持たせておく。４つの表とは、コンバート処理時間が記録されているコンバートタイムテーブル３７１、移行処理中にＶＭが何分間停止するかが記録されているダウンタイムテーブル３７２、ハードウエアの構成の違いを評価するために使うペナルティテーブル３７３、および、コンバート処理に必要なソフトが記録されているコンバートテーブル３７５である。本発明では、これらのテーブルの情報、およびサーバから集めた情報に基づいて評価値を算出し、その値を用いることにより、ＶＭＭの種類に依存せず適切な移行先サーバを決定することができる。
【００１５】
また、第２の課題に対する解決手段として、コンバートするＶＭのイメージを複製し、複製したイメージに対しコンバートするという手法をとる。この手法により、ＶＭのダウンタイム中に更新しなければならないファイル量を最小限にすることができる。この結果、ＶＭのダウンタイムを短くすることが可能である。
【発明の効果】
【００１６】
本発明によれば、管理サーバが、複数のサーバ上の仮想化ソフトウェアから、移行に最適なサーバ上の仮想化ソフトウェアを検出するので、複数の異なるＶＭＭが混在する環境において、ＶＭＭの種類やＶＭの移行にかかる時間を考慮した上で、適切な移行先サーバを見つけることができる。
【発明を実施するための最良の形態】
【００１７】
（第１の実施の形態）
以下、本発明の第１の実施の形態について図を参照して詳細に説明する。
【００１８】
（第１の実施の形態の構成）
図１は、本実施の形態による構成を示すブロック図である。
【００１９】
図１を参照すると、本実施の形態は、サーバ１００、サーバ２００、管理サーバ  ３００、ストレージ  ４００、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）スイッチ  ５００、およびＦＣスイッチ  ６００を備える。
【００２０】
サーバ１００は、プログラム制御により動作するコンピュータであり、ＬＡＮモジュール１４０、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）に接続するためのＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｅｒ：ホストバスアダプタ）１５０を持ち、ＶＭＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍｏｎｉｔｏｒ）１３０が動作している。
【００２１】
ＶＭＭ１３０内には情報収集部１３１、負荷計測部１３２、アクセス監視部１３３が動作している。またＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）１１０，１２０がＶＭＭ１３０を使って動作している。
【００２２】
ＶＭＭ１３０は、ＶＭを動かすために必要なソフト（ハイパーバイザ）であり、サーバ１００が持っているＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やメモリといった資源を各ＶＭへ割り当てる機能を有する。
【００２３】
ＶＭ１１０，１２０は、それぞれＶＭＭ１３０上で動作している論理マシンであり、物理マシンをエミュレーションしたものとなっている。つまり、ＶＭ１１０，１２０は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）１１０１、１２０１、２１０１が動作し、その上でアプリケーション１１０２、１２０２、２１０２が動作するという環境によって構成されている。
【００２４】
情報収集部１３１は、管理サーバ３００にある情報取得部３１０の指示で動作し、情報取得部３１０が必要としている情報をサーバ１００内から集め、適切な形に整形したのち、情報取得部３１０へ情報を送信する機能を有する。
【００２５】
負荷計測部１３２は、サーバ１００の負荷情報（ＣＰＵ使用率およびメモリ使用量）を常に計測しており、情報収集部１３１の指示を受けて、過去収集していた負荷情報を整形し、情報収集部１３１へ情報を送信する機能を有する。
【００２６】
アクセス監視部１３３は、管理サーバ３００の処理命令部３３０の指示で動作し、サーバ１００上の特定のＶＭを監視する機能と、アクセス監視中において、監視対象のＶＭ内で更新したファイルを記録し、管理サーバ３００へ記録した情報を送信する機能とを有する。
【００２７】
サーバ２００はサーバ１００と同じ構成となっているため省略する。ただし、ＶＭＭ２３０はＶＭＭ１３０と同じである必要はなく、この点が本発明の特徴でもある。
【００２８】
管理サーバ３００は、記憶部３７０、ＬＡＮモジュール３８０、ＨＢＡ３９０を持ち、ＯＳ３６０が動作しており、ＯＳ３６０上には、情報取得部３１０、移行先判断部３２０、処理命令部３３０、コンバート処理部３４０、ライブマイグレーション部３５０が動作している。
【００２９】
管理サーバ３００は、情報として、コンバートタイムテーブル３７１（図２）、ダウンタイムテーブル３７２（図３）、ペナルティテーブル３７３（図４）、パラメータテーブル３７４（図５）およびコンバートテーブル３７５（図６）を記憶部３７０に保有している。
【００３０】
図２は、本実施の形態によるコンバートタイムテーブル３７１を説明する図である。コンバートタイムテーブル３７１は、コンバートを行う際、１ＧＢのデータ容量をコンバートするのに何分かかるのかを示す情報である。たとえば、図２を参照すると、ＶＭｗａｒｅからＸｅｎへのコンバートに１ＧＢあたり２分かかることが分かる。
【００３１】
図３は、本実施の形態によるダウンタイムテーブル３７２を説明する図である。ダウンタイムテーブル３７２は、コンバート処理中にコンバート処理されているＶＭが何分間停止するのかを示す情報である。例えば、図３を参照すると、ＶＭｗａｒｅ上のＶＭをＸｅｎ上へ移行させるためには、移行するＶＭを１０分間停止させる必要があることが分かる
【００３２】
図４は、本実施の形態によるペナルティテーブル３７３を説明する図である。ペナルティテーブル３７３は、評価関数から評価値を算出する際に用いられる情報を示す。このペナルティテーブル３７３の情報を用いることで、移行元サーバと移行先サーバ間でハードウエア（ＨＷ：ｈａｒｄｗａｒｅ）構成の違いを評価値に反映させることができる。例えば、図４を参照すると、ＮＩＣが１枚足りない場合、ペナルティ値は３であるいうことを示す。
【００３３】
図５は、本実施の形態によるパラメータテーブル３７４を説明する図である。パラメータテーブル３７４は、評価値を算出する際に使う各種パラメータを示す情報である。このパラメータテーブル３７４の情報を用いることで、ＶＭごとにパラメータを割り振ることが可能となり、より適切な評価値を算出することができる。このパラメータテーブル３７４の値は、ＶＭを登録時に必要に応じて管理者が記入する。また、管理者が値を入力しなかった場合には、デフォルトの値が設定されるようになっている。
【００３４】
図６は、本実施の形態による。コンバートテーブル３７５を説明する図である。コンバートテーブル３７５は、コンバートを行う際、移行元ＶＭＭと移行先ＶＭＭの種類から、どの方法でコンバートを行えばよいかを示す情報である。コンバートテーブル３７５中で空欄となっている箇所は、コンバート手段がないことを示している。図６を参照すると、ＶＭｗａｒｅからＸｅｎへはｖｍ２ｘｅｎというソフトを用いてコンバートすることができるが、Ｘｅｎから物理マシンへはコンバートテーブル３７５中に何も書かれていないため、コンバート手段がないということを示す。
【００３５】
情報取得部３１０は、管理サーバ３００上にあり、サーバ１００，２００から各種情報（ＨＷ、ＶＭＭ、ＶＭ情報および負荷情報）の収集を各サーバ１００，２００の情報収集部１３１，２３１に依頼し、その情報を取りまとめる機能を有する。
【００３６】
移行先判断部３２０は、移行先サーバを決定する機能と、移行先サーバを決定するため、評価関数を用いて評価対象となるサーバ２００の評価値を算出する機能とを有する。評価関数による評価値を算出するため、移行先判断部３２０は、コンバートタイムテーブル３７１（図２）、ダウンタイムテーブル３７２（図３）、ペナルティテーブル３７３（図４）、およびパラメータテーブル３７４（図５）へのアクセス権限を持つ。
【００３７】
処理命令部３３０は、各サーバ１００，２００に各種命令を与える機能を有する。
【００３８】
コンバート処理部３４０は、コンバートが必要なＶＭに対し、イメージの複製、およびコンバート作業の機能を有する。本機能実現のため、コンバート処理部３４０は、ストレージ４００への読み書き権限、コンバートテーブル３７５（図５）へのアクセス権限、およびコンバートタイムテーブル３７１（図２）とダウンタイムテーブル３７２（図３）への更新権限を持つ。
【００３９】
ライブマイグレーション部３５０は、ライブマイグレーションが使用できるか否かを判断する機能と、ライブマイグレーションが使用できる場合にライブマイグレーションを実施する機能とを有する。
【００４０】
ストレージ４００は、ＦＣおよびＬＡＮのインタフェースを持ち、サーバ１００，２００、および管理サーバ３００と同じネットワークに所属している。ストレージ４００には、ＶＭＭ１３０，２３０上で動作しているＶＭ１１０，１２０、および２１０のイメージが記録されている。
【００４１】
ＬＡＮスイッチ５００には、サーバ１００，２００、管理サーバ３００、およびストレージ４００が接続されており、１つのネットワークを形成している。
【００４２】
ＦＣスイッチ６００には、サーバ１００，２００、管理サーバ３００、およびストレージ４００が接続されており、１つのＳＡＮを形成している。
【００４３】
なお、ここで、「ＶＭの移行」とは、あるＶＭを、それが現在稼動しているＶＭＭ（移行元ＶＭＭ）から他のＶＭＭ（移行先ＶＭＭ）の管理下に移し、稼動させる技術を示す。
【００４４】
ここで、管理サーバ３００のハードウエア構成の説明をする。
【００４５】
図７は、本実施の形態による管理サーバ３００のハードウエア構成を示すブロック図である。
【００４６】
図７を参照すると、本発明による管理サーバ３００は、一般的なコンピュータ装置と同様のハードウエア構成によって実現することができ、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１００１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のメインメモリであり、データの作業領域やデータの一時退避領域に用いられる主記憶部１００２、ネットワーク２０００を介してデータの送受信を行う通信制御部１００３、液晶ディスプレイ、プリンタやスピーカ等の提示部１００４、キーボードやマウス等の入力部１００５、周辺機器と接続してデータの送受信を行うインタフェース部１００６、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、磁気ディスク、半導体メモリ等の不揮発性メモリから構成されるハードディスク装置である補助記憶部１００７、本情報処理装置の上記各構成要素を相互に接続するシステムバス１００８等を備えている。
【００４７】
本発明による管理サーバ３００は、その動作を、管理サーバ３００内部にそのような機能を実現するプログラムを組み込んだ、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）等のハードウエア部品からなる回路部品を実装してハードウエア的に実現することは勿論として、上記した各構成要素の各機能を提供するプログラムを、コンピュータ処理装置上の管理サーバ３００で実行することにより、ソフトウエア的に実現することができる。
【００４８】
すなわち、ＣＰＵ１００１は、補助記憶部１００７に格納されているプログラムを、主記憶部１００２にロードして実行し、管理サーバ３００の動作を制御することにより、上述した各機能をソフトウェア的に実現する。
【００４９】
なお、サーバ１００，２００が上述のような構成を有し、上述した各機能をハードウエア的又はソフトウェア的に実現してもよい。
【００５０】
（第１の実施の形態の動作）
次に、図８、図９、図１０、および図１１のフローチャートを参照して、本実施の形態の動作について詳細に説明する。
【００５１】
サーバ１００にあるＶＭ１２０を移行する場合を考える。
【００５２】
図８を参照し、本実施の形態の動作について概要を説明する。
【００５３】
移行元サーバ１００が管理サーバ３００に対し、ＶＭ１２０の移行を要求することにより、このフローチャートは開始される。
【００５４】
まず、管理サーバ３００は、情報取得部３１０を用いて、サーバ１００，２００のハードウエア，ＶＭＭ、負荷に関する情報、および移行するＶＭ１２０の構成情報を取得する（Ｓ１０１）。取得方法の詳細については後述する。
【００５５】
Ｓ１０１で取得した情報に基づいて、管理サーバ３００にある移行先判断部３２０が、移行先対象となるサーバ２００の評価値を計算し、移行先サーバを決定する（Ｓ１０２）。全ての移行先対象サーバが条件を満たしていない場合は、移行先サーバは無しとなる。評価関数および移行先サーバ決定方法については後述する。
【００５６】
移行先判断部３２０は、移行先サーバを決めることができたか否かを調べ（Ｓ１０３）、移行できるサーバがなかった場合は、例えば、移行できないというメッセージを提示部１００４に表示し、処理を終了する（Ｓ１０８）。
【００５７】
ライブマイグレーション部３５０は、移行先サーバが決定した場合、ライブマイグレーションが使用できるか否かを判断する（Ｓ１０４）。ライブマイグレーションとは、ＶＭをダウンタイムがゼロで移行させる技術である。ライブマイグレーションを利用できるかどうかは、コンバートテーブル３７５を参照することで判断する。ライブマイグレーションが使用可能であれば、ライブマイグレーション部３５０においてライブマイグレーションを実施し（Ｓ１０５）、管理サーバ３００が全体の処理を終了し、ライブマイグレーションが使用不可の場合はコンバート処理部３４０においてステップＳ１０６を実行する。
【００５８】
コンバート処理部３４０は、ライブマイグレーションが使用できない場合、ＶＭ１２０のイメージ形式を、移行先サーバ２００上にあるＶＭＭ２３０の扱うことができるイメージ形式へコンバートする（Ｓ１０６）。また、この作業終了時には、移行元サーバ１００にあるＶＭ１２０はシャットダウンしている。
【００５９】
最後に、処理命令部３３０が、移行先サーバ２００に移行したＶＭ１２０を起動し（Ｓ１０７）、処理が終了となる。
【００６０】
次に、図９を参照し、本実施の形態の各種情報取得部分について詳細に説明する。この処理は、管理サーバ３００がサーバ１００，２００から各種情報を取得するためのものであり、図８のＳ１０１で実行される。図９では、管理サーバ３００がサーバ１００の情報を取得するときの様子を記載しているが、サーバ２００に対して情報を取得するときも同様である。
【００６１】
まず、管理サーバ３００にある情報取得部３１０が、サーバ１００上の情報収集部１３１に情報の収集を依頼する（Ｓ２０１）。このとき情報取得部３１０は、情報収集部１３１に欲しい情報の種類およびフォーマットを知らせる。
【００６２】
次いで、情報収集部１３１は、情報取得部３１０がハードウエアおよびＶＭＭの構成情報収集を依頼していればステップ２０３を実行し、ハードウエアおよびＶＭＭの情報が必要なければステップ２０３を飛ばしステップ２０４を実行する（Ｓ２０２）。
【００６３】
情報収集部１３１は、サーバ１００のハードウエア構成およびＶＭＭに関する情報を取得する（Ｓ２０３）。ハードウエア構成情報とは、ＣＰＵの数、ＮＩＣおよびＨＢＡの数と接続先の情報がある。ＶＭＭに関する情報とは、ＶＭＭの種類およびバージョン情報がある
【００６４】
次に、情報収集部１３１は、情報取得部３１０がサーバ１００上にあるＶＭ１１０、および１２０の情報収集を依頼していればステップ２０５を実行し、ＶＭの情報が必要なければステップ２０５を実行せずステップ２０６を実行する（Ｓ２０４）。
【００６５】
情報収集部１３１は、移行するＶＭ１２０の情報を取得する（Ｓ２０５）。取得する情報としては、仮想ＣＰＵの数、仮想ＬＡＮの数と物理ＬＡＮとの対応関係、仮想ＨＢＡの数と物理ＨＢＡとの対応関係がある。
【００６６】
次に、情報収集部１３１は、情報取得部３１０が負荷情報収集を必要としていればステップ２０７を実行し、負荷情報を必要としていなければステップ２０８を実行する（Ｓ２０６）。
【００６７】
情報収集部１３１は、サーバ１００にある負荷計測部１３２から負荷情報を収集する（Ｓ２０７）。負荷計測部１３２は、常時サーバ１００、およびＶＭ１１０，１２０の負荷を計測しており、サーバ１００およびＶＭ１１０，１２０のＣＰＵとメモリに関する負荷情報を適切な形式に整形したうえで、情報収集部１３１に渡す。ここで、負荷情報の適切な形式とは、管理サーバ３００の情報取得部３１０が提示した形式のことである。具体的には、過去のある期間の負荷情報から一定間隔でサンプリングものや、ある期間中の負荷情報から平均や分散などの統計情報を出したもの、あるいは、ある期間中の負荷情報からパターン分析や特徴抽出を使い、負荷変動の特徴を抽出したものなどが考えられる。使えるようであれば他の情報を用いてもよい。または、これらの中から複数の情報を組み合わせて使用することも可能である。
【００６８】
最後に、サーバ１００の情報収集部１３１が、集められた各種情報をまとめて管理サーバ３００が有する情報取得部３１０へ送る（Ｓ２０８）。
【００６９】
次に、図１０を参照し、本実施の形態による移行先決定のアルゴリズムについて詳細に説明する。この処理は、サーバから取得した情報および保持しているテーブルの情報に基づいて移行先サーバを決めるものであり、図８のＳ１０２で実行される。
【００７０】
まず、管理サーバ３００の移行先決定部３２０が、評価対象となるサーバ２００の評価値を評価関数により算出する（Ｓ３０１）。ここでは下記のような評価関数を考える。ただし、下記評価関数において必要なパラメータはパラメータテーブル３７４（図５）から得るものとする。
【００７１】
ここで、
【数１】
2008217302.tif 000003
と定義し、
ＣＰＵの評価関数を、
【数２】
2008217302.tif 000004
と定義し、
メモリの評価関数を、
【数３】
2008217302.tif 000005
と定義し、
コンバート処理時間の評価関数を、
【数４】
2008217302.tif 000006
と定義し、
ダウンタイムの評価関数を、
【数５】
2008217302.tif 000007
と定義し、
ペナルティの評価関数を、
【数６】
2008217302.tif 000008
と定義すると、
Ｓ３０１で算出する計算値は、
【数７】
2008217302.tif 000009
によって求められる。
ただし、以下の条件が課される。
【数８】
2008217302.tif 000010
【００７２】
ここで、ＣＰＵの空き率およびメモリの空き容量は、それぞれ、移行先として評価対象となるサーバでの空き率（容量）から、移行するＶＭ１２０が現在サーバ１００上で消費しているＣＰＵ使用率およびメモリ使用量を差し引いて算出される。このため、移行するＶＭ１２０が使用しているＣＰＵ使用率およびメモリ使用量に比べ、移行先として評価対象となるサーバのＣＰＵの空き率およびメモリの空き容量が少ない場合、これらの値はマイナスとなる。
【００７３】
上記評価関数において、コンバート処理時間の評価関数以降が、移行元サーバと移行先サーバの構成が異なる場合に有効に働いてくる部分であり、本発明の最も重要な部分のひとつである。
【００７４】
コンバート処理時間の評価は、コンバート処理にかかる時間を評価する部分である。ダウンタイムの評価は、移行するＶＭのダウンタイムを評価する部分である。ペナルティの評価は、ハードウエアの違いを評価する部分である。この評価関数では、移行先サーバとして適しているサーバほど高い値が出るようになっている。
【００７５】
次に、移行先判断部３２０は、評価対象全てのサーバに対して、評価値を算出したかどうかを判断し、算出していない場合はそのサーバについて評価値を算出し、評価対象全てのサーバの評価値を算出している場合は次の処理を実行する（Ｓ３０２）。
【００７６】
最後に、移行先判断部３２０は、評価値が所定の閾値以上であり、かつ最も評価値が高いサーバを移行先サーバとして決定し、処理を終了する（Ｓ３０３）。ここで全てのサーバについて評価値が低く閾値に達しなかった場合、移行先サーバは未発見のまま処理を終了する。
【００７７】
閾値の設定に関しては、例えば、評価する全ての項目に対して条件を満たすものを選ぶ場合には、閾値を０の値に設定し、評価関数のＬの値を０の値とする。なぜならば、評価する全ての項目において、条件を満たさない項目は評価値が０または負の値となるためである。
【００７８】
最後に、図１１を参照し、本実施の形態のコンバート処理部分を詳細に説明する。この処理は、移行元サーバと移行先サーバのＶＭＭの種類が異なるときに発生するものであり、図８のＳ１０６に該当する。
【００７９】
まず、管理サーバ３００のコンバート処理部３４０が、コンバートテーブル３７５（図６）を使ってコンバートをするために必要なソフトを調べる（Ｓ４０１）。
【００８０】
次に管理サーバ３００の命令処理部３３０が、移行元サーバ１００のアクセス監視部１３３に対し、移行するＶＭ１２０のディスクアクセス監視を依頼する（Ｓ４０２）。以後、アクセス監視部１３３は、移行するＶＭ１２０内で更新されたファイルを記録する。その理由は、移行するＶＭ１２０の移行前と移行後におけるイメージに矛盾を生じさせないためである。なぜなら、次からの処理で、移行するＶＭ１２０のイメージをストレージ上に複製し、複製したイメージに対してコンバート処理を実行するため、移行するＶＭ１２０内に存在するファイルがコンバート処理中に更新されてもコンバート後のイメージに反映されないからである。そこで、移行するＶＭ１２０のディスクアクセスを監視し、コンバート終了後に更新されたファイルをコンバートしたイメージに適用することで、整合性を保たせる必要が出てくるのである。
【００８１】
次に、管理サーバ３００のコンバート処理部３４０が、ストレージ４００にある移行するＶＭ１２０のイメージを複製する（Ｓ４０３）。管理サーバ３００は、複製を取得することにより、コンバート処理を行う際、移行するＶＭ１２０をシャットダウンすることなく、処理を継続させることが可能である。
【００８２】
コンバート処理部３４０が、Ｓ４０３で複製したイメージに対してコンバート処理を行う（Ｓ４０４）。コンバート処理に使うソフトはＳ４０１で調べたものを用いる。
【００８３】
コンバート終了後、コンバート処理部３４０がコンバートタイムテーブル３７１（図２）を更新する（Ｓ４０５）。コンバートタイムテーブル３７１（図２）には、コンバートの処理時間が記録されているが、初期状態は正確なコンバートタイムではなく、管理者もしくはシステム構築者が概算値を入力している。そこで、より最適な値に近づけるために、下記の式を用いることでコンバートタイムを更新する。
【数９】
2008217302.tif 000011
【００８４】
ここで、Ｎは、移行元サーバと移行先サーバが同じ状況でのコンバート回数となっている。この式（８）を適用することで、コンバートでかかった時間の平均を新たなコンバートタイムとすることができる。
【００８５】
次に、命令処理部３３０は、アクセス監視部１３３に対し、移行するＶＭ１２０のディスクアクセス監視の終了を通知し、移行するＶＭ１２０をシャットダウンする（Ｓ４０６）。この処理以降、移行元サーバ１００でＶＭ１２０が動作することはない。また、アクセス監視部１３３は、移行元サーバ１００上のＶＭ１２０が変更したファイルの情報を、管理サーバ３００にあるコンバート処理部３４０へ通知する。
【００８６】
管理サーバ３００にあるコンバート処理部３４０が、アクセス監視部１３３からの情報に基づき、コンバートしたイメージに対し変更部分の更新を行う（Ｓ４０７）。
【００８７】
命令処理部３３０が、移行先サーバ２００上へ移行したＶＭ１２０を起動させる（Ｓ４０８）。
【００８８】
最後に、管理サーバ３００にあるコンバート処理部３４０が、ダウンタイムテーブル３７２（図３）の値を更新する。ダウンタイムテーブル３７２（図３）の初期状態は正確なダウンタイムではなく、コンバートタイムテーブル３７１と同様、管理者などが概算値を入力している。そこでより正確な値に近づけるため、下記の式を使いダウンタイムを更新する。
【数１０】
2008217302.tif 000012
【００８９】
ここで、Ｎは、コンバートタイム更新の式（式（８））に出てきたＮと同様である。この式（９）を適用することでダウンタイムテーブル３７２を更新する。以上で処理が終了する。
【００９０】
なお、本実施の形態の構成ではサーバは２台ともＶＭＭが導入されている状態であるが、コンバートテーブル３７５に対応が示されていれば、サーバにＶＭＭがインストールされていない状態であっても本発明は適用可能である。ただし、この場合、サーバ上でＶＭＭが動作していないため、情報取得部、負荷計測部およびアクセス監視部はＯＳ上で動かす必要がある。
【００９１】
（第１の実施の形態の効果）
本実施の形態によれば、以下の効果を達成できる。
【００９２】
第１に、複数の異なるＶＭＭが混在する環境において、ＶＭＭの種類やＶＭの移行にかかる時間を考慮した上で、適切な移行先サーバを見つけることができる。
【００９３】
その理由は、全てのサーバからＶＭＭやハードウエアの情報を取得し、コンバート処理時間や移行するＶＭのダウンタイムを把握し、これらの情報を基に評価値を算出するためである。したがって算出された評価値を見ることで、適切な移行先サーバを見つけることができる。
【００９４】
第２に、ＶＭの移行にライブマイグレーションが使えずコンバート処理を行う状況において、移行処理中に発生するＶＭのダウンタイムを短くすることができる。
【００９５】
その理由は、ＶＭをコンバートするとき、一度コンバートするイメージを複製することにより、コンバート処理中に移行するＶＭをシャットダウンする必要がなくなるためである。コンバート中にＶＭ内で更新されたファイルは、コンバート後のイメージに差分として更新することで、コンバートしていないイメージとの整合性を保つことができる。
【００９６】
第３に、評価値に閾値を設定することにより、移行先として適切なサーバが存在しなかった場合、無理に移行先サーバを決めてしまうという動作を防ぐことができる。
【００９７】
第４に、ＶＭを他のＶＭ形式へ変換する際に中間出力を用いる必要が無いため、移行の処理負担を軽減することができる。
【００９８】
第５に、一般に、プログラムの容量は数ＭＢ（メガバイト）程度であるが、ＶＭは数ＧＢ（ギガバイト）から数十ＧＢとなるのが普通であるため、２段階以上の処理でＶＭを他のＶＭ形式へ変換すると非常に多くの処理時間を必要とするため、変更処理事態が無益なものとなってしまう。これに対し、本実施の形態によれば、中間出力を用いることなく１段階の処理でＶＭを他のＶＭ形式へ変換することができるので、迅速に移行の処理を行うことができる。
【００９９】
以上好ましい実施の形態をあげて本発明を説明したが、本発明は必ずしも、上記実施の形態に限定されるものでなく、その技術的思想の範囲内において様々に変形して実施することができる。
【０１００】
例えば、上記第１の実施の形態では、サーバ２台、ＶＭ３台のときを示しているが、サーバ台数がＮ台になり、それぞれのサーバ内に存在するＶＭの数が、サーバでの上限以内であれば本発明を適用できることは言うまでもない。
【０１０１】
また、例えば、コンバートテーブル３７５やダウンタイムテーブル３７２などのテーブルに新たなＶＭＭのエントリを追加することにより、第１の実施の形態に書かれていないＶＭＭ（例えば、Ｍｉｃｒｏｓｏｆｔ社Ｖｉｒｔｕａｌ  Ｓｅｒｖｅｒなど）にも本発明を適用できる。
【０１０２】
さらに、本発明にて提案した数式は例の一つに過ぎず、別の数式を用いても本発明にて同様に扱うことが可能である。
【０１０３】
さらにまた、上記第１の実施の形態ではデータをＳＡＮにおいているが、ストレージの種類を問わず本発明を適用できる。ただし、ローカルのストレージを使用する場合、イメージを複製するときにネットワークを介してコピーしなければならないので、多くのネットワーク資源と時間を必要とする。
【０１０４】
さらにまた、本発明は、本実施の形態において「サーバ」と記載されている対象自体が仮想的に構成されている場合においても同様に適用可能である。例えば、グリッドコンピューティング等の分野では、複数のコンピュータを１台のコンピュータとして扱う基盤技術が登場してきているが、このような仮想的な対象に対してＶＭを移行する場合であっても本発明は同様に適用できる。
【産業上の利用可能性】
【０１０５】
本発明は、システム全体の稼動の効率を向上するため、サーバの仮想化技術を利用するシステムにおいても適用可能である。
【図面の簡単な説明】
【０１０６】
【図１】本発明の第１の実施の形態による構成を示すブロック図である。
【図２】第１の実施の形態によるコンバートタイムテーブル３７１を説明する図である。
【図３】第１の実施の形態によるダウンタイムテーブル３７２を説明する図である。
【図４】第１の実施の形態によるペナルティテーブル３７３を説明する図である。
【図５】第１の実施の形態によるパラメータテーブル３７４を説明する図である。
【図６】第１の実施の形態によるコンバートテーブル３７５を説明する図である。
【図７】第１の実施の形態による管理サーバ３００のハードウエア構成を示すブロック図である。
【図８】第１の実施の形態の動作を示すフローチャートである。
【図９】第１の実施の形態の動作を示すフローチャートである。
【図１０】第１の実施の形態の動作を示すフローチャートである。
【図１１】第１の実施の形態の動作を示すフローチャートである。
【符号の説明】
【０１０７】
１００、２００：サーバ
１１０、１２０：ＶＭ
１１０１、１２０１、２１０１：ＯＳ
１１０２、１２０２、２１０２：アプリケーション
１１０３、１２０３、２１０３：仮想ＬＡＮ
１１０４、１２０４、２１０４：仮想ホストバスアダプタ（ＨＢＡ）
１３０、２３０：ＶＭＭ
１３１、２３１：情報収集部
１３２、２３２：負荷計測部
１３３、２３３：アクセス監視部
１４０、２４０：ＬＡＮモジュール
１５０、２５０：ホストバスアダプタ（ＨＢＡ）
３００：管理サーバ
３１０：情報取得部
３２０：移行先判断部
３３０：処理命令部
３４０：コンバート処理部
３５０：ライブマイグレーション部
３６０：  ＯＳ
３７０：記憶部
３７１：コンバートタイムテーブル
３７２：ダウンタイムテーブル
３７３：ペナルティテーブル
３７４：パラメータテーブル
３７５：コンバートテーブル
３８０：ＬＡＮモジュール
３９０：ホストバスアダプタ（ＨＢＡ）
４００：ストレージ
５００：ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）スイッチ
６００：ＦＣスイッチ
１００１：ＣＰＵ
１００２：主記憶部
１００３：通信制御部
１００４：提示部
１００５：入力部
１００６：インタフェース部
１００７：補助記憶部
１００８：システムバス
２０００：ネットワーク
【図１】
2008217302.tif 000013
【図２】
2008217302.tif 000014
【図３】
2008217302.tif 000015
【図４】
2008217302.tif 000016
【図５】
2008217302.tif 000017
【図６】
2008217302.tif 000018
【図７】
2008217302.tif 000019
【図８】
2008217302.tif 000020
【図９】
2008217302.tif 000021
【図１０】
2008217302.tif 000022
【図１１】
2008217302.tif 000023