(57)【特許請求の範囲】
【請求項１】
各種処理を実行する複数の実行手段を備える複数の情報処理装置がネットワークを介して接続してある情報処理システムであって、
前記情報処理装置のそれぞれにおける処理負荷を検出する検出手段と、
該検出手段が検出したいずれかの情報処理装置における処理負荷が所定量以上である場合、該情報処理装置の実行手段のそれぞれの状態に基づいて、前記実行手段のそれぞれにおける動作環境のうちで、他の情報処理装置への移行が可能な動作環境を特定する特定手段と、
前記複数の情報処理装置のうちで、前記特定手段が特定した動作環境の受け入れが可能な情報処理装置を選択する選択手段と、
前記特定手段が特定した動作環境を、前記選択手段が選択した情報処理装置に移行させる移行手段と、
該移行手段が前記動作環境を移行中に、前記動作環境で処理を実行する実行手段が外部装置から取得した情報に従って所定の処理を実行するか否かを判断する手段と、
所定の処理を実行すると判断した場合、前記移行手段による移行処理を中断する手段と、
前記実行手段が実行する処理に基づいて、中断中の移行処理を再開させるか否かを判断する手段とを備え、
前記移行手段は、前記移行処理を再開させると判断された場合、前記移行処理を再開し、前記移行処理を再開させないと判断された場合、前記移行処理を終了するようにしてある
ことを特徴とする情報処理システム。
【請求項２】
前記検出手段は、
前記情報処理装置が備える実行手段のそれぞれにおける処理負荷を検出する手段と、
検出した前記実行手段のそれぞれにおける処理負荷を合計し、前記情報処理装置における処理負荷を算出する手段と
を備えることを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記実行手段は、前記ネットワークを介して接続される外部装置から取得する情報に従った処理を実行するように構成してあり、
前記特定手段は、処理負荷が所定量以上である情報処理装置の実行手段のそれぞれが外部装置から取得した情報に従って実行する処理に基づいて、他の情報処理装置への移行が可能な動作環境を特定するように構成してあること
を特徴とする請求項１又は２に記載の情報処理システム。
【請求項４】
前記情報処理装置のそれぞれが、前記検出手段、前記特定手段、前記選択手段及び前記移行手段を備えることを特徴とする請求項１乃至３のいずれかひとつに記載の情報処理システム。
【請求項５】
前記ネットワークを介して前記複数の情報処理装置に接続される管理装置を備え、
該管理装置が、前記検出手段、前記特定手段、前記選択手段及び前記移行手段を備えることを特徴とする請求項１乃至３のいずれかひとつに記載の情報処理システム。
【請求項６】
各種処理を実行する複数の実行手段を備える複数の情報処理装置がネットワークを介して接続してある情報処理システムにおける情報処理方法であって、
前記情報処理装置のそれぞれにおける処理負荷を検出する検出ステップと、
該検出ステップで検出したいずれかの情報処理装置における処理負荷が所定量以上である場合、該情報処理装置の実行手段のそれぞれの状態に基づいて、前記実行手段のそれぞれにおける動作環境のうちで、他の情報処理装置への移行が可能な動作環境を特定する特定ステップと、
前記複数の情報処理装置のうちで、前記特定ステップで特定した動作環境の受け入れが可能な情報処理装置を選択する選択ステップと、
前記特定ステップで特定した動作環境を、前記選択ステップで選択した情報処理装置に移行させる移行ステップと、
前記動作環境を移行中に、前記動作環境で処理を実行する実行手段が外部装置から取得した情報に従って所定の処理を実行するか否かを判断するステップと、
所定の処理を実行すると判断した場合、前記動作環境の移行処理を中断するステップと、
前記実行手段が実行する処理に基づいて、中断中の移行処理を再開させるか否かを判断するステップと、
前記移行処理を再開させると判断された場合、前記移行処理を再開するステップと、
前記移行処理を再開させないと判断された場合、前記移行処理を終了するステップと
を含むことを特徴とする情報処理方法。
【請求項７】
コンピュータに、各種処理を実行する複数の実行手段を備える複数の情報処理装置がネットワークを介して接続してある情報処理システムを制御させるためのコンピュータプログラムであって、
コンピュータに、
前記情報処理装置のそれぞれにおける処理負荷を検出する検出ステップと、
該検出ステップで検出したいずれかの情報処理装置における処理負荷が所定量以上である場合、該情報処理装置の実行手段のそれぞれの状態に基づいて、前記実行手段のそれぞれにおける動作環境のうちで、他の情報処理装置への移行が可能な動作環境を特定する特定ステップと、
前記複数の情報処理装置のうちで、前記特定ステップで特定した動作環境の受け入れが可能な情報処理装置を選択する選択ステップと、
前記特定ステップで特定した動作環境を、前記選択ステップで選択した情報処理装置に移行させる移行ステップと、
前記動作環境を移行中に、前記動作環境で処理を実行する実行手段が外部装置から取得した情報に従って所定の処理を実行するか否かを判断するステップと、
所定の処理を実行すると判断した場合、前記動作環境の移行処理を中断するステップと、
前記実行手段が実行する処理に基づいて、中断中の移行処理を再開させるか否かを判断するステップと、
前記移行処理を再開させると判断された場合、前記移行処理を再開するステップと、
前記移行処理を再開させないと判断された場合、前記移行処理を終了するステップと
を実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シンクライアント方式により複数のユーザに、コンピュータによる処理を提供することができる情報処理システム、情報処理方法及びコンピュータプログラムに関する。
【背景技術】
【０００２】
通信インフラの普及が進み、またユビキタス社会とも言われるように、ユーザが時間、場所を問わずに自身が携帯する端末装置を用いて通信網を介した多様なサービスを受けることができる。しかし、ユーザが携帯する端末装置を多様なサービスに対応させるために高機能化させた場合、それぞれの端末装置のコストが上昇する。また、このような端末装置に大容量の記憶装置を備えさせた場合、当該端末装置が盗難、遺失等により失われたときは、記憶されている個人情報、企業の秘密情報等の各種情報の漏洩の危険性が高まり、情報の安全性が確保されない。
【０００３】
そこで、シンクライアント（thin client）システムが普及している。画面転送方式のシンクライアントシステムでは、ユーザが持つ端末装置を、例えばメモリ、ネットワークカード、グラフィックカード等の必要最低限のハードウェアで構成する。そして、実際の主な処理は、通信網を介して接続されるサーバ装置で行ない、端末装置は、処理の結果に基づく表示画面の情報をサーバ装置から取得してディスプレイに表示する。これにより、端末装置に備えるべきハードウェアを最小限にしてコストを抑え、更に情報の漏洩を防止することができる。
【０００４】
また、近年では、仮想ＰＣ（Personal Computer ）方式のシンクライアントシステムが、コスト削減に効果があるとして注目を集めている。仮想ＰＣ方式とは、サーバ装置において、仮想マシンモニタ（ＶＭＭ：Virtual Machine Monitor ）、ハイパーバイザ等と呼ばれる技術によってサーバ装置内のハードウェアを仮想化し、その上で複数のゲストＯＳ（Operating System）（仮想ＰＣ）を実行させる方式であり、サーバ装置に対して同時に接続可能な端末装置の数を増加させることができる。
【０００５】
このようなシンクライアントシステムでは、複数の端末装置（複数のユーザ）にそれぞれゲストＯＳが割り当てられるので、同一のサーバ装置内のゲストＯＳを割り当てられた複数のユーザがそれぞれのサーバ装置を共用する。従って、各ユーザの利用状況によって、それぞれのサーバ装置における処理負荷にばらつきが生じる。例えば、それぞれのサーバ装置において、処理負荷の大きい処理を実行しているユーザ（ゲストＯＳ）が多数存在する一方、処理負荷の小さい処理を実行しているユーザ（ゲストＯＳ）が多数存在する状況が発生する。
【０００６】
なお、処理負荷の大きい処理としては、例えば、ゲーム、動画のエンコード処理、文書作成処理等があり、処理負荷の小さい処理としては、例えば、写真の整理、World Wide Web（ウェブ）の閲覧等がある。このような場合、処理負荷の大きい処理を実行しているゲストＯＳが多く存在するサーバ装置においては、各ゲストＯＳが、サーバ装置のリソースを十分に利用できない状況が生じる可能性がある。
【０００７】
そこで、それぞれのサーバ装置における処理負荷を考慮し、各ゲストＯＳが実行する処理をそれぞれのサーバ装置に均等に分散させる方法が研究されている。例えば、各端末装置（各ユーザ）にゲストＯＳを割り当てる場合に、その時点で最も処理負荷の小さいサーバ装置のゲストＯＳを割り当てる方法がある。また、各ゲストＯＳの処理負荷を学習し、学習結果に基づいてゲストＯＳを割り当てるサーバ装置を決定する方法がある。このような方法により、サーバ装置の処理負荷の偏りを回避することができる。
【０００８】
また、画面転送方式のシンクライアントシステムにおいては、あるゲストＯＳの実行環境を、異なるサーバ装置のゲストＯＳに移行させて実行させるマイグレーション処理と呼ばれる技術がある（例えば、特許文献１参照）。マイグレーション処理は、あるゲストＯＳの実行環境の情報を一旦ネットワークストレージに保存し、この情報を異なるサーバ装置にロードすることによって、異なるサーバ装置のゲストＯＳで同じ実行環境を続行させる処理である。ゲストＯＳの実行環境の情報とは、例えば、仮想環境のメモリに格納してある情報及びデバイス情報等である。
【０００９】
マイグレーション処理は、ゲストＯＳの実行環境の情報をネットワークストレージに保存した後、所定のタイミングで異なるサーバ装置にロードするので、ゲストＯＳの実行環境を短時間で移行することができる。また、マイグレーション処理によって、各サーバ装置における処理負荷が分散されるので、各ゲストＯＳにおける動作環境の品質を全体的に向上させることができる。このようなマイグレーション処理は、例えば、各サーバ装置にメンテナンスを行なう場合、又は各サーバ装置における処理負荷を分散させる必要が生じた場合等、各ゲストＯＳの実行環境を異なるサーバ装置へ移行させる必要が生じた場合に有効である。
【特許文献１】特開２００６−２４４４８１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上述したマイグレーション処理は、異なるサーバ装置へ移行されるゲストＯＳの動作を一旦停止させて行なう。従って、マイグレーション処理の実行中は、端末装置からの操作ができなくなるので、ゲストＯＳを利用しているユーザの操作感覚に大きな影響を与えてしまう。例えば、端末装置のユーザがマウス又はキーボードを操作しているときにマイグレーション処理が実行されると、一時的に入力操作の受け付けが阻害され、直感的な入力操作に支障が生じる。また、例えば、端末装置のユーザがゲストＯＳにおいて仮想サウンドデバイスを実行させて端末装置で音楽を再生しているときにマイグレーション処理が実行されると、音楽再生が途切れる。
【００１１】
従って、単純にそれぞれのサーバ装置の性能を示すCentral Processing Unit（ＣＰＵ）使用率及びメモリ使用量のみに基づいてマイグレーション処理を実行させると、ユーザが使用中のゲストＯＳを一時停止させることによって、ユーザの操作性及び利便性を損なう虞がある。
【００１２】
本発明は斯かる事情に鑑みてなされたものであり、その目的とするところは、情報処理装置のいずれかの実行手段における動作環境を他の情報処理装置に移行させる際にユーザに与える影響を低減することができると共に、情報処理装置のそれぞれにおける処理負荷を所定量以下に維持することができる情報処理システム、情報処理方法及びコンピュータプログラムを提供することにある。
【課題を解決するための手段】
【００１３】
本願に開示する情報処理システムは、各種処理を実行する複数の実行手段を備える複数の情報処理装置がネットワークを介して接続してある情報処理システムであって、前記情報処理装置のそれぞれにおける処理負荷を検出する。また、本願に開示する情報処理システムは、検出したいずれかの情報処理装置における処理負荷が所定量以上である場合、所定量以上の処理負荷の情報処理装置の実行手段のそれぞれの状態に基づいて、実行手段のそれぞれにおける動作環境のうちで、他の情報処理装置への移行が可能な動作環境を特定し、前記複数の情報処理装置のうちで、特定された動作環境の受け入れが可能な情報処理装置を選択し、特定された動作環境を、選択された情報処理装置に移行させる。
【００１４】
本願に開示する情報処理システムによれば、いずれかの情報処理装置における処理負荷が所定量以上となった場合に、この情報処理装置の実行手段のそれぞれにおける動作環境のうちで、他の情報処理装置への移行が可能な動作環境を特定する。また、前記複数の情報処理装置のうちで、特定された動作環境の受け入れが可能な情報処理装置を選択し、特定された動作環境を、選択された情報処理装置に移行させる。よって、いずれかの情報処理装置における処理負荷が所定量以上となった場合に、この情報処理装置が備えるいずれかの実行手段が実行中の動作環境を他の情報処理装置へ移行することによって、この情報処理装置における処理負荷を減らすことが可能となる。また、動作環境を他の情報処理装置へ移行中に、この動作環境で所定の処理が実行される場合、この移行処理を一時中断する。そして、実行される処理に基づいて、中断中の移行処理を再開させるか否かを判断し、再開させると判断された場合、中断中の移行処理を再開し、再開させないと判断された場合、中断中の移行処理を終了する。
【発明の効果】
【００１５】
開示の情報処理システムでは、複数の情報処理装置のそれぞれにおける処理負荷を所定量以下に維持することができるので、情報処理装置のそれぞれの実行手段における動作環境の品質を維持することができる。従って、このような情報処理システムをシンクライアントシステムに適用した場合、各ユーザが使用するゲストＯＳにおける動作環境のサービス品質を維持することができる。
【００１６】
また、開示の情報処理システムでは、処理負荷が所定量以上である情報処理装置の実行手段のそれぞれが実行中の各種処理に基づいて、各実行手段における動作環境のうちで、他の情報処理装置への移行が可能な動作環境を適切に特定する。例えば、外部装置をユーザが操作することによって実行手段が実行する所定の処理を実行中の動作環境を、他の情報処理装置への移行が可能でないと設定しておく。この場合、ユーザが実際に操作中の動作環境を、移行対象から外すことができ、ユーザに直接与える影響が小さい動作環境を特定することができる。従って、動作環境の移行処理の際にユーザに与える影響を低減することができる。
【００１７】
更に、開示の情報処理システムでは、移行可能であると特定された動作環境の受け入れが可能な情報処理装置を適切に選択することにより、選択された情報処理装置に前記動作環境が移行された後においても、前記情報処理装置の他の実行手段における動作環境に影響を与えない。よって、動作環境が移行された情報処理装置を既に使用している他のユーザの動作環境に影響を与えない。更に、動作環境を他の情報処理装置へ移行中に、この動作環境で所定の処理が実行される場合、この移行処理を一時中断すると共に、実行される処理によっては中断した移行処理の再開を断念することにより、この動作環境を使用中のユーザの操作に影響を与えず、操作性を低下させない。
【発明を実施するための最良の形態】
【００１８】
以下に、本発明に係る情報処理システムについて、シンクライアントシステムに適用した実施形態を示す図面に基づいて詳述する。なお、以下では、本発明に係る情報処理システムを、情報処理装置（サーバ装置）のハードウェアを仮想化し、その上で複数の仮想ＰＣ（ゲストＯＳ）を実行させるシンクライアントシステムに適用した実施形態を例に説明する。
【００１９】
（実施形態１）
以下に、実施形態１に係るシンクライアントシステムについて説明する。図１は実施形態１に係るシンクライアントシステムの構成を示す模式図である。本実施形態１のシンクライアントシステムは、複数のサーバ装置（情報処理装置）１，１…、サーバ装置１，１…を管理する管理装置２、ネットワークストレージ３、端末装置５，５…等を含む。
【００２０】
サーバ装置１，１…、管理装置２及びネットワークストレージ３は、Local Area Network（ＬＡＮ）等のネットワークＮ２を介して接続されている。ネットワークＮ２には、ルーティング装置４が接続されており、ネットワークＮ２は、ルーティング装置４を介して、インターネット等のネットワークＮ１に接続されている。ネットワークＮ１には、端末装置５，５…が接続されている。このような構成により、端末装置５，５…は、ネットワークＮ１、ルーティング装置４及びネットワークＮ２を介してサーバ装置１，１…又は管理装置２に接続することができる。
【００２１】
サーバ装置１，１…及び管理装置２はそれぞれがサーバコンピュータ装置である。ネットワークストレージ３は、Hard Disk Drive（ＨＤＤ）、ネットワークＮ２に接続するためのネットワークインタフェース等を備える記憶装置である。なお、サーバ装置１，１…は、自身の内部に備えたＨＤＤ１３（図２参照）と同様にネットワークストレージ３のＨＤＤ３２（図５参照）を使用することができる。
【００２２】
端末装置５，５…はシンクライアントとして使用され、例えば、ＨＤＤ等の記憶装置を備えないパーソナルコンピュータであり、例えばUniversal Serial Bus（ＵＳＢ）ケーブルを介してマウス５６が接続されている。なお、シンクライアントとして利用される端末装置５，５…は、このような構成に限られず、例えば、テレビジョン受像機、キーボード及びマウス等との接続が可能なセットトップボックス（ＳＴＢ；Set Top Box ）として構成してもよい。この場合、端末装置５，５…に、テレビジョン受像機、キーボード及びマウスを接続することによって、シンクライアントとして利用される。
【００２３】
サーバ装置１，１…のそれぞれは、一の装置で複数の情報処理装置として動作する仮想化技術が適用されており、各端末装置５，５…に対応する仮想ＰＣ（ゲストＯＳ）を起動して実行するようにしてある。またサーバ装置１，１…は、各ゲストＯＳの起動／停止及びその動作を管理する機能を有するVirtual Machine Monitor（ＶＭＭ）１００（図３参照）を起動して実行するようにしてある。
【００２４】
上述した構成のシンクライアントシステムにおいて、端末装置５は、いずれかのサーバ装置１におけるゲストＯＳを利用する場合、まず、管理装置２に対して、自身に対応するゲストＯＳの起動を要求する信号を送信する。管理装置２は、各サーバ装置１，１…におけるゲストＯＳを利用中のユーザを管理すると共に、各ユーザによるゲストＯＳの動作状況を管理している。管理装置２は、各サーバ装置１，１…の動作状況に基づいて、ゲストＯＳの起動を要求してきた端末装置５に対応してゲストＯＳを提供するサーバ装置１を決定する。そして、管理装置２は、決定したサーバ装置１に対して、端末装置５に対応するゲストＯＳの起動を指示する。
【００２５】
管理装置２からゲストＯＳの起動を指示されたサーバ装置１は、端末装置５に対応するゲストＯＳを起動する。なお、サーバ装置１は、起動したゲストＯＳに対応する端末装置５のアドレスを取得しておき、そのアドレスを宛先として、起動させたゲストＯＳが出力する画像信号を生成し、ネットワークＮ１，Ｎ２を介して端末装置５へ送信する。よって、サーバ装置１は、ゲストＯＳが出力する画像信号を端末装置５へ送信する画面転送方式のシンクライアントシステムを実現する。端末装置５は、サーバ装置１から送信されてきた画像信号を受信して表示部５２（図７参照）に表示し、シンクライアントとしての動作を開始する。
【００２６】
図２はサーバ装置１の構成を示すブロック図、図３はサーバ装置１の機能を示す機能ブロック図である。なお、サーバ装置１，１…のそれぞれは全て同一の構成である。図３には、サーバ装置１で、制御部１０、ＲＡＭ１２、ＨＤＤ１３、通信部１４等を含むハードウェア上で、ＶＭＭ１００の動作により、複数のゲストＯＳ１０１，１０１がそれぞれの仮想環境１０２，１０２上で独立して実行可能となっていることが示されている。
【００２７】
本実施形態１のサーバ装置１は、制御部１０、Read Only Memory（ＲＯＭ）１１、Random Access Memory（ＲＡＭ）１２、Hard Disk Drive（ＨＤＤ）１３、通信部１４等を備えており、それぞれはバス１ａを介して相互に接続されている。制御部１０は、例えばCentral Processing Unit（ＣＰＵ）又はMicro Processor Unit（ＭＰＵ）等であり、ＲＯＭ１１又はＨＤＤ１３に予め格納されている制御プログラムを適宜ＲＡＭ１２に読み出して実行すると共に、上述したハードウェア各部の動作を制御する。
【００２８】
ＲＯＭ１１は、本実施形態１のサーバ装置１を、本発明の情報処理システムに利用される情報処理装置として動作させるために必要な種々の制御プログラムを予め格納している。ＲＡＭ１２は、例えばStatic ＲＡＭ（ＳＲＡＭ）又はフラッシュメモリ等であり、制御部１０による制御プログラムの実行時に発生する種々のデータを一時的に記憶する。
【００２９】
ＨＤＤ１３は大容量の記憶装置である。ＨＤＤ１３は、本実施形態１のサーバ装置１を、本発明の情報処理システムに利用される情報処理装置として動作させるために必要な種々の制御プログラム、各種のデータ等を格納している。また、ＨＤＤ１３は、ＯＳプログラム１３ａ、ＶＭＭプログラム１３ｂ、仮想環境モニタプログラム１３ｃ、図４に示すような利用状況テーブル１３ｄ等を格納している。
【００３０】
通信部１４は、例えばネットワークカードを備え、ネットワークＮ２を介した管理装置２、ネットワークストレージ３、端末装置５，５…等との通信を実現するハードウェアである。なお、通信部１４は、ルーティング装置４を介してインターネット等のネットワークＮ２に接続されている。従って、ネットワークＮ２を介して公開されている映像、画像、テキストデータ等の各種情報を、サーバ装置１におけるゲストＯＳ１０１，１０１が通信部１４を介して取得することができる。
【００３１】
ＯＳプログラム１３ａは、ユーザが操作できるCommand User Interface（ＣＵＩ）、Graphic User Interface（ＧＵＩ）を持つWindows（登録商標）、Ｌｉｎｕｘ等のＯＳソフトウェアである。制御部１０は、ＯＳプログラム１３ａをＨＤＤ１３から読み出して実行することによりゲストＯＳ１０１（仮想ＰＣ）として動作し、各種処理を実行する実行手段として機能する。また、ゲストＯＳ１０１（制御部１０）は、各種処理に応じて生成するＣＵＩ、ＧＵＩ等を含む画像信号を、自身のゲストＯＳ１０１に対応する端末装置５へ送信する。
【００３２】
ゲストＯＳ１０１は、端末装置（外部装置）５におけるキーボード５５（図７参照）又はマウス５６からの制御信号（操作情報）をネットワークＮ１，Ｎ２を介して受信し、受信した制御信号に応じて各種処理を実行する。なお、ゲストＯＳ１０１は、処理に応じた画像信号のみならず、音声信号等も生成して端末装置５へ送信する。
【００３３】
ＶＭＭプログラム１３ｂは、サーバ装置１において複数のゲストＯＳ１０１，１０１が動作する仮想化技術を実現するためのソフトウェアである。制御部１０は、ＶＭＭプログラム１３ｂをＨＤＤ１３から読み出して実行することによりＶＭＭ（仮想マシンモニタ）１００として動作し、サーバ装置１が論理的に複数のサーバ装置として動作する仮想環境１０２，１０２を提供する。これにより、サーバ装置１において論理的に複数の独立したゲストＯＳ１０１，１０１が動作することが可能となる。制御部１０は、マルチコアＣＰＵで構成され、各ゲストＯＳ１０１，１０１、ＶＭＭ１００がそれぞれ物理的に異なるＣＰＵコア上に分散して動作するように最適に設計されている。なお、マルチコアＣＰＵとは限らず、シングルコアＣＰＵで構成してもよい。
【００３４】
ＶＭＭ１００（制御部１０）は、各ソフトウェアとハードウェア資源との間の管理を実現し、各ゲストＯＳ１０１，１０１に対応するハードウェアの動作の基本的な制御を行なう。更に、ＶＭＭ１００は、各端末装置５，５…に対応するゲストＯＳ１０１，１０１…の起動の指示を管理装置２から取得した場合、取得した指示に応じて、各端末装置５，５…に対応するＯＳプログラム１３ａを読み出して実行し、各ゲストＯＳ１０１，１０１…を起動させる。
【００３５】
この場合、ＶＭＭ１００は、各ゲストＯＳ１０１，１０１に利用されるハードウェアの割り当て制御等を行ない、それぞれのゲストＯＳ１０１，１０１に仮想環境１０２，１０２を割り当てる。なお、各ゲストＯＳ１０１，１０１に割り当てるハードウェアとしては、例えば、制御部１０、ＲＡＭ１２、ＨＤＤ１３及び通信部１４等と、ネットワークストレージ３のＨＤＤ３２とがある。
【００３６】
なお、サーバ装置１に複数の画像送信装置（図示せず）との接続が可能な入出力部（図示せず）を設け、サーバ装置１が、画像送信装置を介して画像信号を端末装置５へ送信する構成とすることもできる。この場合、ＶＭＭ１００は、ゲストＯＳ１０１，１０１に対して、いずれかの画像送信装置の割り当ても行なう。
【００３７】
ＲＡＭ１２は、制御部１０がＯＳプログラム１３ａ及びＶＭＭプログラム１３ｂ等をそれぞれ読み出す際に使用される他、制御部１０が各制御プログラムを読み出して実行し、各処理を行なう際に一時的に各種情報を記憶する。また、ＲＡＭ１２は、制御部１０が各ゲストＯＳ１０１，１０１として動作する場合に対応する端末装置５，５…毎の設定情報を記憶するために使用される。従って、ＲＡＭ１２も論理的に複数のメモリに分割され、各ゲストＯＳ１０１，１０１、ＶＭＭ１００のそれぞれに割り当てられる。
【００３８】
仮想環境モニタプログラム１３ｃは、サーバ装置１において複数の仮想環境１０２，１０２を監視するためのソフトウェアである。制御部１０は、仮想環境モニタプログラム１３ｃをＨＤＤ１３から読み出して実行することにより、それぞれの仮想環境１０２，１０２における仮想ＵＳＢデバイス１０３，１０３を監視するＵＳＢデバイスモニタ部１０４，１０４として動作する。
【００３９】
また、制御部１０は、仮想環境モニタプログラム１３ｃをＨＤＤ１３から読み出して実行することにより、それぞれの仮想環境１０２，１０２における仮想サウンドデバイス１０５，１０５を監視するサウンドデバイスモニタ部１０６，１０６として動作する。更に、制御部１０は、仮想環境モニタプログラム１３ｃをＨＤＤ１３から読み出して実行することにより、それぞれの仮想環境１０２，１０２が、サーバ装置１に与える負荷を監視するサーバ負荷モニタ部１０７，１０７として動作する。
【００４０】
ゲストＯＳ１０１は、通信部１４が受信した端末装置５のマウス５６からの操作情報を、仮想ＵＳＢデバイス１０３を介して取得する。ＵＳＢデバイスモニタ部１０４は、仮想ＵＳＢデバイス１０３の使用状況を監視し、監視結果をＶＭＭ１００へ通知する。なお、仮想ＵＳＢデバイス１０３が使用中である場合、即ち、仮想ＵＳＢデバイス１０３が端末装置５からの操作情報を取得している場合、端末装置５のユーザがマウス５６を操作中であると判断することができる。
【００４１】
また、ゲストＯＳ１０１は、処理に応じて生成した音声信号を仮想サウンドデバイス１０５を介して通信部１４へ送出し、通信部１４を介して端末装置５へ送信する。サウンドデバイスモニタ部１０６は、仮想サウンドデバイス１０５の使用状況を監視し、監視結果をＶＭＭ１００へ通知する。なお、仮想サウンドデバイス１０５が使用中である場合、即ち、仮想サウンドデバイス１０５がゲストＯＳ１０１からの音声信号を取得している場合、端末装置５のユーザが音声出力を鑑賞中であると判断することができる。
【００４２】
サーバ負荷モニタ部１０７，１０７は、それぞれの仮想環境１０２，１０２上でそれぞれのゲストＯＳ１０１，１０１が動作することによってサーバ装置１に与える負荷を検出する。具体的には、サーバ負荷モニタ部１０７，１０７は、仮想環境１０２，１０２が動作することによる、制御部１０（ＣＰＵ）の使用率（ＣＰＵ使用率）及びＲＡＭ１２の使用量（メモリ使用量）を計測し、計測したＣＰＵ使用率及びメモリ使用量をＶＭＭ１００へ通知する。
【００４３】
図４は利用状況テーブル１３ｄの登録内容を示す模式図である。利用状況テーブル１３ｄには、図４に示すように、制御部１０がＯＳプログラム１３ａを実行することにより起動させたゲストＯＳ１０１，１０１毎に、ゲストＯＳ１０１，１０１を識別するためのゲストＯＳ−ＩＤ（IDentifier）、ゲストＯＳ１０１，１０１によるＣＰＵ使用率、メモリ使用率、デバイス使用状況等を含むゲストＯＳ情報が登録されている。なお、ゲストＯＳ−ＩＤは、ゲストＯＳ１０１自体を識別するための情報であってもよいし、ゲストＯＳ１０１を使用する端末装置５、又は端末装置５を使用するユーザを特定するための情報であってもよい。
【００４４】
利用状況テーブル１３ｄの登録内容は、ＶＭＭ１００（制御部１０）が、ＯＳプログラム１３ａを実行してゲストＯＳ１０１を起動させる都度、ＶＭＭ１００によって登録される。また、利用状況テーブル１３ｄのＣＰＵ使用率は、サーバ負荷モニタ部１０７が仮想環境１０２によるＣＰＵ使用率をＶＭＭ１００へ通知する都度、ＶＭＭ１００によって登録される。利用状況テーブル１３ｄのメモリ使用率は、サーバ負荷モニタ部１０７が仮想環境１０２によるメモリ使用量をＶＭＭ１００へ通知する都度、ＶＭＭ１００が、ＲＡＭ１２のメモリ量に対する、通知されたメモリ使用量の割合（使用率）を算出して登録する。
【００４５】
また、利用状況テーブル１３ｄのデバイス使用状況は、ＵＳＢデバイスモニタ部１０４又はサウンドデバイスモニタ部１０６が仮想ＵＳＢデバイス１０３又は仮想サウンドデバイス１０５の使用状況をＶＭＭ１００へ通知する都度、ＶＭＭ１００によって登録される。
【００４６】
なお、図４に示した利用状況テーブル１３ｄでは、ＲＡＭ１２のメモリ量に対する、各仮想環境１０２，１０２によるメモリ使用量の割合（メモリ使用率）が登録される構成とした。これに対して、サーバ負荷モニタ部１０７が計測した各仮想環境１０２，１０２によるメモリ使用量をそのまま利用状況テーブル１３ｄに登録させてもよい。
【００４７】
図５は管理装置２及びネットワークストレージ３の構成を示すブロック図である。本実施形態１の管理装置２は、制御部２０、ＲＯＭ２１、ＲＡＭ２２、ＨＤＤ２３、通信部２４等を備えており、それぞれはバス２ａを介して相互に接続されている。
【００４８】
制御部２０は、例えばＣＰＵ又はＭＰＵ等であり、ＲＯＭ２１又はＨＤＤ２３に予め格納されている制御プログラムを適宜ＲＡＭ２２に読み出して実行すると共に、上述したハードウェア各部の動作を制御する。ＲＯＭ２１は、管理装置２として動作するために必要な種々の制御プログラムを予め格納している。ＲＡＭ２２は、例えばＳＲＡＭ又はフラッシュメモリ等であり、制御部２０による制御プログラムの実行時に発生する種々のデータを一時的に記憶する。
【００４９】
ＨＤＤ２３は大容量の記憶装置である。ＨＤＤ２３は、管理装置２として動作するために必要な種々の制御プログラム、サーバ管理プログラム２３ａ、図６（ａ）に示すようなユーザ管理テーブル２３ｂ、図６（ｂ）に示すようなリソース管理テーブル２３ｃ等を格納している。
通信部２４は、例えばネットワークカードを備え、ネットワークＮ２を介したサーバ装置１等との通信を実現するハードウェアである。
【００５０】
サーバ管理プログラム２３ａは、サーバ装置１，１…の動作を管理するためのソフトウェアである。制御部２０は、サーバ管理プログラム２３ａをＨＤＤ２３から読み出して実行することにより、それぞれのサーバ装置１，１…におけるゲストＯＳ１０１，１０１の動作状態を管理する。具体的には、制御部２０は、ユーザ管理テーブル２３ｂ及びリソース管理テーブル２３ｃに各種情報を逐次登録することにより、それぞれのサーバ装置１，１…におけるゲストＯＳ１０１，１０１を利用するユーザ及びゲストＯＳ１０１，１０１の動作状態を管理する。
【００５１】
図６はユーザ管理テーブル２３ｂ及びリソース管理テーブル２３ｃの登録内容を示す模式図である。ユーザ管理テーブル２３ｂは、図６（ａ）に示すように、それぞれのサーバ装置１，１…が提供するゲストＯＳ１０１，１０１を利用するユーザ毎に、ユーザを識別するためのユーザＩＤ、各ユーザに割り当てられた仮想環境１０２，１０２の情報等を含むユーザ情報が登録されている。仮想環境１０２の情報には、仮想環境１０２を提供するサーバ装置１のサーバＩＤ、サーバ装置１におけるゲストＯＳ１０１のゲストＯＳ−ＩＤ、ネットワークストレージ３におけるＨＤＤ３２のメモリ領域等が含まれる。
【００５２】
ユーザ管理テーブル２３ｂの登録内容は、制御部２０が、ゲストＯＳ１０１の起動の要求を端末装置５から受信し、この端末装置５に対するゲストＯＳ１０１（仮想環境１０２）の起動をサーバ装置１へ指示する都度、制御部２０によって登録される。制御部２０は、ゲストＯＳ１０１の起動の要求を受信する際に、ゲストＯＳ１０１の起動を要求してきた端末装置５のユーザのユーザ情報も受信しており、受信したユーザ情報のユーザＩＤをユーザ管理テーブル２３ｂのユーザＩＤの欄に登録する。
【００５３】
制御部２０は、ゲストＯＳ１０１の起動を要求してきた端末装置５毎に、どのサーバ装置１のどのゲストＯＳ１０１を割り当てるかを決定すると共に、ネットワークストレージ３のＨＤＤ３２のどのメモリ領域を割り当てるかを決定する。従って、制御部２０は、それぞれ決定したサーバ装置１、ゲストＯＳ１０１、ＨＤＤ３２のメモリ領域を、端末装置５に割り当てる仮想環境１０２の情報としてユーザ管理テーブル２３ｂに登録する。
【００５４】
なお、管理装置２は、各端末装置５，５…からのサーバ装置１（ゲストＯＳ１０１）への接続を認証するように構成されていてもよい。この場合、各端末装置５，５…のユーザＩＤ及びパスワードを予めテーブルに登録しておく。そして、管理装置２は、ゲストＯＳ１０１の起動の要求と共に取得した端末装置５のユーザのユーザ情報（ユーザＩＤ及びパスワード）が、テーブルに登録されているか否かを判断する。管理装置２は、ユーザ情報がテーブルに登録されていれば、ゲストＯＳ１０１の利用を許可し、この端末装置５に対してゲストＯＳ１０１を提供すべきサーバ装置１に対して、ゲストＯＳ１０１の起動を指示する。
【００５５】
リソース管理テーブル２３ｃには、図６（ｂ）に示すように、それぞれのサーバ装置１，１…毎に、サーバ装置１，１…を識別するためのサーバＩＤ、各サーバ装置１，１…におけるゲストＯＳ１０１，１０１…の利用状況等を含むサーバ情報が登録されている。利用状況には、ゲストＯＳ１０１を識別するためのゲストＯＳ−ＩＤ、ＣＰＵ使用率、メモリ使用率、デバイス使用状況等が含まれる。
【００５６】
リソース管理テーブル２３ｃの登録内容は、各サーバ装置１，１…から、各サーバ装置１，１…におけるゲストＯＳ１０１，１０１…のゲストＯＳ情報が送信されてくる都度、制御部２０によって登録される。具体的には、各サーバ装置１，１…のＶＭＭ１００，１００…は、利用状況テーブル１３ｄに登録されたゲストＯＳ情報を更新する都度、更新したゲストＯＳ情報を管理装置２へ送信する。管理装置２の制御部２０は、各サーバ装置１，１…からゲストＯＳ情報を受信する都度、各サーバ装置１，１…のサーバＩＤに対応させて、受信したゲストＯＳ情報のゲストＯＳ−ＩＤ、ＣＰＵ使用率、メモリ使用率、デバイス使用状況の各情報を、リソース管理テーブル２３ｃの利用状況の各欄に登録する。
【００５７】
ネットワークストレージ３は、図５に示すように、ネットワークＮ２に接続するための通信部３１及びＨＤＤ３２等を備える。通信部３１は、ネットワークＮ２を介したサーバ装置１との通信を行なう。ＨＤＤ３２は、各サーバ装置１，１…が提供する仮想環境１０２，１０２…として用いられるので、ＨＤＤ３２も論理的に複数のメモリに分割され、各サーバ装置１，１…の各ゲストＯＳ１０１，１０１…のそれぞれに割り当てられる。従って、ＨＤＤ３２は、各ゲストＯＳ１０１，１０１…から送信されてくる情報を格納する。また、ＨＤＤ３２は、後述する移行処理の際に各種情報を一時的に格納するために用いられる。
【００５８】
図７は端末装置５の構成を示すブロック図である。端末装置５は、通信部５１と、通信部５１に接続された表示部５２、スピーカ５３、ＵＳＢインタフェース５４及びキーボード５５とを備える。
通信部５１は、例えばネットワークカードを備え、ネットワークＮ１を介したサーバ装置１及び管理装置２等との通信を実現する。なお、通信部５１は、自身の端末装置５に対応するゲストＯＳ１０１から出力された情報を受信し、画像信号であれば表示部５２へ送出し、音声信号であればスピーカ５３へ送出する。また、通信部５１は、端末装置５のユーザがキーボード５５を操作することに伴う操作情報をキーボード５５から取得する。
【００５９】
ＵＳＢインタフェース５４は、マウス５６と接続されており、マウス５６との間で情報の送受信を行なう。なお、表示部５２、スピーカ５３及びキーボード５５が端末装置５に対して外付けされる構成である場合には、表示部５２、スピーカ５３及びキーボード５５も、例えば、ＵＳＢインタフェース５４に接続される。また、ＵＳＢインタフェース５４に限られず、その他の入出力インタフェースを介してマウス５６と接続される構成であってもよい。また、マウス５６以外にも、ペンタブレットなどの入力装置を接続する構成であってもよい。
【００６０】
次に、上述した構成のシンクライアントシステムにおいて、端末装置５，５…によってシンクライアントの利用が可能になるまでの処理について説明する。シンクライアントを利用したいユーザは、自身の端末装置５を用いて、ゲストＯＳ１０１の起動を要求する信号を管理装置２へ送信する。管理装置２の制御部２０は、端末装置５からゲストＯＳ１０１の起動を要求する信号を受信した場合、リソース管理テーブル２３ｃの登録内容に基づいて、この時点でのＣＰＵ使用率及びメモリ使用率のより低いサーバ装置１を特定する。また、制御部２０は、特定したサーバ装置１において、ゲストＯＳ１０１の起動を要求してきた端末装置５に対応するＯＳプログラム１３ａ（ゲストＯＳ１０１）、ハードウェア、ネットワークストレージ３のＨＤＤ３２におけるメモリ領域を選択して割り当てる。
【００６１】
なお、管理装置２の制御部２０は、割り当てた各情報をユーザ管理テーブル２３ｂに登録する。そして、制御部２０は、端末装置５に対して割り当てたサーバ装置１に対して、ゲストＯＳ１０１の起動を指示する。ゲストＯＳ１０１の起動を指示されたサーバ装置１のＶＭＭ１００は、端末装置５に対するゲストＯＳ１０１を起動すると共に、このゲストＯＳ１０１に割り当てられたハードウェア及びネットワークストレージ３のＨＤＤ３２のメモリ領域を割り当て、仮想環境１０２を設定する。
【００６２】
ゲストＯＳ１０１は、起動処理を行なった後、端末装置５の表示部５２に初期画面を表示させるための画像信号を生成し、自身に割り当てられた通信部１４を介して、対応する端末装置５へ送信する。端末装置５は、ゲストＯＳ１０１から送信されてきた画像信号を受信して表示部５２に表示し、シンクライアントとしての動作を開始する。
【００６３】
このように、新たにゲストＯＳ１０１を起動させる場合に、ＣＰＵ使用率及びメモリ使用率がより低いサーバ装置１を選択することにより、それぞれのサーバ装置１，１…間において、起動中のゲストＯＳ１０１，１０１…による負荷のばらつきを平滑化することができる。よって、それぞれのサーバ装置１，１…によって提供される仮想環境１０２，１０２のサービス品質を一定の水準に維持することができる。
【００６４】
次に、上述したような処理によりシンクライアントとして動作している端末装置５，５…によるシンクライアントとしての動作を終了させる処理について説明する。シンクライアントとして動作している端末装置５のユーザは、対応するゲストＯＳ１０１の動作を終了させたい場合、自身の端末装置５を介して、ゲストＯＳ１０１の終了を要求する信号を、対応するサーバ装置１へ送信し、シンクライアントとしての動作を終了する。
【００６５】
サーバ装置１の制御部１０（ＶＭＭ１００）は、端末装置５からゲストＯＳ１０１の終了を要求する信号を受信した場合、この端末装置５に対応するゲストＯＳ１０１を特定する。サーバ装置１の制御部１０は、特定したゲストＯＳ１０１の動作を終了させ、このゲストＯＳ１０１に対する仮想環境１０２の割り当てを解消する。これにより、ゲストＯＳ１０１及びゲストＯＳ１０１に割り当てられていたハードウェア及びネットワークストレージ３のＨＤＤ３２のメモリ領域を他の端末装置５，５…に開放することができる。
【００６６】
サーバ装置１の制御部１０は、ゲストＯＳ１０１の終了を管理装置２へ通知し、管理装置２の制御部２０は、通知されたゲストＯＳ１０１に対応する端末装置５のユーザのユーザ情報をユーザ管理テーブル２３ｂから削除する。また、制御部２０は、このユーザに割り当てられていたゲストＯＳ１０１及び仮想環境１０２の利用状況を、リソース管理テーブル２３ｃから削除する。
【００６７】
次に、上述した構成のシンクライアントシステムにおいて、管理装置２がそれぞれのサーバ装置１，１…における利用状況を監視する処理について説明する。管理装置２は、各サーバ装置１，１…から送信されてくるゲストＯＳ情報をリソース管理テーブル２３ｃに登録することによって、各サーバ装置１，１…の利用状況を管理している。
【００６８】
管理装置２の制御部２０は、ゲストＯＳ情報を受信してリソース管理テーブル２３ｃに登録する都度、それぞれのサーバ装置１，１…における利用状況を監視する。本実施形態１のシンクライアントシステムでは、各サーバ装置１，１…におけるゲストＯＳ１０１，１０１のＣＰＵ使用率の合計又はメモリ使用率の合計がそれぞれの所定値（例えば９０％）よりも大きいサーバ装置１があれば、移行処理を実行する。移行処理は、ＣＰＵ使用率の合計又はメモリ使用率の合計が大きい、即ち、負荷が大きいサーバ装置１におけるゲストＯＳ１０１を、負荷が小さいサーバ装置１へ移行させる処理である。これにより、サーバ装置１，１…間における負荷のばらつきを平滑化でき、それぞれのサーバ装置１，１…が提供するゲストＯＳ１０１，１０１の処理能力を確保することができる。
【００６９】
具体的には、制御部（検出手段）２０は、リソース管理テーブル２３ｃに登録されている各サーバ情報に基づいて、各サーバ装置１，１…におけるゲストＯＳ１０１，１０１のＣＰＵ使用率の合計（処理負荷）と、メモリ使用率の合計（処理負荷）とを検出する。そして、制御部２０は、各サーバ装置１，１…におけるＣＰＵ使用率の合計が所定値よりも大きいサーバ装置１があるか否か、及び、各サーバ装置１，１…におけるメモリ使用率の合計が所定値よりも大きいサーバ装置１があるか否かを判断する。
【００７０】
なお、ゲストＯＳ１０１，１０１のＣＰＵ使用率の合計が所定値よりも大きいサーバ装置１、又はゲストＯＳ１０１，１０１のメモリ使用率の合計が所定値よりも大きいサーバ装置１を、移行処理によって他のサーバ装置１にゲストＯＳ１０１を移行させる移行対象の候補のサーバ装置１とする。
【００７１】
制御部２０は、移行対象の候補のサーバ装置１を複数検出した場合、そのうちで最も負荷が大きいサーバ装置１を特定する。具体的には、制御部２０は、移行対象の候補の各サーバ装置１，１…におけるゲストＯＳ１０１，１０１のＣＰＵ使用率の合計が最も大きいサーバ装置１を特定する。なお、ＣＰＵ使用率の合計が同じサーバ装置１，１…が複数あった場合、制御部２０は、これらのサーバ装置１，１…におけるゲストＯＳ１０１，１０１のメモリ使用率の合計が最も大きいサーバ装置１を特定する。
【００７２】
次に制御部（特定手段）２０は、移行対象の候補に特定したサーバ装置１において、他のサーバ装置１への移行が可能な移行対象のゲストＯＳ１０１（動作環境）を特定する。ここで、本実施形態１では、それぞれのゲストＯＳ１０１，１０１…に対応する端末装置５，５…が、実際にユーザによって使用されている可能性の低いゲストＯＳ１０１を移行処理の対象とする。即ち、実施にユーザによって使用されている可能性の高い端末装置５，５…に対応するゲストＯＳ１０１，１０１…を移行処理の対象から除外する。
【００７３】
本実施形態１では、端末装置５，５…がユーザによって実際に使用されているか否かを、各ゲストＯＳ１０１，１０１…に対応する仮想環境１０２，１０２…における仮想ＵＳＢデバイス１０３，１０３…又は仮想サウンドデバイス１０５，１０５…が使用されているか否かで判断する。仮想ＵＳＢデバイス１０３が使用されている場合とは、端末装置５のマウス５６が使用されていることを意味するので、端末装置５のユーザがマウス５６を操作していると判断できる。また、仮想サウンドデバイス１０５が使用されている場合とは、端末装置５のスピーカ５３から音声が出力されていることを意味するので、端末装置５の近傍にユーザが居て音楽を鑑賞していると判断できる。
【００７４】
なお、端末装置５，５…がユーザによって実際に使用されているか否かの判断に、仮想ＵＳＢデバイス１０３又は仮想サウンドデバイス１０５の使用状況のモニタリング結果のみを用いる構成には限られない。その他に、端末装置５のユーザの利用状況を判断できるデバイスのモニタリング結果を用いてもよい。例えば、端末装置５へ画像情報を送信するためのビデオデバイスは、スクリーンセーバーのようにユーザが実際には端末装置５を使用していない場合であっても使用される場合があるが、このようなデバイスのモニタリング結果を用いてもよい。
【００７５】
従って、制御部２０は、リソース管理テーブル２３ｃの登録内容に基づいて、移行対象の候補に特定したサーバ装置１におけるゲストＯＳ１０１，１０１のうちで、仮想ＵＳＢデバイス１０３又は仮想サウンドデバイス１０５が使用されていないゲストＯＳ１０１を特定する。仮想ＵＳＢデバイス１０３及び仮想サウンドデバイス１０５が使用されていないゲストＯＳ１０１（移行対象の候補のゲストＯＳ１０１）を特定できた場合、制御部２０（選択手段）は、移行先のサーバ装置１を選択する。
【００７６】
制御部２０は、リソース管理テーブル２３ｃの登録内容に基づいて、それぞれのサーバ装置１，１…におけるゲストＯＳ１０１，１０１のＣＰＵ使用率の合計（負荷）が最も小さいサーバ装置１を特定する。なお、ＣＰＵ使用率の合計が同じサーバ装置１，１…が複数あった場合、制御部２０は、これらのサーバ装置１，１…におけるゲストＯＳ１０１，１０１のメモリ使用率の合計が最も小さいサーバ装置１を特定する。
【００７７】
そして、制御部２０は、特定したサーバ装置１（移行先のサーバ装置１）が、移行対象の候補のゲストＯＳ１０１のいずれかの受け入れが可能であるか否かを判断する。具体的には、制御部２０は、特定したサーバ装置１に移行対象のゲストＯＳ１０１を移行した後の、このサーバ装置１におけるＣＰＵ使用率の合計及びメモリ使用率が所定値よりも小さいか否かを判断する。
【００７８】
まず、制御部２０は、移行対象の候補のゲストＯＳ１０１が複数ある場合、最も負荷（ＣＰＵ使用率又はメモリ使用率）が大きいゲストＯＳ１０１を特定する。そして、制御部２０は、このゲストＯＳ１０１を、移行先のサーバ装置１に移行させた場合のＣＰＵ使用率の合計及びメモリ使用率の合計を算出する。制御部２０は、算出したＣＰＵ使用率の合計及びメモリ使用率の合計がそれぞれに対する所定値（基準値）よりも小さいか否かを判断し、小さい場合、このゲストＯＳ１０１を移行対象のゲストＯＳ１０１に特定する。
【００７９】
一方、算出したＣＰＵ使用率の合計又はメモリ使用率の合計が所定値よりも大きい場合、このゲストＯＳ１０１を移行した場合、移行先のサーバ装置１における負荷が基準値（所定値）よりも高くなるので、このゲストＯＳ１０１の移行は行わない。従って、制御部２０は、移行対象の候補のサーバ装置１における移行対象の候補のゲストＯＳ１０１のうちで、このゲストＯＳ１０１の次に負荷が大きいゲストＯＳ１０１を特定し、同様に、このゲストＯＳ１０１が、移行先のサーバ装置１に移行可能であるか否かを判断する。
【００８０】
より具体的には、例えば、移行対象のサーバ装置１（第１サーバ装置１とする）には、ＣＰＵ使用率が４０％のゲストＯＳ１０１とＣＰＵ使用率が６０％のゲストＯＳ１０１とが動作しており、最も負荷が小さいサーバ装置１（第２サーバ装置１とする）には、ＣＰＵ使用率が２０％のゲストＯＳ１０１が動作しているとする。この場合、第１サーバ装置１のＣＰＵ使用率が６０％のゲストＯＳ１０１を第２サーバ装置１へ移行した場合であっても、移行後の第２サーバ装置１におけるＣＰＵ使用率の合計（８０％）は、所定値（９０％）よりも小さい値となる。従って、第１サーバ装置１のＣＰＵ使用率が６０％のゲストＯＳ１０１を第２サーバ装置１へ移行させる。
【００８１】
また、第１サーバ装置１には、ＣＰＵ使用率が４０％のゲストＯＳ１０１とＣＰＵ使用率が６０％のゲストＯＳ１０１とが動作しており、第２サーバ装置１には、ＣＰＵ使用率が２０％のゲストＯＳ１０１が２つ動作しているとする。この場合、第１サーバ装置１のＣＰＵ使用率が６０％のゲストＯＳ１０１を第２サーバ装置１へ移行した場合には、移行後の第２サーバ装置１におけるＣＰＵ使用率の合計（１００％）は、所定値（９０％）よりも大きい値となる。従って、第１サーバ装置１のＣＰＵ使用率が６０％のゲストＯＳ１０１を第２サーバ装置１へ移行させない。
【００８２】
しかし、第１サーバ装置１のＣＰＵ使用率が４０％のゲストＯＳ１０１を第２サーバ装置１へ移行した場合には、移行後の第２サーバ装置１におけるＣＰＵ使用率の合計（８０％）は、所定値（９０％）よりも小さい値となる。従って、この場合は、第１サーバ装置１のＣＰＵ使用率が４０％のゲストＯＳ１０１を第２サーバ装置１へ移行させる。
【００８３】
管理装置２の制御部２０は、移行対象の候補のサーバ装置１において、移行先のサーバ装置１への移行が可能なゲストＯＳ１０１があるまで上述した処理を繰り返す。なお、移行対象の候補のサーバ装置１におけるゲストＯＳ１０１の全てが、移行先のサーバ装置１への移行が可能でない場合、制御部２０は、移行対象の候補のサーバ装置１のうちで、次に負荷が大きいサーバ装置１を特定する。そして、制御部２０は、特定したサーバ装置１について同様の処理を行ない、この移行対象の候補のサーバ装置１におけるゲストＯＳ１０１，１０１…のうちで、移行先のサーバ装置１への移行が可能なゲストＯＳ１０１を特定する。
【００８４】
上述した処理により、移行対象のゲストＯＳ１０１及び移行先のサーバ装置１を特定できた場合、制御部（移行手段）２０は、移行対象のサーバ装置１に対して、移行対象のゲストＯＳ１０１を移行先のサーバ装置１に移行させる移行処理の開始を指示する。
【００８５】
上述したように、本実施形態１のシンクライアントシステムでは、ユーザが実際に端末装置５を使用している可能性の高い端末装置５に対応するゲストＯＳ１０１を移行処理の対象から外す。これにより、移行処理によってゲストＯＳ１０１が一時的に動作を停止した場合であっても、他のゲストＯＳ１０１の使用中のユーザには影響を与えない。また、移行対象のゲストＯＳ１０１を移行先のサーバ装置１へ移行した場合であっても、移行先のサーバ装置１におけるＣＰＵ使用率及びメモリ使用率は基準値を満たすことができるので、移行先のサーバ装置１を既に使用中の他のユーザの仮想環境１０２，１０２…に影響を与えない。
【００８６】
次に、上述した構成のシンクライアントシステムにおいて、いずれかのサーバ装置１，１…における負荷が所定値よりも大きくなった場合に行なう移行処理（マイグレーション処理）について説明する。管理装置２は、移行処理を行なう場合、移行対象（移行元）のサーバ装置１に対して、移行すべき移行対象のゲストＯＳ１０１と、移行先のサーバ装置１とを通知し、移行処理の開始を指示する。
【００８７】
移行元のサーバ装置１の制御部１０（ＶＭＭ１００）は、移行処理を開始する際に、移行先のサーバ装置１に対して、移行処理を開始する旨を通知する。これにより、移行先のサーバ装置１の制御部１０（ＶＭＭ１００）は、ゲストＯＳ１０１を起動させて待機する。
【００８８】
移行元のサーバ装置１のＶＭＭ１００は、移行対象のゲストＯＳ１０１に対するＣＰＵの割当時間を０にすることによって、移行対象のゲストＯＳ１０１の動作を一時的に停止させる。ＶＭＭ１００は、移行対象のゲストＯＳ１０１に割り当てられているＲＡＭ１２に格納されている情報、移行対象のゲストＯＳ１０１に割り当てられているハードウェアの割当情報等の、ネットワークストレージ３の移行処理用の領域への書き込みを開始する。
【００８９】
移行元のサーバ装置１のＶＭＭ１００は、移行対象のゲストＯＳ１０１において、モニタ対象（仮想ＵＳＢデバイス１０３及び仮想サウンドデバイス１０５）以外の仮想デバイスの利用があった場合、その情報もネットワークストレージ３へ書き込む。例えば、移行対象のゲストＯＳ１０１に対応する通信部１４（仮想通信ネットワークデバイス）宛ての情報を受信した場合は、その情報もネットワークストレージ３へ書き込む。
【００９０】
移行元のサーバ装置１のＶＭＭ１００は、ネットワークストレージ３への情報の書き込みを行なっている場合、移行対象のゲストＯＳ１０１の仮想環境１０２における仮想ＵＳＢデバイス１０３又は仮想サウンドデバイス１０５の使用があるか否かを監視している。具体的には、ＶＭＭ１００は、移行対象のゲストＯＳ１０１に対応するＵＳＢデバイスモニタ部１０４又はサウンドデバイスモニタ部１０６による監視結果を取得し、仮想ＵＳＢデバイス１０３又は仮想サウンドデバイス１０５が使用されたか否かを判断する。
【００９１】
仮想ＵＳＢデバイス１０３又は仮想サウンドデバイス１０５が使用されたと判断した場合、ＶＭＭ１００は、ネットワークストレージ３への情報の書き込みを中断し、移行対象のゲストＯＳ１０１の動作を再開させる。そして、ＶＭＭ１００は、仮想ＵＳＢデバイス１０３又は仮想サウンドデバイス１０５の使用が終了してから所定時間待機し、この時点で仮想ＵＳＢデバイス１０３又は仮想サウンドデバイス１０５がまだ使用されているか否かを判断する。
【００９２】
仮想ＵＳＢデバイス１０３又は仮想サウンドデバイス１０５がまだ使用されていれば、ＶＭＭ１００は、この移行対象のゲストＯＳ１０１の移行処理を行なわない。この場合、ＶＭＭ１００は、移行先のサーバ装置１に対して、移行処理を中止する旨を通知する。これにより、移行先のサーバ装置１の制御部１０（ＶＭＭ１００）は、移行先のゲストＯＳ１０１の動作を終了させる。
【００９３】
仮想ＵＳＢデバイス１０３又は仮想サウンドデバイス１０５が使用されていない場合、ＶＭＭ１００は、移行対象のゲストＯＳ１０１の動作を再度停止させ、ネットワークストレージ３への情報の書き込みを再開する。なお、このとき、ＶＭＭ１００は、既にネットワークストレージ３に書き込んだ情報については、ネットワークストレージ３への書き込み後に変更された部分のみを上書きすればよい。
【００９４】
ネットワークストレージ３に書き込んだ情報に変更があったか否かは、例えば、移行対象のゲストＯＳ１０１に割り当てた記憶領域であるメモリページ（ＲＡＭ１２）に書き込み保護をかけ、書き込み保護された記憶領域を更新しようとする際に発生する例外（記憶保護例外）をハンドリングすることで判断する。移行処理の際には、ゲストＯＳ１０１が実際に物理アドレスにアクセスするような処理を行なったときは割込処理でそれをハンドリングできるようにしておき、割込処理の発生時にそのメモリページを記憶しておく。
【００９５】
このため、ＶＭＭ１００では、元から仮想環境１０２に対してメモリを仮想化して見せるようにする。そして、その仮想物理アドレスと実際の物理メモリとを対応付けるテーブルを作成しておき、ゲストＯＳ１０１がテーブルにアクセスしようとした場合は割込処理でハンドリングすることでその内容を書き換え、実メモリアドレスに変換を行なうことで、ゲストＯＳ１０１に実メモリにアクセスさせる。このとき、各情報が変更されたか否かをチェックできない環境であれば、全ての情報を再度保存すればよい。
【００９６】
移行元のサーバ装置１のＶＭＭ１００は、移行対象のゲストＯＳ１０１に関する全ての情報をネットワークストレージ３に書き込むまで、仮想ＵＳＢデバイス１０３又は仮想サウンドデバイス１０５が使用される都度、上述した処理を繰り返す。ＶＭＭ１００は、移行対象のゲストＯＳ１０１に対応する仮想ＵＳＢデバイス１０３又は仮想サウンドデバイス１０５が使用されていない状態で、各種情報のネットワークストレージ３への書き込みを完了した場合、その旨を移行先のサーバ装置１へ通知する。
【００９７】
移行先のサーバ装置１のＶＭＭ１００は、移行元のサーバ装置１から、ネットワークストレージ３への書き込みの完了を通知された場合、ネットワークストレージ３からの情報の読み出しを開始し、ネットワークストレージ３から読み出した情報を、移行先のゲストＯＳ１０１に割り当てられたＲＡＭ１２等に逐次格納する。移行先のサーバ装置１のＶＭＭ１００は、ネットワークストレージ３からの情報の読み出しを終了した場合、移行元のサーバ装置１にその旨を通知する。
【００９８】
移行元のサーバ装置１のＶＭＭ１００は、移行先のサーバ装置１から、ネットワークストレージ３からの情報の読み出し完了を通知された場合、移行先のサーバ装置１が、ネットワークストレージ３に格納された情報を再読み出しする必要があるか否かを判断する。移行元のサーバ装置１のＶＭＭ１００は、再読み出しする必要があると判断した場合、ネットワークストレージ３への情報の書き込みを再度行なう。
【００９９】
そして、移行元のサーバ装置１のＶＭＭ１００は、移行先のサーバ装置１に、移行先のゲストＯＳ１０１への情報の再読み出しを指示すると共に、移行先のゲストＯＳ１０１の動作の開始を指示する。なお、移行元のサーバ装置１のＶＭＭ１００は、再読み出しする必要がないと判断した場合、ネットワークストレージ３への情報の再度の書き込みを行なわず、移行先のゲストＯＳ１０１への情報の再読み出しを指示せず、移行先のゲストＯＳ１０１の動作の開始のみを移行先のサーバ装置１に指示する。
【０１００】
移行先のサーバ装置１のＶＭＭ１００は、再読み出しを指示された場合、ネットワークストレージ３から情報を再読み出しし、この情報に基づいて、移行先のゲストＯＳ１０１の動作を開始し、移行処理を終了する。また、移行先のサーバ装置１のＶＭＭ１００は、再読み出しを指示されなかった場合、既にネットワークストレージ３から取得してある情報に基づいて、移行先のゲストＯＳ１０１の動作を開始し、移行処理を終了する。
【０１０１】
ここで、ネットワークストレージ３に格納された情報を再読み出しする必要があるか否かは、移行元のサーバ装置１がネットワークストレージ３への情報の書き込みを完了してから、移行先のサーバ装置１がネットワークストレージ３からの情報の読み出しを完了するまでの間に、ネットワークストレージ３に格納された情報が更新されたか否かによって判断する。
【０１０２】
移行元のサーバ装置１のＶＭＭ１００は、自身が移行先のサーバ装置１に、ネットワークストレージ３への情報の書き込み完了を通知してから、移行先のサーバ装置１から、ネットワークストレージ３からの情報の読み出し完了を通知されるまでの間に、移行対象のゲストＯＳ１０１に対応する仮想ＵＳＢデバイス１０３又は仮想サウンドデバイス１０５が使用されたか否かを監視している。
【０１０３】
この間に、移行対象のゲストＯＳ１０１に対応する仮想ＵＳＢデバイス１０３又は仮想サウンドデバイス１０５が使用された場合、移行元のサーバ装置１のＶＭＭ１００は、移行対象のゲストＯＳ１０１の動作を再開させる。そして、ＶＭＭ１００は、仮想ＵＳＢデバイス１０３又は仮想サウンドデバイス１０５の使用が終了してから所定時間待機し、この時点で仮想ＵＳＢデバイス１０３又は仮想サウンドデバイス１０５がまだ使用されているか否かを判断する。
【０１０４】
仮想ＵＳＢデバイス１０３又は仮想サウンドデバイス１０５がまだ使用されていれば、ＶＭＭ１００は、この移行対象のゲストＯＳ１０１の移行処理を中止する。なお、この場合、ＶＭＭ１００は、移行先のサーバ装置１に対して、移行処理を中止する旨を通知する。これにより、移行先のサーバ装置１の制御部１０（ＶＭＭ１００）は、ネットワークストレージ３からの情報の読み出しを終了し、移行先のゲストＯＳ１０１の動作を終了させる。
【０１０５】
仮想ＵＳＢデバイス１０３又は仮想サウンドデバイス１０５が使用されていない場合、ＶＭＭ１００は、移行対象のゲストＯＳ１０１の動作を再度停止させ、ネットワークストレージ３からの情報の読み出し完了を移行先のサーバ装置１から通知されるまで待機する。なお、移行元のサーバ装置１のＶＭＭ１００は、ネットワークストレージ３からの情報の読み出し完了を移行先のサーバ装置１から通知されるまでの間、仮想ＵＳＢデバイス１０３又は仮想サウンドデバイス１０５が使用される都度、上述した処理を繰り返す。
【０１０６】
移行元のサーバ装置１のＶＭＭ１００は、ネットワークストレージ３からの情報の読み出し完了を移行先のサーバ装置１から通知された場合、移行先のサーバ装置１がネットワークストレージ３から情報を再読み出しする必要があるか否かを判断する。そして、移行元のサーバ装置１のＶＭＭ１００は、移行先のサーバ装置１が情報を再読み出しする必要があると判断した場合、ネットワークストレージ３への情報の書き込みを再度行なう。なお、このとき、ＶＭＭ１００は、既にネットワークストレージ３に書き込んだ情報については、ネットワークストレージ３への書き込み後に変更された部分のみを上書きすればよい。
【０１０７】
移行元のサーバ装置１のＶＭＭ１００は、移行先のサーバ装置１に対して、移行先のゲストＯＳ１０１への情報の再読み出しを指示する共に、移行先のゲストＯＳ１０１の動作の開始を指示する。更に、移行元のサーバ装置１のＶＭＭ１００は、ルーティング装置４に対して、移行元（移行対象）のゲストＯＳ１０１に割り当てられていたアドレスを、移行先のゲストＯＳ１０１に割り当てるように、割り当ての変更を指示する。
【０１０８】
具体的には、それぞれのサーバ装置１において、ゲストＯＳ１０１にＶＭＭ１００から仮想ネットワークデバイスを与えると共に、サーバ装置１の実ネットワークデバイス（通信部１４）をブリッジとしてネットワークを構成する場合、実ネットワークデバイスをブリッジとして用いるようにする。このようにすると、実ネットワークデバイスがスイッチングハブのような動作をし、仮想ネットワークデバイスのMedia Access Control（ＭＡＣ）アドレスに送信されるイーサネット（登録商標）パケットが実デバイスを経由するようになる。
【０１０９】
移行処理を行なうまでは、ゲストＯＳ１０１のInternet Protocol（ＩＰ）アドレス宛てのパケットは、移行元のサーバ装置１に送信されるようになっているが、これを移行先のサーバ装置１に送信されるように、再度仮想ネットワークデバイスのＭＡＣアドレスをルーティング装置４へ送信し、ルーティング装置４に割り当ての変更を指示する。
【０１１０】
もし、移行元のサーバ装置１が移行元のゲストＯＳ１０１の動作を停止し、ネットワークストレージ３への情報の書き込みを開始してから、実際にルーティング装置４がＭＡＣアドレスの切り替えを行なうまでの間に、移行元のサーバ装置１が移行元のゲストＯＳ１０１に対するネットワークパケットを受信した場合、移行元のサーバ装置１が、移行先のサーバ装置１に対して、そのネットワークパケットを転送すればよい。なお、このとき、移行先のサーバ装置１において、移行先のゲストＯＳ１０１がリストアを完了していない場合は、移行先のサーバ装置１が、一時的にこのネットワークパケットを保存しておき、リストア完了後に移行先のゲストＯＳ１０１にネットワークパケットを渡せばよい。
【０１１１】
上述した処理により、移行処理の実行中に、移行元のゲストＯＳ１０１に対応する各種デバイス（仮想ＵＳＢデバイス１０３又は仮想サウンドデバイス１０５）が使用された場合には即座にそのデバイスの動作に対応する処理を行なうことができる。また、移行処理の実行中に、移行元のゲストＯＳ１０１に対応するデバイスが使用されなかった場合には、移行元のサーバ装置１が行なうネットワークストレージ３への情報の書き込み処理、及び移行先のサーバ装置１が行なうネットワークストレージ３からの情報の読み出し処理がそれぞれ１回で済み、迅速な移行処理が可能となる。
【０１１２】
以下に、本実施形態１のシンクライアントシステムにおいて、サーバ装置１、管理装置２及び端末装置５の間で行なわれる具体的な処理手順についてフローチャートに基づいて説明する。図８はシンクライアントの起動処理の手順を示すフローチャートである。なお、以下の処理は、管理装置２のＲＯＭ２１又はＨＤＤ２３に格納されている制御プログラムに従って制御部２０によって実行されると共に、サーバ装置１のＲＯＭ１１又はＨＤＤ１３に格納されている制御プログラムに従って制御部１０（ＶＭＭ１００、ゲストＯＳ１０１）によって実行される。
【０１１３】
管理装置２の制御部２０は、端末装置５からゲストＯＳ１０１の起動を要求する信号を受信したか否かを判断しており（Ｓ１）、受信していないと判断した場合（Ｓ１：ＮＯ）、受信するまで待機する。制御部２０は、ゲストＯＳ１０１の起動を要求する信号を受信したと判断した場合（Ｓ１：ＹＥＳ）、リソース管理テーブル２３ｃの登録内容に基づいて、端末装置５に対応するサーバ装置１、ゲストＯＳ１０１及びネットワークストレージ３のＨＤＤ３２のメモリ領域を選択して割り当てる（Ｓ２）。具体的には、制御部２０は、ＣＰＵ使用率及びメモリ使用率のより低いサーバ装置１を選択する。
【０１１４】
制御部２０は、ゲストＯＳ１０１の起動を要求してきた端末装置５に対して割り当てたサーバ装置１、ゲストＯＳ１０１、ネットワークストレージのメモリ領域に関する情報をユーザ管理テーブル２３ｂに登録する（Ｓ３）。制御部２０は、選択したサーバ装置１に対して、選択したゲストＯＳ１０１の起動を指示する（Ｓ４）。
【０１１５】
サーバ装置１の制御部１０（ＶＭＭ１００）は、管理装置２からの指示に従って、端末装置５に対するゲストＯＳ１０１を起動する（Ｓ５）。そして、制御部１０は、このゲストＯＳ１０１に割り当てられたハードウェア及びネットワークストレージ３のＨＤＤ３２のメモリ領域を割り当て、仮想環境１０２を設定する（Ｓ６）。制御部１０は、ゲストＯＳ１０１を起動させた場合、端末装置５の表示部５２に初期画面を表示させるための画像信号を生成し、対応する端末装置５へ送信する（Ｓ７）。これにより、端末装置５は、初期画面を表示部５２に表示させ、シンクライアントとしての動作を開始し、シンクライアントの起動処理を終了する。
【０１１６】
上述したように、本実施形態１の管理装置２は、新たにゲストＯＳ１０１を起動させる場合に、ＣＰＵ使用率及びメモリ使用率がより低いサーバ装置１を選択する。よって、新たにゲストＯＳ１０１を起動させたことによって、そのサーバ装置１において既に起動している他のゲストＯＳ１０１に影響を与えることがない。
【０１１７】
次に、管理装置２がそれぞれのサーバ装置１，１…における利用状況を監視する処理について説明する。図９及び図１０はサーバ装置１，１…の利用状況の監視処理の手順を示すフローチャートである。なお、以下の処理は、管理装置２のＲＯＭ２１又はＨＤＤ２３に格納されている制御プログラムに従って制御部２０によって実行される。
【０１１８】
管理装置２の制御部２０は、サーバ装置１，１…からゲストＯＳ情報を受信したか否かを判断しており（Ｓ１１）、受信していないと判断した場合（Ｓ１１：ＮＯ）、受信するまで待機する。制御部２０は、ゲストＯＳ情報を受信したと判断した場合（Ｓ１１：ＹＥＳ）、受信したゲストＯＳ情報をリソース管理テーブル２３ｃに登録する（Ｓ１２）。制御部２０は、リソース管理テーブル２３ｃの登録内容に基づいて、移行処理を行なうべき移行対象の候補のサーバ装置１が有るか否かを判断する（Ｓ１３）。
【０１１９】
具体的には、制御部２０は、各サーバ装置１，１…におけるゲストＯＳ１０１，１０１のＣＰＵ使用率の合計又はメモリ使用率の合計がそれぞれの所定値よりも大きいサーバ装置１が有るか否かを判断する。制御部２０は、移行対象の候補のサーバ装置１が無いと判断した場合（Ｓ１３：ＮＯ）、処理を終了する。
【０１２０】
制御部２０は、移行対象の候補のサーバ装置１が有ると判断した場合（Ｓ１３：ＹＥＳ）、このサーバ装置１のうちから最も負荷（ＣＰＵ使用率及びメモリ使用率）が大きいサーバ装置１を特定する（Ｓ１４）。制御部２０は、リソース管理テーブル２３ｃの登録内容に基づいて、特定したサーバ装置１において、移行対象の候補のゲストＯＳ１０１が有るか否かを判断する（Ｓ１５）。
【０１２１】
具体的には、制御部２０は、特定したサーバ装置１におけるゲストＯＳ１０１，１０１…のうちで、仮想ＵＳＢデバイス１０３及び仮想サウンドデバイス１０５が使用されていないゲストＯＳ１０１を特定する。移行対象の候補のゲストＯＳ１０１が無いと判断した場合（Ｓ１５：ＮＯ）、制御部２０は、ステップＳ１３で移行対象の候補のサーバ装置１であると判断したサーバ装置１が他にも有るか否かを判断する（Ｓ１６）。制御部２０は、移行対象の候補のサーバ装置１が他に無いと判断した場合（Ｓ１６：ＮＯ）、処理を終了する。
【０１２２】
移行対象の候補のサーバ装置１が他にも有ると判断した場合（Ｓ１６：ＹＥＳ）、制御部２０は、ステップＳ１４で特定したサーバ装置１の次に負荷が大きいサーバ装置１を特定し（Ｓ１７）、ステップＳ１５へ処理を戻す。
【０１２３】
ステップＳ１５で移行対象の候補のゲストＯＳ１０１が有ると判断した場合（Ｓ１５：ＹＥＳ）、制御部２０は、リソース管理テーブル２３ｃの登録内容に基づいて、最も負荷（ＣＰＵ使用率及びメモリ使用率）が小さいサーバ装置１を移行先のサーバ装置１に特定する（Ｓ１８）。制御部２０は、ステップＳ１５で移行対象の候補のゲストＯＳ１０１であると判断したゲストＯＳ１０１のうちで最も負荷が大きいゲストＯＳ１０１を特定する（Ｓ１９）。制御部２０は、特定したゲストＯＳ１０１が、ステップＳ１８で特定したサーバ装置１へ移行可能であるか否かを判断する（Ｓ２０）。
【０１２４】
移行可能でないと判断した場合（Ｓ２０：ＮＯ）、制御部２０は、ステップＳ１５で移行対象の候補のゲストＯＳ１０１であると判断したゲストＯＳ１０１が他にも有るか否かを判断する（Ｓ２２）。制御部２０は、移行対象の候補のゲストＯＳ１０１がまだ有ると判断した場合（Ｓ２２：ＹＥＳ）、ステップＳ１９で特定したゲストＯＳ１０１の次に負荷が大きいゲストＯＳ１０１を特定し（Ｓ２３）、ステップＳ２０へ処理を戻す。
【０１２５】
移行対象の候補のゲストＯＳ１０１が他に無いと判断した場合（Ｓ２２：ＮＯ）、制御部２０は、ステップＳ１６へ処理を移行し、ステップＳ１３で移行対象の候補のサーバ装置１であると判断したサーバ装置１が他にも有るか否かを判断する（Ｓ１６）。制御部２０は、移行対象の候補のサーバ装置１が他にも有ると判断した場合（Ｓ１６：ＹＥＳ）、次に負荷が大きいサーバ装置１を特定し（Ｓ１７）、ステップＳ１５へ処理を戻す。
【０１２６】
制御部２０は、ステップＳ１８で特定された移行先のサーバ装置１への移行が可能なゲストＯＳ１０１を特定するまで、上述したステップＳ１５〜Ｓ２３の処理を繰り返す。ステップＳ２０で、移行可能であると判断した場合（Ｓ２０：ＹＥＳ）、制御部２０は、移行対象のサーバ装置１に、移行対象のゲストＯＳ１０１の移行処理の開始を指示し（Ｓ２１）、処理を終了する。
【０１２７】
次に、本実施形態１のシンクライアントシステムにおける移行処理（マイグレーション処理）について説明する。図１１乃至図１３は移行元のサーバ装置１が行なう移行処理の手順を示すフローチャートである。なお、以下の処理は、サーバ装置１のＲＯＭ１１又はＨＤＤ１３に格納されている制御プログラムに従って制御部１０（ＶＭＭ１００）によって実行される。
【０１２８】
移行元のサーバ装置１の制御部１０は、管理装置２から移行処理の開始を指示されたか否かを判断しており（Ｓ３１）、指示されていないと判断した場合（Ｓ３１：ＮＯ）、指示されるまで待機する。制御部１０は、指示されたと判断した場合（Ｓ３１：ＹＥＳ）、移行先のサーバ装置１に対して、移行処理を開始する旨を通知する（Ｓ３２）。
【０１２９】
制御部１０は、移行対象のゲストＯＳ１０１の動作を一時的に停止させる（Ｓ３３）。制御部１０は、移行対象のゲストＯＳ１０１に関する各種の情報の、ネットワークストレージ３への書き込みを開始する（Ｓ３４）。制御部１０は、移行対象のゲストＯＳ１０１に対応する仮想ＵＳＢデバイス１０３又は仮想サウンドデバイス１０５の使用があるか否かを判断する（Ｓ３５）。
【０１３０】
仮想デバイス１０３，１０５の使用がないと判断した場合（Ｓ３５：ＮＯ）、制御部１０は、ステップＳ３４で開始したネットワークストレージ３への書き込みが終了したか否かを判断する（Ｓ３６）。書き込みが終了していないと判断した場合（Ｓ３６：ＮＯ）、制御部１０は、ステップＳ３５へ処理を戻す。
【０１３１】
制御部１０は、仮想デバイス１０３，１０５の使用があると判断した場合（Ｓ３５：ＹＥＳ）、ステップＳ３４で開始したネットワークストレージ３への情報の書き込みを中断する（Ｓ３７）。制御部１０は、移行対象のゲストＯＳ１０１の動作を再開させ（Ｓ３８）、一定時間待機する（Ｓ３９）。
【０１３２】
制御部１０は、移行対象のゲストＯＳ１０１に対応する仮想デバイス１０３，１０５の使用があるか否かを判断し（Ｓ４０）、仮想デバイス１０３，１０５の使用があると判断した場合（Ｓ４０：ＹＥＳ）、移行開始後のタイムアウト時間が経過したか否かを判断する（Ｓ４１）。タイムアウト時間が経過したと判断した場合（Ｓ４１：ＹＥＳ）、制御部１０は、移行先のサーバ装置１に、移行処理の終了を通知し（Ｓ４２）、移行処理を終了する。
【０１３３】
即ち、ここでタイムアウト時間が経過した場合には、利用者が積極的に使用している状態に推移したと考えられるため、移行処理を終了させることにより、そのゲストＯＳ１０１を移行処理の対象から外す。これにより、ゲストＯＳ１０１の移行処理に伴って生じ得る入出力処理の遅延を回避し、利用者の操作性を確保することが可能となる。
【０１３４】
一方、タイムアウト時間が経過していないと判断した場合（Ｓ４１：ＮＯ）、制御部１０は、再度一定時間待機した後、仮想デバイス１０３，１０５の使用状況をチェックする処理（Ｓ３９，Ｓ４０）を繰り返す。
【０１３５】
仮想デバイス１０３，１０５の使用がないと判断した場合（Ｓ４０：ＮＯ）、制御部１０は、ステップＳ３３へ処理を戻し、移行対象のゲストＯＳ１０１の動作を再度停止させる（Ｓ３３）。そして、制御部１０は、移行対象のゲストＯＳ１０１に関する各種の情報の、ネットワークストレージ３への書き込みを再度開始し（Ｓ３４）、ステップＳ３５〜Ｓ４０の処理を繰り返す。
【０１３６】
ステップＳ３６で、ネットワークストレージ３への書き込みが終了したと判断した場合（Ｓ３６：ＹＥＳ）、制御部１０は、移行先のサーバ装置１に、ネットワークストレージ３への書き込み完了を通知する（Ｓ４３）。制御部１０は、移行先のサーバ装置１から、ネットワークストレージ３からの情報の読み出し完了を通知されたか否かを判断する（Ｓ４４）。制御部１０は、通知されていないと判断した場合（Ｓ４４：ＮＯ）、移行元のゲストＯＳ１０１に対応する仮想デバイス１０３，１０５の使用があるか否かを判断する（Ｓ４５）。
【０１３７】
仮想デバイス１０３，１０５の使用がないと判断した場合（Ｓ４５：ＮＯ）、制御部１０は、ステップＳ４４へ処理を戻す。また、仮想デバイス１０３，１０５の使用があると判断した場合（Ｓ４５：ＹＥＳ）、制御部１０は、ステップＳ３８〜Ｓ４０の手順により、ゲストＯＳ１０１の動作を再開させて仮想デバイス１０３，１０５が使用されなくなるまで待機する。
【０１３８】
ステップＳ４４で、ネットワークストレージ３からの情報の読み出し完了を移行先のサーバ装置１から通知されたと判断した場合（Ｓ４４：ＹＥＳ）、制御部１０は、移行先のサーバ装置１が、ネットワークストレージ３に格納された情報を再読み出しする必要があるか否かを判断する（Ｓ４６）。再読み出しする必要があると判断した場合（Ｓ４６：ＹＥＳ）、制御部１０は、移行対象のゲストＯＳ１０１に関する各種の情報の、ネットワークストレージ３への書き込みを再度行なう（Ｓ４７）。
【０１３９】
制御部１０は、ネットワークストレージ３への情報の書き込みを終了した後、移行先のサーバ装置１に、ネットワークストレージ３の情報の再読み出しを指示する（Ｓ４８）。制御部１０は、再読み出しする必要がないと判断した場合（Ｓ４６：ＮＯ）、ステップＳ４７，４８の処理をスキップし、移行先のサーバ装置１に、移行先のゲストＯＳ１０１の動作開始を指示する（Ｓ４９）。そして、制御部１０は、ルーティング装置４に、移行元のゲストＯＳ１０１に割り当てられていたアドレスを、移行先のゲストＯＳ１０１に割り当てるように、割り当ての変更を指示し（Ｓ５０）、移行処理を終了する。
【０１４０】
図１４及び図１５は移行先のサーバ装置１が行なう移行処理の手順を示すフローチャートである。なお、以下の処理は、サーバ装置１のＲＯＭ１１又はＨＤＤ１３に格納されている制御プログラムに従って制御部１０（ＶＭＭ１００）によって実行される。
【０１４１】
移行先のサーバ装置１の制御部１０は、移行元のサーバ装置１から、移行処理の開始を通知されたか否かを判断しており（Ｓ６１）、通知されていないと判断した場合（Ｓ６１：ＮＯ）、通知されるまで待機する。制御部１０は、通知されたと判断した場合（Ｓ６１：ＹＥＳ）、移行先として指定されたゲストＯＳ１０１を起動させる（Ｓ６２）。
【０１４２】
移行先のサーバ装置１の制御部１０は、移行元のサーバ装置１から、移行処理の中止を通知されたか否かを判断しており（Ｓ６３）、通知されたと判断した場合（Ｓ６３：ＹＥＳ）、ステップＳ６２で起動させたゲストＯＳ１０１の動作を終了し（Ｓ６４）、移行処理を終了する。
【０１４３】
移行処理の中止を通知されていないと判断した場合（Ｓ６３：ＮＯ）、制御部１０は、移行元のサーバ装置１から、ネットワークストレージ３への情報の書き込み完了を通知されたか否かを判断する（Ｓ６５）。ネットワークストレージ３への情報の書き込み完了を通知されていないと判断した場合（Ｓ６５：ＮＯ）、制御部１０は、ステップＳ６３へ処理を戻し、通知されるまで待機する。制御部１０は、ネットワークストレージ３への情報の書き込み完了を通知されたと判断した場合（Ｓ６５：ＹＥＳ）、移行元のサーバ装置１によって書き込まれた情報のネットワークストレージ３からの読み出しを開始する（Ｓ６６）。
【０１４４】
制御部１０は、移行元のサーバ装置１から、移行処理の中止を通知されたか否かを判断しており（Ｓ６７）、通知されたと判断した場合（Ｓ６７：ＹＥＳ）、ステップＳ６６で開始したネットワークストレージ３からの情報の読み出しを終了する（Ｓ６８）。制御部１０は、ステップＳ６２で起動させたゲストＯＳ１０１の動作を終了させ（Ｓ６９）、移行処理を終了する。
【０１４５】
移行処理の中止を通知されていないと判断した場合（Ｓ６７：ＮＯ）、制御部１０は、ステップＳ６６で開始したネットワークストレージ３からの情報の読み出しを終了したか否かを判断する（Ｓ７０）。ネットワークストレージ３からの情報の読み出しを終了していないと判断した場合（Ｓ７０：ＮＯ）、制御部１０は、ステップＳ６７へ処理を戻す。ネットワークストレージ３からの情報の読み出しを終了したと判断した場合（Ｓ７０：ＹＥＳ）、制御部１０は、移行元のサーバ装置１に、ネットワークストレージ３からの情報の読み出し完了を通知する（Ｓ７１）。
【０１４６】
そして、制御部１０は、移行元のサーバ装置１から、ネットワークストレージ３からの情報の再読み出しを指示されたか否かを判断しており（Ｓ７２）、指示されたと判断した場合（Ｓ７２：ＹＥＳ）、ネットワークストレージ３から情報を再読み出しする（Ｓ７３）。制御部１０は、ネットワークストレージ３からの情報の再読み出しを指示されていないと判断した場合（Ｓ７２：ＮＯ）、ステップＳ７３の処理をスキップする。制御部１０は、移行元のサーバ装置１から、移行先のゲストＯＳ１０１の動作開始を指示されたか否かを判断し（Ｓ７４）、指示されていないと判断した場合（Ｓ７４：ＮＯ）、ステップＳ７２へ処理を戻す。
【０１４７】
制御部１０は、移行先のゲストＯＳ１０１の動作開始を指示されたと判断した場合（Ｓ７４：ＹＥＳ）、ネットワークストレージ３から読み出して移行先のゲストＯＳ１０１に対応するＲＡＭ１２に格納した各情報に基づいて、ステップＳ６２で起動させたゲストＯＳ１０１の動作を開始し（Ｓ７５）、移行処理を終了する。
【０１４８】
上述した処理により、移行処理の実行中に、移行元のゲストＯＳ１０１に対応する各種デバイスが使用された場合には即座にそのデバイスの動作に対応する処理を行なうので、ゲストＯＳ１０１のユーザに、移行処理に伴うゲストＯＳ１０１の処理停止を体感させない。また、移行処理によって、負荷の大きいサーバ装置１の負荷（ゲストＯＳ１０１、仮想環境１０２）を他のサーバ装置１へ移行させることができるので、各サーバ装置１，１…を利用するユーザに高品質のシンクライアントを提供できる。
【０１４９】
移行対象のゲストＯＳ１０１が移行先のサーバ装置１に移行可能であるか否かの判断は、ＣＰＵ使用率及びメモリ使用率を比較する構成に限られない。例えば、サーバ装置１におけるリソースの使用状態に対応させて、移行処理を行なうか否かを示す情報を登録したテーブルを用いて行なってもよい。この場合、移行対象（移行元）のサーバ装置１のリソース使用状況と移行先のサーバ装置１のリソース使用状況とを、このようなテーブルに当てはめた上で、テーブルの登録内容に従って移行処理を行なうか否かを判断すればよい。
【０１５０】
上述した実施形態１のシンクライアントシステムでは、管理装置２が、それぞれのサーバ装置１，１…における負荷（ＣＰＵ使用率及びメモリ使用率）を監視し、移行処理が必要であるか否かを判断する構成であった。このような構成に限られず、本実施形態１の管理装置２の機能を、いずれかのサーバ装置１に持たせるように構成することもできる。この場合、他のサーバ装置１，１…が、自身におけるゲストＯＳ１０１，１０１のＣＰＵ使用率及びメモリ使用率を、管理装置２の機能を有するサーバ装置１へ送信し、管理装置２の機能を有するサーバ装置１で管理する。
【０１５１】
また、それぞれのサーバ装置１，１…が、自身におけるゲストＯＳ１０１，１０１のＣＰＵ使用率の合計又はメモリ使用率の合計がそれぞれ所定値よりも大きいか否かを監視するように構成してもよい。この場合、それぞれのサーバ装置１，１…におけるＶＭＭ１００，１００…が、自身のサーバ装置１，１…におけるゲストＯＳ１０１，１０１のＣＰＵ使用率の合計又はメモリ使用率の合計がそれぞれ所定値よりも大きい場合、移行処理が必要であると判断する。なお、この構成については、以下の実施形態２で説明する。
【０１５２】
（実施形態２）
以下に、実施形態２に係るシンクライアントシステムについて説明する。本実施形態２のシンクライアントシステムは、上述した実施形態１のシンクライアントシステムと同様の構成によって実現される。従って、本実施形態２のシンクライアントシステムにおけるサーバ装置１、管理装置２ネットワークストレージ３及び端末装置５の構成についての詳細な説明は省略する。
【０１５３】
なお、本実施形態２のシンクライアントシステムでは、管理装置２は、端末装置５からのゲストＯＳ１０１の起動の要求に対して、どのサーバ装置１のどのゲストＯＳ１０１を提供するかを決定する処理を行なう。従って、端末装置５，５…によってシンクライアントの利用が可能になるまでの処理、シンクライアントとして動作している端末装置５，５…によるシンクライアントとしての動作を終了させる処理については、実施形態１で説明した処理と同様である。
【０１５４】
上述した実施形態１では、管理装置２は、それぞれのサーバ装置１，１…における利用状況を監視する構成であったが、本実施形態２では、それぞれのサーバ装置１，１…が、自身のサーバ装置１，１…における利用状況を監視する構成である。
【０１５５】
以下に、本実施形態２のシンクライアントシステムにおいて、それぞれのサーバ装置１，１…が、自身のサーバ装置１，１…における利用状況を監視する処理について説明する。本実施形態２のサーバ装置１，１…も、上述した実施形態１のサーバ装置１，１…と同様に、利用状況テーブル１３ｄを用いて、自身のサーバ装置１，１…におけるゲストＯＳ１０１，１０１によるＣＰＵ使用率、メモリ使用率及びデバイス使用状況を管理している。
【０１５６】
サーバ装置１の制御部１０は、利用状況テーブル１３ｄの登録内容を定期的に監視する。制御部１０は、自身のサーバ装置１におけるゲストＯＳ１０１のＣＰＵ使用率の合計又はメモリ使用率の合計がそれぞれの所定値（例えば９０％）よりも大きければ、移行処理が必要であると判断する。
【０１５７】
制御部１０は、移行処理が必要であると判断した場合、他のサーバ装置１への移行が可能な移行対象のゲストＯＳ１０１（動作環境）を特定する。具体的には、制御部１０は、利用状況テーブル１３ｄの登録内容に基づいて、自身のサーバ装置１におけるゲストＯＳ１０１，１０１のうちで、仮想ＵＳＢデバイス１０３又は仮想サウンドデバイス１０５が使用されていないゲストＯＳ１０１を特定する。
【０１５８】
仮想ＵＳＢデバイス１０３及び仮想サウンドデバイス１０５が使用されていないゲストＯＳ１０１（移行対象の候補のゲストＯＳ１０１）を特定できた場合、制御部１０は、ネットワークＮ２を介して接続されている他のサーバ装置１，１…と通信を行なう。制御部１０は、他のサーバ装置１，１…から、他のサーバ装置１，１…におけるＣＰＵ使用率及びメモリ使用率を受信し、ＣＰＵ使用率の合計（負荷）が最も小さいサーバ装置１を特定する。なお、ＣＰＵ使用率の合計が同じサーバ装置１，１…が複数あった場合、制御部１０は、他のサーバ装置１，１…におけるゲストＯＳ１０１，１０１のメモリ使用率の合計が最も小さいサーバ装置１を特定する。
【０１５９】
そして、制御部１０は、特定したサーバ装置１（移行先のサーバ装置１）が、自身における移行対象の候補のゲストＯＳ１０１のいずれかの受け入れが可能であるか否かを判断する。具体的には、制御部２０は、特定したサーバ装置１に移行対象のゲストＯＳ１０１を移行した後の、このサーバ装置１におけるＣＰＵ使用率の合計及びメモリ使用率の合計が所定値よりも小さい値となるか否かを判断する。
【０１６０】
まず、制御部１０は、自身における移行対象の候補のゲストＯＳ１０１が複数ある場合、最も負荷（ＣＰＵ使用率又はメモリ使用率）が大きいゲストＯＳ１０１を特定する。そして、制御部１０は、このゲストＯＳ１０１を、移行先のサーバ装置１に移行させた場合の移行先のサーバ装置１におけるＣＰＵ使用率の合計及びメモリ使用率を算出する。制御部１０は、算出したＣＰＵ使用率の合計及びメモリ使用率の合計が所定値よりも小さいか否かを判断し、小さい場合、このゲストＯＳ１０１を移行対象のゲストＯＳ１０１に特定する。
【０１６１】
一方、算出したＣＰＵ使用率の合計又はメモリ使用率の合計が所定値よりも大きい場合、このゲストＯＳ１０１を移行した場合、移行先のサーバ装置１における負荷が基準値（所定値）よりも高くなるので、このゲストＯＳ１０１の移行は行わない。従って、制御部１０は、自身のサーバ装置１において、このゲストＯＳ１０１の次に負荷が大きいゲストＯＳ１０１を特定し、同様に、このゲストＯＳ１０１が、移行先のサーバ装置１に移行可能であるか否かを判断する。
【０１６２】
制御部１０は、移行先のサーバ装置１に移行可能なゲストＯＳ１０１を特定するまで上述した処理を繰り返す。なお、制御部１０は、移行先のサーバ装置１に移行可能であるゲストＯＳ１０１を特定できなかった場合、移行処理を行なわない。これにより、移行先のサーバ装置１において、ゲストＯＳ１０１を移行された場合であっても、移行先のサーバ装置１における負荷が基準値を満たすことができるので、移行先のサーバ装置１を既に使用中の他のユーザの仮想環境１０２，１０２…に影響を与えない。
【０１６３】
また、ユーザが実際に端末装置５を使用している可能性の高い端末装置５に対応するゲストＯＳ１０１を移行処理の対象から外す。これにより、移行処理によってゲストＯＳが一時的に動作を停止した場合であっても、他のゲストＯＳ１０１を使用中のユーザには影響を与えない。
【０１６４】
サーバ装置１（移行元のサーバ装置１）の制御部１０は、上述した処理により、移行対象のゲストＯＳ１０１及び移行先のサーバ装置１を特定できた場合、移行処理を開始する。なお、移行処理を開始するサーバ装置１は、実施形態１において図１１乃至図１３で説明した、移行元のサーバ装置１が行なう処理を行なえばよいので説明を省略する。また、移行先に選ばれたサーバ装置１の制御部１０は、実施形態１において図１４及び図１５で説明した、移行先のサーバ装置１が行なう処理を行なえばよいので、説明を省略する。
【０１６５】
以下に、サーバ装置１が自身における利用状況を監視する処理について説明する。図１６はサーバ装置１，１…の利用状況の監視処理の手順を示すフローチャートである。なお、以下の処理は、サーバ装置１のＲＯＭ１１又はＨＤＤ１３に格納されている制御プログラムに従って制御部１０（ＶＭＭ１００）によって実行される。
【０１６６】
サーバ装置１の制御部１０は、利用状況テーブル１３ｄの登録内容に基づいて、移行処理が必要であるか否かを判断しており（Ｓ８１）、移行処理が必要でないと判断した場合（Ｓ８１：ＮＯ）、待機する。具体的には、制御部１０は、自身のゲストＯＳ１０１，１０１のＣＰＵ使用率の合計又はメモリ使用率の合計がそれぞれの所定値よりも大きいか否かを判断する。
【０１６７】
制御部１０は、移行処理が必要であると判断した場合（Ｓ８１：ＹＥＳ）、利用状況テーブル１３ｄの登録内容に基づいて、移行対象の候補のゲストＯＳ１０１が有るか否かを判断する（Ｓ８２）。具体的には、制御部１０は、自身のサーバ装置１におけるゲストＯＳ１０１，１０１…のうちで、仮想ＵＳＢデバイス１０３及び仮想サウンドデバイス１０５が使用されていないゲストＯＳ１０１を特定する。
【０１６８】
移行対象の候補のゲストＯＳ１０１が無いと判断した場合（Ｓ８２：ＮＯ）、制御部１０は、ステップＳ８１へ処理を戻す。移行対象の候補のゲストＯＳ１０１が有ると判断した場合（Ｓ８２：ＹＥＳ）、制御部１０は、ネットワークＮ２を介して接続されている他のサーバ装置１，１…のうちで、最も負荷（ＣＰＵ使用率及びメモリ使用率）が小さいサーバ装置１を移行先のサーバ装置１に特定する（Ｓ８３）。具体的には、制御部１０は、ネットワークＮ２を介して接続されている他のサーバ装置１，１…から、他のサーバ装置１，１…におけるＣＰＵ使用率及びメモリ使用率を受信し、ＣＰＵ使用率の合計（負荷）が最も小さいサーバ装置１を特定する。
【０１６９】
制御部１０は、ステップＳ８２で移行対象の候補のゲストＯＳ１０１であると判断したゲストＯＳ１０１のうちで最も負荷が大きいゲストＯＳ１０１を特定する（Ｓ８４）。制御部１０は、特定したゲストＯＳ１０１が、ステップＳ８３で特定した移行先のサーバ装置１へ移行可能であるか否かを判断する（Ｓ８５）。
【０１７０】
移行可能でないと判断した場合（Ｓ８５：ＮＯ）、制御部１０は、ステップＳ８２で移行対象の候補のゲストＯＳ１０１であると判断したゲストＯＳ１０１が他にも有るか否かを判断する（Ｓ８７）。制御部１０は、移行対象の候補のゲストＯＳ１０１が無いと判断した場合（Ｓ８７：ＮＯ）、移行処理を終了する。
【０１７１】
制御部１０は、移行対象の候補のゲストＯＳ１０１がまだ有ると判断した場合（Ｓ８７：ＹＥＳ）、ステップＳ８４で特定したゲストＯＳ１０１の次に負荷が大きいゲストＯＳ１０１を特定し（Ｓ８８）、ステップＳ８５へ処理を戻す。制御部１０は、ステップＳ８５で移行可能であると判断するまで、又はステップＳ８７で移行対象の候補のゲストＯＳ１０１が無いと判断するまで、上述した処理を繰り返す。制御部１０は、ステップＳ８５で移行可能であると判断した場合（Ｓ８５：ＹＥＳ）、移行対象のゲストＯＳ１０１の移行処理を開始する。（Ｓ８６）
【０１７２】
上述した実施形態２でも、ユーザが実際に端末装置５を使用している可能性の高い端末装置５に対応するゲストＯＳ１０１を移行処理の対象から外すことにより、ゲストＯＳ１０１の使用中のユーザには影響を与えずに移行処理を実行できる。また、移行対象のゲストＯＳ１０１を移行先のサーバ装置１へ移行した場合であっても、移行先のサーバ装置１におけるＣＰＵ使用率及びメモリ使用率は基準値を満たすことができる。従って、移行先のサーバ装置１を既に使用中の他のユーザの仮想環境１０２，１０２…に影響を与えないので、シンクライアントシステムが提供するサービス品質を維持できる。
【図面の簡単な説明】
【０１７３】
【図１】実施形態１に係るシンクライアントシステムの構成を示す模式図である。
【図２】サーバ装置の構成を示すブロック図である。
【図３】サーバ装置の機能を示す機能ブロック図である。
【図４】利用状況テーブルの登録内容を示す模式図である。
【図５】管理装置及びネットワークストレージの構成を示すブロック図である。
【図６】ユーザ管理テーブル及びリソース管理テーブルの登録内容を示す模式図である。
【図７】端末装置の構成を示すブロック図である。
【図８】シンクライアントの起動処理の手順を示すフローチャートである。
【図９】サーバ装置の利用状況の監視処理の手順を示すフローチャートである。
【図１０】サーバ装置の利用状況の監視処理の手順を示すフローチャートである。
【図１１】移行元のサーバ装置が行なう移行処理の手順を示すフローチャートである。
【図１２】移行元のサーバ装置が行なう移行処理の手順を示すフローチャートである。
【図１３】移行元のサーバ装置が行なう移行処理の手順を示すフローチャートである。
【図１４】移行先のサーバ装置が行なう移行処理の手順を示すフローチャートである。
【図１５】移行先のサーバ装置が行なう移行処理の手順を示すフローチャートである。
【図１６】サーバ装置の利用状況の監視処理の手順を示すフローチャートである。
【符号の説明】
【０１７４】
１  サーバ装置（情報処理装置）
１０  制御部（実行手段）
２  管理装置
２０  制御部（検出手段、特定手段、選択手段、移行手段）
３  ネットワークストレージ
５  端末装置（外部装置）
Ｎ１，Ｎ２  ネットワーク
【図１】
0005029440.tif 000002
【図２】
0005029440.tif 000003
【図３】
0005029440.tif 000004
【図４】
0005029440.tif 000005
【図５】
0005029440.tif 000006
【図６】
0005029440.tif 000007
【図７】
0005029440.tif 000008
【図８】
0005029440.tif 000009
【図９】
0005029440.tif 000010
【図１０】
0005029440.tif 000011
【図１１】
0005029440.tif 000012
【図１２】
0005029440.tif 000013
【図１３】
0005029440.tif 000014
【図１４】
0005029440.tif 000015
【図１５】
0005029440.tif 000016
【図１６】
0005029440.tif 000017