(57)【特許請求の範囲】
【請求項１】
コンピュータ・システム上で実行されるアプリケーションによる取得のためにデータを記憶する方法であって：
ａ．複数のキャッシュ層および基本層を含む階層化キャッシュ・システムを提供し、
ｂ．前記データを前記基本層上に記憶し、前記データを、データのカテゴリーに対して使われるべき諸層のスタックを指定するポリシーに基づいて、前記複数のキャッシュ層の一つまたは複数にキャッシュし、より高いレベルのキャッシュ層がより低いレベルのキャッシュ層のデータをキャッシュし、
ｃ．データ組織化手段によって前記データのアプリケーション・ビューを前記アプリケーションに呈示することを含み、前記データ組織化手段は、複数のキャッシュ層および前記基本層のそれぞれについてメタデータ情報を含み、使用される記憶装置に関知せず、
当該方法はさらに：
ｄ．データ組織化手段の動作を、前記データ組織化手段とは独立に実行されるまたは他の仕方で処理されるよう、捕捉システムによって捕捉する段階をさらに含む、方法。
【請求項２】
前記複数のキャッシュ層および前記基本層のそれぞれは異なる記憶資源上に配置され、前記データ組織化手段は前記異なる記憶資源のそれぞれについてメタデータ情報を含む、請求項１記載の方法。
【請求項３】
少なくとも一つのオーバーフロー層を提供することをさらに含む請求項２記載の方法であって、前記オーバーフロー層は、前記複数のキャッシュ層および前記基本層のそれぞれとは異なる記憶資源上に配置され、前記データ組織化手段は前記オーバーフロー層のためのメタデータ情報を含む、方法。
【請求項４】
前記複数のキャッシュ層はそれぞれ半導体ドライブ上に設けられ、前記基本層はハードディスク・ドライブ上に設けられ、前記オーバーフロー層はクラウド記憶資源上に設けられる、請求項３記載の方法。
【請求項５】
前記データ組織化手段は前記ハードディスク・ドライブ上に記憶される、請求項４記載の方法。
【請求項６】
各キャッシュ層レベルは二つ以上の記憶資源を含む、請求項１記載の方法。
【請求項７】
前記ポリシーに従って入力／出力動作を分離させ、前記動作の少なくとも一部が前記捕捉システムによって捕捉され、前記ポリシーに従って処理されるようにする段階をさらに含む、請求項１記載の方法。
【請求項８】
前記ポリシーはポリシー・モジュールによって与えられる、請求項１記載の方法。
【請求項９】
前記ポリシー・モジュールは前記捕捉システムと一体である、請求項８記載の方法。
【請求項１０】
前記ポリシー・モジュールは前記データ組織化手段と一体である、請求項８記載の方法。
【請求項１１】
前記捕捉する段階がさらに、（ａ）捕捉される動作を、記憶資源と前記捕捉システムとの間に設けられたデータ変換エンジンに渡すこと；（ｂ）捕捉された動作の完了をログ記録すること；および（ｃ）捕捉された動作を変更して前記データ組織化手段に渡すこと、のうちの一つを含む、請求項１記載の方法。
【請求項１２】
前記捕捉システムと前記記憶資源との間にデータ変換エンジンを設けることをさらに含む、請求項２記載の方法。
【請求項１３】
前記データ組織化手段の捕捉された動作が、前記データ組織化手段の外部で前記ポリシーに従って前記データ変換エンジンによって実行される、請求項１２記載の方法。
【請求項１４】
前記データ変換エンジンはさらに、データが存在する最高のキャッシュ層を見出して前記データを取得するよう読み出し動作を実行するための読み出しキャッシュ・モジュールを有する、請求項１２記載の方法。
【請求項１５】
前記データ変換エンジンはさらに、種々のキャッシュ層レベルに対して書き込み動作を実行するための書き込みキャッシュ・モジュールを有する、請求項１２記載の方法。
【請求項１６】
前記データ変換エンジンはさらに、データが前記データ組織化手段を通過するのに先立って該データを暗号化および復号する暗号モジュールを有する、請求項１２記載の方法。
【請求項１７】
前記データ変換エンジンはさらに、前記データの属性を、メタデータ情報に記憶されているものと比較する完全性モジュールを有する、請求項１２記載の方法。
【請求項１８】
前記データ変換エンジンはさらに、脱重複段階を実行するための脱重複モジュールを有する、請求項１２記載の方法。
【請求項１９】
前記データ変換エンジンはさらに、失敗した書き込み動作に応答してオーバーフロー・キャッシュ層にデータを書き込むためのオーバーフロー・モジュールを有する、請求項１５記載の方法。
【請求項２０】
前記記憶資源と前記データ変換エンジンとの間の動作上のインターフェースを提供するためのデータ記憶インターフェースを提供することをさらに含む、請求項１２記載の方法。
【請求項２１】
前記データ記憶インターフェースが、各データ記憶資源が前記データ変換エンジンに対して一様に見えるよう、データ記憶資源情報を抽象化する、請求項２０記載の方法。
【請求項２２】
前記データ記憶インターフェースが、二つ以上のデータ記憶資源をプールして該二つ以上のデータ記憶資源が前記変換エンジンにとって単一の複合仮想ディスクとして見えるようにするプール機構として作用する、請求項２０記載の方法。
【請求項２３】
前記複数のキャッシュ層がオペレーティング・システム・ファイル・バッファ・キャッシュを有する、請求項４記載の方法。
【請求項２４】
前記データ組織化手段がファイルシステムである、請求項１記載の方法。
【請求項２５】
前記データ組織化手段が、オブジェクト・データベース、鍵値ストア、ネットワーク・プロトコルおよび共有データ・システムからなる群より選択される、請求項１記載の方法。
【請求項２６】
コンピュータ・システム上で実行されるアプリケーションによる取得のためにデータを記憶するシステムであって：
ａ．複数のキャッシュ層および基本層を含む階層化キャッシュ・システムであって、前記データは、前記基本層上に記憶され、あるポリシーに基づいて前記複数のキャッシュ層の一つまたは複数にキャッシュされ、より高いレベルのキャッシュ層がより低いレベルのキャッシュ層のデータをキャッシュする、階層化キャッシュ・システムと；
ｂ．前記データのアプリケーション・ビューを前記アプリケーションに呈示するデータ組織化手段であって、前記データ組織化手段は、複数のキャッシュ層および前記基本層のそれぞれについてメタデータ情報を含み、使用される記憶装置に関知しない、データ組織化手段と；
データ組織化手段の動作を、前記データ組織化手段とは独立に実行されるまたは他の仕方で処理されるよう捕捉する捕捉システムとを有する、
システム。
【請求項２７】
前記複数のキャッシュ層および前記基本層のそれぞれは異なる記憶資源上に配置され、さらに、前記データ組織化手段は前記異なる記憶資源のそれぞれについてメタデータ情報を含む、請求項２６記載のシステム。
【請求項２８】
少なくとも一つのオーバーフロー層をさらに有しており、前記オーバーフロー層は、前記複数のキャッシュ層および前記基本層のそれぞれとは異なる記憶資源上に配置され、前記データ組織化手段は前記オーバーフロー層のためのメタデータ情報を含む、請求項２７記載のシステム。
【請求項２９】
前記複数のキャッシュ層はそれぞれ半導体ドライブ上に設けられ、前記基本層はハードディスク・ドライブ上に設けられ、前記オーバーフロー層はクラウド記憶資源上に設けられる、請求項２８記載のシステム。
【請求項３０】
前記データ組織化手段は前記ハードディスク・ドライブ上に記憶される、請求項２９記載のシステム。
【請求項３１】
各キャッシュ層レベルは二つ以上の記憶資源を含む、請求項２６記載のシステム。
【請求項３２】
前記捕捉システムは、前記ポリシーに従って入力／出力動作を分離させ、前記動作の少なくとも一部が前記捕捉システムによって捕捉され、前記ポリシーに従って処理されるようにするよう適応されている、請求項２６記載のシステム。
【請求項３３】
前記ポリシーを与えるポリシー・モジュールをさらに有する、請求項２６記載のシステム。
【請求項３４】
前記ポリシー・モジュールは前記捕捉システムと一体である、請求項３３記載のシステム。
【請求項３５】
前記ポリシー・モジュールは前記データ組織化手段と一体である、請求項３３記載のシステム。
【請求項３６】
前記捕捉システムが、（ａ）捕捉される動作を、記憶資源と前記捕捉システムとの間に設けられたデータ変換エンジンに渡す手段；（ｂ）捕捉された動作の完了をログ記録する手段；および（ｃ）捕捉された動作を変更して前記データ組織化手段に渡す手段、のうちの少なくとも一つを含む、請求項３２記載のシステム。
【請求項３７】
前記捕捉システムと前記記憶資源との間にデータ変換エンジンをさらに有する、請求項３１記載のシステム。
【請求項３８】
前記データ変換エンジンはさらに、データが存在する最高のキャッシュ層を見出して前記データを取得するよう読み出し動作を実行するための読み出しキャッシュ・モジュールを有する、請求項３７記載のシステム。
【請求項３９】
前記データ変換エンジンはさらに、種々のキャッシュ層レベルに対して書き込み動作を実行するための書き込みキャッシュ・モジュールを有する、請求項３７記載のシステム。
【請求項４０】
前記データ変換エンジンはさらに、データが前記データ組織化手段を通過するのに先立って該データを暗号化および復号する暗号モジュールを有する、請求項３７記載のシステム。
【請求項４１】
前記データ変換エンジンはさらに、前記データの属性を、メタデータ情報に記憶されているものと比較する完全性モジュールを有する、請求項３７記載のシステム。
【請求項４２】
前記データ変換エンジンはさらに、脱重複段階を実行する脱重複モジュールを有する、請求項３７記載のシステム。
【請求項４３】
前記データ変換エンジンはさらに、失敗した書き込み動作に応答してオーバーフロー・キャッシュ層にデータを書き込むオーバーフロー・モジュールを有する、請求項４０記載のシステム。
【請求項４４】
前記システムはさらに、前記記憶資源と前記データ変換エンジンとの間の動作上のインターフェースを提供するためのデータ記憶インターフェースを有する、請求項３７記載のシステム。
【請求項４５】
各データ記憶資源が前記データ変換エンジンにとって一様に見える、請求項３７記載のシステム。
【請求項４６】
少なくとも二つ以上のデータ記憶資源がプールされる、請求項３１記載のシステム。
【請求項４７】
前記複数のキャッシュ層がオペレーティング・システム・ファイル・バッファ・キャッシュを含む、請求項２６記載のシステム。
【請求項４８】
前記データ組織化手段が、オブジェクト・データベース、鍵値ストア、ネットワーク・プロトコルおよび共有データ・システムからなる群より選択される、請求項２６記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、2010年8月25日に出願された米国仮出願第61/377,018号の優先権を主張する。その出願の内容はここに参照によってその全体において組み込まれる。
【０００２】
発明の分野
本発明は概括的にはコンピュータ・データ記憶に、より詳細には階層化された（tiered）キャッシュ構造を提供する方法およびシステムに関する。
【背景技術】
【０００３】
二つの具体的な新たなクラスの記憶装置が近年、一般的な記憶装置として登場し、ますます広く入手可能になるとともに簡単にアクセスできるようになりつつある：フラッシュ・メモリに基づく半導体ドライブ（SSD:  Solid  State  Drive）とクラウド記憶である。このそれぞれは、当技術分野において、性能およびコストにおいて、コンピュータ記憶システムにおいて多年にわたって主流であり続けてきた回転媒体式ハードディスク・ドライブとは明確に区別されることが知られている。各カテゴリーの記憶装置には、純粋なデータ記憶の観点から独自の強みがある。たとえばSSDは高速であり、通常のハードドライブは安価であり、クラウド記憶は柔軟である。現在使われているところでは、種々の記憶装置が所与のコンピュータ・システムによってアクセス可能であり、その記憶装置との対話は相異なるデータ・フローを使って管理される。図１は複数のクラスの記憶装置と対話する、典型的な従来技術のシステムを示している。
【０００４】
種々のクラスの記憶装置間の特性、性能およびコストの差は一般に、各クラス内でのさまざまな製品もしくは技術間の差よりも大きい。結果として、あらゆるカテゴリーの記憶装置を適宜使ってデータ記憶を管理することで、そのそれぞれの強みを最もよく活用できることが望ましい。当技術分野では、SSDを通常のハードドライブのためのキャッシュとして機能させるというトレンドが登場しつつある。だが、実装方法は原始的であり、システム毎に、通常のハードドライブとSSDとの間の簡略化されたデータ・フローを用いて設計される。
【０００５】
ここ数年にわたって、階層化（tiering）――データに適用されるポリシーに基づいてデータを別個の記憶装置に入れる――というアイデアが、データ管理にまつわるビジネス上の目標、たとえばコスト効率、データ保持または規制準拠を達成するために使われてきた。たとえば、すべてのデータはアーカイブされてもよく、敏感なデータは暗号化されてもよく、頻繁に使用されるデータはそのユーザーの近くに保持されてもよい、などである。この種の階層化は、主として、それらの階層のために使われる記憶装置またはデータ記憶システムによって区別されるのが習慣であった。
【０００６】
本発明の分野における現行の解決策は、一般に、図１に示されるような、ネットワーク・ベース（機器または記憶領域ネットワーク（Storage  Area  Networks））ブロック・ベースのキャッシュを使うおよび／または記憶装置（またはクラウド記憶の場合は記憶サービス）オプションの固定リストである。
【０００７】
従来技術のシステムは特定の諸クラスの記憶装置の利点を利用するものの、コンピュータ・システムと個別的な記憶装置との間の対話によってその使途が制限される。さらに、アプリケーション・レベルでは、種々のクラスの記憶装置からのデータ取得に対応しなければならないこともしばしばである。さらに、種々の記憶装置クラスの種々の利点からの相乗効果は、たとえあったとしてもほとんど実現されていない。よって、従来技術のシステムは、記憶装置がシステム内の他の種々のクラスの記憶装置には関わりなく独立に機能するので、記憶装置の物理的な明示に制限される。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
したがって、種々のクラスの記憶装置の利点から帰結する、該種々のクラスの記憶装置を独立に使うことで実現できるものを超えた利益を達成する階層化されたキャッシュ構造を提供する新規なシステムおよび方法を提供することが本発明の目的である。
【課題を解決するための手段】
【０００９】
本発明は、種々のクラスの記憶装置を単一のデータ組織化手段（means  to  organize  data）内に透明に統合して、それにより該種々のクラスの記憶装置の使用に対する、各クラスの記憶装置が独立に動作しそれぞれ独自のデータ組織化手段をもつ場合の利点を超える相乗的な恩恵を実現する新規なシステムおよび方法を提供する。本発明は、任意のクラスの記憶装置を任意の他のクラスの記憶装置上にキャッシュし、任意的に、そのようなキャッシングを複数のクラスおよび型の記憶装置の間で統合された仕方で提供することができる一般化されたキャッシュ・システムおよび方法を提供する。
【００１０】
本発明のある実施形態によれば、コンピュータ・システム上で実行されるアプリケーションによる取得のためにデータを記憶する方法であって、少なくとも一つのキャッシュ層および基本層を含む階層化キャッシュ・システムを提供し、あるポリシーに基づいて前記キャッシュ層および前記基本層の少なくとも一方にデータを記憶し、データ組織化手段によって前記データのアプリケーション・ビューを前記アプリケーションに呈示することを含む方法が提供される。好ましくは、前記データ組織化手段は、少なくとも一つのキャッシュ層および前記基本層のそれぞれについてメタデータ情報を含む。さらに、前記少なくとも一つのキャッシュ層および前記基本層のそれぞれは、異なる記憶資源上に配置され、前記データ組織化手段は前記異なる記憶資源のそれぞれについてメタデータ情報を含む。
【００１１】
本発明のある側面によれば、前記方法は、少なくとも一つのオーバーフロー層を提供することを含む。前記オーバーフロー層は、前記少なくとも一つのキャッシュ層および前記基本層のそれぞれとは異なる記憶資源上に配置され、前記データ組織化手段は前記オーバーフロー層のためのメタデータ情報を含む。
【００１２】
本発明のもう一つの側面によれば、前記少なくとも一つのキャッシュ層は複数の階層化されたキャッシュ層を含む。前記少なくとも一つのキャッシュ層は、オペレーティング・システムとの関連で使用されるオペレーティング・システム・ファイル・バッファ・キャッシュであってもよい。
【００１３】
本発明のもう一つの側面によれば、前記複数のキャッシュ層はそれぞれ半導体ドライブ上に設けられ、前記基本層はハードディスク・ドライブ上に設けられ、前記オーバーフロー層はクラウド記憶資源上に設けられる。
【００１４】
本発明のもう一つの側面によれば、前記データ組織化手段は前記ハードディスク・ドライブ上に記憶される。
【００１５】
本発明のもう一つの側面によれば、前記方法はさらに、前記データを前記基本層上に記憶し、前記データを前記複数のキャッシュ層の一つまたは複数上にキャッシュすることを含み、より高いレベルのキャッシュ層がより低いレベルのキャッシュ層のデータをキャッシュする。
【００１６】
本発明のもう一つの側面によれば、各キャッシュ層レベルは二つ以上の記憶資源を含む。
【００１７】
本発明のもう一つの側面によれば、前記データ組織化手段は使用される特定の記憶装置に関知しない。
【００１８】
本発明のもう一つの側面によれば、データ組織化手段の動作が実行されるのをまたは他の仕方で処理されるのを、前記データ組織化手段とは独立に、捕捉システムによって、捕捉する段階。
【００１９】
本発明のもう一つの側面によれば、本方法はさらに、前記ポリシーに従って入力／出力動作を分離させ、前記動作の少なくとも一部が前記捕捉システムによって捕捉され、前記ポリシーに従って処理されるようにする段階を含む。
【００２０】
本発明のもう一つの側面によれば、前記ポリシーはポリシー・モジュールによって与えられる。
【００２１】
本発明のもう一つの側面によれば、前記ポリシー・モジュールは前記捕捉システムと一体である。
【００２２】
本発明のもう一つの側面によれば、前記ポリシー・モジュールは前記データ組織化手段と一体である。
【００２３】
本発明のもう一つの側面によれば、前記捕捉する段階がさらに、（ａ）捕捉される動作を、記憶資源と前記捕捉システムとの間に設けられたデータ変換エンジンに渡すこと；（ｂ）捕捉された動作の完了をログ記録すること；および（ｃ）捕捉された動作を変更して前記データ組織化手段に渡すこと、のうちの一つを含む。
【００２４】
本発明のもう一つの側面によれば、前記方法はさらに、前記捕捉システムと前記記憶資源との間にデータ変換エンジンを設けることを含む。
【００２５】
本発明のもう一つの側面によれば、前記方法はさらに、前記データ組織化手段の外部でポリシーを実行する段階を含み、前記ポリシーを実行する段階は前記データ変換エンジンによって実行される。
【００２６】
本発明のもう一つの側面によれば、前記データ変換エンジンはさらに、データが存在する最高のキャッシュ層を見出して前記データを取得するよう読み出し動作を実行するための読み出しキャッシュ・モジュールを有する。
【００２７】
本発明のもう一つの側面によれば、前記データ変換エンジンはさらに、種々のキャッシュ層レベルに対して書き込み動作を実行するための書き込みキャッシュ・モジュールを有する。
【００２８】
本発明のもう一つの側面によれば、前記データ変換エンジンはさらに、データが前記データ組織化手段を通過するのに先立って該データを暗号化および復号する暗号モジュールを有する。
【００２９】
本発明のもう一つの側面によれば、前記データ変換エンジンはさらに、前記データの属性を、メタデータ情報に記憶されているものと比較するための完全性モジュールを有する。
【００３０】
本発明のもう一つの側面によれば、前記データ変換エンジンはさらに、脱重複（de-duplication）段階を実行するための脱重複モジュールを有する。
【００３１】
本発明のもう一つの側面によれば、前記データ変換エンジンはさらに、失敗した書き込み動作に応答してオーバーフロー・キャッシュ層にデータを書き込むためのオーバーフロー・モジュールを有する。
【００３２】
本発明のもう一つの側面によれば、前記方法はさらに、前記記憶資源と前記データ変換エンジンとの間の動作上のインターフェースを提供するためのデータ記憶インターフェースを提供することを含む。
【００３３】
本発明のもう一つの側面によれば、前記方法はさらに、各データ記憶資源が前記データ変換エンジンに対して一様に見えるよう、データ記憶資源情報を抽象化する（abstracting）段階を含む。
【００３４】
本発明のもう一つの側面によれば、前記方法はさらに、少なくとも二つ以上のデータ記憶資源をプールする段階を含む。
【００３５】
本発明のもう一つの実施形態によれば、コンピュータ・システム上で実行されるアプリケーションによる取得のためにデータを記憶するシステムであって、少なくとも一つのキャッシュ層および基本層を含む階層化キャッシュ・システムであって、前記データは、あるポリシーに基づいて前記少なくとも一つのキャッシュ層および前記基本層の少なくとも一方に記憶される、階層化キャッシュ・システムと、前記データのアプリケーション・ビューを前記アプリケーションに呈示するデータ組織化手段であって、前記データ組織化手段は、少なくとも一つのキャッシュ層および前記基本層のそれぞれについてメタデータ情報を含む、データ組織化手段とを含む、システムが提供される。
【００３６】
本発明のある側面によれば、前記少なくとも一つのキャッシュ層および前記基本層のそれぞれは、異なる記憶資源上に配置され、さらに、前記データ組織化手段は前記異なる記憶資源のそれぞれについてメタデータ情報を含む。
【００３７】
この実施形態のもう一つの側面によれば、前記システムは、少なくとも一つのオーバーフロー層を含み、前記オーバーフロー層は、前記少なくとも一つのキャッシュ層および前記基本層のそれぞれとは異なる記憶資源上に配置され、前記データ組織化手段は前記オーバーフロー層のためのメタデータ情報を含む。
【００３８】
この実施形態のもう一つの側面によれば、前記少なくとも一つのキャッシュ層は複数の階層化されたキャッシュ層を含む。
【００３９】
この実施形態のもう一つの側面によれば、前記複数のキャッシュ層はそれぞれ半導体ドライブ上に設けられ、前記基本層はハードディスク・ドライブ上に設けられ、前記オーバーフロー層はクラウド記憶資源上に設けられる。
【００４０】
この実施形態のもう一つの側面によれば、前記データ組織化手段は前記ハードディスク・ドライブ上に記憶される。
【００４１】
この実施形態のもう一つの側面によれば、前記データは前記基本層上に記憶され、前記複数のキャッシュ層の前記一つまたは複数上にキャッシュされ、より高いレベルのキャッシュ層がより低いレベルのキャッシュ層のデータをキャッシュする。
【００４２】
この実施形態のもう一つの側面によれば、各キャッシュ層レベルは二つ以上の記憶資源を含む。
【００４３】
この実施形態のもう一つの側面によれば、前記データ組織化手段は使用される特定の記憶装置に関知しない。
【００４４】
この実施形態のもう一つの側面によれば、データ組織化手段の動作が実行されるのをまたは他の仕方で処理されるのを、前記データ組織化手段とは独立に、捕捉するための捕捉システムをさらに有する。
【００４５】
この実施形態のもう一つの側面によれば、前記捕捉システムは、前記ポリシーに従って入力／出力動作を分離させ、前記動作の少なくとも一部が前記捕捉システムによって捕捉され、前記ポリシーに従って処理されるようにするよう適応されている。
【００４６】
この実施形態のもう一つの側面によれば、前記システムは、前記ポリシーを与えるポリシー・モジュールをさらに有する。
【００４７】
この実施形態のもう一つの側面によれば、前記ポリシー・モジュールは前記捕捉システムと一体である。
【００４８】
この実施形態のもう一つの側面によれば、前記ポリシー・モジュールは前記データ組織化手段と一体である。
【００４９】
この実施形態のもう一つの側面によれば、前記捕捉システムがさらに、（ａ）捕捉される動作を、記憶資源と前記捕捉システムとの間に設けられたデータ変換エンジンに渡す手段；（ｂ）捕捉された動作の完了をログ記録する手段；および（ｃ）捕捉された動作を変更して前記データ組織化手段に渡す手段、のうちの少なくとも一つを含む。
【００５０】
この実施形態のもう一つの側面によれば、前記捕捉システムと前記記憶資源との間にデータ変換エンジンが設けられる。
【００５１】
この実施形態のもう一つの側面によれば、前記データ変換エンジンはさらに、データが存在する最高のキャッシュ層を見出して前記データを取得するよう読み出し動作を実行するための読み出しキャッシュ・モジュールを有する。
【００５２】
この実施形態のもう一つの側面によれば、前記データ変換エンジンはさらに、種々のキャッシュ層レベルに対して書き込み動作を実行するための書き込みキャッシュ・モジュールを有する。
【００５３】
この実施形態のもう一つの側面によれば、前記データ変換エンジンはさらに、データが前記データ組織化手段を通過するのに先立って該データを暗号化および復号する暗号モジュールを有する。
【００５４】
この実施形態のもう一つの側面によれば、前記データ変換エンジンはさらに、前記データの属性を、メタデータ情報に記憶されているものと比較するための完全性モジュールを有する。
【００５５】
この実施形態のもう一つの側面によれば、前記データ変換エンジンはさらに、脱重複（de-duplication）段階を実行するための脱重複モジュールを有する。
【００５６】
この実施形態のもう一つの側面によれば、前記データ変換エンジンはさらに、失敗した書き込み動作に応答してオーバーフロー・キャッシュ層にデータを書き込むためのオーバーフロー・モジュールを有する。
【００５７】
この実施形態のもう一つの側面によれば、前記システムはさらに、前記記憶資源と前記データ変換エンジンとの間の動作上のインターフェースを提供するためのデータ記憶インターフェースを有する。
【００５８】
この実施形態のもう一つの側面によれば、少なくとも二つ以上のデータ記憶資源がプールされる。
【図面の簡単な説明】
【００５９】
これから単に例として、実施形態について付属の図面を参照しつつ述べる。
【図１】各記憶資源またはデータ記憶システムが管理および相互接続されたデータ・フローの両方の点で別個である、従来技術のコンピュータ記憶モデルを示している。
【図２】本発明に基づく記憶モデルを示している。
【図３】本発明のある実施形態に基づく一般的な記憶階層かモデルを示している。
【図４】図３の記憶モデルの洗練されたバージョンを示している。
【図５】本発明のある実装に基づくブロック図である。
【図６】４方向（4-way）RAID0構成をエミュレートする、複合記憶資源として使われるmin-OR記憶ツリーの例を示している。
【図７】ミラーの一つがRAID6等価構成である、より複雑な３方向（3-way）RAID1ミラーリングを示す、複合記憶資源として使われる例示的なmin-OR記憶ツリーを示している。
【図８】本発明が実装されうる一般化されたコンピュータ・システムを示している。
【図９】本発明と一緒に使うための代表的なデータ変換エンジンを示している。
【発明を実施するための形態】
【００６０】
本発明は、種々のクラスの記憶装置を単一のファイルシステム内に透明に統合して、それにより該種々のクラスの記憶装置の使用に対する、各クラスの記憶装置が独立に動作しそれぞれ独自のファイルシステムをもつ場合の利点を超える相乗的な恩恵を実現する新規なシステムおよび方法を提供する。以下の説明に鑑みて当業者には明白になるであろうが、本発明は、任意のクラスの記憶装置を任意の他のクラスの記憶装置上にキャッシュし、任意的に、そのようなキャッシングを複数のクラスおよび型の記憶装置の間で統合された仕方で提供することができる一般化されたキャッシュ・システムおよび方法を提供する。本発明は理解の簡単のためにファイルシステムに関して記述されるが、任意のデータ組織化手段が使用されうることは理解されるであろう。それに含まれるものとしては、これに限られないが、データベース、特にオブジェクト・データベース、鍵値ストア、いくつかのネットワーク・プロトコルおよびいくつかの共有データ・システムがある。
【００６１】
上記の機能を実装する際に、出願人は次のような問題に直面する。（ａ）アプリケーションやオペレーティング・システムに対する変更を必要とすることなく、記憶装置のユーザーが本稿に記載されるような恩恵を経験できるよう、いかにして種々の記憶装置を透明に統合するか。（ｂ）新たな技術が登場する際にも本発明が実装できるよう、多くの利用可能なオプションのうちからの記憶装置の選択に関知せずにいるにはどうすべきか。（ｃ）一般的なレベルで記憶装置の安全性および完全性をいかにして提供するか。（ｄ）低速またはリモートである記憶装置についてのレイテンシー問題にいかにして対処すべきか。以下は、これらの問題をいかにして解決して本発明に至ったかについての簡単な、トップレベルの説明である。本発明の実施についてのより詳細な説明はその後に述べる。
【００６２】
透明な統合の問題は、主要なデータ記憶システムの既存の、ユーザーに見える編成（ファイルシステム内のファイルシステム・メタデータのような）を保持して、同じもしくは他の記憶装置上へのデータ配置を独立して制御させることによって解決できることが発見された。これは、図１に示されるような従来技術のシステムのデータ・フローおよび編成を、図２に示されるようなものに変更する。図２では、本発明に従い、記憶の各レイヤー（layer）または層（tier）がより低位のレイヤーのためのフロントエンドになっている。
【００６３】
不関知（agnosticity）問題に関しては、システム内の各記憶装置を一般的データ記憶資源として使い、根底にある記憶機構を抽象化し去ってすべての装置についての一様なインターフェースを提供することにより、その特定のクラスの記憶装置から得られる固有の物理的利点を保持しつつも、各クラスの記憶装置が同じに見え、よって関知せずに扱われることができることが発見された。
【００６４】
安全性および完全性問題は、クラウド記憶の場合にありうるようにユーザー／所有者の管理外のどこかに記憶されているデータを含め、システムを通過するあらゆるデータのポリシー・ベースの処理を提供することによって解決された。さらに、これは、すべての装置についての一様なインターフェースを提供するというもう一つの利点である。それによりすべての装置が関知せずに扱われることができ、よってそこに記憶されているデータを、記憶装置クラスやデータが存在する特定の記憶装置に関わりなくポリシー・ベースの処理にかけることができる。
【００６５】
レイテンシー問題は、複数の記憶装置についての透明な統合を使ってパフォーマンスを最適にするよう諸記憶層のキャッシュ・カスケードを提供することによって解決される。すなわち、どのクラスにデータが記憶されるかを決定する際、特定の諸クラスのデータ記憶の物理的な特性が考慮に入れられうるよう規則が適用されてもよい。あるいはまた、層のより高いレベルがより高速な記憶クラスを与えられるようシステム・レベル設計が最初において適用されてもよい。
【００６６】
本発明は、概括的にはコンピュータ・システムのコンテキスト内で動作し、図８に一例を示す一般的な既知のコンピュータ・システムにとって利用可能なデータ記憶機能に対する改善を提供するはたらきをする。図のように、コンピュータ・システム２０はいくつかの物理的および論理的コンポーネントを有しており、それに含まれるものとしては、中央処理ユニット（「CPU」）２４、ランダム・アクセス・メモリ（「RAM」）２８、入出力（「I/O」）インターフェース３２、ネットワーク・インターフェース３６、不揮発性記憶４０およびCPU  ２４が他のコンポーネントと通信できるようにするローカル・バス４４がある。CPU  ２４はオペレーティング・システムおよびいくつかのソフトウェア・システムを実行する。RAM  ２８はCPU  ２４に対して比較的反応のよい揮発性記憶を提供する。I/Oインターフェース３２は、キーボード、マウスなどといった一つまたは複数の装置から入力が受領されることを許容し、ディスプレイおよび／またはスピーカーのような出力装置に情報を出力する。ネットワーク・インターフェース３６は他のシステムとの通信を許す。不揮発性記憶４０はオペレーティング・システムおよびプログラムを記憶する。コンピュータ・システム２０の動作の間、オペレーティング・システム、プログラムおよびデータは、実行を容易にするために不揮発性記憶４０から取得され、RAM  ２８に入れられてもよい。
【００６７】
図２の例は本発明の一つのトップレベルの実装を示している。ここでは、コンピュータ・システム２００は階層化されたキャッシュ構造からのデータにアクセスする。ここで、キャッシュ構造は、SSDで実装されるキャッシュ層２１０と、通常のハードドライブで実装される基本層２２０と、クラウド記憶サービスで実装されるオーバーフロー層２３０とを含む。図のように、ファイルシステム２４０はいまだ、既知のコンピュータ・システムにおいてファイルシステムが通常存在する基本層２２０上に、すなわちハードディスク・ドライブ上に存在していてもよい。
【００６８】
ここで図３を参照するに、本発明に基づくトップレベルのデータ・フローが示されている。ファイルシステム３４０は、データ記憶システムの拡張であり、コンピュータ３００によってアクセス可能な記憶装置のいずれに位置されていてもよい。一連のキャッシュ層３１０や基本層３２０およびオーバーフロー層３３０が示されている。各キャッシュ層は当該層内に図のようにそれぞれ任意の数の記憶資源３１１、３２１および３３１を有していてよい。本発明によれば、より高レベルの層は、スタック中より低位の他の層からのデータをキャッシュする。諸キャッシュ層３１０には、より高レベルのキャッシュ層３１０がより低レベルにあるキャッシュ層３１０ａからのデータをキャッシュするという階層構造がある。基本層３２０はデータのハードな源であり、記憶はこのレベルで完了される。オーバーフロー層３３０は、基本層３２０がいっぱいである場合にデータが入れられるところである。
【００６９】
一般には、一つまたは複数のキャッシュ層３１０、単一の基本層３２０があり、オーバーフロー層３３０は任意的に設けられる。ただし、複数のオーバーフロー層３３０があってもよい。任意のクラスのデータ記憶装置が使用されてもよく、二つ以上の層について使用されてもよい。各層で使用される記憶の特定のクラスは好ましくは図２に示したようなものだが、他のクラスの記憶も考えられる。たとえば、複数のキャッシュ層は、オペレーティング・システムと連携して使われるのが好ましいオペレーティング・システム・ファイル・バッファ・キャッシュ上に実装されてもよい。この例では、本発明は、ファイル・バッファ・キャッシュの使用においてオペレーティング・システムと協働するが、ファイル・バッファは排他的な資源として使われるのではない。すなわち、ファイル・バッファ・キャッシュの下にキャッシュすることは暗黙的にはファイル・バッファ・キャッシュを使うことになるが、本発明はそれ以上のことを考えており、何かがファイル・バッファ・キャッシュにはいるか否かについての明示的な制御があり、本発明は、既存のシステムにおけるファイル・バッファ・キャッシュの典型的な使用を超えた仕方で動作する。
【００７０】
本発明は、ファイルシステム３４０メタデータが、他の目的にも使われるものを含め任意の記憶資源上に記憶されることをも許容する。実際上、すべてのデータは、ある層から次の層に配置されるまたは動かされる際、コンピュータ・システム３００を通って動く。すなわち、コンピュータ・システム３００は、本発明を実行するための命令およびファイルシステム３４０メタデータに基づいて本発明の層キャッシュ・レベル間でデータを転送することを担う。
【００７１】
図３は本発明の具体的なトップレベルの実装を示しているが、図３に示したデータは単一の型である。図４を参照するに、複数の型のデータ４５０ａ、４５０ｂ、４５０ｃおよび４５０ｎを組み込む本発明の一般化された実装が示されている。たとえば、データ型４５０ａは二つのキャッシュ層４１０ａおよび４１０ｂならびに基本層４２０上に存在している。データ型４５０ｂおよび４５０ｃは異なるキャッシュ層上に、だが同じ基本およびオーバーフロー層上に存在する。記憶資源４１１、４２１および４３１はそれぞれキャッシュ層４１０、基本層４２０およびオーバーフロー層４３０上に存在する。当業者によって理解されるであろうように、本発明は、図４の一般化された事例において示されるように、キャッシュ層の任意のものにおいて任意の具体的な型の記憶資源上に記憶される任意の型のデータを考えている。各種類のデータについて、後述するポリシーによって決定されるところにより、階層化（tiering）スタックが存在する。すべてのキャッシュ層およびオーバーフロー層はオプションであり、基本層だけが必須である。データはその階層化スタックを通じて順に流れる。同じ記憶資源が衝突なしに複数の階層化スタックに現れることもありうる。記憶資源の名前空間において明示的にまたは記憶されるデータについての命名アルゴリズムにより暗黙的にデータを分離する機能のおかげである。これらの機能の実装の詳細はのちに述べる。当業者によって理解されるであろうように、本発明は、複数のクラスの記憶資源を横断してデータが管理され、記憶されることのできる新たなパラダイムを提供する。
【００７２】
図３および図４は記憶資源を含むものとして記述してきたが、これらは物理的な資源自身の上に他の編成情報を組み込むデータ記憶システムであってもよい。本発明は、各層での記憶資源の編成に対する構造をも提供する。図３および図４における各記憶資源はデータ記憶ツリーとして編成されてもよい。ツリー内の特定のノードが葉であれば、そのノードは本発明の実装の何らかのレベルにおける一様なインターフェースをもつデータ記憶資源である。特定のノードが内部ノードであれば、このノードについてデータを記憶することは、最小数のその子ノードについてデータを記憶することを表す。よって、そのような記憶ツリーの内部ノードは、その特定の枝の最上位の記憶レイヤーであり、ファイルシステムには、当該内部ノードから発する葉記憶資源を管理するためのセマンティクス（semantics）を含む単一の記憶資源のように見える。さらに、本発明は、生のブロック記憶（ディスク装置のような）、ファイルシステムおよび鍵値ストアを含む複数の形のデータ記憶システムまたは記憶資源のためのサポートを考えている。これらの記憶資源のそれぞれは、複雑な構造を有していてもよく、たとえば別個のディスクからのブロックを含んでいてもよいが、それでも、本発明を実装するために、そしてその後、記憶資源の根底にある詳細には関知しない使用アプリケーションまたはオペレーティング・システムにビューを提供するために、本発明のファイルシステム３４０、４４０への一様な出力が呈示される。これらの特徴の実装の詳細は以下の記述に鑑みて明白となるであろう。
【００７３】
まとめると、本発明は、以下の、限定するものではない、それぞれ独特な特徴をもつ。
ａ）それぞれの（ポリシーによって決定される）データ・カテゴリーが独自の諸層のスタックをもつ、一般的なキャッシュ階層化記憶モデルを使う。
ｂ）使用されている具体的な記憶装置には関知しない。
ｃ）既存のデータ記憶システム（たとえばファイルシステム）の拡張として生成されることができるとい点でユーザーにとって透明である。
ｄ）データ記憶システムの、根底にある実装ではなく、ユーザーに見える編成に基づくので、たとえばファイルシステムにとってはブロック・ベースではなくファイル・ベースである。
ｅ）既存のオペレーティング・システム・インストールの追加された機能として展開される、またはネットワーク・アプライアンス（appliance）としてパッケージングされることができる。
【００７４】
さらに、本発明は、これらの機能を、主要インターフェースとして実際の記憶資源より上のより高いレベルの抽象化を提供する、ファイルシステム以外のデータ記憶システムのために、たとえばデータベース、特にオブジェクト・データベース、鍵値ストア、いくつかのネットワーク・プロトコルおよびいくつかの共有データ・システムのために提供することができる。
【００７５】
本発明の結果の利点およびトップレベルの詳細について述べたので、当業者が本発明を実施できるようにするための好ましいシステムおよび方法について、本発明のある好ましい実施形態を示す図５を参照して述べる。図５では、コンピュータ・システム上のアプリケーション５１０にインターフェースを呈示するとともに捕捉システム５６０と通信するファイルシステム５４０が示されている。捕捉システム５６０は、本発明に基づくキャッシュ階層化された記憶システムを提供する際に使われるさまざまなデータ記憶装置５９０の間で動くデータを捕捉するようポリシー・モジュール５７０からの命令に基づいて動作する。データ変換エンジン５８０およびデータ記憶インターフェース５８５が設けられている。これらは、捕捉システム５６０またはファイルシステム５４０のいずれかによるデータに対する操作を実行するのに先立って、後述するようにデータを処理する。
【００７６】
〈ファイルシステム〉
本発明はファイルシステム５４０の使用を要求する。ファイルシステム５４０の一般的な性能および機能は、当技術分野において、オペレーティング・システム／アプリケーションとデータ記憶システムの間のインターフェースであることが知られている。ファイルシステム５４０は好ましくは、修正されることなくアプリケーションが使用できるファイルシステム・インターフェースをアプリケーションに対して呈示する。このようにして、ファイルシステム５４０は、最適化された仕方で本発明の教示を活用および利用する新たな型のファイルシステムであってもよいし、既存のファイルシステムの修正されたバージョンであることもできるし、あるいは既存のファイルシステムの拡張バージョンであることもできる。それぞれの場合において、完全なファイルシステム機能性は保持され、よってデータはファイルシステムに記憶されることができるが、選択ポリシーにマッチするファイルシステム動作は、捕捉システム５６０と称されるモジュールにリダイレクトすることにより、従来技術のファイルシステム動作とは異なる仕方で処理される。既存のファイルシステムを拡張する場合、捕捉システム５６０へのこのリダイレクトを実装するための一つの具体的なシステムおよび方法が、出願人の、「データ記憶システム機能を拡張するシステムおよび方法」という名称の同時係属中のPCT出願第PCT/CA2011/050514において開示されている。この出願の内容はここに参照によって組み込まれる。
【００７７】
ファイルシステム・インターフェースを提供しないデータ記憶システムのために、本発明は、そのデータ記憶システムの好ましいインターフェースを提供する。ファイルシステムについて行ったように他のデータ記憶システムについてデータ・フローを修正することに対しても、同じ原理が同様の仕方で当てはまる。
【００７８】
〈捕捉システム〉
本発明の追加される機能の実装により通常のファイルシステム機能を拡張するために、捕捉（intercepting）システム５６０が提供される。捕捉システム５６０はファイルシステム動作を適切に捕捉し、そうした動作がファイルシステム自身の外部で透明に処理されることを許容するよう適応されている。任意的に、捕捉システム５６０はファイルシステム自身の拡張であってもよいし、あるいは捕捉システム５６０は組み込みのオペレーティング・システム機能を利用することによって提供されることもできるし、あるいは他の仕方で、たとえば当技術分野において現在利用可能な市販製品を通じて提供されることもできる。本発明は、捕捉システム５６０の特定の実装に限定されるものではない。
【００７９】
本発明の目的のためには、捕捉システム５６０はポリシーに従ってデータ記憶システム内の入出力動作を分離するために提供される。一組の動作は通常通りデータ記憶システムのために進行し、別の一組は捕捉システムによってポリシーに従って捕捉される。このようにして、データ記憶システムはそのもとの機能を保持し、（ａ）データ記憶システムのセマンティクスが保持されるので、捕捉システム５６０の動作が一般にデータ記憶システムのユーザーにとって透明であること、（ｂ）データ記憶システムのセマンティクスが捕捉システムによって拡張されること、および（ｃ）データ記憶システム自身が、捕捉システムによって、そのポリシーを実装する際に、資源として使用可能であること、を許容する。
【００８０】
本発明は、本発明の一般的な性質および教示から外れることなく、上記の機能からの変形および逸脱を考えている。たとえば、コンテキストに依存してデータが異なる見え方をすること（データ多形）を含むポリシーを実装する場合、データ記憶システムのセマンティクスは保持されなくてもよく、捕捉システムによって上書きされてもよい。これは、上記の（ｂ）のようにファイルシステム・セマンティクスを拡張する一つの方法でもある。
【００８１】
上記（ｃ）に関しては、ポリシーが、ある種のファイルが暗号化されるが、他の点では暗号化しない場合のように同じファイルシステム上に同じように記憶されるべきであることを指定できることが考えられている。あるいは、捕捉システムがその機能を支援するようファイルシステム上でデータベースを維持できることが考えられている。あるいは本発明の好ましい実施形態の場合のように、ファイルシステムがすべてのメタデータについて責任を負うままであってもよく、捕捉システムが一部または全部のデータについての責任を引き継ぐことができることが考えられている。
【００８２】
したがって、捕捉システム５６０は、階層化されたキャッシュ記憶の根底にある構造とアプリケーション・レベルで呈示されるファイルシステム５４０との間のインターフェースを提供する。ファイルシステム自身が複雑な複合ファイルシステムであることができることを注意しておくべきである。たとえばメタデータが物理的に分散されることができるようにし、ファイルシステムが分散されたキャッシュおよびロック管理を提供してデータ完全性を確保するのである。
【００８３】
上記のような捕捉システムを使えば、データ記憶システムのユーザーに見える編成は、捕捉システムがデータをどのように配置するよう決定しようとも、明らかに不変である。これは、先に論じたように、種々の記憶装置の透明な統合を提供する問題に対する一つの解決策である。しかしながら、記憶装置の異なる特性およびクラスを考えると、ユーザー経験は、捕捉システムによってなされることのできるデータ配置の選択のパフォーマンス特性によっても影響される。この問題を解決する典型的な方法は、キャッシュを用いることであり、捕捉システムがデータをどこにでも配置できることを考え、本発明は、ユーザーおよびそのアプリケーションのためのパフォーマンスの最適化を支援するために、上記のようなキャッシュ階層化記憶モデルを適用する。
【００８４】
〈ポリシー〉
本発明は、ポリシー・モジュール５７０をも提供する。あるいはまた、ポリシーは捕捉システム中に組み込まれてもよいし、あるいはファイルシステムの拡張として提供されてもよい。ポリシーおよびその実行は、好ましくは、本発明の他のすべての主要なモジュールの動作を指示する。ポリシー・モジュールは好ましくは、ポリシー記憶機能およびユーザー・インターフェース機能を包含する。
【００８５】
一般に、ポリシーとは、動作に関連付けられたコンテキスト・パターン、または、データの記憶および処理が実行される際の具体的な規則である。たとえば、ポリシーは、「.avi」拡張子をもち1メガバイトより大きないかなるファイルについても、そのファイルはカーネル・ファイル・キャッシュを通じてバッファリングしないこと、あるいは許容される仕事時間外にファイル・データにアクセスする任意のユーザー「ジョー」について、その動作を実行しないこと、あるいは新しいデータを常に「サイト外記憶」と名付けられるデータ記憶に複製すること、あるいはこの動作の完了のためにスペースが不十分である場合に、「クラウド記憶」上の記憶を利用すること、を規定してもよい。これらの例は単に、ポリシーを通じて適用されうる幅広い多様な規則を例解するために与えられている。本発明の教示を適用する際に、さまざまな他のポリシーがポリシー・モジュール５７０によって実装されてもよい。
【００８６】
任意的に、これらのポリシーをポリシー・モジュール５７０に伝えるためにユーザー・インターフェースが設けられてもよい。これはたとえば、最初に本発明に基づく階層化されたキャッシュを既存のコンピュータ・システムと統合する際に実行されるアプリケーションであることができる。あるいはまた、本発明の管理者にとってアクセス可能なアプリケーションであることもできる。ポリシー・モジュール５７０に関し、パターンは、観察、要求されるアクションまたはデータ状態として定義され、それに応答してポリシー・モジュール５７０はアクションを実行し、あるいは本発明の他の任意の要素によるアクションの実行のための手配をする。ポリシー・モジュール５７０の本発明の他の要素のそれぞれとの対話について以下で述べる。
【００８７】
ポリシーは、ポリシー・モジュール５７０により、どのファイルシステム動作を捕捉システム５４０が捕捉するか、捕捉されたらそれをどうするかを制御する。捕捉は、コンテキストが捕捉システム５４０に利用可能な際、コンテキスト・パターンを照合することによって制御される。コンテキストは本稿では、アプリケーションによって開始されたある特定の動作に関してファイルシステムに利用可能な任意の情報として、広義に定義される。この情報の例としては、これに限られないが、次のようなものが含まれる。（ａ）動作を要求するプロセスの識別情報、（ｂ）動作を要求するプロセスの所有者の識別情報、（ｃ）関与するファイルの名前、（ｄ）要求される動作、（ｄ）要求される動作のパラメータ、（ｅ）動作に関与するファイルの、これに限られないがサイズ、作成日時、最終修正時を含む個々の属性、（ｆ）日時、システム状態、システム資源使用などといった一般的なコンテキスト情報、（ｇ）アプリケーションがローカルかリモートか、（ｈ）ファイルがローカルかリモートか。本稿は、ポリシーとポリシー・モジュールは交換可能なものとして言及する。実際上、ポリシーは、ポリシー・モジュールによって実行されるまたは伝達される任意の命令の集合である。
【００８８】
捕捉システム５４０は、ポリシー・モジュール５７０からの適応ポリシーに応答して、次の三つのアクションのうちの一つを行ってもよい：（ｉ）捕捉された動作をデータ変換エンジン５８０に渡して、ファイルシステムに何を伝達するかをデータ変換エンジンによって告げられるのを待つ；（ｉｉ）捕捉された動作が発生したことを記録する（可能性としては、状態変化またはログ記録機能の一部として）；（ｉｉｉ）捕捉された動作を変更してファイルシステム内ですぐに先に渡す。ポリシー・モジュール５７０は捕捉システム５４０に、ひとたび特定のコンテキスト・パターンを認識したら何をすべきかを命令するよう適応されている。
【００８９】
ポリシー・モジュールは、上記のように種々のキャッシュ層において種々の記憶資源上でデータを適応的に記憶するための上記の階層化されたキャッシュ・モデルを実装する規則を含んでいる。
【００９０】
〈データ変換エンジン〉
ポリシーは、好ましくはデータ変換エンジン５８０の一部をなすまたはデータ変換エンジン５８０と通信する一組の機能モジュールを与えられて、捕捉された各動作が具体的にいかにして処理されるかを決定する。任意的に、ポリシーは、同じアクションがコンテキストに基づいて種々の具体的な仕方で実行されることができるよう、そうした機能モジュールについてのパラメータをも提供する。データ変換エンジン５８０は好ましくは、ファイルシステムの動作フローの外部でポリシーを実行することを担う。のちに詳述するデータ記憶インターフェース５８５は、データ変換エンジン５８０と本発明の階層化されたキャッシュ編成の提供に使われるデータ記憶資源との間のインターフェースを提供する。
【００９１】
本発明によれば、ポリシー・モジュールはデータ変換エンジン５８０によって使用されるデータ記憶ラベルを、そのデータ記憶ラベルを与えられたときに入出力動作を実行するために使われるアルゴリズムと関連付ける。
【００９２】
データ変換エンジン５８０は好ましくは、各ポリシー・アクションについて一組の処理命令にアセンブルされたいくつかの機能モジュールを含む。単純なアクションは、各機能モジュールについて一つの入力および一つの出力をもって構成される原始的な一組の機能モジュールによって表すことができる。よって、データ変換エンジン５８０の最も単純な型は、固定したポリシーをもち、したがって、互いと固定した接続をもちそれぞれ一つの入力および一つの出力をもつ機能モジュールを使う。実際上は、機能モジュールは、実は、より低レベルのモジュールが実行する前および後の両方において動作を実行することができなければならない。よって、概念上の単一入力単一出力モジュールは実際には、たとえばデータ変換エンジン５８０内の各機能モジュール間の対話的な相互作用を許容するために、二つの入力および二つの出力をもつ。
【００９３】
データ変換エンジン５８０の役割は、捕捉された動作をこの処理フローを通じて送り、捕捉システム５４０に情報を返すことである。それにより捕捉システム５４０は、ファイルシステムおよびそれを使うアプリケーションにとって透明に、捕捉された動作を処理するというその責任を適正に果たすことができる。機能モジュールは本発明の個別的な目に見える機能を提供するために作成される。特に本発明に関し、機能モジュールは特に、キャッシュ階層化モデルに関係するが、追加的な機能を提供するために他の機能モジュールもこのレベルにおいて実装されることができる。
【００９４】
図９を参照するに、本発明に基づくキャッシュ階層化を実装するために、好ましくは以下のモジュールが設けられる。
【００９５】
読み出しキャッシュ・モジュール９０５は、データが存在する最高のキャッシュ層を見出して前記データを取得するよう読み出し動作を実行するために設けられてもよい。データが最高層にキャッシュされていなければ、読み出しキャッシュ・モジュール８０５は、この特定のデータについて最高キャッシュへの、書き込みキャッシュ・モジュールによって実行される書き込み動作を、待ち行列に入れてもよい。
【００９６】
書き込みキャッシュ・モジュール９１０は、たとえば、最高キャッシュ層にデータを書き込み、キャッシュ層を下った次のレベルへの書き込みを待ち行列に入れる書き込み動作を実行するために設けられてもよい。特定のデータが種々のキャッシュ・レベルに記憶されることに関するデータ記憶規則は、好ましくはポリシーによって指定される。
【００９７】
暗号モジュール９１５は、書き込み動作のためにデータを暗号化し、読み出し動作のためにデータを復号するために設けられてもよい。暗号化の方法および型は本発明によって限定されない。いかなる型の暗号モジュールおよび／または方法が使用されてもよい。
【００９８】
完全性モジュール９２０は、読み出し動作については、データに対して内容ハッシュまたはチェックサムを計算し、それをメタデータに記憶されている値と比較し、エラー時には適切なアクションを取り、あるいは書き込み動作については、データに対して内容ハッシュまたはチェックサムを計算し、その値をメタデータに記憶するために設けられてもよい。
【００９９】
脱重複モジュール９２５は、書き込み動作を実行する際、書き込みがそのように指定されているデータ記憶（たとえばクラウド記憶）に進む場合、その書き込みを脱重複する（de-duplicate）――すなわちそのデータがデータ記憶にすでに存在しているのでない場合にのみそのデータを書き込む――よう設けられてもよい。
【０１００】
オーバーフロー・モジュール９３０は、記憶資源上の不十分なデータ・スペースへの失敗した書き込みが観察されると、その書き込み動作を異なる記憶資源にリダイレクトするために設けられてもよい。本発明の場合、これは好ましくはオーバーフロー層へのリダイレクトである。
【０１０１】
当業者は、これらのモジュールのそれぞれが、たとえば内容ハッシュまたはチェックサムの特定の選択、オーバーフローのための代替的なデータ記憶、暗号化機構の選択などにおいて、アクティブなポリシーによってパラメータ化されることを理解するであろう。ポリシーの詳細は本発明によって限定されない。むしろ、階層化されたキャッシュ・システムのコンテキストにおけるそのようなモジュールの構成がここで定義される。さらに、これらのモジュールは、待ち行列に入れられた書き込みを完遂する、キャッシュを維持するおよびプリエンプティブなまたは予測的な計算を実行するといった動作を実行するヘルパー・プロセスおよび／またはスレッドを与えられてもよい。機能モジュールはまた、動作および該モジュール中を流れるデータに関する独自の共有されるメタデータへのアクセスを有していてもよい。このメタデータは、ファイルシステム中に、あるいはデータベースまたは他の何らかの共有されるデータ構造中に記憶されることができる。
【０１０２】
機能モジュールは、ファイルシステムを通じた動作フローに影響するために捕捉システムを使うこともできる。たとえば、暗号モジュールは、単にファイルシステムがそのデフォルトの暗号アクションを通過するデータに対して実行することを要求することによって動作してもよい。このアーキテクチャを用いて、複製、圧縮、バージョニング、名前仮想化、一般データ仮想化、データ多形および他の多くの機能といった他の機能が可能である。
【０１０３】
〈データ記憶インターフェース〉
データ記憶インターフェース５８５は、好ましくは、データ変換エンジン５８０と本稿に記載される種々の階層化されたキャッシュ・レベルで使われる根底にある記憶資源との間の動作インターフェースとしてはたらく二つの主要な動作を実行するために設けられる。
【０１０４】
第一に、データ記憶インターフェース５８５は、各データ記憶資源がデータ変換エンジンに対して一様に見えるよう、抽象化機能を実行する。次に、データ記憶インターフェースは、データ変換エンジン５８０によって要求される入出力動作を、ポリシーによって指定される複合動作に翻訳する（translate）プーリング（pooling）機能を提供する。
【０１０５】
データ記憶機構の抽象化は、機能的に同様だが個別的には異なっている多くのデータ記憶システムまたは記憶資源を、記憶資源を使う要素、この場合にはデータ変換エンジン５８０およびその機能モジュールの論理を簡単化するように扱う一つの方法である。
【０１０６】
抽象化プロセスを実装するさまざまな方法が可能だが、好ましい実施形態によれば、基本記憶抽象化モデルは鍵値ストアである。特定のデータが特定の鍵（名前またはラベル）とともに記憶される。それにより同じ鍵をデータ記憶に与えることによって、データが取り出せる。たとえば、ディスクに記憶されたデータ・ブロックは特定の位置（その鍵）に記憶され、のちに、同じ仕方で、またはディスクの他のセマンティクスを使って取り出される（諸鍵が連続的な空間をなし、異なるサイズの諸データ・ブロックがこの鍵空間において重なり合う）。もう一つの例はクラウド記憶である。これは典型的には基本的な鍵値ストア・インターフェースを呈示する。本発明はデータ記憶としてファイルシステムをサポートし、ファイルシステムでは以前に記憶された値のサブセットを指定する機能があるので、本発明の好ましい実施形態は、データ変換エンジン５８０に呈示される抽象化として、ファイル・インターフェース・モデルを使う。この抽象化において、特定のデータが特定の鍵および位置（そして暗黙的にはそのデータのサイズ）をもって記憶され、各鍵について、位置情報および重なりデータに関して、典型的なファイル（または上例のようにディスク）セマンティクスが適用される。これは、ファイルシステムを前記抽象化に統合することを簡単にするが、クラウド記憶および他の同様の鍵値ストアを統合することも対応して簡単にする実装においては、１層下の鍵値ストア抽象化に簡単にマッピングする。
【０１０７】
本発明は使うべきデータ記憶システムまたは記憶資源を割り当てられるので、複数のより原始的なデータ記憶システムまたは記憶資源を使って複合データ記憶を生成できることが有用である。そのような複合記憶資源の非常に広く広まった例は、いくつかの原始的な独立したディスクを単一の複合仮想ディスクに総合するRAIDアレイである。本発明は、これを、記憶資源プーリング（pooling）機構を通じて達成する。
【０１０８】
本発明では、データ記憶および記憶資源はクラス分類され（どんな種類の記憶か、どのようにそれと通信するか）、パラメータ化され（これくらいだけ、その上のこの場所で、これらのクレデンシャルとともに使う）、ラベル付けされる（「……」という名前を与える）。これらは、デフォルトにされてもよく、よってユーザー・インターフェースに現れるのは完備性のレベルにある必要はない。本発明は、プールされた記憶の生成を許容するが、それは必須ではない。プールされた記憶は、他の記憶システム、記憶資源または他のプールされた記憶の非零集合ならびに書き込み動作が持続していると考えられるまでに書き込み動作を確認しなければならない前記集合の要素の最小数である数、本稿で複製数（replication  number）と称されるものの点でポリシーによって定義される。
【０１０９】
この構造は、min-ORツリーと称される。図６および図７は、ノード内に複製数（内部ノードについてのみ有意）を示したmin-ORツリーを例解している。そのような構造は、伝統的にRAIDレベルを使ってなされていたものと同様に、いくつかのデータ記憶およびデータ冗長性ポリシーを表現するために使うことができる。たとえば、図６の構造は、ルート・ノードでの書き込み動作が、子ノードのいずれかへの書き込みが成功するときに成功する点で、４方向RAID0構成と同様である。複製数要件を充足するために、子ノードにおけるデータ配置のための三つの質的に異なるセマンティクスが本発明によって考えられる：
ランダム配置：データは本質的にランダムに子ノードに配置される。
【０１１０】
順序付き配置：データはノードの順序付けされたシーケンスに（たとえば「最も左」）配置される。これはオーバーフロー保護を提供する一つの方法である。
【０１１１】
アルゴリズム配置：データは、外部情報を利用してある種の動作またはパラメータを最適化するアルゴリズムに従って配置される。たとえば、パッキング（ノードを充填しようとする）、摩耗の均一化〔ウェアレベリング〕（すべてのノードを同じ充填レベルに保とうとする）、負荷を意識（すべてのノードを等しくビジーに保とうとする）、高可用性（可用性／コスト関数を最大化しようとする）、エネルギー（エネルギー使用を最小化しようとする）、親和性（何かに「近い」ノードを使おうとする）、サーバー（好ましいサーバーに取り付けられたノードを使おうとする）およびトポロジー（互いに近接したノードを使おうとする）。
【０１１２】
もう一つの例は図７に示されているものである。図７は、二つのレベルに関わる構成を示しており、二つのレベルのうち上のレベルが３方向（3-way）RAID1ミラーとしてはたらく（現実の状況では、これは「何もかも私の高速ローカル記憶、私の低速サイト・アーカイブおよびリモート企業クラウド・アーカイブに書き込む」に対応する）。子ノードの一つはそれ自身、「これら５個のノードのうちの任意の３個に書き込む」のような複製を使って生成された冗長な構成であり、これは２つのノードに障害があった場合に生き残れるようにする（これはRAID6と呼ばれるための規格を満たす）。
【０１１３】
本発明は、この構造の、0個（すなわち単に単純な記憶資源）を含む任意の数のレベルをサポートしてもよく、構造の各ノードは独立して複雑なデータ記憶システムまたは記憶資源であることができる。
【０１１４】
複製により冗長性が提供されるので、アクティブなノードを除去することは、子ノード間でデータを適切にコピーすることによって、親ノードの複製ポリシーが維持されることを保証することからなる。よって、min-OR記憶ツリー上ですべての動作を達成するのを助けるためにどこにデータが記憶されるかの記録をもつ別個に維持されるメタデータが存在する。複製数が1であれば、子ノードを除去することは、予告なく非破壊的に行うことはできない。だが、予告があれば、除去または障害に先立って、その子だけにあるデータは他のノードにコピーされることができる。データが異なる子ノード上に少なくとも前記複製数の回数存在する必要があるようセマンティクスが定義されることを注意しておく。だが、より高い度合いの複製は常に許容される。
【０１１５】
このようにして構成される記憶構造は、セクタ対応を維持しないことによって（RAID1の場合）、冗長性のためにパリティを使わないことによって（RAID6の場合）およびストライピングのために固定したブロックを使わないことによって（RAID0の場合）、伝統的なRAID実装（定義でなく）とは異なる。だが、機能は、本発明を実行するために適応される。
【０１１６】
この好ましいプーリング機構は、強力で一貫した複製モデルを提供し、いくつかの伝統的なRAIDレベルと機能的に等価であり、込み入った記憶ポリシーの簡単な表現を許容し、記憶資源の大きなプールの簡単な管理を許容するので、有用である。
【０１１７】
たとえば、ラックを諸ディスクで埋め、それらのディスク全部を、本発明に基づき層内で記憶資源として使うために宣言し、所望される冗長性レベル（「3台のディスクの同時障害に耐える」）を指定することができる。その冗長性レベルが複製数を設定し（今の例では4）、データ記憶インターフェースは、このポリシーに従ってデータ変換エンジンのためにデータを記憶し、取り出すことを管理する。
【０１１８】
スペクトルの反対側では、トリビアルなmin-ORツリーは、ディスクまたはファイルシステムの単一の原始的なノードである。min-ORツリーを拡張して、伝統的なRAID実装（内部ノードに最小パリティ複製パラメータを加えることによる）または他のコンテンツ分散方法（たとえば、「リード・ソロモン分散」のような複製型パラメータを加えることによる）を厳密にシミュレートするようにすることによって、プーリングの概念を拡張することができる。
【０１１９】
請求項において定義される本発明の精神および範囲から外れることなく本発明に対するさまざまな修正が考えられる。本稿ではさまざまなステップおよびコンピュータ・コンポーネントが使われてきたが、これらは、本願において明示的に限定されているまたは他の仕方で定義されているのでない限り、当技術分野において知られているような通常の定義を与えられる。
【０１２０】
上記の実施形態は、本発明の例であることが意図されており、付属の請求項によってのみ定義される本発明の範囲から外れることなく、当業者によって変更および修正がなされてもよい。
いくつかの態様を記載しておく。
〔態様１〕
コンピュータ・システム上で実行されるアプリケーションによる取得のためにデータを記憶する方法であって：
ａ．少なくとも一つのキャッシュ層および基本層を含む階層化キャッシュ・システムを提供し、
ｂ．あるポリシーに基づいて前記少なくとも一つのキャッシュ層および前記基本層の少なくとも一方にデータを記憶し、
ｃ．データ組織化手段によって前記データのアプリケーション・ビューを前記アプリケーションに呈示することを含み、前記データ組織化手段は、少なくとも一つのキャッシュ層および前記基本層のそれぞれについてメタデータ情報を含む、
方法。
〔態様２〕
前記少なくとも一つのキャッシュ層および前記基本層のそれぞれは異なる記憶資源上に配置され、前記データ組織化手段は前記異なる記憶資源のそれぞれについてメタデータ情報を含む、態様１記載の方法。
〔態様３〕
少なくとも一つのオーバーフロー層を提供することをさらに含む態様２記載の方法であって、前記オーバーフロー層は、前記少なくとも一つのキャッシュ層および前記基本層のそれぞれとは異なる記憶資源上に配置され、前記データ組織化手段は前記オーバーフロー層のためのメタデータ情報を含む、方法。
〔態様４〕
前記少なくとも一つのキャッシュ層は複数の階層化されたキャッシュ層を含む、態様２記載の方法。
〔態様５〕
前記複数のキャッシュ層はそれぞれ半導体ドライブ上に設けられ、前記基本層はハードディスク・ドライブ上に設けられ、前記オーバーフロー層はクラウド記憶資源上に設けられる、態様４記載の方法。
〔態様６〕
前記データ組織化手段は前記ハードディスク・ドライブ上に記憶される、態様５記載の方法。
〔態様７〕
前記データを前記基本層上に記憶し、前記データを前記複数のキャッシュ層の一つまたは複数上にキャッシュすることを含み、より高いレベルのキャッシュ層がより低いレベルのキャッシュ層のデータをキャッシュする、態様５記載の方法。
〔態様８〕
各キャッシュ層レベルは二つ以上の記憶資源を含む、態様７記載の方法。
〔態様９〕
前記データ組織化手段は使用される特定の記憶装置に関知しない、態様１記載の方法。
〔態様１０〕
データ組織化手段の動作を、前記データ組織化手段とは独立に実行されるまたは他の仕方で処理されるよう、捕捉システムによって、捕捉する段階をさらに含む、態様２記載の方法。
〔態様１１〕
前記ポリシーに従って入力／出力動作を分離させ、前記動作の少なくとも一部が前記捕捉システムによって捕捉され、前記ポリシーに従って処理されるようにする段階をさらに含む、態様１０記載の方法。
〔態様１２〕
前記ポリシーはポリシー・モジュールによって与えられる、態様１記載の方法。
〔態様１３〕
前記ポリシー・モジュールは前記捕捉システムと一体である、態様１２記載の方法。
〔態様１４〕
前記ポリシー・モジュールは前記データ組織化手段と一体である、態様１２記載の方法。
〔態様１５〕
前記捕捉する段階がさらに、（ａ）捕捉される動作を、記憶資源と前記捕捉システムとの間に設けられたデータ変換エンジンに渡すこと；（ｂ）捕捉された動作の完了をログ記録すること；および（ｃ）捕捉された動作を変更して前記データ組織化手段に渡すこと、のうちの一つを含む、態様１０記載の方法。
〔態様１６〕
前記捕捉システムと前記記憶資源との間にデータ変換エンジンを設けることをさらも含む、態様１０記載の方法。
〔態様１７〕
前記データ組織化手段の外部でポリシーを実行する段階をさらに含み、前記ポリシーを実行する段階は前記データ変換エンジンによって実行される、態様１６記載の方法。
〔態様１８〕
前記データ変換エンジンはさらに、データが存在する最高のキャッシュ層を見出して前記データを取得するよう読み出し動作を実行するための読み出しキャッシュ・モジュールを有する、態様１６記載の方法。
〔態様１９〕
前記データ変換エンジンはさらに、種々のキャッシュ層レベルに対して書き込み動作を実行するための書き込みキャッシュ・モジュールを有する、態様１６記載の方法。
〔態様２０〕
前記データ変換エンジンはさらに、データが前記データ組織化手段を通過するのに先立って該データを暗号化および復号する暗号モジュールを有する、態様１６記載の方法。
〔態様２１〕
前記データ変換エンジンはさらに、前記データの属性を、メタデータ情報に記憶されているものと比較する完全性モジュールを有する、態様１６記載の方法。
〔態様２２〕
前記データ変換エンジンはさらに、脱重複段階を実行するための脱重複モジュールを有する、態様１６記載の方法。
〔態様２３〕
前記データ変換エンジンはさらに、失敗した書き込み動作に応答してオーバーフロー・キャッシュ層にデータを書き込むためのオーバーフロー・モジュールを有する、態様１９記載の方法。
〔態様２４〕
前記記憶資源と前記データ変換エンジンとの間の動作上のインターフェースを提供するためのデータ記憶インターフェースを提供することをさらに含む、態様１６記載の方法。
〔態様２５〕
各データ記憶資源が前記データ変換エンジンに対して一様に見えるよう、データ記憶資源情報を抽象化する段階をさらに含む、態様２４記載の方法。
〔態様２６〕
少なくとも二つ以上のデータ記憶資源をプールする段階をさらに含む、態様２４記載の方法。
〔態様２７〕
前記複数のキャッシュ層がオペレーティング・システム・ファイル・バッファ・キャッシュを有する、態様４記載の方法。
〔態様２８〕
前記データ組織化手段がファイルシステムである、態様１記載の方法。
〔態様２９〕
前記データ組織化手段が、オブジェクト・データベース、鍵値ストア、ネットワーク・プロトコルおよび共有データ・システムからなる群より選択される、態様１記載の方法。
〔態様３０〕
コンピュータ・システム上で実行されるアプリケーションによる取得のためにデータを記憶するシステムであって：
ａ．少なくとも一つのキャッシュ層および基本層を含む階層化キャッシュ・システムであって、前記データは、あるポリシーに基づいて前記少なくとも一つのキャッシュ層および前記基本層の少なくとも一方に記憶される、階層化キャッシュ・システムと；
ｂ．前記データのアプリケーション・ビューを前記アプリケーションに呈示するデータ組織化手段であって、前記データ組織化手段は、少なくとも一つのキャッシュ層および前記基本層のそれぞれについてメタデータ情報を含む、データ組織化手段とを有する、
システム。
〔態様３１〕
前記少なくとも一つのキャッシュ層および前記基本層のそれぞれは異なる記憶資源上に配置され、さらに、前記データ組織化手段は前記異なる記憶資源のそれぞれについてメタデータ情報を含む、態様３０記載のシステム。
〔態様３２〕
少なくとも一つのオーバーフロー層をさらに有しており、前記オーバーフロー層は、前記少なくとも一つのキャッシュ層および前記基本層のそれぞれとは異なる記憶資源上に配置され、前記データ組織化手段は前記オーバーフロー層のためのメタデータ情報を含む、態様３１記載のシステム。
〔態様３３〕
前記少なくとも一つのキャッシュ層は複数の階層化されたキャッシュ層を含む、態様３２記載のシステム。
〔態様３４〕
前記複数のキャッシュ層はそれぞれ半導体ドライブ上に設けられ、前記基本層はハードディスク・ドライブ上に設けられ、前記オーバーフロー層はクラウド記憶資源上に設けられる、態様３３記載のシステム。
〔態様３５〕
前記データ組織化手段は前記ハードディスク・ドライブ上に記憶される、態様３４記載のシステム。
〔態様３６〕
前記データは前記基本層上に記憶され、前記複数のキャッシュ層の前記一つまたは複数上にキャッシュされ、より高いレベルのキャッシュ層がより低いレベルのキャッシュ層のデータをキャッシュする、態様３４記載のシステム。
〔態様３７〕
各キャッシュ層レベルは二つ以上の記憶資源を含む、態様３６記載のシステム。
〔態様３８〕
前記データ組織化手段は使用される特定の記憶装置に関知しない、態様３０記載のシステム。
〔態様３９〕
データ組織化手段の動作を、前記データ組織化手段とは独立に実行されるまたは他の仕方で処理されるよう、捕捉するための捕捉システムをさらに有する、態様３０記載のシステム。
〔態様４０〕
前記捕捉システムは、前記ポリシーに従って入力／出力動作を分離させ、前記動作の少なくとも一部が前記捕捉システムによって捕捉され、前記ポリシーに従って処理されるようにするよう適応されている、態様３９記載のシステム。
〔態様４１〕
前記ポリシーを与えるポリシー・モジュールをさらに有する、態様３９記載のシステム。
〔態様４２〕
前記ポリシー・モジュールは前記捕捉システムと一体である、態様４１記載のシステム。
〔態様４３〕
前記ポリシー・モジュールは前記データ組織化手段と一体である、態様４１記載のシステム。
〔態様４４〕
前記捕捉システムが、（ａ）捕捉される動作を、記憶資源と前記捕捉システムとの間に設けられたデータ変換エンジンに渡す手段；（ｂ）捕捉された動作の完了をログ記録する手段；および（ｃ）捕捉された動作を変更して前記データ組織化手段に渡す手段、のうちの少なくとも一つを含む、態様４０記載のシステム。
〔態様４５〕
前記捕捉システムと前記記憶資源との間にデータ変換エンジンをさらに有する、態様４０記載のシステム。
〔態様４６〕
前記データ変換エンジンはさらに、データが存在する最高のキャッシュ層を見出して前記データを取得するよう読み出し動作を実行するための読み出しキャッシュ・モジュールを有する、態様４５記載のシステム。
〔態様４７〕
前記データ変換エンジンはさらに、種々のキャッシュ層レベルに対して書き込み動作を実行するための書き込みキャッシュ・モジュールを有する、態様４５記載のシステム。
〔態様４８〕
前記データ変換エンジンはさらに、データが前記データ組織化手段を通過するのに先立って該データを暗号化および復号する暗号モジュールを有する、態様４５記載のシステム。
〔態様４９〕
前記データ変換エンジンはさらに、前記データの属性を、メタデータ情報に記憶されているものと比較する完全性モジュールを有する、態様４５記載のシステム。
〔態様５０〕
前記データ変換エンジンはさらに、脱重複段階を実行する脱重複モジュールを有する、態様４５記載のシステム。
〔態様５１〕
前記データ変換エンジンはさらに、失敗した書き込み動作に応答してオーバーフロー・キャッシュ層にデータを書き込むオーバーフロー・モジュールを有する、態様４８記載のシステム。
〔態様５２〕
前記システムはさらに、前記記憶資源と前記データ変換エンジンとの間の動作上のインターフェースを提供するためのデータ記憶インターフェースを有する、態様４５記載のシステム。
〔態様５３〕
各データ記憶資源が前記データ変換エンジンにとって一様に見える、態様４５記載のシステム。
〔態様５４〕
少なくとも二つ以上のデータ記憶資源がプールされる、態様３０記載のシステム。
〔態様５５〕
前記複数のキャッシュ層がオペレーティング・システム・ファイル・バッファ・キャッシュを含む、態様３３記載のシステム。
〔態様５６〕
前記データ組織化手段が、オブジェクト・データベース、鍵値ストア、ネットワーク・プロトコルおよび共有データ・システムからなる群より選択される、態様３０記載のシステム。
【図１】
0005620581.tif 000002
【図２】
0005620581.tif 000003
【図３】
0005620581.tif 000004
【図４】
0005620581.tif 000005
【図５】
0005620581.tif 000006
【図６】
0005620581.tif 000007
【図７】
0005620581.tif 000008
【図８】
0005620581.tif 000009
【図９】
0005620581.tif 000010