(57)【要約】  クラウドベースのコンピューティングシステムを運用するシステム及び方法。当該方法は、リモートコンピューティングデバイスによってホストされた仮想マシン（ＶＭ）の仮想ハードディスク（ＶＨＤ）内の第１位置に関連付けられたＶＨＤデータにアクセスするための要求を、クラウドサーバにより受信し、クラウドサーバにより、当該要求から第１位置を指定する少なくとも第１アドレスを抽出し、クラウドサーバにより、第１アドレスを、ＶＨＤデータが格納されたクラウドストレージ内の第２位置を指定する第２アドレスに変換し、クラウドサーバからリモートコンピューティングデバイスへ第２アドレスを伝達して、クラウドストレージに格納されたＶＨＤデータへのアクセスを促す。【選択図】図１
2020531969.tif 000002
【特許請求の範囲】
【請求項１】
クラウドベースのコンピューティングシステムを運用する方法であって、
リモートコンピューティングデバイスによってホストされた仮想マシン（ＶＭ）の仮想ハードディスク（ＶＨＤ）内の第１位置に関連付けられたＶＨＤデータにアクセスするための要求を、クラウドサーバにより受信し、
前記クラウドサーバにより、前記要求から前記第１位置を指定する少なくとも第１アドレスを抽出し、
前記クラウドサーバにより、前記第１アドレスを、前記ＶＨＤデータが格納されたクラウドストレージ内の第２位置を指定する第２アドレスに変換し、
前記クラウドサーバから前記リモートコンピューティングデバイスへ前記第２アドレスを伝達して、前記クラウドストレージに格納された前記ＶＨＤデータへのアクセスを促す、方法。
【請求項２】
前記クラウドストレージのページに前記ＶＨＤデータのブロックを格納することをさらに含む、請求項１に記載の方法。
【請求項３】
前記第１アドレスは論理ブロックアドレス（ＬＢＡ）を含む、請求項１に記載の方法。
【請求項４】
前記第２アドレスは、アドレス可能クラウドストレージプール識別子及びアドレス可能クラウドストレージプールオフセット値を含む、請求項２に記載の方法。
【請求項５】
前記変換は、前記第１アドレスを、データベースのテーブル内のエントリーに対する行識別子に変換することを含む、請求項１に記載の方法。
【請求項６】
前記データベースはリレーショナルデータベースを含む、請求項５に記載の方法。
【請求項７】
前記変換は、前記行識別子を用いて、前記ＶＨＤデータを識別する固有の値から前記第２アドレスへの変換を格納する前記テーブルの前記エントリーにアクセスすることを含む、請求項５に記載の方法。
【請求項８】
前記固有の値はハッシュ値を含む、請求項７に記載の方法。
【請求項９】
前記第２アドレスの少なくとも一部を用いて、前記クラウドストレージに格納された前記ＶＨＤデータへのアクセスを得るのに必要なクラウドストレージアクセス情報を取得することをさらに含む、請求項１に記載の方法。
【請求項１０】
前記リモートコンピューティングデバイスから送信された前記第２アドレス及び前記クラウドストレージアクセス情報を前記クラウドが受信したことに応答して、前記ＶＨＤデータを前記リモートコンピューティングデバイスに提供することをさらに含む、請求項９に記載の方法。
【請求項１１】
前記クラウドサーバにより、前記ＶＨＤへデータを書き込むための書き込み要求を受信し、
前記書き込み要求に応答して、前記クラウドサーバにより、前記データに対する第１ハッシュ値を算出し、
ハッシュテーブルを検索して、前記第１ハッシュ値に適合する第２ハッシュ値を有する行を見つけ出すこと、
をさらに含む、請求項１に記載の方法。
【請求項１２】
前記第１ハッシュ値に適合する第２ハッシュ値を有する行が見つかった場合、
既存のエントリーに対して適合するＶＨＤバージョン識別子及びＶＨＤ論理ブロックアドレスを有するページテーブル内の行に対するハッシュテーブル行識別子をアップデートし、
戻ること、
をさらに含む、請求項１１に記載の方法。
【請求項１３】
前記第１ハッシュ値に適合する第２ハッシュ値を有する行が見つからなかった場合、
複数のストレージオブジェクトのうちの１つに新たなデータブロックを割り当て、
前記クラウドストレージに前記データを書き込み、
前記ハッシュ値、アドレス可能クラウドストレージプール（ＡＣＳＰ）識別子及びＡＣＳＰオフセットを有する行を前記ハッシュテーブルに作成し、
新たなハッシュテーブル行（ＨＴＲ）識別子の値に適合するＶＨＤバージョン識別子及びＶＨＤ論理ブロックアドレス（ＬＢＡ）を有するページテーブル内の行をアップデートすること、
をさらに含む、請求項１１に記載の方法。
【請求項１４】
プロセッサと、
シンクローンをサポートせずにシンプロビジョニング仮想マシンを提供する方法を前記プロセッサに実施させるためのプログラミング命令を有する非一時的なコンピュータ読み取り可能な記憶媒体と、
を備え、
前記プログラミング命令は、
リモートコンピューティングデバイスによってホストされた仮想マシン（ＶＭ）の仮想ハードディスク（ＶＨＤ）内の第１位置に関連付けられたＶＨＤデータにアクセスするための要求を受信し、
前記要求から前記第１位置を指定する少なくとも第１アドレスを抽出し、
前記第１アドレスを、前記ＶＨＤデータが格納されたクラウドストレージ内の第２位置を指定する第２アドレスに変換し、
前記第２アドレスを前記リモートコンピューティングデバイスへ伝達して、前記リモートコンピューティングデバイスに対し、前記クラウドストレージに格納された前記ＶＨＤデータへのアクセスを促すための命令を含む、クラウドベースのコンピューティングシステム。
【請求項１５】
前記プログラミング命令は、前記クラウドストレージのページに前記ＶＨＤデータのブロックを格納するための命令をさらに含む、請求項１４に記載のクラウドベースのコンピューティングシステム。
【請求項１６】
前記第１アドレスは論理ブロックアドレス（ＬＢＡ）を含む、請求項１４に記載のクラウドベースのコンピューティングシステム。
【請求項１７】
前記第２アドレスは、アドレス可能クラウドストレージプール識別子及びアドレス可能クラウドストレージプールオフセット値を含む、請求項１６に記載のクラウドベースのコンピューティングシステム。
【請求項１８】
前記第１アドレスを、データベースのテーブル内のエントリーに対する行識別子に変換することによって、前記第１アドレスは前記第２アドレスに変換される、請求項１４に記載のクラウドベースのコンピューティングシステム。
【請求項１９】
前記データベースはリレーショナルデータベースを含む、請求項１８に記載のクラウドベースのコンピューティングシステム。
【請求項２０】
前記行識別子を用いて、前記ＶＨＤデータを識別する固有の値から前記第２アドレスへの変換を格納する前記テーブルの前記エントリーにアクセスすることによって、前記第１アドレスは前記第２アドレスに変換される、請求項１８に記載のクラウドベースのコンピューティングシステム。
【請求項２１】
前記固有の値はハッシュ値を含む、請求項２０に記載のクラウドベースのコンピューティングシステム。
【請求項２２】
前記プログラミング命令は、前記第２アドレスの少なくとも一部を用いて、前記クラウドストレージに格納された前記ＶＨＤデータへのアクセスを得るのに必要なクラウドストレージアクセス情報を取得するための命令をさらに含む、請求項１４に記載のクラウドベースのコンピューティングシステム。
【請求項２３】
前記プログラミング命令は、前記リモートコンピューティングデバイスから送信された前記第２アドレス及び前記クラウドストレージアクセス情報をクラウドが受信したことに応答して、前記ＶＨＤデータを前記リモートコンピューティングデバイスに提供するための命令をさらに含む、請求項２２に記載のクラウドベースのコンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概してコンピューティングシステムに関する。より詳細には、本開示は、シンクローン（thin clone）をサポートしないクラウド環境におけるシンプロビジョニング仮想デスクトップインフラストラクチャ（ＶＤＩ）仮想マシン（ＶＭ）を提供するためのシステム及び方法の実施に関する。
【背景技術】
【０００２】
当該技術分野では多くのクラウド環境が知られている。そのようなクラウド環境の一つにMicrosoft Azureがある。クラウド環境（例えば、Microsoft Azure）におけるストレージプロビジョニングには多くの難点がある。例えば、クラウド環境において、ダイナミック・ディスクは必ずしもサポートされているわけではない。これは、仮想ディスクの全ブロック（未使用空間も含む。）をアップロードする必要があることを意味する。仮想ディスクチェーンもまた、全てのクラウド環境でサポートされているとは限らず、これは、既存のイメージをアップデートすることができないことを意味する。代わりに、既存のイメージをアップデートするには、全く新しいディスクを作成する必要がある。さらに、ＶＭは、起動用の既存のディスクでしか起動することができないため、クラウド環境下ではゴールデンイメージを作成することができない。同一のディスクで複数のＶＭを起動させるためには、起動ディスクのクローン、すなわち、起動ディスクの完全なコピーを作成する。これにより、多大なる費用（起動ディスクのＮ枚分の完全なコピーに対する料金を顧客に請求することになるため。）と時間（ディスクのクローニングには比較的長い時間がかかるため。）を要する。
【発明の概要】
【０００３】
本開示は、クラウドベースのコンピューティングシステムを運用するシステム及び方法の実施に関する。当該方法は、クラウドストレージのページに仮想ハードディスク（ＶＨＤ）データのブロックを格納し、リモートコンピューティングデバイスによってホストされた仮想マシン（ＶＭ）のＶＨＤ内の第１位置に関連付けられたＶＨＤデータにアクセスするための要求を、クラウドサーバにより受信し、クラウドサーバにより、当該要求から第１位置を指定する少なくとも第１アドレスを抽出し、クラウドサーバにより、第１アドレスを、ＶＨＤデータが格納されたクラウドストレージ内の第２位置を指定する第２アドレスに変換し、第２アドレスの少なくとも一部を用いて、クラウドストレージに格納されたＶＨＤデータへのアクセスを得るのに必要なクラウドストレージアクセス情報を取得し、クラウドサーバからリモートコンピューティングデバイスへ第２アドレス及び／又はクラウドストレージアクセス情報を伝達して、クラウドストレージに格納されたＶＨＤデータへのアクセスを促し、及び／又は、リモートコンピューティングデバイスから送信された第２アドレス及びクラウドストレージアクセス情報をクラウドが受信したことに応答して、ＶＨＤデータをリモートコンピューティングデバイスに提供する。
【０００４】
いくつかのシナリオにおいて、第１アドレスは論理ブロックアドレス（ＬＢＡ）を含む。第２アドレスは、アドレス可能クラウドストレージプール識別子及びアドレス可能クラウドストレージプールオフセット値を含む。上記変換は、第１アドレスを、データベース（例えば、リレーショナルデータベース）のテーブル内のエントリーに対する行識別子に変換し、行識別子を用いて、ＶＨＤデータを識別する固有の値（例えば、ハッシュ値）から第２アドレスへの変換を格納するテーブルのエントリーにアクセスすることを含む。
【０００５】
そのようなシナリオ又は他のシナリオでは、上記方法は、クラウドサーバにより、ＶＨＤへデータを書き込むための書き込み要求を受信し、書き込み要求に応答して、クラウドサーバにより、データに対する第１ハッシュ値を算出し、ハッシュテーブルを検索して、第１ハッシュ値に適合する第２ハッシュ値を有する行を見つけ出すこと、をさらに含む。第１ハッシュ値に適合する第２ハッシュ値を有する行が見つかった場合、上記方法は、既存のエントリーに対して適合するＶＨＤバージョン識別子及びＶＨＤ論理ブロックアドレスを有するページテーブル内の行に対するハッシュテーブル行識別子をアップデートし、戻ること、を含む。第１ハッシュ値に適合する第２ハッシュ値を有する行が見つからなかった場合、上記方法は、複数のストレージオブジェクトのうちの１つに新たなデータブロックを割り当て、クラウドストレージにデータを書き込み、ハッシュ値、アドレス可能クラウドストレージプール（ＡＣＳＰ）識別子及びＡＣＳＰオフセットを有する行をハッシュテーブルに作成し、新たなハッシュテーブル行（ＨＴＲ）識別子の値に適合するＶＨＤバージョン識別子及びＶＨＤ論理ブロックアドレス（ＬＢＡ）を有するページテーブル内の行をアップデートすること、をさらに含む。
【図面の簡単な説明】
【０００６】
以下の図面を参照して本解決手段を説明するが、図面全体を通して、同様の参照符号は同様の特徴を表す。
【０００７】
【図１】図１は、例示的なシステムの図である。
【０００８】
【図２】図２は、図１に示すコンピューティングデバイスの例示的なアーキテクチャの図を示す。
【図３】図３は、図１に示すコンピューティングデバイスの例示的なアーキテクチャの図を示す。
【０００９】
【図４】図４は、図１のシステムのメッセージフローである。
【００１０】
【図５】図５は、例示的な仮想ハードディスク（ＶＨＤ）テーブルの図である。
【００１１】
【図６】図６は、例示的なページテーブルの図である。
【００１２】
【図７】図７は、例示的なハッシュテーブルの図である。
【００１３】
【図８】図８は、例示的なストレージオブジェクトテーブルの図である。
【００１４】
【図９】図９は、図５〜図８のテーブル間の関係を理解するのに有用な図である。
【００１５】
【図１０】図１０は、クラウドベースのコンピューティングシステムを運用する例示的な方法のフロー図である。
【００１６】
【図１１】図１１は、例示的な読み出し処理のフロー図である。
【００１７】
【図１２】図１２は、例示的な書き込み処理のフロー図である。
【発明を実施するための形態】
【００１８】
本明細書で一般的に説明され、添付図面に示された実施形態の構成要素は、多種多様な異なる構成で配置及び設計され得ることが容易に理解されよう。したがって、図示されている様々な実施形態の以下のより詳細な説明は、本開示の範囲を限定するものではなく、様々な実施形態の単なる代表例である。実施形態の様々な態様が図面に提示されているが、特に明示しない限り、図面は必ずしも縮尺通りに描かれていない。
【００１９】
本解決手段は、その精神又は本質的な特徴から逸脱することなく、他の特定の形態で具現化することができる。説明された実施形態は、あらゆる点で単なる例示にすぎず、限定的に解釈してはならない。したがって、本解決手段の範囲は、添付の特許請求の範囲によって示されるのであって、この詳細な説明には、なんら拘束されない。特許請求の範囲の均等物の意味及び範囲内における変更はすべて本解決手段の範囲内に包含されるべきである。
【００２０】
本明細書全体を通して、特徴、利点、又は類似の用語への言及は、本解決手段で実現され得る特徴及び利点のすべてが本解決手段の任意の単一の実施形態であるべきであることを意味しない。むしろ、特徴及び利点に言及する用語は、実施形態に関連して説明される特定の特徴、利点、又は特性が本解決手段の少なくとも１つの実施形態に含まれることを意味すると理解される。したがって、本明細書全体にわたる特徴及び利点、ならびに類似の言語の議論は、必ずしもそうではないが、同じ実施形態を指す場合がある。
【００２１】
さらに、本解決手段の記載された特徴、利点、及び特性は、１つ以上の実施形態において任意の適切な方法で組み合わせることができる。当業者は、本明細書の説明に照らして、特定の実施形態の１つ以上の特定の特徴又は利点なしで本解決手段が実施可能であることを認識するであろう。他の例では、本解決手段のすべての実施形態で示されていない特定の実施形態において、追加の特徴及び利点が認識される場合がある。
【００２２】
本明細書全体を通して、「一実施形態」（one embodiment）、「実施形態」（an embodiment）、又は同様の文言への言及は、示された実施形態に関連して説明された特定の特徴、構造、又は特性が本解決手段の少なくとも１つの実施形態に含まれることを意味する。したがって、本明細書全体を通して、「一実施形態では」（in one embodiment）、「実施形態では」（in an embodiment）という文言、及び同様の文言は、必ずしもそうではないが、すべて同じ実施形態を指す場合がある。
【００２３】
本文書で用いられている単数形「a」、「an」、及び「the」は、文脈上特に明記されていない限り、複数形の言及を含む。別段に定義されない限り、本明細書で用いられているすべての技術用語及び科学用語は、当業者によって一般に理解されるのと同じ意味を有する。本文書で用いられている「備える／有する」（comprising）という用語は「含むが、それに限定されない」（including, but not limited to）ことを意味する。
【００２４】
本解決手段は、シンクローンがサポートされていないクラウド環境下で、同一の起動ディスクを共有する多数のＶＭをセットアップする手段を提供する。これに関し、本解決手段は、クラウドストレージと、クラウドベースのリレーショナルデータベースとの組み合わせを用いる。ここで「クラウドストレージ」とは、インターネット又はクラウドからアクセスされたリモートサーバ上にデータが格納されたクラウドコンピューティングモデルを指す。クラウドストレージは、可視化技術の上に構築されたストレージサーバ上のクラウドストレージサービスプロバイダによって、メンテナンスされ、作動され、管理される。クラウドストレージは、全ての仮想ディスクバージョンのデータを保持するために使用される。クラウドベースのリレーショナルデータベースは、Structured Query Language（ＳＱＬ）を用いて実現され得る。ＳＱＬは、リレーショナルデータベース管理及びデータ操作のための標準的なコンピュータ言語である。ＳＱＬは、データのクエリー、挿入、アップデート、及び修正を行うために用いられる。クラウドベースのリレーショナルデータベースは、各仮想ディスクバージョンを記述するメタデータを保持するために使用される。
【００２５】
本解決手段は、従来の解決手段の様々な欠点を克服するものである。従来のシステムでは、多くのクラウド環境がディスクのシンクローンをサポートしていないため、完全なディスククローンが求められるが、ＶＤＩを使用した同一のＶＭを大量に作成するとき、莫大な費用と時間がかかってしまう。本解決手段は、クラウドストレージとクラウドデータベースとの組み合わせを用いて、オペレーティングシステム（ＯＳ）（例えば、Windows又はLinux（登録商標） OS）環境におけるストレージアウェアドライバ（storage aware driver）とともに、シンクローンとストレージ重複排除とを実現する。さらに、本解決手段は、複数の仮想ディスクを複数のクラウドストレージ位置にわたって設けることを可能とする。例えば、いくつかのクラウドコンピューティングサービス（例えば、Microsoft Azure）において、ページ・バイナリ・ラージ・オブジェクト（ＢＬＯＢ）の最大サイズは１ＴＢである。本解決手段により、多くの仮想ディスクが、複数のページＢＬＯＢにわたって広がるように格納され得る。ここで「ＢＬＯＢ」とは、データベース管理システムに単一のエンティティとして格納されたバイナリデータの集まりを指す。当該データとして、画像、音声、映像その他のメディアコンテンツを挙げることができるが、これらに限定されない。
【００２６】
本解決手段を多方面の応用に活用することができる。例えば、本解決手段を、クラウドにおけるプロビジョニングスキーム（例えば、Citrix Machine Creation Service（ＭＣＳ）及びCitrix Provisioning Service（ＰＶＳ）プロビジョニングスキーム）を改良するために活用することができる。ＭＣＳについて、本解決手段は、ストレージプロビジョニングの問題を解決する。ＰＶＳにおいて、本解決手段は、ネットワークストリーミングの問題を解決する（ディスクはもはやストリーミング配信されないため。）一方で、ＰＶＳによってなされる仮想ディスクの管理が残る。これは、ＰＶＳのユーザに対して大いに透過的になるように実施可能であろう。
【００２７】
図１を参照すると、例示的なシステム１００の図が示されている。システム１００は、概して、シンクローンをサポートしないシンプロビジョニングＶＤＩ ＶＭを提供するように構成される。これに関し、システム１００は、ネットワーク１０４（例えば、インターネット）を介してクラウド１２０に通信接続されたコンピューティングデバイス１０２を備える。クライアントデバイス１０２は、仮想化環境をホストし、クラウドストレージ１０６に対するデータの読み書きを行う。クラウドストレージ１０６は、複数のリモートサーバ１０８１、１０８２、…、１０８Ｎを備える。リモートサーバ１０８１、１０８２、…、１０８Ｎの各々は、オブジェクトストア１１４を提供する。オブジェクトストア１１４は、複数のアドレス可能ディスクセクタ１１８１、１１８２、…、１１８Ｍを有しており、ランダムアクセス用に最適化されている。ディスクセクタ１１８１、１１８２、…、１１８Ｍを用いて、複数のＶＨＤの重複排除データ（de-duplicated data）１２２１、１２２２，…、１２２Ｍを格納する。重複排除データは、クラウドストレージに一度だけ格納された同一ブロックのデータを有している。これにより、繰り返しデータの複製が排除される。本明細書では、重複排除データを生成する処理を、重複排除（de-duplication）又はデータ重複排除（data de-duplication）と称する。いくつかのシナリオにおいて、ＶＨＤブロックのデータは、クラウドストレージのページに格納される。
【００２８】
１つ以上のオブジェクトストア１１４のディスクセクタを用いて、ストレージプールを規定することができる。したがって、ここでの「ストレージプール」とは、１つ以上のストレージリソースから集められた容量を指す。クラウドストレージ１０６内に１つ以上のストレージプールを規定することができる。これらのストレージプールは、同一又は異なるサイズを有することができる。ストレージプールによって、多くのＶＨＤを複数のクラウドストレージ位置にわたって設けることを可能とする。
【００２９】
クラウド１２０は、さらに、サーバ１１０と、クラウドストレージの最上位にストレージ仮想化層を提供するクラウドベースのリレーショナルデータベース１１２と、を備える。これらの構成要素１１０及び１１２は、シンクローンをサポートしないクラウド環境下で同一のベースディスクを共有する多数のＶＭのプロビジョニングを促進するだけでなく、許可されたコンピューティングデバイスのみがクラウドストレージ１０６にアクセスすることを保証する手段を提供する。これに関し、サーバ１１０にアクセス可能なクラウドベースのリレーショナルデータベース１１２には、複数のテーブル１２４〜１３０が格納されている。これらのテーブルは、ＶＨＤテーブル１２４と、ページテーブル１２６と、ハッシュテーブル１２８と、ストレージオブジェクトテーブル１３０と、を有する。これらのテーブルを用いて、ＶＨＤの重複排除データがクラウドストレージ１０６内のどこに格納されているのかを追跡する。これらのテーブルの項目については、以下でより詳細に説明する。
【００３０】
いくつかのシナリオにおいて、クラウドベースのリレーショナルデータベース１１２は、Structured Query Language（ＳＱＬ）データベースを備える。ＳＱＬデータベースは、当該技術分野で周知であるため、ここでの説明は省略する。これに関し、本解決手段は限定されず、ここでは、他の種類のリレーショナルデータベースも用いることができる。
【００３１】
図２を参照すると、図１のコンピューティングデバイス１０２の例示的なアーキテクチャが示されている。図１のサーバ１０８１、１０８２、…、１０８Ｎ及び／又は１１０は、コンピューティングデバイス１０２と同一又は類似である。したがって、コンピューティングデバイス１０２の説明は、図１のサーバ１０８１、１０８２、…、１０８Ｎ及び／又は１１０を理解するのには十分である。
【００３２】
コンピューティングデバイス１０２の構成要素は、図２に示された構成要素よりも多くても少なくてもよい。しかしながら、図示されている構成要素は、本解決手段を実施する例示的な実施形態を開示するのに十分である。図２のハードウェアアーキテクチャは、シンクローンをサポートせずにシンプロビジョニングＶＤＩ ＶＭを提供するように構成された代表的なコンピューティングデバイスの一実施形態を表す。したがって、図２のコンピューティングデバイス１０２は、本明細書に記載された各方法の少なくとも一部を実施する。
【００３３】
コンピューティングデバイス１０２の一部又は全ての構成要素は、ハードウェア、ソフトウェア、及び／又はハードウェアとソフトウェアとの組み合わせとして実現することができる。ハードウェアは１つ以上の電子回路を含むが、これに限定されない。電子回路として、受動素子（例えば、抵抗器及びコンデンサ）及び／又は能動素子（例えば、増幅器及び／又はマイクロプロセッサ）を挙げることができるが、これらに限定されない。受動素子及び／又は能動素子は、本明細書に記載された方法、手順、又は機能のうちの１つ以上を実行するように構成され、配置され、及び／又はプログラムされ得る。
【００３４】
図２に示すように、コンピューティングデバイス２００は、ユーザインターフェイス２０２と、ＣＰＵ２０６と、システムバス２１０と、システムバス２１０を介してコンピューティングデバイス１０２の他の部分に接続されてアクセス可能なメモリ２１２と、システムバス２１０に接続されたハードウェアエンティティ２１４とを備える。ユーザインターフェイスには、入力デバイス及び出力デバイスを設けることができ、コンピューティングデバイス１０２の動作を制御するためのユーザソフトウェア相互作用を促進する。入力デバイスとして、物理及び／又はタッチキーボード２５０が挙げられるが、これらに限定されない。出力デバイスとして、スピーカー２５２、ディスプレイ２５４、及び／又は発光ダイオード２５６が挙げられるが、これらに限定されない。
【００３５】
ハードウェアエンティティ２１４の少なくとも一部は、メモリ２１２へのアクセス及び使用を伴うアクションを実行する。メモリ２１２として、Random Access Memory（ＲＡＭ）、ディスクドライバ及び／又はCompact Disc Read Only Memory（ＣＤ−ＲＯＭ）が採用され得る。メモリ２１２は、システムキャッシュ２２６を備える。メモリ２１２は、図１に示すように、仮想マシンモニタ（ＶＭＭ）２６０、ホストオペレーティングシステム（ＯＳ）若しくはファームウェア２６２、アプリケーション２２４、及び／又は命令２２０を格納することができる。
【００３６】
ハードウェアエンティティ２１４は、コンピュータ読み取り可能な記憶媒体２１８を有するディスクドライブユニット２１６を備えることができる。コンピュータ読み取り可能な記憶媒体２１８には、本明細書に記載された方法、手順、又は機能のうちの１つ以上を実行する１組以上の命令２２０（例えば、ソフトウェアコード）が格納されている。命令２２０は、コンピューティングデバイス１０２による実行中に、メモリ２１２内及び／又はＣＰＵ２０６内に完全に又は少なくとも部分的に常駐することもできる。メモリ２１２及びＣＰＵ２０６はまた、機械読み取り可能な媒体を構成することができる。ここで「機械読み取り可能な媒体」とは、１組以上の命令２２０を格納する単一の媒体又は複数の媒体（例えば、集中型若しくは分散型データベース、及び／又は関連するキャッシュ及びサーバ）を指す。また、「機械読み取り可能な媒体」は、コンピューティングデバイス１０２による実行のための命令１２０の組を格納、符号化、又は搬送することができ、且つ、コンピューティングデバイス２００に本開示の方法のいずれか１つ以上を実行させる任意の媒体も指している。
【００３７】
いくつかのシナリオにおいて、ハードウェアエンティティ２１４は、シンクローンをサポートせずにシンプロビジョニングＶＤＩ ＶＭを促進するようにプログラムされた電子回路（例えば、プロセッサ）を備える。これに関して、当該電子回路は、コンピューティングデバイス１０２にインストールされたソフトウェアアプリケーション２２４にアクセスして実行することができることを理解されたい。１つのソフトウェアアプリケーション２２４は、概して、シンクローンをサポートせずにシンプロビジョニングＶＤＩ ＶＭを促進するために作動する。ソフトウェアアプリケーション２２４の機能は、説明が進むにつれて明らかになるだろう。
【００３８】
図３を参照すると、コンピューティングデバイス１０２によってホストされた仮想化環境の基本概念の図が示されている。図３に示すように、コンピューティングデバイス１０２は、１つ以上のアプリケーション２２４のハードウェアリソース３２０へのアクセスを管理する汎用ホストＯＳ又はファームウェア２６２を動作させる。ハードウェアリソース３２０として、図２に示すハードウェアデバイス２０２〜２５６が挙げられるが、これらに限定されない。
【００３９】
ＶＭＭ２６０（又はハイパーバイザ）は、ホストコンピューティングデバイス１０２上で動作し、物理システムのハードウェアをエミュレートする。ホストコンピューティングデバイスは、追加のＯＳインスタンスの並行実行を可能とすべく、ＶＭＭ２６０を実行する。ホストＯＳ又はファームウェア２６２から見ると、ＶＭＭ２６０はアプリケーションである。ＶＭＭ２６０は、概して、ＶＭ３０６１、３０６２、…、３０６Ｎを作成し、物理的なホストコンピューティングデバイス１０２の最上位の仮想環境の動作を管理するソフトウェアである。これに関し、ＶＭＭ２６０は、ＣＰＵ２０６への命令を調整する。ＶＭＭ２６０は、ゲストが発した全てのＣＰＵ命令を有効にし、追加の権限を要する任意の実行コードを管理する。追加のＯＳインスタンスは、ゲストＶＭ３０６１、３０６２、…、３０６Ｎ上で動作する。
【００４０】
各ゲストＶＭは、ホストＯＳ２６２及び他のゲストＶＭから分離された環境下でゲストＯＳ３１０（例えば、Windows 10）を実行するソフトウェアコンピュータである。ゲストＯＳ３１０は、自身の一連のアプリケーション３０８をホストし、ＶＨＤ３２２にインストールされている。ＶＨＤ３２２は、ホストコンピューティングデバイス１０２にアクセス可能なファイルシステムに格納されたファイルとして実現される。ゲストＯＳ３１０から見ると、ＶＨＤ３２２を物理的な記憶媒体（例えば、図２のメモリ２１２）と区別することができない。ＶＨＤ３２２は、物理的なハードディスクの完全なコンテンツ及び構造を含むシステムイメージを格納している。ディスクイメージを含む複数のＶＨＤをＶＭに設けることができる。ホストコンピューティングデバイス１０２は、図２の物理的なメモリ２１２など、利用可能なハードウェアリソースへのＶＭのアクセスを制御する。
【００４１】
上述のように、本解決手段は、シンクローンをサポートしないクラウド環境下で、（多くの人が自身のコンピュータを接続して使用するために）同一の起動ディスクを共有する多数のＶＭをセットアップする手段を提供する。これに関し、ＶＭ３０６１、３０６２、…、３０６Ｎの各々は、ドライバ３２８を備えている。ドライバ３２８は、ゲストＯＳ３１０から、ＶＨＤ３２２に格納されたデータへのアクセス要求を受信する。当該要求を受けて、ドライバ３２８は、クラウドストレージ１０６に格納された当該ＶＨＤのデータへのアクセスを得ることを目的として、クラウド１２０と通信するための動作を行う。クラウドストレージへのアクセスを得る処理については、図４と関連付けて以下でより詳細に述べる。
【００４２】
図４を参照すると、クラウドストレージ１０６にアクセスするためのメッセージフロー図が示されている。４０２に示すように、動作中に、ゲストＶＭ３０６１のドライバ３２８は、ＶＨＤ３２２に格納されたデータへのアクセス要求を、ネットワーク１０４を介してサーバ１１０に伝達する。サーバ１１０では、４０４における動作が行われ、ゲストＶＭ３０６１が、クラウドベースのリレーショナルデータベース１１２内の情報にアクセスする権限を有することが確認される。アクセス権限があれば、４０６に示すように、サーバ１１０は、クラウドベースのリレーショナルデータベース１１２に格納されたテーブル１２４〜１３０にアクセスし、これらのテーブルのコンテンツを用いて、クラウドストレージアクセス情報（例えば、トークン）と、ＶＨＤ３２２の重複排除データが格納されたクラウドストレージ位置を指定するクラウドストレージ位置情報と、を取得する。次に、４０８において、サーバ１１０は、クラウドストレージアクセス情報とクラウドストレージ位置情報とを、ネットワーク１０４を介してゲストＶＭ３０６１に伝達する。この情報は、４１０に示すように、コンピューティングデバイス１０２のシステムキャッシュ２２６に格納され得る。次いで、４１２において、ゲストＶＭ３０６１のドライバ３２８は、クラウドストレージアクセス情報と要求とを、ネットワーク１０４を介してクラウドストレージ１０６に伝達する。この要求は、クラウドストレージ位置情報で指定されたクラウドストレージ位置に格納されたデータにアクセスするためのものである。要求に応答して、４１４に示すように、クラウドストレージ１０６からデータが読み出され、ゲストＶＭ３０６１のドライバ３２８に伝達される。
【００４３】
次に、図５〜図８を参照して、サーバ１１０の動作について詳細に説明する。上述のように、サーバ１１０は、クラウドベースのリレーショナルデータベース１１２に格納されたテーブル１２４〜１３０にアクセスし、テーブル１２４〜１３０を用いて、クラウドストレージアクセス情報（例えば、トークン）と、ＶＨＤの重複排除データが格納されたクラウドストレージ位置を指定するクラウドストレージ位置情報と、を取得する。テーブル１２４〜１３０は、ＶＨＤテーブル１２４と、ページテーブル１２６と、ハッシュテーブル１２８と、ストレージオブジェクトテーブル１３０と、を有する。
【００４４】
ＶＨＤテーブル１２４は、図５に示すように、複数の行及び列を有する。各行は、所定のＶＨＤ（例えば、図３のＶＨＤ３２２）に関連付けられた以下の３つの値を有する：所定のＶＨＤのバージョンを識別するＶＨＤバージョン識別子（ＩＤ）５０２１、５０２２、…、又は５０２Ｎ；ＶＨＤバージョンの親ＶＨＤを識別する親ＶＨＤ（ＰＶＨＤ）ＩＤ５０４１、５０４２、…、又は５０４Ｎ；及び、所定のＶＨＤのＶＨＤメタデータ５０６１、５０６２、…、又は５０６Ｎ。ここで「バージョン」とは、ＶＨＤの一時的な状態を指す。これに関し、ＶＨＤの状態は時間とともに変化することを理解されたい。したがって、複数の時刻でのＶＨＤのコンテンツを規定する複数組の重複排除データがクラウドストレージに格納されている。各組のＶＨＤの重複排除データはＶＨＤバージョンを構成する。
【００４５】
ページテーブル１２６は、図６に示すように、複数の行及び列を有する。ページテーブルには、ＶＨＤバージョンの論理ブロックごとに行が存在する。この行は、論理ブロックのＬＢＡを、データが格納されたクラウドストレージでの位置を含むハッシュテーブル１２８における行に変換する手段を提供する。各行は、ＶＨＤテーブル１２４で識別された所定のＶＨＤバージョンに関連付けられた以下の４つの値を有する：ページテーブル１２６の特定の行を識別する行ＩＤ６０２１、６０２２、…、又は６０２Ｎ；ＶＨＤのバージョンを識別するＶＨＤバージョンＩＤ５０２１、５０２２、…、又は５０２Ｎ；ＶＨＤバージョンの少なくとも１ブロックのデータが格納されたＶＨＤの少なくとも１つのセクタを識別するＶＨＤ論理ブロックアドレス（ＬＢＡ）６０４１、６０４２、…、又は６０４Ｎ；及び、ＶＨＤバージョンの少なくとも１ブロックのデータに関連付けられた更なる情報が格納されたハッシュテーブルにおける行を識別するハッシュテーブル行（ＨＴＲ）ＩＤ６０６１、６０６２、…、又は６０６Ｎ。
【００４６】
ＨＴＲ ＩＤ６０６１、６０６２、…、又は６０６Ｎは、ページテーブル１２６とハッシュテーブル１２８との間の関係を示している。説明が進むにつれてより明らかになるように、これら２つのテーブルは、ＶＨＤバージョンのＬＢＡのクラウドストレージプールアドレスへの変換を容易にする。
【００４７】
ハッシュテーブル１２８は、図７に示すように、複数の行及び列を有する。各行は、ページテーブル１２６で識別された所定のハッシュテーブル行ＩＤに関連付けられた以下の４つの値を有する：ＨＴＲ ＩＤ ６０６１、６０６２、…、又は６０６Ｎ；ハッシュ値(ＨＶ)７０２１、７０２２、…、又は７０２Ｎ；クラウドストレージのストレージプールを識別するアドレス可能クラウドストレージプール（ＡＣＳＰ）ＩＤ７０４１、７０４２、…、又は７０４Ｎ；及び、ストレージプールにおけるブロック位置を示すＡＣＳＰオフセット値（ＯＶ）７０６１、７０６２、…、又は７０６Ｎ。ＡＣＳＰ ＩＤ及びＡＣＳＰ ＯＶは、一括して、ＨＶ７０２１を有する重複排除データが格納されたクラウドストレージ位置にクラウドストレージプールアドレスを提供する。
【００４８】
いくつかのシナリオにおいて、ＨＶは、ＶＨＤのデータに基づき、ハッシュアルゴリズムを用いて算出される。ハッシュアルゴリズムは、当該技術分野において周知であるため、ここでの説明は省略する。ここでは、任意の知られた又は知られ得るハッシュアルゴリズムを用いることができるが、特に限定されない。例えば、ＳＨＡ−２５６暗号学的ハッシュアルゴリズムを用いて、ＶＨＤのデータコンテンツから、元のデータコンテンツを表すハッシュ値を生成する。本解決手段はハッシュアルゴリズムに限定されない。ここでは、他のアルゴリズムを用いて、ディスクブロックコンテンツから固有の値を算出してもよい。これらの他のアルゴリズムは、暗号学的ハッシュ関数として同一の要件をほとんど満たさなければならない。すなわち、決定論的であることから、同一のメッセージが常に同一のハッシュをもたらし、任意の与えられたメッセージに対して即座にハッシュ値を算出し、且つ、同一のハッシュ値を有する２つの異なるメッセージを見つけるのは不可能である。
【００４９】
ストレージオブジェクトテーブル１３０は、図８に示すように、複数の行及び列を有する。各行は少なくとも２つの値を有する：ＡＣＳＰ ＩＤ７０４１、７０４２、…、又は７０４Ｎ；及び、クラウドストレージアクセス情報（ＣＳＡＩ）８０２１、８０２２、…、又は８０２Ｎ。ＣＳＡＩとして、Universal Resource Link（ＵＲＬ）、トークン、及び／又はキーが挙げられるが、これらに限定されない。
【００５０】
とりわけ、これらのテーブル１２４〜１３０は、クラウドストレージの最上位にストレージ仮想化層を提供する。ストレージ仮想化層は次のように実現される。仮想ディスクブロックがクラウドストレージのページに格納される。ハッシュテーブルを用いて、どのＶＨＤブロックがクラウドストレージに格納されているのかを追跡する。ブロックごとに、データのハッシュが算出される。ハッシュテーブルは、クラウドストレージにおけるハッシュからオフセットへの変換を格納する。各ＶＨＤは、親ＶＨＤバージョンへの参照を有するＶＨＤテーブル１２４に記録される。ＶＨＤにおける論理ブロックごとに、ページテーブル１２６に行が存在し、ページテーブル１２６は、ＬＢＡをハッシュテーブル１２８における行ＩＤに変換する。ハッシュテーブル１２８は、データが格納されたクラウドストレージにおける位置を含む。
【００５１】
上述のテーブル構造により、既存のＶＨＤにシンクローンを追加するのは、単に、親エントリーを指し示すＶＨＤテーブル１２４に行を追加するにすぎない。ＶＭが書き込み要求を発するまで、ストレージはシンクローンによって消費されない。
【００５２】
また、ハッシュを使用してページストレージにおけるエントリーを見つけることで、データストレージの重複排除が可能となるため、固有のページのみが格納される。これにより、類似のＯＳバージョンを動作させる複数のＶＨＤがアップロードされるときに比較的大量に使用されたストレージ量が削減される。例えば、Windows 10に基づいて２つのゴールデンイメージがある場合、重複するコンテンツとゼロページの双方を考慮すると、７５％もの削減となる。
【００５３】
図９を参照すると、（ａ）テーブル１２４〜１３０間の関係と、（ｂ）サーバ１１０がどのようにテーブル１２４〜１３０を用いて、クラウドストレージアクセス情報（例えば、トークン）８０２１、８０２２、…、又は８０２Ｎと、ＶＨＤの重複排除データが格納されたクラウドストレージ位置を指定するクラウドストレージ位置情報７０４１、７０４２、…、７０４Ｎ、７０６１、７０６２、…、７０６Ｎとを取得するのか、を理解するのに役立つ図が示されている。
【００５４】
最初、ＶＨＤ３２２は空である。よって、ＶＨＤ３２２に関連付けられたページテーブル１２６には行が存在しない。ＶＨＤ３２２からの読み出しを試みると、空のデータセットがコンピューティングデバイス１０２に返される。
【００５５】
その後、データがＶＨＤ３２２のブロックｂ０〜ｂＸに書き込まれる。これらの書き込み動作の結果、ＶＨＤテーブル１２４に行が追加され、ＶＨＤ３２２のバージョンがクラウドストレージ１２０に格納されたことが示される。ＶＨＤ３２２は、それに関連付けられた固有識別子ＰＶＨＤ ＩＤ５０４１を有する。このバージョンは、それに関連付けられた固有識別子ＶＨＤバージョンＩＤ５０２１を有する。ＶＨＤバージョンに対するメタデータ５０６１もまたＶＨＤテーブル１２４のこの行に格納される。
【００５６】
ページテーブル１２６もまた、ＶＨＤのこのバージョンに対して、行ＩＤ６０２１の行を有している。この行は、ＶＨＤバージョンＩＤ５０２１と、ＶＨＤ３２２のブロックｂ０〜ｂＸに書き込まれたデータに対するＬＢＡ６０４１とを含む。この行はさらに、ブロックｂ０〜ｂＸに対するＬＢＡからＨＴＲ ＩＤ６０６１によって識別されたハッシュテーブルエントリーへの変換を格納する。
【００５７】
ハッシュ値は、ブロックｂ０〜ｂＸに書き込まれたデータに対して算出される。ハッシュ値は、ハッシュテーブルエントリーＨＴＲ ＩＤ６０６１に関連付けてハッシュテーブル１２８に格納される。ハッシュテーブルエントリーは、さらに、ハッシュ値７０２１から、データブロックが格納されたクラウドストレージ１２０における位置を指定するクラウドストレージプールアドレス７０４１、７０６１への変換を格納する。クラウドストレージプールへのアクセスに必要な情報を格納するストレージオブジェクトテーブル１３０にエントリーが追加される。この情報は、クラウドストレージプールアドレス７０４１によって、ストレージオブジェクトテーブル１３０にインデックスされる。
【００５８】
最初の起動時、コンピューティングデバイス１０２からサーバ１１０に要求が送信される。当該要求を受けて、サーバ１１０は、ＶＨＤテーブル１２４を用いて、どのＶＨＤ及びそのバージョンからゲストＶＭが起動すべきであるのかを判定するための動作を実行する。いったん、ゲストＶＭ３０６１のゲストＯＳ３１０がロードされて動作すると、ゲストＶＭ３０６１のドライバ３２８は、サーバ１１０と通信して構成情報５０６１を読み出す。その後、９０２〜９０８に示すように、ＶＨＤバージョンＩＤ５０２１を用いて、ＬＢＡによってＶＨＤバージョンに対するＩ／Ｏ要求が検索される。
【００５９】
ゲストＶＭ３０６１のアプリケーション３０８によってＶＨＤ３２２に対して発したＩ／Ｏ要求ごとに、ドライバ３２８はサーバ１１０に要求を伝達する。当該要求は、所定のブロックのデータに対して、ＰＶＨＤ ＩＤ５０４１、ＶＨＤバージョンＩＤ５０２１及び／又はＶＨＤ ＬＢＡ６０４１を含む。９０２〜９１０に示すように、ＶＨＤバージョンＩＤ５０２１及びＬＢＡ６０４１を用いて、（ａ）所定のＬＢＡを有する論理ブロックが格納されたクラウドストレージのアドレス可能ディスクセクタを指定する情報と、（ｂ）クラウドストレージのアドレス可能ディスクセクタへのアクセスに必要なクラウドストレージアクセス情報と、が検索される。これに関し、サーバ１１０は、ＬＢＡ６０４１を、対応するデータが格納されたクラウドストレージの位置を含むハッシュテーブル１２８のエントリー６０６１へ変換する動作を実行する。ハッシュテーブルエントリー６０６１は、各ハッシュ値７０２１からクラウドストレージプールアドレス７０４１、７０６１への変換を格納する。そして、クラウドストレージプールアドレス７０４１を用いてＣＳＡＩ８０２１が検索される。
【００６０】
データベースルックアップの例を以下に示す。
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)
本解決手段は、この例の詳細に限定されない。
【００６１】
図１０を参照すると、クラウドベースのコンピューティングシステム（例えば、図１のシステム１００）を運用する例示的な方法１０００のフロー図が示されている。方法１０００は、１００２で開始され、ＶＨＤデータのブロックをクラウドストレージ（例えば、図１のクラウドストレージ１２０）のページに格納する１００４が続く。次の１００６において、クラウドサーバ（例えば、図１のクラウドサーバ１１０）は、リモートコンピューティングデバイス（例えば、図１及び図４のコンピューティングデバイス１０２）によってホストされたＶＭ（例えば、図３のＶＭ３０６１）のＶＨＤ（例えば、図３のＶＨＤ３２２）内の第１位置と関連付けられたＶＨＤデータへのアクセス要求を受信する。クラウドサーバは、当該要求を１００８で処理し、当該要求から少なくとも第１アドレス（例えば、図６のＶＨＤ ＬＢＡ６０４１）を抽出する。第１アドレスは、ＶＭのＶＨＤ内の第１位置を指定する。１０１０において、クラウドサーバは、第１アドレスを、ＶＨＤデータが格納されたクラウドストレージ内の第２位置を指定する第２アドレス（例えば、図７のＡＣＳＰ ＩＤ７０４１及びＡＣＳＰ ＯＶ７０６１）へ変換する動作を実行する。この変換は、第１アドレスを、データベース（例えば、図１のクラウドベースのリレーショナルデータベース１１２）のテーブル（例えば、図７のハッシュテーブル１２８）内のエントリーに対する行識別子（例えば、図６のＨＴＲ ＩＤ６０６１）へ変換し、行識別子を用いて、ＶＨＤデータを識別する固有の値（例えば、図７のＨＶ７０２１）から第２アドレス（例えば、図７のＡＣＳＰ ＩＤ７０４１及びＡＣＳＰ ＯＶ７０６１）への変換を格納するテーブルのエントリーへアクセスすることによって達成される。１０１２では、第２アドレス（例えば、図７のＡＣＳＰ ＩＤ７０４１）を用いて、クラウトストレージに格納されたＶＨＤデータへのアクセスを得るのに必要なクラウドストレージアクセス情報（例えば、図８のＣＳＡＩ８０２１）を取得する。そして、１０１４に示すように、第２アドレス及びクラウドストレージ情報をクラウドサーバからリモートコンピューティングデバイスへ伝達することで、クラウドストレージに格納されたＶＨＤデータへのアクセスを促す。１０１６では、リモートコンピューティングデバイスから送信された第２アドレス及びクラウドストレージアクセス情報をクラウドが受信したことに応答して、ＶＨＤデータがリモートコンピューティングデバイスに提供される。次いで、１０１８が実行され、方法１０００が終了するか、又は他の処理が行われる。
【００６２】
図１１を参照すると、例示的な読み出し処理１１００のフロー図が示されている。読み出し処理１１００は、１１０２で開始され、ＶＨＤからデータを読み出すための読み出し要求を受信する１１０４が続く。読み出し要求に応答して、１１０６でページテーブルを分析し、ＶＨＤ ＬＢＡ及びＶＨＤバージョンＩＤに関連付けられたＨＴＲ ＩＤを見つけ出す。ＨＴＲ ＩＤが見つかった場合［１１０８：ＹＥＳ］、１１１０が実行され、ＨＴＲ ＩＤを用いて、クラウドストレージプールアドレス及びクラウドストレージプールアクセス情報を取得する。その後、１１１８が実行され、方法１１００が終了するか、又は他の処理が行われる。一方、ＨＴＲ ＩＤが見つからなかった場合［１１０８：ＮＯ］、１１１２が実行され、ＶＨＤテーブルを分析して、対応するＰＶＨＤ ＩＤを取得する。そして、１１１４に示すように、親セットのないＶＨＤバージョンＩＤが見つかるまで、ＰＶＨＤ ＩＤ及びＶＨＤ ＬＢＡを再帰的に用いる。この場合、１１１６において全てゼロのデータが返される。次いで、方法１１００が終了するか、又は他の処理が行われる。
【００６３】
図１２を参照すると、例示的な書き込み処理１２００のフロー図が示されている。書き込み処理１２００は、１２０２で開始され、ＶＨＤへデータを書き込むための書き込み要求を受信する１２０４が続く。書き込み要求に応答して、１２０６では、当該データに対するハッシュ値を算出する。次に、１２０８において、ハッシュテーブル１２８を検索して、適合するハッシュ値を有する行を見つけ出す。適合するハッシュ値を有する行が見つかった場合［１２１０：ＹＥＳ］、既存のエントリーに対して適合するＶＨＤバージョンＩＤ及びＶＨＤ ＬＢＡの組を有するページテーブル１２６内の行に対するＨＴＲ識別子をアップデートする。次いで、１２１４が実行され、書き込み処理１１００が戻る（データが既にクラウドストレージに格納されているため、データの書き込みは不要である。）。適合するハッシュ値を有する行が見つからなかった場合［１２１０：ＮＯ］、１２１６〜１２２０が実行される。１２１６〜１２２０は、ストレージオブジェクトのうちの１つに新たなデータブロックを割り当て；クラウドストレージにデータを書き込み；当該ブロックを識別するためのハッシュ値、ＡＣＳＰ識別子及びＡＣＳＰオフセットを有する行をハッシュテーブル１２８に作成し；新たなＨＴＲ識別子の値に適合するＶＨＤバージョンＩＤ及びＶＨＤ ＬＢＡの組を有するページテーブル１２６内の行をアップデートする。次いで、１２２２が実行され、書き込み処理１２００が終了するか、又は他の処理が行われる。
【００６４】
本解決手段を１つ以上の実施に関して図示及び説明したが、本明細書及び添付図面を読んで理解すると、同等の変更及び変形例が当業者に想到されるであろう。さらに、本解決手段の特定の特徴は、いくつかの実施のうちの１つのみに関して開示されている可能性があるが、そのような特徴は、任意の又は特定の用途にとって望ましく有利であるように他の実施の１つ以上の他の特徴と組み合わせることができる。したがって、本解決手段の広さ及び範囲は、上記の実施形態のいずれによっても限定されるべきではない。むしろ、本解決手段の範囲は、添付の特許請求の範囲及びそれらの均等物に従って定義されるべきである。
【図１】
2020531969.tif 000003
【図２】
2020531969.tif 000004
【図３】
2020531969.tif 000005
【図４】
2020531969.tif 000006
【図５】
2020531969.tif 000007
【図６】
2020531969.tif 000008
【図７】
2020531969.tif 000009
【図８】
2020531969.tif 000010
【図９】
2020531969.tif 000011
【図１０】
2020531969.tif 000012
【図１１】
2020531969.tif 000013
【図１２】
2020531969.tif 000014
【国際調査報告】
2020531969.tif 000015
2020531969.tif 000016