(57)【要約】本発明は、データ記憶とデータ送信をエンドツーエンドで最適化するための方法、システムおよびコンピュータプログラムプロダクトに適用される。データがどのようにデータストア内に記憶されているかの詳細がクライアントおよびアプリケーションに見えるようになっている。クライアントおよびアプリケーションは、データが実際にデータストア内に記憶されている通りにデータを取得するリクエストをデータストアに対して行なって、要求したデータの冗長処理を除去する機能を備えている。データストア内のデータの圧縮と非重複は、ＬＡＮまたはＷＡＮ上を送信されるデータの効率性を向上し、レイテンシを減少するために強化されている。
2013534007.tif 000002
【特許請求の範囲】
【請求項１】
クライアントとデータ記憶サーバを含むコンピューティング環境において、前記データ記憶サーバ内の記憶最適化の詳細が前記クライアントに見えるようにする方法であって、
前記データ記憶サーバ上のファイルデータの記憶を記述したメタデータにアクセスするステップであって、前記ファイルデータは、前記ファイルデータのネイティブ形体とは異なる形体で前記データ記憶サーバ上にストアされており、前記メタデータは、前記ファイルデータの記憶形体を前記データ記憶サーバ上にストアされている通りに見えるようにするステップと、
前記ファイルデータに対するリクエストを前記クライアントから前記データ記憶サーバに送信するステップと、
前記ファイルデータの１つまたは２つ以上、前記データ記憶サーバ上のファイルデータの記憶を記述した追加メタデータおよび前記ファイルデータの少なくとも一部を表わすデータを含む情報を、前記データ記憶サーバから受信するステップと
を含むことを特徴とする方法。
【請求項２】
前記データ記憶サーバ上の前記ファイルデータの記憶を記述した前記メタデータは、前記データ記憶サーバ上の前記ファイルデータの非重複の結果得られる前記ファイルデータの記憶を記述したデータを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記データ記憶サーバ上の前記ファイルデータの記憶を記述した前記メタデータは、前記データファイルのサブセットの暗号ハッシュを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記データ記憶サーバ上の前記ファイルデータの記憶を記述した前記メタデータは、前記ファイルデータの複数のサブセットの各々の暗号ハッシュを含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記データ記憶サーバ上の前記ファイルデータの記憶を記述した前記メタデータは、前記ファイルデータの圧縮したサブセットを記述したデータを含むことを特徴とする請求項１に記載の方法。
【請求項６】
クライアントとデータ記憶サーバを含むコンピューティング環境において、前記データ記憶サーバ内の記憶最適化の詳細が前記クライアントに見えるようにする方法であって、
前記データ記憶サーバ上のファイルデータの記憶を記述したメタデータを送信するステップであって、前記ファイルデータは、前記ファイルデータのネイティブ形体とは異なる形体で前記データ記憶サーバ上にストアされており、前記メタデータは、前記ファイルデータの記憶形体を前記データ記憶サーバ上にストアされている通りに見えるようにするステップと、
コンピューティングシステムからの前記ファイルデータに対するリクエストを前記データ記憶サーバで受信するステップと、
前記ファイルデータの少なくとも１つ、前記データ記憶サーバ上のファイルデータの記憶を記述した追加メタデータおよび前記ファイルデータの少なくとも一部を表わしているデータを含む情報を前記データ記憶サーバから送信するステップと
を含むことを特徴とする方法。
【請求項７】
前記データ記憶サーバ上の前記ファイルデータの記憶を記述した前記メタデータは、前記データ記憶サーバ上の前記ファイルデータの非重複の結果得られる前記ファイルデータの記憶を記述したデータを含むことを特徴とする請求項６に記載の方法。
【請求項８】
前記データ記憶サーバ上の前記ファイルデータの記憶を記述した前記メタデータは、前記データファイルのサブセットの暗号ハッシュを含むことを特徴とする請求項６に記載の方法。
【請求項９】
前記データ記憶サーバ上の前記ファイルデータの記憶を記述した前記メタデータは、前記ファイルデータの複数のサブセットの各々の暗号ハッシュを含むことを特徴とする請求項６に記載の方法。
【請求項１０】
前記データ記憶サーバ上の前記ファイルデータの記憶を記述した前記メタデータは、前記ファイルデータの圧縮したサブセットを記述したデータを含むことを特徴とする請求項６に記載の方法。
【請求項１１】
１つまたは２つ以上のコンピュータプロセッサ上で実行されると、データ記憶サーバ内の記憶最適化の詳細がクライアントに見えるようにする方法を実行するコンピュータ実行可能命令が符号化されて格納されている１つまたは２つ以上のコンピュータ可読記憶媒体を含むコンピュータプログラムプロダクトであって、前記方法は、
ファイルデータに対するリクエストをコンピューティングシステムから前記データ記憶サーバに送信するステップと、
前記データ記憶サーバ上のファイルデータの記憶を記述した情報を含む情報を前記データ記憶サーバから受信するステップと、
を含むことを特徴とするコンピュータプログラムプロダクト。
【請求項１２】
前記データ記憶サーバ上の前記ファイルデータの記憶を記述した情報を含む前記情報は、前記データ記憶サーバ上の前記ファイルデータの非重複の結果得られる前記ファイルデータの記憶を記述したデータを含むことを特徴とする請求項１１に記載のコンピュータプログラムプロダクト。
【請求項１３】
前記データ記憶サーバ上の前記ファイルデータの記憶を記述した情報を含む前記情報は、前記ファイルデータのサブセットの暗号ハッシュを含むことを特徴とする請求項１１に記載のコンピュータプログラムプロダクト。
【請求項１４】
前記データ記憶サーバ上の前記ファイルデータの記憶を記述した情報を含む前記情報は、前記ファイルデータの複数のサブセットの各々の暗号ハッシュを含むことを特徴とする請求項１１に記載のコンピュータプログラムプロダクト。
【請求項１５】
前記データ記憶サーバ上の前記ファイルデータの記憶を記述した情報を含む前記情報は、前記ファイルデータの圧縮したサブセットを記述した情報を含むことを特徴とする請求項１１に記載のコンピュータプログラムプロダクト。
【発明の詳細な説明】
【背景技術】
【０００１】
記憶最適化機能性(storage optimization functionality)は、ファイルサーバおよびデータ記憶マーケットにおいて競争力を付けるためにますます重要になっている。ネットワークトラフィックの最適化も、コンピュータ環境とネットワーク環境、および既存のネットワークインフラストラクチャに統合される機器(appliance)において重要になっており、リアルタイムでネットワークトラフィックの最適化を行なうことによって有用な便益が得られる。
【０００２】
コンピュータ上で生成され、送信され、ストアされるデータの量は急速なペースで増加を続けている。コンシューマ（消費者）およびコンペティタ（競争企業）は、保存データに必要とされる記憶量を削減するためにデータ最適化手法を使用する傾向を高めている。例えば、データは圧縮されることがあり、ストアされたデータ内の冗長性は、データのストアのために必要なスペースを削減するために低減されることがある。ネットワーク上を転送されるデータ量を減少するために類似の手法も適用されつつある。しかし、データ記憶とデータ送信に対する現在のソリューションは大部分が別々で行われており、統一されたソリューションは知られていない。記憶手法と送信手法が別々であるために、データ記憶とデータ送信を一緒に見た場合に、冗長性、非互換性および不必要なオーバヘッドが生じている。
【０００３】
一例として、サーバ（すなわち、データストア）上にストアされるファイルは、データ記憶サーバ上にストアされる場合に、別々のセグメント（すなわち、チャンク(chunk)）に圧縮され、ストアされることがある。クライアントに送信されるファイルをクライアントがサーバに要求するとき、サーバはチャンクを再アセンブル(reassemble)し、ファイルを再構築(reconstitute)するためにファイルを展開(decompress)してからそのファイルをクライアントに送信しなければならない。
【０００４】
同様に、送信バンド幅（例えば、ネットワーク上の）、レイテンシ(latency)または送信コストを低減するためには、ネットワークエージェントはファイルを受け取ったあと、送信前にそのファイルを再び圧縮し、圧縮したファイルを他方のエンドポイントに送信し、そのあと送信経路の他方のエンドでファイルを展開することもある。
【０００５】
有用であるのは、統一されたデータ最適化ツールおよび手法であり、その中には、記憶と送信プロトコル、ファイルシステムＡＰＩ、データストア、サーバ、クライアント、アプリケーションおよびクラウドが含まれる。このようなツールと手法を使用すると、データ転送と送信プロトコルによって利用できる、保存データに対して最適化された記憶を提供することにより、ばらばらで別々の既存データ記憶とデータ送信ソリューションを拡張し、向上することができる。
【発明の概要】
【０００６】
本発明は、データ記憶とデータ送信をエンドツーエンド(end-to-end)で最適化するための方法、システム、デバイスおよびコンピュータプログラムプロダクトに適用される。例えば、本明細書に記載の実施形態は、データ記憶とデータ送信の両方の効率化と最適化を強化し、向上させることを可能にする。
【０００７】
一例示実施形態は、データ記憶サーバ内の記憶最適化の詳細がクライアントに見えるように（expose）する方法を提供している。この方法は、データ記憶サーバ上のファイルデータの記憶を記述したメタデータにアクセスするステップを含み、そこではファイルデータは、そのファイルデータのネイティブ形体（form）とは異なる形体でデータ記憶サーバ上にストアされている。このメタデータは、ファイルデータの記憶形体がデータ記憶サーバ上にストアされている通りに見えるようにする。
【０００８】
クライアントは、ファイルデータのリクエストを記憶サーバに送信することができ、ファイルデータ、データ記憶サーバ上のファイルデータの記憶を記述した追加メタデータ、および／またはファイルデータの少なくとも一部を表わしているデータを含む情報をデータ記憶サーバから受信することができる。
【０００９】
別の例示実施形態によれば、データ記憶サーバ内の記憶最適化の詳細がクライアントに見えるようにする方法が提供されている。この方法は、データ記憶サーバ上の記憶を記述したメタデータを送信するステップを含んでいる。ファイルデータは、そのファイルデータのネイティブ形体とは異なる形体でデータ記憶サーバ上にストアされており、メタデータは、ファイルデータの記憶形体がデータ記憶サーバ上にストアされた通りに見えるようにする。
【００１０】
データ記憶サーバは、ファイルデータのリクエストをコンピューティングシステムから受信し、ファイルデータ、データ記憶サーバ上のファイルデータの記憶を記述した追加メタデータ、および／またはファイルデータの少なくとも一部を表わしているデータを含む情報を送信する。
【００１１】
別の例示実施形態によれば、データ記憶サーバ内の記憶最適化の詳細がクライアントに見えるようにするコンピュータプログラムプロダクトが提供されている。このコンピュータプログラムプロダクトは、特に、ファイルデータのリクエストをコンピューティングシステムからデータ記憶サーバに送信し、データ記憶サーバ上のファイルデータの記憶を記述した情報を含む情報をデータ記憶サーバから受信するためのコンピュータ実行可能命令を含んでいる。
【００１２】
本発明の追加の特徴と利点は以下の説明の中で明らかにされるが、その一部は以下の説明から自明であることもあれば、本発明の実施によって習得されることもある。本発明の特徴と利点は、特に特許請求の範囲の中で記載されている手段およびその組み合わせによって実現され、取得されることがある。本発明のこれらの特徴およびその他の特徴は、以下の説明および特許請求の範囲の記載からより詳細に明らかになるが、以下に記述されている通りに本発明を実施することにより習得されることがある。
【００１３】
なお、この概要は、以下の詳細な説明に詳しく記載されているコンセプト（概念）を選択して簡単に紹介したものである。この概要は、請求項に記載の主題のキーとなる特徴または基本的特徴を特定するものでも、請求項に記載の主題の範囲を判断する際の一助として使用されるものでもない。
【図面の簡単な説明】
【００１４】
本発明の上記およびその他の利点のある特徴がどのようにして取得できるかを説明するために、以下では、添付図面に示した特定の実施形態を参照して上記に簡単に記載した本発明についてより具体的に説明する。これらの図面は本発明の代表的な実施形態のみを図示しており、従って本発明の範囲を限定するものではないとの理解の下で、以下では、添付図面の使用を通してさらに具体的にかつ詳細に本発明を記載し、解説する。
【００１５】
【図１】データ記憶とデータ送信をエンドツーエンドで最適化する例を示す図である。
【図２】データ記憶とデータ送信をエンドツーエンドで最適化するためのアーキテクチャの例を示す図である。
【図３】データ記憶サーバ内の記憶最適化の詳細がクライアント側から見た通りにクライアントに見えるようにする方法の例を示す図である。
【図４】データ記憶サーバ内の記憶最適化の詳細がサーバ側から見た通りにクライアントに見えるようにするための方法の例を示す図である。
【発明を実施するための形態】
【００１６】
本発明は、データ記憶とデータ送信をエンドツーエンドで最適化するための方法、システム、デバイスおよびコンピュータプログラムプロダクトに適用される。例えば、本明細書に記載の実施形態によれば、データ記憶とデータ送信の両方の効率化と最適化を強化することを可能にしている。本発明は、データ記憶サーバ内の記憶最適化の詳細がクライアントに見えるようにする方法、システムおよびコンピュータプログラムプロダクトに適用される。本発明の実施形態は特殊目的または汎用コンピュータを含むことがあり、その中には、本明細書の中で詳しく説明されているように、種々のコンピュータハードウェアまたはモジュールが含まれている。
【００１７】
一例示実施形態によれば、データ記憶サーバ内の記憶最適化の詳細がクライアントに見えるようにする方法が提供されている。この方法は、データ記憶サーバ上のファイルデータの記憶を記述したメタデータにアクセスするステップを含み、そこではファイルデータはそのファイルデータのネイティブ形体とは異なる形体でデータ記憶サーバ上にストアされている。このメタデータは、ファイルデータの記憶形体がデータ記憶サーバ上にストアされている通りに見えるようにする。
【００１８】
クライアントはファイルデータのリクエストを記憶サーバに送信することができ、ファイルデータ、データ記憶サーバ上のファイルデータの記憶を記述した追加メタデータ、および／またはファイルデータの少なくとも一部を表わしているデータを含む情報をデータ記憶サーバから受信することができる。
【００１９】
別の例示実施形態によれば、データ記憶サーバ内の記憶最適化の詳細がクライアントに見えるようにする方法が提供されている。この方法は、データ記憶サーバ上のファイルデータの記憶を記述したメタデータを送信するステップを含んでいる。ファイルデータは、そのファイルデータのネイティブ形体とは異なる形体でデータ記憶サーバ上にストアされており、メタデータはそのファイルデータの記憶形体がデータ記憶サーバにストアされている通りに見えるようにする。
【００２０】
データ記憶サーバは、ファイルデータのリクエストをコンピューティングシステムから受信し、ファイルデータ、データ記憶サーバ上のファイルデータの記憶を記述した追加メタデータ、および／またはファイルデータの少なくとも一部を表わしているデータを含む情報を送信する。
【００２１】
別の例示実施形態によれば、データ記憶サーバ内の記憶最適化の詳細がクライアントに見えるようにするコンピュータプログラムプロダクトが提供されている。このコンピュータプログラムプロダクトは、特に、ファイルデータのリクエストをコンピューティングシステムからデータ記憶サーバに送信し、データ記憶サーバ上のファイルデータの記憶を記述した情報を含む情報をデータ記憶サーバから受信するためのコンピュータ実行可能命令を含んでいる。
【００２２】
本発明の実施形態によれば、以下で詳しく説明されるように、例えば、１つまたは２つ以上のプロセッサおよびシステムメモリのようなコンピュータハードウェアを含む特殊目的または汎用コンピュータが含まれているか、または利用されることがある。本発明の範囲内の実施形態は、コンピュータ実行可能命令を実行またはストアするための物理的およびその他のコンピュータ可読媒体および／またはデータ構造も含んでいる。このようなコンピュータ可読媒体は、汎用または特殊目的コンピュータシステムによってアクセス可能ならば、利用可能などのような媒体であってもよい。コンピュータ実行可能命令をストアするコンピュータ可読媒体は物理的記憶媒体であることがある。コンピュータ実行可能命令を実行するコンピュータ可読媒体は伝送媒体であることがある。従って、例を挙げると、本発明の実施形態は、少なくとも２つの異なる別種のコンピュータ可読媒体、すなわち、コンピュータ記憶媒体と伝送媒体を含むことができるが、これらに限定されない。
【００２３】
コンピュータ記憶媒体としては、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたはその他の光ディスク記憶装置、磁気ディスク記憶装置またはその他の磁気記憶デバイス、または望みのプログラムコード手段をコンピュータ実行可能命令またはデータ構造の形体でストアするために使用可能で、汎用または特殊目的コンピュータによってサクセス可能であるその他の任意の媒体がある。
【００２４】
コンピュータプログラムプロダクトは、１つまたは２つ以上のプロセッサ上で実行されるとき、方法、ステップおよび動作を本明細書に記載されているように実行するコンピュータ実行命令が符号化されてそこに格納されている１つまたは２つ以上のコンピュータ可読記憶媒体を含むこともある。
【００２５】
「ネットワーク」とは、コンピュータシステムおよび／またはモジュールおよび／または他のエレクトロニックデバイスプログラムの間で電子データをトランスポートするのを可能にする１つまたは２つ以上のリンクとして定義されている。ネットワークまたはその他の通信コネクション（ハードワイヤード、ワイヤレスまたはハードワイヤードとワイヤレスの組み合わせのいずれか）を利用して情報がコンピュータに転送または提供されるとき、コンピュータはそのコネクションを伝送媒体として正しく見ている。伝送媒体として可能なものには、コンピュータ実行可能命令またはデータ構造の形体で望みのプログラムコード手段を伝播するために使用可能であって、汎用または特殊目的コンピュータによってアクセス可能であるネットワークおよび／またはデータリンクがある。上に挙げたものの組み合わせも、当然にコンピュータ可読媒体の範囲内に含まれる。
【００２６】
さらに、種々のコンピュータシステムコンポーネントに到着したとき、コンピュータ実行可能命令の形体をしたプログラムコード手段またはデータ構造を伝送媒体からコンピュータ記憶媒体に（またはその逆に）自動的に転送することができる。例えば、ネットワークまたはデータリンクを利用して受信したコンピュータ実行可能命令またはデータ構造は、ネットワークインタフェースモジュール（例えば、“ＮＩＣ“）内のＲＡＭにバッファリングしたあとで、最終的にコンピュータシステムのＲＡＭおよび／またはコンピュータシステムにある低揮発性(less volatile)のコンピュータ記憶媒体に転送することができる。従って、当然に理解されるように、コンピュータ記憶媒体は、伝送媒体も利用する（または主として）コンピュータシステムコンポーネントに含まれることができる。
【００２７】
コンピュータ実行可能命令は、例えば、プロセッサで実行されると、汎用コンピュータ、特殊目的コンピュータまたは特殊目的処理デバイスにある種の関数(function)または関数グループを実行させる命令とデータを含んでいる。コンピュータ実行可能命令は、例えば、バイナリ、アセンブリ言語のような直接形式命令であることも、ソースコードであることもある。構造上の特徴および／または方法上の動作に特有の表現で主題を記載してきたが、当然に理解されるように、請求項に定義した主題は上述した記載の特徴または動作に必ずしも限定されない。むしろ、記載した特徴と動作は、請求項を実現する例示形態として開示されたものである。
【００２８】
この分野の当業者ならば理解されるように、本発明は様々なタイプのコンピュータシステム構成と共にネットワークコンピューティング環境で実施されることがあり、その中にはパーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラマブルコンシューマエレクトロニクス、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、モバイル電話、ＰＤＡ、ページャ、ルータ、スイッチなどが含まれる。本発明は分散システム環境で実施されることもあり、そこではローカルコンピュータシステムとリモートコンピュータシステムはネットワークを通して（ハードワイヤードデータリンク、ワイヤレスデータリンクによって、またはハードワイヤードデータリンクとワイャレスデータリンクの組み合わせによって）リンクされており、共にタスクを実行している。分散システム環境では、プログラムモジュールは、ローカルとリモートの両方のメモリ記憶デバイスに置かれていることがある。
【００２９】
本明細書で用いられている「モジュール」または「コンポーネント」という用語は、コンピューティングシステム上で実行可能なソフトウェアオブジェクトまたはルーチンを指すことができる。本明細書に記載の異なるコンポーネント、モジュール、エンジンおよびサービスはコンピューティングシステム上で実行されるオブジェクトまたはプロセスとして（例えば、別々のスレッドとして）実現されることがある。本明細書に記載のシステムとモジュールは好ましくはソフトウェアで実現されるが、ハードウェアまたはソフトウェアとハードウェアの組み合わせで実現することも可能であり、これは本発明の意図していることである。本明細書の記載において、「コンピューティングエンティティ」は本明細書に前述したように任意のコンピューティングシステムであることも、コンピューティングシステム上を走行する任意のモジュールまたはモジュールの組み合わせであることもある。
【００３０】
図１は、本発明が動作することができる環境の例を示す図である。図１は、クライアント１１０、データストア１２０、およびクライアント１１０とデータストア１２０との間のデータ送信１３０を示している。データは多数の異なる形体でデータストア１２０上にストアされることがある。
【００３１】
本明細書に提示した実施形態は、図１に図示するような環境でデータ記憶１４０とデータ送信１３０を統合し、最適化する方法、システムおよびコンピュータプログラムプロダクトを記載している。
【００３２】
ファイルは、連続ファイルとしてそのネイティブ形体でデータストア内にストアされることがある。例えば、ファイルＡ１５０は、アプリケーションによって提示されるか、あるいはアプリケーションによって予想される通りに、ファイルのすべてのビット、バイトおよびデータを含む未変更の生(raw)フォーマットまたはネイティブフォーマットでデータストアにストアされている。データは、種々の代替フォーマットでストアされることもある。例えば、データは必要とする記憶スペースを低減するために圧縮フォーマットでストアされることもあれば、データは冗長性を低減し、データストアにストアされたデータを非重複(de-duplicate)にするための手法を使用してストアされることもある。
【００３３】
データは、ファイルが別々で異なるデータのサブセットに分割されているチャンク(chunk)またはブロックでデータストア上にストアされることもある。例えば、ファイルは、チャンク１６０Ｃ１−Ｃｎとしてデータストア内にストアされることがある。ファイルからのデータのサブセットであるチャンクはブロックと呼ばれることもあり、チャンクおよびブロックという２つの用語は本明細書では同意義で使用されている（なお、本明細書で用いられているファイルの用語は論理的に関連する任意のデータグループまたはデータ量を表わしている）。
【００３４】
データストアでは、ファイルをチャンクに分割してデータ記憶を最適化するアルゴリズムが使用されることがある。例えば、ファイルは、より効率的にまたはコンパクトにファイルをデータストアにストアするためにチャンク１６０Ｃ１−Ｃｎに分割されることがある。チャンクに分割されたファイルは、ファイル内の冗長性を減少するとによってより効率的にストアされることもある。例えば、チャンクＣ１は２回以上ファイル内に現れることがある。ファイルをチャンクに分割すると、チャンクＣ１は一度だけデータストアに書くことで済むので、ファイル内に繰り返して現れる各々のチャンクＣ１は、そのチャンクＣ１への参照 (reference)またはポインタ(pointer)で置き換えることが可能になる。
【００３５】
以上から理解されるように、チャンクまたはブロックは任意の固定長である必要でなく、任意の長さ、データ量またはファイルの任意の部分であることもあり、その中にはファイル全体も含まれる。ファイルのチャンクまたはブロックはファイルの任意の長さおよび／またはオフセットであることがある。ファイルをチャンクまたはブロックに分割することは任意のアルゴリズムまたは手法に従って行なわれることがあり、チャンクのサイズは、データがそこに存続するデータストアまたはデータがそこを送信される送信経路の特定の考慮事項によって影響されることも、左右されることもある。
【００３６】
データは、圧縮フォーマットでデータストア内にストアされることもある。例えば、ファイルＣ１７０は、オリジナルファイルが圧縮アルゴリズムを使用して圧縮されたときの圧縮フォーマットでストアされており、圧縮で得られたファイル、つまり、ファイルＣ１７０は、データストア内に占める記憶スペースがオリジナルの未圧縮ファイルデータよりも少なくなっている。ファイルおよびデータの圧縮は、Lempel-Ziv(LZ)、Lempel-Ziv-Welch(LZW)およびＭＰＥＧ圧縮のような業界で周知の手法によって行なわれることがある。
【００３７】
圧縮とチャンキング(chunking)（またはブロッキング）を組み合わせたものが、データストアで採用されることもある。例えば、ファイルはチャンクに分割されたあとで、これらのチャンクが圧縮され、圧縮チャンク１８０ＣＨ１−ＣＨｎとしてストアされることがある。
【００３８】
データストア内にストアされたファイルおよびデータを非重複にする（de-duplicating）ことにより、別の圧縮化が得られることがある。非重複にすると、データストアにストアされた別々のファイルに現れることのある同一ファイルまたは同一部分が特定され、重複するファイルまたはデータ部分の１つを除くすべてがファイルまたはデータ部分の参照コピー(reference copy)への参照で置き換えられる。ファイルを非重複にすると、特定のファイルまたはデータ部分の１つのコピーだけがデータストアにストアされるので、多数の重複ファイルまたはデータ部分が占めるはずであった記憶スペースが節減されることになる。
【００３９】
非重複（de-duplication）は、ファイルのチャンクレベルで行なわれることもある。例えば、２つまたはそれ以上のファイルがデータチャンクにチャンキングされた場合、重複するチャンクはデータストア内で冗長チャンクのコピーへの参照で置き換えられることがある。例えば、ファイルは、チャンクＣ１およびデータストア１２０内にチャンクフォーマットでストアされた他のファイルに関連してストアされた他のチャンクへの参照としてデータストア１２０上にストアされることがある。例えば、ファイルＸはチャンクＣ１−Ｃｎへの参照としてストアされることがあり、ファイルＹはチャンクＣＨ１、Ｃ１およびＣ２への参照としてストアされる可能性があり、ファイルＺはチャンクＣ１および圧縮チャンクＣＨ２−ＣＨｎへの参照のリストとしてストアされる可能性がある。
【００４０】
ファイルの非重複、チャンキングおよび圧縮は、これらの組み合わせで行なわれることもある。例えば、ファイルは、１つまたは２つ以上のチャンクとしてデータストア上にストアされることがあり、そこではチャンクの各々が圧縮されている。ファイルデータは任意の組み合わせでストアされることもあり、そこでは一部のファイルは未圧縮でストアされ、一部のファイルは圧縮でストアされ、一部のファイルはチャンクフォーマットでストアされ、一部のファイルはチャンクとしてストアされ、これにより一部のチャンクは圧縮され、一部のチャンクは未圧縮になっている。
【００４１】
一般的に、あるクライアントがデータストアにデータを要求するとき、そのクライアントは、ファイル全体についてまたはファイルの一部のロジック部分についてデータを要求することになる。例えば、クライアントはファイルシステムを通してget(fileX)を要求することもあれば、ファイルシステムを通してgetFileBytes(fileX; bytes=100-1000)を要求することもある。ファイルまたはそのファイルの一部がデータストア１２０からクライアント１１０に送信１３０されるとき、要求データを再アセンブルして、クライアントまたはアプリケーションが期待するフォーマットでクライアントに送信するために圧縮データを展開したり、データのチャンクを再アセンブルしたりする負担がデータストアに生じることになる。
【００４２】
本明細書に記載の実施形態によれば、クライアントは、データストア上のファイルデータの記憶に関する情報を要求またはその情報にアクセスできるので、データストア上にストアされたデータの記憶詳細に関する情報をクライアントに与えることによって効率化と最適化が得られることがある。例えば、クライアント１１０は、ファイルＸがどのようにデータストアにストアされているかをクライアントに通知するようにデータストア１２０に要求することがある。データストア１２０は、ファイルＸが圧縮チャンクＣＨ１とＣＨ３としてストアされていることをクライアントに通知することがある。圧縮チャンクを圧縮形体で送信するとより効率的になるように、この場合には、クライアントはget(fileX)を要求するのではなく（これを要求すると、データストアはチャンクＣＨ１とＣＨ３を展開してファイルを再アセンブルしてから、そのファイルをクライアントに送信する必要が生じる）、これらのチャンクＣＨ１とＣＨ３をクライアントに送信することをデータストアに要求することができる。
【００４３】
実施形態によれば、クライアントは、データストア上のファイルデータの記憶に関する情報にアクセスできるので、データストア上にストアされたデータの記憶詳細に関する情報をクライアントに与えることによって効率性と最適化が得られることもある。例えば、クライアント１１０は、ファイルＸがどのようにデータストアにストアされているかを示す、ローカルにキャッシュまたはストアされた情報にアクセスすることがある。この情報は先行リクエスト(previous request)によってすでに得られていることもあれば、クライアントとデータストアとの間の先行トランザクションの過程ですでにキャッシュされていることもある。
【００４４】
ローカルにストアされているか、またはデータストア１２０よりも低いレイテンシまたは送信コストで記憶ロケーションから得られるチャンクのコピーをクライアントがすでに持っていれば、追加の効率が得られることがある。このようなケースでは、そのあとクライアントはgetChunk(CH3)だけをデータストアに要求することができる。
【００４５】
本明細書に記載の実施形態は、クライアントとデータストアとの間および／またはクライアントと集中化サーバ(centered servers)との間の冗長ＬＡＮおよび／またはＷＡＮトラフィックを減少している。本明細書に記載の実施形態によれば、種々のネットワークファイルシステムプロトコルについて記憶と送信の最適化が得られる。例えば、ＳＭＢプロトコルとＨＴＴＰプロトコルのどちらも、本明細書に記載のデバイスと手法によって拡張され、強化されることができる。
【００４６】
標準ファイルシステムプロトコル（例えば、ＳＭＢとＨＴＴＰ）は、ＡＰＩを提供するように拡張可能であり、そのＡＰＩは、データストアによって与えられたときファイルまたはデータ部分がどのようにデータストア上にストアされているかの詳細が見えるようにするデータストアからデータをクライアントが要求するのを可能にする。例えば、クライアント１１０は、ファイルＸがどのようにストアされているのかに関するデータをデータストア１２０に要求することがある。例えば、クライアント１１０は、getStorageDetails(fileX)のようなファイルシステムエクステンション(file system extension)をコールすることがあり、そのレスポンスとしてデータストアは｛fileX:= chunks CH1, CH3｝を返すことがある。ファイルＸがどのようにストアされているかの詳細は分かっているので、クライアントはファイルＸに関連するデータをどのようにデータストアに要求するかを決定することができる。クライアントは、その生フォーマットまたはネイティブフォーマットでファイル全体を標準的方法で要求できる。これとは対照的に、本明細書に記載の実施形態は、クライアントが圧縮チャンクＣＨ３をクライアントに送信することをデータストアに要求するのを可能にしている。
【００４７】
一実施形態では、図３に示すように、クライアントは、データ記憶サーバ上のファイルデータを記述したメタデータにアクセスすること３１０ができ、そこではファイルデータはそのファイルデータのネイティブ形体とは異なる形体でデータ記憶サーバ上にストアされ、メタデータはファイルの記憶形体がデータ記憶サーバ上にストアされた通りに見えるようにしている。データ記憶サーバ上のファイルデータの記憶を記述したメタデータは、ファイルデータがデータストア上でどのようにチャンキングされたか、ファイルデータがデータストア上でどのように圧縮されたか、またはファイルデータがデータストア上でどのようにチャンキングされると共に圧縮されているかを記述した情報であることがある。
【００４８】
ファイルがどのようにチャンキングされているかの詳細には、ファイルのどの部分がサーバ上にストアされた各チャンクに対応しているかが含まれていることがある。また、チャンキングの詳細には、ファイルを構成するチャンクの各々の暗号ハッシュ(cryptographic hash)も含まれていることがある。チャンクの暗号ハッシュは、クライアント、アプリケーションおよびデータストアが各チャンクをユニークに識別することを可能にしている。この情報を使用すると、クライアント、アプリケーションおよび他のデータストアは、そのチャンクに同一チャンクが暗号ハッシュで識別されたようにすでに使用可能になっているかどうかを識別できることがある。
【００４９】
ファイルまたはデータの部分（例えば、チャンク）がどのように圧縮されているかの詳細には、データをユニークに識別するためのオリジナル未圧縮データの暗号ハッシュが含まれていることがある。この詳細には、圧縮データをユニークに識別するために圧縮データの暗号ハッシュが含まれていることもある。また、この詳細には、圧縮を行なうために使用された圧縮のタイプ（これは、圧縮データをデータストアから別のエンドポイントに送信したあとその圧縮データを展開するために必要なことがある）も含まれていることもある。圧縮のタイプとしては、例えば、ＬＺ、ＬＺＷ、ＭＰＥＧなどがある。
【００５０】
メタデータにアクセスすることにより、クライアントはデータストア上のデータの記憶詳細を知ることができる。クライアントがデータストア上のデータの記憶詳細を知ったとき、クライアントはファイルデータのリクエストを記憶サーバに送信すること３２０がある。本明細書に記載の実施形態を採用すると、クライアントはファイル全体を要求しないで済むので、クライアントは、必要とするファイルのチャンクだけを要求することもあれば、ファイルの圧縮バージョンまたはファイルのチャンクの圧縮バージョンを要求することもある。ファイルデータのリクエストを送信したあと３２０、クライアントは、要求したファイルデータ記憶サーバ上のファイルデータの記憶を記述した追加メタデータおよび／またはファイルデータの少なくとも一部を表わしているデータを含む情報を記憶サーバから受信すること３３０ができる。
【００５１】
ファイルデータ情報を受信すること３３０には、データファイルの少なくとも１つ、記憶サーバ上のファイルデータの記憶を記述した追加メタデータおよび／またはファイルデータの少なくとも一部を表わしているデータが含まれていることがある。この情報には、クライアント側のレガシ(legacy)アプリケーションが予想するように標準フォーマットのファイルデータが含まれていることがある。この情報には、データストア上のファイルデータの記憶を記述した情報が含まれていることがある。この情報には、ファイルデータの少なくとも一部を表わしているデータが含まれていることがある。
【００５２】
ファイルデータの記憶を記述したメタデータにアクセスすること３１０には、ファイルデータの記憶を記述した情報のリクエストをサーバに送信することが含まれることがある。このようなリクエストは、クライアントがファイルシステム（またはネットワークファイルシステム）に対してコールを行なって、ファイル、ファイルデータまたはデータの一部がどのようにデータストア上にストアされているかの詳細を要求するのを可能にするファイルシステムエクステンションの形体になっていることがある。
【００５３】
上記とは別に、ファイルデータの記憶を記述したメタデータにアクセスすること３１０には、ファイルデータの記憶を記述した情報についてローカルストアにアクセスすることが含まれていることがある。ローカルストア内の情報は、先行リクエストに対するレスポンスとしてファイルサーバから以前に受信されていることもあれば、進行中(ongoing)の一連のファイルシステムトランザクションとしてローカルにすでにキャッシュされていることもある。ファイルデータの記憶を記述したメタデータにアクセスすること３１０には、ファイルデータの記憶形体がデータ記憶サーバ上にストアされているように見えるようにするか、またはローカルにキャッシュされたコピーがどのようにストアされているかがクライアントに見えるようにする詳細を返すファイルシステムコール(file system call)（通常ファイルシステムＡＰＩのエクステンションによって導入された）が含まれていることがある。
【００５４】
例えば、データ記憶サーバ上のファイルデータの記憶を記述したメタデータには、データ記憶サーバ上のファイルデータの非重複の結果得られるファイルデータの記憶を記述したデータが含まれていることがある。このメタデータには、ファイルを構成するチャンクのチャンクリストが含まれることもあれば、ファイルを構成するチャンクの各々の暗号ハッシュのハッシュリストが含まれていることもある。そのあと、クライアントは、送信されるチャンクの１つまたは２つ以上のリクエストを組み立てるために返されたチャンクリストまたはハッシュリストを使用することもあれば、すでに受信されたまたはローカルにキャッシュされたチャンクのリストを比較してデータストアに要求する必要のあるチャンクがあるかどうかを判断するためにハッシュリストを使用することもある。
【００５５】
例えば、ファイルをダウンロードするとき、クライアントはハッシュリストをファイルサーバに要求し、必要とするデータについてピアクライアント(peer clients)および／またはピアファイルサーバにクエリすることもある。クライアントはハッシュリストを含む情報をそのクエリに対するレスポンスとして受信すること３３０がある。ハッシュリストはデータがデータストア上にストアされた通りにデータを表わしていることもあれば、クライアントは必要とするデータの部分（例えば、チャンク）だけを要求できることもある。また、データは、必要とするデータがピアにあるときそのピアから読み取られることもあるので、ピアとクライアント間のデータ送信の場合の送信コストまたはレイテンシは、クライアントとデータストア間の送信コストまたはレイテンシよりも低くなっている。
【００５６】
データ記憶サーバ上のファイルデータの記憶を記述したメタデータには、ファイルデータの圧縮したサブセットを記述したデータまたはファイルデータの圧縮したバージョンを記述したデータが含まれていることもある。この情報を使用すると、クライアントはファイルデータの圧縮したサブセットのリクエストを組み立てる（formulate）ことも、ファイルデータの圧縮したバージョンのリクエストを組み立てることもある。このようにすると、ファイルデータのリクエストに対するレスポンスしてデータを送信する前にファイルデータまたはそのファイルデータのサブセットを展開しないで済むデータストアの効率性が得られる。
【００５７】
一実施形態では、クライアントはファイル全体のリクエストまたはファイルの一部のリクエストを含むことのあるファイルデータのリクエスト送信すること３２０がある。例えば、ファイルのリクエストget(fileX)またはファイルの一部分のリクエストgetFileBytes(fileX; bytes=100-1000)はファイルシステムを通してデータ記憶サーバに送信されることがある。このリクエストに対するレスポンスとして、データ記憶サーバはファイルまたはそのファイルの一部ではなく、要求したファイルまたはそのファイルの一部を含んでいるデータを恐らく異なる形体で送り返すことがある。
【００５８】
例えば、データ記憶サーバは、要求したファイルまたはそのファイルの要求した一部を完全にカバーしている一定範囲の圧縮チャンクを含むデータを返す可能性がある。さらに、データ記憶サーバは、返されたチャンクが要求したデータ（および可能性として要求よりも多いデータ）を含むことを示しているチャンクと一緒にファイル記憶メタデータを返す可能性がある。
【００５９】
さらに、返されたチャンクが圧縮されていれば、データ記憶サーバは、返されたデータ（またはデータのチャンク）が圧縮されていることを示すファイル記憶メタデータを返すこともあれば、データを圧縮するためにどの圧縮手法またはアルゴリズムが使用されたか、またはデータを展開するためにどの展開手法またはアルゴリズムを使用する必要があるかを示していることもある。以上から理解されるように、特定の圧縮または展開手法を示すメタデータを返すこともなしに、圧縮データおよび／または圧縮チャンクが返される場合に想定されることのあるデフォルトの圧縮または展開手法が存在することもある。
【００６０】
次いで、クライアントはこのデータおよび／またはメタデータをデータ記憶サーバから受信し３３０、該当する展開および／またはチャンクアセンブリをクライアント側で行なって要求データを再構成することがある。以上から理解されるように、このようにすると、クライアントによって実際に要求された特定のデータをデータ記憶サーバに展開および／またはアセンブルさせてからクライアントに送信またはクライアントによって受信する場合よりもデータ送信コストまたは送信レイテンシに起因する効率性が向上する。
【００６１】
ファイル記憶メタデータには、チャンクまたは圧縮チャンクの暗号ハッシュリストおよびどのチャンクがファイルデータのどの部分を含んでいるかを示すＩＤ(identification)を含んでいることがある。チャンクまたは圧縮チャンクの暗号ハッシュリストおよびどのチャンクがファイルデータのどの部分を含んでいるかを示すＩＤを使用すると、クライアントは圧縮データを適当な方法で展開し、および／またはクライアントによって望まれるまたは要求される一定範囲のデータのすべてまたはより多くを含むチャンクを再アセンブルできることがある。
【００６２】
ファイル記憶と送信に対する統合化アプローチのための例示アーキテクチャは、図２に図示されている。クライアントとサーバ２１０には、最適化を意識した(aware)アプリケーションおよび／またはサービスが含まれていることがある。クライアントとサーバは、ファイルシステムのアプリケーションプログラミングインタフェース（ＡＰＩ）を含むと共に最適化ＡＰＩを含んでいることがあるファイルシステムインタフェース２５０と通信することがある。ファイルシステムＡＰＩには、通常ファイルシステムおよび／またはネットワークファイルシステムのすべての通常コールと関数が含まれていることがある。最適化ＡＰＩは、データストアにストアされているデータ２６０、２７０および２８０の記憶詳細が見えるようにする拡張ＡＰＩエレメント(extended API elements)（例えば、関数コールとインタフェース）を含んでいる。
【００６３】
ファイルシステムインタフェース２５０を使用すると、クライアントはデータ記憶サーバ上のファイルデータの記憶を記述したメタデータを要求することができる。ファイルシステムインタフェース２５０を使用すると、クライアントは、いくつかのフォーマットでデータをデータ記憶サーバに要求することもできる。クライアントは、通常ファイルシステムＡＰＩ（例えば、標準またはレガシファイルシステムＡＰＩ）を使用してデータを要求して、ファイルをその生またはネイティブフォーマットのままにしておくことがある。また、クライアントは、ファイルの圧縮形体であるファイルの特定のチャンクだけをサーバ上にストアされた通りに要求するために最適化ＡＰＩを使用してデータを要求することもあり、ファイルの圧縮チャンクをサーバ上にストアされた通りに要求することもある。
【００６４】
強化された(enhanced)および／または拡張(extended)されたファイルシステムインタフェース２５０を意識していない(unaware)クライアント、アプリケーションおよびサービス２２０は、レガシファイルシステムＡＰＩの全機能をそのまま残しているファイルシステムＡＰＩにコールを行なうことにより、依然として通常に、未変更のまま、妨害されることなく動作することがある。
【００６５】
最適化を意識しているクライアント、アプリケーションおよびサービス２３０は、最適化ＡＰＩにコールを行なって、本明細書に記載の実施形態の全機能を起動(invoke)することがある。最適化を意識したクライアント、アプリケーションおよびサービスはハッシュリスト、チャンクリスト、圧縮ファイルなどをデータストアまたはサーバに要求することがある。例えば、ファイルｆｏｏ.ｖｈｄは、チャンクストア／インデックス２７０をポイントするチャンクリストとしてデータストア上にストアされることがある。このチャンクリスト／インデックスはチャンク（例えば、チャンク１６０Ｃ１−Ｃｎ）を含むことも、圧縮チャンク（例えば、チャンク１８０ＣＨ１−ＣＨｎ）を含むことも、ストアされたチャンクを指してファイルとデータ記憶の非重複やその他の最適化を可能にする参照、ポインタおよびインデックスを含むこともある。
【００６６】
クライアントは、最適化ＡＰＩを通してｆｏｏ.ｖｈｄの記憶を記述したメタデータを要求し、ｆｏｏ.ｖｈｄがどのようにストアされているかを記述したメタデータをデータストアから受信することがある。クライアントがそのメタデータにアクセスしたあと、そのクライアントは最適化ＡＰＩを通してファイルデータのリクエストを記憶サーバに送信することがある。このリクエストはネイティブフォーマットのファイル全体に対することもあれば、１つまたは２つ以上のチャンクだけのこともあれば、チャンクストア／インデックス２７０にストアされた通りのファイルの圧縮チャンクに対することもある。
【００６７】
次いで、クライアントは、ファイルデータの１つまたは２つ以上、データ記憶サーバ上のファイルデータの記憶を記述した追加メタデータおよびファイルデータの少なくとも一部を表わしているデータを含む情報をデータ記憶サーバから受信することがある。クライアントはそのネイティブフォーマットでファイル全体を受信することがある。クライアントはファイルのチャンクを受信することがある。クライアントはファイルの圧縮チャンクを受信することがある。クライアントはファイルデータの記憶を記述した追加メタデータを受信することも、ファイルデータの一部を含むデータを受信することもある。クライアントによって受信されたレスポンスは、クライアントおよびアプリケーションがデータストア内のデータの記憶の詳細を意識しているリクエストを行なうのを可能にする拡張最適化ＡＰＩを通して行なわれたリクエストに対応していることもある。
【００６８】
別の例において、ファイルｂａｒ.ｄｏｃは、最適化サービス２４０によって圧縮され、チャンクにされ、非重複化されて、チャンクストア／インデックスを指すポインタとしてストアされていることがある。本明細書に記載の実施形態では、クライアントはデータストア上のｂａｒ．ｄｏｃの記憶を記述したメタデータを要求することがあり、データストア上のｂａｒ．ｄｏｃの記憶を記述した情報を受信したあと、チャンクストア／インデックス２７０にストアされたｂａｒ．ｄｏｃの圧縮チャンクの１つまたは２つ以上のリクエストを送信することがある。圧縮チャンクはクライアントによって要求されているので、データストアはｂａｒ．ｄｏｃのチャンクを展開する必要もなければ、データストアは、クライアントからのｂａｒ．ｄｏｃに対するリクエストに応答するためにｂａｒ．ｄｏｃのチャンクを再アセンブルする必要もない。
【００６９】
別の実施形態では、データストア内の記憶最適化の詳細がクライアントに見えるようにする方法が提供されている。この方法は、データ記憶サーバ上のファイルデータの記憶を記述したメタデータを送信するステップを含み、そこではデータは、ファイルデータのネイティブ形体とは異なった形体でデータ記憶サーバ上にストアされると共に、メタデータはファイルデータの記憶形体がデータ記憶サーバ上にストアされた通りに見えるようにしている。また、この方法は、コンピューティングシステムからのファイルデータのリクエストをデータ記憶サーバで受信するステップも含んでいる。また、この方法は、ファイルデータの少なくとも１つ、データストア上のファイルデータの記憶を記述した追加メタデータおよびファイルデータの少なくとも一部を表わしているデータを含む情報をデータ記憶サーバから送信するステップも含んでいる。
【００７０】
図４に図示するように、サーバまたはデータストアは、データ記憶サーバまたはデータストア上のファイルデータの記憶を記述したメタデータを送信すること４１０がある。ファイルデータはそのファイルデータのネイティブ形体とは異なる形体でデータ記憶サーバ上にストアされている。例えば、ファイルデータは、チャンクフォーマットでも、圧縮フォーマットでも、圧縮フォーマットとチャンクフォーマットの組み合わせでも記憶サーバ上にストアされることがある。
【００７１】
送信されるメタデータは、ファイルデータの記憶形体がデータ記憶サーバ上にストアされている通りに見えるようにする情報を提供している。例えば、メタデータは、データがチャンクフォーマット、圧縮フォーマットまたはチャンクフォーマットと圧縮フォーマットの組み合わせでストアされていることを見えるようにする情報を含んでいることもある。メタデータは、ファイルデータを構成するチャンクのハッシュリストをデータストアにストアされているように示す情報を含んでいることもある。データストア上にストアされたチャンクは、記憶サーバ上にストアされたファイルデータ（他のデータファイルと共に）非重複の結果得られたチャンクであることもある。
【００７２】
メタデータは、ファイルデータのサブセットの暗号ハッシュを含む情報を含んでいることもある。データのサブセットの暗号ハッシュは、チャンクが別のチャンクと同一であるかどうかを示すためにクライアントよっても、送信デバイスによっても、別データストアによっても使用されることがある。ファイルデータのサブセットの暗号ハッシュを使用することにより、クライアント、送信デバイスおよび他のデータストアは、データの特定サブセットがローカルに使用可能であるか、低いレイテンシまたは送信コストでソースから使用可能であるかを判断する能力を備えている。データの同一サブセットを特定することにより、データの特定サブセットを要求する必要があるか、送信する必要があるかが判断されることもある。
【００７３】
ファイルデータのサブセットは、ファイル全体であることも、ファイルデータであることもある。データのサブセットは、記憶最適化または非重複方式の一部としてデータストアによってすでにチャンキングされているファイルデータの１つまたは２つ以上のチャンクであることもある。
【００７４】
データ記憶サーバまたはデータストア上のファイルデータの記憶を記述したメタデータには、ファイルデータの一部または全部がデータ記憶サーバまたはデータストア上に圧縮されていることを記述したデータが含まれていることもある。メタデータには、ファイルデータのチャンクフォーマットの１つまたは２つ以上が圧縮されているとの情報が含まれていることがある。ファイルデータのある部分が圧縮されていることを示す情報を使用することにより、クライアントは、クライアントに対するレスポンスの中でデータストア内にストアされている通りにチャンクフォーマットまたは圧縮フォーマットで返されるファイルまたはファイルの１つまたは２つ以上のチャンクを要求することがある。ファイルの特定チャンクまたは圧縮したチャンクを要求することにより、データストアは、ファイルまたはファイルのチャンクを要求したクライアントに送信する前にファイルまたはファイルのチャンクを展開する必要がないのでオーバヘッドが減少される。
【００７５】
図４は、ファイルデータのリクエストをコンピューティングシステムから受信すること４２０も示している。このリクエストはクライアントからも、別の記憶サーバからも、リモートコンピューティングシステム上で実行されるアプリケーションなどからも受信されることがある。このリクエストは、標準ネットワークファイルシステムＡＰＩを拡張および／または強化する最適化ＡＰＩに対応するプロトコルを使用してフォーマット化されることがある。
【００７６】
ファイルデータのリクエストには、要求されるファイルの特定チャンクを示す情報が含まれていることがある。このリクエストには、要求されたファイルデータが圧縮または展開フォーマットで送られるべきかどうかを示す情報が含まれていることもある。このリクエストには、他のチャンクがローカルですでに使用可能であるのでファイルのチャンクのサブセットだけが送信されるはずであるとの情報が含まれていることがある。
【００７７】
図４は、ファイルデータの少なくとも１つ、データ記憶サーバ上のファイルデータの記憶を記述した追加メタデータおよびファイルデータの少なくとも一部を表わしているデータを含んでいるファイルデータ情報を送信するステップ４３０も示している。ファイルデータ情報を送信すること４３０は、ファイルデータについて受信されたリクエストに対するレスポンスであることがある。上述したように、ファイルデータのリクエストは、圧縮フォーマットでまたはいずれかの組み合わせでチャンクとしてデータストアにストアされている通りのファイルデータに対するものであることがある。
【００７８】
ファイルデータ情報を送信すること４３０には、ファイルデータの少なくとも１つ、データ記憶サーバ上のファイルデータの記憶を記述した追加メタデータおよびファイルデータの少なくとも一部を表わしているデータが含まれていることがある。この情報は、クライアント側のレガシアプリケーションが予想するように標準フォーマットのファイルデータを含むことがある。この情報は、データストア上のファイルデータの記憶を記述した情報を含んでいることもある。また、この情報はファイルデータの少なくとも一部を表わしているデータを含んでいることもある。
【００７９】
受信したリクエストは、クライアントによって望まれるデータの特定チャンクをすでに特定していることがある。このリクエストに対するレスポンスとして、データストアはデータの要求されたチャンクを要求側のクライアントに送信することがある。受信したリクエストは、クライアントによって望まれるデータの特定の圧縮チャンクをすでに特定していることがある。このリクエストに対するレスポンスとして、データストアはデータの要求した圧縮サブセットを要求側クライアントに送信することがある。受信したリクエストは、クライアントによって望まれるデータのチャンクを特定する特定暗号ハッシュをすでに特定していることがある。このリクエストに対するレスポンスとして、データストアは、暗号ハッシュによって特定されたデータの特定チャンクを要求側クライアントに送信することがある。
【００８０】
一実施形態では、データストアは、ファイルまたはファイルの一部のリクエストを受信すること４２０がある。例えば、データストアはファイルのリクエストget(fileX)を受信することもあれば、ファイルの一部のリクエストgetFileBytes(fileX, bytes=100-1000)を受信することもある。データストアはそのリクエストに対するレスポンスを構築し、データストア上にストアされたままのファイルデータを含む情報を送信し、ストアされたままのファイルデータの記憶詳細を特定したメタデータを含んでいることがある。例えば、データストアは、チャンクのセットおよびどのチャンクが要求したチャンクのどの部分を含んでいるかを特定したメタデータを返すことがある。さらに、データストアは、圧縮フォーマットで返されたデータを展開するために適切と思われる圧縮および／または展開情報を含むメタデータを返すこともある。
【００８１】
一部の実施形態では、リクエストが受信されること４２０があり、メタデータを送信する先行ステップ４１０を実行することなくファイルデータ情報が送信されること４３０がある。例えば、最適化を意識したクライアントはファイルデータを要求するだけのことがあり、データストアはその要求を受信する４２０可能性があり、データストアはレスポンスを構築し、クライアントが返されたファイルデータおよび／またはメタデータを適切に処理し、チャンクを適当に再アセンブルしおよび／またはデータを必要に応じて展開できることを想定してクライアントにそのリクエストを送信する可能性がある。
【００８２】
実施形態によれば、データ記憶とデータ送信のための書き込み経路(write path)最適化もサポートされている。例えば、ファイルに対しローカルで変更するクライアントは、変更したファイルのハッシュリスト表現を生成することがある。そのあと、このハッシュリストはデータ記憶サーバに送信されることがある。そのあと、データ記憶サーバは変更したファイルを表わす受信したハッシュリストを、データ記憶サーバ上にストアされたファイルチャンクを特定したデータ記憶サーバ上に維持された包括的ハッシュリストと比較することがある。
【００８３】
この比較に基づいて、そのあとデータ記憶サーバは、クライアントがデータ記憶サーバ上にすでにストアしていたチャンクのリストに返すことがある。データ記憶サーバは、データ記憶サーバ上にストアされていないチャンクのリストをクライアントに返すこともある。データ記憶サーバ上にストアされていて返されたチャンクのリスト（またはストアされていないチャンクのリスト）に基づいて、そのあとクライアントはデータ記憶サーバ上にまだストアされていないチャンクをデータ記憶サーバに送信することが可能である。
【００８４】
変更ファイルを表わしているハッシュリストを受信したあとおよびデータ記憶サーバ上にまだストアされていない変更ファイルを受信したあと、データ記憶サーバは、完全な変更ファイル（これはサーバ上にすでにストアされている一部のチャンク、新たにサーバによって受信された一部のチャンクおよび完全な変更ファイルを表わしているハッシュリスト（またはチャンクリスト）で構成されている）をストアすることがある。完全なファイルを表わしているハッシュリスト（またはチャンクリスト）を送信し、データ記憶サーバ上にまだストアされていないチャンクだけを送信することにより、クライアントからデータストアへのデータ送信が実現されることが可能である。
【００８５】
例えば、データ記憶サーバはクライアントからハッシュリストを受信し、ファイルを表わしているその送信ハッシュリストを、データ記憶サーバ上にストアされたチャンクおよびデータ記憶サーバ上にストアされたチャンクに対する暗号ハッシュのインデックスを含むチャンクストア／インデックス２７０にストアされたハッシュリストと比較することがある。そのあとデータストアは、チャンクストアとインデックス２７０にまだストアされていないチャンクを表わしているハッシュリストをクライアントに返すことがある。そのあと、クライアントはチャンクストアにまだストアされていないチャンクをデータストアに送信することがある。そのあと、データストアは受信したチャンクを、完全な変更ファイルを表わしているハッシュリストと共にチャンクストア２７０にストアすることがある。このようにして、データ記憶サーバは、変更ファイルの完全な表現（ファイルを表わしているチャンクリストおよび対応するチャンクで表わしている）をストアすることがあるが、ファイルを構成するすべてのチャンクをクライアントが送信する必要はない。
【００８６】
別の例では、５個のチャンク、すなわち、チャンクＣ１−Ｃ５で構成されたファイルはチャンクＣ４内だけでクライアントによって変更されることがある（その結果、変更したチャンクＣｍ４が得られる）。クライアントはチャンクＣ１−Ｃ３、Ｃｍ４およびＣ５を表わしているハッシュリストをデータ記憶サーバに送信することがある。このハッシュリストは完全な変更ファイルを表わすことになる。そのあと、データ記憶サーバはサーバ上にストアされたチャンクＣ１−Ｃ３およびＣ５をすでに有しているが、チャンクＣｍ４が抜けているクライアントに応答することがある。そのあと、クライアントはチャンクＣｍ４をデータ記憶サーバに送信することが可能である。そのあと、データ記憶サーバは、チャンクＣ１−Ｃ３、Ｃｍ４およびＣ５を表わしている受信したハッシュリストと共にチャンクＣｍ４をデータ記憶サーバにストアすることあり、すでにストアされたチャンクＣ１−Ｃ３およびＣはデータストア上にストアされた完全な変更ファイルを持つことになる。
【００８７】
以上から理解されるように、この書き込み経路の実施形態は、変更ファイルについても新しく作成されたファイルについても同じように使用可能である。変更ファイルであるか、新たに作成されたファイルであるかに関係なく、クライアントはどのファイルについてもチャンクリストを作成し、そのチャンクリストをデータ記憶サーバに送信することがあるので、データ記憶サーバは受信したチャンクリストを、サーバ上にすでにストアされているチャンクのリストと比較することができる。さらに、チャンクリストは、ファイルを構成するチャンクの各々をユニークに識別する暗号ハッシュリストであることがある。本明細書で説明したチャンクそれ自体は、圧縮チャンクであることも、生のデータフォーマットのチャンクであることも、暗号または他のなんらかの方法で変更されたチャンクでさえあることもある。
【００８８】
チャンクは、その送信時に、生のデータフォーマットでも、圧縮フォーマットでも、その他のフォーマットでも送信されることがある。以上から理解されるように、ファイルデータ部分が圧縮フォーマットで送信されるときは、その結果として、送信の効率性を得るために送信インフラストラクチャがデータを圧縮する必要がないとする最適化が得られることがあるので、データ記憶サーバはデータ記憶サーバ上の記憶を最適化するためにデータを圧縮する必要がない。送信の受信側にまだストアされていないか、あるいは存在しないチャンクだけを送信することにより、ファイルデータの送信と記憶の両方で最適化が実現されることがある。
【００８９】
本発明は、本発明の趣旨または基本的特徴から逸脱することなく、他の特定の形態で具現化されることがある。本明細書に記述した実施形態は、すべての側面において例示であって限定されるものではないと考慮されるものである。従って、本発明の範囲は上述してきた説明によってではなく特許請求の範囲の請求項によって示されている。請求項の等価の意味と範囲内に属するすべての変更はこれらの範囲内に包含されるものである。
【図１】
2013534007.tif 000003
【図２】
2013534007.tif 000004
【図３】
2013534007.tif 000005
【図４】
2013534007.tif 000006
【国際調査報告】
2013534007.tif 000007
2013534007.tif 000008
2013534007.tif 000009