(57)【要約】【課題】仮想化環境において仮想マシンの使用目的を好適に達成できるように仮想マシンを移行する。【解決手段】管理サーバ１００は、物理サーバ１０３に発生した障害の履歴を、例えば物理サーバ障害履歴情報テーブル１２５、物理サーバ障害発生回数情報テーブル１２６、仮想マシン稼働履歴情報テーブル１２７および障害時マシン構成履歴情報テーブル１２９として記憶し、各物理サーバ１０３において障害が発生した程度を示す障害率などを、仮想マシン１３１の使用目的に基づいて算出する。算出の結果、その障害率などで示される障害の程度が最も小さな物理サーバ１０３に仮想マシン１３１を移行する。【選択図】図１
2012118841.tif 000002
【特許請求の範囲】
【請求項１】
複数の仮想マシンが稼働する複数の物理サーバを管理し、前記物理サーバに障害が発生すると、当該物理サーバ上で稼働する仮想マシンを移行仮想マシンとしていずれの物理サーバに移行するかを決定する仮想マシン管理装置において、
前記仮想マシン管理装置の記憶部は、
前記物理サーバと、当該物理サーバ上で稼働する仮想マシンとの組み合わせを示す情報と、
前記仮想マシンごとに、当該仮想マシンの使用目的と、前記使用目的に応じた障害に関する閾値と、仮想マシンに関する複数種類のリソースに対し設定した優先度とを定めた情報と、
前記物理サーバごとに、当該物理サーバの運用時間と、前記リソースにより分類される障害の種類と、障害が存在していた時間を示す障害時間とを定めた情報と、
前記障害が発生した時点における前記組み合わせと、当該組み合わせにおいて前記障害が発生した回数を示す障害回数とを定めた情報と、を記憶しており、
前記仮想マシン管理装置の制御部は、
前記物理サーバに障害が発生すると、当該発生した障害の種類を特定し、当該障害に応じて前記記憶部に記憶されている情報を更新する制御と、
前記物理サーバごとに、前記運用時間に対する前記障害時間の割合を、前記優先度により重み付けした障害率を算出する制御と、
前記算出した障害率が、前記障害が発生した物理サーバ上で稼働する前記移行仮想マシンに定めた前記閾値を下回る物理サーバを、前記移行仮想マシンの移行先候補とする制御と、
前記移行先候補となる物理サーバのうち、移行後の前記組み合わせにおいて前記障害回数が０となる物理サーバを前記移行仮想マシンの移行先とする制御と、を実行する
ことを特徴とする仮想マシン管理装置。
【請求項２】
前記仮想マシン管理装置の記憶部は、
前記物理サーバごとに、当該物理サーバで発生した前記障害の種類と、当該種類の障害が発生した回数を示す物理サーバ用発生回数を定めた情報を記憶しており、
前記仮想マシン管理装置の制御部は、
前記物理サーバごとに、前記物理サーバ用発生回数を、前記優先度により重み付けする制御と、
前記移行先候補となる物理サーバのうち、前記重み付けした物理サーバ用発生回数が０となる物理サーバを、前記移行仮想マシンの移行先とする制御と、を実行する
ことを特徴とする請求項１に記載の仮想マシン管理装置。
【請求項３】
前記仮想マシン管理装置の記憶部は、
前記仮想マシンごとに、当該仮想マシンが稼働していた物理サーバと、前記稼働の回数を示す稼働回数と、当該物理サーバで発生した前記障害の種類と、当該種類の障害が発生した回数を示す仮想マシン用発生回数を定めた情報を記憶しており、
前記仮想マシン管理装置の制御部は、
前記仮想マシンごとに、前記移行先候補となる物理サーバにおける前記稼動回数に対する前記仮想マシン用発生回数の割合を、前記優先度により重み付けした障害可能率を算出する制御と、
前記移行先候補となる物理サーバのうち、前記算出した障害可能率が最も小さい物理サーバを、前記移行仮想マシンの移行先とする制御と、を実行する
ことを特徴とする請求項１または請求項２に記載の仮想マシン管理装置。
【請求項４】
前記仮想マシン管理装置の制御部は、
前記移行先候補とした物理サーバに、前記移行仮想マシンを移行するのに十分な空きリソースが存在しない場合、前記移行先候補とした物理サーバ上で稼働する仮想マシンのうち、前記移行仮想マシンに定めた前記閾値を超える閾値を持つ仮想マシンを特定する制御と、
前記特定した仮想マシンを他の物理サーバに移行することで、前記十分な空きリソースが存在する場合、前記移行先候補とした物理サーバを、前記移行仮想マシンの移行先候補とする制御と、を実行する
ことを特徴とする請求項１に記載の仮想マシン管理装置。
【請求項５】
複数の仮想マシンが稼働する複数の物理サーバを管理し、前記物理サーバに障害が発生すると、当該物理サーバ上で稼働する仮想マシンを移行仮想マシンとしていずれの物理サーバに移行するかを決定する仮想マシン管理装置における移行先決定方法において、
前記仮想マシン管理装置の記憶部は、
前記物理サーバと、当該物理サーバ上で稼働する仮想マシンとの組み合わせを示す情報と、
前記仮想マシンごとに、当該仮想マシンの使用目的と、前記使用目的に応じた障害に関する閾値と、仮想マシンに関する複数種類のリソースに対し設定した優先度とを定めた情報と、
前記物理サーバごとに、当該物理サーバの運用時間と、前記リソースにより分類される障害の種類と、障害が存在していた時間を示す障害時間とを定めた情報と、
前記障害が発生した時点における前記組み合わせと、当該組み合わせにおいて前記障害が発生した回数を示す障害回数とを定めた情報と、を記憶しており、
前記仮想マシン管理装置の制御部は、
前記物理サーバに障害が発生すると、当該発生した障害の種類を特定し、当該障害に応じて前記記憶部に記憶されている情報を更新するステップと、
前記物理サーバごとに、前記運用時間に対する前記障害時間の割合を、前記優先度により重み付けした障害率を算出するステップと、
前記算出した障害率が、前記障害が発生した物理サーバ上で稼働する前記移行仮想マシンに定めた前記閾値を下回る物理サーバを、前記移行仮想マシンの移行先候補とするステップと、
前記移行先候補となる物理サーバのうち、移行後の前記組み合わせにおいて前記障害回数が０となる物理サーバを前記移行仮想マシンの移行先とするステップと、を実行する
ことを特徴とする移行先決定方法。
【請求項６】
前記仮想マシン管理装置の記憶部は、
前記物理サーバごとに、当該物理サーバで発生した前記障害の種類と、当該種類の障害が発生した回数を示す物理サーバ用発生回数を定めた情報を記憶しており、
前記仮想マシン管理装置の制御部は、
前記物理サーバごとに、前記物理サーバ用発生回数を、前記優先度により重み付けするステップと、
前記移行先候補となる物理サーバのうち、前記重み付けした物理サーバ用発生回数が０となる物理サーバを、前記移行仮想マシンの移行先とするステップと、を実行する
ことを特徴とする請求項５に記載の移行先決定方法。
【請求項７】
前記仮想マシン管理装置の記憶部は、
前記仮想マシンごとに、当該仮想マシンが稼働していた物理サーバと、前記稼働の回数を示す稼働回数と、当該物理サーバで発生した前記障害の種類と、当該種類の障害が発生した回数を示す仮想マシン用発生回数を定めた情報を記憶しており、
前記仮想マシン管理装置の制御部は、
前記仮想マシンごとに、前記移行先候補となる物理サーバにおける前記稼動回数に対する前記仮想マシン用発生回数の割合を、前記優先度により重み付けした障害可能率を算出するステップと、
前記移行先候補となる物理サーバのうち、前記算出した障害可能率が最も小さい物理サーバを、前記移行仮想マシンの移行先とするステップと、を実行する
ことを特徴とする請求項５または請求項６に記載の移行先決定方法。
【請求項８】
前記仮想マシン管理装置の制御部は、
前記移行先候補とした物理サーバに、前記移行仮想マシンを移行するのに十分な空きリソースが存在しない場合、前記移行先候補とした物理サーバ上で稼働する仮想マシンのうち、前記移行仮想マシンに定めた前記閾値を超える閾値を持つ仮想マシンを特定するステップと、
前記特定した仮想マシンを他の物理サーバに移行することで、前記十分な空きリソースが存在する場合、前記移行先候補とした物理サーバを、前記移行仮想マシンの移行先候補とするステップと、を実行する
ことを特徴とする請求項５に記載の移行先決定方法。
【請求項９】
複数の仮想マシンが稼働する複数の物理サーバを管理し、前記物理サーバに障害が発生すると、当該物理サーバ上で稼働する仮想マシンを移行仮想マシンとしていずれの物理サーバに移行するかを決定する仮想マシン管理装置をコンピュータとして機能させるにおける移行先決定プログラムにおいて、
前記仮想マシン管理装置の記憶部は、
前記物理サーバと、当該物理サーバ上で稼働する仮想マシンとの組み合わせを示す情報と、
前記仮想マシンごとに、当該仮想マシンの使用目的と、前記使用目的に応じた障害に関する閾値と、仮想マシンに関する複数種類のリソースに対し設定した優先度とを定めた情報と、
前記物理サーバごとに、当該物理サーバの運用時間と、前記リソースにより分類される障害の種類と、障害が存在していた時間を示す障害時間とを定めた情報と、
前記障害が発生した時点における前記組み合わせと、当該組み合わせにおいて前記障害が発生した回数を示す障害回数とを定めた情報と、を記憶しており、
前記仮想マシン管理装置の制御部に、
前記物理サーバに障害が発生すると、当該発生した障害の種類を特定し、当該障害に応じて前記記憶部に記憶されている情報を更新する処理と、
前記物理サーバごとに、前記運用時間に対する前記障害時間の割合を、前記優先度により重み付けした障害率を算出する処理と、
前記算出した障害率が、前記障害が発生した物理サーバ上で稼働する前記移行仮想マシンに定めた前記閾値を下回る物理サーバを、前記移行仮想マシンの移行先候補とする処理と、
前記移行先候補となる物理サーバのうち、移行後の前記組み合わせにおいて前記障害回数が０となる物理サーバを前記移行仮想マシンの移行先とする処理と、を実行する
ことを特徴とする移行先決定プログラム。
【請求項１０】
前記仮想マシン管理装置の記憶部は、
前記物理サーバごとに、当該物理サーバで発生した前記障害の種類と、当該種類の障害が発生した回数を示す物理サーバ用発生回数を定めた情報を記憶しており、
前記仮想マシン管理装置の制御部は、
前記物理サーバごとに、前記物理サーバ用発生回数を、前記優先度により重み付けする処理と、
前記移行先候補となる物理サーバのうち、前記重み付けした物理サーバ用発生回数が０となる物理サーバを、前記移行仮想マシンの移行先とする処理と、を実行する
ことを特徴とする請求項９に記載の移行先決定プログラム。
【請求項１１】
前記仮想マシン管理装置の記憶部は、
前記仮想マシンごとに、当該仮想マシンが稼働していた物理サーバと、前記稼働の回数を示す稼働回数と、当該物理サーバで発生した前記障害の種類と、当該種類の障害が発生した回数を示す仮想マシン用発生回数を定めた情報を記憶しており、
前記仮想マシン管理装置の制御部は、
前記仮想マシンごとに、前記移行先候補となる物理サーバにおける前記稼動回数に対する前記仮想マシン用発生回数の割合を、前記優先度により重み付けした障害可能率を算出する処理と、
前記移行先候補となる物理サーバのうち、前記算出した障害可能率が最も小さい物理サーバを、前記移行仮想マシンの移行先とする処理と、を実行する
ことを特徴とする請求項９または請求項１０に記載の移行先決定プログラム。
【請求項１２】
前記仮想マシン管理装置の制御部は、
前記移行先候補とした物理サーバに、前記移行仮想マシンを移行するのに十分な空きリソースが存在しない場合、前記移行先候補とした物理サーバ上で稼働する仮想マシンのうち、前記移行仮想マシンに定めた前記閾値を超える閾値を持つ仮想マシンを特定する処理と、
前記特定した仮想マシンを他の物理サーバに移行することで、前記十分な空きリソースが存在する場合、前記移行先候補とした物理サーバを、前記移行仮想マシンの移行先候補とする処理と、を実行する
ことを特徴とする請求項９に記載の移行先決定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、物理サーバ上で稼働する仮想マシンの配置先を決定する技術に関する。
【背景技術】
【０００２】
データセンタには、多くの物理サーバからなる計算機システムが導入されており、その計算機システムでは仮想化環境が実現されている。各物理サーバ上では、１台以上の仮想マシンが稼働しており、必要に応じてある物理サーバ上で稼働していた仮想マシンは別の物理サーバ上に移行（配置）される。
【０００３】
一般的には、計算機システムを運用すれば、多少なりとも物理サーバにおいて何らかの障害が発生する。前記障害には、例えば、ＣＰＵ（Central Processing Unit）障害、メモリやディスクの容量オーバ、Ｉ／Ｏ（Input/Output）エラー、ネットワークや電源の障害などが含まれる。従来では、物理サーバ上で稼働する仮想マシンを、所定の条件を満たすようにして他の物理サーバに移行する技術が知られている（例えば、特許文献１参照）。前記所定の条件には、前記障害に関する条件も含まれる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１１７７６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
計算機システムの運用では、一定以上の信頼性を確保するため、稼働率を所定値以上に維持すること、つまり、障害頻度を所定値以下に抑えることが求められる。ただ一般的には、各物理サーバはそれぞれ固有の性能を備えるとともに、各仮想マシンにはそれぞれ固有の使用目的が存在する。そのため、その使用目的を適切に達成できる物理サーバに仮想マシンを移行することが望ましく、そうでないと、障害が多発する可能性が高くなる。例えば、データベースサーバについていえば、ディスクおよびＩ／Ｏの性能が重視される。このため、仮想マシンを移行するときは、ディスクの容量オーバやＩ／Ｏエラーの無いまたはほとんど無い物理サーバを仮想マシンの移行先として選択することが望ましい。特許文献１をはじめとして、従来技術では、このように仮想マシンの使用目的を考慮して仮想マシンの好適な移行先を決定することはできない。
【０００６】
そこで本発明は、仮想化環境において仮想マシンの使用目的を好適に達成できるように仮想マシンを移行することを課題とする。
【課題を解決するための手段】
【０００７】
前記課題を解決するため、本発明では、物理サーバに発生した障害の履歴を記憶し、各物理サーバにおいて障害が発生した程度を示す障害率などを、仮想マシンの使用目的に基づいて算出する。算出の結果、その障害率などで示される障害の程度が最も小さな物理サーバに仮想マシンを移行する。
詳細は、後記する。
【発明の効果】
【０００８】
本発明によれば、仮想化環境において仮想マシンの使用目的を好適に達成できるように仮想マシンを移行することができる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態の計算機システムのソフトウェアの構成を示す図である。
【図２】本実施形態の計算機システムのハードウェアの構成の一例を示す図である。
【図３】マシン構成情報テーブル１２１のデータ構造を示す図である。
【図４】物理サーバリソース情報テーブル１２２のデータ構造を示す図である。
【図５】リソース重み付け情報テーブル１２３のデータ構造を示す図である。
【図６】仮想マシン使用目的情報テーブル１２４のデータ構造を示す図である。
【図７】物理サーバ障害履歴情報テーブル１２５のデータ構造を示す図である。
【図８】物理サーバ障害発生回数情報テーブル１２６のデータ構造を示す図である。
【図９】仮想マシン稼働履歴情報テーブル１２７のデータ構造を示す図である。
【図１０】障害タイプ一覧テーブル１２８のデータ構造を示す図である。
【図１１】障害時マシン構成履歴情報テーブル１２９のデータ構造を示す図である。
【図１２】管理サーバ１００で実行される処理を示すフローチャートである。
【図１３】仮想マシン移行先決定処理を示すフローチャートである。
【図１４】リソース譲渡可能物理サーバ判定処理を示すフローチャートである。
【図１５Ａ】移行先物理サーバ選択ロジックの処理を示すフローチャートである。
【図１５Ｂ】移行先物理サーバ選択ロジックの処理を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明を実施するための形態（以下、「実施形態」と称する）について、図面を参照して詳細に説明する。
【００１１】
≪構成≫
図１は、本実施形態の計算機システムのソフトウェアの構成を示す図である。この計算機システムは、管理サーバ１００および物理サーバ１０３を備える。物理サーバ１０３は、１以上存在する。管理サーバ１００は、例えば外部の補助記憶部１０１と接続されるようにして補助記憶部１０１を備える。管理サーバ１００および物理サーバ１０３はネットワーク１０２により通信可能に接続されている。
【００１２】
物理サーバ１０３は、１以上の仮想マシン１３１、仮想化機構部１３２およびマシン構成情報提供部１３３を備える。
仮想マシン１３１は、物理サーバ１０３上で稼働する仮想的なコンピュータである。
仮想化機構部１３２は、物理サーバ１０３上に仮想マシン１３１を構成し、稼働させる。仮想化機構部１３２は、後記するハイパーバイザ（図２参照）に等しい。
マシン構成情報提供部１３３は、物理サーバ１０３が備える仮想マシン１３１の構成情報を管理サーバ１００に送信する。構成情報（「マシン構成情報」という場合もある）とは、物理サーバ１０３が、当該物理サーバ１０３上で稼働する仮想マシン１３１と、その仮想マシン１３１に割り当てたリソースを示す情報、つまりマシン構成を示す情報であるが、詳細は後記する。
【００１３】
管理サーバ１００は、ハードウェアとしてのＣＰＵ１０４（制御部）、メモリ１０５（記憶部）および補助記憶部１０１（記憶部）を備える。
メモリ１０５は、ソフトウェアとしてマシン構成情報取得部１１１、障害監視部１１２、障害情報管理部１１３、仮想マシン移行先決定部１１４および仮想マシン移行実施部１１５を備える。
【００１４】
マシン構成情報取得部１１１は、物理サーバ１０３から、稼働する仮想マシン１３１に関する物理サーバ１０３の構成情報を受信する。
障害監視部１１２は、物理サーバ１０３を常時監視し、物理サーバ１０３に障害が発生したか否か、物理サーバ１０３が障害から回復したか否か、障害の種類などを判定する。
障害情報管理部１１３は、補助記憶部１０１が備える各種テーブルを管理する。
仮想マシン移行先決定部１１４は、障害が発生したため移行することになった仮想マシン１３１の移行先となる物理サーバ１０３を決定する。
仮想マシン移行実施部１１５は、仮想マシン移行先決定部１１４により移行先と決定した物理サーバ１０３に仮想マシン１３１を移行する。
【００１５】
補助記憶部１０１は、ソフトウェアとしてマシン構成情報テーブル１２１（図３参照）、物理サーバリソース情報テーブル１２２（図４参照）、リソース重み付け情報テーブル１２３（図５参照）、仮想マシン使用目的情報テーブル１２４（図６参照）、物理サーバ障害履歴情報テーブル１２５（図７参照）、物理サーバ障害発生回数情報テーブル１２６（図８参照）、仮想マシン稼働履歴情報テーブル１２７（図９参照）、障害タイプ一覧テーブル１２８（図１０参照）および障害時マシン構成履歴情報テーブル１２９（図１１参照）を備え、リレーショナルデータベースを形成し、所定の情報を記憶する。各種テーブルの詳細については、後記する。
【００１６】
なお、管理サーバ１００および物理サーバ１０３は、コンピュータとしての入力部、表示部、制御部、記憶部を備える。制御部は、例えばＣＰＵとして実装され、記憶部は、例えばＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、ＨＤＤ（Hard Disk Drive）として実装される。
ＣＰＵ１０４は、メモリ１０５の備えるソフトウェアによる機能（移行先決定プログラムによる機能を含む）を実行（演算処理）する。ＣＰＵ１０４が、メモリ１０５の備えるソフトウェアを読み出し、相応の機能を実行することにより、ソフトウェアとハードウェアとの協働が実現される。
【００１７】
図２は、本実施形態の計算機システムのハードウェアの構成の一例を示す図である。本実施形態では、計算機システムは、１台の管理サーバ１００と５台の物理サーバＡ〜Ｅ（１０３）を備えるものとする。
物理サーバＡでは、仮想マシン１３１として「ＶＭ１」、「ＶＭ２」の２台分が稼働している。
物理サーバＢでは、仮想マシン１３１として「ＶＭ３」、「ＶＭ４」の２台分が稼働している。
物理サーバＣでは、仮想マシン１３１として「ＶＭ５」、「ＶＭ６」、「ＶＭ７」の３台分が稼働している。
物理サーバＤでは、仮想マシン１３１として「ＶＭ８」、「ＶＭ９」の２台分が稼働している。
物理サーバＥでは、仮想マシン１３１として「ＶＭ１０」、「ＶＭ１１」の２台分が稼働している。
【００１８】
図３は、マシン構成情報テーブル１２１のデータ構造を示す図である。マシン構成情報テーブル１２１は、各物理サーバ１０３上の仮想マシン１３１と、仮想マシン１３１が使用するリソースのリソース量を構成情報（物理サーバ１０３と仮想マシン１３１との組み合わせ）として管理するテーブルである。マシン構成情報テーブル１２１は、物理サーバ名３０１、仮想マシン名３０２、ＣＰＵ使用量３０３、メモリ使用量３０４およびディスク使用量３０５といったフィールドを備えている。
【００１９】
物理サーバ名３０１には、計算機システムの物理サーバ１０３の名称が格納される。
仮想マシン名３０２には、計算機システムの仮想マシン１３１の名称が格納される。
ＣＰＵ使用量３０３には、仮想マシン１３１に割り当てられたＣＰＵの使用量（周波数）（ＭＨｚ）を示す値が格納される。
メモリ使用量３０４には、仮想マシン１３１に割り当てられたメモリの使用量（ＭＢ）を示す値が格納される。
ディスク使用量３０５には、仮想マシン１３１に割り当てられたディスクの使用量（ＧＢ）を示す値が格納される。
【００２０】
マシン構成情報テーブル１２１は、後記する処理が実行されると自動的に作成または更新される。
【００２１】
図４は、物理サーバリソース情報テーブル１２２のデータ構造を示す図である。物理サーバリソース情報テーブル１２２は、物理サーバ１０３が持っている各リソースのリソース量をリソース情報として管理するテーブルである。物理サーバリソース情報テーブル１２２は、物理サーバ名４０１、ＣＰＵ４０２、メモリ４０３およびディスク４０４といったフィールドを備えている。
【００２２】
物理サーバ名４０１は、物理サーバ名３０１（図３参照）に等しい。
ＣＰＵ４０２には、物理サーバ１０３が持つＣＰＵの使用量（周波数）（ＭＨｚ）を示す値が格納される。
メモリ４０３には、物理サーバ１０３が持つメモリの使用量（ＭＢ）を示す値が格納される。
ディスク４０４には、物理サーバ１０３が持つディスクの使用量（ＧＢ）を示す値が格納される。
【００２３】
物理サーバリソース情報テーブル１２２は、後記する処理が実行されると自動的に作成または更新される。
【００２４】
図５は、リソース重み付け情報テーブル１２３のデータ構造を示す図である。リソース重み付け情報テーブル１２３は、仮想マシン１３１の使用目的ごとに、障害率希望値、各リソースの優先度を示す数値（初期値）を管理するテーブルである。リソース重み付け情報テーブル１２３は、使用目的５０１、障害率希望値５０２、ＣＰＵ優先度５０３、メモリ優先度５０４、Ｉ／Ｏ優先度５０５、ハードディスク優先度５０６、ネットワーク優先度５０７および電源優先度５０８といったフィールドを備えている。
【００２５】
使用目的５０１には、物理サーバ１０３の用途を表すサーバの名称が格納される。例えば、「ＤＢサーバ」と格納されれば、物理サーバ１０３をデータベースサーバとして使用することを意味する。
【００２６】
障害率希望値５０２には、物理サーバ１０３を使用目的５０１に示されたサーバとして使用する場合に、例えばシステム管理者が発生してもよいと定めた障害の障害率の上限値（使用目的に応じた障害に関する閾値）である。「障害率」とは、一般的には、物理サーバ１０３のある運用期間と、その期間内に障害が存在していた期間（障害時間）との比で示されるが、本発明では、この比をＣＰＵ優先度などの優先度で重み付けしたときの障害率を算出する。その障害率および重み付けについては後記する。
【００２７】
ＣＰＵ優先度５０３には、リソースとしてのＣＰＵに対して設定した重み付け用の値が格納される。
メモリ優先度５０４には、リソースとしてのメモリに対して設定した重み付け用の値が格納される。
Ｉ／Ｏ優先度５０５には、リソースとしてのＩ／Ｏに対して設定した重み付け用の値が格納される。
ハードディスク優先度５０６には、リソースとしてのハードディスク（ディスク）に対して設定した重み付け用の値が格納される。
ネットワーク優先度５０７には、リソースとしてのネットワークに対して設定した重み付け用の値が格納される。
電源優先度５０８には、リソースとしての電源に対して設定した重み付け用の値が格納される。
【００２８】
リソース重み付け情報テーブル１２３に格納される値は、システム管理者が例えば管理サーバ１００の入力部から入力する値である。システム管理者はこれらの値を追加、変更、削除などする権限を有する。一般的に、ＣＰＵ優先度５０３、メモリ優先度５０４、Ｉ／Ｏ優先度５０５、ハードディスク優先度５０６、ネットワーク優先度５０７および電源優先度５０８に格納される値は、使用目的５０１に示されたサーバの使用目的を達成するための仮想マシンに関するリソース（ＣＰＵ、メモリ、Ｉ／Ｏ、ハードディスク、ネットワーク、電源）が重要であるほど大きな値となる。
リソース重み付け情報テーブル１２３により管理されるデータは、後記する仮想マシン使用目的情報テーブル１２４の対応する箇所に自動的にマッピングされる。
【００２９】
図６は、仮想マシン使用目的情報テーブル１２４のデータ構造を示す図である。仮想マシン使用目的情報テーブル１２４は、仮想マシンごとに設定した使用目的、障害率希望値、各リソースの優先度を示す数値を管理するテーブルである。仮想マシン使用目的情報テーブル１２４は、仮想マシン名６０１、使用目的６０２、障害率希望値６０３、ＣＰＵ優先度６０４、メモリ優先度６０５、Ｉ／Ｏ優先度６０６、ハードディスク優先度６０７、ネットワーク優先度６０８および電源優先度６０９といったフィールドを備えている。
【００３０】
仮想マシン名６０１は、仮想マシン名３０２（図３参照）に等しい。
使用目的６０２、障害率希望値６０３、ＣＰＵ優先度６０４、メモリ優先度６０５、Ｉ／Ｏ優先度６０６、ハードディスク優先度６０７、ネットワーク優先度６０８および電源優先度６０９はそれぞれ、使用目的５０１、障害率希望値５０２、ＣＰＵ優先度５０３、メモリ優先度５０４、Ｉ／Ｏ優先度５０５、ハードディスク優先度５０６、ネットワーク優先度５０７および電源優先度５０８（図５参照）に等しい。
【００３１】
仮想マシン使用目的情報テーブル１２４に格納される値は、仮想マシン１３１の使用目的が設定されれば、リソース重み付け情報テーブル１２３を用いて自動的に作成される。システム管理者が例えば管理サーバ１００の入力部からの入力により、これらの値を追加、変更、削除などすることも可能である。
【００３２】
図７は、物理サーバ障害履歴情報テーブル１２５のデータ構造を示す図である。物理サーバ障害履歴情報テーブル１２５は、各物理サーバ１０３に発生した障害を障害履歴情報として管理するテーブルである。物理サーバ障害履歴情報テーブル１２５は、物理サーバ名７０１、運用開始日時７０２、障害発生日時７０３、障害回復日時７０４、障害時間７０５および障害タイプ７０６といったフィールドを備えている。
【００３３】
物理サーバ名７０１には、障害が発生した物理サーバ１０３の名称が格納される。
運用開始日時７０２には、物理サーバ１０３の運用の開始時刻を示す値が格納される。例えば、「200901010000」は、２００９年１月１日０時０分を意味する。この値により、当該物理サーバの運用時間が求められる。
障害発生日時７０３には、障害が発生した時刻を示す値が格納される。
障害回復日時７０４には、障害から回復した時刻を示す値が格納される。
障害時間７０５には、障害が存在していた時間を示す値（単位：分（ｍ））が格納される。この時間は、障害発生日時７０３に格納されている値が示す時刻から障害回復日時７０４に格納されている値が示す時刻までの時間に等しい。
障害タイプ７０６には、障害の種別（障害タイプ）を示す値、つまり障害タイプコード（仮想マシンに関するリソースにより分類される障害の種類）が登録される。障害タイプコードについては後記する。
【００３４】
物理サーバ障害履歴情報テーブル１２５は、後記する処理が実行されると自動的に作成または更新される。
【００３５】
図８は、物理サーバ障害発生回数情報テーブル１２６のデータ構造を示す図である。物理サーバ障害発生回数情報テーブル１２６は、物理サーバ１０３において、各種別の障害が発生した回数を管理するテーブルである。物理サーバ障害発生回数情報テーブル１２６は、物理サーバ名８０１、障害タイプ８０２および発生回数８０３といったフィールドを備えている。
【００３６】
物理サーバ名８０１および障害タイプ８０２は、物理サーバ名７０１および障害タイプ７０６（図７参照）に等しい。
発生回数８０３には、当該障害タイプコードの障害が発生した回数を示す値（物理サーバ用発生回数）が格納される。
【００３７】
物理サーバ障害発生回数情報テーブル１２６は、後記する処理が実行されると自動的に作成または更新される。
【００３８】
図９は、仮想マシン稼働履歴情報テーブル１２７のデータ構造を示す図である。仮想マシン稼働履歴情報テーブル１２７は、仮想マシン１３１が各物理サーバ１０３上で稼働したときの稼働回数と、障害タイプごとの障害の発生回数を管理するテーブルである。仮想マシン稼働履歴情報テーブル１２７は、仮想マシン名９０１、物理サーバ名９０２、稼働回数９０３、障害タイプ９０４および発生回数９０５といったフィールドを備えている。
【００３９】
仮想マシン名９０１には、障害が発生した仮想マシン１３１の名称が格納される。なお、仮想マシン１３１に発生した障害とは、当該仮想マシン１３１が稼働する物理サーバ１０３に発生した障害を意味する。したがって、基本的には、障害は物理サーバ１０３に発生するものとして説明を続ける。
物理サーバ名９０２は、当該仮想マシン１３１が稼働する物理サーバ１０３の名称が格納される。
稼働回数９０３には、当該仮想マシン１３１が当該物理サーバ１０３上で稼働した回数を示す値が格納される。なお、この回数、つまり稼働回数は、仮想マシン１３１が該当物理サーバ１０３上に配置されてから退避や別の物理サーバ１０３へ移行するまでの状態を、１回の稼働として計数する。また、障害発生による運用停止後に、再び同じ障害から回復した物理サーバ１０３上に稼働する状態を、２回の稼働として計数する。
障害タイプ９０４には、当該仮想マシン１３１に発生した障害の種別が登録される。
発生回数９０５には、当該仮想マシン１３１において、当該障害タイプコードの障害が発生した回数を示す値（仮想マシン用発生回数）が登録される。
【００４０】
仮想マシン稼働履歴情報テーブル１２７は、後記する処理が実行されると自動的に作成または更新される。
【００４１】
図１０は、障害タイプ一覧テーブル１２８のデータ構造を示す図である。障害タイプ一覧テーブル１２８は、障害タイプと障害内容との関連を管理するテーブルである。前記した障害タイプコードとは、この障害内容を識別するコードである。障害タイプ一覧テーブル１２８は、障害タイプ１００１、障害内容１００２および障害確定リトライ時間１００３といったフィールドを備えている。
【００４２】
障害タイプ１００１には、障害タイプコードが格納される。
障害内容１００２には、障害の詳細を示すデータが格納され、例えばその障害が発生したリソースの名称が格納される。必要に応じて障害の特徴を示す他の値を格納するようにしてもよい。
【００４３】
なお、障害内容１００２に格納されたリソースの名称は、仮想マシン使用目的情報テーブル１２４のフィールドにおいて優先度を定めた仮想マシンに関するリソースの名称（図６の符号６０４〜６０９参照）に対応する。つまり、障害内容１００２の「電源」は、電源優先度６０９に対応する。障害内容１００２の「ネットワーク」は、ネットワーク優先度６０８に対応する。障害内容１００２の「メモリ」は、メモリ優先度６０５に対応する。障害内容１００２の「ＣＰＵ」は、ＣＰＵ優先度６０４に対応する。障害内容１００２の「Ｉ／Ｏ」は、Ｉ／Ｏ優先度６０６に対応する。障害内容１００２の「ハードディスク」は、ハードディスク優先度６０７に対応する。よって、物理サーバ障害発生回数情報テーブル１２６を参照して、物理サーバ１０３における障害発生回数を算出するときは、上記した対応の関係を用いることで、仮想マシンに関するリソースの優先度を用いた重み付けを施した障害発生回数を算出することができる（後記する図１５Ａのステップ１５１２の説明参照）。
【００４４】
障害確定リトライ時間１００３には、障害監視部１１２により障害を検知した後に、障害として確定するまでの時間（単位：分（ｍ））を示す値が格納される。この時間は、障害から回復するための複数回の復旧手順に要するリトライ時間である。障害確定リトライ時間が経過しても障害から回復できない場合は、障害が発生したものとみなす。
【００４５】
障害タイプ一覧テーブル１２８に格納される値は、システム管理者が例えば管理サーバ１００の入力部から入力する値である。システム管理者はこれらの値を追加、変更、削除などする権限を有する。
【００４６】
図１１は、障害時マシン構成履歴情報テーブル１２９のデータ構造を示す図である。障害時マシン構成履歴情報テーブル１２９は、障害発生時の仮想マシン１３１と物理サーバ１０３との組み合わせを管理するテーブルである。障害時マシン構成履歴情報テーブル１２９は、物理サーバ名１１０１、仮想マシン構成１１０２および障害回数１１０３といったフィールドを備えている。
【００４７】
物理サーバ名１１０１は、物理サーバ名７０１（図７参照）に等しい。
仮想マシン構成１１０２には、障害発生時の物理サーバ１０３上に稼働していた仮想マシン１３１の構成情報が格納される。障害時マシン構成履歴情報テーブル１２９の１番目のレコードを例にとると、物理サーバＡに障害が発生した時点で、物理サーバＡ上を稼働していた仮想マシン１３１は、ＶＭ１およびＶＭ２の２台である。このとき、仮想マシン構成１１０２には、「［ＶＭ１］＋［ＶＭ２］」と表記する。
障害回数１１０３には、物理サーバ名１１０１で示される物理サーバ１０３と、仮想マシン構成１１０２で示される仮想マシン１３１との組み合わせにおいて発生した障害の回数を示す値が格納される。この値、つまり障害回数は、物理サーバ障害履歴情報テーブル１２５（図７参照）により特定される各物理サーバ１０３の運用期間内に発生した障害の累積回数である。
【００４８】
障害時マシン構成履歴情報テーブル１２９は、後記する処理が実行されると自動的に作成または更新される。
【００４９】
≪処理≫
次に、図１２から図１５までを参照して、本実施形態で実行される処理について説明する。なお、図１５は、図１５Ａおよび図１５Ｂの総称である。
図１２は、管理サーバ１００で実行される処理を示すフローチャートである。この処理の主体は、ＣＰＵ１０４である。なお、図１２から図１５までに示す処理は、物理サーバＡの障害が発生し、その発生日時は、２０１０年２月１日０時０分（201002010000）であるとした場合を例として説明する。また、前記例の説明は、基本的には、図３から図１１までに示した各種テーブルに示された値に従う。図１２の処理を開始すると、ステップ１２０１に進む。
【００５０】
ステップ１２０１において、ＣＰＵ１０４は、障害監視部１１２により物理サーバ１０３（またはその物理サーバ１０３で稼働する仮想マシン１３１）に障害が存在しているか否かを常時監視する。ステップ１２０１の後、ステップ１２０２に進む。
【００５１】
ステップ１２０２において、ＣＰＵ１０４は、監視の対象となる物理サーバ１０３について障害が発生したか否か判定する。発生したのであれば（ステップ１２０２でＹｅｓ）、ステップ１２０３に進み、発生していないのであれば（ステップ１２０２でＮｏ）、当該物理サーバ１０３において元々障害が発生していない状態であるか、障害が存在していたがその障害から回復した状態であるかを意味しており、ステップ１２１２に進む。
本例では、物理サーバＡについては、障害が発生したことが（この段階では暫定的に）検出され、ステップ１２０３に進む。
【００５２】
ステップ１２０３において、ＣＰＵ１０４は、監視の対象となる物理サーバ１０３において、障害確定リトライ時間を経過しても依然として障害から回復できないか否か判定する。回復できないのであれば（ステップ１２０３でＹｅｓ）、障害であると確定し、ステップ１２０４に進み、回復できたのであれば（ステップ１２０３でＮｏ）、障害は無かったとみなし、ステップ１２０１に戻る。なお、確定した障害につき、その障害の障害タイプが特定される。
本例では、物理サーバＡについては、障害が発生したことを確定し、ステップ１２０４に進む。
【００５３】
ステップ１２０４において、ＣＰＵ１０４は、マシン構成情報取得部１１１により、対象となる物理サーバ１０３に対し、その構成情報を要求し、その物理サーバ１０３の構成情報を取得する。なお、物理サーバ１０３は、マシン構成情報提供部１３３により、自身の構成情報を管理サーバ１００に送信する。ステップ１２０４の後、ステップ１２０５に進む。
本例では、物理サーバＡ〜Ｅから、物理サーバＡ〜Ｅの構成情報を取得する。物理サーバＡの構成情報は、物理サーバＡで稼働する仮想マシンは「ＶＭ１」と「ＶＭ２」である（図２参照）。
【００５４】
ステップ１２０５において、ＣＰＵ１０４は、物理サーバ１０３から取得した構成情報を用いてマシン構成情報テーブル１２１を更新する。ステップ１２０５の後、ステップ１２０６に進む。
本例では、物理サーバＡ〜Ｅについてマシン構成情報テーブル１２１を更新する（図３参照）。
【００５５】
ステップ１２０６において、ＣＰＵ１０４は、障害時マシン構成履歴情報テーブル１２９を更新する。ステップ１２０６の後、ステップ１２０７に進む。
本例では、物理サーバＡについて障害時マシン構成履歴情報テーブル１２９を更新する（図１１参照）。
【００５６】
ステップ１２０７において、ＣＰＵ１０４は、発生した障害について障害履歴情報を作成し、その障害履歴情報を用いて物理サーバ障害履歴情報テーブル１２５を更新する。具体的には、対象となる物理サーバ１０３のレコードについて、障害発生日時７０３および障害タイプ７０６に相応の値を格納する。ステップ１２０７の後、ステップ１２０８に進む。
本例では、物理サーバＡに発生した障害について物理サーバ障害履歴情報テーブル１２５を更新する（図７参照）。
【００５７】
ステップ１２０８において、ＣＰＵ１０４は、物理サーバ障害発生回数情報テーブル１２６を更新する。ステップ１２０８の後、ステップ１２０９に進む。
本例では、物理サーバＡに発生した障害について物理サーバ障害発生回数情報テーブル１２６を更新する（図８参照）。
【００５８】
ステップ１２０９において、ＣＰＵ１０４は、仮想マシン稼働履歴情報テーブル１２７を更新する。ステップ１２０９の後、ステップ１２１０に進む。
本例では、物理サーバＡ上で稼働する仮想マシン「ＶＭ１」と「ＶＭ２」について、仮想マシン稼働履歴情報テーブル１２７を更新する（図９参照）。
【００５９】
ステップ１２１０において、ＣＰＵ１０４は、仮想マシン移行先決定処理を実行する。仮想マシン移行先決定処理については、図１３で説明する。仮想マシン移行先決定処理を実行すると、障害が発生した物理サーバ１０３上で稼働する仮想マシン１３１の移行先となる物理サーバ１０３が決定する。ステップ１２１０の後、ステップ１２１１に進む。
本例では、物理サーバＡ上で稼働する仮想マシン「ＶＭ１」と「ＶＭ２」の移行先が決定する。
【００６０】
ステップ１２１１において、ＣＰＵ１０４は、仮想マシンの移行（マイグレーション）を実行する。なお、障害タイプにより移行が不可能な場合は、移行する仮想マシンと同じ性能を持つ仮想マシンを、移行先となる物理サーバ上に生成する。ステップ１２１１の処理を実行することで、処理全体を終了する。
【００６１】
ステップ１２１２において、ＣＰＵ１０４は、監視の対象となる物理サーバ１０３について障害から回復したか否か判定する。回復したのであれば（ステップ１２１２でＹｅｓ）、ステップ１２１３に進み、回復していないのであれば（ステップ１２１２でＮｏ）、当該物理サーバ１０３において元々障害が発生していない状態であることを意味しており、ステップ１２０１に戻る。
本例では、障害が発生していた物理サーバＡがその障害から回復すれば、障害監視部１１２によりその回復が検出され、ステップ１２１３に進む。
【００６２】
ステップ１２１３において、ＣＰＵ１０４は、マシン構成情報取得部１１１により、対象となる物理サーバ１０３に対し、その構成情報を要求し、その物理サーバ１０３の構成情報を取得する。なお、物理サーバ１０３は、マシン構成情報提供部１３３により、自身の構成情報を管理サーバ１００に送信する。ステップ１２１３の後、ステップ１２１４に進む。
本例では、障害から回復した後に、物理サーバＡ〜Ｅから、物理サーバＡ〜Ｅの構成情報を取得する。
【００６３】
ステップ１２１４において、ＣＰＵ１０４は、物理サーバ１０３から取得した構成情報を用いてマシン構成情報テーブル１２１を更新する。ステップ１２１４の後、ステップ１２１５に進む。
本例では、物理サーバＡ〜Ｅについてマシン構成情報テーブル１２１を更新する（図３参照）。
【００６４】
ステップ１２１５において、ＣＰＵ１０４は、物理サーバリソース情報テーブル１２２を更新する。ステップ１２１５の後、ステップ１２１６に進む。
本例では、物理サーバＡ〜Ｅについて物理サーバリソース情報テーブル１２２を更新する（図４参照）。
【００６５】
ステップ１２１６において、ＣＰＵ１０４は、発生した障害について障害履歴情報を作成し、その障害履歴情報を用いて物理サーバ障害履歴情報テーブル１２５を更新する。具体的には、対象となる物理サーバ１０３のレコードについて、障害回復日時７０４および障害時間７０５に相応の値を格納する。ステップ１２１６の処理を実行することで、処理全体を終了する。
本例では、物理サーバＡにおける障害からの回復について物理サーバ障害履歴情報テーブル１２５を更新する（図７参照）。
以上により、管理サーバ１００で実行される処理の説明を終える。
【００６６】
図１３は、仮想マシン移行先決定処理を示すフローチャートである。この処理は、ステップ１２１０（図１２参照）の詳細を示している。図１３の処理を開始すると、ステップ１３０１に進む。
【００６７】
ステップ１３０１において、ＣＰＵ１０４は、仮想マシン使用目的情報テーブル１２４を参照し、移行する仮想マシン１３１において、障害率希望値の低いものから昇順で移行対象を決め、仮想マシン１３１ごとに、ステップ１３０２以降の処理を実行する。なお、移行対象となる仮想マシンを「移行仮想マシン」と称する場合がある。ステップ１３０１の後、ステップ１３０２に進む。
本例では、「ＶＭ１」の障害率希望値は１％であり、「ＶＭ２」の障害率希望値は１０％であるため（図６参照）、まず、障害率希望値の低い「ＶＭ１」を移行対象とする。
【００６８】
ステップ１３０２において、ＣＰＵ１０４は、仮想マシン使用目的情報テーブル１２４および物理サーバ障害履歴情報テーブル１２５を参照し、移行仮想マシンに用いられるリソースの優先度（図６の符号６０４〜６０９参照）で重み付けを施し、各物理サーバ１０３（基本的に、移行元の物理サーバ１０３は除く）の障害率を算出する。ステップ１３０２の後、ステップ１３０３に進む。このような障害率（重み付けの物理サーバ障害率）は、以下の式により算出される。
【００６９】
【数１】
2012118841.tif 000003
【００７０】
本例では、移行仮想マシン「ＶＭ１」において、「ＶＭ１」に用いられるリソースの優先度で重み付けを施したときの各物理サーバの障害率は、以下の通りである。
物理サーバＢ：6×100％×[(720+720)/786240×50/100] = 0.55%
物理サーバＣ：6×100％×[720/786240×30/100 + 720/786240×0/100] = 0.17%
物理サーバＤ：6×100％×[(720+720)/786240×10/100 + 720/786240×0/100 + 2880/786240×50/100] = 1.21%
物理サーバＥ：6×100％×[(720+720)/786240×10/100 + 720/786240×0/100 + 2880/786240×50/100] = 1.21%
【００７１】
ステップ１３０３において、ＣＰＵ１０４は、移行仮想マシンの障害率希望値を満たせる物理サーバを検索する。ステップ１３０３の後、ステップ１３０４に進む。
【００７２】
ステップ１３０４において、ＣＰＵ１０４は、ステップ１３０３の検索により、該当する物理サーバが存在するか否か判定する。存在する場合は（ステップ１３０４でＹｅｓ）、ステップ１３０５に進み、存在しない場合は（ステップ１３０４でＮｏ）、当該移行仮想マシンについては、処理全体が終了し、次に障害率希望値の低い移行仮想マシンについて、ステップ１３０２以降の処理を実行する。
【００７３】
本例では、移行仮想マシン「ＶＭ１」の障害率希望値（１％）を満たせる、つまり下回る物理サーバ１０３として、物理サーバＢおよび物理サーバＣが存在するので、ステップ１３０５に進む。なお、移行仮想マシンの移行先の候補となりうる物理サーバを「移行先候補物理サーバ」と称する場合がある。
【００７４】
ステップ１３０５において、ＣＰＵ１０４は、マシン構成情報テーブル１２１および物理サーバリソース情報テーブル１２２を参照し、ステップ１３０３の検索により該当した物理サーバに十分な空きリソースがあるか確認する。ステップ１３０５の後、ステップ１３０７に進む。ステップ１３０５では、マシン構成情報テーブル１２１から移行仮想マシンの必要なリソース量と、移行先候補物理サーバ上で稼働する１以上の仮想マシン１３１のリソース量とを取得し、物理サーバリソース情報テーブル１２２から移行先候補物理サーバのリソース量（物理サーバリソース量）を取得し、以下の式により十分な空きリソースがあるか確認する。
【００７５】
【数２】
2012118841.tif 000004
【００７６】
ステップ１３０７において、ＣＰＵ１０４は、ステップ１３０３の検索により該当した物理サーバに十分な空きリソースがあるか存在するか否か判定する。存在する場合は（ステップ１３０７でＹｅｓ）、ステップ１３１１に進み、存在しない場合は（ステップ１３０７でＮｏ）、ステップ１３０８に進む。
【００７７】
本例では、移行先の候補となりうる物理サーバＢおよび物理サーバＣともに、十分な空きリソースが存在しないので、いずれについてもステップ１３０８に進む。
【００７８】
ステップ１３０８において、ＣＰＵ１０４は、リソース譲渡可能物理サーバ判定処理を実行する。リソース譲渡可能物理サーバ判定処理については、図１４で説明する。リソース譲渡可能物理サーバ判定処理を実行すると、前記移行先候補物理サーバのうち、そこで稼働する仮想マシン１３１を他の物理サーバ１０３に移行する、つまりリソースを譲渡することで十分な空きリソースを確保し、移行仮想マシンの移行先となりうるものが存在するか否か確認することができる。ステップ１３０８の後、ステップ１３０９に進む。
【００７９】
ステップ１３０９において、ＣＰＵ１０４は、ステップ１３０８のリソース譲渡可能物理サーバ判定処理により該当する物理サーバが存在するか否か判定する。存在する場合は（ステップ１３０９でＹｅｓ）、ステップ１３１１に進み、存在しない場合は（ステップ１３０９でＮｏ）、当該移行仮想マシンについては、処理全体が終了し、次に障害率希望値の低い移行仮想マシンについて、ステップ１３０２以降の処理を実行する。
【００８０】
詳細は後記するが、本例では、物理サーバＢおよび物理サーバＣともに、リソースを譲渡できる仮想マシンが存在するので、いずれについてもステップ１３１１に進む。なお、ステップ１３０８によりリソースを譲渡できる物理サーバを「リソース譲渡可能物理サーバ」と称する場合がある。
【００８１】
ステップ１３１１において、ＣＰＵ１０４は、移行先物理サーバ選択ロジックの処理を実行する。移行先物理サーバ選択ロジックの処理については、図１５で説明する。移行先物理サーバ選択ロジックの処理を実行すると、前記移行先候補物理サーバ（リソース譲渡可能物理サーバを含む）のうち、最も相応しいものが移行仮想マシンの移行先として決定する。ステップ１３１１の処理を実行することで、当該移行仮想マシンについては、処理全体を終了し、次に障害率希望値の低い移行仮想マシンについて、ステップ１３０２以降の処理を実行する。
【００８２】
詳細は後記するが、本例では、移行仮想マシン「ＶＭ１」について、リソース譲渡可能物理サーバとなる物理サーバＢおよび物理サーバＣのうち物理サーバＣが「ＶＭ１」の移行先となる。ちなみに、物理サーバＣ上を稼働していた仮想マシン「ＶＭ５」「ＶＭ６」「ＶＭ７」（図３参照）のうち「ＶＭ７」が物理サーバＥに移行する。
【００８３】
移行仮想マシン「ＶＭ１」について、仮想マシン移行先決定処理を終了した後は、移行仮想マシン「ＶＭ２」について、仮想マシン移行先決定処理を実行する。移行仮想マシン「ＶＭ２」は、その障害率希望値（１０％。図６参照。）を参照すると、ステップ１３０４において、すべての物理サーバ（Ａを除くＢ〜Ｅ）が該当する。そのうちステップ１３０７において、十分な空きリソースがある物理サーバは、物理サーバＤおよび物理サーバＥである。そして、ステップ１３１１の移行先物理サーバ選択ロジックの処理により、物理サーバＥが「ＶＭ２」の移行先となる。
以上により、仮想マシン移行先決定処理の説明を終える。
【００８４】
図１４は、リソース譲渡可能物理サーバ判定処理を示すフローチャートである。この処理は、ステップ１３０８（図１３参照）の詳細を示している。障害率希望値を満たせるが空きリソースが足りない物理サーバ１０３（移行先候補物理サーバ）において、そこで稼働する仮想マシン１３１のうち移行しても差し支えないものを、障害の発生が無いまたはほとんど無いと見込まれる他の物理サーバ上に移行することで、移行仮想マシンのためにリソースを空けるようにする。図１４の処理を開始すると、ステップ１４０１に進む。
【００８５】
ステップ１４０１において、ＣＰＵ１０４は、ステップ１３０３（図１３参照）において検索された移行仮想マシンの障害率希望値を満たせる物理サーバ１０３において、移行仮想マシンに対する障害率の低いものから昇順で対象を決め、物理サーバ１０３ごとに、ステップ１４０２以降の処理を実行する。ステップ１４０１の後、ステップ１４０２に進む。
本例では、移行仮想マシン「ＶＭ１」の障害率希望値（１％）を満たせる物理サーバＢおよび物理サーバＣにおいて、まず、「ＶＭ１」に対する障害率（重み付けの物理サーバ障害率）がより低い物理サーバＣを対象とする。
【００８６】
ステップ１４０２において、ＣＰＵ１０４は、仮想マシン使用目的情報テーブル１２４を参照し、ステップ１４０１にて対象と決めた物理サーバ１０３上で稼働する仮想マシン１３１のうち、その仮想マシン１３１の障害率希望値が、移行仮想マシンのそれよりも高いものを検索する。ステップ１４０２の後、ステップ１４０３に進む。
【００８７】
ステップ１４０３において、ＣＰＵ１０４は、ステップ１４０２の検索により、該当する仮想マシンが存在するか否か判定する。存在する場合は（ステップ１４０３でＹｅｓ）、ステップ１４０４に進み、存在しない場合は（ステップ１４０３でＮｏ）、当該物理サーバについては、処理全体が終了し、次に障害率の低い物理サーバ１０３について、ステップ１４０２以降の処理を実行する。
【００８８】
本例では、物理サーバＣ上で稼働する仮想マシン「ＶＭ５」「ＶＭ６」「ＶＭ７」（図３参照）のうち移行仮想マシン「ＶＭ１」の障害率希望値（１％）よりも高い障害率希望値を持つ仮想マシンは、「ＶＭ７」（１０％。図６参照。）であるので、ステップ１４０４に進む。なお、リソースを譲渡する候補となりうる仮想マシンを「譲渡候補仮想マシン」と称する場合がある。
【００８９】
ステップ１４０４において、ＣＰＵ１０４は、マシン構成情報テーブル１２１および物理サーバリソース情報テーブル１２２を参照し、譲渡候補仮想マシンによるリソースの譲渡により、ステップ１４０１にて対象と決めた物理サーバ１０３に十分な空きリソースが存在することになるか否か確認する。ステップ１４０４の後、ステップ１４０５に進む。ステップ１４０４では、マシン構成情報テーブル１２１から移行仮想マシン（具体的には「ＶＭ１」）の必要なリソース量と、ステップ１４０１にて対象と決めた物理サーバ１０３（具体的には「物理サーバＣ」）を取得するとともに、物理サーバリソース情報テーブル１２２からステップ１４０１にて対象と決めた物理サーバ１０３のリソース量（物理サーバリソース量）を取得し、以下の式により、十分な空きリソースがあるか確認する。
【００９０】
【数３】
2012118841.tif 000005
【００９１】
ステップ１４０５において、ＣＰＵ１０４は、ステップ１４０２の検索により該当した仮想マシンによるリソースの譲渡により、ステップ１４０１にて対象と決めた物理サーバ１０３に十分な空きリソースが存在するか否か判定する。存在する場合は（ステップ１４０５でＹｅｓ）、ステップ１４０６に進み、存在しない場合は（ステップ１４０５でＮｏ）、当該物理サーバについては、処理全体が終了し、次に障害率の低い物理サーバ１０３について、ステップ１４０２以降の処理を実行する。
【００９２】
本例では、譲渡候補仮想マシンである、物理サーバＣ上で稼働する「ＶＭ７」を他の物理サーバ１０３に移行し、そのリソースを譲渡すると、物理サーバＣにおいて、移行仮想マシン「ＶＭ１」の移行に十分な空きリソースが存在するので、ステップ１４０６に進む。
【００９３】
ステップ１４０６において、ＣＰＵ１０４は、譲渡候補仮想マシンに対して、ステップ１２１０の仮想マシン移行先決定処理（図１２参照）を再帰的に実行する。この仮想マシン移行先決定処理を実行すると、十分な空きリソースを確保するためにリソースが譲渡されることになる譲渡候補仮想マシンの移行先となる物理サーバ１０３が決定する。ステップ１４０６の後、ステップ１４０７に進む。
詳細は省略するが、本例では、譲渡候補仮想マシン「ＶＭ７」の移行先は、物理サーバＤになる。
【００９４】
ステップ１４０７において、ＣＰＵ１０４は、ステップ１４０１にて対象と決めた物理サーバ１０３を移行仮想マシンの移行先候補とする。ステップ１４０７の処理を実行することで、当該物理サーバについては、処理全体が終了し、次に障害率の低い物理サーバについて、ステップ１４０２以降の処理を実行する。
【００９５】
本例では、物理サーバＣが、移行仮想マシン「ＶＭ１」の移行先候補物理サーバとなる。
物理サーバＣについてリソース譲渡可能物理サーバ判定処理を終了した後は、物理サーバＢについて、リソース譲渡可能物理サーバ判定処理を実行し、移行仮想マシン「ＶＭ１」の移行先候補物理サーバとなるか否か判定する。詳細な説明は省略するが、物理サーバＢも、移行仮想マシン「ＶＭ１」の移行先候補物理サーバとなる。その際、物理サーバＢにおける譲渡候補仮想マシンは「ＶＭ４」（図３参照）であり、ステップ１４０６による譲渡候補仮想マシン「ＶＭ４」の移行先は、物理サーバＤとなる。
以上により、リソース譲渡可能物理サーバ判定処理の説明を終える。
【００９６】
図１５（図１５Ａ、図１５Ｂ）は、移行先物理サーバ選択ロジックの処理を示すフローチャートである。この処理は、ステップ１３１１（図１３参照）の詳細を示している。移行先物理サーバ選択ロジックの処理を実行すると、移行先候補物理サーバとして決定した物理サーバ１０３のうち、最も相応しいものが移行仮想マシンの移行先として選択される。図１５の処理を開始すると、ステップ１５０１に進む。
【００９７】
ステップ１５０１において、ＣＰＵ１０４は、移行後のマシン構成における過去の障害状況を検索する。その際、障害時マシン構成履歴情報テーブル１２９を参照し、移行後のマシン構成の障害回数（図１１の符号１１０３参照）を用いる。ステップ１５０１の処理は、過去に１台の物理サーバ１０３上に、移行後のマシン構成と同じマシンの構成で障害が発生したことがあるのであれば、再び障害が発生する可能性が高い、という考えに基づいている。このため、そのようなマシン構成は避け、障害の無い、または最も障害回数の少ないマシン構成を選択する。ステップ１５０１の後、ステップ１５０２に進む。
【００９８】
ステップ１５０２において、ＣＰＵ１０４は、ステップ１５０１の検索により、過去に移行後のマシン構成で、障害の無いマシン構成となる物理サーバ１０３が存在するか否か判定する。存在する場合は（ステップ１５０２でＹｅｓ）、ステップ１５０８に進み、存在しない場合は（ステップ１５０２でＮｏ）、すべての物理サーバ１０３において、移行後の構成で障害が発生したことがあることを意味し、ステップ１５０３に進む。
【００９９】
本例では、図１１を参照すると、移行仮想マシン「ＶＭ１」を移行する場合は、移行先が物理サーバＢであれ、物理サーバＣであれ、移行後のマシン構成は、過去に障害の無いマシン構成となる。また、移行仮想マシン「ＶＭ２」を移行する場合は、移行先が物理サーバＤであるときは、移行後のマシン構成は、過去に障害の無いマシン構成となる。一方、移行先が物理サーバＤであるときは、移行後のマシン構成は、［ＶＭ２］＋［ＶＭ１０］＋［ＶＭ１１］となり、過去に１度障害が発生したマシン構成となる。よって、移行仮想マシン「ＶＭ１」であれ、「ＶＭ２」であれ、障害の無いマシン構成となる物理サーバ１０３が存在することになるため、ステップ１５０８に進む。
【０１００】
ステップ１５０３において、ＣＰＵ１０４は、障害時マシン構成履歴情報テーブル１２９移行後のマシン構成で、過去に一番障害の少なかった物理サーバを１０３検索する。ステップ１５０３の後、ステップ１５０４に進む。
【０１０１】
ステップ１５０４において、ＣＰＵ１０４は、ステップ１５０３の検索により、過去に一番障害の少なかった物理サーバ１０３が１台のみであるか否か判定する。１台のみであれば（ステップ１５０４でＹｅｓ）、ステップ１５０５に進み、１台のみでない場合は（ステップ１５０４でＮｏ）、２台以上存在することを意味し、ステップ１５０７に進む。
【０１０２】
ステップ１５０５において、ＣＰＵ１０４は、一番障害の少なかった唯一の物理サーバ１０３を移行仮想マシンの移行先として決定し、処理全体が終了する。なお、移行仮想マシンの移行先が決定した物理サーバを「移行先物理サーバ」と称する場合がある。
【０１０３】
ステップ１５０７において、ＣＰＵ１０４は、２台以上存在する、過去に一番障害の少なかった物理サーバ１０３を移行先候補とする。ステップ１５０７の後、ステップ１５１２に進む。
【０１０４】
ステップ１５０８において、ＣＰＵ１０４は、過去に移行後のマシン構成で、障害が発生したことの無いマシン構成となる物理サーバ１０３を移行先候補物理サーバとする。ステップ１５０８の後、ステップ１５０９に進む。
【０１０５】
本例では、移行仮想マシン「ＶＭ１」については、物理サーバＢおよび物理サーバＣを移行先候補物理サーバとする。また、移行仮想マシン「ＶＭ２」については、物理サーバＤを移行先候補物理サーバとする。
【０１０６】
ステップ１５０９において、ＣＰＵ１０４は、ステップ１５０８において移行先候補物理サーバとした物理サーバ１０３が１台のみであるか否か判定する。１台のみであれば（ステップ１５０９でＹｅｓ）、ステップ１５１０に進み、１台のみでない場合は（ステップ１５０９でＮｏ）、２台以上存在することを意味し、ステップ１５１２に進む。
【０１０７】
ステップ１５１０において、ＣＰＵ１０４は、過去に移行後のマシン構成で、障害が発生したことの無いマシン構成となる唯一の物理サーバ１０３を移行仮想マシンの移行先として決定し、処理全体が終了する。
【０１０８】
本例では、移行仮想マシン「ＶＭ１」については、移行先候補物理サーバとして物理サーバＢおよび物理サーバＣの２台が存在しているので、ステップ１５１２に進む。また、移行仮想マシン「ＶＭ２」については、移行先候補物理サーバとして物理サーバＤの１台のみ存在しているので、ステップ１５１０に進み、物理サーバＤを移行先物理サーバとして決定する。
【０１０９】
ステップ１５１２において、ＣＰＵ１０４は、仮想マシン使用目的情報テーブル１２４および物理サーバ障害発生回数情報テーブル１２６などを参照し、移行仮想マシンの各リソースの優先度（図６の符号６０４〜６０９参照）で重み付けをするようにして、移行先候補となる物理サーバ１０３の障害発生回数を算出し、障害発生回数が０の物理サーバ１０３を検索する。ステップ１５１２の後、ステップ１５１３に進む。このような障害発生回数（重み付けの物理サーバ障害発生回数）は、以下の式により算出される。
【０１１０】
【数４】
2012118841.tif 000006
【０１１１】
本例では、移行仮想マシン「ＶＭ１」の場合の計算結果は、以下の通りである。
物理サーバＢ：6×[2×50/100] = 6
物理サーバＣ：6×[1×0/100 + 1×30/100] = 1.8
【０１１２】
ステップ１５１３において、ＣＰＵ１０４は、ステップ１５１２の検索により、重み付けの障害発生回数が０の物理サーバ１０３が存在するか否か判定する。存在する場合は（ステップ１５１３でＹｅｓ）、ステップ１５１９に進み、存在しない場合は（ステップ１５１３でＮｏ）、ステップ１５１４に進む。
【０１１３】
本例では、前記計算結果によれば、移行仮想マシン「ＶＭ１」について、重み付けの障害発生回数が０の物理サーバ１０３が存在しないので、ステップ１５１４に進む。
【０１１４】
ステップ１５１４において、ＣＰＵ１０４は、ステップ１５１２の検索により、重み付けの障害発生回数の一番少ない物理サーバ１０３を検索する。ステップ１５１４の後、ステップ１５１５に進む。
【０１１５】
ステップ１５１５において、ＣＰＵ１０４は、ステップ１５１４の検索において重み付けの障害発生回数の一番少ない物理サーバ１０３が１台のみであるか否か判定する。１台のみであれば（ステップ１５１５でＹｅｓ）、ステップ１５１６に進み、１台のみでない場合は（ステップ１５１５でＮｏ）、２台以上存在することを意味し、ステップ１５１８に進む。
【０１１６】
ステップ１５１６において、ＣＰＵ１０４は、重み付けの障害発生回数の一番少ない唯一の物理サーバ１０３を移行仮想マシンの移行先として決定し、処理全体が終了する。
【０１１７】
本例では、前記計算結果によれば、移行仮想マシン「ＶＭ１」について、重み付けの障害発生回数の一番少ない物理サーバ１０３は、物理サーバＣとなる。また、物理サーバＣ１台のみとなるので、物理サーバＣを移行先物理サーバとして決定する。
【０１１８】
ステップ１５１８において、ＣＰＵ１０４は、２台以上存在する、重み付けの障害発生回数の一番少なかった物理サーバ１０３を移行先候補とする。ステップ１５１８の後、ステップ１５２３に進む。
【０１１９】
ステップ１５１９において、ＣＰＵ１０４は、重み付けの障害発生回数が０の物理サーバ１０３を移行先候補とする。ステップ１５１９の後、ステップ１５２０に進む。
【０１２０】
ステップ１５２０において、ＣＰＵ１０４は、ステップ１５１９において移行先候補物理サーバとした物理サーバ１０３が１台のみであるか否か判定する。１台のみであれば（ステップ１５２０でＹｅｓ）、ステップ１５２１に進み、１台のみでない場合は（ステップ１５２０でＮｏ）、２台以上存在することを意味し、ステップ１５２３に進む。
【０１２１】
ステップ１５２１において、ＣＰＵ１０４は、重み付けの障害発生回数が０となる唯一の物理サーバ１０３を移行仮想マシンの移行先として決定し、処理全体が終了する。
【０１２２】
ステップ１５２３において、ＣＰＵ１０４は、仮想マシン稼働履歴情報テーブル１２７などを参照し、移動先候補となる物理サーバ１０３上で稼働することになる移行仮想マシンの障害可能率を算出する。ステップ１５２３の後、ステップ１５２４に進む。「障害可能率」とは、移行仮想マシンの移行を実施した場合に過去の障害の履歴から推定される障害の発生の可能性を示す値であり、仮想マシン使用目的情報テーブル１２４によりリソースの優先度による重み付けを施すことができる。このような障害可能率（重み付けの物理サーバ上の仮想マシン障害可能率）は、以下の式により算出される。
【０１２３】
【数５】
2012118841.tif 000007
【０１２４】
ステップ１５２４において、ＣＰＵ１０４は、ステップ１５２３の処理により、算出された障害可能率の一番低い物理サーバ１０３を移行仮想マシンの移行先として決定し、処理全体が終了する。
【０１２５】
本例では、移行仮想マシン「ＶＭ１」、「ＶＭ２」ともにステップ１５２３の処理に至るまでに移行先が決定されるため、ステップ１５２３、ステップ１５２４の処理を実行することはなく、そのような場合もある。
以上により、移行先物理サーバ選択ロジックの処理の説明を終える。
【０１２６】
≪まとめ≫
本実施形態によれば、仮想化環境において仮想マシンの使用目的を好適に達成できるように仮想マシンを移行することができる。
【０１２７】
具体的には、仮想マシンに関する複数種類のリソースに対し設定した優先度を用いて前記使用目的を表現し、過去に物理サーバに発生した障害の状況を、前記優先度により重み付けして定量化する。これにより、物理サーバに障害が発生したことを契機に仮想マシンを移行するときの移行先として、障害が無いまたはほとんど無い物理サーバを選択することができる。そして、そのように移行した仮想マシンを用いて運用すれば、その仮想マシンの使用目的を好適に達成することができる。換言すれば、使用目的を考慮しているので、使用目的に合わず障害を引き起こし易い物理サーバに仮想マシンを移行する、といった事態を回避することができる。
【０１２８】
また、前記障害の状況を、障害率、障害発生回数および障害可能率により表現することで、仮想マシンの移行先を適切に決定することができる。なお、障害率、障害発生回数および障害可能率には、リソースの優先度を用いた重み付けが施されている。
【０１２９】
また、せっかく仮想マシンの移行先として決定した物理サーバに十分な空きリソースが無いためにその仮想マシンを移行できない場合であっても、その物理サーバ上で稼働する仮想マシンを他の物理サーバに移行し、リソースを譲渡する。これにより、より確実に、障害が無いまたはほとんど無い物理サーバを仮想マシンの移行先として選択することができる。
【０１３０】
≪その他≫
なお、前記実施形態は、本発明を実施するために好適のものであるが、その実施形式はこれらに限定されるものでなく、本発明の要旨を変更しない範囲内において種々変形することが可能である。
【０１３１】
例えば、本実施形態では、仮想マシン移行先決定処理（図１３参照）により、物理サーバに障害が発生したときは、その物理サーバ上で稼働する仮想マシンは別の物理サーバに移行するようにした。しかし、仮想マシン移行先決定処理を実行してもどこにも移行せず、元の物理サーバに留まるようにしてもよい。たとえ障害が発生したとはいえ、元の物理サーバにおける障害率などが、決定した移行先となる物理サーバの障害率などよりも小さいのであれば、移行しないほうが得策だからである。
具体的には、仮想マシン移行先決定処理のステップ１３０２において、元の物理サーバも含めたすべての物理サーバの障害率を算出し、移行先を決定するようにすればよい。障害発生回数や障害可能率についても同様である（図１５のステップ１５１２、ステップ１５２３参照）。
【０１３２】
また、本実施形態では、障害率、障害発生回数、障害可能率を用いて仮想マシンの移行先として最も相応しい物理サーバを決定するようにした。しかし、逆に当該仮想マシンの移行先として避けるべき物理サーバを決定し、残りの物理サーバから任意に選択して移行先を決定する、という消去法を採用してもよい。本実施形態の障害率希望値を用いた障害率がこの消去法の役割を一部果たしているといえるが、障害発生回数、障害可能率にもこの役割を持たせるということである。例えば、障害発生回数が３回を超えるマシン構成になってしまう移行を要する物理サーバは移行先候補から除外する、といった判定を行うようにソフトウェアの設計変更をするとよい。このようにすれば、移行先の決定の要件が緩和されるので、決定すべき移行先が存在しない、といった不都合な事態は起こりにくくなる。
【０１３３】
また、本実施形態で説明した種々の技術を適宜組み合わせた技術を実現することもできる。
【０１３４】
その他、ハードウェア、ソフトウェア、各フローチャートなどの具体的な構成について、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【符号の説明】
【０１３５】
１００    管理サーバ（仮想マシン管理装置）
１０１    補助記憶部（記憶部）
１０３    物理サーバ
１０４    ＣＰＵ（制御部）
１０５    メモリ（記憶部）
１３１    仮想マシン
１２１    マシン構成情報テーブル
１２２    物理サーバリソース情報テーブル
１２３    リソース重み付け情報テーブル
１２４    仮想マシン使用目的情報テーブル
１２５    物理サーバ障害履歴情報テーブル
１２６    物理サーバ障害発生回数情報テーブル
１２７    仮想マシン稼働履歴情報テーブル
１２８    障害タイプ一覧テーブル
１２９    障害時マシン構成履歴情報テーブル
【図１】
2012118841.tif 000008
【図２】
2012118841.tif 000009
【図３】
2012118841.tif 000010
【図４】
2012118841.tif 000011
【図５】
2012118841.tif 000012
【図６】
2012118841.tif 000013
【図７】
2012118841.tif 000014
【図８】
2012118841.tif 000015
【図９】
2012118841.tif 000016
【図１０】
2012118841.tif 000017
【図１１】
2012118841.tif 000018
【図１２】
2012118841.tif 000019
【図１３】
2012118841.tif 000020
【図１４】
2012118841.tif 000021
【図１５Ａ】
2012118841.tif 000022
【図１５Ｂ】
2012118841.tif 000023