(57)【要約】      （修正有）【課題】使用するリソースが必ずしも同一でない仮想計算機を実行するサーバがリソース不足になることなく、仮想計算機へのログオン時における処理による負荷を削減する。【解決手段】仮想計算機管理装置１は、仮想計算機記憶手段２３に仮想計算機を退避させることができる実行装置２１が実行する仮想計算機２０に関して、当該仮想計算機が使用するリソース量と優先順位とを記憶する状態記憶手段１０と、接続先仮想計算機への接続要求を受信する要求受信手段１１と、実行装置２の未使用リソース量と、退避されている接続先仮想計算機が使用するリソース量とに基づき、接続先仮想計算機を復帰させた場合の不足リソース量を特定する不足特定手段１２と、優先順位に基づき、退避させられていない仮想計算機２０から、選択仮想計算機が使用するリソース量の合計が不足リソースより大きくなるように選択する選択手段と、を備える。【選択図】図１
2015165361.tif 000002
【特許請求の範囲】
【請求項１】
仮想計算機記憶手段に仮想計算機を退避させることができる実行装置が実行する仮想計算機に関して、当該仮想計算機が使用するリソース量と、前記仮想計算機の優先順位とを記憶する状態記憶手段と、
前記仮想計算機のうち接続先仮想計算機への接続要求を受信する要求受信手段と、
前記実行装置において検出された未使用リソース量と、前記仮想計算機記憶手段に退避させられている前記接続先仮想計算機が使用するリソース量とに基づき、前記接続先仮想計算機を復帰させた場合の不足リソース量を特定する不足特定手段と、
前記優先順位に基づき、退避させられていない前記仮想計算機から選択仮想計算機を、前記選択仮想計算機が使用する前記リソース量の合計が前記不足リソースより大きくなるように選択する選択手段と、
を備える仮想計算機管理装置。
【請求項２】
ログ記憶手段が記憶する前記仮想計算機に対して行われた接続の記録に基づき、前記仮想計算機の優先順位を決定し、決定された前記優先順位を前記仮想計算機に関連付けて前記状態記憶手段に格納する優先順位決定手段と、
を備える請求項１に記載の仮想計算機管理装置。
【請求項３】
前記状態記憶手段は、前記仮想計算機に関連付けて、当該仮想計算機に対して操作が行われているか否かを表す動作状態を記憶し、
前記選択手段は、さらに、前記動作状態に基づき、前記選択仮想計算機を選択する
請求項１又は２に記載の仮想計算機管理装置。
【請求項４】
前記接続要求を送信する端末と、前記実行装置と、請求項１乃至３のいずれかに記載の仮想計算機管理装置とを含み、
前記実行装置は、
前記選択仮想計算機を仮想計算機記憶手段に退避させ、さらに、前記仮想計算機記憶手段に退避させられている前記接続先仮想計算機を復帰させる退避手段と、
前記仮想計算機記憶手段と、
識別子を受信した仮想計算機に接続する前記端末に、前記接続先仮想計算機の識別子を送信する要求実行手段と、
を備える
情報処理システム。
【請求項５】
仮想計算機記憶手段に仮想計算機を退避させることができる実行装置が実行する仮想計算機に関して、当該仮想計算機が使用するリソース量と、前記仮想計算機の優先順位とを状態記憶手段に記憶し、
前記仮想計算機のうち接続先仮想計算機への接続要求を受信する要求受信手段と、
前記実行装置において検出された未使用リソース量と、前記仮想計算機記憶手段に退避させられている前記接続先仮想計算機が使用するリソース量とに基づき、前記接続先仮想計算機を復帰させた場合の不足リソース量を特定し、
前記優先順位に基づき、退避させられていない前記仮想計算機から選択仮想計算機を、前記選択仮想計算機が使用する前記リソース量の合計が前記不足リソースより大きくなるように選択する、
仮想計算機管理方法。
【請求項６】
ログ記憶手段が記憶する前記仮想計算機に対して行われた接続の記録に基づき、前記仮想計算機の優先順位を決定し、決定された前記優先順位を前記仮想計算機に関連付けて前記状態記憶手段に格納する、
請求項５に記載の仮想計算機管理方法。
【請求項７】
前記仮想計算機に関連付けて、当該仮想計算機に対して操作が行われているか否かを表す動作状態を前記状態記憶手段に記憶し、
さらに、前記動作状態に基づき、前記選択仮想計算機を選択する
請求項５又は６に記載の仮想計算機管理方法。
【請求項８】
コンピュータを、
仮想計算機記憶手段に仮想計算機を退避させることができる実行装置が実行する仮想計算機に関して、当該仮想計算機が使用するリソース量と、前記仮想計算機の優先順位とを記憶する状態記憶手段と、
前記仮想計算機のうち接続先仮想計算機への接続要求を受信する要求受信手段と、
前記実行装置において検出された未使用リソース量と、前記仮想計算機記憶手段に退避させられている前記接続先仮想計算機が使用するリソース量とに基づき、前記接続先仮想計算機を復帰させた場合の不足リソース量を特定する不足特定手段と、
前記優先順位に基づき、退避させられていない前記仮想計算機から選択仮想計算機を、前記選択仮想計算機が使用する前記リソース量の合計が前記不足リソースより大きくなるように選択する選択手段と、
して動作させる仮想計算機管理プログラム。
【請求項９】
コンピュータを、
ログ記憶手段が記憶する前記仮想計算機に対して行われた接続の記録に基づき、前記仮想計算機の優先順位を決定し、決定された前記優先順位を前記仮想計算機に関連付けて前記状態記憶手段に格納する優先順位決定手段と、
して動作させる請求項８に記載の仮想計算機管理プログラム。
【請求項１０】
コンピュータを、
前記仮想計算機に関連付けて、当該仮想計算機に対して操作が行われているか否かを表す動作状態を記憶する前記状態記憶手段と、
さらに、前記動作状態に基づき、前記選択仮想計算機を選択する前記選択手段と、
して動作させる請求項８又は９に記載の仮想計算機管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想計算機を管理する技術に関する。
【背景技術】
【０００２】
サーバにおいて動作する仮想計算機に、シンクライアント端末が接続する際必ずログオンが行われる場合、サーバは、接続の度にログオンに伴う処理を行う必要がある。ログオンに伴う処理として、例えば、ユーザの認証、ユーザプロファイルの読み込み、ログオン時に起動されるアプリケーションの起動等がある。ログオンに伴う処理を削減する方法として、例えば、ユーザが仮想計算機の使用を終了する際、ログオフを行う代わりに、シンクライアント端末と仮想計算機との間の接続のみを切断する方法がある。この方法では、シンクライアント端末との接続が切断された仮想計算機は、ユーザがログオンした状態で動作し続ける。そして、シンクライアント端末が、一度ログオンした仮想計算機に再び接続する場合、シンクライアント端末は動作中の仮想計算機に再接続される。その際、ログオンは行われない。しかし、全ての仮想計算機を動作させ続けると、例えば、サーバが仮想計算機を動作させるのに必要なメモリが不足する。そのようなサーバのメモリ不足を緩和する方法の例が、例えば特許文献１に記載されている。
【０００３】
特許文献１に記載されているユーザ環境退避制御システムは、仮想ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）にユーザ毎の環境を実現するためのユーザ環境情報を、記憶装置に退避させる。そのユーザ環境退避制御システムは、各ユーザに優先度を割り当てる。そして、ユーザ環境情報が退避させられているユーザが仮想ＰＣにアクセスした際、空き仮想ＰＣが無ければ、そのユーザ環境退避制御システムは、ユーザ環境情報が退避させられていないユーザから、割り当てられている優先度が最も低いユーザを選択する。そして、そのユーザ環境退避制御システムは、選択したユーザのユーザ環境情報を退避させることにより、空き仮想ＰＣを準備する。そして、そのユーザ環境退避制御システムは、準備した空き仮想ＰＣに、アクセスしたユーザのユーザ環境情報をロードする。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１３４２１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
仮想ＰＣが使用するサーバのリソースの量が、例えばユーザ毎に異なるように設定されている場合、仮想ＰＣを使用するユーザが変わることにより、その仮想ＰＣが必要とするリソースの量が増加する可能性がある。その場合、仮想ＰＣを使用するユーザが変わる前に、新たに仮想ＰＣに割り当てることができる未使用リソースがサーバに無ければ、ユーザを変更することによってリソースが不足することが考えられる。
【０００６】
特許文献１の技術では、仮想ＰＣが必要とする、サーバのリソースの量が、例えばユーザ毎に異なる場合、サーバのリソース不足を防ぐことはできない。
【０００７】
本発明の主な目的は、使用するリソースが必ずしも同一でない仮想計算機を実行するサーバがリソース不足になることなく、仮想計算機へのログオン時における処理による負荷を削減することができる仮想計算機管理装置を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の仮想計算機管理装置は、仮想計算機記憶手段に仮想計算機を退避させることができる実行装置が実行する仮想計算機に関して、当該仮想計算機が使用するリソース量と、前記仮想計算機の優先順位とを記憶する状態記憶手段と、前記仮想計算機のうち接続先仮想計算機への接続要求を受信する要求受信手段と、前記実行装置において検出された未使用リソース量と、前記仮想計算機記憶手段に退避させられている前記接続先仮想計算機が使用するリソース量とに基づき、前記接続先仮想計算機を復帰させた場合の不足リソース量を特定する不足特定手段と、前記優先順位に基づき、退避させられていない前記仮想計算機から選択仮想計算機を、前記選択仮想計算機が使用する前記リソース量の合計が前記不足リソースより大きくなるように選択する選択手段と、を備える。
【０００９】
本発明の仮想計算機管理方法は、仮想計算機記憶手段に仮想計算機を退避させることができる実行装置が実行する仮想計算機に関して、当該仮想計算機が使用するリソース量と、前記仮想計算機の優先順位とを状態記憶手段に記憶し、前記仮想計算機のうち接続先仮想計算機への接続要求を受信する要求受信手段と、前記実行装置において検出された未使用リソース量と、前記仮想計算機記憶手段に退避させられている前記接続先仮想計算機が使用するリソース量とに基づき、前記接続先仮想計算機を復帰させた場合の不足リソース量を特定し、前記優先順位に基づき、退避させられていない前記仮想計算機から選択仮想計算機を、前記選択仮想計算機が使用する前記リソース量の合計が前記不足リソースより大きくなるように選択する。
【００１０】
本発明の仮想計算機管理プログラムは、コンピュータを、仮想計算機記憶手段に仮想計算機を退避させることができる実行装置が実行する仮想計算機に関して、当該仮想計算機が使用するリソース量と、前記仮想計算機の優先順位とを記憶する状態記憶手段と、前記仮想計算機のうち接続先仮想計算機への接続要求を受信する要求受信手段と、前記実行装置において検出された未使用リソース量と、前記仮想計算機記憶手段に退避させられている前記接続先仮想計算機が使用するリソース量とに基づき、前記接続先仮想計算機を復帰させた場合の不足リソース量を特定する不足特定手段と、前記優先順位に基づき、退避させられていない前記仮想計算機から選択仮想計算機を、前記選択仮想計算機が使用する前記リソース量の合計が前記不足リソースより大きくなるように選択する選択手段と、して動作させる。
【発明の効果】
【００１１】
本発明には、必要とするリソースが必ずしも同一でない仮想計算機を実行するサーバがリソース不足になることなく、仮想計算機へのログオン時における処理による負荷を削減することができるという効果がある。
【図面の簡単な説明】
【００１２】
【図１】図１は、第１の実施形態の情報処理システム１００の構成の例を表すブロック図である。
【図２】図２は、第１の実施形態の情報処理システム１００Ａの構成の例を表すブロック図である。
【図３】図３は、状態記憶部１０が記憶する状態テーブルの例を表す図である。
【図４】図４は、状態記憶部１０が記憶する状態テーブルにおける使用リソース量の部分の例を表す図である。
【図５】図５は、状態記憶部１０に格納されるユーザ優先順位の例を表す図である。
【図６】図６は、状態記憶部１０に格納される、ユーザの接続に関するデータ値の例を表す図である。
【図７】図７は、第１の実施形態の仮想計算機管理装置１の動作の例を表すフローチャートである。
【図８】図８は、第１の実施形態の仮想計算機実行装置２の動作の例を表すフローチャートである。
【図９】図９は、第１の実施形態の仮想計算機２０の構成の例を表すブロック図である。
【図１０】図１０は、第１の実施形態の仮想計算機２０の機能構成の例を表すブロック図である。
【図１１】図１１は、第１の実施形態の仮想計算機２０の機能構成の例を表すブロック図である。
【図１２】図１２は、ログオフ要求受信時における仮想計算機２０の動作の例を表すフローチャートである。
【図１３】図１３は、第２の実施形態の仮想計算機管理装置１Ａの構成を表す図である。
【図１４】図１４は、仮想計算機管理装置１、仮想計算機管理装置１Ａ、仮想計算機実行装置２、仮想計算機実行装置２Ａを実現することができる、コンピュータ１０００の構成の一例を表す図である。
【発明を実施するための形態】
【００１３】
次に、本発明の実施の形態について説明する。
【００１４】
＜第１の実施形態＞
まず、本発明の第１の実施形態について、図面を参照して詳細に説明する。
【００１５】
図１は、本実施形態の情報処理システム１００の構成の例を表すブロック図である。
【００１６】
図１を参照すると、情報処理システム１００は、仮想計算機管理装置１と、仮想計算機実行装置２と、端末装置３と、ユーザ管理装置４とを含む。情報処理装置１００は、複数の端末装置３を含んでいてもよい。仮想計算機管理装置１と、仮想計算機実行装置２と、ユーザ管理装置４とは、互いに接続されている。端末装置３は、仮想計算機管理装置１及び仮想計算機実行装置２に接続されている。なお、仮想計算機管理装置１、仮想計算機実行装置２、及びユーザ管理装置４のいずれか２台以上が、同一の装置であってもよい。例えば、仮想計算機実行装置２が、仮想計算機管理装置１を含むことによって、仮想計算機管理装置１として動作してもよい。本発明の各実施形態の説明における、仮想計算機実行装置２及び仮想計算機実行装置２Ａは、単に、実行装置とも表記される。
【００１７】
図２は、本実施形態の情報処理システム１００Ａの構成の例を表すブロック図である。情報処理システム１００Ａでは、仮想計算機実行装置２が、仮想計算機管理装置１及びユーザ管理装置４を含む。他の点では、情報処理システム１００Ａは、情報処理システム１００と同じである。
【００１８】
仮想計算機管理装置１は、状態記憶部１０と、要求受信部１１と、不足特定部１２と、選択部１３と、優先順位決定部１４と、出力部１５とを含む。
【００１９】
仮想計算機実行装置２は、仮想計算機２０を実行する仮想計算機実行部２１と、退避部２２と、仮想計算機記憶部２３と、状態取得部２４と、要求実行部２５と、状態送信部２６とを含む。
【００２０】
ユーザ管理装置４は、ログ記憶部４０と、認証部４１とを含む。
【００２１】
仮想計算機２０は、仮想計算機実行装置２においてエミュレートされる仮想的なコンピュータである。仮想計算機２０は、一般に、仮想機械あるいはバーチャルマシンとも呼ばれる。仮想計算機２０がエミュレートされたＰＣである場合、仮想計算機２０は、仮想ＰＣとも呼ばれる。
【００２２】
仮想計算機実行部２１は、仮想計算機２０を実行する。すなわち、仮想計算機実行部２１は、仮想計算機２０をエミュレートする。仮想計算機実行部２１は、例えば、仮想計算機実行装置２１のプロセッサと、そのプロセッサが実行する、仮想計算機２０を実現するための制御プログラムによって実現される。そのような仮想計算機実行部２１は、一般に、ハイパーバイザと呼ばれる。
【００２３】
仮想計算機実行装置２において仮想計算機２０が動作している場合、その仮想計算機２０に対して、その仮想計算機２０がコンピュータとして動作するために使用するメモリが、仮想計算機実行装置２のメモリから割り当てられる。
【００２４】
退避部２２は、退避指示と、退避の対象である仮想計算機２０の識別子とを受信すると、その仮想計算機２０に対して、退避処理を行う。すなわち、退避部２２は、その仮想計算機２０に割り当てられているメモリにロードされているデータを、その仮想計算機２０に関連付けて仮想計算機記憶部２３に格納する。さらに、退避部２２は、退避が行われた仮想計算機２０に割り当てられていたメモリを解放する。退避処理は、例えば、以上の、仮想計算機実行装置２のメモリにロードされていた仮想計算機２０のデータを仮想計算機記憶部２３に格納し、その仮想計算機２０に割り当てられていたメモリを解放する処理である。以下の説明において、仮想計算機２０に対して退避処理を行うことを、「仮想計算機２０を退避させる」とも表記することにする。
【００２５】
退避部２２は、さらに、復帰指示と、復帰の対象である仮想計算機２０の識別子とを受信すると、その仮想計算機２０に対して復帰処理を行う。すなわち、退避部２２は、まず、復帰の対象である仮想計算機２０がコンピュータとして動作するために使用するメモリを、仮想計算機実行装置２のメモリにおいて確保する。そして、退避部２２は、仮想計算機記憶部２３に格納されている、復帰の対象である仮想計算機２０のデータを、確保したメモリに再びロードする。復帰処理は、例えば、以上の、復帰の対象である仮想計算機２０が使用するメモリを確保する処理と、その仮想計算機２０のデータを確保したメモリにロードする処理である。以下の説明では、仮想計算機２０に対して復帰処理を行うことを、「仮想計算機２０を復帰させる」とも表記することにする。
【００２６】
仮想計算機記憶部２３は、仮想計算機実行装置２のメモリにロードされていた仮想計算機２０のデータを記憶する。以下の説明において、仮想計算機実行装置２のメモリにロードされていた仮想計算機２０のデータを記憶することを、「仮想計算機２０を記憶する」とも表記することにする。
【００２７】
状態取得部２４は、さらに、仮想計算機実行装置２の未使用リソースの量を特定する。未使用リソースは、どの仮想計算機２０にも割り当てられていない、いずれかの仮想計算機２０に割り当てることができる仮想計算機実行装置２のリソースである。リソースは、例えば、メモリ、プロセッサ、ネットワーク帯域、ストレージなどである。状態取得部２４は、未使用リソースの量を、例えば、仮想計算機実行部２１から受信してもよい。そして、状態取得部２４は、特定した未使用リソースの量を、状態送信部２６に送信する。
【００２８】
要求実行部２５は、退避させる仮想計算機２０として選択部１３が選択した仮想計算機２０である選択仮想計算機の、識別子を受信する。要求実行部２５は、退避指示と、受信した選択仮想計算機の識別子とを、退避部２２に送信する。退避指示と、受信した選択仮想計算機の識別子と受信した退避部２２は、選択仮想計算機を退避させる。選択仮想計算機がいずれかの端末装置３と接続されている場合、要求実行部２５は、選択仮想計算機に、退避準備指示を送信してもよい。各仮想計算機２０は、退避準備指示を受信した場合、端末装置３との接続を切断するよう設計されていればよい。
【００２９】
要求実行部２５は、さらに、端末装置３の識別子と、端末装置３が送信した接続要求における接続先の仮想計算機２０である接続先仮想計算機の識別子とを受信する。接続先仮想計算機が退避させられている場合、要求実行部２５は、復帰指示と、接続先仮想計算機の識別子とを、退避部２２に送信する。復帰指示と、接続先仮想計算機の識別子とを受信した退避部２２は、接続先仮想計算機を復帰させる。
【００３０】
要求実行部２５は、さらに、端末装置３と接続先仮想計算機とを接続する。要求実行部２５は、例えば、接続要求を送信した端末装置３に、接続先仮想計算機の識別子を送信することによって、端末装置３と接続先仮想計算機とを接続すればよい。接続先仮想計算機の識別子を受信した端末装置３は、接続先仮想計算機に接続する。
【００３１】
状態送信部２６は、状態取得部２４が特定した、仮想計算機実行装置２の未使用リソースの量を、仮想計算機管理装置１の状態受信部１６に送信する。
【００３２】
状態送信部２６は、さらに、各仮想計算機２０の状態を、仮想計算機管理装置１の状態受信部１６に送信する。仮想計算機２０の状態は、例えば、仮想計算機２０の「接続状態」と、仮想計算機２０の「場所」を含む。仮想計算機２０の状態は、仮想計算機２０の使用リソース量を含んでいてもよい。仮想計算機２０の状態は、仮想計算機２０の動作状態を含んでいてもよい。仮想計算機２０の状態は、さらに、その仮想計算機２０に関連付けられている「ユーザＩＤ（Ｉｄｅｎｔｉｆｉｅｒ）」を含む。ただし、状態送信部２６は、「ユーザＩＤ」を送信しなくてよい。「ユーザＩＤ」は、ユーザの識別子である。仮想計算機２０にユーザＩＤが関連付けられているユーザは、例えば、その仮想計算機２０が割り当てられているユーザである。以下の説明において、仮想計算機２０にユーザのユーザＩＤが関連付けられていることを、「仮想計算機２０にユーザが関連付けられている」とも表記することにする。なお、本実施形態では、一つの仮想計算機２０とユーザは一対一で関連付けられている。しかし、一つの仮想計算機２０に複数のユーザが関連付けられていてもよい。また、一人のユーザが複数の仮想計算機２０に関連付けられていてもよい。
【００３３】
仮想計算機２０の「接続状態」は、例えば、仮想計算機２０とその仮想計算機２０に関連付けられているユーザが使用する端末装置３との間の接続の状態を表す。仮想計算機２０の接続状態は、例えば、「切断」、「接続」、あるいは「未使用」である。「切断」、「接続」、及び「未使用」は、あらかじめ定められた異なる値であればよい。「切断」は、仮想計算機２０とその仮想計算機２０に関連付けられているユーザが使用する端末装置３との間の接続が、切断されていることを表す。「接続」は、仮想計算機２０とその仮想計算機２０に関連付けられているユーザが使用する端末装置３との間が、接続されていることを表す。「未使用」は、仮想計算機２０に関連付けられているユーザがいないことを表す。
【００３４】
例えば、端末装置３が仮想計算機２０に接続した場合に、その仮想計算機２０の接続状態は変化する。例えば、端末装置３が仮想計算機２０に対する接続を切断した場合、その仮想計算機２０の接続状態は変化する。また、例えば、要求実行部２５が、端末装置３に接続されている仮想計算機２０に、退避準備指示を送信した場合にも、その仮想計算機２０の接続状態は変化する。
【００３５】
仮想計算機２０の接続状態が変化した場合、例えば、接続状態が変化した仮想計算機２０が、接続状態を、例えば状態取得部２４に送信すればよい。状態取得部２４は、いずれかの仮想計算機２０から接続状態を受信した場合、その接続状態を送信した仮想計算機２０に関連付けて、受信した接続状態を状態送信部２６に送信すればよい。後述されるように、状態送信部２６は、受信した、仮想計算機２０に関連付けられた接続状態を、状態受信部１６に送信する。仮想計算機２０に関連付けられた接続状態を受信した状態受信部１６は、状態記憶部１０に格納されている、その仮想計算機２０の接続状態を更新する。すなわち、仮想計算機２０から接続状態を受信した状態取得部２４は、状態送信部２６及び状態受信部１６を介して、状態記憶部１０に格納されている、その仮想計算機２０の接続状態を更新する。
【００３６】
仮想計算機２０の「場所」は、仮想計算機２０がコンピュータとして動作するために使用するメモリにロードされるデータが存在する場所を表す。仮想計算機２０が退避させられていない場合、仮想計算機２０がコンピュータとして動作するために使用するメモリにロードされるデータは、仮想計算機実行装置２のメモリに存在する。その場合、仮想計算機２０の「場所」の値は、例えば「メモリ」である。仮想計算機２０が退避させられている場合、仮想計算機２０がコンピュータとして動作するために使用するメモリにロードされるデータは、仮想計算機記憶部２３に格納されている。その場合、仮想計算機２０の「場所」の値は、例えば「ディスク」である。このように、仮想計算機２０の「場所」は、例えば、「メモリ」又は「ディスク」である。「メモリ」及び「ディスク」は、あらかじめ定められた互いに異なる値であればよい。
【００３７】
例えば退避部２２が、仮想計算機２０を退避させた場合及び仮想計算機２０を復帰させた場合に、退避又は復帰が行われた仮想計算機２０の「場所」を状態送信部２６に送信すればよい。仮想計算機２０の「場所」を受信した状態送信部２６は、受信した、仮想計算機２０の「場所」を、状態受信部１６に送信する。後述されるように、仮想計算機２０の「場所」を状態受信部１６は、状態記憶部１０に格納されている、その仮想計算機２０の「場所」を更新する。
【００３８】
使用リソース量は、仮想計算機実行装置２のリソースのうち、その仮想計算機２０が使用しているリソースの量である。仮想計算機実行装置２は、仮想計算機２０が使用するリソースの量は、あらかじめ定められた複数の量のいずれかから選択するよう設定されていてもよい。その場合、あらかじめ定められた量を表す値のいずれかであればよい。
【００３９】
例えば、仮想計算機実行部２１が、各仮想計算機２０のリソース量を特定すればよい。仮想計算機実行部２１は、特定した各仮想計算機２０のリソース量を、状態取得部２４に送信すればよい。そして、状態取得部２４は、特定した各仮想計算機２０のリソース量を、状態送信部２６に送信すればよい。仮想計算機２０のリソース量を受信した状態送信部２６は、受信したリソース量を、そのリソース量のリソースを使用する仮想計算機２０に関連付けて状態受信部１６に送信すればよい。状態受信部１６は、状態記憶部１０に格納されている使用リソース量を更新すればよい。各仮想計算機２０の使用リソース量は、あらかじめ定められていてもよい。その場合、例えば仮想計算機実行装置２の管理者が、各仮想計算機２０の使用リソース量を、あらかじめ状態記憶部１０に格納しておけばよい。
【００４０】
動作状態は、例えば、「アイドル状態」及び「処理中」である。動作状態は、例えば、仮想計算機２０に接続されている端末装置３のユーザによる、その仮想計算機２０に対する操作が、継続しているか否かを表す。「アイドル状態」は、例えば、所定時間以上仮想計算機２０に対するユーザの操作が無いことを表す。「処理中」は、例えば、過去所定時間以内に仮想計算機２０に対するユーザの操作があったことを表す。動作状態は、他の定義によって定められていてもよい。
【００４１】
例えば、仮想計算機実行部２１が、各仮想計算機２０の動作状態を特定すればよい。仮想計算機実行部２１は、特定した各仮想計算機２０の動作状態を、状態送信部２６に送信すればよい。あるいは、状態取得部２４が、各仮想計算機２０から動作状態を取得してもよい。その場合、例えば各仮想計算機２０が、状態取得部２４に動作状態を送信すればよい。そして、状態取得部２４が、各仮想計算機２０の動作状態を、状態送信部２６に送信すればよい。
【００４２】
次に、ユーザ管理装置４について説明する。
【００４３】
認証部４１は、端末装置３が仮想計算機２０に接続する場合に、例えば仮想計算機２０からの要求に基づき、端末装置３を使用するユーザの認証を行う。認証部４１は、ユーザが未使用であった仮想計算機２０を使用し始める場合だけでなく、端末装置３が、接続が切断されている仮想計算機２０に再接続する場合にも、ユーザの認証を行う。
【００４４】
そして、認証部４１は、行った認証に関する記録、すなわち認証記録をログ記憶部４０に格納する。認証記録は、例えば、認証が行われたユーザのユーザＩＤと認証が行われた時間情報を含む。時間情報は、例えば、日付、時間、曜日などを含んでいればよい。認証記録は、認証が行われた仮想計算機２０の仮想計算機ＩＤを含んでいてもよい。
【００４５】
認証の結果が成功であった場合、ユーザが使用する端末装置３は、仮想計算機２０に接続する。従って、結果が成功であった認証に関する記録は、仮想計算機２０に対する接続の記録である。認証部４１は、認証の結果が成功であった場合にのみ、上述の認証記録を、ログ記憶部４０に格納してもよい。あるいは、認証部４１は、認証の結果をさらに含む、上述の認証記録を、ログ記憶部４０に格納してもよい。
【００４６】
認証部４１は、さらに、ユーザの認証が行われた後、そのユーザが使用する端末装置３と仮想計算機２０との間の接続が切断された時刻を、ログ記憶部４０に格納してもよい。その場合、端末装置３によって接続が切断された仮想計算機２０は、例えば、接続を切断した端末装置３のユーザのユーザＩＤと切断が行われた時刻とを認証部４１に送信すればよい。そして、認証部４１は、例えば、受信したユーザＩＤ及び時刻と、そのユーザＩＤ及び時刻を送信した仮想計算機２０の仮想計算機ＩＤとに基づき、どの認証の結果に基づき行われた接続が切断されたか特定すればよい。認証部４１は、特定した認証の認証記録として、接続が切断された時刻をログ記憶部４０に格納すればよい。
【００４７】
ログ記憶部４０は、上述の認証記録を記憶する。上述のように、結果が成功であった認証に関する記録は、仮想計算機２０に対する接続の記録である。また、端末装置３が仮想計算機２０に接続された場合、端末装置３のユーザは、仮想計算機２０を利用する。従って、上述の認証記録は、ユーザによる仮想計算機２０の利用記録でもある。認証記録が、認証が行われた時刻と、接続が切断された時刻とを含む場合、それらの時刻に基づきユーザが仮想計算機２０を利用していた時間帯を特定することができる。
【００４８】
次に、仮想計算機管理装置１について説明する。
【００４９】
状態記憶部１０は、各仮想計算機２０の状態を、仮想計算機２０の識別子である仮想計算機ＩＤに関連付けて記憶する。状態記憶部１０は、各仮想計算機２０の状態を、各仮想計算機２０の状態を含むテーブルである状態テーブルの形で記憶していてもよい。
【００５０】
前述のように、仮想計算機２０の状態は、例えば、その仮想計算機２０に関連付けられているユーザの識別子である「ユーザＩＤ」と、仮想計算機２０の「接続状態」と、仮想計算機２０の「場所」を含む。仮想計算機２０の状態は、仮想計算機２０の「使用リソース量」を含んでいてもよい。仮想計算機２０の状態は、仮想計算機２０の「動作状態」を含んでいてもよい。仮想計算機２０の状態は、さらに、仮想計算機２０の優先順位を含む。仮想計算機２０の優先順位は、後述されるように、優先順位決定部１４によって決定される。
【００５１】
図３は、状態記憶部１０が記憶する状態テーブルの例を表す図である。図３に示す例では、状態テーブルは、仮想計算機ＩＤと、ユーザＩＤと、接続状態と、使用リソース量と、動作状態と、場所と、優先順位とを含む。図３に示す例では、使用リソース量は、「高」と「低」の２つの状態値によって表される。その場合、それぞれの状態値は、リソースの種類及びリソースの量を表す数値の組み合わせ一つ以上に、関連付けられていればよい。
【００５２】
図４は、状態記憶部１０が記憶する状態テーブルにおける使用リソース量の部分の例を表す図である。図４に示す例では、使用リソース量は、メモリの容量及びプロセッサの数によって表されている。使用リソース量は、例えば、メモリの容量だけによって表されていてもよい。
【００５３】
状態受信部１６は、状態送信部２６が送信する上述の各仮想計算機２０の状態を受信する。状態受信部１６は、受信した各仮想計算機２０の状態を、状態記憶部１０に格納する。状態受信部１６は、前述の状態テーブルを更新すればよい。
【００５４】
状態受信部１６は、さらに、状態送信部２６から、仮想計算機実行装置２の状態を受信する。状態受信部１６が受信する仮想計算機実行装置２の状態は、上述の、未使用リソースの量である。状態受信部１６は未使用リソースの量を不足特定部１２に送信する。
【００５５】
優先順位決定部１４は、ログ記憶部４０に格納されている、仮想計算機２０に対して行われた接続の記録に基づき、各仮想計算機２０の優先順位を決定する。優先順位決定部１４は、仮想計算機２０に対して決定した優先順位を、その仮想計算機２０に関連付けて状態記憶部１０に格納する。
【００５６】
前述のように、本実施形態では、仮想計算機２０とユーザは、一対一に対応付けられている。そのため、優先順位決定部１４は、ユーザに対して決定された優先順位を、そのユーザに関連付けられている仮想計算機２０の優先順位にしてもよい。
【００５７】
その場合、優先順位決定部１４は、まず、例えば仮想計算機２０に対する接続の頻度に応じて、各ユーザの優先順位を決定すればよい。優先順位決定部１４は、例えば、接続の頻度が多いユーザほど優先順位が高くなるように、各ユーザの優先順位を決定する。接続の頻度は、例えば、過去の一定期間において集計された、ユーザ毎の接続の回数である。接続の頻度は、例えば、過去の一定期間において曜日別に集計された、ユーザ毎の接続の回数であってもよい。接続の頻度は、例えば、過去の一定期間において時間帯別に集計された、ユーザ毎の接続の回数であってもよい。接続の頻度は、例えば、過去の一定期間において時間帯別に集計された、ユーザ毎の、ユーザが仮想計算機２０を利用していた回数であってもよい。
【００５８】
そして、優先順位決定部１４は、仮想計算機２０の優先順位がその仮想計算機２０に関連付けられているユーザの優先順位に等しくなるように、各仮想計算機２０の優先順位を決定すればよい。
【００５９】
一方、情報処理システム１００が、仮想計算機２０とユーザが必ずしも一対一で関連付けられないよう設計されている場合もある。
【００６０】
そのような場合、優先順位決定部１４は、例えば、過去の一定期間において仮想計算機２０毎に集計された、仮想計算機２０に対する接続の頻度に基づき、仮想計算機２０の優先順位を決定すればよい。優先順位決定部１４は、例えば、接続の頻度が多い仮想計算機２０ほど優先順位が高くなるよう、各仮想計算機２０の優先順位を決定すればよい。接続の頻度は、例えば、過去の一定期間において曜日別に集計された、仮想計算機２０毎の接続の回数であってもよい。接続の頻度は、例えば、過去の一定期間において時間帯別に集計された、仮想計算機２０毎の接続の回数であってもよい。接続の頻度は、例えば、過去の一定期間において時間帯別に集計された、仮想計算機２０毎の、仮想計算機２０を利用していたユーザの人数であってもよい。
【００６１】
優先順位が曜日によって異なる場合、優先順位決定部１４は、曜日が変わるのに応じて優先順位を決定し、決定した優先順位を状態記憶部１０に格納すればよい。優先順位が時間帯によって異なる場合、優先順位決定部１４は、時間帯が変わるのに応じて優先順位を決定し、決定した優先順位を状態記憶部１０に格納すればよい。
【００６２】
優先順位決定部１４は、ユーザに対して決定された優先順位であるユーザ優先順位を、状態記憶部１０に格納してもよい。
【００６３】
図５は、状態記憶部１０に格納されるユーザ優先順位の例を表す図である。
【００６４】
優先順位決定部１４は、さらに、ユーザ優先順位を決定する過程において集計した集計値などのユーザの接続に関するデータ値を、ユーザ優先順位を決定するために使用したデータ値を、状態記憶部１０に格納してもよい。
【００６５】
図６は、状態記憶部１０に格納される、ユーザの接続に関するデータ値の例を表す図である。図６に示す例では、状態記憶部１０に格納されるデータ値は、ユーザ優先順位を決定する日の前の週における、各ユーザのログオンの有無と、各日のログオン回数とを含む。
【００６６】
要求受信部１１は、端末装置３から、仮想計算機２０に対する接続要求を受信する。要求受信部１１は、受信した接続要求によって接続を要求された仮想計算機２０である、接続先仮想計算機を特定する。接続情報は、接続先仮想計算機を特定できるデータ値を含んでいればよい。
【００６７】
接続先仮想計算機を特定できるデータ値は、例えば、ユーザＩＤであってもよい。その場合、要求受信部１１は、例えば、接続要求に含まれるユーザＩＤに関連付けられている仮想計算機２０を、接続先仮想計算機として特定する。この場合、接続要求に含まれるユーザＩＤに関連付けられている仮想計算機２０が存在しなければ、要求受信部１１は、例えば、未使用である仮想計算機２０のいずれかを、接続先仮想計算機として選択する。その際、要求受信部１１は、「場所」が「メモリ」である仮想計算機２０から接続先仮想計算機を選択すればよい。「場所」が「メモリ」である仮想計算機２０が存在しなければ、要求受信部１１は、「場所」が「ディスク」である仮想計算機２０から接続先仮想計算機を選択すればよい。
【００６８】
接続要求は、ユーザＩＤと仮想計算機ＩＤの双方を含んでいてもよい。その場合、要求受信部１１は、接続要求に含まれる仮想計算機ＩＤによって特定される仮想計算機２０を接続先仮想計算機として選択すればよい。接続要求に含まれる仮想計算機ＩＤによって特定される仮想計算機２０が存在しない場合、要求受信部１１は、未使用である仮想計算機２０のいずれかを、接続先仮想計算機として前述のように選択すればよい。
【００６９】
要求受信部１１は、未使用である仮想計算機２０のいずれかを接続先仮想計算機として選択した場合、ユーザＩＤを、選択した接続先仮想計算機に関連付けて、状態記憶部１０に格納する。要求受信部１１は、例えば、状態記憶部１０に格納されている状態テーブルにおいて、選択した接続先仮想計算機に関連付けられているユーザＩＤを更新すればよい。
【００７０】
不足特定部１２は、受信した未使用リソースの量と、状態記憶部１０に格納されている、接続先仮想計算機の使用リソース量とに基づき、不足リソース量を特定する。不足リソース量は、接続先仮想計算機以外の各仮想計算機２０のデータが存在する「場所」を変更せずに、接続先仮想計算機を動作させた場合に不足する、仮想計算機実行装置２のリソースの量である。例えば、接続先仮想計算機が退避させられている場合に、接続先仮想計算機を復帰させると、接続先仮想計算機が使用するリソースを新たに接続先仮想計算機にわりあてる必要がある。接続先仮想計算機の使用リソース量が、未使用リソース量より少ない場合、未使用リソースから接続先仮想計算機が使用するリソースを割り当てることができる。従って、不足リソース量はゼロである。一方、接続先仮想計算機の使用リソース量が、未使用リソース量より多い場合、接続先仮想計算機の使用リソース量から未使用リソース量を引いた量のリソースが不足する。接続先仮想計算機の「場所」が「メモリ」であれば、接続先仮想計算機は退避させられていない。従って、接続先仮想計算機を復帰させる必要はない。よって、接続先仮想計算機に新たにリソースを割り当てる必要はない。そのため、不足リソース量はゼロである。
【００７１】
選択部１３は、不足リソース量がゼロでない場合、各仮想計算機２０の優先順位に基づき、退避させる仮想計算機２０を選択する。上述のように、選択部１３によって選択される仮想計算機２０が、選択仮想計算機と表記である。
【００７２】
選択部１３は、仮想計算機２０の接続状態や動作状態に基づき、選択仮想計算機の使用リソース量の合計が、不足リソース量を上回るように、「場所」が「メモリ」である仮想計算機２０の中から１台以上の選択仮想計算機を選択すればよい。
【００７３】
選択部１３は、仮想計算機２０の接続状態や動作状態に基づき、各仮想計算機２０に、状態順位を付与してもよい。そして、選択部１３は、状態順位を更に使用して、選択仮想計算機を選択してもよい。状態順位は、例えば、仮想計算機２０が退避された場合に、その仮想計算機２０に関連付けられているユーザが受ける影響の大きさの程度を表す順位である。選択部１３は、例えば下記の方法で、仮想計算機２０に状態順位を付与してもよい。選択部１３は、他の方法で、仮想計算機２０に状態順位を付与してもよい。
【００７４】
例えば、仮想計算機２０の接続状態が「未使用」である場合、その仮想計算機２０に関連付けられているユーザは存在しない。従って、接続状態が「未使用」である仮想計算機２０が退避されても、ユーザは影響を受けない。選択部１３は、接続状態が「未使用」である仮想計算機２０に、最も低い状態順位を付与すればよい。
【００７５】
接続状態が「接続」である仮想計算機２０のユーザは、端末装置３を介して仮想計算機２０において操作を継続している可能性がある。一方、接続状態が「切断」である仮想計算機２０は端末装置３に接続されていない。そのため、接続状態が「切断」である仮想計算機２０のユーザが、端末装置３を介して仮想計算機２０において操作を継続している可能性はない。従って、仮想計算機２０を退避させた場合におけるユーザの影響は、接続状態が「切断」である仮想計算機２０と比べて、接続状態が「接続」である仮想計算機２０の方が大きい。選択部１３は、接続状態が「切断」である仮想計算機２０に対して、接続状態が「接続」である仮想計算機２０の状態順位より低い状態順位を付与すればよい。
【００７６】
また、動作状態が「処理中」である仮想計算機２０のユーザは、仮想計算機２０において操作を継続している。一方、動作状態が「アイドル状態」である仮想計算機２０のユーザは、少なくとも所定時間以上、仮想計算機２０において操作を行っていない。従って、仮想計算機２０を退避させた場合におけるユーザの影響は、動作状態が「アイドル状態」である仮想計算機２０と比べて、動作状態が「処理中」である仮想計算機２０の方が大きい。選択部１３は、動作状態が「アイドル状態」である仮想計算機２０に対して、動作状態が「処理中」である仮想計算機２０の状態順位より低い状態順位を付与すればよい。
【００７７】
選択部１３は、場所が「メモリ」である仮想計算機２０の中で、状態順位が最も低い仮想計算機２０を選択の対象とする。そして、選択部１３は、選択の対象である仮想計算機２０から、例えば以下のように、選択仮想計算機を選択する。
【００７８】
選択部１３は、選択の対象である仮想計算機２０の中で最も優先順位が低い仮想計算機２０を選択仮想計算機として選択する。最も優先順位が低い仮想計算機２０が複数存在する場合、選択部１３は、最も優先順位が低い仮想計算機２０のうちいずれかを選択する。
【００７９】
既に選択されている選択仮想計算機の使用リソース量の合計が不足リソース量より大きい場合、選択部１３は、選択仮想計算機の選択を終了する。既に選択されている選択仮想計算機の使用リソース量の合計が不足リソース量より小さい場合、選択部１３は、選択の対象である仮想計算機２０の中から、優先順位が低い順に、選択仮想計算機の選択を繰り返せばよい。
【００８０】
選択の対象である仮想計算機２０を全て選択しても、選択されている選択仮想計算機の使用リソース量の合計が不足リソース量より小さい場合、選択部１３は、選択の対象である仮想計算機２０に、状態順位が２番目に低い仮想計算機２０を追加する。選択部１３は、新たな選択の対象である仮想計算機２０から、選択仮想計算機を、上述のように選択する。
【００８１】
選択部１３は、選択されている選択仮想計算機の使用リソース量の合計が不足リソース量より大きくなるまで、選択仮想計算機の選択と選択の対象である仮想計算機２０の追加を繰り返せばよい。
【００８２】
上述のように状態順位が各仮想計算機２０に付与されている場合、選択仮想計算機は、まず、接続状態が「未使用」であり、場所が「メモリ」である仮想計算機２０から選択される。選択仮想計算機が更に選択される場合、選択仮想計算機は、次に、接続状態が「切断」であり、場所が「メモリ」である仮想計算機２０から選択される。選択仮想計算機が更に選択される場合、選択仮想計算機は、次に、接続状態が「接続」であり、動作状態が「アイドル状態」であり、場所が「メモリ」である仮想計算機２０から選択される。
【００８３】
選択部１３は、他の方法で、選択仮想計算機を選択してもよい。
【００８４】
選択部１３は、選択仮想計算機を選択した場合、選択仮想計算機の識別子を、出力部１５に送信する。また、選択部１３は、接続先仮想計算機の識別子を、出力部１５に送信する。
【００８５】
出力部１５は、選択仮想計算機の識別子を受信した場合、受信した選択仮想計算機の識別子を仮想計算機実行装置２の要求実行部２５に送信する。また、出力部１５は、接続要求を送信した端末装置３の識別子と、接続先仮想計算機の識別子とを、要求実行部２５に送信する。
【００８６】
出力部１５は、例えば選択仮想計算機の識別子に関連付けて、その選択仮想計算機が退避の対象であることを表すデータ値を、要求実行部２５に送信してもよい。要求実行部２５は、受信した仮想計算機２０の識別子に、その仮想計算機２０が退避の対象であることを表すデータ値が関連付けられている場合、その仮想計算機２０は退避の対象である選択仮想計算機であると判定すればよい。出力部１５は、接続先仮想計算機の識別子に関連付けて、その接続先仮想計算機が接続要求に基づく接続先であることを表すデータ値を、要求実行部２５に送信してもよい。要求実行部２５は、受信した仮想計算機２０の識別子に、その仮想計算機２０が接続要求に基づく接続先であることを表すデータ値であることを表すデータ値が関連付けられている場合、その仮想計算機２０は接続先仮想計算機であると判定すればよい。
【００８７】
出力部１５は、選択仮想計算機の識別子を、端末装置３の識別子に関連付けずに、要求実行部２５に送信してもよい。出力部１５は、接続先仮想計算機の識別子を、端末装置３の識別子に関連付けて、要求実行部２５に送信してもよい。そして、要求実行部２５は、受信した仮想計算機２０の識別子に端末装置３の識別子に関連付けられていない場合、その仮想計算機２０は選択仮想計算機であると判定すればよい。要求実行部２５は、受信した仮想計算機２０の識別子に端末装置３の識別子に関連付けられている場合、その仮想計算機２０は接続先仮想計算機であると判定すればよい。そして、要求実行部２５は、その識別子によって特定される端末装置３が、接続要求を送信した端末装置３であると認識すればよい。
【００８８】
なお、仮想計算機管理装置１と仮想計算機実行装置２とが同一の装置である場合、出力部１５と、状態受信部１６と、状態送信部２６とは存在しなくてもよい。その場合、選択部１３は、接続先仮想計算機の識別子と選択仮想計算機の識別子と端末装置３の識別子とを、出力部１５ではなく要求実行部２５に送信すればよい。また、退避部２２、状態取得部２４、及び仮想計算機実行部２１は、各仮想計算機２０の状態を、状態送信部２６に送信する代わりに、状態記憶部１０に書き込めばよい。さらに、状態取得部２４は、未使用リソース量を、状態送信部２６ではなく、不足特定部１２に送信すればよい。
【００８９】
次に、本実施形態の仮想計算機管理装置１の動作について、図面を参照して詳細に説明する。
【００９０】
図７は、本実施形態の仮想計算機管理装置１の動作の例を表すフローチャートである。
【００９１】
まず、要求受信部１１が、端末装置３から接続要求を受信する（ステップＳ１０１）。
【００９２】
要求受信部１１は、受信した接続要求によって接続が要求された仮想計算機２０である、接続先仮想計算機を特定する（ステップＳ１０２）。
【００９３】
選択部１３は、特定された接続先仮想計算機が動作中であるか否かを判定する（ステップＳ１０３）。選択部１３は、状態記憶部１０に格納されている状態テーブルにおいて、接続先仮想計算機の「場所」が「メモリ」であれば、接続先仮想計算機が動作中であると判定すればよい。接続先仮想計算機の「場所」が「メモリ」である場合、接続先仮想計算機は退避させられていないので、端末装置３は、そのまま接続先仮想計算機にアクセスすることができる。
【００９４】
接続先仮想計算機が動作中である場合（ステップＳ１０３においてＹｅｓ）、選択部１３は、例えば出力部１５を介して、接続先仮想計算機の識別子を、仮想計算機実行装置２に送信する（ステップＳ１０９）。
【００９５】
ステップＳ１０３において、選択部１３は、状態記憶部１０に格納されている状態テーブルにおいて、接続先仮想計算機の「場所」が「ディスク」であれば、接続先仮想計算機が動作中でないと判定すればよい。接続先仮想計算機の「場所」が「ディスク」である場合、接続先仮想計算機は退避させられている。その場合、端末装置３が接続先仮想計算機にアクセスするためには、接続先仮想計算機を復帰させる必要がある。
【００９６】
接続先仮想計算機が動作中でない場合（ステップＳ１０３においてＮｏ）、不足特定部１２は、例えば状態送信部２６及び状態受信部１６を介して、状態取得部２４から、仮想計算機実行装置２の未使用リソース量を受信する（ステップＳ１０４）。
【００９７】
不足特定部１２は、例えば、状態送信部２６及び状態受信部１６を介して、状態取得部２４に未使用リソース量を要求すればよい。状態取得部２４は、未使用リソース量の要求に応じて、未使用リソース量を取得し、取得した未使用リソース量を、例えば状態送信部２６及び状態受信部１６を介して、不足特定部１２に送信すればよい。状態取得部２４は、定期的に未使用リソース量を取得し、取得した未使用リソース量を、例えば状態送信部２６及び状態受信部１６を介して、不足特定部１２に送信してもよい。
【００９８】
不足特定部１２は、仮想計算機実行装置２が接続先仮想計算機を動作させるために不足するリソース量である、不足リソース量を特定する（ステップＳ１０５）。すなわち、不足特定部１２は、仮想計算機実行装置２が、退避させられている接続先仮想計算機を復帰させた場合に不足する仮想計算機実行装置２のリソース量を特定する。
【００９９】
不足リソース量がゼロである場合、すなわち、リソースが不足しない場合（ステップＳ１０６においてＮｏ）、仮想計算機管理装置１の動作は、ステップＳ１０９に進む。
【０１００】
不足リソース量がゼロでない場合、すなわち、リソースが不足する場合（ステップＳ１０６においてＹｅｓ）、仮想計算機管理装置１の動作は、ステップＳ１０７に進む。
【０１０１】
選択部１３は、上述のようにして、不足リソース量と、動作中の仮想計算機２０の優先順位とに基づき、退避させる仮想計算機２０を、動作中の仮想計算機２０から選択する（ステップＳ１０７）。前述のように、動作中の仮想計算機２０は、退避させられていない仮想計算機２０である。状態記憶部１０が記憶する状態テーブルにおいて、動作中の仮想計算機２０の「場所」は、「メモリ」である。前述のように、退避させる仮想計算機２０として選択された仮想計算機２０は、選択仮想計算機と表記される。
【０１０２】
選択部１３は、例えば出力部１５を介して、選択された選択仮想計算機の識別子を、仮想計算機実行装置２に送信する（ステップＳ１０８）。
【０１０３】
次に、端末装置３が仮想計算機管理装置１に接続要求を送信した場合における、本実施形態の仮想計算機実行装置２の動作について、図面を参照して詳細に説明する。
【０１０４】
図８は、本実施形態の仮想計算機実行装置２の動作の例を表すフローチャートである。端末装置３が仮想計算機管理装置１に接続要求を送信した場合、仮想計算機管理装置１が選択仮想計算機を選択していれば、仮想計算機管理装置１は選択仮想計算機の識別子を送信する。仮想計算機管理装置１は、さらに、接続先仮想計算機の識別子と、接続要求を送信した端末装置３の識別子とを送信する。
【０１０５】
まず、要求実行部２５は、仮想計算機管理装置１の選択部１３から、例えば出力部１５を介して、選択仮想計算機の識別子を受信する（ステップＳ２０１）。
【０１０６】
上述のように、仮想計算機実行装置２が接続先仮想計算機を動作させるために、動作中の仮想計算機２０のいずれかを退避させる必要がある場合、仮想計算機管理装置１は、退避させる仮想計算機２０として、選択仮想計算機を選択する。仮想計算機管理装置１が選択仮想計算機を選択していれば、仮想計算機管理装置１は選択仮想計算機の識別子を送信する。
【０１０７】
動作中の仮想計算機２０を退避させなくても接続先仮想計算機が動作する場合、仮想計算機管理装置１は、選択仮想計算機を選択しない。仮想計算機管理装置１が選択仮想計算機を選択していなければ、仮想計算機管理装置１は選択仮想計算機の識別子を送信しない。
【０１０８】
要求実行部２５が選択仮想計算機の識別子を受信しなかった場合（ステップＳ２０２においてＮｏ）、仮想計算機実行装置２の動作は、ステップＳ２０４に進む。
【０１０９】
要求実行部２５が選択仮想計算機の識別子を受信した場合（ステップＳ２０２においてＹｅｓ）、要求実行部２５は、退避部２２に、退避指示と選択仮想計算機の識別子とを送信する。
【０１１０】
退避指示と選択仮想計算機の識別子とを受信した退避部２２は、選択仮想計算機を仮想計算機記憶部２３に退避させる（ステップＳ２０３）。仮想計算機実行装置２の動作は、ステップＳ２０３の後、ステップＳ２０４に進む。
【０１１１】
ステップＳ２０４において、要求実行部２５は、接続先仮想計算機の識別子と、端末装置３の識別子とを受信する（ステップＳ２０４）。
【０１１２】
接続先仮想計算機が仮想計算機記憶部２３に退避させられている場合（ステップＳ２０５においてＹｅｓ）、要求実行部２５は、退避部２２に、復帰指示と接続先仮想計算機の識別子とを送信する。
【０１１３】
復帰指示と接続先仮想計算機の識別子とを受信した退避部２２は、接続先仮想計算機を復帰させる（ステップＳ２０６）。仮想計算機実行装置２の動作は、ステップＳ２０６の後、ステップＳ２０７に進む。
【０１１４】
接続先仮想計算機が仮想計算機記憶部２３に退避させられていない場合（ステップＳ２０５においてＮｏ）、仮想計算機実行装置２の動作は、ステップＳ２０７に進む。
【０１１５】
ステップＳ２０７において、要求実行部２５は、接続要求を受信した端末装置３と接続先仮想計算機とを接続する（ステップＳ２０７）。
【０１１６】
要求実行部２５は、例えば、接続要求を受信した端末装置３に接続先仮想計算機の識別子を送信することによって、接続要求を受信した端末装置３と接続先仮想計算機とを接続すればよい。仮想計算機２０の識別子を受信した端末装置３は、その仮想計算機２０に接続すればよい。
【０１１７】
次に、仮想計算機２０について、図面を参照して詳細に説明する。
【０１１８】
図９は、本実施形態の仮想計算機２０の構成の例を表すブロック図である。図９を参照すると、仮想計算機２０では、ゲストＯＳ２０２が動作している。ゲストＯＳ２０２は、仮想計算機２０のＯＳである。また、仮想計算機２０において、エージェント２０１が動作している。エージェント２０１は、ゲストＯＳ２０２の制御下で動作するとソフトウェアソフトウェアである。仮想計算機２０において、仮想計算機２０を使用するユーザが起動したアプリケーションプログラムが動作していてもよい。エージェント２０１は、以下で述べるログオフ検出部２０３と、切断部２０４と、通知部２０５として動作する。
【０１１９】
図１０は、本実施形態の仮想計算機２０の機能構成の例を表すブロック図である。図１０には、さらに、仮想計算機管理装置１と、仮想計算機実行装置２と、端末装置３と、端末装置３が描かれている。ただし、図１０では、状態記憶部１０及び状態受信部１６以外の仮想計算機管理装置１の構成要素は省略されている。さらに、仮想計算機２０と、状態取得部２４と、状態送信部２６以外の仮想計算機実行装置２の構成要素は省略されている。
【０１２０】
図１０を参照すると、仮想計算機２０は、ログオフ検出部２０３と、通信切断部２０４と、通知部２０５とを含む。
【０１２１】
ログオフ検出部２０３は、端末装置３が仮想計算機２０に送信するログオフ要求を検出する。
【０１２２】
切断部２０４は、端末装置３が仮想計算機２０に送信したログオフ要求が検出されると、仮想計算機２０と端末装置３との間の接続を切断する。
【０１２３】
通知部２０５は、仮想計算機２０と端末装置３との間の接続が切断された場合、状態取得部２４に対して、仮想計算機２０と端末装置３との間の接続が切断されたことを通知する。
【０１２４】
前述のように、仮想計算機２０と端末装置３との間の接続が切断されたことを受信した状態取得部２４は、状態送信部２６及び状態受信部１６を介して、状態記憶部１０に格納されている、その仮想計算機２０の接続状態を更新する。
【０１２５】
図１１は、本実施形態の仮想計算機２０の機能構成の例を表すブロック図である。図１１に示す例では、仮想計算機管理装置１は、仮想計算機実行装置２に含まれている。
【０１２６】
仮想計算機管理装置１が仮想計算機実行装置２に含まれている場合、仮想計算機２０と端末装置３との間の接続が切断されたことを受信した状態取得部２４は、状態記憶部１０に格納されている、その仮想計算機２０の接続状態を、直接更新してもよい。
【０１２７】
次に、仮想計算機２０がログオフ要求を受信する際の、仮想計算機２０の動作について、図面を参照して詳細に説明する。
【０１２８】
図１２は、ログオフ要求受信時における仮想計算機２０の動作の例を表すフローチャートである。
【０１２９】
まず、ログオフ検出部２０３が、端末装置３から送信されるログオフ要求を検出する（ステップＳ３０１）。ログオフ要求が検出されない場合（ステップＳ３０２においてＮｏ）、ログオフ検出部２０３はログオフ要求の検出を継続する（ステップＳ３０１）。
【０１３０】
ログオフ要求が検出された場合（ステップＳ３０２においてＹｅｓ）、切断部２０４は、仮想計算機２０と端末装置３との間の接続を切断する（ステップＳ３０３）。端末装置３がログオフ要求を送信しても、仮想計算機２０はログオフの処理を行わない。
【０１３１】
仮想計算機２０と端末装置３との間の接続が切断されると、通知部２０５は、状態取得部２４に対して、仮想計算機２０と端末装置３との間の接続が切断されたことを通知する（ステップＳ３０４）。
【０１３２】
仮想計算機２０と端末装置３との間の接続が切断されたことを受信した状態取得部２４は、状態送信部２６及び状態受信部１６を介して、状態記憶部１０に格納されている、その仮想計算機２０の接続状態を更新する。仮想計算機管理装置１が仮想計算機実行装置２に含まれている場合、仮想計算機２０と端末装置３との間の接続が切断されたことを受信した状態取得部２４は、状態記憶部１０に格納されている、その仮想計算機２０の接続状態を、直接更新してもよい。
【０１３３】
以上で説明した本実施形態には、必要とするリソースが必ずしも同一でない仮想計算機２０を実行する仮想計算機実行装置２がリソース不足になることなく、仮想計算機２０へのログオン時における処理による負荷を削減することができるという効果がある。
【０１３４】
その理由は、不足特定部１２が、接続要求によって接続が要求された接続先仮想計算機が仮想計算機実行装置２において動作する場合に不足する、仮想計算機実行装置２のリソース量を算出するからである。そして、選択部１３が、不足するリソース量と、仮想計算機２０の優先順位に基づき、接続先仮想計算機が動作しても仮想計算機実行装置２がリソース不足にならないように退避させる仮想計算機２０を選択するからである。
【０１３５】
端末装置３を介して仮想計算機２０を使用するユーザが、その仮想計算機２０からログオフする代わりに、その仮想計算機２０と端末装置３との間の接続を切断することができる。その場合、ユーザは仮想計算機２０からログオフしていないので、ユーザが次にその仮想計算機２０を使用する際、仮想計算機２０はログオンに伴う処理を行う必要がない。すなわち、ログオン時における処理による負荷を削減することができる。
【０１３６】
しかし、ユーザがログオンした状態で動作を続ける仮想計算機２０が増加すると、仮想計算機２０を実行する仮想計算機実行装置２のリソースが不足するおそれがある。
【０１３７】
仮想計算機２０を仮想計算機記憶部２３に退避させる退避部２２が、仮想計算機実行装置２のリソースが不足しないように仮想計算機２０を退避させることができれば、仮想計算機実行装置２のリソースは不足しない。例えば、端末装置３が接続を要求した接続先仮想計算機が退避させられている場合、仮想計算機実行装置２の未使用リソースが不十分であれば、接続先仮想計算機を復帰させるとリソースが不足する。リソース不足を防ぐために、接続先仮想計算機を復帰させる代わりに、いずれかの仮想計算機２０を退避させる場合、退避させる仮想計算機２０が使用するリソースより接続先仮想計算機が使用するリソースが多ければ、リソースが不足するおそれがある。
【０１３８】
一方、選択部１３は、仮想計算機２０を退避させずに仮想計算機実行装置２を復帰させることにより不足するリソースより、仮想計算機２０を退避させることにより使用されなくなるリソースが多くなるよう、退避させる仮想計算機２０を選択する。従って、選択部１３が選択した選択仮想計算機を退避させることにより、退避させられている接続先仮想計算機を復帰させても、仮想計算機実行装置２のリソースは不足しない。その場合、仮想計算機２０が使用するリソースの量が異なっていても、仮想計算機実行装置２のリソースは不足しない。
【０１３９】
＜第２の実施形態＞
次に、本発明の第２の実施形態について、図面を参照して詳細に説明する。
【０１４０】
図１３は、本実施形態の仮想計算機管理装置１Ａの構成を表す図である。
【０１４１】
図１３を参照すると、仮想計算機管理装置１Ａは、仮想計算機記憶部２３に仮想計算機２０を退避させることができる仮想計算機実行装置２が実行する仮想計算機２０に関して、当該仮想計算機２０が使用するリソース量と、前記仮想計算機２０の優先順位とを記憶する状態記憶部１０と、前記仮想計算機１０のうち接続先仮想計算機への接続要求を受信する要求受信部１１と、前記仮想計算機実行装置２において検出された未使用リソース量と、前記仮想計算機記憶部２３に退避させられている前記接続先仮想計算機が使用するリソース量とに基づき、前記接続先仮想計算機を復帰させた場合の不足リソース量を特定する不足特定部１２と、前記優先順位に基づき、退避させられていない前記仮想計算機２０から選択仮想計算機を、前記選択仮想計算機が使用する前記リソース量の合計が前記不足リソースより大きくなるように選択する選択部１３と、を備える。前述のように、仮想計算機実行装置２は、単に「実行装置２」とも表記される。
【０１４２】
以上で説明した本実施形態には、第１の実施形態と同じ効果がある。その理由は、第１の実施形態の効果が生じる理由と同じである。
【０１４３】
仮想計算機管理装置１、仮想計算機管理装置１Ａ、仮想計算機実行装置２、仮想計算機実行装置２Ａは、それぞれ、コンピュータ及びコンピュータを制御するプログラム、専用のハードウェア、又は、コンピュータ及びコンピュータを制御するプログラムと専用のハードウェアの組合せにより実現することができる。
【０１４４】
図１４は、仮想計算機管理装置１、仮想計算機管理装置１Ａ、仮想計算機実行装置２、仮想計算機実行装置２Ａを実現することができる、コンピュータ１０００の構成の一例を表す図である。図１４を参照すると、コンピュータ１０００は、プロセッサ１００１と、メモリ１００２と、記憶装置１００３と、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）インタフェース１００４とを含む。また、コンピュータ１０００は、記録媒体１００５にアクセスすることができる。メモリ１００２と記憶装置１００３は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ハードディスクなどの記憶装置である。記録媒体１００５は、例えば、ＲＡＭ、ハードディスクなどの記憶装置、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、可搬記録媒体である。記憶装置１００３が記録媒体１００５であってもよい。プロセッサ１００１は、メモリ１００２と、記憶装置１００３に対して、データやプログラムの読み出しと書き込みを行うことができる。プロセッサ１００１は、Ｉ／Ｏインタフェース１００４を介して、例えば、端末装置３や、ユーザ管理装置４にアクセスすることができる。プロセッサ１００１は、記録媒体１００５にアクセスすることができる。記録媒体１００５には、コンピュータ１０００を、仮想計算機管理装置１、仮想計算機管理装置１Ａ、仮想計算機実行装置２、又は仮想計算機実行装置２Ａとして動作させるプログラムが格納されている。
【０１４５】
プロセッサ１００１は、記録媒体１００５に格納されている、コンピュータ１０００を、仮想計算機管理装置１、仮想計算機管理装置１Ａ、仮想計算機実行装置２、又は仮想計算機実行装置２Ａとして動作させるプログラムを、メモリ１００２にロードする。そして、プロセッサ１００１が、メモリ１００２にロードされたプログラムを実行することにより、コンピュータ１０００は、仮想計算機管理装置１、仮想計算機管理装置１Ａ、仮想計算機実行装置２、又は仮想計算機実行装置２Ａとして動作する。
【０１４６】
要求受信部１１、不足特定部１２、選択部１３、優先順位決定部１４、出力部１５、仮想計算機実行部２１、退避部２２、状態取得部２４、要求実行部２５、状態送信部２６は、例えば、プログラムを記憶する記録媒体１００５からメモリ１００２に読み込まれた、各部の機能を実現することができる専用のプログラムと、そのプログラムを実行するプロセッサ１００１により実現することができる。また、状態記憶部１０、仮想計算機記憶部２３は、コンピュータ１０００が含むメモリ１００２やハードディスク装置等の記憶装置１００３により実現することができる。あるいは、状態記憶部１０、要求受信部１１、不足特定部１２、選択部１３、優先順位決定部１４、出力部１５、仮想計算機実行部２１、退避部２２、仮想計算機記憶部２３、状態取得部２４、要求実行部２５、状態送信部２６の一部又は全部を、各部の機能を実現する専用の回路によって実現することもできる。
【０１４７】
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【０１４８】
１、１Ａ    仮想計算機管理装置
２、２Ａ    仮想計算機実行装置
３    端末装置
４    ユーザ管理装置
１０    状態記憶部
１１    要求受信部
１２    不足特定部
１３    選択部
１４    優先順位決定部
１５    出力部
１６    状態受信部
２０    仮想計算機
２１    仮想計算機実行部
２２    退避部
２３    仮想計算機記憶部
２４    状態取得部
２５    要求実行部
２６    状態送信部
４０    ログ記憶部
４１    認証部
１００、１００Ａ    情報処理システム
２０１    エージェント
２０２    ゲストＯＳ
２０３    ログオフ検出部
２０４    切断部
２０５    通知部
１０００    コンピュータ
１００１    プロセッサ
１００２    メモリ
１００３    記憶装置
１００４    Ｉ／Ｏインタフェース
１００５    記録媒体
【図１】
2015165361.tif 000003
【図２】
2015165361.tif 000004
【図３】
2015165361.tif 000005
【図４】
2015165361.tif 000006
【図５】
2015165361.tif 000007
【図６】
2015165361.tif 000008
【図７】
2015165361.tif 000009
【図８】
2015165361.tif 000010
【図９】
2015165361.tif 000011
【図１０】
2015165361.tif 000012
【図１１】
2015165361.tif 000013
【図１２】
2015165361.tif 000014
【図１３】
2015165361.tif 000015
【図１４】
2015165361.tif 000016