以下に、本発明に係る情報処理システムについて、シンクライアントシステムに適用した実施形態を示す図面に基づいて詳述する。なお、以下では、本発明に係る情報処理システムを、情報処理装置(サーバ装置)のハードウェアを仮想化し、その上で複数の仮想PC(ゲストOS)を実行させるシンクライアントシステムに適用した実施形態を例に説明する。
(実施形態1)
以下に、実施形態1に係るシンクライアントシステムについて説明する。図1は実施形態1に係るシンクライアントシステムの構成を示す模式図である。本実施形態1のシンクライアントシステムは、複数のサーバ装置(情報処理装置)1,1…、サーバ装置1,1…を管理する管理装置2、ネットワークストレージ3、端末装置5,5…等を含む。
サーバ装置1,1…、管理装置2及びネットワークストレージ3は、Local Area Network(LAN)等のネットワークN2を介して接続されている。ネットワークN2には、ルーティング装置4が接続されており、ネットワークN2は、ルーティング装置4を介して、インターネット等のネットワークN1に接続されている。ネットワークN1には、端末装置5,5…が接続されている。このような構成により、端末装置5,5…は、ネットワークN1、ルーティング装置4及びネットワークN2を介してサーバ装置1,1…又は管理装置2に接続することができる。
サーバ装置1,1…及び管理装置2はそれぞれがサーバコンピュータ装置である。ネットワークストレージ3は、Hard Disk Drive(HDD)、ネットワークN2に接続するためのネットワークインタフェース等を備える記憶装置である。なお、サーバ装置1,1…は、自身の内部に備えたHDD13(図2参照)と同様にネットワークストレージ3のHDD32(図5参照)を使用することができる。
端末装置5,5…はシンクライアントとして使用され、例えば、HDD等の記憶装置を備えないパーソナルコンピュータであり、例えばUniversal Serial Bus(USB)ケーブルを介してマウス56が接続されている。なお、シンクライアントとして利用される端末装置5,5…は、このような構成に限られず、例えば、テレビジョン受像機、キーボード及びマウス等との接続が可能なセットトップボックス(STB;Set Top Box )として構成してもよい。この場合、端末装置5,5…に、テレビジョン受像機、キーボード及びマウスを接続することによって、シンクライアントとして利用される。
サーバ装置1,1…のそれぞれは、一の装置で複数の情報処理装置として動作する仮想化技術が適用されており、各端末装置5,5…に対応する仮想PC(ゲストOS)を起動して実行するようにしてある。またサーバ装置1,1…は、各ゲストOSの起動/停止及びその動作を管理する機能を有するVirtual Machine Monitor(VMM)100(図3参照)を起動して実行するようにしてある。
上述した構成のシンクライアントシステムにおいて、端末装置5は、いずれかのサーバ装置1におけるゲストOSを利用する場合、まず、管理装置2に対して、自身に対応するゲストOSの起動を要求する信号を送信する。管理装置2は、各サーバ装置1,1…におけるゲストOSを利用中のユーザを管理すると共に、各ユーザによるゲストOSの動作状況を管理している。管理装置2は、各サーバ装置1,1…の動作状況に基づいて、ゲストOSの起動を要求してきた端末装置5に対応してゲストOSを提供するサーバ装置1を決定する。そして、管理装置2は、決定したサーバ装置1に対して、端末装置5に対応するゲストOSの起動を指示する。
管理装置2からゲストOSの起動を指示されたサーバ装置1は、端末装置5に対応するゲストOSを起動する。なお、サーバ装置1は、起動したゲストOSに対応する端末装置5のアドレスを取得しておき、そのアドレスを宛先として、起動させたゲストOSが出力する画像信号を生成し、ネットワークN1,N2を介して端末装置5へ送信する。よって、サーバ装置1は、ゲストOSが出力する画像信号を端末装置5へ送信する画面転送方式のシンクライアントシステムを実現する。端末装置5は、サーバ装置1から送信されてきた画像信号を受信して表示部52(図7参照)に表示し、シンクライアントとしての動作を開始する。
図2はサーバ装置1の構成を示すブロック図、図3はサーバ装置1の機能を示す機能ブロック図である。なお、サーバ装置1,1…のそれぞれは全て同一の構成である。図3には、サーバ装置1で、制御部10、RAM12、HDD13、通信部14等を含むハードウェア上で、VMM100の動作により、複数のゲストOS101,101がそれぞれの仮想環境102,102上で独立して実行可能となっていることが示されている。
本実施形態1のサーバ装置1は、制御部10、Read Only Memory(ROM)11、Random Access Memory(RAM)12、Hard Disk Drive(HDD)13、通信部14等を備えており、それぞれはバス1aを介して相互に接続されている。制御部10は、例えばCentral Processing Unit(CPU)又はMicro Processor Unit(MPU)等であり、ROM11又はHDD13に予め格納されている制御プログラムを適宜RAM12に読み出して実行すると共に、上述したハードウェア各部の動作を制御する。
ROM11は、本実施形態1のサーバ装置1を、本発明の情報処理システムに利用される情報処理装置として動作させるために必要な種々の制御プログラムを予め格納している。RAM12は、例えばStatic RAM(SRAM)又はフラッシュメモリ等であり、制御部10による制御プログラムの実行時に発生する種々のデータを一時的に記憶する。
HDD13は大容量の記憶装置である。HDD13は、本実施形態1のサーバ装置1を、本発明の情報処理システムに利用される情報処理装置として動作させるために必要な種々の制御プログラム、各種のデータ等を格納している。また、HDD13は、OSプログラム13a、VMMプログラム13b、仮想環境モニタプログラム13c、図4に示すような利用状況テーブル13d等を格納している。
通信部14は、例えばネットワークカードを備え、ネットワークN2を介した管理装置2、ネットワークストレージ3、端末装置5,5…等との通信を実現するハードウェアである。なお、通信部14は、ルーティング装置4を介してインターネット等のネットワークN2に接続されている。従って、ネットワークN2を介して公開されている映像、画像、テキストデータ等の各種情報を、サーバ装置1におけるゲストOS101,101が通信部14を介して取得することができる。
OSプログラム13aは、ユーザが操作できるCommand User Interface(CUI)、Graphic User Interface(GUI)を持つWindows(登録商標)、Linux等のOSソフトウェアである。制御部10は、OSプログラム13aをHDD13から読み出して実行することによりゲストOS101(仮想PC)として動作し、各種処理を実行する実行手段として機能する。また、ゲストOS101(制御部10)は、各種処理に応じて生成するCUI、GUI等を含む画像信号を、自身のゲストOS101に対応する端末装置5へ送信する。
ゲストOS101は、端末装置(外部装置)5におけるキーボード55(図7参照)又はマウス56からの制御信号(操作情報)をネットワークN1,N2を介して受信し、受信した制御信号に応じて各種処理を実行する。なお、ゲストOS101は、処理に応じた画像信号のみならず、音声信号等も生成して端末装置5へ送信する。
VMMプログラム13bは、サーバ装置1において複数のゲストOS101,101が動作する仮想化技術を実現するためのソフトウェアである。制御部10は、VMMプログラム13bをHDD13から読み出して実行することによりVMM(仮想マシンモニタ)100として動作し、サーバ装置1が論理的に複数のサーバ装置として動作する仮想環境102,102を提供する。これにより、サーバ装置1において論理的に複数の独立したゲストOS101,101が動作することが可能となる。制御部10は、マルチコアCPUで構成され、各ゲストOS101,101、VMM100がそれぞれ物理的に異なるCPUコア上に分散して動作するように最適に設計されている。なお、マルチコアCPUとは限らず、シングルコアCPUで構成してもよい。
VMM100(制御部10)は、各ソフトウェアとハードウェア資源との間の管理を実現し、各ゲストOS101,101に対応するハードウェアの動作の基本的な制御を行なう。更に、VMM100は、各端末装置5,5…に対応するゲストOS101,101…の起動の指示を管理装置2から取得した場合、取得した指示に応じて、各端末装置5,5…に対応するOSプログラム13aを読み出して実行し、各ゲストOS101,101…を起動させる。
この場合、VMM100は、各ゲストOS101,101に利用されるハードウェアの割り当て制御等を行ない、それぞれのゲストOS101,101に仮想環境102,102を割り当てる。なお、各ゲストOS101,101に割り当てるハードウェアとしては、例えば、制御部10、RAM12、HDD13及び通信部14等と、ネットワークストレージ3のHDD32とがある。
なお、サーバ装置1に複数の画像送信装置(図示せず)との接続が可能な入出力部(図示せず)を設け、サーバ装置1が、画像送信装置を介して画像信号を端末装置5へ送信する構成とすることもできる。この場合、VMM100は、ゲストOS101,101に対して、いずれかの画像送信装置の割り当ても行なう。
RAM12は、制御部10がOSプログラム13a及びVMMプログラム13b等をそれぞれ読み出す際に使用される他、制御部10が各制御プログラムを読み出して実行し、各処理を行なう際に一時的に各種情報を記憶する。また、RAM12は、制御部10が各ゲストOS101,101として動作する場合に対応する端末装置5,5…毎の設定情報を記憶するために使用される。従って、RAM12も論理的に複数のメモリに分割され、各ゲストOS101,101、VMM100のそれぞれに割り当てられる。
仮想環境モニタプログラム13cは、サーバ装置1において複数の仮想環境102,102を監視するためのソフトウェアである。制御部10は、仮想環境モニタプログラム13cをHDD13から読み出して実行することにより、それぞれの仮想環境102,102における仮想USBデバイス103,103を監視するUSBデバイスモニタ部104,104として動作する。
また、制御部10は、仮想環境モニタプログラム13cをHDD13から読み出して実行することにより、それぞれの仮想環境102,102における仮想サウンドデバイス105,105を監視するサウンドデバイスモニタ部106,106として動作する。更に、制御部10は、仮想環境モニタプログラム13cをHDD13から読み出して実行することにより、それぞれの仮想環境102,102が、サーバ装置1に与える負荷を監視するサーバ負荷モニタ部107,107として動作する。
ゲストOS101は、通信部14が受信した端末装置5のマウス56からの操作情報を、仮想USBデバイス103を介して取得する。USBデバイスモニタ部104は、仮想USBデバイス103の使用状況を監視し、監視結果をVMM100へ通知する。なお、仮想USBデバイス103が使用中である場合、即ち、仮想USBデバイス103が端末装置5からの操作情報を取得している場合、端末装置5のユーザがマウス56を操作中であると判断することができる。
また、ゲストOS101は、処理に応じて生成した音声信号を仮想サウンドデバイス105を介して通信部14へ送出し、通信部14を介して端末装置5へ送信する。サウンドデバイスモニタ部106は、仮想サウンドデバイス105の使用状況を監視し、監視結果をVMM100へ通知する。なお、仮想サウンドデバイス105が使用中である場合、即ち、仮想サウンドデバイス105がゲストOS101からの音声信号を取得している場合、端末装置5のユーザが音声出力を鑑賞中であると判断することができる。
サーバ負荷モニタ部107,107は、それぞれの仮想環境102,102上でそれぞれのゲストOS101,101が動作することによってサーバ装置1に与える負荷を検出する。具体的には、サーバ負荷モニタ部107,107は、仮想環境102,102が動作することによる、制御部10(CPU)の使用率(CPU使用率)及びRAM12の使用量(メモリ使用量)を計測し、計測したCPU使用率及びメモリ使用量をVMM100へ通知する。
図4は利用状況テーブル13dの登録内容を示す模式図である。利用状況テーブル13dには、図4に示すように、制御部10がOSプログラム13aを実行することにより起動させたゲストOS101,101毎に、ゲストOS101,101を識別するためのゲストOS−ID(IDentifier)、ゲストOS101,101によるCPU使用率、メモリ使用率、デバイス使用状況等を含むゲストOS情報が登録されている。なお、ゲストOS−IDは、ゲストOS101自体を識別するための情報であってもよいし、ゲストOS101を使用する端末装置5、又は端末装置5を使用するユーザを特定するための情報であってもよい。
利用状況テーブル13dの登録内容は、VMM100(制御部10)が、OSプログラム13aを実行してゲストOS101を起動させる都度、VMM100によって登録される。また、利用状況テーブル13dのCPU使用率は、サーバ負荷モニタ部107が仮想環境102によるCPU使用率をVMM100へ通知する都度、VMM100によって登録される。利用状況テーブル13dのメモリ使用率は、サーバ負荷モニタ部107が仮想環境102によるメモリ使用量をVMM100へ通知する都度、VMM100が、RAM12のメモリ量に対する、通知されたメモリ使用量の割合(使用率)を算出して登録する。
また、利用状況テーブル13dのデバイス使用状況は、USBデバイスモニタ部104又はサウンドデバイスモニタ部106が仮想USBデバイス103又は仮想サウンドデバイス105の使用状況をVMM100へ通知する都度、VMM100によって登録される。
なお、図4に示した利用状況テーブル13dでは、RAM12のメモリ量に対する、各仮想環境102,102によるメモリ使用量の割合(メモリ使用率)が登録される構成とした。これに対して、サーバ負荷モニタ部107が計測した各仮想環境102,102によるメモリ使用量をそのまま利用状況テーブル13dに登録させてもよい。
図5は管理装置2及びネットワークストレージ3の構成を示すブロック図である。本実施形態1の管理装置2は、制御部20、ROM21、RAM22、HDD23、通信部24等を備えており、それぞれはバス2aを介して相互に接続されている。
制御部20は、例えばCPU又はMPU等であり、ROM21又はHDD23に予め格納されている制御プログラムを適宜RAM22に読み出して実行すると共に、上述したハードウェア各部の動作を制御する。ROM21は、管理装置2として動作するために必要な種々の制御プログラムを予め格納している。RAM22は、例えばSRAM又はフラッシュメモリ等であり、制御部20による制御プログラムの実行時に発生する種々のデータを一時的に記憶する。
HDD23は大容量の記憶装置である。HDD23は、管理装置2として動作するために必要な種々の制御プログラム、サーバ管理プログラム23a、図6(a)に示すようなユーザ管理テーブル23b、図6(b)に示すようなリソース管理テーブル23c等を格納している。
通信部24は、例えばネットワークカードを備え、ネットワークN2を介したサーバ装置1等との通信を実現するハードウェアである。
サーバ管理プログラム23aは、サーバ装置1,1…の動作を管理するためのソフトウェアである。制御部20は、サーバ管理プログラム23aをHDD23から読み出して実行することにより、それぞれのサーバ装置1,1…におけるゲストOS101,101の動作状態を管理する。具体的には、制御部20は、ユーザ管理テーブル23b及びリソース管理テーブル23cに各種情報を逐次登録することにより、それぞれのサーバ装置1,1…におけるゲストOS101,101を利用するユーザ及びゲストOS101,101の動作状態を管理する。
図6はユーザ管理テーブル23b及びリソース管理テーブル23cの登録内容を示す模式図である。ユーザ管理テーブル23bは、図6(a)に示すように、それぞれのサーバ装置1,1…が提供するゲストOS101,101を利用するユーザ毎に、ユーザを識別するためのユーザID、各ユーザに割り当てられた仮想環境102,102の情報等を含むユーザ情報が登録されている。仮想環境102の情報には、仮想環境102を提供するサーバ装置1のサーバID、サーバ装置1におけるゲストOS101のゲストOS−ID、ネットワークストレージ3におけるHDD32のメモリ領域等が含まれる。
ユーザ管理テーブル23bの登録内容は、制御部20が、ゲストOS101の起動の要求を端末装置5から受信し、この端末装置5に対するゲストOS101(仮想環境102)の起動をサーバ装置1へ指示する都度、制御部20によって登録される。制御部20は、ゲストOS101の起動の要求を受信する際に、ゲストOS101の起動を要求してきた端末装置5のユーザのユーザ情報も受信しており、受信したユーザ情報のユーザIDをユーザ管理テーブル23bのユーザIDの欄に登録する。
制御部20は、ゲストOS101の起動を要求してきた端末装置5毎に、どのサーバ装置1のどのゲストOS101を割り当てるかを決定すると共に、ネットワークストレージ3のHDD32のどのメモリ領域を割り当てるかを決定する。従って、制御部20は、それぞれ決定したサーバ装置1、ゲストOS101、HDD32のメモリ領域を、端末装置5に割り当てる仮想環境102の情報としてユーザ管理テーブル23bに登録する。
なお、管理装置2は、各端末装置5,5…からのサーバ装置1(ゲストOS101)への接続を認証するように構成されていてもよい。この場合、各端末装置5,5…のユーザID及びパスワードを予めテーブルに登録しておく。そして、管理装置2は、ゲストOS101の起動の要求と共に取得した端末装置5のユーザのユーザ情報(ユーザID及びパスワード)が、テーブルに登録されているか否かを判断する。管理装置2は、ユーザ情報がテーブルに登録されていれば、ゲストOS101の利用を許可し、この端末装置5に対してゲストOS101を提供すべきサーバ装置1に対して、ゲストOS101の起動を指示する。
リソース管理テーブル23cには、図6(b)に示すように、それぞれのサーバ装置1,1…毎に、サーバ装置1,1…を識別するためのサーバID、各サーバ装置1,1…におけるゲストOS101,101…の利用状況等を含むサーバ情報が登録されている。利用状況には、ゲストOS101を識別するためのゲストOS−ID、CPU使用率、メモリ使用率、デバイス使用状況等が含まれる。
リソース管理テーブル23cの登録内容は、各サーバ装置1,1…から、各サーバ装置1,1…におけるゲストOS101,101…のゲストOS情報が送信されてくる都度、制御部20によって登録される。具体的には、各サーバ装置1,1…のVMM100,100…は、利用状況テーブル13dに登録されたゲストOS情報を更新する都度、更新したゲストOS情報を管理装置2へ送信する。管理装置2の制御部20は、各サーバ装置1,1…からゲストOS情報を受信する都度、各サーバ装置1,1…のサーバIDに対応させて、受信したゲストOS情報のゲストOS−ID、CPU使用率、メモリ使用率、デバイス使用状況の各情報を、リソース管理テーブル23cの利用状況の各欄に登録する。
ネットワークストレージ3は、図5に示すように、ネットワークN2に接続するための通信部31及びHDD32等を備える。通信部31は、ネットワークN2を介したサーバ装置1との通信を行なう。HDD32は、各サーバ装置1,1…が提供する仮想環境102,102…として用いられるので、HDD32も論理的に複数のメモリに分割され、各サーバ装置1,1…の各ゲストOS101,101…のそれぞれに割り当てられる。従って、HDD32は、各ゲストOS101,101…から送信されてくる情報を格納する。また、HDD32は、後述する移行処理の際に各種情報を一時的に格納するために用いられる。
図7は端末装置5の構成を示すブロック図である。端末装置5は、通信部51と、通信部51に接続された表示部52、スピーカ53、USBインタフェース54及びキーボード55とを備える。
通信部51は、例えばネットワークカードを備え、ネットワークN1を介したサーバ装置1及び管理装置2等との通信を実現する。なお、通信部51は、自身の端末装置5に対応するゲストOS101から出力された情報を受信し、画像信号であれば表示部52へ送出し、音声信号であればスピーカ53へ送出する。また、通信部51は、端末装置5のユーザがキーボード55を操作することに伴う操作情報をキーボード55から取得する。
USBインタフェース54は、マウス56と接続されており、マウス56との間で情報の送受信を行なう。なお、表示部52、スピーカ53及びキーボード55が端末装置5に対して外付けされる構成である場合には、表示部52、スピーカ53及びキーボード55も、例えば、USBインタフェース54に接続される。また、USBインタフェース54に限られず、その他の入出力インタフェースを介してマウス56と接続される構成であってもよい。また、マウス56以外にも、ペンタブレットなどの入力装置を接続する構成であってもよい。
次に、上述した構成のシンクライアントシステムにおいて、端末装置5,5…によってシンクライアントの利用が可能になるまでの処理について説明する。シンクライアントを利用したいユーザは、自身の端末装置5を用いて、ゲストOS101の起動を要求する信号を管理装置2へ送信する。管理装置2の制御部20は、端末装置5からゲストOS101の起動を要求する信号を受信した場合、リソース管理テーブル23cの登録内容に基づいて、この時点でのCPU使用率及びメモリ使用率のより低いサーバ装置1を特定する。また、制御部20は、特定したサーバ装置1において、ゲストOS101の起動を要求してきた端末装置5に対応するOSプログラム13a(ゲストOS101)、ハードウェア、ネットワークストレージ3のHDD32におけるメモリ領域を選択して割り当てる。
なお、管理装置2の制御部20は、割り当てた各情報をユーザ管理テーブル23bに登録する。そして、制御部20は、端末装置5に対して割り当てたサーバ装置1に対して、ゲストOS101の起動を指示する。ゲストOS101の起動を指示されたサーバ装置1のVMM100は、端末装置5に対するゲストOS101を起動すると共に、このゲストOS101に割り当てられたハードウェア及びネットワークストレージ3のHDD32のメモリ領域を割り当て、仮想環境102を設定する。
ゲストOS101は、起動処理を行なった後、端末装置5の表示部52に初期画面を表示させるための画像信号を生成し、自身に割り当てられた通信部14を介して、対応する端末装置5へ送信する。端末装置5は、ゲストOS101から送信されてきた画像信号を受信して表示部52に表示し、シンクライアントとしての動作を開始する。
このように、新たにゲストOS101を起動させる場合に、CPU使用率及びメモリ使用率がより低いサーバ装置1を選択することにより、それぞれのサーバ装置1,1…間において、起動中のゲストOS101,101…による負荷のばらつきを平滑化することができる。よって、それぞれのサーバ装置1,1…によって提供される仮想環境102,102のサービス品質を一定の水準に維持することができる。
次に、上述したような処理によりシンクライアントとして動作している端末装置5,5…によるシンクライアントとしての動作を終了させる処理について説明する。シンクライアントとして動作している端末装置5のユーザは、対応するゲストOS101の動作を終了させたい場合、自身の端末装置5を介して、ゲストOS101の終了を要求する信号を、対応するサーバ装置1へ送信し、シンクライアントとしての動作を終了する。
サーバ装置1の制御部10(VMM100)は、端末装置5からゲストOS101の終了を要求する信号を受信した場合、この端末装置5に対応するゲストOS101を特定する。サーバ装置1の制御部10は、特定したゲストOS101の動作を終了させ、このゲストOS101に対する仮想環境102の割り当てを解消する。これにより、ゲストOS101及びゲストOS101に割り当てられていたハードウェア及びネットワークストレージ3のHDD32のメモリ領域を他の端末装置5,5…に開放することができる。
サーバ装置1の制御部10は、ゲストOS101の終了を管理装置2へ通知し、管理装置2の制御部20は、通知されたゲストOS101に対応する端末装置5のユーザのユーザ情報をユーザ管理テーブル23bから削除する。また、制御部20は、このユーザに割り当てられていたゲストOS101及び仮想環境102の利用状況を、リソース管理テーブル23cから削除する。
次に、上述した構成のシンクライアントシステムにおいて、管理装置2がそれぞれのサーバ装置1,1…における利用状況を監視する処理について説明する。管理装置2は、各サーバ装置1,1…から送信されてくるゲストOS情報をリソース管理テーブル23cに登録することによって、各サーバ装置1,1…の利用状況を管理している。
管理装置2の制御部20は、ゲストOS情報を受信してリソース管理テーブル23cに登録する都度、それぞれのサーバ装置1,1…における利用状況を監視する。本実施形態1のシンクライアントシステムでは、各サーバ装置1,1…におけるゲストOS101,101のCPU使用率の合計又はメモリ使用率の合計がそれぞれの所定値(例えば90%)よりも大きいサーバ装置1があれば、移行処理を実行する。移行処理は、CPU使用率の合計又はメモリ使用率の合計が大きい、即ち、負荷が大きいサーバ装置1におけるゲストOS101を、負荷が小さいサーバ装置1へ移行させる処理である。これにより、サーバ装置1,1…間における負荷のばらつきを平滑化でき、それぞれのサーバ装置1,1…が提供するゲストOS101,101の処理能力を確保することができる。
具体的には、制御部(検出手段)20は、リソース管理テーブル23cに登録されている各サーバ情報に基づいて、各サーバ装置1,1…におけるゲストOS101,101のCPU使用率の合計(処理負荷)と、メモリ使用率の合計(処理負荷)とを検出する。そして、制御部20は、各サーバ装置1,1…におけるCPU使用率の合計が所定値よりも大きいサーバ装置1があるか否か、及び、各サーバ装置1,1…におけるメモリ使用率の合計が所定値よりも大きいサーバ装置1があるか否かを判断する。
なお、ゲストOS101,101のCPU使用率の合計が所定値よりも大きいサーバ装置1、又はゲストOS101,101のメモリ使用率の合計が所定値よりも大きいサーバ装置1を、移行処理によって他のサーバ装置1にゲストOS101を移行させる移行対象の候補のサーバ装置1とする。
制御部20は、移行対象の候補のサーバ装置1を複数検出した場合、そのうちで最も負荷が大きいサーバ装置1を特定する。具体的には、制御部20は、移行対象の候補の各サーバ装置1,1…におけるゲストOS101,101のCPU使用率の合計が最も大きいサーバ装置1を特定する。なお、CPU使用率の合計が同じサーバ装置1,1…が複数あった場合、制御部20は、これらのサーバ装置1,1…におけるゲストOS101,101のメモリ使用率の合計が最も大きいサーバ装置1を特定する。
次に制御部(特定手段)20は、移行対象の候補に特定したサーバ装置1において、他のサーバ装置1への移行が可能な移行対象のゲストOS101(動作環境)を特定する。ここで、本実施形態1では、それぞれのゲストOS101,101…に対応する端末装置5,5…が、実際にユーザによって使用されている可能性の低いゲストOS101を移行処理の対象とする。即ち、実施にユーザによって使用されている可能性の高い端末装置5,5…に対応するゲストOS101,101…を移行処理の対象から除外する。
本実施形態1では、端末装置5,5…がユーザによって実際に使用されているか否かを、各ゲストOS101,101…に対応する仮想環境102,102…における仮想USBデバイス103,103…又は仮想サウンドデバイス105,105…が使用されているか否かで判断する。仮想USBデバイス103が使用されている場合とは、端末装置5のマウス56が使用されていることを意味するので、端末装置5のユーザがマウス56を操作していると判断できる。また、仮想サウンドデバイス105が使用されている場合とは、端末装置5のスピーカ53から音声が出力されていることを意味するので、端末装置5の近傍にユーザが居て音楽を鑑賞していると判断できる。
なお、端末装置5,5…がユーザによって実際に使用されているか否かの判断に、仮想USBデバイス103又は仮想サウンドデバイス105の使用状況のモニタリング結果のみを用いる構成には限られない。その他に、端末装置5のユーザの利用状況を判断できるデバイスのモニタリング結果を用いてもよい。例えば、端末装置5へ画像情報を送信するためのビデオデバイスは、スクリーンセーバーのようにユーザが実際には端末装置5を使用していない場合であっても使用される場合があるが、このようなデバイスのモニタリング結果を用いてもよい。
従って、制御部20は、リソース管理テーブル23cの登録内容に基づいて、移行対象の候補に特定したサーバ装置1におけるゲストOS101,101のうちで、仮想USBデバイス103又は仮想サウンドデバイス105が使用されていないゲストOS101を特定する。仮想USBデバイス103及び仮想サウンドデバイス105が使用されていないゲストOS101(移行対象の候補のゲストOS101)を特定できた場合、制御部20(選択手段)は、移行先のサーバ装置1を選択する。
制御部20は、リソース管理テーブル23cの登録内容に基づいて、それぞれのサーバ装置1,1…におけるゲストOS101,101のCPU使用率の合計(負荷)が最も小さいサーバ装置1を特定する。なお、CPU使用率の合計が同じサーバ装置1,1…が複数あった場合、制御部20は、これらのサーバ装置1,1…におけるゲストOS101,101のメモリ使用率の合計が最も小さいサーバ装置1を特定する。
そして、制御部20は、特定したサーバ装置1(移行先のサーバ装置1)が、移行対象の候補のゲストOS101のいずれかの受け入れが可能であるか否かを判断する。具体的には、制御部20は、特定したサーバ装置1に移行対象のゲストOS101を移行した後の、このサーバ装置1におけるCPU使用率の合計及びメモリ使用率が所定値よりも小さいか否かを判断する。
まず、制御部20は、移行対象の候補のゲストOS101が複数ある場合、最も負荷(CPU使用率又はメモリ使用率)が大きいゲストOS101を特定する。そして、制御部20は、このゲストOS101を、移行先のサーバ装置1に移行させた場合のCPU使用率の合計及びメモリ使用率の合計を算出する。制御部20は、算出したCPU使用率の合計及びメモリ使用率の合計がそれぞれに対する所定値(基準値)よりも小さいか否かを判断し、小さい場合、このゲストOS101を移行対象のゲストOS101に特定する。
一方、算出したCPU使用率の合計又はメモリ使用率の合計が所定値よりも大きい場合、このゲストOS101を移行した場合、移行先のサーバ装置1における負荷が基準値(所定値)よりも高くなるので、このゲストOS101の移行は行わない。従って、制御部20は、移行対象の候補のサーバ装置1における移行対象の候補のゲストOS101のうちで、このゲストOS101の次に負荷が大きいゲストOS101を特定し、同様に、このゲストOS101が、移行先のサーバ装置1に移行可能であるか否かを判断する。
より具体的には、例えば、移行対象のサーバ装置1(第1サーバ装置1とする)には、CPU使用率が40%のゲストOS101とCPU使用率が60%のゲストOS101とが動作しており、最も負荷が小さいサーバ装置1(第2サーバ装置1とする)には、CPU使用率が20%のゲストOS101が動作しているとする。この場合、第1サーバ装置1のCPU使用率が60%のゲストOS101を第2サーバ装置1へ移行した場合であっても、移行後の第2サーバ装置1におけるCPU使用率の合計(80%)は、所定値(90%)よりも小さい値となる。従って、第1サーバ装置1のCPU使用率が60%のゲストOS101を第2サーバ装置1へ移行させる。
また、第1サーバ装置1には、CPU使用率が40%のゲストOS101とCPU使用率が60%のゲストOS101とが動作しており、第2サーバ装置1には、CPU使用率が20%のゲストOS101が2つ動作しているとする。この場合、第1サーバ装置1のCPU使用率が60%のゲストOS101を第2サーバ装置1へ移行した場合には、移行後の第2サーバ装置1におけるCPU使用率の合計(100%)は、所定値(90%)よりも大きい値となる。従って、第1サーバ装置1のCPU使用率が60%のゲストOS101を第2サーバ装置1へ移行させない。
しかし、第1サーバ装置1のCPU使用率が40%のゲストOS101を第2サーバ装置1へ移行した場合には、移行後の第2サーバ装置1におけるCPU使用率の合計(80%)は、所定値(90%)よりも小さい値となる。従って、この場合は、第1サーバ装置1のCPU使用率が40%のゲストOS101を第2サーバ装置1へ移行させる。
管理装置2の制御部20は、移行対象の候補のサーバ装置1において、移行先のサーバ装置1への移行が可能なゲストOS101があるまで上述した処理を繰り返す。なお、移行対象の候補のサーバ装置1におけるゲストOS101の全てが、移行先のサーバ装置1への移行が可能でない場合、制御部20は、移行対象の候補のサーバ装置1のうちで、次に負荷が大きいサーバ装置1を特定する。そして、制御部20は、特定したサーバ装置1について同様の処理を行ない、この移行対象の候補のサーバ装置1におけるゲストOS101,101…のうちで、移行先のサーバ装置1への移行が可能なゲストOS101を特定する。
上述した処理により、移行対象のゲストOS101及び移行先のサーバ装置1を特定できた場合、制御部(移行手段)20は、移行対象のサーバ装置1に対して、移行対象のゲストOS101を移行先のサーバ装置1に移行させる移行処理の開始を指示する。
上述したように、本実施形態1のシンクライアントシステムでは、ユーザが実際に端末装置5を使用している可能性の高い端末装置5に対応するゲストOS101を移行処理の対象から外す。これにより、移行処理によってゲストOS101が一時的に動作を停止した場合であっても、他のゲストOS101の使用中のユーザには影響を与えない。また、移行対象のゲストOS101を移行先のサーバ装置1へ移行した場合であっても、移行先のサーバ装置1におけるCPU使用率及びメモリ使用率は基準値を満たすことができるので、移行先のサーバ装置1を既に使用中の他のユーザの仮想環境102,102…に影響を与えない。
次に、上述した構成のシンクライアントシステムにおいて、いずれかのサーバ装置1,1…における負荷が所定値よりも大きくなった場合に行なう移行処理(マイグレーション処理)について説明する。管理装置2は、移行処理を行なう場合、移行対象(移行元)のサーバ装置1に対して、移行すべき移行対象のゲストOS101と、移行先のサーバ装置1とを通知し、移行処理の開始を指示する。
移行元のサーバ装置1の制御部10(VMM100)は、移行処理を開始する際に、移行先のサーバ装置1に対して、移行処理を開始する旨を通知する。これにより、移行先のサーバ装置1の制御部10(VMM100)は、ゲストOS101を起動させて待機する。
移行元のサーバ装置1のVMM100は、移行対象のゲストOS101に対するCPUの割当時間を0にすることによって、移行対象のゲストOS101の動作を一時的に停止させる。VMM100は、移行対象のゲストOS101に割り当てられているRAM12に格納されている情報、移行対象のゲストOS101に割り当てられているハードウェアの割当情報等の、ネットワークストレージ3の移行処理用の領域への書き込みを開始する。
移行元のサーバ装置1のVMM100は、移行対象のゲストOS101において、モニタ対象(仮想USBデバイス103及び仮想サウンドデバイス105)以外の仮想デバイスの利用があった場合、その情報もネットワークストレージ3へ書き込む。例えば、移行対象のゲストOS101に対応する通信部14(仮想通信ネットワークデバイス)宛ての情報を受信した場合は、その情報もネットワークストレージ3へ書き込む。
移行元のサーバ装置1のVMM100は、ネットワークストレージ3への情報の書き込みを行なっている場合、移行対象のゲストOS101の仮想環境102における仮想USBデバイス103又は仮想サウンドデバイス105の使用があるか否かを監視している。具体的には、VMM100は、移行対象のゲストOS101に対応するUSBデバイスモニタ部104又はサウンドデバイスモニタ部106による監視結果を取得し、仮想USBデバイス103又は仮想サウンドデバイス105が使用されたか否かを判断する。
仮想USBデバイス103又は仮想サウンドデバイス105が使用されたと判断した場合、VMM100は、ネットワークストレージ3への情報の書き込みを中断し、移行対象のゲストOS101の動作を再開させる。そして、VMM100は、仮想USBデバイス103又は仮想サウンドデバイス105の使用が終了してから所定時間待機し、この時点で仮想USBデバイス103又は仮想サウンドデバイス105がまだ使用されているか否かを判断する。
仮想USBデバイス103又は仮想サウンドデバイス105がまだ使用されていれば、VMM100は、この移行対象のゲストOS101の移行処理を行なわない。この場合、VMM100は、移行先のサーバ装置1に対して、移行処理を中止する旨を通知する。これにより、移行先のサーバ装置1の制御部10(VMM100)は、移行先のゲストOS101の動作を終了させる。
仮想USBデバイス103又は仮想サウンドデバイス105が使用されていない場合、VMM100は、移行対象のゲストOS101の動作を再度停止させ、ネットワークストレージ3への情報の書き込みを再開する。なお、このとき、VMM100は、既にネットワークストレージ3に書き込んだ情報については、ネットワークストレージ3への書き込み後に変更された部分のみを上書きすればよい。
ネットワークストレージ3に書き込んだ情報に変更があったか否かは、例えば、移行対象のゲストOS101に割り当てた記憶領域であるメモリページ(RAM12)に書き込み保護をかけ、書き込み保護された記憶領域を更新しようとする際に発生する例外(記憶保護例外)をハンドリングすることで判断する。移行処理の際には、ゲストOS101が実際に物理アドレスにアクセスするような処理を行なったときは割込処理でそれをハンドリングできるようにしておき、割込処理の発生時にそのメモリページを記憶しておく。
このため、VMM100では、元から仮想環境102に対してメモリを仮想化して見せるようにする。そして、その仮想物理アドレスと実際の物理メモリとを対応付けるテーブルを作成しておき、ゲストOS101がテーブルにアクセスしようとした場合は割込処理でハンドリングすることでその内容を書き換え、実メモリアドレスに変換を行なうことで、ゲストOS101に実メモリにアクセスさせる。このとき、各情報が変更されたか否かをチェックできない環境であれば、全ての情報を再度保存すればよい。
移行元のサーバ装置1のVMM100は、移行対象のゲストOS101に関する全ての情報をネットワークストレージ3に書き込むまで、仮想USBデバイス103又は仮想サウンドデバイス105が使用される都度、上述した処理を繰り返す。VMM100は、移行対象のゲストOS101に対応する仮想USBデバイス103又は仮想サウンドデバイス105が使用されていない状態で、各種情報のネットワークストレージ3への書き込みを完了した場合、その旨を移行先のサーバ装置1へ通知する。
移行先のサーバ装置1のVMM100は、移行元のサーバ装置1から、ネットワークストレージ3への書き込みの完了を通知された場合、ネットワークストレージ3からの情報の読み出しを開始し、ネットワークストレージ3から読み出した情報を、移行先のゲストOS101に割り当てられたRAM12等に逐次格納する。移行先のサーバ装置1のVMM100は、ネットワークストレージ3からの情報の読み出しを終了した場合、移行元のサーバ装置1にその旨を通知する。
移行元のサーバ装置1のVMM100は、移行先のサーバ装置1から、ネットワークストレージ3からの情報の読み出し完了を通知された場合、移行先のサーバ装置1が、ネットワークストレージ3に格納された情報を再読み出しする必要があるか否かを判断する。移行元のサーバ装置1のVMM100は、再読み出しする必要があると判断した場合、ネットワークストレージ3への情報の書き込みを再度行なう。
そして、移行元のサーバ装置1のVMM100は、移行先のサーバ装置1に、移行先のゲストOS101への情報の再読み出しを指示すると共に、移行先のゲストOS101の動作の開始を指示する。なお、移行元のサーバ装置1のVMM100は、再読み出しする必要がないと判断した場合、ネットワークストレージ3への情報の再度の書き込みを行なわず、移行先のゲストOS101への情報の再読み出しを指示せず、移行先のゲストOS101の動作の開始のみを移行先のサーバ装置1に指示する。
移行先のサーバ装置1のVMM100は、再読み出しを指示された場合、ネットワークストレージ3から情報を再読み出しし、この情報に基づいて、移行先のゲストOS101の動作を開始し、移行処理を終了する。また、移行先のサーバ装置1のVMM100は、再読み出しを指示されなかった場合、既にネットワークストレージ3から取得してある情報に基づいて、移行先のゲストOS101の動作を開始し、移行処理を終了する。
ここで、ネットワークストレージ3に格納された情報を再読み出しする必要があるか否かは、移行元のサーバ装置1がネットワークストレージ3への情報の書き込みを完了してから、移行先のサーバ装置1がネットワークストレージ3からの情報の読み出しを完了するまでの間に、ネットワークストレージ3に格納された情報が更新されたか否かによって判断する。
移行元のサーバ装置1のVMM100は、自身が移行先のサーバ装置1に、ネットワークストレージ3への情報の書き込み完了を通知してから、移行先のサーバ装置1から、ネットワークストレージ3からの情報の読み出し完了を通知されるまでの間に、移行対象のゲストOS101に対応する仮想USBデバイス103又は仮想サウンドデバイス105が使用されたか否かを監視している。
この間に、移行対象のゲストOS101に対応する仮想USBデバイス103又は仮想サウンドデバイス105が使用された場合、移行元のサーバ装置1のVMM100は、移行対象のゲストOS101の動作を再開させる。そして、VMM100は、仮想USBデバイス103又は仮想サウンドデバイス105の使用が終了してから所定時間待機し、この時点で仮想USBデバイス103又は仮想サウンドデバイス105がまだ使用されているか否かを判断する。
仮想USBデバイス103又は仮想サウンドデバイス105がまだ使用されていれば、VMM100は、この移行対象のゲストOS101の移行処理を中止する。なお、この場合、VMM100は、移行先のサーバ装置1に対して、移行処理を中止する旨を通知する。これにより、移行先のサーバ装置1の制御部10(VMM100)は、ネットワークストレージ3からの情報の読み出しを終了し、移行先のゲストOS101の動作を終了させる。
仮想USBデバイス103又は仮想サウンドデバイス105が使用されていない場合、VMM100は、移行対象のゲストOS101の動作を再度停止させ、ネットワークストレージ3からの情報の読み出し完了を移行先のサーバ装置1から通知されるまで待機する。なお、移行元のサーバ装置1のVMM100は、ネットワークストレージ3からの情報の読み出し完了を移行先のサーバ装置1から通知されるまでの間、仮想USBデバイス103又は仮想サウンドデバイス105が使用される都度、上述した処理を繰り返す。
移行元のサーバ装置1のVMM100は、ネットワークストレージ3からの情報の読み出し完了を移行先のサーバ装置1から通知された場合、移行先のサーバ装置1がネットワークストレージ3から情報を再読み出しする必要があるか否かを判断する。そして、移行元のサーバ装置1のVMM100は、移行先のサーバ装置1が情報を再読み出しする必要があると判断した場合、ネットワークストレージ3への情報の書き込みを再度行なう。なお、このとき、VMM100は、既にネットワークストレージ3に書き込んだ情報については、ネットワークストレージ3への書き込み後に変更された部分のみを上書きすればよい。
移行元のサーバ装置1のVMM100は、移行先のサーバ装置1に対して、移行先のゲストOS101への情報の再読み出しを指示する共に、移行先のゲストOS101の動作の開始を指示する。更に、移行元のサーバ装置1のVMM100は、ルーティング装置4に対して、移行元(移行対象)のゲストOS101に割り当てられていたアドレスを、移行先のゲストOS101に割り当てるように、割り当ての変更を指示する。
具体的には、それぞれのサーバ装置1において、ゲストOS101にVMM100から仮想ネットワークデバイスを与えると共に、サーバ装置1の実ネットワークデバイス(通信部14)をブリッジとしてネットワークを構成する場合、実ネットワークデバイスをブリッジとして用いるようにする。このようにすると、実ネットワークデバイスがスイッチングハブのような動作をし、仮想ネットワークデバイスのMedia Access Control(MAC)アドレスに送信されるイーサネット(登録商標)パケットが実デバイスを経由するようになる。
移行処理を行なうまでは、ゲストOS101のInternet Protocol(IP)アドレス宛てのパケットは、移行元のサーバ装置1に送信されるようになっているが、これを移行先のサーバ装置1に送信されるように、再度仮想ネットワークデバイスのMACアドレスをルーティング装置4へ送信し、ルーティング装置4に割り当ての変更を指示する。
もし、移行元のサーバ装置1が移行元のゲストOS101の動作を停止し、ネットワークストレージ3への情報の書き込みを開始してから、実際にルーティング装置4がMACアドレスの切り替えを行なうまでの間に、移行元のサーバ装置1が移行元のゲストOS101に対するネットワークパケットを受信した場合、移行元のサーバ装置1が、移行先のサーバ装置1に対して、そのネットワークパケットを転送すればよい。なお、このとき、移行先のサーバ装置1において、移行先のゲストOS101がリストアを完了していない場合は、移行先のサーバ装置1が、一時的にこのネットワークパケットを保存しておき、リストア完了後に移行先のゲストOS101にネットワークパケットを渡せばよい。
上述した処理により、移行処理の実行中に、移行元のゲストOS101に対応する各種デバイス(仮想USBデバイス103又は仮想サウンドデバイス105)が使用された場合には即座にそのデバイスの動作に対応する処理を行なうことができる。また、移行処理の実行中に、移行元のゲストOS101に対応するデバイスが使用されなかった場合には、移行元のサーバ装置1が行なうネットワークストレージ3への情報の書き込み処理、及び移行先のサーバ装置1が行なうネットワークストレージ3からの情報の読み出し処理がそれぞれ1回で済み、迅速な移行処理が可能となる。
以下に、本実施形態1のシンクライアントシステムにおいて、サーバ装置1、管理装置2及び端末装置5の間で行なわれる具体的な処理手順についてフローチャートに基づいて説明する。図8はシンクライアントの起動処理の手順を示すフローチャートである。なお、以下の処理は、管理装置2のROM21又はHDD23に格納されている制御プログラムに従って制御部20によって実行されると共に、サーバ装置1のROM11又はHDD13に格納されている制御プログラムに従って制御部10(VMM100、ゲストOS101)によって実行される。
管理装置2の制御部20は、端末装置5からゲストOS101の起動を要求する信号を受信したか否かを判断しており(S1)、受信していないと判断した場合(S1:NO)、受信するまで待機する。制御部20は、ゲストOS101の起動を要求する信号を受信したと判断した場合(S1:YES)、リソース管理テーブル23cの登録内容に基づいて、端末装置5に対応するサーバ装置1、ゲストOS101及びネットワークストレージ3のHDD32のメモリ領域を選択して割り当てる(S2)。具体的には、制御部20は、CPU使用率及びメモリ使用率のより低いサーバ装置1を選択する。
制御部20は、ゲストOS101の起動を要求してきた端末装置5に対して割り当てたサーバ装置1、ゲストOS101、ネットワークストレージのメモリ領域に関する情報をユーザ管理テーブル23bに登録する(S3)。制御部20は、選択したサーバ装置1に対して、選択したゲストOS101の起動を指示する(S4)。
サーバ装置1の制御部10(VMM100)は、管理装置2からの指示に従って、端末装置5に対するゲストOS101を起動する(S5)。そして、制御部10は、このゲストOS101に割り当てられたハードウェア及びネットワークストレージ3のHDD32のメモリ領域を割り当て、仮想環境102を設定する(S6)。制御部10は、ゲストOS101を起動させた場合、端末装置5の表示部52に初期画面を表示させるための画像信号を生成し、対応する端末装置5へ送信する(S7)。これにより、端末装置5は、初期画面を表示部52に表示させ、シンクライアントとしての動作を開始し、シンクライアントの起動処理を終了する。
上述したように、本実施形態1の管理装置2は、新たにゲストOS101を起動させる場合に、CPU使用率及びメモリ使用率がより低いサーバ装置1を選択する。よって、新たにゲストOS101を起動させたことによって、そのサーバ装置1において既に起動している他のゲストOS101に影響を与えることがない。
次に、管理装置2がそれぞれのサーバ装置1,1…における利用状況を監視する処理について説明する。図9及び図10はサーバ装置1,1…の利用状況の監視処理の手順を示すフローチャートである。なお、以下の処理は、管理装置2のROM21又はHDD23に格納されている制御プログラムに従って制御部20によって実行される。
管理装置2の制御部20は、サーバ装置1,1…からゲストOS情報を受信したか否かを判断しており(S11)、受信していないと判断した場合(S11:NO)、受信するまで待機する。制御部20は、ゲストOS情報を受信したと判断した場合(S11:YES)、受信したゲストOS情報をリソース管理テーブル23cに登録する(S12)。制御部20は、リソース管理テーブル23cの登録内容に基づいて、移行処理を行なうべき移行対象の候補のサーバ装置1が有るか否かを判断する(S13)。
具体的には、制御部20は、各サーバ装置1,1…におけるゲストOS101,101のCPU使用率の合計又はメモリ使用率の合計がそれぞれの所定値よりも大きいサーバ装置1が有るか否かを判断する。制御部20は、移行対象の候補のサーバ装置1が無いと判断した場合(S13:NO)、処理を終了する。
制御部20は、移行対象の候補のサーバ装置1が有ると判断した場合(S13:YES)、このサーバ装置1のうちから最も負荷(CPU使用率及びメモリ使用率)が大きいサーバ装置1を特定する(S14)。制御部20は、リソース管理テーブル23cの登録内容に基づいて、特定したサーバ装置1において、移行対象の候補のゲストOS101が有るか否かを判断する(S15)。
具体的には、制御部20は、特定したサーバ装置1におけるゲストOS101,101…のうちで、仮想USBデバイス103及び仮想サウンドデバイス105が使用されていないゲストOS101を特定する。移行対象の候補のゲストOS101が無いと判断した場合(S15:NO)、制御部20は、ステップS13で移行対象の候補のサーバ装置1であると判断したサーバ装置1が他にも有るか否かを判断する(S16)。制御部20は、移行対象の候補のサーバ装置1が他に無いと判断した場合(S16:NO)、処理を終了する。
移行対象の候補のサーバ装置1が他にも有ると判断した場合(S16:YES)、制御部20は、ステップS14で特定したサーバ装置1の次に負荷が大きいサーバ装置1を特定し(S17)、ステップS15へ処理を戻す。
ステップS15で移行対象の候補のゲストOS101が有ると判断した場合(S15:YES)、制御部20は、リソース管理テーブル23cの登録内容に基づいて、最も負荷(CPU使用率及びメモリ使用率)が小さいサーバ装置1を移行先のサーバ装置1に特定する(S18)。制御部20は、ステップS15で移行対象の候補のゲストOS101であると判断したゲストOS101のうちで最も負荷が大きいゲストOS101を特定する(S19)。制御部20は、特定したゲストOS101が、ステップS18で特定したサーバ装置1へ移行可能であるか否かを判断する(S20)。
移行可能でないと判断した場合(S20:NO)、制御部20は、ステップS15で移行対象の候補のゲストOS101であると判断したゲストOS101が他にも有るか否かを判断する(S22)。制御部20は、移行対象の候補のゲストOS101がまだ有ると判断した場合(S22:YES)、ステップS19で特定したゲストOS101の次に負荷が大きいゲストOS101を特定し(S23)、ステップS20へ処理を戻す。
移行対象の候補のゲストOS101が他に無いと判断した場合(S22:NO)、制御部20は、ステップS16へ処理を移行し、ステップS13で移行対象の候補のサーバ装置1であると判断したサーバ装置1が他にも有るか否かを判断する(S16)。制御部20は、移行対象の候補のサーバ装置1が他にも有ると判断した場合(S16:YES)、次に負荷が大きいサーバ装置1を特定し(S17)、ステップS15へ処理を戻す。
制御部20は、ステップS18で特定された移行先のサーバ装置1への移行が可能なゲストOS101を特定するまで、上述したステップS15〜S23の処理を繰り返す。ステップS20で、移行可能であると判断した場合(S20:YES)、制御部20は、移行対象のサーバ装置1に、移行対象のゲストOS101の移行処理の開始を指示し(S21)、処理を終了する。
次に、本実施形態1のシンクライアントシステムにおける移行処理(マイグレーション処理)について説明する。図11乃至図13は移行元のサーバ装置1が行なう移行処理の手順を示すフローチャートである。なお、以下の処理は、サーバ装置1のROM11又はHDD13に格納されている制御プログラムに従って制御部10(VMM100)によって実行される。
移行元のサーバ装置1の制御部10は、管理装置2から移行処理の開始を指示されたか否かを判断しており(S31)、指示されていないと判断した場合(S31:NO)、指示されるまで待機する。制御部10は、指示されたと判断した場合(S31:YES)、移行先のサーバ装置1に対して、移行処理を開始する旨を通知する(S32)。
制御部10は、移行対象のゲストOS101の動作を一時的に停止させる(S33)。制御部10は、移行対象のゲストOS101に関する各種の情報の、ネットワークストレージ3への書き込みを開始する(S34)。制御部10は、移行対象のゲストOS101に対応する仮想USBデバイス103又は仮想サウンドデバイス105の使用があるか否かを判断する(S35)。
仮想デバイス103,105の使用がないと判断した場合(S35:NO)、制御部10は、ステップS34で開始したネットワークストレージ3への書き込みが終了したか否かを判断する(S36)。書き込みが終了していないと判断した場合(S36:NO)、制御部10は、ステップS35へ処理を戻す。
制御部10は、仮想デバイス103,105の使用があると判断した場合(S35:YES)、ステップS34で開始したネットワークストレージ3への情報の書き込みを中断する(S37)。制御部10は、移行対象のゲストOS101の動作を再開させ(S38)、一定時間待機する(S39)。
制御部10は、移行対象のゲストOS101に対応する仮想デバイス103,105の使用があるか否かを判断し(S40)、仮想デバイス103,105の使用があると判断した場合(S40:YES)、移行開始後のタイムアウト時間が経過したか否かを判断する(S41)。タイムアウト時間が経過したと判断した場合(S41:YES)、制御部10は、移行先のサーバ装置1に、移行処理の終了を通知し(S42)、移行処理を終了する。
即ち、ここでタイムアウト時間が経過した場合には、利用者が積極的に使用している状態に推移したと考えられるため、移行処理を終了させることにより、そのゲストOS101を移行処理の対象から外す。これにより、ゲストOS101の移行処理に伴って生じ得る入出力処理の遅延を回避し、利用者の操作性を確保することが可能となる。
一方、タイムアウト時間が経過していないと判断した場合(S41:NO)、制御部10は、再度一定時間待機した後、仮想デバイス103,105の使用状況をチェックする処理(S39,S40)を繰り返す。
仮想デバイス103,105の使用がないと判断した場合(S40:NO)、制御部10は、ステップS33へ処理を戻し、移行対象のゲストOS101の動作を再度停止させる(S33)。そして、制御部10は、移行対象のゲストOS101に関する各種の情報の、ネットワークストレージ3への書き込みを再度開始し(S34)、ステップS35〜S40の処理を繰り返す。
ステップS36で、ネットワークストレージ3への書き込みが終了したと判断した場合(S36:YES)、制御部10は、移行先のサーバ装置1に、ネットワークストレージ3への書き込み完了を通知する(S43)。制御部10は、移行先のサーバ装置1から、ネットワークストレージ3からの情報の読み出し完了を通知されたか否かを判断する(S44)。制御部10は、通知されていないと判断した場合(S44:NO)、移行元のゲストOS101に対応する仮想デバイス103,105の使用があるか否かを判断する(S45)。
仮想デバイス103,105の使用がないと判断した場合(S45:NO)、制御部10は、ステップS44へ処理を戻す。また、仮想デバイス103,105の使用があると判断した場合(S45:YES)、制御部10は、ステップS38〜S40の手順により、ゲストOS101の動作を再開させて仮想デバイス103,105が使用されなくなるまで待機する。
ステップS44で、ネットワークストレージ3からの情報の読み出し完了を移行先のサーバ装置1から通知されたと判断した場合(S44:YES)、制御部10は、移行先のサーバ装置1が、ネットワークストレージ3に格納された情報を再読み出しする必要があるか否かを判断する(S46)。再読み出しする必要があると判断した場合(S46:YES)、制御部10は、移行対象のゲストOS101に関する各種の情報の、ネットワークストレージ3への書き込みを再度行なう(S47)。
制御部10は、ネットワークストレージ3への情報の書き込みを終了した後、移行先のサーバ装置1に、ネットワークストレージ3の情報の再読み出しを指示する(S48)。制御部10は、再読み出しする必要がないと判断した場合(S46:NO)、ステップS47,48の処理をスキップし、移行先のサーバ装置1に、移行先のゲストOS101の動作開始を指示する(S49)。そして、制御部10は、ルーティング装置4に、移行元のゲストOS101に割り当てられていたアドレスを、移行先のゲストOS101に割り当てるように、割り当ての変更を指示し(S50)、移行処理を終了する。
図14及び図15は移行先のサーバ装置1が行なう移行処理の手順を示すフローチャートである。なお、以下の処理は、サーバ装置1のROM11又はHDD13に格納されている制御プログラムに従って制御部10(VMM100)によって実行される。
移行先のサーバ装置1の制御部10は、移行元のサーバ装置1から、移行処理の開始を通知されたか否かを判断しており(S61)、通知されていないと判断した場合(S61:NO)、通知されるまで待機する。制御部10は、通知されたと判断した場合(S61:YES)、移行先として指定されたゲストOS101を起動させる(S62)。
移行先のサーバ装置1の制御部10は、移行元のサーバ装置1から、移行処理の中止を通知されたか否かを判断しており(S63)、通知されたと判断した場合(S63:YES)、ステップS62で起動させたゲストOS101の動作を終了し(S64)、移行処理を終了する。
移行処理の中止を通知されていないと判断した場合(S63:NO)、制御部10は、移行元のサーバ装置1から、ネットワークストレージ3への情報の書き込み完了を通知されたか否かを判断する(S65)。ネットワークストレージ3への情報の書き込み完了を通知されていないと判断した場合(S65:NO)、制御部10は、ステップS63へ処理を戻し、通知されるまで待機する。制御部10は、ネットワークストレージ3への情報の書き込み完了を通知されたと判断した場合(S65:YES)、移行元のサーバ装置1によって書き込まれた情報のネットワークストレージ3からの読み出しを開始する(S66)。
制御部10は、移行元のサーバ装置1から、移行処理の中止を通知されたか否かを判断しており(S67)、通知されたと判断した場合(S67:YES)、ステップS66で開始したネットワークストレージ3からの情報の読み出しを終了する(S68)。制御部10は、ステップS62で起動させたゲストOS101の動作を終了させ(S69)、移行処理を終了する。
移行処理の中止を通知されていないと判断した場合(S67:NO)、制御部10は、ステップS66で開始したネットワークストレージ3からの情報の読み出しを終了したか否かを判断する(S70)。ネットワークストレージ3からの情報の読み出しを終了していないと判断した場合(S70:NO)、制御部10は、ステップS67へ処理を戻す。ネットワークストレージ3からの情報の読み出しを終了したと判断した場合(S70:YES)、制御部10は、移行元のサーバ装置1に、ネットワークストレージ3からの情報の読み出し完了を通知する(S71)。
そして、制御部10は、移行元のサーバ装置1から、ネットワークストレージ3からの情報の再読み出しを指示されたか否かを判断しており(S72)、指示されたと判断した場合(S72:YES)、ネットワークストレージ3から情報を再読み出しする(S73)。制御部10は、ネットワークストレージ3からの情報の再読み出しを指示されていないと判断した場合(S72:NO)、ステップS73の処理をスキップする。制御部10は、移行元のサーバ装置1から、移行先のゲストOS101の動作開始を指示されたか否かを判断し(S74)、指示されていないと判断した場合(S74:NO)、ステップS72へ処理を戻す。
制御部10は、移行先のゲストOS101の動作開始を指示されたと判断した場合(S74:YES)、ネットワークストレージ3から読み出して移行先のゲストOS101に対応するRAM12に格納した各情報に基づいて、ステップS62で起動させたゲストOS101の動作を開始し(S75)、移行処理を終了する。
上述した処理により、移行処理の実行中に、移行元のゲストOS101に対応する各種デバイスが使用された場合には即座にそのデバイスの動作に対応する処理を行なうので、ゲストOS101のユーザに、移行処理に伴うゲストOS101の処理停止を体感させない。また、移行処理によって、負荷の大きいサーバ装置1の負荷(ゲストOS101、仮想環境102)を他のサーバ装置1へ移行させることができるので、各サーバ装置1,1…を利用するユーザに高品質のシンクライアントを提供できる。
移行対象のゲストOS101が移行先のサーバ装置1に移行可能であるか否かの判断は、CPU使用率及びメモリ使用率を比較する構成に限られない。例えば、サーバ装置1におけるリソースの使用状態に対応させて、移行処理を行なうか否かを示す情報を登録したテーブルを用いて行なってもよい。この場合、移行対象(移行元)のサーバ装置1のリソース使用状況と移行先のサーバ装置1のリソース使用状況とを、このようなテーブルに当てはめた上で、テーブルの登録内容に従って移行処理を行なうか否かを判断すればよい。
上述した実施形態1のシンクライアントシステムでは、管理装置2が、それぞれのサーバ装置1,1…における負荷(CPU使用率及びメモリ使用率)を監視し、移行処理が必要であるか否かを判断する構成であった。このような構成に限られず、本実施形態1の管理装置2の機能を、いずれかのサーバ装置1に持たせるように構成することもできる。この場合、他のサーバ装置1,1…が、自身におけるゲストOS101,101のCPU使用率及びメモリ使用率を、管理装置2の機能を有するサーバ装置1へ送信し、管理装置2の機能を有するサーバ装置1で管理する。
また、それぞれのサーバ装置1,1…が、自身におけるゲストOS101,101のCPU使用率の合計又はメモリ使用率の合計がそれぞれ所定値よりも大きいか否かを監視するように構成してもよい。この場合、それぞれのサーバ装置1,1…におけるVMM100,100…が、自身のサーバ装置1,1…におけるゲストOS101,101のCPU使用率の合計又はメモリ使用率の合計がそれぞれ所定値よりも大きい場合、移行処理が必要であると判断する。なお、この構成については、以下の実施形態2で説明する。
(実施形態2)
以下に、実施形態2に係るシンクライアントシステムについて説明する。本実施形態2のシンクライアントシステムは、上述した実施形態1のシンクライアントシステムと同様の構成によって実現される。従って、本実施形態2のシンクライアントシステムにおけるサーバ装置1、管理装置2ネットワークストレージ3及び端末装置5の構成についての詳細な説明は省略する。
なお、本実施形態2のシンクライアントシステムでは、管理装置2は、端末装置5からのゲストOS101の起動の要求に対して、どのサーバ装置1のどのゲストOS101を提供するかを決定する処理を行なう。従って、端末装置5,5…によってシンクライアントの利用が可能になるまでの処理、シンクライアントとして動作している端末装置5,5…によるシンクライアントとしての動作を終了させる処理については、実施形態1で説明した処理と同様である。
上述した実施形態1では、管理装置2は、それぞれのサーバ装置1,1…における利用状況を監視する構成であったが、本実施形態2では、それぞれのサーバ装置1,1…が、自身のサーバ装置1,1…における利用状況を監視する構成である。
以下に、本実施形態2のシンクライアントシステムにおいて、それぞれのサーバ装置1,1…が、自身のサーバ装置1,1…における利用状況を監視する処理について説明する。本実施形態2のサーバ装置1,1…も、上述した実施形態1のサーバ装置1,1…と同様に、利用状況テーブル13dを用いて、自身のサーバ装置1,1…におけるゲストOS101,101によるCPU使用率、メモリ使用率及びデバイス使用状況を管理している。
サーバ装置1の制御部10は、利用状況テーブル13dの登録内容を定期的に監視する。制御部10は、自身のサーバ装置1におけるゲストOS101のCPU使用率の合計又はメモリ使用率の合計がそれぞれの所定値(例えば90%)よりも大きければ、移行処理が必要であると判断する。
制御部10は、移行処理が必要であると判断した場合、他のサーバ装置1への移行が可能な移行対象のゲストOS101(動作環境)を特定する。具体的には、制御部10は、利用状況テーブル13dの登録内容に基づいて、自身のサーバ装置1におけるゲストOS101,101のうちで、仮想USBデバイス103又は仮想サウンドデバイス105が使用されていないゲストOS101を特定する。
仮想USBデバイス103及び仮想サウンドデバイス105が使用されていないゲストOS101(移行対象の候補のゲストOS101)を特定できた場合、制御部10は、ネットワークN2を介して接続されている他のサーバ装置1,1…と通信を行なう。制御部10は、他のサーバ装置1,1…から、他のサーバ装置1,1…におけるCPU使用率及びメモリ使用率を受信し、CPU使用率の合計(負荷)が最も小さいサーバ装置1を特定する。なお、CPU使用率の合計が同じサーバ装置1,1…が複数あった場合、制御部10は、他のサーバ装置1,1…におけるゲストOS101,101のメモリ使用率の合計が最も小さいサーバ装置1を特定する。
そして、制御部10は、特定したサーバ装置1(移行先のサーバ装置1)が、自身における移行対象の候補のゲストOS101のいずれかの受け入れが可能であるか否かを判断する。具体的には、制御部20は、特定したサーバ装置1に移行対象のゲストOS101を移行した後の、このサーバ装置1におけるCPU使用率の合計及びメモリ使用率の合計が所定値よりも小さい値となるか否かを判断する。
まず、制御部10は、自身における移行対象の候補のゲストOS101が複数ある場合、最も負荷(CPU使用率又はメモリ使用率)が大きいゲストOS101を特定する。そして、制御部10は、このゲストOS101を、移行先のサーバ装置1に移行させた場合の移行先のサーバ装置1におけるCPU使用率の合計及びメモリ使用率を算出する。制御部10は、算出したCPU使用率の合計及びメモリ使用率の合計が所定値よりも小さいか否かを判断し、小さい場合、このゲストOS101を移行対象のゲストOS101に特定する。
一方、算出したCPU使用率の合計又はメモリ使用率の合計が所定値よりも大きい場合、このゲストOS101を移行した場合、移行先のサーバ装置1における負荷が基準値(所定値)よりも高くなるので、このゲストOS101の移行は行わない。従って、制御部10は、自身のサーバ装置1において、このゲストOS101の次に負荷が大きいゲストOS101を特定し、同様に、このゲストOS101が、移行先のサーバ装置1に移行可能であるか否かを判断する。
制御部10は、移行先のサーバ装置1に移行可能なゲストOS101を特定するまで上述した処理を繰り返す。なお、制御部10は、移行先のサーバ装置1に移行可能であるゲストOS101を特定できなかった場合、移行処理を行なわない。これにより、移行先のサーバ装置1において、ゲストOS101を移行された場合であっても、移行先のサーバ装置1における負荷が基準値を満たすことができるので、移行先のサーバ装置1を既に使用中の他のユーザの仮想環境102,102…に影響を与えない。
また、ユーザが実際に端末装置5を使用している可能性の高い端末装置5に対応するゲストOS101を移行処理の対象から外す。これにより、移行処理によってゲストOSが一時的に動作を停止した場合であっても、他のゲストOS101を使用中のユーザには影響を与えない。
サーバ装置1(移行元のサーバ装置1)の制御部10は、上述した処理により、移行対象のゲストOS101及び移行先のサーバ装置1を特定できた場合、移行処理を開始する。なお、移行処理を開始するサーバ装置1は、実施形態1において図11乃至図13で説明した、移行元のサーバ装置1が行なう処理を行なえばよいので説明を省略する。また、移行先に選ばれたサーバ装置1の制御部10は、実施形態1において図14及び図15で説明した、移行先のサーバ装置1が行なう処理を行なえばよいので、説明を省略する。
以下に、サーバ装置1が自身における利用状況を監視する処理について説明する。図16はサーバ装置1,1…の利用状況の監視処理の手順を示すフローチャートである。なお、以下の処理は、サーバ装置1のROM11又はHDD13に格納されている制御プログラムに従って制御部10(VMM100)によって実行される。
サーバ装置1の制御部10は、利用状況テーブル13dの登録内容に基づいて、移行処理が必要であるか否かを判断しており(S81)、移行処理が必要でないと判断した場合(S81:NO)、待機する。具体的には、制御部10は、自身のゲストOS101,101のCPU使用率の合計又はメモリ使用率の合計がそれぞれの所定値よりも大きいか否かを判断する。
制御部10は、移行処理が必要であると判断した場合(S81:YES)、利用状況テーブル13dの登録内容に基づいて、移行対象の候補のゲストOS101が有るか否かを判断する(S82)。具体的には、制御部10は、自身のサーバ装置1におけるゲストOS101,101…のうちで、仮想USBデバイス103及び仮想サウンドデバイス105が使用されていないゲストOS101を特定する。
移行対象の候補のゲストOS101が無いと判断した場合(S82:NO)、制御部10は、ステップS81へ処理を戻す。移行対象の候補のゲストOS101が有ると判断した場合(S82:YES)、制御部10は、ネットワークN2を介して接続されている他のサーバ装置1,1…のうちで、最も負荷(CPU使用率及びメモリ使用率)が小さいサーバ装置1を移行先のサーバ装置1に特定する(S83)。具体的には、制御部10は、ネットワークN2を介して接続されている他のサーバ装置1,1…から、他のサーバ装置1,1…におけるCPU使用率及びメモリ使用率を受信し、CPU使用率の合計(負荷)が最も小さいサーバ装置1を特定する。
制御部10は、ステップS82で移行対象の候補のゲストOS101であると判断したゲストOS101のうちで最も負荷が大きいゲストOS101を特定する(S84)。制御部10は、特定したゲストOS101が、ステップS83で特定した移行先のサーバ装置1へ移行可能であるか否かを判断する(S85)。
移行可能でないと判断した場合(S85:NO)、制御部10は、ステップS82で移行対象の候補のゲストOS101であると判断したゲストOS101が他にも有るか否かを判断する(S87)。制御部10は、移行対象の候補のゲストOS101が無いと判断した場合(S87:NO)、移行処理を終了する。
制御部10は、移行対象の候補のゲストOS101がまだ有ると判断した場合(S87:YES)、ステップS84で特定したゲストOS101の次に負荷が大きいゲストOS101を特定し(S88)、ステップS85へ処理を戻す。制御部10は、ステップS85で移行可能であると判断するまで、又はステップS87で移行対象の候補のゲストOS101が無いと判断するまで、上述した処理を繰り返す。制御部10は、ステップS85で移行可能であると判断した場合(S85:YES)、移行対象のゲストOS101の移行処理を開始する。(S86)
上述した実施形態2でも、ユーザが実際に端末装置5を使用している可能性の高い端末装置5に対応するゲストOS101を移行処理の対象から外すことにより、ゲストOS101の使用中のユーザには影響を与えずに移行処理を実行できる。また、移行対象のゲストOS101を移行先のサーバ装置1へ移行した場合であっても、移行先のサーバ装置1におけるCPU使用率及びメモリ使用率は基準値を満たすことができる。従って、移行先のサーバ装置1を既に使用中の他のユーザの仮想環境102,102…に影響を与えないので、シンクライアントシステムが提供するサービス品質を維持できる。