(57)【要約】【課題】サーバーベースのデスクトップ仮想マシンのアーキテクチャーをクライアントマシンに拡張することができる。【解決手段】  一実施例においては、ユーザーデスクトップはクライアントシステムからリモートアクセスされる。１つ以上のサーバーコンピュータを有してもよいサーバーシステムで実行される第１仮想マシンでリモートデスクトップが生成される。第１仮想マシンの実行中、対応する仮想ディスクへの書き込みはデルタディスクファイルつまりリドゥーログに誘導される。仮想ディスクのコピーがクライアントシステムに作られる。ユーザーがデスクトップを「チェックアウト」すると決めると、第１仮想マシンが（もし実行されているならば）停止され、デルタディスクのコピーがクライアントシステムに作られる。クライアントシステムにデルタディスクが存在するや否や、仮想ディスクとデルタディスクを使用して第２仮想マシンがクライアントシステム上で開始されることができ、クライアントシステム上でユーザーデスクトップへのローカルアクセスを提供する。これにより、ユーザーはネットワークに接続しなくともその時にデスクトップにアクセスできる。【選択図】図３Ｃ
2011513816.tif 000002
【特許請求の範囲】
【請求項１】
サーバーベースのデスクトップ仮想マシンのアーキテクチャーをクアイアントマシンに拡張する方法であって、
通信ネットワーク経由でユーザーデスクトップにリモートアクセスし、このリモートアクセスはクライアントシステムとサーバーシステムの間のユーザー入出力を送受信することを含み、前記サーバーシステムは前記ユーザーデスクトップを提供する仮想マシンのサーバーインスタンスを実行し、前記仮想マシンの前記サーバーインスタンスはデータストレージシステムと通信する物理的なコンピュータシステムで仮想化ソフトウェアによって実行され、この仮想化ソフトウェアは前記仮想マシンの前記サーバーインスタンスからのディスク読み込み要求を仮想ディスクに誘導し、この仮想ディスクは前記データストレージシステムの１つ以上のファイルに含まれる仮想ディスクイメージを有し、前記仮想化ソフトウェアは前記仮想マシンの前記サーバーインスタンスからのディスク書き込み要求をデルタディスクに誘導し、このデルタディスクは前記仮想ディスクへの変更を含み、前記クライアントシステムは前記ユーザー入出力を受信し前記ユーザー入出力を前記クライアントシステムのユーザーインターフェースに送信するリモートデスクトップクライアントを有する方法であって、
前記クライアントシステムに前記仮想ディスクのローカルコピーを作り、
前記クライアントシステムからのチェックアウト要求を前記サーバーシステムに送信して前記ユーザーデスクトップにローカルアクセスし、
もし前記仮想マシンの前記サーバーインスタンスが現在実行されているならば、前記仮想マシンの前記サーバーインスタンスを終了し、
前記クライアントシステムに前記デルタディスクのコピーを作り、
前記クライアントシステムの前記仮想マシンのクライアントインスタンスを前記クアイアントシステムの仮想化ソフトウェアを使って実行して前記仮想マシンの前記クライアントインスタンスからのディスク読み込み要求を少なくとも前記仮想ディスクの前記ローカルコピーに誘導しかつ前記仮想マシンの前記クライアントインスタンスからのユーザー入出力を前記クライアントシステムの前記ユーザーインターフェースに誘導することを含むことを特徴とする方法。
【請求項２】
前記仮想ディスクの前記ローカルコピーの作成は、前記仮想マシンの前記サーバーインスタンスの実行中に行われることを特徴とする請求項１記載の方法。
【請求項３】
前記仮想マシンの前記サーバーインスタンスの実行中に前記クアイアントシステムで前記サーバーシステムの前記デルタディスクに記憶される前記仮想ディスクへの変更を受信することを更に含むことを特徴とする請求項１記載の方法。
【請求項４】
前記仮想マシンの前記クライアントインスタンスを実行する前に前記デルタディスクのコピーを前記仮想ディスクの前記ローカルコピーとマージすることを更に含むことを特徴とする請求項１記載の方法。
【請求項５】
前記仮想マシンの前記クライアントインスタンスからのディスク書き込みをローカルデルタディスクに誘導し、
前記クライアントシステムからのチェックイン要求を前記サーバーシステムに送信して前記ユーザーデスクトップにリモートアクセスし、
もし前記仮想マシンの前記クライアントインスタンスが実行されているならば、前記仮想マシンの前記クライアントインスタンスを終了し、
前記ローカルデルタディスクのコピーを前記サーバーシステムに送信し、
前記仮想マシンの前記サーバーインスタンスにリモートアクセスする
ことを更に含むことを特徴とする請求項１記載の方法。
【請求項６】
前記サーバーシステムにおいて、前記ローカルデルタディスクの前記コピーを前記サーバーシステムに送信した後であって前記仮想マシンの前記サーバーインスタンスを電源オンする前に、前記デルタディスクと前記ローカルデルタディスクを前記仮想マシンにマージすることを更に含むことを特徴とする請求項５記載の方法。
【請求項７】
前記仮想マシンの前記クライアントインスタンスの実行が開始された後、前記サーバーシステムへの前記ローカルデルタディスクの前記コピーの送信の前までは、前記仮想マシンの前記サーバーインスタンスへのアクセスが防止されることを更に含むことを特徴とする請求項５記載の方法。
【請求項８】
前記仮想マシンの前記サーバーインスタンスの実行の最中に、定期的に追加デルタディスクを作り、この追加デルタディスクを前記クライアントシステムに送信することを更に含む方法であって、それぞれの前記追加デルタディスクはチェーンデルタディスクの一部分であることを特徴とする請求項１記載の方法。
【請求項９】
前記サーバーシステムにおいて、前記ユーザーデスクトップのデスクトップステータスをチェックイン又はチェックアウトとして維持し、前記ユーザーデスクトップが前記仮想マシンの前記サーバーインスタンスを使って最後にリモートアクセスされたときに前記デスクトップステータスはチェックインにされ、前記ユーザーデスクトップが前記仮想マシンの前記クライアントインスタンスを使って最後にローカルアクセスされたときに前記デスクトップステータスはチェックアウトにされ、前記サーバーシステムは前記クライアントシステム上の前記デルタディスクの前記コピーの作成の後に前記デスクトップステータスがチェックアウトされると想定することを更に含むことを特徴とする請求項１記載の方法。
【請求項１０】
前記仮想化ソフトウェアはユーザーデータディスクとシステムディスクをエミュレートし、このユーザーデータディスク及びこのシステムディスクは前記仮想マシンで実行されるゲストシステムソフトウェアによってアクセス可能であって、前記ゲストシステムソフトウェアは前記ユーザーデータディスクに前記ユーザーデータを記憶し、前記システムディスクにオペレーティングシステムとアプリケーションファイルを記憶し、前記ユーザーデータはユーザードキュメントと設定を含み、
前記データストレージシステムの前記仮想ディスクは仮想ユーザーデータディスクであって、前記デルタディスクはデルタユーザーデータディスクであり、
前記ユーザーデスクトップのリモートアクセスは更に、
ユーザーデータディスク読み込み要求を前記仮想ユーザーデータディスクに誘導しかつシステムディスク読み込み要求を仮想システムディスクに誘導し、この仮想システムディスクは前記データストレージシステム又は別のデータストレージシステムの１つ以上のファイルに記憶されるディスクイメージであり、
システムディスク書き込み要求をデルタシステムディスクに誘導しかつユーザーディスク書き込みを前記デルタユーザーデータディスクに誘導し、このデルタシステムディスクは前記仮想システムディスクへの変更を含みかつ前記デルタユーザーデータディスクは仮想ユーザーデータディスクへの変更を含む
ことを含むことを特徴とする請求項１記載の方法。
【請求項１１】
前記デルタディスクの前記コピーの作成が実行されるときに、前記デルタシステムディスクを破棄することを更に含むことを特徴とする請求項１０記載の方法。
【請求項１２】
前記デルタディスクの前記コピーの作成が実行されるときに、前記クライアントシステム上に前記デルタシステムディスクのコピーを作成することを更に含むことを特徴とする請求項１０記載の方法。
【請求項１３】
前記仮想マシンの前記クライアントインスタンスの実行の前に前記サーバーシステムにおいて前記デルタディスクをスキャンしてマルウェアを探すことを更に含むことを特徴とする請求項１記載の方法。
【請求項１４】
サーバーベースのデスクトップ仮想マシンのアーキテクチャーをクアイアントマシンに拡張するための有形の機械読み込み可能メディアであって、この有形の機械読み込み可能メディアはクライアントシステムに方法を実装するコンピュータプログラム命令を実現し、前記方法は、
通信ネットワーク経由でユーザーデスクトップにリモートアクセスし、このリモートアクセスはクライアントシステムとサーバーシステムの間のユーザー入出力を送受信することを含み、前記サーバーシステムは前記ユーザーデスクトップを提供する仮想マシンのサーバーインスタンスを実行し、前記仮想マシンの前記サーバーインスタンスはデータストレージシステムと通信する物理的なコンピュータシステムで仮想化ソフトウェアによって実行され、この仮想化ソフトウェアは前記仮想マシンの前記サーバーインスタンスからのディスク読み込み要求を仮想ディスクに誘導し、この仮想ディスクは前記データストレージシステムの１つ以上のファイルに含まれる仮想ディスクイメージを有し、前記仮想化ソフトウェアは前記仮想マシンの前記サーバーインスタンスからのディスク書き込み要求をデルタディスクに誘導し、このデルタディスクは前記仮想ディスクへの変更を含み、前記クライアントシステムは前記ユーザー入出力を受信し前記ユーザー入出力を前記クライアントシステムのユーザーインターフェースに送信するリモートデスクトップクライアントを有する方法であって、
前記クライアントシステムに前記仮想ディスクのローカルコピーを作り、
前記クライアントシステムからのチェックアウト要求を前記サーバーシステムに送信して前記ユーザーデスクトップにローカルアクセスし、もし前記仮想マシンの前記サーバーインスタンスが現在実行されているならば、前記仮想マシンの前記サーバーインスタンスを終了し、
前記クライアントシステムに前記デルタディスクのコピーを作り、
前記クライアントシステムの前記仮想マシンのクライアントインスタンスを前記クアイアントシステムの仮想化ソフトウェアを使って実行して前記仮想マシンの前記クライアントインスタンスからのディスク読み込み要求を少なくとも前記仮想ディスクの前記ローカルコピーに誘導しかつ前記仮想マシンの前記クライアントインスタンスからのユーザー入出力を前記クライアントシステムの前記ユーザーインターフェースに誘導することを含むことを特徴とするメディア。
【請求項１５】
前記仮想ディスクの前記ローカルコピーの作成は、前記仮想マシンの前記サーバーインスタンスの実行中に行われることを特徴とする請求項１４記載のメディア。
【請求項１６】
前記方法は、前記仮想マシンの前記サーバーインスタンスの実行中に前記クアイアントシステムで前記サーバーシステムの前記デルタディスクに記憶される前記仮想ディスクへの変更を受信することを更に含むことを特徴とする請求項１４記載のメディア。
【請求項１７】
前記方法は、前記仮想マシンの前記クライアントインスタンスを実行する前に前記デルタディスクのコピーを前記仮想ディスクのローカルコピーとマージすることを更に含むことを特徴とする請求項１４記載のメディア。
【請求項１８】
前記方法は、前記仮想マシンの前記クライアントインスタンスからのディスク書き込みをローカルデルタディスクに誘導し、
前記クライアントシステムからのチェックイン要求を前記サーバーシステムに送信して前記ユーザーデスクトップにリモートアクセスし、
もし前記仮想マシンの前記クライアントインスタンスが実行されているならば、前記仮想マシンの前記クライアントインスタンスを終了し、
前記ローカルデルタディスクのコピーを前記サーバーシステムに送信し、
前記ローカルデルタディスクのコピーを前記サーバーシステムに送信した後に前記仮想マシンの前記サーバーインスタンスにリモートアクセスする
ことを更に含むことを特徴とする請求項１４記載のメディア。
【請求項１９】
前記サーバーシステムにおいて、前記ローカルデルタディスクの前記コピーを前記サーバーシステムに送信した後であって前記仮想マシンの前記サーバーインスタンスを電源オンする前に、前記デルタディスクと前記ローカルデルタディスクを前記仮想マシンにマージすることを更に含むことを特徴とする請求項１８記載のメディア。
【請求項２０】
前記方法は、前記仮想マシンの前記クライアントインスタンスの実行が開始された後、前記サーバーシステムへの前記ローカルデルタディスクの前記コピーの送信の前までは、前記仮想マシンの前記サーバーインスタンスへのアクセスが防止されることを更に含むことを特徴とする請求項１８記載のメディア。
【請求項２１】
前記方法は、前記仮想マシンの前記サーバーインスタンスの実行の最中に、定期的に追加デルタディスクを作り、この追加デルタディスクを前記クライアントシステムに送信することを更に含むメディアであって、それぞれの前記追加デルタディスクはチェーンデルタディスクの一部分であることを特徴とする請求項１４記載のメディア。
【請求項２２】
前記仮想化ソフトウェアはユーザーデータディスクとシステムディスクをエミュレートし、このユーザーデータディスク及びシステムディスクは前記仮想マシンで実行されるゲストシステムソフトウェアによってアクセス可能であって、前記ゲストシステムソフトウェアは前記ユーザーデータディスクに前記ユーザーデータを記憶し、前記システムディスクにオペレーティングシステムとアプリケーションファイルを記憶し、前記ユーザーデータはユーザードキュメントと設定を含み、
前記データストレージシステムの前記仮想ディスクは仮想ユーザーデータディスクであって、前記デルタディスクはデルタユーザーデータディスクであり、
前記ユーザーデスクトップのリモートアクセスは更に、
ユーザーデータディスク読み込み要求を前記仮想ユーザーデータディスクに誘導しかつシステムディスク読み込み要求を仮想システムディスクに誘導し、この仮想システムディスクは前記データストレージシステム又は別のデータストレージシステムの１つ以上のファイルに記憶されるディスクイメージであり、
システムディスク書き込み要求をデルタシステムディスクに誘導しかつユーザーディスク書き込みを前記デルタユーザーデータディスクに誘導し、このデルタシステムディスクは前記仮想システムディスクへの変更を含みかつ前記デルタユーザーデータディスクは前記仮想ユーザーデータディスクへの変更を含み、
前記クライアントシステム上に前記デルタディスクの前記コピーを作ることは前記サーバーシステムから前記ユーザーデータディスクへの変更をダウンロードすることと前記システムディスクドライブへ変更をダウンロードしないことを含む
ことを含むことを特徴とする請求項１４記載のメディア。
【請求項２３】
前記デルタディスクの前記コピーの作成が実行されるときに、前記サーバーシステムはデルタシステムディスクを破棄することを更に含むことを特徴とする請求項２２記載のメディア。
【請求項２４】
前記方法は、前記デルタディスクの前記コピーの作成が実行されるときに、前記クライアントシステム上に前記デルタシステムディスクのコピーを作成することを更に含むことを特徴とする請求項２２記載のメディア。
【請求項２５】
前記仮想マシンの前記クライアントインスタンスの実行の前に前記サーバーシステムは前記サーバーシステムにおいて前記デルタディスクをスキャンしてマルウェアを探すことを更に含むことを特徴とする請求項１４記載のメディア。
【請求項２６】
サーバーベースのデスクトップ仮想マシンのアーキテクチャーをクアイアントマシンに拡張するための有形の機械読み込み可能メディアであって、この有形の機械読み込み可能メディアはクライアントシステムに方法を実装するコンピュータプログラム命令を実現し、前記方法は、
ユーザーデスクトップを提供する仮想マシンのサーバーインスタンスを実行し、前記仮想マシンの前記サーバーインスタンスは前記サーバーシステムの物理的コンピュータ上で仮想化ソフトウェアによって実行され、この物理的コンピュータはデータストレージシステムと通信し、前記仮想化ソフトウェアは前記仮想マシンの前記サーバーインスタンスからのディスク読み込み要求を仮想ディスクに誘導し、この仮想ディスクは前記データストレージシステムの１つ以上のファイルに含まれる仮想ディスクイメージを有し、前記仮想化ソフトウェアは前記仮想マシンの前記サーバーインスタンスからのディスク書き込み要求をデルタディスクに誘導し、このデルタディスクは前記仮想ディスクへの変更を含み、前記クライアントシステムは前記ユーザー入出力を受信し前記ユーザー入出力を前記クライアントシステムのユーザーインターフェースに送信するリモートデスクトップクライアントを有する方法であって、
クアイアントシステムとサーバーシステムの間のユーザー入出力を送受信し、
前記仮想ディスクのコピーを前記クライアントシステムに送信し、
前記クライアントシステムからチェックアウト要求を受信し、
このチェックアウト要求に応答して、もし前記仮想マシンの前記サーバーインスタンスが現在実行中ならば前記仮想マシンの前記サーバーインスタンスを停止し、ユーザーが前記クライアントシステム上で実行される前記仮想マシンの前記クライアントインスタンスを使って前記デスクトップにアクセスできるように前記デルタディスクのコピーを前記クライアントシステムに送信し、
前記ユーザーデスクトップのデスクトップステータスの記録をチェックイン又はチェックアウトとして維持し、このユーザーデスクトップが前記仮想マシンの前記サーバーインスタンスを使って最後にリモートアクセスされたときに前記デスクトップステータスはチェックインにされ、このユーザーデスクトップが前記仮想マシンの前記クライアントインスタンスを使って最後にローカルアクセスされたときに前記デスクトップステータスはチェックアウトにされ、前記サーバーシステムは前記デルタディスクの前記コピーを前記クライアントシステムに送信した後に前記デスクトップステータスがチェックアウトされると想定することを更に含むことを特徴とするメディア。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
本出願は、２００８年２月２６日に出願された米国仮出願第６１／０３１，６１３の利益を主張する。上記出願は、ここに参照により援用される。
【技術分野】
【０００２】
コンピュータ仮想化の恩恵は、演算処理のハードウェアプラットフォームのコンピュータ計算の効率と柔軟性を大きく向上させるものとして認識されてきた。例えば、コンピュータ仮想化は、複数の仮想演算処理マシンが共通の演算処理ハードウェアプラットフォームを実行することを可能にする。物理的な演算処理ハードウェアプラットフォームのように、仮想演算処理マシンは、仮想ハードディスクなどの記憶メディア、仮想プロセッサ、及び演算処理環境に伴うその他のシステム要素を有する。例えば、仮想ハードディスクは、仮想マシンのオペレーティングシステム、データ、アプリケーションファイルを記憶することができる。
【背景技術】
【０００３】
サーバーベースの演算処理は、サーバーに対し遠隔に配置されたネットワーク化されたクライアントシステムがサーバーの演算処理リソースにアクセスすることを可能にする。例えば、クライアイントは、ＲＤＰやＶＮＣなどのリモートデスクトッププロトコルを使い、デスクトップにリモートアクセスしたり、キーボードやマウス入力などのユーザー入力をリモートシステムに送信することができる。サーバーベースの演算処理は、演算処理リソースの集中管理を容易にする。しかし、欠点は、最適に満たない演算処理体験である。例えば、グラフィックを多用するアプリケーションや、ＵＳＢデバイスなどのローカルデバイスや、プリンタなどが望まれるように動作しない。更に、ユーザーは、サーバーに記憶されたユーザーデスクトップにアクセスするために、ネットワークに接続した状態を維持しなければならない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
サーバーベースの演算処理の代替として、クライアントサイド演算処理がある。クライアントサイド演算処理は、ユーザーが企業ネットワークから離れる事とオフラインモード（ネットワーク又はインターネットに接続していない事）を可能にする。しかしながら、企業管理の視点から言えば、クライアントサイド演算処理は、オペレーティングシステムやアプリケーションのアップデート、セキュリティの実施、ライセンス遵守、情報の保護、様々なポリシーを忠実に守ること、データのバックアップなどのタスクにおいて、望まれない非効率性をもたらす。
【課題を解決するための手段】
【０００５】
上述した課題は、サーバーベースのデスクトップ仮想マシン構成をクライアントマシンに拡張することにより対処され得る。一実施例においては、ユーザーデスクトップは、クライアントシステムからリモートアクセスされる。リモートデスクトップは、サーバーシステムで動作する第１仮想マシンによって生成される。サーバーシステムは、１つ以上のサーバーコンピュータを含む。第１仮想マシンの実行中、対応する仮想ディスクは、デルタディスクファイルつまりリドゥーログ(redo log)に導かれる。仮想ディスクのコピーが、クライアントシステムに作られる。ユーザーが、デスクトップを「チェックアウト」することを望むとき、第１仮想マシンは（もし動作しているならば）終了し、デルタディスクのコピーがクライアントシステムに作られる。デルタディスクがクライアントシステムに提示されると、仮想ディスクとデルタディスクを使ってクライアントシステムで第２仮想マシンを開始することができ、クライアントシステムにおいてユーザーデスクトップへのローカルアクセスが提供される。これにより、ユーザーは、ネットワークに接続することなく、デスクトップへその時にアクセスすることができる。
【図面の簡単な説明】
【０００６】
【図１】集中管理されたユーザーデスクトップへのアクセスを提供する仮想デスクトップインフラストラクチャ（ＶＤＩ）システムの簡単な例を示す。
【図２】仮想化されたコンピュータシステムの例の論理図である。
【図３Ａ】図１の仮想デスクトップインフラストラクチャシステムの動作を例示によって示すブロック図である。
【図３Ｂ】図１の仮想デスクトップインフラストラクチャシステムの動作を例示によって示すブロック図である。
【図３Ｃ】図１の仮想デスクトップインフラストラクチャシステムの動作を例示によって示すブロック図である。
【図３Ｄ】図１の仮想デスクトップインフラストラクチャシステムの動作を例示によって示すブロック図である。
【図４】ユーザーを自動バックグラウンド同期でリモートデスクトップに接続させる手順の例を示すフローチャートである。
【図５】デスクトップチェックアウト手順を実装する方法を例によって示すフローチャートである。
【発明を実施するための形態】
【０００７】
図１は、集中管理されたユーザーデスクトップへのアクセスを提供する仮想デスクトップインフラストラクチャ（ＶＤＩ）システム１０の簡単な例を示す。「デスクトップ」という用語は、ユーザーがユーザーのアプリケーション、設定、及びデータを開始、対話、及び管理するヒューマンインターフェース環境を意味する。伝統的には、デスクトップは、オペレーティングシステムによってビデオディスプレイに提示され、ユーザーはマウスやキーボードを使ってデスクトップと対話する。全てのアプリケーションやドキュメントなどはデスクトップに表示されてもよく、通常はユーザー入力はユーザーがディスプレイ上に見ることができるアプリケーションによって受け取られる。「デスクトップ」という用語は、物理的なコンピュータシステム、つまり、「物理的なデスクトップ」を意味するためも使われることが知られている。「物理的なデスクトップ」は、「ラップトップ」又は「パームトップ」とは区別される、ユーザーの机の近く又はその上に配置される。しかし、ここでの使用においては、「デスクトップ」という用語そのものは、上述のヒューマンインターフェース環境のみを意味し、物理的なコンピュータシステムは意味しない。コンピュータ仮想化を使い、オペレーティングシステム設定、アプリケーション、アプリケーション設定、及びデータを含むユーザーのコンピュータシステムは、仮想マシンとして、ある物理的なコンピュータから別の物理的なコンピュータに転送又はコピーされてもよい。仮想マシンがこのようにコピーされる時、元の仮想マシンを含む物理的なコンピュータシステムから、又は、コピーを含む物理的なコンピュータシステムから、ユーザーはデスクトップにアクセスすることができる。従って、もはや「デスクトップ」は、特定の物理的なコンピュータシステムに紐づけられない。
【０００８】
ＶＤＩシステム１０は、ネットワーク１３を介してＶＤＩクライアントシステム１２、１４、及び１６とデータ通信するＶＤＩサーバーシステム１１を有する。ネットワーク１３は、どのような形態であってもよく、例えば、ローカルエリアネットワーク（ＬＡＮ）又はインターネットのようなプライベートアクセス又は公衆アクセス可能なワイドエリアネットワークであってもよい。なお、図１は、ファイヤーウォール、コネクションブローカ、ロードバランサ、バックエンドストレージネットワーク、データベースなどのその他の構成を含んでもよい典型的なＶＤＩネットワークサーバーシステム１１の簡単な図である。それぞれのクライアントシステム１２、１４、１６は、ユーザーがデスクトップと対話するためのユーザーインターフェース４０（１つのみが示される）を含んでもよい。
【０００９】
図２は、仮想化されたコンピュータシステム２０の例の論理図である。下記に詳説されるように、ＶＤＩサーバーシステム１１、ＶＤＩ クライアントシステム１２、１４、及び１６は、図２を参照して説明される仮想化ソフトウェアを含んでもよい。仮想化されたコンピュータシステム２０は、物理的なハードウェアプラットフォーム２２、ハードウェアプラットフォーム２２で動作する仮想化ソフトウェア８０、及び仮想化ソフトウェア８０によってハードウェアプラットフォーム２２で動作する１つ以上の仮想マシン７０を含む。従って、仮想化ソフトウェア８０は、ハードウェアプラットフォーム２２の物理的なハードウェアと仮想マシン７０で動作するゲストシステムソフトウェア７２との間に論理的に配置される。
【００１０】
ハードウェアプラットフォーム２２は、１つ以上のシステムバス２８を有する演算処理システム。システムバスは、様々なハードウェアプラットフォームコンポーネントが互いにデータ通信できるようにする。例えば、１つ以上のプロセッサ２４は、システムバス２８を使って、メモリー２６とデータ通信するように構成される。メモリー２６は、リードオンリーメモリー（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、キャッシュメモリー、及び様々なレジスタメモリーを含むメモリーのシステムを有してもよい。不揮発データストレージ３０は、ソフトウェア又はデータの記憶のための、１つ以上のディスクドライブ又は他の機械による読み込みが可能な媒体又は大容量データ記憶システムを含んでもよい。メモリー２６及び／又は不揮発データストレージ３０は、仮想化ソフトウェア８０及び仮想マシン７０で動作するゲストシステムソフトウェア７２を記憶してもよい。ユーザーインターフェース４０は、（図示されない）キーボードコントローラ、（図示されない）マウスコントローラ、（図示されない）ビデオコントローラ、（図示されない）オーディオコントローラを含むように提供されてもよく、それぞれ対応する（図示されない）ユーザーデバイスに接続されてもよい。サーバーコンピュータシステムにおいて典型的に見られるように、ＶＤＩサーバーシステム１１（図１）においては、ユーザーインターフェース及びデバイスは、ハードウェアプラットフォーム２２に含まれていても含まれていなくてもよく、又は接続されていても接続されていなくてもよい。代わりに、データセンタ管理の分野で一般的に知られているように、ユーザー対話は遠隔から行われてもよい。ネットワークインターフェース５０は、ネットワーク１３のようなネットワークを介してデータ通信を可能にする（図１）。ネットワークインターフェース５０は、ＴＣＰ／ＩＰなどのネットワークプロトコルを使って通信を容易にする。
【００１１】
コンピュータ仮想化の分野では、仮想化ソフトウェア８０はよく知られている。仮想化ソフトウェア８０は、システムリソース管理及び仮想マシンエミュレーションを行う。仮想マシンエミュレーションは、仮想マシンモニター（ＶＭＭ）コンポーネントによって行われてもよい。典型的な実装においては、それぞれの仮想マシン７０（１つのみが示される）を対応するＶＭＭインスタンスを有する。実装により、仮想化ソフトウェア８０は、ホストされていなくてされていてもよい。ホストされていない仮想化ソフトウェアは、一般的に、システムリソースを管理する特化された仮想化カーネルに依存する。一方、ホストされている仮想化ソフトウェアは、商品としてのオペレーティングシステム、つまり、システムリソースを管理するＷｉｎｄｏｗｓ（登録商標）やＬｉｎuｘ（登録商標）などの「ホストオペレーティングシステム」に依存する。ホストされた仮想化システムにおいては、ホストオペレーティングシステムは、仮想化ソフトウェア８０の一部分と考えられてもよい。
【００１２】
仮想マシン７０は、概念的には、（仮想化ソフトウェア８０によってエミュレートされる）仮想ハードウェアデバイスの状態及びゲストシステムソフトウェア７２の内容を含む。図２に示されるように、ゲストシステムソフトウェア７２は、ゲストオペレーティングシステム７４及びゲストアプリケーション７８を含む。ゲストオペレーティングシステム７４は、Ｗｉｎｄｏｗｓ（登録商標）やＧＮＵ／Ｌｉｎｕｘ（登録商標）などの商品としてのオペレーティングシステムであってもよい。仮想化ソフトウェア８０は、ローカルユーザーインターフェース４０又はリモートデスクトップクライアントへユーザーインターフェース出力を導くことを含め、仮想マシン７０との入出力を管理する。
【００１３】
図３Ａ及び図３Ｂは、ユーザーデスクトップへのリモート（又は集中）アクセスとローカルアクセスの両方を有し、１ユーザーがデスクトップにリモートアクセス又はローカルアクセスすることを可能にする拡張可能なＶＤＩシステム１００を示す簡単なブロック図を示す。拡張可能な ＶＤＩシステム１００は、サーバーシステム１１０とクライアントシステム １２０を含む。仮想マシン（ＶＭ）１１８はサーバーシステム１１０で実行され、ユーザーによってクライアントシステム１２０経由でアクセスされることができる。ＶＭ１１８は、図２を参照して上述の全てのユーザーアプリケーションとデータを含み、仮想化ソフトウェア１１７を使って実行される。一実施例においては、仮想化ソフトウェア１１７は、ホストされていない仮想化ソフトウェアを有する。更に、たった１つのＶＭ１１８がサーバー１１０で実行されるとして示されているが、任意の数のＶＭが実行されてもよく、それぞれは１人以上の対応するユーザーに関連づけられてもよい。
【００１４】
仮想化ソフトウェア１１７は、ユーザーＩ／Ｏをリモートデスクトップホスト１１５に導く。リモートデスクトップホスト１１５は、ユーザーのグラフィックとサウンドをリモートデスクトップクライアント１２５に送信する。同様に、リモートデスクトップクライアント１２５は、キーボードやマウス入力などのユーザーの入力をリモートデスクトップホスト１１５に送信する。リモートデスクトップクライアント１２５は、様々なユーザーＩ／Ｏデバイスを有してもよいユーザーインターフェース１２４経由で、ユーザーのデスクトップをユーザーに示す。
【００１５】
クライアントシステム１２０は、リモートデスクトップクライアント１２５に加えて、仮想マシン１２８及び仮想化ソフトウェア１２７を含む。仮想マシン１２８は仮想ディスク１３２にアクセスできる。仮想ディスク１３２は、クライアントシステム １２０に接続した物理ディスク１３０上の１つ以上のファイルに存在するディスクイメージである。仮想ディスク１３２は、仮想化ソフトウェア １２７により維持される。一実施例においては、仮想化ソフトウェア１２７は、ホストされた仮想化ソフトウェアを有する。ホストされた仮想化ソフトウェアは、上述したようにクライアントのホストオペレーティングシステムと連動して実行される。仮想ディスク１３２は、最初に仮想ディスク１４２からコピーすることができる（又は、逆に仮想ディスク１４２は、最初に仮想ディスク１３２からコピーすることができる）。これにより、ある特定の状態においては、仮想ディスク１３２及び１４２は、同一、又は同一ではないが論理的に同等である。論理的に同等とは、それぞれの仮想ディスクが同じファイルシステム及びデータファイルを有し、それらは同一のファイルシステム構造において論理的に関連しているが、実際のディスクセクタは同じ順番とはなっていないかもしれないことを意味する。２つの同一のディスクも、論理的に同等である。
【００１６】
サーバーシステム１１０は、サーバーシステム１１０にアクセス可能な物理ディスク１４０を含んでいるか通信可能である。物理ディスク４０は、対応する仮想マシンのディスクイメージファイルであり、ユーザー仮想ディスクに記憶するために仮想化ソフトウェア１１７によって利用される。ユーザーがＶＭ１１８で作業する時、ＶＭ１１８は書き込みを仮想ディスク１４２に発行してもよい。仮想ディスク１４２は、物理ディスク１４０上の１つ以上のファイルとして存在している。しかし、変更を直接仮想ディスク１４２に書き込む代わりに、仮想化ソフトウェア１１７は、書き込みをデルタディスク１４４にリダイレクトするように構成されてもよい。デルタディスク１４４は、リドゥーログ又はその他の「差分」ファイルを有してもよい。本質的に、デルタディスク１４４は、実際に仮想ディスク１４２を変更することなく、仮想ディスク１４２への変更のリストを保持する。デルタディスクは、仮想化の技術において知られており、例えば、米国特許第７，３５６，６７９号に更なる詳細が記載されている。仮想マシン１１８が読み込みを発行する時、仮想化ソフトウェア１１７は、デルタディスク１４４にアクセスし、そこにデータがあるかどうか判断する。もし、そこにデータが無いならば、仮想マシン１１８は、仮想ディスク１４２、つまり、デルタディスク１４４の親となるディスクイメージにアクセスする。そして、あたかも単純に物理デバイスのディスク読み込みが発生したかのように、仮想化ソフトウェア１１７は、データを仮想マシン１１８に届ける。
【００１７】
オフラインで（例えば、サーバーシステム１１０にアクセスせずに）アクセス可能になるように、ユーザーが仮想マシンを「チェックアウト」すると決定すると、ユーザーは、この要望を管理ソフトウェア（図示されないが、詳細は下記に説明される）に伝えてもよい。この時、仮想マシン１１８は「電源オフ」され、デルタディスク１４４がユーザーの物理ディスク１３０にコピーされ、ユーザーの物理ディスク１３０にデルタディスク１３４が作られる。このダウンロードが完了し検証されると、デルタディスク１４４を構成する書き込みが仮想ディスク１４２にマージされ、デルタディスク１３４も同様に仮想ディスク１３２にマージされ、仮想ディスク１３２及び仮想ディスク１４２が論理的に同等な状態に維持されるが、ユーザーによって残された最新の状態を反映するようにアップデートされる。
【００１８】
一実施例においては、仮想マシン１１８を電源オフする代わりに、ユーザーは単純にサスペンドされてもよい。この場合、ＶＭ状態１３６も仮想化ソフトウェア１１７からダウンロードされ、仮想化ソフトウェア１１７が仮想マシン１１８の状態を維持する。
【００１９】
図３Ｂは、拡張可能な ＶＤＩシステム１００を示し、ユーザーが仮想マシン １２８をローカルで実行することによりオフラインでデスクトップにアクセスしているところを示す。この場合、リモートデスクトップクライアント１２５を使わずに、仮想化ソフトウェア１２７はクライアントシステム １２０上で仮想マシン１２８を実行する。従って、ユーザーは、ネットワークから切断されていてもよく、オフラインで作業してもよい。仮想化ソフトウェア１２７は、直接に仮想ディスク１３２を変更しない。代わりに、仮想化ソフトウェア１２７は、図３Ａでデルタディスク１４４に関して説明したように、ユーザーが仮想ディスク１３２に対して行った全ての変更を含むデルタディスク１３４を作る。
【００２０】
ある時において、デスクトップをサーバーシステム１１０に「チェックイン」したい又はする必要があるかもしれない。この時、仮想マシン１２８は、「電源オフ」され、仮想化ソフトウェア １２７はサーバー１１０に接続し、デルタディスク１３４をサーバーのデータストレージ１４０にコピーして、デルタディスク１４４を作る。一実施例においては、仮想マシンは、電源オフされる代わりに、サスペンドされてもよく、ＶＭ状態１４６はサーバーシステム１０にアップロードされる。デルタディスク１３４又はデルタディスク１３４プラス状態１４６のコピーの後、デルタディスク１３４、１４４は、仮想ディスク１３２、１４２にそれぞれマージされる。「マージ」は、それぞれのデルタディスクに格納されるディスク書き込みが仮想ディスクファイル１３２、１４２にそれぞれ書き込まれることを意味する。このチェックイン手順の後、仮想ディスク１３２、１４２それぞれは、同一又は少なくとも論理的に同等である。これにより、ユーザーは、仮想マシン１２８の離れたときの状態の仮想マシン１１８を使って、演算処理を開始してもよい。
【００２１】
今から更に詳細に説明されるが、上述したチェックイン、チェックアウト機能の基本的な動作について、様々な向上や最適化が行われることができる。
【００２２】
図３Ｃは、拡張可能な ＶＤＩシステム１００のより詳細な図である。サーバーシステム１１０に接続した物理ディスク１４０に存在する１つ以上のファイル１４１によって、ユーザーデスクトップが定義される。ファイル１４１は、ポリシー１４９、仮想ディスク１４２、デルタディスク１４４、及びＶＭ状態１４６のファイルを含む。ポリシーは、データベースを使う、及び／又は、仮想ディスク１４２にメタデータとして埋め込まれているか関連付けられている設定ファイルによって、記憶することができる。追加的なデスクトップファイル１４８は、対応するユーザー又はユーザーのグループによってアクセス可能な追加的なデスクトップを定義するために、提供されてもよい。
【００２３】
図３Ｃに示されるように、クライアントシステム１２０は、サーバーシステム１１０の管理サーバー１１２と通信するＶＤＩクライアント１２２を含む。管理サーバー１１２は、クライアント１２０のユーザーを認証し、ユーザーデスクトップへのアクセスの要求を処理し、ポリシー１４９を実施する。ポリシー１４９は、特定のデスクトップが、誰に対してどのような状況のもとに提供可能となってもよいかを定義する。例えば、ユーザーの場所又はグループ又は要求されるサービスに基づいたポリシーであるグローバルポリシーも設定されているかもしれなくとも、ポリシー１４９は要求を行うユーザーに固有のものであってもよい。
【００２４】
一実施例においては、管理サーバー１１２は、上述のように複数のサーバーマシンを含んでもよいサーバーシステム１１０のその他のコンポーネント及びクライアントシステム１２０にネットワークを介して通信する別個の物理的なコンピュータシステムにインストールされるサーバーアプリケーションである。この例においては、ユーザーがクライアントシステム１２０のＶＤＩクライアント１２５と対話する時、ユーザーと関連付けられたデスクトップのためにサーバー１１０にネットワーク１３を介して要求が送られる。上述したように、サーバーシステム１１０は、それぞれが１つ以上のユーザーに対応する複数のＶＭ（１つのみが示される）を含んでもよい。管理サーバー１１２は、ユーザーの要求を受信し、ユーザー及び／又は要求を認証し、ＶＭ１１８を必要に応じて開始又は再開し、ＶＤＩクライアント１２５をリモートデスクトップ サーバー１１５に接続する。
【００２５】
ＶＤＩクライアント１２２は、プレゼンテーションレイヤー１２４を含む。プレゼンテーションレイヤー１２４は、ユーザーがＶＤＩクライアント１２２つまりサーバーシステム１１０と対話するグラフィカルユーザーインターフェースを提供する。一実施例においては、ＶＤＩクライアント１２２は、インターネットブラウザの中又はインターネットブラウザと連動して実行される。
【００２６】
ある時において、図３Ａ及び図３Ｂを参照して上述されたように、ユーザーはデスクトップに「チェックイン」又は「チェックアウト」したいかもしれない。この場合、仮想ディスク又はデルタディスクは、（ユーザーがデスクトップに「チェックイン」しているのかそれとも「チェックアウト」しているかによって）クライアントシステム １２０からサーバーシステム１１０にコピーされるか、又は逆にサーバーシステム１１０からクライアントシステム １２０にコピーされる。もし、ユーザーが仮想ディスクのローカルコピーを有しないコンピュータにデスクトップをチェックアウトするならば、デルタディスク１４４は、サーバーシステムの仮想ディスク１４２にマージされてもよく、仮想ディスク全体は、ユーザーのローカルクライアントシステム１２０にコピーされる。仮想ディスクが極めて大きくなり得るため、この初期のチェックアウトは、大量のデータと潜在的に制限されたバンド帯域のために、極めて時間のかかるものである。次回のチェックイン及びチェックアウト手順中に送信されるデルタディスクでさえ、ユーザーアクティビティによっては極めて大きくなり得る。例えば、新しいアプリケーションはインストールされてもよく、又は、既存のアプリケーション又はオペレーティングシステムのコンポーネントは、広範囲にアップデート又はパッチを当てられてもよい。
【００２７】
一実施例においては、ユーザーデスクトップのチェックイン及びチェックアウトに要求される時間は、例えば、ユーザーが仮想マシンと対話している際にユーザーアクティビティや仮想マシンの動作に干渉せずに、データをクライアントシステム１２０とサーバーシステム１１０の間でバックグラウンドで送信することにより、減らすことができる。これは、バックグランド同期又はバックグラウンドデータ転送と呼ばれてもよい。バックグランドデータ転送は、単にＶＭ１１８へのアクセスが許可されただけのクライアントシステム１２０のユーザーに応答して、自動的に行われてもよい。このように、仮想ディスク１４２の正確で最新の描写は、ユーザーの演算処理経験を顕著なほど減ずることなく、クライアントシステム１２０から又はクライアントシステム１２０へ転送されてもよい。ユーザーが新しいクライアントシステム１１０からリモート作業を始める時、仮想ディスク１４２の完全なコピーがクライアントシステム１２０の仮想ディスク１３２として準備完了になるまで、仮想ディスク１４２はバックグラウンドで転送されてもよい。その後、仮想ディスク１４２への変更はクライアントシステム１２０へバックグラウンドで転送され、デルタディスク１３２のビルドが開始される。ユーザーがデスクトップをチェックアウトすると決定すると、少なくとも仮想ディスク１４２への変更の大部分は、クライアントシステム１２０へ既に転送されているはずである。同様に、ユーザーがデスクトップをチェックインすると決定すると、少なくとも仮想ディスク１３２への変更の大部分は、クライアントシステム１１０へ既に転送されているはずである。
【００２８】
ユーザーが、デスクトップにおいて、セッションからログオフすると決めると、デルタディスク１４４とデルタディスク１３４の残存する差分は、最終的な変更を送信することにより解決される。クライアントシステム１２０とサーバーシステム１１０の通信の完了の後、デルタディスク１４４の表現される変更は、仮想ディスク１４２に書き込みされてもよい。一実施例においては、仮想ディスク１４２を更新する最中にＶＭ１１８の安定状態を確実にするためにＶＭ１１８の動作が終了させられた後に、これが起こる。ＶＭ１１８の動作の終了は、ＶＭ１１８の電源オフ又はＶＭ１１８の動作のサスペンドを含んでもよい。ＶＭの電源オフは、典型的には、ＶＭが実行されるゲストオペレーティングシステムの電源オフ手順を実行することを含む。この手順においては、プロセスは終了し、現在メモリーに存在する一時的又はキャッシュされたデータがディスクに書き込まれる。ＶＭが電源オフされる時、状態情報はほとんど存在しないか全く存在しない。一方、サスペンド動作は、実行の停止と、ＶＭ状態ファイル１４６への書き込みによって仮想マシンの状態を保存することを含む。
【００２９】
デルタディスク１４４が仮想ディスク１４２にマージされた後、デルタディスク１４４は削除されてもよく、削除用にマークされてもよく、又はもはや有効ではないとして特定されてもよい。仮想ディスク１３２と仮想ディスク１４２の一貫性を保ってそれぞれのディスクへの変更を同期と呼ぶ。上述の仮想マシン１１８の動作の停止を参照して上述されたのと同様にしてＶＭ１２８のローカル実行が停止された後、このようにしてユーザーの仮想マシンは同期されてもよい。
【００３０】
管理サーバー１１２は、仮想マシン１１８と同期されていない仮想マシン１１８に対応する仮想マシン１２８が無いということが確実になるまで、仮想マシン１１８の動作を排除するポリシーを確立又は実施してよい。つまり、もし、ユーザーがデスクトップとオフラインで対話した場合、デルタディスク１３４を作成させ、管理サーバー１１２は、デルタディスク１３４に表わされる変更がサーバーシステム１１０に送信され仮想ディスク１４２にマージされるまで、ＶＭ１１８の使用を中止してもよい。
【００３１】
ユーザーデスクトップに対応する情報の同期を維持することは、ユーザーデスクトップでポリシー管理を実行することを含んでもよい。ポリシー１４９の例としては、ユーザーのデスクトップのコピーがクライアントシステム１２０に転送されてよいかどうか又はどのような条件で転送されてよいかについての情報、サーバーシステム１１０にチェックインされるまでにデスクトップがどれだけの時間チェックアウトされていたか、仮想マシン１２８／１１８の使用の制限、等が挙げられる。仮想化ソフトウェア １２７及び／又はＶＤＩクライアント１２２は、例えば、仮想ディスク１３２や関連付けられたデルタディスクに記憶されたデータに許可なくアクセスすることを防ぐ暗号化を使用するなどの、確立されたポリシーを実施するように構成されていてもよい。
【００３２】
一実施例においては、ユーザーがＶＤＩクライアント１２２を開始すると、ユーザーは認証情報を要求するログインスクリーンを提示されてもよい。そして、ＶＤＩクライアントは、認証情報をリモートデスクトップサーバー１１２などのサーバーシステム１１０に通信する。リモートデスクトップサーバー１１５は、ユーザーの認証を確認し、ユーザーの認証情報に対応する既存のデスクトップの要求を管理サーバー１１２に送る。管理サーバー１１２は、リモートデスクトップ サーバー１１５から要求を受信し、提供されたユーザー識別子をマッピングテーブル１１４と比較する。マッピングテーブル１１４は、ユーザー識別子をサーバーシステム１１０の１つ以上の仮想マシンと関連付ける。管理サーバー１１２は、ユーザー識別子に関連付けられた仮想マシンを特定した後、管理サーバー１１２は、対応するデスクトップへのリモートユーザーアクセスのために接続情報を提供するか、又はＶＤＩクライアント１１０とリモートデスクトップ サーバー１１５の間の接続を容易にする。
【００３３】
別の実施例では、サーバーシステム１１０に送信されるユーザー要求は、ローカルデスクトップ状態情報を含んでもよい。ローカル状態情報は、リモートデスクトップサーバー１１５からの問い合わせに応答して要求とは別に提供されてもよい。ローカル状態情報は、ユーザーのローカルクライアントシステム１２０とサーバーシステム１１０の差分を特定するのを助ける情報を含んでもよい。例えば、ローカル状態情報は、ユーザーがオフラインでデスクトップにアクセスしてデルタディスク１３４が作られたかどうか、を含んでもよい。もし、デルタディスク１３４があるならば、管理サーバー１１２は、仮想マシン１１８へのアクセスを許可する前に、差分の送信をバックグラウンドで開始する。もし、送信時間が長いと予測されるならば、ユーザーは、バックグラウンド同期の間に、ローカルＶＭ１２８に即座に接続されてもよい。もし、デルタディスク１３４が無く、デルタディスク１４４が存在するならば、ＶＭ１１８への接続が、付随する自動バックグラウンド同期とともに、許可されてもよい。
【００３４】
一実施例においては、バックグラウンドデータ転送は、クライアントシステム １２０がサーバーシステム１１０にアクセスしている間に自動的に発生する定期的な問い合わせへ応答して発生してもよい。別の実施例においては、バックグラウンドデータ転送は、クライアントシステム １２０のユーザーの要求によってのみ発生してもよい。例えば、ユーザーは、オフラインになる予測において、ローカルクライアントシステム１１０をサーバーシステム１１０に同期することを要求してもよい。ほとんどオフラインにならないユーザーにとっては、この特徴の使用は、ネットワーク資源の負荷を顕著に減らすこととなるかもしれない。ポリシー１４９は、継続的、定期的、又はユーザーによって開始される同期を要求、許可（例えば、ユーザーに決定させる）、又は防止してもよい。
【００３５】
図３Ｄに例示によって示される実施例においては、ユーザーデータ及びシステムデータは、別の仮想ドライブに保持される。この実施例においては、転送されるデータの量は、ユーザーデータだけをデルタユーザーデータディスク１３５又は１４５に書き込むことにより、更に減らせるかもしれない（ユーザーがデスクトップにローカルからアクセスしているか、リモートからアクセスしているかによる）。例えば、サーバーシステム１１０のユーザーデスクトップのための情報は、物理ディスク１５０上のディスクイメージファイルとして存在してもよい、システムディスク１５２に記憶されるシステム情報として分類されてもよく、ユーザーデータは、仮想ユーザーデータディスク（ＵＤＤ）１４３に記憶されてもよい。同様に、それらの２つのディスクへの変更は、２つの別個のデルタディスク（つまりデルタシステムディスク１４４とデルタＵＤＤディスク１４５）に記憶されてもよい。
【００３６】
一実施例においては、システム情報は、アプリケーション情報７８とゲストシステムソフトウェア７２を含む（図２）。一方、ユーザーデータは、ドキュメント、設定、ユーザー固有のプロパティ等を含む。Ｗｉｎｄｏｗｓ（登録商標）、ＯＳＸ（登録商標）、及びＧｎｕ−Ｌｉｎｕｘ（登録商標）などのほとんどのオペレーティングシステムは、別のディスク上のユーザーデータやシステムを維持する設備を含む。システムデータとユーザーデータの両方の個別のデルタイメージを作るための仮想化を使用して、管理サーバー１１２は、データの転送を仮想ＵＤＤ１４３に記憶されているユーザー情報のみに制限するように構成されてもよい。この場合、システムに行われた（従って、デルタシステムディスク１４４に書き込まれた）どのような変更も無視され、従って、この情報が転送されないため、システムディスク１５２は、ユーザーのデスクトップのそれぞれのチェックイン又はチェックアウトをもって、知られている良い状態に戻る。更に、クライアントシステム１１２及びサーバーシステム１１０の間で転送される情報の量が、ユーザーデータのみに減らされてもよい。
【００３７】
一実施例においては、仮想マシンの動作の最中に別個のデルタシステムディスク１４４に保持された、システムディスク１５２への変更は、そのユーザーに発生したどのようなポリシーに従ってもよい。即ち、それらは、破棄されてもよく、又は、システムデータ、オペレーティングシステム、及びアプリケーションを含む仮想ディスクにマージされて戻されてもよい。もし、デルタシステムディスク１４４が破棄されるならば、システムディスク１５２は、どのような特定のユーザーセッションの最中にユーザーがシステムに加えたどのような変更にも関わらず、知られている良い状態で持続するということにおいて、「持続的システムディスク」であると考えられてもよい。
【００３８】
例えば、オペレーティングシステム又はアプリケーションがアップデートされるか、又は製造者が新しいリリースを発行する時などに、システムディスクへの変更は、パッチファイル１５４にパッケージ化されてもよい。それらの変更は、現在のシステムディスクとアップデートされたシステムディスクの差分を定義するパッチファイル１５４を作ることにより、システムディスク１５２に適用されてもよい。パッチファイルは、パッチを適用されたシステムディスクを作り、またクライアントシステムのシステムディスク１３２の効率的なパッチ適用のためにクライアントシステム １２０へ送信されるために、システムディスク１５２に適用されてもよい。
【００３９】
ここに説明される他の実施例と共存し得る他の実施例において、削除されたファイルと関連付けられるセクターを特定するために、ファイルシステム情報が分析される。そして、転送されるデータの量を更に減らすためにデルタディスクイメージを転送する時に、それらのセクターは省略されてもよい。分析と省略はデルタディスクの転送の時に起こることがあり、又は分析と省略は別個のステップとして実行されることがあり、デルタディスクを送信前に事前処理してもよい。この場合、仮想ディスクのコピーは同一でなくてもよいが、論理的に同等である。
【００４０】
図４は、ユーザーをリモートデスクトップに自動バックグラウンド同期で接続する手順の例を示すフローチャート２００である。スタートブロック２０２に示されるように手順は開始し、手順はオペレーション２０４まで進み、クライアントシステム １２０のユーザーの認証情報に対応するデスクトップにアクセスするために要求はサーバーシステム１２０によって受信される（図３Ａ〜図３Ｄ）。この要求の受信に応答して、手順はオペレーション２０６まで進み、サーバーシステム１１０がユーザー認証を確認する。もし認証が無効であるならば、手順はオペレーション２０８に進み、アクセスは拒否され、手順は終了する。もし、認証が有効であるならば、手順はオペレーション２１０に進み、ユーザーはユーザー識別子に対応するデスクトップに接続する。ユーザーをサーバーシステムで実行される仮想マシンのデスクトップに接続した後、手順はオペレーション２１２に進み、サーバーシステム１１０は、クライアントシステム１２０がユーザーのデスクトップに対応する仮想ディスクの正しいコピーを有するかどうか判断する。もし、有していなければ、手順はオペレーション２１４に進み、仮想ディスク１４２はバックグラウンドでクライアントシステム１２０に送信される。バックグラウンドとは、即ち、ユーザーがサーバーシステムの仮想マシン１１８にアクセス・対話している最中である。このオペレーションは、クライアントシステム１２０が対応するデスクトップのための仮想ディスクの完全な正しいコピーを提供されるまで続く。
【００４１】
もし、オペレーション２１２で、クライアントシステムが仮想ディスクの正しいコピーを有すると判断されたならば、手順はオペレーション２１６に進む。以前に述べたように、サーバーシステムの仮想マシンとのユーザー対話の最中に、仮想ディスクへの変更は、デルタディスクに書き込まれる。オペレーション２１６において、サーバーシステム１１０は、クライアントシステムがデルタディスクイメージの最新のコピーを有しているかどうか判断する。もし、有していなければ、手順はオペレーション２１８まで進み、サーバーシステムのデルタディスクがユーザーのクライアントシステムにコピーされる。ユーザーが仮想マシンと対話し、従って仮想ディスクへの変更を発生させる限り、この手順は発生する。ある時において、ユーザーは、サーバーシステムで実行される仮想マシンからログオフ、仮想マシンを電源オフ又はサスペンドしてもよい。この時、あらゆる残存する変更がクライアントシステムにコピーされる。そして、手順は、完了ブロック２２０で示されるように終了する。
【００４２】
一実施例においては、バックグラウンド同期は、クライアントシステム１２０及びサーバーシステム１１０の間の通信セッションの間いつでも開始されてもよい。バックグラウンド同期は、（例えば、管理者によって設定されるポリシーに従って）自動的又はユーザーの要求で発生してもよい。
【００４３】
例えば、要求又はポリシーは、ユーザーのクライアントシステムは定期的にアップデートされることを指定してもよい。この場合、サーバーシステム１１０は、最新のアップデートから指定された時間が経過したかどうか判断する。厳しい時間管理の代わりに、アップデート時間を特定する他の手段が実装されてもよい事はもちろんである。例えば、時計が経過した時間を計測することができ、又は、ユーザーがアイドル状態つまり一定時間システムとの対話が無い状態になるまでシステムが待機してもよい。もしクライアントシステムが最新の状態ではなく、サーバーシステム１１０の仮想ディスクの現在の状態つまりデルタディスク１４４（図３Ａ〜図３Ｄ）が存在するかどうかによって、クライアントシステム１２０と協調してシステム１１０は仮想ディスク１４２及び／又は仮想ディスク１４２への変更を含むデルタディスク１４４の送信を開始する。
【００４４】
一実施例においては、デルタディスク１４４への新しい変更は、ＶＭ１１８が実行されている時に、デルタディスク１４４に追加され、定期的にユーザーシステム１２０に送信される。サーバーシステム１１０は、デルタディスクのどれだけがクライアントシステム１２０に転送されたかについて経過を追い、それぞれのアップデートインターバルにおいて追加された部分だけが送信されるようにする。
【００４５】
別の実施例では、それぞれのアップデートインターバルにおいて、現在のデルタディスクがクローズされ、新しいデルタディスクが作られる。新しい変更が新しいデルタディスクに書き込まれる間に、前回のデルタディスクに含まれる情報への変更を含む現在のデルタディスクが送信される。このようにして、一連の連鎖したスナップショットが作られクライアントシステム１２０に送信され、クライアントシステム１２０は一連の連鎖したスナップショットを再構成又はマージして１つのデルタディスクにするか直接仮想ディスクにすることができる。一実施例においては、クライアントシステム１１０への送信の前に、それぞれのデルタディスクは、スキャンされるか、及び／又はウイルス等のマルウェア(malware)の除去がなされる。このスキャンは、目立たないようにバックグラウンドで実行されてもよい。
【００４６】
図５は、デスクトップチェックアウト手順を実施する方法を例示によって表わすフローチャート２５０を示す。手順は、スタートブロック２５２で開始し、オペレーション２５４へ進み、サーバーシステムはアクセスを要求するユーザーを認証する。実装によっては、ユーザーは、この時にリモートデスクトップに即時に接続してもよく接続しなくてもよい。手順は、オペレーション２５６に進み、サーバーシステムはユーザーからの要求を受信し、デスクトップをチェックアウトする。そして、手順は、オペレーション２５８に進み、サーバーシステムは、ポリシー及びユーザーパミッションがユーザーのデスクトップをユーザーにチェックアウトすることを許しているかどうか判断する。もし、そうでなければ、手順はオペレーション２６０に進み、現在のところユーザーがデスクトップをチェックアウトする権限がない旨のメッセージがクライアントシステムに送信される。そして、手順は、終了ブロック２７４で示されるように終了する。
【００４７】
もし、オペレーション２５８において、ユーザーが本当にデスクトップをチェックアウトするパミッションを有すると判断されると、手順はオペレーション２６２に進み、ユーザーのデスクトップが例えば異なるクライアントシステムに既にチェックアウトされそれ以後チェックインされていないかどうかが判断される。例えば、仮想ディスクイメージを含むファイルの中に又はそのファイルのステータスフィールド、メタデータフィールド、又はサブセクション又はユーザーデータベースに、ユーザーデスクトップ状態は保持されてもよい。もし、ユーザーのデスクトップが現在チェックアウトされているならば、手順はオペレーション２６０に進み、サーバーシステム１２０はチェックアウトアクセス拒否メッセージをクライアントシステム１２に送信する。これにより、同時にユーザーのデスクトップの１つのコピーのみがチェックアウトされることを確実にする。一実施例においては、仮想マシンの「枝分かれ」と同期の喪失を招く恐れがある、デスクトップが「チェックアウト」状態でのデスクトップへのリモートアクセスは、ユーザーができないようになる。もし、オペレーション２６２において、デスクトップが既に現在チェックアウトされていないと判断されると、手順はオペレーション２６４に進み、もし実行中ならば、ユーザーの仮想マシンは停止させられる。仮想マシンの停止は、電源オフ、仮想マシンのサスペンド、及び状態をディスクに保存することを含んでもよい。
【００４８】
そして、手順は、オペレーション２６６に進み、クライアントシステムは、クライアントシステムがシステムディスクの現在のコピー及びサーバーシステムに存在するかもしれないデルタディスクを有するかどうか判断するように問い合わせを受ける。もし、有しなければ、手順はオペレーション２６８に進み、仮想ディスク及びデルタイメージが必要に応じてコピー又はアップデートされる。そして、手順はオペレーション２７０に進む。もし、オペレーション２６６において、クライアントシステムがデルタディスク及び仮想ディスクの現在のコピーを既に有すると判断されるなら、手順はオペレーション２７０に直接進む。
【００４９】
オペレーション２７０において、ユーザー及びメタデータがアップデートされ、現在のユーザーのデスクトップの「チェックアウト」状態を反映する。手順は、オペレーション２７２に進み、ユーザーは、ローカルクライアントシステム上のローカル仮想マシンで実行されるデスクトップへのアクセスを許可される。そして、手順は、終了ブロック２７４で示されるように終了する。
【００５０】
一実施例においては、デスクトップがクライアントシステムにチェックアウトされていても、ユーザーはデスクトップにリモートアクセスすることを許可されてもよい。デスクトップはチェックアウトされた状態かもしれないが、これは、クライアントシステム１２０のユーザーがデスクトップにリモートアクセスするためにサーバーシステム１１０のリソースを使うことを妨げるものではない。例えば、クライアントシステム１２０は、ハードドライブの故障又はウイルス／マルウェアによる感染などのシステム障害を経験するかもしれない。この場合、ユーザーは、デスクトップをサーバーシステムにチェックインしていないにも関わらず、サーバーシステム１１０の仮想マシンに対応するローカル仮想マシンアクセスを破棄することを選んでもよい。又は、ユーザーは、サーバーシステムへのあらゆる変更が失われるという理解をした上で、サーバーシステムのデスクトップにアクセスすることを許されてもよい。例えば、もし、ユーザーがクライアントシステムにアクセスできない場合、即ち、ユーザーが例えばファイルを読んだり電子メールにアクセスしたり会社のイントラネットサイトにアクセスしたりするためにコンピュータから遠くにいるけれどもデスクトップにアクセスする必要がある場合であっても、ユーザーは、新しく保存されたデータとの一貫性の無い古いバージョンではあるもののデスクトップにリモートアクセスをすることができる。
【００５１】
別の実施例では、システムは、自動的に又はユーザー要求に基づいて、データストレージ１４０、即ちデルタディスク１４４又は１４５（図３Ａ〜図３Ｄ）に含まれる情報についてウイルス／マルウェアスキャンを行ってもよい。ウイルス／マルウェアスキャンの結果は、システムにログされてもく、及び／又はクライアントシステム１２０に提供されてもよく、又は（図示されない）結果ファイルに記録されてもよい。同様に、クライアントシステム１２０のユーザーは、ローカルディスク１３４のウイルス／マルウェアスキャンを実施するために、データストレージ上のローカルデルタディスクのコピーを作ることによりサーバーシステム１１０を使ってもよい。ウイルス／マルウェアスキャンが完了した後、ローカルデルタディスクのコピーは削除されてもよく、又は仮想ディスク１４２にマージされてもよい。
【００５２】
ここに記載される様々な実施例は、コンピュータシステムに記憶されるデータを含むコンピュータに実装される様々な動作を採用してもよい。例えば、これらの動作は、物理的な数量の物理的な操作を必要としてもよく、必ずではないが通常は、それらの数量は電気的又は磁気信号の形態であってよく、それら又はそれらの表現は、記憶、転送、合体、比較、又は操作されることができる。更に、それらの操作は、しばしば、作る、特定する、判断する、又は比較するなどの単語で表わされる。ここで記載される、発明の１つ以上の実施例の部分を形成するあらゆる動作は、有益な機械動作であってもよい。更に、発明の１つ以上の実施例は、これらの動作を行う装置にも関する。装置は、特定の要求された目的のために特別に構成されてもよく、又は、装置は、コンピュータに記憶されるコンピュータプログラムによって選択的に作動させられるか設定される汎用コンピュータであってもよい。特に、様々な汎用機械は、ここの教示に従って書かれるコンピュータプログラムとともに使用されてもよく、又は、様々な汎用機械は、要求される動作を行うより特化した装置を構成するために更に便利であってもよい。
【００５３】
ここに記載される様々な実施例は、ハンドヘルドデバイス、マイクロプロセッサーシステム、マイクロプロセッサーベース又はプログラム可能な民生電子機器、ミニコンピュータ、メインフレームコンピュータ等を含む他のコンピュータシステム構成で実施されてもよい。
【００５４】
本発明の１つ以上の実施例は、１つ以上コンピュータプログラムとして、又は１つ以上のコンピュータ読み込み可能なメディアに実施される１つ以上のコンピュータプログラムモジュールとして実装されてもよい。コンピュータ読み込み可能なメディアという用語は、その後コンピュータシステムに入力されることができるデータを記憶可能で任意のデータストレージシステムを意味する。コンピュータ読み込み可能なメディアは、コンピュータによって読み込みが可能になるようにコンピュータプログラムを実施する、既存又は続いて開発される任意の技術に基づいてもよい。例えば、コンピュータ読み込み可能なメディアとしては、ハードドライブ、ネットワーク接続ストレージ（ＮＡＳ）、リードオンリーメモリー、ランダムアクセスメモリ（例えば、フラッシュメモリーデバイス）、ＣＤ（コンパクトディスク）、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、又はＣＤ−ＲＷ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、磁気テープ、及びその他の光学及び非光学データストレージシステムが挙げられる。コンピュータ読み込み可能なメディアは、コンピュータ読み込み可能なコードが分散した形態で記憶及び実行されるように、ネットワーク接続コンピュータシステムを介して配布されることもできる。
【００５５】
本発明の１以上の実施例は明確な理解のために詳細に説明されたが、請求項の範囲において変更や変形がなされ得ることは明らかである。つまり、記載された実施例は制限的ではなく例示として解釈されなければならない。請求項の範囲は、ここに与えられる詳細に制限されてはならず、請求項と同等の範囲内で変更されてもよい。請求項においては、請求項に明示的に記載されない限り、要素及び／又はステップは動作の特定の順番を意味しない。
【００５６】
更に、記載された仮想化方法は、仮想マシンは特定のハードウェアシステムと一致するインターフェースを提供すると一般的に考えられるが、当業者は記載された方法が特定のハードウェアシステムに直接対応しない仮想化に関連して使われてもよいと認識する。ホストされる実施例、ホストされない実施例として実装される様々な実施例による仮想化システム、又はその２つの間の違いを不鮮明にしがちな実施例として実装される様々な実施例による仮想化システムは、全て想定される。更に、様々な仮想化動作が、ハードウェアに全体的に又は部分的に実装され得る。例えば、ハードウェア実装は、安全な非ディスクデータへのストレージアクセス要求の変形のための参照テーブルを採用してもよい。
【００５７】
仮想化の程度に関わらず、多くの仮想化、変形、追加、及び改良が可能である。従って、仮想化ソフトウェアは、仮想化機能を行うホスト、コンソール、ゲストオペレーティングシステムのコンポーネントを含む。複数のインスタンスが、１つのインスタンスとしてここに記載されるコンポーネント、動作、又は構造に提供されてもよい。最後に、様々なコンポーネント、動作、及びデータ記憶の境界は、やや任意のものであり、特定の動作は特定の例示的な構成の文脈で示される。その他の機能性の配置は想定されるものであり、発明の範囲に含まれてもよい。一般的に、例示の構成における別個のコンポーネントとして示される構造や機能性は、合体した構造又はコンポーネントとして実装されてもよい。同様に、１つのコンポーネントとして示された構造や機能性は、別個のコンポーネントとして実装されてもよい。これら及びその他の変形例、変更、追加、及び改良は、添付の請求項の範囲に含まれてもよい。
【図１】
2011513816.tif 000003
【図２】
2011513816.tif 000004
【図３Ａ】
2011513816.tif 000005
【図３Ｂ】
2011513816.tif 000006
【図３Ｃ】
2011513816.tif 000007
【図３Ｄ】
2011513816.tif 000008
【図４】
2011513816.tif 000009
【図５】
2011513816.tif 000010
【手続補正書】
【提出日】平成23年1月24日(2011.1.24)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】変更
【補正の内容】
【００１６】
サーバーシステム１１０は、サーバーシステム１１０にアクセス可能な物理ディスク１４０を含んでいるか通信可能である。物理ディスク１４０は、対応する仮想マシンのディスクイメージファイルであり、ユーザー仮想ディスクに記憶するために仮想化ソフトウェア１１７によって利用される。ユーザーがＶＭ１１８で作業する時、ＶＭ１１８は書き込みを仮想ディスク１４２に発行してもよい。仮想ディスク１４２は、物理ディスク１４０上の１つ以上のファイルとして存在している。しかし、変更を直接仮想ディスク１４２に書き込む代わりに、仮想化ソフトウェア１１７は、書き込みをデルタディスク１４４にリダイレクトするように構成されてもよい。デルタディスク１４４は、リドゥーログ又はその他の「差分」ファイルを有してもよい。本質的に、デルタディスク１４４は、実際に仮想ディスク１４２を変更することなく、仮想ディスク１４２への変更のリストを保持する。デルタディスクは、仮想化の技術において知られており、例えば、米国特許第７，３５６，６７９号に更なる詳細が記載されている。仮想マシン１１８が読み込みを発行する時、仮想化ソフトウェア１１７は、デルタディスク１４４にアクセスし、そこにデータがあるかどうか判断する。もし、そこにデータが無いならば、仮想マシン１１８は、仮想ディスク１４２、つまり、デルタディスク１４４の親となるディスクイメージにアクセスする。そして、あたかも単純に物理デバイスのディスク読み込みが発生したかのように、仮想化ソフトウェア１１７は、データを仮想マシン１１８に届ける。
【国際調査報告】
2011513816.tif 000011
2011513816.tif 000012