JP2020531969A - シンクローンをサポートしないクラウド環境におけるシンプロビジョニング仮想デスクトップインフラストラクチャ仮想マシン - Google Patents

シンクローンをサポートしないクラウド環境におけるシンプロビジョニング仮想デスクトップインフラストラクチャ仮想マシン Download PDF

Info

Publication number
JP2020531969A
JP2020531969A JP2020508503A JP2020508503A JP2020531969A JP 2020531969 A JP2020531969 A JP 2020531969A JP 2020508503 A JP2020508503 A JP 2020508503A JP 2020508503 A JP2020508503 A JP 2020508503A JP 2020531969 A JP2020531969 A JP 2020531969A
Authority
JP
Japan
Prior art keywords
cloud
address
vhd
cloud storage
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2020508503A
Other languages
English (en)
Other versions
JP7026206B2 (ja
Inventor
バボヴァル ジョン
バボヴァル ジョン
ゴーツ トーマス
ゴーツ トーマス
ピー. グラハム サイモン
ピー. グラハム サイモン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Citrix Systems Inc
Original Assignee
Citrix Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Citrix Systems Inc filed Critical Citrix Systems Inc
Publication of JP2020531969A publication Critical patent/JP2020531969A/ja
Application granted granted Critical
Publication of JP7026206B2 publication Critical patent/JP7026206B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

クラウドベースのコンピューティングシステムを運用するシステム及び方法。当該方法は、リモートコンピューティングデバイスによってホストされた仮想マシン(VM)の仮想ハードディスク(VHD)内の第1位置に関連付けられたVHDデータにアクセスするための要求を、クラウドサーバにより受信し、クラウドサーバにより、当該要求から第1位置を指定する少なくとも第1アドレスを抽出し、クラウドサーバにより、第1アドレスを、VHDデータが格納されたクラウドストレージ内の第2位置を指定する第2アドレスに変換し、クラウドサーバからリモートコンピューティングデバイスへ第2アドレスを伝達して、クラウドストレージに格納されたVHDデータへのアクセスを促す。【選択図】図1

Description

本開示は、概してコンピューティングシステムに関する。より詳細には、本開示は、シンクローン(thin clone)をサポートしないクラウド環境におけるシンプロビジョニング仮想デスクトップインフラストラクチャ(VDI)仮想マシン(VM)を提供するためのシステム及び方法の実施に関する。
当該技術分野では多くのクラウド環境が知られている。そのようなクラウド環境の一つにMicrosoft Azureがある。クラウド環境(例えば、Microsoft Azure)におけるストレージプロビジョニングには多くの難点がある。例えば、クラウド環境において、ダイナミック・ディスクは必ずしもサポートされているわけではない。これは、仮想ディスクの全ブロック(未使用空間も含む。)をアップロードする必要があることを意味する。仮想ディスクチェーンもまた、全てのクラウド環境でサポートされているとは限らず、これは、既存のイメージをアップデートすることができないことを意味する。代わりに、既存のイメージをアップデートするには、全く新しいディスクを作成する必要がある。さらに、VMは、起動用の既存のディスクでしか起動することができないため、クラウド環境下ではゴールデンイメージを作成することができない。同一のディスクで複数のVMを起動させるためには、起動ディスクのクローン、すなわち、起動ディスクの完全なコピーを作成する。これにより、多大なる費用(起動ディスクのN枚分の完全なコピーに対する料金を顧客に請求することになるため。)と時間(ディスクのクローニングには比較的長い時間がかかるため。)を要する。
本開示は、クラウドベースのコンピューティングシステムを運用するシステム及び方法の実施に関する。当該方法は、クラウドストレージのページに仮想ハードディスク(VHD)データのブロックを格納し、リモートコンピューティングデバイスによってホストされた仮想マシン(VM)のVHD内の第1位置に関連付けられたVHDデータにアクセスするための要求を、クラウドサーバにより受信し、クラウドサーバにより、当該要求から第1位置を指定する少なくとも第1アドレスを抽出し、クラウドサーバにより、第1アドレスを、VHDデータが格納されたクラウドストレージ内の第2位置を指定する第2アドレスに変換し、第2アドレスの少なくとも一部を用いて、クラウドストレージに格納されたVHDデータへのアクセスを得るのに必要なクラウドストレージアクセス情報を取得し、クラウドサーバからリモートコンピューティングデバイスへ第2アドレス及び/又はクラウドストレージアクセス情報を伝達して、クラウドストレージに格納されたVHDデータへのアクセスを促し、及び/又は、リモートコンピューティングデバイスから送信された第2アドレス及びクラウドストレージアクセス情報をクラウドが受信したことに応答して、VHDデータをリモートコンピューティングデバイスに提供する。
いくつかのシナリオにおいて、第1アドレスは論理ブロックアドレス(LBA)を含む。第2アドレスは、アドレス可能クラウドストレージプール識別子及びアドレス可能クラウドストレージプールオフセット値を含む。上記変換は、第1アドレスを、データベース(例えば、リレーショナルデータベース)のテーブル内のエントリーに対する行識別子に変換し、行識別子を用いて、VHDデータを識別する固有の値(例えば、ハッシュ値)から第2アドレスへの変換を格納するテーブルのエントリーにアクセスすることを含む。
そのようなシナリオ又は他のシナリオでは、上記方法は、クラウドサーバにより、VHDへデータを書き込むための書き込み要求を受信し、書き込み要求に応答して、クラウドサーバにより、データに対する第1ハッシュ値を算出し、ハッシュテーブルを検索して、第1ハッシュ値に適合する第2ハッシュ値を有する行を見つけ出すこと、をさらに含む。第1ハッシュ値に適合する第2ハッシュ値を有する行が見つかった場合、上記方法は、既存のエントリーに対して適合するVHDバージョン識別子及びVHD論理ブロックアドレスを有するページテーブル内の行に対するハッシュテーブル行識別子をアップデートし、戻ること、を含む。第1ハッシュ値に適合する第2ハッシュ値を有する行が見つからなかった場合、上記方法は、複数のストレージオブジェクトのうちの1つに新たなデータブロックを割り当て、クラウドストレージにデータを書き込み、ハッシュ値、アドレス可能クラウドストレージプール(ACSP)識別子及びACSPオフセットを有する行をハッシュテーブルに作成し、新たなハッシュテーブル行(HTR)識別子の値に適合するVHDバージョン識別子及びVHD論理ブロックアドレス(LBA)を有するページテーブル内の行をアップデートすること、をさらに含む。
以下の図面を参照して本解決手段を説明するが、図面全体を通して、同様の参照符号は同様の特徴を表す。
図1は、例示的なシステムの図である。
図2は、図1に示すコンピューティングデバイスの例示的なアーキテクチャの図を示す。 図3は、図1に示すコンピューティングデバイスの例示的なアーキテクチャの図を示す。
図4は、図1のシステムのメッセージフローである。
図5は、例示的な仮想ハードディスク(VHD)テーブルの図である。
図6は、例示的なページテーブルの図である。
図7は、例示的なハッシュテーブルの図である。
図8は、例示的なストレージオブジェクトテーブルの図である。
図9は、図5〜図8のテーブル間の関係を理解するのに有用な図である。
図10は、クラウドベースのコンピューティングシステムを運用する例示的な方法のフロー図である。
図11は、例示的な読み出し処理のフロー図である。
図12は、例示的な書き込み処理のフロー図である。
本明細書で一般的に説明され、添付図面に示された実施形態の構成要素は、多種多様な異なる構成で配置及び設計され得ることが容易に理解されよう。したがって、図示されている様々な実施形態の以下のより詳細な説明は、本開示の範囲を限定するものではなく、様々な実施形態の単なる代表例である。実施形態の様々な態様が図面に提示されているが、特に明示しない限り、図面は必ずしも縮尺通りに描かれていない。
本解決手段は、その精神又は本質的な特徴から逸脱することなく、他の特定の形態で具現化することができる。説明された実施形態は、あらゆる点で単なる例示にすぎず、限定的に解釈してはならない。したがって、本解決手段の範囲は、添付の特許請求の範囲によって示されるのであって、この詳細な説明には、なんら拘束されない。特許請求の範囲の均等物の意味及び範囲内における変更はすべて本解決手段の範囲内に包含されるべきである。
本明細書全体を通して、特徴、利点、又は類似の用語への言及は、本解決手段で実現され得る特徴及び利点のすべてが本解決手段の任意の単一の実施形態であるべきであることを意味しない。むしろ、特徴及び利点に言及する用語は、実施形態に関連して説明される特定の特徴、利点、又は特性が本解決手段の少なくとも1つの実施形態に含まれることを意味すると理解される。したがって、本明細書全体にわたる特徴及び利点、ならびに類似の言語の議論は、必ずしもそうではないが、同じ実施形態を指す場合がある。
さらに、本解決手段の記載された特徴、利点、及び特性は、1つ以上の実施形態において任意の適切な方法で組み合わせることができる。当業者は、本明細書の説明に照らして、特定の実施形態の1つ以上の特定の特徴又は利点なしで本解決手段が実施可能であることを認識するであろう。他の例では、本解決手段のすべての実施形態で示されていない特定の実施形態において、追加の特徴及び利点が認識される場合がある。
本明細書全体を通して、「一実施形態」(one embodiment)、「実施形態」(an embodiment)、又は同様の文言への言及は、示された実施形態に関連して説明された特定の特徴、構造、又は特性が本解決手段の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書全体を通して、「一実施形態では」(in one embodiment)、「実施形態では」(in an embodiment)という文言、及び同様の文言は、必ずしもそうではないが、すべて同じ実施形態を指す場合がある。
本文書で用いられている単数形「a」、「an」、及び「the」は、文脈上特に明記されていない限り、複数形の言及を含む。別段に定義されない限り、本明細書で用いられているすべての技術用語及び科学用語は、当業者によって一般に理解されるのと同じ意味を有する。本文書で用いられている「備える/有する」(comprising)という用語は「含むが、それに限定されない」(including, but not limited to)ことを意味する。
本解決手段は、シンクローンがサポートされていないクラウド環境下で、同一の起動ディスクを共有する多数のVMをセットアップする手段を提供する。これに関し、本解決手段は、クラウドストレージと、クラウドベースのリレーショナルデータベースとの組み合わせを用いる。ここで「クラウドストレージ」とは、インターネット又はクラウドからアクセスされたリモートサーバ上にデータが格納されたクラウドコンピューティングモデルを指す。クラウドストレージは、可視化技術の上に構築されたストレージサーバ上のクラウドストレージサービスプロバイダによって、メンテナンスされ、作動され、管理される。クラウドストレージは、全ての仮想ディスクバージョンのデータを保持するために使用される。クラウドベースのリレーショナルデータベースは、Structured Query Language(SQL)を用いて実現され得る。SQLは、リレーショナルデータベース管理及びデータ操作のための標準的なコンピュータ言語である。SQLは、データのクエリー、挿入、アップデート、及び修正を行うために用いられる。クラウドベースのリレーショナルデータベースは、各仮想ディスクバージョンを記述するメタデータを保持するために使用される。
本解決手段は、従来の解決手段の様々な欠点を克服するものである。従来のシステムでは、多くのクラウド環境がディスクのシンクローンをサポートしていないため、完全なディスククローンが求められるが、VDIを使用した同一のVMを大量に作成するとき、莫大な費用と時間がかかってしまう。本解決手段は、クラウドストレージとクラウドデータベースとの組み合わせを用いて、オペレーティングシステム(OS)(例えば、Windows又はLinux(登録商標) OS)環境におけるストレージアウェアドライバ(storage aware driver)とともに、シンクローンとストレージ重複排除とを実現する。さらに、本解決手段は、複数の仮想ディスクを複数のクラウドストレージ位置にわたって設けることを可能とする。例えば、いくつかのクラウドコンピューティングサービス(例えば、Microsoft Azure)において、ページ・バイナリ・ラージ・オブジェクト(BLOB)の最大サイズは1TBである。本解決手段により、多くの仮想ディスクが、複数のページBLOBにわたって広がるように格納され得る。ここで「BLOB」とは、データベース管理システムに単一のエンティティとして格納されたバイナリデータの集まりを指す。当該データとして、画像、音声、映像その他のメディアコンテンツを挙げることができるが、これらに限定されない。
本解決手段を多方面の応用に活用することができる。例えば、本解決手段を、クラウドにおけるプロビジョニングスキーム(例えば、Citrix Machine Creation Service(MCS)及びCitrix Provisioning Service(PVS)プロビジョニングスキーム)を改良するために活用することができる。MCSについて、本解決手段は、ストレージプロビジョニングの問題を解決する。PVSにおいて、本解決手段は、ネットワークストリーミングの問題を解決する(ディスクはもはやストリーミング配信されないため。)一方で、PVSによってなされる仮想ディスクの管理が残る。これは、PVSのユーザに対して大いに透過的になるように実施可能であろう。
図1を参照すると、例示的なシステム100の図が示されている。システム100は、概して、シンクローンをサポートしないシンプロビジョニングVDI VMを提供するように構成される。これに関し、システム100は、ネットワーク104(例えば、インターネット)を介してクラウド120に通信接続されたコンピューティングデバイス102を備える。クライアントデバイス102は、仮想化環境をホストし、クラウドストレージ106に対するデータの読み書きを行う。クラウドストレージ106は、複数のリモートサーバ108、108、…、108を備える。リモートサーバ108、108、…、108の各々は、オブジェクトストア114を提供する。オブジェクトストア114は、複数のアドレス可能ディスクセクタ118、118、…、118を有しており、ランダムアクセス用に最適化されている。ディスクセクタ118、118、…、118を用いて、複数のVHDの重複排除データ(de-duplicated data)122、122,…、122を格納する。重複排除データは、クラウドストレージに一度だけ格納された同一ブロックのデータを有している。これにより、繰り返しデータの複製が排除される。本明細書では、重複排除データを生成する処理を、重複排除(de-duplication)又はデータ重複排除(data de-duplication)と称する。いくつかのシナリオにおいて、VHDブロックのデータは、クラウドストレージのページに格納される。
1つ以上のオブジェクトストア114のディスクセクタを用いて、ストレージプールを規定することができる。したがって、ここでの「ストレージプール」とは、1つ以上のストレージリソースから集められた容量を指す。クラウドストレージ106内に1つ以上のストレージプールを規定することができる。これらのストレージプールは、同一又は異なるサイズを有することができる。ストレージプールによって、多くのVHDを複数のクラウドストレージ位置にわたって設けることを可能とする。
クラウド120は、さらに、サーバ110と、クラウドストレージの最上位にストレージ仮想化層を提供するクラウドベースのリレーショナルデータベース112と、を備える。これらの構成要素110及び112は、シンクローンをサポートしないクラウド環境下で同一のベースディスクを共有する多数のVMのプロビジョニングを促進するだけでなく、許可されたコンピューティングデバイスのみがクラウドストレージ106にアクセスすることを保証する手段を提供する。これに関し、サーバ110にアクセス可能なクラウドベースのリレーショナルデータベース112には、複数のテーブル124〜130が格納されている。これらのテーブルは、VHDテーブル124と、ページテーブル126と、ハッシュテーブル128と、ストレージオブジェクトテーブル130と、を有する。これらのテーブルを用いて、VHDの重複排除データがクラウドストレージ106内のどこに格納されているのかを追跡する。これらのテーブルの項目については、以下でより詳細に説明する。
いくつかのシナリオにおいて、クラウドベースのリレーショナルデータベース112は、Structured Query Language(SQL)データベースを備える。SQLデータベースは、当該技術分野で周知であるため、ここでの説明は省略する。これに関し、本解決手段は限定されず、ここでは、他の種類のリレーショナルデータベースも用いることができる。
図2を参照すると、図1のコンピューティングデバイス102の例示的なアーキテクチャが示されている。図1のサーバ108、108、…、108及び/又は110は、コンピューティングデバイス102と同一又は類似である。したがって、コンピューティングデバイス102の説明は、図1のサーバ108、108、…、108及び/又は110を理解するのには十分である。
コンピューティングデバイス102の構成要素は、図2に示された構成要素よりも多くても少なくてもよい。しかしながら、図示されている構成要素は、本解決手段を実施する例示的な実施形態を開示するのに十分である。図2のハードウェアアーキテクチャは、シンクローンをサポートせずにシンプロビジョニングVDI VMを提供するように構成された代表的なコンピューティングデバイスの一実施形態を表す。したがって、図2のコンピューティングデバイス102は、本明細書に記載された各方法の少なくとも一部を実施する。
コンピューティングデバイス102の一部又は全ての構成要素は、ハードウェア、ソフトウェア、及び/又はハードウェアとソフトウェアとの組み合わせとして実現することができる。ハードウェアは1つ以上の電子回路を含むが、これに限定されない。電子回路として、受動素子(例えば、抵抗器及びコンデンサ)及び/又は能動素子(例えば、増幅器及び/又はマイクロプロセッサ)を挙げることができるが、これらに限定されない。受動素子及び/又は能動素子は、本明細書に記載された方法、手順、又は機能のうちの1つ以上を実行するように構成され、配置され、及び/又はプログラムされ得る。
図2に示すように、コンピューティングデバイス200は、ユーザインターフェイス202と、CPU206と、システムバス210と、システムバス210を介してコンピューティングデバイス102の他の部分に接続されてアクセス可能なメモリ212と、システムバス210に接続されたハードウェアエンティティ214とを備える。ユーザインターフェイスには、入力デバイス及び出力デバイスを設けることができ、コンピューティングデバイス102の動作を制御するためのユーザソフトウェア相互作用を促進する。入力デバイスとして、物理及び/又はタッチキーボード250が挙げられるが、これらに限定されない。出力デバイスとして、スピーカー252、ディスプレイ254、及び/又は発光ダイオード256が挙げられるが、これらに限定されない。
ハードウェアエンティティ214の少なくとも一部は、メモリ212へのアクセス及び使用を伴うアクションを実行する。メモリ212として、Random Access Memory(RAM)、ディスクドライバ及び/又はCompact Disc Read Only Memory(CD−ROM)が採用され得る。メモリ212は、システムキャッシュ226を備える。メモリ212は、図1に示すように、仮想マシンモニタ(VMM)260、ホストオペレーティングシステム(OS)若しくはファームウェア262、アプリケーション224、及び/又は命令220を格納することができる。
ハードウェアエンティティ214は、コンピュータ読み取り可能な記憶媒体218を有するディスクドライブユニット216を備えることができる。コンピュータ読み取り可能な記憶媒体218には、本明細書に記載された方法、手順、又は機能のうちの1つ以上を実行する1組以上の命令220(例えば、ソフトウェアコード)が格納されている。命令220は、コンピューティングデバイス102による実行中に、メモリ212内及び/又はCPU206内に完全に又は少なくとも部分的に常駐することもできる。メモリ212及びCPU206はまた、機械読み取り可能な媒体を構成することができる。ここで「機械読み取り可能な媒体」とは、1組以上の命令220を格納する単一の媒体又は複数の媒体(例えば、集中型若しくは分散型データベース、及び/又は関連するキャッシュ及びサーバ)を指す。また、「機械読み取り可能な媒体」は、コンピューティングデバイス102による実行のための命令120の組を格納、符号化、又は搬送することができ、且つ、コンピューティングデバイス200に本開示の方法のいずれか1つ以上を実行させる任意の媒体も指している。
いくつかのシナリオにおいて、ハードウェアエンティティ214は、シンクローンをサポートせずにシンプロビジョニングVDI VMを促進するようにプログラムされた電子回路(例えば、プロセッサ)を備える。これに関して、当該電子回路は、コンピューティングデバイス102にインストールされたソフトウェアアプリケーション224にアクセスして実行することができることを理解されたい。1つのソフトウェアアプリケーション224は、概して、シンクローンをサポートせずにシンプロビジョニングVDI VMを促進するために作動する。ソフトウェアアプリケーション224の機能は、説明が進むにつれて明らかになるだろう。
図3を参照すると、コンピューティングデバイス102によってホストされた仮想化環境の基本概念の図が示されている。図3に示すように、コンピューティングデバイス102は、1つ以上のアプリケーション224のハードウェアリソース320へのアクセスを管理する汎用ホストOS又はファームウェア262を動作させる。ハードウェアリソース320として、図2に示すハードウェアデバイス202〜256が挙げられるが、これらに限定されない。
VMM260(又はハイパーバイザ)は、ホストコンピューティングデバイス102上で動作し、物理システムのハードウェアをエミュレートする。ホストコンピューティングデバイスは、追加のOSインスタンスの並行実行を可能とすべく、VMM260を実行する。ホストOS又はファームウェア262から見ると、VMM260はアプリケーションである。VMM260は、概して、VM306、306、…、306を作成し、物理的なホストコンピューティングデバイス102の最上位の仮想環境の動作を管理するソフトウェアである。これに関し、VMM260は、CPU206への命令を調整する。VMM260は、ゲストが発した全てのCPU命令を有効にし、追加の権限を要する任意の実行コードを管理する。追加のOSインスタンスは、ゲストVM306、306、…、306上で動作する。
各ゲストVMは、ホストOS262及び他のゲストVMから分離された環境下でゲストOS310(例えば、Windows 10)を実行するソフトウェアコンピュータである。ゲストOS310は、自身の一連のアプリケーション308をホストし、VHD322にインストールされている。VHD322は、ホストコンピューティングデバイス102にアクセス可能なファイルシステムに格納されたファイルとして実現される。ゲストOS310から見ると、VHD322を物理的な記憶媒体(例えば、図2のメモリ212)と区別することができない。VHD322は、物理的なハードディスクの完全なコンテンツ及び構造を含むシステムイメージを格納している。ディスクイメージを含む複数のVHDをVMに設けることができる。ホストコンピューティングデバイス102は、図2の物理的なメモリ212など、利用可能なハードウェアリソースへのVMのアクセスを制御する。
上述のように、本解決手段は、シンクローンをサポートしないクラウド環境下で、(多くの人が自身のコンピュータを接続して使用するために)同一の起動ディスクを共有する多数のVMをセットアップする手段を提供する。これに関し、VM306、306、…、306の各々は、ドライバ328を備えている。ドライバ328は、ゲストOS310から、VHD322に格納されたデータへのアクセス要求を受信する。当該要求を受けて、ドライバ328は、クラウドストレージ106に格納された当該VHDのデータへのアクセスを得ることを目的として、クラウド120と通信するための動作を行う。クラウドストレージへのアクセスを得る処理については、図4と関連付けて以下でより詳細に述べる。
図4を参照すると、クラウドストレージ106にアクセスするためのメッセージフロー図が示されている。402に示すように、動作中に、ゲストVM306のドライバ328は、VHD322に格納されたデータへのアクセス要求を、ネットワーク104を介してサーバ110に伝達する。サーバ110では、404における動作が行われ、ゲストVM306が、クラウドベースのリレーショナルデータベース112内の情報にアクセスする権限を有することが確認される。アクセス権限があれば、406に示すように、サーバ110は、クラウドベースのリレーショナルデータベース112に格納されたテーブル124〜130にアクセスし、これらのテーブルのコンテンツを用いて、クラウドストレージアクセス情報(例えば、トークン)と、VHD322の重複排除データが格納されたクラウドストレージ位置を指定するクラウドストレージ位置情報と、を取得する。次に、408において、サーバ110は、クラウドストレージアクセス情報とクラウドストレージ位置情報とを、ネットワーク104を介してゲストVM306に伝達する。この情報は、410に示すように、コンピューティングデバイス102のシステムキャッシュ226に格納され得る。次いで、412において、ゲストVM306のドライバ328は、クラウドストレージアクセス情報と要求とを、ネットワーク104を介してクラウドストレージ106に伝達する。この要求は、クラウドストレージ位置情報で指定されたクラウドストレージ位置に格納されたデータにアクセスするためのものである。要求に応答して、414に示すように、クラウドストレージ106からデータが読み出され、ゲストVM306のドライバ328に伝達される。
次に、図5〜図8を参照して、サーバ110の動作について詳細に説明する。上述のように、サーバ110は、クラウドベースのリレーショナルデータベース112に格納されたテーブル124〜130にアクセスし、テーブル124〜130を用いて、クラウドストレージアクセス情報(例えば、トークン)と、VHDの重複排除データが格納されたクラウドストレージ位置を指定するクラウドストレージ位置情報と、を取得する。テーブル124〜130は、VHDテーブル124と、ページテーブル126と、ハッシュテーブル128と、ストレージオブジェクトテーブル130と、を有する。
VHDテーブル124は、図5に示すように、複数の行及び列を有する。各行は、所定のVHD(例えば、図3のVHD322)に関連付けられた以下の3つの値を有する:所定のVHDのバージョンを識別するVHDバージョン識別子(ID)502、502、…、又は502;VHDバージョンの親VHDを識別する親VHD(PVHD)ID504、504、…、又は504;及び、所定のVHDのVHDメタデータ506、506、…、又は506。ここで「バージョン」とは、VHDの一時的な状態を指す。これに関し、VHDの状態は時間とともに変化することを理解されたい。したがって、複数の時刻でのVHDのコンテンツを規定する複数組の重複排除データがクラウドストレージに格納されている。各組のVHDの重複排除データはVHDバージョンを構成する。
ページテーブル126は、図6に示すように、複数の行及び列を有する。ページテーブルには、VHDバージョンの論理ブロックごとに行が存在する。この行は、論理ブロックのLBAを、データが格納されたクラウドストレージでの位置を含むハッシュテーブル128における行に変換する手段を提供する。各行は、VHDテーブル124で識別された所定のVHDバージョンに関連付けられた以下の4つの値を有する:ページテーブル126の特定の行を識別する行ID602、602、…、又は602;VHDのバージョンを識別するVHDバージョンID502、502、…、又は502;VHDバージョンの少なくとも1ブロックのデータが格納されたVHDの少なくとも1つのセクタを識別するVHD論理ブロックアドレス(LBA)604、604、…、又は604;及び、VHDバージョンの少なくとも1ブロックのデータに関連付けられた更なる情報が格納されたハッシュテーブルにおける行を識別するハッシュテーブル行(HTR)ID606、606、…、又は606
HTR ID606、606、…、又は606は、ページテーブル126とハッシュテーブル128との間の関係を示している。説明が進むにつれてより明らかになるように、これら2つのテーブルは、VHDバージョンのLBAのクラウドストレージプールアドレスへの変換を容易にする。
ハッシュテーブル128は、図7に示すように、複数の行及び列を有する。各行は、ページテーブル126で識別された所定のハッシュテーブル行IDに関連付けられた以下の4つの値を有する:HTR ID 606、606、…、又は606;ハッシュ値(HV)702、702、…、又は702;クラウドストレージのストレージプールを識別するアドレス可能クラウドストレージプール(ACSP)ID704、704、…、又は704;及び、ストレージプールにおけるブロック位置を示すACSPオフセット値(OV)706、706、…、又は706。ACSP ID及びACSP OVは、一括して、HV702を有する重複排除データが格納されたクラウドストレージ位置にクラウドストレージプールアドレスを提供する。
いくつかのシナリオにおいて、HVは、VHDのデータに基づき、ハッシュアルゴリズムを用いて算出される。ハッシュアルゴリズムは、当該技術分野において周知であるため、ここでの説明は省略する。ここでは、任意の知られた又は知られ得るハッシュアルゴリズムを用いることができるが、特に限定されない。例えば、SHA−256暗号学的ハッシュアルゴリズムを用いて、VHDのデータコンテンツから、元のデータコンテンツを表すハッシュ値を生成する。本解決手段はハッシュアルゴリズムに限定されない。ここでは、他のアルゴリズムを用いて、ディスクブロックコンテンツから固有の値を算出してもよい。これらの他のアルゴリズムは、暗号学的ハッシュ関数として同一の要件をほとんど満たさなければならない。すなわち、決定論的であることから、同一のメッセージが常に同一のハッシュをもたらし、任意の与えられたメッセージに対して即座にハッシュ値を算出し、且つ、同一のハッシュ値を有する2つの異なるメッセージを見つけるのは不可能である。
ストレージオブジェクトテーブル130は、図8に示すように、複数の行及び列を有する。各行は少なくとも2つの値を有する:ACSP ID704、704、…、又は704;及び、クラウドストレージアクセス情報(CSAI)802、802、…、又は802。CSAIとして、Universal Resource Link(URL)、トークン、及び/又はキーが挙げられるが、これらに限定されない。
とりわけ、これらのテーブル124〜130は、クラウドストレージの最上位にストレージ仮想化層を提供する。ストレージ仮想化層は次のように実現される。仮想ディスクブロックがクラウドストレージのページに格納される。ハッシュテーブルを用いて、どのVHDブロックがクラウドストレージに格納されているのかを追跡する。ブロックごとに、データのハッシュが算出される。ハッシュテーブルは、クラウドストレージにおけるハッシュからオフセットへの変換を格納する。各VHDは、親VHDバージョンへの参照を有するVHDテーブル124に記録される。VHDにおける論理ブロックごとに、ページテーブル126に行が存在し、ページテーブル126は、LBAをハッシュテーブル128における行IDに変換する。ハッシュテーブル128は、データが格納されたクラウドストレージにおける位置を含む。
上述のテーブル構造により、既存のVHDにシンクローンを追加するのは、単に、親エントリーを指し示すVHDテーブル124に行を追加するにすぎない。VMが書き込み要求を発するまで、ストレージはシンクローンによって消費されない。
また、ハッシュを使用してページストレージにおけるエントリーを見つけることで、データストレージの重複排除が可能となるため、固有のページのみが格納される。これにより、類似のOSバージョンを動作させる複数のVHDがアップロードされるときに比較的大量に使用されたストレージ量が削減される。例えば、Windows 10に基づいて2つのゴールデンイメージがある場合、重複するコンテンツとゼロページの双方を考慮すると、75%もの削減となる。
図9を参照すると、(a)テーブル124〜130間の関係と、(b)サーバ110がどのようにテーブル124〜130を用いて、クラウドストレージアクセス情報(例えば、トークン)802、802、…、又は802と、VHDの重複排除データが格納されたクラウドストレージ位置を指定するクラウドストレージ位置情報704、704、…、704、706、706、…、706とを取得するのか、を理解するのに役立つ図が示されている。
最初、VHD322は空である。よって、VHD322に関連付けられたページテーブル126には行が存在しない。VHD322からの読み出しを試みると、空のデータセットがコンピューティングデバイス102に返される。
その後、データがVHD322のブロックb〜bに書き込まれる。これらの書き込み動作の結果、VHDテーブル124に行が追加され、VHD322のバージョンがクラウドストレージ120に格納されたことが示される。VHD322は、それに関連付けられた固有識別子PVHD ID504を有する。このバージョンは、それに関連付けられた固有識別子VHDバージョンID502を有する。VHDバージョンに対するメタデータ506もまたVHDテーブル124のこの行に格納される。
ページテーブル126もまた、VHDのこのバージョンに対して、行ID602の行を有している。この行は、VHDバージョンID502と、VHD322のブロックb〜bに書き込まれたデータに対するLBA604とを含む。この行はさらに、ブロックb〜bに対するLBAからHTR ID606によって識別されたハッシュテーブルエントリーへの変換を格納する。
ハッシュ値は、ブロックb〜bに書き込まれたデータに対して算出される。ハッシュ値は、ハッシュテーブルエントリーHTR ID606に関連付けてハッシュテーブル128に格納される。ハッシュテーブルエントリーは、さらに、ハッシュ値702から、データブロックが格納されたクラウドストレージ120における位置を指定するクラウドストレージプールアドレス704、706への変換を格納する。クラウドストレージプールへのアクセスに必要な情報を格納するストレージオブジェクトテーブル130にエントリーが追加される。この情報は、クラウドストレージプールアドレス704によって、ストレージオブジェクトテーブル130にインデックスされる。
最初の起動時、コンピューティングデバイス102からサーバ110に要求が送信される。当該要求を受けて、サーバ110は、VHDテーブル124を用いて、どのVHD及びそのバージョンからゲストVMが起動すべきであるのかを判定するための動作を実行する。いったん、ゲストVM306のゲストOS310がロードされて動作すると、ゲストVM306のドライバ328は、サーバ110と通信して構成情報506を読み出す。その後、902〜908に示すように、VHDバージョンID502を用いて、LBAによってVHDバージョンに対するI/O要求が検索される。
ゲストVM306のアプリケーション308によってVHD322に対して発したI/O要求ごとに、ドライバ328はサーバ110に要求を伝達する。当該要求は、所定のブロックのデータに対して、PVHD ID5041、VHDバージョンID502及び/又はVHD LBA604を含む。902〜910に示すように、VHDバージョンID502及びLBA604を用いて、(a)所定のLBAを有する論理ブロックが格納されたクラウドストレージのアドレス可能ディスクセクタを指定する情報と、(b)クラウドストレージのアドレス可能ディスクセクタへのアクセスに必要なクラウドストレージアクセス情報と、が検索される。これに関し、サーバ110は、LBA604を、対応するデータが格納されたクラウドストレージの位置を含むハッシュテーブル128のエントリー606へ変換する動作を実行する。ハッシュテーブルエントリー606は、各ハッシュ値702からクラウドストレージプールアドレス704、706への変換を格納する。そして、クラウドストレージプールアドレス704を用いてCSAI802が検索される。
データベースルックアップの例を以下に示す。
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)
本解決手段は、この例の詳細に限定されない。
図10を参照すると、クラウドベースのコンピューティングシステム(例えば、図1のシステム100)を運用する例示的な方法1000のフロー図が示されている。方法1000は、1002で開始され、VHDデータのブロックをクラウドストレージ(例えば、図1のクラウドストレージ120)のページに格納する1004が続く。次の1006において、クラウドサーバ(例えば、図1のクラウドサーバ110)は、リモートコンピューティングデバイス(例えば、図1及び図4のコンピューティングデバイス102)によってホストされたVM(例えば、図3のVM306)のVHD(例えば、図3のVHD322)内の第1位置と関連付けられたVHDデータへのアクセス要求を受信する。クラウドサーバは、当該要求を1008で処理し、当該要求から少なくとも第1アドレス(例えば、図6のVHD LBA604)を抽出する。第1アドレスは、VMのVHD内の第1位置を指定する。1010において、クラウドサーバは、第1アドレスを、VHDデータが格納されたクラウドストレージ内の第2位置を指定する第2アドレス(例えば、図7のACSP ID704及びACSP OV706)へ変換する動作を実行する。この変換は、第1アドレスを、データベース(例えば、図1のクラウドベースのリレーショナルデータベース112)のテーブル(例えば、図7のハッシュテーブル128)内のエントリーに対する行識別子(例えば、図6のHTR ID606)へ変換し、行識別子を用いて、VHDデータを識別する固有の値(例えば、図7のHV702)から第2アドレス(例えば、図7のACSP ID704及びACSP OV706)への変換を格納するテーブルのエントリーへアクセスすることによって達成される。1012では、第2アドレス(例えば、図7のACSP ID704)を用いて、クラウトストレージに格納されたVHDデータへのアクセスを得るのに必要なクラウドストレージアクセス情報(例えば、図8のCSAI802)を取得する。そして、1014に示すように、第2アドレス及びクラウドストレージ情報をクラウドサーバからリモートコンピューティングデバイスへ伝達することで、クラウドストレージに格納されたVHDデータへのアクセスを促す。1016では、リモートコンピューティングデバイスから送信された第2アドレス及びクラウドストレージアクセス情報をクラウドが受信したことに応答して、VHDデータがリモートコンピューティングデバイスに提供される。次いで、1018が実行され、方法1000が終了するか、又は他の処理が行われる。
図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が終了するか、又は他の処理が行われる。
図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が終了するか、又は他の処理が行われる。
本解決手段を1つ以上の実施に関して図示及び説明したが、本明細書及び添付図面を読んで理解すると、同等の変更及び変形例が当業者に想到されるであろう。さらに、本解決手段の特定の特徴は、いくつかの実施のうちの1つのみに関して開示されている可能性があるが、そのような特徴は、任意の又は特定の用途にとって望ましく有利であるように他の実施の1つ以上の他の特徴と組み合わせることができる。したがって、本解決手段の広さ及び範囲は、上記の実施形態のいずれによっても限定されるべきではない。むしろ、本解決手段の範囲は、添付の特許請求の範囲及びそれらの均等物に従って定義されるべきである。

