(57)【特許請求の範囲】
【請求項１】
外部機器が接続された端末装置と、
複数の仮想計算機として動作し、該仮想計算機の何れかを前記端末装置に割り当てて、該端末装置に割り当てられた仮想計算機と前記端末装置との間でデータ通信を行うサーバ装置と
を備えており、
前記サーバ装置は、
前記端末装置に割り当てられた仮想計算機上で所定のアプリケーションが動作しているか否かを判定する判定手段と、
該判定手段が動作していると判定した場合、前記アプリケーションの動作状態に関するアプリケーション情報を記憶する手段と、
アプリケーション情報を記憶した場合、前記アプリケーションを終了させる手段と、
前記アプリケーションが終了した場合、記憶したアプリケーション情報と共に、前記仮想計算機の動作状態に関する仮想計算機情報を前記端末装置へ送信する手段と
を有し、
前記端末装置は、
前記サーバ装置から送信された仮想計算機情報に基づいて、仮想計算機を動作させる手段と、
動作させた仮想計算機に、前記外部機器を割り当てる手段と、
動作させた仮想計算機上で、前記サーバ装置から送信されたアプリケーション情報に基づいて、アプリケーションを起動させる手段と
を有する
計算機システム。
【請求項２】
自装置を複数の仮想計算機として動作させる手段と、
動作している仮想計算機の何れかを外部装置に割り当てる割当手段と、
外部装置が割り当てられた仮想計算機上で所定のアプリケーションが動作しているか否かを判定する判定手段と、
該判定手段が動作していると判定した場合、前記アプリケーションの動作状態に関するアプリケーション情報を記憶する手段と、
アプリケーション情報を記憶した場合、前記アプリケーションを終了させる手段と、
前記アプリケーションが終了した場合、記憶したアプリケーション情報と共に、前記仮想計算機の動作状態に関する仮想計算機情報を前記外部装置へ送信する送信手段と
を備える情報処理装置。
【請求項３】
前記外部装置から仮想計算機情報の送信の要求を受信する受信手段
をさらに有し、
前記送信手段は、
前記受信手段が要求を受信した場合に、仮想計算機情報を送信するようにしてある
請求項２に記載の情報処理装置。
【請求項４】
前記判定手段が、所定のアプリケーションが動作していると判定した場合、前記外部装置に判定結果を通知する手段
をさらに備え、
前記受信手段は、
通知した判定結果に基づく前記要求を受信するようにしてある
請求項３に記載の情報処理装置。
【請求項５】
前記送信手段が送信した仮想計算機情報に基づいて前記外部装置で動作する仮想計算機の動作状態に関する情報を受信する手段と、
受信した情報に基づいて、仮想計算機を動作させる手段と
をさらに備える請求項２から４の何れか一つに記載の情報処理装置。
【請求項６】
複数の仮想計算機として動作する外部装置に接続して、前記仮想計算機の何れかが割り当てられた情報処理装置において、
割り当てられた仮想計算機の動作状態に関する仮想計算機情報、及び該仮想計算機上で動作するアプリケーションの動作状態に関するアプリケーション情報を、前記外部装置から受信する手段と、
受信した仮想計算機情報に基づいて、仮想計算機を動作させる手段と、
動作させた仮想計算機に、自装置に接続された外部機器を割り当てる手段と、
動作させた仮想計算機上で、受信したアプリケーション情報に基づいて、アプリケーションを起動させる手段と、
前記仮想計算機を前記外部装置へ移動するか否かを判定する移動判定手段と、
移動すると判定した場合、前記仮想計算機への物理デバイスの割り当てを解放する手段と、
移動すると判定した場合、前記仮想計算機の動作状態に関する情報を前記外部装置へ送信する手段と
を備え、
前記移動判定手段は、前記仮想計算機上で起動させたアプリケーションが終了した場合に、移動すると判定する情報処理装置。
【請求項７】
サーバ装置で動作し、外部機器が接続された端末装置に割り当てられた仮想計算機の動作状態に関する仮想計算機情報を、前記端末装置へ送信して動作させる仮想計算機運用方法において、
前記サーバ装置で動作する仮想計算機上で所定のアプリケーションが動作しているか否かを判定し、
動作していると判定した場合、前記アプリケーションの動作状態に関するアプリケーション情報を記憶し、
アプリケーション情報を記憶した場合、前記アプリケーションを終了させ、
前記アプリケーションが終了した場合、記憶したアプリケーション情報と共に、前記仮想計算機の動作状態に関する仮想計算機情報を前記端末装置へ送信し、
送信された仮想計算機情報に基づいて、前記端末装置で仮想計算機を動作させ、
動作させた仮想計算機に、前記外部機器を割り当て、
動作させた仮想計算機上で、送信されたアプリケーション情報に基づいて、アプリケーションを起動させる
仮想計算機運用方法。
【請求項８】
複数の仮想計算機として動作し、動作している仮想計算機の何れかを外部装置に割り当てるコンピュータで実行されるプログラムにおいて、
コンピュータを、
外部装置が割り当てられた仮想計算機上で所定のアプリケーションが動作しているか否かを判定する判定手段、
該判定手段が動作していると判定した場合、前記アプリケーションの動作状態に関する情報を記憶する手段、
前記情報を記憶した場合、前記アプリケーションを終了させる手段、及び、
前記アプリケーションが終了した場合、記憶した前記情報と共に、前記仮想計算機の動作状態に関する情報を前記外部装置へ送信する手段
として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバ装置で動作する仮想計算機を、対応する端末装置に移動させる計算機システム、情報処理装置、仮想計算機運用方法及びプログラムに関する。
【背景技術】
【０００２】
１台のサーバ装置上で複数の仮想的なコンピュータ（以下、仮想マシン（ＶＭ：Virtual Machine）と言う）を動作させ、ネットワークを介してサーバ装置に接続される複数の端末装置それぞれに仮想マシンを割り当てるシステムがある。このシステムでは、サーバ装置で動作する各仮想マシン上でOperating System（ＯＳ）が稼働しており、各端末装置のユーザは、自身の端末装置から、割り当てられた仮想マシンのＯＳを利用することができる。すなわち、サーバ装置は、各端末装置のデスクトップコンピュータとして利用される。
【０００３】
上述のシステムにおいて、例えばDigital Versatile Disc（ＤＶＤ）を用いて映像を再生する場合、各端末装置に搭載又は接続されているＤＶＤドライブが用いられることがある。この場合、仮想マシンは、例えばRemote Desktop Protocol（ＲＤＰ）等を用いて、ネットワークを介して端末装置のＤＶＤドライブへアクセスする。そして、仮想マシンは、アクセスしたＤＶＤドライブが読み取ったデータを随時受信して再生し、端末装置のモニタで表示させる。このように、ネットワークを介して映像を再生する場合、仮想マシンと端末装置との間で送受信される情報量が大きいため、仮想マシンの処理負荷、又はネットワーク負荷が大きくなり、その結果、端末装置のモニタで表示される映像の品質が低下する問題があった。
【０００４】
ところで、仮想マシンに障害が発生した場合、稼動中の仮想マシンを一時停止させ、一時停止させた仮想マシンの状態を他の計算機（端末装置）に転送し、他の計算機において転送された仮想マシンの状態を構築する仮想マシンの制御方法がある（特許文献１参照）。この制御方法を利用することで、上述したシステムで映像を再生する場合、サーバ装置で動作する仮想マシンを端末装置へ移動させ、サーバ装置の仮想マシンで実行される処理を端末装置で実行させることが可能となる。この場合、ネットワークを介することなく映像を再生するため、高品質の映像を再生することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−０７２５９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１のように、仮想マシンをサーバ装置から端末装置へ移動させた後にＤＶＤの映像を再生する場合、ユーザは仮想マシンの移動が完了するまで待たなければならないといった問題が発生する。また、仮想マシンをサーバ装置から端末装置へ移動させる間にも映像の再生は可能だが、仮想マシン上で実行される映像再生アプリケーションが、RDPサーバにより提供される、端末装置のRemote Desktop Protocol（ＲＤＰ）クライアントが掴んだデバイスへネットワーク経由でアクセスする機能を利用する。そのため、仮想マシンを端末装置へ移動後、端末装置に接続されたデバイスをそのまま移動後の仮想マシンに割り当てて、制御することができない。
【０００７】
本発明はかかる事情に鑑みてなされたものであり、その目的とするところは、仮想計算機を移動させる間もアプリケーションによる映像再生を品質低下無しに行い、かつ、処理速度を低下させずにアプリケーションを仮想計算機上で実行させる計算機システム、情報処理装置、仮想計算機運用方法及びプログラムを提供することにある。
【課題を解決するための手段】
【０００８】
本願に開示する計算機システムは、外部機器が接続された端末装置と、複数の仮想計算機として動作し、該仮想計算機の何れかを前記端末装置に割り当てて、該端末装置に割り当てられた仮想計算機と前記端末装置との間でデータ通信を行うサーバ装置とを備えており、前記サーバ装置は、前記端末装置に割り当てられた仮想計算機上で所定のアプリケーションが動作しているか否かを判定する判定手段と、該判定手段が動作していると判定した場合、前記アプリケーションの動作状態に関するアプリケーション情報を記憶する手段と、アプリケーション情報を記憶した場合、前記アプリケーションを終了させる手段と、前記アプリケーションが終了した場合、記憶したアプリケーション情報と共に、前記仮想計算機の動作状態に関する仮想計算機情報を前記端末装置へ送信する手段とを有し、前記端末装置は、前記サーバ装置から送信された仮想計算機情報に基づいて、仮想計算機を動作させる手段と、動作させた仮想計算機に、前記外部機器を割り当てる手段と、動作させた仮想計算機上で、前記サーバ装置から送信されたアプリケーション情報に基づいて、アプリケーションを起動させる手段とを有する。
【発明の効果】
【０００９】
本願に開示する計算機システムの一観点によれば、サーバ装置で動作する仮想計算機を、仮想計算機が割り当てられた端末装置へ移動させることにより、端末装置で仮想計算機及びアプリケーションを動作させることができる。アプリケーションが、例えば容量の大きいデータを扱う場合、ネットワークを介さないため、ネットワーク負荷を低減できる。その結果、処理速度を低下させずにアプリケーションを端末装置の仮想計算機上で実行させることができる。また、本願に開示する計算機システムの一観点によれば、アプリケーションの実行後に仮想計算機の移動を行うため、例えばユーザがアプリケーションにより映像を再生した場合、ユーザは、仮想計算機の移動完了を待たずしてアプリケーションにより映像を再生し始めることができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態に係る計算機システムを模式的に示す図である。
【図２Ａ】サーバ装置のＶＭが移動するタイミングを説明するための模式図である。
【図２Ｂ】サーバ装置のＶＭが移動するタイミングを説明するための模式図である。
【図２Ｃ】サーバ装置のＶＭが移動するタイミングを説明するための模式図である。
【図３】計算機システムのハードウェア構成を示すブロック図である。
【図４】サーバ装置が有する機能を示すブロック図である。
【図５】端末装置が有する機能を示すブロック図である。
【図６】ＶＭ接続及び切断処理の手順を示すフローチャートである。
【図７】サーバ装置から端末装置へのＶＭ移動処理の手順を示すフローチャートである。
【図８】サーバ装置から端末装置へのＶＭ移動処理の手順を示すフローチャートである。
【図９】端末装置からサーバ装置へのＶＭ移動処理の手順を示すフローチャートである。
【図１０】サーバ装置が有する機能を示すブロック図である。
【図１１】ＶＭの移動を決定させる確認画面の模式図である。
【図１２】サーバ装置から端末装置へのＶＭ移動処理の手順を示すフローチャートである。
【図１３】サーバ装置から端末装置へのＶＭ移動処理の手順を示すフローチャートである。
【図１４】サーバ装置が有する機能を示すブロック図である。
【図１５】サーバ装置から端末装置へのＶＭ移動処理の手順を示すフローチャートである。
【図１６】サーバ装置から端末装置へのＶＭ移動処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下に、本願に開示する計算機システム、情報処理装置、仮想計算機運用方法及びプログラムについて、各実施の形態を示す図面に基づいて詳述する。
【００１２】
（実施形態１）
図１は、本実施の形態に係る計算機システムを模式的に示す図である。
【００１３】
本実施の形態に係る計算機システムは、サーバ装置（情報処理装置）１と端末装置（情報処理装置）２とを備えている。サーバ装置１と端末装置２とは、Local Area Network（ＬＡＮ）又はWide Area Network（ＷＡＮ）等のネットワークを介して接続している。図１に示す計算機システムは、端末装置２を一つのみ備えているが、サーバ装置１に接続する端末装置２の数は適宜変更可能である。また、サーバ装置１と端末装置２との接続方式等は適宜変更可能であり、各装置は有線又は無線の何れで接続されていてもよい。
【００１４】
サーバ装置１は、仮想化プログラムとしてのVirtual Machine Monitor（ＶＭＭ）１０が実行され、ＶＭＭ１０上では複数（図中では２つ）のＶＭ１１が動作する。ＶＭＭ１０は、例えばCentral Processing Unit（ＣＰＵ）及びRead Only Memory（ＲＯＭ）等、サーバ装置１のリソースをＶＭ１１それぞれに割り当てて、各ＶＭ１１がリソースの利用を可能にする。ＶＭ１１は、独自にＯＳ及びアプリケーションを物理コンピュータと同じように実行させる仮想的なコンピュータであり、各ＶＭ１１には、サーバ装置１に接続される端末装置２が割り当てられる。各ＶＭ１１は、割り当てられた端末装置２から、ネットワークを介して操作される。なおサーバ装置１は、キーボード及びモニタなどを備えたパーソナルコンピュータであってもよい。
【００１５】
端末装置２は、モニタ、キーボード及びマウスの入出力装置、並びに、ＤＶＤ３等の記録媒体が挿入可能なリムーバブルディスク装置（以下、ディスク装置と言う）を備えたコンピュータであり、ネットワークを介してサーバ装置１とデータ通信する。端末装置２は、サーバ装置１で動作するＶＭ１１が割り当てられ、その割り当てられたＶＭ１１をネットワーク経由で操作可能となる。例えば、端末装置２は、キーボード及びマウスから入力された操作を割り当てられたＶＭ１１へ送信し、そのＶＭ１１から処理結果を受信してモニタに表示する。
【００１６】
より具体的には、端末装置２は、サーバ装置１と同様にＶＭＭ２０が実行され、ＶＭＭ２０上ではＶＭ２１が動作する。以下では、端末装置２のＶＭＭ及びＶＭを端末ＶＭＭ２０及び端末ＶＭ２１と言う。端末ＶＭＭ２０は、端末装置２のリソース及び物理デバイスを端末ＶＭ２１へ割り当てて、端末ＶＭ２１がリソース及び物理デバイス（外部機器）の利用を可能とする。端末装置２の物理デバイスとは、入出力装置及びディスク装置等である。端末ＶＭ２１は、独自にＯＳ及びアプリケーションを物理コンピュータと同じように実行させる仮想的なコンピュータであり、端末ＶＭ２１は、サーバ装置１で動作するＶＭ１１が割り当てられる。端末装置２は、その割り当てられたＶＭ１１を端末ＶＭ２１からネットワーク経由で操作可能となる。
【００１７】
なお端末装置２は、モニタに接続するセットトップボックス（ＳＴＢ：Set Top Box）、Personal Digital Assistant（ＰＤＡ）、又は携帯電話機等であってもよい。また、本実施の形態に係る端末装置２は、入力装置及びディスク装置を備える構成としているが、入力装置等が着脱可能に端末装置２に接続される構成であってもよい。
【００１８】
本実施の形態に係る計算機システムでは、サーバ装置１で動作するＶＭ１１は、ＶＭ１１上で特定のアプリケーションが実行された場合に端末装置２へ移動され、端末装置２の端末ＶＭＭ２０上で動作するようになっている。以下の説明では、サーバ装置１から移動され、端末装置２の端末ＶＭＭ２０上で動作するＶＭを移動ＶＭ２３と言う。
【００１９】
図２は、サーバ装置１のＶＭ１１が移動するタイミングを説明するための模式図である。図２は、端末装置２のモニタに表示される画面を示しており、画面は、時間の経過に従って図２Ａ、図２Ｂ及び図２Ｃの順となる。
【００２０】
例えば、端末装置２でディスク装置にＤＶＤ３が挿入された場合、ＤＶＤ３に記録されたコンテンツ（以下、映像とする）はサーバ装置１のＶＭ１１へ送信される。ＶＭ１１上では、映像を再生させるためのアプリケーション（以下、映像アプリと言う）が実行され、映像アプリによって端末装置２から送信された映像が再生される。再生された映像は、端末装置２の端末ＶＭ２１へ送信され、端末装置２のモニタに表示される（図２Ａ参照）。この場合、端末装置２のモニタに表示される映像はネットワークを介して、サーバ装置１との間で送受信されるため、ネットワーク負荷等の原因により、映像に乱れなどが発生する。
【００２１】
次に、ＶＭ１１上で動作する映像アプリは一時的に終了され（図２Ｂ参照）、サーバ装置１で動作するＶＭ１１が端末装置２へ移動される。移動後、端末ＶＭ２１および移動ＶＭ２３との間でデバイスの切り替えを行った後、端末装置２で動作する移動ＶＭ２３上で映像アプリが復元され、その映像アプリによって映像の再生が継続され、端末装置２のモニタに表示される（図２Ｃ参照）。この場合、モニタに表示される映像はネットワークを介することがなく、さらに端末装置２に接続された入出力装置およびディスク装置等を直接制御することができるため、高品質の映像をモニタに表示させることができる。映像が終了し、映像アプリが終了した場合には、移動ＶＭ２３は、端末装置２からサーバ装置１へ移動される。
【００２２】
このように、本実施の形態に係る計算機システムは、ＤＶＤ３に記録された映像を再生する場合、サーバ装置１から端末装置２へ移動させ、端末装置２に接続された入出力装置およびディスク装置等を直接制御して移動ＶＭ２３上で映像再生を行うことで、映像の乱れを防止することができる。また、映像再生開始時には、ＶＭ１１を移動させることなく、サーバ装置１のＶＭ１１上で映像アプリを起動し、映像を再生するため、ＶＭ１１の端末装置２への移動を行ってから映像を再生する場合との対比において、端末装置２のモニタに映像を表示させるまでにかかる時間を短縮することができる。
【００２３】
図３は、計算機システムのハードウェア構成を示すブロック図である。
【００２４】
サーバ装置１は、ＣＰＵ３０、ＲＯＭ３１、Random Access Memory（ＲＡＭ）３２、大容量記憶装置３３、及びネットワークに接続するための通信部３４等のハードウェア各部を備える。これらのハードウェア各部はバスを介して相互に接続されている。
【００２５】
ＣＰＵ３０は、ＲＯＭ３１又は大容量記憶装置３３等に予め格納されている制御プログラムを適宜ＲＡＭ３２に読み出して実行すると共に、上述したハードウェア各部の動作を制御する。ＲＯＭ３１は、サーバ装置１を本願に開示するサーバ装置として動作させるために必要な制御プログラム３１ａを予め格納している。なお、制御プログラム３１ａは、ＣＤ−ＲＯＭ４ａ等の外部メディアより大容量記憶装置３３にインストールして、又はネットワークからダウンロードして使用する形態でもよい。
【００２６】
ＲＡＭ３２は、例えばStatic ＲＡＭ（ＳＲＡＭ）、Dynamic ＲＡＭ（ＤＲＡＭ）、フラッシュメモリ等である。ＲＡＭ３２は、ＣＰＵ３０による制御プログラムの実行時に発生する種々のデータを一時的に記憶する。大容量記憶装置３３は、例えばハードディスクドライブ（以下、ＨＤＤと言う）である。大容量記憶装置３３は、Virtual Machine Monitor（ＶＭＭ）プログラム、管理ＯＳプログラム、ゲストＯＳプログラム、アプリケーションプログラム、及び各種のデータ等を格納している。各プログラムは、ＣＰＵ３０が読み出して実行する制御プログラムであって、ＣＰＵ３０によりＲＡＭ３２に読み出しされて実行される。なお各プログラムは、ＲＯＭ３１に格納されていてもよい。
【００２７】
ＶＭＭプログラムは、サーバ装置１でＶＭ１１の動作を可能にする仮想化技術を実現するためのソフトウェアプログラムである。ＶＭＭプログラムは、サーバ装置１の起動後にＣＰＵ３０がＶＭＭプログラムを実行することによりＶＭＭ１０としての動作を開始する。ＣＰＵ３０がＶＭＭプログラムをＶＭＭ１０として動作させることにより、サーバ装置１には、複数のＶＭ１１が独立して動作可能な仮想環境が提供される。
【００２８】
管理ＯＳプログラムは、ＶＭＭ１０上でＶＭ１１を起動及び停止、及びＶＭ１１に対してＣＰＵ３０等のリソースを割り当てて、また割り当てをＶＭＭ１０に要求するためのソフトウェアプログラムである。管理ＯＳプログラムは、サーバ装置１の起動後にＣＰＵ３０が管理ＯＳプログラムを実行することにより管理ＯＳとしての動作を開始する。
【００２９】
ゲストＯＳプログラムは、ＶＭ１１上でＯＳを実行させるソフトウェアプログラムである。ゲストＯＳプログラムは、ＶＭ１１が起動した後、ＣＰＵ３０がゲストＯＳプログラムを実行することによりＯＳ（以下、ゲストＯＳと言う）としての動作を開始する。ゲストＯＳは、例えばWindows（登録商標）又はLinux（登録商標）等である。ゲストＯＳは、実行した処理に応じて表示すべきCharacter User Interface（ＣＵＩ）、Graphic User Interface（ＧＵＩ）等を含む表示画面を生成し、生成した表示画面は、端末装置２に送られ、端末装置２のモニタに表示される。また、ゲストＯＳは、端末装置２のキーボード及びマウスからの制御信号を受け付ける。そして、ゲストＯＳは、受け付けた制御信号に応じて各種処理を実行する実行手段として機能する。
【００３０】
アプリケーションプログラムは、ゲストＯＳのそれぞれによって実行されるアプリケーション（例えば、映像アプリ）のソフトウェアプログラムである。サーバ装置１は、アプリケーションプログラムが記録された外部メモリからアプリケーションプログラムを読み取って大容量記憶装置３３に格納してもよい。また、サーバ装置１は、ネットワークを介してアプリケーションプログラムをダウンロードして大容量記憶装置３３に格納させてもよい。
【００３１】
端末装置２は、ＣＰＵ４０、ＲＯＭ４１、ＲＡＭ４２、ＨＤＤ４３、入出力部４４、及びネットワークに接続するための通信部４５等のハードウェア各部を備える。これらのハードウェア各部はバスを介して相互に接続されている。
【００３２】
ＣＰＵ４０は、ＲＯＭ４１又はＨＤＤ４３等に予め格納されている制御プログラムを適宜ＲＡＭ４２に読み出して実行すると共に、上述したハードウェア各部の動作を制御する。ＲＯＭ４１は、端末装置２を本願に開示する端末装置として動作させるために必要な制御プログラム４１ａ、及び各種データ等を予め格納している。なお、制御プログラム４１ａは、ＣＤ−ＲＯＭ４ｂ等の外部メディアよりＨＤＤ４３にインストールして、又はネットワークからダウンロードして使用する形態でもよい。
【００３３】
ＲＡＭ４２は、例えばＳＲＡＭ、ＤＲＡＭ、フラッシュメモリ等であり、ＣＰＵ４０による制御プログラムの実行時に発生する種々のデータを一時的に記憶する。ＨＤＤ４３には、サーバ装置１と同様に、ＶＭＭプログラム、管理ＯＳプログラム、ゲストＯＳプログラム、アプリケーションプログラム、及び各種のデータ等を格納している。
【００３４】
入出力部４４は、キーボード、マウス及びモニタ等の入出力装置４４ａと、ディスク装置４４ｂとが接続されている。入出力部４４は、例えばUniversal Serial Bus（ＵＳＢ）ポート及びモニタ接続ポートを有している。そして、入出力部４４は、ＵＳＢケーブル及びモニタ接続用ケーブルを介して接続された入出力装置４４ａ及びディスク装置４４ｂとの間でデータの送受信を行なう。ディスク装置４４ｂには、ＤＶＤ３が挿入又は取り外し可能にされている。入出力部４４は、ディスク装置４４ｂにＤＶＤ３が挿入された場合、ＣＰＵ４０に通知するようにしてある。
【００３５】
以下に、計算機システムのサーバ装置１及び端末装置２で実現される機能について説明する。
【００３６】
図４は、サーバ装置１が有する機能を示すブロック図である。
【００３７】
ＣＰＵ３０が各プログラムを実行することにより、サーバ装置１では、ＶＭＭ１０が動作し、ＶＭＭ１０上ではＶＭ１１と管理ＯＳ１２とが動作する。管理ＯＳ１２は、ＶＭＭ１０により、起動したＶＭ１１にサーバ装置１のリソース（ＣＰＵ３０及びＲＯＭ３１等）を割り当てる。リソースが割り当てられた後、ＶＭ１１上ではゲストＯＳの動作が開始される。なお図４では、ＶＭ１１は一つのみ示しているが、ＶＭ１１は、一つ以上起動してもよい。
【００３８】
ＶＭＭ１０は、管理ＯＳ１２からの要求を受け取ることで、サーバ装置１のリソースをＶＭ１１へ割り当て、及び割り当ての解除を行う。リソースを割り当てられたＶＭ１１は、リソースへのアクセスが可能となる。
【００３９】
管理ＯＳ１２は、ＶＭ１１の起動及び停止を行い、ＶＭＭ１０にサーバ装置１のリソースのＶＭ１１への割り当てを要求する。この管理ＯＳ１２は、ＶＭ移動部１２１及び移動完了検出部１２２等の機能を有する。ＶＭ移動部１２１は、ＶＭ１１で特定のアプリケーションが実行された場合に、端末装置２へのＶＭ１１の移動を実行する。具体的にはＶＭ移動部１２１は、ＶＭ１１が利用するＣＰＵ３０等の実行状態を端末装置２へ送信する。移動完了検出部１２２は、ＶＭ移動部１２１によるＶＭ１１の移動が完了したことを検出する。
【００４０】
本実施の形態では、ＶＭ移動部１２１は、ライブマイグレーションを用いてＶＭ１１の移動を行う。ライブマイグレーションでは、第１移動処理と第２移動処理との２段階に分けて、ＶＭ１１の移動が行われる。第１移動処理では、ＶＭ移動部１２１は、サーバ装置１で稼動中のＶＭ１１が利用するメモリ（ＲＡＭ３２等）内容を端末装置２へコピーする。メモリ内容はコピー中にも変更されるため、ＶＭ移動部１２１は、変更されたメモリ内容を再度移動先の端末装置２へコピーする。そして、ＶＭ移動部１２１は、メモリ内容の容量が閾値以下となるまで端末装置２へコピーを繰り返す。
【００４１】
第１移動処理が終了し、第２移動処理が開始された場合、ＶＭ移動部１２１は、ＶＭ１１を一時停止させて、サーバ装置１から移動先の端末装置２へ残ったメモリ内容をコピーする。さらにＶＭ移動部１２１は、ＶＭ１１が利用するＣＰＵ３０等の実行状態を端末装置２へコピーする。これにより、移動先の端末装置２では、コピーされた内容に従ってＶＭ１１（移動ＶＭ２３）の動作が開始される。
【００４２】
ＶＭ１１は、サーバ装置１に接続される端末装置２で動作する端末ＶＭ２１が対応付けられ、対応する端末ＶＭ２１からリモート操作される。ＶＭ１１には、ＶＭ１１で動作するＯＳ上でプログラムが実行されることでＲＤＰサーバ１１２及び仮想ドライブ１１３等が動作する。ＲＤＰサーバ１１２は、ＶＭ１１に割り当てられた端末ＶＭ２１（具体的には、後述のＲＤＰクライアント）とネットワーク経由で接続する。仮想ドライブ１１３は、例えば端末装置２のディスク装置４４ｂに挿入されたＤＶＤ３に記録されたデータへのアクセスを提供する、ＤＶＤ３の仮想的なドライブである。
【００４３】
このＶＭ１１は、ＶＭ１１内の処理を行うエージェント１１０の機能を有する。エージェント１１０は、アプリ起動部１３０、アプリ終了部１３１、アプリ状態取得部１３２、状態記憶部１３３、アプリ監視部１３４、監視アプリ情報記憶部１３５、アプリ状態復帰部１３６及びデバイス割当部１３７等の機能を有する。
【００４４】
アプリ起動部１３０は、端末装置２からの要求に従って、ＶＭ１１上で、映像アプリ等のアプリケーション１１１を起動する。アプリ終了部１３１は、管理ＯＳ１２又は端末装置２からの要求に従って、ＶＭ１１上で実行中のアプリケーション１１１を終了する。
【００４５】
アプリ状態取得部１３２は、実行中のアプリケーション１１１の状態（以下、アプリ状態と言う）を取得し、状態記憶部１３３に記憶する。アプリ状態とは、例えばアプリケーション１１１が利用するリソース、アプリケーション１１１の動作状態、表示内容及び、アプリケーション１１１に関する画像のモニタに対する表示位置等である。アプリ状態復帰部１３６は、アプリ終了部１３１が終了させたアプリケーション１１１を、状態記憶部１３３の記憶内容に従って終了前の状態に復帰させる。
【００４６】
アプリ監視部１３４（判定手段）は、監視アプリ情報記憶部１３５に記憶された情報に基づいて、アプリケーション１１１の実行を監視する。監視アプリ情報記憶部１３５には、アプリ監視部１３４が監視すべきアプリケーション（以下、対象アプリと言う）の情報（例えば、実行ファイル名等）が記憶されている。本実施の形態では、対象アプリは映像アプリである。すなわち、アプリ監視部１３４は、ＶＭ１１上で映像アプリが実行されているかを監視する。アプリ監視部１３４は、映像アプリが実行中であると検出した場合、管理ＯＳ１２のＶＭ移動部１２１へ通知する。
【００４７】
デバイス割当部１３７は、仮想ドライブ１１３をＲＤＰサーバ１１２に割り当てて、また割り当てを解放する。仮想ドライブ１１３は、ディスク装置４４ｂに挿入されたＤＶＤ３へのアクセスを提供するための仮想的なドライブであるため、ＲＤＰサーバ１１２は、仮想ドライブ１１３へアクセスすることで、端末装置２のディスク装置４４ｂへ仮想的にアクセスすることができる。
【００４８】
図５は、端末装置２が有する機能を示すブロック図である。端末装置２には、ＶＭ１１がサーバ装置１から移動され、端末ＶＭＭ２０上で移動ＶＭ２３が動作するようになっている。図５は、ＶＭ１１がサーバ装置１から移動され、端末ＶＭＭ２０上で移動ＶＭ２３が動作した状態の端末装置２を示している。
【００４９】
ＣＰＵ４０が各プログラムを実行することにより、端末装置２では、端末ＶＭＭ２０が実行され、端末ＶＭＭ２０上では端末ＶＭ２１と端末管理ＯＳ２２とが動作する。端末管理ＯＳ２２は、起動した端末ＶＭ２１に、例えばＣＰＵ４０及びＲＯＭ４１等の端末装置２のリソースの割り当てる。リソースが割り当てられた後、端末ＶＭ２１上では、ゲストＯＳの動作が開始される。また、サーバ装置１からＶＭ１１の移動が行われた場合、移動ＶＭ２３が端末ＶＭＭ２０上で動作する。
【００５０】
端末ＶＭＭ２０は、端末管理ＯＳ２２からの要求を受け取ることで、端末装置２のリソースを端末ＶＭ２１へ割り当て、及び割り当ての解除を行う。リソースを割り当てられた端末ＶＭ２１は、リソースへのアクセスが可能となる。また、端末ＶＭＭ２０は、デバイス割当部２０１等の機能を有する。デバイス割当部２０１は、端末管理ＯＳ２２からの要求に応じて、入出力装置４４ａ及びディスク装置４４ｂ等の物理デバイスを端末ＶＭ２１に割り当てて、端末ＶＭ２１から物理デバイスへのアクセスを可能にする。また端末ＶＭＭ２１は、端末ＶＭＭ２０上で移動ＶＭ２３が動作する場合、端末管理ＯＳ２２からの要求に応じて、端末装置２の物理デバイスの割り当てを移動ＶＭ２３に切り替えて、移動ＶＭ２３から物理デバイスへのアクセスを可能にする。
【００５１】
端末管理ＯＳ２２は、ＶＭ移動部２２１、移動完了検出部２２２及びデバイス切替部２２３等の機能を有する。ＶＭ移動部２２１は、所定の条件に基づいて、端末ＶＭＭ２０上で動作する移動ＶＭ２３のサーバ装置１への移動を実行する。移動完了検出部２２２は、ＶＭ移動部２２１による移動ＶＭ２３の移動が終了したことを検出する。
【００５２】
デバイス切替部２２３は、後述する端末ＶＭ２１のデバイス割当部２１１、又はＶＭ１１のデバイス割当部１３７に対して、端末装置２の物理デバイスの割り当て又は割り当ての解放を要求する。またデバイス切替部２２３は、上述したように、端末ＶＭＭ２０のデバイス割当部２０１に割当先の切り替えを要求する。
【００５３】
端末ＶＭ２１は、サーバ装置１で動作しているＶＭ１１が対応付けられ、対応するＶＭ１１にリモート接続することにより、ＶＭ１１のリモート操作を可能にする。この端末ＶＭ２１は、デバイス割当部２１１、ＲＤＰクライアント２１２及びデバイスドライバ２１３等の機能を有する。ＲＤＰクライアント２１２は、サーバ装置１で動作するＶＭ１１のＲＤＰサーバ１１２とネットワークを介して接続し、サーバ装置１のＶＭ１１の操作を可能にする。デバイスドライバ２１３は、デバイス割当部２０１により割り当てられた端末装置２の物理デバイスを制御する。
【００５４】
デバイス割当部２１１は、端末管理ＯＳ２２のデバイス切替部２２３からの要求に従って、端末装置２の物理デバイスをＲＤＰクライアント２１２に割り当てて、また割り当てを解放する。端末装置２の物理デバイスをＲＤＰクライアント２１２に割り当てることで、サーバ装置１のＶＭ１１は、ＲＤＰ経由で端末装置２の物理デバイスへのアクセスが可能となる。
【００５５】
移動ＶＭ２３は、ＶＭ１１と同じエージェント１１０、ＲＤＰサーバ１１２及び仮想ドライブ１１３の機能を有する。移動ＶＭ２３上には、エージェント１１０（具体的には、アプリ状態復帰部１３６）によってＶＭ１１上で実行していたアプリケーション１１１が復元される。また移動ＶＭ２３は、端末装置２の物理デバイスとの接続を可能にするデバイスドライバ２３１の機能を有している。この移動ＶＭ２３では、端末管理ＯＳ２２のデバイス切替部２２３からの要求によって、デバイス割当部１３７が、ＲＤＰサーバ１１２への端末装置２の物理デバイスの割り当てを解放する。そして、端末ＶＭＭ２０のデバイス割当部２０１により、端末ＶＭ２１から移動ＶＭ２３に端末装置２の物理デバイスの割当先が切り替えられた場合、デバイスドライバ２３１がその物理デバイスを制御する。これにより、移動ＶＭ２３は、端末装置２の物理デバイスの直接的な制御が可能となる。なお、移動ＶＭ２３が有するデバイスドライバ２３１は、サーバ装置１で動作するＶＭ１１でも有していてもよい。
【００５６】
次に、上述のサーバ装置１及び端末装置２を備える計算機システムで実行される処理について説明する。
【００５７】
図６は、ＶＭ接続及び切断処理の手順を示すフローチャートである。図６では、サーバ装置１及び端末装置２における処理を並列に示している。
【００５８】
サーバ装置１ではＶＭＭ１０が実行され、ＶＭＭ１０上で管理ＯＳ１２の動作が開始される。管理ＯＳ１２は、ＶＭ１１を起動する（Ｓ１０）。起動したＶＭ１１は、ＲＤＰサーバ１１２を起動する（Ｓ１１）。一方端末装置２では端末ＶＭＭ２０が実行され、端末ＶＭＭ２０上で端末管理ＯＳ２２の動作が開始される。端末管理ＯＳ２２は、端末ＶＭ２１を起動する（Ｓ２０）。起動した端末ＶＭ２１は、ＲＤＰクライアント２１２を起動する（Ｓ２１）。端末ＶＭ２１は、例えばユーザによりリモート接続要求を受付けることでＲＤＰクライアント２１２を起動する。その後、端末ＶＭ２１は、リモート接続要求をＶＭ１１に送信する（Ｓ２２）。
【００５９】
サーバ装置１のＶＭ１１は、端末ＶＭ２１からリモート接続要求を受信し（Ｓ１２）、リモート接続を開始する（Ｓ１３）。なお端末装置２の端末ＶＭ２１は、リモート操作の開始と同時にサーバ装置１のＶＭ１１と接続するようにしてもよいし、例えばユーザ認証を行い、認証結果に応じてＶＭ１１と接続するようにしてもよい。サーバ装置１のＶＭ１１と端末装置２の端末ＶＭ２１との通信接続が確立することで、ＶＭ１１と端末ＶＭ２１との間で、操作情報及び表示情報等の送受信が可能となる。
【００６０】
端末装置２では、端末ＶＭ２１がＲＤＰクライアント２１２の終了を受付けたか否かを判定する（Ｓ２３）。終了を受付けていない場合（Ｓ２３：ＮＯ）、端末ＶＭ２１はＳ２３の処理を繰り返す。終了を受付けた場合（Ｓ２３：ＹＥＳ）、端末ＶＭ２１はＲＤＰクライアント２１２を終了する（Ｓ２４）。
【００６１】
サーバ装置１では、ＶＭ１１はリモート接続が切断されたか否かを判定する（Ｓ１４）。例えばＶＭ１１は、リモート接続の接続状態を随時確認して、リモート接続が切断されたか否かを判定する。リモート接続が切断されていない場合（Ｓ１４：ＮＯ）、ＶＭ１１はＳ１４の処理を繰り返す。リモート接続が切断された場合（Ｓ１４：ＹＥＳ）、ＶＭ１１は本処理を終了する。なお、リモート接続が切断された場合、ＲＤＰサーバ１１２を終了するようにしてもよい。
【００６２】
図７及び図８は、サーバ装置１から端末装置２へのＶＭ移動処理の手順を示すフローチャートである。図７及び図８では、中央鎖線より左側を端末装置２における処理、右側をサーバ装置１における処理として示している。
【００６３】
端末装置２では、端末ＶＭ２１がサーバ装置１のＶＭ１１に対してアプリケーションの起動を要求する（Ｓ３０）。要求を受けたＶＭ１１は、アプリ起動部１３０が対応するアプリケーション１１１の実行を開始する（Ｓ３１）。例えば、端末ＶＭ２１は、端末装置２のディスク装置４４ｂにＤＶＤ３が挿入されたことをサーバ装置１のＶＭ１１に通知する。通知されたＶＭ１１では、アプリ起動部１３０が映像アプリを起動する。また、ＶＭ１１の仮想ドライブ１１３には、端末装置２で読み取られたＤＶＤ３のデータが随時送信される。ＶＭ１１では、起動した映像アプリが仮想ドライブ１１３へアクセスし、映像再生の処理を行う。そして、ＶＭ１１は、映像アプリの処理結果を端末装置２の端末ＶＭ２１へ送信し、端末装置２のモニタに表示する（図２Ａ参照）。なお、端末ＶＭ２１は、ユーザにより映像再生の操作がなされた場合にＶＭ１１へアプリケーションの起動を要求するようにしてもよい。
【００６４】
端末装置２では、ＶＭ１１のアプリ監視部１３４が、実行中のアプリケーションを周期的に監視し（Ｓ３２）、監視アプリ情報記憶部１３５の記憶内容に基づいて、実行中のアプリケーション１１１が対象アプリであるか否かを判定する（Ｓ３３）。本実施の形態では、対象アプリは映像アプリである。対象アプリが実行されていない場合（Ｓ３３：ＮＯ）、本処理は終了する。対象アプリが実行されている場合（Ｓ３３：ＹＥＳ）、すなわち映像アプリが実行されている場合、アプリ監視部１３４は、管理ＯＳ１２のＶＭ移動部１２１へ対象アプリの実行を通知して、ＶＭ移動部１２１が第１移動処理を開始する（Ｓ３４）。
【００６５】
移動完了検出部１２２は、ＶＭ移動部１２１による第１移動処理が完了したか否かを判定する（Ｓ３５）。このとき、移動完了検出部１２２は、ＶＭ１１が利用するメモリ（ＲＡＭ３２等）内容の容量が閾値以下となったか否かを判定する。第１移動処理が完了していないと判定した場合（Ｓ３５：ＮＯ）、移動完了検出部１２２はＳ３５の処理を繰り返し行う。第１移動処理が完了したと判定した場合（Ｓ３５：ＹＥＳ）、ＶＭ１１のアプリ状態取得部１３２は、アプリ状態を取得し、状態記憶部１３３へ保存する（Ｓ３６）。このアプリ状態取得部１３２は、移動完了検出部１２２から第１移動処理の完了が通知されることでアプリ状態の取得を開始する。次にＶＭ１１のアプリ終了部１３１は、実行中のアプリケーション１１１を終了する（Ｓ３７）（図２Ｂ参照）。
【００６６】
その後、ＶＭ移動部１２１は第２移動処理を実行する（Ｓ３８）。第２移動処理では、ＶＭ移動部１２１は、ＶＭ１１を一時停止させて、端末装置２へ残ったメモリ内容をコピーする。さらにＶＭ移動部１２１は、ＶＭ１１が利用するＣＰＵ３０等の実行状態を端末装置２へコピーする。
【００６７】
第２移動処理でＶＭ１１の移動が完了した後、端末装置２では、端末管理ＯＳ２２のデバイス切替部２２３からの要求に従って、端末ＶＭ２１及び移動ＶＭ２３のデバイス割当部２１１，１３７は、ＲＤＰ経由で割り当てられた物理デバイスを解放する（Ｓ３９）。次に、デバイス切替部２２３からの要求に従って、端末ＶＭＭ２０のデバイス割当部２０１は、端末ＶＭ２１に割り当てていた端末装置２の物理デバイスを解放し（Ｓ４０）、解放した物理デバイスを移動ＶＭ２３へ割り当てる（Ｓ４１）。これにより、移動ＶＭ２３のデバイスドライバ２３１が物理デバイスと接続し、移動ＶＭ２３から端末装置２の物理デバイスへの直接制御が可能となる。その後、移動ＶＭ２３のアプリ状態復帰部１３６は、状態記憶部１３３に記憶されたアプリ状態に基づいて、アプリケーション１１１を起動する（Ｓ４２）。これにより、アプリケーション１１１を、ＶＭ１１上での終了前の状態に復元することができ（図２Ｃ参照）、ＶＭの移動前後で継続した映像再生が可能となる。そして、本処理は終了する。
【００６８】
図９は、端末装置２からサーバ装置１へのＶＭ移動処理の手順を示すフローチャートである。
【００６９】
端末装置２では、移動ＶＭ２３のエージェント１１０が、移動ＶＭ２３上で実行中のアプリケーション１１１が終了したかを判定する（Ｓ５０）。アプリケーション１１１の終了するタイミングは、ユーザにより終了の操作がなされたときであってもよいし、アプリケーション１１１が映像アプリの場合、映像の再生が終了したときであってもよい。
【００７０】
アプリケーション１１１が終了していない場合（Ｓ５０：ＮＯ）、Ｓ５０の処理が繰り返される。アプリケーション１１１が終了した場合（Ｓ５０：ＹＥＳ）、端末管理ＯＳ２２のデバイス切替部２２３からの要求に従って、端末ＶＭＭ２０のデバイス割当部２０１は、移動ＶＭ２３に割り当てていた端末装置２の物理デバイスを解放し（Ｓ５１）、解放した物理デバイスを端末ＶＭ２１へ割り当てる（Ｓ５２）。
【００７１】
次に、端末管理ＯＳ２２のデバイス切替部２２３からの要求に従って、端末ＶＭ２１及び移動ＶＭ２３のデバイス割当部２１１，１３７は、端末装置２の物理デバイスをＲＤＰ経由で割り当てる（Ｓ５３）。その後、端末管理ＯＳ２２のＶＭ移動部２２１は、サーバ装置１へ移動ＶＭ２３の移動を開始する（Ｓ５４）。移動完了検出部１２２は、ＶＭ移動部２２１による移動処理が完了したか否かを判定する（Ｓ５５）。移動処理が完了していないと判定した場合（Ｓ５５：ＮＯ）、移動完了検出部１２２はＳ５５の処理を繰り返し行う。移動処理が完了したと判定した場合（Ｓ５５：ＹＥＳ）、本処理は終了する。これにより、サーバ装置１から端末装置２へ移動させたＶＭを、元のサーバ装置１へ戻すことができる。
【００７２】
以上説明したように、本実施の形態に係る計算機システムでは、ＶＭ１１が端末装置２の物理デバイスを利用して映像が再生された場合、ＶＭ１１を端末装置２へ移動させることで、移動ＶＭ２３(ＶＭ１１)はネットワークを介さずに物理デバイスへアクセスすることが可能となる。これにより、ネットワークを介さない映像再生が行われるため、高品質の映像をモニタに表示することができる。また、サーバ装置１から端末装置２へのＶＭ１１の移動処理の完了を待たずに映像再生を始めることができるため、映像が再生されるまでの時間を短縮することができる。さらに、映像アプリが実行されれば、自動的にＶＭ１１が移動され、アプリケーション１１１が起動（復元）されるため、ユーザは、特に操作を行うことなく、高品質な映像を視聴することができる。
【００７３】
なお、本実施の形態では、ディスク装置４４ｂにＤＶＤ３を挿入して、ＤＶＤ３に記録された映像を再生する場合について説明したが、これに限定されることはない。例えば、ＵＳＢなどにより着脱可能なＨＤＤ又はフラッシュメモリに記録された映像、画像、その他コンテンツを再生する場合に、上述の計算機システムを用いてもよい。
【００７４】
本実施の形態では、ハードウェア上でＶＭＭが動作しており、さらにＶＭＭでＶＭ及び管理ＯＳ等の各種プログラムが動作するハイパーバイザー型のＶＭＭを用いる場合を示したが、これに限るものではない。例えば、ハードウェア上でＯＳが動作しており、当該ＯＳ上でＶＭ等が動作する形態でもよい。
【００７５】
（実施形態２）
本実施の形態では、ＶＭ１１をサーバ装置１から端末装置２へ移動させる場合に、ユーザに移動の許可を求める点で実施の形態１と相違する。
【００７６】
図１０は、サーバ装置１が有する機能を示すブロック図である。本実施の形態に係るエージェント１１０は、実施の形態１で説明した機能に加え、移動許可要求部１３８の機能をさらに有している。移動許可要求部１３８は、管理ＯＳ１２の移動完了検出部１２２から第１移動処理の終了が通知される。通知された場合、移動許可要求部１３８は、端末装置２のモニタに、第２移動処理を実行させるか否かを決定させる確認画面を表示する。図１１は、ＶＭ１１の移動を決定させる確認画面の模式図である。確認画面は、第１移動処理の終了後に、ＶＭ１１の移動を実行させるか否かを決定するアイコンがユーザにより選択可能に、端末装置２のモニタに表示される。
【００７７】
管理ＯＳ１２のＶＭ移動部１２１は、端末装置２のモニタに表示された確認画面に従ったユーザの操作を受け付け、その結果に基づいて、第２移動処理を開始する。なお、図１０に示す移動許可要求部１３８以外の機能は、実施の形態１と同様であるため説明は省略する。
【００７８】
図１２及び図１３は、サーバ装置１から端末装置２へのＶＭ移動処理の手順を示すフローチャートである。
【００７９】
端末装置２では、端末ＶＭ２１がサーバ装置１のＶＭ１１に対してアプリケーションの起動を要求する（Ｓ６０）。要求を受けたＶＭ１１は、アプリ起動部１３０が対応するアプリケーション１１１の実行を開始する（Ｓ６１）。端末装置２では、ＶＭ１１のアプリ監視部１３４が、実行中のアプリケーションを監視し（Ｓ６２）、監視アプリ情報記憶部１３５の記憶内容に基づいて、実行中のアプリケーション１１１が対象アプリであるか否かを判定する（Ｓ６３）。対象アプリが実行されていない場合（Ｓ６３：ＮＯ）、本処理は終了される。対象アプリが実行されている場合（Ｓ６３：ＹＥＳ）、アプリ監視部１３４は、管理ＯＳ１２のＶＭ移動部１２１へ対象アプリの実行を通知して、ＶＭ移動部１２１は、第１移動処理を開始する（Ｓ６４）。
【００８０】
移動完了検出部１２２は、ＶＭ移動部１２１による第１移動処理が完了したか否かを判定する（Ｓ６５）。第１移動処理が完了していないと判定した場合（Ｓ６５：ＮＯ）、移動完了検出部１２２はＳ６５の処理を繰り返し行う。第１移動処理が完了したと判定した場合（Ｓ６５：ＹＥＳ）、ＶＭ１１の移動許可要求部１３８は、端末装置２のモニタに図１１に示す確認画面を表示させる（Ｓ６６）。移動許可要求部１３８は、表示させた確認画面に基づくユーザの操作を受け付け、その結果からＶＭ１１の移動を行うか否かを判定する（Ｓ６７）。ＶＭ１１の移動を行わない場合（Ｓ６７：ＮＯ）、ＶＭ移動部１２１は、第１移動処理の取消しを行う（Ｓ６８）。その後、本処理は終了される。
【００８１】
ＶＭ１１の移動を行う場合（Ｓ６７：ＹＥＳ）、ＶＭ１１のアプリ状態取得部１３２は、アプリ状態を取得し、状態記憶部１３３へ保存する（Ｓ６９）。次にＶＭ１１のアプリ終了部１３１は、実行中のアプリケーション１１１を終了する（Ｓ７０）。その後、ＶＭ移動部１２１は第２移動処理を実行する（Ｓ７１）。第２移動処理で、ＶＭ１１の移動が完了した後、端末装置２では、端末管理ＯＳ２２のデバイス切替部２２３からの要求に従って、端末ＶＭ２１及び移動ＶＭ２３のデバイス割当部２１１，１３７は、ＲＤＰ経由で割り当てられた物理デバイスを解放する（Ｓ７２）。
【００８２】
次に、デバイス切替部２２３からの要求に従って、端末ＶＭＭ２０のデバイス割当部２０１は、端末ＶＭ２１に割り当てていた端末装置２の物理デバイスを解放し（Ｓ７３）、解放した物理デバイスを移動ＶＭ２３へ割り当てる（Ｓ７４）。その後、移動ＶＭ２３のアプリ状態復帰部１３６は、状態記憶部１３３に記憶されたアプリ状態に基づいて、アプリケーション１１１を起動し（Ｓ７５）、本処理は終了される。
【００８３】
なお、端末装置２からサーバ装置１への移動ＶＭ２３の移動は、実施の形態１と同様であるため説明は省略する。
【００８４】
以上説明したように、本実施の形態に係る計算機システムでは、ＶＭ１１が端末装置２の物理デバイスを利用して映像が再生された場合、ＶＭ１１を端末装置２へ移動させることで、移動ＶＭ２３(ＶＭ１１)はネットワークを介さずに物理デバイスへアクセスすることが可能となる。これにより、ネットワークを介さない映像再生が行われるため、高品質の映像をモニタに表示することができる。また、サーバ装置１から端末装置２へのＶＭ１１の移動処理の完了を待たずに映像再生を始めることができるため、映像が再生されるまでの時間を短縮することができる。また、ユーザにＶＭの移動を確認させることで、ユーザがＶＭを移動させたくない場合に、ＶＭの移動を中止することができる。
【００８５】
なお、本実施の形態では、第１移動処理の完了後に、確認画面を表示するようにしているが、第１移動処理を開始する前に、確認画面を表示するようにしてもよい。例えば、映像アプリが起動し、図２Ａに示すように、端末装置２のモニタに映像が再生された直後に図１１の確認画面を表示するようにしてもよい。
【００８６】
（実施形態３）
本実施の形態では、ＶＭ１１で実行中のアプリケーション１１１が扱っているファイルデータに基づいて、アプリケーション１１１が対象アプリであるか否かを判定する点で、実施の形態１，２と相違する。以下、その相違点についてのみ説明する。
【００８７】
図１４は、サーバ装置１が有する機能を示すブロック図である。
【００８８】
本実施の形態に係るエージェント１１０は、実施の形態１で説明した監視アプリ情報記憶部１３５の機能を備えずに、アプリ情報取得部１３９の機能をさらに有している。アプリ情報取得部１３９は、例えば、ＶＭ１１で動作するゲストＯＳから、実行中のアプリケーション１１１のプロセス情報を取得する。プロセス情報とは、例えば、実行中のアプリケーション１１１のプロセス名、実行中のアプリケーション１１１が開いているファイル名、及びそのファイルサイズ等である。また、アプリケーション１１１が開いているファイルが映像ファイルである場合には、プロセス情報は再生時間を含む。アプリ監視部１３４は、アプリ情報取得部１３９が取得したアプリ情報に基づいて、アプリケーション１１１が対象アプリであるか否かを判定する。
【００８９】
図１５及び図１６は、サーバ装置１から端末装置２へのＶＭ移動処理の手順を示すフローチャートである。
【００９０】
端末装置２では、端末ＶＭ２１がサーバ装置１のＶＭ１１に対してアプリケーションの起動を要求する（Ｓ８０）。要求を受けたＶＭ１１は、アプリ起動部１３０が対応するアプリケーション１１１の実行を開始する（Ｓ８１）。端末装置２では、アプリ情報取得部１３９がプロセス情報を取得する（Ｓ８２）。ＶＭ１１のアプリ監視部１３４は、アプリ情報取得部１３９が取得したプロセス情報に基づいて、ファイルサイズが所定値（例えば１ＭＢｙｔｅ）以上であるか否かを判定する（Ｓ８３）。ファイルサイズが所定値以上でない場合（Ｓ８３：ＮＯ）、アプリ監視部１３４は、再生時間が所定時間（例えば１分）以上であるか否かを判定する（Ｓ８４）。再生時間が所定時間以上でない場合（Ｓ８４：ＮＯ）、本処理は終了する。
【００９１】
再生時間が所定時間以上の場合（Ｓ８４：ＹＥＳ）、又はファイルサイズが所定値以上である場合（Ｓ８３：ＹＥＳ）、アプリ監視部１３４は、管理ＯＳ１２のＶＭ移動部１２１へ対象アプリの実行を通知して、ＶＭ移動部１２１は、第１移動処理を開始する（Ｓ８５）。移動完了検出部１２２は、ＶＭ移動部１２１による第１移動処理が完了したか否かを判定する（Ｓ８６）。第１移動処理が完了していないと判定した場合（Ｓ８６：ＮＯ）、移動完了検出部１２２はＳ８６の処理を繰り返し行う。第１移動処理が完了したと判定した場合（Ｓ８６：ＹＥＳ）、ＶＭ１１のアプリ状態取得部１３２は、アプリ状態を取得し、状態記憶部１３３へ保存する（Ｓ８７）。次にＶＭ１１のアプリ終了部１３１は、実行中のアプリケーション１１１を終了する（Ｓ８８）。その後、ＶＭ移動部１２１は第２移動処理を実行する（Ｓ８９）。第２移動処理で、ＶＭ１１の移動が完了した後、端末装置２では、端末管理ＯＳ２２のデバイス切替部２２３からの要求に従って、端末ＶＭ２１及び移動ＶＭ２３のデバイス割当部２１１，１３７は、ＲＤＰ経由で割り当てられた物理デバイスを解放する（Ｓ９０）。
【００９２】
次に、デバイス切替部２２３からの要求に従って、端末ＶＭＭ２０のデバイス割当部２０１は、端末ＶＭ２１に割り当てていた端末装置２の物理デバイスを解放し（Ｓ９１）、解放した物理デバイスを移動ＶＭ２３へ割り当てる（Ｓ９２）。その後、移動ＶＭ２３のアプリ状態復帰部１３６は、状態記憶部１３３に記憶されたアプリ状態に基づいて、アプリケーション１１１を起動し（Ｓ９３）、本処理は終了される。
【００９３】
なお、端末装置２からサーバ装置１への移動ＶＭ２３の移動は、実施の形態１と同様であるため説明は省略する。
【００９４】
以上説明したように、本実施の形態に係る計算機システムでは、ＶＭ１１が端末装置２の物理デバイスを利用して映像が再生された場合、ＶＭ１１を端末装置２へ移動させることで、移動ＶＭ２３(ＶＭ１１)はネットワークを介さずに物理デバイスへアクセスすることが可能となる。これにより、ネットワークを介さない映像再生が行われるため、高品質の映像をモニタに表示することができる。また、サーバ装置１から端末装置２へのＶＭ１１の移動処理の完了を待たずに映像再生を始めることができるため、映像が再生されるまでの時間を短縮することができる。また、アプリケーション１１１が扱うファイルデータに基づいて対象アプリを決定するため、対象アプリを予め決めておく必要がない。
【００９５】
以上、本発明の実施の形態について、具体的に説明したが、各構成及び動作等は適宜変更可能であって、上述の実施形態に限定されることはない。
【００９６】
以下に、上述の実施形態を含む実施形態に関し、更に付記を開示する。
【００９７】
（付記１）
外部機器が接続された端末装置と、
複数の仮想計算機として動作し、該仮想計算機の何れかを前記端末装置に割り当てて、該端末装置に割り当てられた仮想計算機と前記端末装置との間でデータ通信を行うサーバ装置と
を備えており、
前記サーバ装置は、
前記端末装置に割り当てられた仮想計算機上で所定のアプリケーションが動作しているか否かを判定する判定手段と、
該判定手段が動作していると判定した場合、前記アプリケーションの動作状態に関するアプリケーション情報を記憶する手段と、
アプリケーション情報を記憶した場合、前記アプリケーションを終了させる手段と、
前記アプリケーションが終了した場合、記憶したアプリケーション情報と共に、前記仮想計算機の動作状態に関する仮想計算機情報を前記端末装置へ送信する送信手段と
を有し、
前記端末装置は、
前記サーバ装置から送信された仮想計算機情報に基づいて、仮想計算機を動作させる手段と、
動作させた仮想計算機に、前記外部機器を割り当てる手段と、
動作させた仮想計算機上で、前記サーバ装置から送信されたアプリケーション情報に基づいて、アプリケーションを起動させる手段と
を有する
計算機システム。
【００９８】
（付記２）
前記端末装置は、
動作させた仮想計算機を前記サーバ装置へ移動するか否かを判定する移動判定手段と、
移動すると判定した場合、前記仮想計算機への物理デバイスの割り当てを解放する手段と、
移動すると判定した場合、前記仮想計算機の動作状態に関する情報を前記サーバ装置へ送信する手段と
をさらに有する
付記１に記載の計算機システム。
【００９９】
（付記３）
前記移動判定手段は、
前記仮想計算機上で起動したアプリケーションが終了した場合に、移動すると判定するようにしてある
付記２に記載の計算機システム。
【０１００】
（付記４）
前記サーバ装置は、
前記端末装置から、仮想計算機情報の送信の要求を受信する受信手段
をさらに有し、
前記送信手段は、
前記受信手段が要求を受信した場合に、仮想計算機情報を送信するようにしてある
付記１から３の何れか一つに記載の計算機システム。
【０１０１】
（付記５）
前記サーバ装置は、
前記判定手段が、所定のアプリケーションが動作していると判定した場合、前記端末装置に判定結果を通知する手段
をさらに有し、
前記端末装置は、
判定結果が通知された場合、仮想計算機情報の送信の要求操作を受け付ける手段と、
要求操作を受け付た場合、仮想計算機情報の送信の要求を前記サーバ装置へ送信する手段と
をさらに有してある
付記４に記載の計算機システム。
【０１０２】
（付記６）
前記送信手段は、
ライブマイグレーションにより仮想計算機情報を送信するようにしてある
付記１から５の何れか一つに記載の計算機システム。
【０１０３】
（付記７）
自装置を複数の仮想計算機として動作させる手段と、
動作している仮想計算機の何れかを外部装置に割り当てる割当手段と、
外部装置が割り当てられた仮想計算機上で所定のアプリケーションが動作しているか否かを判定する判定手段と、
該判定手段が動作していると判定した場合、前記アプリケーションの動作状態に関するアプリケーション情報を記憶する手段と、
アプリケーション情報を記憶した場合、前記アプリケーションを終了させる手段と、
前記アプリケーションが終了した場合、記憶したアプリケーション情報と共に、前記仮想計算機の動作状態に関する仮想計算機情報を前記外部装置へ送信する送信手段と
を備える情報処理装置。
【０１０４】
（付記８）
前記外部装置から仮想計算機情報の送信の要求を受信する受信手段
をさらに有し、
前記送信手段は、
前記受信手段が要求を受信した場合に、仮想計算機情報を送信するようにしてある
付記７に記載の情報処理装置。
【０１０５】
（付記９）
前記判定手段が、所定のアプリケーションが動作していると判定した場合、前記外部装置に判定結果を通知する手段
をさらに備え、
前記受信手段は、
通知した判定結果に基づく前記要求を受信するようにしてある
付記８に記載の情報処理装置。
【０１０６】
（付記１０）
前記送信手段が送信した仮想計算機情報に基づいて前記外部装置で動作する仮想計算機の動作状態に関する情報を受信する手段と、
受信した情報に基づいて、仮想計算機を動作させる手段と
をさらに備える付記７から９の何れか一つに記載の情報処理装置。
【０１０７】
（付記１１）
前記送信手段は、
ライブマイグレーションにより仮想計算機情報を送信するようにしてある
付記７から１０の何れか一つに記載のサーバ装置。
【０１０８】
（付記１２）
複数の仮想計算機として動作する外部装置に接続して、前記仮想計算機の何れかが割り当てられた情報処理装置において、
割り当てられた仮想計算機の動作状態に関する仮想計算機情報、及び該仮想計算機上で動作するアプリケーションの動作状態に関するアプリケーション情報を、前記外部装置から受信する手段と、
受信した仮想計算機情報に基づいて、仮想計算機を動作させる手段と、
動作させた仮想計算機に、自装置に接続された外部機器を割り当てる手段と、
動作させた仮想計算機上で、受信したアプリケーション情報に基づいて、アプリケーションを起動させる手段と
を備える情報処理装置。
【０１０９】
（付記１３）
動作させた仮想計算機を前記サーバ装置へ移動するか否かを判定する移動判定手段と、
移動すると判定した場合、前記仮想計算機への物理デバイスの割り当てを解放する手段と、
移動すると判定した場合、前記仮想計算機の動作状態に関する情報を前記サーバ装置へ送信する手段と
をさらに備える付記１２に記載の情報処理装置。
【０１１０】
（付記１４）
前記移動判定手段は、
前記仮想計算機上で起動したアプリケーションが終了した場合に、移動すると判定するようにしてある
付記１３に記載の処理装置。
【０１１１】
（付記１５）
割り当てられた仮想計算機上で所定のアプリケーションが動作しているか否かを判定する手段と、
アプリケーションが動作していると判定した場合、仮想計算機情報の送信の要求操作を受け付ける手段と、
要求操作を受け付た場合、仮想計算機情報の送信の要求を前記外部装置へ送信する手段と
をさらに備える付記１２から１４の何れかひとつに記載の情報処理装置。
【０１１２】
（付記１６）
サーバ装置で動作し、外部機器が接続された端末装置に割り当てられた仮想計算機の動作状態に関する仮想計算機情報を、前記端末装置へ送信して動作させる仮想計算機運用方法において、
前記サーバ装置で動作する仮想計算機上で所定のアプリケーションが動作しているか否かを判定し、
動作していると判定した場合、前記アプリケーションの動作状態に関するアプリケーション情報を記憶し、
アプリケーション情報を記憶した場合、前記アプリケーションを終了させ、
前記アプリケーションが終了した場合、記憶したアプリケーション情報と共に、前記仮想計算機の動作状態に関する仮想計算機情報を前記端末装置へ送信し、
送信された仮想計算機情報に基づいて、前記端末装置で仮想計算機を動作させ、
動作させた仮想計算機に、前記外部機器を割り当て、
動作させた仮想計算機上で、送信されたアプリケーション情報に基づいて、アプリケーションを起動させる
仮想計算機運用方法。
【０１１３】
（付記１７）
複数の仮想計算機として動作し、動作している仮想計算機の何れかを外部装置に割り当てるコンピュータで実行されるプログラムにおいて、
コンピュータを、
外部装置が割り当てられた仮想計算機上で所定のアプリケーションが動作しているか否かを判定する判定手段、
該判定手段が動作していると判定した場合、前記アプリケーションの動作状態に関する情報を記憶する手段、
前記情報を記憶した場合、前記アプリケーションを終了させる手段、及び、
前記アプリケーションが終了した場合、記憶した前記情報と共に、前記仮想計算機の動作状態に関する情報を前記外部装置へ送信する手段
として機能させるプログラム。
【０１１４】
（付記１８）
外部機器が接続され、複数の仮想計算機として動作する外部装置に接続して、前記仮想計算機の何れかが割り当てられたコンピュータで実行されるプログラムにおいて、
コンピュータを、
割り当てられた仮想計算機、及び該仮想計算機で動作するアプリケーションの動作状態に関する仮想計算機情報及びアプリケーション情報を、前記外部装置から受信する手段、
受信した仮想計算機情報に基づいて、仮想計算機を動作させる手段、
動作させた仮想計算機に、前記外部機器を割り当てる手段、及び、
動作させた仮想計算機上で、受信したアプリケーション情報に基づいて、アプリケーションを起動させる手段
として機能させるプログラム。
【０１１５】
（付記１９）
付記１７又は１８に記載のプログラムが記録されており、コンピュータでの読取り可能な記録媒体。
【符号の説明】
【０１１６】
１  サーバ装置（情報処理装置）
２  端末装置（情報処理装置）
３  ＤＶＤ
１０  ＶＭＭ
１１  ＶＭ(仮想計算機)
２０  端末ＶＭＭ
２１  端末ＶＭ
２３  移動ＶＭ(仮想計算機)
１１０  エージェント
１１１  アプリケーション
【図１】
0005499688.tif 000002
【図２Ａ】
0005499688.tif 000003
【図２Ｂ】
0005499688.tif 000004
【図２Ｃ】
0005499688.tif 000005
【図３】
0005499688.tif 000006
【図４】
0005499688.tif 000007
【図５】
0005499688.tif 000008
【図６】
0005499688.tif 000009
【図７】
0005499688.tif 000010
【図８】
0005499688.tif 000011
【図９】
0005499688.tif 000012
【図１０】
0005499688.tif 000013
【図１１】
0005499688.tif 000014
【図１２】
0005499688.tif 000015
【図１３】
0005499688.tif 000016
【図１４】
0005499688.tif 000017
【図１５】
0005499688.tif 000018
【図１６】
0005499688.tif 000019