(57)【要約】【課題】仮想マシンによるリソース使用を効率化することを目的とする。【解決手段】仮想マシン制御装置は、複数の情報処理装置のいずれかの情報処理装置で動作する複数の仮想マシンによる過去の複数の期間それぞれのリソース使用量の実績値を取得する取得部と、リソース使用量の実績値が実績情報に含まれない仮想マシンを検出した場合、取得した実績値と、検出した仮想マシンによるいずれかの情報処理装置のリソース使用量との合計値がいずれかの情報処理装置の基準を超える期間が存在するか否かを判定する判定部と、合計値が基準を超える期間が存在する場合、該期間前に、いずれかの情報処理装置で動作する仮想マシンのいずれかを、いずれかの情報処理装置以外の他の情報処理装置で動作させる指示を出力する指示部とを含む。【選択図】図２
2018018175.tif 000002
【特許請求の範囲】
【請求項１】
複数の情報処理装置のいずれかの情報処理装置で動作する複数の仮想マシンによる前記いずれかの情報処理装置のリソース使用量の実績情報を記憶する記憶部を参照して、前記複数の仮想マシンによる過去の複数の期間のそれぞれのリソース使用量の実績値を取得し、
前記いずれかの情報処理装置で動作する仮想マシンのうち、リソース使用量の実績値が前記実績情報に含まれない仮想マシンを検出した場合、取得した前記実績値と、検出した前記仮想マシンによる前記いずれかの情報処理装置のリソース使用量との合計値が前記いずれかの情報処理装置の基準を超える期間が存在するか否かを判定し、
前記合計値が前記基準を超える期間が存在する場合、該期間前に、前記いずれかの情報処理装置で動作する仮想マシンのいずれかを、前記いずれかの情報処理装置以外の他の情報処理装置で動作させる指示を出力する
処理をコンピュータに実行させることを特徴とする仮想マシン制御プログラム。
【請求項２】
前記複数の情報処理装置のうちの少なくとも一つの情報処理装置の前記実績情報に、仮の仮想マシンのリソース使用量を追加した予測情報を作成し、
前記予測情報に含まれない新たな仮想マシンが配備される場合、前記予測情報において前記仮の仮想マシンのリソース使用量を含む前記情報処理装置に前記新たな仮想マシンを配備し、前記予測情報内の前記仮の仮想マシンのリソース使用量を前記新たな仮想マシンのリソース使用量で置き換え、
前記予測情報において、前記新たな仮想マシンが配備された情報処理装置のリソース使用量の合計値が前記基準を超える期間が存在するか否かを判定する
処理を前記コンピュータに実行させることを特徴とする請求項１記載の仮想マシン制御プログラム。
【請求項３】
前記実績情報に含まれる仮想マシンのリソース使用量の現在の値が、該現在の値に対応する前記実績値より大きい場合に、前記実績情報に対して現在以降の時間帯に対応する実績値の少なくとも一部のリソース使用量を現在の値に置き換えた予測情報を作成し、
前記予測情報におけるリソース使用量の合計値が前記基準を超える期間が存在するか否かを判定する
処理を前記コンピュータに実行させることを特徴とする請求項１記載の仮想マシン制御プログラム。
【請求項４】
前記他の情報処理装置で動作させた場合に全ての前記情報処理装置においてリソース使用量が基準を超えないと予測される仮想マシンが複数存在する場合、最もリソース使用量が少ない前記仮想マシンを前記他の情報処理装置で動作させる指示を出力する
処理を前記コンピュータに実行させることを特徴とする請求項１乃至３のうち何れか１項に記載の仮想マシン制御プログラム。
【請求項５】
複数の情報処理装置のいずれかの情報処理装置で動作する複数の仮想マシンによる前記いずれかの情報処理装置のリソース使用量の実績情報を記憶する記憶部を参照して、前記複数の仮想マシンによる過去の複数の期間のそれぞれのリソース使用量の実績値を取得し、
前記いずれかの情報処理装置で動作する仮想マシンのうち、リソース使用量の実績値が前記実績情報に含まれない仮想マシンを検出した場合、取得した前記実績値と、検出した前記仮想マシンによる前記いずれかの情報処理装置のリソース使用量との合計値が前記いずれかの情報処理装置の基準を超える期間が存在するか否かを判定し、
前記合計値が前記基準を超える期間が存在する場合、該期間前に、前記いずれかの情報処理装置で動作する仮想マシンのいずれかを、前記いずれかの情報処理装置以外の他の情報処理装置で動作させる指示を出力する
処理をコンピュータが実行することを特徴とする仮想マシン制御方法。
【請求項６】
複数の情報処理装置のいずれかの情報処理装置で動作する複数の仮想マシンによる前記いずれかの情報処理装置のリソース使用量の実績情報を記憶する記憶部を参照して、前記複数の仮想マシンによる過去の複数の期間のそれぞれのリソース使用量の実績値を取得する取得部と、
前記いずれかの情報処理装置で動作する仮想マシンのうち、リソース使用量の実績値が前記実績情報に含まれない仮想マシンを検出した場合、取得した前記実績値と、検出した前記仮想マシンによる前記いずれかの情報処理装置のリソース使用量との合計値が前記いずれかの情報処理装置の基準を超える期間が存在するか否かを判定する判定部と、
前記合計値が前記基準を超える期間が存在する場合、該期間前に、前記いずれかの情報処理装置で動作する仮想マシンのいずれかを、前記いずれかの情報処理装置以外の他の情報処理装置で動作させる指示を出力する指示部と、
を備えることを特徴とする仮想マシン制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシン制御プログラム、仮想マシン制御方法および仮想マシン制御装置に関する。
【背景技術】
【０００２】
サーバの設備費用を削減するための仮想環境の導入が進められており、メモリ等のリソースを効率良く利用するためには、複数の物理サーバ間で負荷（リソース使用量）を均衡化する技術が重要である。例えば、物理サーバ毎の負荷を監視し、負荷の高い物理サーバから負荷の低い物理サーバに仮想マシン（ＶＭ：Virtual Machine）を移動させる技術が知られている。
【０００３】
関連する技術として、複数のＶＭのリソース消費量の時系列変化を予測し、複数の物理マシンの各々においてリソース消費量が判定基準値以下となる配置案を選択する技術が提案されている（例えば、特許文献１を参照）。また、物理資源の使用量が、該情報処理装置の物理資源の能力値を超える直近の時刻を予測し、予測された時刻までに、情報処理の分担の再配置を実行する技術が提案されている（例えば、特許文献２を参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２０１４／１９２１３２号
【特許文献２】特開２０１２−１９８６７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述のように、ある物理サーバの負荷が高いときには、その物理サーバ上で動作するＶＭを他の物理サーバへ移動させる負荷分散を行うことが好ましい。ところが、ＶＭを移動する際にはサーバに負荷がかかるため、負荷を均衡化するための処理が一時的には負荷を高めてしまう。そのため、負荷が高い時間帯にＶＭを移動させると、ＶＭの移動による負荷が加わり、さらに負荷が高い状態となってしまう。それにより、複数の物理サーバ間で負荷が均衡でなくなり、効率的にリソースを利用することができなく困難となる。
【０００６】
１つの側面として、本発明は、仮想マシンによるリソース使用を効率化することを目的とする。
【課題を解決するための手段】
【０００７】
１つの態様では、仮想マシン制御プログラムは、複数の情報処理装置のいずれかの情報処理装置で動作する複数の仮想マシンによる前記いずれかの情報処理装置のリソース使用量の実績情報を記憶する記憶部を参照して、前記複数の仮想マシンによる過去の複数の期間それぞれのリソース使用量の実績値を取得し、前記いずれかの情報処理装置で動作する仮想マシンのうち、リソース使用量の実績値が前記実績情報に含まれない仮想マシンを検出した場合、取得した前記実績値と、検出した前記仮想マシンによる前記いずれかの情報処理装置のリソース使用量との合計値が前記いずれかの情報処理装置の基準を超える期間が存在するか否かを判定し、前記合計値が前記基準を超える期間が存在する場合、該期間前に、前記いずれかの情報処理装置で動作する仮想マシンのいずれかを、前記いずれかの情報処理装置以外の他の情報処理装置で動作させる指示を出力する処理をコンピュータに実行させることを特徴とする。
【発明の効果】
【０００８】
１つの側面によれば、仮想マシンによるリソース使用を効率化することできる。
【図面の簡単な説明】
【０００９】
【図１】実施形態のシステムの全体構成の一例を示す図である。
【図２】仮想マシン制御装置の一例を示す図である。
【図３】実績情報および仮ＶＭ設定情報の一例を示す図である。
【図４】実施形態の処理の流れの一例を示すフローチャート（その１）である。
【図５】実施形態の処理の流れの一例を示すフローチャート（その２）である。
【図６】ＶＭ移動候補の選択処理の一例を示すフローチャート（その１）である。
【図７】ＶＭ移動候補の選択処理の一例を示すフローチャート（その２）である。
【図８】実施例における各時間帯のＶＭ配置を示す図である。
【図９】実施例における実績情報および仮ＶＭ設定情報を示す図である。
【図１０】実施例における８時時点のＶＭ毎のメモリ使用量および予測情報を示す図である。
【図１１】実施例における９時時点のＶＭ毎のメモリ使用量および予測情報を示す図である。
【図１２】実施例における１０時時点のＶＭ毎のメモリ使用量および予測情報を示す図である。
【図１３】実施例における１１時時点のＶＭ毎のメモリ使用量および予測情報を示す図である。
【図１４】実施例における１２時時点のＶＭ毎のメモリ使用量および予測情報を示す図である。
【図１５】第２の実施形態のＶＭ移動候補の選択処理の流れの一例を示すフローチャート（その１）である。
【図１６】第２の実施形態のＶＭ移動候補の選択処理の流れの一例を示すフローチャート（その２）である。
【図１７】仮想マシン制御装置のハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１０】
＜第１の実施形態＞
以下、図面を参照して、実施形態について説明する。図１は、実施形態のシステムの全体構成の一例を示す。図１に示すように、実施形態のシステムは、仮想マシン制御装置１と２以上のサーバ２ａ、２ｂ、２ｃ・・・と、管理サーバ３とを含み、それぞれが通信回線により接続されている。以下、サーバ２ａ、２ｂ、２ｃ・・・をサーバ２と総称することがある。
【００１１】
仮想マシン制御装置１は、サーバ２で動作する仮想マシン（以下、ＶＭ（virtual machine）と記載することがある。）を制御する。仮想マシン制御装置１は、リソース使用量に応じて、いずれかのサーバ２で動作する仮想マシンを、他のサーバ２で動作させる指示を管理サーバ３に出力する。仮想マシン制御装置１は、コンピュータの一例である。
【００１２】
サーバ２は、所定のメモリ量の範囲内において、仮想マシンを動作させることが可能である。サーバ２は、管理サーバ３の指示に応じて、動作中の仮想マシンを他のサーバ２に移動させることができる。サーバ２は、情報処理装置の一例である。
【００１３】
管理サーバ３は、サーバ２を管理するサーバである。管理サーバ３は、仮想マシン制御装置１からの指示に応じて、サーバ２で動作する仮想マシンを制御する。
【００１４】
図１に示す例では、管理サーバ３と仮想マシン制御装置１は、異なる装置であるが、同一の装置であってもよい。すなわち、システムは、図１に示す管理サーバ３および仮想マシン制御装置１の替わりに、管理サーバ３と仮想マシン制御装置１の両方の機能を有する一つの装置を含んでいてもよい。
【００１５】
図２は、仮想マシン制御装置の一例を示す図である。図２に示すように、仮想マシン制御装置１は、通信部１１と、取得部１２と、判定部１３と、指示部１４と、記憶部１５とを含む。
【００１６】
通信部１１は、サーバ２で動作する仮想マシンのリソース使用量を示す情報を受信する。通信部１１は、指示部１４から管理サーバ３に指示を送る場合に、指示内容を示す情報を送信する。
【００１７】
取得部１２は、記憶部１５に記憶されている各仮想マシンのリソース使用量の実績情報を参照して、複数の仮想マシンによる過去の複数の期間それぞれのリソース使用量の実績値を取得する。
【００１８】
判定部１３は、いずれかのサーバ２で動作する仮想マシンのうち、リソース使用量が実績情報に含まれない仮想マシンを検出した場合、取得部１２が取得した実績値と、検出した仮想マシンによるリソース使用量の合計値がいずれかの情報処理装置の基準を超える期間が存在するか否かを判定する。また、判定部１３は、リソース使用量が実績情報に含まれない仮想マシンを検出していない場合でも、取得部１２が作成する予測情報とは異なる状況が発生することを想定して、判定部１３は適宜、予測情報を更新し、いずれかのサーバ２で動作する仮想マシンのリソース使用量と仮ＶＭのリソース使用量の合計値がいずれかの情報処理装置の基準を超える期間が存在するか否かを判定する。実績情報に含まれない仮想マシンは、例えば、新たに配備された仮想マシンである。
【００１９】
指示部１４は、合計値が基準を超える期間が存在する場合、その期間前に、いずれかのサーバ２で動作する仮想マシンのいずれかを、他のサーバ２で動作させる指示を管理サーバ３に出力する。
【００２０】
記憶部１５は、各サーバ２における複数の期間の仮想マシンが使用するリソース使用量を示す実績情報を記憶する。実績情報は、各サーバ２で動作する仮想マシンの所定時間毎のリソース使用量を含む。リソース使用量は、サーバ２の物理資源の使用量である。後述の例で示すリソース使用量はメモリ使用量であるが、リソース使用量は、例えば、ＣＰＵ使用率であってもよい。
【００２１】
また、記憶部１５は、仮の仮想マシン（以下、仮ＶＭ（virtual machine）と記載することがある。）の設定情報を記憶する。仮ＶＭは、実際には使用されていない仮想マシンであり、将来的な仮想マシンの増加に対応するための余裕分として設定される。仮ＶＭの設定情報は、仮ＶＭが設定されるサーバ名、およびリソース使用量を含む。
【００２２】
図３は、実績情報および仮ＶＭ設定情報の一例を示す図である。図３に示す実績情報には、サーバＡおよびサーバＢそれぞれで動作する仮想マシン（ＶＭ）に関する情報が記録されている。この例では、実績情報は、８時から１４時までの１時間毎の各ＶＭのメモリ使用量の実績値を含む。実績値が記録される時間単位は、１時間に限られない。また、記録される時間範囲は、図３では８時から１４時まであるが２４時間であってもよい。例えば、曜日によってメモリ使用量が大きく変化するシステムに仮想マシン制御装置１を適用する場合、実績値を記録する時間単位を１日（２４時間）とし、記録する時間範囲を１週間としてもよい。
【００２３】
仮ＶＭ設定情報は、仮ＶＭが設定されるサーバ名、メモリ使用量を含む。仮ＶＭのメモリ使用量には、例えば、サーバ２で許可されている、１つのＶＭあたりの割り当て可能最大メモリ量が設定される。仮ＶＭのメモリ使用量に、１つのＶＭあたりの割り当て可能最大メモリ量を設定することにより、将来新たなＶＭが追加された場合にメモリ使用量がサーバ２のメモリ容量を超えるリスクを低減することができる。
【００２４】
また、仮ＶＭの個数は、図３に示す例では１つであるが、２以上であってもよい。また、複数のサーバ２に仮ＶＭが設定されてもよい。仮ＶＭの個数は、例えば、過去の所定期間の稼働実績における新規配備ＶＭ個数の平均値に基づいて決定されてもよいし、過去の所定期間の稼動実績における新規配備ＶＭ個数の最大値に基づいて決定されてもよい。サーバ２のメモリ容量を超えるリスクをより低減する場合、平均値に安全率（例えば、１．１倍）を乗算した値に基づいて仮ＶＭ個数を決定してもよい。
【００２５】
図４、５は、実施形態の処理の流れの一例を示すフローチャートである。図４、５に示す処理は、例えば、毎日、所定時刻に開始される。
【００２６】
取得部１２は、記憶部１５から、前日の各サーバ２の時間帯毎のリソース使用量を示す実績情報を取得する（ステップＳ１０１）。実施形態では、図３に示すように、実績情報に記録されるリソース使用量は、メモリ使用量である。
【００２７】
取得部１２は、仮ＶＭの設定情報を記憶部１５から取得し、仮ＶＭの設定情報を用いて実績情報を変更することにより、予測情報を作成する（ステップＳ１０２）。実施形態では、図３に示すように、取得部１２は、仮ＶＭの設定情報として、仮ＶＭが設定されるサーバ名、メモリ使用量を取得する。取得部１２は、例えば、少なくとも一つのサーバ２の実績情報の全ての時間帯に仮ＶＭの設定情報におけるメモリ使用量を記録することにより、仮ＶＭのメモリ量が追加された予測情報を作成する。
【００２８】
例えば、実績情報における各サーバのメモリ使用量に余裕がある場合、取得部１２は、ステップＳ１０２における仮ＶＭの設定情報を用いずに予測情報を作成してもよい。
【００２９】
判定部１３は、ＶＭ移動を実施するための繰り返し処理を開始する（ステップＳ１０３）。
【００３０】
判定部１３は、後述の繰り返し処理のために、変数Ｎに実績情報から得られたサーバ２の台数を設定し、変数Ｍに予測情報から得られるＶＭ総数を設定する（ステップＳ１０４）。実施形態では、繰り返し処理は、１時間毎に行われる。繰り返し処理は、実績情報に記録されている時間帯に合わせて行われる。
【００３１】
判定部１３は、ｉに０をセットする（ステップＳ１０５）。判定部１３は、ｉにｉ+１をセットする（ステップＳ１０６）。判定部１３は、ｉがＭ以下である場合（ステップＳ１０７でＹＥＳ）、ＶＭｉが実績情報に掲載されているか（含まれているか）を判定する（ステップＳ１０８）。
【００３２】
判定部１３は、ＶＭｉの現在のメモリ使用量を計測し、計測したメモリ使用量により対応する時間帯の予測値を更新する。判定部１３は、実績情報に含まれない新規のＶＭｉが追加される場合には、予測情報において仮ＶＭが設定されているサーバ２に新規のＶＭｉを配備することを決定する。指示部１４は、新規のＶＭを、予測情報において仮ＶＭが設定されているサーバ２に配備する指示を管理サーバ３に出力する。そして、判定部１３は、予測情報内の現在以後の時間帯の仮ＶＭのリソース使用量を新規のＶＭｉのリソース使用量で置き換える（ステップ１０９）。
【００３３】
判定部１３は、実績情報に含まれている既存のＶＭについては、現在の各ＶＭのメモリ使用量が現在の値に対応する実績値より大きいか判定する（ステップＳ１１０）。判定部１３は、例えば、現在が８時である場合、現在の各仮想マシンのメモリ使用量が前日の８時の実績値より大きいか判定する。いずれかのＶＭの現在のメモリ使用量が現在時刻より後の実績値より大きい場合（ステップＳ１１０でＹＥＳ）、ステップＳ１１１−１に移行する。判定部１３は、予測情報の現在以後の時間帯のＶＭｉの情報を、予測情報がＶＭｉの現在のメモリ使用量より小さい時間帯が続く限り、ＶＭｉの現在のメモリ使用量で置換する（ステップＳ１１１−１）。
【００３４】
ステップＳ１１１−１において、現在時刻の実績値だけでなく現在時刻以後の予測値を更新する理由は、現在のメモリ使用量がそのまま継続されると想定して、必要メモリ容量を確保するためである。
【００３５】
また、ステップＳ１１０においてＮＯである場合に、予測情報の現在の時間帯のＶＭｉの情報を、ＶＭｉの現在のメモリ使用量で置換する（ステップＳ１１１−２）。ステップＳ１１１−２で、現在時刻の予測値は更新するものの、ステップＳ１１１−１のように現在時刻より後の予測値は更新しない理由は、メモリ使用量がサーバのメモリ容量を超えるリスクを少なくするためである。例えば、現在のメモリ使用量が実績値より小さい場合であっても、将来的に実績値に近い値に増加する可能性がある。そのため、判定部１３は、現在時刻より後の予測値を実績値より小さい値（現在のメモリ使用量）には更新しないことが好ましい。
【００３６】
ステップＳ１１１−１において、例えば、図３に示す実績情報が前日の実績情報である場合、８時時点（現在）のＶＭ３のメモリ使用量が２ＧＢであれば、８時と９時の予測値のみ２ＧＢに置換し、１４時の予測値は２ＧＢに置換しない。実績情報では、１０時にＶＭ３のメモリ使用量は４ＧＢに増加するため、その手前までメモリ使用量が２ＧＢで継続することが予測されるからである。
【００３７】
次に、判定部１３は、変数ｎに０をセットする（ステップＳ１１２）。また、判定部１３は、変数ｎにｎ＋１をセットする（ステップＳ１１３）。変数ｎは、各サーバに割り当てられているシーケンス番号に対応する。
【００３８】
判定部１３は、ステップＳ１０９、Ｓ１１１−１、Ｓ１１１−２で作成された予測情報において、シーケンス番号にｎが割り当てられているサーバ（以下、サーバｎと記載する）で動作するＶＭのメモリ使用量合計が現在より後の全時間帯で閾値以下か判定する（ステップＳ１１４）。閾値は、サーバ毎に設定されているメモリ使用量の閾値であり、例えば、サーバのメモリ容量の９０％であるとする。
【００３９】
判定部１３は、サーバｎのメモリ使用量がサーバｎの閾値を超える時間帯が一つでも存在する場合（ステップＳ１１４でＮＯ）、サーバｎのいずれかのＶＭを他のサーバに移動する必要があるため、ＶＭの移動候補の選択処理を行う（ステップＳ１１５）。判定部１３は、サーバｎのメモリ使用量合計が現在より後の全時間帯で閾値以下である場合（ステップＳ１１４でＹＥＳ）、ｎがＮ以上であるか判定する（ステップＳ１１６）。判定部１３は、ｎがＮ以上である場合（ステップＳ１１６でＹＥＳ）、繰り返し処理を終了する（ステップＳ１１７）。ｎがＮより小さい場合（ステップＳ１１６でＮＯ）、ステップＳ１１３に戻る。
【００４０】
図６〜図７は、ＶＭ移動候補の選択処理の一例を示すフローチャートである。図６〜図７に示す処理は、図５のステップＳ１１５の詳細な処理であり、移動するＶＭと、ＶＭの移動先サーバを選択する処理である。
【００４１】
判定部１３は、変数ｍに０をセットする（ステップＳ２０１）。また、判定部１３は、変数ｍをインクリメントする（ステップＳ２０２）。変数ｍは、各ＶＭに割り当てられているシーケンス番号に対応する。
【００４２】
判定部１３は、ｍがＭ以下であるか判定する（ステップＳ２０３）ステップＳ２０３において、ｍがＭより大きい場合（ステップＳ２０３でＮＯ）、全てのＶＭについて判定処理が終了しているため、処理を終了する。
【００４３】
判定部１３は、ｍがＭ以下である場合（ステップＳ２０３でＹＥＳ）、シーケンス番号にｍが割り当てられているＶＭ（以下、ＶＭｍと記載する）がサーバｎに実装されているか確認する（ステップＳ２０４）。
【００４４】
ＶＭｍがサーバｎに実装されている場合（ステップＳ２０４でＹＥＳ）、判定部１３は、現在の時間帯でＶＭｍをサーバｎから他のサーバに移動したと仮定し、サーバｎで動作するＶＭの各時間帯のメモリ使用量合計を算出する（ステップＳ２０５）。この計算では移動先は考慮しない。判定部１３は、ステップＳ２０５で算出したサーバｎのメモリ使用量合計が今後の全ての時間帯において閾値以下であるか判定する（ステップＳ２０６）。今後の全ての時間帯において閾値以下である場合（ステップＳ２０６でＹＥＳ）、ＶＭｍが移動ＶＭの候補となる。
【００４５】
サーバｎのメモリ使用量合計が今後のいずれかの時間帯において閾値を超える場合（ステップＳ２０６でＮＯ）、判定部１３は、ステップＳ２０２の処理に戻る。すなわち、判定部１３は、サーバｎのメモリ使用量合計がすべての時間帯において閾値以下となるまで、変数ｍをインクリメントしながらステップＳ２０２〜Ｓ２０６を繰り返し実行する。
【００４６】
移動するＶＭを選択する処理において、移動コストがもっとも少ないＶＭが選択されることが好ましい。移動コストは、例えば、現在のメモリ使用量の大きさまたは移動回数に基づいて定められる。すなわち、移動コストが大きいほど、移動の際にサーバへ与える負荷が大きい。
【００４７】
図６〜図７に示す例では、判定部１３は、シーケンス番号が小さいＶＭからステップＳ２０５、Ｓ２０６の処理を行い、ステップＳ２０６でＹＥＳであればそのＶＭを選択する。そのため、予め移動コストの小さいＶＭに小さいシーケンス番号を割り当てておく。これにより、複数のＶＭの移動候補が考えられる場合、最も移動コストが少ないＶＭが選択されることとなる。
【００４８】
また、例えば、ステップＳ２０６の処理でＹＥＳであった場合に、判定部１３は、特定されたＶＭを移動候補として一時記憶しておき、全てのＶＭに対してステップＳ２０４〜Ｓ２０６の処理を行ってもよい。そして、判定部１３は、ステップＳ２０６でＹＥＳとなった移動候補ＶＭのうち最も移動コストの少ないＶＭを移動ＶＭ候補として選択してもよい。
【００４９】
ステップＳ２０６でＹＥＳである場合、判定部１３は、移動先のサーバを選択する処理に移る。判定部１３は、変数ｋに０をセットする（ステップＳ２０８）。そして、判定部１３は、変数ｋをインクリメントする（ステップＳ２０９）。変数ｋは、各サーバに割り当てられているシーケンス番号に対応する。
【００５０】
判定部１３は、ｋがＮ以下であるか判定する（ステップＳ２１０）。ｋがＮより大きい場合（ステップＳ２１０でＮＯ）、判定部１３の処理はステップＳ２０２に戻る。ＶＭｍが後述のステップＳ２１３において全てのサーバについて閾値を超えたとしても、異なるＶＭｍを移動候補とすることによりステップＳ２１３で閾値以下となる可能性があるためである。
【００５１】
ｋがＮ以下である場合（ステップＳ２１０でＹＥＳ）、判定部１３は、ｋがｎと異なる値か判定する（ステップＳ２１１）。ｎは、ＶＭｍが現在動作しているサーバを示すシーケンス番号であるため、ｋがｎと同じである場合（ステップＳ２１１でＮＯ）、ステップＳ２０９に戻りｋをインクリメントする。
【００５２】
ｋがｎと異なる場合（ステップＳ２１１でＹＥＳ）、判定部１３は、現在の時間帯でＶＭｍをサーバｎからサーバｋに移動したと仮定し、サーバｋで動作するＶＭの各時間帯のメモリ使用量合計を算出する（ステップＳ２１２）。判定部１３は、ステップＳ２１２の算出結果において、サーバｋのメモリ使用量が今後の全ての時間帯において閾値以下であるか判定する（ステップＳ２１３）。
【００５３】
サーバｋのメモリ使用量合計が閾値を上回る時間帯が存在する場合（ステップＳ２１３でＹＥＳ）、判定部１３は、ステップＳ２０９の処理に戻る。サーバｋのメモリ使用量合計が今後の全ての時間帯において閾値以下である場合（ステップＳ２１３でＹＥＳ）、判定部１３は、移動ＶＭとしてＶＭｍを選択し、移動先サーバとしてサーバｋを選択する（ステップＳ２１４）。指示部１４は、ＶＭｍをサーバｋに移動する指示を管理サーバ３に出力する（ステップＳ２１５）。
【００５４】
移動先のサーバを選択する場合に、移動可能なサーバが複数存在する可能性がある。例えば、判定部１３は、各サーバについて、各時間帯におけるメモリの空き容量を予め算出する。そして、判定部１３は、各時間帯の空き容量の最小値が大きいサーバに小さいシーケンス番号（ｋに対応するＮｏ）を予め割り当てておく。そのようにすることで、ステップＳ２０８〜Ｓ２１４の処理において、各時間帯の空き容量の最小値が大きいサーバが移動先として優先的に選択されるようにしてもよい。
【００５５】
＜実施例＞
次に実施例を図面を参照して説明する。図８は、実施例における各時間帯のＶＭ配置を示す図である。図９は、実施例における実績情報および仮ＶＭ設定情報を示す図である。図１０〜図１４は、実施例における予測情報の推移を示す図である。
【００５６】
取得部１２は、前日の実績情報と仮ＶＭ設定情報を取得し、仮ＶＭ設定情報を用いて、予測情報を作成する（ステップＳ１０１、Ｓ１０２）。
図１０は、８時時点のＶＭ毎のメモリ使用量および予測情報を示す。図９に示す前日の実績情報の８時のメモリ使用量と図１０に示す現在のＶＭ毎のメモリ使用量（８時）を比較すると、ＶＭ１のメモリ使用量が１ＧＢから４ＧＢに変わっている。そのため、ステップＳ１０５の処理により、判定部１３は、８時の予測情報を１ＧＢから４ＧＢに更新する。また、８時の時間帯において、現在のメモリ使用量が実績値より大きい（ステップＳ１１０でＹＥＳ）。そのため、判定部１３は、その仮想マシンの現在のメモリ使用量を用いて、現在時刻以後の予測値を置換する（ステップＳ１１１−１）。実施例において、判定部１３は、予測情報のＶＭ１の９時以降のメモリ使用量を全て４ＧＢに変更する。
【００５７】
本実施例において、サーバＡおよびサーバＢのメモリ容量を１０ＧＢとし、閾値を１０ＧＢの９０％の９ＧＢとする。８時時点の予測情報において、仮ＶＭが追加されていることにより、１０時時点においてサーバＢで動作するＶＭはＶＭ３、ＶＭ４、仮ＶＭの３つであり、合計メモリ使用量は、４＋４＋４＝１２ＧＢとなる。すなわち１０時時点において、サーバＢのメモリ使用量が閾値を超える（ステップＳ１１４でＮＯ）。そのため、いずれかのＶＭを移動する必要がある。
【００５８】
判定部１３は、ステップＳ１１５の処理において、どのＶＭを移動させるか選択する。判定部１３は、ＶＭ３を移動させたと仮定して、全時間帯でサーバＢのメモリ使用量合計が閾値以下となるか判定する（ステップＳ２０６）。この例では、全時間帯でサーバＢのメモリ使用量合計が閾値以下となるので、ＶＭ３が移動ＶＭ候補となる。また、判定部１３は、ＶＭ３をサーバＡに移動したと仮定してサーバＡの各時間帯でメモリ使用量合計が閾値以下となるか判定する（ステップ２１２）。
【００５９】
サーバＡにＶＭ３を移動した場合、１２時において、サーバＡにＶＭ１、ＶＭ２、ＶＭ３が動作することになり、合計１２ＧＢとなり、閾値を超える。そのため、移動先としてサーバＡは選択されない（ステップＳ２１３でＮＯ）。この場合、実施例ではサーバは２つであるため、ステップ２１３の処理後、ステップＳ２１０でＮＯとなり、ステップＳ２０２に戻る。
【００６０】
次に、判定部１３は、ＶＭ４をサーバＢから移動したと仮定して、サーバＢの各時間帯のメモリ使用量合計を算出し、各時間帯で閾値以下となるか判定する（ステップＳ２０６）。閾値以下となるので、移動ＶＭ候補としてＶＭ４が選択される。また、判定部１３は、ＶＭ４をサーバＡに移動したと仮定して、サーバＡの各時間帯のメモリ使用量合計を算出し、サーバＡの閾値以下となるか判定する（ステップＳ２１２、Ｓ２１３）。実施例では、ステップＳ２１３にてＹＥＳとなるので、ＶＭ４の移動先としてサーバＡが選択される（ステップＳ２１４）。そして、指示部１４がＶＭ４をサーバＡに移動させる指示を管理サーバ３に出力することにより、ＶＭ４がサーバＢからサーバＡに移動する。
【００６１】
図１１は、９時時点のＶＭ毎のメモリ使用量および予測情報を示す。この例では、８時にＶＭ４がサーバＢからサーバＡに移動したため、ＶＭ４が動作するサーバ名がサーバＡに変更されている。９時のメモリ使用量は、予測情報と同じであるため、予測情報の更新は行われない（ステップＳ１１０でＮＯ）。また、各サーバのメモリ使用量合計が閾値以下となるため（ステップＳ１１４でＹＥＳ）、ＶＭの移動も行われない。
【００６２】
図１２は、１０時時点のＶＭ毎のメモリ使用量および予測情報を示す。１０時のメモリ使用量は、予測情報と同じであるため、予測情報の更新は行われない（ステップＳ１１０でＮＯ）。また、各サーバのメモリ使用量合計が閾値以下となるため（ステップＳ１１４でＹＥＳ）、ＶＭの移動も行われない。
【００６３】
図１３は、１１時時点のＶＭ毎のメモリ使用量および予測情報を示す。１１時に、実績情報に含まれない新規ＶＭとして、ＶＭ５が配備されたとする。予測情報においてサーバＢに仮ＶＭが設定されているので、判定部１３は、サーバＢにＶＭ５を配備することを決定する（ステップＳ１０５）。そして、指示部１４は、サーバＢにＶＭ５を配備することを管理サーバ３に指示する。なお、８時から１０時までのＶＭ５の予測情報にはｎｕｌｌ値が設定される。
【００６４】
図１４は、１２時時点のＶＭ毎のメモリ使用量および予測情報を示す。１２時のメモリ使用量は、予測情報と同じであるため、予測情報の更新は行われない（ステップＳ１１０でＮＯ）。また、各サーバのメモリ使用量合計が閾値以下となるため（ステップＳ１１４でＹＥＳ）、ＶＭの移動も行われない。
【００６５】
実施例では、１３時以降のメモリ使用量も、予測情報と同じであったとする。すなわち、１２時と同様に予測情報の更新、ＶＭの移動が行われないので、図示および説明を省略する。
【００６６】
以上の処理により、仮想マシン制御装置は、仮想環境で物理サーバの負荷を分散することができる。物理サーバ間に負荷の偏りがあると、負荷が高い物理サーバ上のＶＭが資源を多用した場合に物理サーバの資源が枯渇し、物理サーバ上の全てのＶＭのスループットが低下するおそれがある。仮想マシン制御装置は、物理サーバ間の負荷の偏りをなくしておくことにより、いずれかの物理サーバ上のＶＭが資源を多用するようになっても、該当物理サーバの資源が枯渇する可能性を低く抑えることができる。
【００６７】
また、仮想化クラウド環境の進展に伴い、さらに設備費用を削減すべく、全物理サーバの資源の総量を、大きな余裕を持たずに運用できる技術が求められている。そのような環境では、負荷が偏った時点でＶＭ移動を行うと資源が少ない状況でさらにＶＭ移動のための資源を使用することになるので、好ましくない。そのため、過去の実績情報を用いて、将来を見越して予めメモリ負荷分散のためのＶＭ移動を行っておくことにより、負荷が高い期間にＶＭ移動によるメモリ負荷が発生することを抑止することができる。
【００６８】
また、実績情報に仮ＶＭを設定し、実績情報に含まれない新たなＶＭが追加される場合に、仮ＶＭが設定されているサーバに新たなＶＭが実装される。これにより、新たなＶＭが追加されても、サーバに設定されているリソース使用量の閾値を超える可能性を低減することができる。
【００６９】
＜第２の実施形態＞
第１の実施形態において、移動ＶＭ候補が見つからない場合（ステップＳ２０３でＮＯとなる場合）、そのまま処理を終了している。しかし、第１の実施形態では一つのＶＭを移動する処理しか行っていないため、２以上のＶＭを移動させることにより移動元のサーバのメモリ使用量が閾値以下となる可能性がある。第２の実施形態では、２以上のＶＭを移動させる例を示す。第２の実施形態のシステム構成は、図１に示した構成と同じである。また、第２の実施形態の仮想マシン制御装置１の構成は、図２に示した構成と同じである。
【００７０】
図１５、１５は、第２の実施形態のＶＭ移動候補の選択処理の流れの一例を示すフローチャートである。図１５、１５に示す処理は、図６のステップＳ２０３においてＮＯと判定された場合に実行される。第２の実施形態の他の処理は、図４〜７に示す第１の実施形態の処理と同じである。
【００７１】
判定部１３は、変数ｉ、ｊに０をセットする（ステップＳ３０１）。また、判定部１３は、変数ｉにｉ＋１をセットする（ステップＳ３０２）。変数ｉ、ｊは、各ＶＭに割り当てられているシーケンス番号に対応する。
【００７２】
判定部１３は、ｉがＭ以下であるか判定する（ステップＳ３０３）。ステップＳ３０３において、ｉがＭより大きい場合（ステップＳ３０３でＮＯ）、全てのＶＭについて判定処理が終了しているため、処理を終了する。
【００７３】
判定部１３は、変数ｊにｉ＋１をセットし（ステップＳ３０４）、ｊがＭ以下であるか確認する（ステップＳ３０５）。
【００７４】
ｊがＭ以下である場合（ステップＳ３０５でＹＥＳ）、判定部１３は、ＶＭｉ、ＶＭｊをサーバｎから他のサーバに移動したと仮定し、サーバｎで動作するＶＭの各時間帯のメモリ使用量合計を算出する（ステップＳ３０６）。判定部１３は、ステップＳ３０５で算出したサーバｎのメモリ使用量合計が全ての時間帯において閾値以下であるか判定する（ステップＳ３０７）。
【００７５】
全ての時間帯において閾値以下である場合（ステップＳ３０７でＹＥＳ）、ＶＭｉ、ＶＭｊが移動ＶＭの候補となる。サーバｎのメモリ使用量合計がいずれかの時間帯において閾値を超える場合（ステップＳ３０７でＮＯ）、判定部１３は、ステップＳ３０４に戻る。
【００７６】
ステップＳ３０７でＹＥＳである場合、判定部１３は、移動先のサーバを選択する処理に移る。判定部１３は、変数ｈ、ｋに０をセットする（ステップＳ３０８）。そして、判定部１３は、変数ｈにｈ＋１をセットする（ステップＳ３０９）。変数ｈ、ｋは、各サーバに割り当てられているシーケンス番号に対応する。
【００７７】
判定部１３は、ｈがＮ以下であるか判定する（ステップＳ３１０）。ｈがＮより大きい場合（ステップＳ３１０でＮＯ）、判定部１３は、ステップＳ３０２に戻る。ＶＭｉ、ＶＭｊを移動ＶＭ候補として、後述のステップＳ３１４を実施して全てのサーバについて閾値を超えたとしても、異なるＶＭｉ、ＶＭｊを移動候補とすることによりステップＳ３１４で閾値以下となる可能性があるためである。
【００７８】
ｈがＮ以下である場合（ステップＳ３１０でＹＥＳ）、判定部１３は、変数ｋにｋ＋１をセットする（ステップＳ３１１）。判定部１３は、ｋがＮ以下であるか判定する（ステップＳ３１２）。ｋがＮより大きい場合（ステップＳ３１２でＮＯ）、判定部１３は、ステップＳ３０９に戻る。
【００７９】
ｋがＮ以下である場合（ステップＳ３１２でＹＥＳ）、判定部１３は、ＶＭｉをサーバｈに移動し、ＶＭｊをサーバｋに移動したと仮定し、サーバｈ、ｋで動作するＶＭの各時間帯のメモリ使用量合計を算出する（ステップＳ３１３）。
【００８０】
サーバｈ、ｋのそれぞれのメモリ使用量合計が閾値を上回る時間帯が存在する場合（ステップＳ３１４でＮＯ）、判定部１３は、ステップＳ３１１の処理に戻る。サーバｈ、ｋのメモリ使用量合計が全ての時間帯において閾値以下である場合（ステップＳ３１４でＹＥＳ）、判定部１３は、移動ＶＭとしてＶＭｉ、ＶＭｊを選択し、移動先サーバとしてサーバｈ、ｋを選択する（ステップＳ３１５）。指示部１４は、ＶＭｉをサーバｈに移動し、ＶＭｊをサーバｋに移動する指示を管理サーバ３に出力する（ステップＳ３１６）。
【００８１】
以上により、第２の実施形態における仮想マシン制御装置は、一つのＶＭを移動することにより移動元サーバのメモリ使用量合計が閾値以下にならない場合に、複数のＶＭを移動させる。それにより、仮想マシン制御装置は、全サーバのメモリ使用量合計が閾値以下となる可能性を向上させることができる。
【００８２】
なお、第２の実施形態では、２つのＶＭを移動させる例を示したが３つ以上のＶＭを移動させてもよい。また、第２の実施形態では、複数のＶＭを移動させる場合に、各ＶＭを異なるサーバに移動させているが、２以上のＶＭを同じサーバに移動させてもよい。
【００８３】
＜装置のハードウェア構成の一例＞
次に、図１７の例を参照して、仮想マシン制御装置のハードウェア構成の一例を説明する。図１７の例に示すように、バス１００に対して、プロセッサ１１１とRandom Access Memory(RAM)１１２とRead Only Memory(ROM)１１３とが接続される。また、該バス１００に対して、補助記憶装置１１４と媒体接続部１１５と通信インタフェース１１６とが接続される。
【００８４】
プロセッサ１１１はＲＡＭ１１２に展開されたプログラムを実行する。実行されるプログラムとしては、実施形態における処理を行う仮想マシン制御プログラムが適用されてもよい。
【００８５】
ＲＯＭ１１３はＲＡＭ１１２に展開されるプログラムを記憶する不揮発性の記憶装置である。補助記憶装置１１４は、種々の情報を記憶する記憶装置であり、例えばハードディスクドライブや半導体メモリ等を補助記憶装置１１４に適用してもよい。媒体接続部１１５は、可搬型記録媒体１１８と接続可能に設けられている。
【００８６】
可搬型記録媒体１１８としては、可搬型のメモリや光学式ディスク（例えば、Compact Disc(CD)やDigital Versatile Disc(DVD)、半導体メモリ等）を適用してもよい。この可搬型記録媒体１１８に実施形態の処理を行う仮想マシン制御プログラムが記録されていてもよい。
【００８７】
図２に示す記憶部１５は、ＲＡＭ１１２や補助記憶装置１１４等により実現されてもよい。図２に示す通信部１１は、通信インタフェース１１６により実現されてもよい。図２に示す取得部１２、判定部１３、および指示部１４は、与えられた仮想マシン制御プログラムをプロセッサ１１１が実行することにより実現されてもよい。
【００８８】
ＲＡＭ１１２、ＲＯＭ１１３、補助記憶装置１１４および可搬型記録媒体１１８は、何れもコンピュータ読み取り可能な有形の記憶媒体の一例である。これらの有形な記憶媒体は、信号搬送波のような一時的な媒体ではない。
【００８９】
＜その他＞
本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【符号の説明】
【００９０】
１    仮想マシン制御装置
２    サーバ
３    管理サーバ
１１    通信部
１２    取得部
１３    判定部
１４    指示部
１５    記憶部
１１１    プロセッサ
１１２    ＲＡＭ
１１３    ＲＯＭ
【図１】
2018018175.tif 000003
【図２】
2018018175.tif 000004
【図３】
2018018175.tif 000005
【図４】
2018018175.tif 000006
【図５】
2018018175.tif 000007
【図６】
2018018175.tif 000008
【図７】
2018018175.tif 000009
【図８】
2018018175.tif 000010
【図９】
2018018175.tif 000011
【図１０】
2018018175.tif 000012
【図１１】
2018018175.tif 000013
【図１２】
2018018175.tif 000014
【図１３】
2018018175.tif 000015
【図１４】
2018018175.tif 000016
【図１５】
2018018175.tif 000017
【図１６】
2018018175.tif 000018
【図１７】
2018018175.tif 000019