JP2009223517A - 情報処理システム、情報処理方法及びコンピュータプログラム - Google Patents

情報処理システム、情報処理方法及びコンピュータプログラム Download PDF

Info

Publication number
JP2009223517A
JP2009223517A JP2008066176A JP2008066176A JP2009223517A JP 2009223517 A JP2009223517 A JP 2009223517A JP 2008066176 A JP2008066176 A JP 2008066176A JP 2008066176 A JP2008066176 A JP 2008066176A JP 2009223517 A JP2009223517 A JP 2009223517A
Authority
JP
Japan
Prior art keywords
guest
information processing
migration
server
control unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008066176A
Other languages
English (en)
Other versions
JP5029440B2 (ja
Inventor
Eiji Hasegawa
英司 長谷川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2008066176A priority Critical patent/JP5029440B2/ja
Publication of JP2009223517A publication Critical patent/JP2009223517A/ja
Application granted granted Critical
Publication of JP5029440B2 publication Critical patent/JP5029440B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】現在使用中のユーザの操作感覚に影響を与えることなく、情報処理装置間でのゲストOSの移行処理が可能な情報処理システム、情報処理方法及びコンピュータプログラムを提供する。
【解決手段】管理装置2は、それぞれのサーバ装置1,1…におけるゲストOSの負荷の合計が基準値よりも大きいサーバ装置1を検出した場合、このサーバ装置1のいずれかのゲストOSを他のサーバ装置1へ移行させる。その際、管理装置2は、このサーバ装置1におけるゲストOSのうちで、対応する端末装置5のユーザが実際に使用中である可能性の低いゲストOSを移行対象に選択する。また、管理装置2は、最も負荷の小さいサーバ装置1を選択し、このサーバ装置1に、移行対象に選択されたゲストOSを移行した後の負荷の合計が基準値よりも小さければ、このサーバ装置1を移行先のサーバ装置1に特定する。
【選択図】図1

Description

本発明は、シンクライアント方式により複数のユーザに、コンピュータによる処理を提供することができる情報処理システム、情報処理方法及びコンピュータプログラムに関する。
通信インフラの普及が進み、またユビキタス社会とも言われるように、ユーザが時間、場所を問わずに自身が携帯する端末装置を用いて通信網を介した多様なサービスを受けることができる。しかし、ユーザが携帯する端末装置を多様なサービスに対応させるために高機能化させた場合、それぞれの端末装置のコストが上昇する。また、このような端末装置に大容量の記憶装置を備えさせた場合、当該端末装置が盗難、遺失等により失われたときは、記憶されている個人情報、企業の秘密情報等の各種情報の漏洩の危険性が高まり、情報の安全性が確保されない。
そこで、シンクライアント(thin client)システムが普及している。画面転送方式のシンクライアントシステムでは、ユーザが持つ端末装置を、例えばメモリ、ネットワークカード、グラフィックカード等の必要最低限のハードウェアで構成する。そして、実際の主な処理は、通信網を介して接続されるサーバ装置で行ない、端末装置は、処理の結果に基づく表示画面の情報をサーバ装置から取得してディスプレイに表示する。これにより、端末装置に備えるべきハードウェアを最小限にしてコストを抑え、更に情報の漏洩を防止することができる。
また、近年では、仮想PC(Personal Computer )方式のシンクライアントシステムが、コスト削減に効果があるとして注目を集めている。仮想PC方式とは、サーバ装置において、仮想マシンモニタ(VMM:Virtual Machine Monitor )、ハイパーバイザ等と呼ばれる技術によってサーバ装置内のハードウェアを仮想化し、その上で複数のゲストOS(Operating System)(仮想PC)を実行させる方式であり、サーバ装置に対して同時に接続可能な端末装置の数を増加させることができる。
このようなシンクライアントシステムでは、複数の端末装置(複数のユーザ)にそれぞれゲストOSが割り当てられるので、同一のサーバ装置内のゲストOSを割り当てられた複数のユーザがそれぞれのサーバ装置を共用する。従って、各ユーザの利用状況によって、それぞれのサーバ装置における処理負荷にばらつきが生じる。例えば、それぞれのサーバ装置において、処理負荷の大きい処理を実行しているユーザ(ゲストOS)が多数存在する一方、処理負荷の小さい処理を実行しているユーザ(ゲストOS)が多数存在する状況が発生する。
なお、処理負荷の大きい処理としては、例えば、ゲーム、動画のエンコード処理、文書作成処理等があり、処理負荷の小さい処理としては、例えば、写真の整理、World Wide Web(ウェブ)の閲覧等がある。このような場合、処理負荷の大きい処理を実行しているゲストOSが多く存在するサーバ装置においては、各ゲストOSが、サーバ装置のリソースを十分に利用できない状況が生じる可能性がある。
そこで、それぞれのサーバ装置における処理負荷を考慮し、各ゲストOSが実行する処理をそれぞれのサーバ装置に均等に分散させる方法が研究されている。例えば、各端末装置(各ユーザ)にゲストOSを割り当てる場合に、その時点で最も処理負荷の小さいサーバ装置のゲストOSを割り当てる方法がある。また、各ゲストOSの処理負荷を学習し、学習結果に基づいてゲストOSを割り当てるサーバ装置を決定する方法がある。このような方法により、サーバ装置の処理負荷の偏りを回避することができる。
また、画面転送方式のシンクライアントシステムにおいては、あるゲストOSの実行環境を、異なるサーバ装置のゲストOSに移行させて実行させるマイグレーション処理と呼ばれる技術がある(例えば、特許文献1参照)。マイグレーション処理は、あるゲストOSの実行環境の情報を一旦ネットワークストレージに保存し、この情報を異なるサーバ装置にロードすることによって、異なるサーバ装置のゲストOSで同じ実行環境を続行させる処理である。ゲストOSの実行環境の情報とは、例えば、仮想環境のメモリに格納してある情報及びデバイス情報等である。
マイグレーション処理は、ゲストOSの実行環境の情報をネットワークストレージに保存した後、所定のタイミングで異なるサーバ装置にロードするので、ゲストOSの実行環境を短時間で移行することができる。また、マイグレーション処理によって、各サーバ装置における処理負荷が分散されるので、各ゲストOSにおける動作環境の品質を全体的に向上させることができる。このようなマイグレーション処理は、例えば、各サーバ装置にメンテナンスを行なう場合、又は各サーバ装置における処理負荷を分散させる必要が生じた場合等、各ゲストOSの実行環境を異なるサーバ装置へ移行させる必要が生じた場合に有効である。
特開2006−244481号公報
上述したマイグレーション処理は、異なるサーバ装置へ移行されるゲストOSの動作を一旦停止させて行なう。従って、マイグレーション処理の実行中は、端末装置からの操作ができなくなるので、ゲストOSを利用しているユーザの操作感覚に大きな影響を与えてしまう。例えば、端末装置のユーザがマウス又はキーボードを操作しているときにマイグレーション処理が実行されると、一時的に入力操作の受け付けが阻害され、直感的な入力操作に支障が生じる。また、例えば、端末装置のユーザがゲストOSにおいて仮想サウンドデバイスを実行させて端末装置で音楽を再生しているときにマイグレーション処理が実行されると、音楽再生が途切れる。
従って、単純にそれぞれのサーバ装置の性能を示すCentral Processing Unit(CPU)使用率及びメモリ使用量のみに基づいてマイグレーション処理を実行させると、ユーザが使用中のゲストOSを一時停止させることによって、ユーザの操作性及び利便性を損なう虞がある。
本発明は斯かる事情に鑑みてなされたものであり、その目的とするところは、情報処理装置のいずれかの実行手段における動作環境を他の情報処理装置に移行させる際にユーザに与える影響を低減することができると共に、情報処理装置のそれぞれにおける処理負荷を所定量以下に維持することができる情報処理システム、情報処理方法及びコンピュータプログラムを提供することにある。
本願に開示する情報処理システムは、各種処理を実行する複数の実行手段を備える複数の情報処理装置がネットワークを介して接続してある情報処理システムであって、前記情報処理装置のそれぞれにおける処理負荷を検出する。また、本願に開示する情報処理システムは、検出したいずれかの情報処理装置における処理負荷が所定量以上である場合、所定量以上の処理負荷の情報処理装置の実行手段のそれぞれの状態に基づいて、実行手段のそれぞれにおける動作環境のうちで、他の情報処理装置への移行が可能な動作環境を特定し、前記複数の情報処理装置のうちで、特定された動作環境の受け入れが可能な情報処理装置を選択し、特定された動作環境を、選択された情報処理装置に移行させる。
本願に開示する情報処理システムによれば、いずれかの情報処理装置における処理負荷が所定量以上となった場合に、この情報処理装置の実行手段のそれぞれにおける動作環境のうちで、他の情報処理装置への移行が可能な動作環境を特定する。また、前記複数の情報処理装置のうちで、特定された動作環境の受け入れが可能な情報処理装置を選択し、特定された動作環境を、選択された情報処理装置に移行させる。よって、いずれかの情報処理装置における処理負荷が所定量以上となった場合に、この情報処理装置が備えるいずれかの実行手段が実行中の動作環境を他の情報処理装置へ移行することによって、この情報処理装置における処理負荷を減らすことが可能となる。
開示の情報処理システムでは、複数の情報処理装置のそれぞれにおける処理負荷を所定量以下に維持することができるので、情報処理装置のそれぞれの実行手段における動作環境の品質を維持することができる。従って、このような情報処理システムをシンクライアントシステムに適用した場合、各ユーザが使用するゲストOSにおける動作環境のサービス品質を維持することができる。
また、開示の情報処理システムでは、処理負荷が所定量以上である情報処理装置の実行手段のそれぞれが実行中の各種処理に基づいて、各実行手段における動作環境のうちで、他の情報処理装置への移行が可能な動作環境を適切に特定する。例えば、外部装置をユーザが操作することによって実行手段が実行する所定の処理を実行中の動作環境を、他の情報処理装置への移行が可能でないと設定しておく。この場合、ユーザが実際に操作中の動作環境を、移行対象から外すことができ、ユーザに直接与える影響が小さい動作環境を特定することができる。従って、動作環境の移行処理の際にユーザに与える影響を低減することができる。
更に、開示の情報処理システムでは、移行可能であると特定された動作環境の受け入れが可能な情報処理装置を適切に選択することにより、選択された情報処理装置に前記動作環境が移行された後においても、前記情報処理装置の他の実行手段における動作環境に影響を与えない。よって、動作環境が移行された情報処理装置を既に使用している他のユーザの動作環境に影響を与えない。
以下に、本発明に係る情報処理システムについて、シンクライアントシステムに適用した実施形態を示す図面に基づいて詳述する。なお、以下では、本発明に係る情報処理システムを、情報処理装置(サーバ装置)のハードウェアを仮想化し、その上で複数の仮想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…に影響を与えないので、シンクライアントシステムが提供するサービス品質を維持できる。
実施形態1に係るシンクライアントシステムの構成を示す模式図である。 サーバ装置の構成を示すブロック図である。 サーバ装置の機能を示す機能ブロック図である。 利用状況テーブルの登録内容を示す模式図である。 管理装置及びネットワークストレージの構成を示すブロック図である。 ユーザ管理テーブル及びリソース管理テーブルの登録内容を示す模式図である。 端末装置の構成を示すブロック図である。 シンクライアントの起動処理の手順を示すフローチャートである。 サーバ装置の利用状況の監視処理の手順を示すフローチャートである。 サーバ装置の利用状況の監視処理の手順を示すフローチャートである。 移行元のサーバ装置が行なう移行処理の手順を示すフローチャートである。 移行元のサーバ装置が行なう移行処理の手順を示すフローチャートである。 移行元のサーバ装置が行なう移行処理の手順を示すフローチャートである。 移行先のサーバ装置が行なう移行処理の手順を示すフローチャートである。 移行先のサーバ装置が行なう移行処理の手順を示すフローチャートである。 サーバ装置の利用状況の監視処理の手順を示すフローチャートである。
符号の説明
1 サーバ装置(情報処理装置)
10 制御部(実行手段)
2 管理装置
20 制御部(検出手段、特定手段、選択手段、移行手段)
3 ネットワークストレージ
5 端末装置(外部装置)
N1,N2 ネットワーク

Claims (8)

  1. 各種処理を実行する複数の実行手段を備える複数の情報処理装置がネットワークを介して接続してある情報処理システムであって、
    前記情報処理装置のそれぞれにおける処理負荷を検出する検出手段と、
    該検出手段が検出したいずれかの情報処理装置における処理負荷が所定量以上である場合、該情報処理装置の実行手段のそれぞれの状態に基づいて、前記実行手段のそれぞれにおける動作環境のうちで、他の情報処理装置への移行が可能な動作環境を特定する特定手段と、
    前記複数の情報処理装置のうちで、前記特定手段が特定した動作環境の受け入れが可能な情報処理装置を選択する選択手段と、
    前記特定手段が特定した動作環境を、前記選択手段が選択した情報処理装置に移行させる移行手段と
    を備えることを特徴とする情報処理システム。
  2. 前記検出手段は、
    前記情報処理装置が備える実行手段のそれぞれにおける処理負荷を検出する手段と、
    検出した前記実行手段のそれぞれにおける処理負荷を合計し、前記情報処理装置における処理負荷を算出する手段と
    を備えることを特徴とする請求項1に記載の情報処理システム。
  3. 前記実行手段は、前記ネットワークを介して接続される外部装置から取得する情報に従った処理を実行するように構成してあり、
    前記特定手段は、処理負荷が所定量以上である情報処理装置の実行手段のそれぞれが外部装置から取得した情報に従って実行する処理に基づいて、他の情報処理装置への移行が可能な動作環境を特定するように構成してあること
    を特徴とする請求項1又は2に記載の情報処理システム。
  4. 前記移行手段が前記動作環境を移行中に、前記動作環境で処理を実行する実行手段が外部装置から取得した情報に従って所定の処理を実行するか否かを判断する手段と、
    所定の処理を実行すると判断した場合、前記移行手段による移行処理を中断する手段と、
    前記実行手段が外部装置から取得した情報に従って実行する処理に基づいて、中断中の移行処理を再開させるか否かを判断する手段とを備え、
    前記移行手段は、前記中断中の移行処理を再開させると判断された場合、前記移行処理を再開するように構成してあること
    を特徴とする請求項3に記載の情報処理システム。
  5. 前記情報処理装置のそれぞれが、前記検出手段、前記特定手段、前記選択手段及び前記移行手段を備えることを特徴とする請求項1乃至4のいずれかひとつに記載の情報処理システム。
  6. 前記ネットワークを介して前記複数の情報処理装置に接続される管理装置を備え、
    該管理装置が、前記検出手段、前記特定手段、前記選択手段及び前記移行手段を備えることを特徴とする請求項1乃至4のいずれかひとつに記載の情報処理システム。
  7. 各種処理を実行する複数の実行手段を備える複数の情報処理装置がネットワークを介して接続してある情報処理システムにおける情報処理方法であって、
    前記情報処理装置のそれぞれにおける処理負荷を検出する検出ステップと、
    該検出ステップで検出したいずれかの情報処理装置における処理負荷が所定量以上である場合、該情報処理装置の実行手段のそれぞれの状態に基づいて、前記実行手段のそれぞれにおける動作環境のうちで、他の情報処理装置への移行が可能な動作環境を特定する特定ステップと、
    前記複数の情報処理装置のうちで、前記特定ステップで特定した動作環境の受け入れが可能な情報処理装置を選択する選択ステップと、
    前記特定ステップで特定した動作環境を、前記選択ステップで選択した情報処理装置に移行させる移行ステップと
    を含むことを特徴とする情報処理方法。
  8. コンピュータに、各種処理を実行する複数の実行手段を備える複数の情報処理装置がネットワークを介して接続してある情報処理システムを制御させるためのコンピュータプログラムであって、
    コンピュータに、
    前記情報処理装置のそれぞれにおける処理負荷を検出する検出ステップと、
    該検出ステップで検出したいずれかの情報処理装置における処理負荷が所定量以上である場合、該情報処理装置の実行手段のそれぞれの状態に基づいて、前記実行手段のそれぞれにおける動作環境のうちで、他の情報処理装置への移行が可能な動作環境を特定する特定ステップと、
    前記複数の情報処理装置のうちで、前記特定ステップで特定した動作環境の受け入れが可能な情報処理装置を選択する選択ステップと、
    前記特定ステップで特定した動作環境を、前記選択ステップで選択した情報処理装置に移行させる移行ステップと
    を実行させるためのコンピュータプログラム。
JP2008066176A 2008-03-14 2008-03-14 情報処理システム、情報処理方法及びコンピュータプログラム Expired - Fee Related JP5029440B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008066176A JP5029440B2 (ja) 2008-03-14 2008-03-14 情報処理システム、情報処理方法及びコンピュータプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008066176A JP5029440B2 (ja) 2008-03-14 2008-03-14 情報処理システム、情報処理方法及びコンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2009223517A true JP2009223517A (ja) 2009-10-01
JP5029440B2 JP5029440B2 (ja) 2012-09-19

Family

ID=41240243

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008066176A Expired - Fee Related JP5029440B2 (ja) 2008-03-14 2008-03-14 情報処理システム、情報処理方法及びコンピュータプログラム

Country Status (1)

Country Link
JP (1) JP5029440B2 (ja)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010176178A (ja) * 2009-01-27 2010-08-12 Nec Corp 仮想計算機システム、仮想計算機のマイグレーション方法、及びプログラム
JP2011108014A (ja) * 2009-11-18 2011-06-02 Nec Corp 仮想マシン管理装置、仮想マシン管理方法、及び仮想マシン管理プログラム
JP2011145776A (ja) * 2010-01-12 2011-07-28 Fujitsu Ltd 仮想計算機、遠隔起動プログラム、遠隔起動方法及び仮想計算機システム
JP2012108655A (ja) * 2010-11-16 2012-06-07 Hitachi Ltd シンクライアント制御システム
JP2012124829A (ja) * 2010-12-10 2012-06-28 Fujitsu Ltd 情報処理プログラム、中継装置及び中継管理装置
JP2012174001A (ja) * 2011-02-22 2012-09-10 Nec Corp シンクライアントシステム、位置情報管理サーバ、マイグレーション方法、及びプログラム
WO2012132808A1 (ja) * 2011-03-28 2012-10-04 日本電気株式会社 仮想マシン管理システム、及び仮想マシン管理方法
JP2012194911A (ja) * 2011-03-17 2012-10-11 Fujitsu Ltd 情報処理装置、電力制御方法及び電力制御プログラム
JP2012233997A (ja) * 2011-04-28 2012-11-29 Yamaha Corp カラオケ装置
JP2012252602A (ja) * 2011-06-03 2012-12-20 Nippon Telegr & Teleph Corp <Ntt> サーバ管理システム、サーバ管理装置、サーバ管理方法、及びサーバ管理プログラム
US8448174B2 (en) 2009-01-29 2013-05-21 Fujitsu Limited Information processing device, information processing method, and recording medium
JP2013148984A (ja) * 2012-01-17 2013-08-01 Fujitsu Ltd プログラム、仮想マシン制御方法、情報処理装置および情報処理システム
JP2013171355A (ja) * 2012-02-20 2013-09-02 Hitachi Ltd 計算機システム
JP2017004235A (ja) * 2015-06-10 2017-01-05 富士ゼロックス株式会社 管理装置及びプログラム

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10283210A (ja) * 1997-04-01 1998-10-23 Hitachi Ltd 仮想計算機システム間の仮想計算機移動制御方式
JP2006072591A (ja) * 2004-09-01 2006-03-16 Hitachi Ltd 仮想計算機制御方法
JP2006190141A (ja) * 2005-01-07 2006-07-20 Fujitsu Ltd 移動処理プログラム、情報処理装置、コンピュータシステム及び移動処理プログラムを格納したコンピュータ読み取り可能な記録媒体
JP2006244481A (ja) * 2005-02-28 2006-09-14 Hewlett-Packard Development Co Lp クラスタシステムの仮想マシンをマイグレーションするためのシステム及び方法
JP2007323244A (ja) * 2006-05-31 2007-12-13 Nec Corp 仮想サーバ管理システムおよびその方法ならびに管理サーバ装置
WO2008062864A1 (en) * 2006-11-24 2008-05-29 Nec Corporation Virtual machine locating system, virtual machine locating method, program, virtual machine management device and server
WO2008102739A1 (ja) * 2007-02-23 2008-08-28 Nec Corporation 仮想サーバシステム及び物理サーバ選択方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10283210A (ja) * 1997-04-01 1998-10-23 Hitachi Ltd 仮想計算機システム間の仮想計算機移動制御方式
JP2006072591A (ja) * 2004-09-01 2006-03-16 Hitachi Ltd 仮想計算機制御方法
JP2006190141A (ja) * 2005-01-07 2006-07-20 Fujitsu Ltd 移動処理プログラム、情報処理装置、コンピュータシステム及び移動処理プログラムを格納したコンピュータ読み取り可能な記録媒体
JP2006244481A (ja) * 2005-02-28 2006-09-14 Hewlett-Packard Development Co Lp クラスタシステムの仮想マシンをマイグレーションするためのシステム及び方法
JP2007323244A (ja) * 2006-05-31 2007-12-13 Nec Corp 仮想サーバ管理システムおよびその方法ならびに管理サーバ装置
WO2008062864A1 (en) * 2006-11-24 2008-05-29 Nec Corporation Virtual machine locating system, virtual machine locating method, program, virtual machine management device and server
WO2008102739A1 (ja) * 2007-02-23 2008-08-28 Nec Corporation 仮想サーバシステム及び物理サーバ選択方法

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010176178A (ja) * 2009-01-27 2010-08-12 Nec Corp 仮想計算機システム、仮想計算機のマイグレーション方法、及びプログラム
US8448174B2 (en) 2009-01-29 2013-05-21 Fujitsu Limited Information processing device, information processing method, and recording medium
JP2011108014A (ja) * 2009-11-18 2011-06-02 Nec Corp 仮想マシン管理装置、仮想マシン管理方法、及び仮想マシン管理プログラム
JP2011145776A (ja) * 2010-01-12 2011-07-28 Fujitsu Ltd 仮想計算機、遠隔起動プログラム、遠隔起動方法及び仮想計算機システム
JP2012108655A (ja) * 2010-11-16 2012-06-07 Hitachi Ltd シンクライアント制御システム
JP2012124829A (ja) * 2010-12-10 2012-06-28 Fujitsu Ltd 情報処理プログラム、中継装置及び中継管理装置
US8984522B2 (en) 2010-12-10 2015-03-17 Fujitsu Limited Relay apparatus and relay management apparatus
JP2012174001A (ja) * 2011-02-22 2012-09-10 Nec Corp シンクライアントシステム、位置情報管理サーバ、マイグレーション方法、及びプログラム
JP2012194911A (ja) * 2011-03-17 2012-10-11 Fujitsu Ltd 情報処理装置、電力制御方法及び電力制御プログラム
CN103460191A (zh) * 2011-03-28 2013-12-18 日本电气株式会社 虚拟机管理系统和虚拟机管理方法
WO2012132808A1 (ja) * 2011-03-28 2012-10-04 日本電気株式会社 仮想マシン管理システム、及び仮想マシン管理方法
JP5863771B2 (ja) * 2011-03-28 2016-02-17 日本電気株式会社 仮想マシン管理システム、及び仮想マシン管理方法
JP2012233997A (ja) * 2011-04-28 2012-11-29 Yamaha Corp カラオケ装置
JP2012252602A (ja) * 2011-06-03 2012-12-20 Nippon Telegr & Teleph Corp <Ntt> サーバ管理システム、サーバ管理装置、サーバ管理方法、及びサーバ管理プログラム
JP2013148984A (ja) * 2012-01-17 2013-08-01 Fujitsu Ltd プログラム、仮想マシン制御方法、情報処理装置および情報処理システム
JP2013171355A (ja) * 2012-02-20 2013-09-02 Hitachi Ltd 計算機システム
JP2017004235A (ja) * 2015-06-10 2017-01-05 富士ゼロックス株式会社 管理装置及びプログラム

Also Published As

Publication number Publication date
JP5029440B2 (ja) 2012-09-19

Similar Documents

Publication Publication Date Title
JP5029440B2 (ja) 情報処理システム、情報処理方法及びコンピュータプログラム
JP5343586B2 (ja) 情報処理装置、情報処理方法及びコンピュータプログラム
JP5499688B2 (ja) 計算機システム、情報処理装置、仮想計算機運用方法及びプログラム
JP6199514B2 (ja) ファブリック分散リソースのスケジューリング
US10459769B2 (en) Elastic container management system
JP6384877B2 (ja) ストリーミング・サーバのセッション・アイドル最適化
TWI537827B (zh) 應用軟體試用系統、方法及其伺服器與使用者裝置
US9046931B2 (en) Apparatus and method for adaptation of input/output interface in virtualization environment
JP5980335B2 (ja) 仮想計算機システム、管理計算機及び仮想計算機管理方法
JP4935899B2 (ja) アクセス権限設定プログラム、方法及び装置
JP5708937B2 (ja) 構成情報管理システム、構成情報管理方法、及び構成情報管理用プログラム
JP5476764B2 (ja) サーバ装置、計算機システム、プログラム及び仮想計算機移動方法
KR20080106908A (ko) 하드웨어 장치와 같은 자원을 소유하는 가상 컴퓨터를 이동시키기 위해 이용될 수 있는 컴퓨팅 시스템 및 방법
KR20140059222A (ko) 중지된 애플리케이션 재개 및/또는 애플리케이션의 중지 면제 기법
JP5477047B2 (ja) 情報処理装置、仮想計算機接続方法、プログラム及び記録媒体
US20140149984A1 (en) Information processing apparatus, information processing method, and computer readable medium
JP5493976B2 (ja) 情報処理装置、計算機システム及びプログラム
JP2002358167A5 (ja)
JP2010066931A (ja) 負荷分散機能を有した情報処理装置
KR101680702B1 (ko) 클라우드 기반 웹 호스팅 시스템
JPWO2018003031A1 (ja) 仮想化管理プログラム、仮想化管理装置および仮想化管理方法
US20230195491A1 (en) Device emulation in remote computing environments
US9021489B2 (en) Start, suspend and resume an application program where the application program utilizes the same handle to identify a resource upon resumption
JPWO2006057040A1 (ja) コンピュータ・システム及び情報処理方法
JP5533005B2 (ja) 情報処理装置、計算機システム及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101119

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120313

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120502

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120529

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120611

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150706

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees