(57)【特許請求の範囲】
【請求項１】
計算機システムであって、
複数のサーバシステムと、
前記複数のサーバシステムとネットワークを介して接続される複数の端末装置とを備え、
前記複数のサーバシステムの各々は、
前記複数の端末装置において提供可能なクライアント環境の種類毎に、前記複数の端末装置の総数に応じた数の仮想計算機からなる仮想計算機の群を論理的に生成するとともに、ホットスタンバイの状態で保持する仮想計算機管理手段と、
前記複数の端末装置のいずれかからの接続要求に応答して、前記ホットスタンバイの状態で保持されている、当該接続要求に含まれる種類に対応する仮想計算機の群のうち、予め定められた規則に従って最も順位の高い仮想計算機を当該要求元の端末装置に割り当てる割り当て手段とを含む、計算機システム。
【請求項２】
前記仮想計算機管理手段は、前記複数の端末装置において提供可能なクライアント環境の種類間の優先順位に応じて、前記仮想計算機の群にそれぞれ含ませる仮想計算機の数を決定する、請求項１に記載の計算機システム。
【請求項３】
前記仮想計算機管理手段は、前記複数の端末装置において提供可能なクライアント環境の種類毎の稼働状況に応じて、前記仮想計算機の群にそれぞれ含ませる仮想計算機の数を決定する、請求項１に記載の計算機システム。
【請求項４】
前記割り当て手段は、前記接続要求の要求元の端末装置に対して、前記割り当てた仮想計算機のネットワークアドレスを通知する手段を含み、
前記端末装置は、通知されたネットワークアドレスに基づいて、仮想計算機に接続する、請求項１〜３のいずれか１項に記載の計算機システム。
【請求項５】
前記仮想計算機管理手段は、前記仮想計算機の群に共通のコードと、前記仮想計算機の群の各種類に固有のコードとを用いて、種類別に前記仮想計算機の群をそれぞれ生成する、請求項１〜４のいずれか１項に記載の計算機システム。
【請求項６】
前記ホットスタンバイの状態で保持されている仮想計算機の群は、それぞれの仮想計算機が実行するゲストＯＳ、および、前記ゲストＯＳ上で実行されるアプリケーションの制御対象に対する操作権限、の少なくとも一方が互いに異なる、請求項１〜５のいずれか１項に記載の計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想化技術を用いて、複数の端末装置に対してクライアント環境を提供する計算機システムに関する。
【背景技術】
【０００２】
近年、仮想化技術を用いて、複数のユーザ（クライアント装置）に対して、計算機環境をそれぞれ提供する計算機システムが実用化されている。このような計算機システムの一例として、仮想化技術を用いて複数のデスクトップ環境をそれぞれのクライアント装置上に実現するデスクトップ仮想化という手法がある。このデスクトップ仮想化では、１または複数のサーバ装置が自身の計算機資源を用いて仮想計算機を論理的に生成するとともに、その生成した仮想計算機を各クライアント装置に提供することになる。
【０００３】
このような仮想化技術の一例として、特開２００８−１０７９６６号公報（特許文献１）は、ユーザ要求に応じて仮想的な計算機資源を提供する計算機システムを開示する。さらに、仮想化技術を冗長化した構成も提案されている。例えば、特開２０１４−０４４６９０号公報（特許文献２）は、その上に二重化された仮想化環境を構築した物理計算機を二重化して構成したシステムを開示する。
【０００４】
また、複数の仮想計算機を保持するサーバ装置とは別に、クライアント装置からの要求を受けて、いずれの仮想計算機を使用するのかを決定する装置が配置される場合もある。例えば、特表２０１３−５４３６１７号公報（特許文献３）は、接続ブローカが通信からサーバファームの識別情報を受け取り、アクティブなリモートリソースを有するファーム内のマシンを識別し、クライアントにＶＭ上のリモートリソースへの再接続を指示するという構成を開示している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１０７９６６号公報（段落［０００９］，［００１０］，［００１７］，［００２３］など参照）
【特許文献２】特開２０１４−０４４６９０号公報（段落［００１１］，［００２０］，［００２１］など参照）
【特許文献３】特表２０１３−５４３６１７号公報（段落［０００９］，［００３０］など参照）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述したような仮想化技術を用いた計算機システムを、各種の監視制御のシステムに適用しようとすると、ユーザ毎またはクライアント装置毎に、提供されるクライアント環境の機能などを異ならせたいというニーズが存在する。例えば、操作監視を行なう一般のオペレータ（一般ユーザ）、一般のオペレータを統括する責任者（管理者ユーザ）、計算機システムのメンテナンスや保全を行なう保守員（メンテナンスユーザ）などの区分が想定され、それぞれのユーザ毎に、操作可能な範囲（以下、「操作権限」とも称す。）を異ならせたり、表示内容を異ならせたりする必要がある。あるいは、操作ミスを防止するために、レガシーシステムと同様の操作性を提供することが好ましい場合もある。そのため、要求に応じて複数種類のクライアント環境のいずれかを選択的に、かつより迅速に提供する必要がある。
【０００７】
上述した先行技術では、このようなニーズを満たすような技術的手段を何ら教示ないし示唆するものではない。すなわち、特開２００８−１０７９６６号公報（特許文献１）は、ユーザからのサービスの要求を受けた後に、ユーザの要求を処理するアプリケーションプログラムおよびゲストＯＳを含んだ実行環境スナップショットを計算機にロードさせることで、そのユーザの要求に応えることになる。この方法では、ユーザからサービスの要求毎に実行環境スナップショットを計算機にロードさせる必要があり、その要求に対してサービスを提供するまでに比較的長い時間を要するため、応答性が低い。
【０００８】
特開２０１４−０４４６９０号公報（特許文献２）は、仮想化環境および物理計算機のそれぞれにおいて二重化する技術を開示するものであり、各物理計算機上に実現される仮想化環境はいずれも同一のものである。すなわち、特開２０１４−０４４６９０号公報（特許文献２）は、複数種類のサービスを選択的に提供する技術については何ら教示ないし示唆していない。
【０００９】
本発明は、上記に鑑みてなされたものであって、その目的は、複数種類のクライアント環境のうち、要求されたクライアント環境を端末装置へより迅速に提供できる計算機システムを実現することである。
【００１０】
別の目的は、制御対象の状態に関する信号である状態信号を受信するとともに、端末装置から当該端末装置への入力操作に基づく信号である入力操作信号を受信して、当該入力操作信号に基づいて制御対象を制御する計算機システムを実現することである。
【課題を解決するための手段】
【００１１】
上述した課題を解決するために、本発明のある局面に係る計算機システムは、複数のサーバシステムと、複数のサーバシステムとネットワークを介して接続される複数の端末装置とを含む。複数のサーバシステムの各々は、複数の端末装置において提供可能なクライアント環境の種類毎に、複数の端末装置の総数に応じた数の仮想計算機からなる仮想計算機の群を論理的に生成するとともに、ホットスタンバイの状態で保持する仮想計算機管理手段と、複数の端末装置のいずれかからの接続要求に応答して、ホットスタンバイの状態で保持されている、当該接続要求に含まれる種類に対応する仮想計算機の群のうち、予め定められた規則に従って最も順位の高い仮想計算機を当該要求元の端末装置に割り当てる割り当て手段とを含む。
【００１２】
好ましくは、仮想計算機管理手段は、複数の端末装置において提供可能なクライアント環境の種類間の優先順位に応じて、仮想計算機の群にそれぞれ含ませる仮想計算機の数を決定する。
【００１３】
好ましくは、仮想計算機管理手段は、複数の端末装置において提供可能なクライアント環境の種類毎の稼働状況に応じて、仮想計算機の群にそれぞれ含ませる仮想計算機の数を決定する。
【００１４】
好ましくは、割り当て手段は、接続要求の要求元の端末装置に対して、割り当てた仮想計算機のネットワークアドレスを通知する手段を含み、端末装置は、通知されたネットワークアドレスに基づいて、仮想計算機に接続する。
【００１５】
好ましくは、仮想計算機管理手段は、仮想計算機の群に共通のコードと、仮想計算機の群の各種類に固有のコードとを用いて、種類別に仮想計算機の群をそれぞれ生成する。
【００１６】
好ましくは、ホットスタンバイの状態で保持されている仮想計算機の群は、それぞれの仮想計算機が実行するゲストＯＳ、および、ゲストＯＳ上で実行されるアプリケーションのコードの制御対象に対する操作権限、の少なくとも一方が互いに異なる。
【００１７】
本発明の別の局面に係る計算機システムは、制御対象の状態に関する信号である状態信号を受信するとともに、端末装置から当該端末装置への入力操作に基づく信号である入力操作信号を受信して、当該入力操作信号に基づいて制御対象を制御する。計算機システムは、ホストＯＳ上に、ゲストＯＳと当該ゲストＯＳ上で実行するアプリケーションのコードとの組み合わせが互いに異なる複数種類の仮想計算機を予め生成し、それら生成した仮想計算機をホットスタンバイの状態で保持するサーバと、端末装置から仮想計算機への接続要求を受信した場合に、当該接続要求に含まれる、当該端末装置に提供すべきクライアント環境の種類に関する情報に基づいて、ホットスタンバイの状態で保持されている複数種類の仮想計算機の中から、当該端末装置に提供すべきクライアント環境を有する仮想計算機を選択し、当該選択した仮想計算機と当該端末装置との接続をサーバに対して指示するコネクションブローカとを含む。サーバがホットスタンバイの状態で保持する複数種類の仮想計算機は、実行するゲストＯＳが互いに異なる複数の仮想計算機、および、実行するアプリケーションのコードの制御対象に対する操作権限、の少なくとも一方が互いに異なる複数の仮想計算機を含む。
【００１８】
好ましくは、サーバがホットスタンバイの状態で保持する複数種類の仮想計算機は、実行するゲストＯＳが互いに同一である複数の仮想計算機、および、実行するアプリケーションのコードが互いに同一である複数の仮想計算機、の少なくとも一方を含む。互いに同一であるゲストＯＳまたは互いに同一であるアプリケーションのコードは、共通の記憶部に記憶されたソースコードまたはオブジェクトコードを読み出して実行される。
【００１９】
好ましくは、サーバがホットスタンバイの状態で保持する複数種類の仮想計算機の数は、アプリケーションのコードの制御対象に対する操作権限が同一である仮想計算機の群毎に異なる。
【００２０】
好ましくは、サーバおよびコネクションブローカは、別個の計算機によって構成され、サーバとコネクションブローカの各々は、マスタの計算機およびスレーブの計算機を含む。
【００２１】
好ましくは、クライアント環境の種類に関する情報は、端末装置に入力されるユーザの識別子を含み、コネクションブローカは、ユーザの識別子に基づいて端末装置に提供すべきクライアント環境を選択する。
【００２２】
好ましくは、サーバがホットスタンバイの状態で保持する複数種類の仮想計算機は、実行するゲストＯＳが互いに異なるとともに、実行するアプリケーションのコードの制御対象およびアプリケーションのコードの当該制御対象に対する操作権限がいずれも同一である、複数の仮想計算機を含む。
【発明の効果】
【００２３】
本発明のある局面によれば、複数種類のクライアント環境のうち、要求されたクライアント環境を端末装置へより迅速に提供できる。
【００２４】
本発明の別の局面によれば、制御対象の状態に関する信号である状態信号を受信するとともに、端末装置から当該端末装置への入力操作に基づく信号である入力操作信号を受信して、当該入力操作信号に基づいて制御対象を制御できる。
【図面の簡単な説明】
【００２５】
【図１】本実施の形態に係る計算機システムの全体システム構成を示す模式図である。
【図２】本実施の形態に係る計算機システムの機能構成を示す模式図である。
【図３】本実施の形態に係る仮想デスクトップ用サーバが保持する仮想計算機の機能構成を示す模式図である。
【図４】本実施の形態に係る仮想デスクトップ用サーバおよびコネクションブローカのハードウェア構成例を示すブロック図である。
【図５】サーバ拠点において用意される複数の仮想計算機を模式的に示した図である。
【図６】本実施の形態に係る計算機システムにおいて端末装置上で提供される仮想デスクトップ画面の一例を示す図である。
【図７】本実施の形態に係る計算機システムにおける仮想計算機の生成方法を説明するための模式図である。
【図８】本実施の形態に係る計算機システムが提供する仮想計算機群の構成例を示す模式図である。
【図９】本実施の形態に係る計算機システムにおける仮想計算機の状態管理を説明するための模式図である。
【図１０】本実施の形態に係る計算機システムにおけるクライエント環境の提供を開始するための接続処理の手順を示す模式図である。
【図１１】本実施の形態に係る計算機システムにおける端末装置での画面表示例を示す模式図である。
【図１２】本実施の形態に係る計算機システムにおける端末装置での処理手順を示すフローチャートである。
【図１３】本実施の形態に係る計算機システムにおける端末装置での処理手順を示すフローチャートである。
【図１４】本実施の形態に係る計算機システムにおけるサーバ拠点のコネクションブローカ１２０の冗長化構成を説明するための模式図である。
【図１５】本実施の形態に係る計算機システムにおけるサーバ拠点のコネクションブローカ１２０間のデータ移行を説明するための模式図である。
【図１６】本実施の形態に係る計算機システムにおけるサーバ拠点の冗長化構成を説明するための模式図である。
【図１７】本実施の形態に係る計算機システムにおけるサーバ拠点のネットワークの冗長化構成を説明するための模式図である。
【発明を実施するための形態】
【００２６】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００２７】
［Ａ．全体システム構成］
まず、本実施の形態に係る計算機システム１の全体構成について説明する。図１は、本実施の形態に係る計算機システム１の全体システム構成を示す模式図である。本実施の形態に係る計算機システム１は、電力系統制御、各種プラント制御、鉄道運行管理などの比較的大規模な装置や設備の監視制御に適用される。典型的には、計算機システム１は、制御対象の状態に関する信号である状態信号を受信するとともに、端末装置から当該端末装置への入力操作に基づく信号である入力操作信号を受信して、当該入力操作信号に基づいて制御対象を制御する。
【００２８】
図１に示す本実施の形態に係る計算機システム１は、クライアント仮想化機構を採用したシステムであり、複数の監視制御卓を実現するための計算機は仮想化されてサーバ拠点１００Ａ，１００Ｂ（以下、「サーバ拠点１００」とも総称する。）に集約されている。ネットワーク２を介して分散配置された各端末装置２１０Ａ１，２１０Ａ２，２１０Ｂ１，２１０Ｂ２（クライアント端末）（以下、「端末装置２１０」とも総称する。）では、仮想化された監視制御卓を実現するための仮想計算機によって提供される操作画面が表示される。複数の端末装置２１０は、複数のサーバシステムであるサーバ拠点１００Ａ，１００Ｂと、ネットワーク２を介して接続される。
【００２９】
端末装置２１０に対してなされた入力操作は、その端末装置２１０を介して、サーバ拠点１００にある仮想計算機へ送信される。仮想計算機は、端末装置２１０からの入力操作を示す信号に応じて、必要な処理を実行する。すなわち、各端末装置２１０では、実質的には、仮想計算機によって提供される操作画面の表示処理および入力操作の受付処理のみが行なわれ、監視制御に関する実体的な処理はサーバ拠点１００で実行される。
【００３０】
このように、本実施の形態に係る計算機システム１では、一元管理された仮想的な計算機資源を、端末装置２１０からの要求に応じて、適宜提供するというクライアント仮想化機構を採用している。つまり、広域のネットワークを介して、計算機資源が分散配置されており、監視制御卓を実現する計算機を仮想化することでサーバ拠点に集約し、クライアント端末である監視制御卓では仮想化した画面表示と操作入力処理のみが行なわれる。このようなクライアント仮想化機構を採用することで、端末装置２１０の構成を簡素化できるとともに、端末装置２１０の追加や変更などに柔軟に対応できる。
【００３１】
より具体的には、計算機システム１は、複数のサーバ拠点１００Ａおよび１００Ｂ（サーバ拠点Ａおよびサーバ拠点Ｂ）と、実際に制御監視を行なう場所である複数の運用拠点２００Ａおよび２００Ｂ（運用拠点Ａおよび運用拠点Ｂ）（以下、「運用拠点２００」とも総称する。）とが設けられる。なお、図１には、説明の便宜上、２つのサーバ拠点１００および２つの運用拠点２００を示すが、これらに限られることなく、運用上必要な数のサーバ拠点１００および運用拠点２００が設けられる。
【００３２】
サーバ拠点１００Ａおよびサーバ拠点１００Ｂは、典型的には、マスタ／スレーブ方式を採用しており、互いに協働して仮想的な計算機資源を保有する。これによって、いずれか一方のサーバ拠点１００が被災するなどして、運用が困難になった場合であっても、他方のサーバ拠点１００によって運用を継続させることができる。サーバ拠点１００Ａがマスタとして機能し、サーバ拠点１００Ｂがスレーブとして機能する場合を例にとって処理などを説明するが、いずれのサーバ拠点がマスタまたはスレーブであってもよい。
【００３３】
サーバ拠点１００Ａには、仮想デスクトップ用サーバ１１０Ａおよびコネクションブローカ１２０Ａ１，１２０Ａ２が配置されており、同様に、サーバ拠点１００Ｂには、仮想デスクトップ用サーバ１１０Ｂおよびコネクションブローカ１２０Ｂ１，１２０Ｂ２が配置されている。以下では、仮想デスクトップ用サーバ１１０Ａ，１１０Ｂを「仮想デスクトップ用サーバ１１０」とも総称し、コネクションブローカ１２０Ａ１，１２０Ａ２，１２０Ｂ１，１２０Ｂ２を「コネクションブローカ１２０」とも総称する。このように、サーバ拠点１００Ａおよび１００Ｂは、複数のサーバシステムを含む。
【００３４】
仮想デスクトップ用サーバ１１０の各々は、複数の仮想計算機を論理的に生成および保持する。また、仮想デスクトップ用サーバ１１０の各々は、制御対象との間でフィールドデータを遣り取りするフィールドネットワーク４に接続されており、制御対象から様々な状態信号を取得するとともに、端末装置２１０を介して与えられた操作指令に従って、制御対象に対して各種指令を与える。
【００３５】
コネクションブローカ１２０の各々は、端末装置２１０からの要求に応じて、仮想デスクトップ用サーバ１１０が保持している仮想計算機を所定規則に従って割り当てる。各サーバ拠点１００において、コネクションブローカ１２０は、アクティブ／スタンバイ方式で冗長化されている。サーバ拠点１００における機能および処理手順などについては、後に詳述する。
【００３６】
図１に示すように、仮想デスクトップ用サーバ１１０およびコネクションブローカ１２０は、別個の計算機によって構成されてもよい。さらに、仮想デスクトップ用サーバ１１０およびコネクションブローカ１２０の各々は、マスタの計算機およびスレーブの計算機を含んでいてもよいム。
【００３７】
一方で、仮想デスクトップ用サーバ１１０およびコネクションブローカ１２０は、プロセッサを共通とする一体の計算機で構成してもよい。
【００３８】
クライアント拠点として位置付けられる運用拠点２００Ａおよび運用拠点２００Ｂには、端末装置２１０Ａ１，２１０Ａ２および端末装置２１０Ｂ１，２１０Ｂ２が配置されている。クライアント装置として機能する端末装置２１０は、一種のシンクライアントであり、サーバ拠点１００の仮想計算機からクライアント環境を提供されるのに必要な接続手続や、入力操作を受付けるための処理などを実行するための最小限の機能を搭載していればよい。本実施の形態に係る計算機システム１では、端末装置２１０において提供されるクライアント環境（デスクトップ環境）がサーバ拠点１００側で実行されるリモートデスクトップ方式が採用される。但し、サーバ拠点１００から提供された計算機資源を利用しつつ、端末装置２１０でクライアント環境を実行するクライアントハイパーバイザー方式を採用してもよい。
【００３９】
サーバ拠点１００Ａ，１００Ｂと運用拠点２００Ａ，２００Ｂとは、ネットワーク２を介して互いに接続される。ネットワーク２としては、典型的には、広域に張り巡らされた広域ＩＰ（Internet Protocol）網が採用される。ネットワーク２も多重化（あるいは、二重化）されることが好ましい。
【００４０】
本実施の形態に係る計算機システム１では、サーバ拠点１００自体が多重化されているとともに、サーバ拠点１００内に配置されるコネクションブローカ１２０も多重化されている。さらに、ネットワーク２も多重化されている。そのため、サーバ拠点１００そのもの、サーバ拠点１００内のサーバ、ネットワーク２のいずれに何らかの障害が生じたとしても、健全な部位が処理を引き続いて運用を継続できる。
【００４１】
［Ｂ．機能構成］
次に、本実施の形態に係る計算機システム１を実現するための機能構成について説明する。図２は、本実施の形態に係る計算機システム１の機能構成を示す模式図である。
【００４２】
図２を参照して、仮想デスクトップ用サーバ１１０Ａ，１１０Ｂの各々においても、ＯＳ（オペレーティング）１１２上で各種機能モジュールが実行される。より具体的には、ＯＳ１１２上では、物理計算機（Ｄｏｍ−０）１１４および複数の仮想計算機（Ｄｏｍ−Ｕ）１１６が実行される。物理計算機１１４は、コネクションブローカ１２０の計算機資源を利用して実現されるドメインであり、複数の仮想計算機１１６は、論理計算機とも呼ばれ、仮想化されたドメインである。物理計算機１１４では、ＯＳ１１２の環境を利用しつつ、必要な各種機能モジュールが実行される。より具体的には、物理計算機１１４には、管理部１１５が実装される。管理部１１５は、主として、複数の仮想計算機１１６を管理する。
【００４３】
複数の仮想計算機１１６の各々では、ＯＳ１１２（ホストＯＳ）とは独立してＯＳ１１８（ゲストＯＳ）の実行環境が用意されている。ＯＳ１１２は、任意のオペレーティングシステムを採用できるが、本実施の形態においては、Ｌｉｎｕｘ（登録商標）を採用する。また、仮想計算機１１６のそれぞれのＯＳ１１８は、端末装置２１０に対して提供されるクライアント環境に応じて適宜選択される。例えば、ＯＳ１１８としては、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）のいずれかのバージョン、Ｌｉｎｕｘ（登録商標）、Ｍａｃ  ＯＳ（登録商標）のいずれかのバージョン、などが採用される。
【００４４】
同様に、コネクションブローカ１２０Ａ１，１２０Ａ２，１２０Ｂ１，１２０Ｂ２の各々においても、ＯＳ（オペレーティングシステム）１２２上で各種機能モジュールが実行される。より具体的には、ＯＳ１２２上には、データミラー処理部１２４と、構成制御処理部１２６と、仮想クライアント割り当て処理部１２８とが配置される。ＯＳ１２２は、任意のオペレーティングシステムを採用できるが、本実施の形態においては、Ｌｉｎｕｘ（登録商標）を採用する。
【００４５】
データミラー処理部１２４は、ペアを組むコネクションブローカ１２０の間で、データを共有化（ミラーリング）するための処理を実行する。構成制御処理部１２６は、ペアを組むコネクションブローカ１２０の間で、いずれがマスタであるのか、あるいはスレーブであるのかを、認識および管理する。仮想クライアント割り当て処理部１２８は、端末装置２１０からの要求に応じて、仮想デスクトップ用サーバ１１０が保持している複数の仮想計算機１１６のうち、いずれかを割り当てる。
【００４６】
同様に、端末装置２１０Ａ，２１０Ｂ，２１０Ｃの各々においても、ＯＳ（オペレーティングシステム）２１２上で各種機能モジュールが実行される。より具体的には、ＯＳ２１２上には、暗号処理部２１４と、クライアント処理部２１６と、接続処理部２１８とが配置される。ＯＳ１２２は、任意のオペレーティングシステムを採用できるが、本実施の形態においては、Ｌｉｎｕｘ（登録商標）を採用する。
【００４７】
暗号処理部２１４は、サーバ拠点１００の仮想デスクトップ用サーバ１１０またはコネクションブローカ１２０との間で、セキュア通信を実現するための処理を実行する。
【００４８】
クライアント処理部２１６は、仮想デスクトップ用サーバ１１０上の仮想計算機１１６によるクライアント環境（デスクトップ環境）を端末装置２１０上に実現するための処理を実行する。
【００４９】
接続処理部２１８は、サーバ拠点１００の仮想デスクトップ用サーバ１１０またはコネクションブローカ１２０と端末装置２１０との間の通信接続を管理する。
【００５０】
図３は、本実施の形態に係る仮想デスクトップ用サーバ１１０が保持する仮想計算機１１６の機能構成を示す模式図である。図３を参照して、仮想計算機１１６の各々においても、ＯＳ（オペレーティングシステム）１１８上で各種機能モジュールが実行される。より具体的には、ＯＳ１１８上には、暗号処理部１１６２と、サーバ処理部１１６４と、セッション管理部１１６６とが配置される。
【００５１】
暗号処理部１１６２は、端末装置２１０との間で、セキュア通信を実現するための処理を実行する。サーバ処理部１１６４は、端末装置２１０に対して提供されるクライアント環境を実行するホスト機能を有している。サーバ処理部１１６４は、仮想計算機１１６で表示する画面イメージを生成する。セッション管理部１１６６は、クライアント環境を提供する端末装置２１０との間の接続（セッション）を管理する。
【００５２】
［Ｃ．ハードウェア構成］
次に、サーバ拠点１００に配置される仮想デスクトップ用サーバ１１０およびコネクションブローカ１２０のハードウェア構成について説明する。
【００５３】
図４は、本実施の形態に係る仮想デスクトップ用サーバ１１０およびコネクションブローカ１２０のハードウェア構成例を示すブロック図である。図４を参照して、仮想デスクトップ用サーバ１１０は、そのコンポーネントとして、プロセッサ１５０と、主メモリ１５２と、ハードディスク（ＨＤＤ：Hard Disk Drive）１５４と、障害監視モジュール１５６と、ネットワークインターフェイス（Ｉ／Ｆ：Interface）１５８，１６０と、入力部１６２と、汎用インターフェイス（Ｉ／Ｆ：Interface）１６４とを含む。これらのコンポーネントは、内部バス１６６を介して互いに通信可能に接続されている。
【００５４】
プロセッサ１５０は、典型的には、ＣＰＵ（Central Processing Unit）やＭＰＵ（Multi Processing Unit）といった演算処理部であり、ハードディスク１５４にインストールされているＯＳを含む各種プログラムを読出して、主メモリ１５２に展開しつつ実行する。主メモリ１５２は、典型的には、ＤＲＡＭ（Dynamic Random Access Memory）などの揮発性記憶媒体であり、プロセッサ１５０によって実行されるＯＳを含む各種プログラムのコードの他、各種プログラムの実行に必要な各種ワークデータを保持する。ハードディスク１５４は、不揮発性記憶媒体であり、ＯＳを含む各種プログラムの他、各種設定値などを保持する。など、ハードディスク１５４に代えて、ＳＳＤ（Solid State Drive）などを採用することもできる。
【００５５】
障害監視モジュール１５６は、それぞれのコンポーネントの健全性を周期的またはイベント的に監視しており、いずれかのコンポーネントに何らかの障害が発生すると、その障害を他のサーバなどへ通知する。これによって、動作モードが変更されたり、回線またはサーバの切り替え動作が実行されたりする。
【００５６】
ネットワークインターフェイス１５８および１６０は、他のサーバや端末装置などとの間の通信に係る処理を実行する。図４には、２つのネットワークインターフェイスを配置して二重化された構成例を示すが、より多くのネットワークインターフェイスを設けてもよい。
【００５７】
入力部１６２は、典型的には、キーボードやマウスなどからなり、ユーザからの各種設定や操作を受付ける。
【００５８】
汎用インターフェイス１６４は、典型的には、ＵＳＢ（Universal Serial Bus）インターフェイス、ＲＳ−２３２ｃに従うシリアル通信インターフェイス、パラレル通信インターフェイスなどを含み、外部装置などとの間でデータを遣り取りする。
【００５９】
コネクションブローカ１２０のハードウェア構成についても、上述の仮想デスクトップ用サーバ１１０のハードウェア構成と同様であるので、詳細な説明は繰返さない。なお、仮想デスクトップ用サーバ１１０およびコネクションブローカ１２０の構成の一部を専用のハードワイヤード回路やロジック回路を用いて実装してもよい。
【００６０】
端末装置２１０についても、典型的には、汎用的なアーキテクチャに従うコンピューを用いて実現される。この端末装置２１０のハードウェア構成についても、図４に示す仮想デスクトップ用サーバ１１０およびコネクションブローカ１２０のハードウェア構成と同様であるので、詳細な説明は繰返さない。但し、端末装置２１０については、仮想デスクトップ用サーバ１１０およびコネクションブローカ１２０に比較して、要求される稼働率は高くないので、より簡素なハードウェア構成を採用してもよい。例えば、図４に示す障害監視モジュール１５６を省略してもよい。
【００６１】
［Ｄ．仮想計算機］
次に、サーバ拠点１００において用意される仮想計算機１１６について説明する。
【００６２】
（ｄ１：論理的に生成される仮想計算機）
図５は、サーバ拠点１００において用意される複数の仮想計算機１１６を模式的に示した図である。本実施の形態に係る計算機システム１では、端末装置２１０において、複数種類のクライアント環境（デスクトップ環境）のうち、ユーザが任意に選択したクライアント環境を実現することが可能になっている。なお、以下の説明では、いずれか特定の種類を示す文脈において、「種類」とほぼ同義の用語として「タイプ」と記すこともある。
【００６３】
１または複数のサーバ拠点１００に配置される１または複数の仮想デスクトップ用サーバ１１０（より具体的には、物理計算機１１４で実行される管理部１１５（図２参照））は、図５（Ａ）に示すように、複数の仮想計算機１１６を論理的に生成するとともに、それらをホットスタンバイの状態で保持する。ここで、「ホットスタンバイの状態で保持」とは、端末装置２１０から接続要求（仮想計算機１１６の割り当て要求）があると、非使用中の状態（ｆｒｅｅ）にある仮想計算機１１６を即座に割り当てて、利用可能にできる状態を意味する。
【００６４】
上述したように、複数種類のクライエント環境を提供するために、各種類について、複数の仮想計算機１１６が用意される。図５（Ａ）には、少なくとも３種類の仮想計算機群１１６ＧＡ，１１６ＧＢ，１１６ＧＣが用意されている例を示す。すなわち、１または複数の仮想デスクトップ用サーバ１１０では、初期状態において、Ａタイプの複数の仮想計算機１１６からなる仮想計算機群１１６ＧＡと、Ｂタイプの複数の仮想計算機１１６からなる仮想計算機群１１６ＧＢと、Ｃタイプの複数の仮想計算機１１６からなる仮想計算機群１１６ＧＣとが論理的に生成される。
【００６５】
仮想計算機群１１６ＧＡ，１１６ＧＢ，１１６ＧＣの各々に含まれる仮想計算機１１６の数は、計算機システム１の規模や用途などに応じて適宜設計される。本実施の形態においては、少なくとも一部の仮想計算機群は、計算機システム１に含まれる端末装置２１０の総数Ｎと同数の仮想計算機１１６からなる。すなわち、図５（Ａ）に示す例では、仮想計算機群１１６ＧＡはＮ個のＡタイプの仮想計算機１１６からなり、仮想計算機群１１６ＧＢはＮ個のＢタイプの仮想計算機１１６からなり、仮想計算機群１１６ＧＣはＮ個のＣタイプの仮想計算機１１６からなる。なお、図５（Ａ）は、説明の便宜上、３種類の仮想計算機群１１６Ｇを生成する場合の例を示したが、これに限られることなく、計算機システム１の性能や用途などに応じて、適切な種類数の仮想計算機群１１６Ｇを生成すればよい。
【００６６】
このように、１または複数の仮想デスクトップ用サーバ１１０（より具体的には、物理計算機１１４で実行される管理部１１５（図２参照））は、複数の端末装置２１０において提供可能なクライアント環境（デスクトップ環境）の種類毎に、複数の端末装置２１０の総数に応じた数の仮想計算機１１６からなる仮想計算機の群を論理的に生成するとともに、ホットスタンバイの状態で保持する。
【００６７】
仮想計算機群１１６ＧＡ，１１６ＧＢ，１１６ＧＣの各々に含まれる複数の仮想計算機１１６には、識別情報（典型的には、通し番号）が直接的または間接的に付与されており、接続要求に応じて割り当てられる際には、接続要求に含まれるタイプ指定に合致する仮想計算機群の中から、予め定められた規則に従って最も順位の高い仮想計算機１１６が選択される。仮想計算機群に含まれる複数の仮想計算機に通し番号が付与されている場合には、最も小さい（若い）番号が付与された仮想計算機１１６が選択される。
【００６８】
このような仮想計算機１１６の割り当て処理は、コネクションブローカ１２０によって実行される。すなわち、コネクションブローカ１２０は、複数の端末装置２１０のいずれかからの接続要求に応答して、ホットスタンバイの状態で保持されている、当該接続要求に含まれる種類に対応する仮想計算機群１１６Ｇのうち、予め定められた規則に従って最も順位の高い仮想計算機１１６を当該要求元の端末装置に割り当てる。
【００６９】
ここで、仮想計算機群に含まれる複数の仮想計算機に通し番号が付与されている場合には、「最も順位の高い」仮想計算機１１６は、最も番号の小さい（若い）仮想計算機１１６であるがこれに限られることはない。例えば、論理的に生成されたタイミングが古い順に仮想計算機１１６を割り当ててもよいし、その逆であってもよい。あるいは、使用頻度の低い順または高い順に仮想計算機１１６を割り当ててもよい。このように、何らかの「予め定められた規則」に従って、仮想計算機１１６を割り当てることが好ましい。このような規則的な割り当てを行なうことで、仮想計算機１１６の割り当ての即時性（応答時間の短縮化）を向上できる。
【００７０】
本実施の形態に係る計算機システム１では、複数のサーバ拠点１００から端末装置２１０に対して、複数の仮想計算機１１６を分散的に提供する。例えば、図５（Ｂ）には、サーバ拠点１００Ａに配置された仮想デスクトップ用サーバ１１０Ａおよびサーバ拠点１００Ｂに配置された仮想デスクトップ用サーバ１１０Ｂが図５（Ａ）に示される複数の仮想計算機１１６を分散的に生成する例を示す。
【００７１】
一例として、サーバ拠点１００Ａに配置された仮想デスクトップ用サーバ１１０Ａは、仮想計算機群１１６ＧＡに含まれる奇数番目の仮想計算機１１６（仮想計算機１１６Ａ１，１１６Ａ３，…）と、仮想計算機群１１６ＧＢに含まれる奇数番目の仮想計算機１１６（仮想計算機１１６Ｂ１，１１６Ｂ３，…）と、仮想計算機群１１６ＧＣに含まれる奇数番目の仮想計算機１１６（仮想計算機１１６Ｃ１，１１６Ｃ３，…）とを論理的に生成し保持する。一方で、サーバ拠点１００Ｂに配置された仮想デスクトップ用サーバ１１０Ｂは、仮想計算機群１１６ＧＡに含まれる偶数番目の仮想計算機１１６（仮想計算機１１６Ａ２，１１６Ａ４，…）と、仮想計算機群１１６ＧＢに含まれる偶数番目の仮想計算機１１６（仮想計算機１１６Ｂ２，１１６Ｂ４，…）と、仮想計算機群１１６ＧＣに含まれる偶数番目の仮想計算機１１６（仮想計算機１１６Ｃ２，１１６Ｃ４，…）とを論理的に生成し保持する。
【００７２】
なお、図５（Ｂ）には、説明の便宜上、２つの仮想デスクトップ用サーバ１１０が仮想計算機１１６を分散的に生成および保持する例を示すが、これに限らず、より多くの仮想デスクトップ用サーバ１１０が分散的に仮想計算機１１６を生成および保持するようにしてもよい。
【００７３】
仮想計算機１１６を論理的に生成および保持する処理は、比較的多くの計算機資源が必要になるが、このように、複数の仮想デスクトップ用サーバ１１０が仮想計算機１１６を分散的に生成および保持するという構成を採用することで、それぞれの仮想デスクトップ用サーバ１１０へのロードが平準化される。それによって、著しい高負荷状態を想定する必要がなくなり、適切なスペックの仮想デスクトップ用サーバ１１０を導入できる。
【００７４】
なお、割り当て先の端末装置２１０が配置される運用拠点２００に応じて、端末装置２１０のホストとなる仮想デスクトップ用サーバ１１０を決定してもよい。例えば、運用拠点２００Ａに配置される端末装置２１０Ａ１，２１０Ａ２に割り当てられた（あるいは、割り当てられる）仮想計算機１１６については、サーバ拠点１００Ａに配置された仮想デスクトップ用サーバ１１０Ａにホストさせる。一方で、運用拠点２００Ｂに配置される端末装置２１０Ｂ１，２１０Ｂ２に割り当てられた（あるいは、割り当てられる）仮想計算機１１６については、サーバ拠点１００Ｂに配置された仮想デスクトップ用サーバ１１０Ｂにホストさせる。このように、拠点別に仮想計算機１１６を生成および保持する仮想デスクトップ用サーバ１１０を動的に決定することで、計算機資源の利用効率を高めることができるとともに、何らかの障害発生時の耐性を高めることもできる。
【００７５】
この場合には、それぞれの運用拠点２００に配置される端末装置２１０のそれぞれに割り当てるために用意する仮想計算機１１６を互いに同数（均等に）用意しておくことが好ましい。
【００７６】
なお、後述するように、いずれかの仮想デスクトップ用サーバ１１０に障害が発生してサービスを継続することができなくなると、他の仮想デスクトップ用サーバ１１０がそれを引き継いでサービスを継続することになる。この場合、ある仮想デスクトップ用サーバ１１０がホストしていた仮想計算機１１６は、他の仮想デスクトップ用サーバ１１０がホストすることになる。このような仮想デスクトップ用サーバ１１０の切り替えが発生した場合であっても、多数の仮想計算機１１６を短時間で利用可能にする必要がある。そのため、それぞれの仮想デスクトップ用サーバ１１０には、負荷分散装置（ロードバランサ）を用いた負荷分散方式が実装され、特定の仮想デスクトップ用サーバ１１０に仮想計算機１１６の論理的な生成の処理が集中しないようにして、より短時間での切り替えを実現することが好ましい。
【００７７】
（ｄ２：仮想計算機の種類）
次に、仮想計算機１１６の種類の一例について説明する。本実施の形態に係る計算機システム１においては、複数種類の仮想計算機１１６を論理的に生成することができる。例えば、仮想計算機１１６が実行するＯＳ１１８（ゲストＯＳ）としては、仮想デスクトップ用サーバ１１０で実行される物理計算機１１４のＯＳ１１２（ホストＯＳ）とは異なる、任意の種類のＯＳを採用できる。
【００７８】
例えば、ＯＳ１１８（ゲストＯＳ）としては、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）のいずれかのバージョン、Ｌｉｎｕｘ（登録商標）、Ｍａｃ  ＯＳ（登録商標）のいずれかのバージョン、などを採用できる。すなわち、仮想計算機１１６の種類は、実行されるＯＳの種類に依存する。
【００７９】
また、同一のＯＳであっても、実行環境に係るパラメータを異ならせることで、複数の種類の仮想計算機１１６を論理的に生成することができる。このようなパラメータとしては、例えば、以下のようなものが挙げられる。
【００８０】
・ＣＰＵの占有可能な最大負荷率
・使用可能なＣＰＵの数
・メモリの占有可能な最大容量
・メモリの初期使用サイズ
・ＯＳモード（例えば、現行バージョンの表示態様と旧バージョンの表示態様とを選択できる場合）
・画面の更新頻度
・実行可能なアプリケーションの種類
・アプリケーションのコードの制御対象に対する操作権限の種類
なお、一部のパラメータは固定値としておき、残りのパラメータは、仮想デスクトップ用サーバ１１０での利用可能な計算機資源などに応じて、動的に変更してもよい。例えば、生成された仮想計算機１１６のうち非使用中の一部の仮想計算機１１６について、「メモリの占有可能な最大容量」を制限するように変更してもよい。すなわち、本明細書において、「仮想計算機１１６の種類」とは、ＯＳ種別、利用可能な計算機資源、利用可能なアプリケーション、設定されたパラメータなどに応じたバリエーションを意味する。
【００８１】
仮想計算機１１６の種類（タイプ）については、ユーザが任意に選択するようにしてもよい。あるいは、ユーザ種別（例えば、一般ユーザ、管理者ユーザ、メンテナンスユーザの区分）と仮想計算機１１６の種類とを予め対応付けしておき、ログインしたユーザのユーザ種別に応じて、対応する種類の仮想計算機１１６を自動的に提供するようにしてもよい。あるいは、ユーザの年齢・性別・職制・端末装置２１０の固有情報（配置されてい位置や拠点など）に応じて、動的または静的に仮想計算機１１６の種類を決定してもよい。
【００８２】
さらに、ユーザ種別に割り当てられる、制御対象のうちの操作可能な範囲、または、操作可能な内容、に応じた種類の仮想計算機１１６を提供するようにしてもよい。本明細書において、制御対象に対する操作権限とは、計算機システム１が管理する制御対象のうち、各ユーザに対して付与されている制御対象の範囲または種類などを意味する。制御対象に対する操作権限が異なるとは、あるユーザに対して付与されている制御対象の範囲または種類が、他のユーザに対して付与されている制御対象の範囲または種類とは異なることを意味する。
【００８３】
図６は、本実施の形態に係る計算機システム１において端末装置２１０上で提供される仮想デスクトップ画面の一例を示す図である。図６（Ａ）に表示される仮想デスクトップ画面２１０７と、図６（Ｂ）に表示される仮想デスクトップ画面２１０８とを比較すると、下部に表示されるアイコンなどが異なっている。また、仮想デスクトップ画面２１０７では、２つのアプリケーション２１０７Ａおよび２１０７Ｂが実行中になっており、仮想デスクトップ画面２１０８では、１つのアプリケーション２１０８Ａが実行中になっている。
【００８４】
図６に示す２つの仮想デスクトップ画面はあくまでも一例であるが、本実施の形態に係る計算機システム１は、多様な種類の仮想計算機１１６（仮想デスクトップ画面）を容易に提供することができる。
【００８５】
このような複数種類の仮想計算機１１６を予め用意しておくことで、端末装置２１０からの接続要求を受けたときに、その接続要求に含まれるタイプ指定に応じた種類の仮想計算機１１６を迅速に提供することができる。
【００８６】
（ｄ３：仮想計算機の生成手法）
上述したように、本実施の形態に係る計算機システム１では、複数の仮想デスクトップ用サーバ１１０の間で分散して、複数の仮想計算機１１６を論理的に生成および保持するので、共通のソフトウェアを集中管理するという方式を採用する。
【００８７】
図７は、本実施の形態に係る計算機システム１における仮想計算機１１６の生成方法を説明するための模式図である。図７を参照して、仮想デスクトップ用サーバ１１０は、ゲスト共通部１１８０とゲスト固有部１１８１〜１１８４とから、それぞれの仮想計算機１１６を生成する。
【００８８】
仮想デスクトップ用サーバ１１０では多くのサーバ資源を必要とするため、マスタとなる仮想計算機（ゲスト共通部１１８０）を基本として、複数種類に派生させる方式を採用する。より具体的には、図７に示す例では、ゲスト共通部１１８０およびゲスト固有部１１８１から仮想計算機１１６Ａが生成される。また、ゲスト共通部１１８０およびゲスト固有部１１８１から仮想計算機１１６Ｂが生成される。また、ゲスト共通部１１８０およびゲスト固有部１１８１から仮想計算機１１６Ｃが生成される。また、ゲスト共通部１１８０およびゲスト固有部１１８１から仮想計算機１１６Ｄが生成される。
【００８９】
すなわち、ゲスト共通部１１８０およびゲスト固有部１１８１〜１１８４は、典型的には、ソースコードまたはオブジェクトコードを含み、これらをプロセッサが読み出して実行することで、多種類の仮想計算機１１６を生成できる。
【００９０】
ゲスト共通部１１８０は、典型的には、仮想計算機１１６を実現するＯＳ１１８（ゲストＯＳ）が格納されている。これに対して、ゲスト固有部１１８１〜１１８４は、典型的には、ＯＳ１１８（ゲストＯＳ）で実行される各種アプリケーションのコードが格納されている。このように、仮想デスクトップ用サーバ１１０は、仮想計算機群に共通のコード（ゲスト共通部１１８０）と、仮想計算機群の各種類に固有のコード（ゲスト固有部１１８１〜１１８４）とを用いて、種類別に仮想計算機群をそれぞれ生成する。
【００９１】
図７には、ゲスト共通部１１８０とゲスト固有部１１８１〜１１８４のうち１つとから、仮想計算機１１６が生成される処理例を示すが、ゲスト共通部１１８０と複数のゲスト固有部とから仮想計算機１１６を生成してもよい。例えば、図６（Ａ）に示すように、２つのアプリケーション２１０７Ａおよび２１０７Ｂが実行される場合には、それぞれのアプリケーションのコードを別々のゲスト固有部に格納しておくこともできる。そして、仮想計算機１１６を生成する際には、それぞれのアプリケーションが格納された２つのゲスト固有部を読出すことで、仮想デスクトップ画面２１０７を提供できる。
【００９２】
さらに、ゲスト共通部１１８０は、読み取り専用属性（Ｒｅａｄ  Ｏｎｌｙ）に設定されている。すなわち、仮想計算機１１６の種類などに依存することなく、固有のパラメータなどが設定された状態になっている。これに対して、ゲスト固有部１１８１〜１１８４は、編集可能属性（Ｒｅａｄ／Ｗｒｉｔｅ）に設定されている。すなわち、状況などに応じて、必要に応じて内容が変更される。
【００９３】
このような構成を採用することで、複数の仮想計算機１１６間で共有可能なコードについては、読み取り専用属性を設定してマスターディスク化する一方で、ゲスト固有部１１８１〜１１８４に関連して、書き込みを行なうファイルやディレクトリを別の格納領域に分離させることができる。このような２種類の属性の異なる部分を用いることで、実現されるソフトウェアの実態は１つであっても、複数のゲストＯＳを起動させることが可能となり、ソフトウェアの更新などの保守性を向上させることができる。また、仮想計算機１１６を実現するための共通部分を共有化するで、ディスク資源の使用量を削減できる。すなわち、本実施の形態に係る計算機システム１では、仮想計算機１１６のマスタの情報を基礎として、それぞれの仮想計算機１１６へ展開することにより、ソフトウェアの更新作業量を低減するとともに、各仮想計算機１１６用の生成に必要なコードの共通部分を共有することによりディスク資源を削減できる。
【００９４】
図７に示すような構成を採用することで、仮想計算機群の単位で、実行するゲストＯＳ、ゲストＯＳで実行される各種アプリケーションのコード、アプリケーションのコードの制御対象に対する操作権限を任意に組み合わせることができる。そのため、ある仮想計算機群と他の仮想計算機群との間では、実行するゲストＯＳは同一であるが、アプリケーションのコードの制御対象に対する操作権限が異なる場合や、その逆に、実行するゲストＯＳは異なるが、アプリケーションのコードの制御対象に対する操作権限は同一である場合などが生じ得る。
【００９５】
図８は、本実施の形態に係る計算機システム１が提供する仮想計算機群の構成例を示す模式図である。図８には、一例として、５種類の仮想計算機群１１６Ｇ１〜１１６Ｇ５が生成および保持されている状態を示す。
【００９６】
仮想デスクトップ用サーバ１１０の各々は、図８に示すように、ホストＯＳ上に、ゲストＯＳと当該ゲストＯＳ上で実行するアプリケーションのコードとの組み合わせが互いに異なる複数種類の仮想計算機を予め生成し、それら生成した仮想計算機をホットスタンバイの状態で保持する。
【００９７】
仮想計算機群１１６Ｇ１に含まれる各仮想計算機では、ＡタイプのゲストＯＳが実行されており、当該ゲストＯＳ上では、Ａタイプの操作権限が付与されているアプリケーションが実行されているとする。仮想計算機群１１６Ｇ２に含まれる各仮想計算機では、ＡタイプのゲストＯＳが実行されており、当該ゲストＯＳ上では、Ｂタイプの操作権限が付与されているアプリケーションが実行されているとする。仮想計算機群１１６Ｇ３に含まれる各仮想計算機では、ＢタイプのゲストＯＳが実行されており、当該ゲストＯＳ上では、Ａタイプの操作権限が付与されているアプリケーションが実行されているとする。仮想計算機群１１６Ｇ４に含まれる各仮想計算機では、ＢタイプのゲストＯＳが実行されており、当該ゲストＯＳ上では、Ｂタイプの操作権限が付与されているアプリケーションが実行されているとする。仮想計算機群１１６Ｇ５に含まれる各仮想計算機では、ＢタイプのゲストＯＳが実行されており、当該ゲストＯＳ上では、Ｃタイプの操作権限が付与されているアプリケーションが実行されているとする。
【００９８】
コネクションブローカ１２０の各々は、端末装置２１０から仮想計算機への接続要求を受信した場合に、当該接続要求に含まれる、当該端末装置に提供すべきクライアント環境（デスクトップ環境）の種類に関する情報に基づいて、ホットスタンバイの状態で保持されている複数種類の仮想計算機の中から、当該端末装置２１０に提供すべきクライアント環境を有する仮想計算機を選択する。そして、コネクションブローカ１２０の各々は、選択した仮想計算機と端末装置２１０との接続を仮想デスクトップ用サーバ１１０に対して指示する。
【００９９】
ホットスタンバイの状態で保持されている仮想計算機の群は、それぞれの仮想計算機が実行するゲストＯＳ、および、ゲストＯＳ上で実行されるアプリケーションのコードの制御対象に対する操作権限、の少なくとも一方が互いに異なる。
【０１００】
すなわち、図８に示すように、仮想デスクトップ用サーバ１１０がホットスタンバイの状態で保持する複数種類の仮想計算機は、実行するゲストＯＳが互いに異なる複数の仮想計算機（例えば、仮想計算機群１１６Ｇ１，１１６Ｇ２と仮想計算機群１１６Ｇ３〜１１６Ｇ５）、および／または、実行するアプリケーションのコードの制御対象に対する操作権限が互いに異なる複数の仮想計算機（例えば、仮想計算機群１１６Ｇ１，１１６Ｇ３と仮想計算機群１１６Ｇ２，１１６Ｇ４）を含む。
【０１０１】
ここで、仮想デスクトップ用サーバ１１０がホットスタンバイの状態で保持する複数種類の仮想計算機は、実行するゲストＯＳが互いに同一である複数の仮想計算機（例えば、仮想計算機群１１６Ｇ１と仮想計算機群１１６Ｇ２）、および／または、実行するアプリケーションのコードが互いに同一である複数の仮想計算機（例えば、仮想計算機群１１６Ｇ１と仮想計算機群１１６Ｇ３）を含む。このような互いに同一であるゲストＯＳまたは互いに同一であるアプリケーションのコードは、図７に示すように、共通の記憶部に記憶されたソースコードまたはオブジェクトコードを読み出して実行される。
【０１０２】
（ｄ４：仮想計算機の状態管理）
本実施の形態に係る計算機システム１では、仮想計算機１１６をホストする仮想デスクトップ用サーバ１１０にて各仮想計算機１１６の状態を管理する機能が実装される。後述するように、コネクションブローカ１２０は、端末装置２１０からの接続要求を受信すると、仮想デスクトップ用サーバ１１０に要求して仮想計算機１１６の状態を確認する。仮想計算機１１６の状態としては、主として、非使用中（ｆｒｅｅ）および使用中（ｂｕｓｙ）である。
【０１０３】
図９は、本実施の形態に係る計算機システム１における仮想計算機１１６の状態管理を説明するための模式図である。図９に示すような、それぞれの仮想計算機１１６の状態を管理する情報は、典型的には、コネクションブローカ１２０上の記憶領域にデータベースやファイルなどの形で格納される。但し、格納場所および格納形態については、何ら限定されることなく、ソフトウェアおよびハードウェア上の制限内で、任意に設計できる。また、図９には、仮想計算機１１６の状態を模式的に示し、図９に示される模式図の形で、コネクションブローカ１２０上に保持されるわけではない。
【０１０４】
図９を参照して、コネクションブローカ１２０は、仮想計算機１１６が起動されると、その状態を初期化して非使用中（ｆｒｅｅ）に移行させる。そして、いずれかの端末装置２１０に対して、仮想計算機１１６を割り当てると、その割り当てた仮想計算機１１６の状態を使用中（ｂｕｓｙ）に移行させる。
【０１０５】
仮想デスクトップ用サーバ１１０で論理的に生成された仮想計算機１１６のセッション管理部１１６６が仮想計算機１１６のセッションを管理する。具体的には、コネクションブローカ１２０による問合せに対して、仮想計算機１１６のセッション管理部１１６６が仮想計算機１１６の現在の利用状況を応答する。それぞれの仮想計算機１１６（セッション管理部１１６６）からの応答は、コネクションブローカ１２０で受信される。そして、コネクションブローカ１２０の仮想クライアント割り当て処理部１２８が、それぞれの応答に基づいて、図９に示すようなそれぞれの仮想計算機１１６の利用状況を逐次更新する。
【０１０６】
仮想計算機１１６のセッション管理部１１６６は、仮想計算機１１６の死活を仮想クライアント割り当て処理部１２８へ通知する。すなわち、仮想計算機１１６が正常に動作しているか否かを応答する。
【０１０７】
図８に示すような仮想計算機１１６の状態を含む情報は、割り当て情報１２８２（図１５参照のこと）として、コネクションブローカ１２０の間で共有される。割り当て情報１２８２の共有処理は、コネクションブローカ１２０のデータミラー処理部１２４（図２）によって実現される。
【０１０８】
割り当て情報１２８２には、仮想計算機１１６の状態（使用中／非使用中）に加えて、各仮想計算機１１６のＯＳ種別、ＣＰＵ個数、メモリサイズ、実装モードなどの情報を含んでいてもよい。
【０１０９】
（ｄ５：ホットスタンバイ率）
図５に示すように、本実施の形態に係る計算機システム１では、計算機システム１に含まれる端末装置２１０の総数Ｎと同数の仮想計算機からなる。例えば、図５（Ａ）に示される仮想計算機群１１６ＧＡは、端末装置２１０の総数Ｎと同数のＡタイプの仮想計算機１１６を含む。この場合には、仮に、計算機システム１に含まれるすべての端末装置２１０がＡタイプを指定して仮想計算機１１６に接続したとしても、すべての接続要求に応えることができる。
【０１１０】
このように、計算機システム１に含まれるすべての端末装置２１０の総数に対する、利用可能な仮想計算機１１６の数を「ホットスタンバイ率」と定義する。端末装置２１０の総数Ｎと同数のＡタイプの仮想計算機１１６からなる仮想計算機群１１６ＧＡについては、ホットスタンバイ率は「１００％」となる。
【０１１１】
このホットスタンバイ率については、ある種類の仮想計算機群１１６Ｇについては、１００％であることが好ましいが、別の種類については、１００％である必要もない場合がある。例えば、上述したような、「一般ユーザ」や「管理ユーザ」としてログインした場合に提供される種類の仮想計算機１１６については、比較的使用頻度が高いため、ホットスタンバイ率は「１００％」であることが好ましい。
【０１１２】
これに対して、「メンテナンスユーザ」としてログインした場合に提供される種類の仮想計算機１１６については、同時に利用される可能性は低いので、ホットスタンバイ率は「１００％」である必要は必ずしもない。
【０１１３】
例えば、提供される仮想計算機１１６の種類、要求頻度、重要性などに応じて、以下の表のようにホットスタンバイ率を決定してもよい。
【０１１４】
【表１】
0006381492.tif 000002
【０１１５】
すなわち、仮想デスクトップ用サーバ１１０がホットスタンバイの状態で保持する複数種類の仮想計算機の数は、アプリケーションのコードの制御対象に対する操作権限が同一である仮想計算機の群毎に異なっていてもよい。また、一般ユーザ、管理者ユーザ、メンテナンスユーザのそれぞれに、制御対象に対する操作権限が異なるアプリケーションコードを実行する仮想計算機を、割り当ててもよい。
【０１１６】
コネクションブローカ１２０は、端末装置２１０からユーザの識別子（ユーザ名）を含む接続要求を受信し、そのユーザの識別子と予め記憶している任意のテーブルとから当該接続要求の送信元に提供すべきクライアント環境の種類を特定してもよい。この場合、端末装置２１０から送信されるクライアント環境の種類に関する情報は、端末装置２１０に入力されるユーザの識別子を含む。一方、コネクションブローカ１２０は、ユーザの識別子に基づいて端末装置２１０に提供すべきクライアント環境を選択する。
【０１１７】
なお、同一の制御対象に対し、同一の操作権限を有するアプリケーションを、ユーザの好みに応じて異なるゲストＯＳの環境下で提供してもよい。この場合には、仮想デスクトップ用サーバ１１０がホットスタンバイの状態で保持する複数種類の仮想計算機は、実行するゲストＯＳが互いに異なるとともに、実行するアプリケーションのコードの制御対象および前記アプリケーションのコードの当該制御対象に対する操作権限がいずれも同一であってもよい（図８など参照）。
【０１１８】
サーバ拠点１００に配置される仮想デスクトップ用サーバ１１０の計算機資源の制約などを考慮して、ホットスタンバイ率を動的に変更してもよい。この場合、物理計算機１１４で実行される管理部１１５（図２参照）が、生成および保持される仮想計算機１１６の種類および数を適宜変更する。
【０１１９】
例えば、複数の端末装置２１０において提供可能なクライアント環境の種類間の優先順位に応じて、仮想計算機群にそれぞれ含ませる仮想計算機１１６の数を決定してもよい。すなわち、使用頻度（要求頻度）が相対的に高い種類の仮想計算機１１６については、可能な限りホットスタンバイ率を「１００％」に維持する一方で、使用頻度（要求頻度）が相対的に低い種類の仮想計算機１１６については、ホットスタンバイ率を「１００％」未満にしてもよい。
【０１２０】
あるいは、運用拠点２００における端末装置２１０の現状の稼働状態などに基づいて、ホットスタンバイ率を動的に決定してもよい。この場合、物理計算機１１４で実行される管理部１１５（図２参照）が、生成および保持される仮想計算機１１６の種類および数を適宜変更する。
【０１２１】
例えば、複数の端末装置２１０において提供可能なクライアント環境の種類毎の稼働状況に応じて、仮想計算機群にそれぞれ含ませる仮想計算機１１６の数を決定してもよい。例えば、ある時点で、計算機システム１に含まれる端末装置２１０の総数Ｎの約半数が「一般ユーザ」に対応する種類の仮想計算機１１６を要求している場合には、さらに「一般ユーザ」に対応する種類の仮想計算機１１６が要求される潜在性を考慮して、当該種類の仮想計算機１１６を予め余分に生成しておいてもよい。逆に、「一般ユーザ」に対応する種類の仮想計算機１１６が既に十分に割り当てられていることを考慮して、他の種類の仮想計算機１１６を予め余分に生成しておいてもよい。
【０１２２】
なお、本実施の形態に係る計算機システム１において、いずれかの端末装置２１０から特定の仮想計算機１１６の割り当てが要求された際に、割り当て可能な（非使用中の）仮想計算機１１６が残っていない場合には、仮想デスクトップ用サーバ１１０は、要求された種類の仮想計算機１１６を新たに生成することができる。つまり、端末装置２１０からの接続要求に対して即時に応答することはできないものの、対象の仮想計算機１１６の起動に要する時間だけ待てば、要求された種類の仮想計算機１１６を提供することができる。そのため、即時性の要求されない種類の仮想計算機１１６については、ホットスタンバイの状態ではなく、要求があってから起動する、すなわち一種のコールドスタンバイの状態で保持していてもよい。
【０１２３】
［Ｅ．接続手順］
次に、運用拠点２００の端末装置２１０からの要求に応じて、サーバ拠点１００から当該端末装置２１０に対してクライアント環境が提供される接続手順について説明する。すなわち、複数の仮想計算機１１６のうち選択された仮想計算機１１６を端末装置２１０に割り当てる処理について説明する。
【０１２４】
（ｅ１：接続処理の概要）
図１０は、本実施の形態に係る計算機システム１におけるクライエント環境の提供を開始するための接続処理の手順を示す模式図である。図１０には、運用拠点２００Ａの端末装置２１０Ａがネットワーク２を介して仮想計算機１１６に接続するまでの概要を示す。
【０１２５】
図１０を参照して、まず、運用拠点２００Ａに配置されている端末装置２１０Ａからサーバ拠点１００Ａに配置されているコネクションブローカ１２０Ａ１に対して、ネットワーク２を介して接続要求が送信される（シーケンスＳＱ２）。
【０１２６】
接続要求を受信したコネクションブローカ１２０Ａ１は、仮想計算機１１６の空き状態を確認するために、仮想デスクトップ用サーバ１１０Ａに対して仮想計算機１１６の状態確認を要求する（シーケンスＳＱ４）。仮想デスクトップ用サーバ１１０Ａは、管理している仮想計算機１１６の状態を確認し、その結果を状態返信としてコネクションブローカ１２０Ａ１へ返信する（シーケンスＳＱ６）。コネクションブローカ１２０Ａ１は、仮想デスクトップ用サーバ１１０Ａからの状態返信に基づいて、利用可能な仮想計算機１１６のネットワークアドレス（典型的には、ＩＰアドレス）を含む接続先情報を端末装置２１０Ａへ返信する（シーケンスＳＱ８）。以下の説明では、ネットワークアドレスの典型例であるＩＰアドレスを用いる場合について説明するが、端末装置２１０が特定の仮想計算機１１６に接続できる情報であれば、どのようなネットワークアドレスを用いてもよい。
【０１２７】
接続先情報を受信した端末装置２１０は、受信した接続先情報に含まれるＩＰアドレスに従って、ネットワーク２を介して仮想計算機１１６と直接接続する（シーケンスＳＱ１０）。
【０１２８】
図１０に示すように、本実施の形態に係る計算機システム１では、コネクションブローカ１２０は、接続要求（割り当て要求）の要求元の端末装置２１０に対して、割り当てた仮想計算機１１６のネットワークアドレス（ＩＰアドレス）を通知する。これに対して、端末装置２１０は、通知されたネットワークアドレス（ＩＰアドレス）に基づいて、割り当てられた仮想計算機１１６に接続する。このような構成を採用することで、コネクションブローカ１２０が接続処理のすべてを担当する場合に比較して、処理の負荷を低減できる。
【０１２９】
本実施の形態に係る計算機システム１では、端末装置２１０と仮想デスクトップ用サーバ１１０との間でセキュアな通信が可能になっている。より具体的には、セキュアな通信が要求された場合には、仮想計算機１１６の暗号処理部１１６２（図３）が、サーバ処理部１１６４（図３）のポートを端末装置２１０側にポートフォワーディングする。端末装置２１０は、サーバ処理部１１６４によってポートフォワードされたlocalhostに接続する。これによって、端末装置２１０と仮想デスクトップ用サーバ１１０との間でセキュアな通信を確立できる。
【０１３０】
このような一連の処理によって、端末装置２１０Ａにて仮想計算機１１６が利用可能になる。
【０１３１】
（ｅ２：端末装置およびコネクションブローカでの処理手順）
次に、端末装置２１０にクライエント環境を提供する際の処理手順について説明する。すなわち、端末装置２１０は、サーバ拠点１００に対して接続要求を送信し、サーバ拠点１００から割り当てられる仮想計算機１１６により提供されるクライアント環境（デスクトップ環境）を実行する。
【０１３２】
図１１は、本実施の形態に係る計算機システム１における端末装置２１０での画面表示例を示す模式図である。図１２および図１３は、本実施の形態に係る計算機システム１における端末装置２１０での処理手順を示すフローチャートである。
【０１３３】
図１２および図１３に示すＳ２００〜Ｓ２４０は、典型的には、端末装置２１０のプロセッサが、ＯＳ２１２を含む、暗号処理部２１４、クライアント処理部２１６、および接続処理部２１８に対応するプログラムを実行することで実現される。また、図１２および図１３に示すＳ２００〜Ｓ２４０は、典型的には、コネクションブローカ１２０のプロセッサが、ＯＳ１１２を含む、データミラー処理部１２４、構成制御処理部１２６、および仮想クライアント割り当て処理部１２８に対応するプログラムを実行することで実現される。
【０１３４】
図１２および図１３を参照して、端末装置２１０は、仮想デスクトップ用サーバ１１０Ａが保持する仮想計算機１１６を利用するために、まず、いずれかのコネクションブローカ１２０に接続する。より具体的には、端末装置２１０は、以下のステップＳ２００〜Ｓ２０８の処理を実行する。
【０１３５】
端末装置２１０は、仮想計算機１１６への新規接続がユーザから指示されたか否かを判断する（ステップＳ２００）。図１１（Ａ）に示すように、いずれの仮想計算機１１６にも接続されていない状態において、端末装置２１０には、メニュー画面２１０１が表示される。メニュー画面２１０１には、典型的には、ユーザ名を入力するフィールド２１０２、パスワードを入力するフィールド２１０３、および、デスクトップのタイプを選択するコンボボックス２１０４が表示されている。ユーザは、これらのフィールド２１０２，２１０３に予め決められた文字・数値を入力するとともに、コンボボックス２１０４から目的のデスクトップのタイプを選択する。
【０１３６】
このようなユーザの入力操作によって、端末装置２１０では新規接続の要求が内部的に生成される。すなわち、ユーザから入力された新規接続の要求には、タイプ指定が含まれることになる。
【０１３７】
仮想計算機１１６への新規接続がユーザから指示された場合（ステップＳ２００においてＹＥＳの場合）には、端末装置２１０は、サーバ拠点１００Ａおよび１００Ｂのうちいずれか一方のサーバ拠点に配置されたコネクションブローカ１２０に接続し（ステップＳ２０２）、接続要求の送信先として適切なサーバ拠点であるか否を問い合わせる（ステップＳ２０４）。接続要求の送信先として適切なサーバ拠点ではないとの応答を受信すると（ステップＳ２０４においてＮＯの場合）、端末装置２１０は、もう一方のサーバ拠点１００に配置されたコネクションブローカ１２０に接続し（ステップＳ２０６）、接続要求の送信先として適切なサーバ拠点であるか否を問い合わせる（ステップＳ２０４）。問合せを受けたコネクションブローカ１２０は、自装置が属しているサーバ拠点１００がマスタである場合には、適切なサーバ拠点である旨を応答し、そうでなければ、適切なサーバ拠点ではない旨を応答する。
【０１３８】
より具体的には、コネクションブローカ１２０は、接続要求の送信先として適切なサーバ拠点であるか否の端末装置２１０からの問合せを受信する（ステップＳ１００）と、自装置が属するサーバ拠点１００がマスタとして機能しているか否かを判断する（ステップＳ１０２）。自装置が属するサーバ拠点１００がマスタとして機能していれば（ステップＳ１０２においてＹＥＳの場合）、コネクションブローカ１２０は、適切なサーバ拠点である旨を応答する（ステップＳ１０４）。これに対して、自装置が属するサーバ拠点１００がスレーブとして機能していれば（ステップＳ１０２においてＮＯの場合）、コネクションブローカ１２０は、適切なサーバ拠点ではない旨を応答する（ステップＳ１０６）。
【０１３９】
接続要求の送信先として適切なサーバ拠点であるとの応答を受信すると（ステップＳ２０４においてＹＥＳの場合）、端末装置２１０は、当該応答の送信元であるコネクションブローカ１２０のＩＰアドレス（通常は、仮想ＩＰアドレス）を内部に格納する（ステップＳ２０８）。端末装置２１０は、これ以降にコネクションブローカ１２０へ接続する際には、この内部に格納したＩＰアドレスを用いる。
【０１４０】
後述するように、サーバ拠点１００が被災するなどしてサービスを継続することができなくなった場合には、別のサーバ拠点１００がマスタに切り替わるが、この場合には、端末装置２１０の内部に格納されたＩＰアドレスに対応するコネクションブローカ１２０は応答しないことになる。あるいは、接続要求または問合せに対して、適切なサイトではない旨を応答することになる。この場合には、端末装置２１０は、再度、他方のサーバ拠点１００に配置されたコネクションブローカ１２０に接続し、接続要求の送信先として適切なサーバ拠点であるか否を問い合わせることになる。
【０１４１】
上述のような処理を採用することで、サーバ拠点１００をマスタおよびスレーブの二拠点化したことにより、運用拠点２００の端末装置２１０から誤ってスレーブのサーバ拠点１００に接続する場合が想定される。このような場合であっても、コネクションブローカ１２０が明示的にエラーを返すので、ユーザは、接続先を誤ったことを認識でき、正しいサーバ拠点１００を指定することが容易化される。
【０１４２】
以上のような事前処理が完了すると、端末装置２１０は、当該サーバ拠点に配置されたコネクションブローカ１２０との間で、仮想計算機１１６への接続に必要な処理を開始する。すなわち、端末装置２１０は、仮想計算機１１６のタイプ指定を含む仮想計算機１１６への接続要求をコネクションブローカ１２０へ送信する（ステップＳ２１０）。
【０１４３】
一方、コネクションブローカ１２０では、上述するような割り当て処理が行なわれ、割り当てられた仮想計算機１１６のＩＰアドレスを含む情報が応答される。より具体的には、コネクションブローカ１２０は、仮想計算機１１６への接続要求を端末装置２１０から受信する（ステップＳ１１０）と、受信した接続要求に含まれるタイプ指定に合致し、かつ使用されていない仮想計算機１１６のうち最も順位の高いものを選択する（ステップＳ１１２）。さらに、コネクションブローカ１２０は、選択された仮想計算機１１６を実行するホスト計算機である仮想デスクトップ用サーバ１１０が、正常に動作しているか否かを判断する（ステップＳ１１４）。正常に動作していなければ（ステップＳ１１４においてＮＯの場合）、コネクションブローカ１２０は、次に順位の高い仮想計算機１１６を選択し（ステップＳ１１６）、ステップＳ１１４以下の処理を再度実行する。
【０１４４】
正常に動作していれば（ステップＳ１１４においてＹＥＳの場合）、コネクションブローカ１２０は、選択した仮想計算機１１６を使用中（ｂｕｓｙ）の状態に移行させ（ステップＳ１１８）、当該選択した仮想計算機１１６のＩＰアドレスを含む情報を端末装置２１０へ応答する（ステップＳ１２０）。
【０１４５】
端末装置２１０は、コネクションブローカ１２０からの応答を受信すると、当該受信した応答に含まれる仮想計算機１１６を指定するＩＰアドレスを取得する（ステップＳ２１２）。
【０１４６】
端末装置２１０は、取得したＩＰアドレスを有する仮想計算機１１６に接続するための処理を実行し（ステップＳ２１４）、接続するための処理が正常に終了したか否かを判断する（ステップＳ２１６）。具体的には、端末装置２１０の暗号処理部２１４（図２）は、指定されたＩＰアドレスを有する仮想計算機１１６に接続するとともに、接続先の仮想計算機１１６のサーバ処理部１１６４は、端末装置２１０へポートフォワーディングする。端末装置２１０は、サーバ処理部１１６４によってポートフォワードされたlocalhostに接続する。クライアント処理部２１６による接続処理が完了すると、暗号処理部２１４の終了ステータスが確認される。すなわち、暗号処理部２１４の終了ステータスが正常終了を示す値であるか否かが判断される。
【０１４７】
接続するための処理が正常に終了していなければ（ステップＳ２１６においてＮＯの場合）、端末装置２１０は、エラーメッセージを画面に表示し（ステップＳ２１８）、接続処理は一旦終了する。
【０１４８】
これに対して、接続するための処理が正常に終了していれば（ステップＳ２１６においてＹＥＳの場合）、端末装置２１０では、接続先の仮想計算機１１６の利用が開始される（ステップＳ２２０）。
【０１４９】
その後、仮想計算機１１６の解放がユーザから指示された場合（ステップＳ２３０においてＹＥＳの場合）には、端末装置２１０は、端末装置２１０のＩＰアドレスを含む、仮想計算機１１６の解放要求をコネクションブローカ１２０へ送信する（ステップＳ２３２）。すると、コネクションブローカ１２０は、解放要求の送信元の端末装置２１０に対して割り当てていた仮想計算機１１６の割り当てを解放する。そして、処理は終了する。
【０１５０】
より具体的には、コネクションブローカ１２０は、仮想計算機１１６の解放要求を端末装置２１０から受信する（ステップＳ１３０）と、使用中の仮想計算機１１６の中から、解放要求に含まれる端末装置２１０のＩＰアドレスに合致するものを検索する（ステップＳ１３２）。そして、コネクションブローカ１２０は、検索条件に合致した仮想計算機１１６を非使用中の状態（ｆｒｅｅ）に移行させ（ステップＳ１３４）、仮想計算機１１６の割り当ての解放完了を端末装置２１０へ通知する（ステップＳ１３６）。これによって、端末装置２１０での解放処理が完了する。
【０１５１】
この解放された仮想計算機１１６については、同一または別の端末装置２１０に対して再度割り当てることができる。このように、端末装置２１０からの仮想計算機１１６への接続要求に対し、非使用状態の仮想計算機１１６を割り当てる。そして、仮想計算機１１６の使用が終了した場合は、その仮想計算機１１６を解放し、それ以降に生じる接続要求に対して、それらの解放された仮想計算機１１６を再割り当てすることができる。そのため、システム資源の利用効率を高めることができる。
【０１５２】
一方、仮想計算機１１６の解放がユーザから指示されていなければ（ステップＳ２３０においてＮＯの場合）、ステップＳ２２０の処理が繰返される。
【０１５３】
また、仮想計算機１１６への新規接続がユーザから指示されていなければ（ステップＳ２００においてＮＯの場合）には、端末装置２１０は、仮想計算機１１６の接続中に何らかの障害により接続が切断され、その後、作業を継続するために再接続の要求がユーザから指示されたか否かを判断する（ステップＳ２４０）。作業を継続するために再接続の要求がユーザから指示されていなければ（ステップＳ２４０においてＮＯの場合）、ステップＳ２００以下の処理が繰返される。
【０１５４】
図１１（Ｂ）に示すように、端末装置２１０で何らかの仮想計算機１１６が接続されていた状態の後、何らかの障害が発生して、当該接続が切断された場合などには、端末装置２１０には、メニュー画面２１０５が表示される。メニュー画面２１０５には、典型的には、接続のエラーが発生した旨のメッセージに加えて、再接続を希望するか否かのボタン２１０６が表示されている。ユーザは、ボタン２１０６を選択すると、端末装置２１０では再接続の要求が内部的に生成される。
【０１５５】
このように、本実施の形態に係る計算機システム１では、仮想計算機１１６の使用終了がユーザから明示的に指示された場合に限って、対象の仮想計算機１１６を解放する。それ以外の場合には、基本的には、端末装置２１０との間の接続が切断されていたとしても、仮想計算機１１６を解放せずに維持する。これにより、端末装置２１０と仮想計算機１１６との間の接続に何らかの不具合が生じた場合であっても、再接続して途中まで行なっていた操作を継続することができる。
【０１５６】
これに対して、作業を継続するために再接続の要求がユーザから指示されていれば（ステップＳ２４０においてＹＥＳの場合）、端末装置２１０は、端末装置２１０のＩＰアドレスを含む仮想計算機１１６への再接続要求をコネクションブローカ１２０へ送信する（ステップＳ２４２）。
【０１５７】
コネクションブローカ１２０では、過去に行なった割り当て処理が検索され、要求元の端末装置２１０に割り当てられていた仮想計算機１１６を特定し、その仮想計算機１１６のＩＰアドレスを含む情報が応答される。より具体的には、コネクションブローカ１２０は、仮想計算機１１６への再接続要求を端末装置２１０から受信する（ステップＳ１４０）と、使用中の仮想計算機１１６の中から、再接続要求に含まれる端末装置２１０のＩＰアドレスに合致するものを検索する（ステップＳ１４２）。そして、コネクションブローカ１２０は、検索条件に合致した仮想計算機１１６を実行するホスト計算機である仮想デスクトップ用サーバ１１０が、正常に動作しているか否かを判断する（ステップＳ１４４）。正常に動作していなければ（ステップＳ１４４においてＮＯの場合）、コネクションブローカ１２０は、検索条件に合致した仮想計算機１１６を非使用中の状態に移行させ（ステップＳ１４６）、再接続のエラーを端末装置２１０へ通知する（ステップＳ１４８）。
【０１５８】
正常に動作していれば（ステップＳ１４４においてＹＥＳの場合）、コネクションブローカ１２０は、検索条件に合致した仮想計算機１１６のＩＰアドレスを含む情報を端末装置２１０へ応答する（ステップＳ１５０）。
【０１５９】
端末装置２１０は、コネクションブローカ１２０からの応答を受信すると、当該受信した応答に含まれる仮想計算機１１６を指定するＩＰアドレスを取得する（ステップＳ２４４）。
【０１６０】
端末装置２１０は、取得したＩＰアドレスを有する仮想計算機１１６に接続するための処理を実行し（ステップＳ２４６）、再接続するための処理が正常に終了したか否かを判断する（ステップＳ２４８）。ステップＳ２４８の処理は、上述のステップＳ２１６での処理と同様である。
【０１６１】
再接続するための処理が正常に終了していなければ（ステップＳ２４８においてＮＯの場合）、端末装置２１０は、エラーメッセージを画面に表示し（ステップＳ２５０）、接続処理は一旦終了する。
【０１６２】
これに対して、再接続するための処理が正常に終了していれば（ステップＳ２４８においてＹＥＳの場合）、端末装置２１０では、接続先の仮想計算機１１６の利用が再開される（ステップＳ２２０）。
【０１６３】
［Ｆ．冗長化構成および切り替え処理］
次に、本実施の形態に係る計算機システム１の冗長化構成およびそれに係る切り替え処理について説明する。
【０１６４】
図１０を参照して説明したように、運用拠点２００の端末装置２１０がコネクションブローカ１２０に接続要求を送信すると、その接続要求を受信したコネクションブローカ１２０は、仮想計算機１１６の空き状態を確認した上で、利用可能な仮想計算機１１６のＩＰアドレスを含む接続先情報を端末装置２１０へ返信する。
【０１６５】
図１０に示すようなクライアント仮想化機構では、コネクションブローカ１２０が仮想計算機１１６の割り当て処理の主たる部分を担当することになるため、コネクションブローカ１２０に何らかの障害が発生すると、すべてのサービスを継続させることができない。
【０１６６】
また、広域ＩＰ網のネットワーク２を採用する場合には、サーバ拠点１００そのものが天災などで被災した場合や、ネットワーク故障が発生した場合には、同様にサービスを継続させることができない。
【０１６７】
そこで、本実施の形態に係る計算機システム１では、以下のような冗長化構成を採用することで、様々な障害が発生した場合であっても、サービスの継続性を高めるようになっている。
【０１６８】
（ｆ１：コネクションブローカの冗長化構成）
本実施の形態に係る計算機システム１では、サーバ拠点１００において、コネクションブローカ１２０を冗長化して構成しており、一方のコネクションブローカ１２０に何らかの障害が発生した場合、他方のコネクションブローカ１２０がサービスを引き継ぐことになる。
【０１６９】
図１４は、本実施の形態に係る計算機システム１におけるサーバ拠点１００のコネクションブローカ１２０の冗長化構成を説明するための模式図である。図１４を参照して、サーバ拠点１００Ａには、２つのコネクションブローカ１２０Ａ１および１２０Ａ２が設けられている。コネクションブローカ１２０Ａ１および１２０Ａ２は、アクティブ／スタンバイ方式で冗長化されている。
【０１７０】
図１４（Ａ）に示す状態においては、コネクションブローカ１２０Ａ１が運用系（アクティブ）の状態であり、コネクションブローカ１２０Ａ２が待機系（スタンバイ）の状態である。ここで、図１４（Ｂ）に示すように、運用系のコネクションブローカ１２０Ａ１に何らかの障害が発生した場合には、待機系のコネクションブローカ１２０Ａ２がコネクションブローカ１２０Ａ１の異常を検知し、図１４（Ｃ）に示すように、即座に待機系から新たな運用系へと変化して、直前と同様のサービスの提供を継続する。
【０１７１】
コネクションブローカ１２０Ａ１および１２０Ａ２の構成制御処理部１２６（図２）は、相互にコネクションブローカ１２０の状態を問い合わせる処理を行なっており、一方のコネクションブローカ１２０に何らかの異常が発生した場合には、その発生した異常を即座に検知できる。また、コネクションブローカ１２０Ａ１および１２０Ａ２のデータミラー処理部１２４（図２）は、コネクションブローカ１２０Ａ１とコネクションブローカ１２０Ａ２との間でデータの同期を取っているので、待機系から運用系への切り替わりは、シームレスに行なわれる。但し、端末装置２１０から見たＩＰアドレスの連続性を維持するために、待機系から運用系へ切り替わる際には、ＩＰアドレス（仮想ＩＰ−Ａ）も引き継ぐことになる。
【０１７２】
図１５は、本実施の形態に係る計算機システム１におけるサーバ拠点１００のコネクションブローカ１２０間のデータ移行を説明するための模式図である。図１５（Ａ）を参照して、サーバ拠点１００Ａ（サーバ拠点Ａ）側において、コネクションブローカ１２０Ａ１が運用系（アクティブ）の状態である。この状態において、端末装置２１０に対する仮想計算機の割り当て状況を示す割り当て情報１２８２は、運用系と待機系との間で同期して保持される。通常は、図１５（Ａ）に示すように、運用系のコネクションブローカ１２０Ａ１が待機系のコネクションブローカ１２０Ａ２に対して、割り当て情報１２８２の複製を提供（レプリケーション）する。そして、図１５（Ｂ）に示すように、運用系のコネクションブローカ１２０Ａ１に何らかの障害が発生した場合には、処理可能な範囲で、コネクションブローカ１２０Ａ１からコネクションブローカ１２０Ａ２へ割り当て情報１２８２の複製を提供される。そして、図１５（Ｃ）に示すように、コネクションブローカ１２０Ａ２は、割り当て情報１２８２を引き継いでサービスの提供を継続する。
【０１７３】
割り当て情報１２８２のレプリケーションの典型的な処理としては、コネクションブローカ１２０Ａ１のデータミラー処理部１２４が、コネクションブローカ１２０Ａ２のデータミラー処理部１２４に対して、割り当て情報１２８２の更新などを依頼し、コネクションブローカ１２０Ａ２のデータミラー処理部１２４がコネクションブローカ１２０Ａ２に保持されている情報を更新する。
【０１７４】
このように、本実施の形態に係る計算機システム１では、それぞれのサーバ拠点１００においてコネクションブローカ１２０に何らかの障害が発生した場合でもサービスを継続することができる。
【０１７５】
（ｆ２：サーバ拠点の冗長化構成）
本実施の形態に係る計算機システム１では、複数のサーバ拠点１００を分散配置することで、災害などによって、いずれかのサーバ拠点１００がサービスを継続することができなくなった場合には、残ったサーバ拠点１００を中心としてサービスを継続する。すなわち、サーバ拠点１００を冗長化することで、サービスの継続性を高める。
【０１７６】
図１６は、本実施の形態に係る計算機システム１におけるサーバ拠点１００の冗長化構成を説明するための模式図である。図１６を参照して、２つのサーバ拠点１００Ａおよびサーバ拠点１００Ｂが設けられている。サーバ拠点１００Ａおよびサーバ拠点１００Ｂは、マスタ／スレーブ方式で連係してサービスを提供する。図１６（Ａ）に示す状態においては、サーバ拠点１００Ａ（厳密には、コネクションブローカ１２０Ａ１）がマスタの状態であり、サーバ拠点１００Ｂ（厳密には、コネクションブローカ１２０Ｂ１）がスレーブの状態である。ここで、図１６（Ｂ）に示すように、マスタのサーバ拠点１００Ａが被災するなどしてサービスを継続することができなくなった場合には、スレーブのサーバ拠点１００Ｂがサーバ拠点１００Ａの異常を検知し、図１６（Ｃ）に示すように、即座にスレーブからマスタへと変化して、直前と同様のサービスの提供を継続する。
【０１７７】
コネクションブローカ１２０Ａ１およびコネクションブローカ１２０Ｂ１の構成制御処理部１２６（図２）は、相互にコネクションブローカ１２０の状態を問い合わせる処理を行なっており、一方のコネクションブローカ１２０を含むサービス拠点に何らかの異常が発生した場合には、その発生した異常を即座に検知できる。
【０１７８】
このように、本実施の形態に係る計算機システム１では、二拠点化されたサーバ拠点の一方が被災した場合でも、サービスを継続することができる。
【０１７９】
（ｆ３：ネットワークの冗長化構成）
本実施の形態に係る計算機システム１では、各サーバ拠点１００において、ネットワークを冗長化して構成しており、一方のネットワークに何らかの障害が発生した場合、他方のネットワークを介してサービスを継続することになる。
【０１８０】
図１７は、本実施の形態に係る計算機システム１におけるサーバ拠点１００のネットワークの冗長化構成を説明するための模式図である。図１７を参照して、サーバ拠点１００Ａには、２つのネットワーク２１および２２が並列的に設けられている。コネクションブローカ１２０は、ネットワーク２１およびネットワーク２２のいずれかを用いて、サービスを提供する。
【０１８１】
図１７（Ａ）に示す状態においては、コネクションブローカ１２０Ａ１はネットワーク２１を介してサービスを提供している。ここで、図１７（Ｂ）に示すように、コネクションブローカ１２０Ａ１のネットワーク２１を介した通信機能（典型的には、ネットワークインターフェイス１５８（図４））に障害が発生してサービスを継続することができなくなった場合には、コネクションブローカ１２０Ａ１は、そのネットワーク２１の異常を検知し、図１７（Ｃ）に示すように、使用するネットワークをネットワーク２１からネットワーク２２へ即座に変更して、直前と同様のサービスの提供を継続する。
【０１８２】
なお、端末装置２１０から見たＩＰアドレスの連続性を維持するために、待機系から運用系へ切り替わる際には、ＩＰアドレス（仮想ＩＰ−Ａ）も引き継ぐことになる。すなわち、コネクションブローカ１２０Ａ１は、ネットワーク２１において使用していたＩＰアドレス（仮想ＩＰ−Ａ）と同じＩＰアドレスをネットワーク２２でも引き継いで使用する。
【０１８３】
このように、本実施の形態に係る計算機システム１では、それぞれのサーバ拠点１００のコネクションブローカ１２０において、ネットワークインターフェイスに障害が発生した場合であっても、サービスを継続することができる。
【０１８４】
［Ｇ．利点］
本実施の形態に係る計算機システム１は、ネットワーク２を介して分散配置されたサーバ拠点にある計算機資源に集約し、クライアント端末である監視制御卓では仮想化した画面表示と操作入力処理のみが行なわれる。これによって、多数の運用拠点が存在する場合であっても、ソフトウェアの更新といった保守作業の量を低減できる。また、本発明の関連技術に係るクライアント仮想化機構では、一元管理された仮想的な計算機資源を使用するために、仮想計算機毎に個別のソフトウェア（アプリケーション）を準備する必要があったが、本実施の形態に係る計算機システム１は、これらのソフトウェアも一元管理するため、計算機の資源管理を低減でき、保守作業を容易化できる。
【０１８５】
本実施の形態に係る計算機システム１は、ネットワーク２を介してサーバ拠点１００自体を分散配置するとともに、各サーバ拠点１００に配置される計算機も冗長化している。そのため、単一的な故障が発生した場合でも、サービスを継続させることができる。
【０１８６】
本実施の形態に係る計算機システム１は、計算機システム１に含まれる端末装置２１０の総数を考慮して、複数種類の仮想計算機１１６が予め用意されて、ホットスタンバイの状態で維持される。そのため、端末装置２１０からいずれの種類の仮想計算機１１６の割り当てが要求されたとしても、要求された仮想計算機１１６を迅速に提供することができる。
【０１８７】
上述の実施の形態として例示した構成は、本発明の構成の一例であり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、一部を省略する等、変更して構成することも可能である。あるいは、実施の形態同士を組み合わせてもよい。
【０１８８】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１８９】
１  計算機システム、２，２１，２２  ネットワーク、４  フィールドネットワーク、１００，１００Ａ，１００Ｂ  サーバ拠点、１１０，１１０Ａ，１１０Ｂ  仮想デスクトップ用サーバ、１１４  物理計算機、１１６  仮想計算機、１１６Ｇ  仮想計算機群、１２０  コネクションブローカ、１２４  データミラー処理部、１２６  構成制御処理部、１２８  仮想クライアント割り当て処理部、１５０  プロセッサ、１５２  主メモリ、１５４  ハードディスク、１５６  障害監視モジュール、１５８  ネットワークインターフェイス、１６２  入力部、１６４  汎用インターフェイス、１６６  内部バス、２００，２００Ａ，２００Ｂ  運用拠点、２１０  端末装置、２１４，１１６２  暗号処理部、２１６  クライアント処理部、２１８  接続処理部、１１６４  サーバ処理部、１１６６  セッション管理部、１１８０  ゲスト共通部、１１８１〜１１８４  ゲスト固有部、１２８２  割り当て情報。
【図１】
0006381492.tif 000003
【図２】
0006381492.tif 000004
【図３】
0006381492.tif 000005
【図４】
0006381492.tif 000006
【図５】
0006381492.tif 000007
【図６】
0006381492.tif 000008
【図７】
0006381492.tif 000009
【図８】
0006381492.tif 000010
【図９】
0006381492.tif 000011
【図１０】
0006381492.tif 000012
【図１１】
0006381492.tif 000013
【図１２】
0006381492.tif 000014
【図１３】
0006381492.tif 000015
【図１４】
0006381492.tif 000016
【図１５】
0006381492.tif 000017
【図１６】
0006381492.tif 000018
【図１７】
0006381492.tif 000019