(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5717864
(24)【登録日】2015年3月27日
(45)【発行日】2015年5月13日
(54)【発明の名称】データ記憶システムに用いるエンドポイントキャッシュ
(51)【国際特許分類】
G06F 12/00 20060101AFI20150423BHJP
【FI】
G06F12/00 514K
G06F12/00 520E
【請求項の数】24
【全頁数】18
(21)【出願番号】特願2013-536970(P2013-536970)
(86)(22)【出願日】2011年11月15日
(65)【公表番号】特表2013-541788(P2013-541788A)
(43)【公表日】2013年11月14日
(86)【国際出願番号】CA2011050708
(87)【国際公開番号】WO2012065265
(87)【国際公開日】20120524
【審査請求日】2013年5月7日
(31)【優先権主張番号】61/414,191
(32)【優先日】2010年11月16日
(33)【優先権主張国】US
【前置審査】
(73)【特許権者】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】ザカライアッセン、ライアン
(72)【発明者】
【氏名】ラム、スティーブン
(72)【発明者】
【氏名】フェルナンデス、ラリン−ジョー
【審査官】
加内 慎也
(56)【参考文献】
【文献】
特開平07−262074(JP,A)
【文献】
国際公開第2009/055174(WO,A1)
【文献】
国際公開第2009/055175(WO,A1)
【文献】
米国特許出願公開第2005/0027798(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
(57)【特許請求の範囲】
【請求項1】
データ記憶システムであり、
階層1から層N(N≧1)を含む階層データ構造を有する中央記憶システムと、
ネットワークインフラストラクチャにより前記中央記憶システムとネットワーク通信を行う少なくとも1つのエンドポイントコンピュータシステムと、
前記中央記憶システムの階層0に対するキャッシュを有し、前記コンピュータシステムのCPUと通信を行う記憶アクセラレータと、
読み出されているまたは書き込まれているファイルがエンドポイントキャッシュを行うようマークされているかどうかを判断するための命令とソフトウェアドライバとを有し、前記記憶アクセラレータと通信を行うフィルタドライバと
を備え、
前記記憶アクセラレータは、前記中央記憶システム上における前記少なくとも1つのエンドポイントコンピュータシステムにアクセス可能なデータのエンドポイントキャッシュを行い、
前記フィルタドライバは、読み出しおよび書き込みI/O動作ごとに、または組み合わせによってアプリケーションから要求されたことに応じてデータの有効なバッファリングポリシーを透過的に変更し、
前記記憶アクセラレータは、前記コンピュータシステムのバスまたは他の高速ネットワークに取り付けられた物理記憶ユニットを制御するためのコンピュータ可読命令を前記CPUにより実行する、データ記憶システム。
【請求項2】
前記物理記憶ユニットは、固体メモリデバイスを含む、請求項1に記載のデータ記憶システム。
【請求項3】
前記記憶アクセラレータは、データキャッシュ構造を有する、請求項2記載のデータ記憶システム。
【請求項4】
前記読み出されている、または書き込まれているファイルがエンドポイントキャッシュを行うようマークされているかどうかを判断するための命令は、ファイルのメタデータ情報にアクセスするための命令を含む、請求項1から3のいずれか1項に記載のデータ記憶システム。
【請求項5】
前記フィルタドライバは、データ読み出し動作が前記少なくとも1つのエンドポイントコンピュータシステムから要求されているかどうかを判断し、要求されていれば読み出されているデータが前記記憶アクセラレータ上に存在するか判断し、a)存在すれば、前記記憶アクセラレータからの前記データ読み出し動作を実行し、b)存在しなければ、前記中央記憶システムから前記データを要求し、前記データのコピーを前記記憶アクセラレータに提供するための命令をさらに含む、請求項4に記載のデータ記憶システム。
【請求項6】
前記フィルタドライバは、データ書き込み動作が前記少なくとも1つのエンドポイントコンピュータシステムにより要求されているかどうかを判断し、要求されていれば、前記データを前記記憶アクセラレータに書き込むための命令をさらに含む、請求項4または5に記載のデータ記憶システム。
【請求項7】
前記フィルタドライバは、前記データを前記中央記憶システムへ書き込むための命令をさらに含む、請求項6に記載のデータ記憶システム。
【請求項8】
前記フィルタドライバは、前記中央記憶システムに書き込まれることになる前記データをキューするための命令をさらに含む、請求項6に記載のデータ記憶システム。
【請求項9】
前記フィルタドライバは、前記中央記憶システムと前記記憶アクセラレータとの間のデータの一貫性を維持するための命令をさらに含む、請求項7または8に記載のデータ記憶システム。
【請求項10】
前記少なくとも1つのエンドポイントコンピュータシステムは、モバイルデバイスを含む、請求項1から9のいずれか1項に記載のデータ記憶システム。
【請求項11】
データ記憶方法であり、
階層1から階層N(N≧1)を含む階層データ構造を有する中央記憶システムを設ける段階と、
ネットワークインフラストラクチャにより前記中央記憶システムとネットワーク通信を行う少なくとも1つのエンドポイントコンピュータシステムを設ける段階と、
前記中央記憶システムの階層0に対するキャッシュを有し、前記コンピュータシステムのCPUと通信を行う記憶アクセラレータを設ける段階と、
読み出されているまたは書き込まれているファイルがエンドポイントキャッシュを行うようマークされているかどうかを判断する命令とソフトウェアドライバを有し、前記記憶アクセラレータと通信を行うフィルタドライバを設ける段階と
を備え、
前記記憶アクセラレータは、前記中央記憶システム上における前記少なくとも1つのエンドポイントコンピュータシステムにアクセス可能なデータのエンドポイントキャッシュを行い、
前記フィルタドライバは、読み出しおよび書き込みI/O動作ごとにまたは組み合わせによってアプリケーションから要求されたことに応じてデータの有効なバッファリングポリシーを透過的に変更し、
前記記憶アクセラレータは、前記コンピュータシステムのバスまたは他の高速ネットワークに取り付けられた物理記憶ユニットを制御するためのコンピュータ可読命令を前記CPUにより実行する、データ記憶方法。
【請求項12】
前記記憶アクセラレータは、前記CPUから前記記憶アクセラレータへのデータスループットが前記CPUから前記中央記憶システムへの接続を通じたデータスループットよりも大きくなる位置に設けられる、請求項11に記載のデータ記憶方法。
【請求項13】
前記物理記憶ユニットは、固体メモリデバイスを含む、請求項11に記載のデータ記憶方法。
【請求項14】
前記記憶アクセラレータは、データキャッシュ構造を有する、請求項13に記載のデータ記憶方法。
【請求項15】
前記エンドポイントコンピュータシステムは、データ読み出し動作またはデータ書き込み動作を実行するよう適合され、
請求項14に記載のデータ記憶方法。
【請求項16】
読み出されている、または書き込まれているファイルがエンドポイントキャッシュを行うようマークされているかどうか、ファイルのメタデータ情報にアクセスすることにより判断する段階をさらに備える、請求項15に記載のデータ記憶方法。
【請求項17】
データ読み出し動作が前記コンピュータシステムから要求されているかどうかを判断し、要求されていれば、読み出されているデータが前記記憶アクセラレータ上に存在するか判断し、a)存在すれば、前記記憶アクセラレータからの前記データ読み出し動作を実行し、b)存在しなければ、前記中央記憶システムから前記データを要求し、前記データのコピーを前記記憶アクセラレータに提供する段階をさらに備える、請求項16に記載のデータ記憶方法。
【請求項18】
データ書き込み動作が前記コンピュータシステムにより要求されているかどうかを判断し、要求されていれば、前記データを前記記憶アクセラレータに書き込む段階をさらに備える、請求項17に記載のデータ記憶方法。
【請求項19】
前記データを前記中央記憶システムへ書き込む段階をさらに備える、請求項18に記載のデータ記憶方法。
【請求項20】
前記中央記憶システムに書き込まれることになる前記データをキューする段階をさらに備える、請求項18または19に記載のデータ記憶方法。
【請求項21】
前記中央記憶システムと前記記憶アクセラレータとの間のデータの一貫性を維持する段階をさらに備える、請求項18から20のいずれか1項に記載のデータ記憶方法。
【請求項22】
データ記憶方法であり、
中央記憶システムから読み出されているまたは前記中央記憶システムへ書き込まれているファイルが、エンドポイントコンピュータシステムの記憶アクセラレータにおいてキャッシュを行うようマークされているかどうかを判断する段階と、
データ読み出し動作が要求されているかどうかを判断し、要求されていれば、読み出されているデータが前記記憶アクセラレータ上に存在するか判断し、a)存在すれば、前記記憶アクセラレータからの前記データ読み出し動作を実行し、b)存在しなければ、前記中央記憶システムから前記データを要求し、前記データのコピーを前記記憶アクセラレータに提供する段階と、
データ書き込み動作が前記コンピュータシステムにより要求されているかどうかを判断し、要求されていれば、前記データを前記記憶アクセラレータに書き込む段階と、
読み出しおよび書き込みI/O動作ごとに、または読み出しおよび書き込みI/O動作との組み合わせによりアプリケーションから要求されたことに応じてデータの有効なバッファリングポリシーを透過的に変更する段階と、
を備え、
前記中央記憶システムは、階層1から階層N(N≧1)を含む階層データ構造を有し、
前記記憶アクセラレータは、前記中央記憶システムの階層0に対するキャッシュを有し、
前記記憶アクセラレータは、読み出されているまたは書き込まれているファイルがエンドポイントキャッシュを行うようマークされているかどうかを判断する命令とソフトウェアドライバとを含むフィルタドライバと通信を行う
データ記憶方法。
【請求項23】
前記中央記憶システムと前記記憶アクセラレータとの間のデータの一貫性を維持する段階をさらに備える、請求項22に記載のデータ記憶方法。
【請求項24】
請求項22または23に記載のデータ記憶方法をコンピュータに実行させる、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、2010年11月16日に提出された米国仮特許出願第61/414,9191号の優先権を主張する。当該出願の内容は、その全体が参照により本願に組み込まれる。
【0002】
本願発明はデータ記憶システムおよびデータ記憶方法の分野に関する。より詳細には、データ入出力動作の効率性および速度を向上する、データ記憶システムに用いられるキャッシュを行うシステムおよび方法に関する。
【背景技術】
【0003】
データ記憶の分野における大きな課題は、効率的なシステムを実現すべく、いかにしてデータ記憶装置の性能をコンピュータの処理能力と同等なものにするかということである。コンピュータシステムにおけるデータ記憶の分野において効率的なシステムとは一般的に、全ての主要なコンポーネントが通常の作業負荷の下、バランスのとれた方法で用いられるシステムのことを指す。つまり、コンピュータシステムおよびそれに関連付けられたデータ記憶装置は、それぞれが最大の性能を発揮している状態が最適である。本願発明、および本項で説明する関連する背景技術は一般的に、様々な種類のディスクなど持続的な記憶装置に関し、コンピュータに搭載される(通常ランダムアクセスメモリと呼ばれる)一時的な記憶装置には関しない。従来、コンピュータシステムおよびそれらに関連付けられた中央処理装置の性能はデータ記憶システムの速度および効率性よりはるかに優れているので、記憶装置の性能が制限要因となっている。
【0004】
データ記憶装置の性能を向上させようとする従来技術の解決方法は、記憶装置の処理速度、およびコンピュータと記憶装置との間の接続を速くするということに主眼を置いていた。これらの解決方法の例には様々なものが含まれ、RAIDストライピングなど記憶装置を集約させること、記憶制御装置の本質的な性能を向上させること、RAIDコントローラの多くでなされているように記憶制御装置に、記憶アプライアンスに、または記憶装置より手前に位置するネットワークサーバ上にキャッシュを追加すること、および複数の記憶ノード側で記憶処理の負荷を分配することなどが含まれる。
【0005】
管理を容易にするべく、記憶処理を集中させる傾向も強い。この方法を最もよく表す例は、記憶処理を整理し集約させるSAN(Storage Area Network)およびNAS(Network Attached Storage)システムの登場である。これらの解決方法(より早く、より集中させた記憶処理)に関するインフラストラクチャモデルは、ネットワークにより記憶システムへ接続されたコンピュータ上で実行される多数のアプリケーションのフローグラフとして説明することが出来る。
【発明の概要】
【発明が解決しようとする課題】
【0006】
そのようなモデルにおいては、記憶システムの性能をコンピュータの潜在的な性能と一致させるには、コンピュータと記憶システムとの間の個々のネットワークの(より大きなバンド幅およびより短いレイテンシーに関する)性能を向上させることにより、記憶システムの性能とコンピュータの性能との間のバランスを取らなければならないことが明らかである。
【0007】
ここで生じる課題は、例え非常に少ない数のコンピュータであってもそれらによって与えられる潜在的な負荷は、安価なネットワークまたは中央記憶システムが対応出来る負荷よりもはるかに大きいということである。コンピュータの内部ネットワーク、つまりバスは、コンピュータが一般的にサポートする外部のネットワークよりも1または2桁分さらに速度が速く、かつ高い能力で動作する。
【0008】
従来技術の解決方法のいくつかには、中央の記憶装置におけるネットワーク性能を記憶装置自体の性能と見合うものとするキャッシュ機能または階層化機能を形成させるものなど、記憶装置に取り付けられた記憶アクセラレータを用いるものがある。この課題を解決すべくその他試みられている解決方法には、例えばbcache、fastcache、dmcacheなどいくつかのブロックベースの実装、およびFS−cacheとして知られるファイルシステムを変更する特定の実装など、Linux(登録商標)カーネルファシリティのコンテキストにおける試みがある。またワイドエリアネットワークリンク上の読み出し専用キャッシュ(read−only caching)を対象として設計されたBranchCacheと呼ばれる関連する機能性をもつウィンドウズ(登録商標)ファシリティもある。
【0009】
よって本願発明の目的は、データ記憶システムの効率性を向上させる、新規のシステムおよび方法を提供することである。
【課題を解決するための手段】
【0010】
本願発明の一実施形態によると、データ記憶システムは、中央記憶システムと、ネットワークインフラストラクチャにより中央記憶システムとネットワーク通信を行う少なくとも1つのエンドポイントコンピュータシステムと、コンピュータシステムのCPUと通信を行う記憶アクセラレータとを含み、記憶アクセラレータは、少なくとも1つのエンドポイントコンピュータシステムにアクセス可能な中央記憶システム上のデータのエンドポイントキャッシュを行う。
【0011】
本実施形態の一態様によると、記憶アクセラレータは、コンピュータシステムのバスに取り付けられた物理記憶ユニットを制御するCPU上で実行される少なくとも1つのソフトウェアモジュールを有する。
【0012】
本実施形態の他の態様によると、記憶アクセラレータは、CPUから記憶アクセラレータへのデータスループットがCPUから中央記憶システムへの接続を通じたデータスループットよりも大きくなる位置に設けられる。
【0013】
本実施形態の他の態様によると、中央記憶システムは、階層1から層N(N≧1)を含む階層データ構造を有し、記憶アクセラレータは、中央記憶装置の階層0に対するキャッシュを有する。
【0014】
本実施形態の他の態様によると、物理記憶ユニットは、固体メモリデバイスを含む。
【0015】
本実施形態の他の態様によると、記憶アクセラレータは、データキャッシュ構造を有する。
【0016】
本実施形態の他の態様によると、記憶アクセラレータと通信を行うフィルタドライバが設けられる。
【0017】
本実施形態の他の態様によると、ソフトウェアモジュールはフィルタドライバ上に設けられ、フィルタドライバは、読み出されている、または書き込まれているファイルがエンドポイントキャッシュを行うようマークされているかどうかを判断するための命令を含む。
【0018】
本実施形態の他の態様によると、読み出されている、または書き込まれているファイルがエンドポイントキャッシュを行うようマークされているかどうかを判断するための命令は、ファイルのメタデータ情報にアクセスするための命令を含む。
【0019】
本実施形態の他の態様によると、フィルタドライバは、データ読み出し動作がコンピュータシステムから要求されているかどうかを判断し、要求されていれば読み出されているデータが記憶アクセラレータ上に存在するか判断し、a)存在すれば、記憶アクセラレータからのデータ読み出し動作を実行し、b)存在しなければ、中央記憶システムからデータを要求し、データのコピーを記憶アクセラレータに提供するための命令をさらに含む。
【0020】
本実施形態の他の態様によると、フィルタドライバは、データ書き込み動作がコンピュータシステムにより要求されているかどうかを判断し、要求されていれば、データを記憶アクセラレータに書き込むための命令をさらに含む。
【0021】
本実施形態の他の態様によると、フィルタドライバは、データを中央記憶システムへ書き込むための命令をさらに含む。
【0022】
本実施形態の他の態様によると、フィルタドライバは、中央記憶システムに書き込まれることになるデータをキューするための命令をさらに含む。
【0023】
本実施形態の他の態様によると、フィルタドライバは、中央記憶システムと記憶アクセラレータとの間のデータの一貫性を維持するための命令をさらに含む。
【0024】
本実施形態の他の態様によると、コンピュータシステムは、モバイルデバイスを含む。
【0025】
本願発明の他の実施形態によると、データ記憶方法は、中央記憶システムを設ける段階と、ネットワークインフラストラクチャにより中央記憶システムとネットワーク通信を行う少なくとも1つのエンドポイントコンピュータシステムを設ける段階と、コンピュータシステムのCPUと通信を行う記憶アクセラレータを設ける段階とを含み、記憶アクセラレータは、少なくとも1つのエンドポイントコンピュータシステムにアクセス可能な中央記憶システム上のデータのエンドポイントキャッシュを行う。
【0026】
本実施形態の一態様によると、記憶アクセラレータは、コンピュータシステムのバスに取り付けられた物理記憶ユニットを制御するCPU上で実行される少なくとも1つのソフトウェアモジュールを有する。
【0027】
本実施形態の他の態様によると、記憶アクセラレータは、CPUから記憶アクセラレータへのデータスループットがCPUから中央記憶システムへの接続を通じたデータスループットよりも大きくなる位置に設けられる。
【0028】
本実施形態の他の態様によると、中央記憶システムは、階層1から階層N(N≧1)を含む階層データ構造を有し、記憶アクセラレータは、中央記憶装置の階層0に対するキャッシュを有する。
【0029】
本実施形態の他の態様によると、物理記憶ユニットは、固体メモリデバイスを含む。
【0030】
本実施形態の他の態様によると、記憶アクセラレータは、データキャッシュ構造を有する。
【0031】
本実施形態の他の態様によると、エンドポイントコンピュータシステムは、データ読み出し動作またはデータ書き込み動作を実行するよう適合され、方法は、読み出されている、または書き込まれているファイルがエンドポイントキャッシュを行うようマークされているかどうかを判断する段階をさらに含む。
【0032】
本実施形態の他の態様によると、方法は、読み出されている、または書き込まれているファイルがエンドポイントキャッシュを行うようマークされているかどうか、ファイルのメタデータ情報にアクセスすることにより判断する段階をさらに含む。
【0033】
本実施形態の他の態様によると、方法は、データ読み出し動作がコンピュータシステムから要求されているかどうかを判断し、要求されていれば、読み出されているデータが記憶アクセラレータ上に存在するか判断し、a)存在すれば、記憶アクセラレータからのデータ読み出し動作を実行し、b)存在しなければ、中央記憶システムからデータを要求し、データのコピーを記憶アクセラレータに提供する段階をさらに含む。
【0034】
本実施形態の他の態様によると、方法は、データ書き込み動作がコンピュータシステムにより要求されているかどうかを判断し、要求されていれば、データを記憶アクセラレータに書き込む段階をさらに含む。
【0035】
本実施形態の他の態様によると、方法は、データを中央記憶システムへ書き込む段階をさらに含む。
【0036】
本実施形態の他の態様によると、方法は、中央記憶システムに書き込まれることになるデータをキューする段階をさらに含む。
【0037】
本実施形態の他の態様によると、方法は、中央記憶システムと記憶アクセラレータとの間のデータの一貫性を維持する段階をさらに含む。
【0038】
本実施形態の他の態様によると、書き込む段階は、バッファリングされていないデータを書き込む段階を含む。
【0039】
本実施形態の他の態様によると、データ読み出し動作がバッファリングされる。
【0040】
本願発明の他の実施形態によると、データ記憶方法は、読み出しおよび書き込みのうち少なくとも一方のI/O動作を行うようアプリケーションが要求するデータの有効なオペレーティングシステムバッファリングポリシーを、オペレーティングシステムバッファへデータをアクティブに供給することにより、またはオペレーティングシステムバッファからアクティブにデータを削除することにより、透過的に変更する段階と、I/O動作に必要なオペレーティングシステムバッファキャッシュを有効化するか、または無効化する段階とを含み、オペレーティングシステムバッファへデータを供給することは、アプリケーションがオペレーティングシステムによりキャッシュされたデータを使用するよう構成することを含む。
【0041】
本願発明の他の実施形態によると、データ記憶方法は、読み出し動作および書き込み動作の少なくとも一方を行うようアプリケーションが要求するデータをキャッシュ位置へキャッシュする段階と、読み出しおよび書き込みI/O動作を行うようアプリケーションから要求されたことに応じてデータの有効なバッファリングポリシーを透過的に変更する段階とを含み、有効なバッファリングポリシーを変更する段階は、アプリケーションが要求するデータの少なくとも一部を、キャッシュ位置でバッファリングする段階を含む。
【0042】
本実施形態の一態様によると、上述したキャッシュ位置は、本明細書で説明するエンドポイントキャッシュである。
【図面の簡単な説明】
【0043】
例示を目的とし、添付の図面を参照し実施形態について説明する。
【
図1】
図1は、従来技術における、ネットワークを通じ中央記憶装置とアクセスするコンピュータシステムの一般的な構成を示す。
【
図2】
図2は、
図1のシステムのデータ転送速度を模式的に示す。
【
図3】
図3は、従来技術の、
図1のシステムに適用される記憶アクセラレータの構成を示す。
【
図4】
図4は、本願発明に係るシステムの一実施形態を模式的に示す。
【
図5】
図5は、
図3のシステムのネットワークにかかる負荷を示す。
【
図6】
図6は、
図4のシステムのネットワークにかかる負荷を示す。
【
図7】
図7は、本願発明に係る一般的なエンドポイントコンピュータシステムを模式的に示す。
【
図8】
図8は、本願発明に係る方法の一実施形態を示すフローチャートである。
【発明を実施するための形態】
【0044】
図1に示すように、本願発明により改善が可能となる一般的なコンピューティングインフラストラクチャは、コンピュータ101か、若しくはネットワークリンク102によって中央の、または共有の記憶装置103へと接続された複数のコンピュータである。コンピュータ101は、
図7に示す一般的なコンピュータシステム20であるのが好ましい。コンピュータシステム20は多数の物理コンポーネントおよび論理コンポーネントを含む。それら物理コンポーネントおよび論理コンポーネントには、中央演算処理装置(「CPU」)24、ランダムアクセスメモリ(「RAM」)28、入出力(「I/O」)インタフェース32、ネットワークインタフェース36、不揮発性記憶装置40、およびCPU24が他のコンポーネントと通信を行うことを可能にするローカルバス44が含まれる。CPU24は、オペレーティングシステムおよび多数のソフトウェアシステムを実行する。RAM28は、比較的反応の速い揮発性記憶装置をCPU24に対し提供する。I/Oインタフェース32は、キーボード、マウスなど1以上のデバイスから入力を受け付けることを可能とし、ディスプレイおよび/またはスピーカなどの出力デバイスへ情報を出力する。ネットワークインタフェース36は、
図1の記憶装置103を含む、他のシステムとの通信を可能とする。不揮発性記憶装置40は、オペレーティングシステムおよびプログラムを格納する。コンピュータシステム20の動作の間、オペレーティングシステム、プログラムおよびデータが不揮発性記憶装置40から取り出され、RAM28に格納されることにより、処理を実行する速度が速くなる。
【0045】
図2は、中央記憶装置210とネットワーク209で通信を行うコンピュータシステム201の模式図である。示されるコンピュータシステムは、CPU204と通信リンク203を介し通信接続するネットワークインタフェース202を含む。CPU204は、ディスクインタフェースと通信リンク205を介し通信接続する。ディスクインタフェースは、ローカルコンピュータ記憶ディスクとリンク208を介し通信を行う。通信リンク203、205、207は、コンピュータシステム203の各要素間の通信手段として、当技術分野で一般的に公知である。示されるように、各要素間のデータ転送速度は、例えば、ネットワークインタフェース202とCPU204との間で32〜128ギガビット/秒、CPU204とディスクインタフェース206との間で32〜128ギガビット/秒、およびディスクインタフェース206とディスク208との間で3〜6ギガビット/秒などと異なり得る。それ自体がコンピュータシステムであってもよい記憶装置210は、それぞれ通信リンク212、214、216を介し接続され、対応して動作するネットワークインタフェース211、CPU213、ディスクインタフェース215、およびディスク217を含む。ネットワーク209は、コンピュータシステム201と中央記憶装置210との間に存在する。物理的な制限およびソフトウェアによる制限によってネットワーク通信の速度には現在のところ、0.1〜10ギガビット/秒という限界がある。理解いただけるようにコンピュータシステム201および記憶システム210内には、CPUに近い位置から始まる極めて高い性能からCPUから離れた比較的低い性能まで、実行能力には階層が存在する。しかしながら、一般的に最も遅い接続は、コンピュータと記憶システムとの間のネットワーク接続である。
【0046】
マルチコンピュータネットワーク内に関しても、異なる複数のコンピュータと中央記憶装置との間の複数のデータの流れをサポートするインフラストラクチャが共有されることに起因して、実行能力の階層が存在する。この文脈において、および応用を目的とし、エンドポイントは、中央記憶装置からのデータの最終的な受取デバイスである各コンピュータシステムとして定義する。本願発明は、中央記憶装置からエンドポイントコンピュータシステムへのデータ転送における、ネットワークインフラストラクチャに内在する制限を踏まえた上での、これらのエンドポイントへのデータの送達の改善に関する。
【0047】
図3は、データ転送の効率を改善しようとした従来技術による解決方法を示す。当該方法は、ネットワーク302と記憶装置304との間にアクセラレータ303を配置し、コンピュータシステム301へ転送するべくネットワーク302内にデータが入り込む前に、記憶装置304におけるネットワーク性能が記憶装置304の性能と一致するよう構成することを含む。アクセラレータ303があるタイプのキャッシュモジュールまたは階層化モジュールである場合、アクセラレータ303は階層0記憶層と呼ぶことが出来る。ここで記憶システムはそれ自体が、予め存在する記憶層、階層1、階層2、・・・階層nを含む。
【0048】
図4に示すように、本願発明において、アクセラレータ402上の階層0記憶層は、コンピュータシステム401から見てネットワーク上の遠端に位置している状態から、コンピュータシステム401に対してローカルな状態へと移動しており、ここで、コンピュータシステム401のCPUとアクセラレータ402上の階層0記憶層との間の性能は、
図3の従来技術による解決方法よりもはるかに高くすることが出来る。したがって、エンドポイントキャッシュという用語が用いられるのは、階層0が、データが持続して存在するコンピュータと階層1(または階層N)との間の中間ではなく、記憶フローのエンドポイントにあるからである。さらに、本開示において、キャッシュおよび階層化といった用語は、一般的に互換的に用いられる。なぜなら、キャッシュとは階層化の特定のサブセットであり、データを隣の階層へ移動させるという決定は、「必要であれば」などの他の階層化ポリシーではなく、「可能な限り迅速に」行われ、特定の階層Nは、当該階層上のデータが他の場合においては(若しくは、階層化のタイプによっては、追加的に)いずれかの階層M(M>N)上に存在するはずであるという意味において、キャッシュとして見なすことが出来るからである。
【0049】
本明細書で説明される本願発明は、以下の説明から理解いただけるように、従来技術による解決方法とは異なる。従来技術と異なる点は、a)本願発明がファイルアクセスに基づいており、アクセスコンテキストが利用可能であるので、エンドポイントキャッシュが選択的にデータをキャッシュすることを可能とし、よって、それ程区別を行わない他の解決方法よりもさらに効率化を可能とする、細かく適合された対応するポリシーをサポートすることが出来るという点、および、(b)本願発明はファイルアクセスに基づいており、よってコンテキストに応じて、全てが同様である(ブロックベースのシステムのように)か、またはファイルのコンテンツに従って異なる(コンテキストセンシティブ)か、またはアプリケーションの要求に従って異なるデータの塊で動作を行うか、1以上の方式で処理を行うか、を選択することが出来る点、(c)本願発明は、既存のファイルシステムのエンドユーザにとって完全に透過的である点、および(d)本願発明はアグノスティックであり、動作を行う際にファイルシステムの実装方法を変更する必要がないという点である。
【0050】
特に、本願発明に係るエンドポイントキャッシュは、多くのコンピュータシステムがRAM内に格納する、従来の「バッファキャッシュ」とは異なる。なぜなら、(a)本願発明のエンドポイントキャッシュ内のデータは、CPUから独立して、またバッファキャッシュが揮発性であるのとは対照的に、キャッシュ管理処理によってクリーニング(clean)され(新たに書き込まれたデータを階層1にフラッシュする(flush)し)、削除するまで、ローカル階層0レベルに格納され、(b)エンドポイントキャッシュが、従来のバッファキャッシュで採用する(例えば、先読み(read−ahead)または分岐予測(branch prediction)など)統計に基づいた予測的なアプローチとは反対に、先見性(foresight)(内部的なまたは外部的な知識に基づくプリエンプティブキャッシュ、または先取り(prefetch))を用いるからである。
【0051】
本願発明に係るエンドポイントキャッシュは、従来技術のキャッシュネットワークファイルシステムとは異なる。なぜなら、(a)本願発明は、リモート記憶システムについては(例えば、Sun Microsystems(登録商標)のCacheFSとは異なり、)アグノスティックであり、(b)本願発明は、リモート記憶システムで用いられるプロトコルについては(例えば、CodaおよびIntermezzoとして知られる解決方法とは異なり)アグノスティックであり、(c)本願発明は、コンピュータが通常どのように記憶装置を利用するかについて透過的であるからである(TsumuFSまたはxCachefsなどの多くのシステムはリモート記憶システムのタイプからは独立しているが、これらは特別なやり方でリモート記憶装置を搭載する必要があるので透過的ではない)。
【0052】
本願発明を実施する、様々な非限定的な例を説明する。以下の説明は、ネットワークと通信を行う単一のコンピュータ上の単一のエンドポイントキャッシュに関するが、本願発明は、ネットワークにアクセスする任意の数のコンピュータに同等に適用することが可能である。さらに、2以上のコンピュータシステムが単一のエンドポイントを形成することも考えられており、よって、システム全体におけるエンドポイントとして構成される1以上のコンピュータに対し1つのエンドポイントキャッシュが提供されてもよい。
【0053】
エンドポイントキャッシュを実装すべく、エンドポイントのコンピュータシステムは、リモート記憶装置が変化を意識することなくローカル階層0に透過的にアクセスするようプログラムされている。階層0は本質的にキャッシュであるので、コンピュータとリモート記憶装置との間の(階層1方向への)ネットワークの性能要件は、低くなる。なぜなら、時間と関連付けられプリフェッチされたI/Oは、ローカル階層0キャッシュから優先的に処理され、よって、階層0キャッシュが階層1記憶層を更新するのに必要なネットワークトラフィックは、コンピュータがリモートの階層0または階層1へ直接アクセスするよりも少なくても済む(よって、個別のエンドポイントおよびネットワークインフラストラクチャ全体としてのネットワーク性能も低くて済む)。つまり、エンドポイントアクセラレータにより実装される階層0キャッシュは、ネットワークから一定量の負荷を取り除き、かつエンドポイントコンピュータシステムのCPUと通信を行うことが出来る。この差異は、
図5および6に示されている。
図5は、コンピュータシステム501が、全体的にネットワーク502にかかり、中央記憶装置503においても負荷Lとして処理される与えられた負荷Lを有する、従来技術のシステムを示す。
図6は、コンピュータシステム601が与えられた負荷Lを有する本願発明の実施形態を示す。アクセラレータ602上で実装される階層0キャッシュにかかる負荷は、HRだけ軽減される。ここでHRは0より大きく、1より小さい。したがって、ネットワーク603は、負荷L(1−HR)を有し、この負荷は、中央記憶装置604が処理する負荷でもある。同様に、中央記憶装置604上の階層1記憶層の性能要件は、低くなる。なぜなら、ここで階層1記憶層は、階層0記憶層がなかった場合にコンピュータによって生じるピーク負荷要件ではなく、キャッシュを行ったうえで示される平均負荷要件を処理すればよいからである。
【0054】
よって、本願発明は、コンピューティングインフラストラクチャの経済的な効率性に繋がる技術的な解決方法を提供する。
【0055】
ウィンドウズ(登録商標)のオペレーティングシステムで本願発明を実装するにあたり、また、
図8を参照すると、本願発明の実装においては、フィルタドライバを作成し、ファイルシステム入出力動作の全ての通信経路となるフィルタスタックにフィルタドライバを設けることを含む。フィルタドライバは、ファイルがエンドポイントキャッシュを行うようマークされているかどうかを判断する段階805を含む本願発明の実施形態に係る方法を実施するようプログラムされているか、または適合されている。このことは、ファイルが、エンドポイントキャッシュを行うようマークされたことを示すヘッダまたは他の記述子情報を含むかどうかを判断するよう構成されたコンテキストパターンまたはポリシーと、ファイルのコンテキストを一致されることにより、行うことが出来る。これは、各ファイルが開かれたときに実行するのが好ましい。段階810において、ファイル記述子が、当該ファイルがエンドポイントキャッシュを行うようマークされていることを示すのであり、フィルタドライバが読み出し動作を認識すれば、要求されたデータがアクセラレータ上の階層0キャッシュに存在するかどうかの確認が行われ、行われているのであれば、階層0キャッシュからの読み出しが実行される。要求されたデータが階層0キャッシュ上に見つからなければ、データがソースの位置(つまり中央記憶装置)から取り出され、読み出しが実行される。また、階層0キャッシュはデータのコピーの受信および格納を行う。代替的に、フィルタドライバが書き込み動作を認識すれば、段階815において、階層0キャッシュが新たに書き込まれるデータにより更新され、また、当該データが中央記憶装置のソース位置に即座に書き込まれる。代替的に、書き込み動作を遅れて行うことも可能であり、ここで階層0キャッシュには即座に新たなデータが書き込まれ、中央記憶装置へ当該データを書き込む動作がキューに入れられる。このことにより、ネットワークに対する負荷をモニタリングおよび制御することができ、優先度の高いデータがネットワーク上での転送において高い優先度を与えられる。
【0056】
段階820において、データの一貫性を維持するべく、必要であれば他の動作のインターセプトを行う。例えば、ソースファイルシステムの変更が、階層0キャッシュ内で対応する変更としてマッピングされる必要があり、または、ファイルネームによりキャッシュがキーされていた場合、適切な名前の変更動作がこの段階で行われる。この段階でインターセプトされ処理される他の例としては、ファイルの削除動作、ファイル属性の変更などが含まれる。
【0057】
段階830において、キャッシュ管理機能またはキャッシュ管理モジュールが提供され、階層0キャッシュに空きスペースがない場合、必要に応じて階層0キャッシュのスペースを使えるようにする。この空きスペースを作り出す処理の間に階層0キャッシュからパージされるデータは、キャッシュ管理機能にプログラムされたポリシーに基づいてよい。例えば、最も古いデータ、最もアクセス頻度の低いデータ、最も優先度の低いデータ(例えば、定義されるようにユーザファイル対システムファイル)のうちのいずれか1つ、または、本願発明の特定の実施形態に応じて決定される他の任意のデータポリシーに基づいて処理が行われる。
【0058】
段階840において、ソースファイルへの適切なアクセスを可能にするソースファイルへのアクセスメカニズムが、オペレーティングシステムカーネルの内部または外部で協働して行われる処理を用いて提供される。リモートのソースファイルに関しては、この機能は、カーネルの外部で提供される。ソースファイルは上述したように、階層0キャッシュ上または中央記憶装置上に存在し得うるが、このメカニズムにより、CPUは常に、エンドポイントキャッシュを行うようマークされたファイルの通信処理を、階層0キャッシュを通じてルーティングする。
【0059】
上述した本願発明の実施形態は、公知のキャッシュ技術および処理を用いるが、それらを新規かつ自明でないやり方で適用する。例えば、CPUがアクセラレータおよび階層0と通信を行う方法および処理は詳細には説明しない。さらに、本願発明を実施するこれらのキャッシュ技術および処理は公知であるかもしれないが、ネットワークへの負荷が大幅に軽減されること、階層0キャッシュがエンドポイントのCPUおよびネットワークに対して透過的であること、中央記憶装置および/またはエンドポイントコンピュータシステム自体に対して完全にアグノスティックであること、といった結果は、新規のものである。本願発明に係る要素の構成により、全体的により効率的なコンピュータ/ネットワーク/記憶システムが提供される。
【0060】
段階805、810で構成されるコンテキストパターンは、基本的なものであってもよく、階層0キャッシュ内のデータの全てのキャッシュを行い得、若しくは、洗練された特定的なものであってもよく、この場合、例えばファイルネームのパターン、アクティブなユーザ、アクティブなアプリケーション、または他の関連するポリシーにより特定される特定のタイプのファイルのみが階層0キャッシュにキャッシュされる。本願発明が実施される場合、データのフローを制御するべくそのようなコンテキストパターンが用いられ、階層0キャッシュのより細かな制御、したがって、効率的な利用が可能となる。さらに、
図2に示すような記憶アクセラレータの利用のように一般的なキャッシュは当技術分野で公知であるが、本明細書で説明する階層0キャッシュの機能を実行するアクセラレータの利用は新規のものであり、自明ではなく、当技術分野では公知となっていない、本明細書で述べられるようなかつては予期できなかった結果がもたらされる。
【0061】
特にエンドポイントキャッシュが、(エンドポイントにとって)ローカルな、高速で処理を行うことが出来る記憶装置と行う場合において、本願発明を実施する様々な他の方法、または様々な段階を考え付くことが可能である。例えば、2011年8月24日にZachariassenらにより出願された同時係属出願であるPCT国際出願番号PCT/CA2011/050514に説明されるようなファイルシステムエクステンションを用いることが出来る。当該特許出願は、本明細書に参照により組み込まれる。そのようなファイルシステムエクステンションを用いることにより、ローカル記憶装置上のファイルシステムを拡張することが出来、ローカル記憶装置で用いられる特定のファイルシステムとは独立して、階層0キャッシュの記憶媒体上にデータを格納することが出来る。よって、本願発明に係るアクセラレータ上の階層0キャッシュは、アクセラレータ上が動作するコンピュータシステムにとってローカルなファイルシステムの一部であるように見え、階層0キャッシュとローカル記憶装置との間の通信は、完全に透過的なものとなる。
【0062】
既存のファイルシステムが本質的に階層0キャッシュの機能性を提供するように変更を加えることも考えられる。このことは、フィルタドライバに関して上記で説明したのと同様なやり方で達成することが可能であるが、フィルタドライバなしでファイルシステムの機能を拡張することにより実施が可能である。なお、本願発明を実施するべくファイルシステムの機能を拡張する一方、階層0キャッシュは、典型的なローカルなコンピュータキャッシュとは区別して異なるように動作し、ここで、キャッシュされるデータは、ネットワークおよび中央記憶装置ユニットから離れた側において読み出し/書き込み動作を行うことが意図されているデータである。この動作は、一般的にコンピュータシステムのRAMによって迅速にアクセスされることが意図されるデータをキャッシュするよう処理する、ローカルなコンピュータキャッシュとは異なる。一変形例において、既存のファイルシステム上での階層0キャッシュの機能性を可能にする目的で利用可能なオペレーティングシステムファシリティを用いるスタック可能なファイルシステムが提供される。既存のファイルシステム上で非協働的にスタックされるスタンドアロン型ファイルシステムも用いることが出来る。
【0063】
レイテンシーを最小限にすることが重要である環境においては、本願発明を、必要とされるオペレーティングシステムカーネルの利用を最小化するやり方で実施することも考えられる。このことは、各アプリケーションと関連付けられる記憶アクセラレーション機能の部分と、当該アプリケーションが実行されるハードウェア(またはバーチャルなハードウェア)で実行される部分とを提供することにより実施することが出来る。このことを達成するべく、特定のアプリケーションにより実行されるI/O動作は、それらがカーネルに入る前にインターセプトされなければならなく、ファイルまたはI/Oがエンドポイントキャッシュを行うようマークされている場合、当該I/O動作を当該カーネルを直接的に通る、または当該カーネルの近くを通るソフトウェアモジュール、例えばダイレクトブロックアクセス(直接的に通る)またはメモリマッピングアクセス(近くを通る)などでリダイレクトする。これらのアクセス方法は、関連する記憶アクセラレーション装置が、各アプリケーションに関連付けられた部分と協働して、本明細書で説明する本願発明に係る階層0および記憶アクセラレーションの機能性を完全に提供するプロトコルAPI(プログラム可能APIではなく)を提供する必要がある。このことは、ユーザレベルでI/O動作をインターセプトするのに用いられる方法が透過的なやり方であるので、アプリケーションに対し透過的なものであり得る。そのような方法の1つにおいては、全てのアプリケーションにより用いられる、動的に負荷を受けるシステムコールライブラリを、本願発明により求められるインターセプト、ポリシーおよび協働的な機能を実装するバージョンへと(追加されたカーネルのアシストを通じて)リダイレクトすることを伴う。メモリをマッピングするインタフェースを用いるカーネルを避ける実施形態において、コンテキストスイッチング、カーネルIOマネージメント、ファイルシステム処理、フィルタ、および全てのI/O動作に用いられるデバイスドライバスタックに伴うリソースおよび時間を省略でき、レイテンシーの影響を緩和することが出来る。
【0064】
さらに、オペレーティングシステムバッファキャッシュメカニズムに対し、階層0キャッシュが設けられる利用可能なRAMに加え、ローカルな高速で処理を行う記憶装置を用いるように変更を加えてよい。
【0065】
一変形例において、NFSまたCIFSなどのリモート記憶装置ドライバ、またはリモートブロックデバイスドライバに対し、上述したように階層0キャッシュを通じたデータのポリシールーティングを適用するよう変更を加えてもよい。そのような変更は、当業者にとっては本明細書から明白である。
【0066】
本明細書で説明するように、ロジカルボリュームドライバを作成または変更し、リアルなブロックデバイスからバーチャルなブロックデバイスを作成し、階層0キャッシュを提供してもよい。ファイルシステムに既に組み込まれたファシリティを用い、コンピュータシステム上でローカルにファイルをキャッシュすることにより、この処理を補足してもよい。ブロック記憶ドライバと協働してコンテキスト情報をブロックベースのキャッシュシステムへ提供するファイルシステムまたはフィルタドライバを用いてもよい。
【0067】
代替的に、リモート中央記憶システムは、記憶プロトコルがリファレンス(referencing)を許可するのであれば、ローカル階層0キャッシュ記憶に関する制御または情報を管理してもよい。本実施形態において、階層0キャッシュに関する何らかの制御は、中央記憶装置により行われる。しかし、上述したようなポリシーまたはコンテキストに関するルールを管理する責任は、エンドポイントのCPUで管理されるのが好ましい。
【0068】
既存のファイルに対して透過的にエンドポイントキャッシュ機能を提供する従来技術は存在しない。NFSまたはCIFSなどの一般的なリモートファイルシステムは、中央記憶装置のローカルかつ持続的なキャッシュを用いず、さらに、本明細書で説明する本願発明を実施する機能およびそのような示唆を含んではいない。いくつかのクラウド記憶サービスへのファイルシステムのインタフェース(またはオブジェクト記憶)においては、持続的かつローカルなキャッシュが用いられるが(例えば、Dropbox(登録商標)など)、既存のファイルと透過的に協働するのとは反対に、独立したファイルシステムまたは特別な同期化したディレクトリとして提示する。既存のファイルと透過的に協働する機能は、ネットワークにおいてリモート記憶装置自体から下流にあり、エンドポイントのCPUと通信を行う、リモート記憶装置の階層1から階層N(N≧1)を有するリモート中央記憶装置の階層0キャッシュによってのみ提供される。
【0069】
好ましい実施形態は、特にウィンドウズ(登録商標)のオペレーティングシステムのコンテキストにおいて適用されているが、Linux(登録商標)およびUnix(登録商標)など他のオペレーティングシステム環境を含む他のコンテキスト、および当然ながら従来のファイルシステムをエンドユーザに示さないモバイルシステムのコンテキストなどにおいても同じ一般的な方法を適用することが出来る。
【0070】
本願発明のいくつかの変形例において、リモートファイルシステムプロトコルに関して当てはまり、典型的にはブロックデバイスに関しては当てはまらないように、リモート記憶システムが共有される。本変形例において、エンドポイントキャッシュの機能は、複数の独立したクライアント間でキャッシュの一貫性を維持するよう適合される。リモートファイルシステムプロトコルはクライアント間での一貫性を維持する必要があるので、通常、この状況に対応する。この場合において、リモートの中央記憶装置が複数のリモート記憶装置で構成されており、また代替例においては、多数のエンドポイントコンピュータシステムがデータをリモート記憶装置へ書き込んでおり、ここでデータ自体が2つ以上のエンドポイントコンピュータシステムの間で共有される。データのリース(lease)または取り消し可能な(revocable)ロックは、一般的にそのような一貫性を確保するべく用いられており、エンドポイントキャッシュアクセラレータまたは階層0は、キャッシュのセマンティックを維持するべくデータを適切にフラッシュすることにより(つまり、完全に削除するか書き込むことにより)、データへの排他的なアクセス権を無効にするプロトコルメッセージと協働しなければならない。好ましい実施形態において、ソースファイルへのアクセスを提供する処理に対し、そのような無効化が知らされるように構成され、適切な動作が行われる。
【0071】
本願発明の1つの追加的な効果は、リモート記憶システムが利用不可能であるか、若しくはネットワークから切断されている際に現れる。この状況において、構成可能なポリシー制御が実行され、エンドポイントキャッシュの動作を制御する。デフォルトの動作は、例えば、可能であれば階層0キャッシュからの読み出し動作が実行され、若しくは失敗に終わり、階層0キャッシュにおいて書き込み動作が実行され、中央記憶装置へ後に書き込むべくキューに入れられる。続いて、他のシステムからのコンフリクトする書き込み動作が同時に発生した場合、コンフリクトする処理を解決する方法が必要となる。
【0072】
本願発明の一変形例において、アプリケーションが使用する有効なI/Oバッファリングポリシーが透過的に変更される。現在用いられているオペレーティングシステム上で動作するアプリケーションは一般的に、バッファリングされたI/OとバッファリングされていないI/Oとの間で選択を行う。バッファリングされたI/Oとは、アプリケーションが要求するI/O動作がオペレーティングシステムカーネル内のキャッシュマネージャを通り、読み出し動作に関しては、カーネルバッファキャッシュ内の要求されたデータをルックアップし、書き込み動作に関しては、提供されたデータをカーネルバッファキャッシュに書き込み、カーネルは、I/Oの実際のターゲットの更新を(主記憶装置のいずれかの位置において)担当することを意味する。バッファリングされていないI/Oとは、上述したようにアプリケーションにより要求されたI/O動作がキャッシュマネージャを通らず、代わりに、リアルタイムで、主記憶装置上のI/Oのターゲットからデータを読み出し、または当該ターゲットへデータを書き込むことを意味する。この実施形態の変形例では、物理的な位置への書き込みが単にキューに入れられるのではなく、データが、書き込みの成功がアプリケーションに報告される前に、当該データを表す物理的な位置へ実際に確実に書き込まれるようにする。本願発明の本変形例は、読み出しおよび書き込みのうち少なくとも一方のI/O動作を行うようアプリケーションが要求するデータの有効なオペレーティングシステムバッファリングポリシーを、データをオペレーティングシステムバッファへアクティブに供給することにより、またはオペレーティングシステムバッファからアクティブにデータを削除することにより、透過的に変更する段階と、I/O動作に必要なオペレーティングシステムバッファキャッシュを有効化するか、または無効化する段階とを含み、オペレーティングシステムバッファへデータを供給する段階は、アプリケーションがオペレーティングシステムによりキャッシュされたデータを使用するよう構成する段階を含む。
【0073】
本願発明は、各I/Oタイプのバッファリングを独立して制御することにより、このシナリオに適用することが可能である。例えば、読み出し動作がバッファリングされる一方で書き込み動作がバッファリングされない。一例として、通常ではバッファリングされていないI/O動作により動作するデータベースが現実には、動作セマンティックに変更を加えることなく、バッファリングされた読み出し動作およびバッファリングされていない書き込み動作を行うことが出来る。I/Oを要求するアプリケーションに対し外部で、かつ当該アプリケーションに対して透過的にI/O動作のバッファリングを制御する単純な方法の1つは、本願発明に係る記憶アクセラレータ機能の完全な制御下にある階層0キャッシュ記憶においてデータのバッファリングを制御することである。このことは、このように動作するように外部からのポリシーによって設定することが出来る、2011年8月24日にZachariassenらにより出願された同時係属出願であるPCT国際出願番号PCT/CA2011/050515に説明されるようなインターセプトキャッシュモジュールにより達成することが出来る。当該特許出願は、本明細書に参照により組み込まれる。当該PCT出願のインターセプトキャッシュモジュールは、3つの方法によりアプリケーションキャッシュを制御することが出来る。それら3つの方法とは、特定のタイプのバッファリングを要求するアプリケーションからのファイルオープンパラメータをインターセプトし、それらを適切に変更すること、および/または、階層0キャッシュ上に保持されるデータのバッファリングを変更すること、および/または、オペレーティングシステムキャッシュマネージャへのクエリー、および当該マネジャーからの要求をインターセプトすること、である。このようにして、エンドポイントキャッシュは、本願発明を用いない場合であればネットワークを横切ってリモート記憶装置まで到達しなければならないI/Oに対して、エンドポイントコンピュータシステム内でマルチレベルのキャッシュを行うことが出来る。
【0074】
上述した実施形態は本願発明の例として用いられており、当業者であれば、以下の請求項によってのみ定められる本願発明の態様から逸脱することなく、変更および修正を加えることが可能である。
ソフトウェアモジュールが前記フィルタドライバ上に設けられていてもよい。
データ記憶方法は、読み出しおよび書き込みのうち少なくとも一方のI/O動作を行うようアプリケーションが要求するデータの有効なオペレーティングシステムバッファリングポリシーを、オペレーティングシステムバッファへデータをアクティブに供給することにより、またはオペレーティングシステムバッファからアクティブにデータを削除することにより、透過的に変更する段階を備え、前記オペレーティングシステムバッファへデータをアクティブに供給することは、前記アプリケーションが前記オペレーティングシステムによりキャッシュされた前記データを使用するよう構成することを含んでもよい。
データ記憶方法は、読み出し動作および書き込み動作の少なくとも一方を行うようアプリケーションが要求するデータをキャッシュ位置へキャッシュする段階と、読み出しおよび書き込みI/O動作が前記アプリケーションから要求されたことに応じてデータの有効なバッファリングポリシーを透過的に変更する段階とをさらに備え、前記有効なバッファリングポリシーを変更する段階は、前記アプリケーションが要求する前記データの少なくとも一部を、前記キャッシュ位置でバッファリングする段階を含んでもよい。
データ記憶方法は、前記キャッシュ位置は記憶アクセラレータを含み、前記記憶アクセラレータにおいてキャッシュを行うようマークされ、読み出されている、または書き込まれているファイルを前記データが含むかどうかを判断する段階と、データ読み出し動作が要求されているかどうかを判断し、要求されていれば、読み出されているデータが前記記憶アクセラレータ上に存在するか判断し、a)存在すれば、前記記憶アクセラレータからの前記データ読み出し動作を実行し、b)存在しなければ、中央記憶システムから前記データを要求し、前記データのコピーを前記記憶アクセラレータに提供する段階と、データ書き込み動作がコンピュータシステムにより要求されているかどうかを判断し、要求されていれば、前記データを前記記憶アクセラレータに書き込む段階とをさらに備え、前記読み出し動作および前記書き込み動作の一方または両方が前記記憶アクセラレータ上の前記ファイルのバッファリングされた動作を含んでもよい。