(57)【要約】【課題】仮想マシンが構築されるコンピュータの負荷を抑制し、仮想マシンの処理効率の向上を図る。【解決手段】コンピュータ内に構築される仮想マシンを管理する仮想マシン管理システムは、仮想マシン上で実行中のプロセス毎におけるコンピュータに対する負荷を測定してプロセス負荷情報として記憶するプロセス負荷測定手段と、仮想マシン上で実行されるプロセスの起動又は終了を検出して、当該起動／終了プロセスの負荷を、プロセス負荷情報に基づいて起動／終了プロセス負荷情報として特定するプロセス負荷特定手段と、各プロセス負荷情報と、起動／終了プロセス負荷情報と、に基づいて、仮想マシンのコンピュータに対する負荷を算出する仮想マシン負荷算出手段と、を備えた。【選択図】図１
2009237859.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ内に構築される仮想マシンを管理する仮想マシン管理システムであって、
前記仮想マシン上で実行中のプロセス毎における前記コンピュータに対する負荷を測定してプロセス負荷情報として記憶するプロセス負荷測定手段と、
前記仮想マシン上で実行される前記プロセスの起動又は終了を検出して、当該起動／終了プロセスの負荷を、前記プロセス負荷情報に基づいて起動／終了プロセス負荷情報として特定するプロセス負荷特定手段と、
前記各プロセス負荷情報と、前記起動／終了プロセス負荷情報と、に基づいて、前記仮想マシンの前記コンピュータに対する負荷を算出する仮想マシン負荷算出手段と、
を備えたことを特徴とする仮想マシン管理システム。
【請求項２】
前記仮想マシン負荷算出手段にて算出された前記仮想マシンの負荷に基づいて、前記コンピュータ内における仮想マシンの構築状態を変更する仮想マシン構築変更手段を備えた、
ことを特徴とする請求項１記載の仮想マシン管理システム。
【請求項３】
前記仮想マシン負荷算出手段は、前記仮想マシンにおける前記起動／終了プロセスの起動又は終了する前と後のそれぞれにおける当該仮想マシンの負荷を算出し、当該算出した仮想マシンの負荷が前記プロセスの起動又は終了の前後で変化があった場合に、前記仮想マシン構築変更手段にその旨を通知し、
前記仮想マシン構築変更手段は、前記仮想マシン負荷算出手段から前記仮想マシンの負荷が前記プロセスの起動又は終了の前後で変化があった旨の通知を受けた場合に、前記コンピュータ内における仮想マシンの構築状態を変更する、
ことを特徴とする請求項２記載の仮想マシン管理システム。
【請求項４】
前記仮想マシンは、複数の前記コンピュータ内にそれぞれ複数構築可能であり、
前記仮想マシン構築変更手段は、前記複数のコンピュータに対する前記仮想マシンの配置を変更するよう当該仮想マシンを再配置する、
ことを特徴とする請求項２又は３記載の仮想マシン管理システム。
【請求項５】
前記仮想マシン構築変更手段は、前記仮想マシンによって前記各コンピュータにかかる負荷を平準化するよう、前記複数のコンピュータに対する前記仮想マシンの配置を変更する、
ことを特徴とする請求項４記載の仮想マシン管理システム。
【請求項６】
前記仮想マシンの負荷は、当該仮想マシンが構築される前記コンピュータが装備する資源に対する負荷である、
ことを特徴とする請求項１，２，３，４又は５記載の仮想マシン管理システム。
【請求項７】
前記仮想マシンが構築されるコンピュータであるホストマシンと、当該ホストマシンに接続された管理装置と、を備え、
前記ホストマシンが、前記プロセス負荷測定手段と、前記プロセス負荷特定手段と、前記仮想マシン負荷算出手段と、を備え、
前記管理装置が、前記仮想マシン構築変更手段を備えた、
ことを特徴とする請求項２，３，４，５又は６記載の仮想マシン管理システム。
【請求項８】
仮想マシンが構築されるコンピュータであって、
前記仮想マシン上で実行中のプロセス毎における前記コンピュータに対する負荷を測定してプロセス負荷情報として記憶するプロセス負荷測定手段と、
前記仮想マシン上で実行される前記プロセスの起動又は終了を検出して、当該起動／終了プロセスの負荷を、前記プロセス負荷情報に基づいて起動／終了プロセス負荷情報として特定するプロセス負荷特定手段と、
前記各プロセス負荷情報と、前記起動／終了プロセス負荷情報と、に基づいて、前記仮想マシンの前記コンピュータに対する負荷を算出する仮想マシン負荷算出手段と、
を備えたことを特徴とするコンピュータ。
【請求項９】
仮想マシンが構築されるコンピュータに、
前記仮想マシン上で実行中のプロセス毎における前記コンピュータに対する負荷を測定してプロセス負荷情報として記憶するプロセス負荷測定手段と、
前記仮想マシン上で実行される前記プロセスの起動又は終了を検出して、当該起動／終了プロセスの負荷を、前記プロセス負荷情報に基づいて起動／終了プロセス負荷情報として特定するプロセス負荷特定手段と、
前記各プロセス負荷情報と、前記起動／終了プロセス負荷情報と、に基づいて、前記仮想マシンの前記コンピュータに対する負荷を算出する仮想マシン負荷算出手段と、
を実現させるためのプログラム。
【請求項１０】
仮想マシンが構築されるコンピュータに接続された管理装置であって、
前記コンピュータが、前記仮想マシン上で実行中のプロセス毎における前記コンピュータに対する負荷を測定してプロセス負荷情報として記憶するプロセス負荷測定手段と、前記仮想マシン上で実行される前記プロセスの起動又は終了を検出して当該起動／終了プロセスの負荷を前記プロセス負荷情報に基づいて起動／終了プロセス負荷情報として特定するプロセス負荷特定手段と、前記各プロセス負荷情報と前記起動／終了プロセス負荷情報とに基づいて前記仮想マシンの前記コンピュータに対する負荷を算出する仮想マシン負荷算出手段と、を備えている場合に、
前記コンピュータが有する前記仮想マシン負荷算出手段にて算出された前記仮想マシンの負荷に基づいて、前記コンピュータ内における仮想マシンの構築状態を変更する仮想マシン構築変更手段を備えた、
ことを特徴する管理装置。
【請求項１１】
仮想マシンが構築されるコンピュータに接続された管理装置に、
前記コンピュータが、前記仮想マシン上で実行中のプロセス毎における前記コンピュータに対する負荷を測定してプロセス負荷情報として記憶するプロセス負荷測定手段と、前記仮想マシン上で実行される前記プロセスの起動又は終了を検出して当該起動／終了プロセスの負荷を前記プロセス負荷情報に基づいて起動／終了プロセス負荷情報として特定するプロセス負荷特定手段と、前記各プロセス負荷情報と前記起動／終了プロセス負荷情報とに基づいて前記仮想マシンの前記コンピュータに対する負荷を算出する仮想マシン負荷算出手段と、を備えている場合に、
前記コンピュータが有する前記仮想マシン負荷算出手段にて算出された前記仮想マシンの負荷に基づいて、前記コンピュータ内における仮想マシンの構築状態を変更する仮想マシン構築変更手段、を実現させるためのプログラム。
【請求項１２】
コンピュータ内に構築される仮想マシンを管理する仮想マシン管理方法であって、
前記仮想マシン上で実行中のプロセス毎における前記コンピュータに対する負荷を測定してプロセス負荷情報として記憶するプロセス負荷測定工程と、
前記仮想マシン上で実行される前記プロセスの起動又は終了を検出して、当該起動／終了プロセスの負荷を、前記プロセス負荷情報に基づいて起動／終了プロセス負荷情報として特定するプロセス負荷特定工程と、
前記各プロセス負荷情報と、前記起動／終了プロセス負荷情報と、に基づいて、前記仮想マシンの前記コンピュータに対する負荷を算出する仮想マシン負荷算出工程と、
を有することを特徴とする仮想マシン管理方法。
【請求項１３】
前記仮想マシン負荷算出工程にて算出された前記仮想マシンの負荷に基づいて、前記コンピュータ内における仮想マシンの構築状態を変更する仮想マシン構築変更工程を有する、
ことを特徴とする請求項１２記載の仮想マシン管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシン管理システムにかかり、特に、コンピュータ内に構築される仮想マシンの負荷を予測して、当該仮想マシンの配置を管理する仮想マシン管理システムに関する。
【背景技術】
【０００２】
ハードウェアリソースの柔軟な活用・サーバ集約等の観点から、ホストマシン上で複数の仮想マシンを動作させることにより運用を行うシステムが実現されている。このようなシステムにおいて、ホストマシンのリソースを効果的に活用するため、仮想マシンの負荷に応じて仮想マシンとホストマシンの割り当てを変更することにより、負荷を平準化する手段が提案・実現されている。例えば、特許文献１には、仮想マシンの負荷に応じてホストマシンに対する仮想マシンの再配置を行う手段が提案されている。
【０００３】
そして、上述したような再配置を行う場合には、負荷の実測値に基づいて当該負荷が高負荷状態にあるかどうかを判定している。ところが、瞬間的に負荷が増大するケースを排除するためには、ある程度の時間続けて高負荷状態にあることを確認する必要があるため、再配置処理の開始までに時間がかかる。そのため、仮想マシンが高負荷状態に陥ってから再配置処理の完了までにかなりの時間を要する恐れがある。その間、高負荷状態となった仮想マシン上での処理効率が低下してしまうという問題があった。
【０００４】
【特許文献１】特開２００５−１１５６５３号公報
【特許文献２】特開２００４−１９９５６１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
一方で、特許文献２では、仮想計算機の動作状態における資源の使用状態を予測して、資源が不足する場合には、資源の再割り当てを行う技術を提供している。しかしながら、上記技術では、仮想計算機毎に資源の使用状態を予測しているため、より詳細に資源の負荷状態を判定することができず、適切な仮想マシンの配置が困難となり、仮想マシンの処理効率の向上を図ることが困難である。
【０００６】
このため、本発明の目的は、上述した課題である、仮想マシンが構築されるコンピュータの負荷を抑制し、仮想マシンの処理効率の向上を図る、ことにある。
【課題を解決するための手段】
【０００７】
そこで、本発明の一形態である、コンピュータ内に構築される仮想マシンを管理する仮想マシン管理システムは、
仮想マシン上で実行中のプロセス毎におけるコンピュータに対する負荷を測定してプロセス負荷情報として記憶するプロセス負荷測定手段と、
仮想マシン上で実行されるプロセスの起動又は終了を検出して、当該起動／終了プロセスの負荷を、プロセス負荷情報に基づいて起動／終了プロセス負荷情報として特定するプロセス負荷特定手段と、
各プロセス負荷情報と、起動／終了プロセス負荷情報と、に基づいて、仮想マシンのコンピュータに対する負荷を算出する仮想マシン負荷算出手段と、
を備えた、という構成を採る。
【０００８】
また、本発明の他の形態である、仮想マシンが構築されるコンピュータは、
仮想マシン上で実行中のプロセス毎におけるコンピュータに対する負荷を測定してプロセス負荷情報として記憶するプロセス負荷測定手段と、
仮想マシン上で実行されるプロセスの起動又は終了を検出して、当該起動／終了プロセスの負荷を、プロセス負荷情報に基づいて起動／終了プロセス負荷情報として特定するプロセス負荷特定手段と、
各プロセス負荷情報と、起動／終了プロセス負荷情報と、に基づいて、仮想マシンのコンピュータに対する負荷を算出する仮想マシン負荷算出手段と、
を備えた、という構成を採る。
【０００９】
また、本発明の他の形態であるプログラムは、
仮想マシンが構築されるコンピュータに、
仮想マシン上で実行中のプロセス毎におけるコンピュータに対する負荷を測定してプロセス負荷情報として記憶するプロセス負荷測定手段と、
仮想マシン上で実行されるプロセスの起動又は終了を検出して、当該起動／終了プロセスの負荷を、プロセス負荷情報に基づいて起動／終了プロセス負荷情報として特定するプロセス負荷特定手段と、
各プロセス負荷情報と、起動／終了プロセス負荷情報と、に基づいて、仮想マシンのコンピュータに対する負荷を算出する仮想マシン負荷算出手段と、
を実現させる、という構成を採る。
【００１０】
また、本発明の他の形態である、仮想マシンが構築されるコンピュータに接続された管理装置は、
上記コンピュータが、仮想マシン上で実行中のプロセス毎におけるコンピュータに対する負荷を測定してプロセス負荷情報として記憶するプロセス負荷測定手段と、仮想マシン上で実行されるプロセスの起動又は終了を検出して当該起動／終了プロセスの負荷を前記プロセス負荷情報に基づいて起動／終了プロセス負荷情報として特定するプロセス負荷特定手段と、各プロセス負荷情報と起動／終了プロセス負荷情報とに基づいて仮想マシンのコンピュータに対する負荷を算出する仮想マシン負荷算出手段と、を備えている場合に、
コンピュータが有する仮想マシン負荷算出手段にて算出された仮想マシンの負荷に基づいて、コンピュータ内における仮想マシンの構築状態を変更する仮想マシン構築変更手段を備えた、という構成を採る。
【００１１】
また、本発明の他の形態であるプログラムは、
仮想マシンが構築されるコンピュータに接続された管理装置に、
上記コンピュータが、仮想マシン上で実行中のプロセス毎におけるコンピュータに対する負荷を測定してプロセス負荷情報として記憶するプロセス負荷測定手段と、仮想マシン上で実行されるプロセスの起動又は終了を検出して当該起動／終了プロセスの負荷をプロセス負荷情報に基づいて起動／終了プロセス負荷情報として特定するプロセス負荷特定手段と、各プロセス負荷情報と起動／終了プロセス負荷情報とに基づいて仮想マシンのコンピュータに対する負荷を算出する仮想マシン負荷算出手段と、を備えている場合に、
コンピュータが有する仮想マシン負荷算出手段にて算出された仮想マシンの負荷に基づいて、コンピュータ内における仮想マシンの構築状態を変更する仮想マシン構築変更手段、を実現させる、という構成を採る。
【００１２】
さらに、本発明の他の形態である、コンピュータ内に構築される仮想マシンを管理する仮想マシン管理方法は、
仮想マシン上で実行中のプロセス毎におけるコンピュータに対する負荷を測定してプロセス負荷情報として記憶するプロセス負荷測定工程と、
仮想マシン上で実行されるプロセスの起動又は終了を検出して、当該起動／終了プロセスの負荷を、プロセス負荷情報に基づいて起動／終了プロセス負荷情報として特定するプロセス負荷特定工程と、
各プロセス負荷情報と、起動／終了プロセス負荷情報と、に基づいて、仮想マシンのコンピュータに対する負荷を算出する仮想マシン負荷算出工程と、
を有する、という構成を採る。
【発明の効果】
【００１３】
本発明は、以上のように構成されるため、仮想マシンで実行されるプロセスが起動／終了するなど動作状態に変化が生じた場合に、仮想マシン全体の負荷を予測することができ、当該予測した仮想マシンの負荷に基づいてコンピュータに対する仮想マシンを再配置するなど、迅速な対応を取ることができ、特定のコンピュータに負荷が集中することを抑制することができる。その結果、コンピュータの高負荷化を抑制し、仮想マシンによる処理効率の向上を図ることができる。
【発明を実施するための最良の形態】
【００１４】
本発明は、仮想マシンの負荷を予測し、これに基づいて仮想マシンの再配置を行う、という点に特徴を有する。特に、仮想マシンの負荷の予測値の変化を契機として仮想マシンの再配置処理を実施することにより、コンピュータの負荷を抑制する。
【００１５】
そして、本発明の一形態である仮想マシン管理システムは、
コンピュータ内に構築される仮想マシンを管理する仮想マシン管理システムであって、
仮想マシン上で実行中のプロセス毎におけるコンピュータに対する負荷を測定してプロセス負荷情報として記憶するプロセス負荷測定手段と、
仮想マシン上で実行されるプロセスの起動又は終了を検出して、当該起動／終了プロセスの負荷を、プロセス負荷情報に基づいて起動／終了プロセス負荷情報として特定するプロセス負荷特定手段と、
各プロセス負荷情報と、起動／終了プロセス負荷情報と、に基づいて、仮想マシンのコンピュータに対する負荷を算出する仮想マシン負荷算出手段と、
を備えた、という構成を採る。
【００１６】
また、上記仮想マシン管理システムは、仮想マシン負荷算出手段にて算出された仮想マシンの負荷に基づいて、コンピュータ内における仮想マシンの構築状態を変更する仮想マシン構築変更手段を備えた、という構成を採る。
【００１７】
また、上記仮想マシン負荷算出手段は、仮想マシンにおける起動／終了プロセスの起動又は終了する前と後のそれぞれにおける当該仮想マシンの負荷を算出し、当該算出した仮想マシンの負荷がプロセスの起動又は終了の前後で変化があった場合に、仮想マシン構築変更手段にその旨を通知し、上記仮想マシン構築変更手段は、仮想マシン負荷算出手段から仮想マシンの負荷がプロセスの起動又は終了の前後で変化があった旨の通知を受けた場合に、コンピュータ内における仮想マシンの構築状態を変更する、という構成を採る。
【００１８】
また、上記仮想マシン管理システムでは、仮想マシンは、複数のコンピュータ内にそれぞれ複数構築可能であり、上記仮想マシン構築変更手段は、複数のコンピュータに対する仮想マシンの配置を変更するよう当該仮想マシンを再配置する、という構成を採る。また、上記仮想マシン構築変更手段は、仮想マシンによって各コンピュータにかかる負荷を平準化するよう、複数のコンピュータに対する仮想マシンの配置を変更する、という構成を採る。なお、上記仮想マシンの負荷は、例えば、仮想マシンが構築されるコンピュータが装備する資源に対する負荷である。
【００１９】
また、具体的に、上記仮想マシン管理システムは、仮想マシンが構築されるコンピュータであるホストマシンと、当該ホストマシンに接続された管理装置と、を備え、上記ホストマシンが、プロセス負荷測定手段と、プロセス負荷特定手段と、仮想マシン負荷算出手段と、を備え、上記管理装置が、仮想マシン構築変更手段を備えた、という構成を採る。
【００２０】
上記発明によると、まず、コンピュータ内に構築された仮想マシンにて実行されているプロセスの負荷を測定し、プロセス負荷情報として記憶する。その後、プロセスの起動／終了が検出されると、当該起動／終了プロセスの負荷を上述したように記憶しているプロセス負荷情報に基づいて予測して特定し、起動／終了プロセス付加情報とする。そして、上記プロセス負荷情報と起動／終了プロセス負荷情報とに基づいて、仮想マシン全体のコンピュータに対する負荷を算出して予測する。
【００２１】
このように、仮想マシンで実行されるプロセスが起動／終了するなど動作状態に変化が生じた場合に、当該起動／終了プロセスの負荷を予測することで、仮想マシン全体の負荷を予測することができる。従って、予測した仮想マシンの負荷に基づいてコンピュータに対する仮想マシンを再配置するなど、迅速な対応を取ることができ、特定のコンピュータに負荷が集中することを抑制することができる。その結果、効果的にコンピュータの高負荷化を抑制し、仮想マシンによる処理効率の向上を図ることができる。
【００２２】
＜実施形態＞
本発明の実施形態を、図１乃至図１１を参照して説明する。図１は、仮想マシン管理システムの構成を示すブロック図である。図２は、仮想マシンの構成を示す機能ブロック図であり、図３は、仮想マシンに記憶される情報の一例を示す図である。図４は、管理サーバの構成を示す機能ブロック図であり、図５乃至図７は、管理サーバに記憶される情報の一例を示す図である。図８乃至図１０は、仮想マシンの動作を示すフローチャートであり、図１１は、管理サーバの動作を示すフローチャートである。
【００２３】
［構成］
図１に示すように、本実施形態では、ホストマシン１ａ，２ａ等（コンピュータ）と、ホストマシン内に構築されており当該ホストマシン上で動作する仮想マシン２ａ，２ｂ，２ｃ等と、これらを管理する管理サーバ３（管理装置）と、から構成されるシステムを前提としている。この図の例では、ホストマシン１ａ上で仮想マシン２ａが動作し、ホストマシン１ｂ上で仮想マシン２ｂ，２ｃが動作していることを示している。これらのホストマシン１ａ，１ｂ及び管理サーバ３は、管理ネットワークに接続されており、ホストマシン１ａ，１ｂ及び仮想マシン２ａ，２ｂ，２ｃは、管理サーバ３１によって管理される。また、仮想マシン２ａ，２ｂ，２ｃ及び端末４ａ，４ｂ，４ｃは、運用ネットワークに接続されており、利用者は端末４ａ，４ｂ，４ｃを利用することにより仮想マシン２ａ，２ｂ，２ｃを操作可能である。なお、図１に示したホストマシン及び仮想マシンの数は一例であって、さらに多くのホストマシンや仮想マシンを備えていてもよい。
【００２４】
次に、上記ホストマシン１ａに構築される仮想マシン２ａの構成について、図２乃至図３を参照して説明する。なお、他のホストマシン１ｂに構築される仮想マシン２ｂ，２ｃも同様の構成を採るため、その説明は省略する。
【００２５】
仮想マシン２ａは、ホストコンピュータ１ａの演算装置に所定のプログラムが組み込まれることによって、当該ホストコンピュータ１ａのＣＰＵやメモリ、ネットワーク、ディスクなどの資源を利用して構築された仮想的なコンピュータである。そして、仮想マシン２ａは、図２に示すように、プログラムが組み込まれることによって構築された、プロセス負荷測定部２１と、プロセス負荷予測部２２と、仮想マシン負荷算出部２３と、負荷情報記憶部２４と、を備えている。
【００２６】
上記プロセス負荷測定部２１（プロセス負荷測定手段）は、仮想マシン２ａ上で実行中の処理（プログラム）であるプロセス毎に、ホストマシン１ａに対する負荷を測定する。具体的に、まず、プロセス負荷測定部２１は、仮想マシン２ａ上で実行中のプロセスの一覧を取得し、予め記憶されている監視対象外のプロセス一覧と照らし合わせ、監視対象プロセスの一覧を作成する。続いて、プロセス負荷測定部２１は、取得した監視対象プロセスの負荷情報（ＣＰＵ使用率、メモリ使用率、ネットワークアクセス負荷、ディスクアクセス負荷等）を、ホストマシン１ａ内のオペレーティングシステムなどから取得し、当該プロセスの負荷を表すコスト値を計算する。なお、コスト値は、使用率の平均・単位時間当たりのＩ／Ｏ量などを元に、資源の種別（ＣＰＵ・メモリ・ネットワーク・ディスク等）毎、つまり、ホストマシン１ａのハードウェア資源毎に適した手段を用いて計算する。そして、計算したコスト値を、各プロセスの各資源ごとにおける負荷を表すプロセス負荷情報として、プロセス毎に負荷情報記憶部２４に記録する。ここで、図３に、記憶したプロセス毎のコスト値の一例を示す。なお、プロセス負荷測定部２１によるプロセス負荷情報の計測は、例えば、一定時間毎に全てのプロセスについて実行される。
【００２７】
また、上記プログラム負荷測定部２１は、上述したように計測した各仮想マシン上のプロセスの負荷であるコスト値を、管理サーバ３に送信する機能も有する。これにより、管理サーバ３は、後述する図７に示すように、各仮想マシン毎に動作しているプロセスの負荷であるコスト値を記憶しておき、各仮想マシンの実際の負荷を算出することができる。
【００２８】
また、上記プロセス負荷予測部２２（プロセス負荷特定手段）は、まず、仮想マシン１ａ上で実行されるプロセスの起動又は終了を監視する。なお、起動／終了プロセスの監視は、プロセスの起動処理および終了処理をフックして行ってもよく、一定時間毎にプロセス一覧を取得して、その差分を調べることで行ってもよい。そして、仮想マシン１ａ上で新たなプロセスが起動された場合、あるいは、実行中のプロセスが終了した場合には、負荷情報記憶部２４から、当該起動／終了プロセスと同一のプロセスのコスト値を、起動／終了プロセス負荷情報として取得する。これにより、起動／終了プロセスの負荷の予測値を特定することができる。なお、このとき、プロセス負荷予測部２２は、予め設定された監視対象外のプロセス一覧に無い起動／終了プロセスに対してのみ負荷の予測を行う。
【００２９】
また、上記仮想マシン負荷算出部２３（仮想マシン負荷算出手段）は、上記起動／終了プロセスの負荷の予測値を利用して、自身である仮想マシン２ａの負荷を予測して算出し、プロセスが起動する前と後とで、仮想マシン全体の負荷に変化があるか否かを調べる。具体的には、新たにプロセスが起動した場合には、当該起動プロセスが起動する前に仮想マシンで実行されているプロセスのコスト値の合計を、プロセス起動前の負荷として算出し、さらにこれに、上記プロセス負荷予測部２２で予測した起動プロセスのコスト値を加算して、プロセス起動後の仮想マシンの予測負荷値を算出する。同様に、新たにプロセスが終了した場合には、当該終了プロセスが終了する前に仮想マシンで実行されているプロセスのコスト値の合計を、プロセス終了前の負荷として算出し、さらにこれに、上記プロセス負荷予測部２２で予測した終了プロセスのコスト値を減算して、プロセス終了後の仮想マシンの予測負荷値を算出する。このとき、上述したように算出する仮想マシンの負荷は、各プロセスのコスト値を種別（ＣＰＵ・メモリ・ネットワーク・ディスク等）毎に加算することによって求める。つまり、仮想マシンの負荷は、仮想マシンにて実行される各プロセスにおける資源の種別（ＣＰＵ・メモリ・ネットワーク・ディスク等）毎のコスト値の合計の組み合わせとして算出することとなる。但し、算出する仮想マシンの負荷は、上記資源の種別毎に算出することに限定されず、全て種別のコスト値を合計して算出したり、あるいは、種別毎のコスト値に予め設定された重み付けを加味した値を合計して算出してもよい。
【００３０】
そして、仮想マシン負荷算出部２３は、上述したようにそれぞれ算出したプロセス起動／終了の前と後における仮想マシンの負荷を比較し、異なる場合は、起動／終了後の負荷予測値を管理サーバ３に送信する。なお、プロセス起動／終了の前後における仮想マシンの負荷の比較は、例えば、予め優先種別として設定された資源の種別におけるコスト値のみを比較して判断してもよく、あるいは、上述したように全ての種別のコスト値を合計した値を比較して判断してもよい。
【００３１】
次に、管理サーバ３の構成について、図４乃至図７を参照して説明する。管理サーバ３は演算装置や記憶装置を備えた一般的なサーバコンピュータである。そして、管理サーバ３は、図４に示すように、装備された演算装置に所定のプログラムが組み込まれることによって構築された、仮想マシン配置部３１と、仮想マシン移動部３２と、を備えている。また、装備された記憶装置には、ホストマシンキャパシティ情報３４と、仮想マシンは位置情報３５と、仮想マシン負荷情報３６と、を記憶したホストマシン情報記憶部３３が形成されている。
【００３２】
上記仮想マシン配置部３１（仮想マシン構築変更手段）は、上述したようにホストマシン１ａから仮想マシン２ａの負荷が変化した旨の通知を受けると、各ホストマシン１ａ，１ｂに対する仮想マシン２ａ，２ｂ，２ｃの構築状態を変更するよう作動する。具体的には、仮想マシン配置部３１は、通知のあった仮想マシン２ａの新しい負荷予測値と、他の起動中の全ての仮想マシン２ｂ，２ｃの負荷予測値と、さらに、ホストマシン１ａ，１ｂのキャパシティ値を元に、当該ホストマシン１ａ，１ｂの負荷が平準化されるよう、仮想マシン１ａ，１ｂとホストマシン２ａ，２ｂ，２ｃの割り当てを決定する。
【００３３】
ここで、ホストマシンキャパシティ情報３４の一例を図５に示す。この図に示すように、ホストマシンキャパシティ情報３４には、ホストマシンの性能を示す値の上限値があらかじめ設定されて記憶されている。例えば、仮想マシンの負荷予測値の上限が［ＣＰＵ：１００，メモリ：１００，ネットワーク：１００，ディスク：１００］である場合、仮想マシンを２０台同時に動作させることのできるホストマシンのキャパシティ値として［ＣＰＵ：２０００，メモリ：２０００，ネットワーク：２０００，ディスク：２０００］という値が記憶されている。なお、ホストマシンキャパシティ値の設定は、予め用意された既定値を使用してもよいが、システム管理者がホストマシンの性能に応じて適切な値を設定してもよい。
【００３４】
また、仮想マシン配置情報３５には、図６に示すように、各ホストマシン上で動作するよう構築された仮想マシンの配置を表す情報が記憶されている。そしてさらに、仮想マシン負荷情報３６には、図７に示すように、上述したように仮想マシン２ａ等から送信された各仮想マシンの負荷、つまり、各仮想マシンで実行されているプロセスの資源種別毎におけるコスト値が記憶されている。なお、図７には、仮想マシン負荷情報として１つの仮想マシンのコスト値しか示されていないが、他の仮想マシンのコスト値も記憶されている。そして、上記仮想マシン配置情報３５と仮想マシン負荷情報３６とを用いることで、仮想マシン配置部３１は、ホストマシン毎の負荷状況を把握することができる。例えば、まず、ホストマシン上で動作する全ての仮想マシンを図６の仮想マシン配置情報から特定し、これら特定した全ての仮想マシンの負荷を図７の仮想マシン負荷情報から特定して合計することで、各ホストマシンの負荷を算出する。なお、各ホストマシンの負荷は、予め設定された資源の種別（ＣＰＵ・メモリ・ネットワーク・ディスク等）のうち１つの種別のコスト値についてのみ算出してもよく、あるいは、いずれかの種別を優先するよう重み付けられた各種別のコスト値の合計を求めることで、ホストマシン全体の負荷を求めてもよい。
【００３５】
そして、仮想マシン配置部３１は、上述したように仮想マシンの負荷の変化を契機として、負荷が大きいホストマシンから、当該ホストマシン上で動作する仮想マシンを他のホストマシンに移動するよう再配置する。つまり、上述したように算出したホストマシン毎の負荷が、そのキャパシティ値に対して高い割合を有する場合には、当該ホストマシン上からキャパシティ値に対する負荷が低い他のホストマシンに、仮想マシンを移動させるよう再配置する。そして、その配置情報を、仮想マシン配置情報３５として記憶し、再配置処理を仮想マシン移動部３２に指示する。このとき、仮想マシンの再配置は、全てのホストマシンの負荷が平準化、つまり、ほぼ均等となるよう実行されると望ましいが、必ずしもそのように実行されることに限定されない。少なくとも特定のホストマシンの負荷が高負荷となることを抑制するよう、負荷が低い他のホストマシンに仮想マシンが移動するよう再配置を行う。
【００３６】
そして、仮想マシン移動部３２（仮想マシン構築変更手段）は、上記仮想マシン配置部３１からの指示に応じて、仮想マシン配置情報３５に記憶されている配置に基づいて、各ホストマシン上に仮想マシンを構築する。例えば、仮想マシン移動部３２は、仮想マシン基盤が持つ機能を使用して、仮想マシンを別のホストマシンに移動する。つまり、管理サーバ２は、所定のホストマシン上の仮想マシンを他のホストマシンに移動する機能を有している。なお、ホストマシンに仮想マシンを構築する処理は周知の技術であるため、その詳細な説明は省略する。
【００３７】
ここで、上記では、仮想マシン２ａから、当該仮想マシンの負荷の変化があったときにその旨が管理サーバ３に通知され、当該管理サーバ３は仮想マシンの負荷の変化に応じてホストマシンに対する仮想マシンの再配置を行う場合を例示したが、仮想マシンの再配置を行うタイミングは、上記タイミングに限定されない。
【００３８】
［動作］
次に、上記構成の仮想マシン管理システムの動作を説明する。なお、以下でも、仮想マシンの動作として符号２ａの仮想マシンの動作を一例として説明するが、他の仮想マシンも同様に動作する。
【００３９】
まず、仮想マシン２ａは、仮想マシン上で実行中のプロセスの一覧を取得する。このとき、仮想マシン２ａは、予め記憶された監視対象外のプロセス一覧を設定情報として持っており、取得したプロセス一覧と照らし合わせることによって、監視対象プロセスの一覧を作成する（ステップＡ１）。続いて、取得した監視対象プロセスの負荷情報（ＣＰＵ使用率、メモリ使用率、ネットワークアクセス負荷、ディスクアクセス負荷等）を取得し（ステップＡ２）、当該プロセスのコスト値を計算する（ステップＡ３）。そして、計算したコスト値を、負荷情報記憶部２４にプロセス毎に記録する（ステップＡ４、プロセス負荷測定工程）。このとき、仮想マシン２ａは、上記各プロセスのコスト値を管理サーバ３に送信し、これに応じて管理サーバ３は、各仮想マシンに実行されているプロセスのコスト値を、図７に示すように記憶しておく。
【００４０】
その後、取得した全監視対象プロセスに対して（ステップＡ５でＮｏ）、上記ステップＡ２〜Ａ４の処理を実施した後（ステップＡ５でＹｅｓ）、一定時間「Ｓｌｅｅｐ」し、再びステップＡ１からの処理を繰り返す。上記の処理により、一定時間毎に監視対象プロセスのコスト値が更新される。ここで記述した処理は、全くの無の状態から開始してもよいし、予め用意された既定値が読み込まれた状態や、他の仮想マシンで計算・記録されたコスト値を読み込んだ状態（他の仮想マシン上の負荷情報記憶部のデータをエクスポートし、当該仮想マシンにてインポートした状態）から開始してもよい。
【００４１】
続いて、あるいは、上記図８に示した処理と平行して、仮想マシン２ａは、仮想マシン上のプロセスの起動および終了を監視する。監視の手段としては、プロセスの起動処理および終了処理をフックしてもよいし、一定時間毎にプロセス一覧を取得してその差分を調べることで判断してもよい。なお、仮想マシン２ａは、上述したように監視対象外のプロセス一覧を記憶しているため、プロセスが起動または終了されると当該プロセスが監視対象かどうかを調べ、監視対象である場合は、図９あるいは図１０に示す通知処理へと移る。なお、図９は、新たにプロセスが起動した場合の処理を示し、図１０は、実行されていたプロセスが終了した場合の処理を示す。
【００４２】
そして、監視対象プロセスが起動したことを仮想マシン２ａが検出した場合には、当該起動プロセスのコスト値を負荷情報記憶部２４から取得し（ステップＢ１、プロセス負荷特定工程）、当該プロセス起動後の仮想マシンの負荷予測値を計算する（ステップＢ２、仮想マシン負荷算出工程）。このプロセス起動後の仮想マシンの負荷予測値は、当該プロセス起動前の仮想マシンの負荷値に、当該プロセスのコスト値を種別（ＣＰＵ・メモリ・ネットワーク・ディスク等）毎に加算することによって求める。なお、プロセス起動前の予測値は、上述同様に以前に算出され記憶されている仮想マシンの負荷予測値を用いてもよく、あるいは、実際に仮想マシンに実行されているプロセスの負荷を計測することによって求めた当該仮想マシンの負荷値を用いてもよい。そして、プロセス起動前と起動後で仮想マシンの負荷が異なる場合（ステップＢ３でＹｅｓ）、プロセス起動後の仮想マシンの負荷予測値を管理サーバ３に通知する（ステップＢ４）。
【００４３】
また、上述同様に、監視対象プロセスが終了した場合は、まず、当該プロセスのコスト値を負荷情報記憶部２４から取得し（ステップＣ１、プロセス負荷特定工程）、当該プロセス終了前の仮想マシンの負荷値から当該プロセスのコスト値を種別（CPU・メモリ・ネットワーク・ディスク等）毎に減算することによって、当該プロセス終了後の仮想マシンの負荷予測値を計算する（ステップＣ２、仮想マシン負荷算出工程）。そして、当該プロセス終了前と終了後で仮想マシンの負荷予測値が異なる場合（ステップＣ３でＹｅｓ）、プロセス終了後の仮想マシンの負荷予測値を管理サーバ３に通知する（ステップＣ４）。
【００４４】
その後、管理サーバ３は、上述したように仮想マシン２ａから負荷予測値の変化が通知されると（ステップＤ１）、通知のあった仮想マシンの新しい負荷予測値と、他の起動中の全ての仮想マシンの負荷予測値およびホストマシンのキャパシティ値を元に、各ホストマシンの負荷が平準化されるよう、仮想マシンとホストマシンの割り当てを決定する（ステップＤ２）。なお、いずれのホストマシンが予め定めたほどの高負荷ではなく、あるいは、各ホストマシンの負荷に予め定められたほど値ほどの差が無い場合には、仮想マシンの割り当てを変更する必要がないと判断して、何もしない。
【００４５】
そして、ホストマシンの再配置処理において仮想マシンを別のホストマシンに移動する際には、仮想マシン移動部３２が仮想マシンを別のホストマシンに移動する（ステップＤ３、仮想マシン構築変更工程）。
【００４６】
以上のように、本発明によると、仮想マシンで実行されるプロセスが起動／終了するなど動作状態に変化が生じた場合に、当該起動／終了プロセスの負荷を、事前に計測して記憶しておいたプロセスの負荷値に基づいて予測することで、迅速に仮想マシン全体の負荷を予測することができる。従って、予測した仮想マシンの負荷に基づいてホストマシンに対する仮想マシンを再配置するなど、迅速な対応を取ることができ、特定のホストマシンに負荷が集中することを抑制することができる。つまり、仮想マシンの負荷を実測する前に対応を取ることができ、効果的にホストマシンの高負荷化を抑制し、仮想マシンによる処理効率の向上を図ることができる。特に、プロセス毎の負荷を予測しているため、より高精度に仮想マシンの負荷を予測することができ、適切に再配置を行うことができる。
【００４７】
ここで、上記では、複数のホストマシンに複数の仮想マシンが構築される場合を例示したが、これに限定されない。例えば、１台のホストマシンに複数の仮想マシンが構築される場合にも適用可能であり、かかる場合には、例えば、ホストマシンの負荷が高くなりすぎた場合には、仮想マシンを削除するよう作動するとよい。また、複数のホストマシンを備えていて、各ホストマシンにそれぞれ１台の仮想マシンが構築される場合にも適用可能である。かかる場合には、ホストマシンのキャパシティ値に応じて各ホストマシンの負荷が高くなりすぎないよう、予測された負荷値に基づいて仮想マシンを配置するとよい。
【産業上の利用可能性】
【００４８】
本発明は、ホストマシン上で仮想マシンを動作させることにより運用を行うシステムに利用することができ、産業上の利用可能性を有する。
【図面の簡単な説明】
【００４９】
【図１】仮想マシン管理システムの構成を示すブロック図である。
【図２】仮想マシンの構成を示す機能ブロック図である。
【図３】仮想マシンに記憶される情報の一例を示す図である。
【図４】管理サーバの構成を示す機能ブロック図である。
【図５】管理サーバに記憶される情報の一例を示す図である。
【図６】管理サーバに記憶される情報の一例を示す図である。
【図７】管理サーバに記憶される情報の一例を示す図である。
【図８】仮想マシンの動作を示すフローチャートである。
【図９】仮想マシンの動作を示すフローチャートである。
【図１０】仮想マシンの動作を示すフローチャートである。
【図１１】管理サーバの動作を示すフローチャートである。
【符号の説明】
【００５０】
１ａ，１ｂ  ホストマシン
２ａ，２ｂ，２ｃ  仮想マシン
３  管理サーバ
４ａ，４ｂ，４ｃ  端末
２１  プロセス負荷測定部
２２  プロセス負荷予測部
２３  仮想マシン負荷算出部
２４  負荷情報記憶部
３１  仮想マシン配置部
３２  仮想マシン移動部
３３  ホストマシン情報記憶部
３４  ホストマシンキャパシティ情報
３５  仮想マシン配置情報
３６  仮想マシン負荷情報
【図１】
2009237859.tif 000003
【図２】
2009237859.tif 000004
【図３】
2009237859.tif 000005
【図４】
2009237859.tif 000006
【図５】
2009237859.tif 000007
【図６】
2009237859.tif 000008
【図７】
2009237859.tif 000009
【図８】
2009237859.tif 000010
【図９】
2009237859.tif 000011
【図１０】
2009237859.tif 000012
【図１１】
2009237859.tif 000013