(57)【要約】【課題】物理計算機のハードウェア資源の過不足がなるべく生じないように仮想計算機（VM）を配置する。【解決手段】複数の物理計算機に複数のVMを配置するVM配置装置が構築される。VM配置装置は、複数の時区間のそれぞれにおけるVMの資源負荷値をVM毎に表す情報であるVM負荷情報を記憶する。VM配置装置は、VM負荷情報を基に、各時区間について資源負荷値の差が最も大きくなるような２以上のVMを選択し、選択した２以上のVMを同一の物理計算機に配置する。
2012053393.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理計算機に複数の仮想計算機を配置する装置であって、
複数の時区間のそれぞれにおける仮想計算機の資源負荷値を仮想計算機毎に表す情報である仮想計算機負荷情報を記憶する記憶部と、
前記仮想計算機負荷情報を基に、各時区間について資源負荷値の差が最も大きくなるような２以上の仮想計算機を選択し、選択した２以上の仮想計算機を同一の物理計算機に配置する制御部と
を有する装置。
【請求項２】
請求項１記載の装置であって、
前記制御部が、複数の仮想計算機が配置された後の複数の物理計算機の資源負荷値を基に、前記複数の物理計算機のうち、資源の過不足が生じている物理計算機を特定し、特定した物理計算機に対して、仮想計算機の追加又は削除である再配置を行う、
装置。
【請求項３】
請求項２記載の装置であって、
前記複数の物理計算機は、１以上の内部物理計算機と外部物理計算機とを含み、
前記制御部が、資源が不足している内部物理計算機である対象内部物理計算機を特定した場合、前記対象内部物理計算機から前記外部物理計算機に或る仮想計算機を移動する、
装置。
【請求項４】
請求項３記載の装置であって、
前記或る仮想計算機は、前記対象物理計算機がアクセスするローカル型の記憶装置に格納される仮想計算機であるローカル型の仮想計算機であり、
前記制御部が、前記ローカル型の仮想計算機の仮想的な記憶資源のイメージである仮想資源ファイルを、前記ローカル型の記憶装置から前記外部物理計算機がアクセス可能なファイルサーバに移動することで、前記ローカル型の仮想計算機をネットワーク型の仮想計算機に変更し、その後、前記ネットワーク型の仮想計算機を前記対象内部物理計算機から前記外部物理計算機に移動する、
装置。
【請求項５】
請求項４記載の装置であって、
各仮想計算機は、仮想デスクトップとして利用される仮想計算機である、
装置。
【請求項６】
請求項４記載の装置であって、
前記外部物理計算機は、パブリッククラウドの物理計算機である、
装置。
【請求項７】
請求項４記載の装置であって、
前記制御部は、同一の内部物理計算機に配置する仮想計算機を、前記同一の内部物理計算機に配置されるVMの資源負荷値の合計が所定の値以下の範囲で、１つずつ選択するようになっており、その際、選択される仮想計算機は、既に選択されている１以上の仮想計算機の各時区間での資源負荷値との差がなるべく大きくなるような資源負荷値となった仮想計算機であり、
前記ネットワーク型の仮想計算機は、前記対象内部物理計算機に配置される仮想計算機として最後に選択された仮想計算機である、
装置。
【請求項８】
請求項４記載の装置であって、
前記ネットワーク型の仮想計算機は、重要ではないデータを扱う仮想計算機である、
装置。
【請求項９】
請求項４記載の装置であって、
前記ネットワーク型の仮想計算機は、WAN又はインターネットを介してアクセスされる仮想計算機である、
装置。
【請求項１０】
請求項４記載の装置であって、
前記ネットワーク型の仮想計算機は、記憶資源の利用率が最も小さい仮想計算機である、
装置。
【請求項１１】
請求項３記載の装置であって、
前記制御部が、前記対象内部物理計算機の資源不足が解消したことを検出した場合、前記外部物理計算機から前記移動した仮想計算機を前記対象内部物理計算機に戻す、
装置。
【請求項１２】
請求項２記載の装置であって、
前記記憶部が、配置結果評価情報を記憶し、
前記配置結果評価情報は、物理計算機毎に、物理計算機の資源負荷値を示す情報を含み、
資源が不足している物理計算機は、前記配置結果評価情報が表す資源負荷値が、第１の値以上の物理計算機であり、
資源が過剰な物理計算機は、前記配置結果評価情報が表す資源負荷値が、前記第１の値より小さい第２の閾値以下の物理計算機である、
装置。
【請求項１３】
請求項１記載の装置であって、
前記制御部は、前記同一の物理計算機に配置する仮想計算機を、前記同一の物理計算機に配置されるVMの資源負荷値の合計が所定の値以下の範囲で、１つずつ選択する、
装置。
【請求項１４】
複数の物理計算機に複数の仮想計算機を配置する方法であって、
複数の時区間のそれぞれにおける仮想計算機の資源負荷値を仮想計算機毎に表す情報である仮想計算機負荷情報を基に、各時区間について資源負荷値の差が最も大きくなるような２以上の仮想計算機を選択し、
選択した２以上の仮想計算機を同一の物理計算機に配置する、
方法。
【請求項１５】
複数の物理計算機に複数の仮想計算機を配置することをコンピュータに実行させるためのコンピュータプログラムであって、
複数の時区間のそれぞれにおける仮想計算機の資源負荷値を仮想計算機毎に表す情報である仮想計算機負荷情報を基に、各時区間について資源負荷値の差が最も大きくなるような２以上の仮想計算機を選択し、
選択した２以上の仮想計算機を同一の物理計算機に配置する、
ことコンピュータに実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，仮想計算機を配置する技術に関する。
【背景技術】
【０００２】
計算機の物理資源を複数の論理資源に見せかける仮想化ソフトウェアにより、一台の計算機上に複数の仮想計算機（VM）を稼動させることができる。また、仮想化ソフトウェアがハードウェアの特性を吸収するため、VMは計算機のハードウェアの特性に依存せず、VMのハードウェア間の移動が容易である。以下、仮想化ソフトウェアを実行することにより複数のVMを動作させる計算機を単に「サーバ」と言う。【０００３】
例えば、VMに業務サーバ用のOS（Operating  System）を導入して、VMを業務サーバとして運用する企業がある。この場合、通常、１つのVMは複数のクライアントに利用される。【０００４】
一方、VMにデスクトップ用のOSを導入し、VMを仮想デスクトップとして利用する技術がある。この場合、通常、１つのVMは１つのクライアントに利用される。【０００５】
VMを利用する場合、複数のVMが同じサーバのハードウェア資源を共有するため、VM間でハードウェア資源の利用が競合する可能性がある。このため、１サーバに何台のVMを稼動させるかを決定することが難しい。【０００６】
特許文献１によれば、VM種別の組合せ毎に、その組合せのVM種別同士が同じサーバに配置される適切度（スコア）が用意される。VM種別の組合せ毎のスコアを基に、新規のVMを配置可能な各サーバについて、新規のVMを当該サーバに配置する適切度（指標値）が計算される。この計算した指標値を基に、新規のVMの配置先サーバが決定される。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】国際公開第２００７／１３６０２１号パンフレット
【発明の概要】
【発明が解決しようとする課題】
【０００８】
VMを仮想デスクトップとして利用する場合には、仮想デスクトップのクライアントのユーザの操作により、仮想デスクトップが必要とするハードウェア資源（例えば、CPU処理時間、メモリ量、HDDアクセス帯域およびHDDアクセス時間、又はネットワーク帯域）が急激に変化することがある。そのため、VMをサーバへ配置する際に、各VMに常に快適なパフォーマンスを提供するためには、業務サーバを仮想化する場合と比較すると、相当な余裕を持たせた配置を実施する必要がある。しかし、それでは、サーバの資源の浪費となる。【０００９】
そこで、本発明の目的は、物理計算機（例えばサーバ）のハードウェア資源の過不足がなるべく生じないようにVMを配置することにある。
【課題を解決するための手段】
【００１０】
複数の物理計算機に複数の仮想計算機（VM）を配置するVM配置装置が構築される。VM配置装置が、複数の時区間のそれぞれにおけるVMの資源負荷値をVM毎に表す情報であるVM負荷情報を記憶する。VM配置装置は、VM負荷情報を基に、各時区間について資源負荷値の差が最も大きくなるような２以上のVMを選択し、選択した２以上のVMを同一の物理計算機に配置する。【００１１】
このVM配置装置によって配置されるVMのタイプは、どのようなタイプでも良い。このVM配置装置は、仮想デスクトップとして利用される仮想計算機のように、必要とされるハードウェア資源が急激に変化することがあるタイプの仮想計算機の配置に適している。
【発明の効果】
【００１２】
本発明によれば、物理計算機のハードウェア資源の過不足がなるべく生じないようにVMを配置することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施例１に係るVM配置装置を含んだシステム全体の構成例を示す。
【図２】パターンDB２０１の構成例を示す。
【図３】配置評価結果DB１１４の構成例を示す。
【図４】管理部１１８の構成例を示す。
【図５】配置結果DB１１７の構成例を示す。
【図６】実施例１で行われる処理の全体の流れの一例を示すフローチャートである。
【図７】ステップ４０２およびステップ４０３の詳細な流れの一例を示すシーケンス図である。
【図８】図７のステップ５０４の詳細な流れの一例を示すフローチャートである。
【図９】図９は、図８のステップ６０２の詳細な流れの一例を示すフローチャートである。
【図１０】図６のステップ４０５の詳細な流れの一例を示すシーケンス図である。
【図１１】本発明の実施例２に係るVM配置装置を含んだシステム全体の構成例を示す。
【図１２】VM配置装置９０７の構成例を示す。
【図１３】VM詳細情報DB１００６の構成例を示す。
【図１４】実施例２で行われる処理の全体の流れの一例を示すフローチャートである。
【図１５】図１４のステップ１１０３の詳細な流れの一例を示すシーケンス図である。
【図１６】図１４のステップ１１０４の詳細な流れの一例を示すシーケンス図である。
【発明を実施するための形態】
【００１４】
以下、本発明の幾つかの実施例を、図面を参照して詳細に説明する。
【００１５】
なお、以下の説明では「ｘｘｘDB」、「ｘｘｘリスト」の表現にて各種情報を説明することがあるが（DBは「データベース」の略）、各種情報は、DBやリスト以外のデータ構造で表現されていても良い。データ構造に依存しないことを示すために「ｘｘｘDB」や「ｘｘｘリスト」を「ｘｘｘ情報」と言うことができる。
【００１６】
また、以下の説明では、要素を特定するために名称が使用されるが、名称に代えて、識別情報として、ID又は番号などが使用されて良い。
【００１７】
また、以下の説明では、プログラムがプロセッサ（例えばCPU（Central  Processing  Unit））によって実行されることで発揮される機能（又はプログラム）を主語にして処理を説明することがあるが、定められた処理を、適宜に記憶資源（例えばメモリ）及び／又は通信インタフェース装置（例えば通信ポート）を用いながら行うため、処理の主語がプロセッサとされても良い。プロセッサは、プロセッサが行う処理の一部又は全部を行うハードウェア回路を含んでも良い。コンピュータプログラムは、プログラムソースから各計算機にインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであっても良い。
【実施例１】
【００１８】
本実施例は、VMの資源利用率の時間による変化を考慮した配置方法の一例に関する。なお、以下の説明では、仮想デスクトップとして利用される仮想計算機を「VM」と記載し、複数のVMの各々について、「VM#」と標記することがある（#は、a、b、…といった小文字のアルファベットである）。【００１９】
図１は、本発明の実施例１に係るVM配置装置を含んだシステム全体の構成例を示す。【００２０】
データセンタ１００では、管理端末１０５を操作する管理者の要求に従い、VMを生成、配置及び動作させることができる。クライアント計算機（以下、クライアント）１７１のユーザが、このデータセンタ１００上のVMへいわゆる画面転送型シンクライアントと呼ばれる形態でリモート接続し、VMを利用することができる。データセンタ１００の一つの例は、企業のデータセンタであり、仮想デスクトップを集中管理する基盤を含む。本実施例では、一つのVMが一つの仮想デスクトップになる。クライアント１７１は、LAN１７２を介してVMにアクセスして良い。LAN１７２に代えて、他種の通信ネットワークが採用されても良い。【００２１】
本実施例に係るデータセンタ１００には、サーバ１０３及びサーバ１０４を含んだサーバ群と、サーバにVMを配置する機能を有するVM配置装置１０１と、VM配置装置１０１を操作する機能を有する管理端末１０５とがある。各サーバ、VM配置装置１０１及び管理端末１０５は、LAN（Local  Area  Network）１０２に接続されている。LAN１０２に代えて他種の通信ネットワークが採用されても良い。【００２２】
サーバについて、サーバ１０３を例に取り説明する。【００２３】
サーバ１０３は、通信インタフェース装置（例えばNIC（Network  Interface  Card））、記憶資源（例えばメモリ及びHDD（Hard  Disk  Drive））、及びそれらに接続されたCPUを有する。記憶資源が、仮想化機能を備えたソフトウェアである仮想化ソフト１３１を記憶し、CPUが、仮想化ソフト１３１を実行する。仮想化ソフト１３１上に、１又は複数のVM、例えば、VMa１３３およびVMb１３４が配置される。【００２４】
サーバ１０３が有する記憶資源として、例えば、サーバ１０３にLAN１０２を介することなく接続された記憶装置（以下、ローカル記憶装置）１３２がある。ローカル記憶装置１３２には、VMa１３３の仮想的な記憶資源（例えば仮想HDD）のイメージであるVDa（仮想ディスクファイルａ）１３５と、VMb１３４の仮想的な記憶資源（例えば仮想HDD）のイメージであるVDｂ（仮想ディスクファイルｂ）１３６とが格納される。VMa１３３（VMb１３４）は、動作する際に、仮想化ソフト１３１を介して、VDa１３５（VDb１３６）を参照及び／又は変更する。【００２５】
なお、仮想化ソフト１３１は、そのソフト１３１を有するサーバ１０３の外部の装置（例えば、別のサーバ、或いは、VM配置装置１０１）から命令を受け、その命令に従い、VMの作成、起動、停止又は移動（或るサーバから別のサーバへのVMの移動）を実行する機能を有する。また、仮想化ソフト１３１は、そのソフト１３１上で動作するVM及びそのソフト１３１を有するサーバ１０３の資源利用状況（CPU利用率、メモリ利用率、HDD利用率、及び、利用したネットワーク帯域幅のうちの少なくとも１つ）を監視する機能を有する。【００２６】
サーバ群におけるサーバ１０３以外の各サーバの構成及び機能は、サーバ１０３の構成及び機能と実質的に同じである。ただし、サーバ群における全てのサーバのハードウェア資源の性能（例えば、CPUの処理性能）が同じであるとは限らない。【００２７】
VM配置装置１０１は、サーバ群中のサーバにVMを生成及び配置する。VM配置装置１０１は、例えば、１以上の計算機であり、通信インタフェース装置（例えばNIC（Network  Interface  Card））、記憶資源（例えばメモリ及びHDD（Hard  Disk  Drive））、及びそれらに接続されたCPUを有する。通信インタフェース装置が、LAN１０２を介して管理端末１０５及び複数のサーバに接続される。記憶資源が、VMリスト１１１と、サーバリスト１１２と、ログDB１１３と、配置評価結果DB１１４と、配置結果DB１１７と、１以上のコンピュータプログラムを記憶する。CPUが、その記憶資源内の１以上のコンピュータプログラムを実行することにより、配置実行部１１５と、配置決定部１１６と、管理部１１８としての機能を発揮することができる。VM配置装置１０１の各構成要素に関しては後述する。【００２８】
管理端末１０５は、VM配置装置１０１と通信する機能と、VM配置装置１０１へ情報を入力する機能と、VM配置装置１０１の中のプログラムの起動や動作状況を監視する機能とを有する。管理者は、管理端末１０５を操作して、データセンタ１００を管理する。すなわち、本実施例では、VM配置装置１０１が、管理サーバとして機能し、管理端末１０５が、VM配置装置１０１にアクセスする管理クライアントとして機能することができる。【００２９】
次に、VM配置装置１０１が各構成要素に関して説明する。【００３０】
VMリスト１１１は、サーバ群に存在する複数のVMのうち管理者が稼働させたい各VMに関する情報のリストである。VMに関する情報は、例えば、VMの名称と、そのVMの仕様（CPUの動作周波数、メモリ容量、又はHDD容量）を表す情報とを含んだ情報である。【００３１】
サーバリスト１１２は、サーバ群における各サーバに関する情報のリストである。サーバに関する情報は、例えば、サーバのIPアドレスを表す情報を含んだ情報である。【００３２】
図２は、パターンDB２０１の構成例を示す。【００３３】
パターンDB２０１は、一定期間における各VMの資源利用率の変化を示す情報を格納するデータベースである。「VMの資源利用率の変化を示す情報」は、例えば、一定期間における各時区間（例えば６時間毎）でのVMの資源利用率を示す情報である。より具体的には、パターンDB２０１は、例えば、VM毎に、下記の情報、
（１）VMの名称であるVM名２１１、
（２）各時区間でのVMのCPU利用率（すなわち、一定期間におけるVMのCPU利用率変化）を示すCPU利用率変化２１２、
（３）各時区間でのVMのHDD利用率（すなわち、一定期間におけるVMのHDD利用率変化）を示すHDD利用率変化２１３、
を有する。HDD利用率は、或る期間内（例えば一秒間内）にVMがHDDにアクセスする時間の割合であってもよい。また、HDD利用率は、或る期間中（例えば一秒間内）にVMがHDDにデータ書き込みまたは読み出しに用いた帯域の、サーバの物理的なHDDの最大送受信可能な帯域に対する割合であってもよい。本実施例では、CPU利用率及びHDD利用率を示す情報が一日単位で記録されるが、この期間の長さは、一週間或いは一ヶ月といった別の長さであっても良い。なお、VM資源利用率として、CPU利用率及びHDD利用率の少なくとも一方に代えて又は加えて、VMのメモリ利用率の変化、ネットワーク帯域の利用率の変化を示す情報が、パターンDB２０１に格納されもよい。また、本実施例では、時区間における資源利用率は、その時区間における資源利用率の平均値であるが、平均値に代えて、時区間における所定の条件を満たす値（例えば最大値又は最小値）であっても良い。【００３４】
図３は、配置評価結果DB１１４の構成例を示す。【００３５】
配置評価結果DB１１４は、VMの配置結果に従う評価を示す情報をサーバ毎に有する。具体的には、配置評価結果DB１１４は、例えば、サーバ毎に、
（１）サーバの名称であるサーバ名３１１、
（２）サーバ内の全てのVMのCPU利用率の合計を示す配置CPU利用率３１２、
（３）サーバが稼動したときのCPU利用率を示す稼働CPU利用率３１３、
（４）サーバへのVMの配置が適切かどうかを示す評価結果３１４、
を有する。評価結果３１４の値としては、「不足」、「浪費」及び「適切」の３種類がある。【００３６】
図４は、管理部１１８の構成例を示す。【００３７】
管理部１１８は、管理コンソール２４０１と、パラメータDB２４０２と、初期配置管理部２４０３と、再配置管理部２４０４を有する。【００３８】
管理コンソール２４０１は、VMリスト１１１、サーバリスト１１２が有する情報及びパラメータDB２０４が有する情報を入力する。管理コンソール２４０１は、配置結果DB１１７が有する情報を表示する。また、管理コンソール２４０１は、初期配置管理部２４０３及び再配置管理部２４０４を起動する。【００３９】
パラメータDB２４０２は、初期配置管理部２４０３及び再配置管理部２４０４を動作させるためのパラメータを有するデータベースである。パラメータDB２４０２は、例えば、下記の（１）〜（５）のパラメータ、
（１）配置すべきVMの集合:  L、
（２）利用可能なサーバの集合：  S、
（３）サーバの資源状況を判断するための基準：  HighCPULevel，  LowCPULevel、
（４）サーバにどれぐらいVMを乗せるかを判断するための基準（許容範囲）:  K、
（５）再配置が必要か否かの判断（再配置要否判断）を実行する時間間隔（再配置間隔）：  T
を有する。HighCPULevel、LowCPULevel、及びKは、0から１00%におけるいずれかの値となる。【００４０】
なお、「許容範囲」とは、サーバの資源の何パーセントまでVMで利用するかを示す指標である。例えば、サーバ上に配置する１以上のVMのCPUの平均利用率（平均CPU利用率）はサーバのCPU処理能力のK%以下になるように配置する必要がある。Kが１00に近いほど、サーバに多くのVMを配置することができるが、VMの資源利用率が急に高くなった場合、サーバが対応できなくなる可能性が高い。逆に、Kが0に近いほど、サーバの資源の浪費が発生する可能性がある。なお、本実施例では、資源利用率の代表としてCPUの処理能力（CPU利用率）が採用されるが、他種の資源利用率も考慮されて、許容範囲が設定されてもよい。設定範囲は、資源利用率の種類毎に異なっていても良い。【００４１】
「再配置間隔」は、例えば、「毎週の最終勤務日の勤務時間終了後」或いは「毎週の週末」である。【００４２】
初期配置管理部２４０３は、一回目のVM配置を管理する。初期配置管理部２４０３は、配置決定部１１６を起動し、パラメータDB２４０２に格納されるパラメータを配置決定部１１６に渡す。また、再配置管理部２４０４は、再配置間隔Tごとに配置決定部１１６に再配置命令を出す。【００４３】
図５は、配置結果DB１１７の構成例を示す。【００４４】
配置結果DB１１７は、どのサーバにどのVMを配置するかを示すデータベースである。具体的には、配置結果DB１１７は、例えば、サーバ毎に、下記の情報、
（１）サーバの名称であるサーバ名２５０１、
（２）サーバに配置された配置されるVMの名称の集合であるVM集合２５０２、
を有する。【００４５】
配置決定部１１６は、パラメータDB２４０２に格納されているパラメータであるHighCPULevel、LowCPULevel、及びKを参照し、パラメータSが示す１以上のサーバに、パラメータLが表す１以上のVMを配置し、配置の結果を配置結果DB１１７に格納する。【００４６】
配置実行部１１５は、仮想化ソフト１３１や１４２と通信し、配置結果DB１１７に従う、VMの配置を、実行する。【００４７】
本実施例では、VMの配置として、「初期配置」と「再配置」の２種類がある。【００４８】
初期配置は、下記の（ａ）又は（ｂ）の条件、
（ａ）データセンタ１００の起動後に初めてサーバ群にVMを配置すること、
（ｂ）ｎ回目のVM配置で配置されたVMの数と（直前回VM数）、次のVM配置（（ｎ＋１）回目のVM配置）で配置されるVMの数（今回VM数）との差が、所定数を超えている（例えば、配置されるVMの数が大幅に変更される）、
（ｃ）管理者から初期配置であることが指定された、
に適合する配置である。条件（ｂ）については、直前回VM数と今回VM数のどちらが大きくても良い。初期配置のためには、管理者からの情報入力が必要である。【００４９】
再配置は、サーバ群における複数のVMのうちの少なくとも１つの配置先を或るサーバから別のサーバに変更することである。再配置のために、管理者からの情報入力は格別必要としない。【００５０】
図６は、実施例１で行われる処理の全体の流れの一例を示すフローチャートである。【００５１】
まず、ステップ４００では、データセンタ１００が起動する。具体的には、例えば、管理者が、仮想化ソフト１３１（１４１）を導入済みのサーバ１３３（１０４）を起動し、各サーバにLAN１０２を接続する。また、管理者が、VM配置装置１０１および管理端末１０５を起動し、装置１０１及び端末１０５をLAN１０２に接続する。ステップ４００は、例えば、企業の業務時間開始の所定時間前（例えば３０分前）に行われて良い。【００５２】
次に、ステップ４０１で、初期配置か否かが判断される。初期配置か否かの判断は、管理者が行っても良いしコンピュータ（例えば、VM配置装置１０１）が行っても良い。ステップ４０１の判断の結果が肯定的の場合、ステップ４０２及び４０３が行われる。ステップ４０１の判断の結果が否定的の場合、ステップ４０２及び４０３がスキップされ、ステップ４０４が行われる。【００５３】
ステップ４０２では、管理端末１０５が、管理者から、特定の情報（例えば、配置対象のVMに関する情報や配置する際の条件など）の入力を受け、その特定の情報を、VM配置装置１０１に入力する。【００５４】
ステップ４０３では、VM配置装置１０１が、入力された特定の情報を基に、VMの配置を実行する。【００５５】
次に、ステップ４０４で、再配置要否判断が行われる。再配置か否かの判断は、管理者が行っても良いしコンピュータ（例えば、VM配置装置１０１）が行っても良い。本実施例では、VM配置装置１０１は、一定期間ごとにステップ４０４を行う。再配置間隔T毎に、再配置要否判断が実行される。再配置間隔Tは、例えば、ステップ４０２で管理者が入力した特定の情報に含まれる値であって、パラメータDB２４０２に含まれるパラメータ値である。ステップ４０４の判断の結果が肯定的の場合、ステップ４０５及び４０６が行われる。ステップ４０４の判断の結果が否定的の場合、ステップ４０５がスキップされ、ステップ４０６が行われる。【００５６】
ステップ４０５では、VM配置装置１０１が、ステップ４０３においてVM配置済みの複数のVMの一部（又は全て）のVMを再配置する。【００５７】
ステップ４０６では、VMの動作に従うサービスが提供される。例えば、一日の業務時間など、一定期間VMが動作し、その結果として、クライアント１７１のユーザへサービスが提供される。具体的には、VMで画面転送ソフトウェアが実行されることで、VMが提供する仮想デスクトップが、そのVMに接続したクライアント１７１のディスプレイ画面に表示される。VMが動作している間に、仮想化ソフト１３１（１４１）が、そのソフト１３１（１４１）を実行するサーバ１０３（１０４）の資源利用率、及び、VMの資源利用率を監視し、その監視結果を表す情報をVM配置装置１０１に蓄積する。具体的には、例えば、下記の通りである。
（１）仮想化ソフト１３１（１４１）が、そのソフト１３１（１４１）を有するサーバ１０３（１０４）で実行される各VMについて、CPU利用率及びHDD利用率を監視する。一定期間毎（例えば６時間毎）に、仮想化ソフト１３１（１４１）が、CPU利用率及びHDD利用率（例えば、その一定期間におけるCPU利用率の平均及びHDD利用率の平均）を表す情報を、VM配置装置１０１のパターンDB１１３に格納する。
（２）仮想化ソフト１３１（１４１）が、そのソフト１３１（１４１）を有するサーバ１０３（１０４）の一定時間（例えば１時間）におけるCPU利用率を一定時間毎に算出する。仮想化ソフト１３１（１４１）は、算出したCPU利用率を表す値を、配置評価結果DB１１４に格納する。【００５８】
なお、仮想化ソフト１３１（１４１）に代えて、VMが、VMの資源利用状況とそのVMが配置されたサーバの資源利用状況とを監視する監視ツール（例えばアプリケーションプログラム）を実行して良い。この場合、その監視ツールが、周期的に、データベース（例えば、パターンDB１１３又は配置評価結果DB１１４）を更新して良い。【００５９】
一定期間終了後（例えば一日の業務時間が終了すると）、ステップ４０６が終了する。【００６０】
ステップ４０７では、データセンタ１００が停止する。ステップ４０７は、例えば、企業の業務時間後、サーバ群におけるVMが利用されなくなることであっても良い。具体的には、例えば、仮想化ソフト１３１（１４１）がVMを停止し、そして、サーバ１０３（１０４）の電源がターンオフされる。管理者が、VM配置装置１０１および管理端末１０５を停止させてもよい。【００６１】
図７は、ステップ４０２およびステップ４０３の詳細な流れの一例を示すシーケンス図である。【００６２】
まず、ステップ４０２では、管理者が管理端末１０５を使用して入力した情報が、VM配置装置１０１における管理部１１８内の管理コンソール２４０１へ送信される。具体的には、例えば、ステップ４０２では、下記が行われる。
（１）管理者によって入力された情報は、稼動したいVMに関する情報（例えば、VM名）を含む。管理コンソール２４０１が、そのVMに関する情報を、VMリスト１１１に登録する。
（２）管理者によって入力された情報は、利用されるサーバに関する情報（例えば、サーバのIPアドレス）を含む。管理コンソール２４０１が、そのサーバに関する情報を、サーバリスト１１２に登録する。
（３）管理コンソール２４０１が、VMリスト１１１から特定されるVM毎に、VMの資源利用率を表す情報を、パターンDB１１３に格納する。パターンDB１１３に格納される、VMの資源利用率の値は、例えば、利用者が過去に利用した仮想デスクトップ（VM)の資源利用率を基に決定されて良いし、所定の試験運用期間中での仮想デスクトップ（VM）の資源利用率を表す値であっても良い。
（４）管理者によって入力された情報は、パラメータ「HighCPULevel」及び「LowCPULevel」を含む。管理コンソール２４０１が、それらのパラメータを、パラメータDB２４０２に格納する。
（５）管理者によって入力された情報は、前述したパラメータK（許容範囲：K）を含む。管理コンソール２４０１が、パラメータKを、パラメータDB２４０２に格納する。
（６）管理者によって入力された情報は、前述したパラメータT（再配置間隔：T）を含む。管理コンソール２４０１が、パラメータTを、パラメータDB２４０２に格納する。【００６３】
次に、ステップ５０１では、管理端末１０５が、管理者の操作に従い、管理部１１８にVM配置命令を送信する。管理部１１８は、VM配置命令を受け、ステップ５０２において、配置決定部１１６を起動し、ステップ５０３で、配置決定部１１６に複数のパラメータを渡す。それら複数のパラメータは、例えば、下記のパラメータ、
（１）配置すべきVMの集合:  L、
（２）利用可能なサーバの集合：  S、
（３）HighCPULevel及びLowCPULevel、
（４）許容範囲:  K、
である。ただし、Lの値は、VMリスト１１１に登録されている全てのVMに関する情報（例えば、全てのVMのVM名）である。また、Sの値は、サーバリスト１１２に登録されている全てのサーバに関する情報（例えば、全てのサーバのIPアドレス）である。また、HighCPULevel、LowCPULevel及びKの値は、ステップ４０２において管理者が入力した値である。【００６４】
ステップ５０４では、配置決定部１１６が、管理部１１８から受けた複数のパラメータに基づいて、VMの配置を決定し、配置結果（どのサーバにどのVMを配置するかを表す情報）を、ステップ５０５において、配置結果DB１１７に格納する。【００６５】
ステップ５０６では、配置決定部１１６が、配置結果の格納が完了したことを、配置実行部１１５に通知する。配置実行部１１５は、その通知を受けて、ステップ５０７およびステップ５０８において、配置結果DB１１７から、どのサーバにどのVMを配置すべきかを特定し、ステップ５０９において、特定した通りにVMを配置するべくVM配置を実行する。具体的には、例えば、配置実行部１１５は、配置結果DB１１７のサーバ名２５０１に該当するサーバ（以下、この段落において「対象サーバ」と言う）を起動する。配置実行部１１５は、対象サーバに対応するVM集合２５０２に属する全てのVMを対象サーバに配置する。対象サーバに対応するVM集合２５０２に属する１つのVM（以下、この段落において「対象VM」と言う）を例に取ると、その処理は、例えば次の通りである。すなわち、配置実行部１１５は、対象VMが対象サーバに存在するか否かの第１の判断を行う。この第の判断の結果が否定的の場合、配置実行部１１５は、対象サーバ以外のサーバに対対象VMが存在するか否かの第２の判断を行う。この第２の判断の結果が肯定的の場合、配置実行部１１５は、対象サーバ以外のサーバから対象サーバに対象VMを移動する。この第２の判断の結果が否定的の場合、配置実行部１１５は、対象サーバに対象VMを新規に作成させる。このようなVM配置の完了後、配置実行部１１５が、ステップ５１０で、管理部１１８に完了を通知する。ステップ５１１において、管理者は、管理コンソール２４０１から管理端末１０５を通じて、配置の結果を確認することができる。なお、ここで確認される配置結果（管理コンソール２４０１から管理端末１０５に送信される配置結果）は、例えば、
（＊）どのサーバにどのVMが配置されたかを表す情報、
（＊）VM配置後におけるサーバの資源利用率とVMの資源利用率を表す情報、
である。【００６６】
次に、図７のステップ５０４を説明する。【００６７】
図８は、図７のステップ５０４の詳細な流れの一例を示すフローチャートである。【００６８】
まず、ステップ６０１において、配置決定部１１６が、パラメータSが表す複数のサーバの中から、１つのサーバを選ぶ。サーバは、ランダムに選択されても良いし、所定の規則に従って選択されても良い（例えば、新規導入されてからの稼動時間が少ない順にサーバが選択されるようになっていても良い）。図８及び図９の説明において、ステップ６０１で選択されたサーバを「選択サーバ」と言い、選択サーバを表す情報を、「NextServer」と言う。【００６９】
ステップ６０２では、配置決定部１１６が、NextServerに配置するVMの集合を、パラメータLが表す１以上のVMの中から選択する。図８及び図９の説明において、選択されたVM集合を「選択VM集合」と言い、選択VM集合を表す情報を「Q_in」と意う。【００７０】
ステップ６０３では、配置決定部１１６が、NextServerとQ_inとを配置結果DB１１７へ格納し、Q_inに属するVMを示す情報を、パラメータLより削除する。【００７１】
ステップ６０１およびステップ６０２は、パラメータLが表すVMの数がゼロになるまで繰り返し実行される。なお、本実施例では、配置するVMの数及びVMに要求される性能に比べて、サーバの数及び性能は十分あると仮定する。データセンタ１００に設置されたサーバだけでは足りない場合は、データセンタ１００の外部のサーバ（例えば、パブリッククラウドのサーバ）にVMが配置されても良い。【００７２】
図９は、図８のステップ６０２の詳細な流れの一例を示すフローチャートである。【００７３】
ステップ６０２では、配置決定部１１６が、選択サーバ（NextServerが表すサーバ）に配置するVMを、パラメータLが表すVM集合より選択し、選択したVMを選択VM集合（Q_inが表すVM集合）に格納する。ここでは、例えば、既に先に選択されているVMとCPU利用時間帯が最も違うVMが優先的に選択されて良い。最初に選択されるVMは、パラメータLが表すVM集合のうちのいずれのVMであっても良いし、所定の規則に従うVM（例えば、CPU利用率が最も高いVM）であっても良い。【００７４】
ステップ７０１では、配置決定部１１６が、選択サーバに配置するVMの候補を表す情報として、Q_outを作成する。Q_outは、VMの集合を表す情報である。Q_outの初期値はLである。そして、選択サーバに配置されるVMの集合を表すQ_inの初期値は、ゼロである。【００７５】
ステップ７０２では、配置決定部１１６が、Q_outが表すVM集合のうち、CPU利用率の一番高いVMを選択する。ここで選択されたVMを、「第１種の選択VM」と言い、第１種の選択VMを表す情報を「BigVM」と言う。配置決定部１１６が、BigVMをQ_inに含める。そして、配置決定部１１６が、BigVMをQ_outから削除する。【００７６】
次に、ステップ７０３では、配置決定部１１６が、Q_inが表す１以上のVM（VM集合）のCPU利用率の和を、時区間別に計算する。その計算結果を、分布Pとする。例えば、分布Pは、時間をｘ軸（又はｙ軸）としCPU利用率の和をｙ軸（又はｘ軸）としたｘｙ直行座標系のグラフとすることができる。なお、分布Pの計算を、例えば次のように行ってもよい。すなわち、ステップ７０３では、Q_inが表すVMの集合が、{VM_1,VM_2,…,VM_N}とで良い。ここで、Nは、Q_inが表すVMの数である。なお、VM_nのCPU利用率の変化２１２は、以下の値を持つと仮定して良い。すなわち、VM_nのw番目の時区間のCPU利用率=Value_n_w、下記数１。
【数１】
2012053393.tif 000003
Hは、VMのCPU利用率の変化212の時区間の数である。図２に示す例では、0時〜6時,7時〜12時,13時〜18時,19時〜24時という4時区間があるため、この場合、H=4となる。そこで、分布PのH個の時区間のCPU利用率をP_1,P_2,…,P_Hとする。P_1,P_2,…,P_Hの各値は、以下のように計算されてもよい。P_w=Value_1_w+Value_2_w+…+Value_N_w、下記数２。
【数２】
2012053393.tif 000004
【００７７】
次に、ステップ７０４では、配置決定部１１６が、Q_outが表すVM集合から、分布Pと相関係数が一番低いVMを選択する。ここで選択されたVMを、「第２種の選択VM」と言い、第２種の選択VMを表す情報を「MinVM」と言う。配置決定部１１６が、MinVMをQ_inに含める。そして、配置決定部１１６が、MinVMをQ_outから削除する。なお、Q_outの中にあるVM_checkという任意のVMとPの相関係数の計算は、例えば、次のように行ってもよい。すなわち、VM_checkのCPU利用率の変化２１２は、以下の値を持つ、
（＊）VM_checkのh番目の時区間のCPU利用率の値は、Value_check_hである。
（＊）hは1からHまでの間の値を取る。
と仮定して良い。そこで、VM_checkとPの相関係数は、下記数３でもよい。ここで、Value_check_aveは、Value_check_1,Value_check_2,..,Value_check_Hの H個の値の平均値である。なおP_ave は、P_1,P_2,..,P_Hの H個の値の平均値である。
【数３】
2012053393.tif 000005
【００７８】
次に、ステップ７０５では、配置決定部１１６が、Q_inが表す全てのVMのCPU利用率の平均値（平均CPU利用率）が許容範囲Kよりも高いか否かを判断する。この判断の結果が肯定的の場合（ステップ７０５：YES）、ステップ７０６及び７０７が実行され、この判断の結果が否定的の場合（ステップ７０５：NO）、ステップ７０６がスキップされ、ステップ７０７が実行される。【００７９】
ステップ７０６では、配置決定部１１６が、MinVMをQ_inから削除する。【００８０】
ステップ７０７では、配置決定部１１６が、Q_outが表すVMの数がゼロか否かを判断する。この判断の結果が肯定的の場合（ステップ７０７：YES）、図８のステップ６０２が終了となり、この判断の結果が否定的の場合（ステップ７０７：NO）、ステップ７０３が実行される。【００８１】
図８のステップ６０２の結果として、選択サーバ（NextServerが表すサーバ）に格納すべきVMの集合を表す情報であるQ_inができる。Q_inが表すVM集合（VMの組合せ）は、パラメータLが表す複数のVMから構成し得る他の全てのVM集合に比べて、複数の時区間でのCPU利用率の重複が小さい（但し、例えば、VM集合を構成するVMの数は、同じである）。言い換えれば、Q_inが表すVM集合（VMの組合せ）は、パラメータLが表す複数のVMから構成し得る他の全てのVM集合に比べて、各時区間でのCPU利用率の差が大きい。具体的には、例えば、Q_inが表すVM集合に、第１の時区間でのCPU利用率が非常に高く第２の時区間でのCPU利用率が非常に低いVMがあった場合には、第１の時区間でのCPU利用率が非常に低く第２の時区間でのCPU利用率が非常に高いVMが、Q_inが表すVM集合に新たに追加されることになる。【００８２】
次に、図６のステップ４０５での再配置を説明する。【００８３】
「再配置」とは、前述したように、サーバ群における複数のVMのうちの少なくとも１つの配置先を或るサーバから別のサーバに変更することである。これにより、サーバの負荷状況の改善が期待できる。【００８４】
再配置間隔Tは、図６のステップ４０２で管理者により入力されるパラメータである。再配置管理部２４０４は、再配置間隔T毎に、配置決定部１１６に再配置命令を出す。これにより、管理者が別途指示をすることなく自動で再配置要否判断が開始される。【００８５】
図１０は、図６のステップ４０５の詳細な流れの一例を示すシーケンス図である。【００８６】
まず、ステップ８００において、配置管理部１１８が、配置命令を配置決定部１１６に出す。【００８７】
そして、ステップ８０１において、配置決定部１１６が、配置評価結果DB１１４内のサーバ毎の稼働CPU利用率３１３を基に、サーバ毎に評価結果３１４を決定する。決定される評価結果３１４は、例えば、以下の通りである。
（１）稼働CPU利用率３１３の値がHighCPULevel以上の場合、評価結果３１４の値は「不足」である。
（２）稼働CPU利用率３１３の値がLowCPULevel以上の場合、評価結果３１４の値は「浪費」である。
（３）稼働CPU利用率３１３の値がHighCPULevelとLowCPULevelの間の場合、評価結果３１４の値は「適切」である。【００８８】
また、本実施例では、説明をわかりやすくするため、資源利用率としてCPU利用率だけに着目するが、CPU利用率だけではなく、HDD、メモリ、ネットワーク帯域に関しても同じような評価が可能である。また、複数種類のハードウェア資源の負荷（利用率）を考慮した評価も可能である。例えば、CPU、HDD及びメモリのそれぞれの利用率を同時に考慮した場合、以下のような評価基準が採用されても良い。
（１）CPU利用率が「不足」、HDD利用率が「不足」、又はメモリ利用率が「不足」の場合、評価結果３１４の値は「不足」である。
（２）上記の（１）の条件に該当せず、且つ、CPU利用率が「浪費」、HDD利用率が「浪費」又はメモリ利用率が「浪費」の場合、評価結果３１４の値は「浪費」である。
（３）上記の（１）と（２）のいずれの条件も満たされない場合、：評価結果３１４の値は「適切」である。【００８９】
ステップ８０２では、配置決定部１１６が、配置評価結果DB１１４を基に、以下のパラメータを設定する。
（１）パラメータLは、配置評価結果DB１１４の評価結果３１４が「不足」又は「浪費」となったサーバ上のVMの集合である。
（２）パラメータSは、配置評価結果DB１１４の評価結果３１４が「不足」又は「浪費」となったサーバと、サーバリスト１１２が表すサーバとの集合である。
（３）HighCPULevel及びLowCPULevelは、管理者がステップ４０２で入力した値である。
（４）許容範囲Kは、配置評価結果DB１１４の評価結果３１４が「成功」のサーバ上の初期配置時のVMのCPU利用率（平均CPU利用率）の平均である。ただし、初期配置から２回目以降の再配置の場合では、許容範囲Kは、配置評価結果DB１１４の評価結果３１４が「成功」のサーバ上の前回の再配置時のVMのCPU利用率（平均CPU利用率）の平均である。【００９０】
ステップ８０３では、ステップ８０２において設定された複数のパラメータを基に、ステップ５０４、５０５、５０６、５０７、５０８、５０９及び５１０が実行される。【００９１】
ステップ８０３が終了した後、配置決定部１１６が、配置完了したことを再配置管理部１１８へ通知する。【００９２】
本実施例では、まず、図６のステップ４０３において、複数のVMについて初期配置が行われる。そして、サーバ上のVMが運用されている間、再配置間隔T毎に、サーバの負荷状況が評価される。資源が不足又は浪費となったサーバだけを対象に、ステップ４０５において、再配置が実行される。これによって、資源が不足及び浪費しているサーバの数をなるべく少なくすることができる。【００９３】
本実施例によれば、サーバが一台ずつ選択され、選択されたサーバに、CPU利用率の合計が許容範囲K以下になるようにVMが配置される。これにより、サーバの台数を事前に決める必要がなく、必要最小限のサーバ数で必要なVMを稼動させることができる。【００９４】
また、本実施例によれば、サーバに既に配置されることが決定された１以上のVMのCPU利用率の分布Pと相関関係が最も小さいVMが、そのサーバに配置されるVMとして決定される。これにより、各時区間で、１つのサーバにおいて、複数のCPU利用率がバランス良くばらつくので、サーバの資源に過不足が生じないようにすることが期待できる。【００９５】
さらに、本実施例によれば、再配置の場合、許容範囲Kが、配置評価結果DB１１４の中のサーバ稼動実績により更新される。このため、許容範囲Kが、サーバの稼働状況に応じた適切な値になることが期待できる。つまり、本実施例によれば、再配置の際に、すでに運用したサーバの評価結果を参考に、より適切にVMを配置することの確率を上げることが期待できる。【００９６】
なお、実施例１で述べた配置対象のVMは、仮想的な記憶資源（仮想HDD、以下「VD」と呼ぶ）がサーバのローカル記憶装置に格納されるVM（以下、ローカルVMと呼ぶ）に限らず、VDがインターネット或いはWAN（Wide  Area  Network）或いはLAN）（Local  Area  Network）などのネットワークを介してアクセスされる記憶装置（以下、ネットワークストレージと呼ぶ）に格納されるVM（以下、ネットワークVMと呼ぶ）でもよい。ネットワークVMの場合、VMとVDの間の接続には、例えばiSCSI（Internet  Small  Computer  System  Interface）またはNFS（ネットワークファイルシステム）など、ネットワーク経由でデータを送受信できるプロトコルが使用されてもよい。また、VMの動作基盤であるサーバは、iSCSIやNFSなどを用いたネットワーク通信機能を有して、ネットワークストレージとして利用されても良い。サーバがネットワークストレージとしても利用される場合、ネットワークVMのVDがサーバのローカル記憶装置に格納されても、VMとVDの間の通信はiSCSIやNFSなど、ネットワーク経由でデータ送受信するプロトコルが使用されて良い。ネットワークVMの一つの特徴は、ステップ403および405は、VM稼働中でも実行できることにある。【００９７】
なお、実施例１で述べた配置の対象は、ローカルVMとネットワークVMが混在したVMのグループであってもよい。【００９８】
実施例１で述べた配置の対象がネットワークVMの場合、VMのサーバへの配置とは独立して、VDのネットワークストレージへの配置が行われてもよい。具体的には、例えば、実施例１で述べたVM配置手法と同様の手法でVDが各ネットワークストレージへ配置されてもよい。この場合、実施例１で用いられたCPU利用率の変化２１２に代えて又は加えて、HDD利用率の変化２１３が利用されてもよい。【００９９】
実施例１で述べた配置の対象がネットワークVMの場合、VMがVDへアクセスしやすくするために、VDが格納されるネットワークストレージと高速に通信できるサーバにVMが配置されるように配置方法が調整されてもよい。
【実施例２】
【０１００】
以下、本発明の実施例２を説明する。その際、実施例１との相違点を主に説明し、実施例１との共通点については説明を省略或いは簡略する。【０１０１】
本実施例では、異なる複数のタイプのVMが配置される。【０１０２】
図１１は、本発明の実施例２に係るVM配置装置を含んだシステム全体の構成例を示す。【０１０３】
本実施例によれば、内部資源９０２におけるサーバ（内部サーバ）１０３（１０４）の他に、外部資源９０３におけるサーバ（外部サーバ）９０４にも、VMが配置され得る。内部資源９０２は、サーバ１０３（１０４）と、ネットワークファイルサーバ（以下、ファイルサーバ）９０６とを含む。外部資源９０３は、外部サーバ９０４を含む。VM配置装置９０７が、LAN１０２を介してファイルサーバ９０６と通信することができ、且つ、WAM９０５を介して外部サーバ９０４と通信することができる。以下、内部サーバと外部サーバを特に区別しない場合には、単に「サーバ」と言う。【０１０４】
外部資源９０３は、いわゆるパブリッククラウドなど、情報処理能力を貸し出す基盤である。外部サーバ９０４は、仮想化ソフト（以下、外部仮想かソフト）９１１を有する。外部サーバ９０４の仮想化ソフト９１１により、VMを動作させることが可能である。また、外部仮想化ソフト９１２と仮想化ソフト１３１（１４１）は、動作中のVMをサーバ間で移動する機能を有する。ただし、移動されるVM（ネットワークVM）のVD（仮想HDD)は、ファイルサーバ９０６に置かれる必要がある。【０１０５】
図１２は、VM配置装置９０７の構成例を示す。【０１０６】
VM配置装置９０７は、ローカルVM配置部１００１と、資源監視部１００３と、ネットワークVM移動部１００４と、外部資源利用情報DB１００５と、VM詳細情報DB１００６とを有する。各機能１００１、１００３及び１００４は、VM配置装置９０７内のCPUで所定のコンピュータプログラムが実行されることにより発揮される機能である。【０１０７】
ローカルVM配置部１００１は、内部サーバ１０３（１０４）へVMを配置する。【０１０８】
資源監視部１００３は、各サーバの資源使用状況を定期的に監視する。【０１０９】
ネットワークVM移動部１００４は、サーバ上のローカルVMを選択してネットワークVMへ変える。また、ネットワークVM移動部１００４は、内部サーバ１０３（１０４）と外部サーバ９０４との間でのネットワークVMの移動を実行する。【０１１０】
外部資源利用情報DB１００５は、アカウント情報など外部資源９０３を利用するための情報を格納する。【０１１１】
VM詳細情報DB１００６は、ネットワークVMを選択するための情報を格納する。【０１１２】
管理端末１０５は、外部資源利用情報DB１００５及びVM詳細情報DB１００６の情報の更新、及び、VM配置装置９０７の動作状況を表す情報を表示する。【０１１３】
図１３は、VM詳細情報DB１００６の構成例を示す。【０１１４】
VM詳細情報DB１００６は、VM毎に、下記の情報、
（１）VMの名称であるVM名２３０１、
（２）VMで重要なデータを扱うかどうかを表す重要性２３０２、
（３）VMへ外部（例えば社外）からのアクセスがあるかどうかを表す外部アクセス２３０３、
を有する。例えば、社内ポリシー上で機密情報と決めたデータを扱うVMについては、重要性２０３２の値が「YES」となり、それ以外のVMについては、重要性２０３２の値が「NO」となって良い。また、例えば、内部（例えば社内）のIPアドレスからの画面転送の接続が一度もないVMについては、外部アクセス２３０３の値が「NO」となり、それ以外のVMについては、外部アクセス２３０３の値が「YES」であって良い。【０１１５】
図１４は、実施例２で行われる処理の全体の流れの一例を示すフローチャートである。【０１１６】
まず、ステップ１１００において、内部サーバ群、VM配置装置９０７および管理端末１０５が起動され、LAN１０２に接続される。【０１１７】
次に、ステップ１１０１において、ローカルVM配置部１００１が、内部サーバ１０３（１０４）上にVMを配置する。なお、VM配置装置９０１が配置するVMは、全て、内部サーバのローカル記憶装置１３２に格納されるVD（仮想HDD）を利用するローカルVMである。【０１１８】
ローカルVM配置部１００１は、実施例１で述べたVM配置装置１０１と同じ機能を実現してもよい。この場合、ステップ１１０１におけるVM配置手法は、実施例１で述べた手法と同様の手法であって良い。【０１１９】
ステップ１１０２では、管理端末１０５が、管理者から情報の入力を受け、その情報を、外部資源利用情報DB１００５及び／又はVM詳細情報DB１００６へ格納する。【０１２０】
その後、ステップ１１０３及びステップ１１０４が行われ、その後、ステップ１１０５で、例えば図６のステップ４０７と同様処理が終了する。【０１２１】
図１５は、図１４のステップ１１０３の詳細な流れの一例を示すシーケンス図である。【０１２２】
まず、ステップ１２００において、管理者が、ネットワークVM移動部１００４を起動する。【０１２３】
次に、ステップ１２０１では、ネットワークVM移動部１００４が、外部資源利用情報DB１００５を基に、外部サーバ９０４に接続し、内部サーバからVMを移動できるような準備（例えば、事前にログインすること）を行う。ステップ１２０１の結果、外部サーバ９０４が、ステップ１２０２において、VMを受け入れ可能な状態になる。【０１２４】
次に、ステップ１２０３において、ネットワークVM移動部１００４が、VMを配置したサーバごとに、ネットワークVMに変更する対象として、一つのローカルVMを選択する。ネットワークVM移動部１００４は、次の基準により、ローカルVMを選択することができる。
（１）ステップ１１０１におけるVM配置手法が、実施例１で述べた配置方法と同様である場合、ステップ７０４において最後にQ_inが表すVM集合に含められるVMが、ネットワークVMとして選択される。その選択されたVMを別のサーバに移動することにより、サーバ内のVMの資源利用時区間の重複度が低くなることが期待できる。
（２）ステップ１１０１で利用するVM配置手法に依存せず、以下の基準で、ローカルVMがネットワークVMとして選択されて良い。
（＊）VM詳細情報DB１００６内の重要性２３０２の値が「NO」のローカルVMが優先的に選択される。つまり、重要なデータがないVMが選択される。
（＊）VM詳細情報DB１００６内の外部アクセス２３０３の値が「YES」のローカルVMが優先的に選択される。つまり、社外からアクセスされるVMが選択される。社外からのアクセスの数がカウントされ、そのカウント値が多いVMほど優先的に先に選択されても良い。これにより、社外からのアクセスが多いVMが選択されることになる。「社外からのアクセス」とは、WAN又はインターネットを介したアクセスである。
（＊）資源監視部１００３の監視結果を表す情報を基に、HDD利用率が小さいVMほど優先的に選択されて良い。【０１２５】
ステップ１２０４では、ネットワークVM移動部１００４が、ステップ１２０３で選択されたVMのVDをファイルサーバ９０６へ移動する。これにより、そのVMがネットワークVMとなる。【０１２６】
次に、ステップ１２０５では、ネットワークVM移動部１００４が、資源監視部１００３へ監視を開始するように命令する。【０１２７】
すると、ステップ１２０６において、資源監視部１００３が、内部サーバ群の資源利用状況の監視を開始する。資源利用状況の監視とは、サーバの資源利用率（例えばCPU利用率）がG%より高くなる場合に、ネットワークVM移動部１００４へ通知を行うことである。なお、閾値Gのデフォルト値は、管理者任意の値（例えば85%）でよい。なお、管理者が閾値Gの値を変更してもよい。【０１２８】
図１６は、図１４のステップ１１０４の詳細な流れの一例を示すシーケンス図である。【０１２９】
ステップ１１０４では、資源監視部１００３が、VM運用中のサーバの負荷を監視し、負荷が高い時に、ネットワークVMを移動させる。【０１３０】
まず、ステップ１３００において、資源監視部１００３が、内部サーバ１０３（１０４）の資源を監視する状態（モード）となる。【０１３１】
ステップ１３０１では、内部サーバ１０３でVMが稼動する。【０１３２】
ステップ１３０２において、サーバ１０３のCPU利用率がG%より高くなる。【０１３３】
そこで、ステップ１３０３において、資源監視部１００３が、サーバ１０３の資源不足（サーバ１０３のCPU利用率がG%（例えばHighCPULevel）を越えたこと）を検出し、ステップ１３０４において、ネットワークVM移動部１００４への第１の通知を送信する。第１の通知は、例えば、サーバ１０３のCPU利用率とG%との差分を表す値を含んで良い。【０１３４】
ステップ１３０５において、ネットワークVM移動部１００４が、その第１の通知を受けて、サーバ１０３へ１以上のネットワークVM（例えば、VMｂ１３４）を外部サーバ９０４へ移動する命令を出す。１以上のネットワークVMは、第１の通知を基に決定された１以上のVM、例えば、サーバ１０３のCPU利用率とG%（例えばHighCPULevel）との差分よりもCPU利用率の合計が大きい１以上のVMであって良い。CPU利用率が大きいVMほど優先的にネットワークVMとして選択されて良い。【０１３５】
すると、ステップ１３０６において、サーバ１０３が、VMｂ１３４を外部サーバ９０４へ移動する。【０１３６】
ステップ１３０７では、VMｂ１３４が、外部サーバ９０４上の外部仮想化ソフト９１１上で動作する。【０１３７】
ステップ１３０８では、サーバ１０３の状態が、VMｂ１３４が動作するための資源を十分に確保されている状態になる。例えば、サーバ１０３のCPU利用率がG%（例えばHighCPULevel）以下の状態が一定時間続いている。【０１３８】
すると、ステップ１３０９で、資源監視部１００３が、サーバ１０３の状態が、VMｂ１３４が動作するための資源を十分に確保されている状態になっていることを検出し、ネットワークVM移動部１００４へ第２の通知を送信する。第２の通知は、例えば、サーバ１０３のCPU利用率とG%との差分を表す値を含んで良い。【０１３９】
ステップ１３１０において、VM移動部１００４が、第２の通知を受けて、外部サーバ９０４へVMｂ１３４をサーバ１０３へ戻す命令を出す。ステップ１２１１において、外部サーバ９０４の外部仮想化ソフト９１１が、VMｂ１３４をサーバ１０３へ移動する。外部サーバから戻される１以上のVM（戻す命令の対象となる１以上のVM)は、第２の通知を基に決定された１以上のVM、例えば、サーバ１０３のCPU利用率とG%（例えばHighCPULevel）との差分よりもCPU利用率の合計が小さい１以上のVMであって良い。CPU利用率が小さいVMほど優先的にネットワークVMとして選択されて良い。【０１４０】
なお、ステップ１３０８で想定した状況が発生しない場合は、VMｂ１３４がシステム動作終了まで外部サーバ９０４で動作することになる。この場合は、次回システム起動する時に、ネットワークVM移動部１００４が、ステップ１３１０を実行することで、VMｂ１３４をサーバ１０３に戻しても良い。【０１４１】
上記のように、本実施例においては、VDへのアクセス速度が速いローカルVMをメインに利用することで利用者の満足度を高く維持することができる。一方、サーバの資源変動になるべく迅速に対応できるように、VM稼働中でもVMを或るサーバから別のサーバへ移動することができる。つまり、本実施例は、VMのタイプを基に、そのVMの配置先として適切なサーバを選択することができる。【０１４２】
また、本実施例によれば、サーバの資源不足が発生した時、外部資源へ移動するVMとして、サーバに残るVM同士の資源利用時区間が互いにかさならないようなVMを選択することができる。これにより、サーバの資源を有効に活用することが期待できる。【０１４３】
また、本実施例によれば、VMの扱うデータの重要性、VMにアクセスするクライアントの存在場所（例えば、社外か社内か）、及び、VMのHDD利用率を少なくとも１つを基に、外部資源へ移動するVMが選択される。これにより、VMの移動によるユーザへの影響が少ないことが期待できる。【０１４４】
また、本実施例によれば、サーバの資源の不足が発生した際に、外部資源（例えばパブリッククラウド）９０３にVMが移動され、サーバの資源が浪費となった際に、外部資源９０３からVMが戻されるといったことを、管理者の操作を必要とせずに実現することができる。【０１４５】
以上、本発明の幾つかの実施例を説明したが、これらは、本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。すなわち、本発明は、他の種々の形態でも実施する事が可能である。【０１４６】
例えば、VMの配置先のサーバは、１つのサーバでも良いし、複数のサーバからなるグループ（サーバプール）であっても良い。後者の場合、上述した「サーバ群」は、複数のサーバプールを含んで良い。【０１４７】
また、例えば、実施例１と実施例２が独立して動作することもできるし、実施例１と２が組み合わされた１つのシステムが実現されても良い。また、或る実施例の構成の一部が他の実施例の構成を加えられても良い。また、各実施例の構成の一部について、他の構成の追加、削除又は置換が可能である。【０１４８】
たとえば、以下のように実施例１と実施例２が組み合わされた１つのシステムが実現されてもよい。【０１４９】
また、上記の各構成、機能、処理部等は、それらの一部または全部を、例えば集積回路で設計するなどによりハードウェアで実現してもよい。また、上記の各構成、機能等は、CPUがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、データベースなどの情報は、メモリやHDDなどの記憶装置またはICメモリカード、SDメモリカード、DVD（Digital  Versatile  Disk）などの記憶媒体に置くことができる。
【符号の説明】
【０１５０】
１０１…VM配置装置  １０３，１０４…サーバ  １０５…管理端末  １３１，１４１…仮想化ソフト
【図１】
2012053393.tif 000006
【図２】
2012053393.tif 000007
【図３】
2012053393.tif 000008
【図４】
2012053393.tif 000009
【図５】
2012053393.tif 000010
【図６】
2012053393.tif 000011
【図７】
2012053393.tif 000012
【図８】
2012053393.tif 000013
【図９】
2012053393.tif 000014
【図１０】
2012053393.tif 000015
【図１１】
2012053393.tif 000016
【図１２】
2012053393.tif 000017
【図１３】
2012053393.tif 000018
【図１４】
2012053393.tif 000019
【図１５】
2012053393.tif 000020
【図１６】
2012053393.tif 000021
【手続補正書】
【提出日】平成25年11月1日(2013.11.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の物理計算機に複数の仮想計算機を配置する装置であって、
複数の時区間のそれぞれにおける仮想計算機の資源負荷値を仮想計算機毎に表す情報である仮想計算機負荷情報を記憶する記憶部と、
複数の物理計算機から第一の物理計算機を選択し、前記仮想計算機負荷情報を基に、選択される仮想計算機の資源負荷値の合計が前記選択された第一の物理計算機に設定された所定の値以下の範囲で、各時区間について資源負荷値の差が最も大きくなるような２以上の仮想計算機を選択し、選択した２以上の仮想計算機を前記選択された第一の物理計算機に配置する制御部と
を有する装置。
【請求項２】
請求項１記載の装置であって、
前記制御部が、複数の仮想計算機が配置された後の複数の物理計算機の資源負荷値を基に、前記複数の物理計算機のうち、資源の過不足が生じている物理計算機を特定し、特定した物理計算機に対して、仮想計算機の追加又は削除である再配置を行う、
装置。
【請求項３】
請求項２記載の装置であって、
前記複数の物理計算機は、１以上の内部物理計算機と外部物理計算機とを含み、
前記制御部が、資源が不足している内部物理計算機である対象内部物理計算機を特定した場合、前記対象内部物理計算機から前記外部物理計算機に或る仮想計算機を移動する、
装置。
【請求項４】
請求項３記載の装置であって、
前記或る仮想計算機は、前記対象内部物理計算機がアクセスするローカル型の記憶装置に格納される仮想計算機であるローカル型の仮想計算機であり、
前記制御部が、前記ローカル型の仮想計算機の仮想的な記憶資源のイメージである仮想資源ファイルを、前記ローカル型の記憶装置から前記外部物理計算機がアクセス可能なファイルサーバに移動することで、前記ローカル型の仮想計算機をネットワーク型の仮想計算機に変更し、その後、前記ネットワーク型の仮想計算機を前記対象内部物理計算機から前記外部物理計算機に移動する、
装置。
【請求項５】
請求項４記載の装置であって、
各仮想計算機は、仮想デスクトップとして利用される仮想計算機である、
装置。
【請求項６】
請求項４記載の装置であって、
前記外部物理計算機は、パブリッククラウドの物理計算機である、
装置。
【請求項７】
請求項４記載の装置であって、
前記制御部は、同一の内部物理計算機に配置する仮想計算機を、前記同一の内部物理計算機に配置されるVMの資源負荷値の合計が所定の値以下の範囲で、１つずつ選択するようになっており、その際、選択される仮想計算機は、既に選択されている１以上の仮想計算機の各時区間での資源負荷値との差がなるべく大きくなるような資源負荷値となった仮想計算機であり、
前記ネットワーク型の仮想計算機は、前記対象内部物理計算機に配置される仮想計算機として最後に選択された仮想計算機である、
装置。
【請求項８】
請求項４記載の装置であって、
前記記憶部は、前記仮想計算機毎に重要なデータを扱うかを表す重要性を示す情報を記憶し、
前記制御部は、前記重要性を示す情報に基づいて、重要ではないデータを扱うローカル型の仮想計算機を前記ネットワーク型の仮想計算機に変更する、
装置。
【請求項９】
請求項４記載の装置であって、
前記ネットワーク型の仮想計算機は、WAN又はインターネットを介してアクセスされる仮想計算機である、
装置。
【請求項１０】
請求項４記載の装置であって、
前記ネットワーク型の仮想計算機は、記憶資源の利用率が最も小さい仮想計算機である、
装置。
【請求項１１】
請求項３記載の装置であって、
前記制御部が、前記対象内部物理計算機の資源不足が解消したことを検出した場合、前記外部物理計算機から前記移動した仮想計算機を前記対象内部物理計算機に戻す、
装置。
【請求項１２】
請求項２記載の装置であって、
前記記憶部が、配置結果評価情報を記憶し、
前記配置結果評価情報は、物理計算機毎に、物理計算機の資源負荷値を示す情報を含み、
資源が不足している物理計算機は、前記配置結果評価情報が表す資源負荷値が、第１の値以上の物理計算機であり、
資源が過剰な物理計算機は、前記配置結果評価情報が表す資源負荷値が、前記第１の値より小さい第２の閾値以下の物理計算機である、
装置。
【請求項１３】
複数の物理計算機に複数の仮想計算機を配置する方法であって、
複数の物理計算機から第一の物理計算機を選択し、
複数の時区間のそれぞれにおける仮想計算機の資源負荷値を仮想計算機毎に表す情報である仮想計算機負荷情報を基に、選択される仮想計算機の資源負荷値の合計が前記選択された第一の物理計算機に設定された所定の値以下の範囲で、各時区間について資源負荷値の差が最も大きくなるような２以上の仮想計算機を選択し、
選択した２以上の仮想計算機を前記選択された第一の物理計算機に配置する、
方法。
【請求項１４】
複数の物理計算機に複数の仮想計算機を配置することをコンピュータに実行させるためのコンピュータプログラムであって、
複数の物理計算機から第一の物理計算機を選択し、
複数の時区間のそれぞれにおける仮想計算機の資源負荷値を仮想計算機毎に表す情報である仮想計算機負荷情報を基に、選択される仮想計算機の資源負荷値の合計が前記選択された第一の物理計算機に設定された所定の値以下の範囲で、各時区間について資源負荷値の差が最も大きくなるような２以上の仮想計算機を選択し、
選択した２以上の仮想計算機を前記選択された第一の物理計算機に配置する、
ことコンピュータに実行させるためのコンピュータプログラム。
【国際調査報告】
2012053393.tif 000022
2012053393.tif 000023
2012053393.tif 000024