Claims (23)

  1. クラウドベースのコンピューティングシステムを運用する方法であって、
    リモートコンピューティングデバイスによってホストされた仮想マシン(VM)の仮想ハードディスク(VHD)内の第1位置に関連付けられたVHDデータにアクセスするための要求を、クラウドサーバにより受信し、
    前記クラウドサーバにより、前記要求から前記第1位置を指定する少なくとも第1アドレスを抽出し、
    前記クラウドサーバにより、前記第1アドレスを、前記VHDデータが格納されたクラウドストレージ内の第2位置を指定する第2アドレスに変換し、
    前記クラウドサーバから前記リモートコンピューティングデバイスへ前記第2アドレスを伝達して、前記クラウドストレージに格納された前記VHDデータへのアクセスを促す、方法。
  2. 前記クラウドストレージのページに前記VHDデータのブロックを格納することをさらに含む、請求項1に記載の方法。
  3. 前記第1アドレスは論理ブロックアドレス(LBA)を含む、請求項1に記載の方法。
  4. 前記第2アドレスは、アドレス可能クラウドストレージプール識別子及びアドレス可能クラウドストレージプールオフセット値を含む、請求項2に記載の方法。
  5. 前記変換は、前記第1アドレスを、データベースのテーブル内のエントリーに対する行識別子に変換することを含む、請求項1に記載の方法。
  6. 前記データベースはリレーショナルデータベースを含む、請求項5に記載の方法。
  7. 前記変換は、前記行識別子を用いて、前記VHDデータを識別する固有の値から前記第2アドレスへの変換を格納する前記テーブルの前記エントリーにアクセスすることを含む、請求項5に記載の方法。
  8. 前記固有の値はハッシュ値を含む、請求項7に記載の方法。
  9. 前記第2アドレスの少なくとも一部を用いて、前記クラウドストレージに格納された前記VHDデータへのアクセスを得るのに必要なクラウドストレージアクセス情報を取得することをさらに含む、請求項1に記載の方法。
  10. 前記リモートコンピューティングデバイスから送信された前記第2アドレス及び前記クラウドストレージアクセス情報を前記クラウドが受信したことに応答して、前記VHDデータを前記リモートコンピューティングデバイスに提供することをさらに含む、請求項9に記載の方法。
  11. 前記クラウドサーバにより、前記VHDへデータを書き込むための書き込み要求を受信し、
    前記書き込み要求に応答して、前記クラウドサーバにより、前記データに対する第1ハッシュ値を算出し、
    ハッシュテーブルを検索して、前記第1ハッシュ値に適合する第2ハッシュ値を有する行を見つけ出すこと、
    をさらに含む、請求項1に記載の方法。
  12. 前記第1ハッシュ値に適合する第2ハッシュ値を有する行が見つかった場合、
    既存のエントリーに対して適合するVHDバージョン識別子及びVHD論理ブロックアドレスを有するページテーブル内の行に対するハッシュテーブル行識別子をアップデートし、
    戻ること、
    をさらに含む、請求項11に記載の方法。
  13. 前記第1ハッシュ値に適合する第2ハッシュ値を有する行が見つからなかった場合、
    複数のストレージオブジェクトのうちの1つに新たなデータブロックを割り当て、
    前記クラウドストレージに前記データを書き込み、
    前記ハッシュ値、アドレス可能クラウドストレージプール(ACSP)識別子及びACSPオフセットを有する行を前記ハッシュテーブルに作成し、
    新たなハッシュテーブル行(HTR)識別子の値に適合するVHDバージョン識別子及びVHD論理ブロックアドレス(LBA)を有するページテーブル内の行をアップデートすること、
    をさらに含む、請求項11に記載の方法。
  14. プロセッサと、
    シンクローンをサポートせずにシンプロビジョニング仮想マシンを提供する方法を前記プロセッサに実施させるためのプログラミング命令を有する非一時的なコンピュータ読み取り可能な記憶媒体と、
    を備え、
    前記プログラミング命令は、
    リモートコンピューティングデバイスによってホストされた仮想マシン(VM)の仮想ハードディスク(VHD)内の第1位置に関連付けられたVHDデータにアクセスするための要求を受信し、
    前記要求から前記第1位置を指定する少なくとも第1アドレスを抽出し、
    前記第1アドレスを、前記VHDデータが格納されたクラウドストレージ内の第2位置を指定する第2アドレスに変換し、
    前記第2アドレスを前記リモートコンピューティングデバイスへ伝達して、前記リモートコンピューティングデバイスに対し、前記クラウドストレージに格納された前記VHDデータへのアクセスを促すための命令を含む、クラウドベースのコンピューティングシステム。
  15. 前記プログラミング命令は、前記クラウドストレージのページに前記VHDデータのブロックを格納するための命令をさらに含む、請求項14に記載のクラウドベースのコンピューティングシステム。
  16. 前記第1アドレスは論理ブロックアドレス(LBA)を含む、請求項14に記載のクラウドベースのコンピューティングシステム。
  17. 前記第2アドレスは、アドレス可能クラウドストレージプール識別子及びアドレス可能クラウドストレージプールオフセット値を含む、請求項16に記載のクラウドベースのコンピューティングシステム。
  18. 前記第1アドレスを、データベースのテーブル内のエントリーに対する行識別子に変換することによって、前記第1アドレスは前記第2アドレスに変換される、請求項14に記載のクラウドベースのコンピューティングシステム。
  19. 前記データベースはリレーショナルデータベースを含む、請求項18に記載のクラウドベースのコンピューティングシステム。
  20. 前記行識別子を用いて、前記VHDデータを識別する固有の値から前記第2アドレスへの変換を格納する前記テーブルの前記エントリーにアクセスすることによって、前記第1アドレスは前記第2アドレスに変換される、請求項18に記載のクラウドベースのコンピューティングシステム。
  21. 前記固有の値はハッシュ値を含む、請求項20に記載のクラウドベースのコンピューティングシステム。
  22. 前記プログラミング命令は、前記第2アドレスの少なくとも一部を用いて、前記クラウドストレージに格納された前記VHDデータへのアクセスを得るのに必要なクラウドストレージアクセス情報を取得するための命令をさらに含む、請求項14に記載のクラウドベースのコンピューティングシステム。
  23. 前記プログラミング命令は、前記リモートコンピューティングデバイスから送信された前記第2アドレス及び前記クラウドストレージアクセス情報をクラウドが受信したことに応答して、前記VHDデータを前記リモートコンピューティングデバイスに提供するための命令をさらに含む、請求項22に記載のクラウドベースのコンピューティングシステム。
