(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-05-23
(54)【発明の名称】プロビジョニングサービス(PVS)クラウド、読み取りキャッシュを使用したストリーミング
(51)【国際特許分類】
G06F 8/60 20180101AFI20220516BHJP
【FI】
G06F8/60
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021529469
(86)(22)【出願日】2021-01-14
(85)【翻訳文提出日】2021-05-25
(86)【国際出願番号】 US2021013353
(87)【国際公開番号】W WO2021178048
(87)【国際公開日】2021-09-10
(32)【優先日】2020-03-04
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】508045099
【氏名又は名称】シトリックス・システムズ・インコーポレイテッド
【氏名又は名称原語表記】Citrix Systems,Inc.
(74)【代理人】
【識別番号】110001243
【氏名又は名称】特許業務法人 谷・阿部特許事務所
(72)【発明者】
【氏名】モソ リー
(72)【発明者】
【氏名】シモン グラハム
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AB01
5B376AD13
5B376AE07
(57)【要約】
コンピューティングシステムは、通信ネットワークを介してベースディスクイメージをストリーミングするサーバと、クライアントマシンとを含む。クライアントマシンは、ネットワークドライバを含むプリブートデータを格納するための読み取りキャッシュと、読み取りキャッシュに結合されたプロセッサとを含む。プロセッサは、プリブートデータを使用してクライアントマシンの起動前始動をし、ネットワークドライバを実行した後、通信ネットワークを介してサーバからストリーミングされたベースディスクイメージを受信して、クライアントマシンの起動を続行する。
【特許請求の範囲】
【請求項1】
コンピューティングシステムであって、:
通信ネットワークを介してベースディスクイメージをストリーミングするように構成されたサーバと、
クライアントマシンと
を備え、前記クライアントマシンは、
ネットワークドライバを含むプリブートデータを格納するように構成された読み取りキャッシュと、
前記読み取りキャッシュに結合されたプロセッサであって、以下の、
前記プリブートデータを使用してクライアントマシンの起動前始動をすることと、
前記ネットワークドライバの実行後、前記通信ネットワークを介してサーバからストリーミングされた前記ベースディスクイメージを受信し、前記クライアントマシンの起動を続行することとを、実行するように構成された、該プロセッサと、
を含むことを特徴とするコンピューティングシステム。
【請求項2】
前記ベースディスクイメージはオペレーティングシステムを含み、および、前記プリブートデータは、前記ネットワークドライバを含む前記オペレーティングシステムのサブセットをさらに含むことを特徴とする請求項1に記載のコンピューティングシステム。
【請求項3】
前記オペレーティングシステムはオペレーティングシステム ネットワークドライバを含み、前記ネットワークドライバは、前記オペレーティングシステム ネットワークドライバと同じであるように構成されたことを特徴とする請求項2に記載のコンピューティングシステム。
【請求項4】
前記プロセッサは、実行中の前記ネットワークドライバに応答して、前記読み取りキャッシュ内の前記プリブートデータの使用から、ストリーミングされた前記ベースディスクイメージ内のデータの使用に切り替えるようにさらに構成されたことを特徴とする請求項1に記載のコンピューティングシステム。
【請求項5】
前記プロセッサは、前記プリブートデータ用の前記読み取りキャッシュにアクセスするように、起動前の時に命令を実行するようにさらに構成されたことを特徴とする請求項1に記載のコンピューティングシステム。
【請求項6】
前記クライアントマシンは、起動前の時に実行される命令を提供するためのファームウェアをさらに含み、前記ファームウェアはUEFI(Unified Extensible Firmware Interface)ファームウェアを含むことを特徴とする請求項5に記載のコンピューティングシステム。
【請求項7】
前記プリブートデータは、前記ネットワークドライバを含むオペレーティングシステム カーネルを含み、前記オペレーティングシステム カーネルが実行を開始すると、前記ネットワークドライバは、通信ネットワークに接続することを含むことを特徴とする請求項1に記載のコンピューティングシステム。
【請求項8】
クライアントマシンであって、
ネットワークドライバを含むプリブートデータを保存するように構成された読み取りキャッシュと、
前記読み取りキャッシュに結合されたプロセッサであって、以下の
プリブートデータを使用してクライアントマシンの起動前始動をすることと、
前記ネットワークドライバの実行後、通信ネットワークを介してサーバからストリーミングされたベースディスクイメージを受信し、前記クライアントマシンの起動を続行することと、
を実行するように構成された、該プロセッサと、
を備えたことを特徴とするクライアントマシン。
【請求項9】
前記ベースディスクイメージはオペレーティングシステムを含み、および、前記プリブートデータは、前記ネットワークドライバを含む前記オペレーティングシステムのサブセットをさらに含むことを特徴とする請求項8に記載のクライアントマシン。
【請求項10】
前記オペレーティングシステムはオペレーティングシステム ネットワークドライバを含み、前記ネットワークドライバは、前記オペレーティングシステム ネットワークドライバと同じであるように構成されたことを特徴とする請求項9に記載のクライアントマシン。
【請求項11】
前記プロセッサは、実行中の前記ネットワークドライバに応答して、前記読み取りキャッシュ内の前記プリブートデータの使用から、ストリーミングされた前記ベースディスクイメージ内のデータの使用に切り替えるようにさらに構成されたことを特徴とする請求項8に記載のクライアントマシン。
【請求項12】
前記プロセッサは、前記プリブートデータ用の前記読み取りキャッシュにアクセスするように、起動前の時に命令を実行するようにさらに構成されたことを特徴とする請求項8に記載のクライアントマシン。
【請求項13】
前記クライアントマシンは、起動前の時に実行される命令を提供するためのファームウェアをさらに含み、前記ファームウェアはUEFI(Unified Extensible Firmware Interface)ファームウェアを含むことを特徴とする請求項12に記載のクライアントマシン。
【請求項14】
前記プリブートデータは、前記ネットワークドライバを含むオペレーティングシステム カーネルを含み、前記オペレーティングシステム カーネルが実行を開始すると、前記ネットワークドライバは、通信ネットワークに接続することを含むことを特徴とする請求項8に記載のクライアントマシン。
【請求項15】
クライアントマシンによって、ネットワークドライバを含むプリブートデータを、前記クライアントマシン内の読み取りキャッシュに格納するステップと、
前記クライアントマシンによって、前記プリブートデータを使用して前記クライアントマシンの起動前始動をするステップと、
前記ネットワークドライバが実行された後、前記クライアントマシンによって、通信ネットワークを介してサーバからストリーミングされたベースディスクイメージを受信し、前記クライアントマシンの起動を続行するステップと
を含むことを特徴とする方法。
【請求項16】
前記ベースディスクイメージはオペレーティングシステムを含み、および、前記プリブートデータは、前記ネットワークドライバを含む前記オペレーティングシステムのサブセットをさらに含むことを特徴とする請求項15に記載の方法。
【請求項17】
前記オペレーティングシステムはオペレーティングシステム ネットワークドライバを含み、前記ネットワークドライバは、前記オペレーティングシステム ネットワークドライバと同じであるように構成されたことを特徴とする請求項16に記載の方法。
【請求項18】
前記クライアントマシンは、実行中の前記ネットワークドライバに応答して、前記読み取りキャッシュ内の前記プリブートデータの使用から、ストリーミングされた前記ベースディスクイメージ内のデータの使用に切り替えるようにさらに操作されたことを特徴とする請求項15に記載の方法。
【請求項19】
前記プリブートデータ用の前記読み取りキャッシュにアクセスするように、前記クライアントマシンによって、起動前の時に命令をさらに実行することを特徴とする請求項15に記載の方法。
【請求項20】
前記プリブートデータは、前記ネットワークドライバを含むオペレーティングシステム カーネルを含み、前記オペレーティングシステム カーネルが実行を開始すると、前記ネットワークドライバは、通信ネットワークに接続することを含むことを特徴とする請求項15に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、デスクトップ仮想化、より具体的には、クライアントマシンのプロビジョニングに関する。
【背景技術】
【0002】
現在、多くの組織がデスクトップ仮想化を使用して、ユーザのさまざまなニーズに対応するためのより柔軟なオプションを提供している。デスクトップ仮想化では、ユーザのコンピューティング環境をユーザの物理コンピューティングデバイスから分離することができる。
【0003】
デスクトップを集中管理する環境では、複数のクライアントマシンが、単一の「ゴールデンマスター」デスクトップディスクイメージのコピーに基づいて、コンピューティング環境へのアクセスを受信したり、コンピューティング環境を実行したりする場合がある。このゴールデンイメージは仮想マシンの共有テンプレートであり、オペレーティングシステムとアプリケーションが含まれます。ゴールデンイメージは、ベースディスクイメージと呼ばれることもある。
【0004】
ベースディスクイメージ画像のマシン展開のための1つのアプローチは、クローン作成に基づいている。イメージのクローン作成では、xcopy操作を利用して、ベースディスクイメージを各クライアントマシンの仮想ディスクにコピーできる。ベースディスクイメージが各クライアントマシンに展開されると、それは分散コンピューティングモデルになる。このアプローチにより、クライアントマシンはイメージの展開後にオフラインコンピューティングを実行できる。
【0005】
ベースディスクイメージのマシン展開のための別のアプローチは、プロビジョニングサービス(PVS)に基づいている。プロビジョニングサービスは、ネットワークブートテクノロジを利用して、通信ネットワークを介して、ベースディスクイメージをオンデマンドでクライアントマシンにストリーミングする。このアプローチでは、クライアントマシンが一定のネットワーク接続を維持する必要がある。
【発明の概要】
【0006】
コンピューティングシステムには、通信ネットワークを介してベースディスクイメージをストリーミングするように構成されたサーバと、クライアントマシンとが含まれる。クライアントマシンには、ネットワークドライバを含むプリブートデータを格納するように構成された読み取りキャッシュと、読み取りキャッシュに結合されたプロセッサとが含まれる。プロセッサは、プリブートデータを使用してクライアントマシンのプリブート(preboot)を開始するように構成されており、ネットワークドライバの実行後、通信ネットワークを介して、サーバからストリーミングベースディスクイメージを受信し、クライアントマシンのブートを続行する。
【0007】
ベースディスクイメージは、オペレーティングシステムが含む場合があり、および、プリブートデータは、ネットワークドライバを含むオペレーティングシステムのサブセットをさらに含む場合がある。
【0008】
ベースディスクイメージ内のオペレーティングシステムは、オペレーティングシステムネットワークドライバを含む場合があり、ネットワークドライバは、オペレーティングシステムネットワークドライバと同じになるように構成されている。プロセッサは、実行中のネットワークドライバに応答して、読み取りキャッシュ内の起動前(preboot)データの使用からストリーミングされたベースディスクイメージ内のデータの使用に切り替えるようにさらに構成される。
【0009】
プロセッサは、起動前の時に命令を実行して、起動前データの読み取りキャッシュにアクセスするようにさらに構成することができる。より具体的には、クライアントマシンは、起動前の時に実行される命令を提供するためのファームウェアをさらに含む。ファームウェアは、例えば、UEFI(Unified Extensible Firmware Interface)ファームウェアである。
【0010】
起動前データは、ネットワークドライバを含むオペレーティングシステム カーネルを含む場合があり、オペレーティングシステム カーネルが実行を開始すると、ネットワークドライバは、通信ネットワークに接続する。
【0011】
別の側面は、ネットワークドライバを含む起動前データを格納するように構成された読み取りキャッシュと、読み取りキャッシュに結合されたプロセッサとを含む、クライアントマシンに向けられる。プロセッサは、起動前データを使用してクライアントマシンの起動前始動(initiating prebooting)をするように構成されており、ネットワークドライバの実行後、通信ネットワークを介して、サーバからストリーミングベースディスクイメージを受信し、クライアントマシンのブートを続行する。
【0012】
さらに別の側面は、上記のようにクライアントマシンを操作する方法に向けられる。この方法は、ネットワークドライバを含む起動前データを、クライアントマシン内の読み取りキャッシュに格納することを含む。この方法はさらに、起動前データを使用してクライアントマシンの起動前始動をし、ネットワークドライバが実行された後、通信ネットワークを介して、サーバからストリーミングされたベースディスクイメージを受信して、クライアントマシンの起動を継続することを含む。
【図面の簡単な説明】
【0013】
【
図1】本開示の様々な態様が実施され得るコンピューティングデバイスのネットワーク環境の概略ブロック図である。
【
図2】
図1に示されるクライアントマシンまたはリモートマシンの実施形態を実施するのに有用なコンピューティングデバイスの概略ブロック図である。
【
図3】本開示の様々な態様が実施され得るクラウドコンピューティング環境の概略ブロック図である。
【
図4】開示の様々な側面が実装され得るワークスペースアプリを操作するデスクトップ、モバイル、およびウェブベースのデバイスの概略ブロック図である。
【
図5】本開示の様々な態様が実施され得るコンピューティングデバイスのワークスペースネットワーク環境の概略ブロック図である。
【
図6】本開示の様々な態様を実装することができる読み取りキャッシュを含むクライアントマシンを備えたコンピューティングシステムの概略ブロック図である。
【
図7】
図6に示されるコンピューティングシステムのより詳細な概略ブロック図である。
【
図8】
図6に示されるクライアントマシンを操作するための方法のフローチャートである。
【
図9】
図6に示されるクライアントマシンを操作するための方法のより詳細なフローチャートである。
【発明を実施するための形態】
【0014】
本説明は、例示的な実施形態が示されている添付の図面を参照して行われる。しかしながら、多くの異なる実施形態が使用されてもよく、したがって、説明は、本明細書に記載の特定の実施形態に限定されると解釈されるべきではない。むしろ、これらの実施形態は、本開示が徹底的かつ完全になるように提供される。同様の番号は、全体を通して同様の要素を指し、素数表記は、異なる実施形態において同様の要素を示すために使用される。
【0015】
デスクトップ仮想化では、クラウドサービスプロバイダは、共有された「ゴールデンマスター」デスクトップディスクイメージのコピーに基づいて動作するクライアントマシンを提供する。上記のように、このゴールデンイメージは、ベースディスクイメージと呼ばれることもある。オペレーティングシステムとアプリケーションが含まれる。ベースディスクイメージをクライアントマシンに提供するには、2つの異なるアプローチがある。クライアントマシンは、仮想マシンとも呼ばれる。
【0016】
一部のクラウドサービスプロバイダは、たとえば、Citrix Systems、Inc.,によってCitrix Provisioning Services(PVS)などのプロビジョニングサーバから各クライアントマシンに、ベースディスクイメージをストリーミングする。これは、起動前中にネットワークドライバを提供する各クライアントマシン内のファームウェアに基づいて可能である。ネットワークドライバを使用すると、クライアントマシンは、クライアントマシンにストリーミングされているベースディスクイメージ内のオペレーティングシステムから起動できる。ベースディスクイメージをストリーミングする利点は、パッチ、更新、およびその他の構成変更がベースディスクイメージに対して一度行われる。次に、各クライアントマシンが起動すると、更新されたベースディスクイメージを使用して起動する。
【0017】
その他クラウドサービスプロバイダは、ベースディスクイメージを、MicrosoftCorpからのAzureCloudおよびGoogleIncからのGoogleCloudPlatformなどの、各クライアントマシン内の仮想ディスクにコピーする。これらのクライアントマシンは、それぞれの仮想ディスクにコピーされたベースディスクイメージ内のオペレーティングシステムから直接起動するため、ファームウェアにネットワークドライバがない。イメージのクローン作成の欠点は、ベースディスクイメージに変更が加えられた場合、各クライアントマシンは、再起動する前に、更新されたベースイメージのコピーを受信する必要がある。ベースディスクイメージがコピーされる回数は、クラウドサービスプロバイダによってサポートされているクライアントマシンの数によって異なります。例えば、数百または数千のクライアントマシンが関係する場合がある。
【0018】
本開示の技術および教示は、クライアントマシン内のファームウェアがネットワークドライバを欠いているために、ベースディスクイメージをクライアントマシンにストリーミングすることができないクラウドサービスプロバイダがそうすることができる能力を提供する。以下で詳細に説明するように、これは、起動前中に使用されるネットワークドライバを提供する読み取りキャッシュを備えたクライアントマシンを使用して実現される。
最初に
図1を参照して、本開示の様々な側面が実施され得る場合の非限定的なネットワーク環境10は、1つまたは複数のクライアントマシン12A-12N、1台以上のリモートマシン16A-16N、1つ以上のネットワーク14、14’、およびコンピューティング10環境内にインストールされた1つ以上のアプライアンス18を含む。クライアントマシン12A-12Nは、ネットワーク経由14、14を介してリモートマシン16A-16Nと通信する。
【0019】
いくつかの実施形態では、クライアントマシン12A-12Nは、中間アプライアンス経由18を介してリモートマシン16A-16Nと通信する。図解されたアプライアンス18は、ネットワーク14、14’間に配置され、また、ネットワーク インターフェースまたはゲートウェイと呼ばれることもある。いくつかの実施形態では、アプライアンス108は、アプリケーション配信コントローラ(ADC)として動作し、データセンタやクラウドに展開されたビジネスアプリケーションやその他のデータへのアクセスをクライアントに提供したり、さまざまなクライアントデバイス間でサービスとしてのソフトウェア(SaaS)として配信したりでき、および/または、負荷分散などの他の機能を提供する。いくつかの実施形態では、複数のアプライアンス18は、使用することができ、アプライアンス18は、ネットワーク14および/または14’の一部として展開される場合がある。
【0020】
クライアントマシン12A-12Nは、一般的にクライアントマシン12 、ローカルマシン12、クライアント12、クライアントノード12、クライアントコンピューター12、クライアントデバイス12、コンピューティングデバイス12、エンドポイント12、またはエンドポイントノード12と呼ばれることがある。リモートマシン16A-16Nは、一般的にサーバ16またはサーバファーム16と呼ばれることがある。いくつかの実施形態では、クライアントデバイス12は、サーバによって提供されるリソースへのアクセスを求めるクライアントノードの両方として機能する能力を有し、また、他のクライアントデバイス12A-12Nにホストされたリソースへのアクセスを提供するサーバ16として機能する能力を有する。ネットワーク14、14’は、一般的にネットワークと呼ばれることがある。ネットワーク14は、有線ネットワークと無線ネットワークの任意の組み合わせで構成できる。
【0021】
サーバ16は、たとえば、次のような、ファイルサーバ、アプリケーションサーバ、Webサーバ、プロキシサーバ、アプライアンス、ネットワークアプライアンス、ゲートウェイ、アプリケーションゲートウェイ、ゲートウェイサーバ、仮想化サーバ、デプロイメントサーバー、Secure Sockets Layer仮想プライベートネットワーク(SSL VPN)サーバ、ファイアウォール、Webサーバ、ActiveDirectoryを実行しているサーバ、クラウドサーバ、または、ファイアウォール機能、アプリケーション機能、または負荷分散機能を提供するアプリケーションアクセラレーションプログラムを実行するサーバなどの、任意のサーバータイプにすることができる。
【0022】
サーバ16は、次の、ソフトウェア、プログラム、実行可能命令、仮想マシン、ハイパーバイザ、 Webブラウザ、Webベースのクライアント、クライアントサーバーアプリケーション、シンクライアントコンピューティングクライアント、ActiveXコントロール、Javaアプレット、ソフトIP電話のようなVoiceover Internet Protocol(VoIP)通信に関連するソフトウェア、ビデオおよび/またはオーディオをストリーミングするためのアプリケーション、リアルタイムデータ通信を容易にするためのアプリケーション、HTTPクライアント、FTPクライアント、オスカークライアント、Telnetクライアント、またはその他の実行可能命令のセット、いずれかである可能性のあるアプリケーションを実行、操作、またはその他の方法で提供する場合がある。
【0023】
いくつかの実施形態では、サーバ16は、シンクライアントまたはリモートディスプレイプロトコルを使用して、サーバ16上で実行されているアプリケーションによって生成されたディスプレイ出力をキャプチャするリモートプレゼンテーションサービスプログラムまたはその他のプログラムを実行する場合があり、また、アプリケーションの表示出力をクライアントデバイス12に送信する。
【0024】
さらに他の実施形態では、サーバ16は、クライアントデバイス12のユーザに対して、コンピューティング環境へのアクセスを提供する仮想マシンを実行できる。クライアントデバイス12は、仮想マシンの場合がある。仮想マシンは、たとえば、ハイパーバイザ、仮想マシンマネージャ(VMM)、またはサーバ16内の他のハードウェア仮想化技術によって管理できる。
【0025】
いくつかの実施形態では、ネットワーク14は、ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、ワイドエリアネットワーク(WAN)、プライマリパブリックネットワーク14、およびプライマリプライベートネットワーク14である。追加の実施形態は、さまざまなプロトコルを使用してモバイルデバイス間で通信する携帯電話ネットワークのネットワーク14を含む。ワイヤレスローカルエリアネットワーク(WLAN)内の短距離通信の場合、プロトコルには802.11、Bluetooth、および近距離無線通信(NFC)が含まれる場合がある。
【0026】
図2は、クライアントデバイス12、アプライアンス18、および/またはサーバ16の実施形態を実行するのに有用なコンピューティングデバイス20のブロック図を示す。コンピューティングデバイス20は、1つ以上のプロセッサ22、揮発性メモリ24(例、ランダムアクセスメモリ(RAM))、不揮発性メモリ30、ユーザインターフェース(UI)38、1つ以上の通信インターフェース26、および通信バス48を含む。
【0027】
不揮発性メモリ30は、1つまたは複数のハードディスクドライブ(HDD)、またはその他の磁気または光ストレージメディア、フラッシュドライブやその他のソリッドステートストレージメディアなどの1つ以上のソリッドステートドライブ(SSD)、1つまたは複数のハイブリッド磁気ドライブおよびソリッドステートドライブ、および/またはクラウドストレージなどの1つまたは複数の仮想ストレージボリューム、またはそのような物理ストレージボリュームと仮想ストレージボリュームまたはそのアレイとの組み合わせ、を含む。
【0028】
ユーザインターフェース38は、グラフィカルユーザインターフェース(GUI)40(例えば、タッチスクリーン、ディスプレイなど)および1つ以上の入力/出力(I/O)デバイス42(例えば、マウス、キーボード、マイクロフォン、1つまたは複数のスピーカ、1つまたは複数のカメラ、1つまたは複数の生体認証スキャナ、1つまたは複数の環境センサ、および1つまたは複数の加速度計など)を含む。
【0029】
不揮発性メモリ30は、オペレーティングシステム32、1つ以上のアプリケーション34、および、データ36、例えば、オペレーティングシステムのコンピュータ命令32および/または揮発性メモリ24からプロセッサ22によって実行されるアプリケーション34、を格納する。いくつかの実施形態では、揮発性メモリ24は、メインメモリよりも速い応答時間を提供する1つまたは複数のタイプのRAMおよび/またはキャッシュメモリを含む。データは、GUI40の入力デバイスを使用して入力することができ、またはI/Oデバイス42から受信することができる。コンピュータのさまざまな要素20は、通信バス48を介して通信できる。
【0030】
図解されたコンピューティングデバイス20は、単に例示的なクライアントデバイスまたはサーバとして示され、また、本明細書に記載されるように、動作することができる適切なハードウェアおよび/またはソフトウェアを有する任意のタイプのマシンまたはマシンのセットを備えた任意のコンピューティングまたは処理環境によって実施される。
【0031】
プロセッサ22は、システムの機能を実行するために、コンピュータプログラムなどの1つまたは複数の実行可能命令を実行するように、1つまたは複数のプログラム可能なプロセッサによって実施される。本明細書で使用される場合、「プロセッサ」という用語は、機能、動作、または動作のシーケンスを実行する回路を説明する。機能、動作、または動作のシーケンスは、回路にハードコードされるか、またはメモリデバイスに保持され、回路によって実行される命令によってソフトコード化される。プロセッサは、デジタル値を使用して、および/またはアナログ信号を使用して、機能、操作、または操作のシーケンスを実行することができる。
【0032】
いくつかの実施形態では、プロセッサは、1つまたは複数の特定用途向け集積回路(ASIC)、マイクロプロセッサ、デジタル信号プロセッサ(DSP)、グラフィックス処理ユニット(GPU)、マイクロコンピュータ、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックアレイ(PLA)、マルチコアプロセッサ、または関連するメモリを備えた汎用コンピュータ、で具体化することができる。
【0033】
プロセッサ22は、アナログ、デジタル、またはミックスドシグナルの場合がある。いくつかの実施形態では、プロセッサ22は、1つまたは複数の物理プロセッサ、または、1つまたは複数の仮想(例えば、遠隔地またはクラウド)プロセッサであってよい。複数のプロセッサコアおよび/または複数のプロセッサを含むプロセッサは、命令の並列の同時実行、または、複数のデータに対する1つの命令の並列の同時実行のための機能を提供してよい。
【0034】
通信インターフェース26は、コンピューティングデバイス20が、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、パーソナルエリアネットワーク(PAN)、またはインターネットなどのコンピュータネットワークに、セルラー接続を含むさまざまな有線および/または無線接続を介してアクセスすることができるようにするための、1つまたは複数のインターフェースを含んでよい。
【0035】
説明された実施形態では、コンピューティングデバイス20は、クライアントデバイスのユーザに代わって、アプリケーションを実行する。例えば、コンピューティングデバイス20は、ハイパーバイザによって管理される1つ以上の仮想マシンを実行する。各仮想マシンは、ホストされたデスクトップセッションなど、ユーザまたはクライアントデバイスに代わってアプリケーションが実行する実行セッションを提供する。コンピューティングデバイス20は、ターミナルサービスセッションを実行して、ホストされたデスクトップ環境を提供することもできる。コンピューティングデバイス20は、1つまたは複数のアプリケーション、1つまたは複数のデスクトップアプリケーション、および1つまたは複数のアプリケーションを実行する1つまたは複数のデスクトップセッションを含む、リモートコンピューティング環境へのアクセスを提供することができる。
【0036】
仮想化サーバ16の例として、フロリダ州フォートローダーデールのCitrixSystems、Inc.によって提供されるCitrixハイパーバイザ(「Citrix Systems」)を使用して、実施されてよい。仮想アプリおよびデスクトップセッションは、さらに、CitrixVirtual Apps and Desktops(CVAD)によって提供されてよく、Citrix Systemsからも提供されてよい。Citrix Virtual Apps and Desktopsは、任意のデバイスからの仮想アプリ、デスクトップ、データセッションなどを含む仮想セッションへのユニバーサルアクセスに、スケーラブルなVDIソリューションを実施するオプションを加えた、生産性を向上させるアプリケーション仮想化ソリューションである。仮想セッションには、例えば、サービスとしてのソフトウェア(SaaS)とサービスとしてのデスクトップ(DaaS)セッションとをさらに含んでよい。
【0037】
図3を参照すると、クラウドコンピューティング環境50は、クラウド環境、クラウドコンピューティング、またはクラウドネットワークと呼ばれることもあるように記述されている。クラウドコンピューティング環境50は、複数のユーザまたはテナントに、共有コンピューティングサービスおよび/またはリソースの配信を提供できる。例えば、共有リソースおよびサービスには、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、データベース、ソフトウェア、ハードウェア、分析、およびインテリジェンスを含むことができるが、これらに限定はされない。
【0038】
クラウドコンピューティング環境50において、1つ以上のクライアント52A-52C(例えば上記のような)は、クラウドネットワーク54と通信する。クラウドネットワーク54は、サーバ、ストレージ、サーバファーム、データセンタなどのバックエンドプラットフォームを含んでよい。ユーザまたはクライアント52A-52Cは、単一の組織/テナント、または、複数の組織/テナントに対応することができる。より具体的には、一実施例では、クラウドコンピューティング環境50は、単一の組織(エンタープライズクラウドなど)にサービスを提供するプライベートクラウドを提供する。他の例では、クラウドコンピューティング環境50は、複数の組織/テナントにサービスを提供するコミュニティまたはパブリッククラウドを提供する。さらに別の実施形態では、クラウドコンピューティング環境50は、パブリッククラウドとプライベートクラウドを組み合わせたハイブリッドクラウドを提供する。パブリッククラウドは、サードパーティによってクライアント52A-52Cまたはエンタープライズ/テナントに対して維持されている、パブリックサーバを含んでよい。サーバは、地理的に離れた場所など、オフサイトに配置されてよい。
【0039】
クラウドコンピューティング環境50は、それぞれの環境内のさまざまな要求に応じて動的に割り当てられおよび再割り当てされたさまざまな物理リソースと仮想リソースとを備えた、マルチテナント環境またはマルチテナントモデルを通じて、クライアント52A-52Cを介して、複数のユーザにサービスを提供するためのリソースプーリングを提供することができる。マルチテナント環境は、ソフトウェアの単一インスタンス、アプリケーション、または複数のユーザにサービスを提供するソフトウェアアプリケーションを提供できる、システムまたはアーキテクチャを含むことができる。いくつかの実施形態では、クラウドコンピューティング環境50は、オンデマンドのセルフサービスを提供して、複数のクライアント52A-52Cのネットワーク全体でコンピューティング機能(例えば、サーバ時間、ネットワークストレージ)を一方的にプロビジョニングできる。クラウドコンピューティング環境50は、1つ以上のクライアント52からのさまざまな要求に応じて、動的にスケールアウトまたはスケールアウトするための弾力性を提供できる。いくつかの実施形態では、コンピューティング環境50は、提供された共有サービスおよびリソースに対応するレポートを監視、制御、および/または生成するための、監視サービスを含めるか又は提供することができる。
【0040】
いくつかの実施形態では、クラウドコンピューティング環境50は、例えば、サービス(SaaS)56としてのソフトウェア、サービス(PaaS)58としてのプラットフォーム、サービス(IaaS)60としてのインフラストラクチャ、およびサービスとしてのデスクトップ(DaaS)62など、さまざまなタイプのクラウドコンピューティングサービスのクラウドベースの配信を提供してよい。IaaSは、指定された期間中に必要とされるインフラストラクチャリソースの使用をレンタルするユーザを指してよい。IaaSプロバイダは、大規模なプールからストレージ、ネットワーク、サーバ、または仮想化リソースを提供し、ユーザが必要に応じてより多くのリソースにアクセスすることで迅速にスケールアップすることができる。IaaSの例には、ワシントン州シアトルのAmazon.com、Inc.によって提供されるAMAZON WEB SERVICES、テキサス州サンアントニオのRackspace US Inc.によって提供されるRACKSPACE CLOUD、カリフォルニア州マウンテンビューのGoogle Inc.によって提供されるGoogle Compute Engine、またはカリフォルニア州サンタバーバラのRightScale Inc.によって提供されるRIGHTSCALEを含む。
【0041】
PaaSプロバイダは、ストレージ、ネットワーキング、サーバ、仮想化などのIaaSによって提供される機能に加えて、オペレーティングシステム、ミドルウェア、ランタイムリソースなどの追加リソースを提供してよい。PaaSの例としては、ワシントン州レドモンドのMicrosoft Corporationによって提供されるWINDOWS AZURE、Google Inc.によって提供されるGoogle App Engine、カリフォルニア州サンフランシスコのHeroku Inc.によって提供されるHEROKUなどがある。
【0042】
SaaSプロバイダは、ストレージ、ネットワーキング、サーバ、仮想化、オペレーティングシステム、ミドルウェア、ランタイムリソースなど、PaaSが提供するリソースを提供してよい。いくつかの実施形態では、SaaSプロバイダは、例えば、データおよびアプリケーションリソースを含む追加のリソースを提供してよい。SaaSの例には、Google Inc.によって提供されるGOOGLE APPS、カリフォルニア州サンフランシスコのSalesforce.com Inc.によって提供されるSALESFORCE、またはMicrosoft Corporationによって提供されるOFFICE365を含む。SaaSの例には、データストレージプロバイダ、例えば、カリフォルニア州サンフランシスコのDropbox Inc.によって提供されるDROPBOX、Microsoft Corporationによって提供されるMicrosoft ONEDRIVE、Google Inc.によって提供されるGoogle Drive、またはカリフォルニア州クパチーノのApple Inc.によって提供されるApple ICLOUDも含んでよい。
【0043】
SaaSと同様に、DaaS(ホスト型デスクトップサービスとも呼ばれる)は仮想デスクトップインフラストラクチャ(VDI)の形式であり、仮想デスクトップセッションは通常、仮想デスクトップで使用されるアプリと共にクラウドサービスとして提供される。Citrix Cloudは、DaaS配信プラットフォームの1例である。DaaS配信プラットフォームは、例えば、ワシントン州レドモンドのMicrosoft CorporationのAZURE CLOUD(ここでは「Azure」)、又はワシントン州シアトルのAmazon.com Inc.が提供するAMAZON WEB SERVICES(ここでは「AWS」)などの、パブリック クラウト コンピューティング インフラストラクチャ上でホストされる。Citrix Cloudの場合、Citrix Workspace アプリは、統合された体験(experience)を提供するために、(敷地内かクラウド内かに関係なく)アプリ、ファイル、デスクトップを一緒にまとめるための単一のエントリポイントとして使用できる。
【0044】
次に、Citrix Workspaceアプリによって提供される統合された体験について、
図4を参照してより詳細に説明する。Citrix Workspace アプリは、ここでは一般的にワークスペースアプリ70と呼ばれる。ワークスペースアプリ70は、ユーザがワークスペースリソースにアクセスする方法であり、その1つのカテゴリは、アプリケーションである。これらのアプリケーションには、SaaSアプリ、Webアプリ、または仮想アプリがある。ワークスペースアプリ70はまた、ユーザが、ローカルデスクトップまたは仮想デスクトップのような自分のデスクトップにアクセスできるようにします。さらに、ワークスペースアプリ70は、ユーザが、多数のリポジトリに保存されているファイルまたはデータにアクセスできるようにします。ファイルとデータは、Citrix ShareFileでホストされるか、オンプレミスネットワークファイルサーバでホストされるか、Microsoft OneDriveまたはGoogleドライブボックスなどの他のクラウドストレージプロバイダでホストされる。
【0045】
統合された体験を提供するために、ユーザが必要とするすべてのリソースを見つけて、ワークスペースアプリ70からアクセスできるようにすることができる。ワークスペースアプリ70は、さまざまなバージョンで提供される。ワークスペースアプリ70の1つのバージョンは、Windows、Mac、またはLinuxプラットフォームに基づいている、デスクトップ72用にインストールされたアプリケーションである。ワークスペースアプリ70の2番目のバージョンは、iOSまたはAndroidプラットフォームに基づいている、モバイルデバイス74用にインストールされたアプリケーションである。ワークスペースアプリ70の3番目のバージョンは、ハイパーテキストマークアップ言語(HTML)ブラウザを使用して、ワークスペース環境へのユーザクセスを提供する。ワークスペースアプリ70のWebバージョンは、パブリックキオスク76を操作するときなど、ユーザがワークスペースアプリをインストールしたくないとき、またはワークスペースアプリをインストールする権限がないときに使用される。
【0046】
ワークスペースアプリ70のこれらの異なるバージョンのそれぞれは、同じユーザ体験を有利に提供することができる。これにより、ユーザがクライアントデバイス72からクライアントデバイス74へ、クライアントデバイス76へ、異なるプラットフォームで移動できるという利点があり、また、それらのワークスペースについて同じユーザ体験を利用できる。クライアントデバイス72、74、76は、エンドポイントと呼ばれる。
【0047】
上記のように、ワークスペースアプリ70は、Windows、Mac、Linux、iOS、Androidプラットフォームのみならず、HTMLブラウザ(HTML5)を備えたプラットフォームをもサポートする。ワークスペースアプリ70は、ユーザがさまざまな種類のアプリおよびデータリソースにアクセスすることができるように、複数のエンジン80-90を組み込んでいる。各エンジン80-90は、特定のリソースのためにユーザ体験を最適化する。各エンジン80-90はまた、組織または企業に、ユーザクティビティおよび潜在的なセキュリティ脅威に関する洞察を提供する。
【0048】
組み込みブラウザエンジン80は、ローカルにインストールされおよび管理されていないブラウザで起動する代わりに、ワークスペースアプリ70内に含まれるSaaSおよびWebアプリを保持する。組み込みブラウザを使用すると、ワークスペースアプリ70は、SaaSおよびWebアプリにおいてユーザが選択したハイパーリンクを傍受することができ、および、アクセスを承認、拒否、または分離する前にリスク分析を要求することができる。
【0049】
高解像度体験(HDX)エンジン82は、WindowsまたはLinuxオペレーティングシステムで実行されている、仮想ブラウザ、仮想アプリ、およびデスクトップセッションへの接続を確立する。HDXエンジン82を使用して、WindowsおよびLinuxリソースはリモートで実行するが、ディスプレイは、ローカルのままでエンドポイント上にある。最高のユーザ体験を提供するために、HDXエンジン82は、さまざまな仮想チャネルを利用して、変化するネットワーク条件とアプリケーション要件に適応する。高遅延または高パケット損失のネットワークを克服するために、HDXエンジン82は、最適化されたトランスポートプロトコルとより優れた圧縮アルゴリズムを自動的に実施する。各アルゴリズムは、ビデオ、画像、テキストなどの特定のタイプのディスプレイ用に最適化されている。HDXエンジン82は、アプリケーション内のこれらのタイプのリソースを識別し、画面のそのセクションに最も適切なアルゴリズムを適用する。
【0050】
多くのユーザにとって、ワークスペースは、データを中心としている。コンテンツコラボレーションエンジン84は、データがオンプレミスにあるかクラウドにあるかに関係なく、ユーザが全てのデータをワークスペースに統合できるようにする。コンテンツコラボレーションエンジン84は、管理者とユーザが、企業およびユーザ固有のデータストレージの場所へのコネクタのセットを作成できるようにする。これには、例えば、OneDrive、Dropbox、オンプレミスのネットワークファイル共有などを含むことができる。ユーザは複数のリポジトリにファイルを保持することができ、および、ワークスペースアプリ70がそれらを単一のパーソナライズされたライブラリに統合できるようにする。
【0051】
ネットワークエンジン86は、エンドポイントまたはエンドポイント上のアプリが、セキュリティで保護されたバックエンドリソースへのネットワーク接続を必要とするかどうかを識別する。ネットワークエンジン86は、エンドポイントデバイス全体について完全なVPNトンネルを自動的に確立することができ、またはアプリ固有のμ-VPN接続を作成することができる。μ-VPNは、アプリケーションとエンドポイントデバイスがアクセスできるバックエンドリソースを定義し、バックエンドインフラストラクチャを保護する。多くの場合、特定のユーザクティビティは、独自のネットワークベースの最適化の恩恵を受ける。ユーザがファイルのコピーを要求した場合、Workspaceアプリ70は、複数のネットワーク接続を同時に自動的に利用して、アクティビティをより速く完了することができる。ユーザがVoIP通話を開始すると、ワークスペースアプリ70は複数のネットワーク接続間で通話を複製することによって、品質が向上する。ネットワークエンジン86は、最初に到着したパケットのみを使用する。
【0052】
分析エンジン88は、ユーザのデバイス、場所、および動作に関して報告する。クラウドベースのサービスは、デバイスの盗難、IDのハッキング、または会社を辞める準備をしているユーザの結果である可能性のある潜在的な異常を識別する。分析エンジン88によって収集された情報は、対策を自動的に実施することによって、会社の資産を保護する。
【0053】
管理エンジン90は、現在のワークスペースアプリ70を保持する。これにより、ユーザに最新の機能が提供されるだけでなく、追加のセキュリティ拡張機能も含む。ワークスペースアプリ70は、カスタマイズ可能なポリシーに基づいて、更新を定期的にチェックしておよび自動的に展開する自動更新サービスを含む。
【0054】
ここで
図5を参照する。ワークスペースアプリ70に基づいてユーザに統合された体験を提供する、ワークスペースネットワーク環境100が議論される。ワークスペースアプリ70のデスクトップ、モバイル、およびWebバージョンのすべてが、CitrixCloud104内で実行するワークスペース体験サービスと通信する。次に、ワークスペース体験サービス102は、リソースフィードマイクロサービス経由108で、すべての異なるリソースフィード16を取り込む。つまり、CitrixCloud104で実行している他のサービスとは異なるすべてのリソースが、リソースフィードマイクロサービス108によって引き込まれる。さまざまなサービスは、仮想アプリとデスクトップサービス110、安全なブラウザサービス112、エンドポイント管理サービス114、コンテンツコラボレーションサービス116、およびアクセス制御サービス118を含む。組織または企業がサブスクライブしているサービスはすべて、ワークスペース体験サービス102に自動的に取り込まれ、および、ユーザのワークスペースアプリ70に配信される。
【0055】
クラウドフィード120に加えて、リソースフィードマイクロサービス108は、オンプレミスフィード122を取り込むことができる。クラウドコネクタ124は、オンプレミスのデータセンタで実行されている仮想アプリとデスクトップ展開を提供するために使用される。デスクトップ仮想化は、例えば、Citrix仮想アプリおよびデスクトップ126、Microsoft RDS 128、またはVMwareHorizon 130によって提供される。クラウドフィード120、オンプレミスフィード122、インターネット(IoT)デバイス134からのデバイスフィード132に加えて、例えば、リソースフィードマイクロサービス108によって取り込まれる。サイト集約は、さまざまなリソースを、ユーザの全体的なワークスペース体験に結び付けるために使用される。
【0056】
クラウドフィード120、オンプレミスフィード122およびデバイスフィード132それぞれが、ユーザのワークスペース体験に、異なる独自のタイプのアプリケーションを提供する。ワークスペース体験は、ローカルアプリ、SaaSアプリ、仮想アプリ、デスクトップブラウザーアプリ、およびストレージアプリをサポートすることができる。フィードが増え続け、拡大し続けると、ワークスペース体験は、ユーザのワークスペース全体に、追加のリソースを含めることが可能となる。これは、ユーザが、アクセスする必要のあるすべてのアプリケーションに、アクセスできることを意味する。
【0057】
引き続きワークスペースネットワーク環境20を参照し、一連のイベントは、統合された体験がユーザに提供される方法について説明される。統合された体験は、Citrix Cloud104内で実行しおよびそれらの身元(identity)を提示(イベント1)する、ワークスペース体験サービス102に接続するように、ユーザがワークスペースアプリ70を使用することから始まる。身元は、例えば、ユーザ名とパスワードを含む。
【0058】
ワークスペース体験サービス102は、ユーザの身元を、Citrix Cloud104(イベント2)内のID(identity)マイクロサービス140に転送する。IDマイクロサービス140は、組織のワークスペース構成に基づいて、正しいIDプロバイダ142(イベント3)に対してユーザを認証する。認証は、クラウドコネクタ146の導入を要求する、オンプレミス アクティブディレクトリ144に基づいてよい。認証は、Azure アクティブディレクトリ148、または、例えばCitrixADCやOktaなど第三者のIDプロバイダ150にさえも基づいてよい。
【0059】
承認されると、ワークスペース体験サービス102は、リソースフィードマイクロサービス108から、承認されたリソースのリスト(イベント4)を要求する。構成されたリソースフィード106ごとに、リソースフィードマイクロサービス108は、シングルサインマイクロサービス152からIDトークン(イベント5)を要求する。
【0060】
リソースフィード固有のIDトークンは、各リソースの認証ポイントに渡される(イベント6)。オンプレミスリソース122は、Citrix クラウドコネクタ124を介して連絡される。各リソースフィード106は、それぞれのIDに対して許可されたリソースのリストで応答する(イベント7)。
【0061】
リソースフィードマイクロサービス108は、さまざまなリソースフィード106からの全てのアイテムを集約し、およびワークスペース体験サービス102に転送する(イベント8)。ユーザは、ワークスペース体験サービス102からリソースを選択する(イベント9)。
【0062】
ワークスペース体験サービス102は、リクエストをリソースフィードマイクロサービス108に転送する(イベント10)。リソースフィードマイクロサービス108は、シングルサインオンマイクロサービス152からIDトークンを要求する(イベント11)。ユーザのIDトークンはワークスペース体験サービス102に送信される(イベント12)、この場合、起動チケットが、生成されおよびユーザに送信される。
【0063】
ユーザは、ゲートウェイサービス160への安全なセッションを開始し、および開始チケットを提示する(イベント13)。ゲートウェイサービス160は、適切なリソースフィード106への安全なセッションを開始し、およびシームレスにユーザを認証するためのIDトークンを提示する(イベント14)。セッションが初期化されると、ユーザはリソースを利用できるようになる(イベント15)。ワークスペース全体を単一のアクセスポイントまたはアプリケーションを介して配信することで、生産性が向上し、ユーザの一般的なワークフローが合理化される。
【0064】
ここで
図6を参照すると、コンピューティングシステム200は、クライアントマシ210内のファームウェアが起動前(preboot)の間じゅうにネットワークドライバを提供しないとき、サーバ230からストリーミングされるベースディスクイメージ232を受信するように、クライアントマシン210に機能を提供する。ファームウェアは、起動前プロセス中にハードウェアの初期化を実行するために使用される。起動前プロセスは、構成されるべきおよび起動前にされるべきオペレーティングシステムがまだロードされていない、クライアントマシン210を許可する起動前実行環境(PXE)の一部である。以下で詳細に説明するように、クライアントマシン210は、起動前データ214を含む読み取りキャッシュ212付きのメモリを含む。起動前データ214は、ファームウェアによってアクセスされ、および、ストリーミングされたベースディスクイメージ232を受信するように、通信ネットワーク240への接続に使用されるネットワークドライバを含む。
【0065】
図解されたコンピューティングシステム200は、通信ネットワーク240上でベースディスクイメージ232をストリーミングするように構成された、サーバ230を含む。クライアントマシン210は、ネットワークドライバを含む起動前データ214を記憶するように構成された、読み取りキャッシュ212を含む。プロセッサ216は、読み取りキャッシュ212に結合されている。プロセッサ216は、起動前データ214を使用して、クライアントマシン210の起動前始動をするように構成されている。ネットワークドライバが実行した後、プロセッサ216は、通信ネットワーク240を介してサーバ230から、ストリーミングされたベースディスクイメージ232を受信することができる。
【0066】
上記のように、ベースディスクイメージ232は、オペレーティングシステム234およびアプリケーション236を含む。オペレーティングシステム234は、オペレーティングシステムのネットワークドライバを含む。起動前データ214のネットワークドライバは、オペレーティングシステムのネットワークドライバと同じである。オペレーティングシステム234は、例えば、Microsoft Corp のMicrosoft Windowsでよい。クライアントマシン210のファームウェアは、起動前プロセス中にハードウェアの初期化を実行するようにプレインストールされ、および、クライアントマシン210に電源が入っているときに実行する最初のソフトウェアである。
【0067】
ファームウェアは、例えば、UEFI(Unified Extensible Firmware Interface)ファームウェアでよい。当業者によって容易に理解されるように、UEFIファームウェアは、BIOS(基本入出力システム)ファームウェアを置き換えることを意図している。
【0068】
クライアントマシンがクライアントマシン内のローカルディスクに保存されているベースディスクイメージを使用して動作することを意図している場合、そのファームウェアにはネットワークドライバは必要ない。これは、クライアントマシンがローカルディスクに保存されているベースディスクイメージから起動するためである。したがって、クライアントマシン210の製造者は、クライアントマシン210を起動する必要がないため、ファームウェアからネットワークドライバを削除する。
【0069】
AzureやGoogleCloud Platformなどのクラウドサービスプロバイダが、クライアントマシン210内のローカルディスクに保存されているベースディスクイメージを使用することから、サーバ230からストリーミングされたベースディスクイメージ232を使用することへ変更するため、クライアントマシン210内のプロセッサ216は、起動前の間じゅう、通信ネットワーク240へのアクセスを必要とする。通信ネットワーク240がクライアントマシン210によってアクセスすることができないとき、その場合、クライアントマシン210は動作可能にはできない。読み取りキャッシュ212は、オペレーティングシステムのネットワークドライバを含む、オペレーティングシステム234のサブセットを含む。読み取りキャッシュ212は、通信ネットワーク240を介してサーバ230と通信すること無く事前設定するように、クライアントマシン210に許可する。読み取りキャッシュ212は、ネットワークドライバがない場合、ファームウェアの起動前の間じゅう、ギャップを埋めるのに有利である。
【0070】
クライアントマシン210内のプロセッサ216は、そこに含まれる起動前データ214のために、リーチキャッシュ212にアクセスするように構成されている。より具体的には、プロセッサ216は、クライアントマシン210内でオペレーティングシステム ローダを実行する。プロセッサ216は、通信ネットワーク240を介してサーバ230に接続することを必要とすること無しに、起動前の間じゅう、ローカル構成ファイルによって必要なパラメータを取得する。ローカル構成ファイルは、クライアントマシン210の初期設定を構成するために使用される。必要なパラメータは、オペレーティングシステム ローダに移行するためのデータを含む。
【0071】
読み取りキャッシュ212内のネットワークドライバは、ロードされて実行を開始した後、通信ネットワーク240を介してサーバ230との通信が開始される。プロセッサ216は、実行中のネットワークドライバに応答して、読み取りキャッシュ212内で起動前データを使用することから、ストリーミングされたベースディスクイメージ232のデータを使用することに切り替える。サーバ230との通信は、クライアントマシン210に、通信ネットワーク240を介して(例えば、ストリーミング経由)ベースディスクイメージ232の残りを受信することを許可する。
【0072】
ファームウェアは、クライアントマシン210のオペレーティングシステムを起動(boot up)するためのデータを検索する。読み取りキャッシュ212内の起動前データ214は、オペレーティングシステムの限られた部分をサポートし、プロセッサ216は、クライアントマシン210によって必要とされるオペレーティングシステム234の残りの部分の読み込みを続行するために、読み取りキャッシュ212内のネットワークドライバを使用するように指示される。ネットワークドライバが実行するとすぐに、クライアントマシン210は、起動前環境から、ストリーミングされたベースディスクイメージ232内のデータが受信されている環境に移行する。
【0073】
一実施形態では、読み取りキャッシュ212内の起動前データ214は、サーバ230によってストリーミングされている、ベースディスクイメージ232のオペレーティングシステムと同じである。このアプローチは、起動前データ214が、オペレーティングシステム ローダ、カーネル、および起動時ドライバを始動するために、必要なディスクブロックを含むことを保証する。カーネルは、オペレーティングシステムの中核であり、およびハードウェアとソフトウェアのコンポーネントとの間の相互作用を容易にする。
【0074】
ベースディスクイメージ232内のオペレーティングシステムと同じである起動前データのトレードオフ214は、読み取りキャッシュ212のサイズが、クライアントマシン210を起動する前(preboot)に実際に必要なものよりも大きいことである。このアプローチでは、読み取りキャッシュ212のサイズは、例えば、約10GBでよい。
【0075】
読み取りキャッシュ212のサイズを縮小するために、読み取りキャッシュ212内の起動前データ214はオペレーティングシステムのサブセットであってよい。このアプローチは、ファイルが、起動前環境内のオペレーティングシステム ローダによってロードされることの決定に基づいてよい。例えば、起動プロセス内で使用されるファイルの開始最小リストが生成され、起動前プロセス内で必要なファイルが選択的に追加される。ベースディスクイメージ232は異なるクラウドサービスプロバイダ間で変化するので、その決定は、クライアントマシン210を起動する前(preboot)に、読み取りキャッシュ212内で必要とされるファイルを特定するための反復プロセスにすることができる。
【0076】
ここで
図7を参照すると、コンピューティングシステム200は、より詳細に議論される。サーバ230は、任意の数のプロビジョニングされたマシン、通信ネットワーク240上の仮想または物理的な任意の数のクライアントマシン210にサービスを提供するためのベースディスクイメージ232を含む。ベースディスクイメージ232は、ベース仮想ハードディスク(VHDX)と呼ばれることもある。ベースディスクイメージ232は、クライアントマシン102のプロビジョニングされた仮想マシンによって使用される、オペレーティングシステム234およびアプリケーション236を含む。ベースディスクイメージ232は、サーバ230内の物理的ディスク236のNTFS(New Technology File System)ファイルシステム234上で実行する。NTFSファイルシステムは、Windowsオペレーティングシステムが物理的ディスク236内のディスクパーティション上にファイルを保存および取得するために使用するファイルシステムである。
【0077】
より具体的には、ベースディスクイメージ232は、任意のソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組み合わせ、プログラム、実行可能ファイル、関数、命令、データ、またはライブラリの機能を含む。ベースディスクイメージ232は、アプリケーションまたはサービスを操作するために必要または使用される、ファイル、プログラム、命令、アプリケーション、または手順を含んでよい。ベースディスクイメージ232は、クライアントマシン210上で実行されるプロビジョニングされたマシンの操作を可能にする任意の機能を含んでよい。
【0078】
NTFSは、オペレーティングシステムが仮想ディスクまたは物理的ディスクにファイルを保存および取得するために使用するファイルシステムである。NTFSは、階層型または非階層型のファイルシステムでよく、および、ここで参照されている任意のオペレーティングシステムで動作するように構成してよい。NTFSは、ファイルアロケーションテーブル(FAT)ファイリングシステムの機能であってよく、又は、その機能を含んでよい。
【0079】
クライアントマシン210は、読み取りキャッシュファイル212を保存する物理的ディスク228を含み、この読み取りキャッシュファイル212は、物理的ディスク228のNTFSファイルシステム227上に存在する。NTFSファイルシステム227は、物理的ディスク228用のマウントポイントDドライブを提示してよい。マウントポイントは、NTFSファイルシステムによって管理される物理的ディスク228上のデータを表すドライブである。クライアントマシン210は、仮想ディスク226をさらに含む。NTFSファイルシステム224は、仮想ディスク226用のマウントポイントCドライブを提示してよい。Cドライブは、クライアントマシン210内のプロセッサ216に環境を提供し、オペレーティングシステム234、アプリケーション236、および、サーバ230からストリーミングされるベースディスクイメージ232によって提供されるサービス、を実行する。
【0080】
ブートストラップ(bootstrap)機能220は、クライアントマシン210を始動するための起動前(pre-booting)および起動プロセスを制御または管理するためのものである。ブートストラップ機能220は、ソフトウェアベースであり、および、UEFIアプリケーションなどのプログラムを含んでよい。
【0081】
仮想ディスクコントローラ218は、クライアントマシン210の仮想ディスク226を制御または管理するためのものである。仮想ディスクコントローラ218は、任意のソフトウェア、ハードウェア、またはソフトウェアとハードウェアの組み合わせ、プログラム、機能、実行可能ファイル、命令、データ、またはライブラリを含んでよい。仮想ディスクコントローラ218は、クライアントマシン210の始動(start up)中または起動前(preboot)中、ブートストラップ関数220からの命令に応答して、仮想ディスク226を始動してよい。
【0082】
同様に、物理的ディスクコントローラ222は、クライアントマシン210の物理的ディスク228を制御または管理するためのものである。物理的ディスクコントローラ222は、クライアントマシン210の始動中または起動前中、物理的ディスク228を始動してよい。
【0083】
起動前中、クライアントマシン内のファームウェア210は、物理的ディスク228にある指定のファームウェア ローダから起動する。これは、物理的ディスクコントローラ222を介して実行される。ファームウェア ローダは、物理的ディスク228内のFAT(File Allocation Table)パーティション上にある。ファームウェア ローダは、EFI(Extensible Firmware Interface)ファイルでよく、このファームウェア ローダは、起動プロセスの進行方法に関するデータを含むブートローダ実行可能ファイルを含む。EFIファイルは、UEFIファームウェアに関連付けられている。
【0084】
ファームウェア ローダは、ネットワークレス起動前環境において動作する。ネットワークレス起動前環境とは、クライアントマシン210が、起動前中、通信ネットワーク240に接続することができないことを意味する。ファームウェア ローダは、ローカル構成ファイルを使用して必要なパラメータを取得し、および、そのローカル構成ファイルはINIファイルであってよい。INIファイルは、プロセッサ216によって使用される初期化ファイル形式のファイル拡張子である。ファームウェアは、起動前データ214が読み取りキャッシュ212内で利用可能であるため、早期の起動前中に、サーバ230と通信する必要はない。
【0085】
この時点で、ファームウェア ローダは、オペレーティングシステム ローダのため、仮想ディスク226上のCドライブからブロックを読み取ろうとする。ただし、仮想ディスクコントローラ218およびブートストラップ機能220を介したファームウェア ローダは、物理的ディスク228上に位置する読み取りキャッシュファイル212を見つけるために、NTFSファイルシステムドライバを埋め込む。読み取りキャッシュファイル212は、クライアントマシン210の作成中に展開され、および、ベースディスクイメージ232上のオペレーティングシステムのサブセット232である。
【0086】
読み取りキャッシュファイル212は、いくつかの例では、仮想ハードディスク(VHDX)ファイルにすることができる。そのキャッシュファイル212が見つかると、ファームウェア ローダは、それを仮想ディスクとして搭載する。その仮想ディスクは、例えば、Microsoft Hyper-V 仮想ハードディスクであってよい。次に、仮想ディスク226は、新しく追加されたディスクとして、ファームウェアに提示される。ファームウェア ローダは、仮想ディスク226からオペレーティングシステム ローダをロードすることを開始する。オペレーティングシステム234が起動すると、オペレーティングシステム234はマウントポイントCドライブを表示する。
【0087】
このプリブートプロセス中に、オペレーティングシステム カーネルは、読み取りキャッシュ212からネットワークドライバを含んでロードされる。次に、制御は、オペレーティングシステム カーネルに渡され、オペレーティングシステム カーネルは、ネットワークドライバを通信ネットワーク240に接続するために使用するネットワーク インターフェース コントローラ(NIC)を選択する。この時点で、オペレーティングシステム234は、読み取りキャッシュ212内のプリブートデータを使用することに代わり、ベースディスクイメージ232からデータをストリーミングするために、ネットワークドライバを使用して移行する。
【0088】
ここで
図8を参照すると、一般的なフローチャート300は、クライアントマシン210の操作方法が議論されることを説明する。最初から(ブロック302)、この方法は、ブロック304にて、クライアントマシン210内の読み取りキャッシュ212にネットワークドライバを含む、プリブートデータ214を記憶することを含む。この方法は、ブロック306にて、プリブートデータ214を使用してクライアントマシン210の起動前始動(initiate prebooting)をするために、読み取りキャッシュ212に結合されたプロセッサ216を操作することをさらに含む。ブロック308にて、ネットワークドライバが実行した後、ストリーミングされたベースディスクイメージは、通信ネットワーク240を介してサーバ230から受信される。この方法は、ブロック310にて終了する。
【0089】
ここで
図9を参照すると、より詳細なフローチャート400は、クライアントマシン210の操作方法が議論されることを説明する。最初から(ブロック402)、この方法は、ブロック404にて、ファームウェア ローダを起動することを含む。ファームウェア ローダは、プリブートプロセス中にハードウェアの初期化を実行するために使用される。ブロック406にて、ファームウェア ローダは、ネットワークドライバを含むプリブートデータを備えた読み取りキャッシュ212にアクセスする。
【0090】
ブロック408にて、読み取りキャッシュ212は、オペレーティングシステム234のサブセットであることから、オペレーティングシステム234は実行を開始する。ブロック410にて、ネットワークドライバが実行しているかどうかについて、決定がなされる。ネットワークドライバが実行していない場合、該方法は、ネットワークドライバが実行するまで、ブロック408にループバックする。ネットワークドライバが実行していない場合、クライアントマシン210は、通信ネットワーク240に接続することができない。
【0091】
ネットワークドライバが実行しているという決定がされたとき、クライアントマシン210内のプロセッサ216は、ブロック412にて、読み取りキャッシュ212内のプリブートデータを使用することから、必要なブロックを満たすために、ストリーミングされたベースディスクイメージ232内で受信されたデータを使用することに切り替える。クライアントマシン210は、受信したストリーミングベースディスクイメージ232内のデータを介して起動プロセスを続行する。この方法は、ブロック414にて終了する。
【0092】
以下の例は、さらなる例示的な実施形態であり、そこから他の入れ替えおよび構成が当業者に明らかとなるであろう。
【0093】
例1は、通信ネットワークを介してベースディスクイメージをストリーミングするように構成されたサーバと、クライアントマシンとで構成されるコンピューティングシステムである。クライアントマシンは、ネットワークドライバを含むプリブートデータを格納するように構成された読み取りキャッシュと、読み取りキャッシュに結合されたプロセッサとを含む。プロセッサは、プリブートデータを使用してクライアントマシンの起動前始動(initiate prebooting)をするように構成されており、ネットワークドライバが実行した後、通信ネットワークを介してサーバからストリーミングベースディスクイメージを受信し、クライアントマシンの起動(booting)を続行する。
【0094】
例2は、例1の主題を含み、ベースディスクイメージは、オペレーティングシステムを含み、および、プリブートデータは、ネットワークドライバを含むオペレーティングシステムのサブセットをさらに含む。
【0095】
例3は、例1~2のいずれかの主題を含み、オペレーティングシステムは、オペレーティングシステム ネットワークドライバを含み、および、ネットワークドライバは、オペレーティングシステム ネットワークドライバと同じであるように構成される。
【0096】
例4は、例1~3のいずれかの主題を含み、プロセッサは、実行中のネットワークドライバに応答して、クライアントマシンを起動し続けるように、読み取りキャッシュ内のプリブートデータを使用することから、ストリーミングされたベースディスクイメージ内のデータを使用することに切り替えるようにさらに構成される。
【0097】
例5は、実施例1~4のいずれかの主題を含み、プロセッサは、プリブートデータの読み取りキャッシュにアクセスするように、プリブート(preboot)の時に命令を実行するようにさらに構成される。
【0098】
例6は、実施例1~5のいずれかの主題を含み、クライアントマシンは、プリブート(preboot)の時に実行される命令を提供するためのファームウェアをさらに含み、ファームウェアは、UEFI(Unified Extensible Firmware Interface)ファームウェアを含む。
【0099】
例7は、実施例1~6のいずれかの主題を含み、プリブートデータは、ネットワークドライバを含むオペレーティングシステム カーネルを含み、オペレーティングシステム カーネルが実行を開始すると、ネットワークドライバは通信ネットワークに接続する。
【0100】
例8は、ネットワークドライバを含むプリブートデータを格納するように構成された読み取りキャッシュと、この読み取りキャッシュに結合されたプロセッサとを含むクライアントマシンである。プロセッサは、プリブートデータを使用してクライアントマシンの起動前始動(initiate prebooting)をするように構成されており、および、ネットワークドライバが実行した後、通信ネットワークを介してサーバからストリーミングベースディスクイメージを受信し、クライアントマシンの起動を続行する。
【0101】
例9は、例8の主題を含み、ベースディスクイメージはオペレーティングシステムを含み、および、プリブートデータは、ネットワークドライバを含むオペレーティングシステムのサブセットをさらに含む。
【0102】
例10は、例8~9のいずれかの主題を含み、オペレーティングシステムはオペレーティングシステムネットワークドライバを含み、および、ネットワークドライバは、オペレーティングシステムネットワークドライバと同じであるように構成される。
【0103】
例11は、例8~10のいずれかの主題を含み、プロセッサは、実行中のネットワークドライバに応答してクライアントマシンの起動を継続するように、読み取りキャッシュ内のプリブートデータの使用から、ストリーミングされたベースディスクイメージ内のデータの使用に切り替えるようにさらに構成される。
【0104】
例12は、例8~11のいずれかの主題を含み、プロセッサは、プリブートデータ用の読み取りキャッシュにアクセスするために、起動前(preboot)の時に命令を実行するようにさらに構成される。
【0105】
例13は、例8~12のいずれかの主題を含み、クライアントマシンは、起動前の時に実行される命令を提供するためのファームウェアをさらに含み、ファームウェアは、UEFI(Unified Extensible Firmware Interface)ファームウェアである。
【0106】
例14は、実施例8~13のいずれかの主題を含み、プリブートデータは、ネットワークドライバを含むオペレーティングシステム カーネルを含み、および、オペレーティングシステム カーネルが実行を開始すると、ネットワークドライバは、通信ネットワークに接続する。
【0107】
例15は、クライアントマシンによって、ネットワークドライバを含むプリブートデータをクライアントマシン内の読み取りキャッシュに格納し、および、クライアントマシンによって、プリブートデータを使用してクライアントマシンの起動前始動(initiate prebooting)をすることを含む方法である。ネットワークドライバが実行した後、クライアントマシンによって、通信ネットワークを介してサーバからストリーミングされたベースディスクイメージを受信し、クライアントマシンの起動を続行する。
【0108】
例16は、例15の主題を含み、ベースディスクイメージはオペレーティングシステムを含み、および、プリブートデータは、ネットワークドライバを含むオペレーティングシステムのサブセットをさらに含む。
【0109】
例17は、例15ないし16のいずれかの主題を含み、オペレーティングシステムはオペレーティングシステム ネットワークドライバを含み、および、ネットワークドライバは、オペレーティングシステム ネットワークドライバと同じであるように構成される。
【0110】
例18は、例15~17のいずれかの主題を含み、クライアントマシンは、実行中のネットワークドライバに応答して、読み取りキャッシュ内のプリブートデータを使用することから、ストリーミングベースディスクイメージ内のデータを使用することに切り替えるようにさらに操作される。
【0111】
例19は、例15~18のいずれかの主題を含み、クライアントマシンによって、プリブートデータのために読み取りキャッシュにアクセスするように、起動前(preboot)にて命令を実行することをさらに含む。
【0112】
例20は、例15~19のいずれかの主題を含み、プリブートデータは、ネットワークドライバを含むオペレーティングシステム カーネルを含み、オペレーティングシステム カーネルが実行を開始すると、ネットワークドライバは、通信ネットワークに接続する。
【0113】
上記の開示を読むと当業者によって理解されるように、本明細書に記載の様々な態様は、デバイス、方法、またはコンピュータプログラム製品(例えば、記載されている操作または手順を実行するため、コンピュータ実行可能命令を有する非一時的なコンピュータ可読媒体)として具体化される。)したがって、これらの態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、またはソフトウェアとハードウェアの態様を組み合わせた実施形態の形をとることができる。
【0114】
さらに、そのような態様は、記憶媒体内または記憶媒体上に具体化された、コンピュータ可読プログラムコードまたは命令を有する1つまたは複数のコンピュータ可読記憶媒体によって記憶されるコンピュータプログラム製品の形態をとることができる。ハードディスク、CD-ROM、光記憶装置、磁気記憶装置、および/またはそれらの任意の組み合わせを含む、任意の適切なコンピュータ可読記憶媒体を利用することができる。
【0115】
本発明の多くの修正および他の実施形態は、前述の説明および関連する図面に提示された教示の利益を有する当業者の頭に浮かぶであろう。したがって、本発明は、開示された特定の実施形態に限定されるべきではなく、修正および実施形態は、添付の特許請求の範囲内に含まれることを意図していることが理解される。
【国際調査報告】