(57)【要約】【課題】ホスト装置の電源がＵＰＳに切り替わった後にＩ／Ｏ処理が完了する仮想マシンの数を増加させることを目的とする。【解決手段】無停電電源装置に接続され、複数の仮想マシンが稼動する情報処理装置であって、複数の仮想マシンの処理負荷が低いほど高い優先度を仮想マシン毎に設定する優先度設定部と、情報処理装置の電源が無停電電源装置に切り替わった場合、情報処理装置の電源が無停電電源装置に切り替わる直前の複数の仮想マシンの処理負荷に応じた優先度に基づいて、複数の仮想マシンから記憶部への読み込みおよび書き込みのうちの一方または両方であるＩ／Ｏ処理の優先順位を設定する順位設定部と、優先順位に基づいて、複数の仮想マシンから記憶部へのＩ／Ｏ処理を仮想マシン毎に実行するＩ／Ｏ実行部とを備える。【選択図】図４
2020034990.tif 000002
【特許請求の範囲】
【請求項１】
無停電電源装置に接続され、複数の仮想マシンが稼動する情報処理装置であって、
前記複数の仮想マシンの処理負荷が低いほど高い優先度を前記仮想マシン毎に設定する優先度設定部と、
前記情報処理装置の電源が前記無停電電源装置に切り替わった場合、前記情報処理装置の電源が前記無停電電源装置に切り替わる直前の前記複数の仮想マシンの処理負荷に応じた前記優先度に基づいて、前記複数の仮想マシンから記憶部への読み込みおよび書き込みのうちの一方または両方であるＩ／Ｏ処理の優先順位を設定する順位設定部と、
前記優先順位に基づいて、前記複数の仮想マシンから記憶部へのＩ／Ｏ処理を前記仮想マシン毎に実行するＩ／Ｏ実行部と
を備えることを特徴とする情報処理装置。
【請求項２】
前記優先度設定部は、前記複数の仮想マシンの処理負荷に関する情報を、前記複数の仮想マシンを管理するソフトウェアから取得する
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記優先度設定部は、直前の所定時間内におけるＩ／Ｏ処理が少ないほど高い優先度を前記複数の仮想マシンに設定する
ことを特徴とする請求項１または２記載の情報処理装置。
【請求項４】
前記優先度設定部は、直前の所定時間内におけるプロセッサ使用率が少ないほど高い優先度を前記複数の仮想マシンに設定する
ことを特徴とする請求項１または２記載の情報処理装置。
【請求項５】
無停電電源装置に接続され、複数の仮想マシンが稼動するコンピュータに、
前記複数の仮想マシンの処理負荷が低いほど高い優先度を前記仮想マシン毎に設定し、前記優先度をメモリに格納し、
前記コンピュータの電源が前記無停電電源装置に切り替わった場合、前記コンピュータの電源が前記無停電電源装置に切り替わる直前の前記複数の仮想マシンの処理負荷に応じた前記優先度を、前記複数の仮想マシンと記憶部間のＩ／Ｏ処理を優先順位にしたがって実行する入出力処理部に出力する
処理を実行させるための設定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および設定プログラムに関する。
【背景技術】
【０００２】
近年、情報処理装置の性能向上により１台のホスト装置上で多くの仮想マシンが動作することが可能になっている。仮想マシンのディスクイメージがホスト装置の記憶部（例えば、ハードディスク）に存在する場合、仮想マシンは、Input/output（Ｉ／Ｏ）処理を、その記憶部に対して実行する。ホスト装置が停電等により停止する場合、仮想マシンも停止するが、動作に必要な情報のＩ／Ｏ処理が残っている状態で停止すると、ディスクイメージが破損し、仮想マシンの次回の起動が困難となる。そこで、無停電電源装置（Uninterruptible Power Supply：ＵＰＳ）を導入して、ホスト装置を停止する前に仮想マシンのＩ／Ｏ処理を完了させることにより、仮想マシンとホスト装置を安全に停止する技術が用いられている。
【０００３】
関連する技術として、無停電電源装置が接続され、複数の仮想マシンを実行する複数の仮想化サーバと、電源障害に対するフェールセーフ機能を有するフェールセーフ装置とから構成されるシステムが提案されている（例えば、特許文献１を参照）。
【０００４】
また、関連する技術として、無停電電源装置の給電可能時間内でマシンの稼動停止を開始する時間を計算し、その時間に従って仮想マシンの稼動停止処理を実行する技術が提案されている（例えば、特許文献２を参照）。
【０００５】
また、関連する技術として、故障に応答してデータの複製を使用し、仮想マシンを再開することで、故障が生じた場合に仮想環境におけるダウンタイム減らす技術が提案されている（例えば、特許文献３を参照）。
【０００６】
また、関連する技術として、ゲストＯＳのＩ／Ｏ操作を、ゲストＯＳから直接デバイス操作可能なようにデバイスを構成して実行することと、エミュレーションによっても実行することが可能な仮想計算機が提案されている（例えば、特許文献４を参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００９−２８２７１４号公報
【特許文献２】国際公開第２０１３／１３６５０２号
【特許文献３】特開２０１５−６９６５５号公報
【特許文献４】特開２００８−３０５０３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
停電発生時に情報処理装置（ホスト装置）の電源をＵＰＳに切り替えたとしても、全ての仮想マシンのＩ／Ｏ処理が完了する前にＵＰＳのバッテリ残量がなくなり、ホスト装置が停止する可能性がある。その場合、仮想マシンのディスクイメージが破損し、仮想マシンの次回の起動が困難となる。
【０００９】
ホスト装置の記憶部が一つである場合、仮想マシンが他の仮想マシンのＩ／Ｏ処理の完了を待つ時間が生じる。例えば、Ｉ／Ｏ処理量が大きい仮想マシンの処理を先に開始すると、他の仮想マシンのＩ／Ｏ処理が完了せず、強制停止させられる仮想マシンが増加する。ただし、Ｉ／Ｏ処理量はタイミングによって異なるので、仮想マシンの設置時点においてＩ／Ｏ処理量を推定することは困難である。
【００１０】
また、電源容量が大きいＵＰＳを用意すれば停止するまでの時間は延ばせるが、ＵＰＳが高価になる。
【００１１】
１つの側面として、本発明は、ホスト装置の電源がＵＰＳに切り替わった後にＩ／Ｏ処理が完了する仮想マシンの数を増加させることを目的とする。
【課題を解決するための手段】
【００１２】
１つの態様では、情報処理装置は、無停電電源装置に接続され、複数の仮想マシンが稼動する情報処理装置であって、前記複数の仮想マシンの処理負荷が低いほど高い優先度を仮想マシン毎に設定する優先度設定部と、前記情報処理装置の電源が前記無停電電源装置に切り替わった場合、前記情報処理装置の電源が前記無停電電源装置に切り替わる直前の前記複数の仮想マシンの処理負荷に応じた前記優先度に基づいて、前記複数の仮想マシンから記憶部への読み込みおよび書き込みのうちの一方または両方であるＩ／Ｏ処理の優先順位を設定する順位設定部と、前記優先順位に基づいて、前記複数の仮想マシンから記憶部へのＩ／Ｏ処理を前記仮想マシン毎に実行するＩ／Ｏ実行部とを備える。
【発明の効果】
【００１３】
１つの側面によれば、ホスト装置の電源がＵＰＳに切り替わった後にＩ／Ｏ処理が完了する仮想マシンの数を増加させることができる。
【図面の簡単な説明】
【００１４】
【図１】仮想マシンとホスト装置の停止処理スケジュールの一例を示す図である。
【図２】仮想環境における停電発生時のＩ／Ｏ処理の一例を示す。
【図３】停電発生時のＩ／Ｏ処理手順の一例を示す図である。
【図４】実施形態のシステム構成の一例を示す図である。
【図５】優先度設定方法の第１の例を示す図である。
【図６】優先度リストの第１の例を示す図である。
【図７】優先度に基づく、停電発生時のＩ／Ｏ処理手順の一例を示す図である。
【図８】仮想環境における停電発生時のＩ／Ｏ処理を優先度に基づいて実行した例を示す図である。
【図９】第１の実施形態の優先度設定部の処理の一例を示すフローチャートである。
【図１０】停止処理部の処理の一例を示すフローチャートである。
【図１１】順位設定部の処理の一例を示すフローチャートである。
【図１２】I／Ｏ実行部の処理の一例を示すフローチャートである。
【図１３】優先度設定方法の第２の例を示す図である。
【図１４】優先度リストの第２の例を示す図である。
【図１５】第２の実施形態の優先度設定部の処理の一例を示すフローチャートである。
【図１６】ホスト装置のハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１５】
＜第１の実施形態＞
以下、図面を参照して、実施形態について説明する。図１は、仮想マシンとホスト装置の停止処理スケジュールの一例を示す図である。なお、ホスト装置の停止処理は、ホスト装置における仮想マシン以外の部分（ホスト装置のOperating System（ＯＳ）等）の処理を停止させてホスト装置全体を停止させる処理を示す。
【００１６】
図１に示すように、停電が発生して、ホスト装置の電源が系統電源からＵＰＳに切り替わった場合、所定のバッファ時間の経過後に、仮想マシンが停止処理を開始する。仮想マシンの停止時間として割り当てられる規定時間は、予め設定されており、仮想マシンは、未完了のＩ／Ｏ処理が存在する場合、この規定時間内に未完了のＩ／Ｏ処理を実行し、停止処理を行う。規定時間が終了すると、Ｉ／Ｏ処理が完了していなかったとしても、仮想マシンは強制的に停止する。なお、Ｉ／Ｏ処理は、仮想マシンからホスト装置内の記憶部への読み込みおよび書込みのうちのいずれか一方または両方であるとする。
【００１７】
そして、全ての仮想マシンの停止後、または仮想マシン停止規定時間の経過後に、ホスト装置１が停止処理を開始する。このように、仮想マシンの停止時間を予め規定することにより、仮想マシンのＩ／Ｏ処理が完了しているか否かに関わらず、ＵＰＳの動作可能時間内にホスト装置１が停止するようにスケジュールが設定されている。
【００１８】
図２は、仮想環境における停電発生時のＩ／Ｏ処理の一例を示す。図２に示すシステムはホスト装置１とＵＰＳ２とを含む。ホスト装置１が稼動中に停電が発生した場合、ホスト装置１の電源が系統電源からＵＰＳ２に切り替わる。
【００１９】
ホスト装置１上では、複数の仮想マシン（仮想マシンＡ〜Ｄ）が稼動しているとする。なお、ホスト装置１の記憶領域のうち、仮想マシンに関する領域を仮想マシン領域と称し、他の領域をホスト領域と称する。また、Ｉ／Ｏキュー、サブキュー、ディスパッチキューはメモリ上で実現されるキューであり、記憶部１９は、補助記憶装置（例えば、ハードディスクドライブ）であるとする。図２に示すＩ／Ｏキューは、各仮想マシンで停電発生時点においてＩ／Ｏ処理が未完了であるデータを示している。
【００２０】
ホスト装置１は、例えば、仮想マシンのＩ／Ｏキュー内のデータをサブキューとしてホスト領域のカーネルスペース上に取得する。そして、ホスト装置１は、サブキューからディスパッチキューにデータを移動させる。ディスパッチキューは、サブキュー内のデータを集約したキューであり、ディスパッチキューにエンキューされたデータは、エンキューされた順に記憶部１９に対してＩ／Ｏ処理が行われる。すなわち、サブキュー、ディスパッチキューには、First In, First Out（ＦＩＦＯ）処理が適用される。
【００２１】
図２に示す例では、ホスト装置１は、例えば、Ｉ／Ｏ処理の要求が発生した順にディスパッチキューにデータをエンキューし、ディスパッチキューから記憶部１９に対してＩ／Ｏ処理を行う。しかし、図１に示したように、仮想マシン停止規定時間が終了した場合、Ｉ／Ｏ処理が完了していなくてもホスト装置１が停止するため、一部のデータの記憶部１９へのＩ／Ｏ処理が完了しない可能性がある。
【００２２】
図３は、停電発生時のＩ／Ｏ処理手順の一例を示す図である。図３に示すように、停電が発生してホスト装置１の電源がＵＰＳに切り替えられた後、各仮想マシンのデータのＩ／Ｏ処理が実行される。しかし、上述のように仮想マシン停止規定時間が予め設定されているため、全ての仮想マシンのＩ／Ｏ処理が完了していなくても、仮想マシン停止規定時間が終了すると、仮想マシンが強制的に停止させられる。
【００２３】
図３に示す例では、仮想マシン停止規定時間内に仮想マシンＡのＩ／Ｏ処理が完了しているため、仮想マシンＡは安全に停止する。しかし、仮想マシン停止規定時間内に仮想マシンＢ、Ｃ、ＤのＩ／Ｏ処理が完了していないため、仮想マシンＢ、Ｃ、Ｄは、Ｉ／Ｏ処理の完了前に強制的に停止させられる。この場合、記憶部１９内の仮想マシンＢ、Ｃ、Ｄのディスクイメージが異常な状態となる可能性がある。そして、ディスクイメージが異常な状態となった場合、仮想マシンＢ、Ｃ、Ｄは、次回の起動に失敗したり、データの消失によりサービスを継続することが困難となったりするおそれがある。
【００２４】
図４は、実施形態のシステム構成の一例を示す図である。実施形態のシステムは、ホスト装置１と、ＵＰＳ２とを含む。ホスト装置１は、ＵＰＳ２に接続されている。
【００２５】
ホスト装置１は、仮想化ソフトウェア１１と管理部１４と優先度設定部１５と停止処理部１６と順位設定部１７とＩ／Ｏ実行部１８と記憶部１９とを含む。仮想化ソフトウェア１１と管理部１４と優先度設定部１５と停止処理部１６は、ホスト装置１内の仮想マシンに関する記憶領域である仮想マシン領域上で実現される。順位設定部１７とＩ／Ｏ実行部１８と記憶部１９は、仮想マシン以外に関する記憶領域であるホスト領域上で実現される。ホスト装置１は、例えば、サーバである。ホスト装置１は、情報処理装置およびコンピュータの一例である。
【００２６】
ＵＰＳ２は、系統電源の停電を検知した場合、ＵＰＳ２内のバッテリからホスト装置１に電力を供給する。すなわち、ＵＰＳ２は、系統電源の停電を検知した場合、ホスト装置１の電源を系統電源からＵＰＳ２内のバッテリに切り替える。また、ＵＰＳ２は、電源を系統電源からバッテリに切り替えたことを示す所定の通知をホスト装置１に送信する。
【００２７】
仮想化ソフトウェア１１は、仮想マシン１２を実現するためのエミュレート機能を有する。そして、仮想化ソフトウェア１１上で複数の仮想マシン１２が稼動する。また、仮想化ソフトウェア１１は、各仮想マシン１２を監視する仮想マシンモニタ１３を含む。
【００２８】
管理部１４は、仮想マシン１２を管理するソフトウェアである。管理部１４は、例えば、仮想マシン１２の起動処理、および停止処理を行う。また、管理部１４は、仮想マシン１２のＩ／Ｏ処理量、Central Processing Unit（ＣＰＵ）使用率等の情報を管理する。
【００２９】
優先度設定部１５は、複数の仮想マシン１２の処理負荷に関する情報を管理部１４から取得する。そして、優先度設定部１５は、取得した情報に基づいて、処理負荷が低いほど高い優先度を複数の仮想マシン１２に設定し、優先度リストを生成する。処理負荷は、例えば、直前の所定時間内における仮想マシン１２のＩ／Ｏ処理量である。優先度設定部１５は、例えば、直前の所定時間内における仮想マシン１２のＩ／Ｏ処理量が少ないほど、高い優先度を設定する。優先度設定部１５は、優先度（優先度を記録した優先度リスト）をメモリに格納しておく。
【００３０】
停止処理部１６は、ホスト装置１の電源がＵＰＳ２に切り替わった場合、仮想マシンの停止処理を開始し、メモリから、最新の優先度リストを取得する。そして、停止処理部１６は、仮想マシンの停止処理の開始通知と、優先度リストを順位設定部１７に出力する。停止処理部１６は、Ｉ／Ｏ処理が完了した仮想マシンから順に、停止処理を完了させる。
【００３１】
順位設定部１７は、ホスト装置１の電源がＵＰＳ２に切り替わった場合、優先度設定部１５が設定した最新の優先度を含む優先度リストを受信し、優先度リストに基づいて、複数の仮想マシン１２から記憶部１９へのＩ／Ｏ処理の優先順位を設定する。最新の優先度は、ホスト装置１の電源がＵＰＳ２に切り替わる直前の所定時間内における複数の仮想マシン１２の処理負荷に応じた優先度である。順位設定部１７は、優先度リストにおいて優先度の高い仮想マシンのデータから順に、サブキューからディスパッチキューへデータ移動を行うことにより、Ｉ／Ｏ処理の優先順位を設定する。
【００３２】
Ｉ／Ｏ実行部１８は、順位設定部１７が設定した優先順位に基づいて、複数の仮想マシン１２から記憶部１９へのＩ／Ｏ処理を仮想マシン１２毎に実行する。Ｉ／Ｏ実行部１８は、例えば、ディスパッチキューに先に移動されたデータから順に、記憶部１９へのＩ／Ｏ処理を実行する。
【００３３】
順位設定部１７およびＩ／Ｏ実行部１８は、入出力処理部の一例である。すなわち、入出力処理部は、複数の仮想マシンと記憶部１９間のＩ／Ｏ処理を優先順位にしたがって実行する。
【００３４】
記憶部１９は、仮想マシン１２が使用するデータを記憶する。記憶部１９は、例えば、仮想マシン１２のディスクイメージを、仮想マシン１２毎に記憶している。記憶部１９は、補助記憶装置（例えば、ハードディスクドライブ）であるとする。
【００３５】
図５は、優先度設定方法の第１の例を示す図である。上述のように、優先度設定部１５は、直前の複数の仮想マシン１２の処理負荷に関する情報を管理部１４から取得し、取得した情報に基づいて、複数の仮想マシン１２の優先度を設定する。図５に示す例では、優先度設定部１５は、電源がＵＰＳ２に切り替わる直前の所定時間（１分間）における仮想マシンのデータ書込みサイズに基づいて、優先度を設定する。優先度設定部１５は、図５の例では書込みサイズを用いているが、読み込みサイズ、または読み込みと書込みの合計サイズを用いてもよい。また、設定に用いる時間は、１分間でなくてもよい。
【００３６】
図５に示す例では、電源がＵＰＳ２に切り替わる直前の所定時間（１分間）における書込みサイズは、仮想マシンＡが５０ＭＢ、仮想マシンＢが１５０ＭＢ、仮想マシンＣが８０ＭＢ、仮想マシンＤが２００ＭＢである。優先度設定部１５は、この書込みサイズが少ない仮想マシンほど、高い優先度を設定する。
【００３７】
電源がＵＰＳ２に切り替わる直前の書込みサイズが少ない場合、停電時に残っているＩ／Ｏ処理量も少ないことが考えられる。従って、優先度設定部１５は、この書込みサイズが少ない仮想マシンほど、優先度を高く設定することにより、その仮想マシンの停止処理を早く完了させ、他の仮想マシンの書込みが完了しない可能性を低減することができる。これにより、ホスト装置１は、ＵＰＳの動作期間内にＩ／Ｏ処理が完了し、安全に停止することができる仮想マシンの数を増加させることができる。
【００３８】
ホスト装置１は、電源がＵＰＳ２に切り替わる直前のＩ／Ｏ処理量を用いて、Ｉ／Ｏ処理量を設定するため、タイミングによりＩ／Ｏ処理量が変化するシステムであっても、適切に優先度を設定することができる。
【００３９】
また、優先度を設定する優先度設定部１５、および仮想マシン１２のＩ／Ｏ処理量を管理する管理部１４は、仮想マシン１２とは別のプログラムにより実現される。よって、ホスト装置１は、仮想マシン１２のプログラムを変更することなく、優先度を設定することができる。例えば、仮想マシンに仮想アプライアンスを適用した場合、専用ＯＳが適用されることが多く、プログラムを変更することは容易ではない。しかし、ホスト装置１は、仮想マシンのプログラムを変更することなく、優先度を設定するため、プログラム変更の作業量を抑制することができる。
【００４０】
図６は、優先度リストの第１の例を示す図である。図６に示す優先度リストは、図５に示す方法により優先度が設定された場合に生成される。図５に示す優先度リストは、優先度と、仮想マシンのProcess ID（ＰＩＤ）と、電源がＵＰＳ２に切り替わる直前の１分間の書込みサイズとが対応付けられて記憶されている。図６に示す例では、書込みサイズが小さい順に高い優先度が設定され、仮想マシンＡ、仮想マシンＣ、仮想マシンＢ、仮想マシンＤの順に高い優先度が設定されている。
【００４１】
図７は、優先度に基づく、停電発生時のＩ／Ｏ処理手順の一例を示す図である。図７に示す例において、ホスト装置１の電源がＵＰＳ２に切り替えられた時点に残っているＩ／Ｏ処理量は、図３に示す例と同様である。図７に示す例では、Ｉ／Ｏ実行部１８は、図６に示す仮想マシンの優先度に基づいて設定された優先順位に従って仮想マシンのＩ／Ｏ処理を実行する。
【００４２】
ホスト装置１は、図６に示す仮想マシンの優先度に従って、仮想マシンＡ、Ｃ、Ｂ、Ｄの順に仮想マシンのＩ／Ｏ処理を実行する。そして、仮想マシン停止規定時間内に仮想マシンＡ、Ｃ、ＢのＩ／Ｏ処理が完了するため、仮想マシンＡ、Ｃ、Ｂは、安全に停止することができる。
【００４３】
図３に示す例では、仮想マシン停止規定時間内に３つの仮想マシン（仮想マシンＢ、Ｃ、Ｄ）のＩ／Ｏ処理が完了していないが、図７に示す例では、仮想マシン停止規定時間内にＩ／Ｏ処理が完了しない仮想マシンは、１つ（仮想マシンＤ）である。すなわち、ホスト装置１は、ホスト装置１の電源の供給元がＵＰＳに切り替えられた際に、設定された優先度に従って仮想マシン毎にＩ／Ｏ処理を実行することにより、Ｉ／Ｏ処理が完了し安全に停止する仮想マシンの数を増加させることができる。よって、ホスト装置１は、停電時に複数の仮想マシンおよびホスト装置を停止する際の安全性を向上することができる。
【００４４】
図８は、仮想環境における停電発生時のＩ／Ｏ処理を優先度に基づいて実行した例を示す図である。図８に示すシステムの構成は、図２に示すシステムと同様である。ホスト装置１が稼動中に停電が発生した場合、ホスト装置１の電源が系統電源からＵＰＳ２に切り替わる。
【００４５】
順位設定部１７は、例えば、ホスト領域のカーネルスペース上で、Ｉ／Ｏキュー内のデータをプロセス毎に取得し、仮想マシン毎に用意したサブキューにエンキューする。そして、順位設定部１７は、優先度設定部１５が設定した優先度が高い仮想マシンのサブキューから順に、ディスパッチキューにデータを移動させる。図６に示す優先度を用いた場合、順位設定部１７は、仮想マシンＡ、Ｃ、Ｂ、Ｄの順にサブキューにアクセスし、ディスパッチキューにエンキューする。Ｉ／Ｏ実行部１８は、エンキューされた順に記憶部１９に対してＩ／Ｏ処理を行う。サブキュー、ディスパッチキューには、First In, First Out（ＦＩＦＯ）処理が適用される。
【００４６】
図２に示す例では、仮想マシン停止規定時間内に仮想マシンＢ、Ｃ、ＤのＩ／Ｏ処理が完了していないが、図８に示す例では、仮想マシン停止規定時間内にＩ／Ｏ処理が完了しない仮想マシンは、仮想マシンＤのみである。
【００４７】
図９は、第１の実施形態の優先度設定部１５の処理の一例を示す図である。優先度設定部１５は、管理部１４から、各仮想マシン１２のインスタンス名の一覧を取得する（ステップＳ１０１）。優先度設定部１５は、管理部１４から、各仮想マシン１２のＰＩＤを取得する（ステップＳ１０２）。
【００４８】
優先度設定部１５は、管理部１４から、各仮想マシン１２から記憶部１９に対する所定時間（例えば、１分間）内におけるＩ／Ｏ処理量を取得する（ステップＳ１０３）。優先度設定部１５は、取得した仮想マシンのＰＩＤとＩ／Ｏ処理量の組をＩ／Ｏ処理量が少ない順にソートする（ステップＳ１０４）。優先度設定部１５は、Ｉ／Ｏ処理量が少ない仮想マシンほど、高い優先度を設定し、優先度リスト（例えば、図６）を生成する（ステップＳ１０５）。
【００４９】
優先度設定部１５は、ユーザから優先度設定処理に対する終了指示を受けた場合（ステップＳ１０６でＹＥＳ）、処理を終了する。優先度設定部１５は、ユーザから優先度設定処理に対する終了指示を受けていない場合（ステップＳ１０６でＮＯ）、前回優先度リストを生成してから所定の待機時間が経過したか判定する（ステップＳ１０７）。所定の待機時間は、例えば、１０秒である。
【００５０】
前回優先度リストを生成してから所定の待機時間が経過していない場合（ステップＳ１０７でＮＯ）、優先度設定部１５は、所定の待機時間が経過するまで待機する。前回優先度リストを生成してから所定の待機時間が経過した場合（ステップＳ１０７でＹＥＳ）、優先度設定部１５は、ステップＳ１０１の処理に戻る。すなわち、優先度設定部１５は、所定の待機時間毎に優先度リストを更新する。
【００５１】
図１０は、停止処理部１６の処理の一例を示すフローチャートである。停止処理部１６は、停止処理プロセスを起動する（ステップＳ２０１）。停止処理部１６は、ホスト装置１の電源がＵＰＳに切り替わったか判定する（ステップＳ２０２）。例えば、ＵＰＳ２は、停電が発生してＵＰＳ２内のバッテリからホスト装置１に電源の供給を開始する際に、所定の通知をホスト装置１に送る。停止処理部１６は、その通知を受信した場合に、電源がＵＰＳ２に切り替わったと判定する。
【００５２】
停止処理部１６は、ホスト装置１の電源がＵＰＳ２に切り替わっていない場合（ステップＳ２０２でＮＯ）、切り替わるまで待機する。電源がＵＰＳ２に切り替わった場合（ステップＳ２０２でＹＥＳ）、停止処理部１６は、優先度設定部１５から最新の優先度リストを取得する（ステップＳ２０３）。停止処理部１６は、仮想マシンの停止処理の開始通知と、優先度リストを順位設定部１７に送信する（ステップＳ２０４）。
【００５３】
図８に示すように、優先度設定部１５は、所定の待機時間毎に優先度リストを更新している。よって、停止処理部１６がステップＳ２０３で取得する優先度リストの優先度は、ホスト装置１の電源がＵＰＳ２に切り替わる直前の仮想マシン１２のＩ／Ｏ処理量に応じた優先度である。
【００５４】
停止処理部１６は、仮想マシンの停止処理を開始する（ステップＳ２０５）。停止処理部１６は、例えば、仮想マシンで動作するアプリケーション、ＯＳ等を停止させる。ただし、停止処理部１６は、仮想マシンの記憶部１９へのＩ／Ｏ処理が残っている場合、Ｉ／Ｏ処理が終わるまで、その仮想マシンの停止処理を完了させない。
【００５５】
全仮想マシンの停止処理が完了した場合（ステップＳ２０６でＹＥＳ）、停止処理部１６は、全仮想マシンが停止したことを順位設定部１７に通知する（ステップＳ２０７）。
【００５６】
全仮想マシンの停止が完了しておらず（ステップＳ２０６でＮＯ）、停止規定時間を超過した場合（ステップＳ２０８）、停止処理部１６は、停止規定時間を超過したことを順位設定部１７に通知する（ステップＳ２０９）。そして、停止処理部１６は、全仮想マシンを強制停止させる（ステップＳ２１０）。
【００５７】
図１１は、順位設定部１７の処理の一例を示すフローチャートである。順位設定部１７は、停止処理部１６から停止処理開始通知および優先度リストを受信していない場合（ステップＳ３０１でＮＯ）、受信するまで、通常の順位設定処理を実行する（ステップＳ３０２）。
【００５８】
順位設定部１７は、停止処理部１６から停止処理開始通知および優先度リストを受信した場合（ステップＳ３０１でＹＥＳ）、優先度リスト内の仮想マシンのＩ／Ｏキューをサブキューとして取得する（ステップＳ３０３）。ステップＳ３０１でＹＥＳの場合、受信する優先度リストは、ホスト装置１の電源がＵＰＳ２に切り替わる直前の仮想マシン１２のＩ／Ｏ処理量に応じた優先度リストである。順位設定部１７は、優先度リストに基づいて、サブキューからディスパッチキューへのエンキューの優先順位を設定する（ステップＳ３０４）。
【００５９】
順位設定部１７は、全仮想マシンが停止したことを示す通知、または待ち時間が超過したことを示す通知を停止処理部１６から受信したか判定する（ステップＳ３０５）。いずれの通知も受信していない場合（ステップＳ３０５でＮＯ）、ステップＳ３０３で取得した全てのサブキューが空であるか判定する（ステップＳ３０６）。ステップＳ３０６でＹＥＳの場合、処理はステップＳ３０５に戻る。
【００６０】
ステップＳ３０６でＮＯの場合、順位設定部１７は、エンキューを実施していないサブキューのうち最も優先度が高いサブキューを参照する（ステップＳ３０７）。順位設定部１７は、参照したサブキューにデータが存在するか判定する（ステップＳ３０８）。参照したサブキューにデータが存在する場合（ステップＳ３０８でＹＥＳ）、順位設定部１７は、サブキューの全データをディスパッチキューにエンキューする（ステップＳ３０９）。ステップＳ３０８でＮＯの場合、またはステップＳ３０９の処理後、処理はステップＳ３０６に戻る。以上のように、順位設定部１７は、優先度リストに基づいて、仮想マシン１２から記憶部１９へのＩ／Ｏ処理の優先順位を設定する。
【００６１】
ステップＳ３０５でＹＥＳの場合、順位設定部１７は、エンキューの順位をステップＳ３０４で設定する前の順序に戻す（ステップＳ３１０）。順位設定部１７は、サブキュー内のデータに関し、通常の順序設定処理を行う（ステップＳ３１１）。ホスト装置１が停止していない場合（ステップＳ３１１でＮＯ）、順位設定部１７は、ホスト装置１が停止するまでステップＳ３１１の処理を継続する。
【００６２】
図１２は、I／Ｏ実行部１８の処理の一例を示すフローチャートである。I／Ｏ実行部１８は、順位設定部１７が設定した最新の優先順位を取得する（ステップＳ４０１）。I／Ｏ実行部１８は、例えば、優先順位として、ディスパッチキューに入ったデータの順番を参照する。
【００６３】
I／Ｏ実行部１８は、参照した優先順位に基づいて、複数の仮想マシン１２から記憶部１９へのＩ／Ｏ処理を仮想マシン１２毎に実行する（ステップＳ４０２）。I／Ｏ実行部１８は、ホスト装置が停止していない場合（ステップＳ４０３でＮＯ）、停止するまで、ステップＳ４０１、Ｓ４０２の処理を繰り返す。
【００６４】
なお、図９〜図１２に示した処理は、並列で実行される。
【００６５】
＜第２の実施形態＞
以下、第２の実施形態について説明する。第２の実施形態では、優先度の設定に用いる複数の仮想マシン１２の処理負荷として、ＣＰＵ使用率を用いる。ＣＰＵは、プロセッサの一例である。なお、第２の実施形態のシステム構成は、図４に示す第１の実施形態のシステム構成と同様である。
【００６６】
図１３は、優先度設定方法の第２の例を示す図である。図１３に示す例では、優先度設定部１５は、電源がＵＰＳ２に切り替わる直前の所定時間（１分間）内における仮想マシンのＣＰＵ使用率の平均に基づいて、優先度を設定する。なお、設定に用いる時間は、１分間でなくてもよい。
【００６７】
図１３に示す例では、電源がＵＰＳ２に切り替わる直前の所定時間（１分間）における平均ＣＰＵ使用率は、仮想マシンＡが１０％、仮想マシンＢが６４％、仮想マシンＣが３５％、仮想マシンＤが７０％である。優先度設定部１５は、ホスト装置１の電源がＵＰＳに切り替わる直前の所定時間内におけるＣＰＵ使用率が少ないほど高い優先度を仮想マシン１２に設定する。
【００６８】
電源がＵＰＳ２に切り替わる直前のＣＰＵ使用率が高い場合、停電時に残っているＩ／Ｏ処理量も大きいことが考えられる。従って、優先度設定部１５は、ＣＰＵ使用率が少ない仮想マシンほど、優先度を高く設定することにより、その仮想マシンの停止処理を早く完了させ、他の仮想マシンのＩ／Ｏ処理が完了しない可能性を低減することができる。これにより、ホスト装置１は、安全に停止することができる仮想マシンの数を増加させることができる。
【００６９】
ホスト装置１は、電源がＵＰＳ２に切り替わる直前のＣＰＵ使用率を用いて、Ｉ／Ｏ処理量を設定するため、タイミングによりＣＰＵ使用率が変化するシステムであっても、適切に優先度を設定することができる。
【００７０】
図１４は、優先度リストの第２の例を示す図である。図１４に示す優先度リストは、図１３に示す方法により優先度が設定された場合に生成される。図１３に示す優先度リストは、優先度と、仮想マシンのProcess ID（ＰＩＤ）と、電源がＵＰＳ２に切り替わる直前の１分間の平均ＣＰＵ使用率とが対応付けられて記憶されている。図１３に示す例では、ＣＰＵ使用率が少ない順に高い優先度が設定され、仮想マシンＡ、仮想マシンＣ、仮想マシンＢ、仮想マシンＤの順に高い優先度が設定されている。
【００７１】
図１５は、第２の実施形態の優先度設定部１５の処理の一例を示すフローチャートである。優先度設定部１５は、管理部１４から、各仮想マシン１２のインスタンス名の一覧を取得する（ステップＳ５０１）。優先度設定部１５は、管理部１４から、各仮想マシン１２のＰＩＤを取得する（ステップＳ５０２）。
【００７２】
優先度設定部１５は、管理部１４から、各仮想マシン１２から記憶部１９に対する所定時間（例えば、１分間）内における平均ＣＰＵ使用率を取得する（ステップＳ５０３）。優先度設定部１５は、取得した仮想マシンのＰＩＤと平均ＣＰＵ使用率の組を平均ＣＰＵ使用率が少ない順にソートする（ステップＳ５０４）。優先度設定部１５は、所定時間内におけるＣＰＵ使用率が少ない仮想マシンほど、高い優先度を仮想マシン１２に設定し、優先度リスト（例えば、図１４）を生成する（ステップＳ５０５）。
【００７３】
優先度設定部１５は、ユーザから優先度設定処理に対する終了指示を受けた場合（ステップＳ５０６でＹＥＳ）、処理を終了する。優先度設定部１５は、ユーザから優先度設定処理に対する終了指示を受けていない場合（ステップＳ５０６でＮＯ）、前回優先度リストを生成してから所定の待機時間が経過したか判定する（ステップＳ５０７）。所定の待機時間は、例えば、１０秒である。
【００７４】
前回優先度リストを生成してから所定の待機時間が経過していない場合（ステップＳ５０７でＮＯ）、優先度設定部１５は、所定の待機時間が経過するまで待機する。前回優先度リストを生成してから所定の待機時間が経過した場合（ステップＳ５０７でＹＥＳ）、優先度設定部１５は、ステップＳ５０１の処理に戻る。すなわち、優先度設定部１５は、所定の待機時間毎に優先度リストを更新する。
【００７５】
なお、優先度設定部１５は、所定時間内における仮想マシンの平均ＣＰＵ使用率の替わりに、所定時間内における仮想マシンのＣＰＵ使用率の最大値または最小値等を用いて、優先度を設定してもよい。
【００７６】
第２の実施形態における停止処理部１６、順位設定部１７、Ｉ／Ｏ実行部１８の処理は、図１０〜図１２に示す第１の実施形態における処理と同様である。
【００７７】
＜ハードウェア構成＞
次に、ホスト装置１のハードウェア構成の一例を説明する。図１６は、ホスト装置１のハードウェア構成の一例を示す図である。図１６の例に示すように、ホスト装置１において、バス１００に、プロセッサ１１１とメモリ１１２と補助記憶装置１１３と通信インタフェース１１４と媒体接続部１１５と入力装置１１６と出力装置１１７とが接続される。
【００７８】
プロセッサ１１１は、メモリ１１２に展開されたプログラムを実行する。実行されるプログラムには、実施形態における処理を行う設定プログラムが適用されてもよい。
【００７９】
メモリ１１２は、例えば、Random Access Memory(ＲＡＭ)である。補助記憶装置１１３は、種々の情報を記憶する記憶装置であり、例えばハードディスクドライブや半導体メモリ等が適用されてもよい。補助記憶装置１１３に実施形態の処理を行う設定プログラムが記憶されていてもよい。図４、図８に示す記憶部１９は、補助記憶装置１１３により実現されてもよい。図８に示すＩ／Ｏキュー、サブキュー、ディスパッチキューは、メモリ１１２により実現されてもよい。
【００８０】
通信インタフェース１１４は、Local Area Network（ＬＡＮ）、Wide Area Network（ＷＡＮ）等の通信ネットワークに接続され、通信に伴うデータ変換等を行う。
【００８１】
媒体接続部１１５は、可搬型記録媒体１１８が接続可能なインタフェースである。可搬型記録媒体１１８には、光学式ディスク（例えば、Compact Disc(ＣＤ)またはDigital Versatile Disc(ＤＶＤ))、半導体メモリ等が適用されてもよい。可搬型記録媒体１１８に実施形態の処理を行う設定プログラムが記録されていてもよい。
【００８２】
入力装置１１６は、例えば、キーボード、ポインティングデバイス等であり、ユーザからの指示及び情報等の入力を受け付ける。
【００８３】
出力装置１１７は、例えば、表示装置、プリンタ、スピーカ等であり、ユーザへの問い合わせ又は指示、及び処理結果等を出力する。
【００８４】
図４に示す仮想化ソフトウェア１１、管理部１４、優先度設定部１５、停止処理部１６、順序設定部１７、およびＩ／Ｏ実行部１８は、メモリ１１２に展開された設定プログラムをプロセッサ１１１が実行することにより実現されてもよい。
【００８５】
メモリ１１２、補助記憶装置１１３および可搬型記録媒体１１８は、コンピュータが読み取り可能であって非一時的な有形の記憶媒体であり、信号搬送波のような一時的な媒体ではない。
【００８６】
以上の実施形態に関し、更に以下の付記を開示する。
（付記１）
無停電電源装置に接続され、複数の仮想マシンが稼動する情報処理装置であって、
前記複数の仮想マシンの処理負荷が低いほど高い優先度を仮想マシン毎に設定する優先度設定部と、
前記情報処理装置の電源が前記無停電電源装置に切り替わった場合、前記情報処理装置の電源が前記無停電電源装置に切り替わる直前の前記複数の仮想マシンの処理負荷に応じた前記優先度に基づいて、前記複数の仮想マシンから記憶部への読み込みおよび書き込みのうちの一方または両方であるＩ／Ｏ処理の優先順位を設定する順位設定部と、
前記優先順位に基づいて、前記複数の仮想マシンから記憶部へのＩ／Ｏ処理を前記仮想マシン毎に実行するＩ／Ｏ実行部と
を備えることを特徴とする情報処理装置。
（付記２）
前記優先度設定部は、前記複数の仮想マシンの処理負荷に関する情報を、前記複数の仮想マシンを管理するソフトウェアから取得する
ことを特徴とする付記１記載の情報処理装置。
（付記３）
前記優先度設定部は、直前の所定時間内におけるＩ／Ｏ処理が少ないほど高い優先度を前記複数の仮想マシンに設定する
ことを特徴とする付記１または２記載の情報処理装置。
（付記４）
前記優先度設定部は、直前の所定時間内におけるプロセッサ使用率が少ないほど高い優先度を前記複数の仮想マシンに設定する
ことを特徴とする付記１または２記載の情報処理装置。
（付記５）
無停電電源装置に接続され、複数の仮想マシンが稼動するコンピュータに、
前記複数の仮想マシンの処理負荷が低いほど高い優先度を仮想マシン毎に設定し、前記優先度をメモリに格納し、
前記コンピュータの電源が前記無停電電源装置に切り替わった場合、前記コンピュータの電源が前記無停電電源装置に切り替わる直前の前記複数の仮想マシンの処理負荷に応じた前記優先度を、前記複数の仮想マシンと記憶部間のＩ／Ｏ処理を優先順位にしたがって処理を行う入出力処理部に出力する
処理を実行させるための設定プログラム。
（付記６）
前記複数の仮想マシンの処理負荷に関する情報を、前記複数の仮想マシンを管理するソフトウェアから取得する
処理を前記コンピュータに実行させることを特徴とする付記５記載の設定プログラム。
（付記７）
直前の所定時間内におけるＩ／Ｏ処理が少ないほど高い優先度を前記複数の仮想マシンに設定する
処理を前記コンピュータに実行させることを特徴とする付記５または６記載の設定プログラム。
（付記８）
直前の所定時間内におけるプロセッサ使用率が少ないほど高い優先度を前記複数の仮想マシンに設定する
処理を前記コンピュータに実行させることを特徴とする付記５または６記載の設定プログラム。
【００８７】
＜その他＞
本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で様々な変更、追加、省略が適用可能である。
【符号の説明】
【００８８】
１    ホスト装置
２    ＵＰＳ
１１    仮想化ソフトウェア
１２    仮想マシン
１３    仮想マシンモニタ
１４    管理部
１５    優先度設定部
１６    停止処理部
１７    順位設定部
１８    Ｉ／Ｏ実行部
１９    記憶部
１００    バス
１１１    プロセッサ
１１２    メモリ
１１３    補助記憶装置
１１４    通信インタフェース
１１５    媒体接続部
１１６    入力装置
１１７    出力装置
１１８    可搬型記録媒体
【図１】
2020034990.tif 000003
【図２】
2020034990.tif 000004
【図３】
2020034990.tif 000005
【図４】
2020034990.tif 000006
【図５】
2020034990.tif 000007
【図６】
2020034990.tif 000008
【図７】
2020034990.tif 000009
【図８】
2020034990.tif 000010
【図９】
2020034990.tif 000011
【図１０】
2020034990.tif 000012
【図１１】
2020034990.tif 000013
【図１２】
2020034990.tif 000014
【図１３】
2020034990.tif 000015
【図１４】
2020034990.tif 000016
【図１５】
2020034990.tif 000017
【図１６】
2020034990.tif 000018