JP2020508503A 2017-08-15 2018-06-18 シンクローンをサポートしないクラウド環境におけるシンプロビジョニング仮想デスクトップインフラストラクチャ仮想マシン Active JP7026206B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/677,727 2017-08-15
US15/677,727 US11157299B2 (en) 2017-08-15 2017-08-15 Thin provisioning virtual desktop infrastructure virtual machines in cloud environments without thin clone support
PCT/IB2018/054468 WO2019034941A1 (en) 2017-08-15 2018-06-18 VIRTUAL DIRTY VIRTUAL OFFICE INFRASTRUCTURE MACHINES IN CLOUD ENVIRONMENTS WITHOUT THIN CLONE SUPPORT

Publications (2)

Publication Number Publication Date
JP2020531969A true JP2020531969A (ja) 2020-11-05
JP7026206B2 JP7026206B2 (ja) 2022-02-25

Family

ID=63143288

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020508503A Active JP7026206B2 (ja) 2017-08-15 2018-06-18 シンクローンをサポートしないクラウド環境におけるシンプロビジョニング仮想デスクトップインフラストラクチャ仮想マシン

Country Status (7)

Country Link
US (2) US11157299B2 (ja)
EP (1) EP3669262B1 (ja)
JP (1) JP7026206B2 (ja)
CN (1) CN110998511A (ja)
AU (1) AU2018318401A1 (ja)
CA (1) CA3071336A1 (ja)
WO (1) WO2019034941A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11068606B2 (en) * 2017-09-20 2021-07-20 Citrix Systems, Inc. Secured encrypted shared cloud storage
US10922132B1 (en) * 2017-12-11 2021-02-16 Amazon Technologies, Inc. Secure migration of servers from customer networks to service provider systems
US11061618B1 (en) * 2020-02-25 2021-07-13 EMC IP Holding Company LLC Disk array enclosure configured to determine metadata page location based on metadata identifier
JP7118108B2 (ja) * 2020-05-20 2022-08-15 株式会社日立製作所 クラウドサーバ、ストレージシステム、及び計算機システム
CN112039712B (zh) * 2020-09-09 2023-04-07 优刻得科技股份有限公司 在云服务器上进行卸载的方法、控制装置、存储介质
US20220400123A1 (en) * 2021-06-11 2022-12-15 Mellanox Technologies Ltd. Secure network access device
US11870647B1 (en) 2021-09-01 2024-01-09 Amazon Technologies, Inc. Mapping on-premise network nodes to cloud network nodes

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007243730A (ja) * 2006-03-09 2007-09-20 Canon Inc 画像処理装置およびその制御方法、および画像処理システム
JP2007323354A (ja) * 2006-05-31 2007-12-13 Hitachi Software Eng Co Ltd マシン管理システム
JP2012073999A (ja) * 2010-02-26 2012-04-12 Rakuten Inc 情報処理装置、情報処理方法、情報処理プログラム及び情報処理プログラムを記録した記録媒体
US20140281350A1 (en) * 2013-03-15 2014-09-18 Bracket Computing, Inc. Multi-layered storage administration for flexible placement of data

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9344401B2 (en) 2009-02-04 2016-05-17 Citrix Systems, Inc. Methods and systems for providing translations of data retrieved from a storage system in a cloud computing environment
US8775781B2 (en) * 2010-03-25 2014-07-08 Microsoft Corporation Intelligent boot device selection and recovery
US9015707B2 (en) * 2010-09-02 2015-04-21 International Business Machines Corporation Virtual machine rapid provisioning system
US20120089781A1 (en) * 2010-10-11 2012-04-12 Sandeep Ranade Mechanism for retrieving compressed data from a storage cloud
US8788788B2 (en) * 2011-08-11 2014-07-22 Pure Storage, Inc. Logical sector mapping in a flash storage array
EP2799973B1 (en) * 2013-04-30 2017-11-22 iNuron NV A method for layered storage of enterprise data
US9921773B2 (en) * 2014-06-18 2018-03-20 Citrix Systems, Inc. Range-based data deduplication using a hash table with entries replaced based on address alignment information
US20160283118A1 (en) 2015-03-25 2016-09-29 International Business Machines Corporation Optimization of disk images for thin provisioned disks
US9438618B1 (en) * 2015-03-30 2016-09-06 Amazon Technologies, Inc. Threat detection and mitigation through run-time introspection and instrumentation
US10628069B2 (en) * 2016-06-03 2020-04-21 Hitachi Ltd. Management apparatus for managing and reduplication of volumes of a storage system with respect to OS type

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007243730A (ja) * 2006-03-09 2007-09-20 Canon Inc 画像処理装置およびその制御方法、および画像処理システム
JP2007323354A (ja) * 2006-05-31 2007-12-13 Hitachi Software Eng Co Ltd マシン管理システム
JP2012073999A (ja) * 2010-02-26 2012-04-12 Rakuten Inc 情報処理装置、情報処理方法、情報処理プログラム及び情報処理プログラムを記録した記録媒体
US20140281350A1 (en) * 2013-03-15 2014-09-18 Bracket Computing, Inc. Multi-layered storage administration for flexible placement of data

