(57)【特許請求の範囲】
【請求項１】
オペレーティングシステムの設定情報を含む各ユーザ固有のユーザデータをネットワークを介して接続されるファイルサーバで管理する情報処理装置であって、
前記オペレーティングシステムを含む各種プログラムを動作させるための仮想的なハードウェア環境である仮想マシンを構築する仮想化エンジンを具備し、
前記仮想化エンジンは、
前記ファイルサーバから配信されたユーザデータを格納するファイルであって、前記仮想マシン上で動作するオペレーティングシステムにディスクとして認識させる仮想ディスクファイルを、この仮想ディスクファイルに対して行われた操作により生ずる差分データを時系列にレイヤとして蓄積するデータ構造を持つファイルとして生成し、前記ファイルサーバに転送する仮想ディスクファイル生成手段と、
前記ファイルサーバから前記ユーザデータの配信を受けて実行するデータ処理を、時系列的に新しい上位レイヤの差分データから前記ユーザデータの転送を受けて実行するデータ処理実行手段と、
を有する情報処理装置。
【請求項２】
前記データ処理は、前記仮想マシン上で動作するオペレーティングシステムのログイン動作に関する処理であり、
このログイン動作は、前記オペレーティングシステムの設定情報を含む上位レイヤの差分データが到着した時点で、起動する請求項１に記載の情報処理装置。
【請求項３】
前記仮想化エンジンは、前記仮想マシン上で動作するオペレーティングシステムから読み出しが要求されたデータが前記仮想ディスクファイル内の最上位レイヤ以外のレイヤに存在した場合、当該データを最上位レイヤ上に複製する仮想ディスクファイル管理手段をさらに有する請求項１に記載の情報処理装置。
【請求項４】
前記仮想ディスクファイル管理手段は、前記仮想マシン上で動作するオペレーティングシステムからデータの書き込みが要求された際、更新対象データが下位レイヤに存在する場合、無効化された旨を示す属性情報を付すことによって当該下位レイヤのデータを無効化する請求項３に記載の情報処理装置。
【請求項５】
前記仮想ディスクファイル管理手段は、前記仮想マシン上で動作するオペレーティングシステムからデータの書き込みが要求された際、更新対象データが下位レイヤに存在する場合、当該下位レイヤのデータを削除する請求項３に記載の情報処理装置。
【請求項６】
前記仮想化エンジンは、前記ファイルサーバで管理されるユーザデータに基づいて前記仮想マシン上で動作するオペレーティングシステムが作成する画面の画像データを前記ネットワークを介して接続されるシンクライアント端末に転送するシンクライアントサーバ処理手段をさらに有する請求項１に記載の情報処理装置。
【請求項７】
前記シンクライアントサーバ処理手段は、前記シンクライアント端末から受信した操作データを前記仮想マシン上で動作するオペレーティングシステムに転送する請求項６に記載の情報処理装置。
【請求項８】
オペレーティングシステムを含む各種プログラムを動作させるための仮想的なハードウェア環境である仮想マシンを構築し、前記仮想マシン上で動作する前記オペレーティングシステムの設定情報を含む各ユーザ固有のユーザデータをネットワークを介して接続されるファイルサーバで管理する情報処理装置の情報処理方法であって、
前記情報処理装置が、前記ファイルサーバから配信されたユーザデータを格納するファイルであって、前記仮想マシン上で動作するオペレーティングシステムにディスクとして認識させる仮想ディスクファイルを、この仮想ディスクファイルに対して行われた操作により生ずる差分データを時系列にレイヤとして蓄積するデータ構造を持つファイルとしてプロセッサにより生成し、前記ファイルサーバに通信装置により転送し、
前記情報処理装置が、前記ファイルサーバから前記ユーザデータの配信を受けて実行するデータ処理を、時系列的に新しい上位レイヤの差分データから前記ユーザデータの転送を受けて前記プロセッサにより実行する、
情報処理装置の情報処理方法。
【請求項９】
前記データ処理は、前記仮想マシン上で動作するオペレーティングシステムのログイン動作に関する処理であり、
このログイン動作は、前記オペレーティングシステムの設定情報を含む上位レイヤの差分データが到着した時点で、起動する請求項８に記載の情報処理装置の情報処理方法。
【請求項１０】
前記情報処理装置が、前記仮想マシン上で動作するオペレーティングシステムから読み出しが要求されたデータが前記仮想ディスクファイル内の最上位レイヤ以外のレイヤに存在した場合、当該データを最上位レイヤ上に前記プロセッサにより複製する請求項８に記載の情報処理装置の情報処理方法。
【請求項１１】
前記情報処理装置が、前記仮想マシン上で動作するオペレーティングシステムからデータの書き込みが要求された際、更新対象データが下位レイヤに存在する場合、無効化された旨を示す属性情報を付すことによって当該下位レイヤのデータを前記プロセッサにより無効化する請求項１０に記載の情報処理装置の情報処理方法。
【請求項１２】
前記情報処理装置が、前記仮想マシン上で動作するオペレーティングシステムからデータの書き込みが要求された際、更新対象データが下位レイヤに存在する場合、当該下位レイヤのデータを前記プロセッサにより削除する請求項１０に記載の情報処理装置の情報処理方法。
【請求項１３】
前記情報処理装置が、前記ファイルサーバで管理されるユーザデータに基づいて前記仮想マシン上で動作するオペレーティングシステムが作成する画面の画像データをネットワークを介して接続されるシンクライアント端末に前記通信装置により転送する請求項８に記載の情報処理装置の情報処理方法。
【請求項１４】
前記情報処理装置が、前記シンクライアント端末から受信した操作データを前記仮想マシン上で動作するオペレーティングシステムに前記通信装置により転送する請求項１３に記載の情報処理装置の情報処理方法。
【請求項１５】
オペレーティングシステムの設定情報を含む各ユーザ固有のユーザデータをネットワークを介して接続されるファイルサーバで管理し、前記オペレーティングシステムを含む各種プログラムを動作させるための仮想的なハードウェア環境である仮想マシンを構築する仮想化エンジンを持つコンピュータを、
前記ファイルサーバから配信されたユーザデータを格納するファイルであって、前記仮想マシン上で動作するオペレーティングシステムにディスクとして認識させる仮想ディスクファイルを、この仮想ディスクファイルに対して行われた操作により生ずる差分データを時系列にレイヤとして蓄積するデータ構造を持つファイルとして生成し、前記ファイルサーバに転送する仮想ディスクファイル生成手段、
前記ファイルサーバから前記ユーザデータの配信を受けて実行するデータ処理を、時系列的に新しい上位レイヤの差分データから前記ユーザデータの転送を受けて実行するデータ処理実行手段、
として機能させるためのプログラム。
【請求項１６】
前記データ処理は、前記仮想マシン上で動作するオペレーティングシステムのログイン動作に関する処理であり、
このログイン動作は、前記オペレーティングシステムの設定情報を含む上位レイヤの差分データが到着した時点で、起動する請求項１５に記載のプログラム。
【請求項１７】
前記コンピュータを、前記仮想マシン上で動作するオペレーティングシステムから読み出しが要求されたデータが前記仮想ディスクファイル内の最上位レイヤ以外のレイヤに存在した場合、当該データを最上位レイヤ上に複製する仮想ディスクファイル管理手段としてさらに機能させるための請求項１５に記載のプログラム。
【請求項１８】
前記仮想ディスクファイル管理手段は、前記仮想マシン上で動作するオペレーティングシステムからデータの書き込みが要求された際、更新対象データが下位レイヤに存在する場合、無効化された旨を示す属性情報を付すことによって当該下位レイヤのデータを無効化する請求項１７に記載のプログラム。
【請求項１９】
前記仮想ディスクファイル管理手段は、前記仮想マシン上で動作するオペレーティングシステムからデータの書き込みが要求された際、更新対象データが下位レイヤに存在する場合、当該下位レイヤのデータを削除する請求項１７に記載のプログラム。
【請求項２０】
前記コンピュータを、前記ファイルサーバで管理されるユーザデータに基づいて前記仮想マシン上で動作するオペレーティングシステムが作成する画面の画像データを前記ネットワークを介して接続されるシンクライアント端末に転送するシンクライアントサーバ処理手段としてさらに機能させる請求項１５に記載のプログラム。
【請求項２１】
前記シンクライアントサーバ処理手段は、前記シンクライアント端末から受信した操作データを前記仮想マシン上で動作するオペレーティングシステムに転送する請求項２０に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、例えば、複数のクライアントをサーバで管理するネットワークシステムに適用される情報処理装置に好適な情報処理技術に関する。
【背景技術】
【０００２】
近年、多くの企業で業務のＩＴ（information technology）化が図られており、このような企業では、社員は、例えば会社から貸与されるＰＣ（personal computer）を使って作業を行っている。また、これらＰＣを相互に接続してデータを含むリソースの共有化を図るために、オフィスにＬＡＮ（local area network）を敷設することも広く行われている。
【０００３】
一方、社員が業務に使用するＰＣを介して企業の機密情報が漏洩するといった問題も散見されている。このようなことから、オフィスで業務に使用されるＰＣに関するセキュリティ強化を図るための仕組みがこれまでも種々提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特公平６−１００９９１号公報
【特許文献２】特開２００１−１８４２９４号公報
【特許文献３】特許第２５９８４８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
例えば、シンクライアントは、ＣＰＵ（central processing unit）と主メモリとの他は、通信デバイスと、ユーザインタフェース用のキーボードやディスプレイデバイスとのみを備えるコンピュータであり、オペレーティングシステムを含む各種プログラムやデータは、ネットワークを介して接続されるサーバ（シンクライアントサーバ）によって管理される。即ち、ユーザが使用するシンクライアント側でデータが保存されることがないので、情報の漏洩を防止でき、セキュリティの強化を図ることが実現される。
【０００６】
ところで、最近のオペレーティングシステムは、プロファイルなどと称される各ユーザ固有のユーザデータを管理することで、ログインしたユーザ毎に、例えばデスクトップなどと称される基本画面のレイアウトを設定すること等を可能としている。一部のシンクライアントサーバは、オペレーティングシステムを含む各種プログラムを動作させるための仮想的なハードウェア環境である仮想マシンを複数構築することができ、各仮想マシンに各々シンクライアントを割り当てる。そして、このシンクライアントサーバは、各仮想マシン上で動作するオペレーティングシステムに対して、その仮想マシンに割り当てたシンクライアントを利用するユーザ用のユーザデータを供給する。これにより、各仮想マシン上で動作するオペレーティングシステムによって各ユーザ向けの画面が作成され、その画像データがシンクライアントに転送されて各ユーザに提示されることになる。なお、以下では、オペレーティングシステムを含む各種プログラムと、各ユーザ固有のユーザデータとの組み合わせによって各仮想マシン上に構築される各ユーザ毎の作業環境を仮想デスクトップ環境と称することがある。
【０００７】
ここで、ＨＤＤ（hard disc drive）等の外部記憶装置を備えるＰＣのシンクライアント化について考える。より具体的には、ＰＣ上に仮想マシンを構築する機能と、仮想マシン上で動作するオペレーティングシステムを含む各種プログラムや当該各種プログラムの入出力データを、ネットワークを介して接続される管理サーバやファイルサーバ等によって管理する機能とを有するモジュールをＰＣに搭載することを考える。つまり、社員等が業務に使用するＰＣ上にデータを保存させない仕組みをＰＣ上に構築する。なお、管理サーバ等による各種プログラムの管理は、運用管理を目的とするものであって、各種プログラムがＰＣ上に置かれることを防げるものではない。
【０００８】
この場合、（仮想マシン上で動作する）オペレーティングシステムがログイン時に使用する各ユーザ固有のユーザデータは、例えばファイルサーバ等によって管理されることになる。よって、ユーザがログインする都度、そのユーザ固有のユーザデータをファイルサーバから取得することが必要となる。オペレーティングシステムは、この取得されたユーザデータに基づき、仮想デスクトップ環境を構築する。
【０００９】
従って、例えばショートカットなどと称されるオブジェクト（アイコン）を多数デスクトップ上に配置する等、ユーザが基本画面のレイアウトについて様々なカスタマイズを施すことにより、このユーザデータが大きくなると、ファイルサーバが高負荷状態に陥っている場合やファイルサーバとの間のネットワーク帯域が狭い場合には、ログインが完了するまでの時間が長期化してしまうおそれがある。
【００１０】
また、基本画面のレイアウトについてカスタマイズが施された場合等には、ログアウト時に更新後のユーザデータをファイルサーバに反映させる必要が生じるために、ログアウトが完了するまでの時間が長期化してしまうおそれもある。
【００１１】
本発明は、サーバとクライアントとの間におけるデータの同期を効率的に取ることを実現する情報処理装置、情報処理装置の情報処理方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
実施形態によれば、情報処理装置は、オペレーティングシステムの設定情報を含む各ユーザ固有のユーザデータをネットワークを介して接続されるファイルサーバで管理する。情報処理装置は、前記オペレーティングシステムを含む各種プログラムを動作させるための仮想的なハードウェア環境である仮想マシンを構築する仮想化エンジンを具備する。仮想化エンジンは、仮想ディスクファイル生成手段と、データ処理実行手段とを有する。仮想ディスクファイル生成手段は、前記ファイルサーバから配信されたユーザデータを格納するファイルであって、前記仮想マシン上で動作するオペレーティングシステムにディスクとして認識させる仮想ディスクファイルを、この仮想ディスクファイルに対して行われた操作により生ずる差分データを時系列にレイヤとして蓄積するデータ構造を持つファイルとして生成し、前記ファイルサーバに転送する。データ処理実行手段は、前記ファイルサーバから前記ユーザデータの配信を受けて実行するデータ処理を、時系列的に新しい上位レイヤの差分データから前記ユーザデータの転送を受けて実行する。
【図面の簡単な説明】
【００１３】
【図１】実施形態の情報処理装置が適用されるネットワークシステムの一構成例を示す図。
【図２】実施形態の情報処理装置のシステム構成を示す図。
【図３】実施形態の情報処理装置のサーバとの間のデータ転送を効率化する原理を説明するための概念図。
【図４】実施形態の情報処理装置が生成する仮想ディスク用の仮想ディスクファイルのデータ構造を示す図。
【発明を実施するための形態】
【００１４】
以下、実施の形態について図面を参照して説明する。
【００１５】
図１は、本実施形態の情報処理装置（クライアント（ＰＣ）３またはシンクライアントサーバ４）が適用されるネットワークシステムの一構成例を示す図である。このネットワークシステムは、例えば企業が業務用に構築するネットワークシステムであって、各社員（ユーザ）は、クライアント３またはシンクライアント５を用いて作業を行う。なお、ここでは、分かり易くするために、クライアント３とシンクライアント５とを１つずつ示したが、クライアント３とシンクライアント５とは一般的にはそれぞれ複数存在し、ユーザは、作業を開始する際、いずれのクライアント３、シンクライアント５を用いても、同じユーザが使用しているデスクトップ環境を利用できる。さらに、ここでは、クライアント３と、シンクライアントサーバ４およびシンクライアント５との両方を示したが、クライアント３のみが存在し、または、シンクライアントサーバ４およびシンクライアント５のみが存在するように、当該ネットワークシステムを構成することも当然に可能である。
【００１６】
図１に示すように、このネットワークシステムは、管理サーバ１、ファイルサーバ２、クライアント３およびシンクライアントサーバ４がＬＡＮ６ａに接続され、また、シンクライアントサーバ４とシンクライアント５とがＬＡＮ６ｂに接続されている。なお、ここでは、論理的な階層関係を分かり易く示すために、ＬＡＮ６ａとＬＡＮ６ｂとの２つを示したが、これらは、物理的には１つのＬＡＮとして敷設されるものであっても良い。
【００１７】
まず、ユーザがクライアント３を使用する場合について説明する。
【００１８】
クライアント３は、例えばノートブック型のＰＣであり、図２に示すように、ＣＰＵ１０１、主メモリ１０２、外部記憶装置１０３、入力装置１０４、表示装置１０５および通信装置１０６を具備している。
【００１９】
ＣＰＵ１０１は、オペレーティングシステムを含む各種プログラムを外部記憶装置１０３から主メモリ１０２にロードして実行する。クライアント３には、仮想マシン２０を構築するためのプログラムである仮想化エンジン１０がインストールされている。仮想マシン２０は、ユーザが利用するオペレーティングシステムを含む各種プログラムを動作させるための仮想的なハードウェア環境である。仮想化エンジン１０は、１台のクライアント３上に複数の仮想マシン２０を構築することができる。また、仮想化エンジン１０は、後述する仮想ディスクファイル生成モジュール１１、仮想ディスクファイル管理モジュール１２、データ転送モジュール１３およびシンクライアントサーバ処理モジュール１４を有している。
【００２０】
クライアント３は、起動されると、起動ディスクとして割り当てられた外部記憶装置１０３から第１のオペレーティングシステムを主メモリ１０２にロードして当該第１のオペレーティングシステムを起動する。第１のオペレーティングシステムは、常駐プログラムとして定義された仮想化エンジン１０を起動するために用いられるオペレーティングシステムである。つまり、クライアント３の起動と同時に、第１のオペレーティングシステムの制御下で仮想化エンジン１０が起動する。
【００２１】
通信装置１０６が実行するＬＡＮ６ａを介した通信によって接続される管理サーバ１のシステムデータＤＢ（database）１ａには、クライアント３上に構築された仮想マシン２０上において構築されるべき仮想デスクトップ環境用のイメージデータ（システムデータ）がファイルとして格納されている。このイメージデータの中には、第２のオペレーティングシステムと、当該第２のオペレーティングシステムの制御下で動作する各種アプリケーションプログラムとが含まれる。イメージデータは、例えば管理サーバ１上に仮想マシンを構築し、この仮想マシン上で第２のオペレーティングシステムおよび各種アプリケーションプログラムのインストールを実行することによって生成する。この第２のオペレーティングシステムおよび各種アプリケーションプログラムは、各ユーザが作業を行うために利用する共通のプログラムである。
【００２２】
起動した仮想化エンジン１０は、このイメージデータ（および後述する各ユーザ固有のユーザデータ）を使って、クライアント３上に構築した仮想マシン２０上に各ユーザ毎の仮想デスクトップ環境を構築する。このイメージデータは、例えば、クライアント３が初めて起動された際に、仮想化エンジン１０によって管理サーバ１から取得されて外部記憶装置１０３に格納される。以降、仮想化エンジン１０は、適宜に、外部記憶装置１０３に格納されたイメージデータが管理サーバ１のシステムデータＤＢ１ａに格納された最新版のイメージデータか否かを調べて、最新版でなければ、管理サーバ１から最新版のイメージデータ（最新版にアップデートするための更新プログラム）を取得する処理を行う。イメージデータが更新された際に、管理サーバ１からクライアント３に対して、最新版のイメージデータを配信するようにしても良い。仮想化エンジン１０が管理サーバ１のシステムデータＤＢ１ａに格納されたイメージデータを使ってクライアント３上に仮想マシン２０を構成することで、ユーザが業務に使用するクライアント３の業環境を統一的に管理することができる（運用管理）。例えば社内の部門によって利用するアプリケーションプログラムが一部異なる場合、部門毎にイメージデータを作成したり、部門毎に差分データを用意したりすることで対応可能である。
【００２３】
前述したように、クライアント３が起動すると、第１のオペレーティングシステムによって仮想化エンジン１０が起動し、この仮想化エンジン１０が構築する仮想マシン２０上で第２のオペレーティングシステムが起動する。そして、第２のオペレーティングシステムによって、ユーザがログインするためのＧＵＩ（graphical user interface）画面が表示装置１０５に提示される。ユーザは、このＧＵＩ画面の提示に応答して、入力装置１０４を使って、ユーザＩＤ（identification data）やパスワードを入力する。第２のオペレーティングシステムは、この入力されたユーザＩＤやパスワードを用いてユーザ認証を含むログイン手続きを実行し、デスクトップなどと称される基本画面を表示装置１０５に提示する。第２のオペレーティングシステムは、仮想化エンジン１０によって構築される複数の仮想マシン２０間で異なるものであっても良い。
【００２４】
また、仮想化エンジン１０は、ユーザが使用するデータがクライアント３に保存されることを防止する機能を有している。仮想化エンジン１０は、仮想マシン２０毎に、主メモリ１０２または外部記憶装置１０３上に仮想ディスクファイルを生成する。仮想ディスクファイル生成モジュール１１は、この仮想ディスクファイルの生成を司るモジュールである。そして、仮想化エンジン１０は、この生成した仮想ディスクファイルを、仮想マシン２０上で動作する第２のオペレーティングシステムにディスクとして認識させる。即ち、仮想化エンジン１０は、仮想マシン２０上に仮想ディスクを構築する。例えば、第２のオペレーティングシステムの制御下で動作するアプリケーションプログラムが、（第２のオペレーティングシステムを介して）仮想マシン２０上の仮想ディスクにデータを書き込むと、そのデータは、主メモリ１０２または外部記憶装置１０３上の仮想ディスクファイルに格納される。主メモリ１０２または外部記憶装置１０３上に生成される仮想ディスクファイルは一時的なものであり、仮想化エンジン１０は、この仮想ディスクファイルに格納したデータを、通信装置１０６が実行するＬＡＮ６ａを介した通信によって接続されるファイルサーバ２によって管理する。
【００２５】
つまり、仮想マシン２０上で動作する第２のオペレーティングシステムを含む各種プログラムが仮想ディスクに書き込んだデータは、実際にはＬＡＮ６ａを介して接続されるファイルサーバ２のユーザデータＤＢ２ａによって保存され、また、当該各種プログラムが仮想ディスクから読み出そうとするデータは、実際にはファイルサーバ２のユーザデータＤＢ２ａに存在する。換言すれば、一時的に存在することはあっても、ユーザが使用するデータがクライアント３に保存されることがない。データ転送モジュール１３は、仮想ディスクファイルとファイルサーバ２との間でデータの同期を取るために必要なデータ転送を司るモジュールである。
【００２６】
仮想化エンジン１０は、仮想マシン２０上の仮想ディスク（外部記憶装置１０３内の仮想ディスクファイル）に書き込まれたデータのファイルサーバ２への転送を、ログアウト時に実施する。仮想化エンジン１０は、ログアウト時にファイルサーバ２へ転送したデータを、外部記憶装置１０３上から削除する。また、仮想化エンジン１０は、クライアント３がＬＡＮ６ａから切り離されていることを検知した場合、仮想マシン２０上で動作する第２のオペレーティングシステムを含む各種プログラムによる仮想ディスクへのアクセスを行えないようにする。例えば、仮想マシン２０上から仮想ディスクを抹消する。これにより、仮想ディスクファイル内のデータが、当該ネットワークシステムを離れて利用されることを防止する。即ち、シンクライアント５と同等のセキュリティ強化を実現する。
【００２７】
前述したログイン手続きを実行し、デスクトップなどと称される基本画面を表示装置１０５に提示する際、第２のオペレーティングシステムは、プロファイルなどと称される各ユーザ固有のユーザデータを読み出す。第２のオペレーティングシステムは、この読み出したユーザデータに基づき、ログインしたユーザ向けの基本画面を表示装置１０５に提示する。例えば、あるプログラムを起動するためのショートカットなどと称されるオブジェクト（アイコン）を基本画面に配置しておけば、このアイコンを操作するだけで、そのプログラムを簡単に起動することが可能となる。この基本画面上のショートカットの配置などが、ユーザデータとして管理される。よって、同一のクライアント３を使用する場合であっても、ユーザＡがログインした場合と、ユーザＢがログインした場合とで、表示装置１０５に提示する基本画面を変えることができる。
【００２８】
仮想化エンジン１０は、（第２のオペレーティングシステムが管理する）このプロファイルなどと称される各ユーザ固有のユーザデータを、ファイルサーバ２のユーザデータＤＢ２ａによって保存する。よって、ログイン時、第２のオペレーティングシステムからの読み出し要求に応えるために、ファイルサーバ２のユーザデータＤＢ２ａから仮想マシン２０上の仮想ディスク（外部記憶装置１０３内の仮想ディスクファイル）へユーザデータを転送することが必要となる。
【００２９】
図３の（Ａ）に示すように、通常、クライアント３とファイルサーバ２との間のデータ転送は、仮想マシン２０上で動作する各種プログラムが読み出しを要求するファイル単位で実行される。従って、例えばユーザが基本画面を自分が使いやすいように大幅にカスタマイズした等により、ユーザデータが大きくなると、場合によっては、ファイルサーバ２からクライアント３への転送に時間を要し、ログイン操作後、クライアント３が使用可能な状態となるまで、ユーザに長時間待機させてしまうおそれがある。
【００３０】
そこで、本実施形態の情報処理装置は、ファイルサーバ２とクライアント３との間におけるユーザデータの転送（ユーザデータの同期の取得）を効率的に行うことを実現したものであり、以下、この点について詳述する。
【００３１】
このファイルサーバ２とクライアント３との間におけるユーザデータの転送を効率的に行うために、仮想化エンジン１０は、仮想マシン２０上に仮想ディスクを構築するための仮想ディスクファイルを、図４に示すようなデータ構造を持つファイルとして主メモリ１０２上に生成する。主メモリ１０２が第２のオペレーティングシステムで使用されずに残った空きメモリが少ない場合には、管理者のセキュリティレベルの選択により、外部記憶装置１０３に生成してもよい。また、仮想化エンジン１０は、この仮想ディスクファイルを、仮想マシン２０上で動作する第２のオペレーティングシステムにログインするユーザ毎に生成する。つまり、仮想化エンジン１０は、仮想マシン２０上で動作する第２のオペレーティングシステムにログインするユーザが切り替わると、仮想マシン２０上に構築する仮想ディスク用の仮想ディスクファイルの切り換えを実行する。
【００３２】
図４に示すように、仮想ディスクファイルは、差分データを時系列にレイヤとして蓄積するデータ構造を持つ。各レイヤは、データが存在するブロックを複数集めて１つのブロックファイルとしたものである。つまり、仮想ディスクファイルは、複数のブロックファイルの集合体として存在する。各ブロックファイルの先頭または最後尾には、ヘッダまたはフッタがあり、各ブロックのデータが仮想ディスクのどのセクタに対応するのかを示す情報、例えばビットマップが格納される。
【００３３】
仮想マシン２０上で動作する第２のオペレーションプログラムを含む各種プログラムがデータの書き込みを行うと、仮想化エンジン１０は、このデータを最上位レイヤに配置する（図４のａ１，ａ２）。例えば新規データの書き込み等であって、書き込み対象のブロックが最上位レイヤに存在しない場合（図４のａ１）、仮想化エンジン１０は、そのデータを格納するためのブロックを確保して、当該ブロックにデータを書き込むと共に、最上位レイヤ（ブロックファイル）のヘッダ（Ｈ）またはフッタ（Ｆ）に格納されるビットマップの書き換えを実行する。一方、更新のためのデータの書き込みであって、書き込み対象のブロックが最上位レイヤに存在した場合（図４のａ２）、仮想化エンジン１０は、この最上位レイヤに存在するブロック内へのデータの書き込みを実行する。また、更新対象データを含むブロックが下位レイヤに存在する場合、仮想化エンジン１０は、そのブロックの無効化または削除を併せて実行してもよい。削除しない場合は、ディスク論理的容量は大きくなるが、最上位レイヤが万一破損しても最上位レイヤを除去すると、最新の書き込みデータは失われるが、レイヤが生成される１つ前の状態に戻すことができる。
【００３４】
また、仮想マシン２０上で動作する第２のオペレーションプログラムを含む各種プログラムがデータの読み出しを行う場合、通常、そのデータを含むブロックはいずれかのレイヤに存在する。もし、最上位レイヤに存在したならば（図４のａ３）、仮想化エンジン１０は、そのブロックからデータの読み出しを実行する。一方、下位レイヤに存在した場合には（図４のａ４）、仮想化エンジン１０は、そのブロックからのデータの読み出し時、当該ブロックを最上位レイヤにコピーする処理を併せて実行する。
【００３５】
この仮想化エンジン１０の働きにより、最上位レイヤのブロックファイルには、仮想マシン２０上で動作する第２のオペレーションプログラムを含む各種プログラムによって最近アクセスされたデータを含むブロックが存在することとなる。仮想ディスクファイル管理モジュール１２は、仮想マシン２０上で動作する第２のオペレーションプログラムを含む各種プログラムによるデータアクセスに伴う仮想ディスクファイルの更新管理を司るモジュールである。
【００３６】
この仮想ディスクファイルのデータ構造および仮想化エンジン１０による仮想ディスクファイルの更新手順を踏まえて、ファイルサーバ２とクライアント３との間におけるユーザデータの転送についての説明を進める。
【００３７】
仮想マシン２０上で動作する第２のオペレーションシステムによるＧＵＩ画面の提示に応答して、ユーザがユーザＩＤやパスワードを入力してログインすると、仮想化エンジン１０は、このユーザ用の仮想ディスクを仮想マシン２０上に構築する。つまり、外部記憶装置１０３内に当該ユーザ用の仮想ディスクファイルを生成する。この仮想ディスクファイルの生成は、ユーザデータＤＢ２ａに保存された仮想ディスクファイルをファイルサーバ２から取得して主メモリ１０２または外部記憶装置１０３に格納することによって実施される。この時、仮想化エンジン１０は、図３の（Ｂ）に示すように、最上位レイヤのブロックファイルから順に取得していく。より具体的には、仮想化エンジン１０は、ファイルサーバ２に対し、仮想ディスクファイルを構成する複数のブロックファイルのうち、まず、最上位レイヤのブロックファイルを転送することを要求する。
【００３８】
そして、この最上位レイヤのブロックファイルを受け取った時点で、仮想化エンジン１０は、仮想マシン２０上で動作する第２のオペレーションプログラムに（部分的にしかファイルサーバ２からの転送が完了していない）仮想ディスクファイルをディスクとして認識させる。ログイン時のアクセスは、ほぼ前回使用したデータに対するものなので、そのデータは最上位レイヤに存在する。よって、最上位レイヤのみでログイン手続きを完了できる。仮想化エンジン１０は、クライアント３の負荷を考慮して、例えばログイン手続きの完了後、一定の間隔を置いて、下位レイヤのブロックファイルのファイルサーバ２からの取得を開始する。つまり、本実施形態の情報処理装置は、アクセスされる可能性の高いデータを先に転送し、アクセスされる可能性の低いデータは後で転送するという効率的なデータ転送（データの同期の取得）を実現する。これにより、ログイン操作後、クライアント３が使用可能となるまでの時間を大幅に短縮することができる。
【００３９】
なお、ファイルサーバ２からクライアント３への転送が完了していない下位レイヤに存在するデータの読み出しが要求された場合、仮想化エンジン１０は、データの読み出し要求の受け付けを一時停止する。そして、その下位レイヤのブロックファイルがクライアント３に取り込まれたら、仮想化エンジン１０は、当該データの読み出し要求の受け付けを停止した状態を解除する。すべてのブロックファイルが転送し終わると、読み出しが行えないデータは存在しない状態となる。
【００４０】
一方、ログアウト時には、更新が発生したレイヤのブロックファイルのみファイルサーバ２に転送すればよい。これにより、ログアウトが完了するまでの時間も短縮することができる。なお、更新のためのデータの書き込みが行われた際、更新対象データを含むブロックが下位レイヤに存在する場合、前述したように、仮想化エンジン１０は、この下位レイヤのブロックの無効化または削除を実行する。ブロックを削除すると、当該下位レイヤ（ブロックファイル）のサイズを小さくできるので、当該ブロックファイルのファイルサーバ２への転送時間を短くすることができる。また、ブロックの無効化は、例えば、無効化された旨を示す属性情報（典型的にはフラグ）を付すことによって実施される。この場合には、当該下位レイヤのブロックファイルのサイズは変わらないので、当該ブロックファイルのファイルサーバ２への転送時間が短くなることはない。しかしながら、履歴として更新前データが残ることになるので、例えば過去の任意の時点の仮想ディスクの状態を再現すること等が可能となる。
【００４１】
仮想化エンジン１０は、下位レイヤに存在するデータの読み出しが要求された場合、前述したように、このデータを最上位レイヤにコピーする。内容が同じであればどのレイヤから読み出しても不整合が生じることはない。つまり、同一のデータが複数のレイヤに存在しても問題はない。下位レイヤ（ブロックファイル）の更新を控えることで、仮想化エンジン１０は、ログアウト時にファイルサーバ２へ転送するブロックファイルの数を抑止する。
【００４２】
次に、ユーザがシンクライアント５を使用する場合について説明する。
【００４３】
シンクライアント５は、例えば、図２に示したクライアント３の構成から外部記憶装置１０３を削除した構成を持つコンピュータである。
【００４４】
前述したように、仮想化エンジン１０は、１台のクライアント３上に複数の仮想マシン２０を構築することができる。シンクライアント５を管理するシンクライアントサーバ４にも、この仮想化エンジン１０がインストールされている。なお、シンクライアントサーバ４は、例えば、図２に示したクライアント３の構成と同等の構成を持つコンピュータである。シンクライアントサーバ４上での仮想化エンジン１０の起動手順は、クライアント３上での仮想化エンジン１０の起動手順と同様である。即ち、シンクライアントサーバ４が起動されると、（仮想化エンジン１０を起動するための）第１のオペレーティングシステムが起動されて、当該第１のオペレーティングシステムの制御下で、常駐プログラムとして定義された仮想化エンジン１０が起動される。
【００４５】
シンクライアントサーバ４上で動作する仮想化エンジン１０は、例えば管理するシンクライアント５の数だけ仮想マシン２０を構築し、管理サーバ１のシステムデータＤＢ１ａに格納されたイメージデータを使って、各仮想マシン２０上に仮想デスクトップ環境を構築する。そして、シンクライアントサーバ４上で動作する仮想化エンジン１０は、各仮想マシン２０上で動作する第２のオペレーティングシステムが作成した（ユーザがログインするための）ＧＵＩ画面用の画像データを各シンクライアント５に転送する。
【００４６】
シンクライアント５は、シンクライアントサーバ４から受け取った画像データを用いてＧＵＩ画面を表示し、ユーザＩＤやパスワードの入力を受け付ける。シンクライアント５は、入力されたユーザＩＤやパスワードをシンクライアントサーバ４に転送する。シンクライアントサーバ４上で動作する仮想化エンジン１０は、このユーザＩＤやパスワードを仮想マシン２０上で動作する第２のオペレーティングシステムに引き渡す。第２のオペレーティングシステムは、このユーザＩＤやパスワードを用いてユーザ認証を含むログイン手続きを実行し、当該ユーザ向けの基本画面用の画像データを作成する。シンクライアントサーバ４上で動作する仮想化エンジン１０は、この基本画面用の画像データを各シンクライアント５に転送する。以降、シンクライアントサーバ４上で動作する仮想化エンジン１０は、仮想マシン２０とシンクライアント５との間に介在して、画像データと操作データとを中継する処理を実行する。即ち、仮想化エンジン１０は、自身がインストールされたコンピュータをシンクライアント化する機能に加えて、自身がインストールされたコンピュータを、シンクライアントを管理するサーバとして動作させる機能を備えている。シンクライアントサーバ処理モジュール１４は、この（自身がインストールされたコンピュータを、シンクライアントを管理するサーバとして動作させる）機能を司るモジュールである。
【００４７】
シンクライアントサーバ４上に構築された複数の仮想マシン２０上でそれぞれ動作する第２のオペレーティングシステムが基本画面用の画像データを作成する際にも、仮想化エンジン１０は、ログインしたユーザ用のユーザデータ（当該ユーザデータが格納された仮想ディスクファイル）をファイルサーバ２から取得する必要がある。そこで、仮想化エンジン１０は、ファイルサーバ２に対し、取得対象の仮想ディスクファイルを構成する複数のブロックファイルのうち、まず、最上位レイヤのブロックファイルを転送することを要求する。
【００４８】
そして、この最上位レイヤのブロックファイルを受け取った時点で、仮想化エンジン１０は、仮想マシン２０上で動作する第２のオペレーションプログラムに（部分的にしかファイルサーバ２からの転送が完了していない）仮想ディスクファイルをディスクとして認識させる。前述したように、ログイン時のアクセスは、ほぼ前回使用したデータに対するものなので、そのデータは最上位レイヤに存在する。よって、最上位レイヤのみでログイン手続きを完了できる。つまり、本実施形態の情報処理装置は、アクセスされる可能性の高いデータを先に転送し、アクセスされる可能性の低いデータは後で転送するという効率的なデータ転送（データの同期の取得）を実現する。これにより、ログイン操作後、シンクライアント５が使用可能となるまでの時間を大幅に短縮することができる。
【００４９】
なお、シンクライアント５を使用するユーザが種々のデータ更新を行ったとしても、更新データはシンクライアントサーバ４側に存在するので、シンクライアント５でログアウトされた場合は、このログアウトを即時に完了させて構わない。ログアウト後、シンクライアントサーバ４とファイルサーバ２との間で仮想ディスクファイルについてデータの同期を取れば良い（更新対象データを含むブロックが存在するブロックファイルのシンクライアントサーバ４からファイルサーバ２への転送）。
【００５０】
以上のように、本実施形態の情報処理装置（クライアント３，シンクライアントサーバ４）によれば、（仮想マシン上で動作する）オペレーティングシステムやアプリケーションプログラムが認識するファイル単位ではなく、仮想ディスク用の仮想ディスクファイルを構成するブロックファイル単位でファイルサーバ２とのデータ転送が行われ、ファイルサーバ２との間におけるデータの同期を効率的に取ることが実現される。これにより、シンクライアント化したクライアント３またはシンクライアント５でログイン操作が行われた後、これらが使用可能となるまでの時間を大幅に短縮することができる。
【００５１】
新たなレイヤの生成は、指定の期間（例えば1週間）が経過したら、新レイヤを生成する、または最上位のレイヤのブロックが１つのレイヤの最大値に至った時点で、新たなレイヤを作成する。レイヤを生成するタイミングは、ユーザデータの使用頻度、用途によって調整できる。
【００５２】
以上の説明では、ファイルサーバ２で管理するユーザ固有のユーザデータを対象としてデータの同期を取る方法を説明したが、管理サーバ１で管理されるシステムデータを対象とすることも可能である。前述の方法は、ディスクレスのシンクライアントに対するシステムデータの転送などに利用することができる。
【００５３】
なお、本実施形態の動作制御処理は、ソフトウェア（プログラム）によって実現することができるので、このソフトウェアを格納したコンピュータ読み取り可能な記憶媒体を通じてこのソフトウェアを通常のコンピュータにインストールして実行することにより、本実施形態と同様の効果を容易に実現することができる。
【００５４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５５】
１…管理サーバ、１ａ…システムデータＤＢ、２…ファイルサーバ、２ａ…ユーザデータＤＢ、３…クライアント、４…シンクライアントサーバ、５…シンクライアント、６ａ…ＬＡＮ、６ｂ…ＬＡＮ、１０…仮想化エンジン、１１…仮想ディスクファイル生成モジュール、１２…仮想ディスクファイル管理モジュール、１３…データ転送モジュール、１４…シンクライアントサーバ処理モジュール、２０…仮想マシン、１０１…ＣＰＵ、１０２…主メモリ、１０３…外部記憶装置、１０４…入力装置、１０５…表示装置、１０６…通信装置。
【図１】
0005180399.tif 000002
【図２】
0005180399.tif 000003
【図３】
0005180399.tif 000004
【図４】
0005180399.tif 000005