(57)【要約】  本発明は、複数の仮想マシン提供サーバを有する計算機システムにおいて、複数の仮想マシンを起動する際に、仮想マシンの起動時間のばらつきを抑えることを目的とする。実行サーバ分散手段１３は、仮想マシン９１が動作している仮想マシン提供サーバ９０と仮想マシン９１の状態を記憶する仮想マシン状態管理テーブル３２を参照して、分散的処理指定テーブル３１に登録された特定処理（仮想マシンの起動処理など）を実行する仮想マシンが分散するように仮想マシンの位置を決定する。運用サーバ集約手段１６は、仮想マシン状態管理テーブル３２を参照して、特定処理実行後の通常運用中の仮想マシンを集約するように仮想マシン９１の配置を決定する（図１）。
2008146677.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続され、それぞれが仮想マシンを稼動可能である複数の仮想マシン提供サーバの負荷状態を管理する仮想マシン状態管理手段と、
前記仮想マシン状態管理手段に管理されたデータを参照して、予め定められた特定処理を負荷の少ない仮想マシン提供サーバに分散して実行する実行サーバ分散手段と、
前記仮想マシン状態管理手段に管理されたデータを参照して、前記特定処理を終えた仮想マシンを移動させて、仮想マシンを多く集約する仮想マシン提供サーバと、その他の仮想マシン提供サーバとに２極化する運用サーバ集約手段と、
を備えることを特徴とする仮想マシン管理装置。
【請求項２】
前記特定処理は、処理負荷が高いことを特徴とする請求項１記載の仮想マシン管理装置。
【請求項３】
受け付けた前記特定処理の要求を一時的に保持する処理待ちキューと、該処理待ちキューに保持された要求を処理する予め定められた複数の処理方式ごとの処理時間を計算する処理時間計算手段と、該処理時間計算手段で計算された各処理方式の処理時間を比較する処理時間比較手段と、該処理時間比較手段での比較結果に基づき、処理方式を選択する選択手段とを有することを特徴とする請求項１または２に記載の仮想マシン管理装置。
【請求項４】
前記実行サーバ分散手段は、リソース使用率が最小の仮想マシン提供サーバを処理実行サーバとして選択することを特徴とする請求項１乃至３何れか１項に記載の仮想マシン管理装置。
【請求項５】
前記実行サーバ分散手段は、動作中の仮想マシン数が最小の仮想マシン提供サーバを処理実行サーバとして選択することを特徴とする請求項１乃至３何れか１項に記載の仮想マシン管理装置。
【請求項６】
前記運用サーバ集約手段は、各仮想マシン提供サーバのリソース使用率が予め定められた最大値を超えない範囲で、仮想マシンが存在しない仮想マシン提供サーバ数を最大にするように、前記特定処理を終えた仮想マシンの移動先仮想マシン提供サーバを選択することを特徴とする請求項１乃至５何れか１項に記載の仮想マシン管理装置。
【請求項７】
前記運用サーバ集約手段は、各仮想マシン提供サーバの仮想マシン数が予め定められた最大値を超えない範囲で、仮想マシンが存在しない仮想マシン提供サーバ数を最大にするように、前記特定処理を終えた仮想マシンの移動先仮想マシン提供サーバを選択することを特徴とする請求項１乃至５の何れか１項に記載の仮想マシン管理装置。
【請求項８】
各仮想マシン提供サーバの使用可能なリソース量の上限を時刻別に登録する仮想マシン数指定テーブルを有し、前記運用サーバ集約手段は、前記仮想マシン数指定テーブルを参照して各仮想マシン提供サーバに対して定められた上限リソース値を超えない範囲で、仮想マシンが存在しない仮想マシン提供サーバ数を最大にするように、前記特定処理を終えた仮想マシンの移動先仮想マシン提供サーバを選択することを特徴とする請求項１乃至７の何れか１項に記載の仮想マシン管理装置。
【請求項９】
各仮想マシン提供サーバの提供可能な仮想マシン数の上限を時刻別に登録する仮想マシン数指定テーブルを有し、前記運用サーバ集約手段は、前記仮想マシン数指定テーブルを参照して各仮想マシン提供サーバに対して定められた仮想マシン数を超えない範囲で、仮想マシンが存在しない仮想マシン提供サーバ数を最大にするように、前記特定処理を終えた仮想マシンの移動先仮想マシン提供サーバを選択することを特徴とする請求項１乃至７の何れか１項に記載の仮想マシン管理装置。
【請求項１０】
前記特定処理の要求が発生する時刻分布を表す要求パターンテーブルと、該要求パターンテーブルの表す前記時刻分布に適合した前記仮想マシン数指定テーブルを作成するパターン分析手段とを有することを特徴とする請求項８に記載の仮想マシン管理装置。
【請求項１１】
前記パターン分析手段は、前記要求パターンテーブルから処理要求数の極小値を求め、該極小値をとる時刻までの累積要求数を求め、該累積要求数に割り当てる運用中のリソース量の総和を仮想マシン提供サーバ数で除算した解をその時刻での仮想マシン提供サーバ当たりの上限リソース使用量として前記仮想マシン数指定テーブルに登録することを特徴とする請求項１０に記載の仮想マシン管理装置。
【請求項１２】
前記特定処理の要求が発生する時刻分布を表す要求パターンテーブルと、該要求パターンテーブルの表す前記時刻分布に適合した前記仮想マシン数指定テーブルを作成するパターン分析手段とを有することを特徴とする請求項８に記載の仮想マシン管理装置。
【請求項１３】
前記パターン分析手段は、前記要求パターンテーブルから処理要求数の極小値を求め、該極小値をとる時刻までの累積要求数を求め、該累積要求数を仮想マシン提供サーバ数で除算した解をその時刻での仮想マシン提供サーバ当たりの上限仮想マシン数として前記仮想マシン数指定テーブルに登録することを特徴とする請求項１２に記載の仮想マシン管理装置。
【請求項１４】
仮想マシンを稼動させる複数の仮想マシン提供サーバがネットワークを通じて接続された計算機システムにおける仮想マシン管理方法であって、仮想マシン提供サーバの負荷状態を記憶する仮想マシン状態管理手段に記憶されたデータを参照して、予め定められた特定処理を負荷の少ない仮想マシン提供サーバに分散して実行する実行サーバ分散ステップと、前記特定処理を終えた仮想マシンを移動させて、仮想マシンを多く集約する仮想マシン提供サーバと、その他の仮想マシン提供サーバとに２極化する運用サーバ集約ステップとを含むことを特徴とする仮想マシン管理方法。
【請求項１５】
受け付けた前記特定処理の要求を処理待ちキューに一時的に保持し、前記処理待ちキューに保持された要求を処理する予め定められた複数の処理方式ごとの処理時間を計算し、該計算された各処理方式の処理時間を比較し、該比較結果に基づき、処理方式を選択する処理方式選択ステップを含むことを特徴とする請求項１４記載の仮想マシン管理方法。
【請求項１６】
前記実行サーバ分散ステップでは、リソース使用率が最小の仮想マシン提供サーバを処理実行サーバとして選択することを特徴とする請求項１４または１５に記載の仮想マシン管理方法。
【請求項１７】
前記実行サーバ分散ステップでは、動作中の仮想マシン数が最小の仮想マシン提供サーバを処理実行サーバとして選択することを特徴とする請求項１４または１５に記載の仮想マシン管理方法。
【請求項１８】
前記運用サーバ集約ステップでは、各仮想マシン提供サーバのリソース使用率が予め定められた最大値を超えない範囲で、仮想マシンが存在しない仮想マシン提供サーバ数を最大にするように、前記特定処理を終えた仮想マシンの移動先仮想マシン提供サーバを選択することを特徴とする請求項１４乃至１７の何れか１項に記載の仮想マシン管理方法。
【請求項１９】
前記運用サーバ集約ステップでは、各仮想マシン提供サーバの仮想マシン数が予め定められた最大値を超えない範囲で、仮想マシンが存在しない仮想マシン提供サーバ数を最大にするように、前記特定処理を終えた仮想マシンの移動先仮想マシン提供サーバを選択することを特徴とする請求項１４乃至１７の何れか１項に記載の仮想マシン管理方法。
【請求項２０】
前記運用サーバ集約ステップでは、各仮想マシン提供サーバの使用可能なリソース量の上限を時刻別に記憶する仮想マシン数指定テーブルを参照して、各仮想マシン提供サーバに対して定められた上限リソース値を超えない範囲で、仮想マシンが存在しない仮想マシン提供サーバ数を最大にするように、前記特定処理を終えた仮想マシンの移動先仮想マシン提供サーバを選択することを特徴とする請求項１４乃至１９の何れか１項に記載の仮想マシン管理方法。
【請求項２１】
前記運用サーバ集約ステップでは、各仮想マシン提供サーバの提供可能な仮想マシン数の上限を時刻別に記憶する仮想マシン数指定テーブルを参照して、各仮想マシン提供サーバに対して定められた仮想マシン数を超えない範囲で、仮想マシンが存在しない仮想マシン提供サーバ数を最大にするように、前記特定処理を終えた仮想マシンの移動先仮想マシンサーバを選択することを特徴とする請求項１４乃至１９の何れか１項に記載の仮想マシン管理方法。
【請求項２２】
前記特定処理の要求が発生する時刻分布を表す要求パターンテーブルを参照して、前記時刻分布に適合した前記仮想マシン数指定テーブルを作成するパターン分析ステップを含むことを特徴とする請求項２０に記載の仮想マシン管理方法。
【請求項２３】
前記パターン分析ステップでは、前記要求パターンテーブルから処理要求数の極小値を求め、該極小値をとる時刻までの累積要求数を求め、該累積要求数に割り当てる運用中のリソース量の総和を仮想マシン提供サーバ数で除算した解をその時刻での仮想マシン提供サーバ当たりの上限リソース使用量として前記仮想マシン数指定テーブルに登録することを特徴とする請求項２１に記載の仮想マシン管理方法。
【請求項２４】
前記特定処理の要求が発生する時刻分布を表す要求パターンテーブルを参照して、前記時刻分布に適合した前記仮想マシン数指定テーブルを作成するパターン分析ステップを含むことを特徴とする請求項２１に記載の仮想マシン管理方法。
【請求項２５】
前記パターン分析ステップでは、前記要求パターンテーブルから処理要求数の極小値を求め、該極小値をとる時刻までの累積要求数を求め、該累積要求数を仮想マシン提供サーバ数で除算した解をその時刻での仮想マシン提供サーバ当たりの上限仮想マシン数として前記仮想マシン数指定テーブルに登録することを特徴とする請求項２４に記載の仮想マシン管理方法。
【請求項２６】
仮想マシンを稼動させる複数の仮想マシン提供サーバがネットワークを通じて接続された計算機システムにおける仮想マシン管理装置を構成するコンピュータを、仮想マシン提供サーバの負荷状態を記憶する仮想マシン状態管理手段に記憶されたデータを参照して、予め定められた特定処理を負荷の少ない仮想マシン提供サーバに分散して実行する実行サーバ分散手段と、前記仮想マシン状態管理手段に記憶されたデータを参照して、前記特定処理を終えた仮想マシンを移動させて、仮想マシンを多く集約する仮想マシン提供サーバと、その他の仮想マシン提供サーバとに２極化する運用サーバ集約手段として機能させるための仮想マシン管理プログラム。
【請求項２７】
前記コンピュータを、さらに、受け付けた前記特定処理の要求を一時的に保持する処理待ちキューと、該処理待ちキューに保持された要求を処理する予め定められた複数の処理方式ごとの処理時間を計算する処理時間計算手段と、該処理時間計算手段で計算された各処理方式の処理時間を比較する処理時間比較手段と、該処理時間比較手段での比較結果に基づき、処理方式を選択する選択手段として機能させるための請求項２６記載の仮想マシン管理プログラム。
【請求項２８】
前記実行サーバ分散手段は、リソース使用率が最小の仮想マシン提供サーバを処理実行サーバとして選択することを特徴とする請求項２６または２７に記載の仮想マシン管理プログラム。
【請求項２９】
前記実行サーバ分散手段は、動作中の仮想マシン数が最小の仮想マシン提供サーバを処理実行サーバとして選択することを特徴とする請求項２６または２７に記載の仮想マシン管理プログラム。
【請求項３０】
前記運用サーバ集約手段は、各仮想マシン提供サーバのリソース使用率が予め定められた最大値を超えない範囲で、仮想マシンが存在しない仮想マシン提供サーバ数を最大にするように、前記特定処理を終えた仮想マシンの移動先仮想マシン提供サーバを選択することを特徴とする請求項２６乃至２９の何れか１項に記載の仮想マシン管理プログラム。
【請求項３１】
前記運用サーバ集約手段は、各仮想マシン提供サーバの仮想マシン数が予め定められた最大値を超えない範囲で、仮想マシンが存在しない仮想マシン提供サーバ数を最大にするように、前記特定処理を終えた仮想マシンの移動先仮想マシン提供サーバを選択することを特徴とする請求項２６乃至２９の何れか１項に記載の仮想マシン管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願についての記載）
本願は、先の日本特許出願２００７−１３７７０９号（２００７年５月２４日出願）の優先権を主張するものであり、前記先の出願の全記載内容は、本書に引用をもって繰込み記載されているものとみなされる。
本発明は仮想マシン管理装置および仮想マシン管理方法に関し、特に複数の仮想マシン提供サーバがネットワークを通じて接続された計算機システムにおける仮想マシン管理装置および仮想マシン管理方法に関する。
【背景技術】
【０００２】
従来、単一のサーバ（ワークステーションやパーソナルコンピュータ等のコンピュータ）上で複数のオペレーティングシステム（ＯＳ）を動作させることにより、１台のコンピュータを仮想的に複数台のコンピュータとして使うことのできる仮想マシン（ＶＭ：Virtual Machine）技術が知られている。この種の技術を適用した製品として、ヴイエムウェア社による「VMWare ESX Server」、マイクロソフト社による「Virtual Server」、および米国Xen Source社による「Xen」などが知られている。これらの製品では、ＶＭ生成用のコマンドを発行することにより新たな仮想マシンを、サーバ上に起動することができる。【０００３】
また、仮想マシン技術を利用したシステムとして、シンクライアントシステムがある。シンクライアントシステムは、複数の社員の業務用コンピュータをサーバ上の仮想マシンに集約し、社員はネットワークを介した端末からこの仮想マシンを操作するシステムである。企業での社員の通常業務は一般的に高性能化したコンピュータに対して使用効率が低いため、社員のコンピュータを仮想マシンとしてサーバに集約することで、コンピュータリソースの使用率向上を図っている。また、サーバ上に各社員の業務データを集約することで情報漏えい防止などのセキュリティを強化することもできる。【０００４】
また、サーバがネットワークを通じて複数台接続された計算機システムにおいて、或るサーバ上で起動された仮想マシンを他のサーバに移動させる技術が知られている。たとえば、VMwareではvMotion、Xenではmigrationとして仮想マシンの移動機能を提供している。【０００５】
このようにサーバが複数台に分散した環境において、仮想マシンを新たに起動する場合、特許文献１に記載されるように、リソースに余裕のあるサーバを選択する方法が採用されている。また特許文献１では、新規仮想マシンの起動とは非同期に、既存の仮想マシンの所定時間毎のパフォーマンスを示す実測データに基づいて、各仮想マシンを複数のサーバの何れかで稼動させた場合の各時間における各仮想マシンのパフォーマンス値の合計が最大となる仮想マシンとサーバの組み合わせを算出し、この算出した組合せに対して各仮想マシンの再配置を行うようにしている。【０００６】
【特許文献１】特開２００５−１１５６５３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
以上の特許文献１の開示事項は、本書に引用をもって繰り込み記載されているものとする。以下に本発明による関連技術の分析を与える。
上述したように、仮想マシンの新規起動時、リソースに余裕のあるサーバを選択して仮想マシンを起動する方法では、選択したサーバ毎のリソース余裕度の相違によって仮想マシンの起動時間のばらつきが大きくなるという課題がある。以下、この課題について、図１９を参照して具体的に説明する。【０００８】
図１９を参照すると、仮想マシン提供サーバ９０１が１０台存在している。各仮想マシン提供サーバ９０１には、仮想マシンソフトウェア９１０がインストールされており、複数の仮想マシン９０３を起動することができるようになっている。このような計算機システムにおいて、各仮想マシン提供サーバ９０１に５台ずつ、合計５０台の仮想マシンを起動させる際の各仮想マシンの起動時間を見積もる。ここでの計算では、次の条件を仮定する。【０００９】
仮想マシン提供サーバ９０１のリソースを１００％利用した際の各仮想マシンの起動時間を１分とする。起動後の運用中の仮想マシンには１台当たりサーバリソースの１０％を割り当てる。仮想マシンの起動時は、サーバ内の余剰リソースを全て利用することができる。ここでの余剰リソースとは、運用中の仮想マシンに割り当てられたリソース量を除いたリソースを指す。また、同一仮想マシン提供サーバ９０１上で複数の仮想マシンが起動する際は、余剰リソースを等分して使用する。【００１０】
このとき、図３に示すようなパターンで仮想マシンの起動要求が発生した場合の各仮想マシンの起動時間を計算する。図３において、横軸は時刻を、縦軸はその時点で生じる仮想マシンの起動要求数を示す。例えば、時刻ｔ３では起動要求数は２であり、時刻ｔ１０では起動要求数は５である。【００１１】
図１９の計算機システムでは、起動要求を受け取ると、リソース使用率が低い仮想マシン提供サーバ９０１上で起動される。このため、仮想マシンを作成する順番は、最初の仮想マシン９０３−１は仮想マシン提供サーバ９０１−１に作成され、次の仮想マシン９０３−２が仮想マシン提供サーバ９０１−２に作成されるというように順に１台ずつ作成される。仮想マシン９０３−１０が仮想マシン提供サーバ９０１−１０に作成されると、全ての仮想マシン提供サーバ９０３上に仮想マシンが１台ずつ作成された状態となる。次に仮想マシン９０３−１１を作成する際は、仮想マシン提供サーバ９０１−１へ戻って作成する。このように、図１９の計算機システムでは、仮想マシン提供サーバ９０１上の仮想マシン数が均一になるように作成される。【００１２】
各仮想マシン９０３の起動時間は、図１９の表９２１で示す値となる。仮想マシン９０３−１から仮想マシン９０３−１０までは、仮想マシン提供サーバ９０１のリソースを１００％利用できるので、１分となる。仮想マシン９０３−１１から仮想マシン９０３−２０までは、既に１台の仮想マシンが運用中であるため、仮想マシン提供サーバ９０１のリソースの９０％を利用する。このため、起動時間は、（１／０．９）分となる。同様に、仮想マシン９０３−４１から仮想マシン９０３−５０までは、既に４台の仮想マシン９０３が運用中であるため、仮想マシン提供サーバ９０１のリソースの６０％を利用する。このため、起動時間は、（１／０．６）分となる。このように求められる仮想マシンの起動時間の分布を図２０に示す。【００１３】
このように図１９の計算機システムによると、複数の仮想マシン提供サーバ９０１からリソースを均等に利用し、空きリソースが分散するため、上記の例では、６割の仮想マシンで起動時間が無負荷時の１．２倍以上となる。【００１４】
仮想マシンに限らず一般のコンピュータの場合も同じであるが、起動時間のばらつきや遅延はユーザを苛立たせる原因になるため、できるだけ抑制する必要がある。【００１５】
本発明の目的は、仮想マシンの起動処理のように、一時的に負荷が増大する処理の処理時間のばらつきを抑えることができる仮想マシン管理装置および方法を提供することにある。
【課題を解決するための手段】
【００１６】
本発明の第１の視点によれば、仮想マシンを稼動させる複数の仮想マシン提供サーバがネットワークを通じて接続された計算機システムにおける仮想マシン管理装置が提供される。この仮想マシン管理装置は、仮想マシン提供サーバの負荷状態を管理する仮想マシン状態管理手段、例えば、仮想マシン状態管理テーブルを備える。また、この仮想マシン管理装置は、該仮想マシン状態管理手段に管理されたデータ、例えば、仮想マシン状態管理テーブルを参照して、予め定められた特定処理を負荷の少ない仮想マシン提供サーバに分散して実行する実行サーバ分散手段を備える。また、この仮想マシン管理装置は、前記仮想マシン状態管理手段に管理されたデータ、例えば、仮想マシン状態管理テーブルを参照して、前記特定処理を終えた仮想マシンを移動させて、仮想マシンを多く集約する仮想マシン提供サーバと少ない仮想マシン提供サーバとに２極化する運用サーバ集約手段とを備える。即ち、前記運用サーバ集約手段は、仮想マシンを多く集約する仮想マシン提供サーバとその他の（仮想マシン数が少ない）仮想マシン提供サーバとに２極化するよう前記特定処理を終えた仮想マシンを他の仮想マシン提供サーバに移動する。【００１７】
本発明の第２の視点によれば、仮想マシンを稼動させる複数の仮想マシン提供サーバがネットワークを通じて接続された計算機システムにおける仮想マシン管理方法であって、仮想マシン提供サーバの負荷状態を記憶する仮想マシン状態管理手段に記憶されたデータを参照して、予め定められた特定処理を負荷の少ない仮想マシン提供サーバに分散して実行する実行サーバ分散ステップと、前記特定処理を終えた仮想マシンを（他の仮想マシン提供サーバに）移動させて、仮想マシンを多く集約する仮想マシン提供サーバとその他の仮想マシン提供サーバとに２極化する運用サーバ集約ステップとを含む仮想マシン管理方法が提供される。【００１８】
本発明の第３の視点によれば、仮想マシンを稼動させる複数の仮想マシン提供サーバがネットワークを通じて接続された計算機システムにおける仮想マシン管理装置を構成するコンピュータを、仮想マシン提供サーバの負荷状態を記憶する仮想マシン状態管理手段に記憶されたデータを参照して、予め定められた特定処理を負荷の少ない仮想マシン提供サーバに分散して実行する実行サーバ分散手段と、前記仮想マシン状態管理手段に記憶されたデータを参照して、前記特定処理を終えた仮想マシンを（他の仮想マシン提供サーバに）移動させて、仮想マシンを多く集約する仮想マシン提供サーバと少ない仮想マシン提供サーバとに２極化する運用サーバ集約手段として機能させる仮想マシン管理プログラムが提供される。【００１９】
ここで、特定処理の一例は仮想マシンの起動処理であるが、それだけに限定されるものではない。
【発明の効果】
【００２０】
本発明によれば、仮想マシンの起動処理のように、一時的に負荷が増大する特定処理の処理時間のばらつきを抑えることができる。その理由は、特定処理を終えた仮想マシンを移動させて、仮想マシンを多く集約する仮想マシン提供サーバと少ない仮想マシン提供サーバとに２極化し、その後に特定処理が発生した場合に、できるだけ多くの特定処理を、仮想マシンの存在しない或いは少ない仮想マシン提供サーバ上で実行できるようにしているためである。
【図面の簡単な説明】
【００２１】
【図１】本発明の第１の実施形態の構成を示すブロック図である。
【図２】本発明の第１の実施形態の動作を示すフローチャートである。
【図３】仮想マシンの起動パターンの例である。
【図４】本発明の第１の実施形態の動作を具体的に説明するための図である。
【図５】本発明の第１の実施形態の動作を具体的に説明するための図である。
【図６】本発明の第１の実施形態の動作を具体的に説明するための図である。
【図７】本発明の第１の実施形態を利用した場合の仮想マシンの起動時間分布の例である。
【図８】本発明の第１の実施形態の動作を具体的に説明するための図である。
【図９】本発明の第２の実施形態の構成を示すブロック図である。
【図１０】本発明の第２の実施形態の動作を示すフローチャートである。
【図１１】仮想マシンの起動パターンの別の例である。
【図１２】本発明の第２の実施形態の動作を具体的に説明するための図である。
【図１３】本発明の第３の実施形態の構成を示すブロック図である。
【図１４】本発明の第３の実施形態の動作を示すフローチャートである。
【図１５】本発明の第３の実施形態の動作を具体的に説明するための図である。
【図１６】本発明の第４の実施形態の構成を示すブロック図である。
【図１７】仮想マシンの起動パターンの他の例である。
【図１８】本発明の第４の実施形態の動作を示すフローチャートである。
【図１９】本発明に関連する技術の動作を説明するための図である。
【図２０】本発明に関連する技術を利用した場合の仮想マシンの起動時間分布の例である。
【符号の説明】
【００２２】
１、２、３、４  仮想マシン管理システム
１１  処理要求受付手段
１２  処理実行通知手段
１３  実行サーバ分散手段
１４  処理完了確認手段
１５  移動通知手段
１６  運用サーバ集約手段
１７  パターン分析手段
２０  処理方式選択手段
２１  処理待ちキュー
２２  処理時間計算手段
２３  処理時間比較手段
２４  選択手段
３１  分散的処理指定テーブル
３２  仮想マシン状態管理テーブル
３３  仮想マシン数指定テーブル
３４  要求パターンテーブル
９０  仮想マシン提供サーバ
９１  仮想マシン
９２  仮想化ソフトウェア
９３  ネットワーク
９４  クライアント端末
９０１  仮想マシン提供サーバ
９０３  仮想マシン
９０４  ネットワーク
９１１  性能モニタ手段
９１０  仮想化ソフトウェア
９１２  リソース管理手段
９１３  仮想マシン管理手段
【発明を実施するための最良の形態】
【００２３】
次に、本発明の実施形態について図面を参照して詳細に説明する。【００２４】
図１を参照すると、本発明の第１の実施形態に係る計算機システムは、仮想マシン管理システム１と、複数の仮想マシン提供サーバ９０と、複数のクライアント端末９４とがネットワーク９３を通じて相互に接続されている。【００２５】
各々の仮想マシン提供サーバ９０は、仮想マシン９１と仮想化ソフトウェア９２とを有する。【００２６】
仮想マシン管理システム１は、分散的に実行する特定処理を指定する分散的処理指定テーブル３１と、クライアント端末９４から処理要求を受け付け、要求処理が特定処理かどうかを判断する処理要求受付手段１１と、特定処理を実行する仮想マシン９１を分散させるように実行サーバを決定する実行サーバ分散手段１３と、仮想マシン９１または仮想化ソフトウェア９２へ処理の実行命令を通知する処理実行通知手段１２と、仮想マシン９１が動作している仮想マシン提供サーバ９０と仮想マシン９１の状態を管理する仮想マシン状態管理テーブル３２と、特定処理実行後の通常運用中仮想マシンを集約するように仮想マシン９１の配置を決定する運用サーバ集約手段１６と、仮想マシン９１で特定処理が完了したことを確認する処理完了確認手段１４と、仮想化ソフトウェア９２へ仮想マシンの移動命令を通知する移動通知手段１５とから構成されている。【００２７】
分散的処理指定テーブル３１は、分散的に実行しようとする特定処理を登録する。分散的に処理しようとする特定処理の例としては、図１中に示すように、一時的に処理が増大するような仮想マシン起動やＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）がある。他にも、ウィルスチェック、データのバックアップ、ログの解析、企業における売上データや受注データの集計処理など一定期間ごとに大量のデータを集めて処理するようなバッチ処理もある。【００２８】
処理要求受付手段１１は、クライアント端末９４から処理要求を受け付け、分散的処理指定テーブル３１を参照して、要求処理が分散的に処理すべき特定処理かどうかを判断する。【００２９】
仮想マシン状態管理テーブル３２は、仮想マシン９１が動作している仮想マシン提供サーバ９０と仮想マシン９１の状態を登録する。状態には、図１中に示すように、運用中、処理中（指定処理の実行中）などの種類がある。他にも登録される状態としては、仮想マシンがどの仮想マシン提供サーバ上に存在するかの関係と、仮想マシンが特定処理を実行中か否かを示す情報が分かればよく、複数のテーブルとして登録することもできる。【００３０】
実行サーバ分散手段１３は、仮想マシン状態管理テーブル３２を参照して、特定処理を実行する仮想マシン９１を分散させるように実行サーバ（その特定処理を実行させる仮想マシン提供サーバ９０）を決定する。【００３１】
処理実行通知手段１２は、実行サーバ分散手段１３が決定する仮想マシン提供サーバ９０に対して特定処理の実行命令を通知する。【００３２】
処理完了確認手段１４は、仮想マシン９１で特定処理が完了したことを確認する。処理完了を確認する方法としては、仮想マシン９１内での処理をモニタし、処理が完了すると仮想マシン管理システム１へ通知するソフトウェアを仮想マシン９１内で動作させておく方法がある。他にも、特定処理が仮想マシン起動の場合は、仮想化ソフトウェア９２が仮想マシン９１の起動完了を仮想マシン管理システム１に通知する方法がある。【００３３】
運用サーバ集約手段１６は、特定処理実行後の通常運用中仮想マシンを集約するように仮想マシン９１の配置を決定する。決定方法としては、仮想マシン状態管理テーブル３２を参照して、仮想マシンが存在しない仮想マシン提供サーバ数を最大にするように、仮想マシン数が予め定められた最大数に達していない仮想マシン提供サーバに特定処理終了後の仮想マシンを移動させる方法がある。または、仮想マシン状態管理テーブル３２において仮想マシン９１ごとのリソース使用率を保持しておき、仮想マシンが存在しない仮想マシン提供サーバ数を最大にするように、各仮想マシン提供サーバに対して定められた上限リソース値を超えない範囲で、リソース使用率が上限に達していない仮想マシン提供サーバに特定処理終了後の仮想マシンを移動させる方法がある。【００３４】
移動通知手段１５は、運用サーバ集約手段１６が決定する仮想マシンの配置に従い、仮想化ソフトウェア９２へ仮想マシンの移動命令を通知する。【００３５】
次に、図２のフローチャートを参照して、クライアント端末９４から仮想マシンの起動に係る処理要求が発生した場合の本実施形態の動作について詳細に説明する。【００３６】
まず、ステップＳ１０１で、処理要求受付手段１１が、クライアント端末９４から処理要求を受け付ける。【００３７】
次に、ステップＳ１０２で、処理要求受付手段１１が、受け付けた処理要求が分散的処理指定テーブル３１に登録されているかどうかを判断する。分散的処理指定テーブル３１に登録された処理の場合は、ステップＳ１０３以降を実行する。図１の分散的処理指定テーブル３１を参照すると、特定処理として「仮想マシン起動」が登録されているため、ステップＳ１０３以降を実行する。なお、分散的処理指定テーブル３１に登録されていない処理要求についての処理方法は任意で良く、本発明とは直接関係しないのでその説明は省略する。【００３８】
次に、ステップＳ１０３で、実行サーバ分散手段１３が、仮想マシン状態管理テーブル３２を参照して、運用中及び指定処理実行中の仮想マシン数が少ない仮想マシン提供サーバ９０を処理実行サーバとして指定する。仮想マシン状態管理テーブル３２に各仮想マシンのリソース使用量を登録しておき、ステップＳ１０３での選択は、リソース使用量の少ないサーバを選択する方法もある。このとき、予め定められた仮想マシン数及びリソース使用量の上限を超えないよう仮想マシンの配置を選択する。【００３９】
次に、ステップＳ１０４で、処理実行通知手段１２が、実行サーバ分散手段１３で決定したサーバへネットワーク９３を介して処理の実行要求を通知する。処理の実行要求が通知された仮想マシン提供サーバ９０では、仮想化ソフトウェア９２の制御の下に、新たな仮想マシン９１を生成する処理が開始される。【００４０】
次に、ステップＳ１０５で、実行サーバ分散手段１３が、仮想マシン状態管理テーブル３２に、新規仮想マシンを起動中状態として追加する。【００４１】
次に、ステップＳ１０６で、処理完了確認手段１４が、要求した処理を完了した仮想マシン９１から、処理完了通知を受け取る。このとき、運用サーバ集約手段１６は、仮想マシン状態管理テーブル３２を更新して、起動中状態であった新規仮想マシンの状態を運用中に変更する。【００４２】
次に、ステップＳ１０７で、運用サーバ集約手段１６が、仮想マシン状態管理テーブル３２を参照して、運用中の仮想マシン９１を集約するように、仮想マシン９１を移動するサーバを指定する。【００４３】
次に、ステップＳ１０８で、移動通知手段１５が、運用サーバ集約手段１６で決定したサーバの仮想化ソフトウェア９２へ仮想マシンの移動を通知する。【００４４】
次に、ステップＳ１０９で、仮想化ソフトウェア９２が指定された仮想マシン９１を移動する。【００４５】
最後に、ステップＳ１１０で、運用サーバ集約手段１６が、仮想マシン９１の移動にあわせて仮想マシン状態管理テーブル３２を更新する。【００４６】
次に、発明が解決しようとする課題を説明する際に想定した図３に示す仮想マシンの起動要求パターンに対する本発明の第１の実施形態の動作を図４〜図６を参照してより具体的に説明する。【００４７】
図４〜図６は、各仮想マシン提供サーバ９０上に存在する仮想マシン９１と、各仮想マシン９１に割り当てたリソース量を時刻ごと（ｔ１−ｔ１８）に示す。横軸は仮想マシン提供サーバ９０を表す。縦軸は各仮想マシン９１のリソース使用率を表す。また、各仮想マシン提供サーバ９０のリソース使用の上限を仮想マシン数にして「５台」としている。【００４８】
ステップＳ１０１で、図３に示す起動要求パターンの時刻ｔ１では、処理要求受付手段１１は、１台の仮想マシンの起動要求を受け付ける。【００４９】
ステップＳ１０２で、分散的処理指定テーブル３１を参照すると、特定処理として「仮想マシン起動」が登録されているため、ステップＳ１０３以降を実行する。【００５０】
ステップＳ１０３で、時刻ｔ１の場合は、実行サーバ分散手段１３は、仮想マシン数が最も少ない仮想マシン提供サーバとして仮想マシン提供サーバ９０−１を選択する。時刻ｔ１の時点では、全ての仮想マシン提供サーバ上に仮想マシンは存在しないため、いずれの仮想マシン提供サーバを選択してもよいが、ここでは、仮想マシン提供サーバ９０−１を選択したとして説明する。【００５１】
ステップＳ１０４で、処理実行通知手段１２は、仮想マシン提供サーバ９０−１へ仮想マシン９１−１の起動を通知する。【００５２】
ステップＳ１０５で、実行サーバ分散手段１３が、仮想マシン状態管理テーブル３２に、仮想マシン９１−１が仮想マシン提供サーバ９０−１で起動中であることを登録する。処理実行通知を受けた仮想マシン提供サーバ９０−１では、仮想マシン９１−１を起動する。このとき図４〜図６のｔ１の仮想マシン提供サーバ使用状況に示すように、仮想マシン９１−１は仮想マシン提供サーバ９０−１のリソースの１００％を使用する。【００５３】
ステップＳ１０６で、時刻ｔ１の時点では、仮想マシン提供サーバ９０−１の仮想化ソフトウェア９２−１が、処理完了確認手段１４へ仮想マシン９１−１の起動完了を通知する。【００５４】
ステップＳ１０７で、時刻ｔ１の時点では、仮想マシン提供サーバ９０−１にのみ仮想マシンが存在するので、仮想マシン提供サーバ９０−１へ仮想マシンを集約するように仮想マシンの配置を決定する。時刻ｔ１では、仮想マシン９１−１は既に仮想マシンサーバ９０−１で動作しているため、移動要求は生じない。【００５５】
ステップＳ１０８で、時刻ｔ１では、運用サーバ集約手段１６で仮想マシンの移動要求は生じなかったため、ステップＳ１０８での移動通知も行わない。【００５６】
ステップＳ１０９で、時刻ｔ１では、運用サーバ集約手段１６で仮想マシンの移動要求は生じなかったため、ステップＳ１０９での仮想マシンの移動も行わない。【００５７】
ステップＳ１１０で、時刻ｔ１では、仮想マシン９１−１が仮想マシン提供サーバ９０−１上で運用中であることを仮想マシン状態管理テーブル３２へ登録する。【００５８】
続いて時刻ｔ２の場合について、図４〜図６の仮想マシン提供サーバのリソース使用率を参照して説明する。【００５９】
ステップＳ１０１で、図３に示す起動要求パターンの時刻ｔ２では、処理要求受付手段１１は、１台の仮想マシンの起動要求を受け付ける。【００６０】
ステップＳ１０２で、分散的処理指定テーブル３１を参照すると、特定処理として「仮想マシン起動」が登録されているため、ステップＳ１０３以降を実行する。【００６１】
ステップＳ１０３で、時刻ｔ２の場合は、実行サーバ分散手段１３は、仮想マシン数が最も少ない仮想マシン提供サーバとして仮想マシン提供サーバ９０−２を選択する。時刻ｔ２の時点では、仮想マシン提供サーバ９０−１に仮想マシン９１−１が存在しているため、仮想マシン数が少ない仮想マシン提供サーバ９０−２を選択する。仮想マシン提供サーバ９０−１以外であれば、いずれの仮想マシン提供サーバを選択してもよいが、ここでは、仮想マシン提供サーバ９０−２を選択したとして説明する。【００６２】
ステップＳ１０４で、処理実行通知手段１２は、仮想マシン提供サーバ９０−２へ仮想マシン９１−２の起動を通知する。【００６３】
ステップＳ１０５で、実行サーバ分散手段１３が、仮想マシン状態管理テーブル３２に、仮想マシン９１−２が仮想マシン提供サーバ９０−２で起動中であることを登録する。処理実行通知を受けた仮想マシン提供サーバ９０−２では、仮想マシン９１−２を起動する。このとき図４〜図６のｔ２の仮想マシン提供サーバ使用状況に示すように、仮想マシン９１−２は仮想マシン提供サーバ９０−２のリソースの１００％を使用する。【００６４】
ステップＳ１０６で、時刻ｔ２では、仮想マシン提供サーバ９０−２の仮想化ソフトウェア９２−２が、処理完了確認手段１４へ仮想マシン９１−２の起動完了を通知する。【００６５】
ステップＳ１０７で、時刻ｔ２では、運用サーバ集約手段１６が、仮想マシン状態管理テーブル３２を参照すると、仮想マシン提供サーバ９０−１で仮想マシン９１−１が運用中、仮想マシン提供サーバ９０−２で仮想マシン９１−２が起動中であることがわかる。運用サーバ集約手段１６は、起動処理が終了した通常運用中の仮想マシンを仮想マシンの数が少ない仮想マシン提供サーバに集約するように仮想マシンの配置を決定するので、時刻ｔ２では、仮想マシン９１−２を仮想マシン提供サーバ９０−２から仮想マシン提供サーバ９０−１への移動を決定する。【００６６】
ステップＳ１０８で、移動通知手段１５が、ステップＳ１０７で運用サーバ集約手段１６が決定した仮想マシン９１−２を仮想マシン提供サーバ９０−２から仮想マシン提供サーバ９０−１への移動をするために、仮想マシン提供サーバ９０−１と仮想マシン提供サーバ９０−２へ仮想マシン９１−２の移動命令を通知する。【００６７】
ステップＳ１０９で、仮想マシン提供サーバ９０−１と仮想マシン提供サーバ９０−２の仮想化ソフトウェア９２−１、９２−２が連携して仮想マシン９１−２を移動する。図４〜図６では、この移動を矢印で表す。【００６８】
最後に、ステップＳ１１０で、運用サーバ集約手段１６が、仮想マシン状態管理テーブル３２内の仮想マシン９１−２の状態を仮想マシン提供サーバ９０−１上で運用中に更新する。【００６９】
ここで、仮想マシンの移動に際しては、ＶＭＷａｒｅのＶｍｏｔｉｏｎや、ＸｅｎのＬｉｖｅ  ｍｉｇｒａｔｉｏｎのように仮想マシン上のサービスを無停止で移動を可能にする技術が存在する。このため、仮想マシンの起動直後に、ユーザに対するサービスの提供を開始することで、仮想マシンの移動時間を意識しないで仮想マシンサービスを提供することが可能である。【００７０】
また、時刻ｔｉで起動した仮想マシンの移動が、次の時刻ｔｉ＋１までに完了するならば、次の時刻ｔｉ＋１における仮想マシンの起動を直ちに開始することができる。たとえば、図４〜図６の時刻ｔ２で仮想マシン提供サーバ９０−２上で起動した仮想マシン９１−２を仮想マシン提供サーバ９０−１へ移動させる処理が時刻ｔ３までに完了すれば、時刻ｔ３で受け付けた仮想マシン要求に従って、仮想マシン提供サーバ９０−２上に仮想マシン９１−３を直ちに起動することができる。【００７１】
時刻ｔ３以降も上記で説明したｔ１、ｔ２の場合と同じように、仮想マシンの起動要求に対して、ステップＳ１０１からステップＳ１１０を繰り返す。ｔ１からｔ１８までの仮想マシン提供サーバと仮想マシンの関係を図４〜図６に示す。【００７２】
ｔ１、ｔ２は仮想マシンの起動要求が１台の場合であったが、時刻ｔ３のように複数の仮想マシン要求を受け付けた場合は、ステップＳ１０３で、できる限り異なる仮想マシン提供サーバで起動させることで起動時に利用できるリソース量を大きくする。例えば、図３の要求パターンで時刻ｔ３の場合は、要求数は２である。このときの仮想マシンの配置は図４〜図６の仮想マシン提供サーバ使用状況表(ｔ３)に示すように仮想マシン９１−３は仮想マシン提供サーバ９０−２で、仮想マシン９１−４は仮想マシン提供サーバ９０−３で起動することになる。さらに、仮想マシン９１−３、９１−４は起動が完了し、運用状態になると、ステップＳ１０７において、集約されるように仮想マシン提供サーバ９０−１への移動を指定する。【００７３】
図４〜図６に示した仮想マシン提供サーバと仮想マシンの関係から、各仮想マシンが起動の際に利用できるリソース量をもとに仮想マシンの起動時間を計算し、求めた仮想マシン起動時間の分布を図７に示す。仮想マシンの起動時間の計算は、リソースを１００％使用できる場合の起動時間を１分と仮定し、起動時間は利用できるリソース量に反比例するとした。例えば、時刻ｔ１３で仮想マシン９１−３９は７０％のリソースを利用できるため、起動時間は１／０．７＝１．４３（分）となる。【００７４】
図７に示す本実施形態による仮想マシン起動時間の分布を参照すると、仮想マシンの起動時間の平均値が小さくなり、仮想マシン提供サーバのリソースを１００％利用した際の最適値である１分で起動する仮想マシン数が図２０に示す関連技術の結果より、増えていることがわかる。また、全ての仮想マシンにおける平均起動時間も図２０に示す関連技術より短縮できる。【００７５】
以上のように、仮想マシンの起動のように処理負荷が一時的に増大する特定処理を複数の仮想マシンで同時に実行する際に、運用サーバ集約手段１６が特定処理を終了した通常運用の仮想マシンを集約することで、空きリソースを集約させ、この集約された空きリソースを効率的に利用するように実行サーバ分散手段１３が特定処理を実行する仮想マシンを、空きリソースを有する仮想マシン提供サーバに分散させることで、仮想マシンの起動時間のばらつきを抑えることができるようになる。【００７６】
上記の説明では、仮想マシン数を集約するとして説明したが、仮想マシンを集約することは空きリソースを集約することと等価であるため、運用サーバ集約手段１６は、空きリソースを集約させると理解することもできる。【００７７】
本説明では、実行サーバ分散手段１３で実行する仮想マシン提供サーバを分散させる特定処理を「仮想マシンの起動」として説明したが、本発明の効果は、一時的に負荷が増大する処理のために、空きリソースを集約しておき、この特定処理を実行する際に実行サーバ分散手段１３で処理を分散的に実行することにより得られるため、特定処理は上記で説明した仮想マシンの起動のみに限るものではなく、一時的に負荷が増大する処理であれば何でもよい。このような処理の他の例として、本実施形態では、ＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）を例示している。【００７８】
特定処理がＦＴＰの場合、ＦＴＰの処理を実行させる仮想マシンを負荷の少ない仮想マシン提供サーバに移動させ、ＦＴＰの実行を終えたら再び集約する。たとえば、図４〜図６の時刻ｔ３によって起動された仮想マシン９１−３、９１−４を含め、４台の仮想マシン９１−１〜９１−４が仮想マシン提供サーバ９０−１に集約されている状態で、２つのＦＴＰ要求が発生した場合、たとえば仮想マシン９１−３に１つのＦＴＰ処理を割り当て、仮想マシン９１−４に残りの１つのＦＴＰ処理を割り当て、仮想マシン９１−３はたとえば仮想マシン提供サーバ９０−２に移動させてＦＴＰ処理を実行させ、仮想マシン９１−４はたとえば仮想マシン提供サーバ９０−３に移動させてＦＴＰ処理を実行させ、ＦＴＰ処理を終えると、仮想マシン９１−３、９１−４を仮想マシン提供サーバ９０−１に再び集約させる。【００７９】
また、本説明では、各仮想マシン提供サーバのリソース使用の上限を仮想マシン数で指定したが、リソースの使用の上限を指定する方法は他の方法でもよい。例えば、仮想マシン提供サーバのリソース使用率の上限を与えてもよい。このようにリソース使用率で与える場合は、仮想マシンごとに使用を許可するリソース量が異なる状況でも、仮想マシン提供サーバのリソース使用量が偏ることを防ぐことができる。【００８０】
次に、本発明の第２の実施形態について図面を参照して詳細に説明する。【００８１】
図９を参照すると、本発明の第２の実施形態に係る計算機システムは、図１に示す第１の実施形態と比較して、仮想マシン管理システム１の代わりに仮想マシン管理システム２を備えている点で相違する。また、仮想マシン管理システム２は、仮想マシン管理システム１と比較して、仮想マシン数指定テーブル３３をさらに有する点で相違する。【００８２】
仮想マシン数指定テーブル３３は、時刻ごとに仮想マシン提供サーバ９０内に作成可能な仮想マシンの最大数を登録したテーブルである。図９の仮想マシン数指定テーブル３３では、時刻ｔ１からｔ１６までは各仮想マシン提供サーバ９０では４台までの仮想マシンを作成可能であり、ｔ１７以降は、各仮想マシン提供サーバでは５台までの仮想マシンを作成可能であることを示している。この仮想マシン数指定テーブル３３は、運用サーバ集約手段１６で仮想マシンを集約する際の集約できる仮想マシン数の上限となる。各時刻ごとにどのような値の最大仮想マシン数を登録するかは、各時刻における処理要求パターンに基づいて事前に決定される。本実施形態においてはその決定方法は任意である。後述する第３の実施形態では、その決定を自動的に行っている。【００８３】
次に、図１０のフローチャートを参照して第２の実施形態の動作を説明する。【００８４】
図１０を参照すると、第２の実施形態の動作は、図２に示した第１の実施形態の動作のステップＳ１０７を、ステップＳ２０１、Ｓ２０２に置き換えたものである。ここでは、図２と異なる動作であるステップＳ２０１、ステップＳ２０２のみについて説明する。【００８５】
ステップＳ１０６までの動作で既に仮想マシンの起動は完了し、その完了確認まで終了している。【００８６】
続いて、ステップＳ２０１では、運用サーバ集約手段１６が、仮想マシン数指定テーブル３３を参照して、時刻から各仮想マシン提供サーバ９０上に構成可能な最大仮想マシン数を取得する。【００８７】
次に、ステップＳ２０２では、運用サーバ集約手段１６が、サーバで提供可能な仮想マシン数内に仮想マシンを集約するように移動先のサーバを指定する。仮想マシン数指定テーブル３３に登録された値が上限仮想マシン数ではなく、リソースの上限使用量であった場合は、リソース上限使用量を超えないように仮想マシンを集約するように移動先のサーバを指定する。【００８８】
ステップＳ２０２終了後は、第１の実施形態と同様にステップＳ１０８以降を実行する。【００８９】
図１１のような仮想マシンの要求パターンの場合について、さらに具体的に動作を説明する。図１１の要求パターンは、図３の要求パターンの時刻ｔ１８の後に、さらに時刻ｔ１９と時刻ｔ２０としてそれぞれ仮想マシン５台の要求を追加したものである。総仮想マシン数が１０台増加するため、仮想マシン提供サーバ９０を２台追加し、仮想マシン提供サーバ９０を合計１２台利用した状態を想定して以下では説明を行う。図１２は、時刻ｔ１９およびｔ２０における仮想マシン提供サーバ９０と仮想マシン９１の関係を示した図である。【００９０】
時刻ｔ１８までは、第１の実施の形態と同様に動作する。ただし、時刻ｔ１６までは、各仮想マシン提供サーバ９０の上限仮想マシン数は４であるため、ステップＳ２０２で各仮想マシン提供サーバ９０での上限仮想マシン数を４として、仮想マシン９１の配置を決定する。このため、時刻ｔ１６終了時点では、１２台全ての仮想マシン提供サーバ９０に仮想マシン９１が４台ずつ存在する。時刻ｔ１７、ｔ１８では、仮想マシン９１の要求は１台ずつであるため、それぞれ、仮想マシン提供サーバ９０−１、９０−２で起動、運用する。【００９１】
時刻ｔ１９では、仮想マシンの要求数が５となる。このため、ステップＳ１０３で実行サーバ分散手段１３が、空きリソースがある仮想マシン提供サーバ９０−３〜９０−１２の中から、処理を分散させるために５台（図１２の例では、仮想マシン提供サーバ９０−３〜９０−７）を選択する。時刻ｔ２０でも同様に仮想マシンの要求数が５となる。このため、ステップＳ１０３で実行サーバ分散手段１３が、空きリソースがある仮想マシン提供サーバ９０−８〜９０−１２の中から、処理を分散させるために５台（図１２の例では、仮想マシン提供サーバ９０−８〜９０−１２）を選択する。【００９２】
次に本発明の第２の実施形態の効果について説明する。【００９３】
本実施形態によれば、時刻により仮想マシン提供サーバ９０上の仮想マシン数の上限を変更させるための仮想マシン数指定テーブル３３を有し、仮想マシン提供サーバ９０上の仮想マシン数の上限を時刻により変更させるため、図１１の時刻ｔ９、ｔ１０と時刻ｔ１９、ｔ２０のように、複数の要求ピークが存在する場合でも負荷を分散させて仮想マシン９０を起動させることができる。このため、第１の実施形態と比べて、要求パターンが複数ピークを持つ場合でも仮想マシンの起動時間を短縮することが可能となる。【００９４】
具体的には、第１の実施形態では、図１１のような仮想マシン起動要求パターンの場合は、時刻ｔ１９、ｔ２０での仮想マシンの起動時のリソース使用状況は、図８のようになり、起動時の仮想マシンのリソース使用量が少なく、起動に時間がかかる。しかし、第２の実施形態では、図１２に示すように、時刻ｔ１９、ｔ２０の時点でも、各仮想マシンの起動時のリソース使用量は第１の実施形態より多く、各仮想マシンの起動時間を短縮することができる。【００９５】
図９では、全ての仮想マシン提供サーバ９０の上限仮想マシン数は同じとして、仮想マシン数指定テーブル３３の例を示したが、各仮想マシン提供サーバ９０の上限仮想マシン数を異なる値として登録することも可能である。また、各仮想マシン提供サーバ９０で上限仮想マシン数を切り替える時刻として異なった時刻を登録することも可能である。【００９６】
また、仮想マシン数指定テーブル３３には、時刻ではなく、運用中の仮想マシン数別に上限仮想マシン数を登録することも可能である。その場合、図１０のステップＳ２０１は、運用サーバ集約手段１６が仮想マシン状態管理テーブル３２を参照して存在する総仮想マシン数を取得し、この取得した総仮想マシン数に対応する上限仮想マシン数を仮想マシン数指定テーブル３３から取得する処理に変更される。【００９７】
また、仮想マシン数指定テーブル３３には、各仮想マシン提供サーバ９０の上限仮想マシン数ではなく、各仮想マシン提供サーバ９０のリソースの上限使用率を登録し、運用サーバ集約手段１６でリソース使用率にもとづき仮想マシンを集約することも可能である。【００９８】
次に、本発明の第３の実施形態について図面を参照して詳細に説明する。【００９９】
図１３を参照すると、本発明の第３の実施形態に係る計算機システムは、図９に示す第２の実施形態と比較して、仮想マシン管理システム２の代わりに仮想マシン管理システム３を備えている点で相違する。また、仮想マシン管理システム３は、仮想マシン管理システム２と比較して、要求パターンテーブル３４とパターン分析手段１７とをさらに有する点で相違する。【０１００】
要求パターンテーブル３４は、分散的処理指定テーブル３１に登録された特定処理の要求発生の時刻分布を表す。図１３の要求パターンテーブル３４の例では、時刻ｔ１、ｔ２、ｔ３、ｔ４に、仮想マシンの起動要求がそれぞれ、１、１、２、２あることを表している。このような要求パターンテーブル３４は、たとえば過去の要求ログに基づいて作成することができる。【０１０１】
パターン分析手段１７は、要求パターンテーブル３４を参照して、その処理要求の分布から、仮想マシン数指定テーブル３３を作成する。【０１０２】
第３の実施形態の動作は、処理要求の受付から仮想マシンの作成、移動までは、図１０を用いて説明した第２の実施形態の動作と同じである。第３の実施形態では、新たに、パターン分析手段１７が仮想マシン数指定テーブル３３を作成する動作が加わる。そこで、ここでは、第３の実施形態の動作としてパターン分析手段１７が仮想マシン数指定テーブル３３を作成する動作を図１４及び図１５を参照して説明する。【０１０３】
ステップＳ３０１では、パターン分析手段１７が、要求パターンテーブル３４から、時刻と処理要求数のデータを取得する。【０１０４】
ステップＳ３０２では、パターン分析手段１７が、要求パターンテーブル３４から、要求数の極小値を抽出する。例えば、図１１のような要求パターンの場合は、極小値として、時刻ｔ１のときの要求数１、時刻ｔ１７のときの要求数１、ｔ２１のときの要求数０を抽出する。【０１０５】
ステップＳ３０３では、パターン分析手段１７が、要求パターンテーブル３４から、極小値をとる時刻ごとに累積要求数を求める。図１１の例では、図１５に示すように、時刻ｔ１から時刻ｔ１６までの累積要求数として要求群５１内の要求数として４８を求めることができる。同様に、ｔ２１の時点での累積要求数として、要求群１と要求群２の要求数の和として要求数６０を求めることができる。【０１０６】
ステップＳ３０４では、パターン分析手段１７が、ステップＳ３０２で抽出した時刻に対して、累積要求数から計算式に従い、サーバ当たりの仮想マシン数を計算する。計算式としては、例えば、図１５に示すように、（仮想マシン提供サーバ当たりの上限仮想マシン数）＝（累積要求数）/（仮想マシン提供サーバ数）で求めることができる。例えば、仮想マシン提供サーバ数が１２台とすると、時刻ｔ１から時刻ｔ１６までの累積要求数４８を１２で割った解として上限仮想マシン数が４台と求まる。また、時刻ｔ１７以降では、累積要求数６０を１２で割った解として上限仮想マシン数が５台と求まる。【０１０７】
次に本発明の第３の実施形態の効果について説明する。【０１０８】
前述した第２の実施形態では、仮想マシン数指定テーブル３３に登録する上限仮想マシン数が予め与えられる必要があった。しかし、第３の実施形態では、パターン分析手段１７が要求パターンテーブル３４から仮想マシン数指定テーブル３３を作成することができるため、過去のログなどから容易に入手できる要求パターンテーブル３４を登録するだけで、自動的に仮想マシン数指定テーブル３３を作成することができる。【０１０９】
要求パターンテーブル３４としては、過去の要求ログを利用できる他、仮想マシンの起動であれば、仮想マシンの起動は社員の出社後すぐに行われると想定されるため、社員の入場記録などを利用することもできる。【０１１０】
仮想マシン数指定テーブル３３に登録する上限値がリソース使用量の場合は、パターン分析手段１７は、要求パターンテーブル３４から処理要求数の極小値を求め、この極小値をとる時刻までの累積要求数を求め、この累積要求数に割り当てる運用中のリソース量の総和を仮想マシン提供サーバ数で除算した解を、その時刻での仮想マシン提供サーバ当たりの上限リソース使用量として求めることができる。【０１１１】
次に本発明の第４の実施形態について図面を参照して詳細に説明する。【０１１２】
図１６を参照すると、本発明の第４の実施形態に係る計算機システムは、図１に示す第１の実施形態と比較して、仮想マシン管理システム１の代わりに仮想マシン管理システム４を備えている点で相違する。また、仮想マシン管理システム４は、仮想マシン管理システム１と比較して、処理方式選択手段２０をさらに有する点で相違する。【０１１３】
処理方式選択手段２０は、処理待ちキュー２１と、処理時間計算手段２２と、処理時間比較手段２３と、選択手段２４とで構成される。【０１１４】
処理待ちキュー２１は、処理要求受付手段１１で受け付けた処理要求を一時的に保持する。【０１１５】
処理時間計算手段２２は、処理待ちキュー２１に保持するすべての処理要求を同時に実行要求する場合と、待ちの処理要求を何回かに分けて実行要求する場合それぞれについて処理実行時間を計算する。さらに、処理要求を分割する回数を複数種類の処理要求通知パターンで計算することもできる。たとえば、処理待ちキュー２１に待ち数が６あった場合に、一度に６要求を出す場合、３要求ずつ２回出す場合、２要求ずつ３回出す場合、１回目は１要求、２回目は２要求、３回目は３要求と各回異なる要求数とする場合など複数パターンで処理時間を計算することも可能である。また、各仮想マシン提供サーバ上で起動中である仮想マシン数が常に１台となるように仮想マシンの起動要求を逐次的に実行要求する場合も１パターンとして考慮して良い。さらに、運用サーバ集約手段１６で行われる処理を実行する場合、実行しない場合に分けて処理時間を計算することも可能である。【０１１６】
処理時間比較手段２３は、処理時間計算手段２２で計算された複数の処理要求通知パターンでの処理時間を比較する。例えば、仮想マシンの起動までに要する時間の平均値を比較する。他にも、仮想マシンの起動時間のばらつき（分散値）や、仮想マシンの起動時間の最悪値を比較してもよい。【０１１７】
選択手段２４は、処理時間比較手段２３で比較した結果に従い、例えば、仮想マシンの起動までに要する時間の平均が最小の処理要求通知パターンを選択する。他にも、仮想マシンの起動時間のばらつき（分散値）が最小のパターンを選択する方法や、仮想マシンの起動時間の最悪値を最小にするパターンを選択してもよい。【０１１８】
次に本発明の第４の実施形態の動作について図１７、図１８を参照して説明する。図１７は仮想マシン起動要求パターンの一例である。図３と比較して、時刻ｔ１４でバースト的に要求が増加している点が特徴である。【０１１９】
図１８は本発明の第４の実施形態の動作を示すフローチャートである。以下では、図１８を参照して一般的な動作を説明する。これと同時に、図１７のｔ１４の時点での動作を具体例として説明する。【０１２０】
ステップＳ４０１では、処理要求受付手段１１が処理要求を処理待ちキュー２１へ登録する。例えば図１７の時刻ｔ１４の場合は、６件の処理要求を処理待ちキュー２１へ登録する。【０１２１】
ステップＳ４０２では、処理時間計算手段２２が、処理方式ごとの処理時間を計算する。例えば、図１７の時刻ｔ１４の場合に対しては、６件の要求を１回に同時に処理要求として通知する場合と、各仮想マシン提供サーバ上で起動中である仮想マシン数が常に１台となるように仮想マシンの起動要求を逐次的に通知する場合の２通りを計算したとする。ｔ１４の開始時点では、図４〜図６のｔ１４の状態から、ｔ１４のタイムスロットの始まりでは仮想マシン提供サーバ９０−９には運用中仮想サーバ１台、仮想マシン提供サーバ９０−１０には運用中仮想サーバが無いことが分かる。この状態で６件の要求を同時に処理しようとすると、仮想マシン提供サーバ９０−９、９０−１０上にそれぞれ３台の仮想マシンを起動することになる。この際の起動時間は、仮想マシン提供サーバ９０−９上では、仮想マシン１台当たり３０％のリソースを利用できるので、３．３分となる。また、仮想マシン提供サーバ９０−１０上では、仮想マシン１台当たり３３％のリソースを利用できるので、３．０分となる。したがって、６台全ての仮想マシンの起動時間の平均は、３．１５分となる。【０１２２】
一方、仮想マシン起動要求を逐次的に処理する場合は、最初の２台を仮想マシン提供サーバ９０−９，９０−１０で１台ずつ起動することで、それぞれ、９０％と１００％のリソースを利用できる。このため、起動時間はそれぞれ１．１分と１分となる。次の２台も仮想マシン提供サーバ９０−９，９０−１０で前の仮想マシンの起動終了かつ移動後に１台ずつ起動することで、それぞれ、８０％と９０％のリソースを利用できる。このため、起動時間はそれぞれ１．３分と１．１分となる。処理待ちキュー２１での滞在時間を含めると、２．４分と２．１分となる。最後の２台も仮想マシン提供サーバ９０−９，９０−１０で１台ずつ起動することで、それぞれ、７０％と８０％のリソースを利用できる。このため、起動時間はそれぞれ１．４分と１．３分となる。処理待ちキュー２１での滞在時間を含めると、３．８分と３．４分となる。このように処理待ちキュー２１で要求を待たせて逐次的に処理する場合は、時刻ｔ１４で受け付けた６件の仮想マシン起動要求の平均起動時間は、２．３分と計算できる。ここでは仮想マシンの移動に要する時間を無視したが、精度を高めるためには移動に要する時間を考慮する必要がある。【０１２３】
ステップＳ４０３では、処理時間比較手段２３が、処理時間計算手段２１が計算した処理方式ごとの処理時間を比較する。例えば、図１７の時刻ｔ１４の場合は、６件全て同時処理の場合と逐次的に処理する場合それぞれの仮想マシン起動時間の平均値を比較する。今、比較の結果、平均起動時間が短いのが、逐次的に処理する方法であったとする。【０１２４】
ステップＳ４０４では、選択手段２４が、処理時間の平均が小さい方式を実行サーバ分散手段１３と運用サーバ集約手段１６へ通知する。例えば、図１７の時刻ｔ１４の場合は、平均起動時間が短い、処理待ちキュー２１に処理を待たせ逐次的に処理する方法を選択する。【０１２５】
ステップＳ４０５では、選択手段２４が、処理待ちキュー２１から処理要求を取り出し、実行サーバ分散手段１３へ処理要求を通知する。例えば、図１７の時刻ｔ１４の場合は、逐次的に処理する方法を選択したので、最初は処理待ちキュー２１から２件の処理要求を取り出し、実行サーバ分散手段１３へ処理依頼として通知する。その後も、処理要求を処理待ちキュー２１から取り出し、実行サーバ分散手段１３へ処理依頼として通知する。【０１２６】
ステップＳ４０６では、処理待ちキュー２１が空か判断する。処理待ちキュー２１にまだ要求処理が残っている場合は、ステップＳ４０２から動作を繰り返す。処理待ちキュー２１が空の場合は、再度ステップＳ４０１での処理要求の到着を待つ。例えば、図１７の時刻ｔ１４の場合は、タイムスロットの最初の時点で処理待ちキュー２１に６件登録される。処理完了確認手段１４が、仮想マシンの起動終了を確認するたびに、処理待ちキュー２１が空であるか確認し、処理待ちキュー２１に処理が存在する場合は、ステップＳ４０２以降を再度実行する。【０１２７】
次に本発明の第４の実施形態の効果を説明する。【０１２８】
前述した第１の実施形態では、図１７の時刻ｔ１４に示すようなバースト的な処理要求を受け付けた場合は、空きリソースを多数の要求で分割してそれぞれの処理を実行するため、全ての処理に対して処理時間が遅くなる場合があった。しかし、第４の実施形態では、処理方式選択手段２０が、処理要求を一時的に処理待ちキュー２１に保持し、各処理方式を用いた際の処理時間を計算し、この計算した処理時間を比較して処理時間が短い方式を選択し、その方式にあわせて処理要求の数を処理待ちキュー２１から取り出すことができるため、処理時間の平均値を短縮することができる。第４の実施形態のように、処理要求を一時的に待たせる処理待ちキュー２１を有することによって、バッチ処理のように一括で要求を受けた場合でも、処理要求を待たせることができるので、本発明を適応させることができる。【０１２９】
第１の実施形態から第４の実施形態まで、仮想マシン管理システム１〜４は、仮想マシン提供サーバ９０と別のコンピュータ上で動作するとして説明してきた。しかし、本発明の効果は、別コンピュータで動作させることに特徴を持つものではないため、仮想マシン提供サーバ９０上の仮想マシン９１内や、仮想化ソフトウェア９２で仮想マシン管理システムを動作させても既に説明したのと同様の効果を実現することができる。【０１３０】
また、第１の実施形態から第４の実施形態をそれぞれ組み合わせることで、それぞれの効果を有する仮想マシン管理システムを提供することもできる。【０１３１】
また、本発明では、ある時刻で特定処理を実行している仮想マシン数が少なくなるので、障害時に影響を受ける仮想マシン数を削減できるという効果もある。【０１３２】
以上本発明を上記実施形態に即して説明したが、本発明は、上記実施形態にのみ限定されるものではなく、本願特許請求の範囲の各請求項の発明の範囲内で当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。
【図１】
2008146677.tif 000003
【図２】
2008146677.tif 000004
【図３】
2008146677.tif 000005
【図４】
2008146677.tif 000006
【図５】
2008146677.tif 000007
【図６】
2008146677.tif 000008
【図７】
2008146677.tif 000009
【図８】
2008146677.tif 000010
【図９】
2008146677.tif 000011
【図１０】
2008146677.tif 000012
【図１１】
2008146677.tif 000013
【図１２】
2008146677.tif 000014
【図１３】
2008146677.tif 000015
【図１４】
2008146677.tif 000016
【図１５】
2008146677.tif 000017
【図１６】
2008146677.tif 000018
【図１７】
2008146677.tif 000019
【図１８】
2008146677.tif 000020
【図１９】
2008146677.tif 000021
【図２０】
2008146677.tif 000022
【国際調査報告】
2008146677.tif 000023
2008146677.tif 000024
2008146677.tif 000025
2008146677.tif 000026