受信器側のデータ重複を排除する方法の様々な実施形態および機器が記載されている。データ重複排除技術の実施形態は、たとえば、送信器と受信器との間の通信チャンネルの帯域幅使用を、従来のデータ重複排除技術と比較して低減するために、仮想化データストアシステムに適用してもよい。データ重複排除技術の実施形態では、フィンガープリントディクショナリを維持して、受信器にアップロードすべきデータユニットを決定するのではなく、むしろ、受信器がフィンガープリントディクショナリを維持する。送信器がアップロードすべきデータを有する場合は、送信器はデータのフィンガープリントを抽出し、フィンガープリントを受信器に送信する。受信器はフィンガープリントディクショナリを確認し、受信器にアップロードすべきデータユニットを決定して送信器に通知する。次に、送信器は識別したデータユニットを受信器に送信する。データ重複排除技術の実施形態は、このように、データストア内にないユニットのみをアップロードするため、データ送信器から受信器にデータをアップロードするときに使用する帯域幅を低減する。さらに、実施形態によって、送信器が大量のフィンガープリントディクショナリを維持する必要と、受信器でのデータ重複排除を集中化する必要がなくなる。そのため、複数のデータソースのために保存したデータ全体にデータ重複排除を適用することが可能となる。技術によって送信器と受信器との間の通信が余分に必要となるため、軽度の妥協として、アップロード処理の待ち時間が長くなることもある。ただし、待ち時間は一般に、プライマリアップロード処理においては一時的な関心事ではない。
本明細書では、データ重複排除技術の実施形態は、一般に、データストレージシステムの適用において記載されているが、データ重複排除技術は、受信器が送信器からアップロードしたデータを受信する任意のシステムに適用してもよい。アップロードしたデータおよび処理したデータは、任意の種類の文字、図形、または画像データ、音声データ(たとえば、音楽または音声データ)、映像データ、圧縮および/または暗号データなどを含んでいてもよいが、これらに限定されない。さらに、本明細書では、実施形態は、一般に離れて位置し、有線および/またはインターネットなどの無線ネットワークを介して通信する送信器および受信器に関して記載しているが、データ重複排除技術は、送信器および受信器が、たとえば、有線または無線ローカルネットワークまたはダイレクトリンクを介して通信するローカル装置である適用、および適用送信器および受信器が単一の装置またはシステム内のハードウェアおよび/またはソフトウェアコンポーネントであり、データバス、ダイレクトデータリンク、共有メモリ転送、または無線通信チャンネルなどの内部通信チャンネルを介して通信する適用に適用してもよい。
図2Aから2Dは、データシステムに実装されたデータ重複排除技術を例示するブロック図である。データシステムは、少なくともある実施形態によれば、送信器(データソース)と、受信器(たとえば、データストレージシステム)とを含む。図2Aを参照すると、受信器110は、データ処理112技術または機能にしたがって、データを処理してもよい。たとえば、受信器110は、データをデータストアに保存してもよい。図2Aは単一の送信器120を示す。ただし、2つ以上の送信器120があってもよい。送信器120は、たとえば、サーバなどの単一のシステム、サーバクラスタなどのシステムの集まり、またはデータセンタに対応するが、一般に、送信器120はデータを受信器110にアップロードできる任意の装置またはシステムに対応してもよい。受信器110は受信器データアップロードマネージャ114を実装してもよい。受信器データアップロードマネージャ114は、ハードウェア、ソフトウェア、またはその組み合わせに実装されてもよい。受信器データアップロードマネージャ114は、インターフェース、たとえばウェブサービスインターフェースまたはAPIを提供してもよい。インターフェースを介して送信器120は受信器110が提供する機能にアクセスしてもよい。
受信器データアップロードマネージャ114は、たとえばデータストアに保存されたデータのフィンガープリント132を、フィンガープリントディクショナリ130に保存および管理してもよい。少なくともある実施形態では、フィンガープリント132はデータユニットのハッシュであってもよい。ブロックベースのデータシステム(ブロックストレージシステムともいう)では、データユニットは、たとえば、データブロックの256kバイトの部分、データブロックの1024kバイト部分、またはデータブロックの別の固定または変動するサイズの部分であってもよい。ファイルベースのシステムでは、データユニットはファイル、またはブロックベースのデータシステムの部分と同様に、ファイルの部分であってもよい。少なくともある実施形態では、フィンガープリント132は任意の種類の暗号学的に強い一方向ハッシュ関数、たとえば安全なハッシュアルゴリズム(SHA)256ハッシュ関数であってもよい。暗号学的に強い一方向ハッシュ関数を使用することで安全性が実現し、このようなハッシュ関数を使用する場合の衝突はほとんど起こらないため、衝突を避けることができる。衝突とは、2つのデータユニットが同じフィンガープリントを作成することである。
フィンガープリントディクショナリ130は単一のシステム上にあってもよく、または2つ以上のシステム、たとえば2つ以上のサーバシステムに分散されていてもよい。ある実施形態では、フィンガープリントディクショナリ130は2つ以上のサーバにわたるコンシステントハッシュディクショナリとして実装され、維持されてもよい。少なくともある実施形態では、フィンガープリントディクショナリ130は、固定サイズのディクショナリであってもよい。
少なくともある実施形態では、受信器データアップロードマネージャ114は、複数の顧客のフィンガープリント132を単一のフィンガープリントディクショナリ130に維持してもよい。顧客は具体的なデータ集の「所有者」であり、個人、企業、または事業部、部、事務所、またはその他の企業内の組織であってもよい。ある実施形態では、各顧客には特有の顧客識別子を割り当てる。顧客識別子は、それぞれの顧客データのフィンガープリント132に付加され、またはその他の方法で関連してもよい。代替的に、受信器データアップロードマネージャ114は、個別のフィンガープリントディクショナリ130を各顧客に維持してもよい。
送信器データアップロードマネージャ126は、送信器120と受信器データアップロードマネージャ114との間のインターフェースとして機能してもよい。送信器データアップロードマネージャ126は、ハードウェア、ソフトウェア、またはその組み合わせに実装されてもよい。送信器データアップロードマネージャ126と受信器データアップロードマネージャ114との間の1または複数の通信チャンネルは、送信器データアップロードマネージャ126と受信器データアップロードマネージャ114との間のネットワーク(たとえば、インターネット)にわたって転送する必要があることもあるため、比較的高帯域幅の接続または通信チャンネルであってもよい。
受信器110がデータのプライマリストレージまたは送信先であってもよい一方、送信器120は、少なくともいくつかのデータをローカルにキャッシュし、保存し、または取得してもよい。たとえば、ユーザのデータアクセスタイムを改良するために、要望に応じて受信器110が維持するデータストアからデータを取り込むのではなく、大きなデータのブロックまたはデータのチャンク、データ全体量さえも、送信器120にローカルデータ122としてローカルにキャッシュし、または保存してもよい。送信器120は、物理的なデータストレージおよび/またはメモリを含んでいてもよく、その上にローカルデータ122をキャッシュし、または保存してもよい。ただし、受信器110が維持するデータストアは顧客のプライマリデータストアとして機能してもよい。したがって、送信器データアップロードマネージャ126は受信器データアップロードマネージャ114と通信し、定期的に、不定期に、または継続してローカルデータ122内の新規または修正したデータをデータストアにアップロードする。
送信器データアップロードマネージャ126は、少なくともある実施形態では、ローカルデータ122を比較的大きなブロック、たとえば4メガバイトのブロックまたは10メガバイトのブロックに維持してもよいが、それより大きい、または小さいブロックサイズを使用してもよい。たとえば、新規データを作成し、または既存データを修正するために、ユーザまたはプロセスがデータブロック140にアクセスするとき、ブロックを「ダーティ」とマークしてもよい。ただし、アクセスによって、ブロックの小さな部分のみを変更してもよい。このように、図2Aに示すように、送信器データアップロードマネージャ126は、たとえばハッシュ関数を各ユニットに適用することによって、ダーティブロック140のユニットのフィンガープリント124を生成してもよい。ブロックベースのデータシステム(たとえば、ブロックストレージシステム)では、データユニットは、たとえば、データブロックの256kバイト部分、データブロックの1024kバイト部分、またはデータブロックのいくつかのその他の固定または可変サイズの部分であってもよい。(ファイルベースのシステムでは、データユニットはファイル、またはブロックベースのデータシステムの部分と同様のファイルの部分であってもよい。)図2Aに示すように、送信器データアップロードマネージャ126は、ダーティブロック140のために生成したフィンガープリント124を受信器データアップロードマネージャ114に送信してもよい。
図2Bでは、受信器データアップロードマネージャ114はフィンガープリントディクショナリ130を検索して、送信器データアップロードマネージャ126から受信したフィンガープリント124と適合させてもよい。受信器データアップロードマネージャ114によって実装またはアクセスする検索機能にしたがって、検索を実行してもよい。当業者は、任意の種類の検索技術を用いてもよいことを理解するであろう。前述したように、ある実施形態では、それぞれの顧客に対する特有の識別子を用いて、これらのフィンガープリント124を他の顧客のフィンガープリントから識別して衝突を避けてもよい。これは、それぞれの顧客に特有のフィンガープリントディクショナリを検索することによって、またはすべての顧客に共通するフィンガープリントディクショナリからそれぞれの顧客に属するものとして指示されたフィンガープリントを特有の識別子で検索することによって行う。フィンガープリントディクショナリ130内で発見したフィンガープリント124をアップロードする必要はない。ディクショナリ130内に存在するということは、対応するデータユニットが受信器110に存在する(たとえば、データユニットはデータストアに保存されている)ことを示すからである。フィンガープリントディクショナリ130内で発見できないフィンガープリント124はアップロードする必要がある。ディクショナリ130にないということは、対応するデータユニットが受信器110に存在しない(たとえば、データユニットはデータストアに保存されていない)こと、または対応するデータユニットが送信器120で変更され、交換または更新の必要があることを示すからである。
フィンガープリント124が生成されるデータブロック全体が新規に作成されたデータブロックである場合は、フィンガープリント124のどれもがフィンガープリントディクショナリ130で発見されず、したがって、すべての対応するユニットを受信器110にアップロードする必要が生じる場合もあることに留意されたい。ただし、同じデータユニットが顧客に対して以前にアップロードされた他のブロック内に存在する場合は、いくつかの、またはすべてのフィンガープリント124がフィンガープリントディクショナリ130内で発見されることもある。したがって、少なくともいくつかの対応するユニットは受信器110にアップロードする必要がないこともある。つまり、2つ以上のデータのブロックは、少なくともいくつかの共通のユニットを受信器110、たとえばデータストア内で共有してもよい。
図2Cで示す例では、フィンガープリント124Cを、アップロードする必要があるデータユニットに対応するものとして識別している(つまり、フィンガープリント124Cはフィンガープリントディクショナリ130内にない。)受信器データアップロードマネージャ114は次に、フィンガープリント124Cに対応するデータユニット(つまり、データユニット142C)のデータユニット識別子を送信器データアップロードマネージャ126に送信する。ある実施形態では、1または複数のデータユニット識別子は、それぞれ1または複数のフィンガープリントであってもよく、この例では、フィンガープリント124Cである。別の方法を用いて、アップロードする必要があるデータユニットを識別してもよい。たとえば、ある実施形態では、ブロック番号/ユニット番号インデキシング方式を用いて、アップロードする必要があるデータユニットを識別してもよく、またはビットフィールド方式を用いてもよい。ビットフィールド方式では、「ビットマップ」内の1または複数のビットを設定して、アップロードする必要があるデータユニット、またはアップロードする必要のないデータユニットのいずれかを表示してもよい。ある実施形態では、受信器データアップロードマネージャ114によって送信器データアップロードマネージャ126に送信された1または複数のデータユニット識別子は、アップロードする必要がある1または複数のデータユニットではなく、むしろアップロードする必要のない1または複数のデータユニットを表示してもよい。ある実施形態では、帯域幅使用を低減するために、受信器データアップロードマネージャ114は、アップロードする必要のない1または複数のデータユニットのセット、またはアップロードする必要がある1または複数のデータユニットのセットのいずれかを表示する1または複数のデータユニット識別子を、どちらがより小さいかによって送信してもよい。たとえば、送信器データアップロードマネージャ126に送信された1または複数の識別子は、アップロードする必要がある1または複数のデータユニット、またはアップロードする必要のない1または複数のデータユニットのどちらに対するものかを表示する情報をヘッダに含んでいてもよい。
図2Dでは、識別したデータユニット142Cを、送信器データアップロードマネージャ126によって受信器データアップロードマネージャ114にアップロードする。ダーティブロックから識別した1または複数のデータユニットのみをアップロードすることに留意されたい。受信器データアップロードマネージャ114が、ブロックのすべてのデータユニットをアップロードする必要があると認識しない限り、ブロック全体はアップロードされない。図2Dでは、受信器データアップロードマネージャ114のアップロードハンドラまたはプロセス150を示す。アップロードハンドラまたはプロセス150はアップロードした1または複数のデータユニットを受信し、さらに処理するために、受信した1または複数のデータユニットをデータ処理112機能に送る。たとえば、データストレージシステムでは、データ処理112機能は、データストアにアップロードしたデータユニット142Cを保存してもよい。データストレージシステムでは、データ処理112機能は、アップロードしたデータユニットをデータストア内の新規のデータユニットとして追加してもよい。またはデータストア内の既存データユニットをアップロードしたデータユニットと交換するか、更新してもよい。
ある実施形態では、識別したデータユニットを受信器データアップロードマネージャ114にアップロードする前に、データユニットを送信器データアップロードマネージャ126によって圧縮して、さらに通信チャンネルの帯域幅使用を低減してもよい。ある実施形態では、送信器データアップロードマネージャ126は、所与のデータユニットの圧縮バージョンが、圧縮していないバージョンよりも、ある閾値量または割合だけ小さいがどうかを判断し、小さい場合は圧縮バージョンをアップロードし、そうでない場合は圧縮していないバージョンをアップロードしてもよい。送信器データアップロードマネージャ126が受信する圧縮データユニットを、処理112の前に解凍してもよいが、必須ではない。
前述のように、少なくともある実施形態では、フィンガープリントディクショナリ130は固定サイズのディクショナリであってもよい。そのため、ある実施形態では、フィンガープリントディクショナリ130は、受信器110が受信したすべてのデータユニットに対応するフィンガープリント132を保存する余裕がないこともある。たとえば、データストレージシステムでは、フィンガープリントディクショナリ130はデータストアに保存したすべてのデータユニットのフィンガープリント132を保存しないこともある。そのため、これらの実施形態では、受信器110は、1または複数のディクショナリ維持機能を実装してもよい。ディクショナリ維持機能は、定期的にまたは必要に応じて、フィンガープリント132、たとえば陳腐なまたは最近もっとも使われていない(LRU)フィンガープリント132を消去し、削除し、または置き換える。そのため、フィンガープリント124を送信器120から受信することに対応して、受信器データアップロードマネージャ114がディクショナリ130内にあると判断する1または複数のフィンガープリントを、ディクショナリ維持機能によって、データ重複排除技術において送信器120と受信器110との交換が終了する前に、消去することが可能である。このように、ある実施形態では、図2Dに示すように、1または複数のデータユニットを送信器データアップロードマネージャ126から受信後に、受信器データアップロードマネージャ114は受信した1または複数のデータユニットをフィンガープリントディクショナリ130に対して確認し、任意のデータユニットが欠けているかを判断してもよい。つまり、受信器データアップロードマネージャ114が最初にディクショナリ130にあると判断した任意のフィンガープリント124が(図2Bおよび2C参照)、もはやディクショナリ130になく、したがって、トランザクションを完了するためには対応するデータユニットが必要であることを判断してもよい。ある実施形態では、受信器データアップロードマネージャ114がトランザクションを完了するために追加のデータユニットが必要であると判断すると、トランザクションを再開してもよい。つまり、受信器データアップロードマネージャ114は、フィンガープリント124の新規のリストを送信器データアップロードマネージャ126から要求してもよい。ただし、受信器データアップロードマネージャ114および送信器データアップロードマネージャ126の両方はすでにトランザクションの状態情報を持っているため、ある実施形態では、この状態情報を活用して帯域幅をセーブしてもよい。これらの実施形態では、受信器データアップロードマネージャ114は、トランザクションの追加段階として、1または複数のデータユニット識別子を送信器データアップロードマネージャ126に送信して、欠けているデータユニットのみを要求してもよい。つまり、トランザクション中にフィンガープリント132が消去されたデータユニットのみを要求してもよい。
図2Aから2Dのデータシステムに関連して前述したプロセスは、連続したプロセスであってもよい。つまり、送信器120は連続してダーティデータのブロックを確認し、ブロック内のデータユニットのフィンガープリントを生成し、フィンガープリントを受信器110に送信し、アップロードすべきデータユニットの表示を受信し、表示されたデータユニットを受信器110にアップロードしてもよい。受信器110は、フィンガープリントディクショナリ130を維持して、受信器110にデータの現在の状態を反映し、受信した1または複数のデータユニットをデータ処理機能112に転送する。データ処理機能112は、たとえば、1または複数の送信器120から受信したデータユニットにしたがって、データストア内のデータブロックを保存または更新する。
データ重複排除技術の実施形態を、一般的な送信器(データソース)および受信器(データストア)を含む任意のデータシステムに適用して、アップロード帯域幅使用を低減してもよい。このデータシステムは、任意のデータストレージシステムを含むがこれに限定されない。それと同時に、フィンガープリントディクショナリを維持し、アップロードすべきデータユニットを判断するためにディクショナリを確認するデータ重複排除タスクを送信器から受信器に移動させる。ただし、データ重複排除技術の実施形態を、本明細書では仮想化データストアプロバイダを提供する仮想化データストアシステムに関連して記載した。仮想化データストアプロバイダはインターネットなどのネットワークを介して、1または複数の仮想化データストアクライアントの仮想化データストアを提供する。以下の部分では、仮想化データストアシステムの実施形態を記載する。プロバイダ側の仮想化データストアサービスおよびクライアント側の仮想化データストアゲートウェイを提供する実施形態も記載する。以下の部分では、顧客に対するハードウェア仮想化サービス、および仮想化データストアサービスを提供する仮想化サービスプロバイダの実施形態も記載する。
仮想化データストアシステム
図3Aから3Cは、少なくともある実施形態による、データ重複排除技術を実装してもよい仮想化データストアシステムの例を例示する。図3Aは、少なくともある実施形態による、仮想化データストアシステムの高レベルブロック図である。グローバルネットワーク200(たとえば、インターネット)の仮想化データストアプロバイダ210は、グローバルネットワーク200にも接続する1または複数の仮想化データストア顧客250に、仮想化データストアサービス212を介して仮想化データストア216へのアクセスを提供してもよい。各仮想化データストア顧客250は異なる事業体に対応してもよく、または2つ以上の仮想化データストア顧客250は同じ事業体の異なるデータセンタまたは現地事務所、たとえば企業の異なる支社または学校システムの異なるキャンパスに対応してもよい。事業体は、インターネットなどのグローバルネットワーク200に接続するコンピュータネットワークまたはネットワークを実装して、ネットワーク化したコンピューティングサービスをユーザに提供する企業、教育機関、政府機関、または一般の任意の事業体であってもよい。ある実施形態では、仮想化データストアサービス212はインターフェース、たとえばウェブサービスのインターフェースを提供してもよい。仮想化データストア顧客250は、このインターフェースを介してサービス212が提供する機能にアクセスしてもよい。
データクライアント258は、仮想化データストア顧客250のローカルネットワークに接続する物理マシンおよび/または仮想マシンまたはシステムを表す。ユーザはデータクライアント258を介して、仮想化データストア216に仮想化データストアサービス212を介してデータ量を作成および搭載してもよい。仮想化データストア顧客250のユーザの観点からは、仮想化データストアサービス212が提供するデータ量はすべてローカルストレージであるかのように見える。そのため、このようなデータ量は仮想データ量298と呼ばれることもある。仮想データ量298は実際に1または複数の物理的なストレージ装置またはストレージシステムにマッピングされ、物理的なストレージ装置またはストレージシステム上に仮想化データストア216はインスタンス化される。ただし、このマッピングは仮想化データストアサービス212によって処理され、したがって仮想化データストア顧客250の観点からトランスペアレントとなる。データクライアント258のユーザは、デスクトップまたは装置リスティングに組み込んだ量のみを見てもよい。データクライアント258のユーザは、仮想データ量298がローカルに取り付けるストレージ装置上に実装されたかのようにデータを作成し、データを修正し、データを削除し、一般に仮想データ量298上の任意のデータ関連機能を実行する。
仮想化データストア顧客250は、仮想化データストアサービス212とグローバルネットワーク200を介してと通信し、データをアップロードしてもよく、データを仮想化データストア216からダウンロードしてもよい。図3Bは仮想化データストアシステムのブロック図であり、仮想化データストアゲートウェイ252を仮想化データストア顧客250に含む。少なくともある実施形態によると、仮想化データストアシステムは仮想化データストア顧客250と仮想化データストアサービス212との間のインターフェースとして機能する。
少なくともある実施形態では、仮想化データストアゲートウェイ252は、仮想化データストア顧客のデータセンタの現場でインストールされるファイルおよびブロックストレージ装置であってもよい。仮想化データストアゲートウェイ252は、よく利用するデータのローカルキャッシュ254を保存する一方、仮想化データストアプロバイダ210に戻るデータ移動を安全に暗号化し、加速する。標準のインターネット接続と比較すると加速しているこのデータ移動は、データ重複排除、圧縮、並列化、およびTCPウィンドウスケーリングを用いて実現してもよい。仮想化データストアゲートウェイ252は、オンサイトのストレージアレイの管理に一般的に伴うコスト、利用、維持、およびプロビジョニングの悩みを顕著に低減してもよい。仮想化データストアゲートウェイ252は、顧客がその他の方法で、社内の高価なネットワーク接続ストレージ(NAS)およびストレージエリアネットワーク(SAN)ハードウェアに保存する何百ものテラバイトからペタバイトのデータを、費用効率が高い装置と交換することによって、実現してもよい。仮想化データストアゲートウェイ252を用いると、仮想化データストアプロバイダ210が提供する、耐久性があり、利用可能かつ拡張可能なクラウドストレージ基盤を活用しながら、顧客はオンサイトのストレージ(ゲートウェイ252が提供するローカルキャッシュ254によって提供される)のアクセス遅延が低いことから利益を得てもよい。
仮想化データストアゲートウェイ252の実施形態は、顧客のオンサイトのアプリケーションと途切れなく協働してもよい。少なくともある実施形態では、顧客は仮想化データストアゲートウェイ252を構成して、SAN(インターネットスモールコンピュータシステムインターフェース(iSCSI))、NAS(ネットワークファイルシステム(NFS)、マイクロソフト(R)(Microsoft))共通インターネットファイルシステム(CIFS))、またはオブジェクト(Object)(レスト(REST))ストレージをサポートしてもよい。少なくともある実施形態では、仮想化データストアゲートウェイ252が提供するiSCSIインターフェースによって、マイクロソフト(R)シェアポイント(R)(SharePoint)などのオンサイトのブロックストレージアプリケーションとの統合が可能になる。少なくともある実施形態では、顧客は仮想化データストアゲートウェイ252が提供するNFSおよびCIFSインターフェースを利用して、環境をまたぐファイルストレージに統合してもよい。このファイルストレージは、ウィンドウズ(Windows(登録商標))、リナックス(Linux(登録商標))、およびユニックス(UNIX(登録商標))環境を含むが、これらに限定されない。少なくともある実施形態では、仮想化データストアゲートウェイ252はまた、RESTベースの要求をサポートするように構成されてもよい。
仮想化データストアゲートウェイ252を、ハードウェア、ソフトウェア、またはその組み合わせに実装してもよい。仮想化データストアゲートウェイ252のいくつかの実施形態を、仮想化データストア顧客250のローカルネットワーク256に接続し、またグローバルネットワーク200(たとえば、インターネット)にも接続する専用装置または機器として実装してもよい。装置または機器は、ゲートウェイ252の様々な機能を実施するソフトウェアおよび/またはハードウェアを含んでいてもよい。代替的に、仮想化データストアゲートウェイ252を、仮想化データストア顧客250データセンタの1または複数のサーバシステム上の仮想装置または機器として実装してもよい。
仮想化データストアゲートウェイ252をグローバルネットワーク200に接続することは、一般に、仮想化データストア顧客250が提供する高帯域幅接続を介して行われる。大量のデータを、仮想化データストアサービス212と仮想化データストアゲートウェイ252との間のグローバルネットワーク200を介して転送するためである。たとえば、ピーク時には、接続は100メガビット/秒(100Mbit/s)以上の速さでデータの転送をサポートする必要があることもある。ただし、本明細書に記載するデータ重複排除技術は、アップロードするデータを仮想化データストアゲートウェイ252から仮想化データストアサービス212にアップロードする場合に帯域幅使用を低減する。したがって、より多くの接続の帯域幅が他のアプリケーションに利用可能となる。
少なくともある実施形態では、接続の帯域幅を仮想化データストアゲートウェイ252および他の顧客アプリケーションに、たとえば仮想化データストア顧客250のコンソールを介して割り当ててもよい。本明細書に記載するデータ重複排除技術によれば、仮想化データストアゲートウェイ252は、変異した(新規または変化した)データを仮想化データストアサービス212に継続してまたは略継続してアップロードしてもよい。ただし、顧客250のデータの変異率は時間と共に変化してもよい。たとえば、日中は変異率が高く、夜間は変異率が落ちてもよい。このように、変異率が高い繁忙期には、仮想化データストアゲートウェイ252に割り当てた帯域幅が維持するほど高くない場合は、仮想化データストアゲートウェイ252は変異したデータをアップロードするのが遅れることもある。次に、仮想化データストアゲートウェイ252は、変異率はあまり高くない忙しくないときに取り戻す。少なくともある実施形態では、仮想化データストアゲートウェイ252が特定の閾値を超えて遅れると、仮想化データストアゲートウェイ252は、追加の帯域幅の割り当てを要求してもよい。少なくともある実施形態では、仮想化データストアゲートウェイ252は、必要に応じて警告を発して、多くの帯域幅を要求してもよい。仮想化データストアゲートウェイ252が必要以上に多くの帯域幅を有する場合、たとえば仮想化データストアゲートウェイ252が変異率に追いつくために必要以上に多くの帯域幅を有するあまり忙しくないときには、仮想化データストアゲートウェイ252はいくつかの帯域幅を解除して顧客に戻してもよく、それによって帯域幅を他のアプリケーションに使用することができる。
ある実施形態では、データを仮想化データストア216から要望に応じて取り込むよりも、大きなデータのブロックまたはデータのチャンク、データの全体量さえ、ローカルにキャッシュしてもよい。仮想化データストアゲートウェイ252は、物理的なデータストレージおよび/またはメモリを含んでいてもよい。その上に、データのローカルキャッシュ254、たとえば頻繁にアクセスするデータまたは重大なデータを維持してもよい。ローカルキャッシュ254は、揮発性または不揮発性ストレージまたはメモリ、またはその組み合わせに実装されてもよい。
ローカルキャッシュ254を維持することは、一般に、ユーザがデータクライアント258にアクセスするデータアクセス時間を改良してもよい。多くのまたはほとんどのデータアクセスは、データを仮想化データストア216から取り込むよりも、ローカルキャッシュ254からサービスを受けることができるからである。ただし、仮想化データストア216は仮想化データストア顧客250のプライマリデータストアとして機能する。したがって、仮想化データストアゲートウェイ252は、仮想化データストアサービス212とグローバルネットワーク200を介して通信し、定期的に、不定期に、または継続してローカルキャッシュ254の新規のまたは修正したデータを仮想化データストア216にアップロードし、必要な場合に、要求したデータを仮想化データストア216からダウンロードする。
図3Bでは、仮想化データストア216のストレージ218A、218B、218C…は、仮想化データストア216を仮想化データストアプロバイダ210のローカルネットワーク214に接続するいくつかのストレージ装置またはシステム上に、または横切って実装してもよいことを例示する。このように、仮想化データストア顧客250のデータを「バックエンド」上の2つ以上の物理的なストレージ装置またはシステムにわたって広げてもよい。ただし、図3Aに関して記載するように、仮想化データストア顧客250の視点から、クライアントのデータをクライアントに仮想量またはストレージ装置として表す。
ある実施形態では、図3Aおよび3Bに関して記載する仮想化データストアシステムを、ハードウェア仮想化技術およびその他の仮想化ストレージ技術も提供する一般の仮想化サービスの一部として実装してもよい。仮想化サービスは、一連の仮想化コンピューティング技術および仮想化ストレージ技術を提供してもよい。これには、仮想化ブロックレベルストレージ能力(つまり、ブロックベースのストレージシステム)を顧客に提供する仮想化ブロックレベルストレージ技術も含む。仮想化サービスプロバイダが提供するハードウェア仮想化技術によって実装される仮想コンピューティング環境またはシステムは、仮想化ブロックレベルストレージ技術によってサポートされてもよい。仮想化ブロックレベルストレージ技術は仮想ストレージシステムを提供してもよい。仮想ストレージシステムは、標準化ストレージコールを経て仮想コンピューティングシステムとやり取りすることができる。ブロックレベルストレージがサポートする量の構造および機能の詳細を選ばずに、標準化ストレージコールによって、ブロックレベルストレージが機能し、ブロックレベルストレージがストレージ利用可能性を提供する仮想コンピューティングシステム(またはその他のシステム)上で稼働するオペレーティングシステムを選ばずに、ブロックレベルストレージが機能する。
オンサイトの顧客アプリケーションを統合することに加えて、仮想化データストアゲートウェイ252は、仮想化サービスプロバイダ300が提供する仮想化コンピューティング技術および仮想化ストレージ技術を統合してもよく、顧客に柔軟な「クラウドベースの」コンピューティングおよびストレージリソースへのアクセスを提供する。たとえば、仮想化データストアゲートウェイ252をSANストレージのために利用する顧客は、仮想化ブロックレベルストレージ技術からアクセス可能なブロックストレージデータの一貫したポイントインタイムスナップショットを作成してもよい。これらのスナップショットを次に、仮想化ブロックレベルストレージ技術が提供する高いI/Oおよび低い待ち時間データアクセスを必要とする、ハードウェア仮想化技術アプリケーションまたはインスタンス(たとえば、図3Cの1または複数の仮想コンピューティングシステム392参照)によって処理してもよい。別の例として、顧客は、NASストレージの仮想化データストアゲートウェイ252をNFSまたはCIFSファイルプロトコルを介して構成してもよく、ハードウェア仮想化技術インスタンスからアクセス可能なファイルデータのポイントインタイムスナップショットを作成してもよい。
ある実施形態では、仮想化データストアゲートウェイ252が提供するRESTベースのインターフェースを使用して書きかれたオブジェクトは、HTTPまたはその他のプロトコルを介して仮想化サービスプロバイダが提供する仮想化ストレージ技術から直接アクセスされてもよく、または仮想化サービスプロバイダが提供する統合コンテンツ配布技術を使用して配布されてもよい。ある実施形態では、顧客はまた、ハードウェア仮想化技術インスタンス上のこれらのオブジェクトを並行処理するために提供される、拡張可能性が高い、仮想化ストレージ技術が提供する分散基盤を利用してもよい。
図3Cは仮想化サービスのブロック図であり、少なくともある実施形態によれば、仮想化データストアサービス312およびハードウェア仮想化サービス360を仮想化サービスプロバイダ300の顧客350に提供する。仮想化サービス顧客350データセンタは、たとえば図3Bに関して記載するように、仮想化データストア顧客350と仮想化サービスプロバイダ300の仮想化データストアサービス312との間のインターフェースとして機能する仮想化データストアゲートウェイ352を含む。
ハードウェア仮想化技術によって、複数のオペレーティングシステムを同時にホストコンピュータ362上で稼働することができる。つまり、ホスト362上の仮想マシン(VM)366として稼働することができる。VM366は、たとえば、仮想化サービスプロバイダ300の顧客に(たとえば、仮想化サービス顧客350に)貸与またはリースしてもよい。ホスト362上のハイパーバイザ、または仮想マシンモニタ(VMM)364はホスト362上の仮想プラットフォームを備えるVM366を表し、VM366の実行をモニタする。各VM366は1または複数のIPアドレスを備えていてもよい。ホスト362上のVMM364は、ホスト上のVM366のIPアドレスを認識していてもよい。仮想化サービスプロバイダ300のローカルネットワークは、VM366からのパケットをインターネット目的地(たとえば、仮想化サービス顧客350の1または複数のサービスクライアント390)まで経由し、インターネットソース(たとえば、1または複数のサービスクライアント390)からVM366まで経由するように構成されてもよい。
仮想化サービスプロバイダ300は、ローカルネットワーク356を介してグローバルネットワーク200に接続する仮想化サービス顧客340を提供してもよい。ローカルネットワーク356は、仮想コンピューティングシステム392をハードウェア仮想化サービス360を介して実装する能力を有する。ハードウェア仮想化サービス360は、グローバルネットワーク200および仮想化サービスプロバイダ300のローカルネットワークに接続する。ある実施形態では、ハードウェア仮想化サービス360は、インターフェース、たとえばウェブサービスインターフェースを提供してもよい。このインターフェースを介して、サービスクライアント390は、ハードウェア仮想化サービス360が提供する機能にアクセスしてもよい。仮想化サービスプロバイダ300では、各仮想コンピューティングシステム392は、リース、貸借、またはその他の方法で仮想化サービス顧客350に提供されるホスト362システム上の仮想マシン(VM)366を表してもよい。
仮想コンピューティングシステム392のインスタンスから、前述したように、ユーザは仮想化データストアサービス312の機能にアクセスしてもよい。このように、図3Cに例示するように、仮想化システムの実施形態によって、クライアントは、仮想化システムプロバイダが提供するVM上に実装される仮想コンピューティングシステムのローカルインスタンスを作成することができ、仮想データストアのデータにアクセスし、仮想コンピューティングシステムのローカルインスタンスから、仮想化システムプロバイダが実装する仮想データストアにデータを保存することができる。前述したように、仮想化データストアゲートウェイ352を、ローカルに少なくともいくつかのデータをキャッシュする、たとえばよく利用するデータまたは重大なデータをキャッシュする仮想化サービスクライアント352に提供してもよい。仮想化サービスクライアント352は、仮想化データストアサービス312と1または複数の高帯域幅通信チャンネルを介して通信し、ローカルキャッシュから新規のまたは修正したデータをアップロードする。それによって、データのプライマリストレージ(仮想化データストア316)は維持される。
仮想化データストアシステムのデータ重複排除技術
たとえば、前述のように仮想化データストアシステムを適用し、仮想化データストア内の冗長データを低減または排除するデータ重複排除技術の実施形態を記載する。データ重複排除技術の実施形態では、フィンガープリントディクショナリを維持し、仮想化データストアにアップロードすべきデータユニットを仮想化データストア顧客(送信器)で判断する代わりに、フィンガープリントディクショナリを仮想化データストアプロバイダ(受信器)に維持し、アップロードすべきデータユニットを判断することは仮想化データストアプロバイダで実行される。
図4Aから4Fは、仮想化データストアシステムで実装するデータ重複排除技術を例示するブロック図である。仮想化データストアシステムは、少なくともある実施形態によれば、仮想化データストア顧客の仮想化データストアゲートウェイを含む。これらの図は一例として示されることに留意されたい。データ重複排除技術の実施形態は、送信器(データソース)および受信器(データストア)を含む任意のデータストレージシステムに適用してもよい。図4Aを参照すると、受信器、仮想化データストアプロバイダ210は、1または複数の仮想化データストア顧客250のために、データ220を仮想化データストア216に保存してもよい。仮想化データストアプロバイダ210は、仮想化データストアサービス212を提供してもよい。仮想化データストアサービス212は、インターフェース、たとえばウェブサービスインターフェースを提供してもよい。このインターフェースを介して、仮想化データストア顧客250は、サービス212が提供する機能にアクセスしてもよい。
仮想化データストアサービス212は、フィンガープリントディクショナリ230の仮想化データストア216に保存したデータ220のフィンガープリント232を保存してもよい。少なくともある実施形態では、フィンガープリント232はデータユニット220のハッシュであってもよい。少なくともある実施形態では、フィンガープリント232は、任意の種類の暗号学的に強い一方向ハッシュ関数、たとえば安全なハッシュアルゴリズム(SHA)256ハッシュ関数であってもよい。暗号学的に強い一方向ハッシュ関数を使用することで安全性が実現し、このようなハッシュ関数を使用する場合の衝突はほとんど起こらないため、衝突を避けることができる。衝突とは、2つのデータユニットが同じフィンガープリントを作成することである。ブロックベースのデータシステム(ブロックストレージシステムともいわれる)では、データユニットは、たとえば、データブロックの256kバイト部分、データブロックの1024kバイト部分、またはデータブロックのいくつかのその他の固定または可変サイズの部分であってもよい。ファイルベースのシステムでは、ブロックベースのデータシステムと同様に、データユニットはファイル、またはファイルの部分であってもよい。
フィンガープリントディクショナリ230は単一のシステム上にあってもよく、または2つ以上のシステム、たとえば2つ以上のサーバシステムに分散されていてもよい。ある実施形態では、フィンガープリントディクショナリ230は仮想化データストアサービス212に2つ以上のサーバにわたるコンシステントハッシュディクショナリとして実装され、維持されてもよい。少なくともある実施形態では、フィンガープリントディクショナリ230は、固定サイズのディクショナリであってもよい。
少なくともある実施形態では、仮想化データストアサービス212は、複数の顧客250のフィンガープリント232を単一のフィンガープリントディクショナリ230に維持してもよい。顧客は具体的なデータ集の「所有者」であり、個人、企業、または事業部、部、事務所、またはその他の企業内の組織であってもよい。ある実施形態では、各顧客250には特有の顧客識別子を割り当てる。顧客識別子は、それぞれの顧客データのフィンガープリント232に付加され、またはその他の方法で関連してもよい。代替的に、仮想化データストアサービス212は、個別のフィンガープリントディクショナリ230を各顧客250に維持してもよい。
仮想化データストアゲートウェイ252は、仮想化データストア顧客250と仮想化データストアサービス212との間のインターフェースとして機能してもよい。仮想化データストアゲートウェイ252を、ハードウェア、ソフトウェア、またはその組み合わせに実装してもよい。仮想化データストアゲートウェイ252のいくつかの実施形態を、仮想化データストア顧客250のローカルネットワークに接続し、またインターネットなどのグローバルネットワークにも接続する仮想化データストア顧客250の専用装置または機器として実装してもよい。装置または機器は、ゲートウェイ252の様々な機能を実施するソフトウェアおよび/またはハードウェアを含んでいてもよい。代替的に、仮想化データストアゲートウェイ252を、仮想化データストア顧客250データセンタの1または複数のサーバシステム上の仮想装置または機器として実装してもよい。大量のデータを仮想化データストアサービス212と仮想化データストアゲートウェイ252間のグローバルネットワークにわたって転送する必要があることもあるため、グローバルネットワークの接続は、一般に、高帯域幅接続である。
要望に応じて仮想化データストア216からデータを取り込むよりも、大きなデータのブロックまたはデータのチャンク、データ全体量さえも、仮想化データストアゲートウェイ252によってローカルにキャッシュされてもよい。仮想化データストアゲートウェイ252は、物理的なデータストレージおよび/またはメモリを含んでいてもよく、その上にデータ256のローカルキャッシュ254、たとえば、頻繁にアクセスするデータまたは重大なデータを維持してもよい。ローカルキャッシュ254は、揮発性または不揮発性ストレージまたはメモリ、またはその組み合わせに実装されてもよい。データ256のローカルキャッシュ254、たとえば頻繁にアクセスするデータまたは重大なデータを維持することは、一般に、仮想化データストア顧客250のユーザがアクセスするデータアクセス時間を改良してもよい。多くのまたはほとんどのデータアクセスは、アクセスごとにデータを仮想化データストア216から取り込むよりも、ローカルキャッシュ254からサービスを受けることができるからである。ただし、仮想化データストア216は仮想化データストア顧客250のプライマリデータストアとして機能する。したがって、仮想化データストアゲートウェイ252は、仮想化データストアサービス212とグローバルネットワークを介して通信し、定期的に、不定期に、または継続してローカルキャッシュ254の新規のまたは修正したデータを仮想化データストア216にアップロードする。
仮想化データストアゲートウェイ252は、少なくともある実施形態では、キャッシュされたデータ256を比較的大きなブロック、たとえば4メガバイトのブロックまたは10メガバイトのブロックに維持してもよいが、それより大きいまたは小さいブロックサイズを使用してもよい。たとえば新規データを作成し、または既存データを修正するために、ユーザまたはプロセスがデータブロック256にアクセスするとき、ブロックを「ダーティ」とマークしてもよい。ただし、アクセスによって、ブロックのほんの一部のみを変更してもよい。このように、図4Aに示すように、仮想化データストアゲートウェイ252は、たとえばハッシュ関数を各ユニットに適用することによって、ダーティブロックのユニットのフィンガープリント270を生成してもよい。ブロックベースのデータシステム(ブロックストレージシステムともいう)では、データユニットは、たとえば、データブロックの256kバイト部分、データブロックの1024kバイト部分、またはデータブロックのいくつかのその他の固定または可変サイズの部分であってもよい。(ファイルベースのシステムでは、データユニットはファイル、またはブロックベースのデータシステムの部分と類似するファイルの部分であってもよい。)
図4Bでは、仮想化データストアゲートウェイ252は、ダーティブロックのために生成されたフィンガープリント270を仮想化データストアサービス212に送信してもよい。
図4Cでは、仮想化データストアサービス212はフィンガープリントディクショナリ230を検索して、仮想化データストアゲートウェイ252から受信したフィンガープリント270と適合させてもよい。仮想化データストアサービス212が実装する検索機能272によって検索を実行してもよい。当業者は、任意の種類の検索技術を用いてもよいことを理解するであろう。前述したように、ある実施形態では、顧客250に対する特有の識別子を用いて、これらのフィンガープリント270を他の顧客250のフィンガープリントから識別して衝突を避けてもよい。これは、それぞれの顧客250に特有のフィンガープリントディクショナリ230を検索することによって、またはすべての顧客250に共通するフィンガープリントディクショナリ230から特有の識別子によって、それぞれの顧客250に属するものとして指示されたフィンガープリントを検索することによって行う。フィンガープリントディクショナリ230内で発見したフィンガープリント270をアップロードする必要はない。ディクショナリ230内に存在するということは、対応するデータユニットが仮想化データストア216に存在することを示すからである。フィンガープリントディクショナリ230内で発見できないフィンガープリント270はアップロードする必要がある。ディクショナリ230にないということは、対応するデータユニットが仮想化データストア216に存在しないか、または対応するデータユニットが変更され、交換または更新の必要があることを示すからである。
フィンガープリント270が生成されるデータブロック全体が新規に作成されたデータブロックである場合は、フィンガープリント270のどれもがフィンガープリントディクショナリ230で発見されず、したがって、すべての対応するユニットを仮想化データストア216にアップロードする必要が生じる場合もあることに留意されたい。ただし、同じデータユニットが顧客250に対して以前にアップロードされた他のブロック内に存在する場合は、いくつかの、またはすべてのフィンガープリント270がフィンガープリントディクショナリ230内で発見されることもある。したがって、少なくともいくつかの対応するユニットを仮想化データストア216にアップロードする必要がないこともある。つまり、2つ以上のデータのブロックは、少なくともいくつかの共通のユニットを仮想化データストア216内で共有してもよい。
図4Dでは、仮想化データストアサービス212は、「ダーティ」と識別したデータユニットの1または複数のデータユニット識別子280(つまり、仮想化データストア216にアップロードする必要があるデータブロックからのデータユニット)を仮想化データストアゲートウェイ252に返す。ある実施形態では、データユニット識別子280は、データユニットの1または複数のそれぞれのフィンガープリント270であってもよい。アップロードする必要があるデータユニットを識別するために別の方法を用いてもよい。たとえば、ある実施形態では、ブロック番号/ユニット番号インデキシング方式を用いて、アップロードする必要があるデータユニットを識別してもよい。ある実施形態では、ビットフィールド方式を用いてもよい。ビットフィールド方式では、「ビットマップ」内の1または複数のビットを設定して、アップロードする必要があるデータユニットまたはアップロードする必要のないデータユニットのいずれかを表示してもよい。ある実施形態では、仮想化データストアサービス212によってデータストアゲートウェイ252に送信された1または複数のデータユニット識別子280は、アップロードする必要がある1または複数のデータユニットではなく、むしろアップロードする必要のない1または複数のデータユニットを表示してもよい。ある実施形態では、帯域幅使用を低減するために、仮想化データストアサービス212は、アップロードする必要のない1または複数のデータユニットのセットまたはアップロードする必要がある1または複数のデータユニットのセットのいずれかを表示する1または複数のデータユニット識別子を、どちらが小さいかによって送信してもよい。たとえば、仮想化データストアゲートウェイ252に送信された1または複数の識別子は、アップロードする必要がある1または複数のデータユニット、またはアップロードする必要のない1または複数のデータユニットかどちらに対するものかを表示する情報をヘッダに含んでいてもよい。
図4Eでは、識別した1または複数のデータユニット282を、仮想化データストアゲートウェイ252から仮想化データストアサービス212にアップロードする。ダーティブロックから識別した1または複数のデータユニットのみをアップロードすることに留意されたい。仮想化データストアサービス212が、ブロックのすべてのデータユニットを「ダーティ」であると識別しない限り、ブロック全体はアップロードされない。
図4Fでは、仮想化データストアサービス212は識別した1または複数のデータユニット282を仮想化データストア216に保存する。仮想化データストアサービス212は、所与の識別したデータユニット282を仮想化データストア216に新規のデータユニットとして追加してもよく、または仮想化データストア216内の既存データユニットを所与の識別したデータユニット282と置き換えるか、または更新してもよい。
ある実施形態では、識別したデータユニット282を仮想化データストアサービス212にアップロードする前に、データユニット282を仮想化データストアゲートウェイ252によって圧縮して、さらに通信チャンネルの帯域幅使用を低減してもよい。ある実施形態では、仮想化データストアゲートウェイ252は、所与のデータユニットの圧縮バージョンが圧縮していないバージョンよりも、ある閾値量または割合だけ小さいがどうかを判断し、小さい場合は圧縮バージョンをアップロードし、そうでない場合は圧縮していないバージョンをアップロードしてもよい。仮想化データストアサービス212にアップロードされた圧縮データユニットは、仮想化データストア216に保存する前に解凍されてもよいが、必須ではない。
前述のように、少なくともある実施形態では、フィンガープリントディクショナリ230は固定サイズのディクショナリであってもよい。このように、ある実施形態では、フィンガープリントディクショナリ230は、仮想化データストア216に保存したすべてのデータユニットのフィンガープリント232を保存しないこともある。このように、これらの実施形態では、仮想化データストアサービス212は、1または複数のディクショナリ維持機能を実装してもよい。ディクショナリ維持機能は、定期的にまたは必要に応じて、フィンガープリント232、たとえば陳腐なまたは最近もっとも使われていない(LRU)フィンガープリント232を消去し、削除し、または置き換える。このように、フィンガープリント270を仮想化データゲートウェイ252から受信することに対応して、仮想化データストアサービス212がディクショナリ230内にあると判断する1または複数のフィンガープリントを、ディクショナリ維持機能によって、データ重複排除技術において交換が終了する前に、消去することが可能である。このように、ある実施形態では、図4Eに示すように、1または複数のデータユニット282を仮想化データストアゲートウェイ252から受信後に、仮想化データストアサービス212は受信した1または複数のデータユニットをフィンガープリントディクショナリ230に対して確認し、任意のデータユニットが欠けているかを判断してもよい。つまり、仮想化データストアサービス212が最初にディクショナリ230(図4C参照)にあると判断した任意のフィンガープリント270がもはやディクショナリ230になく、したがって、トランザクションを完了するためには対応するデータユニットが必要であることを判断してもよい。ある実施形態では、仮想化データストアサービス212がトランザクションを完了するために追加のデータユニットが必要であると判断すると、トランザクションを再開してもよい。つまり、仮想化データストアサービス212は、フィンガープリント270の新規のリストを仮想化データストアゲートウェイ252から要求してもよい。ただし、仮想化データストアサービス212および仮想化データストアゲートウェイ252の両方はすでにトランザクションの状態情報を持っているため、ある実施形態では、この状態情報を活用して帯域幅をセーブしてもよい。これらの実施形態では、仮想化データストアサービス212は、トランザクションの追加段階として、1または複数のデータユニット識別子280を仮想化データストアゲートウェイ252に送信して、欠けているデータユニットのみを要求してもよい。つまり、トランザクション中にフィンガープリント232が消去されたデータユニットのみを要求してもよい。
図4Aから4Fの仮想化データストアシステムに関連して前述したプロセスは、連続したプロセスであってもよい。つまり、仮想化データストアゲートウェイ252は連続してダーティデータのブロックを確認し、ブロック内のデータユニットのフィンガープリントを生成し、フィンガープリントを仮想化データストアサービス212に送信し、アップロードすべきデータユニットの表示を受信し、表示されたデータユニットを仮想化データストアサービス212にアップロードする。仮想化データストアサービス212は、フィンガープリントディクショナリ230を維持して、仮想化データストア216の現在の状態を反映し、1または複数の仮想化データストアゲートウェイ252から受信したデータユニットによって、仮想化データストア216内のデータブロックを保存または更新する。
図5は、少なくともある実施形態による、仮想化データストアゲートウェイを初期化するための方法のフローチャートである。500に表示するように、仮想化データストアゲートウェイを仮想化データストア顧客にインスタンス化する。仮想化データストアゲートウェイのいくつかの実施形態を、仮想化データストア顧客データセンタのローカルネットワークに接続し、またグローバルネットワーク(たとえば、インターネット)にも接続する専用装置または機器として実装してもよい。装置または機器は、ゲートウェイの様々な機能を実施するソフトウェアおよび/またはハードウェアを含んでいてもよい。代替的に、仮想化データストアゲートウェイを、仮想化データストア顧客データセンタの1または複数のサーバシステム上の仮想装置または機器として実装してもよい。
502に示すように、1または複数のユーザは1または複数のデータ量を仮想化データストアゲートウェイにインスタンス化してもよい。504では、顧客はデータの1または複数の量を仮想化データストアゲートウェイに生成または修正する。たとえば、クライアント装置のユーザは量をクライアント装置から作成し、量をクライアント装置のデスクトップに搭載し、量の新規のデータをクライアント装置から作成してもよい。
506に表示するように、仮想化データストアゲートウェイは新規のまたは修正したデータ(つまり、「ダーティ」データ)を仮想化データストアに仮想化データストアサービスを介してアップロードする。データのアップロードは、たとえば図6に例示するように、データ重複排除技術によって実行され、それによって仮想化データストアサービスは、フィンガープリントディクショナリを保存、維持、および確認し、仮想化データストアにアップロードする必要があるデータユニットだけが仮想化データストアサービスに送信される。データブロックの修正およびデータ重複排除処理、およびデータユニットのアップロードは、継続したプロセスであってもよい。つまり、仮想化データストアゲートウェイは継続して、データ重複排除技術によって、ダーティデータのブロックを処理し、データユニットをブロックから仮想化データストアに仮想化データストアサービスを介してアップロードしてもよい。
図6は、少なくともある実施形態による、仮想化データストアゲートウェイを含む仮想化データストアシステムで実装されるデータ重複排除技術のフローチャートである。600に表示するように、仮想化データストアゲートウェイは、データユニットのフィンガープリントをダーティデータブロックに生成する。602に表示するように、仮想化データストアゲートウェイは、フィンガープリントを仮想化データストアサービスにネットワーク(たとえば、インターネット)を介して送信する。604に表示するように、仮想化データストアサービスは、フィンガープリントをフィンガープリントディクショナリで検索し、対応するデータユニットが仮想化データストアに保存されているか判断する。606に表示するように、仮想化データストアサービスは、アップロードすべきデータの1または複数のユニット(つまり、仮想化データストアによると、フィンガープリントディクショナリに保存されていないユニット)を識別する情報を仮想化データストアゲートウェイに送信する。ある実施形態では、アップロードすべきデータの1または複数のユニットを識別する情報は、アップロードする必要がある1または複数のデータユニットを表示してもよい。ある実施形態では、アップロードすべきデータの1または複数のユニットを識別する情報は、アップロードする必要がある1または複数のデータユニットよりも、アップロードする必要のない1または複数のデータユニットを表示してもよい。ある実施形態では、帯域幅使用を低減するために、仮想化データストアサービスは、アップロードする必要のない1または複数のデータユニットのセット、またはアップロードする必要がある1または複数のデータユニットのセットのいずれかを表示する情報を、どちらがより小さいかによって送信してもよい。ある実施形態では、「ビットマップ」内の1または複数のビットを設定して、アップロードする必要があるデータユニットまたはアップロードする必要のないデータユニットのいずれかを表示するビットフィールド方式を使用してもよい。608に表示するように、仮想化データストアゲートウェイは、識別した1または複数のユニットを仮想化データストアサービスにネットワークを介してアップロードする。ある実施形態では、仮想化データストアサービスにアップロードする前に、少なくともいくつかのデータユニットを仮想化データストアゲートウェイで圧縮してもよい。610に表示するように、仮想化データストアサービスは、1または複数のユニットを仮想化データストアに保存し、フィンガープリントディクショナリを適切な1または複数のフィンガープリントで更新する。
少なくともある実施形態では、フィンガープリントディクショナリは固定サイズのディクショナリであってもよい。これらの実施形態では、仮想化データストアサービスは、1または複数のディクショナリ維持機能を実装してもよい。ディクショナリ維持機能は、定期的にまたは必要に応じて、フィンガープリントを消去し、削除し、または置き換える。このように、図6の604に表示するように、フィンガープリントを仮想化データストアゲートウェイから受信することに対応して、仮想化データストアサービスがディクショナリ内にあると判断する1または複数のフィンガープリントを、ディクショナリ維持機能によって、データ重複排除技術において交換が終了する前に、消去することが可能である。このように、ある実施形態では、1または複数のデータユニットを仮想化データストアゲートウェイから受信後に、仮想化データストアサービスは受信した1または複数のデータユニットをフィンガープリントディクショナリに対して確認し、仮想化データストアサービスが最初にディクショナリにあると判断した任意のフィンガープリントが、もはやディクショナリになく、したがって、トランザクションを完了するためには対応するデータユニットが必要であることを判断してもよい。ある実施形態では、仮想化データストアサービスがトランザクションを完了するために追加のデータユニットが必要であると判断すると、仮想化データストアサービスは、フィンガープリントの新規のリストを仮想化データストアゲートウェイに要求して、トランザクションを再開してもよい。ただし、仮想化データストアサービスおよび仮想化データストアゲートウェイ両方はすでにトランザクションの状態情報を持っているため、ある実施形態では、この状態情報を活用して帯域幅をセーブしてもよい。これらの実施形態では、仮想化データストアサービスは、トランザクションの追加段階として、1または複数のデータユニット識別子を仮想化データストアゲートウェイに送信して、欠けているデータユニットのみを要求してもよい。つまり、トランザクション中にフィンガープリントが消去されたデータユニットのみを要求してもよい。仮想化データストアゲートウェイは次に、追加して要求したデータユニットをアップロードしてもよく、仮想化データストアサービスは、それにしたがって、追加のデータユニットを処理してもよい。
例示システム
少なくともある実施形態では、サーバは、本明細書に記載するデータストレージシステム技術およびデータ重複排除技術を含むがこれらに限定されない1または複数の技術の部分またはすべてを実装する。サーバは、図7に例示するコンピュータシステム1000などの汎用コンピュータシステムを含んでいてもよい。汎用コンピュータシステムは、1または複数のコンピュータにアクセス可能なメディアへのアクセスを含み、またはそれらにアクセスするように構成される。例示する実施形態では、コンピュータシステム1000は、システムメモリ1020に入出力(I/O)インターフェース1030を介して接続する1または複数のプロセッサ1010を含む。コンピュータシステム1000はさらに、I/Oインターフェース1030に接続するネットワークインターフェース1040を含む。
様々な実施形態では、コンピュータシステム1000は、1つのプロセッサ1010を含むユニプロセッサシステム、またはいくつかのプロセッサ1010(たとえば、2台、4台、8台、または別の適切な台数)を含むマルチプロセッサシステムであってもよい。プロセッサ1010は、命令を実行可能な任意の適切なプロセッサであってもよい。たとえば、様々な実施形態では、プロセッサ1010は、x86、PowerPC、SPARC、またはMIPS ISA、または任意のその他の適切な命令セットアーキテクチャ(ISA)などの任意の種類のISAを実装する汎用または組み込みプロセッサであってもよい。マルチプロセッサシステムでは、各プロセッサ1010は共通に同じISAを実装してもよいが、必須ではない。
システムメモリ1020は、命令および1または複数のプロセッサ1010がアクセスできるデータを保存するように構成されてもよい。様々な実施形態では、システムメモリ1020は、スタティックランダムアクセスメモリ(SRAM)、同期ダイナミックRAM(SDRAM)、不揮発性/フラッシュタイプメモリ、または任意のその他の種類のメモリなどの任意の適切なメモリ技術を使用して実装されてもよい。例示する実施形態では、プログラム命令およびデータは、データストレージシステム技術およびデータ重複排除技術に関して前述した方法、技術、およびデータなどの1または複数の所望する機能を実装し、コード1025およびデータ1026としてシステムメモリ1020内に保存して示される。
一実施形態では、I/Oインターフェース1030は、プロセッサ1010、システムメモリ1020、および装置内の任意の周辺装置間のI/Oトラフィックを調整するように構成されてもよい。周辺装置には、ネットワークインターフェース1040またはその他の周辺インターフェースを含む。ある実施形態では、I/Oインターフェース1030は、データ信号を1つのコンポーネント(たとえば、システムメモリ1020)から別のコンポーネント(たとえば、プロセッサ1010)が使用する適切なフォーマットに転換するために必要な任意のプロトコル、タイミングまたはその他のデータ変換を実行してもよい。ある実施形態では、I/Oインターフェース1030は、たとえば、ペリフェラルコンポーネントインターコネクト(PCI)バス標準、またはユニバーサルシリアルバス(USB)標準の変形などの様々な種類の周辺バスを介して取り付けられた装置のサポートを含んでいてもよい。ある実施形態では、I/Oインターフェース1030の機能を、たとえばノースブリッジおよびサウスブリッジなどの、2つ以上の個別のコンポーネントに分けてもよい。ある実施形態では、システムメモリ1020のインターフェースなどのI/Oインターフェース1030のいくつかのまたはすべての機能を、プロセッサ1010に直接組み込んでもよい。
ネットワークインターフェース1040を、コンピュータシステム1000と、たとえば、その他のコンピュータシステムまたは図2から4Fに例示する装置などのネットワークまたはネットワーク1050に接続したその他の装置1060との間でデータが交換できるように構成してもよい。様々な実施形態では、ネットワークインターフェース1040は、たとえばイーサネット(登録商標)ネットワークなどの種類の、任意の適切な有線または無線の一般のデータネットワークを介して通信をサポートしてもよい。さらに、ネットワークインターフェース1040は、アナログ音声ネットワークまたはデジタルファイバ通信ネットワークなどの遠隔通信/テレフォニネットワークを介して、ファイバチャンネルSANなどのストレージ区域ネットワークを介して、または任意のその他の適切な種類のネットワークおよび/またはプロトコルを介して、通信をサポートしてもよい。
ある実施形態では、システムメモリ1020は、プログラム命令および図2から6に前述したデータを保存して、データストレージシステム技術およびデータ重複排除技術の実施形態を実装するように構成される、コンピュータアクセス可能メディアの1つの実施形態であってもよい。ただし、その他の実施形態では、プログラム命令および/またはデータを、異なる種類のコンピュータアクセス可能メディア上で受信、送信、または保存してもよい。一般には、コンピュータアクセス可能メディアは、磁気または光学メディアなどの非一時的ストレージメディアまたはメモリメディア、たとえば、コンピュータシステム1000にI/Oインターフェース1030を介して接続するディスクまたはDVD/CDを含んでいてもよい。非一時的コンピュータアクセス可能ストレージメディアは、RAM(たとえばSDRAM、DDRSDRAM、RDRAM、SRAMなど)、ROMなどの任意の揮発性または不揮発性メディアも含んでいてもよい。これらのメディアは、コンピュータシステム1000のある実施形態にシステムメモリ1020または別の種類のメモリとして、含まれていてもよい。さらに、コンピュータアクセス可能メディアは、ネットワークおよび/または無線リンクなどの通信メディアを介して伝達され、ネットワークインターフェース1040を介して実装されるように、電気、電磁気、またはデジタル信号などの伝達メディアまたは信号を含んでいてもよい。
以上、本発明を説明したが、 その代表的な実施態様を以下に「節」として記載する。
節
第1節 少なくとも1つのプロセッサと、
プログラム命令を備えるメモリとを備えるシステムであって、プログラム命令は、少なくとも1つのプロセッサによって、
データストアに保存したデータのフィンガープリントをフィンガープリントディクショナリに保存し、データは複数のデータユニットを備え、フィンガープリントディクショナリの各フィンガープリントは、データストア内に保存されたデータのそれぞれのデータユニットを一意に識別し、
ネットワークを介して装置から、装置でキャッシュされた異なるデータユニットにそれぞれ対応する1または複数のフィンガープリントを受信し、
フィンガープリントディクショナリを、装置から受信した1または複数のフィンガープリントそれぞれのために検索して、フィンガープリントがフィンガープリントディクショナリ内にあるか、またはフィンガープリントディクショナリ内にないかを判断し、フィンガープリントがフィンガープリントディクショナリ内にないと判断することは対応するデータユニットをアップロードすべきであることを示し、
装置にネットワークを介して、フィンガープリントディクショナリを検索することによって判断した、1または複数のアップロードすべきデータユニットの表示を送信し、
装置からネットワークを介して、表示された1または複数のデータユニットを受信し、各受信したデータユニットは、フィンガープリントディクショナリ内にはないフィンガープリントに対応し、
装置から受信した1または複数のデータユニットをデータストアに保存するように実行可能である、システム。
第2節 各フィンガープリントはそれぞれのデータユニットのハッシュである、第1節に記載のシステム。
第3節 ハッシュは、それぞれのデータユニットに適用される暗号学的に強い一方向ハッシュ関数によって生成される、第2節に記載のシステム。
第4節 プログラム命令は、少なくとも1つのプロセッサによって、フィンガープリントディクショナリを、装置から受信してデータストアに保存する各データユニットに対応するフィンガープリントで更新することをさらに備える、第1節に記載のシステム。
第5節 データはデータストアにデータブロックとして保存され、各データブロックは複数のデータユニットのうち2つ以上を備える、第1節に記載のシステム。
第6節 プログラム命令は、少なくとも1つのプロセッサによって、データストアを仮想化データストアとして複数の顧客にネットワークを介して提供するように実行可能であり、データストアに保存されるデータは複数の顧客それぞれの顧客データを含み、装置は複数の顧客の1つに関連し、装置は、データストアからのそれぞれの顧客の顧客データの少なくとも一部をローカルにキャッシュする、第1節に記載のシステム。
第7節 フィンガープリントディクショナリは複数の顧客の顧客データのフィンガープリントを含み、プログラム命令は、少なくとも1つのプロセッサによって、
顧客識別子を各顧客と関連づけ、
フィンガープリントディクショナリの検索によって、それぞれの顧客の顧客識別子にしたがってそれぞれの顧客データに対応するフィンガープリントのみを検索するように実行可能である、第6節に記載のシステム。
第8節 1または複数のアップロードすべきデータユニットの表示は、検索によって、フィンガープリントディクショナリ内に発見できなかったフィンガープリントのデータユニットを表示する、第1節に記載のシステム。
第9節 1または複数のアップロードすべきデータユニットの表示は、検索によってフィンガープリントディクショナリ内に発見されたフィンガープリントのデータユニットを表示する、第1節に記載のシステム。
第10節 フィンガープリントディクショナリ内にないフィンガープリントに対応するデータユニットのみを装置から受信する、第1節に記載のシステム。
第11節 プログラム命令は、少なくとも1つのプロセッサによって、
表示された1または複数のデータユニットを装置から受信後に、検索によってフィンガープリントディクショナリ内にあると表示された少なくとも1つのフィンガープリントは、その後フィンガープリントディクショナリから削除されたことを判断し、
装置にネットワークを介して、少なくとも1つのフィンガープリントに対応する少なくとも1つのデータユニットの表示を送信し、
装置からネットワークを介して、表示された少なくとも1つのデータユニットを受信するようにさらに実行可能である、第1節に記載のシステム。
第12節 データのフィンガープリントをフィンガープリントディクショナリにローカルに保存し、データは複数のデータユニットを備え、フィンガープリントディクショナリの各フィンガープリントは、データ内のそれぞれのデータユニットを一意に識別し、
ネットワークを介して装置から、装置でキャッシュされた異なるデータユニットにそれぞれ対応する1または複数のフィンガープリントを受信し、
フィンガープリントディクショナリを、装置から受信した1または複数のフィンガープリントそれぞれのために検索して、フィンガープリントがフィンガープリントディクショナリ内にあるか、またはフィンガープリントディクショナリ内にないかを判断し、フィンガープリントがフィンガープリントディクショナリ内にないと判断することは対応するデータユニットをアップロードすべきであることを示し、
装置にネットワークを介して、フィンガープリントディクショナリを検索することによって判断した、1または複数のアップロードすべきデータユニットの表示を送信し、
装置からネットワークを介して、表示された1または複数のデータユニットを受信し、各受信したデータユニットは、フィンガープリントディクショナリ内にはないフィンガープリントに対応することと、
を備える、方法。
第13節 各フィンガープリントはそれぞれのデータユニットのハッシュである、第12節に記載の方法。
第14節 ハッシュは、それぞれのデータユニットに適用される暗号学的に強い一方向ハッシュ関数によって生成される、第13節に記載の方法。
第15節 フィンガープリントディクショナリを、装置から受信した各データユニットに対応するフィンガープリントで更新することをさらに備える、第12節に記載の方法。
第16節 データは複数のデータブロックを備え、各データブロックは複数のデータユニットのうち2つ以上を備える、第12節に記載の方法。
第17節 データはデータストアに保存され、装置から受信した1または複数のデータユニットをデータストアに保存することをさらに備える、第12節に記載の方法。
第18節 データストアを仮想化データストアとして、複数の顧客にネットワークを介して提供することをさらに備える方法であって、データストアに保存されるデータは複数の顧客それぞれの顧客データを含み、装置は複数の顧客の1つに対応し、装置はデータストアからのそれぞれの顧客の顧客データの少なくとも一部をローカルにキャッシュする、第17節に記載の方法。
第19節 フィンガープリントディクショナリは、複数の顧客の顧客データのフィンガープリントを含み、顧客識別子を各顧客に関連させることをさらに備える方法であって、フィンガープリントディクショナリを検索することは、それぞれの顧客の顧客識別子にしたがって、それぞれの顧客データに対応するフィンガープリントの中のみから検索することを備える、第18節に記載の方法。
第20節 表示された1または複数のデータユニットを装置から受信後に、検索によってフィンガープリントディクショナリ内にあると表示された少なくとも1つのフィンガープリントは、その後フィンガープリントディクショナリから削除されたことを判断し、
装置にネットワークを介して、少なくとも1つのフィンガープリントに対応する少なくとも1つのデータユニットの表示を送信し、
装置からネットワークを介して、表示された少なくとも1つのデータユニットを受信することと、
をさらに備える、第12節に記載の方法。
第21節 コンピュータ実行可能なプログラム命令を保存する非一時的コンピュータアクセス可能ストレージメディアであって、
データのフィンガープリントをフィンガープリントディクショナリにローカルに保存し、データは複数のデータユニットを備え、フィンガープリントディクショナリの各フィンガープリントは、データ内のそれぞれのデータユニットを一意に識別し、
ネットワークを介して装置から、装置でキャッシュされた異なるデータユニットにそれぞれ対応する1または複数のフィンガープリントを受信し、
フィンガープリントディクショナリを、装置から受信した1または複数のフィンガープリントそれぞれのために検索して、フィンガープリントがフィンガープリントディクショナリ内にあるか、またはフィンガープリントディクショナリ内にないかを判断し、フィンガープリントがフィンガープリントディクショナリ内にないと判断することは対応するデータユニットをアップロードすべきであることを示し、
装置にネットワークを介して、フィンガープリントディクショナリを検索することによって判断した、1または複数のアップロードすべきデータユニットの表示を送信し、
装置からネットワークを介して、表示された1または複数のデータユニットを受信し、各受信したデータユニットは、フィンガープリントディクショナリ内にはないフィンガープリントに対応することと、
を実装する、非一時的コンピュータアクセス可能ストレージメディア。
第22節 各フィンガープリントはそれぞれのデータユニットのハッシュである、第21節に記載の非一時的コンピュータアクセス可能ストレージメディア。
第23節 ハッシュは、それぞれのデータユニットに適用される暗号学的に強い一方向ハッシュ関数によって生成される、第22節に記載の非一時的コンピュータアクセス可能ストレージメディア。
第24節 プログラム命令は、フィンガープリントディクショナリを、装置から受信した各データユニットに対応するフィンガープリントで更新するように実装する、コンピュータ実行可能である、第21節に記載の非一時的コンピュータアクセス可能ストレージメディア。
第25節 データは複数のデータブロックを備え、各データブロックは複数のデータユニットのうち2つ以上を備える、第21節に記載の非一時的コンピュータアクセス可能ストレージメディア。
第26節 データはデータストアに保存され、プログラム命令はさらに、装置から受信した1または複数のデータユニットをデータストアに保存するように実装するために、コンピュータ実行可能である、第21節に記載の非一時的コンピュータアクセス可能ストレージメディア。
第27節 プログラム命令は、データストアを仮想化データストアとして、複数の顧客にネットワークを介して提供し、データストアに保存されるデータは複数の顧客それぞれの顧客データを含み、装置は複数の顧客の1つに対応し、装置はデータストアからのそれぞれの顧客の顧客データの少なくとも一部をローカルにキャッシュするように実装するために、コンピュータ実行可能である、第26節に記載の非一時的コンピュータアクセス可能ストレージメディア。
第28節 フィンガープリントディクショナリは、複数の顧客の顧客データのフィンガープリントを含み、顧客識別子を各顧客に関連させるためにプログラム命令はコンピュータ実行可能であり、フィンガープリントディクショナリを検索する際に、それぞれの顧客の顧客識別子にしたがって、それぞれの顧客データに対応するフィンガープリントの中のみから検索するように実装するためにプログラム命令はコンピュータ実行可能である、第27節に記載の非一時的コンピュータアクセス可能ストレージメディア。
第29節 プログラム命令はさらに、表示された1または複数のデータユニットを装置から受信後に、
検索によってフィンガープリントディクショナリ内にあると表示された少なくとも1つのフィンガープリントは、その後フィンガープリントディクショナリから削除されたことを判断し、
装置にネットワークを介して、少なくとも1つのフィンガープリントに対応する少なくとも1つのデータユニットの表示を送信し、
装置からネットワークを介して、表示された少なくとも1つのデータユニットを受信するように実装するために、コンピュータ実行可能である、第21節に記載の非一時的コンピュータアクセス可能ストレージメディア。
第30節 データ受信器を実装し、データ受信器は、データのフィンガープリントをフィンガープリントディクショナリにローカルに保存し、データは複数のデータユニットを備え、フィンガープリントディクショナリの各フィンガープリントは、データ内のそれぞれのデータユニットを一意に識別する1または複数の装置と、
データ送信器を実装する1または複数の装置とを備えるシステムであって、
データ送信器は、
ローカルにキャッシュされたデータの複数のデータユニットのフィンガープリントを生成し、各フィンガープリントはローカルにキャッシュされたデータ内のそれぞれのデータユニットを一意に識別し、
フィンガープリントをデータ受信器に通信チャンネルを介して送信するように構成され、
データ受信器は、
フィンガープリントディクショナリを、データ送信器から受信したフィンガープリントのために検索して、フィンガープリントのそれぞれがフィンガープリントディクショナリ内にあるか、またはフィンガープリントディクショナリ内にないかを判断し、フィンガープリントがフィンガープリントディクショナリ内にないと判断することは対応するデータユニットをアップロードすべきであることを示し、
データ送信器に通信チャンネルを介して、フィンガープリントディクショナリを検索することによって判断した、1または複数のアップロードすべきデータユニットの表示を送信するように構成され、
データ送信器は、データ受信器に通信チャンネルを介して、表示された1または複数のデータユニットを送信するように構成され、フィンガープリントディクショナリ内にはないフィンガープリントに対応するデータユニットのみをデータ受信器に送信する、システム。
第31節 表示された1または複数のデータユニットをデータ送信器から受信後に、データ受信器はさらに、
検索によって、フィンガープリントディクショナリ内にあると表示された少なくとも1つのフィンガープリントは、その後フィンガープリントディクショナリから削除されたことを判断し、
データ送信器に通信チャンネルを介して、少なくとも1つのフィンガープリントに対応する少なくとも1つのデータユニットの表示を送信し、
データ送信器から通信チャンネルを介して、表示された少なくとも1つのデータユニットを受信するように構成される、第30節に記載のシステム。
第32節 通信チャンネルはインターネットである、第30節に記載のシステム。
第33節 データ受信器はデータをデータストアに保存し、データ受信器は、データ送信器から受信した1または複数のデータユニットをデータストアに保存する、第30節に記載のシステム。
第34節 通信チャンネルはネットワークであり、データ受信器は、データストアを仮想化データストアとして複数の顧客にネットワークを介して提供し、データストアに保存されたデータは複数の顧客それぞれの顧客データを含み、データ送信器は複数の顧客の1つに関連し、データ送信器は、データストアからのそれぞれの顧客の顧客データの少なくとも一部をローカルにキャッシュする、第33節に記載のシステム。
第35節 フィンガープリントディクショナリは複数の顧客の顧客データのフィンガープリントを含み、データ受信器は顧客識別子を各顧客に関連させ、フィンガープリントディクショナリを検索する際に、データ受信器はそれぞれの顧客の顧客識別子にしたがって、それぞれの顧客データに対応するフィンガープリントの中のみから検索する、第34節に記載のシステム。
第36節 データ送信器は顧客サイトのローカルネットワークに通信可能に接続し、通信チャンネルはグローバルネットワークを介した通信チャンネルであり、データ送信器は、
データの部分をデータ受信器からグローバルネットワークを介してダウンロードして、ローカルにキャッシュし、
ローカルにキャッシュされたデータに、ローカルネットワークのその他の装置で実装される1または複数の仮想コンピューティングシステムを含む、ローカルネットワークのその他のプロセスに対するローカルアクセスを提供する、第30節に記載のシステム。
第37節 データ送信器は通信チャンネルの帯域幅の一部を割り当てられ、データ送信器は、必要な場合は通信チャンネルの追加の帯域幅の割り当てを要求し、必要ではない場合は通信チャンネルの帯域幅を解除するように構成される、第36節に記載のシステム。
第38節 少なくとも1つのプロセッサと、
プログラム命令を備えるメモリとを備える装置であって、プログラム命令は、少なくとも1つのプロセッサによって、
ローカルにキャッシュされたデータの複数のデータユニットのフィンガープリントを生成し、各フィンガープリントはローカルにキャッシュされたデータ内のそれぞれのデータユニットを一意に識別し、
フィンガープリントを遠隔データストレージサービスにネットワークを介して送信し、遠隔データストレージサービスはデータのプライマリデータストアを維持し、
遠隔データストレージサービスからネットワークを介して、プライマリデータストアに保存すべき1または複数のデータユニットの表示を受信し、
ネットワークを介して遠隔データストレージサービスに、遠隔データストレージサービスによってプライマリデータストアに保存するための1または複数のデータユニットを送信するように実行可能である、装置。
第39節 データユニットのフィンガープリントを生成するために、プログラム命令は、少なくとも1つのプロセッサによって、ハッシュ関数をデータユニットに適用するようにコンピュータ実行可能である、第38節に記載の装置。
第40節 ハッシュ関数は暗号学的に強い一方向ハッシュ関数である、第39節に記載の装置。
第41節 ローカルにキャッシュされたデータは複数のデータブロックとしてキャッシュされ、複数のデータユニットは複数のデータブロックの1つに対応する、第38節に記載の装置。
第42節 複数のデータブロックの1つは、ローカルにキャッシュされたデータブロックが作成または修正され、したがってローカルにキャッシュされたデータからプライマリデータストアにアップロードすることが必要であると表示するためにダーティとマークされる、第41節に記載の装置。
第43節 遠隔データストレージサービスは、仮想化データストアを複数の顧客にネットワークを介して提供し、仮想化データストアに保存されるデータは複数の顧客それぞれの顧客データを含み、装置は複数の顧客の1つに関連し、プログラム命令は、少なくとも1つのプロセッサによって、データストアからそれぞれの顧客の顧客データの少なくとも一部分をローカルにキャッシュするように実行可能である、第38節に記載の装置。
第44節 装置は顧客サイトのローカルネットワークに通信可能に接続し、プログラム命令は、少なくとも1つのプロセッサによって、
顧客データの部分を遠隔データストレージサービスからダウンロードして、ローカルにキャッシュし、
ローカルにキャッシュされた顧客データに、ローカルネットワークのその他の装置で実装される1または複数の仮想コンピューティングシステムを含む、ローカルネットワークのその他のプロセスに対するローカルアクセスを提供するように実行可能である、第43節に記載の装置。
第45節 顧客データをダウンロードしてローカルにキャッシュした部分は、ブロックベースのストレージ技術によるデータブロックである、第44節に記載の装置。
第46節 装置は、ネットワークを介して遠隔データストレージサービスまでの通信チャンネルの帯域幅の一部を割り当てられ、プログラム命令は、少なくとも1つのプロセッサによって、必要な場合は、データユニットを遠隔データストレージサービスにアップロードするために通信チャンネルの追加の帯域幅の割り当てを要求し、必要ではない場合には、通信チャンネルの帯域幅を解除するように実行可能である、第38節に記載の装置。
第47節 ローカルにキャッシュされたデータの複数のデータユニットのフィンガープリントを生成し、各フィンガープリントはローカルにキャッシュされたデータ内のそれぞれのデータユニットを一意に識別し、
フィンガープリントをデータ受信器に通信チャンネルを介して送信し、
データサービスから通信チャンネルを介して、データサービスに通信チャンネルを介してアップロードすべき1または複数のデータユニットの表示を受信し、
通信チャンネルを介してデータサービスに、表示された1または複数のデータユニットを送信することと、
を備える、方法。
第48節 データユニットのフィンガープリントを生成するために、プログラム命令は、暗号学的に強い一方向ハッシュ関数をデータユニットに適用するようにコンピュータ実行可能である、第47節に記載の方法。
第49節 ローカルにキャッシュされたデータは複数のデータブロックとしてキャッシュされ、複数のデータユニットは複数のデータブロックの1つに対応する、第47節に記載の方法。
第50節 複数のデータブロックの1つは、ローカルにキャッシュされたデータブロックが作成または修正され、したがってローカルにキャッシュされたデータからデータサービスにアップロードすることが必要であると表示するためにダーティとマークされる、第21節に記載の方法。
第51節 データサービスは、データのプライマリデータストアを維持する遠隔データストレージサービスである、第47節に記載の方法。
第52節 通信チャンネルはネットワークである、第47節に記載の方法。
第53節 データサービスは、仮想化データストアを複数の顧客にネットワークを介して提供し、仮想化データストアに保存されるデータは複数の顧客それぞれの顧客データを含み、装置は複数の顧客の1つに関連し、プログラム命令は、データストアからのそれぞれの顧客の顧客データの少なくとも一部をローカルにキャッシュするようにコンピュータ実行可能である、第52節に記載の方法。
第54節 装置は顧客サイトのローカルネットワークに通信可能に接続し、プログラム命令は、
顧客データの部分をデータサービスからダウンロードして、ローカルにキャッシュし、
ローカルにキャッシュされたデータに、ローカルネットワークのその他の装置で実装される1または複数の仮想コンピューティングシステムを含む、ローカルネットワークのその他のプロセスに対するローカルアクセスを提供するように実装するために、コンピュータ実行可能である、第52節に記載の方法。
第55節 コンピュータ実行可能であるプログラム命令を保存する非一時的コンピュータアクセス可能ストレージメディアであって、プログラム命令は、
ローカルにキャッシュされたデータの複数のデータユニットのフィンガープリントを生成し、各フィンガープリントはローカルにキャッシュされたデータ内のそれぞれのデータユニットを一意に識別し、
フィンガープリントをデータサービスに通信チャンネルを介して送信し、
データサービスから通信チャンネルを介して、データサービスに通信チャンネルを介してアップロードすべき1または複数のデータユニットの表示を受信し、
通信チャンネルを介してデータサービスに、表示された1または複数のデータユニットを送信するように実装する、非一時的コンピュータアクセス可能ストレージメディア。
第56節 データユニットのフィンガープリントを生成するために、プログラム命令は、ハッシュ関数をデータユニットに適用するようにコンピュータ実行可能である、第55節に記載の非一時的コンピュータアクセス可能ストレージメディア。
第57節 ハッシュ関数は暗号学的に強い一方向ハッシュ関数である、第56節に記載の非一時的コンピュータアクセス可能ストレージメディア。
第58節 ローカルにキャッシュされたデータは複数のデータブロックとしてキャッシュされ、複数のデータユニットは複数のデータブロックの1つに対応する、第55節に記載の非一時的コンピュータアクセス可能ストレージメディア。
第59節 複数のデータブロックの1つは、ローカルにキャッシュされたデータブロックが作成または修正され、したがってローカルにキャッシュされたデータからデータサービスにアップロードすることが必要であると表示するためにダーティとマークされる、第58節に記載の非一時的コンピュータアクセス可能ストレージメディア。
第60節 データサービスは、データのプライマリデータストアを維持する遠隔データストレージサービスである、第55節に記載の非一時的コンピュータアクセス可能ストレージメディア。
第61節 通信チャンネルはネットワークである、第55節に記載の非一時的コンピュータアクセス可能ストレージメディア。
第62節 データサービスは、仮想化データストアを複数の顧客にネットワークを介して提供し、仮想化データストアに保存されるデータは複数の顧客それぞれの顧客データを含み、装置は複数の顧客の1つに関連し、プログラム命令は、データストアからのそれぞれの顧客の顧客データの少なくとも一部をローカルにキャッシュするようにコンピュータ実行可能である、第61節に記載の非一時的コンピュータアクセス可能ストレージメディア。
第63節 装置は顧客サイトのローカルネットワークに通信可能に接続し、プログラム命令は、
顧客データの部分をデータサービスからダウンロードして、ローカルにキャッシュし、
ローカルにキャッシュされたデータに、ローカルネットワークのその他の装置で実装される1または複数の仮想コンピューティングシステムを含む、ローカルネットワークのその他のプロセスに対するローカルアクセスを提供するように実装するために、コンピュータ実行可能である、第61節に記載の非一時的コンピュータアクセス可能ストレージメディア。
第64節 顧客データをダウンロードしてローカルにキャッシュした部分は、ブロックベースのストレージ技術によるデータブロックである、第63節に記載の非一時的コンピュータアクセス可能ストレージメディア。
結論
様々な実施形態は、さらに、コンピュータアクセス可能メディアに関する前述の説明にしたがって実装する命令および/またはデータを受信し、送信し、または保存することを含む。一般には、コンピュータアクセス可能メディアは、磁気メディアまたは光学メディアなどのストレージメディアまたはメモリ、たとえば、ディスクまたはDVD/CD−ROM、RAM(たとえばSDRAM、DDR、RDRAM、SRAMなど)、ROMなどの揮発性または不揮発性メディアを含んでいてもよく、また、ネットワークおよび/または無線リンクなどの通信メディアが伝達する電気、電磁気、またはデジタル信号などの伝達メディアまたは信号を含んでいてもよい。
図に例示する様々な方法および本明細書に記載する様々な方法は、方法の代表的な実施形態を表す。方法は、ソフトウェア、ハードウェア、またはその組み合わせに実装されてもよい。方法の順番を変化させてもよく、様々な要素の追加、順番変更、組み合わせ、削除、修正などを行ってもよい。
様々な修正および変更を、この開示から利益を受ける当業者に明らかなように行ってもよい。すべてのこのような修正および変更、したがって、前述の説明は限定的なものではなく、例示として理解されることを意図するものである。