(57)【要約】  優先度の高い仮想マシンの停止処理を高速化する。  記憶部（１ｅ）は、仮想マシン（１ａ，１ｂ，１ｃ，１ｄ）それぞれの優先度を示す情報を記憶する。制御部（１ｆ）は、仮想マシン（１ａ，１ｂ，１ｃ，１ｄ）に並行して停止処理を実行させる際に、記憶部（１ｅ）を参照して、仮想マシン（１ａ，１ｂ，１ｃ，１ｄ）のうちから仮想マシン（１ａ）を選択する。また、制御部（１ｆ）は、記憶部（１ｅ）を参照して、仮想マシン（１ａ）の優先度よりも低い優先度である仮想マシン（１ｂ，１ｃ，１ｄ）のうちから仮想マシン（１ｃ，１ｄ）を選択する。制御部（１ｆ）は、選択された仮想マシン（１ｃ，１ｄ）に対するリソースの割当量を減少させ、減少させた割当量に対応するリソースを用いて仮想マシン（１ａ）のリソースの割当量を増加させる。
2013145288.tif 000002
【特許請求の範囲】
【請求項１】
複数の仮想マシンを実行可能な情報処理装置であって、
前記複数の仮想マシンそれぞれの優先度を示す情報を記憶する記憶部と、
前記複数の仮想マシンに並行して停止処理を実行させる際に、前記記憶部を参照して、前記複数の仮想マシンのうちから第１の仮想マシンを選択し、当該第１の仮想マシンの優先度よりも低い優先度である仮想マシンのうちから１または複数の第２の仮想マシンを選択し、選択された第２の仮想マシンに対するリソースの割当量を減少させ、減少させた割当量に対応するリソースを用いて第１の仮想マシンに対するリソースの割当量を増加させる制御部と、
を有する情報処理装置。
【請求項２】
前記記憶部は、前記複数の仮想マシンそれぞれに対して、安全に停止させる候補の仮想マシンであるか否かを示す情報を記憶し、
前記制御部は、第２の仮想マシンを選択するとき、前記記憶部を参照して、安全に停止させる候補でない仮想マシンの中から第２の仮想マシンを選択する、
請求の範囲第１項記載の情報処理装置。
【請求項３】
前記制御部は、第２の仮想マシンを選択するとき、安全に停止させる候補でない仮想マシンのうち、所定のリソースの割当量よりも現在のリソースの割当量の方が大きい仮想マシンを第２の仮想マシンとして選択し、前記所定のリソースの割当量と前記現在のリソースの割当量との差の分だけ第２の仮想マシンに対するリソースの割当量を減少させる、請求の範囲第２項記載の情報処理装置。
【請求項４】
前記制御部は、安全に停止させる候補でない仮想マシンのみでは第１の仮想マシンに割当可能となるリソースの割当量が閾値に達しないとき、安全に停止させる候補である仮想マシンの中からも第２の仮想マシンを選択する、請求の範囲第３項記載の情報処理装置。
【請求項５】
前記制御部は、安全に停止させる候補である仮想マシンから第２の仮想マシンを選択するとき、第１の仮想マシンに割当可能となるリソースの割当量が閾値に達するまで、安全に停止させる候補である仮想マシンのうち優先度が低い方から順番に第２の仮想マシンとして選択する、請求の範囲第４項記載の情報処理装置。
【請求項６】
前記制御部は、何れかの仮想マシンが停止完了すると、前記記憶部を参照して、停止処理中の仮想マシンのうちから第１の仮想マシンを新たに選択し、停止完了した仮想マシンに対するリソースを用いて、新たに選択された第１の仮想マシンに対するリソースの割当量を増加させる、請求の範囲第１項乃至第５項の何れか一項に記載の情報処理装置。
【請求項７】
前記制御部は、第１の仮想マシンを選択するとき、未停止の仮想マシンのうち、優先度の最も高い仮想マシンを第１の仮想マシンとして選択する、請求の範囲第１項乃至第６項の何れか一項に記載の情報処理装置。
【請求項８】
前記制御部は、第１の仮想マシンが最初に選択される際に、前記複数の仮想マシンに対するリソースの割当量を均一にする、請求の範囲第１項乃至第７項の何れか一項に記載の情報処理装置。
【請求項９】
前記制御部は、前記複数の仮想マシンを制御する制御用の仮想マシンが情報処理装置で実行されている場合、前記複数の仮想マシンが全て停止完了した後に、前記複数の仮想マシンに割当てられていた全てのリソースを前記制御用の仮想マシンに割当てて、前記制御用の仮想マシンに停止処理を実行させる、請求の範囲第１項乃至第８項の何れか一項に記載の情報処理装置。
【請求項１０】
前記制御部は、前記複数の仮想マシンに対して停止の指示が行われた後、第１の時間が経過すると、停止処理中である仮想マシンを強制的に停止させる、請求の範囲第１項乃至第９項の何れか一項に記載の情報処理装置。
【請求項１１】
前記制御部は、情報処理装置の電源に用いられる装置による給電が可能な第２の時間に基づいて、前記第１の時間を決定する、請求の範囲第１０項記載の情報処理装置。
【請求項１２】
複数の仮想マシンを実行可能な情報処理装置が実行する仮想マシン停止方法であって、
前記複数の仮想マシンに並行して停止処理を実行させる際に、前記複数の仮想マシンのうち、相対的に優先度の高い仮想マシンに対して割り当てる該情報処理装置のリソースの量を増大させ、前記複数の仮想マシンのうち、相対的に優先度の低い仮想マシンに対して割り当てる該情報処理装置のリソースの量を減少させる調整を行う、
ことを特徴とする仮想マシン停止方法。
【請求項１３】
複数の仮想マシンを実行可能なコンピュータに、
前記複数の仮想マシンに並行して停止処理を実行させる際に、前記複数の仮想マシンそれぞれの優先度を示す情報に基づいて、前記複数の仮想マシンのうちから第１の仮想マシンを選択し、当該第１の仮想マシンの優先度よりも低い優先度である仮想マシンのうちから１またはそれ以上の第２の仮想マシンを選択し、
選択された第２の仮想マシンに対するリソースの割当量を減少させ、減少させた割当量に対応するリソースを用いて第１の仮想マシンに対するリソースの割当量を増加させる、
処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置、仮想マシン停止方法およびプログラムに関する。
【背景技術】
【０００２】
情報処理の分野では、物理的なコンピュータ（物理マシンや物理ホストと呼ぶことがある）上で、複数の仮想的なコンピュータ（仮想マシンや論理ホストと呼ぶことがある）を動作させる仮想化技術が利用されている。各仮想マシン上では、ＯＳ（Operating System）などのソフトウェアを実行できる。仮想化技術を利用する物理マシンは、複数の仮想マシンを管理するためのソフトウェアを実行する。例えば、ハイパーバイザと呼ばれるソフトウェアが、ＣＰＵ（Central Processing Unit）の処理能力やＲＡＭ（Random Access Memory）の記憶領域を、演算のリソースとして複数の仮想マシンに割り振ることがある。【０００３】
ところで、物理マシンは電源に接続される。停電等の障害により電源から物理マシンへの電力供給が停止することがある。物理マシンへの電力供給が途絶えると、物理マシンが予期せずに停止されてしまう。そこで、無停電電源装置（ＵＰＳ：Uninterruptible Power Supply）を物理マシンの電源に用いることがある。ＵＰＳは充電可能なバッテリを内蔵し、商用電源などに接続される。ＵＰＳは、電源障害時にはバッテリから電力を供給する。これにより、停電時に物理マシンへの電力供給が中断することの防止を図れる。バッテリからの給電により仮想マシンや物理マシンを安全に停止させることも考えられる。【０００４】
例えば、複数の仮想マシンを実行する仮想化サーバで電源障害があった場合に、仮想マシンごとのユーザ指定優先度とＣＰＵリソース割当てを判断することによりシャットダウン処理順を決定し、仮想マシンのシャットダウンを行うことが提案されている。【０００５】
なお、ある物理計算機から他の物理計算機へ仮想計算機を移動させる際、何れの物理計算機からも十分なリソースを確保できない場合に、移動させる仮想計算機よりも低優先度の仮想計算機を実行する物理計算機を移動先として選択可能にする提案もある。この提案では、移動させた仮想計算機に対し移動前に割当てられていたリソースの実使用量に対応するリソースを、低優先度の仮想計算機から剥奪し、移動させた仮想計算機に割当てる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−２８２７１４号公報
【特許文献２】特開２０１１−１２８９６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
停電などの緊急時に、情報処理装置上の複数の仮想マシンを並行して停止させることがある。この場合、仮想マシンを停止するための所要時間が長くなることがある。各仮想マシンで停止処理のためにリソースを所要し、全ての仮想マシンに十分なリソースを割当てられるとは限らないからである。一方で、停電などの緊急時には物理マシンへの給電可能時間が制限され得る。例えば、ＵＰＳのバッテリの蓄電量が尽きると給電が難しい。このため、仮想マシンの停止完了が制限時間に間に合わないことがあるという問題がある。【０００８】
例えば、仮想マシンの停止完了が間に合わない場合、仮想マシンを強制的に停止完了させることも考えられる。しかし、強制的に停止完了させると、仮想マシンでデータの不整合が生じるなどの障害を引き起こすおそれがある。また、その障害を復旧するためのコストも生じ得る。この影響は、仮想マシンが重要な処理を担っているほど深刻になり得る。【０００９】
一側面によれば、本発明は、優先度の高い仮想マシンの停止処理を高速化できる情報処理装置、仮想マシン停止方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
一実施態様によれば、複数の仮想マシンを実行可能な情報処理装置が提供される。情報処理装置は、記憶部と制御部とを有する。記憶部は、複数の仮想マシンそれぞれの優先度を示す情報を記憶する。制御部は、複数の仮想マシンに並行して停止処理を実行させる際に、記憶部を参照して、複数の仮想マシンのうちから第１の仮想マシンを選択し、当該第１の仮想マシンの優先度よりも低い優先度である仮想マシンのうちから１またはそれ以上の第２の仮想マシンを選択し、選択された第２の仮想マシンに対するリソースの割当量を減少させ、減少させた割当量に対応するリソースを用いて第１の仮想マシンに対するリソースの割当量を増加させる。【００１１】
また、一実施態様によれば、複数の仮想マシンを実行可能な情報処理装置が実行する仮想マシン停止方法が提供される。仮想マシン停止方法では、複数の仮想マシンに並行して停止処理を実行させる際に、複数の仮想マシンのうち、相対的に優先度の高い仮想マシンに対して割り当てる該情報処理装置のリソースの量を増大させ、複数の仮想マシンのうち、相対的に優先度の低い仮想マシンに対して割り当てる該情報処理装置のリソースの量を減少させる調整を行う。【００１２】
また、複数の仮想マシンを実行可能なコンピュータに、複数の仮想マシンに並行して停止処理を実行させる際に、複数の仮想マシンそれぞれの優先度を示す情報に基づいて、複数の仮想マシンのうちから第１の仮想マシンを選択し、当該第１の仮想マシンの優先度よりも低い優先度である仮想マシンのうちから１またはそれ以上の第２の仮想マシンを選択し、選択された第２の仮想マシンに対するリソースの割当量を減少させ、減少させた割当量に対応するリソースを用いて第１の仮想マシンに対するリソースの割当量を増加させる、処理を実行させるプログラムが提供される。
【発明の効果】
【００１３】
一実施態様によれば、優先度の高い仮想マシンの停止処理を高速化できる。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
【図面の簡単な説明】
【００１４】
【図１】第１の実施の形態の情報処理装置を示す図である。
【図２】第２の実施の形態の情報処理システムを示す図である。
【図３】第２の実施の形態の実行サーバのハードウェア例を示す図である。
【図４】第２の実施の形態のＵＰＳのハードウェア例を示す図である。
【図５】第２の実施の形態の仮想マシンの配置例を示す図である。
【図６】第２の実施の形態のソフトウェア例を示す図である。
【図７】第２の実施の形態の給電時間テーブルの例を示す図である。
【図８】第２の実施の形態の管理テーブルの例を示す図である。
【図９】第２の実施の形態のリソース初期値テーブルの例を示す図である。
【図１０】第２の実施の形態のリソース最低値テーブルの例を示す図である。
【図１１】第２の実施の形態の電源障害時の処理例を示すフローチャートである。
【図１２】第２の実施の形態のゲスト停止の例を示すフローチャートである。
【図１３】第２の実施の形態のリソース割当量の遷移の例を示す図である。
【図１４】第２の実施の形態の電源障害時のシーケンス図である。
【図１５】電源障害時の他のシーケンス図である。
【図１６】リソース割当量に対する停止処理の所要時間の例を示す図である。
【図１７】第３の実施の形態の割当リソース閾値テーブルの例を示す図である。
【図１８】第３の実施の形態のゲスト停止の例を示すフローチャートである。
【図１９】第３の実施の形態のリソース割当量の遷移の例を示す図である。
【発明を実施するための形態】
【００１５】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の情報処理装置を示す図である。情報処理装置１は、仮想マシン１ａ，１ｂ，１ｃ，１ｄ、記憶部１ｅおよび制御部１ｆを有する。情報処理装置１は、ＣＰＵなどのプロセッサとＲＡＭなどのメモリとを備えてもよく、メモリに記憶されたプログラムをプロセッサが実行するコンピュータであってもよい。
【００１６】
仮想マシン１ａ，１ｂ，１ｃ，１ｄは、情報処理装置１で動作する仮想的なコンピュータである。例えば、情報処理装置１が実行するハイパーバイザが、情報処理装置１上で仮想マシン１ａ，１ｂ，１ｃ，１ｄを動作させてもよい。
【００１７】
記憶部１ｅは、仮想マシン１ａ，１ｂ，１ｃ，１ｄそれぞれの優先度を示す情報を記憶する。例えば、仮想マシン１ａの優先度は“Ｐ１”である。仮想マシン１ｂの優先度は“Ｐ２”である。仮想マシン１ｃの優先度は“Ｐ３”である。仮想マシン１ｄの優先度は“Ｐ４”である。図１の例では、優先度の高さは、“Ｐ１”が最高である。“Ｐ１”の次に“Ｐ２”が高い。“Ｐ２”の次に“Ｐ３”が高い。“Ｐ４”が最低である。図１では、この優先度の順位を“Ｐ１＞Ｐ２＞Ｐ３＞Ｐ４”と表記している。
【００１８】
制御部１ｆは、仮想マシン１ａ，１ｂ，１ｃ，１ｄに並行して停止処理を実行させる際に、記憶部１ｅを参照して、第１の仮想マシンを選択する。また、制御部１ｆは、記憶部１ｅを参照して、第１の仮想マシンの優先度よりも低い優先度である１またはそれ以上の第２の仮想マシンを選択する。
【００１９】
例えば、制御部１ｆは、情報処理装置１に対して電力を供給する電源の障害が検出された場合などに仮想マシン１ａ，１ｂ，１ｃ，１ｄに並行して停止処理を実行させる。情報処理装置１への給電が途絶える前に、仮想マシン１ａ，１ｂ，１ｃ，１ｄをできるだけ安全に停止しておくためである。
【００２０】
例えば、情報処理装置１と接続された電源装置が電源異常を検出することで、電源の障害を検出することが考えられる。電源装置は、電源異常を検出した際に、情報処理装置１へその旨を通知してもよい。また、情報処理装置１を管理する他の装置が存在する場合、電源装置は、当該他の装置を介して電源異常を検出した旨を情報処理装置１へ通知してもよい。制御部１ｆは、電源異常の通知を受け付けた場合に、仮想マシン１ａ，１ｂ，１ｃ，１ｄに対して停止の指示を行ってもよい。
【００２１】
例えば、制御部１ｆは、仮想マシン１ａ，１ｂ，１ｃ，１ｄのうち最高の優先度の仮想マシン１ａを第１の仮想マシンとして選択する。例えば、制御部１ｆは、仮想マシン１ａの優先度“Ｐ１”よりも低い優先度である仮想マシン１ｂ，１ｃ，１ｄのうち、優先度の低いものから１またはそれ以上の第２の仮想マシンを選択する。例えば、第２の仮想マシンを２つ選択する場合、制御部１ｆは優先度の低い２つの仮想マシン１ｃ，１ｄを第２の仮想マシンとして選択する。なお、仮想マシン１ａよりも優先度の低い全ての仮想マシン１ｂ，１ｃ，１ｄを第２の仮想マシンとして選択してもよい。
【００２２】
制御部１ｆは、選択された第２の仮想マシンに対するリソースの割当量を減少させ、減少させた分のリソースの割当量を用いて第１の仮想マシンに対するリソースの割当量を増加させる。例えば、仮想マシン１ａが第１の仮想マシンとして選択され、仮想マシン１ｃ，１ｄが第２の仮想マシンとして選択されているとする。この場合、制御部１ｆは仮想マシン１ｃ，１ｄに対するリソースの割当量を減少させる。制御部１ｆは、仮想マシン１ｃ，１ｄで減少させた割当量に対応するリソースを用いて、仮想マシン１ａに対するリソースの割当量を増加させる。
【００２３】
ここで、減少させた割当量に対応するリソースを用いて、仮想マシン１ａに対するリソースの割当量を増加させる処理は、次の２つの方法が考えられる。第１には、例えば仮想マシン１ｃ，１ｄに割り当てられていたリソースを、そのまま仮想マシン１ａに割り当てる方法である。第２には、例えば仮想マシン１ｃ，１ｄについて減少させた分のリソースの割当量を、全体で利用可能なリソースの中から抽出して割り当てる方法である（リソースの再配分）。制御部１ｆは、何れかの方法を用いて、仮想マシン１ａに対するリソースの割当量を増加させることができる。
【００２４】
また、制御部１ｆは、上記のリソースの割当変更を仮想マシン１ａ，１ｂ，１ｃ，１ｄに対する停止の指示の後に行ってもよいし、停止の指示の前に行ってもよい。
情報処理装置１によれば、制御部１ｆにより、仮想マシン１ａ，１ｂ，１ｃ，１ｄに並行して停止処理を実行させる際に、記憶部１ｅが参照されて、仮想マシン１ａ，１ｂ，１ｃ，１ｄのうちから、第１の仮想マシンが選択され、第１の仮想マシンの優先度よりも低い優先度である仮想マシンのうちから１またはそれ以上の第２の仮想マシンが選択される。制御部１ｆにより、選択された第２の仮想マシンに対するリソースの割当量が減少し、減少させた割当量に対応するリソースを用いて、第１の仮想マシンに対するリソースの割当量が増加するように制御される。
【００２５】
これにより、優先度の高い仮想マシンの停止処理を高速化できる。具体的には次の通りである。仮想マシンに対するリソースの割当量を増加させると、ＣＰＵの処理能力やＲＡＭの記憶領域などをより多く利用可能となる。このため、リソースの割当量の増加前と比べて停止処理の実行速度が向上し得る。すなわち、ある仮想マシンに対するリソースの割当量を増加させることで、当該仮想マシンの停止処理完了までの所要時間の短縮化を図れる。
【００２６】
ここで、電源障害が発生した場合、情報処理装置１に対して電力を供給可能な時間が制限されることがある（ＵＰＳのバッテリからの給電時など）。このとき、何れの仮想マシンにも割当てられていない未割当のリソースが存在すれば、当該未割当のリソースを仮想マシンに割当てて停止処理の所要時間の短縮を図ることも考えられる。しかし、未割当のリソースのみでは、当該仮想マシンが制限時間内に安全に停止を完了するには不十分なこともある。また、未割当のリソースが存在しないこともある。
【００２７】
そこで、情報処理装置１では、第１の仮想マシンの優先度よりも低い優先度である第２の仮想マシンに対するリソースの割当分を回収し、回収したリソースを第１の仮想マシンに割り当てることによりリソースを第１の仮想マシンに集中させる。例えば、重要度の高い処理を担う仮想マシンほど、停止させる優先度を高く設定しておくことが考えられる。また、安全に停止したい仮想マシンの優先度を高く設定しておくことが考えられる。すると、当該仮想マシンについて、停止処理完了までの所要時間の一層の短縮化を図れる。例えば、給電可能な時間が制限される場合にも、優先度の高い仮想マシンを、制限時間内に安全に停止完了できる可能性を高められる。
【００２８】
回収したリソースを第１の仮想マシンに割り当てた後、仮想マシン１ａ，１ｂ，１ｃ，１ｄは停止処理を完了していく。ここで、更に、制御部１ｆは、停止完了した仮想マシンに対するリソースの割当分を回収し、停止処理中である仮想マシンのうちの何れかに追加してもよい。例えば、停止処理中である仮想マシンのうち、最高の優先度の仮想マシンに回収した分のリソースの割当量を追加してもよい。このようにすれば、未停止の仮想マシンのうち相対的に優先度の高い仮想マシンについて、停止完了までの所要時間の短縮化を図れる。よって、当該仮想マシンを、制限時間内に安全に停止完了できる可能性を高められる。
【００２９】
なお、制御部１ｆの機能は、例えば仮想マシン１ａ，１ｂ，１ｃ，１ｄを制御する制御用の仮想マシンに設けられてもよい。制御部１ｆの機能は、例えばハイパーバイザに設けられてもよい。
【００３０】
［第２の実施の形態］
図２は、第２の実施の形態の情報処理システムを示す図である。第２の実施の形態の情報処理システムは、実行サーバ１００，２００、ＵＰＳ３００，４００、監視サーバ５００および管理用クライアント６００を含む。実行サーバ１００，２００，監視サーバ５００および管理用クライアント６００は、ネットワーク１０に接続されている。ネットワーク１０は、例えば、ＬＡＮ（Local Area Network）である。ＵＰＳ３００，４００および監視サーバ５００は、ネットワーク２０に接続されている。ネットワーク２０は、ＬＡＮである。ネットワーク２０は、例えばＵＰＳ３００，４００などを監視するためのＬＡＮである。
【００３１】
実行サーバ１００，２００は、複数の仮想マシンを実行可能なサーバコンピュータである。実行サーバ１００，２００上の各仮想マシンが連携して、ネットワーク１０またはネットワーク１０の外部のネットワーク（図示を省略）に接続されたクライアントコンピュータ（図示を省略）に対する所定のサービスを提供する。
【００３２】
ＵＰＳ３００，４００は、バッテリを内蔵した無停電電源装置である。ＵＰＳ３００は、電源ケーブルを用いて実行サーバ１００と接続され、実行サーバ１００に電力を供給する。ＵＰＳ４００は、電源ケーブルを用いて実行サーバ２００と接続され、実行サーバ２００に電力を供給する。なお、監視サーバ５００にも不図示のＵＰＳを接続しておくことができる。これにより、監視サーバ５００についても停電などの電源障害に備えることができる。
【００３３】
監視サーバ５００は、他の装置の稼働状況を監視するサーバコンピュータである。監視サーバ５００の監視対象には、ＵＰＳ３００，４００も含まれる。例えば、監視サーバ５００は、電源異常が検出された旨の通知をＵＰＳ３００，４００から受信する。すると、監視サーバ５００は、電源障害が発生した旨を実行サーバ１００，２００に通知する。
【００３４】
管理用クライアント６００は、第２の実施の形態の情報処理システムの管理者が操作するクライアントコンピュータである。管理者は、管理用クライアント６００を用いて、監視サーバ５００による監視結果の確認を行える。また、管理者は、管理用クライアント６００を用いて、実行サーバ１００，２００に停止の指示を行うこともできる。
【００３５】
図３は、第２の実施の形態の実行サーバのハードウェア例を示す図である。実行サーバ１００は、メインボード１０１、ＣＰＵ１０２、ＲＡＭ１０３、ＨＤＤ（Hard Disk Drive）１０４、画像信号処理部１０５、入力信号処理部１０６、ディスクドライブ１０７、通信部１０８および電源部１０９を有する。実行サーバ２００、監視サーバ５００および管理用クライアント６００も、実行サーバ１００と同様のハードウェアを用いて実装できる。
【００３６】
メインボード１０１は、実行サーバ１００の他の各ユニットを接続するための基板である。また、メインボード１０１は、電源部１０９から供給される電力を実行サーバ１００の他の各ユニットに供給する。
【００３７】
ＣＰＵ１０２は、実行サーバ１００の情報処理を制御するプロセッサである。ＣＰＵ１０２は、ＨＤＤ１０４に記憶されているプログラムやデータの少なくとも一部を読み出し、ＲＡＭ１０３に展開してプログラムを実行する。なお、実行サーバ１００は、複数のプロセッサを設けて、プログラムを分散して実行してもよい。
【００３８】
ＲＡＭ１０３は、ＣＰＵ１０２が実行するプログラムや処理に用いるデータを一時的に記憶する揮発性メモリである。なお、実行サーバ１００は、ＲＡＭ以外の種類のメモリを備えてもよく、複数個のメモリを備えていてもよい。
【００３９】
ＨＤＤ１０４は、ＯＳプログラムやアプリケーションプログラムなどのプログラムおよびデータを記憶する不揮発性の記憶装置である。ＨＤＤ１０４は、ＣＰＵ１０２の命令に従って、内蔵の磁気ディスクに対してデータの読み書きを行う。なお、実行サーバ１００は、ＨＤＤ以外の種類の不揮発性の記憶装置（例えば、ＳＳＤ（Solid State Drive）など）を備えてもよく、複数の記憶装置を備えていてもよい。
【００４０】
画像信号処理部１０５は、ＣＰＵ１０２の命令に従って、実行サーバ１００に接続されたディスプレイ１１に画像を出力する。ディスプレイ１１としては、例えば、ＣＲＴ（Cathode Ray Tube）ディスプレイや液晶ディスプレイを用いることができる。
【００４１】
入力信号処理部１０６は、実行サーバ１００に接続された入力デバイス１２から入力信号を取得し、ＣＰＵ１０２に出力する。入力デバイス１２としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
【００４２】
ディスクドライブ１０７は、記録媒体１３に記録されたプログラムやデータを読み取る駆動装置である。記録媒体１３としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリを使用できる。磁気記録装置には、ＨＤＤ、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＣＤ（Compact Disc）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−Ｒ／ＲＷ／ＲＡＭなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。半導体メモリには、ＵＳＢ（Universal Serial Bus）メモリなどのフラッシュメモリがある。ディスクドライブ１０７は、例えば、ＣＰＵ１０２の命令に従って、記録媒体１３から読み取ったプログラムやデータをＲＡＭ１０３またはＨＤＤ１０４に格納する。
【００４３】
通信部１０８は、ネットワーク１０を介して他のサーバと通信を行う通信インタフェースである。通信部１０８は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
【００４４】
電源部１０９は、電源ケーブルを介してＵＰＳ３００に接続される。電源部１０９は、ＵＰＳ３００から供給される電力をメインボード１０１へ供給する。
なお、監視サーバ５００はネットワーク２０に接続するための通信部も有している。
【００４５】
図４は、第２の実施の形態のＵＰＳのハードウェア例を示す図である。ＵＰＳ３００は、メインボード３０１、ＣＰＵ３０２、ＲＡＭ３０３、不揮発性メモリ３０４、操作パネル３０５、通信部３０６、給電部３０７およびバッテリ３０８を有する。ＵＰＳ４００もＵＰＳ３００と同様のハードウェアを用いて実装できる。
【００４６】
メインボード３０１は、ＵＰＳ３００のバッテリ３０８以外の他の各ユニットを接続するための基板である。また、メインボード３０１は、給電部３０７から供給される電力をＵＰＳ３００のバッテリ３０８以外の他の各ユニットに供給する。
【００４７】
ＣＰＵ３０２は、ＵＰＳ３００の情報処理を制御するプロセッサである。ＣＰＵ３０２は、不揮発性メモリ３０４に記憶されているプログラムやデータの少なくとも一部を読み出し、ＲＡＭ３０３に展開してプログラムを実行する。
【００４８】
ＲＡＭ３０３は、ＣＰＵ３０２が実行するプログラムや処理に用いるデータを一時的に記憶する揮発性メモリである。
不揮発性メモリ３０４は、ファームウェアプログラムなどのプログラムおよびデータを記憶する不揮発性の記憶装置である。不揮発性メモリ３０４は、例えば、半導体メモリである。
【００４９】
操作パネル３０５は、管理者がＵＰＳ３００に対する操作指示を入力するための入力部やＵＰＳ３００の状態を確認するための表示部などを備えたインタフェースである。
通信部３０６は、ネットワーク２０を介して監視サーバ５００と通信を行う通信インタフェースである。通信部３０６は、監視サーバ５００とＲＳ−２３２Ｃ（Recommended Standard 232 version C）ケーブル、Ｉ２Ｃ（Inter-Integrated Circuit）ケーブルやＵＳＢケーブルなどのシリアル伝送用ケーブルで直接または間接に接続して通信するものでもよい。
【００５０】
給電部３０７は、電源ケーブルを介してＡＣ（Alternating Current）電源装置３０に接続される。ここで、ＡＣ電源装置３０は例えば商用の電力を供給する装置や自家発電した電力を供給する装置などである。給電部３０７は、ＡＣ電源装置３０から供給される電力によりバッテリ３０８を充電する。給電部３０７は、通常時はバッテリ３０８を充電しながら、ＡＣ電源装置３０から供給される電力を実行サーバ１００およびメインボード３０１へ供給する。
【００５１】
給電部３０７は、停電（ＡＣ電源装置３０からの電力供給の停止）などの電源異常を検出すると、直ちにバッテリ３０８からの給電に切り替える。この場合、給電部３０７は、バッテリ３０８から供給される電力を実行サーバ１００およびメインボード３０１へ供給する。
【００５２】
バッテリ３０８は、充電可能である。バッテリ３０８としては、例えば、鉛バッテリを用いることができる。
図５は、第２の実施の形態の仮想マシンの配置例を示す図である。実行サーバ１００は、ハードウェア層１１０、ハイパーバイザ１２０および仮想マシン１３０，１４０，１５０，１６０，１７０，１８０，１９０を含む。
【００５３】
ハードウェア層１１０は、メインボード１０１、ＣＰＵ１０２、ＲＡＭ１０３、ＨＤＤ１０５、入力信号処理部１０６、ディスクドライブ１０７、通信部１０８を含む物理的なリソースの集合である。
【００５４】
ハイパーバイザ１２０は、ハードウェア層１１０のリソースを用いて、仮想マシンを動作させる。ハイパーバイザ１２０は、各仮想マシンにＣＰＵ１０２の処理能力やＲＡＭ１０３の記憶領域を演算のリソースとして各仮想マシンに割当てる。ハイパーバイザ１２０は、各仮想マシンがハードウェア層のリソースを共用できるように、各仮想マシンからのハードウェア層１１０へのアクセスを調停する。ハイパーバイザ１２０は、仮想マシンモニタ（ＶＭＭ：Virtual Machine Monitor）と呼ばれることもある。
【００５５】
ここで、ハイパーバイザ１２０が各仮想マシンに割当てるＣＰＵ１０２の処理能力の単位を仮想ＣＰＵと呼ぶことがある。例えば、仮想ＣＰＵは、ＣＰＵ１０２を利用可能な時間を複数のタイムスライスに時分割した場合のタイムスライスに対応させることができる。例えば、１つの仮想ＣＰＵという場合、ＣＰＵ１０２の１つのタイムスライスを指す。１つの仮想ＣＰＵに複数のタイムスライスを対応させてもよい。仮想ＣＰＵの割当量は仮想ＣＰＵの個数で表せる。なお、以下の説明では、仮想ＣＰＵをｖＣＰＵ（virtual CPU）と呼ぶことがある。
【００５６】
また、ハイパーバイザ１２０が各仮想マシンに割当てるＲＡＭ１０３の記憶領域を単にメモリと呼ぶこととする。メモリの割当量はＧＢ（Giga Bytes）など記憶領域のサイズで表せる。
【００５７】
仮想マシン１３０，１４０，１５０，１６０，１７０，１８０，１９０は、実行サーバ１００上で動作する仮想マシンである。各仮想マシンは、それぞれ独立のＯＳを実行する。各仮想マシンが実行するＯＳは同一でもよいし、異なっていてもよい。
【００５８】
ここで、実行サーバ１００上での仮想マシンの実行単位をドメインと呼ぶことがある。
特に、仮想マシン１３０は、他の仮想マシンを管理する。例えば、仮想マシン１３０は、他の仮想マシンに対するリソースの割当量を管理する。このような仮想マシンを制御ドメインと呼ぶことがある。制御ドメイン（仮想マシン１３０）は、例えば、ハイパーバイザ１２０が起動した際に、自動的に実行される。
【００５９】
また、制御ドメイン（仮想マシン１３０）以外の仮想マシン１４０，１５０，１６０，１７０，１８０，１９０をゲストドメインと呼ぶことがある。以下の説明では、仮想マシン１４０，１５０，１６０，１７０，１８０，１９０を総称してゲストドメイン群Ｇと呼ぶことがある。また、仮想マシン１４０，１５０，１６０，１７０，１８０，１９０を指すときに各ゲストドメインということがある。また、ゲストドメインをゲストと略記することもある。ゲストドメインは、制御ドメインが起動した後に、管理者などの指示に応じて実行サーバ１００上で複数起動させることができる。
【００６０】
各仮想マシンには次のようなマシン名称が与えられている。仮想マシン１３０は“Ｃ１”である。仮想マシン１４０は“Ｇ１”である。仮想マシン１５０は“Ｇ２”である。仮想マシン１６０は“Ｇ３”である。仮想マシン１７０は“Ｇ４”である。仮想マシン１８０は“Ｇ５”である。仮想マシン１９０は“Ｇ６”である。
【００６１】
図６は、第２の実施の形態のソフトウェア例を示す図である。図６に示す管理部１３２、検出部３１０および監視部５１０の一部または全部は、実行サーバ１００、ＵＰＳ３００および監視サーバ５００が実行するプログラムのモジュールであってもよい。また、図６に示す管理部１３２、検出部３１０および監視部５１０の一部または全部は、ＦＰＧＡ（Field Programmable Gate Array）やＡＳＩＣ（Application Specific Integrated Circuit）などの電子回路であってもよい。なお、図６では、実行サーバ２００およびＵＰＳ４００の図示を省略している。ただし、実行サーバ２００も実行サーバ１００と同様のユニットを用いて実装できる。ＵＰＳ４００もＵＰＳ３００と同様のユニットを用いて実装できる。更に、図６では実行サーバ１００とＵＰＳ３００との間の電源ケーブルによる接続についても図示を省略している。
【００６２】
仮想マシン１３０は、記憶部１３１および管理部１３２を有する。
記憶部１３１は、管理部１３２の処理に用いる各種のデータを記憶する。記憶部１３１が記憶するデータには、給電時間テーブル、管理テーブル、リソース初期値テーブルおよびリソース最低値テーブルが含まれる。給電時間テーブルは、ＵＰＳ３００がバッテリ給電可能な時間を管理するためのデータである。管理テーブルは、ゲストドメインに関する情報を管理するためのデータである。リソース初期値テーブルは、停止処理を行う際にゲストドメインに対するリソースの割当量の初期値を管理するためのデータである。リソース最低値テーブルは、ゲストドメインに対するリソースの最低限の割当量を管理するためのデータである。
【００６３】
管理部１３２は、電源障害の通知を監視サーバ５００から受信すると、ゲストドメイン群Ｇに対して、停止を指示する。具体的には、管理部１３２は、仮想マシン１４０，１５０，１６０，１７０，１８０，１９０上のＯＳにシャットダウンを開始させる。管理部１３２からゲストドメイン群Ｇへの指示は、ハイパーバイザ１２０を介して行われる。また、管理部１３２は、記憶部１３１に記憶されたデータに基づいて、仮想マシン１３０，１４０，１５０，１６０，１７０，１８０，１９０に対するリソースの割当量を変更する。管理部１３２は、全てのゲストドメインを停止させた後に、仮想マシン１３０を停止させる。管理部１３２により全ての仮想マシンが停止されると、ハイパーバイザ１２０は、実行サーバ１００を停止させる。
【００６４】
なお、記憶部１３１および管理部１３２をハイパーバイザ１２０に設けてもよい。
ＵＰＳ３００は、検出部３１０を有する。検出部３１０は、停電を検出する。検出部３１０は、給電部３０７により停電が検出されると、電源異常を監視部５１０に通知する。検出部３１０は、バッテリ３０８の充電量に応じた給電可能時間を示す情報を当該通知に含める。
【００６５】
監視サーバ５００は、監視部５１０を有する。監視部５１０は、実行サーバ１００とＵＰＳ３００との対応関係、および、実行サーバ２００とＵＰＳ４００との対応関係を保持している。監視部５１０は、検出部３１０から電源異常の通知を受けると、ＵＰＳ３００に対応する実行サーバ１００に、電源障害が発生した旨を通知する（電源障害の通知）。監視部５１０は、バッテリ３０８の充電量に応じた給電可能時間を示す情報を当該通知に含める。検出部３１０または監視部５１０の何れかが、電源異常または電源障害を検出した時点の時刻を、通知に含めるようにしてもよい。
【００６６】
なお、監視部５１０を実行サーバ１００に設けてもよい。例えば、ＣＰＵ１０２が所定のプログラムを実行することで監視部５１０として機能してもよい。また、例えば、実行サーバ１００にＳＶＰ（SerVice Processor）ボードを設け、ＳＶＰボードが監視部５１０として機能してもよい。監視部５１０を実行サーバ１００に設ける場合、例えば、実行サーバ１００とＵＰＳ３００とをシリアル伝送用ケーブルやＬＡＮケーブルなどで直接または間接に接続して通信可能としてもよい。また、実行サーバ１００をネットワーク２０にも接続して、実行サーバ１００とＵＰＳ３００とを通信可能にしてもよい。
【００６７】
図７は、第２の実施の形態の給電時間テーブルの例を示す図である。給電時間テーブル１３１ａは、記憶部１３１に格納される。給電時間テーブル１３１ａは、総給電時間、ゲストドメイン停止時間（Ｔ１）および制御ドメイン停止時間（Ｔ２）の項目を含む。各項目に設定される時間の単位は、例えば秒である。
【００６８】
総給電時間の項目には、バッテリ３０８からの給電が可能な時間（給電可能時間）が登録される。ゲストドメイン停止時間（Ｔ１）の項目には、総給電時間のうち、バッテリ３０８からの給電が開始した後、ゲストドメインの停止に利用する時間が登録される。制御ドメイン停止時間（Ｔ２）の項目には、全ゲストドメインを停止させた後、制御ドメインである仮想マシン１３０の停止に利用する時間が登録される。
【００６９】
例えば、給電時間テーブル１３１ａには、総給電時間が“６００”（秒）、ゲストドメイン停止時間（Ｔ１）が“５４０”（秒）、制御ドメイン停止時間（Ｔ２）が“６０”（秒）という情報が登録される。これは、バッテリ３０８からの総給電時間６００秒のうち、最初の５４０秒をゲストドメインの停止に利用し、残りの６０秒を制御ドメインである仮想マシン１３０の停止に利用することを示す。
【００７０】
なお、制御ドメイン停止時間（Ｔ２）は、仮想マシン１３０とともにハイパーバイザ１２０を終了し、実行サーバ１００を停止するための時間も含む。ただし、ハイパーバイザ１２０や実行サーバ１００を停止するための時間をＴ２とは別個に確保してもよい。
【００７１】
図８は、第２の実施の形態の管理テーブルの例を示す図である。管理テーブル１３１ｂは、記憶部１３１に格納される。管理テーブル１３１ｂは、ゲストドメイン名、停止フラグ、安全停止フラグ、停止優先度およびリソース割当量の項目を含む。
【００７２】
ゲストドメイン名の項目には、ゲストドメインのマシン名称が登録される。停止フラグの項目には、当該ゲストドメインが停止しているか否かを示すフラグが登録される。停止済の場合は“ｔｒｕｅ”である。未停止の場合は“ｆａｌｓｅ”である。安全停止フラグの項目には、当該ゲストドメインが安全停止候補であるか否かを示すフラグが登録される。安全停止候補である場合は“ｔｒｕｅ”である。安全停止候補でない場合は“ｆａｌｓｅ”である。ここで、「安全停止（安全に停止する）」とは、ゲストドメインのシャットダウンの処理（停止処理）が中断せずに完了することを示す。「安全に停止しない」とは、ゲストドメインが停止処理を実行中であったとしても、強制的に停止させることを示す。すなわち、安全停止候補のゲストドメインは、安全に停止させたほうがよい仮想マシンである。安全停止候補でないゲストドメインは、安全に停止させなくてもよい仮想マシンである。停止優先度の項目には、ゲストドメインを停止させる優先度が登録される。優先度は、ゲストドメインが担う機能や処理の重要度や安全停止候補であるか否かに応じて予め決定される。ここでは、一例として優先度を数値で表す。数値が小さいほど優先度が高いとする。リソース割当量の項目には、現在のゲストドメインに対するリソースの割当量が登録される。リソース割当量の項目は、更にｖＣＰＵ数およびメモリ（ＧＢ）の項目を含む。ｖＣＰＵ数の項目には、ゲストドメインに割当てられているｖＣＰＵの数が登録される。メモリ（ＧＢ）の項目には、ゲストドメインに割当てられているメモリのサイズが登録される。
【００７３】
例えば、管理テーブル１３１ｂには、ゲストドメイン名が“Ｇ１”、停止フラグが“ｆａｌｓｅ”、安全停止フラグが“ｔｒｕｅ”、停止優先度が“１”、ｖＣＰＵ数が“２４”、メモリ（ＧＢ）が“３２”という情報が登録される。これは、仮想マシン１４０（ゲストドメイン名“Ｇ１”）が、未停止であり、安全停止候補であり、停止優先度が“１”でゲストドメイン群Ｇの中で最高の優先度であることを示す。また、現時点で、ｖＣＰＵが２４個、メモリが３２ＧＢ、演算のリソースとして割当てられていることを示す。
【００７４】
例えば、管理テーブル１３１ｂでは、仮想マシン１７０（ゲストドメイン名“Ｇ４”）について、停止フラグが“ｔｒｕｅ”である。これは、仮想マシン１７０が現時点で停止済である（起動していない）ことを示している。
【００７５】
更に、例えば、管理テーブル１３１ｂでは、仮想マシン１８０（ゲストドメイン名“Ｇ５”）について、安全停止フラグが“ｆａｌｓｅ”である。これは、仮想マシン１８０が安全停止候補ではないことを示している。仮想マシン１９０も同様に安全停止候補ではない。
【００７６】
なお、上述したように、優先度は、各ゲストドメインの重要度に応じて管理者などにより予め登録される。例えば、ゲストドメインがそれぞれＷｅｂサーバ、ＡＰ（APplication）サーバおよびＤＢ（DataBase）サーバとして機能し、これらが連携して所定のサービスを提供することがある。その場合、例えば、利用者のデータを管理するＤＢサーバを最重要とし、次にＡＰサーバ、その次にＷｅｂサーバというように重要度を定義する。この場合、重要度の順に優先度が高くなるよう各ゲストドメインの優先度を定義する。例えば、ＤＢサーバとして機能するゲストドメインの優先度を最高にし、次にＡＰサーバとして機能するゲストドメインの優先度を高くし、Ｗｅｂサーバの優先度を最低にする。あるいは、各ゲストドメインの重要度を各ゲストドメインが実行する業務処理の重要度に応じて定義し、当該重要度に応じた優先度を管理テーブル１３１ｂに登録してもよい。更に、安全停止候補であるゲストドメインの優先度は、安全停止候補でないゲストドメインの優先度よりも高く設定される。
【００７７】
また、制御ドメインである仮想マシン１３０に対するリソース割当量は予め所定値（例えば、ｖＣＰＵ数が１６個、メモリが３２ＧＢなど）が定められる。
図９は、第２の実施の形態のリソース初期値テーブルの例を示す図である。リソース初期値テーブル１３１ｃは、記憶部１３１に格納される。リソース初期値テーブル１３１ｃは、ｖＣＰＵ数およびメモリ（ＧＢ）の項目を含む。
【００７８】
ｖＣＰＵ数の項目には、停止処理を行う際にゲストドメインに対して割当てるｖＣＰＵの数の初期値が登録される。メモリ（ＧＢ）の項目には、停止処理を行う際にゲストドメインに対して割当てるメモリのサイズの初期値が登録される。例えば、ｖＣＰＵ数の初期値は１６個である。例えば、メモリのサイズの初期値は３２ＧＢである。各リソースの初期値として、運用に応じた値を適宜設定することができる。
【００７９】
図１０は、第２の実施の形態のリソース最低値テーブルの例を示す図である。リソース最低値テーブル１３１ｄは、記憶部１３１に格納される。リソース最低値テーブル１３１ｄは、ｖＣＰＵ数およびメモリ（ＧＢ）の項目を含む。
【００８０】
ｖＣＰＵ数の項目には、ゲストドメインに対して割当てるｖＣＰＵの数の最低値が登録される。メモリ（ＧＢ）の項目には、ゲストドメインに対して割当てるメモリのサイズの最低値が登録される。例えば、ｖＣＰＵ数の最低値は８個である。例えば、メモリのサイズの最低値は１６ＧＢである。各リソースの最低値として、運用に応じた値を適宜設定することができる。
【００８１】
図１１は、第２の実施の形態の電源障害時の処理例を示すフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。
（ステップＳ１１）ＡＣ電源装置３０に障害が生じて出力電力が低下する。給電部３０７は、ＡＣ電源装置３０からの給電が停止したこと（または、所定量以上の給電を得られないこと）を検出する。
【００８２】
（ステップＳ１２）給電部３０７は、バッテリ３０８からの給電を開始する。検出部３１０は、バッテリ３０８からの給電が開始されると、監視部５１０に電源異常の通知を送信する。当該通知には、バッテリ３０８の充電量に応じた、給電可能時間が含まれる。例えば、バッテリ３０８の満充電時の給電可能時間は６００秒程度である。
【００８３】
（ステップＳ１３）監視部５１０は、電源異常の通知を受信すると、ＵＰＳ３００に対応する実行サーバ１００に、電源障害の通知を送信する。電源障害の通知には、給電可能時間が含まれる。電源障害の通知に含まれる給電可能時間は、電源異常の通知に含まれる給電可能時間と同じである。管理部１３２は、電源障害の通知を監視部５１０から受信する。
【００８４】
（ステップＳ１４）管理部１３２は、電源障害の通知に含まれる給電可能時間に基づいて、ゲストドメイン停止時間（Ｔ１）および制御ドメイン停止時間（Ｔ２）を決定し、記憶部１３１に記憶された給電時間テーブル１３１ａに、決定した時間を登録する。管理部１３２は、給電時間テーブル１３１ａの総給電時間の項目に給電可能時間を登録する。総給電時間に対するゲストドメイン停止時間（Ｔ１）および制御ドメイン停止時間（Ｔ２）の割合は管理部１３２に予め与えられる。例えば、Ｔ１：Ｔ２＝９：１である。総給電時間が６００秒であれば、管理部１３２は、Ｔ１＝５４０秒、Ｔ２＝６０秒と算出する。よって、管理部１３２は、ゲストドメイン停止時間（Ｔ１）の項目に“５４０”を登録する。また、制御ドメイン停止時間（Ｔ２）の項目に“６０”を登録する。管理部１３２は、時間のカウントを開始する。
【００８５】
（ステップＳ１５）管理部１３２は、ゲストドメイン群Ｇに含まれる全ての仮想マシン１４０，１５０，１６０，１７０，１８０，１９０（各ゲストドメイン）の停止をハイパーバイザ１２０に指示する。ハイパーバイザ１２０は、各ゲストドメインの停止を開始させる。ただし、管理部１３２は、既に停止済のゲストドメイン（例えば、仮想マシン１７０）が存在する場合、当該ゲストドメインの停止を指示しなくてもよい。
【００８６】
（ステップＳ１６）各ゲストドメインは、停止処理を実行する。停止処理が行われている間、管理部１３２は、各ゲストドメインに対するリソースの割当量を変更する。例えば、管理部１３２は、各ゲストドメインに対するリソースの割当量の変更をハイパーバイザ１２０に指示することで、当該変更を行える。
【００８７】
（ステップＳ１７）管理部１３２は、全てのゲストドメインの停止が完了すると、全ての空きリソースを制御ドメインである仮想マシン１３０に割当てる。
（ステップＳ１８）管理部１３２は、仮想マシン１３０を停止させる。仮想マシン１３０が停止するとともに、ハイパーバイザ１２０も停止して、実行サーバ１００の停止が完了する。
【００８８】
このようにして、管理部１３２は、監視部５１０から電源障害の通知を受信すると、まず、各ゲストドメインを停止させる。その後、ゲストドメインに割当てていたリソースを全て制御ドメインである仮想マシン１３０に割当てて、仮想マシン１３０を停止させて、実行サーバ１００の停止が完了する。
【００８９】
次に、ステップＳ１６のゲストドメインの停止処理（ゲスト停止）の手順を説明する。
図１２は、第２の実施の形態のゲスト停止の例を示すフローチャートである。以下、図１２に示す処理をステップ番号に沿って説明する。
【００９０】
（ステップＳ２１）管理部１３２は、記憶部１３１に記憶されたリソース初期値テーブル１３１ｃを参照して、リソース初期値を取得する。管理部１３２は、各ゲストドメインに対してリソースの割当量をリソース初期値に変更する。リソース初期値テーブル１３１ｃの例では、ｖＣＰＵ数の初期値が１６個、メモリの初期値が３２ＧＢである。したがって、管理部１３２は、各ゲストドメインに対するｖＣＰＵ数の割当量を１６個とする。また、管理部１３２は、各ゲストドメインに対するメモリの割当量を３２ＧＢとする。例えば、管理テーブル１３１ｂでは、仮想マシン１４０（ゲストドメイン名“Ｇ１”）のｖＣＰＵ数が２４個であり、仮想マシン１８０（ゲストドメイン名“Ｇ５”）および仮想マシン１９０（ゲストドメイン名“Ｇ６”）のｖＣＰＵ数が８個である。したがって、管理部１３２は、仮想マシン１４０，１８０，１９０に対するｖＣＰＵ数の割当量を一律に１６個とする。元々初期値である場合には、変更しなくてよい。なお、各ゲストドメインの停止処理中におけるリソースの回収や追加は、停止処理の中断を伴わずに行える（以下、同様）。また、管理部１３２には、上記リソース初期値の設定の際に、未停止の仮想マシンのうち優先度が最高のものを選択するように予め設定されている。すなわち、管理部１３２は、リソースの集中先として、最高の優先度のものを選択する。この選択は、上記のリソース初期値の設定の前または後の何れかのタイミングで行われる。
【００９１】
（ステップＳ２２）管理部１３２は、記憶部１３１に記憶された管理テーブル１３１ｂを参照して、安全停止候補でないゲストドメインを選択する。管理部１３２は、記憶部１３１に記憶されたリソース最低値テーブル１３１ｄを参照して、リソース最低値を取得する。管理部１３２は、安全停止候補でないゲストドメインからリソース最低値を残してリソースを回収する。管理テーブル１３１ｂの例では、仮想マシン１８０，１９０について、安全停止フラグが“ｆａｌｓｅ”である。このため、管理部１３２は、仮想マシン１８０，１９０を選択する。リソース最低値テーブル１３１ｄの例では、ｖＣＰＵ数の最低値は８個、メモリの最低値は１６ＧＢである。したがって、管理部１３２は、仮想マシン１８０，１９０のｖＣＰＵ数を１６個から８個に変更する（合計で１６個のｖＣＰＵを回収）。また、管理部１３２は、仮想マシン１８０，１９０のメモリを３２ＧＢから１６ＧＢに変更する（合計で３２ＧＢのメモリを回収）。ここで、安全停止候補でないゲストドメインは安全停止候補であるゲストドメインよりも、優先度は低く設定される。したがって、ステップＳ２２で選択されるゲストドメインは、この時点での最高の優先度のゲストドメインよりも優先度の低いゲストドメインとなる。
【００９２】
（ステップＳ２３）管理部１３２は、管理テーブル１３１ｂを参照して、停止済のドメインを選択する。管理部１３２は、管理テーブル１３１ｂを参照して、停止済のドメインに割当てられているリソースを全て回収する。
【００９３】
（ステップＳ２４）管理部１３２は、管理テーブル１３１ｂを参照して、未停止のゲストドメインのうち、最高優先度のゲストドメインを選択する。管理部１３２は、選択したゲストドメインに、ステップＳ２２，Ｓ２３で回収したリソースを含む未割当のリソースを割当てる（リソースの追加）。
【００９４】
（ステップＳ２５）管理部１３２は、記憶部１３１に記憶された給電時間テーブル１３１ａを参照して、ゲストドメイン停止時間（Ｔ１）が未経過であるか否かを判定する。Ｔ１が未経過である場合、処理をステップＳ２６に進める。Ｔ１を経過している場合、処理をステップＳ２８に進める。
【００９５】
（ステップＳ２６）ハイパーバイザ１２０は、何れかのゲストドメインが停止を完了する直前に、当該ゲストドメインから停止を完了することを示す停止通知を受け付ける。停止通知には、例えば、ゲストドメイン名が含まれる。ハイパーバイザ１２０は、当該停止通知を受け付けると、管理部１３２に停止通知を送る。管理部１３２は、停止通知を受け付ける。管理部１３２は、管理テーブル１３１ｂに停止フラグの設定を変更する。具体的には、停止通知の送信元のゲストドメインについて、停止フラグを“ｆａｌｓｅ”から“ｔｒｕｅ”へ変更する。
【００９６】
（ステップＳ２７）管理部１３２は、全ゲストドメインを停止済であるか否かを判定する。全ゲストドメインが停止済である場合、処理を終了する。未停止のゲストドメインが存在する場合、処理をステップＳ２３に進める。例えば、管理テーブル１３１ｂにおいて、停止フラグが全て“ｔｒｕｅ”であれば、全ゲストドメインが停止済である。一方、停止フラグに１つ以上の“ｆａｌｓｅ”があれば、未停止のゲストドメインが存在する。
【００９７】
（ステップＳ２８）管理部１３２は、未停止のゲストドメインを直ちに停止させる。管理部１３２は、ゲストドメインが停止処理中であったとしても強制的に停止させる。
このようにして、管理部１３２は、安全停止候補でないゲストドメインからリソースを回収し、優先度の高いゲストドメインに割当てる。更に、管理部１３２は、停止済のゲストドメインからリソースを回収し、優先度の高いゲストドメインに割当てる。管理部１３２は、何れかのゲストドメインが停止するたびに、停止済のゲストドメインからリソースを回収して優先度の高いゲストドメインに割当てる。
【００９８】
優先度の低いゲストドメインのリソースを回収して、優先度の高いゲストドメインに集中させることで、リソースを集中させない場合に比べて、優先度の高いゲストドメインを短時間で停止完了させることができる。
【００９９】
ここで、ステップＳ２１のように、各ゲストドメインに対するリソースの割当量をリソース初期値で均一に設定することで、各ゲストドメインに対するリソースのばらつきを抑えられる。例えば、停電の直前において、処理の負荷が小さかったなどの理由でリソースの割当量が小さいゲストドメインも存在し得る。リソース初期値を設定することで、このようにリソースの割当量が小さかったゲストドメインに対しても、期待するリソースの割当量で停止処理を行わせることができる。
【０１００】
また、安全停止候補でないゲストドメインからリソースを回収して、最高優先度のゲストドメインへ割当てることで、最高優先度のゲストドメインの停止処理の短縮化を図れる。このとき、安全停止候補であるゲストドメインからはリソースを回収しないようにすることで、安全停止候補であるゲストドメインに対して、リソース初期値で設定した割当量を確保して停止処理を継続させることができる。
【０１０１】
図１３は、第２の実施の形態のリソース割当量の遷移の例を示す図である。遷移表１３１ｅには、ドメイン名、リソースおよび給電可能時間の各時点におけるリソース割当量の項目が設けられている。
【０１０２】
ドメイン名の項目には、各仮想マシンのマシン名称が記入されている。ただし、最下段は未割当リソースに関する情報であることを示すために、“未割当て”と記入されている。リソースの項目には、当該ドメインに割当てられたリソースの名称（ｖＣＰＵまたはメモリ）が記入されている。ただし、最下段は、何れのドメインにも割当てられていない未割当てのリソースの名称（ｖＣＰＵまたはメモリ）である。給電可能時間の各時点におけるリソース割当量の項目には、バッテリからの給電が開始してから、給電可能時間が経過するまでの各時点における各ドメインのリソース割当量が記入されている。単位は、ｖＣＰＵが個数であり、メモリがＧＢである。例えば、実行サーバ１００で仮想マシンに割当可能な全リソースは、ｖＣＰＵ１２８個、メモリ２５６ＧＢである。
【０１０３】
例えば、給電可能時間内の各時点として、次の複数の時点が記入されている。残り６００秒、残り４２０秒、残り２８０秒、残り１６０秒、残り１２０秒、残り６０秒、残り３０秒の時点である。ただし、遷移表１３１ｅでは“残り”の文字を省略している。また、時点という場合、多少の時間幅を許容するものとする。
【０１０４】
残り６００秒の時点は、停電により、バッテリからの給電が開始されたタイミングである。残り６００秒の時点は、異常検出、リソースの初期値反映、リソースの割当変更に更に区分されている。
【０１０５】
残り４２０秒の時点は、仮想マシン１４０（ドメイン名“Ｇ１”）が停止完了したタイミングである。残り２８０秒の時点は、仮想マシン１５０（ドメイン名“Ｇ２”）が停止完了したタイミングである。残り１６０秒の時点は、仮想マシン１９０（ドメイン名“Ｇ６”）が停止完了したタイミングである。残り１２０秒の時点は、仮想マシン１６０（ドメイン名“Ｇ３”）が停止完了したタイミングである。残り６０秒の時点は、仮想マシン１８０（ドメイン名“Ｇ５”）が停止完了したタイミングである。残り３０秒の時点は、仮想マシン１３０（ドメイン名“Ｃ１”）が停止完了したタイミングである。
【０１０６】
この場合、給電時間テーブル１３１ａ、管理テーブル１３１ｂ、リソース初期値テーブル１３１ｃおよびリソース最低値テーブル１３１ｄによれば、各仮想マシンに対するリソースの割当量は、例えば次のように遷移する。
【０１０７】
まず、電源異常が検出された時点での各仮想マシンのリソースの割当量は次の通りである。仮想マシン１４０のｖＣＰＵ数は２４個、メモリサイズは３２ＧＢである。仮想マシン１３０，１５０，１６０，１７０のｖＣＰＵ数はそれぞれ１６個、メモリサイズはそれぞれ３２ＧＢである。仮想マシン１８０，１９０のｖＣＰＵ数はそれぞれ８個、メモリサイズはそれぞれ３２ＧＢである。また、未使用リソースは、ｖＣＰＵ数が２４個、メモリサイズが３２ＧＢである。電源異常が検出されると、管理部１３２は、仮想マシン１４０，１５０，１６０，１７０，１８０，１９０の停止を開始させる。ただし、仮想マシン１７０はこの時点で停止済である。以下、各時点で直前の時点から変更される箇所のみを説明し、変更されない箇所の説明を省略する。
【０１０８】
管理部１３２によるリソースの初期値反映の時点で、仮想マシン１４０，１８０，１９０のｖＣＰＵが１６個に変更される。ここで、遷移表１３１ｅでは、直前の時点からの変更箇所を網掛けで図示している（以下、同様）。この時点での未使用のｖＣＰＵ数は１６個となる。なぜなら、異常検出時に対し、仮想マシン１４０ではｖＣＰＵ数が８個減少し、仮想マシン１８０，１９０ではｖＣＰＵ数がそれぞれ８個、合計１６個増加しているからである。すなわち、異常検出時の未使用のｖＣＰＵ数２４個に対して、初期値反映の時点では、未使用のｖＣＰＵ数は２４＋８−１６＝１６個となる。
【０１０９】
管理部１３２によるリソースの割当変更の時点での各仮想マシンのリソースの割当量は次の通りである。仮想マシン１８０，１９０のｖＣＰＵ数は８個、メモリサイズは１６ＧＢである。これは、リソース最低値テーブル１３１ｄに基づきリソースが回収されたからである。また、仮想マシン１７０のｖＣＰＵ数は０個、メモリサイズは０ＧＢである。仮想マシン１７０は、停止済だからである。また、未使用のｖＣＰＵ数は０個、メモリサイズは０ＧＢである。この時点で停止処理中であるゲストドメインのうち、最高優先度である仮想マシン１４０に追加されたからである。仮想マシン１７０，１８０，１９０から回収されたリソースおよび未使用のリソースを仮想マシン１４０に追加することで、仮想マシン１４０のｖＣＰＵ数は６４個（＝１６＋８＋８＋１６＋１６）となる。メモリサイズは１２８ＧＢ（＝３２＋１６＋１６＋３２＋３２）となる。
【０１１０】
残り４２０秒の時点で、仮想マシン１４０が停止完了する。すると、管理部１３２によって、リソースの割当ての変更が行われる。具体的には、仮想マシン１４０のｖＣＰＵ数は０個、メモリサイズは０ＧＢとなる。すなわち、仮想マシン１４０からｖＣＰＵ数６４個、メモリ１２８ＧＢが回収されたことになる。回収されたリソースは、この時点で停止処理中であるゲストドメインのうち、最高優先度である仮想マシン１５０に追加される。その結果、仮想マシン１５０のｖＣＰＵ数は８０個（＝１６＋６４）、メモリサイズは１６０ＧＢ（＝３２＋１２８）となる。
【０１１１】
残り２８０秒の時点で、仮想マシン１５０が停止完了する。すると、管理部１３２によって、リソースの割当ての変更が行われる。具体的には、仮想マシン１５０のｖＣＰＵ数は０個、メモリサイズは０ＧＢとなる。すなわち、仮想マシン１５０からｖＣＰＵ数８０個、メモリ１６０ＧＢが回収されたことになる。回収されたリソースは、この時点で停止処理中であるゲストドメインのうち、最高優先度である仮想マシン１６０に追加される。その結果、仮想マシン１６０のｖＣＰＵ数は９６個（＝１６＋８０）、メモリサイズは１９２ＧＢ（＝３２＋１６０）となる。
【０１１２】
残り１６０秒の時点で、仮想マシン１９０が停止完了する。すると、管理部１３２によって、リソースの割当ての変更が行われる。具体的には、仮想マシン１９０のｖＣＰＵ数は０個、メモリサイズは０ＧＢとなる。すなわち、仮想マシン１９０からｖＣＰＵ数８個、メモリ１６ＧＢが回収されたことになる。回収されたリソースは、この時点で停止処理中であるゲストドメインのうち、最高優先度である仮想マシン１６０に追加される。その結果、仮想マシン１６０のｖＣＰＵ数は１０４個（＝９６＋８）、メモリサイズは２０８ＧＢ（＝１９２＋１６）となる。
【０１１３】
残り１２０秒の時点で、仮想マシン１６０が停止完了する。すると、管理部１３２によって、リソースの割当ての変更が行われる。具体的には、仮想マシン１６０のｖＣＰＵ数は０個、メモリサイズは０ＧＢとなる。すなわち、仮想マシン１６０からｖＣＰＵ１０４個、メモリ２０８ＧＢが回収されたことになる。回収されたリソースは、この時点でただ１つ停止処理中である仮想マシン１８０に追加される。その結果、仮想マシン１８０のｖＣＰＵ数は１１２個（＝８＋１０４）、メモリサイズは２２４ＧＢ（＝１６＋２０８）となる。
【０１１４】
残り６０秒の時点でゲストドメイン停止時間（Ｔ１）が経過する。したがって、管理部１３２は、仮想マシン１８０が停止処理中であったとしても、仮想マシン１８０を強制的に停止させる。そして、管理部１３２は、リソースの割当ての変更を行う。具体的には、仮想マシン１８０のｖＣＰＵは０個、メモリサイズは０ＧＢとなる。すなわち、仮想マシン１８０からｖＣＰＵ１１２個、メモリ２２４ＧＢが回収されたことになる。回収されたリソースは、制御ドメインである仮想マシン１３０に追加される。その結果、仮想マシン１３０のｖＣＰＵ数は１２８個（＝１６＋１１２）、メモリサイズは２５６ＧＢ（＝３２＋２２４）となる。そして、管理部１３２は、仮想マシン１３０の停止を開始させる。
【０１１５】
残り３０秒の時点で、仮想マシン１３０が停止完了する。これにより、仮想マシン１３０に割当てられたｖＣＰＵ数は０個、メモリサイズは０ＧＢとなり、全てのｖＣＰＵおよびメモリが未使用の状態となる（すなわち、未使用のｖＣＰＵ数１２８個、未使用のメモリ２５６ＧＢ）。その後、ハイパーバイザ１２０が停止し、給電可能時間内に実行サーバ１００が停止する。
【０１１６】
図１４は、第２の実施の形態の電源障害時のシーケンス図である。以下、図１４に示す処理をステップ番号に沿って説明する。図１４の説明は、図１３の流れの一部を記載したものである。
【０１１７】
（ステップＳＴ１）ＡＣ電源装置３０は、電力供給能力が低下する。例えば、ＵＰＳ３００は、給電される電気の電圧が閾値を下回ったことなどを検出して、ＡＣ電源装置３０の異常を検出する。すると、ＵＰＳ３００はバッテリ３０８からの給電を開始する。
【０１１８】
（ステップＳＴ２）ＵＰＳ３００は、電源異常の通知を監視サーバ５００に送信する。監視サーバ５００は、当該通知により、バッテリ３０８から実行サーバ１００への給電が開始されたことを検出する。
【０１１９】
（ステップＳＴ３）監視サーバ５００は、電源障害の通知を仮想マシン１３０に送信する。仮想マシン１３０は、電源障害の通知を受信する。仮想マシン１３０は、通知に含まれる給電可能時間に基づいて、ゲストドメイン停止時間（Ｔ１）および制御ドメイン停止時間（Ｔ２）を決定し、給電時間テーブル１３１ａに登録する。仮想マシン１３０は、Ｔ１のカウントをスタートする。ここで、ステップＳＴ１〜ＳＴ３の時間間隔は、例えば、長くても数秒程度であり、短ければ１秒以内である。
【０１２０】
（ステップＳＴ４）仮想マシン１３０は、仮想マシン１４０，１５０，１６０，１８０，１９０に対する停止指示を送り、停止処理を開始させる。なお、仮想マシン１７０は停止済なので、停止指示を送らなくてもよい。
【０１２１】
（ステップＳＴ５）仮想マシン１３０は、各ゲストドメインに対するリソースの割当量を初期値に設定する。仮想マシン１３０は、安全停止候補でない仮想マシン１８０，１９０から最低限のリソースを残して回収したリソースを、仮想マシン１４０に追加する。また、仮想マシン１３０は、停止済である仮想マシン１７０のリソースも仮想マシン１４０に追加する。更に、仮想マシン１３０は、未使用分のリソースも仮想マシン１４０に追加する。ここで、仮想マシン１４０は、この時点で停止処理中であるゲストドメインのうちで最高の優先度のゲストドメインである。
【０１２２】
（ステップＳＴ６）仮想マシン１４０は、ハイパーバイザ１２０を介して、仮想マシン１３０に停止通知を送信する。仮想マシン１３０は、停止通知を受信する。仮想マシン１３０は、当該停止通知により、仮想マシン１４０が停止処理を完了する旨を検出する。
【０１２３】
（ステップＳＴ７）仮想マシン１３０は、仮想マシン１４０の停止が完了すると、仮想マシン１４０に割当てられていた全てのリソースを回収して、仮想マシン１５０に追加する。仮想マシン１５０は、この時点で停止処理中であるゲストドメインのうちで最高の優先度のゲストドメインである。
【０１２４】
（ステップＳＴ８）仮想マシン１５０は、ハイパーバイザ１２０を介して、仮想マシン１３０に停止通知を送信する。仮想マシン１３０は、停止通知を受信する。仮想マシン１３０は、当該停止通知により、仮想マシン１５０が停止処理を完了する旨を検出する。以後、仮想マシン１３０は、ステップＳＴ７と同様にして、何れかの仮想マシンが停止完了するたびに、停止完了した仮想マシンからリソースを回収して、その時点で停止処理中であるゲストドメインのうち、最高の優先度のゲストドメインに追加していく。
【０１２５】
（ステップＳＴ９）仮想マシン１３０は、ゲストドメイン停止時間（Ｔ１）が経過したことを検出する。
（ステップＳＴ１０）仮想マシン１３０は、この時点で停止処理中である仮想マシン１８０に対し、強制的に停止するよう指示する。
【０１２６】
（ステップＳＴ１１）仮想マシン１８０は、ハイパーバイザ１２０を介して、仮想マシン１３０に停止通知を送信する。仮想マシン１３０は、停止通知を受信する。仮想マシン１３０は、当該停止通知により、仮想マシン１８０が強制停止を受け付け、停止処理を強制的に完了する旨を検出する。
【０１２７】
（ステップＳＴ１２）仮想マシン１３０は、仮想マシン１８０に割当てられていたリソースを回収し、仮想マシン１３０自身に追加する。そして、仮想マシン１３０は、停止処理を開始する。
【０１２８】
（ステップＳＴ１３）仮想マシン１３０は、停止処理を完了する。また、ハイパーバイザ１２０が停止完了し、給電可能時間内に実行サーバ１００が停止完了する。
（ステップＳＴ１４）ＵＰＳ３００は、バッテリ３０８からの給電を停止する。
【０１２９】
このようにして、優先度の高いゲストドメインに対してリソースを集中させ、優先度の高いゲストドメインが安全に停止完了する可能性を高められる。一方で、優先度の低いゲストドメインについては、ゲストドメイン停止時間（Ｔ１）内に停止が完了しない可能性もある。この点、安全に停止しなくてもよいゲストドメインの優先度を低く設定しておけばよい。そうすれば、Ｔ１経過後に、その時点で停止処理中のゲストドメインを直ちに強制停止させたとしても、優先度の高いゲストドメインを強制停止させる場合に比べて、システム全体への影響を軽減できる。
【０１３０】
次に、第２の実施の形態の電源障害時の処理に対する比較例を説明する。比較例では、各ゲストマシンに対するリソースの割当ての変更を行わない場合を示して、図１４と対比する。
【０１３１】
図１５は、電源障害時の他のシーケンス図である。以下、図１５に示す処理をステップ番号に沿って説明する。なお、以下の説明では各処理の主体として、第２の実施の形態で説明した各装置を便宜的に用いる。
【０１３２】
（ステップＳＴ２１）ＡＣ電源装置３０は、電力供給能力が低下する。例えば、ＵＰＳ３００は、給電される電気の電圧が閾値を下回ったことなどを検出して、ＡＣ電源装置３０の異常を検出する。すると、ＵＰＳ３００はバッテリ３０８からの給電を開始する。
【０１３３】
（ステップＳＴ２２）ＵＰＳ３００は、電源異常の通知を監視サーバ５００に送信する。監視サーバ５００は、当該通知により、バッテリ３０８から実行サーバ１００への給電が開始されたことを検出する。
【０１３４】
（ステップＳＴ２３）監視サーバ５００は、電源障害の通知を仮想マシン１３０に送信する。仮想マシン１３０は、電源障害の通知を受信する。仮想マシン１３０は、通知に含まれる給電可能時間に基づいて、ゲストドメイン停止時間（Ｔ１）および制御ドメイン停止時間（Ｔ２）を決定し、給電時間テーブル１３１ａに登録する。
【０１３５】
（ステップＳＴ２４）仮想マシン１３０は、仮想マシン１４０，１５０，１６０，１７０，１８０，１９０に対する停止指示を送り、停止処理を開始させる。以後、各ゲストドメインは、停止処理を順次完了させていく。ただし、ゲストドメイン停止時間（Ｔ１）内に停止処理が完了しないゲストドメインも存在し得る。
【０１３６】
（ステップＳＴ２５）仮想マシン１３０は、ゲストドメイン停止時間（Ｔ１）が経過したことを検出する。
（ステップＳＴ２６）仮想マシン１３０は、この時点で停止処理中であるゲストドメインに対し、強制的に停止するよう指示する。例えば、仮想マシン１４０，１８０がこの時点で停止処理中のゲストドメインである。仮想マシン１３０は、ハイパーバイザ１２０を介して、仮想マシン１４０，１８０に対し、強制的に停止するよう指示する。
【０１３７】
（ステップＳＴ２７）仮想マシン１４０，１８０は、ハイパーバイザ１２０を介して、仮想マシン１３０に停止通知を送信する。仮想マシン１３０は、停止通知を受信する。仮想マシン１３０は、当該停止通知により、仮想マシン１４０，１８０が強制停止を受け付け、停止処理を強制的に完了する旨を検出する。そして、仮想マシン１３０は、停止処理を開始する。
【０１３８】
（ステップＳＴ２８）仮想マシン１３０は、停止処理を完了する。その後、ハイパーバイザ１２０が停止し、実行サーバ１００が停止する。
（ステップＳＴ２９）ＵＰＳ３００は、バッテリ３０８からの給電を停止する。
【０１３９】
ここで、図１５には、ステップＳＴ２９よりも後の３つのタイミングＴＡ，ＴＢ，ＴＣが例示されている。タイミングＴＡ，ＴＢ，ＴＣは、Ｔ１経過時に強制停止を行わないと仮定した場合に、各仮想マシンが何れの時点で停止処理を完了するかを示している。
【０１４０】
タイミングＴＡは、仮想マシン１８０が停止処理を完了する時点を仮に示したものである。タイミングＴＢは、仮想マシン１４０が停止処理を完了する時点を仮に示したものである。タイミングＴＣは、仮想マシン１３０が停止処理を完了する時点を仮に示したものである。仮想マシン１４０，１８０は、ステップＳＴ２５経過後に強制停止させないと、ＵＰＳ３００のバッテリ３０８からの給電可能時間（Ｔ１＋Ｔ２）内に安全に停止完了できないことになる。仮想マシン１３０もゲストマシンの停止完了後に停止処理を開始させるため、当該給電可能時間内に安全に停止完了できないことになる。
【０１４１】
図１５の例では仮想マシン１４０，１８０をステップＳＴ２６で強制停止させて、少なくとも仮想マシン１３０は安全に停止するようにしている。しかし、強制停止の対象となるゲストドメインの中には、（例えば、ＤＢサーバ機能や重要な業務処理などを担う）仮想マシン１４０のように重要度の高い仮想マシンが含まれる可能性がある。重要度の高い仮想マシンを強制停止させると、業務処理に用いるデータの不整合が生じて、処理を正常に行えなくなるおそれがある。また、このような障害を復旧させるために時間がかかる、作業コストが生じるなどの問題も起こる。すなわち、重要度の高い仮想マシンを強制停止することはシステム全体への影響が大きい。
【０１４２】
そこで、第２の実施の形態では、各ゲストドメインの緊急停止を行う際に、重要度の高い仮想マシンの優先度を高くしておき、優先度の低い仮想マシンからリソースを回収して、重要度の高い仮想マシンに割当てる。これにより、重要度の高い仮想マシンから優先して、停止処理を完了させていくことができる。このようにして、ゲストドメインを効率的に停止させることが可能となる。
【０１４３】
また、安全停止の候補とするゲストドメインの優先度を高くしておき、安全停止の候補としないゲストドメインの優先度を低くしておく。このようにすれば、仮に、ゲストドメイン停止時間（Ｔ１）内に、何れかのゲストドメインの停止完了が間に合わなかったとしても、安全停止の候補とするゲストドメインが停止完了していない可能性を低減できる。すなわち、この場合、停止完了が間に合わなかったゲストドメインは、安全停止の候補としないゲストドメインである可能性が高い。よって、当該ゲストドメインを強制的に停止させたときの、システムに対する影響を軽減できる。
【０１４４】
また、例えば、Ｔ１やＴ２を固定値で与えた場合、バッテリ３０８の充電量が少ないと、制御ドメインである仮想マシン１３０の停止を安全に行えないことがある。そこで、管理部１３２は、バッテリ３０８からの給電可能時間に基づいて、ゲストドメイン停止時間（Ｔ１）や制御ドメイン停止時間（Ｔ２）を決定する。このため、バッテリ３０８の充電量に応じて強制停止させるタイミングを適切に決定することができる。その結果、バッテリ３０８の充電量が十分でなくても、制御ドメインである仮想マシン１３０を安全に停止完了できる可能性が高まる。ただし、Ｔ１，Ｔ２を固定値で与えることを妨げるものではない。
【０１４５】
また、全てのゲストドメインを停止完了させた後、未割当てのリソースを全て制御ドメインである仮想マシン１３０に追加して、当該仮想マシン１３０を停止させる。このため、仮想マシン１３０の停止のための所要時間の短縮も図れる。
【０１４６】
なお、１つの仮想マシンに割当てるｖＣＰＵ数とメモリのサイズとが大きい程、停止処理をより短い時間で行える傾向にある。具体的には次の通りである。
図１６は、リソース割当量に対する停止処理の所要時間の例を示す図である。図１６（Ａ）は、ｖＣＰＵ数に対する停止処理の所要時間を例示するテーブル７００を示している。図１６（Ｂ）は、メモリサイズに対する停止処理の所要時間を例示するテーブル８００を示している。
【０１４７】
テーブル７００は、モデル、多重動作する割合（ｒ）およびｖＣＰＵ数に対する停止処理の所要時間の項目を含む。
モデルの項目は、停止処理のモデルを識別するための情報を示す。各モデルは、仮想マシンを停止させるための処理である点で共通するが、停止処理の内容（停止させるプロセスの数など）は異なる。多重動作する割合（ｒ）の項目は、当該モデルにおいて、停止処理の全体に対する多重動作可能な（並列処理可能な）部分の割合を示す。ｖＣＰＵ数に対する停止処理の所要時間の項目は、各モデルにおける、仮想マシンの停止処理の所要時間を示す。所要時間の単位は秒である。ｖＣＰＵ数としては、ｖＣＰＵ数＝１０の場合と、ｖＣＰＵ数＝２０の場合とが例示されている。なお、両方の場合において、メモリのサイズは同じであるとする。また、両方の場合における各所要時間の差も示されている。
【０１４８】
モデル“Ａ”はｒ＝１である。すなわち、停止処理の全部が多重動作可能である。例えば、モデル“Ａ”の停止処理を実行する仮想マシンのｖＣＰＵ数が１０であれば、停止処理の所要時間は３００秒である。同じメモリサイズで当該仮想マシンのｖＣＰＵ数が２０であれば、停止処理の所要時間は１５０秒である。その差は１５０秒である。ｖＣＰＵ数が大きい程、所要時間は短くなっている。
【０１４９】
モデル“Ｂ”はｒ＝０．９である。すなわち、停止処理の全体のうち９割が多重動作可能である。例えば、モデル“Ｂ”の停止処理を実行する仮想マシンのｖＣＰＵ数が１０であれば、停止処理の所要時間は３０秒である。同じメモリサイズで当該仮想マシンのｖＣＰＵ数が２０であれば、停止処理の所要時間は２３秒である。その差は７秒である。ｖＣＰＵ数が大きい程、所要時間は短くなっている。
【０１５０】
モデル“Ｃ”はｒ＝０である。すなわち、停止処理の全体のうち多重動作可能な部分がない。例えば、モデル“Ｃ”の停止処理を実行する仮想マシンのｖＣＰＵ数が１０であれば、停止処理の所要時間は１０秒である。同じメモリサイズで当該仮想マシンのｖＣＰＵ数が２０であれば、停止処理の所要時間は１０秒である。その差は０秒である。
【０１５１】
なお、ｖＣＰＵの数（ｎ）（ｎは１以上の整数）と全体処理のうち多重動作可能な部分の割合（ｒ）（ｒは０以上１以下の実数）とに対する処理の高速化率（Ｅ）（Ｅは実数）は、次の式（１）で表されることが知られている。
【０１５２】
【数１】
2013145288.tif 000003
【０１５３】
このように、停止処理を実行する際、仮想マシンのｖＣＰＵ数が大きいほど、停止処理を完了させるまでの所要時間は短くなる傾向にある。特に、停止処理は仮想マシン上で動作するＯＳによって制御されることがある。ＯＳには、停止処理の少なくとも一部を多重動作可能とするものがある。よって、ｖＣＰＵ数を増やすことで、停止処理の所要時間が短縮できる可能性は高い。
【０１５４】
テーブル８００は、モデル、多重動作する割合（ｒ）およびメモリサイズに対する停止処理の所要時間の項目を含む。
モデルの項目および多重動作する割合（ｒ）の項目で示される内容はテーブル７００と同一である。メモリサイズに対する停止処理の所要時間の項目は、各モデルにおける、仮想マシンの停止処理の所要時間を示す。所要時間の単位は秒である。メモリサイズとしては、メモリ＝８ＧＢの場合と、メモリ＝１６ＧＢの場合とが例示されている。なお、両方の場合において、ｖＣＰＵの数は同じであるとする。また、両方の場合における各所要時間の差も示されている。
【０１５５】
例えば、モデル“Ａ”（ｒ＝１）の停止処理を実行する仮想マシンのメモリサイズが８ＧＢであれば、停止処理の所要時間は３００秒である。同じｖＣＰＵ数で当該仮想マシンメモリサイズが１６ＧＢであれば、停止処理の所要時間は２８０秒である。その差は２０秒である。メモリサイズが大きい程、所要時間は短くなっている。
【０１５６】
例えば、モデル“Ｂ”（ｒ＝０．９）の停止処理を実行する仮想マシンのメモリサイズが８ＧＢであれば、停止処理の所要時間は３０秒である。同じｖＣＰＵ数で当該仮想マシンのメモリサイズが１６ＧＢであれば、停止処理の所要時間は２５秒である。その差は５秒である。メモリサイズが大きい程、所要時間は短くなっている。
【０１５７】
例えば、モデル“Ｃ”（ｒ＝０）の停止処理を実行する仮想マシンのメモリサイズが８ＧＢであれば、停止処理の所要時間は１０秒である。同じｖＣＰＵ数で当該仮想マシンのメモリサイズが１６ＧＢであれば、停止処理の所要時間は８秒である。その差は２秒である。メモリサイズが大きい程、所要時間は短くなっている。
【０１５８】
このように、停止処理を実行する際、仮想マシンのメモリサイズが大きいほど、停止処理を完了させるまでの所要時間は短くなる傾向にある。すなわち、メモリサイズを増やすことで、停止処理の所要時間の短縮化を図れる。
【０１５９】
［第３の実施の形態］
以下、第３の実施の形態を説明する。前述の第２の実施の形態との相違点を主に説明し、共通する事項の説明を省略する。
【０１６０】
第２の実施の形態では、各ゲストドメインに停止を指示した後、各ゲストドメインに対するリソースの割当量を初期値に設定するものとした。一方、停電直前のリソースの割当量を変更せずに（初期値を設定せずに）、各ゲストドメインに対するリソースの割当量を変更することも考えられる。
【０１６１】
例えば、処理負荷の大きいゲストドメインにより多くのリソースを割当てるように運用することもある。このため、停電直前にリソースの割当量が大きいゲストドメインは、負荷の大きな処理を実行中であった可能性がある。このような場合に停止処理を行うと、当該負荷の大きな処理を中断するための負荷を伴う可能性も高い。したがって、当該ゲストドメインは停止処理に時間がかかるおそれがある。そこで、このような場合に第３の実施の形態の方法を採ることが考えられる。
【０１６２】
ここで、第３の実施の形態の情報処理システムおよび各装置は、図２で説明した第２の実施の形態の情報処理システムと同様である。また、第３の実施の形態の各装置のハードウェア例およびソフトウェア例は、図３〜６で説明した第２の実施の形態の各装置のハードウェア例およびソフトウェア例と同様である。このため、第３の実施の形態の各装置などを第２の実施の形態と同一の名称・符号を付して示す。
【０１６３】
ただし、記憶部１３１が、割当リソース閾値テーブルを更に記憶する点が第２の実施の形態と異なる。また、管理部１３２が、各ゲストドメインに対するリソースの割当量に初期値を設定せずにリソースの割当ての変更を行う点が第２の実施の形態と異なる。
【０１６４】
図１７は、第３の実施の形態の割当リソース閾値テーブルの例を示す図である。割当リソース閾値テーブル１３１ｆは、記憶部１３１に格納される。割当リソース閾値テーブル１３１ｆは、ｖＣＰＵ数およびメモリ（ＧＢ）の項目を含む。
【０１６５】
ｖＣＰＵ数の項目には、あるタイミングにおいて停止処理中であるゲストドメインのうち、最高優先度のゲストドメインに対して最低限確保するｖＣＰＵ数（ｖＣＰＵ数の閾値）が登録される。メモリ（ＧＢ）の項目には、当該タイミングにおいて停止処理中であるゲストドメインのうち、最高優先度のゲストドメインに対して最低限確保するメモリのサイズ（メモリのサイズの閾値）が登録される。例えば、ｖＣＰＵ数の閾値は３２個である。例えば、メモリのサイズの閾値は１６ＧＢである。各リソースの閾値として、運用に応じた値を適宜設定することができる。
【０１６６】
次に、第３の実施の形態の処理手順を説明する。ここで、第３の実施の形態における電源障害時の処理例は、図１１で説明した第２の実施の形態の電源障害時の処理例と同様である。ただし、図１１のステップＳ１６におけるゲスト停止の処理手順が図１２とは異なる。
【０１６７】
図１８は、第３の実施の形態のゲスト停止の例を示すフローチャートである。以下、図１８に示す処理をステップ番号に沿って説明する。
（ステップＳ３１）管理部１３２は、記憶部１３１に記憶された管理テーブル１３１ｂを参照して、安全停止候補のゲストドメインのリソースの割当量を維持する。安全停止候補のゲストドメインについては、次のステップＳ３２でリソースの回収の対象外となる。また、管理部１３２には、未停止の仮想マシンのうち優先度が最高のものを選択するように予め設定されている。すなわち、管理部１３２は、リソースの集中先として、最高の優先度のものを選択する。
【０１６８】
（ステップＳ３２）管理部１３２は、管理テーブル１３１ｂを参照して、安全停止候補でないゲストドメインを選択する。管理部１３２は、記憶部１３１に記憶されたリソース最低値テーブル１３１ｄを参照して、リソース最低値を取得する。管理部１３２は、安全停止候補でないゲストドメインからリソース最低値を残してリソースを回収する。ただし、管理部１３２は、リソース最低値よりもリソースの割当量が小さいゲストドメインからはリソースの回収を行わない。ここで、安全停止候補でないゲストドメインは安全停止候補であるゲストドメインよりも、優先度は低く設定される。したがって、ステップＳ３２で選択されるゲストドメインは、この時点での最高の優先度のゲストドメインよりも優先度の低いゲストドメインとなる。
【０１６９】
（ステップＳ３３）管理部１３２は、管理テーブル１３１ｂを参照して、停止済のドメインを選択する。管理部１３２は、管理テーブル１３１ｂを参照して、停止済のドメインに割当てられているリソースを全て回収する。
【０１７０】
（ステップＳ３４）管理部１３２は、記憶部１３１に記憶された割当リソース閾値テーブル１３１ｆを参照して、リソース閾値を取得する。管理部１３２は、管理テーブル１３１ｂを参照して、停止処理中のゲストドメインのうち、最高の優先度のゲストドメインに対して、リソース閾値分のリソースを確保できたか否かを判定する。確保できていない場合、処理をステップＳ３５に進める。確保できた場合、処理をステップＳ３６に進める。具体的には、ステップＳ３４の判定は、最高優先度のゲストドメインの現在のリソースの割当量に、ステップＳ３２，Ｓ３３で回収したリソースを追加することで、当該ゲストドメインに対するリソースの割当量がリソース閾値以上となるか否かによって判定できる。リソース閾値以上となる場合は、リソース閾値を確保できている。リソース閾値より小さい場合は、リソース閾値を確保できていない。リソース閾値を確保できているか否かの判定は、ｖＣＰＵ数およびメモリサイズのそれぞれで行う。少なくとも一方で、リソース閾値を確保できていなければ、リソース閾値を確保できていないと判定する。ただし、少なくとも一方でリソース閾値を確保できていれば、リソース閾値を確保できていると判定してもよい。
【０１７１】
（ステップＳ３５）管理部１３２は、管理テーブル１３１ｂを参照して、安全停止候補のゲストドメインのうち、優先度が最低のゲストドメインを選択する。管理部１３２は、選択した安全停止候補のゲストドメインから、リソース最低値を残してリソースを回収する。このとき、選択した当該ゲストドメインに対するリソースの割当量がリソース最低値よりも小さいことがある。その場合は、当該ゲストドメインからリソースの回収は行わずに、当該ゲストドメインの次に優先度の低いゲストドメインを選択する。次に選択したゲストドメインから同様にしてリソースの回収を試みる。そして、処理をステップＳ３４に進める。なお、本ステップＳ３５において、何れの安全停止候補からもそれ以上リソースを回収できない場合もある。その場合、処理をステップＳ３６に進めてもよい。
【０１７２】
（ステップＳ３６）管理部１３２は、管理テーブル１３１ｂを参照して、未停止のゲストドメインのうち、最高優先度のゲストドメインを選択する。管理部１３２は、選択したゲストドメインに、ステップＳ３２，Ｓ３３で回収したリソースを含む未割当てのリソースを割当てる（リソースの追加）。ステップＳ３５でリソースを回収している場合には、そのリソースも選択したゲストドメインに追加する。
【０１７３】
（ステップＳ３７）管理部１３２は、記憶部１３１に記憶された給電時間テーブル１３１ａを参照して、ゲストドメイン停止時間（Ｔ１）が未経過であるか否かを判定する。Ｔ１が未経過である場合、処理をステップＳ３８に進める。Ｔ１が経過している場合、処理をステップＳ４０に進める。
【０１７４】
（ステップＳ３８）管理部１３２は、何れかのゲストドメインが停止を完了する直前に、当該ゲストドメインから、ハイパーバイザ１２０を介して、停止通知を受け付ける。管理部１３２は、管理テーブル１３１ｂに停止フラグの設定を変更する。具体的には、停止通知の送信元のゲストドメインについて、停止フラグを“ｆａｌｓｅ”から“ｔｒｕｅ”へ変更する。
【０１７５】
（ステップＳ３９）管理部１３２は、全ゲストドメインを停止済であるか否かを判定する。全ゲストドメインが停止済である場合、処理を終了する。未停止のゲストドメインが存在する場合、処理をステップＳ３３に進める。
【０１７６】
（ステップＳ４０）管理部１３２は、未停止のゲストドメインを直ちに停止させる。管理部１３２は、ゲストドメインが停止処理中であったとしても強制的に停止させる。
このように、優先度の低いゲストドメインのリソースを回収して、優先度の高いゲストドメインに集中させることで、リソースを集中させない場合に比べて、優先度の高いゲストドメインを短時間で停止完了させることができる。
【０１７７】
ここで、ステップＳ３１のように、安全停止候補のゲストドメインに対するリソースの割当量を維持することで、当該ゲストドメインについては、直前のリソースの割当量のままで、停止処理を行わせることができる。
【０１７８】
このように安全停止候補のゲストドメインに対するリソースの割当量を維持すると、停止処理の直後に最高優先度のゲストドメインに対して十分なリソースを割当てられないことがある。このため、安全停止候補でないゲストドメインおよび停止済のゲストドメインからリソースを回収し、それでも不十分な場合には、安全停止候補のゲストドメインからもリソースを回収する。このとき、安全停止候補のゲストドメインのうち、優先度の低い方からリソースを回収していくことで、優先度の高いゲストドメインに対するリソースをできるだけ維持することができる。その結果、優先度が高い程、期待するリソースの割当量で停止処理を行わせることができる。
【０１７９】
図１９は、第３の実施の形態のリソース割当量の遷移の例を示す図である。遷移表１３１ｇには、ドメイン名、リソースおよび給電可能時間の各時点におけるリソース割当量の項目が設けられている。各項目で示される情報は、遷移表１３１ｅと同様である。また、例えば、実行サーバ１００で仮想マシンに割当可能な全リソースは、ｖＣＰＵ１２８個、メモリ２５６ＧＢである。
【０１８０】
遷移表１３１ｇには、給電可能時間内の各時点として、例えば次の複数の時点が記入されている。残り６００秒、残り４２０秒、残り２８０秒、残り１６０秒、残り１２０秒、残り６０秒、残り３０秒の時点である。ただし、遷移表１３１ｇでは“残り”の文字を省略している。また、時点という場合、多少の時間幅を許容するものとする。
【０１８１】
残り６００秒の時点は、停電により、バッテリからの給電が開始されたタイミングである。残り６００秒の時点は、異常検出およびリソースの割当変更に更に区分されている。
残り４２０秒の時点は、仮想マシン１４０（ドメイン名“Ｇ１”）が停止完了したタイミングである。残り２８０秒の時点は、仮想マシン１５０（ドメイン名“Ｇ２”）が停止完了したタイミングである。残り１６０秒の時点は、仮想マシン１９０（ドメイン名“Ｇ６”）が停止完了したタイミングである。残り１２０秒の時点は、仮想マシン１６０（ドメイン名“Ｇ３”）が停止完了したタイミングである。残り６０秒の時点は、仮想マシン１８０（ドメイン名“Ｇ５”）が停止完了したタイミングである。残り３０秒の時点は、仮想マシン１３０（ドメイン名“Ｃ１”）が停止完了したタイミングである。
【０１８２】
この場合、給電時間テーブル１３１ａ、管理テーブル１３１ｂ、リソース初期値テーブル１３１ｃ、リソース最低値テーブル１３１ｄおよび割当リソース閾値テーブル１３１ｆによれば、各仮想マシンに対するリソースの割当量は、例えば次のように遷移する。
【０１８３】
ただし、電源異常が検出された時点の各ゲストドメインのリソースの割当量は、管理テーブル１３１ｂとは異なっているとする。電源異常が検出された時点での各仮想マシンのリソースの割当量は、具体的には次の通りである。
【０１８４】
仮想マシン１３０，１７０のｖＣＰＵ数はそれぞれ１６個、メモリサイズはそれぞれ３２ＧＢである。仮想マシン１４０のｖＣＰＵ数は８個、メモリサイズは８ＧＢである。仮想マシン１５０のｖＣＰＵ数は４８個、メモリサイズは６４ＧＢである。仮想マシン１６０のｖＣＰＵ数は２４個、メモリサイズは５６ＧＢである。仮想マシン１８０，１９０のｖＣＰＵ数はそれぞれ８個、メモリサイズはそれぞれ３２ＧＢである。また、未使用リソースは、ｖＣＰＵ数が０個、メモリサイズが０ＧＢである。電源異常が検出されると、管理部１３２は、仮想マシン１４０，１５０，１６０，１７０，１８０，１９０の停止を開始させる。ただし、仮想マシン１７０はこの時点で停止済である。以下、各時点で直前の時点から変更される箇所のみを説明し、変更されない箇所の説明を省略する。
【０１８５】
管理部１３２によるリソースの割当変更の時点での各仮想マシンのリソースの割当量は次の通りである。仮想マシン１８０，１９０のメモリサイズは１６ＧＢであり、直前の３２ＧＢから減少している。これは、リソース最低値テーブル１３１ｄに基づいてリソースが回収されたからである。ここで、遷移表１３１ｇでは、直前の時点からの変更箇所を網掛けで図示している（以下、同様）。また、仮想マシン１７０のｖＣＰＵ数は０個、メモリサイズは０ＧＢである。仮想マシン１７０は、停止済だからである。更に、仮想マシン１６０のｖＣＰＵ数は１６個であり、直前の２４個から減少している。これは、割当リソース閾値テーブル１３１ｆに基づいてリソースが回収されたからである。仮想マシン１６０，１７０，１８０，１９０から回収されたリソースを仮想マシン１４０に追加することで、仮想マシン１４０のｖＣＰＵ数は３２個、メモリサイズは７２ＧＢとなる。具体的には、次のように割当変更が行われる。
【０１８６】
異常検出直後の時点で停止処理中のゲストドメインのうち最も優先度が高いのは仮想マシン１４０である。仮想マシン１７０からｖＣＰＵ数１６個を回収した場合、仮想マシン１４０の異常検出時点のｖＣＰＵ数８個に、回収した１６個を加算すると、ｖＣＰＵ数は２４個となる。これは、割当リソース閾値テーブル１３１ｆに設定されたｖＣＰＵ数の閾値３２個に満たない。したがって、管理部１３２は、安全停止候補であるゲストドメイン（仮想マシン１４０，１５０，１６０）のうち、最も優先度の低い仮想マシン１６０を選択し、リソース最低値（１６個）を残して８個のｖＣＰＵを回収し、仮想マシン１４０に追加する。すると、仮想マシン１４０のｖＣＰＵ数は３２個（＝８＋１６＋８）となる。これは、割当リソース閾値テーブル１３１ｆに設定されたｖＣＰＵ数の閾値３２個以上である。したがって、管理部１３２は、これ以上のｖＣＰＵを回収しない。
【０１８７】
また、仮想マシン１７０，１８０，１９０からメモリサイズ６４ＧＢを回収した場合、仮想マシン１４０の異常検出時点のメモリサイズ８ＧＢに回収した６４ＧＢを加算すると、メモリサイズは７２ＧＢ（＝８＋１６＋１６＋３２）となる。これは、割当リソース閾値テーブル１３１ｆに設定されたメモリサイズの閾値１６ＧＢ以上である。したがって、管理部１３２は、これ以上のメモリを回収しない。
【０１８８】
残り４２０秒の時点で仮想マシン１４０が停止完了する。すると、管理部１３２によって、リソースの割当ての変更が行われる。具体的には、仮想マシン１４０のｖＣＰＵ数は０個、メモリサイズは０ＧＢとなる。すなわち、仮想マシン１４０からｖＣＰＵ数３２個、メモリ７２ＧＢが回収されたことになる。回収されたリソースは、この時点で停止処理中であるゲストドメインのうち、最高優先度である仮想マシン１５０に追加される。その結果、仮想マシン１５０のｖＣＰＵ数は８０個（＝４８＋３２）、メモリサイズは１３６ＧＢ（＝６４＋７２）となる。
【０１８９】
以降の各時点（残り２８０秒、残り１６０秒、残り１２０秒、残り６０秒および残り３０秒）におけるリソースの割当の変更内容は、図１３で説明した遷移表１３１ｅと同様である。
【０１９０】
このように、第３の実施の形態では、電源異常を検出後、リソースの初期値の設定を行わずに、各ゲストドメインのリソースの割当量を変更する。すなわち、仮想マシン１５０のように、安全停止候補の仮想マシンのうち、優先度の高いものについて、電源異常の検出時のリソースの割当量を維持する。仮想マシン１５０は、他の仮想マシンに比べて多くのリソースが割かれており、直前に負荷の高い処理を行っていた可能性がある。したがって、仮想マシン１５０を停止させようとする場合、当該負荷の高い処理を中断させるため、通常時（負荷の高い処理を行っていない時）よりも停止処理に時間がかかる可能性がある。第３の実施の形態によれば、このような場合に、仮想マシン１５０に対するリソースの割当量を減少させなくてよい。よって、仮想マシン１５０がゲストドメイン停止時間（Ｔ１）内に安全停止できる可能性を高めることができる。
【０１９１】
更に、最高優先度のゲストドメインに対して、少なくともリソース閾値分のリソースを確保できる。このため、最高優先度のゲストドメインについても、ゲストドメイン停止時間（Ｔ１）内に安全停止できる可能性を高めることができる。
【０１９２】
なお、第２および第３の実施の形態では、一例として、停止処理中のゲストドメインのうち、最高の優先度のゲストドメインに回収したリソースを追加する場合を説明した。ただし、最高の優先度のゲストドメイン以外のゲストドメインに対して回収したリソースを追加することを妨げるものではない。更に、回収したリソースの追加先のゲストドメインを停止処理中のゲストドメインのうち最高優先度のゲストドメインとしたが、２以上の複数のゲストドメインを追加先にすることを妨げるものではない。
【０１９３】
また、第２および第３の実施の形態では、各ゲストドメインに対する停止指示のあった後に、リソースの割当変更を行うものとしたが、タイミングはこれに限らない。例えば、管理部１３２は、電源障害の通知を受けた後、各ゲストドメインに対する停止指示を行う前に、リソースの割当変更を行ってもよい。
【０１９４】
また、第２および第３の実施の形態では、制御ドメインである仮想マシン１３０に管理部１３２を設ける場合を例示したが、ハイパーバイザ１２０に設けてもよい。
また、実行サーバ１００について説明したが実行サーバ２００についても同様に停止処理を行える。
【０１９５】
また、第２および第３の実施の形態では、主に停電時にＵＰＳ３００のバッテリ３０８からの給電時間が制限される場合の緊急停止を例示したが、他の場面にも適用できる。例えば、実行サーバ１００をＡＣ電源装置３０に直接接続し、ＡＣ電源装置３０からの出力が不安定な場合などに、電源障害の予兆を実行サーバ１００が検出することが考えられる。電源障害が予期される場合には、実行サーバ１００を緊急停止させることが好ましい。その場合にも第２または第３の実施の形態の停止方法を用いることができる。その場合、ＵＰＳ３００の給電可能時間に代替する制限時間を管理部１３２に与えてもよい。
【０１９６】
更に、監視サーバ５００や管理用クライアント６００は管理者による緊急停止の指示を受け付け可能としてもよい。その場合、監視サーバ５００や管理用クライアント６００は、電源障害の通知を実行サーバ１００，２００に送信する。実行サーバ１００，２００は、当該電源障害の通知を受信すると、第２または第３の実施の形態で示した方法で停止処理を実行する。その場合、第２および第３の実施の形態で説明したＵＰＳ３００の給電可能時間に代替する制限時間を監視サーバ５００や管理用クライアント６００から入力可能としてもよい。そうすれば、管理部１３２は当該制限時間に基づいて上述のＴ１，Ｔ２を決定することもできる。
【０１９７】
なお、上述の機能は、コンピュータに所定のプログラムを実行させることで実現することもできる。当該プログラムは、コンピュータ読み取り可能な可搬型の記録媒体１３に記録しておくことができる。当該プログラムを流通させるには、例えば、そのプログラムが記録された記録媒体１３を配布する。または、そのプログラムをサーバコンピュータに格納しておき、ネットワーク経由でコンピュータに転送してもよい。コンピュータは、例えば、記録媒体１３に記録されたプログラムまたはネットワークから取得したプログラムを、自装置の不揮発性の記憶媒体に格納する。そして、当該不揮発性の記憶媒体からプログラムを読み取り実行する。ただし、コンピュータは、取得したプログラムを、不揮発性の記憶媒体に格納せずに逐次、ＲＡＭに展開して実行することも可能である。
【０１９８】
上記については単に本発明の原理を示すものである。更に、多数の変形や変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応する全ての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【符号の説明】
【０１９９】
１  情報処理装置
１ａ，１ｂ，１ｃ，１ｄ  仮想マシン
１ｅ  記憶部
１ｆ  制御部
【図１】
2013145288.tif 000004
【図２】
2013145288.tif 000005
【図３】
2013145288.tif 000006
【図４】
2013145288.tif 000007
【図５】
2013145288.tif 000008
【図６】
2013145288.tif 000009
【図７】
2013145288.tif 000010
【図８】
2013145288.tif 000011
【図９】
2013145288.tif 000012
【図１０】
2013145288.tif 000013
【図１１】
2013145288.tif 000014
【図１２】
2013145288.tif 000015
【図１３】
2013145288.tif 000016
【図１４】
2013145288.tif 000017
【図１５】
2013145288.tif 000018
【図１６】
2013145288.tif 000019
【図１７】
2013145288.tif 000020
【図１８】
2013145288.tif 000021
【図１９】
2013145288.tif 000022
【手続補正書】
【提出日】平成26年8月22日(2014.8.22)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０１８２
【補正方法】変更
【補正の内容】
【０１８２】
この場合、給電時間テーブル１３１ａ、管理テーブル１３１ｂ、リソース最低値テーブル１３１ｄおよび割当リソース閾値テーブル１３１ｆによれば、各仮想マシンに対するリソースの割当量は、例えば次のように遷移する。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の仮想マシンを実行可能な情報処理装置であって、
前記複数の仮想マシンそれぞれの優先度を示す情報を記憶する記憶部と、
前記複数の仮想マシンに並行して停止処理を実行させる際に、前記記憶部を参照して、前記複数の仮想マシンのうちから第１の仮想マシンを選択し、当該第１の仮想マシンの優先度よりも低い優先度である仮想マシンのうちから１または複数の第２の仮想マシンを選択し、選択された第２の仮想マシンに対するリソースの割当量を減少させ、減少させた割当量に対応するリソースを用いて第１の仮想マシンに対するリソースの割当量を増加させる制御部と、
を有する情報処理装置。
【請求項２】
前記記憶部は、前記複数の仮想マシンそれぞれに対して、安全に停止させる候補の仮想マシンであるか否かを示す情報を記憶し、
前記制御部は、第２の仮想マシンを選択するとき、前記記憶部を参照して、安全に停止させる候補でない仮想マシンの中から第２の仮想マシンを選択する、
請求項１記載の情報処理装置。
【請求項３】
前記制御部は、第２の仮想マシンを選択するとき、安全に停止させる候補でない仮想マシンのうち、所定のリソースの割当量よりも現在のリソースの割当量の方が大きい仮想マシンを第２の仮想マシンとして選択し、前記所定のリソースの割当量と前記現在のリソースの割当量との差の分だけ第２の仮想マシンに対するリソースの割当量を減少させる、請求項２記載の情報処理装置。
【請求項４】
前記制御部は、安全に停止させる候補でない仮想マシンのみでは第１の仮想マシンに割当可能となるリソースの割当量が閾値に達しないとき、安全に停止させる候補である仮想マシンの中からも第２の仮想マシンを選択する、請求項３記載の情報処理装置。
【請求項５】
前記制御部は、安全に停止させる候補である仮想マシンから第２の仮想マシンを選択するとき、第１の仮想マシンに割当可能となるリソースの割当量が閾値に達するまで、安全に停止させる候補である仮想マシンのうち優先度が低い方から順番に第２の仮想マシンとして選択する、請求項４記載の情報処理装置。
【請求項６】
前記制御部は、何れかの仮想マシンが停止完了すると、前記記憶部を参照して、停止処理中の仮想マシンのうちから第１の仮想マシンを新たに選択し、停止完了した仮想マシンに対するリソースを用いて、新たに選択された第１の仮想マシンに対するリソースの割当量を増加させる、請求項１乃至５の何れか一項に記載の情報処理装置。
【請求項７】
前記制御部は、第１の仮想マシンを選択するとき、未停止の仮想マシンのうち、優先度の最も高い仮想マシンを第１の仮想マシンとして選択する、請求項１乃至６の何れか一項に記載の情報処理装置。
【請求項８】
前記制御部は、第１の仮想マシンが最初に選択される際に、前記複数の仮想マシンに対するリソースの割当量を均一にする、請求項１乃至７の何れか一項に記載の情報処理装置。
【請求項９】
前記制御部は、前記複数の仮想マシンを制御する制御用の仮想マシンが情報処理装置で実行されている場合、前記複数の仮想マシンが全て停止完了した後に、前記複数の仮想マシンに割当てられていた全てのリソースを前記制御用の仮想マシンに割当てて、前記制御用の仮想マシンに停止処理を実行させる、請求項１乃至８の何れか一項に記載の情報処理装置。
【請求項１０】
前記制御部は、前記複数の仮想マシンに対して停止の指示が行われた後、第１の時間が経過すると、停止処理中である仮想マシンを強制的に停止させる、請求項１乃至９の何れか一項に記載の情報処理装置。
【請求項１１】
前記制御部は、情報処理装置の電源に用いられる装置による給電が可能な第２の時間に基づいて、前記第１の時間を決定する、請求項１０記載の情報処理装置。
【請求項１２】
複数の仮想マシンを実行可能な情報処理装置が実行する仮想マシン停止方法であって、
前記複数の仮想マシンに並行して停止処理を実行させる際に、前記複数の仮想マシンのうち、相対的に優先度の高い仮想マシンに対して割り当てる該情報処理装置のリソースの量を増大させ、前記複数の仮想マシンのうち、相対的に優先度の低い仮想マシンに対して割り当てる該情報処理装置のリソースの量を減少させる調整を行う、
ことを特徴とする仮想マシン停止方法。
【請求項１３】
複数の仮想マシンを実行可能なコンピュータに、
前記複数の仮想マシンに並行して停止処理を実行させる際に、前記複数の仮想マシンそれぞれの優先度を示す情報に基づいて、前記複数の仮想マシンのうちから第１の仮想マシンを選択し、当該第１の仮想マシンの優先度よりも低い優先度である仮想マシンのうちから１またはそれ以上の第２の仮想マシンを選択し、
選択された第２の仮想マシンに対するリソースの割当量を減少させ、減少させた割当量に対応するリソースを用いて第１の仮想マシンに対するリソースの割当量を増加させる、
処理を実行させるプログラム。
【国際調査報告】
2013145288.tif 000023
2013145288.tif 000024