Also Published As

Publication number Publication date
EP3669262B1 (en) 2023-12-20
CA3071336A1 (en) 2019-02-21
AU2018318401A1 (en) 2020-02-20
US20190056966A1 (en) 2019-02-21
CN110998511A (zh) 2020-04-10
US11157299B2 (en) 2021-10-26
WO2019034941A1 (en) 2019-02-21
EP3669262A1 (en) 2020-06-24
JP7026206B2 (ja) 2022-02-25
US20220075640A1 (en) 2022-03-10

Similar Documents

Publication Publication Date Title
JP7026206B2 (ja) シンクローンをサポートしないクラウド環境におけるシンプロビジョニング仮想デスクトップインフラストラクチャ仮想マシン
JP7090606B2 (ja) データベース・システムにおけるテスト・データの形成及び動作
US11243707B2 (en) Method and system for implementing virtual machine images
US9471802B2 (en) Hybrid file systems
US8966188B1 (en) RAM utilization in a virtual environment
US9952782B1 (en) Method and system for accessing data between different virtual disk formats in a virtualization environment
US20100050173A1 (en) Provisioning Virtual Resources Using Name Resolution
US9460009B1 (en) Logical unit creation in data storage system
US9792075B1 (en) Systems and methods for synthesizing virtual hard drives
US9110917B2 (en) Creating a file descriptor independent of an open operation
CN108604162B (zh) 为应用虚拟机提供对生产数据的访问的方法和系统
US10169062B2 (en) Parallel mapping of client partition memory to multiple physical adapters
US20150261524A1 (en) Management pack service model for managed code framework
US20150356108A1 (en) Storage system and storage system control method
US11016946B1 (en) Method and apparatus for processing object metadata
US11341099B1 (en) Data storage agnostic deduplication for virtual machines
US11914556B2 (en) Lazy virtual filesystem instantiation and caching
US11841797B2 (en) Optimizing instant clones through content based read cache
US11971848B2 (en) Efficient transparent switchover of file system consolidation migrations

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200413

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210713

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210924

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220125

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220214

R150 Certificate of patent or registration of utility model

Ref document number: 7026206

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150