(57)【要約】計算機システムで仮想計算機を稼働させる予定情報から、稼働が予定された仮想計算機の予定負荷を取得し、当該予定負荷と稼働中の仮想計算機の実際の負荷とから、計算機システムで前記稼働が予定された仮想計算機の稼働開始時刻以前に、当該稼働予定に係る計算機を配置する仮想計算機の実行主体を決定する。
2012117453.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理計算機と、
当該複数の物理計算機とネットワークを介して接続し、前記複数の物理計算機に対する複数の仮想計算機の配置を管理する管理計算機と、
を備える計算機システムであって、
前記管理計算機は、
仮想計算機を稼働させる予定情報から、稼働が予定される前記仮想計算機を決定し、
一つ又は複数の前記物理計算機に既に配置されて稼働している稼働中の仮想計算機に関する負荷に基づいて、
前記稼働が予定されている仮想計算機を配置すべき物理計算機を、当該仮想計算機の稼働前に、前記複数の物理計算機の中から決定する、
計算機システム。
【請求項２】
前記管理計算機は、稼働中の仮想計算機に関する負荷を、
前記複数の物理計算機の夫々が仮想計算機に割当て可能なリソースの総量から、稼働している仮想計算機に割当てられたリソース量を減じた値から算出する、請求項１記載の計算機システム。
【請求項３】
前記管理計算機は、前記稼働することが予定されている仮想計算機が登録された管理テーブルを備え、
前記管理テーブルは、当該仮想計算機が稼働を開始する時刻の情報と終了する時刻の情報とを備え、
前記管理計算機は、予定時刻から規定期間内に前記開始する時刻が存在する前記稼働することが予定される仮想計算機を前記管理テーブルから抽出し、当該抽出した仮想計算機を配置すべき前記物理計算機を決定する、請求項１記載の計算機システム。
【請求項４】
前記管理計算機は、前記複数の物理計算機の何れかで稼働中の仮想計算機を他の物理計算機に移行することなく、前記稼働が予定されている仮想計算機を前記複数の物理計算機の中から決定する、請求項１記載の計算機システム。
【請求項５】
前記管理テーブルは、前記稼働することが予定されている仮想計算機の配置先物理計算機の情報を含み、
前記管理計算機は、前記稼働予定されている仮想計算機を配置すべきとして決定された物理計算機が前記管理テーブルに含まれた配置先物理計算機と異なる場合には、前記決定された物理計算機の情報を前記管理テーブルに更新登録する、請求項１記載の計算機システム。
【請求項６】
前記管理計算機は、前記複数の物理計算機の何れかで稼働中の仮想計算機を他の物理計算機に移行しながら、前記稼働が予定されている仮想計算機を前記複数の物理計算機の中から決定する、請求項１記載の計算機システム。
【請求項７】
前記管理計算機は、
前記稼働が予定されている仮想計算機を配置すべき物理計算機を決定後、前記稼働が予定されている仮想計算機に関する負荷と、前記複数の物理計算機の少なくとも一つで稼働している他の仮想計算機に関する負荷と、が目標値を達成しているか否かを判定し、
当該判定を否定する場合には、前記複数の物理計算機の少なくとも一つで稼働している、前記複数の仮想計算機の少なくとも一つの仮想計算機を他の物理計算機に移行し、前記判定を肯定する場合には、当該移行を行うことなく、前記複数の仮想計算機の前記複数の物理計算機に対する配置を決定する、請求項
６記載の計算機システム。
【請求項８】
前記管理計算機は、前記他の物理計算機を、前記複数の物理計算機の中で、前記少なくとも一つの仮想計算機に割当てることができるリソース量が最も大きい物理計算機とする、請求項７記載の計算機システム。
【請求項９】
前記管理計算機は、稼働が予定されている仮想計算機が配置される目標物理計算機を決定する際、当該仮想計算機の稼働開始前に稼働した後稼働を終了する仮想計算機が前記目標物理計算機に配置されている場合、当該仮想計算機に関する負荷を前記目標物理計算機のリソース量から減じることなく、前記目標物理計算機を前記複数の物理計算機の中か決定する、請求項１記載の計算機システム。
【請求項１０】
前記管理計算機は、稼働中の仮想計算機に関する負荷を、前記複数の物理計算機の夫々が仮想計算機に割当て可能なリソースの総量から、稼働している仮想計算機に割当てられたリソース量を減じた値から算出し、
前記稼働することが予定されている仮想計算機が登録された管理テーブルを備え、
前記管理テーブルは、当該仮想計算機が稼働を開始する時刻の情報と終了する時刻の情報と、
前記管理計算機は、さらに、予定時刻から規定期間内に前記開始する時刻が存在する前記稼働することが予定される仮想計算機を前記管理テーブルから抽出し、当該抽出した仮想計算機を配置すべき前記物理計算機を決定し、
前記管理テーブルは、前記稼働することが予定されている仮想計算機の配置先物理計算機の情報を含み、
前記管理計算機は、さらに、
前記稼働予定されている仮想計算機を配置すべきとして決定された物理計算機が前記管理テーブルに含まれた配置先物理計算機と異なる場合には、前記決定された物理計算機の情報を前記管理テーブルに更新登録し、
前記複数の物理計算機の何れかで稼働中の仮想計算機を他の物理計算機に移行しながら、前記稼働が予定されている仮想計算機を前記複数の物理計算機の中から決定し、
前記稼働が予定されている仮想計算機を配置すべき物理計算機を決定後、前記稼働が予定されている仮想計算機に関する負荷と、前記複数の物理計算機の少なくとも一つで稼働している他の仮想計算機に関する負荷と、が目標値を達成しているか否かを判定し、
当該判定を否定する場合には、前記複数の物理計算機の少なくとも一つで稼働している、前記複数の仮想計算機の少なくとも一つの仮想計算機を他の物理計算機に移行し、前記判定を肯定する場合には、当該移行を行うことなく、前記複数の仮想計算機の前記複数の物理計算機に対する配置を決定し、
前記他の物理計算機を、前記複数の物理計算機の中で、前記少なくとも一つの仮想計算機に割当てることができるリソース量が最も大きい物理計算機とし、
稼働が予定されている仮想計算機が配置される目標物理計算機を決定する際、当該仮想計算機の稼働開始前に稼働した後稼働を終了する仮想計算機が前記目標物理計算機に配置されている場合、当該仮想計算機に関する負荷を前記目標物理計算機のリソース量から減じることなく、前記目標物理計算機を前記複数の物理計算機の中か決定する、請求項１記載の計算機システム。
【請求項１１】
複数の物理計算機と、
当該複数の物理計算機とネットワークを介して接続し、前記複数の物理計算機に対する複数の仮想計算機の配置を管理する管理計算機と、
を備える計算機システムの仮想計算機の最適配置方法において、
前記管理計算機は、
仮想計算機を稼働させる予定情報から、稼働が予定される前記仮想計算機を決定し、
一つ又は複数の前記物理計算機に既に配置されて稼働している稼働中の仮想計算機に関する負荷に基づいて、
前記稼働が予定されている仮想計算機を配置すべき物理計算機を、当該仮想計算機の稼働前に、前記複数の物理計算機の中から決定する、
計算機システムの仮想計算機の最適配置方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は計算機システムに係り、特に、計算機システムに存在する物理サーバに仮想計算機を最適に配置するのに適した計算機システムに関するものである。さらに、本発明は、仮想計算機システムにおける仮想計算機の配置の最適化方法に関するものである。
【背景技術】
【０００２】
計算機システムのリソースを有効に活用するという観点から、1つの物理サーバの持つ計算機リソースを複数の仮想計算機（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）で利用させるという、サーバの仮想化技術が知られている。仮想計算機は、物理サーバで、仮想サーバとして動作することによって、複数のユーザが物理サーバ（物理計算機）のリソースを有効に利用することができるようになる。【０００３】
複数の物理計算機と複数の仮想計算機とが存在する計算機システムでは、複数の物理計算機に複数の仮想計算機を最適に配置される。例えば、それぞれ仮想計算機が動作している複数の物理計算機間で負荷が互いに平準化されるように、複数の仮想計算機を複数の物理計算機に分散させたり、これとは反対に、計算機システムの省電力のために、できるだけ多くの仮想計算機を同じ物理計算機に片寄したりなど、仮想計算機の最適配置処理が望まれている。【０００４】
仮想計算機の最適配置処理のために、複数の物理計算機間で仮想計算機の配置の再構成が行われる。仮想計算機の再配置に当たっては、仮想計算機を複数の物理計算機間で移行される。計算機システムの管理サーバ（管理計算機）は、移行元物理計算機の計算機リソースを仮想計算機から解放し、移行先計算機の計算機リソースを仮想計算機に割当てる。【０００５】
例えば、特開２０１０−２２４７５６号公報、及び、特開２０１０−２１１５４６号公報には、管理計算機が、仮想計算機と物理計算機との最適な組み合わせを算出し、その算出結果に基づいて、仮想計算機が稼働中であっても、仮想計算機を複数の物理計算機間で移行させることにより、それぞれ仮想計算機をデプロイした、複数の物理計算機間で負荷のバランスを調整するシステムが開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−２２４７５６号公報
【特許文献２】特開２０１０−２１１５４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
既述の公報によって開示された従来のシステムは、仮想計算機の過去の負荷情報、さらに、仮想計算機の将来予測される負荷情報を考慮して、複数の物理計算機に対する複数の仮想計算機の最適配置を決定していたが、仮想計算機の数が変更される場合を考慮に入れて仮想計算機の最適配置を実現しようとするものではなかった。【０００８】
すなわち、計算機システムにおいて、仮想計算機の最適な配置が一旦実現されても、新たな仮想計算機が物理計算機で稼働し始めた段階で仮想計算機の最適な配置状態が悪影響を受けてしまう。それを避けようとすると、新たな仮想計算機を物理計算機で稼働した段階で、管理計算機は、仮想計算機の最適配置処理をやり直さなければならないという課題があった。【０００９】
そこで、本発明は、複数の物理計算機に複数の仮想計算機を最適に配置する処理における負荷が低減された計算機システムを提供することを目的とするものである。【００１０】
本発明の他の目的は、新たな仮想計算機が物理計算機で稼働し始めても、稼働中の仮想計算機の最適な配置状態を損なわないようにした計算機システムを提供することにある。【００１１】
本発明のさらに他の目的は、計算機システムにおいて、仮想計算機の配置の最適化方法を提供することにある。
【課題を解決するための手段】
【００１２】
前記目的を達成するために、本発明は、計算機システムで仮想計算機を稼働させる予定情報から、稼働が予定された仮想計算機の予定負荷を取得し、当該予定負荷と稼働中の仮想計算機の実際の負荷とから、計算機システムで前記稼働が予定された仮想計算機の稼働開始時刻以前に、当該稼働予定に係る計算機を配置する仮想計算機の実行主体を決定することを特徴とするものである。
【発明の効果】
【００１３】
以上説明したように、本発明によれば、複数の物理計算機に複数の仮想計算機を最適に配置する処理における負荷が低減された計算機システムを提供することができる。さらに、本発明によれば、新たな仮想計算機が物理計算機で稼働し始めても、稼働中の仮想計算機の最適な配置状態を損なわないようにした計算機システムを提供することができる。さらにまた、本発明によれば、既述の計算機システムにおいて、仮想計算機の配置の最適化方法を提供することができる。
【図面の簡単な説明】
【００１４】
【図１】実施例１に係る計算機システムのハードウエア構成図である。
【図２】実施例１の物理計算機構成テーブルの一例である。
【図３】実施例１の仮想計算機の情報テーブルの一例である。
【図４】実施例１の予約情報テーブルの一例である。
【図５】実施例１の稼働予定仮想計算機の最適配置処理のフローチャートである。
【図６】実施例１の配置スコアテーブルある。
【図７】実施例１の稼働予定仮想計算機の配置決定処理のフローチャートある。
【図８】実施例２の物理計算機構成テーブル、ＶＭ情報テーブル、予約情報テーブルである。
【図９】実施例２の仮想計算機の最適配置処理のフローチャートである。
【図１０】実施例２の稼働中の仮想計算機と稼働予定の仮想計算機の最適配置案作成処理のフローチャートである。
【図１１】実施例３の物理計算機構成テーブル、ＶＭ情報テーブル、予約情報テーブルである。
【図１２】実施例３の稼働予定仮想計算機の最適配置処理のフローチャートである。
【図１３】リソース管理プログラムが、稼働が予定される仮想計算機の配置を決定する上で、稼働中の仮想計算機の終了時刻を考慮する必要がない状態に係る管理テーブルであり、物理計算機情報テーブル（図１３（Ａ））、ＶＭ情報テーブル（図１３（Ｂ））、予約情報テーブル（図１３（Ｃ））である。
【図１４】物理サーバのメモリの総容量に対する、仮想計算機の負荷の変位を示すグラフである。
【図１５】図１３（Ｃ）に係る予約情報テーブルの変形例である。
【図１６】図１５に対応した、物理サーバのメモリの総容量に対する、仮想計算機の負荷の変位を示すグラフである。
【図１７】複数の仮想計算機の負荷が累積された状態を示すグラフである。
【図１８】図１５の変形に係る予約情報テーブルである。
【図１９】図１６の変形例に係るグラフである。
【図２０】図１７の変形に係るグラフである。
【図２１】リソース管理プログラムが出力Ｉ／Ｆを介してディスプに表示する、仮想計算機の予約情報入力画面の例である。
【図２２】仮想計算機の最適配置案の出力を要求するための入力画面の例である。
【図２３】仮想計算機の最適配置処理によって得られた、複数の仮想計算機の配置形態に相当する管理テーブルである。
【発明を実施するための形態】
【００１５】
次に、本発明に係る計算機システムの実施形態について説明する。図１に、計算機システムのハードウエアブロックを示す。計算機システムは、複数の物理計算機０１３０、０１４０・・・・と、物理計算機間に対する仮想計算機の配置を管理する管理サーバ０１００と、複数の物理計算機と管理サーバとを接続するネットワーク０１２０と、を備えている。
【００１６】
リソース管理サーバ０１００は、ＣＰＵ０１０１、メモリ０１０２、ネットワークインターフェースカード（ＮＩＣと図示する）０１０９、入力Ｉ／Ｆ０１０３、出力Ｉ／Ｆ０１０５、そして、ＨＤＤ  Ｉ／Ｆ０１０７を具備する。
【００１７】
リソース管理サーバ０１００の入力Ｉ／Ｆ０１０３は、マウスやキーボード０１０４といった入力デバイスと接続され、リソース管理サーバ０１００の利用者からの操作を受け付ける。出力Ｉ／Ｆ０１０５はディスプレイ０１０６といった出力デバイスと接続され、利用者への画面出力を行う。出力デバイスであれば他にもプリンタ（図示せず）も接続可能である。
【００１８】
ＨＤＤ  Ｉ／Ｆ０１０７は外部ストレージであるＨＤＤ０１０８と接続され、種々のプログラムやＣＰＵ０１０１で処理された各種データ・テーブル等を格納する。ＮＩＣ０１０９はネットワーク０１２０と接続され、他の物理計算機０１３０、０１４０と接続されている。
【００１９】
メモリ０１０２には、リソース管理プログラム０１１０が実装されている。リソース管理プログラム０１１０は、ＨＤＤ０１０８に格納され、ＣＰＵ０１０１からの要求によってメモリ０１０２へロードされるものでもよい。リソース管理プログラム０１１０は、予約受付処理０１１１、仮想計算機の配置計算処理０１１２、仮想計算機の移行処理０１１３、稼働中の仮想計算機の負荷を算出する計測処理０１１４、稼働予定であった仮想計算機を仮想計算機の利用者が定刻に利用できるようにする配備処理０１１５、そして、物理計算機０１３０、０１４０で動作する仮想計算機やハイパバイザの負荷情報、構成情報を物理計算機０１３０、０１４０やハイパバイザ０１３５、０１４５から収集し管理する管理処理０１１６を実行する。これらの各処理は、後述のフローチャートの一つまたはその組み合わせ、或いは、これらフローチャートの一つ又は複数のステップによって達成される。
【００２０】
メモリ０１０２には、ハイパバイザ０１３５,０１４５が仮想計算機０１３６,０１４６に対して物理計算機から割り当てることのできる総リソース量に関する情報を格納する物理計算機情報テーブル（ＴＢＬ）０２００が格納されている。総リソース量は、リソース管理プログラム０１１０によって各物理計算機０１３０、０１４０から収集される。
【００２１】
メモリ０１０２は、さらに、仮想計算機の利用者からの入力に基づいて作成された仮想計算機が稼働する予定に関する情報が格納された予約情報テーブル０３００と、稼働している仮想計算機の負荷情報や、仮想計算機が動作する物理計算機の情報が格納されたＶＭ情報テーブ０４００と、仮想計算機を配置すべき物理計算機をどの物理計算機にするかを決定する際の優先度情報が格納された配置スコアテーブル０６００などの管理テーブルを有する。
【００２２】
リソース管理プログラム０１００は、リソース管理処理の過程でこれら管理テーブルに対してリード又はライト処理を行う。なお、管理テーブルはＨＤＤ０１０８に格納されていてもよい。ＣＰＵ０１０１は、ＨＤＤ０１０８から管理テーブルを読み出してメモリ０１０２へロードし、管理テーブルをＨＤＤ０１０８へ格納する。
【００２３】
物理計算機０１３０、０１４０は、リソース管理サーバ０１００と同様のハードウエア構成から構成され、ＣＰＵ０１３１、０１４１、メモリ０１３２、０１４２、リソース管理サーバ０１００とネットワーク接続するためのＮＩＣ０１３３、０１４３、共有ストレージ（共有ＨＤＤ）０１５０と接続するためのＨＤＤ  Ｉ／Ｆ０１３４、０１４４とを備える。リソース管理サーバ０１００のように、入力Ｉ／Ｆ（０１０３）、出力Ｉ／Ｆ（０１０５）を備えてもよい。なお、物理計算機の０１３０の識別子をＰ１とし、物理計算機０１４０の識別子をＰ２、これに続き第３以降の物理計算機をＰ３，Ｐ４・・・として、互いを区別する。
【００２４】
物理計算機のメモリ０１３２,０１４２にはハイパバイザ０１３５、０１４５がロードされており、一つ又は複数の仮想計算機０１３６・・・１３７、０１４６・・・０１４７の生成、そのスペック変更、その削除、その移行、物理計算機の計算機リソースを仮想計算機に割当てるといった様々な仮想計算機に関する管理処理を行う。
【００２５】
計算機リソースとは、例えば、計算機に具備されているＣＰＵ、メモリ、ハードディスクドライブ、ＮＩＣのネットワーク帯域、ディスクＩ／Ｏなどの一つ又は複数である。計算機リソースにはハードウエアリソースの他、ボリューム、ホストグループ、プール等の論理リソースも含まれる。
【００２６】
各ハイパバイザ１３５、１４５は、各々の物理計算機に一つ又は複数の仮想計算機を割り当て、これをデプロイするための管理ソフトウェアである。例えば、物理計算機Ｐ１：０１３０には仮想計算機０１３６と仮想計算機０１３７を含む複数の仮想計算機が割り当てられている。物理計算機Ｐ２：０１４０上には仮想計算機０１４６と仮想計算機０１４７とを含む複数の仮想計算機が割り当てられている。既述の管理テーブルにおける仮想計算機の割当て管理において、仮想計算機の割当て対象を物理計算機にする他、ハイパバイザにしてもよい。
【００２７】
リソース管理サーバ０１００のリソース管理プログラム０１１０は、各物理計算機Ｐ１：０１３０、Ｐ２：０１４０のハイパバイザ０１３５、０１４５と通信することによって情報の授受を行い、いつでも、仮想計算機の負荷情報やハイパバイザの負荷情報（物理計算機の負荷情報）を取得して、物理計算機情報テーブル０２００、ＶＭ情報テーブル０４００を更新することができる。
【００２８】
さらに、リソース管理サーバ０１００は、仮想計算機を利用するユーザから入力される、仮想計算機の予約情報に基づいて、予約情報テーブル０３００を設定、更新する。
【００２９】
仮想計算機０１３６、仮想計算機０１３７は、ハイパバイザ０１３５上で動作する。ハイパバイザ０１３５は、物理計算機Ｐ１：０１３０の計算機リソース、例えばＣＰＵ０１３１やメモリ０１３２を複数ある仮想計算機の各々の仮想計算機に分割して、これを割り当てる。ハイパバイザ０１３５は、各仮想計算機へ割り当てる計算機リソースの量を動的に変更することもできる。ハイパバイザ０１４５も、仮想計算機０１４６、仮想計算機０１４７に対して同様に作用する。一つの仮想計算機上にはゲストＯＳが稼働するため、仮想計算機はゲストＯＳで動作するアプリケーションソフトを利用することができる。
【００３０】
物理計算機Ｐ１：０１３０、Ｐ２：０１４０に接続されている共有ストレージ０１５０には仮想計算機のディスクイメージ０１５１が格納されている。仮想計算機のディスクイメージとは、仮想計算機に与えられる仮想ＨＤＤに格納されたイメージファイルである。共有ストレージ０１５０は、仮想ＨＤＤを設定しており、仮想ＨＤＤに格納されているオペレーティングシステムやアプリケーションをメモリ０１３２(０１４２)にロードして実行する。ＶＭディスクイメージは仮想ＨＤＤの実体になる。
【００３１】
ハイパバイザ０１３５(０１４５)が仮想計算機で使用するＶＭディスクイメージを制御することで、仮想計算機はＶＭディスクイメージを仮想的なＨＤＤとして扱うことができるになる。ＶＭディスクイメージは、ハイパバイザから見れば実際にＨＤＤに格納されている１つのファイルに相当する。１つの仮想計算機には1つ以上のＶＭディスクイメージが必要となる。例えば、物理計算機Ｐ２：０１４０上の仮想計算機０１４７は、ＨＤＤ０１５０に格納されている１つのＶＭディスクイメージ０１５１を利用する。
【００３２】
ＶＭディスクイメージ０１５１はハイパバイザによって制御される。ＶＭディスクイメージは、物理計算機Ｐ１：０１３０、Ｐ２：０１４０の両方に接続されている共有ＨＤＤ０１５０に格納されているため、管理サーバ０１００がＶＭディスクイメージに格納されているオペレーティングシステムやアプリケーションソフトウェアをロードする対象の物理計算機を変更すれば、仮想計算機が動作する物理計算機を変更、すなわち、仮想計算機を複数の物理計算機間で移動することができる。
【００３３】
管理サーバ０１００が仮想計算機を他の物理計算機で稼働できるようにする場合には、仮想計算機の移行元の物理計算機は、仮想計算機用にそのメモリにロードされ、適宜追加、更新、削除されたデータを仮想計算機の移行先の物理計算機にネットワークを介してコピーする。
【００３４】
このように、仮想計算機が動作する物理計算機を変更することは、移行元物理計算機が、移行すべき仮想計算機について使用したメモリのデータを移行先物理計算機のメモリにコピーし、両物理計算機の各ハイパバイザがデータをロードするＶＭディスクイメージを変更するといった操作を行うことによって実行される。仮想計算機の移行は、リソース管理サーバ０１００が、移行元・移行先物理計算機のハイパバイザ０１３５、０１４５に仮想計算機を移行する旨の指示を出すことによって開始される。
【００３５】
図１では物理計算機Ｐ１：１３０、Ｐ２：１４０の両方が、ＶＭディスクイメージが格納された共有ＨＤＤ１５０に接続されているが、ＶＭディスクイメージを、ネットワークを介してコピーでき、ＶＭディスクイメージのデータをロードする物理計算機を変更できるのであれば、ＶＭディスクイメージの格納されるＨＤＤは物理計算機Ｐ１：１３０、Ｐ２：１４０の両方に接続された共有ＨＤＤである必要はなく、物理計算機Ｐ１：１３０、Ｐ２：１４０に個別に接続されたＨＤＤであってよい。
【００３６】
図１では物理計算機を接続するネットワークはネットワーク０１２０のみ図示されているが、リソース管理サーバ０１００が物理計算機Ｐ１：０１３０、Ｐ２：０１４０から情報を取得するネットワークと、仮想計算機を移行するために物理計算機Ｐ１：０１３０、Ｐ２：０１４０間でデータなどをコピーするネットワークとを別々にしてもよい。
【００３７】
図２に物理計算機情報テーブル０２００の一例を示す。物理計算機情報テーブル０２００は、物理計算機Ｐ１：０１３０、物理計算機Ｐ２：０１４０など、計算機システムにおいて仮想計算機をデプロイすることができる全ての物理計算機と、それから仮想計算機に割り当てられる総計算機リソース量を記憶している。物理計算機情報テーブル０２００は、１つの物理計算機に対して１つの行を割り当てている。
【００３８】
先ず、物理計算機情報テーブル０２００の各列について説明する。物理計算機識別子欄０２０１は、各物理計算機Ｐ１：０１３０、Ｐ２：０１４０などを識別するための識別子を格納する。メモリ総容量欄０２０２は、各物理計算機が仮想計算機に割り当てることのできる総計算機リソース量を格納する。例えば、行０２１１は、物理計算機Ｐ１：０１３０の持つメモリ０１３２から、物理計算機Ｐ１：０１３０上で動作するすべての仮想計算機に割り当てることのできる総メモリ容量が「６．０ＧＢ」であることを示している。なお、仮想計算機に割り当てる計算機リソースの例としてメモリを例示しているが、メモリの代わりにＣＰＵクロック数やディスクＩ／Ｏなど仮想計算機に割り当てられるその他のリソースや、あるいはその複数の組み合わせでもよい。
【００３９】
図３は、ＶＭ情報テーブル０４００の一例を示す。ＶＭ情報テーブル０４００は、計算機システムを構成する、物理計算機Ｐ１：０１３０、物理計算機Ｐ２：１４０上で稼働している仮想計算機（０１３６、０１４６等）の負荷情報を記憶している。負荷とは仮想計算機が物理計算機に与える負荷のことである。ＶＭ情報テーブル０４００は、１つの仮想計算機に対して１つの行を割り当てる。稼働していない仮想計算機に関する情報を本テーブルに登録しなくてもよい。
【００４０】
ＶＭ識別子欄０４０１は、計算機システムを構成する複数の物理計算機上で動作する仮想計算機の識別子を格納する。図１のように、物理計算機Ｐ１：０１３０、物理計算機Ｐ２：１４０上で稼働中の仮想計算機０１３６、仮想計算機０１４６を識別するための識別子を格納する。
【００４１】
物理計算機識別子欄０４０２は、稼働中の仮想計算機がデプロイされる物理計算機を識別するための識別子を格納する。この識別子は、物理計算機情報テーブル０２００の物理計算機識別子欄０２０１に格納される識別子と同じ識別子である。行０４１１には、仮想計算機「ＶＭ１」が動作する物理計算機Ｐ１：０１３０を識別するための識別子「Ｐ１」が格納されている。
【００４２】
負荷欄０４０３は、リソース管理プログラム０１１０が計測処理０１１４によってハイパバイザ０１３５,０１４５から収集した、稼働中の仮想計算機の負荷を格納する。負荷欄０４０３に格納される値は、例えば、リソース管理サーバ０１１０がハイパバイザ０１３５、０１４５から過去一定期間に収集した複数の負荷情報の最大値である。行０４１１は、リソース管理サーバ０１００がハイパバイザ０１３５から収集した過去一定期間内の仮想計算機「ＶＭ１」のメモリ消費量の最大値が「２．０ＧＢ」であることを意味している。
【００４３】
なお、稼働中の仮想計算機の負荷の例として、過去一定期間に収集した仮想計算機のメモリ消費量の最大値を例示しているが、メモリ消費量の平均値、又は、平均値に標準偏差を加えた値などでもよい。又は、過去一定期間に実測した負荷を基に予測された、現在から一定期間将来の負荷の予測値でもよい。また、メモリの代わりにＣＰＵクロック数やディスクＩ／Ｏなど仮想計算機に割り当てられるその他のリソースやそれらの組み合わせでもよい。
【００４４】
負荷欄０４０３に格納する値は、絶対値であるが、物理計算機の持つ計算機リソース量と収集した仮想計算機の負荷の相対値でもよい。なお、負荷欄０４０３に格納する値は、１つの負荷の情報である必要はなく、過去一定期間にリソース管理サーバ０１００がハイパバイザ０１３５、０１３６などから収集した仮想計算機の複数の負荷情報の集合でもよい。
【００４５】
図４は、予約情報テーブル０３００の一例である。本テーブル０３００は、仮想計算機の稼働予定に関する情報を格納するためのものである。予約識別子欄０３０１は、ある期間にある仮想計算機を稼働させるための予約情報を識別する識別子を格納する。
【００４６】
ＶＭ識別子欄０３０２は、予約が稼働させる仮想計算機を識別するための識別子を格納する。この識別子は、ＶＭ情報テーブル０４００の仮想計算機識別子欄０４０１に格納される識別子と同じ識別子である。ＶＭ情報テーブル０４００のＶＭ識別子欄０４０１に格納されている識別子は、必ず予約情報テーブル０３００のＶＭ識別子欄に存在し、当該予約情報の開始時刻は現在時刻より前、終了時刻は現在時刻よりも後の時刻が格納されている。また、この識別子で識別される仮想計算機のディスクイメージがすでに共有ＨＤＤ０１５０に作成済みである場合、仮想計算機の識別子を格納する。
【００４７】
ＶＭ識別子欄０３０２の識別子で識別される仮想計算機のディスクイメージが未作成の場合は、リソース管理プログラム０１１０は、適当な固有の識別子を格納し、仮想計算機のディスクイメージが作成された時点で格納した識別子を仮想計算機の識別子とする。
【００４８】
開始時刻欄０３０４には、予約した仮想計算機が稼働を開始し、物理計算機からリソースが割り当てられる時刻が格納され、終了時刻欄０３０５には仮想計算機が稼働を終了し、物理計算機にリソースを返却する時刻が格納される。例えば、行０３１１の予約識別子「ＲＳＶ１」は、仮想計算機「ＶＭ１」が２０１０年４月１日から２０１０年９月１日まで稼働する予約であることを示している。
【００４９】
配備先物理計算機欄０３０３は、仮想計算機が稼働を開始した時に仮想計算機がマウントされて、稼働する物理計算機を識別するための識別子を格納する。この識別子は、物理計算機情報テーブル０２００の物理計算機識別子欄０２０１に格納される識別子と同じである。例えば、行０３１１は、仮想計算機ＶＭ１が稼働を開始する際に、物理計算機Ｐ１：０１３０上で動作し、物理計算機Ｐ１：０１３０から計算機リソースを割り当てられることを示している。この配備先物理計算機欄０３０３の識別子は、仮想計算機が稼働を開始するまで、適宜変更されることが可能である。
【００５０】
仮想計算機が稼働を開始するまでは仮想計算機が動作する物理計算機が決定されてなくてもよい。決定されていない場合は、配備先物理計算機欄０３０３には「ｎｕｌｌ」が格納されればよい(行０３１４)。稼働を開始した仮想計算機は複数の物理計算機間を移行可能であるため、仮想計算機が稼働を開始した後は、予約情報テーブル０４００のＶＭ識別子欄０３０２と配備先物理計算機欄０３０３の組み合わせと、ＶＭ情報テーブル０４００のＶＭ識別子欄０４０１と物理計算機識別子欄０４０２の組み合わせが異なることがあってもよい。
【００５１】
予定負荷欄０３０６には、仮想計算機が稼働したときに物理計算機から仮想計算機に割り当てる計算機リソースの予測値を格納する。予定負荷欄０３０６に格納する値は、例えば、仮想計算機の利用者が、稼働する予定の仮想計算機の負荷を予測して入力した値である。予定負荷欄０３０６に格納する値として、ＶＭ情報テーブル０４００の負荷０４０３に入る値と同様、仮想計算機が負荷の例としてメモリ消費量が例示されているが、メモリの代わりにＣＰＵクロック数やディスクＩ／Ｏなど仮想計算機に割り当てられるその他のリソースやそれらの組み合わせでもよい。
【００５２】
また、予定負荷０３０６に格納する値は、絶対値である他、物理計算機の持つ計算機リソース量との相対値でもよい。予定負荷０３０６に格納する値は、１つの値である必要はなく、複数の値の集合でもよい。例えば、午前９時から午後９時までは２．０Ｇ、午後９時から午前９時までは１．０Ｇなどである。
【００５３】
例えば、行０３１１は、仮想計算機「ＶＭ１」が２０１０年４月１日から物理計算機「Ｐ１」上で動作し、物理計算機「Ｐ１」の持つメモリ総容量のうち、２．０ＧＢが割り当てられ、２０１０年９月１日に割り当てられたメモリ容量である２．０ＧＢ分を物理計算機「Ｐ１」に返却することを意味している。
【００５４】
リソース管理プログラム０１１０は、予約された仮想計算機のＶＭ識別子欄０３０２に格納された識別子が稼働中の仮想計算機の識別子と同じであることを判定すると、予約された仮想計算機の開始時刻と稼働中の仮想計算機の終了時刻とを比較して、前者が後者以前の時刻である場合には、予約情報入力時にエラーを表示するか、或いは、予約する仮想計算機のＶＭ識別子として、稼働中の仮想計算機の識別子と異なる値を入力するように管理者に促すようにしてもよい。
【００５５】
図２１は、リソース管理プログラム０１１０が出力Ｉ／Ｆを介してディスプレイ０１０６に表示する、仮想計算機の予約情報入力画面である。仮想計算機を必ずある特定の物理計算機で稼働させたい場合には、予約情報入力画面を介して仮想計算機の配置先物理計算機が指定されるようにしてもよい。
【００５６】
図４では、仮想計算機の配置先を物理計算機として説明したが、これをハイパバイザにしてもよい。ユーザは複数のハイパバイザをグループ化してリソースグループを仮想計算機の配備先としてもよい。このグループ化により、仮想計算機が最適に配置される物理計算機の範囲を制限できる。
【００５７】
次に、稼働予定である仮想計算機を物理計算機に配置する上で、最適な配置形態を実現するための処理を説明する。図５は、その処理を実施するためのフローチャートである。リソース管理プログラム０１１０が、図５のフローチャートを実行する。
【００５８】
「最適化」とは、「ポリシー」に合致するように、仮想計算機を配置することをいう。ポリシーはポリシーファイルとして、管理ユーザによって、リソース管理プログラム０１１０に設定される。ポリシーとして、例えば、既述のように、複数の物理計算機の間で、仮想計算機の負荷が平準化するように、複数の物理計算機に複数の仮想計算機を配置することがある。負荷の平準化を、仮想計算機が物理計算機に及ぼす負荷値に基づいて実行する他、或いは、物理計算機の計算機リソースの余力に基づいて実行してもよい。その他のポリシーとして、計算機システムの省電力化の観点から、一部の物理計算機に複数の仮想計算機を片寄せし、他の物理計算機の消費電力を低減させようとするものがある。さらに、他のポリシーとして、計算機システムの信頼性を確保する観点から、一定以上離れた複数の物理計算機に仮想計算機をデプロイすることもある。
【００５９】
次に、図５のフローチャートを詳細に説明する。最初に、リソース管理プログラム０１１０は、任意の時刻にステップＳ０５０１を実行する。任意の時刻とは、例えば、リソース管理サーバ０１００に利用者が設定した時刻などである。ステップＳ０５０１は、配置計算処理０１１２によって実行され、図２の物理計算機情報テーブル０２００に格納された複数の物理計算機情報をすべて参照するまで、ステップＳ０５０４までの処理を繰返し実施する。
【００６０】
ステップＳ０５０２は、参照される物理計算機情報を１つ選択する。具体的には物理計算機情報テーブル０２００に格納された物理計算機情報の１つを選択し、物理計算機情報テーブル０２００の1行分のデータをメモリ０１０２に格納する。
【００６１】
ステップＳ０５０３は、図３のＶＭ情報テーブル０４００を参照し、ステップＳ０５０２で選択した物理計算機情報の物理計算機識別子０２０１の識別子と物理計算機識別子欄０４０２の識別子が一致するＶＭ識別子情報をＶＭ情報テーブル０４００からすべて抽出する。
【００６２】
ステップＳ０５０４は、ステップＳ０５０２で選択した物理計算機情報のメモリ総容量欄０２０２の値と、ステップＳ０５０３で抽出した全ＶＭ情報の負荷欄０４０３の値と、を用いて物理計算機の配置スコアを計算し、配置スコアテーブル０６００に記録する。
【００６３】
配置スコアとは、仮想計算機の最適な配置を実現するために、各物理計算機において、仮想計算機を配備できる優先度の高さに関する値である。配置スコアの値が大きい物理計算機ほど、仮想計算機を搭載する上での優先度が高いと判定される。例えば、リソース管理サーバ０１００は、仮想計算機を物理計算機に最適に配置する指標として、計算機システムを構成する複数の物理計算機相互のメモリの空容量を複数の物理計算機の間で平準化することを選択する。この観点から、メモリの空容量が大きい物理計算機ほど稼働予定の仮想計算機を配備するのに適したものとなる。そこで、物理計算機の空容量が物理計算機の配置スコアになる。
【００６４】
図２、図３に示すように、ステップＳ０５０２で選択された物理計算機情報が行０２１１であった場合、物理計算機識別子欄０２０１は「Ｐ１」であり、メモリ総容量欄に格納された値は「６.０ＧＢ」である。したがって、ステップＳ０５０３でＶＭ情報テーブル０４００から抽出するＶＭ情報は、物理計算機識別子欄０４０２の識別子が「Ｐ１」と一致する行０４１１のものである。行０４１１の負荷欄０４０３に格納された値は「２．０ＧＢ」であるため、物理計算機「Ｐ１」の空きメモリ容量は「６．０−２．０＝４．０ＧＢ」となる。したがって、物理計算機「Ｐ１」の配置スコアは４．０となる。
【００６５】
ステップＳ０５０４が配置スコアテーブル０６００に記録したデータを図６に示す。配置スコアテーブル０６００は、物理計算機識別子欄０６０１、配置スコア欄０６０２から構成される。物理計算機識別子欄０６０１は、ステップＳ０５０２で選択した、物理計算機情報０２００の物理計算機識別子欄０２０１の識別子を格納する。配置スコア欄０６０２は、ステップＳ０５０４で計算した、各物理計算機の配置スコアを格納する。図２、図３に示す例では、既述上述したように物理計算機「Ｐ１」の配置スコアは「４．０」となるため、配置スコアテーブル０６００には、行０６１１に示すように、物理計算機識別子欄０６０１に識別子「Ｐ１」、配置スコア欄０６０２に配置スコア「４．０」が格納される。
【００６６】
図５のステップＳ０５０５は、繰返しステップの先頭であるＳ０５０１に対応する終端ステップであり、物理計算機情報テーブル０２００に格納された全ての物理計算機情報を参照するまで、Ｓ０５０２−Ｓ０５０４を繰り返し実行する。
【００６７】
ステップＳ０５０６は、図６の配置スコアテーブル０６００と、図４の予約情報テーブル０３００とに格納されている情報に基づいて、予約情報テーブル０３００の配備先物理計算機欄０３０３に格納された、物理計算機の識別子を読み込んで、稼働予定の仮想計算機に計算機リソースを割り当てる物理計算機を決定する。ステップＳ０５０６の詳細は、次の図７のフローチャートに示されている。
【００６８】
図７は、稼働予定の仮想計算機を配置する先の物理計算機を決定するための処理（図５のＳ０５０６）を達成するフローチャートである。このフローチャートは、管理サーバ０１００が、計算機システムに存在する複数の物理計算機に対して仮想計算機の（再）配置を実行する開始時刻、すなわち、「予定時刻」から「一定期間」毎に、稼働予定の仮想計算機を複数の物理計算機の中からどの物理計算機に配置することが最適かを決定するための処理の一例である。
【００６９】
ステップＳ０７０１は、管理サーバ０１００が「（再配置実行）予定時刻」、「一定期間」の情報を管理者ユーザからの入力によって取得する。「予定時刻」とは、図５の処理が完了する時刻以降の任意の時刻であればよい。「一定期間」とは、「予定時刻」から次回の「予定時刻」までの間の所定期間であり、例えば、一週間、或いは一カ月などである。
【００７０】
ステップＳ０７０２は、図４の予約情報テーブル０３００を参照して、開始時刻欄０３０４に格納された時刻が、「予定時刻」から「一定期間」以内である行の予約情報を全て抽出する。例えば、ステップＳ０７０１において、リソース管理プログラム０１１０が、「予定時刻」を「２０１０年５月１日０時」、一定期間を「１カ月」として取得すると、ステップＳ０７０２は、図４の予約情報テーブル０３００を参照して、開始時刻欄０３０４に格納された時刻が２０１０年５月１日０時から２０１０年５月３１日の間である行０３１３を抽出する。
【００７１】
ステップＳ０７０３は、ステップＳ０７０２で抽出した予約情報を全て参照するまで、ステップＳ０７０７までの処理を繰返し実施する。ステップＳ０７０４は、抽出した予約情報を１つ選択する。
ステップＳ０７０５は、図６に示す配置スコアテーブル０６００に基づいて稼働予定の仮想計算機の配置を決定し、その結果に基づいて予約情報テーブルの配備先物理計算機欄を更新する。具体的には、ステップＳ０７０３で選択した予約情報の配備先物理計算機欄の識別子を、配置スコアテーブル０６００で最もスコアの大きい物理計算機の識別子になるように予約情報テーブルを更新する。
【００７２】
管理プログラム０１１０が、配置スコアテーブル０６００（図６）の配置スコア欄０６０２を参照すると、最も配置スコアの大きい行は０６１２であり、ステップＳ０７０４で選択した予約情報が予約情報テーブル０３００(図４)の行０３１３であった場合、ＶＭ識別子欄０３０２が示す稼働予定の仮想計算機「ＶＭ３」を配備し、動作させるべき物理計算機を、行０６１２の物理計算機識別子欄０６０１が示す物理計算機「Ｐ２」であると判定する。行０３１３の配備先物理計算機識別子０３０３は「Ｐ１」となっているが、管理プログラム０１１０は、配備先物理計算機識別子０３０３を識別子「Ｐ２」に更新する。なお、行０３１３の配備先物理計算機識別子０３０３が「ｎｕｌｌ」であった場合も、識別子「Ｐ２」に更新する。
【００７３】
ステップＳ０７０６は、ステップＳ０７０４で選択した予約情報のＶＭ識別子０３０２が示す稼働予定の仮想計算機が、予定負荷欄０３０６で示される負荷を、ステップＳ０７０５で決定した物理計算機から計算機リソースとして割り当てられた場合での当該物理計算機の配置スコアを再計算し、配置スコアテーブル０６００に再計算した配置スコアを更新登録する。
【００７４】
図４、図６に即して説明すると、ステップＳ０７０５が決定した、稼働予定の仮想計算機が動作する物理計算機は「Ｐ２」であり、ステップＳ０７０４が選択した予約情報が予約情報テーブル０３００の行０３１３であった場合、配置スコアテーブル０６００の物理計算機「Ｐ２」の配置スコアを示す行０６１２の配置スコア欄０６０２の更新前の値は「７．０」であり、行０３１３のＶＭ識別子欄０３０２は「ＶＭ３」であり、予定負荷欄０３０６は「３．０ＧＢ」である。したがって、物理計算機「Ｐ２」のメモリの空容量は、仮想計算機「ＶＭ３」が新たに割り当てられた場合４．０Ｇ（７．０ＧＢ−３．０ＧＢ）になるため、配置スコアテーブル０６００の行０６１２の配置スコア欄０６０２の値は４．０Ｇに更新される。
【００７５】
ステップＳ０７０７は、繰返しステップの先頭であるＳ０７０３に対応する終端ステップである。管理プログラム０１１０は、ステップＳ０７０２で抽出した予約情報をすべて参照するまで、ステップＳ０７０７まで、繰返し上述ステップを実行する。
【００７６】
なお、予定負荷が最も大きい配置スコアを上回る場合には、リソース管理プログラム０１１０は、稼働予定に係る仮想計算機を物理計算機に配置できない旨を表示する。
【００７７】
図５及び図７のフローチャートに示す処理によって、管理プログラム０１１０は、配備処理０１１５(図１)として、予約情報テーブル０３００の配備先物理計算機欄０３０３に格納された識別子で識別される物理計算機に、ＶＭ識別子欄０３０２で識別される仮想計算機を、予約情報テーブル０８００Ｃの開始時刻欄０３０４に格納された時刻に、目的の物理計算機に配備する。これによって、稼働予定の仮想計算機の最適配置が実現される。
【００７８】
すなわち、図２、図３、図４に即して具体的に説明すると、管理サーバ０１００は、予約情報テーブル０３００の行０３１３の配備先物理計算機欄の識別子を物理計算機「Ｐ１」から物理計算機「Ｐ２」に変更し、仮想計算機「ＶＭ３」を２０１０年５月５日から物理計算機「Ｐ２」上で稼働を開始させることによって、２０１０年５月５日から２０１０年９月１日までの間、物理計算機「Ｐ１」、物理計算機「Ｐ２」の空容量をともに４．０ＧＢにし、そして、これによって、計算機システムを構成する複数の物理計算機の空容量を平準化させる、仮想計算機の最適配置を実現する。
【００７９】
なお、予約情報テーブル０３００の行数がｎであると、図７のステップＳ０７０３からステップＳ０７０７の繰返し処理が仮想計算機の配置を決定する際、での仮想計算機の配置を決定する順序はｎの階乗通りある。そこで、図７の処理は、仮想計算機の配置決定順序を１通りに固定して仮想計算機の配置の決定処理を実行している。しかしながら、図７の処理が、ｍ通り(ｍ≦ｎの階乗)の順序で仮想計算機の配置の決定の処理を繰り返し実施し、各順序で決定された、稼働予定仮想計算機の配置における全物理計算機の空容量の標準偏差を記憶し、標準偏差が最も小さいパターンを構成する、稼働予定仮想計算機の配置を採用するように変更してもよい。
【００８０】
以上説明したように、既述の実施例における計算機システムは、複数の仮想計算機の最適配置を決定する際の複数の仮想計算機が搭載される複数の物理計算機の負荷バランスの調整を、現在稼働していないが、稼働予定の仮想計算機を含めて実行するため、稼働予定の仮想計算機が実際に稼働した時点で、複数の仮想計算機の最適配置処理を繰り返さなくても、システム全体の負荷バランスを最適に調整できる。
【００８１】
さらに、稼働中の仮想計算機の負荷と、物理計算機が仮想計算機に割り当て可能な総計算機リソース量とに基づいて、稼働中の仮想計算機の移行を伴うことなく、複数の仮想計算機の最適配置処理を実現するため、複数の物理計算機間での仮想計算機の移行に伴うネットワークに与える負荷の増大化が防止される。
【００８２】
物理計算機に搭載され、稼働している仮想計算機を複数の物理計算機間で移行する場合には、仮想計算機が移行先する物理計算機に、仮想計算機に割当てられていたメモリ等の情報を移行元物理計算機からコピーし、移行先物理計算機はコピーした情報を元に新しい仮想計算機を作成し、コピー元の仮想計算機を停止させなければならない。このとき、コピーが完了する前にコピー元のメモリの格納情報が更新されると、移行元物理計算機は更新された情報を再度移行先物理計算機にコピーする必要がある。したがって、コピーすべ情報量が多いと、仮想計算機の移行に長い時間を要することになる。既述の実施形態に係る計算機システムは、稼働中の仮想計算機の移行を伴わないため、このような問題を解消する。
【００８３】
なお、管理サーバは、稼働予定の仮想計算機を、計算機システムを構成する全ての物理計算機に対して搭載でき得るとして、仮想計算機の最適配置を実現したが、稼働予定の仮想計算機を配備できる物理計算機を制限してもよい。このような物理計算機は、予約画面（図２１）に登録されることができる。なお、予約画面において、特定の物理計算に配置されることが必要で、最適配置の対象にされたくない仮想計算機については、この仮想計算機と物理計算機の組み合わせを、管理ユーザは予約画面に登録することができる。
【００８４】
既述の実施形態では、複数の仮想サーバの最適配置の開始契機を定期的に生じるものとして説明したが、これを手動での契機、予約の追加、予約の変更（開始時期、終了時期、負荷）、予約の削除、仮想計算機の削除でもよい。
【００８５】
図７のＳ０７０１では、「一定期間」が一月として説明されたが、これは一例である。「一定期間」が長いと、稼働予定の仮想計算機が稼働を開始するまで、「最適配置」が長い間実現されないことになり、一方で、この期間が短いと、仮想計算機の再配置処理が頻繁に実施されなければならなくなる。そこで、「一定期間」は計算機システムの運用上妥当な範囲に設定される。
【００８６】
次に本発明の第２の実施形態について説明する。この実施形態の既述の第１の実施形態と相違する点は、管理サーバは、計算機システムに属する夫々の物理計算機にその負荷に関する目標値を設定し、稼働予定の仮想計算機を最適配置にするだけでは目標値を達成できない場合に、稼働予定の仮想計算機の最適配置を実現する際に、稼働中の仮想計算機の再配置をも実施、即ち、稼働中の仮想計算機の移転を行って、目標値を達成しようとする点である。但し、この実施形態に係る計算機システムは、稼働中の仮想計算機が移行する頻度や数を、下記のとおり極力低減するようにした。
【００８７】
図８（Ａ）−図８（Ｃ）に、第２の実施形態における、物理計算機情報テーブル０８００Ａ（図８（Ａ））、ＶＭ情報テーブル０８００Ｂ（図８（Ｂ））、予約情報テーブル０８００Ｃ（図８（Ｃ））を示す。物理計算機情報テーブル０８００Ａは、第１の実施形態における物理計算機情報テーブル０２００と同じ構造を有する。ＶＭ情報テーブル０８００Ｂは、第１の実施形態におけるＶＭ情報テーブル０４００と同じ構造を有する。予約情報テーブル０８００Ｃは第１の実施形態の予約情報テーブル０３００と同じ構造を有する。但し、実施例１の管理テーブルに登録されているデータと図８（Ａ）−図８（Ｃ）に示す管理テーブルに登録されているデータとが異なることがあることは勿論である。
【００８８】
図９は、第２の実施形態における、仮想計算機を複数の物理計算機に最適に配置するための処理のフローチャートを示す。図１で示したリソース管理プログラム０１１０が、図９のフローチャートを実行する。
【００８９】
図９に示す処理は、図５及び図７のフローチャートによって、稼働予定の仮想計算機の決定された最適配置を前提にしながら、そして、稼働中の仮想計算機を含めて、計算機システムに存在する複数の仮想計算機の最適配置が維持できるか否かを判定するためのものである。そして、リソース管理プログラム０１１０は、この判定を肯定する場合には仮想計算機の配置処理を終了し、この判定を否定する場合には稼働中の仮想計算機と稼働予定の仮想計算機とも、複数の物理計算機に対する配置を変更する。
【００９０】
次に、図９のフローチャートを具体的に説明する。リソース管理プログラム０１１０は、リソース管理サーバ０１００のユーザから設定された任意の時刻にステップＳ０９０１に係る稼働予定仮想計算機の最適配置処理を実行する。ステップＳ０９０１は、既述の図５及び図７のフローチャートに相当する。
【００９１】
ステップＳ０９０２は、ステップＳ０９０１において決定された、稼働予定の仮想計算機を目的の物理計算機に配置するだけで、複数の物理計算機間での負荷のバランスを改善できるなど、仮想計算機の最適配置における目標を達成できるかどうかを判定する。ステップＳ０９０２がこの判定を肯定すると、仮想計算機の最適配置のための処理を終了する。
【００９２】
この後、配備処理０１１５(図１)が、予約情報テーブル０８００Ｃ（図８（Ｃ））の配備先物理計算機欄０３０３に格納された識別子によって識別される物理計算機に、ＶＭ識別子欄０３０２に格納された識別子によって識別された予約された仮想計算機を、開始時刻欄０３０４に格納された時刻に設定する。一方、ステップＳ０９０２が仮想計算機の最適配置における目標を達成できないと判定すると、ステップＳ０９０３へ移行する。
【００９３】
計算機システムに属する複数の物理計算機間でメモリの空容量が平準化されるための、仮想計算機の最適配置の目標値を例示すると、例えば、次のようなものになる。図７におけるステップＳ０７０１における、「予定時刻」（例：２０１０年５月１日０時）から「一定期間」(例：一月)以内において、各物理計算機の空メモリ容量と、全ての物理計算機の空メモリ容量の平均値との差を、全ての物理計算機において０．５ＧＢ以内とすることである。なお、図８（Ａ）−図８（Ｃ）に示す各テーブルの状態は、ステップＳ０９０１を実行した後の状態のものである。
【００９４】
仮に、現在が２０１０年５月２日とすると、図８（Ａ）−図８（Ｃ）は、物理計算機「Ｐ１」上で、負荷が「２．０ＧＢ」の仮想計算機「ＶＭ１」と、負荷が「１．０ＧＢ」の仮想計算機「ＶＭ３」が稼働しており、物理計算機「Ｐ１」のメモリ総容量は「６．０ＧＢ」であることを示している。この場合、物理計算機「Ｐ１」の空メモリ容量は「６．０−２．０−１．０＝３．０ＧＢ」である。
【００９５】
物理計算機「Ｐ２」上では負荷が「２．０ＧＢ」の仮想計算機「ＶＭ２」が稼働しており、さらに、再配置時刻（２０１０年５月１日０時）から一定期間（一月）以内である２０１０年５月５日に稼働を開始する仮想計算機「ＶＭ４」が予定負荷「１．０ＧＢ」の下で稼働する予定であり、物理計算機「Ｐ２」のメモリ総容量は「８．０ＧＢ」である。そのため、２０１０年５月５日には、物理計算機「Ｐ２」の空メモリ容量は「８．０−２．０−１．０＝５.０ＧＢ」になる。したがって、物理計算機「Ｐ１」と物理計算機「Ｐ２」の空メモリ容量の平均は「（３．０＋５．０）÷２＝４．０ＧＢ」であり、「各々の物理計算機の空容量と、全ての物理計算機のメモリ空容量の平均値との差が、全ての物理計算機において０．５ＧＢ以内である」という目標が達成されない。そこで、ステップＳ０９０３が実行される。
【００９６】
ステップＳ０９０３は、稼働中の仮想計算機と稼働予定の仮想計算機とを含めた複数の仮想計算機の最適配置を決定するための演算処理を実行する。この際、複数の物理計算機間を移行される、稼働中の仮想計算機の数が少なくなるようにする。リソース管理プログラム０１１０は、演算結果に基づき、他の物理計算機に移行されるべき稼働中の仮想計算機に対して、ＶＭ情報テーブル０８００Ｂの物理計算機識別子０４０２の識別子を、移行先物理計算機の識別子に変更する。さらに、稼働される予定の仮想計算機について、予約情報テーブル０８００Ｃの配備先物理計算機０３０３の識別子を、ステップＳ０９０３において再決定された、稼働予定仮想計算機の配置先物理計算機の識別子に変更する。ステップＳ０９０３の詳細なフローチャートを後述の図１０において説明する。
【００９７】
図２３に、仮想計算機の最適配置処理によって得られた、複数の仮想計算機の配置形態に相当する管理テーブルを示す。（Ａ）は物理計算機構成テーブルであり、（Ｂ）は最適配置後の仮想計算機に係るＶＭ情報テーブルであり、（Ｃ）は最適配置後の稼働が予約された仮想計算機の予約情報テーブルである。図８の管理テーブルと比較すると、現在稼働中の仮想計算機（ＶＭ３）がＰ１で識別される物理計算機からＰ２で識別される物理計算機に移行されたことが分かる。
【００９８】
ステップＳ０９０４は、計算機システムにおける仮想計算機の配置を、ステップＳ０９０３で決定した仮想計算機の配置に変更するか否かを判定する。即ち、管理プログラム０１００が、ステップＳ０９０１において決定された仮想計算機の配置の形態と、ステップＳ０９０３において決定された仮想計算機の配置の形態とを比較し、ステップＳ０９０３において決定された配置の方が目標に近いか否かを判定する。ステップＳ０９０３で決定した配置の方がより仮想計算機の最適配置目標に近い場合はステップＳ０９０５に移行する。ステップＳ０９０１で決定した配置の方が仮想計算機の最適配置目標に近い場合は、ステップＳ０９０６に移行する。ステップＳ０９０６は、稼働予定の仮想計算機の配置と稼働中の仮想計算機の配置とを、ステップＳ０９０３の実行前の状態に戻す。
【００９９】
ステップＳ０９０４は、「計算機システムに属する全物理計算機のメモリの空容量が平準化されるようにした複数の仮想計算機の配置」を目標としているため、ステップＳ０９０１によって決定された、稼働中の仮想計算機の再配置を伴うことなく、稼働予定の仮想計算機の最適配置後の全ての物理計算機についてのメモリの空容量の標準偏差と、ステップＳ０９０３で決定された、稼働中の仮想計算機の再配置も許容した状態での全ての物理計算機についてのメモリの空容量の標準偏差と、を比較し、後者の方が前者より小さければステップＳ０９０５に移行し、その逆である場合にはＳ０９０６に移行する。両者が同じである場合には、どちらかに移行する。
【０１００】
なお、ステップＳ０９０４において、管理プログラム０１１０は、ステップＳ０９０１で決定された、仮想計算機の配置と、ステップＳ０９０３で決定された、仮想計算機の配置とを比較しているが、ステップＳ０９０３で決定された、仮想計算機の配置が、ステップＳ０９０２と同様に、仮想計算機の最適な配置に係る目標を達成しているかどうかを判断してもよい。
【０１０１】
ステップＳ０９０５は、リソース管理プログラム０１１０のＶＭ移行処理０１１３（図１）を実行し、稼働中の仮想計算機を、ステップＳ０９０３で決定された、仮想計算機の配置になるように移行させる。この移行処理を、ステップＳ０７０１において取得した「再配置実行予定時刻」に開始する。
【０１０２】
ステップＳ０９０６は、ステップＳ０９０３で変更された、ＶＭ情報テーブル０８００Ｂの物理計算機識別子０４０２と、予約情報テーブル０８００Ｃの配備先物理計算機の識別子０３０３を、ステップＳ０９０３を実行する前の状態に戻す。
【０１０３】
図１０は、図９のステップＳ０９０３で実行される、稼働中の仮想計算機と稼働予定の仮想計算機を最適な形態で物理計算機に配置するための案を作成する処理に係るフローチャートである。このフローチャートはリソース管理プログラム０１１０によって実行される。
【０１０４】
ステップＳ１００１は、仮想計算機の最適配置を実現するための各物理計算機について、境界条件、例えば、「容量条件」を決定する。「容量条件」とは、各物理計算機に稼働している仮想計算機の配置を変更するか否かの判断をする際に、リソース管理プログラム０１１０が考慮する、物理計算機のメモリの容量に関する指標である。
【０１０５】
リソース管理プログラム０１１０は、例えば、複数ある物理計算機の各メモリの空容量を平準化することを狙って、複数の仮想計算機の再配置を実行しようとする時刻から一定期間内において、各々の物理計算機の空容量が、全ての物理計算機の空容量の平均値以上であることを容量条件として設定する。
【０１０６】
図８に例示する形態では、ステップＳ０９０２と同じように、再配置実行時刻から一定期間内における、全ての物理計算機の空容量の平均が４．０ＧＢであるので各物理計算機の容量条件は「空容量が４．０ＧＢ以上」になる。稼働中の仮想計算機を仮に移行しなかった場合に、この条件を満たさない時のみ、リソース管理プログラムは、配置スコアに基づいて稼働中の仮想計算機の移行先となる物理計算機を決定する。
【０１０７】
ステップＳ１００２は、ＶＭ情報テーブル０８００Ｂに格納された個々の仮想計算機情報をすべて参照するまで、ステップＳ１００９までの処理を繰返し実施する。ステップＳ１００３は、参照するＶＭ情報を１つ選択する。
【０１０８】
ステップＳ１００４は、繰返し処理ステップＳ１００２からステップＳ１００９において、既に配置が決定されている稼働中の仮想計算機のＶＭ情報を用いて、ステップＳ１００３で選択した仮想計算機が動作している物理計算機の負荷を計算する。
【０１０９】
例えば、ステップＳ１００２からステップＳ１００９の処理が２度実行され、ＶＭ情報テーブル０８００ＢのＶＭ識別子が「ＶＭ１」の仮想計算機の配置が物理計算機「Ｐ１」に、ＶＭ識別子が「ＶＭ２」の仮想計算機の配置が物理計算機「Ｐ２」に決定され、それぞれの物理計算機の識別子「Ｐ１」「Ｐ２」がＶＭ情報テーブル０８００Ｂの物理計算機識別子欄０４０２に格納されているとする。ステップＳ１００３でＶＭ情報テーブル０８００Ｂから選択された稼働中の仮想計算機は、ＶＭ識別子が「ＶＭ３」で識別された仮想計算機とする。
【０１１０】
「ＶＭ３」が動作する物理計算機は、行０４１３の物理計算機識別子欄０４１３で識別される物理計算機「Ｐ１」である。物理計算機「Ｐ１」には、仮想計算機「ＶＭ１」が配置されることが決定しており、ＶＭ情報テーブル０８００Ｂの行０４１１の負荷欄０４０３を参照するとその負荷は「２．０ＧＢ」である。したがって、ステップＳ１００４における、物理計算機「Ｐ１」の負荷は２．０ＧＢとなる。
【０１１１】
ステップＳ１００５は、ステップＳ１００３で選択された、稼働中の仮想計算機を現在の物理計算機から他の物理計算機に移行しないこととした場合に、選択した仮想計算機が現在動作している物理計算機の負荷が、ステップＳ１００１で設定した容量条件を満たすかどうかを判断するステップである。容量条件が満たさなければステップＳ１００７に移行し、容量条件が満たされればステップＳ１００９に移行する。
【０１１２】
例えば、ステップＳ１００１において、容量条件として「各物理計算機の空き容量が４．０ＧＢ以上」と設定され、ステップＳ１００３でＶＭ情報テーブル０８００Ｂから選択した、稼働中の仮想計算機は、ＶＭ識別子が「ＶＭ３」で識別される仮想計算機とする。
【０１１３】
「ＶＭ３」が実装されている物理計算機「Ｐ１」のメモリ総容量は、物理計算機情報テーブル０８００Ａによれば、メモリ総容量欄０２０２にあるように、６．０ＧＢであり、仮想計算機「ＶＭ３」の負荷は、ＶＭ情報テーブル０８００Ｂの負荷欄０４０３によれば、１．０ＧＢである。ステップＳ１００４において、物理計算機「Ｐ１」の算出された負荷が２．０ＧＢである。仮想計算機「ＶＭ３」がこの物理計算機から他の物理計算機に移行されない場合、物理計算機「Ｐ１」のメモリ空容量は６．０−２．０−１．０＝３．０ＧＢとなり、容量条件「空きメモリ容量が４．０ＧＢ以上」未満であるため、処理はステップＳ１００７に移行される。
【０１１４】
ステップＳ１００７は、ステップＳ１００２からステップＳ１００９の繰り返し処理によって、既に、物理計算機に対する配置が決定された稼働中の仮想計算機の負荷を用いて、複数の物理計算機の配置スコアを決定する。配置スコアの考え方は既述の図５におけるステップＳ０５０４と同じである。
【０１１５】
ステップＳ１００８は、ステップＳ１００７で算出された配置スコアに基づいて、ステップＳ１００３で選択された仮想計算機が現在搭載されている物理計算機から移行されて搭載されるべき他の物理計算機を決定し、ＶＭ情報テーブル０８００Ｂの選択された仮想計算機が存在する行の物理計算機識別子欄０４０２に前記他の物理計算機の識別子を格納する。
【０１１６】
例えば、第１の実施形態と同様に、メモリの空容量を各物理計算機の配置スコアとする。ここで、ステップＳ１００７が実行される時に、既に、ステップＳ１００２からステップＳ１００９の繰り返し処理が２度実行され、ＶＭ情報テーブル０８００ＢでＶＭ識別子が「ＶＭ１」で識別される仮想計算機が物理計算機「Ｐ１」に配置されること、ＶＭ識別子が「ＶＭ２」で識別される仮想計算機が物理計算機「Ｐ２」に配置されること、がそれぞれ決定され、これらの識別子「Ｐ１」「Ｐ２」がＶＭ情報テーブル０８００Ｂの物理計算機識別子欄０４０２に格納されているとする。
【０１１７】
図８（Ａ）−図８（Ｃ）に即して説明すると、物理計算機「Ｐ１」の空容量は６．０ＧＢ（メモリ総容量）−２．０ＧＢ（仮想計算機の負荷）＝４．０ＧＢであり、物理計算機Ｐ２の空容量は８．０−２．０＝６．０ＧＢとなり、配置スコアはそれぞれ４．０、６．０となる。したがって、ステップＳ１００８は、ステップＳ１００３で選択された仮想計算機（ＶＭ３）の配置を、配置スコアの最も大きい物理計算機「Ｐ２」に決定し、ＶＭ情報テーブル０８００Ｂの仮想計算機（ＶＭ３）を示す行０４１３の物理計算機識別子欄０４０２の識別子を「Ｐ１」から「Ｐ２」に変更登録する。
【０１１８】
なお、ステップＳ１００３で選択された仮想計算機が稼働している物理計算機の配置スコアが最も大きい場合には、当該仮想計算機は他の計算機に移行されない。但し、図１０のフローチャート（Ｓ０９０３）は、ステップＳ０９０２の判定が否定されて実行されるものであるから、少なくとも一つの稼働中の仮想計算機は現在稼働中の計算機からリソース容量に最も余裕がある他の物理計算機に移行される。
【０１１９】
ステップＳ１００９は、繰返しステップの先頭であるＳ１００２に対応する終端ステップである。リソース管理プログラムＳ０１１０がＶＭ情報テーブル０８００Ｂに格納された全ての仮想計算機情報を参照するまで、Ｓ１００２−Ｓ１００９を繰り返し実行する。
【０１２０】
ステップＳ１０１０は、ステップＳ１００２からステップＳ１００９で決定された、稼働中の仮想計算機の配置に基づいて、稼働予定の仮想計算機の再配置を行うステップであり、図５のフローチャートと同一である。
【０１２１】
図２２は、ステップＳ０９０３（図１０のフローチャート）に対応する、入力画面である。管理ユーザが、稼働予約に係る仮想計算機を含めた稼働中の仮想計算機の最適配置案の出力を入力画面に要求すると、ステップＳ０９０３は最適配置案作成処理を続行する。
【０１２２】
図２２は、物理計算機（Ｐ１）で稼働中の仮想計算機（ＶＭ１）を他の物理計算機（Ｐ２）に移行すること、そして、稼働予定の仮想計算機（ＶＭ３）を当初の予定物理計算機（Ｐ１）から他の物理計算機（Ｐ３）に移行することを、最適配置として出力していることを示している。なお、後者はステップＳ１０１０によって決定された最適配置である。
【０１２３】
図１０は、稼働中の仮想計算機の最適配置と稼働予定の仮想計算機の最適配置とを同時に決定する方法の一例である。ＶＭ情報テーブル０８００Ｂの行数がｎであった場合、リソース管理プログラム０１１０が、図１０のステップＳ１００２からステップＳ１００９を繰返して仮想計算機の配置を決定する際、その配置の決定順序にはｎの階乗通りある。図１０は、仮想計算機の配置決定のための順序を、１通りのものとして、説明したが、リソース管理プログラム０１１０がｍ通り(ｍ≦ｎの階乗)の順序で仮想計算機の配置パターンを検討し、全物理計算機の空容量の標準偏差が最も小さいパターンの配置を最適配置としてもよい。
【０１２４】
既述したように、リソース管理プログラム０１１０は、予定時刻から一定期間毎に、仮想計算機の最適配置を実現するために、稼働予定の仮想計算機の配置を決定するが、それだけでは、稼働中の仮想計算機を含めた複数の仮想計算機の最適配置での目標を達成できなかった場合に、稼働中の仮想計算機を移行することによって、複数の仮想計算機全体の最適配置を実現する。
【０１２５】
この際、リソース管理プログラム０１１０は、既述の容量条件を満たさない場合に、稼働中の仮想計算機の配置を変更することによって、稼働中の仮想計算機が移行される頻度、回数を低減する。これにより、リソース管理プログラムは、移行されなければならない仮想計算機の移行に要する時間を短縮して、計算機システムにある複数の仮想計算機の性能を安定的に維持する。
【０１２６】
なお、既述の実施形態において、リソース管理プログラムは、稼働中及び／又は稼働予定の仮想計算機が移行される物理計算機に制約を設けることもできる。さらに、リソース管理プログラムは、稼働中の仮想計算機と稼働予定の仮想計算機の配置の複数ある全ての組み合わせに対して、全物理計算機の空容量の標準偏差と移行すべき仮想計算機数とを算出し、現在稼働している物理計算機から他の物理計算機に移行されるべき仮想計算機の数が最小となる配置、かつ、配置スコアの標準偏差が最小になる配置を採用することによって、仮想計算機の最適配置を実現することでもよい。
【０１２７】
次に、第３の実施例形態について説明する。既述の実施形態は、稼働予定仮想計算機の稼働が開始される時刻から一定期間の間に既に稼働していた仮想計算機及びこの間に稼働を開始した仮想計算機が稼働を終了、中断、停止しないことを前提としていた。これに対して、第３の実施形態は、この間に稼働計算機の稼働が終了することもあり、これを勘案して、稼働予定計算機を含む複数の仮想計算機の最適配置を決定しようとしている。
【０１２８】
そこで、リソース管理サーバ０１１０は、仮想計算機の稼働開始時刻ばかりでなく、稼働終了時刻も最適配置を決定する際の要素に含めて、稼働予定の仮想計算機の配置を決定する。リソース管理プログラムは、稼働が予定されている複数の仮想計算機の配置を稼働開始時刻順に決定し、そして、ある稼働予定の仮想計算機の配置を決定する際に、この稼働予定の仮想計算機の稼働開始時刻以前に稼働を終了する仮想計算機が存在する場合には、物理計算機の負荷からその分の負荷を減算し、稼働予定仮想計算機の稼働開始時刻直前の物理計算機の負荷の実質値を計算する。そして、算出した各物理計算機の負荷に基づいて稼働しようとしている予定の仮想計算機の配置を決定する。
【０１２９】
以下に、第３の実施形態をフローチャートに基づいて説明する。本実施形態においても、仮想計算機を物理計算機に最適に配置するための指標として、計算機システムにおける複数の物理計算機の空容量が平準化されるように仮想計算機を配置する。第３の実施形態が前２つの実施形態と異なる点は、第３の実施形態における処理が、稼働予定仮想計算機の終了時刻を考慮して、複数の仮想計算機の配置を再構成している点である。
【０１３０】
図１１（Ａ）は、この実施形態に係る物理計算機情報テーブル１１００Ａ、図１１（Ｂ）はＶＭ情報テーブル１１００Ｂ、図１１（Ｃ）は予約情報テーブル１１００Ｃをそれぞれ示す。予約情報テーブル除くテーブルの構成は既述の実施形態のものと同様である。この予約情報テーブルが既述の実施形態の予約情報テーブルと異なるのは稼働状況欄０３０７を備える点である。
【０１３１】
稼働状況欄０３０７は、予約情報テーブル１１００Ｃの各行のＶＭ識別子欄０３０２で識別される仮想計算機の稼働状況を示す識別子を格納している。稼働状況には、「稼働」と「停止」２種類がある。「稼働」とは、当該予約によって当該仮想計算機が物理計算機上で動作されている状態を示す。「停止」とは、当該予約によって当該仮想計算機が物理計算機上で動作されていないことを示す。稼働状況欄０３０７に「稼働」が格納されている行について、ＶＭ識別子欄０３０２に格納されている、仮想計算機の識別子が、ＶＭ情報テーブル１１００ＢのＶＭ識別子欄０４０１に必ず存在する。例えば、図１１の予約情報テーブル１１００Ｃの行０３１１は稼動状況欄０３０７に「稼動」が格納されており、ＶＭ識別子欄０３０２には識別子「ＶＭ１」が格納されているため、ＶＭ情報テーブル１１００Ｂには、ＶＭ識別子欄０４０１に識別子「ＶＭ１」が格納された行０４１１が存在する。
また、仮想計算機が稼動していても当該予約による稼動でない場合は稼動状況欄０３０７には「停止」が格納される。例えば、図１１の予約情報テーブル１１００Ｃの行０３１６は、ＶＭ識別子欄０３０２に稼働中の仮想計算機の識別子「ＶＭ１」が格納されているが、仮想計算機「ＶＭ１」は行０３１６ではなく、行０３１１が示す予約によって稼動しているため、行０３１６の稼動状況欄０３０７には「停止」が格納される。
【０１３２】
図１２は、第３の実施形態における、稼働予定の仮想計算機の最適配置を決定処理するためのフローチャートである。これはリソース管理プログラム０１１０によって実行される。まず、リソース管理プログラム０１１０は、任意の時刻にステップＳ１２０１を実行する。任意の時刻とは、例えば、リソース管理サーバ０１００に利用者が設定した時刻などである。
【０１３３】
ステップＳ１２０１は、図５のフローチャートのステップＳ０５０１からステップＳ０５０５までの処理と同一の処理である。リソース管理プログラム０１１０は、稼働中の仮想計算機の負荷と物理計算機の総メモリ容量から各物理計算機の配置スコアを計算し、図６の配置スコアテーブル０６００に記録する。
【０１３４】
ステップＳ１２０２は、図７のステップＳ０７０１と同一の処理である。  ステップＳ１２０３は図７のフローチャートのステップＳ０７０２と同一の処理である。ステップＳ１２０４はステップＳ１２０３で抽出した予約情報を開始時刻で昇順にソートする。
【０１３５】
ステップＳ１２０５は、管理サーバのメモリ０１０２の所定領域に記録する時刻情報(以下、時刻情報と呼ぶ)の初期値として現在時刻を設定する。ステップＳ１２０６は、ステップＳ１２０３で抽出した予約情報を全て参照するまで、ステップＳ１２０７からステップＳ１２１９までの処理を繰返し実施する。ステップＳ１２０７は、抽出した予約情報を１つ選択する。
【０１３６】
ステップＳ１２０８は、予約情報テーブル１１００Ｃを参照し、時刻情報の時刻から選択した予約情報の開始時刻の期間に稼働を終了する予約情報を全て抽出する。例えば、時刻情報が２０１０年５月１日０時であり、ステップＳ１２０７で選択した予約情報が行０３１３である場合、行０３１３の開始時刻欄０３０４は２０１０年５月１０日であるから、ステップＳ１２０８は、終了時刻欄０３０５が２０１０年５月５日である行０３１２を抽出する。
【０１３７】
ステップＳ１２０９は、ステップＳ１２０８で抽出した予約情報を全て参照するまで、ステップＳ１２１４までの処理を繰返し実施する。ステップＳ１２１０は、ステップＳ１２０８で抽出した予約情報を１つ選択する。
【０１３８】
ステップＳ１２１１は、ステップＳ１２１０で選択した予約情報が稼働中の仮想計算機の予約情報か、稼働予定の仮想計算機の予約情報かを判定する。稼働中の仮想計算機の場合は、処理はステップＳ１２１２に移行し、稼働予定の仮想計算機の場合は、ステップＳ１２１３に移行する。具体的には、ステップＳ１２１０で選択した予約情報の稼働状況欄０３０７に格納されている識別子が「稼働」であれば、処理はステップＳ１２１２に移行し、「停止」であればステップＳ１２１３に移行する。
【０１３９】
ステップＳ１２１２は、ステップＳ１２１０で選択した予約情報のＶＭ識別子欄０３０２が識別する稼働中の仮想計算機の負荷に基づいて、図６の配置スコアテーブル０６００を更新する。具体的には、ＶＭ情報テーブル１１００Ｂから、ＶＭ識別子０４０１がステップＳ１２１０で選択した予約情報のＶＭ識別子欄０３０２に格納された識別子と一致する行を抽出する。抽出した行の負荷欄０４０３に格納された仮想計算機の負荷が、その行の物理計算機識別子欄０４０２に格納された識別子で識別される物理計算機の負荷から除かれた場合の物理計算機の配置スコアを再計算し、その配置スコアを配置スコアテーブル０６００に更新登録する。
【０１４０】
例えば、配置スコアが各物理計算機の空容量と定義されており、ステップＳ１２１０で選択した予約情報が予約情報テーブル１１００Ｃの行０３１２である場合、予約対象の仮想計算機は、０３１２の欄０３０２に格納された、識別子が「ＶＭ２」である仮想計算機であり、ＶＭ情報テーブル１１００Ｂに基づくと、ＶＭ識別子欄０４０１が「ＶＭ２」である行は０４１２である。
【０１４１】
ＶＭ情報テーブル１１００Ｂの行０４１２の負荷欄０４０３は「１．０ＧＢ」であり、物理計算機識別子０４０２は「Ｐ２」であり、図６に示す配置スコアテーブルの物理計算機識別子欄０６０１に「Ｐ２」が格納されている行は行０６１２であり、行０６１２の配置スコア欄０６０２は「７．０」である。物理計算機Ｐ２の空きメモリ容量は７．０ＧＢであり、行０４１２が示すＶＭ１２の負荷「１．０ＧＢ」が物理計算機Ｐ２の負荷から除かれた場合、物理計算機Ｐ２の実の空容量は８．０ＧＢとなるため、配置スコアテーブル０６００の行０６１２の配置スコア欄０６０２には８．０が格納される。
【０１４２】
ステップＳ１２１３は、ステップＳ１２１０で選択した予約情報の予定負荷欄０３０６に格納された負荷に基づいて、図６の配置スコアテーブル０６００を更新する。具体的には、ステップＳ１２１０は、選択した予約情報の予定負荷欄０３０６に格納された負荷が、配備先物理計算機欄０３０３に格納された識別子によって識別される物理計算機の負荷から除かれた場合の物理計算機の配置スコアを計算し、その配置スコアを配置スコアテーブル０６００に格納する。
【０１４３】
例えば、リソース管理プログラム０１１０は、配置スコアを各物理計算機のメモリの空容量と定義すると、ステップＳ１２１０で選択した予約情報が予約情報テーブル１１００Ｃの行０３１４である場合、行０３１４の予定負荷欄０３０６は「１．０ＧＢ」であり、配備先物理計算機欄０４０２は「Ｐ１」であり、図６に示す配置スコアテーブルの物理計算機識別子欄０６０１に「Ｐ１」が格納されている行は行０６１１であり、行０６１１の配置スコア欄０６０２には４．０が格納されている。したがって、ステップＳ１２１３は、物理計算機Ｐ１のメモリの空容量は４．０ＧＢであり、行０３１４が示すＶＭの予定負荷「１．０ＧＢ」が物理計算機Ｐ１の負荷から除かれると、物理計算機Ｐ２の空容量は５．０ＧＢとなるため、配置スコアテーブル０６００の行０６１１の配置スコア欄０６０２には５．０を格納する。
【０１４４】
ステップＳ１２１４は、繰返しステップの先頭であるＳ１２０９に対応する終端ステップである。ステップＳ１２０８で抽出した全ての予約情報を参照するまで、既述のステップを繰り返し実行する。
【０１４５】
ステップＳ１２１５、ステップＳ１２１７の処理はそれぞれ図７で説明したステップＳ０７０５、ステップＳ０７０６の処理と同じである。ステップＳ１２１８は、ステップＳ１２０７で選択した予約情報の開始時刻欄０３０４に格納されている時刻を、ステップＳ１２０５で初期化したメモリに上書きして記録する。ステップＳ１２１９は、返しステップの先頭であるＳ１２０６に対応する終端ステップであり、ステップＳ１２０３で抽出した全ての予約情報を参照するまで、既述のステップを繰り返し実行する。
【０１４６】
この実施形態では、選択した予約情報の開始時刻から終了時刻までの間の各物理計算機の負荷を、稼働中の仮想計算機と先に配置を決定した稼働予定の仮想計算機の予定負荷と開始時刻と終了時刻とから算出する際、各物理計算機の配置スコアを算出できるのであれば、稼働予定仮想計算機の配置を開始時刻が早いものから決定していかなくてもよい。
【０１４７】
リソース管理プログラムが、ある稼働予定の仮想計算機を選択して配置を決定する際に、選択した仮想計算機の稼働期間に稼働が重複している仮想計算機の負荷から、選択した仮想計算機の稼働期間の各物理計算機の負荷を算出し、算出した各物理計算機の負荷に基づいて、選択した稼働予定仮想計算機の配置を決定することで、稼働中の仮想計算機または稼働予定の仮想計算機が、再配置実行時刻から一定期間内に稼働を終了する場合にも、稼働予定の仮想計算機の最適な配置を決定することができる。
【０１４８】
図１３（Ａ）−図１３（Ｃ）は、リソース管理プログラム０１１０が、稼働が予定される仮想計算機の配置を決定する上で、稼働中の仮想計算機の終了時刻を考慮する必要がない状態に係る管理テーブルであり、具体的には、物理計算機情報テーブル０８００Ａ（図１３（Ａ））、ＶＭ情報テーブル０８００Ｂ（図１３（Ｂ））、予約情報テーブル０８００Ｃ（図１３（Ｃ））である。図１４に、物理サーバ（Ｐ３）のメモリの総容量に対する、仮想計算機の負荷の変位をグラフにして示す。図１３（Ｃ）によれば、稼働予定であった仮想計算機（ＶＭ１０）が現在時刻（２０１０年３月１日）において、物理サーバ（Ｐ３）で既に稼働しており、現在時刻から一月の（２０１０年４月１日）まで、さらに、物理サーバ（Ｐ３）に、仮想計算機（ＶＭ１１）と仮想計算機（ＶＭ１２）とが続けて稼働し、そして、その間、３つの仮想計算機（ＶＭ１０，ＶＭ１１，ＶＭ１２）が稼働を終了しない。したがって、リソース管理プログラム０１１０が、現在時刻において、稼働予定の仮想計算機（ＶＭ１１，ＶＭ１２）を物理サーバ（Ｐ３）への配置を決定し、これら仮想計算機を稼働させるに当たっては、既に物理計算機（Ｐ３）に配置済みの仮想計算機の負荷を物理計算機（Ｐ３）のメモリの総容量から減じる必要は無い。
【０１４９】
これに対して、この必要性がある場合を以下に説明する。図１５は図１３（Ｃ）に係る予約情報テーブルの変形例である。図１５の予約情報テーブルによれば、現在時刻（２０１０年３月１日）から１月以内に、仮想計算機（ＶＭ１０）と仮想計算機（ＶＭ１１）とは、物理計算機（Ｐ３）に一旦は配置されて稼働するものの、２０１０年４月１日までにその稼働を終了する。したがって、この間での物理計算機（Ｐ３）に配置された仮想計算機の実際の予定負荷は、仮想計算機（ＶＭ１１）の予定負荷の値となる（図１６）。したがって、リソース管理プログラム０１１０が、物理計算機（Ｐ３）の既述の配置スコアを算出する際には、物理計算機（Ｐ３）の予定負荷の値に基づかなくてはならない。
【０１５０】
一方、仮想計算機（ＶＭ１０）と仮想計算機（ＶＭ１１）との稼働の終了を考慮しないと、これら仮想計算機の負荷が物理計算機（Ｐ３）に存在しないにも拘わらず、図１７に示すように、仮想計算機（ＶＭ１２）の負荷にそれぞれ累積されて、配置スコアはこれら累積に基づくものとなって、管理プログラムは、物理計算機（Ｐ３）の容量に余裕があるにも拘らず、これを余裕が無いものとして判定し、仮想計算機（ＶＭ１１）及び／又は仮想計算機（ＶＭ１２）の配置先を他の物理計算機に決定してしまい、稼働予定の仮想計算機の最適配置の目的を達成できないおそれが生じてしまう。
【０１５１】
図１８−図２０は、図１５−１７の他の例である。図１８は予約情報テーブルであり、図１９は、仮想計算機の稼働の終了を考慮した場合での、物理計算機（Ｐ３）における仮想計算機の負荷変位を示し、図２０は、仮想計算機の稼働の終了を考慮しない場合での、物理計算機（Ｐ３）における仮想計算機の負荷の変位を示すものである。この例が先の例と異なるのは、図１９において、現在時刻（２０１０年３月１日）から一定期間（１月）の間での予定負荷の最大値は、仮想計算機（ＶＭ１０）と仮想計算機（ＶＭ１１）の稼働期間が一部重なることにより、両者の加算値になる点である。
【０１５２】
既述の予約情報テーブル（図４等）において、管理ユーザが稼働予定の仮想計算機を配備する物理サーバを指定することもできる。例えば、ある仮想計算機を特殊な物理サーバに配備し、必ずその物理サーバ上で仮想計算機を稼働させていたい場合、管理ユーザが仮想計算機の配置先物理サーバを指定し、仮想計算機を再配置の対象外とする場合、ある仮想計算機を特定の複数物理計算機間だけで移動するように限定したい場合、管理ユーザが仮想計算機の配置先物理計算機の範囲を指定し、仮想計算機の最適配置時には、配置先決定時に指定された物理計算機の範囲で仮想計算機の配置を決定する。
【０１５３】
管理ユーザが、仮想計算機の配置先物理計算機を指定する以外に、管理ユーザが仮想計算機の配置に対して制約を設けることもできる。例えば、ある指定した複数の仮想計算機を同一物理計算機で稼動させる場合、ある指定した複数の仮想計算機を別物理計算機で稼働させる場合、ある指定した複数の仮想計算機をできるだけネットワークの距離が近い物理計算機に配置する場合などである。
【符号の説明】
【０１５４】
０１００：リソース管理サーバ、０１０１：ＣＰＵ，０１０２:メモリ、０１０３:入力Ｉ／Ｆ，０１０４:マウス・キーボード、０１０５:出力Ｉ／Ｆ、０１０６：ディスプレイ、０１０７：ＨＤＤ  Ｉ／Ｆ、０１０８：ＨＤＤ、０１０９：ＮＩＣ、０１１０：リソース管理プログラム０１１０、０１１１：予約受付部、０１１２：配置計算部、０１１３：ＶＭ移行部、０１１４：計測部、０１１５：配備部、０１１６：管理部、０２００：物理計算機情報テーブル、０３００：予約情報テーブル、０４００：ＶＭ情報テーブル、０６００：配置スコアテーブル、０１２０：ネットワーク、０１３０：物理計算機、０１３１：ＣＰＵ、０１３２：メモリ、０１３３：ＮＩＣ、０１３４：ＨＤＤ  Ｉ／Ｆ、０１３５：ハイパバイザ、０１３６：仮想計算機、０１３７：仮想計算機、０１４０：物理計算機、０１４１：ＣＰＵ、０１４２：メモリ、０１４３：ＮＩＣ、０１４４：ＨＤＤ  Ｉ／Ｆ、０１４５：ハイパバイザ、０１４６：仮想計算機、０１４７：仮想計算機、１５０：ＨＤＤ、１５１：ＶＭディスクイメージ。
【図１】
2012117453.tif 000003
【図２】
2012117453.tif 000004
【図３】
2012117453.tif 000005
【図４】
2012117453.tif 000006
【図５】
2012117453.tif 000007
【図６】
2012117453.tif 000008
【図７】
2012117453.tif 000009
【図８】
2012117453.tif 000010
【図９】
2012117453.tif 000011
【図１０】
2012117453.tif 000012
【図１１】
2012117453.tif 000013
【図１２】
2012117453.tif 000014
【図１３】
2012117453.tif 000015
【図１４】
2012117453.tif 000016
【図１５】
2012117453.tif 000017
【図１６】
2012117453.tif 000018
【図１７】
2012117453.tif 000019
【図１８】
2012117453.tif 000020
【図１９】
2012117453.tif 000021
【図２０】
2012117453.tif 000022
【図２１】
2012117453.tif 000023
【図２２】
2012117453.tif 000024
【図２３】
2012117453.tif 000025
【手続補正書】
【提出日】平成25年9月17日(2013.9.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の物理計算機と、
前記複数の物理計算機に対して、複数の仮想計算機を配置するための管理処理を実行する管理計算機と、
を備える計算機システムであって、
前記管理計算機は、
前記複数の物理計算機の少なくとも一つで稼働させることが予定されている一つ又は複数の仮想計算機と、当該仮想計算機の稼働予定情報として、当該仮想計算機が稼働を開始する開始予定時刻と稼働を終了する終了予定時刻と、が登録された管理テーブルと、
前記管理処理の予定時刻を設定する設定手段と、
前記予定時刻から所定の期間内に前記開始予定時刻が含まれる前記仮想計算機を前記管理テーブから特定する特定手段と、
前記特定手段によって特定された特定仮想計算機の予定負荷と、前記複数の物理計算機の一つ又は複数に既に配置されて稼働されている仮想計算機に関する負荷と、に基づいて、前記特定仮想計算機を配置すべき物理計算機を、当該特定仮想計算機の稼働前に前記複数の物理計算機の中から決定する決定手段と、
を備える、
計算機システム。
【請求項２】
前記管理計算機は、稼働中の仮想計算機に関する負荷を、
前記複数の物理計算機の夫々が仮想計算機に割当て可能なリソースの総量から、稼働している仮想計算機に割当てられたリソース量を減じた値から算出する、請求項１記載の計算機システム。
【請求項３】
前記管理計算機は、前記複数の物理計算機の何れかで稼働中の仮想計算機を他の物理計算機に移行することなく、前記稼働が予定されている仮想計算機を前記複数の物理計算機の中から決定する、請求項１記載の計算機システム。
【請求項４】
前記管理テーブルは、前記稼働することが予定されている仮想計算機の配置先物理計算機の情報を含み、
前記管理計算機は、前記稼働予定されている仮想計算機を配置すべきとして決定された物理計算機が前記管理テーブルに含まれた配置先物理計算機と異なる場合には、前記決定された物理計算機の情報を前記管理テーブルに更新登録する、請求項１記載の計算機システム。
【請求項５】
前記管理計算機は、前記複数の物理計算機の何れかで稼働中の仮想計算機を他の物理計算機に移行しながら、前記稼働が予定されている仮想計算機を前記複数の物理計算機の中から決定する、請求項１記載の計算機システム。
【請求項６】
前記管理計算機は、
前記稼働が予定されている仮想計算機を配置すべき目標物理計算機を決定後、前記稼働が予定されている仮想計算機に関する負荷と前記複数の物理計算機の少なくとも一つで稼働している他の仮想計算機に関する負荷とに基づいて、前記目標物理計算機の空メモリ容量の目標値を達成しているか否かを判定し、
当該判定を否定する場合には、前記複数の物理計算機の少なくとも一つで稼働している、前記複数の仮想計算機の少なくとも一つの仮想計算機を他の物理計算機に移行し、前記判定を肯定する場合には、当該移行を行うことなく、前記複数の仮想計算機の前記複数の物理計算機に対する配置を決定する、請求項５記載の計算機システム。
【請求項７】
前記管理計算機は、前記他の物理計算機を、前記複数の物理計算機の中で、前記少なくとも一つの仮想計算機に割当てることができるリソース量が最も大きい物理計算機とする、請求項６記載の計算機システム。
【請求項８】
前記管理計算機は、稼働が予定されている仮想計算機が配置される目標物理計算機を決定する際、当該仮想計算機の稼働開始前に稼働した後稼働を終了する仮想計算機が前記目標物理計算機に配置されている場合、当該仮想計算機に関する負荷を前記目標物理計算機のリソース量から減じることなく、前記目標物理計算機を前記複数の物理計算機の中か決定する、請求項１記載の計算機システム。
【請求項９】
前記管理計算機は、稼働中の仮想計算機に関する負荷を、前記複数の物理計算機の夫々が仮想計算機に割当て可能なリソースの総量から、稼働している仮想計算機に割当てられたリソース量を減じた値から算出し、
前記稼働することが予定されている仮想計算機が登録された管理テーブルを備え、
前記管理テーブルは、当該仮想計算機が稼働を開始する時刻の情報と終了する時刻の情報と、
前記管理計算機は、さらに、予定時刻から規定期間内に前記開始する時刻が存在する前記稼働することが予定される仮想計算機を前記管理テーブルから抽出し、当該抽出した仮想計算機を配置すべき前記物理計算機を決定し、
前記管理テーブルは、前記稼働することが予定されている仮想計算機の配置先物理計算機の情報を含み、
前記管理計算機は、さらに、
前記稼働予定されている仮想計算機を配置すべきとして決定された物理計算機が前記管理テーブルに含まれた配置先物理計算機と異なる場合には、前記決定された物理計算機の情報を前記管理テーブルに更新登録し、
前記複数の物理計算機の何れかで稼働中の仮想計算機を他の物理計算機に移行しながら、前記稼働が予定されている仮想計算機を前記複数の物理計算機の中から決定し、
前記稼働が予定されている仮想計算機を配置すべき目標物理計算機を決定後、前記稼働が予定されている仮想計算機に関する負荷と前記複数の物理計算機の少なくとも一つで稼働している他の仮想計算機に関する負荷とに基づいて、前記目標物理計算機の空メモリ容量の目標値を達成しているか否かを判定し、
当該判定を否定する場合には、前記複数の物理計算機の少なくとも一つで稼働している、前記複数の仮想計算機の少なくとも一つの仮想計算機を他の物理計算機に移行し、前記判定を肯定する場合には、当該移行を行うことなく、前記複数の仮想計算機の前記複数の物理計算機に対する配置を決定し、
前記他の物理計算機を、前記複数の物理計算機の中で、前記少なくとも一つの仮想計算機に割当てることができるリソース量が最も大きい物理計算機とし、
稼働が予定されている仮想計算機が配置される目標物理計算機を決定する際、当該仮想計算機の稼働開始前に稼働した後稼働を終了する仮想計算機が前記目標物理計算機に配置されている場合、当該仮想計算機に関する負荷を前記目標物理計算機のリソース量から減じることなく、前記目標物理計算機を前記複数の物理計算機の中か決定する、請求項１記載の計算機システム。
【請求項１０】
複数の物理計算機と、
前記複数の物理計算機に対して、複数の仮想計算機を配置するための管理処理を実行する管理計算機と、
を備える計算機システムの仮想計算機の最適配置方法において、
前記管理計算機は、
前記複数の物理計算機の少なくとも一つで稼働させることが予定されている一つ又は複数の仮想計算機と、当該仮想計算機の稼働予定情報として、当該仮想計算機が稼働を開始する開始予定時刻と稼働を終了する終了予定時刻と、が登録された管理テーブルを有し、
前記管理処理の予定時刻を設定し、
前記予定時刻から所定の期間内に前記開始予定時刻が含まれる前記仮想計算機を前記管理テーブから特定し、
前記特定された特定仮想計算機の予定負荷と、前記複数の物理計算機の一つ又は複数に既に配置されて稼働されている仮想計算機に関する負荷と、に基づいて、前記特定仮想計算機を配置すべき物理計算機を、当該特定仮想計算機の稼働前に前記複数の物理計算機の中から決定する、
計算機システムの仮想計算機の最適配置方法。
【国際調査報告】
2012117453.tif 000026
2012117453.tif 000027
2012117453.tif 000028