(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-02-16
(45)【発行日】2022-02-25
(54)【発明の名称】シンクローンをサポートしないクラウド環境におけるシンプロビジョニング仮想デスクトップインフラストラクチャ仮想マシン
(51)【国際特許分類】
G06F 16/188 20190101AFI20220217BHJP
【FI】
G06F16/188
(21)【出願番号】P 2020508503
(86)(22)【出願日】2018-06-18
(86)【国際出願番号】 IB2018054468
(87)【国際公開番号】W WO2019034941
(87)【国際公開日】2019-02-21
【審査請求日】2020-04-13
(32)【優先日】2017-08-15
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】508045099
【氏名又は名称】シトリックス・システムズ・インコーポレイテッド
【氏名又は名称原語表記】Citrix Systems,Inc.
(74)【代理人】
【識別番号】110002675
【氏名又は名称】特許業務法人ドライト国際特許事務所
(72)【発明者】
【氏名】ジョン バボヴァル
(72)【発明者】
【氏名】トーマス ゴーツ
(72)【発明者】
【氏名】サイモン ピー. グラハム
【審査官】鹿野 博嗣
(56)【参考文献】
【文献】米国特許出願公開第2014/0281350(US,A1)
【文献】特開2007-323354(JP,A)
【文献】特開2012-073999(JP,A)
【文献】特開2007-243730(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/188
(57)【特許請求の範囲】
【請求項1】
コンピューティングシステムを運用する方法であって、
リモートコンピューティングデバイスによってホストされた仮想マシン(VM)の
複数の仮想ハードディスク(VHD)
のうち一のVHD内の第1位置に関連付けられたVHDデータにアクセスするための要求
であって、少なくともVHDバージョン識別子と第1アドレスとを有する前記要求を、
前記リモートコンピューティングデバイスから、サーバにより受信し、
前記要求に応答して、前記サーバにより、前記仮想マシンがリレーショナルデータベース内の情報にアクセスする権限を有することを確認する動作を行い、
前記仮想マシンが前記権限を有することが確認されると、
前記
サーバにより、前記要求から
、少なくとも前記VHDバージョン識別子と前記一のVHD内の前記第1位置を指定する
前記第1アドレス
とを抽出し、
前記
サーバにより、
前記VHDバージョン識別子を用いて、前記第1アドレス
から、
ストレージ内のページに前記VHDデータが格納された
当該ストレージ内の第2位置を指定する第2アドレス
への変換
を促し、
前記第2位置は、前記一のVHDの前記ページに重複排除データが格納されたストレージ位置を含み、前記ストレージは前記サーバ及び前記リモートコンピューティングデバイスから遠隔にあり、
前記
サーバから前記リモートコンピューティングデバイスへ前記第2アドレスを伝達して、前記
ストレージに格納された前記VHDデータへのアクセスを促す、方法。
【請求項2】
前記
ストレージのページに前記VHDデータのブロックを格納することをさらに含む、請求項1に記載の方法。
【請求項3】
前記第1アドレスは論理ブロックアドレス(LBA)を含む、請求項1に記載の方法。
【請求項4】
前記第2アドレスは、アドレス可能
ストレージプール識別子及びアドレス可能
ストレージプールオフセット値を含む、請求項2に記載の方法。
【請求項5】
前記変換は、前記第1アドレスを、
前記第2アドレスを指定する少なくとも1つのエントリーを含むデータベースのテーブル内の
行に対する行識別子に変換することを含む、請求項1に記載の方法。
【請求項6】
前記データベースは
前記リレーショナルデータベースを含む、請求項5に記載の方法。
【請求項7】
前記
テーブルの前記行は
、前記VHDデータのハッシュ値を
さらに含む、請求項
5に記載の方法。
【請求項8】
前記
ストレージに格納された前記VHDデータへのアクセスを得るのに必要な
ストレージアクセス情報
と、前記アドレス可能ストレージプール識別子とを関連付けて格納するオブジェクトテーブルから、前記サーバによって、前記アドレス可能ストレージプール識別子に対応する前記ストレージアクセス情報を取得
し、
前記サーバから前記リモートコンピューティングデバイスへ前記第2アドレス及び前記ストレージアクセス情報を伝達することをさらに含む、請求項
4に記載の方法。
【請求項9】
前記リモートコンピューティングデバイスから
前記第2アドレス及び前記
ストレージアクセス情報を前記
ストレージが受信した
とき、前記VHDデータを前記リモートコンピューティングデバイスに提供することをさらに含む、請求項
8に記載の方法。
【請求項10】
前記仮想マシンから、前記
サーバにより、前記VHDへデータを書き込むための書き込み要求を受信し、
前記書き込み要求に応答して、前記
サーバにより、前記データに対する第1ハッシュ値を算出し、
ハッシュテーブルを検索して、前記第1ハッシュ値に適合する第2ハッシュ値を有する行を見つけ出すこと、
をさらに含む、請求項1に記載の方法。
【請求項11】
前記第1ハッシュ値に適合する第2ハッシュ値を有する行が見つかった場合、
既存のエントリーに対して適合するVHDバージョン識別子及びVHD論理ブロックアドレスを有するページテーブル内の行に対するハッシュテーブル行識別子をアップデート
すること、
をさらに含む、請求項1
0に記載の方法。
【請求項12】
前記第1ハッシュ値に適合する第2ハッシュ値を有する行が見つからなかった場合、
複数のストレージオブジェクトのうちの1つに新たなデータブロックを割り当て、
前記
ストレージに前記データを書き込み、
前記
第2ハッシュ値、アドレス可能
ストレージプール
識別子及び
アドレス可能ストレージプールオフセットを有する行を前記ハッシュテーブルに作成し、
新たなハッシュテーブル行(HTR)識別子の値に適合するVHDバージョン識別子及びVHD論理ブロックアドレス(LBA)を有するページテーブル内の行をアップデートすること、
をさらに含む、請求項1
0に記載の方法。
【請求項13】
プロセッサと、
コンピューティングシステムを運用する方法を前記プロセッサに実施させるためのプログラミング命令を有する非一時的なコンピュータ読み取り可能な記憶媒体と、
を備え、
前記プログラミング命令は、
リモートコンピューティングデバイスによってホストされた仮想マシン(VM)の
複数の仮想ハードディスク(VHD)
のうち一のVHD内の第1位置に関連付けられたVHDデータにアクセスするための要求
であって、少なくともVHDバージョン識別子と第1アドレスとを有する前記要求を前記リモートコンピューティングデバイスから受信し、
前記要求に応答して、前記仮想マシンがリレーショナルデータベース内の情報にアクセスする権限を有することを確認し、
前記仮想マシンが前記権限を有することが確認されると、
前記要求から
、少なくとも前記VHDバージョン識別子と前記一のVHD内の前記第1位置を指定する
前記第1アドレス
とを抽出し、
前記VHDバージョン識別子を用いて、前記第1アドレス
から、
ストレージ内のページに前記VHDデータが格納された
当該ストレージ内の第2位置を指定する第2アドレス
への変換
を促し、
前記第2位置は、前記一のVHDの前記ページに重複排除データが格納されたストレージ位置を含み、前記ストレージは前記リモートコンピューティングデバイスから遠隔にあり、
前記第2アドレスを前記リモートコンピューティングデバイスへ伝達して、前記リモートコンピューティングデバイスに対し、前記
ストレージに格納された前記VHDデータへのアクセスを促すための命令を含む、
コンピューティングシステム。
【請求項14】
前記プログラミング命令は、前記
ストレージ
に前記VHDデータのブロックを格納するための命令をさらに含む、請求項1
3に記載の
コンピューティングシステム。
【請求項15】
前記第1アドレスは論理ブロックアドレス(LBA)を含む、請求項1
3に記載の
コンピューティングシステム。
【請求項16】
前記第2アドレスは、アドレス可能
ストレージプール識別子及びアドレス可能
ストレージプールオフセット値を含む、請求項1
5に記載の
コンピューティングシステム。
【請求項17】
前記第1アドレス
は、
前記第2アドレスを指定する少なくとも1つのエントリーを含むデータベースのテーブル内の
行に対する行識別子に
変換される、請求項1
3に記載の
コンピューティングシステム。
【請求項18】
前記データベースは
前記リレーショナルデータベースを含む、請求項1
7に記載の
コンピューティングシステム。
【請求項19】
前記
テーブルの前記行は
、前記VHDデータのハッシュ値を
さらに含む、請求項
17に記載の
コンピューティングシステム。
【請求項20】
前記プログラミング命令は、
前記
ストレージに格納された前記VHDデータへのアクセスを得るのに必要な
ストレージアクセス情報
と、前記アドレス可能ストレージプール識別子とを関連付けて格納するオブジェクトテーブルから、前記アドレス可能ストレージプール識別子に対応する前記ストレージアクセス情報を取得
し、
前記リモートコンピューティングデバイスへ前記第2アドレス及び前記ストレージアクセス情報を伝達するための命令をさらに含む、請求項1
6に記載の
コンピューティングシステム。
【請求項21】
前記プログラミング命令は、前記リモートコンピューティングデバイスから
前記第2アドレス及び前記
ストレージアクセス情報を
前記ストレージが受信した
とき、前記VHDデータを前記リモートコンピューティングデバイスに提供するための命令をさらに含む、請求項2
0に記載の
コンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概してコンピューティングシステムに関する。より詳細には、本開示は、シンクローン(thin clone)をサポートしないクラウド環境におけるシンプロビジョニング仮想デスクトップインフラストラクチャ(VDI)仮想マシン(VM)を提供するためのシステム及び方法の実施に関する。
【背景技術】
【0002】
当該技術分野では多くのクラウド環境が知られている。そのようなクラウド環境の一つにMicrosoft Azureがある。クラウド環境(例えば、Microsoft Azure)におけるストレージプロビジョニングには多くの難点がある。例えば、クラウド環境において、ダイナミック・ディスクは必ずしもサポートされているわけではない。これは、仮想ディスクの全ブロック(未使用空間も含む。)をアップロードする必要があることを意味する。仮想ディスクチェーンもまた、全てのクラウド環境でサポートされているとは限らず、これは、既存のイメージをアップデートすることができないことを意味する。代わりに、既存のイメージをアップデートするには、全く新しいディスクを作成する必要がある。さらに、VMは、起動用の既存のディスクでしか起動することができないため、クラウド環境下ではゴールデンイメージを作成することができない。同一のディスクで複数のVMを起動させるためには、起動ディスクのクローン、すなわち、起動ディスクの完全なコピーを作成する。これにより、多大なる費用(起動ディスクのN枚分の完全なコピーに対する料金を顧客に請求することになるため。)と時間(ディスクのクローニングには比較的長い時間がかかるため。)を要する。
【発明の概要】
【0003】
本開示は、クラウドベースのコンピューティングシステムを運用するシステム及び方法の実施に関する。当該方法は、クラウドストレージのページに仮想ハードディスク(VHD)データのブロックを格納し、リモートコンピューティングデバイスによってホストされた仮想マシン(VM)のVHD内の第1位置に関連付けられたVHDデータにアクセスするための要求を、クラウドサーバにより受信し、クラウドサーバにより、当該要求から第1位置を指定する少なくとも第1アドレスを抽出し、クラウドサーバにより、第1アドレスを、VHDデータが格納されたクラウドストレージ内の第2位置を指定する第2アドレスに変換し、第2アドレスの少なくとも一部を用いて、クラウドストレージに格納されたVHDデータへのアクセスを得るのに必要なクラウドストレージアクセス情報を取得し、クラウドサーバからリモートコンピューティングデバイスへ第2アドレス及び/又はクラウドストレージアクセス情報を伝達して、クラウドストレージに格納されたVHDデータへのアクセスを促し、及び/又は、リモートコンピューティングデバイスから送信された第2アドレス及びクラウドストレージアクセス情報をクラウドが受信したことに応答して、VHDデータをリモートコンピューティングデバイスに提供する。
【0004】
いくつかのシナリオにおいて、第1アドレスは論理ブロックアドレス(LBA)を含む。第2アドレスは、アドレス可能クラウドストレージプール識別子及びアドレス可能クラウドストレージプールオフセット値を含む。上記変換は、第1アドレスを、データベース(例えば、リレーショナルデータベース)のテーブル内のエントリーに対する行識別子に変換し、行識別子を用いて、VHDデータを識別する固有の値(例えば、ハッシュ値)から第2アドレスへの変換を格納するテーブルのエントリーにアクセスすることを含む。
【0005】
そのようなシナリオ又は他のシナリオでは、上記方法は、クラウドサーバにより、VHDへデータを書き込むための書き込み要求を受信し、書き込み要求に応答して、クラウドサーバにより、データに対する第1ハッシュ値を算出し、ハッシュテーブルを検索して、第1ハッシュ値に適合する第2ハッシュ値を有する行を見つけ出すこと、をさらに含む。第1ハッシュ値に適合する第2ハッシュ値を有する行が見つかった場合、上記方法は、既存のエントリーに対して適合するVHDバージョン識別子及びVHD論理ブロックアドレスを有するページテーブル内の行に対するハッシュテーブル行識別子をアップデートし、戻ること、を含む。第1ハッシュ値に適合する第2ハッシュ値を有する行が見つからなかった場合、上記方法は、複数のストレージオブジェクトのうちの1つに新たなデータブロックを割り当て、クラウドストレージにデータを書き込み、ハッシュ値、アドレス可能クラウドストレージプール(ACSP)識別子及びACSPオフセットを有する行をハッシュテーブルに作成し、新たなハッシュテーブル行(HTR)識別子の値に適合するVHDバージョン識別子及びVHD論理ブロックアドレス(LBA)を有するページテーブル内の行をアップデートすること、をさらに含む。
【図面の簡単な説明】
【0006】
以下の図面を参照して本解決手段を説明するが、図面全体を通して、同様の参照符号は同様の特徴を表す。
【0007】
【0008】
【
図2】
図2は、
図1に示すコンピューティングデバイスの例示的なアーキテクチャの図を示す。
【
図3】
図3は、
図1に示すコンピューティングデバイスの例示的なアーキテクチャの図を示す。
【0009】
【0010】
【
図5】
図5は、例示的な仮想ハードディスク(VHD)テーブルの図である。
【0011】
【
図6】
図6は、例示的なページテーブルの図である。
【0012】
【
図7】
図7は、例示的なハッシュテーブルの図である。
【0013】
【
図8】
図8は、例示的なストレージオブジェクトテーブルの図である。
【0014】
【0015】
【
図10】
図10は、クラウドベースのコンピューティングシステムを運用する例示的な方法のフロー図である。
【0016】
【0017】
【発明を実施するための形態】
【0018】
本明細書で一般的に説明され、添付図面に示された実施形態の構成要素は、多種多様な異なる構成で配置及び設計され得ることが容易に理解されよう。したがって、図示されている様々な実施形態の以下のより詳細な説明は、本開示の範囲を限定するものではなく、様々な実施形態の単なる代表例である。実施形態の様々な態様が図面に提示されているが、特に明示しない限り、図面は必ずしも縮尺通りに描かれていない。
【0019】
本解決手段は、その精神又は本質的な特徴から逸脱することなく、他の特定の形態で具現化することができる。説明された実施形態は、あらゆる点で単なる例示にすぎず、限定的に解釈してはならない。したがって、本解決手段の範囲は、添付の特許請求の範囲によって示されるのであって、この詳細な説明には、なんら拘束されない。特許請求の範囲の均等物の意味及び範囲内における変更はすべて本解決手段の範囲内に包含されるべきである。
【0020】
本明細書全体を通して、特徴、利点、又は類似の用語への言及は、本解決手段で実現され得る特徴及び利点のすべてが本解決手段の任意の単一の実施形態であるべきであることを意味しない。むしろ、特徴及び利点に言及する用語は、実施形態に関連して説明される特定の特徴、利点、又は特性が本解決手段の少なくとも1つの実施形態に含まれることを意味すると理解される。したがって、本明細書全体にわたる特徴及び利点、ならびに類似の言語の議論は、必ずしもそうではないが、同じ実施形態を指す場合がある。
【0021】
さらに、本解決手段の記載された特徴、利点、及び特性は、1つ以上の実施形態において任意の適切な方法で組み合わせることができる。当業者は、本明細書の説明に照らして、特定の実施形態の1つ以上の特定の特徴又は利点なしで本解決手段が実施可能であることを認識するであろう。他の例では、本解決手段のすべての実施形態で示されていない特定の実施形態において、追加の特徴及び利点が認識される場合がある。
【0022】
本明細書全体を通して、「一実施形態」(one embodiment)、「実施形態」(an embodiment)、又は同様の文言への言及は、示された実施形態に関連して説明された特定の特徴、構造、又は特性が本解決手段の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書全体を通して、「一実施形態では」(in one embodiment)、「実施形態では」(in an embodiment)という文言、及び同様の文言は、必ずしもそうではないが、すべて同じ実施形態を指す場合がある。
【0023】
本文書で用いられている単数形「a」、「an」、及び「the」は、文脈上特に明記されていない限り、複数形の言及を含む。別段に定義されない限り、本明細書で用いられているすべての技術用語及び科学用語は、当業者によって一般に理解されるのと同じ意味を有する。本文書で用いられている「備える/有する」(comprising)という用語は「含むが、それに限定されない」(including, but not limited to)ことを意味する。
【0024】
本解決手段は、シンクローンがサポートされていないクラウド環境下で、同一の起動ディスクを共有する多数のVMをセットアップする手段を提供する。これに関し、本解決手段は、クラウドストレージと、クラウドベースのリレーショナルデータベースとの組み合わせを用いる。ここで「クラウドストレージ」とは、インターネット又はクラウドからアクセスされたリモートサーバ上にデータが格納されたクラウドコンピューティングモデルを指す。クラウドストレージは、可視化技術の上に構築されたストレージサーバ上のクラウドストレージサービスプロバイダによって、メンテナンスされ、作動され、管理される。クラウドストレージは、全ての仮想ディスクバージョンのデータを保持するために使用される。クラウドベースのリレーショナルデータベースは、Structured Query Language(SQL)を用いて実現され得る。SQLは、リレーショナルデータベース管理及びデータ操作のための標準的なコンピュータ言語である。SQLは、データのクエリー、挿入、アップデート、及び修正を行うために用いられる。クラウドベースのリレーショナルデータベースは、各仮想ディスクバージョンを記述するメタデータを保持するために使用される。
【0025】
本解決手段は、従来の解決手段の様々な欠点を克服するものである。従来のシステムでは、多くのクラウド環境がディスクのシンクローンをサポートしていないため、完全なディスククローンが求められるが、VDIを使用した同一のVMを大量に作成するとき、莫大な費用と時間がかかってしまう。本解決手段は、クラウドストレージとクラウドデータベースとの組み合わせを用いて、オペレーティングシステム(OS)(例えば、Windows又はLinux(登録商標) OS)環境におけるストレージアウェアドライバ(storage aware driver)とともに、シンクローンとストレージ重複排除とを実現する。さらに、本解決手段は、複数の仮想ディスクを複数のクラウドストレージ位置にわたって設けることを可能とする。例えば、いくつかのクラウドコンピューティングサービス(例えば、Microsoft Azure)において、ページ・バイナリ・ラージ・オブジェクト(BLOB)の最大サイズは1TBである。本解決手段により、多くの仮想ディスクが、複数のページBLOBにわたって広がるように格納され得る。ここで「BLOB」とは、データベース管理システムに単一のエンティティとして格納されたバイナリデータの集まりを指す。当該データとして、画像、音声、映像その他のメディアコンテンツを挙げることができるが、これらに限定されない。
【0026】
本解決手段を多方面の応用に活用することができる。例えば、本解決手段を、クラウドにおけるプロビジョニングスキーム(例えば、Citrix Machine Creation Service(MCS)及びCitrix Provisioning Service(PVS)プロビジョニングスキーム)を改良するために活用することができる。MCSについて、本解決手段は、ストレージプロビジョニングの問題を解決する。PVSにおいて、本解決手段は、ネットワークストリーミングの問題を解決する(ディスクはもはやストリーミング配信されないため。)一方で、PVSによってなされる仮想ディスクの管理が残る。これは、PVSのユーザに対して大いに透過的になるように実施可能であろう。
【0027】
図1を参照すると、例示的なシステム100の図が示されている。システム100は、概して、シンクローンをサポートしないシンプロビジョニングVDI VMを提供するように構成される。これに関し、システム100は、ネットワーク104(例えば、インターネット)を介してクラウド120に通信接続されたコンピューティングデバイス102を備える。クライアントデバイス102は、仮想化環境をホストし、クラウドストレージ106に対するデータの読み書きを行う。クラウドストレージ106は、複数のリモートサーバ108
1、108
2、…、108
Nを備える。リモートサーバ108
1、108
2、…、108
Nの各々は、オブジェクトストア114を提供する。オブジェクトストア114は、複数のアドレス可能ディスクセクタ118
1、118
2、…、118
Mを有しており、ランダムアクセス用に最適化されている。ディスクセクタ118
1、118
2、…、118
Mを用いて、複数のVHDの重複排除データ(de-duplicated data)122
1、122
2,…、122
Mを格納する。重複排除データは、クラウドストレージに一度だけ格納された同一ブロックのデータを有している。これにより、繰り返しデータの複製が排除される。本明細書では、重複排除データを生成する処理を、重複排除(de-duplication)又はデータ重複排除(data de-duplication)と称する。いくつかのシナリオにおいて、VHDブロックのデータは、クラウドストレージのページに格納される。
【0028】
1つ以上のオブジェクトストア114のディスクセクタを用いて、ストレージプールを規定することができる。したがって、ここでの「ストレージプール」とは、1つ以上のストレージリソースから集められた容量を指す。クラウドストレージ106内に1つ以上のストレージプールを規定することができる。これらのストレージプールは、同一又は異なるサイズを有することができる。ストレージプールによって、多くのVHDを複数のクラウドストレージ位置にわたって設けることを可能とする。
【0029】
クラウド120は、さらに、サーバ110と、クラウドストレージの最上位にストレージ仮想化層を提供するクラウドベースのリレーショナルデータベース112と、を備える。これらの構成要素110及び112は、シンクローンをサポートしないクラウド環境下で同一のベースディスクを共有する多数のVMのプロビジョニングを促進するだけでなく、許可されたコンピューティングデバイスのみがクラウドストレージ106にアクセスすることを保証する手段を提供する。これに関し、サーバ110にアクセス可能なクラウドベースのリレーショナルデータベース112には、複数のテーブル124~130が格納されている。これらのテーブルは、VHDテーブル124と、ページテーブル126と、ハッシュテーブル128と、ストレージオブジェクトテーブル130と、を有する。これらのテーブルを用いて、VHDの重複排除データがクラウドストレージ106内のどこに格納されているのかを追跡する。これらのテーブルの項目については、以下でより詳細に説明する。
【0030】
いくつかのシナリオにおいて、クラウドベースのリレーショナルデータベース112は、Structured Query Language(SQL)データベースを備える。SQLデータベースは、当該技術分野で周知であるため、ここでの説明は省略する。これに関し、本解決手段は限定されず、ここでは、他の種類のリレーショナルデータベースも用いることができる。
【0031】
図2を参照すると、
図1のコンピューティングデバイス102の例示的なアーキテクチャが示されている。
図1のサーバ108
1、108
2、…、108
N及び/又は110は、コンピューティングデバイス102と同一又は類似である。したがって、コンピューティングデバイス102の説明は、
図1のサーバ108
1、108
2、…、108
N及び/又は110を理解するのには十分である。
【0032】
コンピューティングデバイス102の構成要素は、
図2に示された構成要素よりも多くても少なくてもよい。しかしながら、図示されている構成要素は、本解決手段を実施する例示的な実施形態を開示するのに十分である。
図2のハードウェアアーキテクチャは、シンクローンをサポートせずにシンプロビジョニングVDI VMを提供するように構成された代表的なコンピューティングデバイスの一実施形態を表す。したがって、
図2のコンピューティングデバイス102は、本明細書に記載された各方法の少なくとも一部を実施する。
【0033】
コンピューティングデバイス102の一部又は全ての構成要素は、ハードウェア、ソフトウェア、及び/又はハードウェアとソフトウェアとの組み合わせとして実現することができる。ハードウェアは1つ以上の電子回路を含むが、これに限定されない。電子回路として、受動素子(例えば、抵抗器及びコンデンサ)及び/又は能動素子(例えば、増幅器及び/又はマイクロプロセッサ)を挙げることができるが、これらに限定されない。受動素子及び/又は能動素子は、本明細書に記載された方法、手順、又は機能のうちの1つ以上を実行するように構成され、配置され、及び/又はプログラムされ得る。
【0034】
図2に示すように、コンピューティングデバイス200は、ユーザインターフェイス202と、CPU206と、システムバス210と、システムバス210を介してコンピューティングデバイス102の他の部分に接続されてアクセス可能なメモリ212と、システムバス210に接続されたハードウェアエンティティ214とを備える。ユーザインターフェイスには、入力デバイス及び出力デバイスを設けることができ、コンピューティングデバイス102の動作を制御するためのユーザソフトウェア相互作用を促進する。入力デバイスとして、物理及び/又はタッチキーボード250が挙げられるが、これらに限定されない。出力デバイスとして、スピーカー252、ディスプレイ254、及び/又は発光ダイオード256が挙げられるが、これらに限定されない。
【0035】
ハードウェアエンティティ214の少なくとも一部は、メモリ212へのアクセス及び使用を伴うアクションを実行する。メモリ212として、Random Access Memory(RAM)、ディスクドライバ及び/又はCompact Disc Read Only Memory(CD-ROM)が採用され得る。メモリ212は、システムキャッシュ226を備える。メモリ212は、
図1に示すように、仮想マシンモニタ(VMM)260、ホストオペレーティングシステム(OS)若しくはファームウェア262、アプリケーション224、及び/又は命令220を格納することができる。
【0036】
ハードウェアエンティティ214は、コンピュータ読み取り可能な記憶媒体218を有するディスクドライブユニット216を備えることができる。コンピュータ読み取り可能な記憶媒体218には、本明細書に記載された方法、手順、又は機能のうちの1つ以上を実行する1組以上の命令220(例えば、ソフトウェアコード)が格納されている。命令220は、コンピューティングデバイス102による実行中に、メモリ212内及び/又はCPU206内に完全に又は少なくとも部分的に常駐することもできる。メモリ212及びCPU206はまた、機械読み取り可能な媒体を構成することができる。ここで「機械読み取り可能な媒体」とは、1組以上の命令220を格納する単一の媒体又は複数の媒体(例えば、集中型若しくは分散型データベース、及び/又は関連するキャッシュ及びサーバ)を指す。また、「機械読み取り可能な媒体」は、コンピューティングデバイス102による実行のための命令120の組を格納、符号化、又は搬送することができ、且つ、コンピューティングデバイス200に本開示の方法のいずれか1つ以上を実行させる任意の媒体も指している。
【0037】
いくつかのシナリオにおいて、ハードウェアエンティティ214は、シンクローンをサポートせずにシンプロビジョニングVDI VMを促進するようにプログラムされた電子回路(例えば、プロセッサ)を備える。これに関して、当該電子回路は、コンピューティングデバイス102にインストールされたソフトウェアアプリケーション224にアクセスして実行することができることを理解されたい。1つのソフトウェアアプリケーション224は、概して、シンクローンをサポートせずにシンプロビジョニングVDI VMを促進するために作動する。ソフトウェアアプリケーション224の機能は、説明が進むにつれて明らかになるだろう。
【0038】
図3を参照すると、コンピューティングデバイス102によってホストされた仮想化環境の基本概念の図が示されている。
図3に示すように、コンピューティングデバイス102は、1つ以上のアプリケーション224のハードウェアリソース320へのアクセスを管理する汎用ホストOS又はファームウェア262を動作させる。ハードウェアリソース320として、
図2に示すハードウェアデバイス202~256が挙げられるが、これらに限定されない。
【0039】
VMM260(又はハイパーバイザ)は、ホストコンピューティングデバイス102上で動作し、物理システムのハードウェアをエミュレートする。ホストコンピューティングデバイスは、追加のOSインスタンスの並行実行を可能とすべく、VMM260を実行する。ホストOS又はファームウェア262から見ると、VMM260はアプリケーションである。VMM260は、概して、VM3061、3062、…、306Nを作成し、物理的なホストコンピューティングデバイス102の最上位の仮想環境の動作を管理するソフトウェアである。これに関し、VMM260は、CPU206への命令を調整する。VMM260は、ゲストが発した全てのCPU命令を有効にし、追加の権限を要する任意の実行コードを管理する。追加のOSインスタンスは、ゲストVM3061、3062、…、306N上で動作する。
【0040】
各ゲストVMは、ホストOS262及び他のゲストVMから分離された環境下でゲストOS310(例えば、Windows 10)を実行するソフトウェアコンピュータである。ゲストOS310は、自身の一連のアプリケーション308をホストし、VHD322にインストールされている。VHD322は、ホストコンピューティングデバイス102にアクセス可能なファイルシステムに格納されたファイルとして実現される。ゲストOS310から見ると、VHD322を物理的な記憶媒体(例えば、
図2のメモリ212)と区別することができない。VHD322は、物理的なハードディスクの完全なコンテンツ及び構造を含むシステムイメージを格納している。ディスクイメージを含む複数のVHDをVMに設けることができる。ホストコンピューティングデバイス102は、
図2の物理的なメモリ212など、利用可能なハードウェアリソースへのVMのアクセスを制御する。
【0041】
上述のように、本解決手段は、シンクローンをサポートしないクラウド環境下で、(多くの人が自身のコンピュータを接続して使用するために)同一の起動ディスクを共有する多数のVMをセットアップする手段を提供する。これに関し、VM306
1、306
2、…、306
Nの各々は、ドライバ328を備えている。ドライバ328は、ゲストOS310から、VHD322に格納されたデータへのアクセス要求を受信する。当該要求を受けて、ドライバ328は、クラウドストレージ106に格納された当該VHDのデータへのアクセスを得ることを目的として、クラウド120と通信するための動作を行う。クラウドストレージへのアクセスを得る処理については、
図4と関連付けて以下でより詳細に述べる。
【0042】
図4を参照すると、クラウドストレージ106にアクセスするためのメッセージフロー図が示されている。402に示すように、動作中に、ゲストVM306
1のドライバ328は、VHD322に格納されたデータへのアクセス要求を、ネットワーク104を介してサーバ110に伝達する。サーバ110では、404における動作が行われ、ゲストVM306
1が、クラウドベースのリレーショナルデータベース112内の情報にアクセスする権限を有することが確認される。アクセス権限があれば、406に示すように、サーバ110は、クラウドベースのリレーショナルデータベース112に格納されたテーブル124~130にアクセスし、これらのテーブルのコンテンツを用いて、クラウドストレージアクセス情報(例えば、トークン)と、VHD322の重複排除データが格納されたクラウドストレージ位置を指定するクラウドストレージ位置情報と、を取得する。次に、408において、サーバ110は、クラウドストレージアクセス情報とクラウドストレージ位置情報とを、ネットワーク104を介してゲストVM306
1に伝達する。この情報は、410に示すように、コンピューティングデバイス102のシステムキャッシュ226に格納され得る。次いで、412において、ゲストVM306
1のドライバ328は、クラウドストレージアクセス情報と要求とを、ネットワーク104を介してクラウドストレージ106に伝達する。この要求は、クラウドストレージ位置情報で指定されたクラウドストレージ位置に格納されたデータにアクセスするためのものである。要求に応答して、414に示すように、クラウドストレージ106からデータが読み出され、ゲストVM306
1のドライバ328に伝達される。
【0043】
次に、
図5~
図8を参照して、サーバ110の動作について詳細に説明する。上述のように、サーバ110は、クラウドベースのリレーショナルデータベース112に格納されたテーブル124~130にアクセスし、テーブル124~130を用いて、クラウドストレージアクセス情報(例えば、トークン)と、VHDの重複排除データが格納されたクラウドストレージ位置を指定するクラウドストレージ位置情報と、を取得する。テーブル124~130は、VHDテーブル124と、ページテーブル126と、ハッシュテーブル128と、ストレージオブジェクトテーブル130と、を有する。
【0044】
VHDテーブル124は、
図5に示すように、複数の行及び列を有する。各行は、所定のVHD(例えば、
図3のVHD322)に関連付けられた以下の3つの値を有する:所定のVHDのバージョンを識別するVHDバージョン識別子(ID)502
1、502
2、…、又は502
N;VHDバージョンの親VHDを識別する親VHD(PVHD)ID504
1、504
2、…、又は504
N;及び、所定のVHDのVHDメタデータ506
1、506
2、…、又は506
N。ここで「バージョン」とは、VHDの一時的な状態を指す。これに関し、VHDの状態は時間とともに変化することを理解されたい。したがって、複数の時刻でのVHDのコンテンツを規定する複数組の重複排除データがクラウドストレージに格納されている。各組のVHDの重複排除データはVHDバージョンを構成する。
【0045】
ページテーブル126は、
図6に示すように、複数の行及び列を有する。ページテーブルには、VHDバージョンの論理ブロックごとに行が存在する。この行は、論理ブロックのLBAを、データが格納されたクラウドストレージでの位置を含むハッシュテーブル128における行に変換する手段を提供する。各行は、VHDテーブル124で識別された所定のVHDバージョンに関連付けられた以下の4つの値を有する:ページテーブル126の特定の行を識別する行ID602
1、602
2、…、又は602
N;VHDのバージョンを識別するVHDバージョンID502
1、502
2、…、又は502
N;VHDバージョンの少なくとも1ブロックのデータが格納されたVHDの少なくとも1つのセクタを識別するVHD論理ブロックアドレス(LBA)604
1、604
2、…、又は604
N;及び、VHDバージョンの少なくとも1ブロックのデータに関連付けられた更なる情報が格納されたハッシュテーブルにおける行を識別するハッシュテーブル行(HTR)ID606
1、606
2、…、又は606
N。
【0046】
HTR ID6061、6062、…、又は606Nは、ページテーブル126とハッシュテーブル128との間の関係を示している。説明が進むにつれてより明らかになるように、これら2つのテーブルは、VHDバージョンのLBAのクラウドストレージプールアドレスへの変換を容易にする。
【0047】
ハッシュテーブル128は、
図7に示すように、複数の行及び列を有する。各行は、ページテーブル126で識別された所定のハッシュテーブル行IDに関連付けられた以下の4つの値を有する:HTR ID 606
1、606
2、…、又は606
N;ハッシュ値(HV)702
1、702
2、…、又は702
N;クラウドストレージのストレージプールを識別するアドレス可能クラウドストレージプール(ACSP)ID704
1、704
2、…、又は704
N;及び、ストレージプールにおけるブロック位置を示すACSPオフセット値(OV)706
1、706
2、…、又は706
N。ACSP ID及びACSP OVは、一括して、HV702
1を有する重複排除データが格納されたクラウドストレージ位置にクラウドストレージプールアドレスを提供する。
【0048】
いくつかのシナリオにおいて、HVは、VHDのデータに基づき、ハッシュアルゴリズムを用いて算出される。ハッシュアルゴリズムは、当該技術分野において周知であるため、ここでの説明は省略する。ここでは、任意の知られた又は知られ得るハッシュアルゴリズムを用いることができるが、特に限定されない。例えば、SHA-256暗号学的ハッシュアルゴリズムを用いて、VHDのデータコンテンツから、元のデータコンテンツを表すハッシュ値を生成する。本解決手段はハッシュアルゴリズムに限定されない。ここでは、他のアルゴリズムを用いて、ディスクブロックコンテンツから固有の値を算出してもよい。これらの他のアルゴリズムは、暗号学的ハッシュ関数として同一の要件をほとんど満たさなければならない。すなわち、決定論的であることから、同一のメッセージが常に同一のハッシュをもたらし、任意の与えられたメッセージに対して即座にハッシュ値を算出し、且つ、同一のハッシュ値を有する2つの異なるメッセージを見つけるのは不可能である。
【0049】
ストレージオブジェクトテーブル130は、
図8に示すように、複数の行及び列を有する。各行は少なくとも2つの値を有する:ACSP ID704
1、704
2、…、又は704
N;及び、クラウドストレージアクセス情報(CSAI)802
1、802
2、…、又は802
N。CSAIとして、Universal Resource Link(URL)、トークン、及び/又はキーが挙げられるが、これらに限定されない。
【0050】
とりわけ、これらのテーブル124~130は、クラウドストレージの最上位にストレージ仮想化層を提供する。ストレージ仮想化層は次のように実現される。仮想ディスクブロックがクラウドストレージのページに格納される。ハッシュテーブルを用いて、どのVHDブロックがクラウドストレージに格納されているのかを追跡する。ブロックごとに、データのハッシュが算出される。ハッシュテーブルは、クラウドストレージにおけるハッシュからオフセットへの変換を格納する。各VHDは、親VHDバージョンへの参照を有するVHDテーブル124に記録される。VHDにおける論理ブロックごとに、ページテーブル126に行が存在し、ページテーブル126は、LBAをハッシュテーブル128における行IDに変換する。ハッシュテーブル128は、データが格納されたクラウドストレージにおける位置を含む。
【0051】
上述のテーブル構造により、既存のVHDにシンクローンを追加するのは、単に、親エントリーを指し示すVHDテーブル124に行を追加するにすぎない。VMが書き込み要求を発するまで、ストレージはシンクローンによって消費されない。
【0052】
また、ハッシュを使用してページストレージにおけるエントリーを見つけることで、データストレージの重複排除が可能となるため、固有のページのみが格納される。これにより、類似のOSバージョンを動作させる複数のVHDがアップロードされるときに比較的大量に使用されたストレージ量が削減される。例えば、Windows 10に基づいて2つのゴールデンイメージがある場合、重複するコンテンツとゼロページの双方を考慮すると、75%もの削減となる。
【0053】
図9を参照すると、(a)テーブル124~130間の関係と、(b)サーバ110がどのようにテーブル124~130を用いて、クラウドストレージアクセス情報(例えば、トークン)802
1、802
2、…、又は802
Nと、VHDの重複排除データが格納されたクラウドストレージ位置を指定するクラウドストレージ位置情報704
1、704
2、…、704
N、706
1、706
2、…、706
Nとを取得するのか、を理解するのに役立つ図が示されている。
【0054】
最初、VHD322は空である。よって、VHD322に関連付けられたページテーブル126には行が存在しない。VHD322からの読み出しを試みると、空のデータセットがコンピューティングデバイス102に返される。
【0055】
その後、データがVHD322のブロックb0~bXに書き込まれる。これらの書き込み動作の結果、VHDテーブル124に行が追加され、VHD322のバージョンがクラウドストレージ120に格納されたことが示される。VHD322は、それに関連付けられた固有識別子PVHD ID5041を有する。このバージョンは、それに関連付けられた固有識別子VHDバージョンID5021を有する。VHDバージョンに対するメタデータ5061もまたVHDテーブル124のこの行に格納される。
【0056】
ページテーブル126もまた、VHDのこのバージョンに対して、行ID6021の行を有している。この行は、VHDバージョンID5021と、VHD322のブロックb0~bXに書き込まれたデータに対するLBA6041とを含む。この行はさらに、ブロックb0~bXに対するLBAからHTR ID6061によって識別されたハッシュテーブルエントリーへの変換を格納する。
【0057】
ハッシュ値は、ブロックb0~bXに書き込まれたデータに対して算出される。ハッシュ値は、ハッシュテーブルエントリーHTR ID6061に関連付けてハッシュテーブル128に格納される。ハッシュテーブルエントリーは、さらに、ハッシュ値7021から、データブロックが格納されたクラウドストレージ120における位置を指定するクラウドストレージプールアドレス7041、7061への変換を格納する。クラウドストレージプールへのアクセスに必要な情報を格納するストレージオブジェクトテーブル130にエントリーが追加される。この情報は、クラウドストレージプールアドレス7041によって、ストレージオブジェクトテーブル130にインデックスされる。
【0058】
最初の起動時、コンピューティングデバイス102からサーバ110に要求が送信される。当該要求を受けて、サーバ110は、VHDテーブル124を用いて、どのVHD及びそのバージョンからゲストVMが起動すべきであるのかを判定するための動作を実行する。いったん、ゲストVM3061のゲストOS310がロードされて動作すると、ゲストVM3061のドライバ328は、サーバ110と通信して構成情報5061を読み出す。その後、902~908に示すように、VHDバージョンID5021を用いて、LBAによってVHDバージョンに対するI/O要求が検索される。
【0059】
ゲストVM3061のアプリケーション308によってVHD322に対して発したI/O要求ごとに、ドライバ328はサーバ110に要求を伝達する。当該要求は、所定のブロックのデータに対して、PVHD ID5041、VHDバージョンID5021及び/又はVHD LBA6041を含む。902~910に示すように、VHDバージョンID5021及びLBA6041を用いて、(a)所定のLBAを有する論理ブロックが格納されたクラウドストレージのアドレス可能ディスクセクタを指定する情報と、(b)クラウドストレージのアドレス可能ディスクセクタへのアクセスに必要なクラウドストレージアクセス情報と、が検索される。これに関し、サーバ110は、LBA6041を、対応するデータが格納されたクラウドストレージの位置を含むハッシュテーブル128のエントリー6061へ変換する動作を実行する。ハッシュテーブルエントリー6061は、各ハッシュ値7021からクラウドストレージプールアドレス7041、7061への変換を格納する。そして、クラウドストレージプールアドレス7041を用いてCSAI8021が検索される。
【0060】
データベースルックアップの例を以下に示す。
SELECT (h.acsp_id, h.acsp_ov) from page_table AS p INNER JOIN hash_table AS h ON p.hash_table_id = h.id WHERE p.version = %d AND p.lba = %d;’, (self.version, lba)
本解決手段は、この例の詳細に限定されない。
【0061】
図10を参照すると、クラウドベースのコンピューティングシステム(例えば、
図1のシステム100)を運用する例示的な方法1000のフロー図が示されている。方法1000は、1002で開始され、VHDデータのブロックをクラウドストレージ(例えば、
図1のクラウドストレージ120)のページに格納する1004が続く。次の1006において、クラウドサーバ(例えば、
図1のクラウドサーバ110)は、リモートコンピューティングデバイス(例えば、
図1及び
図4のコンピューティングデバイス102)によってホストされたVM(例えば、
図3のVM306
1)のVHD(例えば、
図3のVHD322)内の第1位置と関連付けられたVHDデータへのアクセス要求を受信する。クラウドサーバは、当該要求を1008で処理し、当該要求から少なくとも第1アドレス(例えば、
図6のVHD LBA604
1)を抽出する。第1アドレスは、VMのVHD内の第1位置を指定する。1010において、クラウドサーバは、第1アドレスを、VHDデータが格納されたクラウドストレージ内の第2位置を指定する第2アドレス(例えば、
図7のACSP ID704
1及びACSP OV706
1)へ変換する動作を実行する。この変換は、第1アドレスを、データベース(例えば、
図1のクラウドベースのリレーショナルデータベース112)のテーブル(例えば、
図7のハッシュテーブル128)内のエントリーに対する行識別子(例えば、
図6のHTR ID606
1)へ変換し、行識別子を用いて、VHDデータを識別する固有の値(例えば、
図7のHV702
1)から第2アドレス(例えば、
図7のACSP ID704
1及びACSP OV706
1)への変換を格納するテーブルのエントリーへアクセスすることによって達成される。1012では、第2アドレス(例えば、
図7のACSP ID704
1)を用いて、クラウトストレージに格納されたVHDデータへのアクセスを得るのに必要なクラウドストレージアクセス情報(例えば、
図8のCSAI802
1)を取得する。そして、1014に示すように、第2アドレス及びクラウドストレージ情報をクラウドサーバからリモートコンピューティングデバイスへ伝達することで、クラウドストレージに格納されたVHDデータへのアクセスを促す。1016では、リモートコンピューティングデバイスから送信された第2アドレス及びクラウドストレージアクセス情報をクラウドが受信したことに応答して、VHDデータがリモートコンピューティングデバイスに提供される。次いで、1018が実行され、方法1000が終了するか、又は他の処理が行われる。
【0062】
図11を参照すると、例示的な読み出し処理1100のフロー図が示されている。読み出し処理1100は、1102で開始され、VHDからデータを読み出すための読み出し要求を受信する1104が続く。読み出し要求に応答して、1106でページテーブルを分析し、VHD LBA及びVHDバージョンIDに関連付けられたHTR IDを見つけ出す。HTR IDが見つかった場合[1108:YES]、1110が実行され、HTR IDを用いて、クラウドストレージプールアドレス及びクラウドストレージプールアクセス情報を取得する。その後、1118が実行され、方法1100が終了するか、又は他の処理が行われる。一方、HTR IDが見つからなかった場合[1108:NO]、1112が実行され、VHDテーブルを分析して、対応するPVHD IDを取得する。そして、1114に示すように、親セットのないVHDバージョンIDが見つかるまで、PVHD ID及びVHD LBAを再帰的に用いる。この場合、1116において全てゼロのデータが返される。次いで、方法1100が終了するか、又は他の処理が行われる。
【0063】
図12を参照すると、例示的な書き込み処理1200のフロー図が示されている。書き込み処理1200は、1202で開始され、VHDへデータを書き込むための書き込み要求を受信する1204が続く。書き込み要求に応答して、1206では、当該データに対するハッシュ値を算出する。次に、1208において、ハッシュテーブル128を検索して、適合するハッシュ値を有する行を見つけ出す。適合するハッシュ値を有する行が見つかった場合[1210:YES]、既存のエントリーに対して適合するVHDバージョンID及びVHD LBAの組を有するページテーブル126内の行に対するHTR識別子をアップデートする。次いで、1214が実行され、書き込み処理1100が戻る(データが既にクラウドストレージに格納されているため、データの書き込みは不要である。)。適合するハッシュ値を有する行が見つからなかった場合[1210:NO]、1216~1220が実行される。1216~1220は、ストレージオブジェクトのうちの1つに新たなデータブロックを割り当て;クラウドストレージにデータを書き込み;当該ブロックを識別するためのハッシュ値、ACSP識別子及びACSPオフセットを有する行をハッシュテーブル128に作成し;新たなHTR識別子の値に適合するVHDバージョンID及びVHD LBAの組を有するページテーブル126内の行をアップデートする。次いで、1222が実行され、書き込み処理1200が終了するか、又は他の処理が行われる。
【0064】
本解決手段を1つ以上の実施に関して図示及び説明したが、本明細書及び添付図面を読んで理解すると、同等の変更及び変形例が当業者に想到されるであろう。さらに、本解決手段の特定の特徴は、いくつかの実施のうちの1つのみに関して開示されている可能性があるが、そのような特徴は、任意の又は特定の用途にとって望ましく有利であるように他の実施の1つ以上の他の特徴と組み合わせることができる。したがって、本解決手段の広さ及び範囲は、上記の実施形態のいずれによっても限定されるべきではない。むしろ、本解決手段の範囲は、添付の特許請求の範囲及びそれらの均等物に従って定義されるべきである。