概して説明されるように、本開示は、1台または複数のクライアントコンピューティングデバイスと、プログラム実行サービス(PES)プラットフォームの1台または複数のリモートデータセンタコンピュータによってホストされるバーチャルデスクトップインスタンスとの間のリモートコンピューティングセッションの生成及び管理を対象とする。いくつかのデータセンタは、PESのカスタマによるデータセンタのリソースの活用を促進できる単一のPESプラットフォームの一部として編成されてよい。いくつかの実施形態では、PESは数百台のまたは数千台のデータセンタコンピュータを含んでよい。
本開示の態様は、PESプラットフォームによるバーチャルデスクトップインスタンスの管理に関して説明される。クライアントコンピューティングデバイスは、1つまたは複数のリモートコンピューティングセッション中にバーチャルデスクトップインスタンスにアクセスできる。バーチャルデスクトップインスタンスはユーザーに、クライアントデスクトップ環境の機能のすべてであるが、クライアントによってアクセスされるサービスの集中型のプロビジョニングを提供できる。
第1の例示的な例に関して、ユーザーは、クライアントコンピューティングデバイスを介してリモートコンピューティングアプリケーション等のアプリケーションをロードする要求を送信する。要求の受信の後で、クライアントコンピューティングデバイスはリモートコンピューティングセッションを開始するためにPESプラットフォームと通信する。一実施形態では、クライアントコンピューティングデバイスとPESプラットフォームとの間の通信はログイン情報を含んでよい。他の実施形態では、通信はリソース使用情報、処理要件、またはクライアントコンピューティングデバイスのユーザーのためのリモートコンピューティングセッションの持続時間または条件に関する規則を識別する情報を含んでよい。クライアントコンピューティングデバイスはさらに、デバイスリソース(例えば、処理パワー、メモリ、ストレージ、ネットワーク使用等)の現在の可用性または将来の可用性を含むが、これに限定されるものではないデバイスの状態に関係する多様な情報を通信してよい。受信された情報を使用して、PESプラットフォームは1つまたは複数のリモートコンピューティングセッションでの実行のために1つまたは複数のバーチャルデスクトップインスタンスを識別してよい。一例では、PESプラットフォームは、データセンタコンピュータ上でバーチャルマシンインスタンスをインスタンス化できる、またはインスタンスさせることができる。バーチャルマシンインスタンスは、オペレーティングシステムを含む。クライアントコンピューティングデバイスは、次いでバーチャルマシンとのリモートコンピューティングセッションを確立し、オペレーティングシステムのユーザーインタフェース(例えば、グラフィックユーザーインタフェース等のオペレーティングシステムの出力、音声、他)はクライアントコンピューティングデバイスに送信し、ユーザーに提示できる(例えば、グラフィックユーザーインタフェースは、クライアントコンピューティングデバイスのディスプレイ上でレンダリングされる)。オペレーティングシステムは、デスクトップ背景、スクリーンセーバー、デスクトップレイアウト、ポインタの好み、音声の設定等を設定することによって、ユーザーのためにバーチャルデスクトップインスタンスを構成するためにユーザーと関連付けられ、PESによってアクセス可能なデスクトップストアに記憶されるデスクトッププロファイルを使用してよい。マウス及びキーボードの活動等のユーザー入力は、次いで該活動がバーチャルマシンで直接的にユーザーによって実行されるかのように、バーチャルマシンに送信し、オペレーティングシステムに投入することができる。
PESプラットフォームは、クライアントコンピューティングデバイスの、リモートコンピューティングセッション中のクライアントコンピューティングデバイスでのバーチャルデスクトップインスタンスとの対話と関連付けられたデータを受信または生成してよい。データは、ユーザーデータ及び好み、ファイル等を含んでよい。PESプラットフォームは、データを受信すると、バーチャルデスクトップインスタンスと関連付けられたデスクトップストアにデータを保存してよい。いくつかの実施形態では、デスクトップストアはボリューム上に、または別の論理ブロックストレージデバイス上に実装されてよい。いくつかの実施形態では、PESはデータのバックアップコピーを作成してよい、またはデータを中央レポジトリに記憶してもよい。保存されたデータは、次いでバーチャルデスクトップインスタンス、バーチャルデスクトップインスタンスをホストするサーバ、ネットワーク等の故障等...の故障のために中断されたリモートコンピューティングセッションを復元するために使用されてよい。PESプラットフォームは、ユーザーデータを保存することによって、リモートコンピューティングセッションの再確立が、クライアントコンピューティングデバイスのユーザーに対する遅延及び混乱は最小で発生することを保証する。
別の例示的な例では、提供されたバーチャルデスクトップインスタンスは、PESのユーザープロファイルストアに記憶されるユーザープロファイルに従って構成されてよい。バーチャルデスクトップインスタンスの構成は、監視されるインスタンスの使用に従って調整されてもよい。いくつかの例では、ユーザープロファイルはユーザーの使用を管理するエンティティと関連付けられた管理者によって設定されてよい。ユーザープロファイルは、バーチャルデスクトップインスタンスの要件だけではなく、1つまたは複数のバーチャルデスクトップインスタンスを実行するPESコンピュータと関連付けられた多様なメモリ要件及び処理要件も示してよい。例えば、ユーザープロファイルは、ユーザーがバーチャルデスクトップインスタンスを使用している間にアクセスを与えられるプログラムを示してよい。ユーザープロファイルは、リモートコンピューティングセッションと関連付けられる最大時間またはコストを示してもよい。PESはバーチャルデスクトップインスタンスを設置し、構成するときにユーザーのためのユーザープロファイルを考慮に入れてよい。さらに、設置及び構成の決定は、継時的なバーチャルデスクトップとのユーザーの対話に基づいて調整されてもよい。
別の例示的な例では、PESプラットフォームは、PESプラットフォームでデータセンタコンピュータの1台または複数の上のクライアントコンピューティングデバイスのコンピューティング環境のバックアップコピーを提供するために使用されてよい。以後、クライアントコンピューティングデバイスが不正アクセスされる場合、PESプラットフォームとの新しいリモートコンピューティングセッションを開始すると、ユーザーは、最初に使用されたクライアントコンピューティングデバイスのコンピューティング環境のバックアップコピーを利用できてよい。新しいリモートコンピューティングセッションでは、ユーザーは同じクライアントコンピューティングデバイスまたは別のクライアントコンピューティングデバイスからPESプラットフォームに接続してよい。
さらに別の例示的な例では、クライアントコンピューティングデバイスとPESプラットフォームとの間のリモートコンピューティングセッションは、クライアントコンピューティングデバイスで実行されるバーチャルデスクトップインスタンスのバージョンを提供するために使用されてよい。インスタンスのバージョンは、クライアントコンピューティングデバイスのオペレーティングシステム、メモリ、及び処理パワーの仕様の内の1つまたは複数に従って適応されてよい。バーチャルデスクトップインスタンスの適応されたバージョンがクライアントコンピューティングデバイスの上にコピーされた状態で、デバイスはPESプラットフォームからの切断後にもバーチャルデスクトップインスタンスと対話を続けてよい。その後、PESプラットフォームへの再接続時に、新しいバーチャルデスクトップインスタンスはクライアントコンピューティングデバイス上で実行された以前のバーチャルデスクトップインスタンスと同期してよい。
本開示に説明される実施形態の態様は、説明のために、バーチャルデスクトップインスタンス等のソフトウェアアプリケーションに対応する1つまたは複数のセッションの管理を説明することがあるが、当業者は本明細書に開示される技術が、オペレーティングシステムのプロセス及びサービスを含むが、これに限定されるものではない任意の数のソフトウェアプロセスに適用されてよいことを理解するだろう。さらに、本開示の多様な態様は例示的な例及び実施形態に関して説明されるが、当業者は、開示された実施形態及び例が制限的と解釈されるべきではないことを理解する。
図1は、通信ネットワーク104を介してサービスプロバイダコンピュータネットワーク105と通信するクライアントコンピューティングデバイス106を含んだネットワーク化されたコンピューティング環境100を示すブロック図である。クライアントコンピューティングデバイス106は、リモートオペレーティングシステム及びアプリケーションへのアクセスをユーザーに提供するために使用されてよい。例示的な実施形態では、クライアントコンピューティングデバイス106は、パーソナルコンピューティングデバイス、ラップトップコンピューティングデバイス、ハンドヘルドコンピューティングデバイス、端末コンピューティングデバイス、モバイル機器(例えば、携帯電話、タブレットコンピューティングデバイス、電子ブックリーダー等)、無線装置、多様な電子デバイス及び電子装置等を含む多岐に渡るコンピューティングデバイスに相当することがある。例示的な実施形態では、クライアントコンピューティングデバイス106は、広域ネットワークまたはローカルエリアネットワーク等の通信ネットワーク104上で通信を確立するために必要なハードウェア構成要素及びソフトウェア構成要素を含む。例えば、クライアントコンピューティングデバイス106は、インターネットまたはイントラネットを介した通信を容易にするネットワーキング設備及びブラウザソフトウェアアプリケーションを装備してよい。クライアントコンピューティングデバイス106は、中央演算処理装置及びアーキテクチャ、メモリ、大量記憶装置、グラフィック処理装置、通信ネットワーク可用性及び帯域幅等のさまざまなローカルコンピューティングリソースを有してよい。
一実施形態では、クライアントコンピューティングデバイス106は、リモートコンピューティングアプリケーション130を実行してよい。リモートコンピューティングアプリケーション130は、サービスプロバイダコンピュータネットワーク105によってホストされるバーチャルデスクトップインスタンスへのアクセスを要求してよい。また、リモートコンピューティングアプリケーション130は、クライアントコンピューティングデバイス106とサービスプロバイダコンピュータネットワーク105との間のリモートコンピューティングセッションを管理してもよい。さらに図1の参照を続けると、サービスプロバイダコンピュータネットワーク105は、PESプラットフォーム102を含むこともある。図1に示されているPESプラットフォーム102は、サービスプロバイダと関連付けられた1つまたは複数のデータセンタの論理的な関連に対応する。PESプラットフォーム102は、例えば、データセンタコンピュータ110等のいくつかのデータセンタコンピュータと関連付けることができる。各データセンタコンピュータ110は、1台または複数のバーチャルデスクトップインスタンス114をホストしてよい。データセンタコンピュータ110は、物理デバイス上でバーチャルマシンを実行することによってバーチャルデスクトップインスタンスをホストしてよい。バーチャルマシンは、オペレーティングシステム及びアプリケーションソフトウェアのインスタンスを実行してバーチャルデスクトップインスタンスを作成してよい。PES102によって実行される各バーチャルデスクトップインスタンスは、1台または複数のクライアントコンピューティングデバイスによってアクセスできる。
例証的に、データセンタコンピュータは、データセンタコンピュータがクライアントコンピューティングデバイス106によって直接的にアクセス可能とならないように、サービスプロバイダコンピュータネットワーク105内部でIPアドレス等のプライベートネットワークアドレスと関連付けられてよい。バーチャルデスクトップインスタンスは、サービスプロバイダコンピュータネットワーク105の端でゲートウェイによって利用可能にされてよい公衆網アドレスと関連付けられてよい。したがって、バーチャルデスクトップインスタンスは、公衆網アドレスを介してクライアントコンピューティングデバイスによって直接的にアドレス指定可能であってよい。当業者は、各データセンタコンピュータ110が、複数のバーチャルデスクトップインスタンスを実行するために、またはバーチャルデスクトップインスタンスを動的にインスタンス化するために、物理コンピューティングデバイスリソース及びソフトウェアを含むことを理解するだろう。係るインスタンス化は、クライアントコンピューティングデバイス106から等特定の要求に基づくことがある。
データセンタコンピュータ110は、インスタンスマネージャ122を含んでよい。インスタンスマネージャ122は、それぞれのインスタンス114と同じコンピュータ上、または別個のコンピュータ上にあってよい。インスタンスマネージャ122は、データセンタコンピュータ110で実行されるインスタンスの進行を追跡調査し、クライアントコンピューティングデバイスを介してインスタンス114と対話している間にユーザーによって作成されるデータのストレージを監視、及び調整し、データセンタコンピュータ110の、及びクライアントコンピューティングデバイス106上で実行中のリモートコンピューティングアプリケーションの全体的な健康及び状態を監視する。インスタンスマネージャ122は、データセンタコンピュータ110とクライアントコンピューティングデバイス106との間の多様なリモートコンピューティングセッションを効率的に管理するために、PESプラットフォーム102のデータセンタ管理構成要素101による追跡調査及び監視を通じて収集される情報を通信する。
図1を引き続き参照すると、サービスプロバイダネットワーク105は、ストレージサービスプラットフォーム103も含む。ストレージサービスプラットフォーム103は1台または複数のストレージサーバ107を含んでよい、または1台または複数のストレージサーバ107に接続されてよい。ストレージサーバ107は、バーチャルデスクトップインスタンスによって生成または活用されるデータを記憶するために使用されてよい。バーチャルデスクトップインスタンスによって生成または活用されるデータは、1つまたは複数のリモートコンピューティングセッションを介したクライアントコンピューティングデバイス106とPES102との間の対話に基づいてよい。
例証的に、ストレージサービスプラットフォーム103は、ホストされたバーチャルデスクトップインスタンス114と関連付けられた情報を論理的に編成し、デスクトップストアに維持できる。デスクトップストアで維持されるバーチャルデスクトップインスタンス114と関連付けられた情報は、ユーザーの好み、プログラムデータの実行と関連付けられた情報、ユーザーコンテンツ、ユーザーコンテンツに対する参照等を含むことがあるが、これに限定されるものではない。例えば、ストレージサービスプロバイダを通して含んだ、他のストレージデバイス上で音楽、ファイル等を記憶するためにユーザーによって使用されるフォルダは、それらのストレージ場所に対する参照を介してデスクトップストアにマッピングされてもよい。すなわち、これらのフォルダ内のファイルを開く要求等の入力/出力動作は、デスクトップストアにリダイレクトすることができる。したがって、ユーザーが自分のドキュメントフォルダに記憶されているファイルを開くことを試行するとき、要求はバーチャルデスクトップインスタンスで実行中のオペレーティングシステムによってデスクトップストアにリダイレクトできる。ユーザーによって作成されるデータに加えて、例えば、バックグラウンドピクチャ、フォント、アイコンの配列等のデスクトップのための構成情報を含んでよいユーザーのデスクトッププロファイルも、ユーザーのバーチャルデスクトップインスタンスと関連付けられたデスクトップストアに記憶される。以下により詳しく説明されるように、サービスプロバイダコンピュータネットワーク105は、データセンタコンピュータとは無関係にストレージサーバに記憶することによって、バーチャルデスクトップインスタンスを実行するデータセンタコンピュータ(複数の場合がある)110の故障、またはデータセンタコンピュータ(複数の場合がある)上でのバーチャルインスタンスの実行と関連付けられたエラーの影響を軽減できる。さらに、サービスプロバイダネットワーク105は、デスクトップストアに情報を維持することによって複数のバーチャルインスタンスとのクライアント対話を促進することもできる。いくつかの実施形態では、以下により詳細に説明されるように、1つのバーチャルデスクトップインスタンスが故障する場合、新しいインスタンスが起動され、故障したバーチャルデスクトップインスタンスに以前にアタッチされたのと同じデスクトップストアにアタッチされてよい。
論理的には、デスクトップストアは複数のサーバ全体で分散されてよく、デスクトップストアは異なるネットワーク領域内のサーバで性能のために複製されてよい、またはデスクトップストアはバックアップまたは障害性能のために独立した故障プロファイルを有する複数のサーバ全体で複製されてよい。すなわち、サーバは異なる電源または冷却システムにアタッチされてよく、サーバはデータセンタの異なる室内にまたは異なるデータセンタに位置してよい、及び/またはサーバは異なるルータまたはネットワークスイッチにアタッチされてよい。例証的に、いくつかの実施形態では、デスクトップストアは1台のストレージサーバ上にあってよく、デスクトップストアに対して行われる変更は異なるストレージサーバ上の別のデスクトップストアに複製されてよい。この複製がユーザーのデータのバックアップコピーを作成する。デスクトップストアが故障する場合、またはバーチャルデスクトップインスタンスがデスクトップストアに対するその接続を失う場合、PES102はバーチャルデスクトップインスタンスの接続をデスクトップストアからバックアップデスクトップストアに切り替える。
PESプラットフォーム102はさらに、ストレージサーバ107上の多様なデスクトップストア及びバックアップストアによって記憶されるデータを記憶するためのPESレポジトリ140等の中央ストレージデバイスを含む。データセンタコンピュータ110及びストレージサーバ107はさらに、要求されるアプリケーションをサポートするバーチャルマシンのインスタンスを選択するための、及び/またはDNSネームサーバに情報を提供して要求ルーティングを容易にするための、ロードバランシングまたはロードシェアリングソフトウェア/ハードウェア構成要素を含むが、これに限定されるものではない、通信を促進する追加のソフトウェア構成要素またはハードウェア構成要素を含んでよい。
サービスプロバイダコンピュータネットワーク105は、ユーザープロファイルストア108も含んでよい。ユーザープロファイルストア108は、例えば、バーチャルデスクトップインスタンスを使用中にユーザーがアクセスを与えられる多様なプログラムを記憶するために使用されてよい。記憶されるユーザープロファイルは、異なるユーザーのリモートコンピューティングセッションに関連付けられた最大の時間またはコストを示してもよい。PESプラットフォーム102は、バーチャルデスクトップインスタンスを設置し、構成するときにユーザープロファイルを考慮に入れてよい。PESプラットフォーム102は、バーチャルデスクトップ画像ストア109を含んでもよい、またはバーチャルデスクトップ画像ストア109に接続されてもよい。バーチャルデスクトップ画像ストア109は、ユーザープロファイルごとに適用されるカスタマイズなしにオペレーティングシステムのテンプレート画像を含んでよい。
例示的な実施形態では、データセンタコンピュータ110及びストレージサーバ107は、構成要素または構成要素の部分が物理的に別個であるかどうかに関わりなく論理的にグループ化されると見なされる。例えば、サービスプロバイダコンピュータネットワーク105は、インスタンス及びストレージ構成要素を提供するための別々の場所を維持してよい。さらに、データセンタコンピュータ110はPESプラットフォーム102と論理的に関連付けられたとして図1に示されるが、データセンタコンピュータはそのユーザーの多様なデモグラフィックに最も役立つ方法で地理的に分散される。さらに、当業者は、サービスプロバイダコンピュータネットワーク105を多様な追加のコンピューティングリソース、コンテンツ及びリソースの管理のための係る追加のコンピューティングデバイスと関連付けることができることを理解するだろう。
ここで図2から図7を参照すると、図1のネットワーク化されたコンピューティング環境100の多様な構成要素間の対話が示される。具体的には、図2から図7は、サービスプロバイダネットワーク105によるバーチャルデスクトップインスタンスの実行、及びクライアントコンピューティングデバイス106からのバーチャルデスクトップインスタンスへのリモートアクセスのためのネットワーク化されたコンピューティング環境100の多様な構成要素間の対話を示す。ただし、例のために、通信を容易にするために活用される構成要素の多くが不図示となるように、説明図は簡略化されている。当業者は、係る構成要素が活用できること、並びに追加の対話が本開示の精神及び範囲から逸脱することなく相応して発生するだろうことを理解する。
図2を参照すると、バーチャルデスクトップインスタンス114は、PESプラットフォーム102に接続されるデータセンタコンピュータ110のいずれか1台で実行できる。イベントがデータセンタコンピュータ110上のバーチャルインスタンス114の実行と関連して発生する場合、実行は別のバーチャルデスクトップインスタンス114’に転送できる。他のインスタンス114’は同110でまたは異なるデータセンタコンピュータ110’で実行されてよい。どちらのケースでも、転送は、デスクトップストア170の使用のため、クライアントコンピューティングデバイス106でのユーザー経験に対する遅延及び混乱は最小で発生する。以下に説明されるように、ユーザーのデータは、バーチャルデスクトップインスタンス114から114’の実行の転送中のデスクトップストア170との関連の継続によって利用可能なままとなる。
例証的に、バーチャルデスクトップインスタンスのインスタンス化及びリモートコンピューティングセッションの確立の前に、各インスタンスマネージャ122はそれぞれのバーチャルデスクトップインスタンスの全体的な状態及び健康を監視する。係る状態及び健康の情報は、データセンタコンピュータ110のインスタンスマネージャ122からサービスプロバイダのデータセンタ管理構成要素101に送信される。さらに、リモートコンピューティングセッション中に、インスタンスマネージャ122はインスタンス114とクライアントコンピューティングデバイス106との間のネットワーク接続の健康及び状態を監視する。インスタンスマネージャ122は、例えば、クライアントコンピューティングデバイス106にインストールされるエージェントを通して接続されたクライアントコンピューティングデバイス106の健康及び状態も監視してよい。監視される健康及び状態の情報のすべてがデータセンタ管理構成要素101に送信される。インスタンスマネージャ122から収集され、データセンタ管理構成要素101に送信される情報は、本明細書で状態情報とも呼ばれる。多様な構成要素から収集される状態情報は、サービスプロバイダコンピュータネットワークからサービスの所望される可用性及び信頼性を達成するために使用される。収集された状態情報が構成要素の1つまたは複数の故障を示す場合、故障はインスタンスの実行を転送する、または追加のデータストレージロケーションにアクセスすることによって対応できる。
図2、ステップ(1)に示されるように、新しいリモートコンピューティングセッションに対する要求は、クライアントコンピューティングデバイス106がイベントまたはユーザー要求に応えてリモートコンピューティングアプリケーション130をロードするときに初期化されてよい。いくつかの実施形態では、リモートコンピューティングアプリケーション130は、ユーザーにユーザー名及びパスワードを入力するようプロンプトを出してよい。一実施形態では、リモートコンピューティングアプリケーション130をロードすることは、ストレージ構成要素からデバイスメモリの中に実行可能なコードをコピーすることを含んでよい。リモートコンピューティングアプリケーション130のロードの後で、クライアントコンピューティングデバイス106は新しいリモートセッションを要求し、サービスプロバイダコンピュータネットワーク105のPESプラットフォーム102に要求を送信してよい。一実施形態では、リモートコンピューティングセッションは、ユーザーのデスクトップに遠隔でアクセスするためにユーザーによって起動されてよい。別の実施形態では、クライアントコンピューティングデバイス106の観点からすれば、アプリケーションプロセスの実行を処理するためにリモートセッションを開始することは、まさにアプリケーションプロセスがローカルデバイス上でインスタンス化され、実行されたかのように見えてよい。
要求の受信の後で、ステップ(2)で、PESプラットフォーム102はユーザーアカウント識別子等の情報を使用して要求を提出したユーザーのためにユーザープロファイルを選択する。ユーザープロファイルは、ユーザープロファイルストア108に記憶されてよい(図1を参照)。例の実施形態では、ユーザープロファイルは、ユーザーのためにバーチャルデスクトップインスタンスを作成するためのバーチャルデスクトップインスタンステンプレート、つまり画像を示す情報を含むことがある、または関連付けられることがある。例えば、バーチャルデスクトップインスタンステンプレートまたは画像は起動するオペレーティングシステムまたはアプリケーションのセットを指定できるだろう。ユーザープロファイルは、ユーザーのためのバーチャルデスクトップインスタンスに与えるために、処理装置、メモリ、ストレージ、帯域幅等の数を示す情報も含んでよい、または情報と関連付けられる。この情報はキー値対として表される、または異なるタイプのバーチャルデスクトップインスタンス(例えば、小さいインスタンス、中位のインスタンス、または大きいインスタンス)に抽象化できるだろう。したがって、ユーザープロファイルは、バーチャルデスクトップインスタンスタイプが「大きい」に等しく、大きいは、それと関連付けられた固定量のリソースを有する。
リモートセッションは、次いでクライアントコンピューティングデバイス106によって識別される1つまたは複数のアプリケーションプロセスに対応するために開始されてよい。例証的に、新しいリモートセッションを開始することは、バーチャルマシンまたは割り当てられたデバイスメモリ、ストレージもしくはキャッシュ空間、プロセッサ時間、ネットワーク帯域幅、または他の計算リソースもしくはネットワークリソースと関連付けられたデータセンタコンピュータ内部の画像からバーチャルデスクトップインスタンスをブートすることを含んでよい。画像は、例えばバーチャルデスクトップ画像ストア109(図1に示される)等、バーチャルデスクトップ画像レポジトリからアクセスされてよい。
PESプラットフォーム102がユーザープロファイルストア108(図1に示される)からユーザープロファイルを取り出した後、PESプラットフォーム102は、バーチャルデスクトップインスタンスを実行するデータセンタコンピュータ110を決定する。例えば、PESプラットフォーム102は、バーチャルデスクトップインスタンスをホストするために利用可能であるデータセンタコンピュータ110のリストを得て、フィルタリング基準をリストに適用して、バーチャルデスクトップインスタンスのホスト要件に対応できる1台または複数のコンピュータからデータセンタコンピュータ110のサブセットを得ることができる。次いで、PESプラットフォーム102は、無作為に、または任意の他の選択プロセス(例えば、総当たり戦等)を使用することによってデータセンタコンピュータ110の1台を選択できる。特定の例では、PESプラットフォーム102はリストを入手し、必要なリソース(例えば、メモリ、ストレージ、処理パワー等)を提供できないデータセンタコンピュータ110を除外できる。また、PESプラットフォームは、ユーザーアカウントと関連付けられたカスタマアカウントと関連付けられたN個の他のバーチャルデスクトップインスタンス114をすでにホストしているデータセンタコンピュータ110を除外してもよい(Nは、管理者によってまたはPESプラットフォーム102によって設定できる1以上の任意の数である)。PESプラットフォームは、クライアントコンピューティングデバイス106等に対して高いレーテンシを有するデータセンタコンピュータ100も除外してよい。
バーチャルデスクトップ画像ストア109からの画像がバーチャルデスクトップインスタンス114を作成するために使用された後、PESプラットフォーム102は、バーチャルデスクトップインスタンス114にアタッチするために、一次デスクトップストア170等のデスクトップストアも識別できる。例えば、PESプラットフォーム102は、バーチャルデスクトップインスタンス114が実行されるデータセンタコンピュータ110を選択し、ユーザープロファイルの情報に基づいてバーチャルデスクトップインスタンス114を起動し、バーチャルデスクトップ識別子にバーチャルデスクトップインスタンス114を送信する要求をコンピュータ110に送信できる。例証的に、バーチャルデスクトップインスタンスのデスクトップストアとの関連付けは、アプリケーションプロトコルインタフェース(「API」)の活用を通して達成できる。例えば、インスタンスマネージャ122は、ストレージサービスプラットフォーム103に送信できる、アタッチ要求等のAPIを活用できる。ストレージサービスプラットフォーム103は、バーチャルデスクトップインスタンス114が正しいバーチャルデスクトップ識別子を有し、ユーザーのデスクトップストア170をバーチャルデスクトップインスタンス114にアタッチさせることを検証できる。
データセンタコンピュータ110と関連付けられたネットワークアドレス情報は、クライアントコンピューティングデバイス106に送信できる。いったんクライアントコンピューティングデバイス106がIPアドレスを受信すると、リモートコンピューティングセッションが開始されてよい。いったんバーチャルデスクトップインスタンスが構成されると、PESプラットフォーム102はクライアントコンピューティングデバイス106と通信し、バーチャルデスクトップインスタンスと関連付けられた公的にアクセス可能なIPアドレスを送信する。いったんクライアントコンピューティングデバイス106がIPアドレスを受信すると、クライアントコンピューティングデバイス106はIPアドレスに対する接続要求を行う。ユーザーが次いで認証され、次いで、認証された場合、インスタンスでのオペレーティングシステムがユーザーと関連付けられたプロファイルをロードする。プロファイルは次いで、ユーザーインタフェース、またはバーチャルデスクトップインスタンスのデスクトップが、ユーザーが好む方法を見て、感じることができるようにするために使用される。例えば、インタフェースの構成は、レジストリを構成すること、フォントを変更すること、デスクトップピクチャを設定すること、デスクトップ上でお気に入り及びリンクをまとめること、デスクトップに適切な文書用のアイコンを置くこと等を含んでよい。
いくつかの実施形態では、クライアントコンピューティングデバイス要求の受信時、データセンタ管理構成要素101が処理リソース及びネットワークリソースも選択し、インスタンス114に加えて、インスタンス116等の別のインスタンスでソフトウェアをプロビジョニングしてもよい。追加のインスタンスは、クライアントコンピューティングデバイス106と関連付けられた1人または複数のユーザーのために、クライアントコンピューティングデバイスに接続される1つまたは複数のインスタンスのために、またはこれらの組合せのためにプロビジョニングされてよい。
次いで、インスタンスマネージャ122は、インスタンス114の状態及び健康を監視し続ける。バーチャルデスクトップインスタンス114内部で実行するエージェントは、PESプラットフォーム102で実行されるバーチャルデスクトップインスタンスとの、クライアントコンピューティングデバイス106でのユーザーの対話によって作成されるデータの受信及び記憶を監視し、調整してもよい。データは、ユーザーがどのファイルを開いたのか、ユーザープロファイルについての詳細、及びPESプラットフォーム105上で実行されるインスタンスと対話している間に作成されるあらゆるデータファイル等の情報を含んでよい。データは、ユーザーのグラフィックユーザーインタフェースに関する詳細も含んでよい。例えば、データは、ユーザーがクライアントコンピューティングデバイス106で開いた多様なウィンドウ、それぞれのウィンドウの絶対位置及び相対位置、ウィンドウ内のあらゆる構成要素の強調等を含んでよい。インスタンスマネージャ122は、データセンタ管理構成要素101に状態情報を送信してよく、インスタンスマネージャ122はデスクトッププロファイル及びユーザーコンテンツに対する変更を一次デスクトップストア170に書き込んでもよい。
引き続き図2を参照すると、いくつかの実施形態では、一次デスクトップストアの故障から保護するために、ステップ(2B)で、一次デスクトップストアに記憶されるデータが、バックアップデスクトップストア170’の上に複製されてよい。バックアップデスクトップストア170’は、一次デスクトップストア170と同じインスタンス114のユーザーと関連付けられる。データに対して行われるあらゆる変更は一次デスクトップストア170に記憶され、バックアップデスクトップストア170’に複製される。複製は周期的に、新しいデータが作成されるときだけにデータが複製されるイベントベースで、または該2つの組合せで実行されてよい。
いくつかの実施形態では、ステップ(2C)で、保存されたデータはPESレポジトリ140にも記憶されてよい。PESレポジトリ140への格納は、周期的に、イベントベースで、または該2つの組合せで実行されてよい。いくつかの実施形態では、データは、PESレポジトリ140での格納後に周期的にデスクトップストア170、170’からパージされてよい。期間はクライアントコンピューティングデバイス106のユーザーと関連付けられたエンティティの管理者によって決定されてよい。
以後、ステップ(3)で、バーチャルデスクトップインスタンス114に関連付けられたイベントがある場合がある。イベントは、例えば、バーチャルデスクトップインスタンスの故障を含むことがある。バーチャルデスクトップインスタンスの故障は、停電、ネットワーク切断、データセンタコンピュータでのソフトウェアまたはハードウェアの故障、バーチャルデスクトップインスタンスでのレーテンシ増加、バーチャルデスクトップインスタンスの著しい損傷、またはインスタンスの任意の他の故障に起因することがある。係る故障の場合、インスタンスマネージャ122から送信される状態情報は、データセンタ管理構成要素101に故障を示す。代わりに、一次デスクトップストア170はユーザー情報に対する変更の欠如を検出し、データセンタ管理構成要素101に係る欠如を示す。
いったんデータセンタ管理構成要素101がインスタンス114と関連付けられたイベントを検出すると、別のバーチャルデスクトップインスタンスは、例えばバーチャルデスクトップインスタンス114’等、ステップ(4)でインスタンス化される。他のバーチャルデスクトップインスタンス114’は、同じデータセンタコンピュータ110で、または異なるコンピュータ110’で実行されてよい。他のバーチャルデスクトップインスタンス114’は事前に構成された可能性がある、または構成は、故障がバーチャルデスクトップインスタンス114で検出された後に開始されてよい。いったんデータセンタ管理構成要素101がデータセンタコンピュータまたは実行に適切なバーチャルデスクトップインスタンスを識別すると、データセンタ管理構成要素101はクライアントコンピューティングデバイス106に新しいパブリックIPアドレスを送信して、新しいリモートコンピューティングセッションを介して新しいバーチャルデスクトップインスタンスに再接続する。
以前のデスクトップの外観と雰囲気が旧バーチャルデスクトップインスタンスと新バーチャルデスクトップインスタンスに亘って維持されるので、クライアントコンピューティングデバイス106でのユーザー経験はほぼシームレスに見える。以前にPESプラットフォーム102に送信されたデータは、同じ一次デスクトップストア170への接続によって新しいバーチャルデスクトップインスタンスが使用できる。さらに、バーチャルマシンインスタンス114の中で実行中のエージェントはユーザーによって以前に開かれたアプリケーションに関する情報を収集したので、同じアプリケーションが新しいバーチャルデスクトップインスタンスで開かれる。保存されたデータはユーザーのグラフィックユーザーインタフェースについての詳細を含んでいたので、クライアントコンピューティングデバイス上でのアプリケーションプロセスのユーザーの視点は異なるインスタンス実行に亘って実質的に均一のままである。したがって、新しいバーチャルデスクトップインスタンスは、クライアントコンピューティングデバイス106上で実行中のアプリケーションプロセスを保存し、PESプラットフォーム102に以前に送信されたデータは新しいインスタンスに復元される。クライアントコンピューティングデバイス106は、ユーザーデータがリモートコンピューティングセッションの故障及び再確立の間に異なるインスタンス間で同期されるため、同じユーザー経験を保持する。
いくつかの実施形態では、ユーザーはリモートコンピューティングアプリケーション130を実行するためのユーザー名及びパスワードを再入力するようにプロンプトを出されることがある。他の実施形態では、ユーザー名及びパスワードは、クッキーまたは電子証明書等の仕組みを通じてデータに記憶されてよく、ユーザー名及びパスワードは、リモートコンピューティングセッションが再確立されるときに自動的にロードされてよい。
上述されたように、あるインスタンスから別のインスタンスへのリモートコンピューティングセッションの転送は、クライアントコンピューティングデバイス106でのユーザー経験に対する遅延及び混乱は最小で行われる。遅延及び混乱は、クライアントコンピューティングデバイス106から受信されたデータの永続記憶装置を提供することによって最小限に抑えられる。
いくつかの実施形態では、バーチャルマシンインスタンス114は故障するのではなく、代わりに一次デスクトップストア170が故障することがある。ストレージマネージャ135が一次デスクトップストア170の係る故障を検出する場合、バーチャルデスクトップインスタンス114と一次デスクトップストア170との間の接続は切り離され、ステップ(4B)に示されるように、接続はバーチャルデスクトップインスタンス114とバックアップデスクトップストア170’との間で確立される。
いくつかの実施形態では、データセンタ管理構成要素101で収集されたデータは、デスクトップインスタンス114とクライアントコンピューティングデバイス106との間のリモートコンピューティングセッションを再確立するときに復元するために、クライアントコンピューティングデバイス106の状態を決定するために使用されてよい。例えば、収集されたデータはクライアントコンピューティングデバイス106での問題のある状態を決定するために使用されてよく、係る状態は復元されないと判断されてよい。問題がある状態は、クライアントコンピューティングデバイス106に接続されるときに遭遇する問題の重大度及び頻度に基づいて決定されてよい。
図3を参照すると、ネットワーク化されたコンピューティング環境100は、PESプラットフォーム102と、それと関連付けられたイベントの後のクライアントコンピューティングデバイスと、または同じユーザーによって使用される異なるデバイスとの間でリモートコンピューティングセッションを開始するために使用することもできる。例証的に、リモートコンピューティングセッションは、回復後に同じデバイス106に、または同じユーザーによって使用される異なるデバイス106’に、当初PESプラットフォーム102に接続されていたクライアントコンピューティングデバイス106のハードドライブのコピーを提供できる。
いくつかの実施形態では、クライアントコンピューティングデバイス106が、PESプラットフォームでのバーチャルデスクトップインスタンス114のリモート実行なしに、ローカルにオペレーティングシステム及びアプリケーションを実行中であることが考えられる。PESプラットフォーム102は、ストレージサーバ107の内の1台または複数でクライアントコンピューティングデバイス106のコンピューティング環境のハードドライブを複製し、次いでハードドライブのコピーを、クライアントコンピューティングデバイス106上のまたは別のクライアントコンピューティングデバイス106’上のユーザーがバーチャルデスクトップインスタンス114として利用できるようにするために使用されてよい。いくつかの実施形態では、PESプラットフォーム102は、ストレージサーバ107の内の1台または複数上のデスクトップストア170に、またはPESレポジトリ140にユーザーコンテンツ及びデスクトッププロファイルを複製し、次いでそのデスクトップストア170を、クライアントコンピューティングデバイス106または106’のユーザーが使用できるバーチャルデスクトップインスタンス114にアタッチするために使用されてよい。
ユーザーは、例えばデスクトップ回復サービス等の、サービスプロバイダコンピュータネットワーク105からのサービスにサインアップしてよい。サービスに加入しているユーザーは、例えばデスクトップ回復プログラム330等、そのクライアントコンピューティングデバイスでダウンロードするためのコンピュータプログラムを提供されてよい。デスクトップ回復プログラム330は、次いでクライアントコンピューティングデバイス106上で実行されてよく、ステップ(1)で示されるように、セッションはクライアントコンピューティングデバイス106とPESプラットフォーム102との間で開始されてよい。セッションが確立された後、PESプラットフォーム102は、図1に関連して上述されたように、デスクトップストア170の内の1つまたは複数をユーザーと関連付けてよい。
引き続き図3を参照すると、デスクトップストア170がユーザーセッションと関連付けられた後、PESプラットフォーム102は、ステップ(2)で、クライアントコンピューティングデバイス106のハードドライブ画像または、多様なフォルダに記憶されるファイル等、ユーザー及びユーザーコンテンツのためのデスクトッププロファイルの複製を開始してよい。ハードドライブ画像またはユーザー及びユーザーコンテンツ用のデスクトッププロファイルの複製は、クライアントコンピューティングデバイス106のディスクの一部のPESレポジトリ140またはデスクトップストア170へのコピーを含んでよい。画像全体が複製されるインスタンスでは、コピーは、クライアントコンピューティングデバイス106とPESプラットフォーム102との間のネットワーク接続の帯域幅に応じて、いくらかの時間を要することがある。いくつかの実施形態では、ステップ(2B)で、ハードドライブ画像はバックアップデスクトップストア170’に複製されてもよい。さらに、いくつかの実施形態では、ステップ(2C)で、画像はPESレポジトリ140に周期的に記憶されてもよい。
以後、クライアントコンピューティングデバイス106とのユーザーの対話によってハードドライブ画像、またはユーザーコンテンツ及びデスクトッププロファイルの部分に対して行われるあらゆる変更は、リモートコンピューティングセッションを介してデスクトップストア170の上に保存することによってPESプラットフォーム102によって複製される。変更の複製は、ネットワーク接続帯域幅に基づいて予定されてよい。例えば、ネットワーク接続帯域幅が高い場合、複製は、クライアントコンピューティングデバイスのファイルシステムがディスクにそのバッファをフラッシュするたびに発生することがある。対照的に、ネットワーク接続帯域幅が低い場合、複製は例えば1日に1度、1週間に1度、もしくは任意の他の適切なときに等周期的に、または例えばネットワーク接続帯域幅が所与の閾値を上回るとき等の条件に基づいて実行されるように予定されてよい。
クライアントコンピューティングデバイス106の故障がある場合、ステップ(3)で示されるように、ハードドライブまたはクライアントコンピューティングデバイス106のユーザーと関連付けられたユーザーコンテンツ及びデスクトッププロファイルのコピーがPESプラットフォーム102で利用できる。故障は、停電、ネットワーク切断、ソフトウェアまたはハードウェアの故障、または他の故障の内の1つまたは複数を含んでよい。PESプラットフォーム102は、データセンタコンピュータ110の内の1台または複数でバーチャルインスタンス114を構成するためにハードドライブ画像のコピーを使用してよい、またはPESプラットフォーム102は、ステップ(4)に示されるようにユーザーと関連付けられたユーザーコンテンツ及びデスクトッププロファイルがバーチャルデスクトップインスタンス114に保存されるデスクトップストア170をアタッチしてよい。
結果的に、新しいクライアントコンピューティングデバイス106’が使用されるとき、またはクライアントコンピューティングデバイス106が故障から回復するとき、デスクトップ回復プログラム330及びリモートコンピューティングアプリケーション130はデバイス106または106’にロードされる。次いで、リモートコンピューティングアプリケーション130がユーザーにユーザー名及びパスワードを入力するようにプロンプトを出してよい。リモートコンピューティングアプリケーション130のロードの後で、新しいリモートコンピューティングセッションに対する要求がステップ(5)でサービスプロバイダコンピュータネットワーク105のPESプラットフォーム102に送信される。
要求の受信の後で、PESプラットフォーム102は、要求と含まれるユーザーアカウント識別子等の情報を使用してユーザープロファイルを選択する。ユーザープロファイルはユーザープロファイルストア108で記憶されてよい。例の実施形態では、ユーザープロファイルは、ユーザーのためにインスタンスを作成する元のインスタンステンプレートを示す情報を含んでよい、または関連付けられてよい。例えば、ハードドライブコピーが作成された場合、インスタンステンプレートは、ユーザーがインスタンステンプレートとして使用するために以前に保存されたハードドライブ画像を指定できるだろう。リモートコンピューティングセッションは、次いで、データセンタコンピュータ110の内の1台でデスクトップストア170の内の1台に以前に保存されたユーザーのハードドライブ画像のコピーからバーチャルデスクトップインスタンスをブートするために開始されてよい。ユーザーコンテンツ及びデスクトッププロファイルが保存された場合、ユーザーコンテンツ及びデスクトッププロファイルを含んだデスクトップストア170は、ユーザーによってアクセスされるバーチャルデスクトップインスタンス114にアタッチされてよい。
図4を参照すると、異なるユーザー要件に対応するためのPESプラットフォーム102の構成を示す図1のネットワーク化されたコンピューティング環境のブロック図が開示される。上述されるように、新しいリモートコンピューティングセッションは、クライアントコンピューティングデバイス106がイベントまたはユーザー要求に応えてリモートコンピューティングアプリケーション130をロードするときに開始されてよい。リモートコンピューティングアプリケーション130のロードの後で、クライアントコンピューティングデバイス106は、新しいリモートセッションを要求してよい。
要求の受信の後で、PESプラットフォーム102は、要求された新しいリモートセッションにサービスを提供するようにデータセンタコンピュータ110及びインスタンス114を構成する。データセンタコンピュータ及びインスタンスは、要求によって識別される1つまたは複数のアプリケーションプロセス、及びユーザープロファイルストア108に記憶されるようなアプリケーションプロセスと関連付けられた多様なメモリまたは処理要件に基づいて構成されてよい。
例えば、エンティティと関連付けられたクライアントコンピューティングデバイス106のユーザーは、それらと関連付けられた制限を有することがある。制限は管理者によって設定されてよい。制限は、例えば各ユーザーがアクセスできるアプリケーション、並びにユーザーによってアクセスされる異なるバーチャルデスクトップインスタンスと関連付けられたメモリ制限及び処理制限を含んでよい。例えば、管理者は個々のユーザーのためにデフォルトのインスタンスサイズを設定してよい。デフォルトインスタンスサイズは、例えばユーザー識別子に従って、個々のユーザーと関連付けられたユーザープロファイルストア108に記憶されてよい。また、ユーザープロファイルストア108は、インスタンスによって実行されるアプリケーションに応じてインスタンスサイズを変えるための変数も含んでよい。
一実施形態では、ユーザーは電子メールまたはウェブブラウザ等低い処理要件だけを有するアプリケーションを実行するように制限されてよい。係るユーザーは、係るアプリケーションをサポートするために少ない量のリソースを割り当てられるバーチャルデスクトップインスタンスへのアクセスを提供されてよい。対照的に、ユーザーは、専門的な製図アプリケーションまたは写真編集アプリケーション等のより高い処理要求を有するアプリケーションを実行する権限を与えられてよい。この種のユーザーは、ユーザーがアプリケーションを実行できるようにするために十分な多数のリソースを割り当てられるバーチャルデスクトップインスタンスへのアクセスを与えられてよい。異なるユーザーのために許可されたアプリケーションは、ユーザーアカウントのためのユーザープロファイルに保存されてよい。代わりに、異なるタイプのアプリケーションは、バーチャルデスクトップインスタンスを使用する間にユーザーによって要求されてよい。
例証的に、ユーザーまたはクライアントコンピューティングデバイスと関連付けられた処理要件は、さまざまなシナリオに基づいて決定されてよい。決定は、リモートコンピューティングアプリケーション130の起動時のユーザー要求に基づいてよい。例えば、ユーザーはリソース及びアプリケーションのためのさまざまなオプションを表示するグラフィックユーザーインタフェース(GUI)を提示されてよい。ユーザーは、次いでユーザーがアクセスを希望するアプリケーション、または代わりにそれらのアプリケーションのバージョンを選択してよい。例えば、1人のユーザーがアプリケーションの基本的なバージョンにアクセスすることを希望することがある。一方、別のユーザーは同じアプリケーションの専門的なバージョンにアクセスすることを希望することがある。決定は、ユーザーと関連付けられたエンティティの管理者によって決定されるように、特定のユーザーのための事前に選択されたオプションに基づいてもよい。例えば、事前に選択されたオプションは、ユーザーがアクセスすることを希望してよいアプリケーションの異なるパッケージのリストとしてユーザーに提示されてよい。いくつかのケースでは、決定は、いったん要求がユーザーから受信されるとPESプラットフォーム102が決定してよいユーザーの履歴使用量データに対して下されてよい。他の場合、処理要件の決定は、いったんリモートコンピューティングセッションが開始されると、ユーザーによって処理されるプロセスの使用の継続的な監視に基づいてよい。係る場合、適切なインスタンスの選択は、セッション確立後に動的に変更されてよく、新しいインスタンス上での動的な変更は上記図1に関して説明されるように実行されてよい。
再び図4を参照すると、いったん要求がステップ(1)でユーザーから受信され、ユーザープロファイルストア108がユーザー要件を決定するためにアクセスされると、次いでステップ(2)で、バーチャルデスクトップ画像がバーチャルデスクトップ画像ストア109から取り出され、ユーザー要件に従って構成される。次いで、カスタマイズされたバーチャルデスクトップ画像はインスタンス114を構成するために使用される。インスタンス114が構成された後、ステップ(3)で、PESプラットフォームは、インスタンスを起動するデータセンタコンピュータ110を決定する。例えば、PESプラットフォーム102はリストを入手し、必要なリソース(例えば、メモリ、ストレージ、処理パワー等)を提供できないデータセンタコンピュータ110を除外できる。いったんデータセンタコンピュータ110が選択されると、データセンタコンピュータ110と関連付けられたネットワーク情報は、次いでクライアントコンピューティングデバイス106に送信できる。いったんクライアントコンピューティングデバイス106がネットワーク情報を受信すると、リモートコンピューティングセッションが開始されてよい。いったんバーチャルデスクトップインスタンスが構成されると、PESプラットフォーム102はクライアントコンピューティングデバイス106と通信し、バーチャルデスクトップインスタンスと関連付けられた公的にアクセス可能なIPアドレスを送信する。いったんクライアントコンピューティングデバイス106がIPアドレスを受信すると、クライアントコンピューティングデバイス106はIPアドレスに接続要求を行う。ユーザーは次いで認証されてよく、次に認証されると、ユーザーは上記に構成されたバーチャルデスクトップの画像を提供される。
いくつかの実施形態では、インスタンスエージェント114Aは、ステップ(4)で、インスタンス114が使用しているCPU及びメモリの量を監視することができ、リソースが必要とされる場合、PESプラットフォーム102からより多くのリソースを要求できる。いくつかの実施形態では、各アプリケーションには、どのくらいの数のリソースが必要とされるのかを示す情報をタグ付けることができる。インスタンスエージェント114Aがプログラムの起動を検出するとき、エージェントはテーブルの要件を調べるまたはアプリケーションが起動したことをPESプラットフォーム102に信号で知らせるように構成することができ、これによってPESプラットフォーム102は、リソースがインスタンス114に割り当てられる必要があることを示す信号をエージェント114Aに送信できる。
ユーザーにとって最適インスタンスの決定は、ユーザーの使用量に基づいた請求書作成を実装するのに役立つことがある。多数のリソースを割り当てられたインスタンスは制限されることがある。例えば、係るインスタンスは特定の認定ユーザーに提供されるにすぎなくてよい、または限られた期間特定のユーザーに提供されるにすぎなくてよい。異なるインスタンスの使用量に基づいた請求書作成は、サービスプロバイダリソースの使用に対する基本価格構成要素、及び割り当てられたリソースに基づいた可変価格構成要素、及び異なるリソースと使用される総時間を含んでよい。ユーザーのリソースの使用及び要求は、ユーザーと関連付けられたアカウントの管理者によるユーザー管理に使用されてもよい。例えば、通知は、ユーザーが所与の閾値を超えるリソースのレベルを要求するときに管理者に送信されてよい。
また、インスタンスに割り当てるリソースの決定は,
リソースの使用と関連付けられたコストに基づいてもよい。例えば、所与のレベルのリソースで構成された所与のインスタンスは、それらのリソースの使用のコストの閾値額まで使用されるように制限されてよい。別の例では、インスタンスは割り当てられたリソースの閾値量と使用されてよい。代わりに、ユーザーのインスタンスへのアクセスは、アイドルであると監視された時間の閾値量後の、または所与のセッション中の低リソース活用を示すより低いリソースのインスタンスに格下げされることがある。
管理者は、バーチャルデスクインスタンスでのリソースへのユーザーのアクセスを許可するための異なる規則を提供してよい。例えば、規則は異なるタイプのユーザーを定義してよく、ユーザーのタイプはエンティティによってプログラム実行サービス(PES)プラットフォームに提供される一式の規則に記憶されてよい。規則は、ユーザーアカウント識別子等の異なるユーザーのログイン情報と関連付けられ、ユーザープロファイルストア108に記憶されてよい。ユーザーがエンティティのクライアントコンピューティングデバイス106でリモートコンピューティングアプリケーション130を起動するとき、PESプラットフォーム102は、受信されたログイン情報に基づいて、ユーザーアカウント識別子と関連付けられたユーザープロファイルに含まれる仕様に従って適切なインスタンスを決定してよい。
例示的な例のために、エンティティによって雇用された請負業者が、クライアントコンピューティングデバイス106で決定された時間量の間決定されたアプリケーションプロセスを使用する権限を与えられてよいと仮定する。したがって、エンティティは所望される要件を、PESプラットフォーム102に通信されるように、請負業者のユーザーアイデンティティに割り当てる。次いで、請負業者がリモートコンピューティングアプリケーション130を起動するとき、ログインは請負業者のユーザー識別子を示す。その後、サービスプロバイダは、そのためのコンピューティングデバイス106及び任意のその後のリモートコンピューティングセッションと関連付けられたように構成するためにインスタンス及びデータセンタコンピュータを決定する。サービスプロバイダのデータセンタ管理構成要素101は、請負業者の決定されたプロセスの使用、処理レベル、及び使用の回数を監視し、エンティティ管理者の所定の条件に従って使用を制限する。請負業者はクライアントコンピューティングデバイス106上であらゆるソフトウェアアプリケーションをインストールする必要はなく、エンティティは請負業者によるあらゆるアプリケーションの使用を監視する必要はない。PESプラットフォーム102は両者の必要性に集中的に対応する。
所定のユーザータイプに基づいたアプリケーションの構成及びアプリケーションの処理要件は、エンティティに請求書を作成するために使用されてよい。異なるインスタンスの使用量に基づいた請求書作成は、サービスプロバイダリソースの使用のための基本価格構成要素及び処理要件に基づいた可変価格構成要素、及び異なる処理要件と使用される総時間を含んでよい。代わりに、エンティティはPESプラットフォーム102からさまざまなアプリケーションプロセスに対するライセンスを入手してよく、ライセンスは、エンティティがクライアントコンピューティングデバイス106を利用可能にするときにエンティティによって権限を与えられるさまざまなユーザーによって使用されてよく、ユーザー名はそれぞれのユーザーに必要とされる多様なアプリケーションプロセスに対する適切な許可と関連付けられる。
サービスプロバイダインスタンスの構成は、リモートコンピューティングセッション中の履歴要求またはインスタンスの提供に基づいて異なるインスタンスでのアプリケーションプロセスの事前に選択された組合せを提供するために使用されてもよい。アプリケーションプロセス及び処理要件の組合せは、例えば異なるタイプのユーザーに対して構成されてよい。ユーザーのタイプは、例えば、簡略なeメール読取装置及びウェブブラウザであってよい、または専門的なドラフターまたはフォトエディタであってよい。いくつかの実施形態では、インスタンスの構成は、処理要件の代わりに、または処理要件に加えてアプリケーションプロセスと関連付けられた記憶要件に基づいてもよい。
図5を参照すると、インスタンスのためのリソース要件に基づいたリモートコンピューティングセッションの調整を示す図1のネットワーク化されたコンピューティング環境のブロック図が開示される。図5に示されるように、サービスプロバイダコンピュータネットワーク105は、インターネットに割り当てられたリソースを調整してよい、または初期インスタンスと関連付けられたリソース要件が変更される場合、同または異なるデータセンタコンピュータで新しいインスタンスを提供してよい。上述されたように、新しいリモートコンピューティングセッションは、クライアントコンピューティングデバイス106がイベントまたはユーザー要求に応えてリモートコンピューティングアプリケーション130をロードするときに開始されてよい。リモートコンピューティングアプリケーション130のロードの後で、クライアントコンピューティングデバイス106はステップ(1)で新しいリモートセッションを要求してよい。要求の受信後、ステップ(2)で、PESプラットフォーム102は、要求された新しいリモートセッションにサービスを提供するためにデータセンタコンピュータ110を、及びユーザープロファイルストア108上のユーザープロファイルストアに基づいて起動するために適切なインスタンスを選択する。セッションを確立後、インスタンスはステップ(3)でインスタンスマネージャ122によってクライアントコンピューティングデバイス106のユーザーによるインスタンスの使用を監視することに基づいて動的に調整されてよい。
例えば、クライアントコンピューティングデバイス106のユーザーはバーチャルデスクトップインスタンスと対話する間、ユーザーは低処理パワー、及び低メモリ要件だけを要求するアプリケーションにアクセスしてよい。ただし、しばらくして、ユーザーはより多くの処理パワー及びより多くのメモリを要求する1つまたは複数のアプリケーションへのアクセスを要求することがある。いくつかの実施形態では、異なる要件に対する要求は、デスクトップインタフェース上のアプリケーションのためのアイコンをユーザーが選択することによって開始されてよい。いくつかの実施形態では、要求は、コントロールパネルのオプションのリストからあるオプションをユーザーが選択することによって開始されてよい。例えば、オプションのリストは、異なる量の処理パワー及びメモリのスライドスケールを含んでよい。どちらの場合も、インスタンスマネージャ122は、ステップ(4)でインスタンス114の異なる構成に対する必要性を決定する。
PESプラットフォーム102は、より多くの処理パワー及びメモリに対応するために、バーチャルデスクトップインスタンスに割り当てられるリソースの量を動的に調整してよい。いくつかの実施形態では、ステップ(5)で、調整は同じデータセンタコンピュータまたは異なるデータセンタコンピュータでインスタンスを再起動することを必要とすることがある。バーチャルデスクトップインスタンスの再起動は、実行中のインスタンスを終了すること、インスタンスからデスクトップストアを切断すること、新しいインスタンスを起動するためにデータセンタコンピュータを選択すること、選択されたデータセンタコンピュータで新しいインスタンスをインスタンス化すること、及びデスクトップストアを新しいインスタンスに関連付けることを含んでよい。いったんインスタンスがインスタンス化されると、ユーザーはログインプロンプトによってインスタンスへのアクセスを与えられてよい。
他の実施形態では、調整は、インスタンスの終了なしにバーチャルデスクトップインスタンスに追加のリソースを追加することを含んでよい。例えば、インスタンスマネージャは、デスクトップインスタンス等を実行するバーチャルマシンに別のプロセッサまたはメモリを追加できるだろう。いくつかの実施形態では、プロセッサは、バーチャルデスクトップインスタンスにCPUをホットアドすることによってバーチャルデスクトップインスタンスに追加されてよい。CPUは、データセンタコンピュータに新しいハードウェアを追加し、ハードウェア区分化をオンラインでまたは仮想的に仮想化層を通して論理的に実行することによってホットアドされてよい。データセンタコンピュータ110は、CPUが追加された後に自動的に起動される必要があるのではなく、利用可能なリソースとして新しいCPUを認識するように単に再構成されてよい。いくつかの実施形態では、メモリは、バーチャルデスクトップインスタンスにメモリをホットアドすることによってバーチャルデスクトップインスタンスに追加されてよい。データセンタコンピュータ110にメモリをホットアドすることは、オペレーティングシステムインスタンスに物理メモリを追加するための機構が任意のオペレーティングシステムのダウンタイムまたは任意のシステムパワー動作を必要とせずにサポートされることを保証することによって実装されてよい。
図6は、バーチャルデスクトップインスタンスの動作がリモート環境からローカルでネットワーク化された環境に遷移されるときの図1のコンピューティング環境を示すブロック図である。いくつかの実施形態では、PESプラットフォーム102とクライアントコンピューティングデバイス106との間で確立されるリモートコンピューティングセッションは、ネットワーク切断または故障のために失われることがある。例えば、クライアントコンピューティングデバイス106のユーザーが、ネットワーク104によってサービスを提供されていない領域に移動することがある。係る切断に対応するために、PESプラットフォーム102とクライアントコンピューティングデバイスとの間のリモートコンピューティングセッションは、データセンタコンピュータからクライアントコンピューティングデバイス106に情報を転送するために使用されて、クライアントコンピューティングデバイス106に、以前にPESプラットフォームで実行されたバーチャルインスタンスのローカルで実行されたコピーに遷移するために必要な構成要素を備えてよい。
例えば、クライアントコンピューティングデバイス106は、ネットワーク104を介してPESプラットフォーム102に接続されてよく、デバイス106は、ユーザーが飛行機に搭乗する前にネットワーク104から切断されてよい。ネットワーク104から切断する前に、任意選択で、クライアントコンピューティングデバイス106は、ユーザーに承認のためのプロンプトを出した後、バーチャルデスクトップ画像ストア109に記憶された画像等、オペレーティングシステムの画像を提供されてよい。クライアントコンピューティングデバイス106は、データセンタコンピュータ110とは異なる処理パワーまたはメモリの構成を有することがあるので、クライアントコンピューティングデバイスに適応されたオペレーティングシステムの画像は対応するパワー及びメモリの構成を有してよい。クライアントコンピューティングデバイス106は、デスクトップストアのコピーとともにデータの最新の保存バージョンで適応されてもよい。最後にクライアントコンピューティングデバイス106は、サービスプロバイダコンピュータネットワーク105から、提供されるオペレーティングシステムの画像に基づいてインスタンス114’を起動するために、及びデスクトップストア170’のローカルコピーにインスタンス114’をアタッチするためにバーチャルデスクトップ監視モジュール601を受信してよい。その後、クライアントコンピューティングデバイス106がネットワーク104から切断されるとき、ユーザーはクライアントコンピューティングデバイス106上でローカルに実行されているインスタンスを用いてデバイスを使用し続けてよい。クライアントコンピューティングデバイス106は、次いでデータ及び飛行機に搭乗中に実行されるインスタンスの適応されたバージョンを有することがある。
別の実施形態では、クライアントコンピューティングデバイス106は、PESプラットフォーム102と接続することなく、オペレーティングシステム、インスタンスマネージャ、及びバーチャルデスクトップ監視モジュール601の画像のコピーをプロビジョニングされてよい。例えば、エンティティのコンピューティングデバイス106は、エンティティの情報技術(IT)部門によって適切な画像及びモジュールで構成されてよい。PESプラットフォーム102との接続時、及びPESプラットフォーム102からの切断の前に、任意選択で承認のためにプロンプトを出された後、クライアントコンピューティングデバイス106は、デスクトップストアのコピーとともに、データの最新の保存済みバージョンを提供されてよい。次いで、バーチャルデスクトップ監視モジュール601はオペレーティングシステムの画像に基づいてインスタンス114’を起動してよく、デスクトップストア170’のローカルコピーにインスタンス114’をアタッチしてよい。その後、クライアントコンピューティングデバイス106がネットワーク104から切断されるとき、ユーザーは、インスタンスがクライアントコンピューティングデバイス106でローカルに実行されている状態でデバイスを使用し続けてよい。クライアントコンピューティングデバイス106は、次いでデータ及び飛行機に搭乗中に実行されるインスタンスの適応されたバージョンを有してよい。
次いで、クライアントコンピューティングデバイス106のユーザーがサービスプロバイダのネットワーク内部の領域に戻る(例えば、その目的地の都市で飛行機を降りる)とき、PESプラットフォーム102は、クライアントコンピューティングデバイス106とのリモートコンピューティングセッションを再確立し、ユーザーのデータのすべてが同期され、アプリケーションプロセスの使用中のユーザーの中断はこのようにして最小限に抑えられる。
リモート環境からローカルにネットワーク化された環境にバーチャルインスタンスの動作を遷移する際に関与するステップが図6に示される。ステップ(1)で、リモートセッションが、クライアントコンピューティングデバイス106とPESプラットフォーム102との間で開始される。上述されたように、ユーザープロファイルストアがアクセスされ、適切なインスタンスがユーザーのために構成される。インスタンスの構成に続き、データセンタコンピュータ110はバーチャルインスタンスデスクトップを起動するために選択され、ユーザーはデータセンタコンピュータ110上でバーチャルデスクトップインスタンス114へのアクセスを提供される。
次いで、ステップ(2)で、ユーザーがリモートセッションのバーチャルデスクトップインスタンスにアクセスしている間、デスクトッププロファイルに対する、及びユーザーコンテンツに対するユーザーの変更はデスクトップストア170で記憶される。ステップ(3)で、いくつかの実施形態では、クライアントコンピューティングデバイス106は、ネットワーク接続が失われると見込まれることをPESプラットフォーム102に示してよい。係る表示時、または同期のために、PESプラットフォーム102は、ステップ(4)で、デスクトップストア170のコピー170’、インスタンス114によって実行されるオペレーティングシステムの画像のコピー、及びインスタンスマネージャ122のコピー122’をクライアントコンピューティングデバイス106に提供し、これによってPES102と利用できるネットワーク接続がある間に、インスタンス114’はクライアントコンピューティングデバイス106でローカルに実行される。上述されたように、いくつかの実施形態では、オペレーティングシステム、インスタンスマネージャ、及びバーチャル監視モジュール601の画像はすでにクライアントコンピューティングデバイス106にインストールされていてよく、PESプラットフォームはデスクトップストア170のコピー170’を提供するだけだろう。
いったんインスタンス114’がクライアントコンピューティングデバイス106で使用可能になると、インスタンス114’はローカルで実行され、ユーザーのデスクトッププロファイル及びユーザーコンテンツに対して行われたすべての変更は、デスクトップストア170’のローカルコピーに記憶される。次いで、ネットワーク接続がPESプラットフォーム102と確立されると、ステップ(5)で、リモートコンピューティングセッションがクライアントコンピューティングデバイス106のリモートコンピューティングアプリケーション130から要求される。上記でのように、ステップ(6A)で、ユーザーのユーザープロファイルはデータセンタコンピュータ110でバーチャルデスクトップインスタンス114をインスタンス化するために使用され、ステップ(6B)で、クライアントコンピューティングデバイス106がPESプラットフォームに接続されるとき、デスクトップストアのコピー170’はストレージサーバ107に保存される。次いで、ステップ(7A)で、デスクトップストアのコピー170’に行われた変更はユーザーと関連付けられた一次デスクトップストア170に同期され、ステップ(7B)で、リモートセッションでバーチャルインスタンス114と対話している間にユーザーから受信された追加の変更も一次デスクトップストア170に保存される。
図7は、シームレスなリモートコンピューティングセッションを提供するためのルーチンを示す流れ図であり、クライアントコンピューティングデバイス106とPESプラットフォーム102との間でユーザーデータを持続することは、PESプラットフォーム102でのインスタンスとともにイベントが発生する。ルーチン700はブロック702で始まる。ブロック704で、PESプラットフォーム102はシステムのデータセンタコンピュータで実行中の多様なインスタンスから状態情報を受信する。状態情報は、周期的に、または所定のイベントがインスタンスで発生するときにインスタンスから受信されてよい。受信間の期間はほぼミリ秒、秒、分、または異なる持続時間程度であってよい。所定のイベントはインスタンスの健康、インスタンスのネットワーク接続性の健康等に関係してよい。PESプラットフォーム102は、ルーチン700の持続時間を通して状態情報を受信し続ける。
ブロック706で、PESプラットフォーム102は、クライアントコンピューティングデバイスから新しいリモートコンピューティングセッションに対する要求を受信する。ブロック708で、PESプラットフォーム102は、画像を使用して生成されるインスタンスに割り当てるためのリソースの画像及び量を選択する。多様な実施形態では、適切なインスタンスは、要求がそこから受信されるクライアントコンピューティングデバイスのユーザーと関連してユーザープロファイルストアに含まれる情報に基づいてよい。インスタンスがいったん選択されると、適切なデータセンタコンピュータはインスタンスをホストするために選択されてよく、ブロック710で、PESプラットフォーム102はインスタンスとクライアントコンピューティングデバイスとの間でリモートコンピューティングセッションを開始する。ブロック712で、PESプラットフォームは、そのユーザーのための特定のデータストアをインスタンスにアタッチする。
リモートコンピューティングセッションが確立されるとき、PESプラットフォーム102でのバーチャルデスクトップインスタンスとのユーザーの対話によって作成されるデータは、次いでブロック714で選択されるデスクトップストアに保存される。いくつかの実施形態では、さらに受信されたデータを第2のデスクトップストアにコピーしてよい。いくつかの実施形態では、PESプラットフォーム102はデスクトップストアで記憶領域を確保するために集中PESレポジトリにデータを周期的に転送してよい。次いで、ブロック716で、PESプラットフォーム102はリモートコンピューティングセッションに関与するインスタンスの故障を検出する。一実施形態では、PESプラットフォーム102は、インスタンスから受信された状態情報に基づいて、または代わりにインスタンスから係る状態情報を受信しないことに基づいて故障を識別してよい。
ブロック716でインスタンスでの故障を検出した後で、ブロック718で、PESプラットフォーム102は、第2のバーチャルデスクトップインスタンスがデータを利用できるようにする。データは、データを同期することを通じて、またはデスクトップストアと初期インスタンスとの間の関連を削除し、デスクトップストアを新しいインスタンスと関連付けることによって第2のバーチャルデスクトップインスタンスが利用できるようになる。いったん第2のバーチャルデスクトップインスタンスがデータを利用できるようになると、次いでルーチンはブロック720に移動する。いくつかの実施形態では、PESプラットフォーム102のバーチャルデスクトップインスタンスはユーザープロファイルに従って事前に構成されてよい。係る実施形態では、故障がブロック716で検出されると、次いでPESプラットフォーム102は必要とされるユーザープロファイルで事前に構成されている別にインスタンスを識別する。代わりに、インスタンスはブロック716で故障の検出後に構成されてよい。次いで、新しいインスタンスが識別された状態で、必須IPアドレス情報はクライアントコンピューティングデバイスに通信され、リモートコンピューティングセッションはブロック720で再確立される。ルーチン700はブロック722で終了する。
図8は、クライアントコンピューティングデバイスの故障後のハードドライブの画像を回復するための、サービスプロバイダとクライアントコンピューティングデバイスとの間のリモートコンピューティングセッションを使用するためのルーチンを示す流れ図である。ブロック804で、リモートコンピューティングセッションが、デスクトップ回復サービスを提供するためにクライアントコンピューティングデバイスとPESプラットフォームとの間に確立されてよい。いったんセッションが確立されると、PESプラットフォームは、ブロック806で、クライアントコンピューティングデバイスハードドライブの画像を記憶してよい。いくつかの実施形態では、クライアントコンピューティングデバイスは、リモートコンピューティングアプリケーションに加えて、オペレーティングシステム及びアプリケーションをローカルで実行してよい。係る実施形態では、クライアントコンピューティングデバイスは、オペレーティングシステム及びオペレーティングシステム上で実行されるアプリケーションに関連付けられた処理情報及び構成情報のすべてを含むローカルハードドライブ画像を有する。いくつかの実施形態では、リモートコンピューティングセッションは、クライアントコンピューティングデバイスのハードドライブの画像を複製するために使用されてよい。画像の記憶には、クライアントコンピューティングデバイスとPESプラットフォーム102との間のネットワーク接続帯域幅に応じた期間がかかることがある。ハードドライブ画像の記憶は、クライアントコンピューティングデバイスのユーザーによってハードドライブに行われる変更の複製を含んでもよい。行われる変更は周期的に、またはネットワーク帯域幅の可用性に応じて複製されてよい。同様に、いくつかの実施形態では、クライアントコンピューティングデバイスのハードドライブの画像を記憶する代わりに、PESプラットフォームはユーザーコンテンツ(例えば、フォルダ及びファイル及びその中に記憶される他のフォルダ)、及びユーザーのためのデスクトッププロファイル設定値(例えば、バックグランド画像、スクリーンセーバー、デスクトップ上のフォルダ及びファイルのレイアウト等)を記憶してよい。
次いで、ブロック808で、クライアントコンピューティングデバイスの故障が検出されることがある。クライアントコンピューティングデバイスの故障は、停電、ネットワーク切断、ソフトウェアもしくはハードウェアの故障、またはリモートセッションを切断させる任意の他の故障に起因してよい。ハードドライブの画像、及びそれに対するすべての変更はPESプラットフォームで利用できる。
結果的に、クライアントコンピューティングデバイスのユーザーが新しいクライアントコンピューティングデバイスを活用する、または同デバイスを使用してデスクトップ回復サービスに再接続するとき、新しいリモートセッションに対する要求がPESプラットフォーム102に送信される。要求受信時、ブロック810で、PESプラットフォームは、ユーザープロファイルストアから検索されるユーザー識別子に従って、記憶され、ユーザーと関連付けられたハードドライブの画像でバーチャルデスクトップインスタンスを構成する。次いで、ブロック812で、及びPESプラットフォーム102はユーザーのコンピューティングデバイスとのリモートコンピューティングセッションを確立する。いったんリモートコンピューティングセッションが確立されると、PESプラットフォーム102は、ユーザーが記憶されているハードドライブに基づいてインスタンスにアクセスできるようにする、または代わりにユーザーコンテンツ及びユーザーのために保存されるデスクトッププロファイルへのアクセスをユーザーに提供する。ルーチン800はブロック816で終了する。
図9は、リモートコンピューティングセッションのユーザーと関連付けられたプロセス要件に基づいたバーチャルデスクトップインスタンスの構成のためのルーチンを示す流れ図である。上述されたように、新しいリモートコンピューティングセッションは、クライアントコンピューティングデバイスがイベントまたはユーザー要求に応えてリモートコンピューティングアプリケーションをロードするときにインスタンス化されてよい。リモートコンピューティングアプリケーションのロードの後で、クライアントコンピューティングデバイスは新しいリモートコンピューティングセッションを要求してよい。
ルーチン900はブロック902で開始する。ブロック904で、リモートコンピューティングセッションに対する要求がクライアントコンピューティングデバイスから受信される。ブロック906で、要求とともに含まれるユーザーログインから決定されるユーザー識別子に基づいて、PESプラットフォーム102は、ユーザープロファイルストアに記憶されるように、ユーザーと関連付けられたユーザープロファイルを決定する。次いで、ブロック908で、インスタンスがユーザーに提供されるための処理要件がユーザープロファイルから決定される。次いで、ブロック910で、PESプラットフォーム102は、バーチャル画像ストアからバーチャルデスクトップ画像テンプレートを入手する。例えば、ユーザープロファイルは、ユーザーが、大量のリソース(メモリ、CPUコア、ネットワーク帯域幅、GPUコード等)を有するインスタンス、及びアプリケーションのプレミアムセットを割り当てられるべきであることを示す「プレミアム」インスタンスを割り当てられていることを示すことがある。ブロック912を見ると、データセンタコンピュータシステムは、バーチャルデスクトップインスタンスをホストするために選択することができ、インスタンステンプレートは、選択されたコンピュータシステムに送信できる。コンピュータシステムでのインスタンスマネージャは、バーチャルデスクトップインスタンスを起動できる。ユーザープロファイルは、制限、例えばエンティティの管理者によって確立される要件を含んでよい。次に、ブロック914で、いったん適切なインスタンスが(例えば、データストアをそれにアタッチすることによって)構成されると、リモートコンピューティングセッションがインスタンスとクライアントコンピューティングデバイスの間で確立される。ルーチン900はブロック916で終了する。
図10は、プロセス要件での変更に対応するためのリモートコンピューティングセッションの構成のためのルーチンを示す流れ図である。上述されたように、新しいリモートコンピューティングセッションは、イベントまたはユーザー要求に応えてリモートコンピューティングアプリケーションをロードするときにインスタンス化されてよい。リモートコンピューティングアプリケーションのロードの後で、クライアントコンピューティングデバイスは新しいリモートコンピューティングセッションを要求してよい。ルーチン1000はブロック1002で開始する。ブロック1004で、クライアントコンピューティングデバイスからの要求の受信時、PESプラットフォーム102は、クライアントコンピューティングデバイスのユーザーのユーザープロファイルに基づいて、クライアントコンピューティングデバイスに対する処理要件を決定する。PESプラットフォーム102は、要求された新しいリモートセッションにサービスを提供するためにデータセンタコンピュータを選択する。
例えば、電子メールプログラムまたはウェブブラウザ等の低処理要件を有するアプリケーションを実行することを希望する、または実行する権限を与えられているクライアントコンピューティングデバイスのユーザーは、低処理パワー能力(例えば、1つまたは2つのCPUコア及び1ギガバイトのRAM)だけ、並びに係るアプリケーションだけをプロビジョニングされたバーチャルデスクトップインスタンスと関連付けられてよい。すなわち、ユーザープロファイルは、ユーザーが「小さい」インスタンスを割り当てられるべきであることを示してよい、またはユーザープロファイルは、どのようにユーザーがインスタンスを使用しているのかに基づいて動的に大きくなることがある「小さい」インスタンスをユーザーが初期に割り当てられることを示してよい。対照的に、専門的な製図アプリケーションまたは写真編集アプリケーション等のより高い処理要件のアプリケーションを実行することを希望する、または実行する権限を与えられているクライアントコンピューティングデバイスのユーザーは、高処理パワー能力(例えば、4つまたは8つのCPUコア及び16ギガバイトのRAM)並びに係るアプリケーションをプロビジョニングされた異なるバーチャルデスクトップインスタンスと関連付けられてよい。同様に、ユーザープロファイルはユーザーがどのようにしてそれを使用しているのかに基づいて「縮小」することがある「プレミアム」インスタンスを初期に割り当てられるべきであることを示すことがある。ユーザーまたはクライアントコンピューティングデバイスと関連付けられた処理要件はさまざまな要因に基づいて決定されてよい。決定は、リモートコンピューティングアプリケーションの起動時のユーザー要求に基づいてよい。また、決定はリモートコンピューティングアプリケーションが起動されるときに送信されるデータに示されるように、特定のユーザーのための事前に選択されたオプションに基づいてもよい。
いったんPESプラットフォーム102がクライアントコンピューティングデバイス要求のために必要とされる処理要件を決定すると、次いでブロック1006で、リモートコンピューティングセッションがバーチャルデスクトップインスタンスとクライアントコンピューティングデバイスとの間で確立される。セッション確立の後で、インスタンスはブロック1008で、クライアントコンピューティングデバイスのユーザーによってインスタンスの使用を監視することに基づいて動的に調整されてよい。
例えば、初期のバーチャルデスクトップインスタンスは、ユーザープロファイルに基づいて低リソースをプロビジョニングされてよい。しかしながら、しばらくしてユーザーは、データベースで作業するため等、特定のタスクを実行するためにより多くのリソースを有するバーチャルデスクトップインスタンスへのアクセスを要求することがある。いくつかの実施形態では、異なる要件に対する要求はデスクトップインタフェースでのアプリケーションのためのアイコンをユーザーが選択することによって開始されてよい。いくつかの実施形態では、要求は、コントロールパネルのオプションのリストからユーザーがオプションを選択することによって開始されてよい。例えば、オプションのリストは処理パワー及びメモリの異なる量のスライドスケールを含んでよい。
PESプラットフォーム102は、より多くの処理パワー及びメモリに対応するためにバーチャルデスクトップインスタンスに割り当てられるリソースの量を動的に調整してよい。いくつかの実施形態では、調整は同じまたは異なるデータセンタコンピュータでインスタンスを再起動することを必要とすることがある。バーチャルデスクトップインスタンスの再起動は、実行中のインスタンスを終了すること、デスクトップストアをインスタンスから切断すること、新しいインスタンスを起動するためにデータセンタコンピュータを選択すること、選択されたデータセンタコンピュータで新しいインスタンスをインスタンス化すること、及び新しいインスタンスにデスクトップストアを関連付けることを含んでよい。いったんインスタンスがインスタンス化されると、ユーザーはログインプロンプトによってそれに対するアクセスを提供されてよい。
他の実施形態では、調整は、インスタンスの終了なしにバーチャルデスクトップインスタンスに追加のリソースを追加することを含むことがある。例えば、インスタンスマネージャはバーチャルデスクトップインスタンスに別のプロセッサを追加し、バーチャルデスクトップインスタンス等にメモリを追加できるだろう。ルーチン1000はブロック1010で終了する。
図11は、リモート環境とローカル環境との間でのクライアントコンピューティングデバイス及びサービスプロバイダの動作の遷移のためのルーチンを示す流れ図である。ルーチンは1102で開始する。ブロック1104で、リモートコンピューティングセッションはバーチャルデスクトップインスタンスとクライアントコンピューティングデバイスとに間に確立される。セッションは、上述されたように、クライアントコンピューティングデバイスのユーザーと関連付けられたユーザープロファイルに基づいて確立されてよい。さらに、デスクトップストアはユーザーのインスタンスと関連付けられる。セッションが確立された後、PESプラットフォーム102は、デスクトップストアで、ブロック1106でクライアントコンピューティングデバイスでのユーザーのインスタンスとの対話によって作成されるデータを記憶する。次いで、決定ブロック1108で、PESプラットフォーム102は、ネットワーク接続損失がクライアントコンピューティングデバイスとPESプラットフォーム102との間で計画されるかどうかを判断する。例えば、クライアントコンピューティングデバイスのユーザーが航空機に搭乗する準備中である可能性があり、ユーザーが間近のネットワーク切断を示すことがある。
係る切断は予期されていないが、PES102はクライアントコンピューティングデバイスでのユーザーの対話からデータを受信し続け、ブロック1106でデータを記憶する。しかしながら、ブロック1108で、PESプラットフォーム102が、ネットワーク接続が損失時に計画されていると判断すると、次いでルーチンはブロック1110に移動し、PESプラットフォーム102はバーチャルデスクトップインスタンスを生成するために使用される画像のコピー(例えば、OS及びインストールされているアプリケーションの画像)をクライアントコンピューティングデバイスの上に複製し、クライアントコンピューティングデバイスの上にデスクトップストアのコピーも複製する。いくつかの実施形態では、バーチャルデスクトップインスタンスをインスタンス化するために使用される画像を複製するために多大な量の時間を要することがある。したがって、ユーザーは相応して計画しなければならない可能性がある。代替実施形態では、クライアントコンピューティングデバイスは、ユーザーが切断モードに入る必要があるしばらく前にバーチャルデスクトップインスタンスを生成するまたは画像のコピーを受信するために使用される画像をプロビジョニングされることがある。本実施形態では、PESプラットフォーム102が、ネットワーク接続が失われると判断するとき、PESプラットフォーム102は、デスクトップストアをクライアントコンピューティングデバイスに送信させることができる。ここでは、PESプラットフォーム102はデスクトップストア内のすべてをクライアントコンピューティングデバイスに送信する必要はないことがある。むしろ、PESプラットフォーム102は、PESプラットフォーム102がクライアントコンピューティングデバイスと同期した前回以後の変更を送信できる。例えば、ローカルインスタンスマネージャはローカルデスクトップストアでどのブロックが変更したのかを示す変更ログだけではなく変更が行われた前回を示すタイムスタンプも維持することができ、PESプラットフォーム102は、デスクトップストアのためにタイムスタンプ及び変更ログを維持できる。PESプラットフォーム102及びローカルインスタンスマネージャは、相違点を決定し、同期できる。代替実施形態では、変更ログは、ブロックレベルの代わりにファイルシステムレベルで維持できる。例えば、インスタンスのエージェントは変更を追跡できる。この構成では、変更されたファイル及び設定値はブロックの代わりに同期できる。いくつかの実施形態では、クライアントコンピューティングデバイスは、クライアントコンピューティングデバイスは、データセンタコンピュータで実行されるインスタンスの低出力でよりエネルギー集約型ではないバージョンで適応されてよい。
その後、クライアントコンピューティングデバイス106がネットワーク104から切断されると、ユーザーはローカルに記憶された画像からローカルバーチャルデスクトップインスタンスを実行し、ローカルデータストアをアタッチしてよい。ここで、デスクトッププロファイル及びユーザーコンテンツに対する変更は、デスクトップストアのローカルコピーに記憶される。次いで、例えばクライアントコンピューティングデバイス106のユーザーがサービスプロバイダのネットワークへのネットワーク接続性のある領域に戻る(例えば、その目的地都市で航空機を降りる)とき等、ネットワーク接続がPESプラットフォーム102で再確立されるとき、リモートコンピューティングセッション要求がクライアントコンピューティングデバイスから受信され、ブロック1112によって示されるように、ローカルデスクトップストアはデスクトップストアと同期する。特定の例では、同期動作は、ユーザーがPESプラットフォーム102でバーチャルデスクトップインスタンスの開始を試行するときに発生するだろう。クライアントコンピューティングデバイス106がPESプラットフォーム102に接続されるとき、デスクトップストア170のコピーはPESプラットフォーム102のストレージサーバ107に保存される。デスクトップストア170のコピーに対して行われる変更はユーザーと関連付けられた一次デスクトップストア1400に同期され、リモートセッションでバーチャルインスタンスと対話する間にユーザーから受信される追加の変更も一次デスクトップストア170に保存される。ルーチン1100はブロック1114で終了する。
本開示の実施形態は、以下の節を鑑みて説明できる。
1.プロセッサと、メモリとを含むプログラム実行サービス(PES)の1台または複数のコンピュータであって、メモリが、実行時に1台または複数のコンピュータに、
コンピューティングデバイスからバーチャルデスクトップインスタンスへアクセスする要求であって、コンピューティングデバイスのユーザーを識別する要求を受信させ、
要求に対応する第1のバーチャルデスクトップインスタンスを識別させ、
第1のバーチャルデスクトップインスタンスの中で実行中の第1のオペレーティングシステムがユーザーのためのデスクトップ個人化情報に従って個人化され、1つまたは複数のオペレーティングシステムフォルダがユーザーのためのデータストアのストレージにマッピングされる、ユーザーのためのデスクトップ個人化情報及びユーザーのためのデータストアを含む1つまたは複数のボリュームを第1のバーチャルデスクトップインスタンスにアタッチさせ、
コンピューティングデバイスに対し、ユーザーのためのデスクトップ個人化情報に従って個人化され、ユーザーのためのデータストアのストレージにマッピングされる1つまたは複数のオペレーティングシステムを含む第1のバーチャルデスクトップインスタンスへのアクセスを提供させ、
割込みが、コンピューティングデバイスが第1のバーチャルデスクトップインスタンスにアクセスするのを防ぐ、第1のバーチャルデスクトップインスタンスに関係する割込みを決定させ、
要求に対応する第2のバーチャルデスクトップインスタンスを識別させ、
第2のバーチャルデスクトップインスタンスの中で実行中の第2のオペレーティングシステムが、ユーザーのためのデスクトップ個人化情報に従って個人化され、1つまたは複数のオペレーティングシステムフォルダがユーザーのためのデータストアのストレージにマッピングされる、1つまたは複数のボリュームを第1のバーチャルデスクトップインスタンスから切り離させ、第2のバーチャルデスクトップインスタンスにアタッチさせ、
コンピューティングデバイスに対し、第2のバーチャルデスクトップインスタンスへのアクセスを提供させる、
命令を含む、1台または複数のコンピュータ
を含むシステム。
2.命令が、実行時に、PESに、第1のバーチャルデスクトップインスタンスの故障を検出する第1のバーチャルデスクトップインスタンスの状態を監視するように構成されるインスタンスマネージャに少なくとも部分的に基づいて第1のバーチャルデスクトップインスタンスに関係する割込みを決定させる、節1に記載のシステム。
3.第1のバーチャルデスクトップインスタンスがPESによって選択されるホストコンピュータ上で実行され、命令が、実行時に、PESがPESによって選択されるホストコンピュータの故障を検出することに少なくとも部分的に基づいて、第1のバーチャルデスクトップインスタンスに関係する割込みをPESに決定させる、節1に記載のシステム。
4.命令が、実行時に、第1のバーチャルデスクトップインスタンスがコンピューティングデバイスと選択されたホストコンピュータとの間の接続の劣化または中断を検出することに少なくとも部分的に基づいて第1のバーチャルデスクトップインスタンスに関係する割込みをPESに決定させる、節3に記載のシステム。
5.第2のバーチャルデスクトップインスタンスがPESによって選択されるホストコンピュータで実行され、ホストコンピュータがコンピューティングデバイスとホストコンピュータとの間の接続の帯域幅に従ってPESによって選択される、節1に記載のシステム。
6.サービスプロバイダによってホストされる第1のバーチャルデスクトップインスタンスに関係するイベントが発生したと判断することであって、第1のバーチャルデスクトップインスタンスが、サーバプロバイダのためのユーザーアカウントと関連付けられたクライアントコンピューティングデバイスに接続され、第1のバーチャルデスクトップインスタンスがユーザーのためのデスクトッププロファイルに従って構成され、デスクトッププロファイルがオペレーティングシステム設定値を指定する、判断することと、
デスクトップストアを、ネットワークを介して第2のバーチャルデスクトップインスタンスにアタッチさせることであって、デスクトップストアがデスクトッププロファイルを含み、デスクトッププロファイルによって指定されるオペレーティングシステム設定値が第2のバーチャルデスクトップインスタンスの中で実行中のオペレーティングシステムを構成するために使用される、アタッチさせることと、
第2のバーチャルデスクトップインスタンスを、クライアントコンピューティングデバイスに接続させることと、
を含むコンピュータに実装される方法。
7.イベントが、第1のバーチャルデスクトップインスタンスがクライアントコンピューティングデバイスにアクセスできない旨の表示を含む、節1に記載のコンピュータに実装される方法。
8.デスクトップストアがさらに、ユーザーアカウントのユーザーによって作成される文書の記憶されたフォルダを含むユーザーコンテンツを含み、オペレーティングシステムがデスクトップストアに対する記憶されたフォルダのマッピングを含む、節1に記載のコンピュータに実装される方法。
9.デスクトップストアをネットワークを介してアタッチさせることが、デスクトップストアをサービスプロバイダの内部ネットワークを介してアタッチさせることを含む、節1に記載のコンピュータに実装される方法。
10.デスクトップストアを第2のバックアップデスクトップストアに複製することをさらに含む、節1に記載のコンピュータに実装される方法。
11.デスクトップストアに対する変更を受け取り、バックアップデスクトップストアに変更を複製することをさらに含む、節5に記載のコンピュータに実装される方法。
12.第1のまたは第2のバーチャルデスクトップインスタンスからのクライアントコンピューティングデバイスの切断の決定時に、デスクトッププロファイルを更新することを含さらに含む、節1に記載のコンピュータに実装される方法。
13.クライアントコンピューティングデバイスが、第1のまたは第2のバーチャルデスクトップインスタンスに接続される間に、デスクトッププロファイルを更新することをさらに含む、節1に記載のコンピュータに実装される方法。
14.第1のバーチャルデスクトップインスタンスが、デスクトップストア上で、ユーザーによって開かれる文書及び実行中のアプリケーションに関する情報を監視し、記憶するように構成される第1のエージェントを含む、節1に記載のコンピュータに実装される方法。
15.第2のバーチャルデスクトップインスタンスが、第1のエージェントによって監視され、記憶される情報を取り出し、相応して文書及びアプリケーションを開くように構成された第2のエージェントを含む、節9に記載のコンピュータに実装される方法。
16.実行時に、コンピューティングシステムに少なくとも
コンピューティングデバイスからバーチャルデスクトップインスタンスにアクセスする要求であって、コンピューティングデバイスのユーザーを識別する要求をプログラム実行サービス(PES)のデータセンタで受信し、
要求に対応する第1のバーチャルデスクトップインスタンスを識別し、
バーチャルデスクトップインスタンスの中で実行中の第1のオペレーティングシステムが、ユーザーのためのデスクトップ個人化情報に従って個人化され、1つまたは複数のオペレーティングシステムフォルダがユーザーのためのデータストアのストレージにマッピングされる、ユーザーのためのデスクトップ個人化情報及びユーザーのためのデータストアを含む1つまたは複数のボリュームを第1のバーチャルデスクトップインスタンスにアタッチさせ、
コンピューティングデバイスに対し、第1のバーチャルデスクトップインスタンスへのアクセスを提供し、
第1のバーチャルデスクトップインスタンスに関係するイベントを決定し、
要求に対応する第2のバーチャルデスクトップインスタンスを識別し、
コンピューティングデバイスに対し、第2のバーチャルデスクトップインスタンスへのアクセスを提供する、
ように命令するコンピュータ実行可能命令を含む非一過性の物理コンピュータストレージ。
17.コンピュータ実行可能な命令が、実行時に、コンピューティングシステムに1つまたは複数のボリュームを第1のバーチャルデスクトップインスタンスから切り離させ、第2のバーチャルデスクトップインスタンスにアタッチさせるようにさらに命令し、第2のバーチャルデスクトップインスタンスの中で実行中の第2のオペレーティングシステムがユーザーのためのデスクトップ個人化情報に従って、及びユーザーのためのデータストアのストレージにマッピングされた1つまたは複数のオペレーティングシステムに従って個人化される、節11に記載の非一過性の物理コンピュータストレージ。
18.コンピュータ実行可能命令が、実行時に、第1のバーチャルデスクトップインスタンスとコンピューティングデバイスとの間に第1のコンピューティングセッションを確立するようにコンピューティングシステムにさらに命令する、節11に記載の非一過性の物理コンピュータストレージ。
19.コンピュータ実行可能命令がさらに、第2のバーチャルデスクトップインスタンスとコンピューティングデバイスとの間に第2のコンピューティングセッションを確立するようにコンピューティングシステムにさらに命令する、節11に記載の非一過性の物理コンピュータストレージ。
20.第1のバーチャルデスクトップインスタンスに関係するイベントが、コンピューティングデバイスが第1のバーチャルデスクトップインスタンスにアクセスするのを妨げる、節11に記載の非一過性の物理コンピュータストレージ。
例示的な実施形態が開示、説明されてきたが、当業者は追加の実施形態または代替の実施形態が本発明の精神及び範囲内で実装され得ることを理解する。例えば、本明細書に説明される技術は、画像編集ソフトウェアまたはビデオ編集ソフトウェア、データベースソフトウェア、オフィス生産性ソフトウェア、3d設計ソフトウェア、オーディオ処理アプリケーション及び音声処理アプリケーション等を含むが、これに限定されるものではない、任意の数の他のソフトウェアアプリケーション及びプロセスでリモート処理管理を可能にするために、本発明の範囲から逸脱することなく活用されてよい。さらに、多くの実施形態は例示的として示されたが、当業者は、例示的な実施形態は互いに結合または実装される必要がないことを理解する。したがって、いくつかの例示的な実施形態は本開示の変形形態の範囲に従って活用または実装される必要はない。
とりわけ「できる」、「ことがある」、「可能性がある」、「してよい」等の条件付き言語は、特に明記しない限り、または使用される文脈内で特に理解されない限り、他の実施形態が特定の特徴、要素、及び/またはステップを含まないが、特定の実施形態が特定の特徴、要素、及び/またはステップを含むことを伝達することを概して目的とする。したがって、係る条件付き言語は、特徴、要素、及び/またはステップが1つまたは複数の実施形態にとって形がどうあれ必要とされること、または1つまたは複数の実施形態が、これらの特徴、要素、及び/またはステップが任意の特定の実施形態で含まれるべきであるか、それとも実行されるべきであるかをユーザー入力またはプロンプトの有無に関係なく決定するための論理を必ず含むことを暗示することを概して目的としていない。
本明細書に説明される及び/または添付図に示される流れ図のあらゆるプロセス説明、要素、またはブロックは、特有の論理関数またはステップをプロセスで実装するための1つまたは複数の実行可能命令を含むモジュール、セグメント、またはコードの部分を潜在的に示すとして理解されるべきである。代わりの実装は、要素または機能が削除され、当業者によって理解されるように、関係する機能性に応じて実質的に同時にまたは逆順で図示または説明される順序から外れて実行されてよい、本明細書に説明される実施形態の範囲内に含まれる。上述されたデータ及び/または構成要素がコンピュータ可読媒体に記憶され、コンピュータ可読媒体と関連付けられたドライブ機構を使用してコンピューティングデバイスのメモリの中にロードされてよく、CD−ROM、DVD−ROM等の任意の数のコンピュータ実行可能構成要素に記憶されてよい、またはネットワークインタフェースを介して提供もしくは入手されてよく、さらに構成要素及び/またはデータが単一のデバイスの含まれるもしくは任意の他の方法で分散できることが理解される。したがって、汎用コンピューティングデバイスは、上述された多様なデータ及び/または構成要素の処理及び/または実行で本開示のプロセス、アルゴリズム、及び方法論を実装するように構成されてよい。
多くの変形形態及び変更形態が上述の実施形態に対して行われてよく、上述の実施形態の要素が他の許容できる実施例の中にあると理解されるべきであることが強調されるべきである。すべての係る変更形態及び変形形態は、本開示の範囲内で本明細書に含まれ、以下の特許請求の範囲により保護されることを目的とする。