(57)【特許請求の範囲】
【請求項１】
コンピュータで実行される１または複数の仮想マシンに対するリソースの割り当て量を制御する情報処理装置であって、
リソースの割り当て量と指標との対応関係を示す指標情報と、許容する指標の上限値とを記憶する記憶部と、
リソースの使用状況からリソース不足の仮想マシンが検出されると、前記１または複数の仮想マシンに対するリソースの割り当て量と前記指標情報とに基づいて算出される指標値が前記上限値を超えないように、前記リソース不足の仮想マシンに対するリソースの割り当て量を増加させる制御部と、を有し、
前記制御部は、前記リソース不足の仮想マシンに対するリソースの割り当て量を増加させると、該増加させた割り当て量と前記指標情報とに基づいて算出される指標値が前記上限値を超える場合、前記リソース不足の仮想マシン以外の他の仮想マシンに対するリソースの割り当て量を減少させる、
ことを特徴とする情報処理装置。
【請求項２】
コンピュータで実行される１または複数の仮想マシンに対するリソースの割り当て量を制御する情報処理装置であって、
リソースの割り当て量と指標との対応関係を示す指標情報と、許容する指標の上限値とを記憶する記憶部と、
リソースの使用状況からリソース不足の仮想マシンが検出されると、前記１または複数の仮想マシンに対するリソースの割り当て量と前記指標情報とに基づいて算出される指標値が前記上限値を超えないように、前記リソース不足の仮想マシンに対するリソースの割り当て量を増加させる制御部と、を有し、
前記制御部は、割り当て量を増加させる前の割り当て量と前記指標情報とに基づいて算出された前記指標値と前記上限値との差から、増加可能な期間を算出し、算出した期間が経過するまで、増加させたリソースの割り当て量を維持する、
ことを特徴とする情報処理装置。
【請求項３】
前記制御部は、前記算出した期間の経過後、割り当て量を増加させた仮想マシンまたは前記割り当て量を増加させた仮想マシン以外の他の仮想マシンに対するリソースの割り当て量を減少させることを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記指標値は、前記１または複数の仮想マシンの使用により発生する料金の合計であることを特徴とする請求項１または２記載の情報処理装置。
【請求項５】
前記記憶部は、前記指標情報および前記上限値をユーザごとに記憶しており、
前記制御部は、ユーザごとに算出した所定期間内における前記指標値に基づいて、前記ユーザごとにリソースの割り当て量を変更させる、
ことを特徴とする請求項１または２記載の情報処理装置。
【請求項６】
コンピュータで実行される１または複数の仮想マシンに対するリソースの割り当て量を制御する装置の仮想マシン管理方法であって、
前記コンピュータのリソースの使用状況から、リソース不足の仮想マシンを検出し、
前記１または複数の仮想マシンに対するリソースの割り当て量と、記憶部に記憶されたリソースの割り当て量と指標との対応関係を示す指標情報と、に基づいて算出される指標値が、前記記憶部に記憶された許容する指標の上限値を超えないように、前記リソース不足の仮想マシンに対するリソースの割り当て量を増加させ、
前記リソース不足の仮想マシンに対するリソースの割り当て量を増加させる際に、該増加させた割り当て量と前記指標情報とに基づいて算出される指標値が前記上限値を超える場合、前記リソース不足の仮想マシン以外の他の仮想マシンに対するリソースの割り当て量を減少させる、
ことを特徴とする仮想マシン管理方法。
【請求項７】
コンピュータで実行される１または複数の仮想マシンに対するリソースの割り当て量を制御する装置の仮想マシン管理方法であって、
前記コンピュータのリソースの使用状況から、リソース不足の仮想マシンを検出し、
前記１または複数の仮想マシンに対するリソースの割り当て量と、記憶部に記憶されたリソースの割り当て量と指標との対応関係を示す指標情報と、に基づいて算出される指標値が、前記記憶部に記憶された許容する指標の上限値を超えないように、前記リソース不足の仮想マシンに対するリソースの割り当て量を増加させ、
割り当て量を増加させる前の割り当て量と前記指標情報とに基づいて算出された前記指標値と前記上限値との差から、増加可能な期間を算出し、算出した期間が経過するまで、増加させたリソースの割り当て量を維持する、
ことを特徴とする仮想マシン管理方法。
【請求項８】
情報処理装置で実行される１または複数の仮想マシンに対するリソースの割り当て量を制御する仮想マシン管理プログラムであって、コンピュータに、
前記情報処理装置のリソースの使用状況から、リソース不足の仮想マシンを検出し、
前記１または複数の仮想マシンに対するリソースの割り当て量と、記憶部に記憶されたリソースの割り当て量と指標との対応関係を示す指標情報と、に基づいて算出される指標値が、前記記憶部に記憶された許容する指標の上限値を超えないように、前記リソース不足の仮想マシンに対するリソースの割り当て量を増加させ、
前記リソース不足の仮想マシンに対するリソースの割り当て量を増加させる際に、前記リソースの割り当て量を増加させると、該増加させた割り当て量と前記指標情報とに基づいて算出される指標値が前記上限値を超える場合、前記リソース不足の仮想マシン以外の他の仮想マシンに対するリソースの割り当て量を減少させる、
処理を実行させることを特徴とする仮想マシン管理プログラム。
【請求項９】
情報処理装置で実行される１または複数の仮想マシンに対するリソースの割り当て量を制御する仮想マシン管理プログラムであって、コンピュータに、
前記情報処理装置のリソースの使用状況から、リソース不足の仮想マシンを検出し、
前記１または複数の仮想マシンに対するリソースの割り当て量と、記憶部に記憶されたリソースの割り当て量と指標との対応関係を示す指標情報と、に基づいて算出される指標値が、前記記憶部に記憶された許容する指標の上限値を超えないように、前記リソース不足の仮想マシンに対するリソースの割り当て量を増加させ、
割り当て量を増加させる前の割り当て量と前記指標情報とに基づいて算出された前記指標値と前記上限値との差から、増加可能な期間を算出し、算出した期間が経過するまで、増加させたリソースの割り当て量を維持する、
処理を実行させることを特徴とする仮想マシン管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置、仮想マシン管理方法および仮想マシン管理プログラムに関する。
【背景技術】
【０００２】
現在、情報処理の分野では、物理的なコンピュータ上で、１またはそれ以上の仮想的なコンピュータ（仮想マシンと呼ぶことがある）を実行する仮想化技術が利用されている。それぞれの仮想マシンにおいて、オペレーティングシステム（ＯＳ：Operating System）が実行される。仮想マシンを実行するコンピュータでは、例えば、ＣＰＵ（Central Processing Unit）やＲＡＭ（Random Access Memory）などのコンピュータのリソースを仮想マシンに割り当てるソフトウェア（ハイパーバイザと呼ぶことがある）が実行される。各仮想マシンのＯＳは、割り当てられたリソースの範囲内で、アプリケーションプログラムのスケジューリングなどの制御を行う。
【０００３】
また、近年では、ネットワーク経由で、コンピュータのリソースを使用する権利をユーザに貸し出し、リソースの使用量や使用時間などの使用状況に応じてユーザへ課金を行うサービスが利用されている。このようなサービス利用形態は、ＩａａＳ（Infrastructure as a Service）と呼ばれることがある。コンピュータでは、ユーザ間の処理の分離や課金管理の容易性などの観点から、仮想化技術が用いられ、ユーザ毎に１またはそれ以上の仮想マシンが実行されることがある。
【０００４】
なお、データセンタにおいて、ユーザのサービスレベル契約と計算機のＣＰＵ使用率とを比較し、サービスレベル未達成時は、ユーザに割り当てる計算機を増加させると共に、課金情報を更新する方法が提案されている。また、物理資源を論理パーティション（ＬＰＡＲ：Logical Partition）に分割してユーザに割り当てるシステムにおいて、負荷の上限閾値と下限閾値を設定しておく方法が提案されている。負荷が上限閾値を超えると資源割り当てを増加させ、負荷が下限閾値を下回ると増加した資源量を初期値に戻す。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−２４１９２号公報
【特許文献２】特開２００２−２０２９５９号公報（段落［００７５］）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、仮想マシンの負荷が増加したときのリソースの割り当て量をどのように制御すればよいかが問題となる。例えば、負荷の増加に合わせて十分なリソースが割り当てられることを望むユーザが存在し得る。一方、リソースの割り当て量に応じてユーザに課金が行われるサービス利用形態では、料金が高額になることを望まないユーザも存在し得る。
【０００７】
本発明はこのような点に鑑みてなされたものであり、仮想マシンに対するリソースの割り当て量の変動を適切な範囲で制御できる情報処理装置、仮想マシン管理方法および仮想マシン管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
コンピュータで実行される１または複数の仮想マシンに対するリソースの割り当て量を制御する情報処理装置が提供される。この情報処理装置は、記憶部と制御部とを有する。記憶部は、リソースの割り当て量と指標との対応関係を示す指標情報と、許容する指標の上限値とを記憶する。制御部は、リソースの使用状況からリソース不足の仮想マシンが検出されると、１または複数の仮想マシンに対するリソースの割り当て量と指標情報とに基づいて算出される指標値が上限値を超えないように、リソース不足の仮想マシンに対するリソースの割り当て量を増加させる。制御部は、リソース不足の仮想マシンに対するリソースの割り当て量を増加させると、該増加させた割り当て量と指標情報とに基づいて算出される指標値が上限値を超える場合、リソース不足の仮想マシン以外の他の仮想マシンに対するリソースの割り当て量を減少させる。
また、コンピュータで実行される１または複数の仮想マシンに対するリソースの割り当て量を制御する情報処理装置が提供される。この情報処理装置は、記憶部と制御部とを有する。記憶部は、リソースの割り当て量と指標との対応関係を示す指標情報と、許容する指標の上限値とを記憶する。制御部は、リソースの使用状況からリソース不足の仮想マシンが検出されると、１または複数の仮想マシンに対するリソースの割り当て量と指標情報とに基づいて算出される指標値が上限値を超えないように、リソース不足の仮想マシンに対するリソースの割り当て量を増加させる。制御部は、割り当て量を増加させる前の割り当て量と指標情報とに基づいて算出された指標値と上限値との差から、増加可能な期間を算出し、算出した期間が経過するまで、増加させたリソースの割り当て量を維持する。
【０００９】
また、コンピュータで実行される１または複数の仮想マシンに対するリソースの割り当て量を制御する装置の仮想マシン管理方法が提供される。この仮想マシン管理方法では、コンピュータのリソースの使用状況から、リソース不足の仮想マシンを検出する。１または複数の仮想マシンに対するリソースの割り当て量と、記憶部に記憶されたリソースの割り当て量と指標との対応関係を示す指標情報と、に基づいて算出される指標値が、記憶部に記憶された許容する指標の上限値を超えないように、リソース不足の仮想マシンに対するリソースの割り当て量を増加させる。リソース不足の仮想マシンに対するリソースの割り当て量を増加させる際に、該増加させた割り当て量と指標情報とに基づいて算出される指標値が上限値を超える場合、リソース不足の仮想マシン以外の他の仮想マシンに対するリソースの割り当て量を減少させる。
また、コンピュータで実行される１または複数の仮想マシンに対するリソースの割り当て量を制御する装置の仮想マシン管理方法が提供される。この仮想マシン管理方法では、コンピュータのリソースの使用状況から、リソース不足の仮想マシンを検出する。１または複数の仮想マシンに対するリソースの割り当て量と、記憶部に記憶されたリソースの割り当て量と指標との対応関係を示す指標情報と、に基づいて算出される指標値が、記憶部に記憶された許容する指標の上限値を超えないように、リソース不足の仮想マシンに対するリソースの割り当て量を増加させる。割り当て量を増加させる前の割り当て量と指標情報とに基づいて算出された指標値と上限値との差から、増加可能な期間を算出し、算出した期間が経過するまで、増加させたリソースの割り当て量を維持する。
【発明の効果】
【００１０】
上記情報処理装置、仮想マシン管理方法および仮想マシン管理プログラムによれば、仮想マシンに対するリソースの割り当て量の変動を適切な範囲で制御できる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態の情報処理システムを示す図である。
【図２】第２の実施の形態の情報処理システムを示す図である。
【図３】ポータルサーバのハードウェア例を示す図である。
【図４】仮想マシンの配置例を示すブロック図である。
【図５】ポータルサーバおよび管理サーバの機能を示すブロック図である。
【図６】料金一覧テーブルのデータ構造例を示す図である。
【図７】最大料金テーブルのデータ構造例を示す図である。
【図８】料金集計テーブルのデータ構造例を示す図である。
【図９】リソース管理テーブルのデータ構造例を示す図である。
【図１０】ランク変更処理を示すフローチャートである。
【図１１】ランク変更処理を示すフローチャート（続き）である。
【図１２】ランク復元処理を示すフローチャートである。
【図１３】リソース管理処理を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の情報処理システムを示す図である。第１の実施の形態の情報処理システムは、コンピュータ１および情報処理装置２を有する。情報処理装置２は、コンピュータ１と通信可能である。第１の実施の形態の情報処理システムは、コンピュータ１以外の他のコンピュータを含んでもよい。
【００１３】
コンピュータ１（または、コンピュータ１を含む複数のコンピュータ）は、１またはそれ以上の仮想マシンを実行する。以下の第１の実施の形態の説明では、コンピュータ１が仮想マシン１ａ，１ｂを実行する場合を考える。コンピュータ１は、ハイパーバイザなどの管理手段を有する。管理手段は、情報処理装置２による制御のもと、ＣＰＵやＲＡＭなどのコンピュータ１のリソースを、仮想マシン１ａ，１ｂに割り当てる。仮想マシン１ａ，１ｂでは、例えば、それぞれＯＳが実行される。
【００１４】
情報処理装置２は、各仮想マシンに対するリソースの割り当て量を制御する。情報処理装置２は、記憶部２ａおよび制御部２ｂを有する。
記憶部２ａは、リソースの割り当て量と指標との対応関係を示す指標情報と、許容する指標の上限値とを記憶する。指標は、リソースの割り当て量に応じて値が変化するものであり、例えば、仮想マシンの利用料金である。指標情報が示す対応関係は、例えば、リソースの割り当て量が増加すると指標値も増加するという正の相関関係をもつ。上限値は、例えば、ユーザが１またはそれ以上の仮想マシンを利用することにより発生する料金の許容値である。上限値は、例えば、仮想マシンを利用するユーザにより設定される。
【００１５】
制御部２ｂは、コンピュータ１のリソースの使用状況から、リソース不足の仮想マシン（例として、仮想マシン１ａがリソース不足であるとする）が検出されると、仮想マシン１ａに対するリソースの割り当て量の増加を試みる。仮想マシン１ａがリソース不足であることは、例えば、仮想マシン毎のＣＰＵ使用率やメモリ使用率などの負荷を示す情報を収集し、負荷が閾値を超える仮想マシンが存在するか否か判断することで検出できる。制御部２ｂは、仮想マシン１ａ，１ｂに対するリソースの割り当て量と指標情報とに基づいて指標値（例えば、仮想マシン１ａ，１ｂ全体から生じる料金）を算出し、指標値が上限値を超えない範囲で、仮想マシン１ａに対するリソースの割り当て量を増加させる。
【００１６】
なお、制御部２ｂは、仮想マシン１ａに対するリソースの割り当て量を増加させると、指標値が上限値を超えてしまう場合、他の仮想マシン（例えば、仮想マシン１ｂ）に対するリソースの割り当て量を減少させるようにしてもよい。また、制御部２ｂは、割り当て量を増加させる前の指標値と上限値との差から、増加可能な期間を算出し、算出した期間割り当て量を増加させてもよい。その場合、期間の経過後は、仮想マシン１ａに対するリソースの割り当て量を元に戻してもよいし、他の仮想マシン（例えば、仮想マシン１ｂ）に対するリソースの割り当て量を減少させてもよい。
【００１７】
例えば、制御部２ｂは、仮想マシン１ａのＣＰＵ使用率が高くリソース不足と判断されると、仮想マシン１ａのリソースの割り当て量を増加させたときの指標値を算出し、上限値と比較する。制御部２ｂは、指標値が上限値以下である場合、仮想マシン１ａのリソースの割り当て量が増加するよう制御する。一方、指標値が上限値を超える場合、例えば、仮想マシン１ｂのリソースの割り当て量を減少させれば、指標値が上限値以下になるか判断する。指標値が上限値以下になる場合、仮想マシン１ａのリソースの割り当て量が増加し、仮想マシン１ｂのリソースの割り当て量が減少するよう制御する。
【００１８】
情報処理装置２によれば、コンピュータ１のリソースの使用状況から、リソース不足の仮想マシン１ａが検出される。仮想マシン１ａ，１ｂに対するリソースの割り当て量と記憶部２ａに記憶された指標情報とに基づいて指標値が算出される。指標値が記憶部２ａに記憶された上限値を超えないように、リソース不足の仮想マシン１ａに対するリソースの割り当て量が増加される。
【００１９】
これにより、１またはそれ以上の仮想マシンに対するリソースの割り当て量が適切な範囲で変動するよう制御することができる。例えば、ユーザが利用する１またはそれ以上の仮想マシンに対する料金の合計が、ユーザが設定した上限値を超えないように制御することができる。また、上限値を超えない範囲で、リソース不足の仮想マシンについて、自動的にリソースの割り当て量が増加するよう制御することができる。
【００２０】
以下に説明する第２の実施の形態では、複数のサーバコンピュータを用いて、ユーザが所望する性能の仮想マシンを実行する情報処理システムの例を示す。
［第２の実施の形態］
図２は、第２の実施の形態の情報処理システムを示す図である。第２の実施の形態に係る情報処理システムは、複数のサーバコンピュータ（以下、単にサーバということもある）でクライアントからの要求を受け付け、要求に応じた仮想マシンを実行する。ユーザは、クライアントを介して仮想マシンを操作し、自己の情報処理システムの基盤として利用する。
【００２１】
この情報処理システムは、ポータルサーバ１００、管理サーバ２００および実行サーバ３００，３００ａ，３００ｂを含む。ポータルサーバ１００、管理サーバ２００および実行サーバ３００，３００ａ，３００ｂは、ネットワーク１０に接続されている。また、ポータルサーバ１００は、ネットワーク２０に接続されている。更に、クライアント２１，２２，２３がネットワーク２０に接続されている。
【００２２】
クライアント２１，２２，２３は、ユーザが操作する情報処理装置である。クライアント２１，２２，２３は、ポータルサーバ１００を介して実行サーバ３００，３００ａ，３００ｂで実行される仮想マシンに対して処理の実行を要求する。クライアント２１，２２，２３は、実行サーバ３００，３００ａ，３００ｂから要求に対する処理結果を受信する。
【００２３】
ポータルサーバ１００は、実行サーバ３００，３００ａ，３００ｂが実行する仮想マシンのリソースの割り当て量を管理するサーバコンピュータである。また、ポータルサーバ１００は各仮想マシンに対するリソースの割り当て量に基づいて、ユーザごとの課金状況を管理する。
【００２４】
管理サーバ２００は、実行サーバ３００，３００ａ，３００ｂにおける仮想マシンの起動・停止を制御するサーバコンピュータである。管理サーバ２００は、ポータルサーバ１００の指示に基づいて、仮想マシンに割り当てるリソース量を変更する。
【００２５】
実行サーバ３００，３００ａ，３００ｂは、仮想マシンを実行するサーバコンピュータである。
ここで、この情報処理システムは有料である。サービス提供者は、ユーザの仮想マシンの使用状況に応じて課金を行う。料金は、仮想マシンの能力のランクによって定めることができる。例えば、仮想マシンに割り当てるＣＰＵの能力やＲＡＭのメモリサイズなどで、仮想マシンの能力をランク付けする。そして、ランクごとに、当該ランクで所定期間だけ利用した場合に発生する料金が、予め定められる。なお、本例ではサービス提供者からユーザに対する利用料金の請求は月締めで行われるとする（締め日は月の末日とする）。ただし、日締め、週締めおよび半年締めなど、他の周期で行われてもよい。
【００２６】
図３は、ポータルサーバのハードウェア例を示す図である。ポータルサーバ１００は、ＣＰＵ１０１、ＲＯＭ（Read Only Memory）１０２、ＲＡＭ１０３、ＨＤＤ（Hard Disk Drive）１０４、グラフィック処理装置１０５、入力インタフェース１０６、記録媒体読取装置１０７および通信インタフェース１０８，１０９を有する。
【００２７】
ＣＰＵ１０１は、ＯＳプログラムやアプリケーションプログラムを実行して、ポータルサーバ１００全体を制御する。
ＲＯＭ１０２は、ポータルサーバ１００の起動時に実行されるＢＩＯＳ（Basic Input / Output System）プログラムなどの所定のプログラムを記憶する。ＲＯＭ１０２は、書き換え可能な不揮発性メモリであってもよい。
【００２８】
ＲＡＭ１０３は、ＣＰＵ１０１が実行するＯＳプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１０３は、ＣＰＵ１０１の処理に用いられるデータの少なくとも一部を一時的に記憶する。
【００２９】
ＨＤＤ１０４は、ＯＳプログラムやアプリケーションプログラムを記憶する。また、ＨＤＤ１０４は、ＣＰＵ１０１の処理に用いられるデータを記憶する。なお、ＨＤＤ１０４に代えて（または、ＨＤＤ１０４と併せて）、ＳＳＤ（Solid State Drive）など他の種類の不揮発性の記憶装置を用いてもよい。
【００３０】
グラフィック処理装置１０５は、モニタ３１に接続される。グラフィック処理装置１０５は、ＣＰＵ１０１からの命令に従って、画像をモニタ３１に表示させる。
入力インタフェース１０６は、キーボード３２やマウス３３などの入力デバイスに接続される。入力インタフェース１０６は、入力デバイスから送られる入力信号をＣＰＵ１０１に出力する。
【００３１】
記録媒体読取装置１０７は、記録媒体３４に格納されたデータを読み取る読取装置である。記録媒体３４には、例えば、ポータルサーバ１００に実行させるプログラムが記録されている。ポータルサーバ１００は、例えば、記録媒体３４に記録された管理プログラムを実行することで、後述するような管理機能を実現することができる。すなわち、管理プログラムはコンピュータ読み取り可能な記録媒体３４に記録して配布することが可能である。
【００３２】
記録媒体３４としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリを使用できる。磁気記録装置には、ＨＤＤ、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＣＤ（Compact Disc）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−Ｒ／ＲＷ／ＲＡＭなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。半導体メモリには、ＵＳＢ（Universal Serial Bus）メモリなどのフラッシュメモリがある。
【００３３】
通信インタフェース１０８，１０９は、ネットワーク１０，２０に接続される。通信インタフェース１０８は、ネットワーク１０を介して管理サーバ２００および実行サーバ３００，３００ａ，３００ｂとデータ通信を行える。また、通信インタフェース１０９は、ネットワーク２０を介してクライアント２１，２２，２３とデータ通信を行える。
【００３４】
なお、ネットワーク１０，２０に接続された他のサーバコンピュータ（図示せず）に管理プログラムを格納しておいてもよい。その場合、ポータルサーバ１００は、当該サーバコンピュータから管理プログラムをダウンロードして実行することもできる。
【００３５】
クライアント２１，２２，２３、管理サーバ２００および実行サーバ３００，３００ａ，３００ｂもポータルサーバ１００と同様のハードウェア構成により実現できる。
図４は、仮想マシンの配置例を示すブロック図である。実行サーバ３００は、ハードウェア層３１０、ハイパーバイザ３２０および仮想マシン層３３０を有する。
【００３６】
ハードウェア層３１０は、実行サーバ３００が備えるハードウェア資源が属する階層である。ハードウェア資源としては、例えばＣＰＵ、ＲＡＭ、ＨＤＤおよび通信インタフェースなどがある。
【００３７】
ハイパーバイザ３２０は、実行サーバ３００上で仮想マシンを実現する。ハイパーバイザ３２０は、管理サーバ２００の指示に基づいて各仮想マシンに対するハードウェア資源の割り当てを行い、各仮想マシンの起動・停止を実行する。また、ハイパーバイザ３２０は、各仮想マシンがハードウェア層３１０上の資源を共同で利用できるよう各仮想マシンのハードウェア資源へのアクセスを調停する。更に、ハイパーバイザ３２０は各仮想マシンに割り当てたハードウェア資源の使用状況を監視する。
【００３８】
仮想マシン層３３０は、ハイパーバイザ３２０により実行サーバ３００上に実現された仮想マシンが属する階層である。仮想マシン層３３０には、複数の仮想マシン３３１，３３２，３３３が含まれる。仮想マシン３３１，３３２，３３３では、それぞれ独立のＯＳを実行している。実行するＯＳはハイパーバイザ３２０により指定される。仮想マシン３３１，３３２，３３３が実行するＯＳはそれぞれ同一でもよいし、異なっていてもよい。ユーザは、クライアントを操作して仮想マシン３３１，３３２，３３３に個別にアプリケーションプログラムをインストールし、当該アプリケーションの機能を利用できる。
【００３９】
なお、実行サーバ３００ａ，３００ｂも実行サーバ３００と同様の構成により実現できる。
図５は、ポータルサーバおよび管理サーバの機能を示すブロック図である。ポータルサーバ１００は、料金情報記憶部１１０、料金設定部１２０、能力調整部１３０および契約変更部１４０を有する。これらのユニットの機能は、ＣＰＵ１０１が管理プログラムを実行することによりポータルサーバ１００上に実現される。ただし、これらのユニットの機能の全部または一部を専用のハードウェアで実装してもよい。
【００４０】
料金情報記憶部１１０は、ユーザへの課金に用いる料金情報を記憶する。料金情報は、料金一覧テーブル、許容最大料金テーブル、料金集計テーブルおよびリソース管理テーブルを含む。料金一覧テーブルは、仮想マシンの能力ランクに応じた課金方法を定義したデータである。許容最大料金テーブルは、ユーザごとに請求可能な上限額（最大料金）を定義したデータである。料金集計テーブルは、ユーザごとに割り当てた仮想マシン、その現ランクおよび現在までの課金状況を集計したデータである。リソース管理テーブルは、ユーザごとに各仮想マシンに割り当てたリソースの使用状況を設定したデータである。
【００４１】
料金設定部１２０は、クライアント２１，２２，２３からユーザごとの許容最大料金を受け付け、料金情報記憶部１１０に格納する。
能力調整部１３０は、仮想マシンの能力を調整する。能力調整部１３０は、監視部１３１、料金判定部１３２、ランクアップ指示部１３３、ランクダウン指示部１３４および契約変更通知部１３５を有する。
【００４２】
監視部１３１は、管理サーバ２００を介して実行サーバ３００，３００ａ，３００ｂ上の仮想マシンに割り当てたリソースの使用状況を定期的に監視し、能力不足の仮想マシンを検出する。能力不足であるか否かは、各仮想マシンに割り当てたリソースの使用率によって検出できる。リソースの使用率は当該仮想マシンに割り当てたリソースの負荷の一例である。
【００４３】
料金判定部１３２は、監視部１３１で能力不足の仮想マシンが検出されると、当該仮想マシンのランクの向上（ランクアップ）が可能であるかを判定する。具体的には、料金設定部１２０はユーザごとの仮想マシンのランクと、当該ランクで仮想マシンを利用した利用時間と、に基づいて、ユーザごとの料金集計データを更新する。そのために料金判定部１３２は、前回の料金精算後から現在までの各ランクでの仮想マシンの利用時間を計測している。そして、料金判定部１３２は料金情報記憶部１１０を参照して、ランクアップ後に想定される利用料金が当該ユーザの許容最大料金を超えるか否かを判定する。
【００４４】
許容最大料金を超えない場合、料金判定部１３２はランクアップ対象の仮想マシンをランクアップ指示部１３３に通知する。許容最大料金を超える場合、料金判定部１３２はその他の仮想マシンで能力ランクの低下（ランクダウン）が可能であるかを判定する。例えば、現在のリソースの使用率からリソースの実質的な所要量を見積り、１ランクダウンさせた能力で、当該所要量を充足できるか判断する。充足できればランクダウン可能、充足できなければランクダウン不可と判断する。ランクダウン可能であれば、ランクダウン対象の仮想マシンをランクダウン指示部１３４に通知する。そして、料金判定部１３２は当該ランクダウン後に、再度能力不足の仮想マシンがランクアップ可能であるかを判定する。
【００４５】
ランクアップ指示部１３３は、ランクアップ対象の仮想マシンの通知を料金判定部１３２から受けると、ランクアップに応じた当該仮想マシンのリソース量の増加を管理サーバ２００に指示する。また、ランクアップ指示部１３３は、当該ランクアップを契約変更通知部１３５および契約変更部１４０に通知する。
【００４６】
ランクダウン指示部１３４は、ランクダウン対象の仮想マシンの通知を料金判定部１３２から受けると、ランクダウンに応じた当該仮想マシンのリソース量の減少を管理サーバ２００に指示する。また、ランクダウン指示部１３４は、ランクダウンに伴う仮想マシンの契約変更を契約変更部１４０に指示する。更に、ランクダウン指示部１３４は、ランクダウン内容を契約変更通知部１３５に出力する。
【００４７】
契約変更通知部１３５は、ランクアップ／ランクダウンの内容をユーザに通知する。例えば、契約変更通知部１３５は、当該内容を記述した電子メールを生成して、当該電子メールをユーザの電子メールアドレスに送信する。ユーザは、自身に送信された電子メールをクライアント２１，２２，２３に受信させて参照することで、ランクアップ／ランクダウンの内容を知ることができる。
【００４８】
契約変更部１４０は、ランクアップ指示部１３３またはランクダウン指示部１３４の指示により、料金情報記憶部１１０を参照して、当該ユーザの現在の仮想マシンのランクを変更する。
【００４９】
管理サーバ２００は、リソース割当部２１０および使用状況取得部２２０を有する。これらのユニットの機能は、管理サーバ２００が備えるＣＰＵが所定のプログラムを実行することにより管理サーバ２００上に実現される。ただし、これらのユニットの機能の全部または一部を専用のハードウェアで実装してもよい。
【００５０】
リソース割当部２１０は、実行サーバ３００，３００ａ，３００ｂで実行される仮想マシンごとのリソースの割り当て量を制御する。リソース割当部２１０は、ランクアップ指示部１３３およびランクダウン指示部１３４によるリソース量の増加／減少の指示に応じて、実行サーバ３００，３００ａ，３００ｂに各仮想マシンのリソース量を変更させる。
【００５１】
使用状況取得部２２０は、監視部１３１から各仮想マシンに割り当てたリソースの使用状況の取得要求を受信すると、ハイパーバイザに問い合わせを行う。使用状況取得部２２０は、ハイパーバイザの応答内容を監視部１３１に送信する。
【００５２】
図６は、料金一覧テーブルのデータ構造例を示す図である。料金一覧テーブル１１１は、料金情報記憶部１１０に格納される。料金一覧テーブル１１１は、リソースの割り当て量に応じて値が変化する指標情報の一例である。リソースの割り当て量と料金との対応関係は、リソースの割り当て量が増加すると料金も増加するという正の相関関係をもつ。
【００５３】
料金一覧テーブル１１１には、能力ランク、ＣＰＵ能力値、メモリサイズ、月額料金および時間料金の項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、１つの契約ランクに関する契約内容を示す。
【００５４】
能力ランクの項目には、能力ランクを識別するためのランクの名称が設定される。ＣＰＵ能力値の項目には、リソースとして割り当てるＣＰＵの能力値が設定される。メモリサイズの項目には、リソースとして割り当てるＲＡＭのサイズが設定される。月額料金の項目には、当該ランクの１か月当たりの利用料金が設定される。時間料金の項目には、当該ランクの１時間当たりの利用料金が設定される。
【００５５】
例えば、料金一覧テーブル１１１には、能力ランクが“ｍｉｎｉ”、ＣＰＵ能力値が“１ＧＨｚ（Giga Hertz）”、メモリサイズが“５１２ＭＢ（Mega Bytes）”、月額料金が“７２００（円）”、時間料金が“１０（円）”という情報が設定される。
【００５６】
これは、ランク“ｍｉｎｉ”では、仮想マシンに対して動作周波数１ＧＨｚ相当のＣＰＵ能力および５１２ＭＢ相当のメモリサイズがリソースとして割り当てられることを示している。また、ランク“ｍｉｎｉ”での１か月当たりの利用料金が７２００円、１時間当たりの利用料金が１０円であることを示している。
【００５７】
図７は、最大料金テーブルのデータ構造例を示す図である。最大料金テーブル１１２は、料金情報記憶部１１０に格納される。最大料金テーブル１１２は、ユーザごとに許容する料金の上限値を定義したものである。
【００５８】
最大料金テーブル１１２には、ユーザおよび最大月額料金の項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、１ユーザの最大月額料金を示す。
【００５９】
ユーザの項目には、ユーザの識別情報が設定される。最大月額料金の項目には、許容される最大の月額利用料金が設定される。例えば、最大料金テーブル１１２には、ユーザが“Ｕ００１”、最大月額料金が“２５０００（円）”という情報が設定される。これは、ユーザ“Ｕ００１”では、許容される最大の月額利用料金が２５０００円であることを示している。
【００６０】
図８は、料金集計テーブルのデータ構造例を示す図である。料金集計テーブル１１３は、料金情報記憶部１１０に格納される。料金集計テーブル１１３には、ユーザ、ＶＭ（Virtual Machine）名、現ランク、ｍｉｎｉの時間、ｓｍａｌｌの時間、ｍｅｄｉｕｍの時間、ｌａｒｇｅの時間および合計料金の項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、１ユーザの課金状況を示す。
【００６１】
ユーザの項目には、ユーザの識別情報が設定される。ＶＭ名の項目には、当該ユーザに割り当てられた仮想マシンの名称が設定される。現ランクの項目には、当該仮想マシンの現在のランクが設定される。ｍｉｎｉの時間の項目には、前回の料金精算後からランク“ｍｉｎｉ”で利用された時間の合計が設定される。ｓｍａｌｌの時間の項目には、前回の料金精算後からランク“ｓｍａｌｌ”で利用された時間の合計が設定される。ｍｅｄｉｕｍの時間の項目には、前回料金精算後からランク“ｍｅｄｉｕｍ”で利用された時間の合計が設定される。ｌａｒｇｅの時間の項目には、前回料金精算後からランク“ｌａｒｇｅ”で利用された時間の合計が設定される。合計料金の項目には、当該仮想マシンに対する現時点での課金額が設定される。
【００６２】
例えば、料金集計テーブル１１３には、ユーザが“Ｕ００１”、ＶＭ名が“ＶＭ１”、現ランクが“ｍｉｎｉ”、ｍｉｎｉの時間が“１０”（時間）、ｓｍａｌｌの時間が“２０”（時間）、ｍｅｄｉｕｍの時間が“１２０”（時間）、ｌａｒｇｅの時間が“１８”（時間）、合計料金が“６７４０”（円）という情報が設定される。
【００６３】
これは、ユーザ“Ｕ００１”に対してＶＭ名が“ＶＭ１”の仮想マシンが割り当てられており、その仮想マシンの現在のランクが“ｍｉｎｉ”であることを示している。更に、当該仮想マシンは、前回の利用料金の精算後から現在までに“ｍｉｎｉ”で１０時間、“ｓｍａｌｌ”で２０時間、“ｍｅｄｉｕｍ”で１２０時間、“ｌａｒｇｅ”で１８時間、利用されたことを示している。また、当該仮想マシンに対して現在までに課金されている金額の合計が６７４０円であることを示している。
【００６４】
また、例えば料金集計テーブル１１３には、ユーザが“Ｕ００１”、ＶＭ名が“全ＶＭ”、現ランクが“−（ハイフン）”、ｍｉｎｉの時間が“１６０”（時間）、ｓｍａｌｌの時間が“１３０”（時間）、ｍｅｄｉｕｍの時間が“３００”（時間）、ｌａｒｇｅの時間が“８２”（時間）、合計料金が“２２７６０”（円）という情報が設定される。
【００６５】
これは、ユーザ“Ｕ００１”に対して割り当てられている、仮想マシンＶＭ１〜ＶＭ４の全ＶＭに対する合計値を示している。このため、現ランクは設定なし（ハイフン）となっている。具体的には、仮想マシンＶＭ１〜ＶＭ４が前回の利用料金の精算後から現在までに合計で、“ｍｉｎｉ”で１６０時間、“ｓｍａｌｌ”で１３０時間、“ｍｅｄｉｕｍ”で３００時間、“ｌａｒｇｅ”で８２時間、利用されたことを示している。また、全仮想マシンにつき現在までに課金されている金額の合計が２２７６０円であることを示している。
【００６６】
図９は、リソース管理テーブルのデータ構造例を示す図である。リソース管理テーブル１１４は、料金情報記憶部１１０に格納される。リソース管理テーブル１１４には、ユーザ、ＶＭ名、ＣＰＵ割当、ＣＰＵ使用率、メモリ割当およびメモリ使用率の項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、１ユーザのリソースの使用状況を示す。
【００６７】
ユーザの項目には、ユーザの識別情報が設定される。ＶＭ名の項目には、当該ユーザに割り当てられた仮想マシンの名称が設定される。ＣＰＵ割当の項目には、当該仮想マシンに割り当てられたＣＰＵ能力が設定される。ＣＰＵ使用率の項目には、当該ＣＰＵ能力に対するＣＰＵ使用率が設定される。メモリ割当の項目には、当該仮想マシンに割り当てられたメモリサイズが設定される。メモリ使用率の項目には、当該メモリサイズに対するメモリ使用率が設定される。
【００６８】
例えば、リソース管理テーブル１１４には、ユーザが“Ｕ００１”、ＶＭ名が“ＶＭ１”、ＣＰＵ割当が“１ＧＨｚ”、ＣＰＵ使用率が“５０％”、メモリ割当が“５１２ＭＢ”、メモリ使用率が“６０％”という情報が設定される。
【００６９】
これは、ユーザ“Ｕ００１”に対して割り当てられている仮想マシン“ＶＭ１”の現在の性能が、ＣＰＵ能力１ＧＨｚ相当、メモリサイズ５１２ＭＢ相当であることを示している。また、この性能に対して、ＣＰＵ使用率が５０％、メモリ使用率が６０％であることを示している。
【００７０】
次に、以上の構成の情報処理システムの処理手順を説明する。まず、ポータルサーバ１００のランク変更処理の手順を説明する。ランク変更処理は、能力調整部１３０により所定の周期で開始される。
【００７１】
図１０は、ランク変更処理を示すフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。
（ステップＳ１１）監視部１３１は、管理サーバ２００に各仮想マシンに割り当てたリソースの使用状況取得要求を送信する。監視部１３１は、当該要求に応じたリソースの使用状況を管理サーバ２００から取得する。監視部１３１は、取得した情報に基づいて料金情報記憶部１１０を参照し、リソース管理テーブル１１４を更新する。
【００７２】
（ステップＳ１２）料金判定部１３２は、料金情報記憶部１１０に格納された料金集計テーブル１１３を参照し、各仮想マシンのランクと前回の利用料金精算後から現在までの利用時間とに基づいて、今月分の利用料金を集計する。料金判定部１３２は、集計結果により料金集計テーブル１１３を更新する。
【００７３】
（ステップＳ１３）監視部１３１は、リソース管理テーブル１１４を参照して、リソース使用率が上限の仮想マシンがあるか否かを判定する。ある場合、処理をステップＳ１４に進める。ない場合、処理を終了する。リソース使用率が上限に達しているか否かは、例えば仮想マシンに割り当てたＣＰＵ能力に対するＣＰＵ使用率が１００％に達しているか否かにより判断できる。リソース管理テーブル１１４の例では、仮想マシンＶＭ２でＣＰＵ使用率が１００％に達している。この場合、監視部１３１はリソース使用率が上限に達している仮想マシンがあると判定する。なお、上限は適宜定義できる。例えば、使用率９０％や８０％などとしてもよい。
【００７４】
（ステップＳ１４）料金判定部１３２は、月末までの残り時間Ｔを算出する。
（ステップＳ１５）料金判定部１３２は、監視部１３１により能力不足と判定された仮想マシンを１ランクアップした場合の今月料金を算出する。例えば、仮想マシンＶＭ２のランクアップを試みるとする。すると、仮想マシンＶＭ２の現ランクは、料金集計テーブル１１３によると“ｓｍａｌｌ”なので、これを“ｍｅｄｉｕｍ”とした場合の今月料金を算出する。具体的には、仮想マシンＶＭ２のランクを“ｍｅｄｉｕｍ”とした場合の時間料金にＴを乗じてＭＡ１を求める。また、ユーザ“Ｕ００１”に割り当てた他の仮想マシンＶＭ１，ＶＭ３，ＶＭ４の現ランクに対応する時間料金にＴを乗じてＭ２を求める。そして、ＭＡ１、Ｍ２および現在の合計料金の和をとることでランクアップ後の今月料金ＭＡを求めることができる。
【００７５】
（ステップＳ１６）料金判定部１３２は、料金情報記憶部１１０に格納された最大料金テーブル１１２を参照して、ランクアップ後の今月料金ＭＡが当該ユーザの最大料金（本例では最大月額料金）以内であるか否かを判定する。最大料金以内である場合、料金判定部１３２はランクアップ指示部１３３にランクアップ対象の仮想マシンを通知して処理をステップＳ１７に進める。最大料金よりも大きい場合、処理をステップＳ１９に進める。
【００７６】
（ステップＳ１７）ランクアップ指示部１３３は、料金情報記憶部１１０に格納された料金一覧テーブル１１１を参照して、ランクアップ後のランクに対応するリソース量を取得する。ランクアップ指示部１３３は、指定された仮想マシンのランクアップ（ランクアップ後のリソース量の指定を含む）を管理サーバ２００に指示する。また、ランクアップ指示部１３３は当該ランクアップを契約変更部１４０に通知する。契約変更部１４０は、料金集計テーブル１１３を操作して、ランクアップした仮想マシンの現ランクを更新する。例えば、仮想マシンＶＭ２を“ｓｍａｌｌ”から“ｍｅｄｉｕｍ”にランクアップした場合、その旨を料金集計テーブル１１３に反映させる。
【００７７】
（ステップＳ１８）ランクアップ指示部１３３は、当該ランクアップを契約変更通知部１３５に通知する。契約変更通知部１３５は、ランクアップした旨を通知するメッセージを記述した電子メールを生成し、ユーザの電子メールアドレスに送信する。
【００７８】
（ステップＳ１９）料金判定部１３２は、当該ユーザに割り当てた仮想マシンのうち、能力不足を検出していない仮想マシンの使用状況を参照して、リソース使用率の余裕度の有無を算出する。リソース使用率の余裕度は、例えば、仮想マシンの現ランクにおける使用状況と１ランク下の仮想マシンの能力とを比較することで求めることができる。例えば、現ランクのＣＰＵ能力にＣＰＵ使用率を乗じた値が１ランク下のＣＰＵ能力よりも小さく、かつ、現ランクのメモリサイズにメモリ使用率を乗じた値が１ランク下のメモリサイズよりも小さければ、余裕度があると判断する。例えば、リソース管理テーブル１１４によれば、仮想マシンＶＭ３は、ＣＰＵ能力が４ＧＨｚ、ＣＰＵ使用率が６０％なので、実質的に使用しているＣＰＵ能力は２．４ＧＨｚである。同様に、メモリサイズが２ＧＢ、メモリ使用率が４０％なので、実質的に使用しているメモリサイズは０．８ＧＢである。これは、１ランク下の“ｓｍａｌｌ”で対応可能であるので、仮想マシンＶＭ３は余裕度ありと判断できる。一方、何れかが１ランク下の能力値よりも大きければ、余裕度はないと判断する。
【００７９】
（ステップＳ２０）料金判定部１３２は、ランクダウン可能な仮想マシンがあるか否かを判定する。ある場合、料金判定部１３２はランクダウン指示部１３４にランクダウン対象の仮想マシンを通知して、処理をステップＳ２１に進める。ない場合、処理をステップＳ２３（図１１参照）に進める。ランクダウン可能な仮想マシンがあるか否かは、ステップＳ１９で算出した余裕度の有無に基づいて判定できる。すなわち、余裕度がある仮想マシンが存在する場合、ランクダウン可能な仮想マシンがあると判定する。余裕度がある仮想マシンが存在しない場合、ランクダウン可能な仮想マシンはないと判定する。
【００８０】
（ステップＳ２１）ランクダウン指示部１３４は、料金一覧テーブル１１１を参照して、ランクダウン後のランクに対応するリソース量を取得する。ランクダウン指示部１３４は、指定された仮想マシンのランクダウン（ランクダウン後のリソース量の指定を含む）を管理サーバ２００に指示する。また、ランクダウン指示部１３４は、当該ランクダウンを契約変更部１４０に通知する。契約変更部１４０は、料金集計テーブル１１３を操作して、ランクダウンした仮想マシンの現ランクを更新する。例えば、仮想マシンＶＭ３を“ｍｅｄｉｕｍ”から“ｓｍａｌｌ”にランクダウンした場合、その旨を料金集計テーブル１１３に反映させる。
【００８１】
（ステップＳ２２）ランクダウン指示部１３４は、当該ランクダウンを契約変更通知部１３５に通知する。契約変更通知部１３５は、ランクダウンした旨を通知するメッセージを記述した電子メールを生成し、ユーザの電子メールアドレスに送信する。
【００８２】
図１１は、ランク変更処理を示すフローチャート（続き）である。以下、図１１に示す処理をステップ番号に沿って説明する。
（ステップＳ２３）料金判定部１３２は、現ランクでの今月料金ＭＢを算出する。今月料金ＭＢの求め方は、図１０のステップＳ１５で説明した方法と同様である。ただし、能力不足を検出した仮想マシンにつきランクアップを行った場合を想定するのではなく、当該仮想マシンにつき現ランクでの時間料金に月末までの残り時間Ｔを乗じてＭＢ１を求める。そして、ＭＢ１、Ｍ２および現在の合計料金の和をとることで現ランクでの今月料金ＭＢを求めることができる。
【００８３】
（ステップＳ２４）料金判定部１３２は、最大料金テーブル１１２を参照して、現ランクでの今月料金ＭＢと当該ユーザの最大料金との差分Ｓを算出する。
（ステップＳ２５）料金判定部１３２は、能力不足の仮想マシンにつきランクアップ可能時間を算出する。具体的には、ステップＳ２４で求めた差分Ｓをランクアップ後の時間料金で割った値を求める。例えば、能力不足の仮想マシンＶＭ２に対して差分Ｓが３０００円であるとする。すると、仮想マシンＶＭ２のランクアップ可能時間は、ランクアップ後のランクが“ｍｅｄｉｕｍ”とすれば、３０００／４０＝７５時間と算出できる。
【００８４】
（ステップＳ２６）料金判定部１３２は、ランクアップ指示部１３３にランクアップ対象の仮想マシンとランクアップ可能時間を通知する。ランクアップ指示部１３３は、料金一覧テーブル１１１を参照して、ランクアップ後のランクに対応するリソース量を取得する。ランクアップ指示部１３３は、指定された仮想マシンのランクアップを管理サーバ２００に指示する。また、ランクアップ指示部１３３は当該ランクアップを契約変更部１４０に通知する。契約変更部１４０は、料金集計テーブル１１３を操作して、ランクアップした仮想マシンの現ランクを更新する。
【００８５】
（ステップＳ２７）ランクアップ指示部１３３は、当該ランクアップを契約変更通知部１３５に通知する。契約変更通知部１３５は、ランクアップした旨を通知するメッセージを記述した電子メールを生成し、ユーザの電子メールアドレスに送信する。
【００８６】
（ステップＳ２８）ランクアップ指示部１３３は、ステップＳ２６で指示されたランクアップ対象の仮想マシンのＶＭ名とランクアップ終了時刻を料金情報記憶部１１０に記録する。ランクアップ指示部１３３は、現在の時刻にランクアップ可能時間を加算して得た時刻をランクアップ終了時刻として算出できる。当該仮想マシンのランクアップ前の元のランクを記録してもよい。そして、処理を終了させる。
【００８７】
このようにして、ポータルサーバ１００は仮想マシンのランクアップ／ランクダウンの管理を行う。
なお、図１０のステップＳ２０では仮想マシンの性能を予め設定した下限値よりもランクダウンしないよう制御してもよい。例えば、ランクダウンによってユーザが申請した下限の性能を下回る場合には、当該仮想マシンのランクダウンは不可と判定する。これにより、仮想マシンの最低限の性能を確保できる。
【００８８】
次に、上記ステップＳ２６でランクアップした仮想マシンにつきランクアップ終了時刻に達した場合のランク復元処理を説明する。
図１２は、ランク復元処理を示すフローチャートである。以下、図１２に示す処理をステップ番号に沿って説明する。
【００８９】
（ステップＳ３１）監視部１３１は、料金情報記憶部１１０を参照して、ランクアップ終了時刻に達したか否かを判定する。達した場合、処理をステップＳ３２に進める。達していない場合、処理をステップＳ３１に進める。
【００９０】
（ステップＳ３２）料金判定部１３２は、当該ユーザに割り当てた仮想マシンのうち、ステップＳ２６でランクアップした仮想マシン以外の仮想マシンの使用状況を参照して、リソースの使用率の余裕度の有無を算出する。リソースの使用率の余裕度の有無の算出方法は、図１０のステップＳ１９で説明した通りである。
【００９１】
（ステップＳ３３）料金判定部１３２は、余裕度のある仮想マシンをランクダウン対象の仮想マシンとして、ランクダウン指示部１３４に通知する。ランクダウン指示部１３４は、料金判定部１３２から指定された仮想マシンにつき、料金情報記憶部１１０に格納された料金一覧テーブル１１１を参照して、ランクダウン後のランクに対応するリソース量を取得する。ランクダウン指示部１３４は、指定された仮想マシンのランクダウンを管理サーバ２００に指示する。また、ランクダウン指示部１３４は当該ランクダウンを契約変更部１４０に指示する。契約変更部１４０は、料金集計テーブル１１３を操作して、ランクダウンした仮想マシンの現ランクを更新する。
【００９２】
（ステップＳ３４）料金判定部１３２は、ステップＳ３３のランクダウン後の今月料金ＭＣを算出する。今月料金ＭＣの求め方は、図１０のステップＳ１５で説明した方法と同様である。すなわち、まず、料金判定部１３２は料金情報記憶部１１０に格納された料金集計テーブル１１３を参照して現在の合計料金を算出する。次に、月末までの残り時間Ｔを算出する。そして、当該ユーザに割り当てられた全ての仮想マシンにつき現ランクでの時間料金にＴを乗じて和をとることでＭＣ１を算出する。更に、ＭＣ１と現在の合計料金との和をとることでランクダウン後の今月料金ＭＣを算出する。
【００９３】
（ステップＳ３５）料金判定部１３２は、料金情報記憶部１１０に格納された最大料金テーブル１１２を参照して、ランクダウン後の今月料金ＭＣが当該ユーザの最大料金以内であるか否かを判定する。最大料金以内である場合、処理をステップＳ３７に進める。最大料金よりも大きい場合、料金判定部１３２はランクダウン指示部１３４にランクアップ終了時刻に達した仮想マシンを通知して処理をステップＳ３６に進める。
【００９４】
（ステップＳ３６）ランクダウン指示部１３４は、最大料金テーブル１１２を参照して、ランクアップ終了時刻に達した仮想マシンにつきランクダウン後のランク（元のランク）に対応するリソース量を取得する。ランクダウン指示部１３４は、指定された仮想マシンをランクダウンするよう管理サーバ２００に指示する。また、ランクダウン指示部１３４は当該ランクダウンを契約変更部１４０に通知する。契約変更部１４０は、料金集計テーブル１１３を操作して、ランクダウンした仮想マシンの現ランクを更新する。
【００９５】
（ステップＳ３７）ランクダウン指示部１３４は、当該ランクダウンを契約変更通知部１３５に通知する。契約変更通知部１３５は、ランクダウンした旨を通知するメッセージを記述した電子メールを生成し、ユーザの電子メールアドレスに送信する。なお、ステップＳ３３でランクダウンした仮想マシンがなく、かつ、ステップＳ３５で最大料金以内であると判定した場合には、仮想マシンのランクダウンは生じない。この場合にはユーザに対するランクダウンの通知は行われない。
【００９６】
このようにして、ポータルサーバ１００はランクアップ終了時刻に達した仮想マシンのランクを元に戻す。これにより、利用料金がユーザの最大料金を超過しないよう仮想マシンのランクを適切に制御できる。
【００９７】
なお、ステップＳ３３では仮想マシンの性能を予め設定した下限値よりもランクダウンしないよう制御してもよい。例えば、料金判定部１３２はランクダウンによってユーザが申請した下限の性能を下回る場合には、当該仮想マシンのランクダウン通知を行わないようにする。これにより、仮想マシンの最低限の性能を確保できる。
【００９８】
管理サーバ２００は、ポータルサーバ１００の指示に応じて仮想マシンのリソース量を変更する。次に、管理サーバ２００によるリソース割当変更処理を説明する。
図１３は、リソース管理処理を示すフローチャートである。以下、図１３に示す処理をステップ番号に沿って説明する。
【００９９】
（ステップＳ４１）使用状況取得部２２０は、ポータルサーバ１００から使用状況取得要求を受信したか否かを判定する。受信した場合、処理をステップＳ４２に進める。受信していない場合、処理をステップＳ４４に進める。
【０１００】
（ステップＳ４２）使用状況取得部２２０は、実行サーバ３００，３００ａ，３００ｂのハイパーバイザに各仮想マシンに割り当てたリソースの使用状況を問い合わせる。
（ステップＳ４３）使用状況取得部２２０は、問い合わせにより得た使用状況をポータルサーバ１００に報告する。そして、処理を終了する。
【０１０１】
（ステップＳ４４）リソース割当部２１０は、ランク変更の指示を受けたか否かを判定する。ランク変更の指示を受けた場合、処理をステップＳ４５に進める。ランク変更の指示を受けていない場合、処理を終了する。
【０１０２】
（ステップＳ４５）使用状況取得部２２０は、実行サーバ３００，３００ａ，３００ｂのリソースの使用状況を確認する。
（ステップＳ４６）リソース割当部２１０は、ランクアップする仮想マシンを実行する実行サーバでリソースが不足しているか否かを判定する。リソースが不足している場合、処理をステップＳ４７に進める。リソースが不足していない場合、処理をステップＳ４９に進める。なお、ランク変更の指示がランクダウン指示であれば、処理をステップＳ４９に進める。ランクダウンの際には新たなリソースを確保しなくてよいからである。
【０１０３】
（ステップＳ４７）リソース割当部２１０は、他の実行サーバのハイパーバイザに仮想マシンを移動させるためのリソースを確保する。例えば、他の実行サーバのうちリソースの使用率が最小の実行サーバのリソースを確保する。確保するリソース量は、ランクアップ後の仮想マシンの性能に相当する量である。
【０１０４】
（ステップＳ４８）リソース割当部２１０は、ハイパーバイザに対して仮想マシンの移動を指示する。ハイパーバイザは、次のようにして移動元の実行サーバから移動先の実行サーバへの仮想マシンの移動を行う。（１）移動元で仮想マシンに割り当てたメモリ領域のデータを、移動先で仮想マシンに割り当てたメモリ領域にコピーする。（２）移動元で仮想マシンを停止させ、移動元から移動先へ当該仮想マシンのＣＰＵ状態をコピーする。（３）移動先で仮想マシンを再開し、移動元でリソースを解放する。（４）移動先の仮想マシンでネットワーク設定（アドレス等）を更新する。そして、処理を終了する。
【０１０５】
（ステップＳ４９）リソース割当部２１０は、同一の実行サーバ内でリソース割当の変更を行う。
このようにして、管理サーバ２００はランクアップを行う際、その仮想マシンが動作する実行サーバの処理能力を超える場合には、処理能力に余裕のある他の実行サーバに仮想マシンを移動させる。移動先の実行サーバでは、当該仮想マシンをランクアップ後の性能で実行する。
【０１０６】
ここで、実行サーバの処理能力を超えて仮想マシンをランクアップさせようとすると、その実行サーバでリソースが不足して、当該仮想マシンだけでなく他の仮想マシンの動作にも影響を及ぼす可能性がある。そこで、管理サーバ２００のように、ランクアップの際に実行サーバの負荷に応じて仮想サーバの移動を行う。これにより、他の仮想マシンに与える影響を低減できる。また、同一の実行サーバではリソースが不足してランクアップによる所望の性能を確保できない場合にも、他の実行サーバでリソースを確保することで仮想マシンを適切にランクアップさせることができる。
【符号の説明】
【０１０７】
１  コンピュータ
１ａ，１ｂ  仮想マシン
２  情報処理装置
２ａ  記憶部
２ｂ  制御部
【図１】
0005673233.tif 000002
【図２】
0005673233.tif 000003
【図３】
0005673233.tif 000004
【図４】
0005673233.tif 000005
【図５】
0005673233.tif 000006
【図６】
0005673233.tif 000007
【図７】
0005673233.tif 000008
【図８】
0005673233.tif 000009
【図９】
0005673233.tif 000010
【図１０】
0005673233.tif 000011
【図１１】
0005673233.tif 000012
【図１２】
0005673233.tif 000013
【図１３】
0005673233.tif 000014