(57)【特許請求の範囲】
【請求項１】
複数のインスタンスを動作させることによって、ネットワークを介して接続された端末のユーザに対し自装置のコンピュータリソースを提供するリソース提供装置であって、
前記端末のユーザに対して前記コンピュータリソースを提供するために起動されるクラウドインスタンスと、自装置に接続された入出力デバイスを操作するユーザに対して前記コンピュータリソースを提供するために起動されるパーソナルインスタンスと、をそれぞれ制御するインスタンス制御部と、
自装置に接続された入力デバイスから入力された信号を前記パーソナルインスタンスに対して中継し、前記パーソナルインスタンスから出力デバイスに対して出力された信号を、自装置に接続された出力デバイスに対して中継する中継部と、
を備え、
前記インスタンス制御部は、自装置に対して前記パーソナルインスタンスを利用しているユーザから電源オフの指示が入力されると、その時点で動作中のクラウドインスタンスの有無を確認し、動作中のクラウドインスタンスが無い場合には自装置の電源をオフにし、動作中のクラウドインスタンスが有る場合にはライブマイグレーションを行うことによって、動作中の全てのクラウドインスタンスを他のリソース提供装置で動作させた後に自装置の電源をオフにするリソース提供装置。
【請求項２】
前記パーソナルインスタンスによって、前記入力デバイスとして認識される仮想入力デバイス部と、
前記パーソナルインスタンスによって、前記出力デバイスとして認識される仮想出力デバイス部と、
をさらに備え、
前記中継部は、前記入力デバイスから入力された信号を、前記仮想入力デバイス部に対して中継し、前記パーソナルインスタンスから前記仮想出力デバイス部へ出力された信号を前記出力デバイスに対して中継する、ことを特徴とする請求項１に記載のリソース提供装置。
【請求項３】
前記インスタンス制御部は、前記端末から前記ネットワークを介して受信した通信データを、その宛先に応じて前記クラウドインスタンスに対して転送することを特徴とする請求項１又は２に記載のリソース提供装置。
【請求項４】
前記インスタンス制御部は、前記パーソナルインスタンスからネットワークへ送信される通信データ及び前記ネットワークから前記パーソナルインスタンス宛に送信された通信データについて、自装置の通信ハードウェアと前記パーソナルインスタンスとの間で中継することを特徴とする請求項１〜３のいずれか１項に記載のリソース提供装置。
【請求項５】
リソース提供装置は、前記端末のユーザに対しコンピュータリソースを提供するリソース提供システムに備えられる装置であり、
前記インスタンス制御部は、前記リソース提供システムに備えられる他の装置から受信する制御データに応じて前記クラウドインスタンスを制御する、ことを特徴とする請求項１〜４のいずれか１項に記載のリソース提供装置。
【請求項６】
複数のインスタンスを動作させることによって、ネットワークを介して接続された端末のユーザに対し自装置のコンピュータリソースを提供するリソース提供装置が行うリソース提供方法であって、
前記端末のユーザに対して前記コンピュータリソースを提供するために起動されるクラウドインスタンスと、自装置に接続された入出力デバイスを操作するユーザに対して前記コンピュータリソースを提供するために起動されるパーソナルインスタンスと、をそれぞれ制御するインスタンス制御ステップと、
自装置に接続された入力デバイスから入力された信号を前記パーソナルインスタンスに対して中継し、前記パーソナルインスタンスから出力デバイスに対して出力された信号を、自装置に接続された出力デバイスに対して中継する中継ステップと、
を備え、
前記インスタンス制御ステップにおいて、自装置に対して前記パーソナルインスタンスを利用しているユーザから電源オフの指示が入力されると、その時点で動作中のクラウドインスタンスの有無を確認し、動作中のクラウドインスタンスが無い場合には自装置の電源をオフにし、動作中のクラウドインスタンスが有る場合にはライブマイグレーションを行うことによって、動作中の全てのクラウドインスタンスを他のリソース提供装置で動作させた後に自装置の電源をオフにするリソース提供方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザ端末から送信されるコンピュータリソースの提供要求に応じてコンピュータリソースの提供を行うための技術に関する。
【背景技術】
【０００２】
コンピュータ装置のプロセッサ、メモリ、ディスク等のハードウェアリソースを、複数のコンピュータリソースに仮想化し、１台の物理マシンに複数の仮想マシン（インスタンス）を起動させる仮想化技術が研究されている。また、このような仮想化技術に基づいてユーザ端末に対しコンピュータリソースを提供するシステムも研究されている。このようなリソース提供システムでは、上述したような仮想化機能を備える複数の装置が用いられる。ネットワークを介してユーザ端末から送信されるリソース提供要求に応じて各装置がインスタンスを起動し、ユーザ端末に対しインスタンスのリソースが提供される。このようなリソース提供システムによれば、コンピュータのハードウェアやソフトウェアを、買い取りやリースではなく、従量制の課金により提供することが可能である。また、ユーザが必要な時に必要なだけコンピュータリソースを提供することが可能である。
【０００３】
このようなリソース提供システムは、データセンタ等に大量に用意された物理マシンのハードウェアリソースを仮想化し、インターネットを介して広く公開して提供するいわゆるパブリッククラウドが一般的であった。これに加えて、近年ではこのようなクラウドを特定の企業等の組織内等の閉じられた環境内におけるコンピュータシステムに適用する、いわゆるプライベートクラウドが研究されている（例えば、非特許文献１）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】「クラウド大全  サービス詳細から基盤技術まで」、日経ＢＰ社、２００９年４月
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、リソース提供システムには、インスタンスを起動する物理マシン（以下、「ノードコントローラ」という。）が必要となる。ノードコントローラは、インスタンスを起動させてユーザ端末にコンピュータリソースを提供するための専用装置として用いられることが一般的であった。
【０００６】
上記事情に鑑み、本発明は、リソース提供システムにおいてインスタンスを起動させるノードコントローラに対し、インスタンスを起動させてユーザ端末にコンピュータリソースを提供する以外の用途を付与する技術を提供することを目的としている。
【課題を解決するための手段】
【０００７】
本発明の一態様は、複数のインスタンスを動作させることによって、ネットワークを介して接続された端末のユーザに対し自装置のコンピュータリソースを提供するリソース提供装置であって、前記端末のユーザに対して前記コンピュータリソースを提供するために起動されるクラウドインスタンスと、自装置に接続された入出力デバイスを操作するユーザに対して前記コンピュータリソースを提供するために起動されるパーソナルインスタンスと、をそれぞれ制御するインスタンス制御部と、自装置に接続された入力デバイスから入力された信号を前記パーソナルインスタンスに対して中継し、前記パーソナルインスタンスから出力デバイスに対して出力された信号を、自装置に接続された出力デバイスに対して中継する中継部と、を備え、前記インスタンス制御部は、自装置に対して前記パーソナルインスタンスを利用しているユーザから電源オフの指示が入力されると、その時点で動作中のクラウドインスタンスの有無を確認し、動作中のクラウドインスタンスが無い場合には自装置の電源をオフにし、動作中のクラウドインスタンスが有る場合にはライブマイグレーションを行うことによって、動作中の全てのクラウドインスタンスを他のリソース提供装置で動作させた後に自装置の電源をオフにする。
【０００８】
本発明の一態様は、上記のリソース提供装置であって、前記パーソナルインスタンスによって、前記入力デバイスとして認識される仮想入力デバイス部と、前記パーソナルインスタンスによって、前記出力デバイスとして認識される仮想出力デバイス部と、をさらに備え、前記中継部は、前記入力デバイスから入力された信号を、前記仮想入力デバイス部に対して中継し、前記パーソナルインスタンスから前記仮想出力デバイス部へ出力された信号を前記出力デバイスに対して中継する、ことを特徴とする。
【０００９】
本発明の一態様は、上記のリソース提供装置であって、前記インスタンス制御部は、前記端末から前記ネットワークを介して受信した通信データを、その宛先に応じて前記クラウドインスタンスに対して転送することを特徴とする。
【００１０】
本発明の一態様は、上記のリソース提供装置であって、前記インスタンス制御部は、前記パーソナルインスタンスからネットワークへ送信される通信データ及び前記ネットワークから前記パーソナルインスタンス宛に送信された通信データについて、自装置の通信ハードウェアと前記パーソナルインスタンスとの間で中継することを特徴とする。
【００１１】
本発明の一態様は、上記のリソース提供装置であって、リソース提供装置は、前記端末のユーザに対しコンピュータリソースを提供するリソース提供システムに備えられる装置であり、前記インスタンス制御部は、前記リソース提供システムに備えられる他の装置から受信する制御データに応じて前記クラウドインスタンスを制御することを特徴とする。
【００１２】
本発明の一態様は、複数のインスタンスを動作させることによって、ネットワークを介して接続された端末のユーザに対し自装置のコンピュータリソースを提供するリソース提供装置が行うリソース提供方法であって、前記端末のユーザに対して前記コンピュータリソースを提供するために起動されるクラウドインスタンスと、自装置に接続された入出力デバイスを操作するユーザに対して前記コンピュータリソースを提供するために起動されるパーソナルインスタンスと、をそれぞれ制御するインスタンス制御ステップと、自装置に接続された入力デバイスから入力された信号を前記パーソナルインスタンスに対して中継し、前記パーソナルインスタンスから出力デバイスに対して出力された信号を、自装置に接続された出力デバイスに対して中継する中継ステップと、を備え、前記インスタンス制御ステップにおいて、自装置に対して前記パーソナルインスタンスを利用しているユーザから電源オフの指示が入力されると、その時点で動作中のクラウドインスタンスの有無を確認し、動作中のクラウドインスタンスが無い場合には自装置の電源をオフにし、動作中のクラウドインスタンスが有る場合にはライブマイグレーションを行うことによって、動作中の全てのクラウドインスタンスを他のリソース提供装置で動作させた後に自装置の電源をオフにする。
【発明の効果】
【００１３】
本発明により、リソース提供システムにおいてインスタンスを起動させるノードコントローラに対し、インスタンスを起動させてユーザ端末にコンピュータリソースを提供する以外の用途を付与することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】リソース提供システムのシステム構成を表すシステム構成図である。
【図２】ノードコントローラの機能構成を表す概略ブロック図である。
【図３】ノード管理部の機能構成を表す概略ブロック図である。
【図４】仮想デバイス名テーブルの具体例を表す図である。
【図５】パーソナルインスタンスを起動する際の動作を表すシーケンス図である。
【図６】パーソナルインスタンスが起動している状態でＮＣユーザが入力装置を操作した場合の、ノードコントローラの動作を表すシーケンス図である。
【図７】パーソナルインスタンスが処理結果に応じて出力装置信号を出力した場合の、ノードコントローラの動作を表すシーケンス図である。
【図８】リソース提供システムにおいて、クラウドインスタンスが起動される際の動作を表すシーケンス図である。
【図９】変形例のノードコントローラの動作を表すシーケンス図である。
【図１０】変形例の仮想化部が記憶するテーブルの具体例を表す図である。
【発明を実施するための形態】
【００１５】
図１は、リソース提供システム１００のシステム構成を表すシステム構成図である。リソース提供システム１００は、ユーザ端末１、クラウドコントローラ２、複数台のクラスタコントローラ３、複数台のノードコントローラ４を備える。ユーザ端末１と、クラウドコントローラ２及び複数台のクラスタコントローラ３とは、互いに通信可能に構成されている。ユーザ端末１と、クラウドコントローラ２及び各クラスタコントローラ３とは、インターネットを用いて通信するように構成されても良いし、ＬＡＮ（Local Area Network）を用いて通信するように構成されても良いし、その他の通信路を用いて通信するように構成されても良い。また、クラウドコントローラ２と各クラスタコントローラ３とは互いに通信可能に構成されている。また、各クラスタコントローラ３と各ノードコントローラ４とは互いに通信可能に構成されている。クラウドコントローラ２と各クラスタコントローラ３、各クラスタコントローラ３と各ノードコントローラ４とは、それぞれＬＡＮ等を用いて通信するように構成される。なお、リソース提供システム１００が備えるクラスタコントローラ３やノードコントローラ４の台数は、図１に示されたものに限定されない。
【００１６】
ユーザ端末１は、ワークステーション、パーソナルコンピュータ、スマートフォン等の情報処理装置を用いて構成される。ユーザ端末１は、クラウドコントローラ２に対しコンピュータリソースの提供要求を送信し、提供要求に応じて提供されるコンピュータリソースを利用する。以下、ユーザ端末１についてさらに具体的に説明する。
【００１７】
ユーザ端末１は、例えばインターネットブラウザの機能を備えている。ユーザ端末１は、予め定められたＵＲＬ（Uniform Resource Locator）に基づいて、クラウドコントローラ２によって提供されるウェブサイトに接続する。ユーザ端末１は、クラウドコントローラ２に対し、コンピュータリソースの提供要求を送信する。ユーザ端末１は、提供要求に対する応答として、ノードコントローラ４において起動されたインスタンスのＩＰ（Internet Protocol）アドレスを、クラウドコントローラ２から受信する。なお、ノードコントローラ４とは、コンピュータリソースの提供元の装置である。ユーザ端末１は、受信したＩＰアドレスに基づいてノードコントローラ４に接続し、ノードコントローラ４のコンピュータリソースを利用する。ここで、インスタンスとは、ノードコントローラ４のスロット上に起動された仮想マシンである。また、スロットとは、ＣＰＵ、メモリ、ディスクなどの物理的なハードウェアリソースを仮想化して特定の単位として切り出した仮想的なコンピュータリソースである。また、コンピュータリソースの提供要求については、ユーザ端末１は、ブラウザ機能ではなく専用のアプリケーションソフトウェアにより提供される機能によって行っても良い。
【００１８】
クラウドコントローラ２は、サーバ装置、ワークステーション、パーソナルコンピュータ等の情報処理装置を用いて構成される。クラウドコントローラ２の機能は、既存のクラウドシステムにおけるクラウドコントローラ機能を用いて実現される。以下、クラウドコントローラ機能の具体例について説明する。クラウドコントローラ２は、ユーザ端末１に対しウェブサイトを提供し、ユーザ端末１から送信されるコンピュータリソースの提供要求を受信する。クラウドコントローラ２は、受信した提供要求に応じて、クラスタコントローラ３に余剰リソース確認やインスタンス起動要求を送信する。例えば、クラウドコントローラ２は、ユーザ端末１に対応するユーザアカウントを自身の記憶領域に予め記憶しておく。また、クラウドコントローラ２は、ユーザアカウント毎にコンピュータリソースを提供するクラスタコントローラ３を対応付けて記憶しておく。クラウドコントローラ２は、ユーザ端末１からコンピュータリソースの提供要求を受信すると、ユーザ端末１に対応するクラスタコントローラ３に対し余剰リソース確認やインスタンス起動要求を送信する。クラウドコントローラ２は、インスタンス起動要求を受信したノードコントローラ４からインスタンスのイメージファイルの要求を受信する。クラウドコントローラ２は、予めインスタンスのイメージファイルを記憶しており、この要求に応じてイメージファイルを送信する。なお、上述したクラウドコントローラ２の構成は一例にすぎず、既存のクラウドコントローラ機能を実現できればどのように構成されても良い。
【００１９】
クラスタコントローラ３は、サーバ装置、ワークステーション、パーソナルコンピュータ等の情報処理装置を用いて構成される。クラスタコントローラ３は、ネットワークを介して複数のノードコントローラ４に接続されている。クラスタコントローラ３は、自身の配下のノードコントローラ４の動作を制御する。クラスタコントローラ３の機能は、既存のクラウドシステムにおけるクラスタコントローラの機能を用いて実現される。クラスタコントローラ３は、既存のクラスタコントローラ機能を実現できればどのように構成されても良い。
【００２０】
ノードコントローラ４は、ワークステーション、パーソナルコンピュータ等の情報処理装置を用いて構成される。ノードコントローラ４は、自身のハードウェアリソースを仮想化してユーザ端末１に提供する。以下、ノードコントローラ４について詳細に説明する。
図２は、ノードコントローラ４の機能構成を表す概略ブロック図である。ノードコントローラ４は、バスで接続されたＣＰＵ（Central Processing Unit）やメモリや補助記憶装置などを備え、ノードコントローラ用プログラムを実行する。ノードコントローラ４は、ノードコントローラ用プログラムを実行することによって、ハードウェアリソース４１、仮想化部４２、ノード管理部４３、パーソナルインスタンス４４、クラウドインスタンス４５−１、クラウドインスタンス４５−２を備える装置として機能する。なお、ノードコントローラ４の仮想化部４２及びノード管理部４３は、ＡＳＩＣ（Application Specific Integrated Circuit）やＰＬＤ（Programmable Logic Device）やＦＰＧＡ（Field Programmable Gate Array）等のハードウェアを用いて実現されても良い。
【００２１】
ハードウェアリソース４１は、ＣＰＵ、メモリ、補助記憶装置、Ｉ／Ｏインターフェース、ネットワークインターフェース等の物理的な装置である。
仮想化部４２は、Ｘｅｎなどの仮想化マシンソフトウェアがハードウェアリソース４１によって実行されることにより実現される機能部である。仮想化部４２は、ハードウェアリソース４１を仮想化し、複数のインスタンスの実行を実現する。また、仮想化部４２は、ノード管理部４３から出力されたデータや信号を、その宛先に応じてパーソナルインスタンス４４やクラウドインスタンス４５やハードウェアリソース４１へ転送する。また、仮想化部４２は、パーソナルインスタンス４４、クラウドインスタンス４５及びハードウェアリソース４１から出力されたデータや信号を、ノード管理部４３へ転送する。
【００２２】
ノード管理部４３は、クラスタコントローラ３や他のノードコントローラ４のノード管理部４３と通信を行い、ノードコントローラ４におけるコンピュータリソースの提供を制御する。ノード管理部４３の詳細については後述する。
パーソナルインスタンス４４は、ノード管理部４３によって起動され制御されるインスタンスの一つである。パーソナルインスタンス４４は、ノードコントローラ４のＩ／Ｏインターフェースに対して接続された入出力装置を操作するユーザ（以下、「ＮＣユーザ」という。）に対して提供されるインスタンスである。ＮＣユーザが、ノードコントローラ４のＩ／Ｏインターフェースに接続された入力装置を操作すると、入力装置によって生成された操作信号はパーソナルインスタンス４４に入力される。パーソナルインスタンス４４は、入力された操作信号に応じて動作し、出力信号を生成する。パーソナルインスタンス４４によって生成された出力信号は、ノードコントローラ４のＩ／Ｏインターフェースに接続された出力装置に出力される。なお、ノードコントローラ４のＩ／Ｏインターフェースに接続される入力装置とは、例えばキーボード、ポインティングデバイス（マウス、タブレット等）、ボタン、タッチパネル等の既存の入力装置である。また、ノードコントローラ４のＩ／Ｏインターフェースに接続される出力装置とは、例えばＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ、有機ＥＬ（Electro Luminescence）ディスプレイ等の画像表示装置であっても良いし、スピーカーやプリンタ装置等であっても良い。
【００２３】
クラウドインスタンス４５（４５−１及び４５−２）は、ノード管理部４３によって起動され制御されるインスタンスの一つである。クラウドインスタンス４５は、既存のクラウドシステムにおけるノードコントローラ上で動作するインスタンスと同じである。すなわち、クラウドインスタンス４５は、ノードコントローラ４のコンピュータリソースをユーザ端末１に提供するために起動されるインスタンスである。
【００２４】
なお、図２には、パーソナルインスタンス４４及び複数のクラウドインスタンス４５が記載されているが、これらは常にノードコントローラ４で起動している必要は無い。すなわち、ノードコントローラ４においては、少なくともハードウェアリソース４１、仮想化部４２及びノード管理部４３が備えられていればよく、パーソナルインスタンス４４及び各クラウドインスタンス４５は、必要に応じてノード管理部４３によって起動される。また、図２には、クラウドインスタンス４５は二つ記載されているが、一台のノードコントローラ４において動作するクラウドインスタンス４５の数は二つに限定される必要は無い。すなわち、一台のノードコントローラ４において動作するクラウドインスタンス４５の数は、一つであっても良いし、三つ以上であっても良い。
【００２５】
図３は、ノード管理部４３の機能構成を表す概略ブロック図である。次に、図３を用いてノード管理部４３の詳細について説明する。ノード管理部４３は、入力部４３１、出力部４３２、仮想デバイス記憶部４３３、インスタンス制御部４３４、中継ドライバ４３５を備える。
【００２６】
入力部４３１は、仮想化部４２からデータや信号の入力を受け付ける。例えば、入力部４３１は、ハードウェアリソース４１のネットワークインターフェースにおいて受信された通信データを、仮想化部４２から受ける。また、入力部４３１は、ハードウェアリソース４１のＩ／Ｏインターフェースに接続された入力装置から入力される信号を、仮想化部４２から受ける。また、入力部４３１は、インスタンス（パーソナルインスタンス４４及びクラウドインスタンス４５）から出力されたデータ又は信号を、仮想化部４２から受ける。
【００２７】
出力部４３２は、仮想化部４２に対しデータや信号を出力する。例えば、出力部４３２は、ハードウェアリソース４１のネットワークインターフェースから他の装置へ送信する通信データを、仮想化部４２を介してハードウェアリソース４１へ出力する。また、出力部４３２は、ハードウェアリソース４１のＩ／Ｏインターフェースに接続された出力装置に対し、仮想化部４２を介して信号を出力する。また、出力部４３２は、インスタンス（パーソナルインスタンス４４及びクラウドインスタンス４５）に対し、仮想化部４２を介してデータ又は信号を出力する。
【００２８】
仮想デバイス記憶部４３３は、仮想デバイス名テーブルを記憶する。図４は、仮想デバイス名テーブルの具体例を表す。仮想デバイス名テーブルは、各インスタンスに対して割り当てられている物理デバイス毎の仮想デバイス名を表すテーブルである。物理デバイス名は物理デバイスの名称を表す。物理デバイスは、ハードウェアリソース４１として表される個々の装置（補助記憶装置やネットワークインターフェース等）や、Ｉ／Ｏインターフェースに接続される個々の装置（マウス、キーボード、ディスプレイ等）を示す。仮想デバイス名は仮想デバイスの名前である。仮想デバイスは、物理デバイスとインスタンスとの組み合わせ毎に、仮想化部４２に設けられる。各インスタンスは、仮想デバイスを、実際の物理デバイスであるものと想定して動作する。そのため、例えば、パーソナルインスタンス４４に対し、マウスの仮想デバイスを介して信号が入力されると、パーソナルインスタンス４４は入力された信号をマウスの信号として取り扱う。また、パーソナルインスタンス４４は、ディスプレイに対し画像信号を出力しようとする際、ディスプレイの仮想デバイスに対し画像信号を出力する。
【００２９】
図３に戻ってノード管理部４３の説明を続ける。インスタンス制御部４３４は、既存のクラウドシステムにおけるノード管理部の機能を実現する。すなわち、インスタンス制御部４３４は、クラスタコントローラ３や他のノードコントローラ４のノード管理部４３と通信を行い、必要に応じてクラウドインスタンス４５を制御することによって、ノードコントローラ４におけるコンピュータリソースの提供を制御する。
【００３０】
さらに、インスタンス制御部４３４は、パーソナルインスタンス４４に対する制御も行う。具体的には、インスタンス制御部４３４は、パーソナルインスタンス４４が起動していない状態でＮＣユーザからパーソナルインスタンス４４の起動命令を受けると、パーソナルインスタンス４４を起動する。このとき、インスタンス制御部４３４は、パーソナルインスタンス４４に対応する仮想デバイスを仮想化部４２に構築させる。そして、インスタンス制御部４３４は、構築された各仮想デバイスの名称（仮想デバイス名）を、仮想デバイス記憶部４３３の仮想デバイス名テーブルに登録する。また、インスタンス制御部４３４は、パーソナルインスタンス４４の起動が完了すると、中継ドライバ４３５に対し、パーソナルインスタンス４４が起動したことを通知する。
【００３１】
一方、インスタンス制御部４３４は、パーソナルインスタンス４４が起動している状態でＮＣユーザからパーソナルインスタンス４４の終了命令を受けると、パーソナルインスタンス４４を終了させる。このとき、インスタンス制御部４３４は、パーソナルインスタンス４４に対応する仮想デバイスを、仮想化部４２において終了させる。そして、インスタンス制御部４３４は、終了した各仮想デバイスの名称（仮想デバイス名）を、仮想デバイス名テーブルから削除する。また、インスタンス制御部４３４は、パーソナルインスタンス４４が終了すると、中継ドライバ４３５に対し、パーソナルインスタンス４４が終了したことを通知する。
【００３２】
また、インスタンス制御部４３４は、ハードウェアリソース４１のネットワークインターフェースから、仮想化部４２及び入力部４３１を介して通信データを受けると、通信データの宛先となるインスタンスに対して通信データを中継する。例えば、通信データの宛先ＩＰアドレスがパーソナルインスタンス４４のＩＰアドレスである場合には、インスタンス制御部４３４は、出力部４３２及び仮想化部４２を介してパーソナルインスタンス４４にこの通信データを転送する。また、通信データの宛先ＩＰアドレスがクラウドインスタンス４５−１のＩＰアドレスである場合には、インスタンス制御部４３４は、出力部４３２及び仮想化部４２を介してクラウドインスタンス４５−１にこの通信データを転送する。また、通信データの宛先ＩＰアドレスがノード管理部４３のＩＰアドレスである場合には、インスタンス制御部４３４は、この通信データの内容に応じて動作する。
【００３３】
中継ドライバ４３５は、パーソナルインスタンス４４が起動している場合に、入力部４３１から入力される信号を出力部４３２へ中継する。より具体的には以下のとおりである。中継ドライバ４３５は、ハードウェアリソース４１のＩ／Ｏインターフェースに接続された入力装置から入力される信号（以下、「入力装置信号」という。）を、仮想化部４２及び入力部４３１を介して受ける。そして、中継ドライバ４３５は、入力装置信号を、出力部４３２を介して、パーソナルインスタンス４４の仮想デバイスに対して中継する。このとき入力装置信号の中継先となる仮想デバイスは、入力装置信号の入力元である入力装置に応じた仮想デバイスとなる。すなわち、入力装置信号の入力元がマウスである場合には、マウスに対応した仮想デバイスが中継先となる。また、入力装置信号の入力元がキーボードである場合には、キーボードに対応した仮想デバイスが中継先となる。中継ドライバ４３５は、仮想デバイス記憶部４３３に記憶されている仮想デバイス名テーブルを参照することによって、パーソナルインスタンス４４の各仮想デバイス名を特定する。そして、中継ドライバ４３５は、特定した仮想デバイス名に基づいて、入力装置信号を仮想デバイスに対して中継する。
【００３４】
また、中継ドライバ４３５は、パーソナルインスタンス４４から仮想デバイスに対して出力された信号（以下、「出力装置信号」という。）を、仮想化部４２及び入力部４３１を介して受ける。そして、中継ドライバ４３５は、出力装置信号を、出力部４３２及び仮想化部４２を介して、ハードウェアリソース４１のＩ／Ｏインターフェースのうち、対応する出力装置が接続されたＩ／Ｏインターフェースへ出力する。
【００３５】
次に、ノードコントローラ４の動作について説明する。図５は、パーソナルインスタンス４４を起動する際の動作を表すシーケンス図である。ＮＣユーザがノードコントローラ４の入力装置を操作することによってパーソナルインスタンス（ＰＩ）の起動を指示すると（ステップＳ１０１）、パーソナルインスタンスの起動指示を表す入力装置信号が仮想化部４２へ入力される（ステップＳ１０２）。仮想化部４２は、入力装置信号をノード管理部４３へ転送する（ステップＳ１０３）。ノード管理部４３は、入力装置信号を受けると、パーソナルインスタンス４４が起動していない状態であるため、インスタンス制御部４３４が入力装置信号を受け取る。そして、インスタンス制御部４３４は、入力装置信号が表すパーソナルインスタンス４４の起動指示に応じて、パーソナルインスタンス４４を起動させる（ステップＳ１０４）。このとき、インスタンス制御部４３４は、パーソナルインスタンス４４に対してＩＰアドレスを付与し、このＩＰアドレスを記憶する。また、インスタンス制御部４３４は、パーソナルインスタンス４４に必要となる仮想デバイスを仮想化部４２に構築させる。そして、インスタンス制御部４３４は、構築された各仮想デバイスの名称を、仮想デバイス名テーブルに登録する。このようなインスタンス制御部４３４の処理に応じて、パーソナルインスタンス４４が起動する（ステップＳ１０５）。
【００３６】
図６は、パーソナルインスタンス４４が起動している状態でＮＣユーザが入力装置を操作した場合の、ノードコントローラ４の動作を表すシーケンス図である。ＮＣユーザが入力装置を操作すると（ステップＳ２０１）、操作に応じた入力装置信号が仮想化部４２へ入力される（ステップＳ２０２）。仮想化部４２は、入力装置信号をノード管理部４３へ転送する（ステップＳ２０３）。ノード管理部４３は、入力装置信号を受けると、パーソナルインスタンス４４が起動している状態であるため、中継ドライバ４３５が入力装置信号を受け取る。中継ドライバ４３５は、パーソナルインスタンス４４の仮想デバイスの中から、受け取った入力装置信号の入力元の物理デバイスに対応する仮想デバイスの仮想デバイス名を特定する。このとき、中継ドライバ４３５は、仮想デバイス記憶部４３３に記憶されている仮想デバイス名テーブルを参照する。
【００３７】
次に、中継ドライバ４３５は、特定した仮想デバイス名に基づいて、パーソナルインスタンス４４の仮想デバイスに対し入力装置信号を中継する（ステップＳ２０４）。仮想デバイスに入力された入力装置信号は、パーソナルインスタンス４４に受信される（ステップＳ２０５）。そして、パーソナルインスタンス４４は、入力装置信号の内容に応じて処理を行う（ステップＳ２０６）。
【００３８】
図７は、パーソナルインスタンス４４が処理結果に応じて出力装置信号を出力した場合の、ノードコントローラ４の動作を表すシーケンス図である。パーソナルインスタンス４４が処理を行い（ステップＳ３０１）、処理結果に応じた出力装置信号を出力する（ステップＳ３０２）。このとき、パーソナルインスタンス４４は、自身に割り当てられている仮想デバイスのうち、出力装置信号に応じた仮想デバイスに対して出力装置信号を出力する。仮想デバイス（仮想化部４２）は、出力装置信号をノード管理部４３に転送する（ステップＳ３０３）。
【００３９】
ノード管理部４３は、出力装置信号を受けると、パーソナルインスタンス４４が起動している状態であるため、中継ドライバ４３５が出力装置信号を受け取る。中継ドライバ４３５は、受け取った出力装置信号を仮想化部４２へ中継する（ステップＳ３０４）。仮想化部４２は、出力装置信号を、対応する出力装置が接続されているＩ／Ｏインターフェースに対して送信する（ステップＳ３０５）。出力装置は、受け取った出力装置信号に応じて出力処理を行う（ステップＳ３０６）。例えば、出力装置が画像表示装置である場合は、出力装置は受け取った出力装置信号に応じた画面を表示する。また、例えば出力装置がプリンタ装置である場合は、出力装置は受け取った出力装置信号に応じた印刷を行う。ＮＣユーザは、出力装置によって出力された内容（出力内容）を確認することができる（ステップＳ３０７）。
【００４０】
図８は、リソース提供システム１００において、クラウドインスタンス４５が起動される際の動作を表すシーケンス図である。まず、ユーザ端末１がリソース提供要求をクラウドコントローラ２に対して送信する（ステップＳ４０１）。クラウドコントローラ２は、リソース提供要求を受けると、クラスタコントローラ３に対し余剰リソースの確認を行う（ステップＳ４０２）。クラスタコントローラ３は、余剰リソースの確認の要求を受けると、自身が管轄するクラスタに所属する各ノードコントローラ４に対し、余剰リソースの確認を行う（ステップＳ４０３）。各ノードコントローラ４のノード管理部４３は、自装置における余剰リソース量を確認する。そして、各ノードコントローラ４のノード管理部４３は、確認結果を余剰リソース量応答としてクラスタコントローラ３に送信する（ステップＳ４０４）。クラスタコントローラ３は、各ノードコントローラ４から受信した余剰リソース量応答を、クラウドコントローラ２に対し送信する（ステップＳ４０５）。
【００４１】
クラウドコントローラ２は、各クラスタコントローラ３から受信した余剰リソース量に基づいて、クラウドインスタンス４５を起動させるノードコントローラ４を決定する。そして、クラウドコントローラ２は、決定したノードコントローラ４を制御するクラスタコントローラ３に対し、クラウドインスタンス４５の起動を要求する（ステップＳ４０６）。クラスタコントローラ３は、クラウドインスタンス４５の起動の要求を受けると、クラウドコントローラ２によって指定されたノードコントローラ４に対し、クラウドインスタンス４５の起動を要求する（ステップＳ４０７）。
【００４２】
ノードコントローラ４のインスタンス制御部４３４は、クラウドインスタンス４５の起動の要求を受けると、クラウドコントローラ２に対しインスタンスイメージを要求する（ステップＳ４０８）。クラウドコントローラ２は、要求されたインスタンスイメージをノードコントローラ４に対して送信する（ステップＳ４０９）。ノードコントローラのインスタンス制御部４３４は、インスタンスイメージを受信すると、このインスタンスイメージにしたがってクラウドインスタンス４５を起動する（ステップＳ４１０）。以降は、クラスタコントローラ３が、ユーザ端末１とノードコントローラ４のクラウドインスタンス４５との間の通信を中継する（ステップＳ４１１）。
【００４３】
このように構成されたリソース提供システム１００では、ノードコントローラ４において、ユーザ端末１に対してリソース提供を行うために起動されるクラウドインスタンス４５の他に、ＮＣユーザに対するパーソナルインスタンス４４が起動される。そして、ＮＣユーザは、ノードコントローラ４に接続された入力装置や出力装置を用いて、ノードコントローラ４を自身の端末装置として使用することが可能となる。すなわち、ノードコントローラ４には、インスタンス（クラウドインスタンス４５）を起動させてユーザ端末１にコンピュータリソースを提供する以外に、ＮＣユーザに対しユーザ端末として機能する、という新たな用途を与えることが可能となる。
【００４４】
また、リソース提供システムを新たに構築する際には、従来はインスタンスを起動するためのノードコントローラが必要となる。そのため、ノードコントローラを設置するためのスペースを確保しておく必要がある。さらに、ノードコントローラの他にも、ユーザ端末を設置するためのスペースも必要である。このように、従来は、リソース提供システムを構築するためには、多くのコンピュータ装置が必要となり、そのための費用やスペース等が必要となっていた。これに対し、上記のように構成されたリソース提供システム１００では、ＮＣユーザがノードコントローラ４でパーソナルインスタンス４４を起動させることによって、ノードコントローラ４をユーザ端末１として用いることが可能となる。すなわち、図１において図示されているユーザ端末１とノードコントローラ４とを同一の装置によって実現させることが可能となる。この場合、ノードコントローラ４とユーザ端末１とが同一の装置上で機能するため、リソース提供システムに用いられるコンピュータマシンの台数を削減することが可能となる。例えば、従来のリソース提供システムを構築する際に、クラウドコントローラを１台、クラスタコントローラを３台、ノードコントローラを２０台、ユーザ端末を１００台、合計１２４台必要であったとする。これと同様のリソース提供システムを構築する際に、上記ノードコントローラ４を用いることによって、ユーザ端末１００台のうち２０台分でノードコントローラ２０台分の機能を実現させることが可能となる。この場合、合計１０４台で同様のリソース提供システム１００を構築することが可能となる。したがって、必要となる費用やスペースを削減することが可能となる。
【００４５】
＜変形例＞
上記のリソース提供システム１００では、ノードコントローラ４が起動していてもパーソナルインスタンス４４が起動されていない場合があった。すなわち、ノードコントローラ４に電源を投入して起動した場合には、ハードウェアリソース４１上で仮想化部４２及びノード管理部４３が起動していた。そして、パーソナルインスタンス４４は、ＮＣユーザによって起動指示を入力するまでは起動していなかった。これに対し、ノードコントローラ４は、電源が投入されて起動した際に、自動的にパーソナルインスタンス４４を起動するように構成されても良い。図９は、このように構成された変形例のノードコントローラ４の動作を表すシーケンス図である。ＮＣユーザがノードコントローラ４の電源ボタンを操作し電源オン操作を行うと（ステップＳ５０１）、この操作に応じてノードコントローラ４の仮想化部４２及びノード管理部４３が起動する（ステップＳ５０２、Ｓ５０３）。ノード管理部４３は、自身が起動すると、ＮＣユーザの操作にかかわらず自動的にパーソナルインスタンス４４を起動させる（ステップＳ５０４）。そして、パーソナルインスタンス４４が起動する（ステップＳ５０５）。このように構成されることによって、ＮＣユーザは、ノードコントローラ４を、ノードコントローラ機能を有する装置であることを意識することなく、一般的なパーソナルコンピュータを操作する意識で、自身のユーザ端末１として使用することが可能となる。
【００４６】
ノードコントローラ４のノード管理部４３は、自装置の電源が落とされる際に、ライブマイグレーションを実行するように構成されても良い。具体的には以下のような構成となる。ノード管理部４３は、自装置に対して電源オフの指示が出されると、その時点で動作しているクラウドインスタンス４５の有無を確認する。動作しているクラウドインスタンス４５が無い場合には、ノード管理部４３はライブマイグレーションを行うことなく、自装置の電源をオフにする。一方、動作しているクラウドインスタンス４５が有る場合には、ノード管理部４３はライブマイグレーションを行うことによって、動作しているクラウドインスタンス４５を他のノードコントローラ４において動作させる。そして、ノード管理部４３は、動作中の全てのクラウドインスタンス４５を他のノードコントローラ４に移動させ終わると、自装置の電源をオフにする。
【００４７】
上記のリソース提供システム１００では、パーソナルインスタンス４４及び各クラウドインスタンス４５に入力されるデータや信号がノード管理部４３を経由する。また、パーソナルインスタンス４４及び各クラウドインスタンス４５から出力されるデータや信号もノード管理部４３を経由する。これに対し、リソース提供システム１００は、各クラウドインスタンス４５に入力されるデータと、各クラウドインスタンス４５から出力されるデータとがノード管理部４３を経由しないように構成されても良い。この場合、具体的には以下のようにリソース提供システム１００が構成される。
【００４８】
図１０は、上記のように構成された変形例の仮想化部４２が記憶するテーブルの具体例を表す図である。変形例の仮想化部４２が記憶するテーブルは、物理デバイス名、仮想デバイス名、対応するインスタンス、インスタンスのＭＡＣアドレス、をそれぞれ対応付けて有する。物理デバイスのＮＩＣは、ハードウェアリソース４１に含まれる物理的な装置のうち、ネットワークインターフェースカードを表す。物理デバイスのＮＩＣに対応する仮想デバイスは、クラウドインスタンス４５毎に生成され、図１０のように仮想化部４２のテーブルに登録される。また、仮想化部４２のテーブルには、ＮＩＣの仮想デバイス毎に、各クラウドインスタンス４５に割り当てられているＭＡＣアドレスも対応付けて登録される。仮想化部４２は、ノード管理部４３から通知を受けることによって、仮想デバイス名やＭＡＣアドレスの値をテーブルに登録する。
【００４９】
仮想化部４２は、物理デバイスのＮＩＣにおいて通信データが受信されると、通信データの宛先がテーブルに登録されているＭＡＣアドレスであるか否かに応じて処理を行う。仮想化部４２は、通信データの宛先がテーブルに登録されていない場合には、その通信データをノード管理部４３に中継する。一方、通信データの宛先がテーブルに登録されている場合には、仮想化部４２は、ＮＩＣの仮想デバイスのうち通信データの宛先に対応するクラウドインスタンス４５の仮想デバイスに通信データを中継する。例えば、通信データの宛先ＭＡＣアドレスが“ＭＡＣ  Ａ”である場合には、仮想化部４２は、テーブルにおいてＭＡＣアドレス“ＭＡＣ  Ａ”及び物理デバイス名“ＮＩＣ”に対応付けて記憶される仮想デバイス名“ｎｉｃ１０４ｙ”に対して通信データを中継する。クラウドインスタンス４５−１は、仮想デバイス“ｎｉｃ１０４ｙ”に入力された通信データを受信し、この通信データの内容に応じて動作する。また、仮想化部４２は、クラウドインスタンス４５からＮＩＣの仮想デバイスに対して通信データを受けると、この通信データを物理デバイスＮＩＣに対して中継する。この中継により、各クラウドインスタンス４５から仮想デバイスに対して出力された通信データが、ハードウェアリソース４１のＮＩＣに受信される。ＮＩＣは、仮想化部４２によって中継された通信データを、ネットワークに対して送出する。このように構成されることによって、ノード管理部４３を経由するデータ量を削減させることが可能となる。これに伴って、ノード管理部４３の負荷を軽減させることが可能となる。
【００５０】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【００５１】
１…ユーザ端末，  ２…クラウドコントローラ，  ３…クラスタコントローラ，  ４…ノードコントローラ，  ４１…ハードウェアリソース，  ４２…仮想化部，  ４３…ノード管理部，  ４４…パーソナルインスタンス，  ４５…クラウドインスタンス，  ４３１…入力部，  ４３２…出力部，  ４３３…仮想デバイス記憶部，  ４３４…インスタンス制御部，  ４３５…中継ドライバ，  １００…リソース提供システム
【図１】
0005577164.tif 000002
【図２】
0005577164.tif 000003
【図３】
0005577164.tif 000004
【図４】
0005577164.tif 000005
【図５】
0005577164.tif 000006
【図６】
0005577164.tif 000007
【図７】
0005577164.tif 000008
【図８】
0005577164.tif 000009
【図９】
0005577164.tif 000010
【図１０】
0005577164.tif 000011