(57)【要約】【解決手段】データ記憶システムは、中央記憶システムと、ネットワークインフラストラクチャにより中央記憶システムとネットワーク通信を行う少なくとも１つのエンドポイントコンピュータシステムと、コンピュータシステムのＣＰＵと通信を行う記憶アクセラレータとを含み、記憶アクセラレータは、少なくとも１つのエンドポイントコンピュータシステムにアクセス可能な中央記憶システム上のデータのエンドポイントキャッシュを行う。好ましくは、記憶アクセラレータは、ＣＰＵから記憶アクセラレータへのデータスループットがＣＰＵから中央記憶システムへの接続を通じたデータスループットよりも大きくなる位置に設けられる。【選択図】図８
2013541788.tif 000002
【特許請求の範囲】
【請求項１】
データ記憶システムであり、
中央記憶システムと、
ネットワークインフラストラクチャにより前記中央記憶システムとネットワーク通信を行う少なくとも１つのエンドポイントコンピュータシステムと、
前記コンピュータシステムのＣＰＵと通信を行う記憶アクセラレータと
を備え、
前記記憶アクセラレータは、前記中央記憶システム上における前記少なくとも１つのエンドポイントコンピュータシステムにアクセス可能なデータのエンドポイントキャッシュを行い、
前記記憶アクセラレータは、前記コンピュータシステムのバスまたは他の高速ネットワークに取り付けられた物理記憶ユニットを制御するためのコンピュータ可読命令を前記ＣＰＵにより実行する、データ記憶システム。
【請求項２】
前記中央記憶システムは、階層１から層Ｎ（Ｎ≧１）を含む階層データ構造を有し、
前記記憶アクセラレータは、前記中央記憶システムの階層０に対するキャッシュを有する、請求項１に記載のデータ記憶システム。
【請求項３】
前記物理記憶ユニットは、固体メモリデバイスを含む、請求項２に記載のデータ記憶システム。
【請求項４】
前記記憶アクセラレータは、データキャッシュ構造を有する、請求項３記載のデータ記憶システム。
【請求項５】
前記記憶アクセラレータと通信を行うフィルタドライバをさらに備える、請求項１から４のいずれか１項に記載のデータ記憶システム。
【請求項６】
ソフトウェアモジュールが前記フィルタドライバ上に設けられ、
前記フィルタドライバは、読み出されている、または書き込まれているファイルがエンドポイントキャッシュを行うようマークされているかどうかを判断するための命令を含む、請求項５に記載のデータ記憶システム。
【請求項７】
前記読み出されている、または書き込まれているファイルがエンドポイントキャッシュを行うようマークされているかどうかを判断するための命令は、ファイルのメタデータ情報にアクセスするための命令を含む、請求項６に記載のデータ記憶システム。
【請求項８】
前記フィルタドライバは、データ読み出し動作が前記少なくとも１つのエンドポイントコンピュータシステムから要求されているかどうかを判断し、要求されていれば読み出されているデータが前記記憶アクセラレータ上に存在するか判断し、ａ）存在すれば、前記記憶アクセラレータからの前記データ読み出し動作を実行し、ｂ）存在しなければ、前記中央記憶システムから前記データを要求し、前記データのコピーを前記記憶アクセラレータに提供するための命令をさらに含む、請求項７に記載のデータ記憶システム。
【請求項９】
前記フィルタドライバは、データ書き込み動作が前記少なくとも１つのエンドポイントコンピュータシステムにより要求されているかどうかを判断し、要求されていれば、前記データを前記記憶アクセラレータに書き込むための命令をさらに含む、請求項７に記載のデータ記憶システム。
【請求項１０】
前記フィルタドライバは、前記データを前記中央記憶システムへ書き込むための命令をさらに含む、請求項９に記載のデータ記憶システム。
【請求項１１】
前記フィルタドライバは、前記中央記憶システムに書き込まれることになる前記データをキューするための命令をさらに含む、請求項９に記載のデータ記憶システム。
【請求項１２】
前記フィルタドライバは、前記中央記憶システムと前記記憶アクセラレータとの間のデータの一貫性を維持するための命令をさらに含む、請求項１０または１１に記載のデータ記憶システム。
【請求項１３】
前記少なくとも１つのエンドポイントコンピュータシステムは、モバイルデバイスを含む、請求項１から１２のいずれか１項に記載のデータ記憶システム。
【請求項１４】
データ記憶方法であり、
中央記憶システムを設ける段階と、
ネットワークインフラストラクチャにより前記中央記憶システムとネットワーク通信を行う少なくとも１つのエンドポイントコンピュータシステムを設ける段階と、
前記コンピュータシステムのＣＰＵと通信を行う記憶アクセラレータを設ける段階と
を備え、
前記記憶アクセラレータは、前記中央記憶システム上における前記少なくとも１つのエンドポイントコンピュータシステムにアクセス可能なデータのエンドポイントキャッシュを行い、
前記記憶アクセラレータは、前記コンピュータシステムのバスまたは他の高速ネットワークに取り付けられた物理記憶ユニットを制御するためのコンピュータ可読命令を前記ＣＰＵにより実行する、データ記憶方法。
【請求項１５】
前記記憶アクセラレータは、前記ＣＰＵから前記記憶アクセラレータへのデータスループットが前記ＣＰＵから前記中央記憶システムへの接続を通じたデータスループットよりも大きくなる位置に設けられる、請求項１４に記載のデータ記憶方法。
【請求項１６】
前記中央記憶システムは、階層１から階層Ｎ（Ｎ≧１）を含む階層データ構造を有し、
前記記憶アクセラレータは、前記中央記憶システムの階層０に対するキャッシュを有する、請求項１４または１５に記載のデータ記憶方法。
【請求項１７】
前記物理記憶ユニットは、固体メモリデバイスを含む、請求項１４に記載のデータ記憶方法。
【請求項１８】
前記記憶アクセラレータは、データキャッシュ構造を有する、請求項１７に記載のデータ記憶方法。
【請求項１９】
前記エンドポイントコンピュータシステムは、データ読み出し動作またはデータ書き込み動作を実行するよう適合され、
読み出されている、または書き込まれているファイルがエンドポイントキャッシュを行うようマークされているかどうかを判断する段階をさらに備える、請求項１８に記載のデータ記憶方法。
【請求項２０】
読み出されている、または書き込まれているファイルがエンドポイントキャッシュを行うようマークされているかどうか、ファイルのメタデータ情報にアクセスすることにより判断する段階をさらに備える、請求項１９に記載のデータ記憶方法。
【請求項２１】
データ読み出し動作が前記コンピュータシステムから要求されているかどうかを判断し、要求されていれば、読み出されているデータが前記記憶アクセラレータ上に存在するか判断し、ａ）存在すれば、前記記憶アクセラレータからの前記データ読み出し動作を実行し、ｂ）存在しなければ、前記中央記憶システムから前記データを要求し、前記データのコピーを前記記憶アクセラレータに提供する段階をさらに備える、請求項２０に記載のデータ記憶方法。
【請求項２２】
データ書き込み動作が前記コンピュータシステムにより要求されているかどうかを判断し、要求されていれば、前記データを前記記憶アクセラレータに書き込む段階をさらに備える、請求項２１に記載のデータ記憶方法。
【請求項２３】
前記データを前記中央記憶システムへ書き込む段階をさらに備える、請求項２２に記載のデータ記憶方法。
【請求項２４】
前記中央記憶システムに書き込まれることになる前記データをキューする段階をさらに備える、請求項２２に記載のデータ記憶方法。
【請求項２５】
前記中央記憶システムと前記記憶アクセラレータとの間のデータの一貫性を維持する段階をさらに備える、請求項２２または２３に記載のデータ記憶方法。
【請求項２６】
読み出しおよび書き込みＩ／Ｏ動作とは独立に、または読み出しおよび書き込みＩ／Ｏ動作との組み合わせによりアプリケーションから要求されたことに応じてデータの有効なバッファリングポリシーを透過的に変更する段階をさらに備える、請求項１６に記載のデータ記憶方法。
【請求項２７】
データ記憶方法であり、
中央記憶システムから読み出されているまたは前記中央記憶システムへ書き込まれているファイルが、エンドポイントコンピュータシステムの記憶アクセラレータにおいてキャッシュを行うようマークされているかどうかを判断する段階と、
データ読み出し動作が要求されているかどうかを判断し、要求されていれば、読み出されているデータが前記記憶アクセラレータ上に存在するか判断し、ａ）存在すれば、前記記憶アクセラレータからの前記データ読み出し動作を実行し、ｂ）存在しなければ、前記中央記憶システムから前記データを要求し、前記データのコピーを前記記憶アクセラレータに提供する段階と、
データ書き込み動作が前記コンピュータシステムにより要求されているかどうかを判断し、要求されていれば、前記データを前記記憶アクセラレータに書き込む段階と
を備える、データ記憶方法。
【請求項２８】
読み出されている、または書き込まれているファイルがエンドポイントキャッシュを行うようマークされているかどうか、ファイルのメタデータ情報にアクセスすることにより判断する段階をさらに備える、請求項２７に記載のデータ記憶方法。
【請求項２９】
前記中央記憶システムと前記記憶アクセラレータとの間のデータの一貫性を維持する段階をさらに備える、請求項２７または２８に記載のデータ記憶方法。
【請求項３０】
読み出しおよび書き込みＩ／Ｏ動作とは独立に、または読み出しおよび書き込みＩ／Ｏ動作との組み合わせによりアプリケーションから要求されたことに応じてデータの有効なバッファリングポリシーを透過的に変更する段階をさらに備える、請求項２８または２９に記載のデータ記憶方法。
【請求項３１】
請求項２７から３０のいずれか１項に記載のデータ記憶方法をコンピュータに実行させる、コンピュータプログラム。
【請求項３２】
データ記憶方法であり、
読み出しおよび書き込みのうち少なくとも一方のＩ／Ｏ動作を行うようアプリケーションが要求するデータの有効なオペレーティングシステムバッファリングポリシーを、オペレーティングシステムバッファへデータをアクティブに供給することにより、またはオペレーティングシステムバッファからアクティブにデータを削除することにより、透過的に変更する段階を備え、
前記オペレーティングシステムバッファへデータをアクティブに供給することは、前記アプリケーションが前記オペレーティングシステムによりキャッシュされた前記データを使用するよう構成することを含む、データ記憶方法。
【請求項３３】
読み出し動作および書き込み動作の少なくとも一方を行うようアプリケーションが要求するデータをキャッシュ位置へキャッシュする段階と、
読み出しおよび書き込みＩ／Ｏ動作が前記アプリケーションから要求されたことに応じてデータの有効なバッファリングポリシーを透過的に変更する段階と
をさらに備え、
前記有効なバッファリングポリシーを変更する段階は、前記アプリケーションが要求する前記データの少なくとも一部を、前記キャッシュ位置でバッファリングする段階を含む、請求項３２に記載のデータ記憶方法。
【請求項３４】
前記キャッシュ位置は記憶アクセラレータを含み、
前記記憶アクセラレータにおいてキャッシュを行うようマークされた読み出されている、または書き込まれているファイルを前記データが含むかどうかを判断する段階と、
データ読み出し動作が要求されているかどうかを判断し、要求されていれば、読み出されているデータが前記記憶アクセラレータ上に存在するか判断し、ａ）存在すれば、前記記憶アクセラレータからの前記データ読み出し動作を実行し、ｂ）存在しなければ、中央記憶システムから前記データを要求し、前記データのコピーを前記記憶アクセラレータに提供する段階と、
データ書き込み動作がコンピュータシステムにより要求されているかどうかを判断し、要求されていれば、前記データを前記記憶アクセラレータに書き込む段階と
をさらに備え、
前記読み出し動作および前記書き込み動作の一方または両方が前記記憶アクセラレータ上の前記ファイルのバッファリングされた動作を含む、請求項３３に記載のデータ記憶方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、２０１０年１１月１６日に提出された米国仮特許出願第６１／４１４，９１９１号の優先権を主張する。当該出願の内容は、その全体が参照により本願に組み込まれる。
【０００２】
本願発明はデータ記憶システムおよびデータ記憶方法の分野に関する。より詳細には、データ入出力動作の効率性および速度を向上する、データ記憶システムに用いられるキャッシュを行うシステムおよび方法に関する。
【背景技術】
【０００３】
データ記憶の分野における大きな課題は、効率的なシステムを実現すべく、いかにしてデータ記憶装置の性能をコンピュータの処理能力と同等なものにするかということである。コンピュータシステムにおけるデータ記憶の分野において効率的なシステムとは一般的に、全ての主要なコンポーネントが通常の作業負荷の下、バランスのとれた方法で用いられるシステムのことを指す。つまり、コンピュータシステムおよびそれに関連付けられたデータ記憶装置は、それぞれが最大の性能を発揮している状態が最適である。本願発明、および本項で説明する関連する背景技術は一般的に、様々な種類のディスクなど持続的な記憶装置に関し、コンピュータに搭載される（通常ランダムアクセスメモリと呼ばれる）一時的な記憶装置には関しない。従来、コンピュータシステムおよびそれらに関連付けられた中央処理装置の性能はデータ記憶システムの速度および効率性よりはるかに優れているので、記憶装置の性能が制限要因となっている。
【０００４】
データ記憶装置の性能を向上させようとする従来技術の解決方法は、記憶装置の処理速度、およびコンピュータと記憶装置との間の接続を速くするということに主眼を置いていた。これらの解決方法の例には様々なものが含まれ、ＲＡＩＤストライピングなど記憶装置を集約させること、記憶制御装置の本質的な性能を向上させること、ＲＡＩＤコントローラの多くでなされているように記憶制御装置に、記憶アプライアンスに、または記憶装置より手前に位置するネットワークサーバ上にキャッシュを追加すること、および複数の記憶ノード側で記憶処理の負荷を分配することなどが含まれる。
【０００５】
管理を容易にするべく、記憶処理を集中させる傾向も強い。この方法を最もよく表す例は、記憶処理を整理し集約させるＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）およびＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）システムの登場である。これらの解決方法（より早く、より集中させた記憶処理）に関するインフラストラクチャモデルは、ネットワークにより記憶システムへ接続されたコンピュータ上で実行される多数のアプリケーションのフローグラフとして説明することが出来る。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
そのようなモデルにおいては、記憶システムの性能をコンピュータの潜在的な性能と一致させるには、コンピュータと記憶システムとの間の個々のネットワークの（より大きなバンド幅およびより短いレイテンシーに関する）性能を向上させることにより、記憶システムの性能とコンピュータの性能との間のバランスを取らなければならないことが明らかである。
【０００７】
ここで生じる課題は、例え非常に少ない数のコンピュータであってもそれらによって与えられる潜在的な負荷は、安価なネットワークまたは中央記憶システムが対応出来る負荷よりもはるかに大きいということである。コンピュータの内部ネットワーク、つまりバスは、コンピュータが一般的にサポートする外部のネットワークよりも１または２桁分さらに速度が速く、かつ高い能力で動作する。
【０００８】
従来技術の解決方法のいくつかには、中央の記憶装置におけるネットワーク性能を記憶装置自体の性能と見合うものとするキャッシュ機能または階層化機能を形成させるものなど、記憶装置に取り付けられた記憶アクセラレータを用いるものがある。この課題を解決すべくその他試みられている解決方法には、例えばｂｃａｃｈｅ、ｆａｓｔｃａｃｈｅ、ｄｍｃａｃｈｅなどいくつかのブロックベースの実装、およびＦＳ−ｃａｃｈｅとして知られるファイルシステムを変更する特定の実装など、Ｌｉｎｕｘ（登録商標）カーネルファシリティのコンテキストにおける試みがある。またワイドエリアネットワークリンク上の読み出し専用キャッシュ（ｒｅａｄ−ｏｎｌｙ  ｃａｃｈｉｎｇ）を対象として設計されたＢｒａｎｃｈＣａｃｈｅと呼ばれる関連する機能性をもつウィンドウズ（登録商標）ファシリティもある。
【０００９】
よって本願発明の目的は、データ記憶システムの効率性を向上させる、新規のシステムおよび方法を提供することである。
【課題を解決するための手段】
【００１０】
本願発明の一実施形態によると、データ記憶システムは、中央記憶システムと、ネットワークインフラストラクチャにより中央記憶システムとネットワーク通信を行う少なくとも１つのエンドポイントコンピュータシステムと、コンピュータシステムのＣＰＵと通信を行う記憶アクセラレータとを含み、記憶アクセラレータは、少なくとも１つのエンドポイントコンピュータシステムにアクセス可能な中央記憶システム上のデータのエンドポイントキャッシュを行う。
【００１１】
本実施形態の一態様によると、記憶アクセラレータは、コンピュータシステムのバスに取り付けられた物理記憶ユニットを制御するＣＰＵ上で実行される少なくとも１つのソフトウェアモジュールを有する。
【００１２】
本実施形態の他の態様によると、記憶アクセラレータは、ＣＰＵから記憶アクセラレータへのデータスループットがＣＰＵから中央記憶システムへの接続を通じたデータスループットよりも大きくなる位置に設けられる。
【００１３】
本実施形態の他の態様によると、中央記憶システムは、階層１から層Ｎ（Ｎ≧１）を含む階層データ構造を有し、記憶アクセラレータは、中央記憶装置の階層０に対するキャッシュを有する。
【００１４】
本実施形態の他の態様によると、物理記憶ユニットは、固体メモリデバイスを含む。
【００１５】
本実施形態の他の態様によると、記憶アクセラレータは、データキャッシュ構造を有する。
【００１６】
本実施形態の他の態様によると、記憶アクセラレータと通信を行うフィルタドライバが設けられる。
【００１７】
本実施形態の他の態様によると、ソフトウェアモジュールはフィルタドライバ上に設けられ、フィルタドライバは、読み出されている、または書き込まれているファイルがエンドポイントキャッシュを行うようマークされているかどうかを判断するための命令を含む。
【００１８】
本実施形態の他の態様によると、読み出されている、または書き込まれているファイルがエンドポイントキャッシュを行うようマークされているかどうかを判断するための命令は、ファイルのメタデータ情報にアクセスするための命令を含む。
【００１９】
本実施形態の他の態様によると、フィルタドライバは、データ読み出し動作がコンピュータシステムから要求されているかどうかを判断し、要求されていれば読み出されているデータが記憶アクセラレータ上に存在するか判断し、ａ）存在すれば、記憶アクセラレータからのデータ読み出し動作を実行し、ｂ）存在しなければ、中央記憶システムからデータを要求し、データのコピーを記憶アクセラレータに提供するための命令をさらに含む。
【００２０】
本実施形態の他の態様によると、フィルタドライバは、データ書き込み動作がコンピュータシステムにより要求されているかどうかを判断し、要求されていれば、データを記憶アクセラレータに書き込むための命令をさらに含む。
【００２１】
本実施形態の他の態様によると、フィルタドライバは、データを中央記憶システムへ書き込むための命令をさらに含む。
【００２２】
本実施形態の他の態様によると、フィルタドライバは、中央記憶システムに書き込まれることになるデータをキューするための命令をさらに含む。
【００２３】
本実施形態の他の態様によると、フィルタドライバは、中央記憶システムと記憶アクセラレータとの間のデータの一貫性を維持するための命令をさらに含む。
【００２４】
本実施形態の他の態様によると、コンピュータシステムは、モバイルデバイスを含む。
【００２５】
本願発明の他の実施形態によると、データ記憶方法は、中央記憶システムを設ける段階と、ネットワークインフラストラクチャにより中央記憶システムとネットワーク通信を行う少なくとも１つのエンドポイントコンピュータシステムを設ける段階と、コンピュータシステムのＣＰＵと通信を行う記憶アクセラレータを設ける段階とを含み、記憶アクセラレータは、少なくとも１つのエンドポイントコンピュータシステムにアクセス可能な中央記憶システム上のデータのエンドポイントキャッシュを行う。
【００２６】
本実施形態の一態様によると、記憶アクセラレータは、コンピュータシステムのバスに取り付けられた物理記憶ユニットを制御するＣＰＵ上で実行される少なくとも１つのソフトウェアモジュールを有する。
【００２７】
本実施形態の他の態様によると、記憶アクセラレータは、ＣＰＵから記憶アクセラレータへのデータスループットがＣＰＵから中央記憶システムへの接続を通じたデータスループットよりも大きくなる位置に設けられる。
【００２８】
本実施形態の他の態様によると、中央記憶システムは、階層１から階層Ｎ（Ｎ≧１）を含む階層データ構造を有し、記憶アクセラレータは、中央記憶装置の階層０に対するキャッシュを有する。
【００２９】
本実施形態の他の態様によると、物理記憶ユニットは、固体メモリデバイスを含む。
【００３０】
本実施形態の他の態様によると、記憶アクセラレータは、データキャッシュ構造を有する。
【００３１】
本実施形態の他の態様によると、エンドポイントコンピュータシステムは、データ読み出し動作またはデータ書き込み動作を実行するよう適合され、方法は、読み出されている、または書き込まれているファイルがエンドポイントキャッシュを行うようマークされているかどうかを判断する段階をさらに含む。
【００３２】
本実施形態の他の態様によると、方法は、読み出されている、または書き込まれているファイルがエンドポイントキャッシュを行うようマークされているかどうか、ファイルのメタデータ情報にアクセスすることにより判断する段階をさらに含む。
【００３３】
本実施形態の他の態様によると、方法は、データ読み出し動作がコンピュータシステムから要求されているかどうかを判断し、要求されていれば、読み出されているデータが記憶アクセラレータ上に存在するか判断し、ａ）存在すれば、記憶アクセラレータからのデータ読み出し動作を実行し、ｂ）存在しなければ、中央記憶システムからデータを要求し、データのコピーを記憶アクセラレータに提供する段階をさらに含む。
【００３４】
本実施形態の他の態様によると、方法は、データ書き込み動作がコンピュータシステムにより要求されているかどうかを判断し、要求されていれば、データを記憶アクセラレータに書き込む段階をさらに含む。
【００３５】
本実施形態の他の態様によると、方法は、データを中央記憶システムへ書き込む段階をさらに含む。
【００３６】
本実施形態の他の態様によると、方法は、中央記憶システムに書き込まれることになるデータをキューする段階をさらに含む。
【００３７】
本実施形態の他の態様によると、方法は、中央記憶システムと記憶アクセラレータとの間のデータの一貫性を維持する段階をさらに含む。
【００３８】
本実施形態の他の態様によると、書き込む段階は、バッファリングされていないデータを書き込む段階を含む。
【００３９】
本実施形態の他の態様によると、データ読み出し動作がバッファリングされる。
【００４０】
本願発明の他の実施形態によると、データ記憶方法は、読み出しおよび書き込みのうち少なくとも一方のＩ／Ｏ動作を行うようアプリケーションが要求するデータの有効なオペレーティングシステムバッファリングポリシーを、オペレーティングシステムバッファへデータをアクティブに供給することにより、またはオペレーティングシステムバッファからアクティブにデータを削除することにより、透過的に変更する段階と、Ｉ／Ｏ動作に必要なオペレーティングシステムバッファキャッシュを有効化するか、または無効化する段階とを含み、オペレーティングシステムバッファへデータを供給することは、アプリケーションがオペレーティングシステムによりキャッシュされたデータを使用するよう構成することを含む。
【００４１】
本願発明の他の実施形態によると、データ記憶方法は、読み出し動作および書き込み動作の少なくとも一方を行うようアプリケーションが要求するデータをキャッシュ位置へキャッシュする段階と、読み出しおよび書き込みＩ／Ｏ動作を行うようアプリケーションから要求されたことに応じてデータの有効なバッファリングポリシーを透過的に変更する段階とを含み、有効なバッファリングポリシーを変更する段階は、アプリケーションが要求するデータの少なくとも一部を、キャッシュ位置でバッファリングする段階を含む。
【００４２】
本実施形態の一態様によると、上述したキャッシュ位置は、本明細書で説明するエンドポイントキャッシュである。
【図面の簡単な説明】
【００４３】
例示を目的とし、添付の図面を参照し実施形態について説明する。
【図１】図１は、従来技術における、ネットワークを通じ中央記憶装置とアクセスするコンピュータシステムの一般的な構成を示す。
【図２】図２は、図１のシステムのデータ転送速度を模式的に示す。
【図３】図３は、従来技術の、図１のシステムに適用される記憶アクセラレータの構成を示す。
【図４】図４は、本願発明に係るシステムの一実施形態を模式的に示す。
【図５】図５は、図３のシステムのネットワークにかかる負荷を示す。
【図６】図６は、図４のシステムのネットワークにかかる負荷を示す。
【図７】図７は、本願発明に係る一般的なエンドポイントコンピュータシステムを模式的に示す。
【図８】図８は、本願発明に係る方法の一実施形態を示すフローチャートである。
【発明を実施するための形態】
【００４４】
図１に示すように、本願発明により改善が可能となる一般的なコンピューティングインフラストラクチャは、コンピュータ１０１か、若しくはネットワークリンク１０２によって中央の、または共有の記憶装置１０３へと接続された複数のコンピュータである。コンピュータ１０１は、図７に示す一般的なコンピュータシステム２０であるのが好ましい。コンピュータシステム２０は多数の物理コンポーネントおよび論理コンポーネントを含む。それら物理コンポーネントおよび論理コンポーネントには、中央演算処理装置（「ＣＰＵ」）２４、ランダムアクセスメモリ（「ＲＡＭ」）２８、入出力（「Ｉ／Ｏ」）インタフェース３２、ネットワークインタフェース３６、不揮発性記憶装置４０、およびＣＰＵ２４が他のコンポーネントと通信を行うことを可能にするローカルバス４４が含まれる。ＣＰＵ２４は、オペレーティングシステムおよび多数のソフトウェアシステムを実行する。ＲＡＭ２８は、比較的反応の速い揮発性記憶装置をＣＰＵ２４に対し提供する。Ｉ／Ｏインタフェース３２は、キーボード、マウスなど１以上のデバイスから入力を受け付けることを可能とし、ディスプレイおよび／またはスピーカなどの出力デバイスへ情報を出力する。ネットワークインタフェース３６は、図１の記憶装置１０３を含む、他のシステムとの通信を可能とする。不揮発性記憶装置４０は、オペレーティングシステムおよびプログラムを格納する。コンピュータシステム２０の動作の間、オペレーティングシステム、プログラムおよびデータが不揮発性記憶装置４０から取り出され、ＲＡＭ２８に格納されることにより、処理を実行する速度が速くなる。
【００４５】
図２は、中央記憶装置２１０とネットワーク２０９で通信を行うコンピュータシステム２０１の模式図である。示されるコンピュータシステムは、ＣＰＵ２０４と通信リンク２０３を介し通信接続するネットワークインタフェース２０２を含む。ＣＰＵ２０４は、ディスクインタフェースと通信リンク２０５を介し通信接続する。ディスクインタフェースは、ローカルコンピュータ記憶ディスクとリンク２０８を介し通信を行う。通信リンク２０３、２０５、２０７は、コンピュータシステム２０３の各要素間の通信手段として、当技術分野で一般的に公知である。示されるように、各要素間のデータ転送速度は、例えば、ネットワークインタフェース２０２とＣＰＵ２０４との間で３２〜１２８ギガビット／秒、ＣＰＵ２０４とディスクインタフェース２０６との間で３２〜１２８ギガビット／秒、およびディスクインタフェース２０６とディスク２０８との間で３〜６ギガビット／秒などと異なり得る。それ自体がコンピュータシステムであってもよい記憶装置２１０は、それぞれ通信リンク２１２、２１４、２１６を介し接続され、対応して動作するネットワークインタフェース２１１、ＣＰＵ２１３、ディスクインタフェース２１５、およびディスク２１７を含む。ネットワーク２０９は、コンピュータシステム２０１と中央記憶装置２１０との間に存在する。物理的な制限およびソフトウェアによる制限によってネットワーク通信の速度には現在のところ、０．１〜１０ギガビット／秒という限界がある。理解いただけるようにコンピュータシステム２０１および記憶システム２１０内には、ＣＰＵに近い位置から始まる極めて高い性能からＣＰＵから離れた比較的低い性能まで、実行能力には階層が存在する。しかしながら、一般的に最も遅い接続は、コンピュータと記憶システムとの間のネットワーク接続である。
【００４６】
マルチコンピュータネットワーク内に関しても、異なる複数のコンピュータと中央記憶装置との間の複数のデータの流れをサポートするインフラストラクチャが共有されることに起因して、実行能力の階層が存在する。この文脈において、および応用を目的とし、エンドポイントは、中央記憶装置からのデータの最終的な受取デバイスである各コンピュータシステムとして定義する。本願発明は、中央記憶装置からエンドポイントコンピュータシステムへのデータ転送における、ネットワークインフラストラクチャに内在する制限を踏まえた上での、これらのエンドポイントへのデータの送達の改善に関する。
【００４７】
図３は、データ転送の効率を改善しようとした従来技術による解決方法を示す。当該方法は、ネットワーク３０２と記憶装置３０４との間にアクセラレータ３０３を配置し、コンピュータシステム３０１へ転送するべくネットワーク３０２内にデータが入り込む前に、記憶装置３０４におけるネットワーク性能が記憶装置３０４の性能と一致するよう構成することを含む。アクセラレータ３０３があるタイプのキャッシュモジュールまたは階層化モジュールである場合、アクセラレータ３０３は階層０記憶層と呼ぶことが出来る。ここで記憶システムはそれ自体が、予め存在する記憶層、階層１、階層２、・・・階層ｎを含む。
【００４８】
図４に示すように、本願発明において、アクセラレータ４０２上の階層０記憶層は、コンピュータシステム４０１から見てネットワーク上の遠端に位置している状態から、コンピュータシステム４０１に対してローカルな状態へと移動しており、ここで、コンピュータシステム４０１のＣＰＵとアクセラレータ４０２上の階層０記憶層との間の性能は、図３の従来技術による解決方法よりもはるかに高くすることが出来る。したがって、エンドポイントキャッシュという用語が用いられるのは、階層０が、データが持続して存在するコンピュータと階層１（または階層Ｎ）との間の中間ではなく、記憶フローのエンドポイントにあるからである。さらに、本開示において、キャッシュおよび階層化といった用語は、一般的に互換的に用いられる。なぜなら、キャッシュとは階層化の特定のサブセットであり、データを隣の階層へ移動させるという決定は、「必要であれば」などの他の階層化ポリシーではなく、「可能な限り迅速に」行われ、特定の階層Ｎは、当該階層上のデータが他の場合においては（若しくは、階層化のタイプによっては、追加的に）いずれかの階層Ｍ（Ｍ＞Ｎ）上に存在するはずであるという意味において、キャッシュとして見なすことが出来るからである。
【００４９】
本明細書で説明される本願発明は、以下の説明から理解いただけるように、従来技術による解決方法とは異なる。従来技術と異なる点は、ａ）本願発明がファイルアクセスに基づいており、アクセスコンテキストが利用可能であるので、エンドポイントキャッシュが選択的にデータをキャッシュすることを可能とし、よって、それ程区別を行わない他の解決方法よりもさらに効率化を可能とする、細かく適合された対応するポリシーをサポートすることが出来るという点、および、（ｂ）本願発明はファイルアクセスに基づいており、よってコンテキストに応じて、全てが同様である（ブロックベースのシステムのように）か、またはファイルのコンテンツに従って異なる（コンテキストセンシティブ）か、またはアプリケーションの要求に従って異なるデータの塊で動作を行うか、１以上の方式で処理を行うか、を選択することが出来る点、（ｃ）本願発明は、既存のファイルシステムのエンドユーザにとって完全に透過的である点、および（ｄ）本願発明はアグノスティックであり、動作を行う際にファイルシステムの実装方法を変更する必要がないという点である。
【００５０】
特に、本願発明に係るエンドポイントキャッシュは、多くのコンピュータシステムがＲＡＭ内に格納する、従来の「バッファキャッシュ」とは異なる。なぜなら、（ａ）本願発明のエンドポイントキャッシュ内のデータは、ＣＰＵから独立して、またバッファキャッシュが揮発性であるのとは対照的に、キャッシュ管理処理によってクリーニング（ｃｌｅａｎ）され（新たに書き込まれたデータを階層１にフラッシュする（ｆｌｕｓｈ）し）、削除するまで、ローカル階層０レベルに格納され、（ｂ）エンドポイントキャッシュが、従来のバッファキャッシュで採用する（例えば、先読み（ｒｅａｄ−ａｈｅａｄ）または分岐予測（ｂｒａｎｃｈ  ｐｒｅｄｉｃｔｉｏｎ）など）統計に基づいた予測的なアプローチとは反対に、先見性（ｆｏｒｅｓｉｇｈｔ）（内部的なまたは外部的な知識に基づくプリエンプティブキャッシュ、または先取り（ｐｒｅｆｅｔｃｈ））を用いるからである。
【００５１】
本願発明に係るエンドポイントキャッシュは、従来技術のキャッシュネットワークファイルシステムとは異なる。なぜなら、（ａ）本願発明は、リモート記憶システムについては（例えば、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ（登録商標）のＣａｃｈｅＦＳとは異なり、）アグノスティックであり、（ｂ）本願発明は、リモート記憶システムで用いられるプロトコルについては（例えば、ＣｏｄａおよびＩｎｔｅｒｍｅｚｚｏとして知られる解決方法とは異なり）アグノスティックであり、（ｃ）本願発明は、コンピュータが通常どのように記憶装置を利用するかについて透過的であるからである（ＴｓｕｍｕＦＳまたはｘＣａｃｈｅｆｓなどの多くのシステムはリモート記憶システムのタイプからは独立しているが、これらは特別なやり方でリモート記憶装置を搭載する必要があるので透過的ではない）。
【００５２】
本願発明を実施する、様々な非限定的な例を説明する。以下の説明は、ネットワークと通信を行う単一のコンピュータ上の単一のエンドポイントキャッシュに関するが、本願発明は、ネットワークにアクセスする任意の数のコンピュータに同等に適用することが可能である。さらに、２以上のコンピュータシステムが単一のエンドポイントを形成することも考えられており、よって、システム全体におけるエンドポイントとして構成される１以上のコンピュータに対し１つのエンドポイントキャッシュが提供されてもよい。
【００５３】
エンドポイントキャッシュを実装すべく、エンドポイントのコンピュータシステムは、リモート記憶装置が変化を意識することなくローカル階層０に透過的にアクセスするようプログラムされている。階層０は本質的にキャッシュであるので、コンピュータとリモート記憶装置との間の（階層１方向への）ネットワークの性能要件は、低くなる。なぜなら、時間と関連付けられプリフェッチされたＩ／Ｏは、ローカル階層０キャッシュから優先的に処理され、よって、階層０キャッシュが階層１記憶層を更新するのに必要なネットワークトラフィックは、コンピュータがリモートの階層０または階層１へ直接アクセスするよりも少なくても済む（よって、個別のエンドポイントおよびネットワークインフラストラクチャ全体としてのネットワーク性能も低くて済む）。つまり、エンドポイントアクセラレータにより実装される階層０キャッシュは、ネットワークから一定量の負荷を取り除き、かつエンドポイントコンピュータシステムのＣＰＵと通信を行うことが出来る。この差異は、図５および６に示されている。図５は、コンピュータシステム５０１が、全体的にネットワーク５０２にかかり、中央記憶装置５０３においても負荷Ｌとして処理される与えられた負荷Ｌを有する、従来技術のシステムを示す。図６は、コンピュータシステム６０１が与えられた負荷Ｌを有する本願発明の実施形態を示す。アクセラレータ６０２上で実装される階層０キャッシュにかかる負荷は、ＨＲだけ軽減される。ここでＨＲは０より大きく、１より小さい。したがって、ネットワーク６０３は、負荷Ｌ（１−ＨＲ）を有し、この負荷は、中央記憶装置６０４が処理する負荷でもある。同様に、中央記憶装置６０４上の階層１記憶層の性能要件は、低くなる。なぜなら、ここで階層１記憶層は、階層０記憶層がなかった場合にコンピュータによって生じるピーク負荷要件ではなく、キャッシュを行ったうえで示される平均負荷要件を処理すればよいからである。
【００５４】
よって、本願発明は、コンピューティングインフラストラクチャの経済的な効率性に繋がる技術的な解決方法を提供する。
【００５５】
ウィンドウズ（登録商標）のオペレーティングシステムで本願発明を実装するにあたり、また、図８を参照すると、本願発明の実装においては、フィルタドライバを作成し、ファイルシステム入出力動作の全ての通信経路となるフィルタスタックにフィルタドライバを設けることを含む。フィルタドライバは、ファイルがエンドポイントキャッシュを行うようマークされているかどうかを判断する段階８０５を含む本願発明の実施形態に係る方法を実施するようプログラムされているか、または適合されている。このことは、ファイルが、エンドポイントキャッシュを行うようマークされたことを示すヘッダまたは他の記述子情報を含むかどうかを判断するよう構成されたコンテキストパターンまたはポリシーと、ファイルのコンテキストを一致されることにより、行うことが出来る。これは、各ファイルが開かれたときに実行するのが好ましい。段階８１０において、ファイル記述子が、当該ファイルがエンドポイントキャッシュを行うようマークされていることを示すのであり、フィルタドライバが読み出し動作を認識すれば、要求されたデータがアクセラレータ上の階層０キャッシュに存在するかどうかの確認が行われ、行われているのであれば、階層０キャッシュからの読み出しが実行される。要求されたデータが階層０キャッシュ上に見つからなければ、データがソースの位置（つまり中央記憶装置）から取り出され、読み出しが実行される。また、階層０キャッシュはデータのコピーの受信および格納を行う。代替的に、フィルタドライバが書き込み動作を認識すれば、段階８１５において、階層０キャッシュが新たに書き込まれるデータにより更新され、また、当該データが中央記憶装置のソース位置に即座に書き込まれる。代替的に、書き込み動作を遅れて行うことも可能であり、ここで階層０キャッシュには即座に新たなデータが書き込まれ、中央記憶装置へ当該データを書き込む動作がキューに入れられる。このことにより、ネットワークに対する負荷をモニタリングおよび制御することができ、優先度の高いデータがネットワーク上での転送において高い優先度を与えられる。
【００５６】
段階８２０において、データの一貫性を維持するべく、必要であれば他の動作のインターセプトを行う。例えば、ソースファイルシステムの変更が、階層０キャッシュ内で対応する変更としてマッピングされる必要があり、または、ファイルネームによりキャッシュがキーされていた場合、適切な名前の変更動作がこの段階で行われる。この段階でインターセプトされ処理される他の例としては、ファイルの削除動作、ファイル属性の変更などが含まれる。
【００５７】
段階８３０において、キャッシュ管理機能またはキャッシュ管理モジュールが提供され、階層０キャッシュに空きスペースがない場合、必要に応じて階層０キャッシュのスペースを使えるようにする。この空きスペースを作り出す処理の間に階層０キャッシュからパージされるデータは、キャッシュ管理機能にプログラムされたポリシーに基づいてよい。例えば、最も古いデータ、最もアクセス頻度の低いデータ、最も優先度の低いデータ（例えば、定義されるようにユーザファイル対システムファイル）のうちのいずれか１つ、または、本願発明の特定の実施形態に応じて決定される他の任意のデータポリシーに基づいて処理が行われる。
【００５８】
段階８４０において、ソースファイルへの適切なアクセスを可能にするソースファイルへのアクセスメカニズムが、オペレーティングシステムカーネルの内部または外部で協働して行われる処理を用いて提供される。リモートのソースファイルに関しては、この機能は、カーネルの外部で提供される。ソースファイルは上述したように、階層０キャッシュ上または中央記憶装置上に存在し得うるが、このメカニズムにより、ＣＰＵは常に、エンドポイントキャッシュを行うようマークされたファイルの通信処理を、階層０キャッシュを通じてルーティングする。
【００５９】
上述した本願発明の実施形態は、公知のキャッシュ技術および処理を用いるが、それらを新規かつ自明でないやり方で適用する。例えば、ＣＰＵがアクセラレータおよび階層０と通信を行う方法および処理は詳細には説明しない。さらに、本願発明を実施するこれらのキャッシュ技術および処理は公知であるかもしれないが、ネットワークへの負荷が大幅に軽減されること、階層０キャッシュがエンドポイントのＣＰＵおよびネットワークに対して透過的であること、中央記憶装置および／またはエンドポイントコンピュータシステム自体に対して完全にアグノスティックであること、といった結果は、新規のものである。本願発明に係る要素の構成により、全体的により効率的なコンピュータ／ネットワーク／記憶システムが提供される。
【００６０】
段階８０５、８１０で構成されるコンテキストパターンは、基本的なものであってもよく、階層０キャッシュ内のデータの全てのキャッシュを行い得、若しくは、洗練された特定的なものであってもよく、この場合、例えばファイルネームのパターン、アクティブなユーザ、アクティブなアプリケーション、または他の関連するポリシーにより特定される特定のタイプのファイルのみが階層０キャッシュにキャッシュされる。本願発明が実施される場合、データのフローを制御するべくそのようなコンテキストパターンが用いられ、階層０キャッシュのより細かな制御、したがって、効率的な利用が可能となる。さらに、図２に示すような記憶アクセラレータの利用のように一般的なキャッシュは当技術分野で公知であるが、本明細書で説明する階層０キャッシュの機能を実行するアクセラレータの利用は新規のものであり、自明ではなく、当技術分野では公知となっていない、本明細書で述べられるようなかつては予期できなかった結果がもたらされる。
【００６１】
特にエンドポイントキャッシュが、（エンドポイントにとって）ローカルな、高速で処理を行うことが出来る記憶装置と行う場合において、本願発明を実施する様々な他の方法、または様々な段階を考え付くことが可能である。例えば、２０１１年８月２４日にＺａｃｈａｒｉａｓｓｅｎらにより出願された同時係属出願であるＰＣＴ国際出願番号ＰＣＴ／ＣＡ２０１１／０５０５１４に説明されるようなファイルシステムエクステンションを用いることが出来る。当該特許出願は、本明細書に参照により組み込まれる。そのようなファイルシステムエクステンションを用いることにより、ローカル記憶装置上のファイルシステムを拡張することが出来、ローカル記憶装置で用いられる特定のファイルシステムとは独立して、階層０キャッシュの記憶媒体上にデータを格納することが出来る。よって、本願発明に係るアクセラレータ上の階層０キャッシュは、アクセラレータ上が動作するコンピュータシステムにとってローカルなファイルシステムの一部であるように見え、階層０キャッシュとローカル記憶装置との間の通信は、完全に透過的なものとなる。
【００６２】
既存のファイルシステムが本質的に階層０キャッシュの機能性を提供するように変更を加えることも考えられる。このことは、フィルタドライバに関して上記で説明したのと同様なやり方で達成することが可能であるが、フィルタドライバなしでファイルシステムの機能を拡張することにより実施が可能である。なお、本願発明を実施するべくファイルシステムの機能を拡張する一方、階層０キャッシュは、典型的なローカルなコンピュータキャッシュとは区別して異なるように動作し、ここで、キャッシュされるデータは、ネットワークおよび中央記憶装置ユニットから離れた側において読み出し／書き込み動作を行うことが意図されているデータである。この動作は、一般的にコンピュータシステムのＲＡＭによって迅速にアクセスされることが意図されるデータをキャッシュするよう処理する、ローカルなコンピュータキャッシュとは異なる。一変形例において、既存のファイルシステム上での階層０キャッシュの機能性を可能にする目的で利用可能なオペレーティングシステムファシリティを用いるスタック可能なファイルシステムが提供される。既存のファイルシステム上で非協働的にスタックされるスタンドアロン型ファイルシステムも用いることが出来る。
【００６３】
レイテンシーを最小限にすることが重要である環境においては、本願発明を、必要とされるオペレーティングシステムカーネルの利用を最小化するやり方で実施することも考えられる。このことは、各アプリケーションと関連付けられる記憶アクセラレーション機能の部分と、当該アプリケーションが実行されるハードウェア（またはバーチャルなハードウェア）で実行される部分とを提供することにより実施することが出来る。このことを達成するべく、特定のアプリケーションにより実行されるＩ／Ｏ動作は、それらがカーネルに入る前にインターセプトされなければならなく、ファイルまたはＩ／Ｏがエンドポイントキャッシュを行うようマークされている場合、当該Ｉ／Ｏ動作を当該カーネルを直接的に通る、または当該カーネルの近くを通るソフトウェアモジュール、例えばダイレクトブロックアクセス（直接的に通る）またはメモリマッピングアクセス（近くを通る）などでリダイレクトする。これらのアクセス方法は、関連する記憶アクセラレーション装置が、各アプリケーションに関連付けられた部分と協働して、本明細書で説明する本願発明に係る階層０および記憶アクセラレーションの機能性を完全に提供するプロトコルＡＰＩ（プログラム可能ＡＰＩではなく）を提供する必要がある。このことは、ユーザレベルでＩ／Ｏ動作をインターセプトするのに用いられる方法が透過的なやり方であるので、アプリケーションに対し透過的なものであり得る。そのような方法の１つにおいては、全てのアプリケーションにより用いられる、動的に負荷を受けるシステムコールライブラリを、本願発明により求められるインターセプト、ポリシーおよび協働的な機能を実装するバージョンへと（追加されたカーネルのアシストを通じて）リダイレクトすることを伴う。メモリをマッピングするインタフェースを用いるカーネルを避ける実施形態において、コンテキストスイッチング、カーネルＩＯマネージメント、ファイルシステム処理、フィルタ、および全てのＩ／Ｏ動作に用いられるデバイスドライバスタックに伴うリソースおよび時間を省略でき、レイテンシーの影響を緩和することが出来る。
【００６４】
さらに、オペレーティングシステムバッファキャッシュメカニズムに対し、階層０キャッシュが設けられる利用可能なＲＡＭに加え、ローカルな高速で処理を行う記憶装置を用いるように変更を加えてよい。
【００６５】
一変形例において、ＮＦＳまたＣＩＦＳなどのリモート記憶装置ドライバ、またはリモートブロックデバイスドライバに対し、上述したように階層０キャッシュを通じたデータのポリシールーティングを適用するよう変更を加えてもよい。そのような変更は、当業者にとっては本明細書から明白である。
【００６６】
本明細書で説明するように、ロジカルボリュームドライバを作成または変更し、リアルなブロックデバイスからバーチャルなブロックデバイスを作成し、階層０キャッシュを提供してもよい。ファイルシステムに既に組み込まれたファシリティを用い、コンピュータシステム上でローカルにファイルをキャッシュすることにより、この処理を補足してもよい。ブロック記憶ドライバと協働してコンテキスト情報をブロックベースのキャッシュシステムへ提供するファイルシステムまたはフィルタドライバを用いてもよい。
【００６７】
代替的に、リモート中央記憶システムは、記憶プロトコルがリファレンス（ｒｅｆｅｒｅｎｃｉｎｇ）を許可するのであれば、ローカル階層０キャッシュ記憶に関する制御または情報を管理してもよい。本実施形態において、階層０キャッシュに関する何らかの制御は、中央記憶装置により行われる。しかし、上述したようなポリシーまたはコンテキストに関するルールを管理する責任は、エンドポイントのＣＰＵで管理されるのが好ましい。
【００６８】
既存のファイルに対して透過的にエンドポイントキャッシュ機能を提供する従来技術は存在しない。ＮＦＳまたはＣＩＦＳなどの一般的なリモートファイルシステムは、中央記憶装置のローカルかつ持続的なキャッシュを用いず、さらに、本明細書で説明する本願発明を実施する機能およびそのような示唆を含んではいない。いくつかのクラウド記憶サービスへのファイルシステムのインタフェース（またはオブジェクト記憶）においては、持続的かつローカルなキャッシュが用いられるが（例えば、Ｄｒｏｐｂｏｘ（登録商標）など）、既存のファイルと透過的に協働するのとは反対に、独立したファイルシステムまたは特別な同期化したディレクトリとして提示する。既存のファイルと透過的に協働する機能は、ネットワークにおいてリモート記憶装置自体から下流にあり、エンドポイントのＣＰＵと通信を行う、リモート記憶装置の階層１から階層Ｎ（Ｎ≧１）を有するリモート中央記憶装置の階層０キャッシュによってのみ提供される。
【００６９】
好ましい実施形態は、特にウィンドウズ（登録商標）のオペレーティングシステムのコンテキストにおいて適用されているが、Ｌｉｎｕｘ（登録商標）およびＵｎｉｘ（登録商標）など他のオペレーティングシステム環境を含む他のコンテキスト、および当然ながら従来のファイルシステムをエンドユーザに示さないモバイルシステムのコンテキストなどにおいても同じ一般的な方法を適用することが出来る。
【００７０】
本願発明のいくつかの変形例において、リモートファイルシステムプロトコルに関して当てはまり、典型的にはブロックデバイスに関しては当てはまらないように、リモート記憶システムが共有される。本変形例において、エンドポイントキャッシュの機能は、複数の独立したクライアント間でキャッシュの一貫性を維持するよう適合される。リモートファイルシステムプロトコルはクライアント間での一貫性を維持する必要があるので、通常、この状況に対応する。この場合において、リモートの中央記憶装置が複数のリモート記憶装置で構成されており、また代替例においては、多数のエンドポイントコンピュータシステムがデータをリモート記憶装置へ書き込んでおり、ここでデータ自体が２つ以上のエンドポイントコンピュータシステムの間で共有される。データのリース（ｌｅａｓｅ）または取り消し可能な（ｒｅｖｏｃａｂｌｅ）ロックは、一般的にそのような一貫性を確保するべく用いられており、エンドポイントキャッシュアクセラレータまたは階層０は、キャッシュのセマンティックを維持するべくデータを適切にフラッシュすることにより（つまり、完全に削除するか書き込むことにより）、データへの排他的なアクセス権を無効にするプロトコルメッセージと協働しなければならない。好ましい実施形態において、ソースファイルへのアクセスを提供する処理に対し、そのような無効化が知らされるように構成され、適切な動作が行われる。
【００７１】
本願発明の１つの追加的な効果は、リモート記憶システムが利用不可能であるか、若しくはネットワークから切断されている際に現れる。この状況において、構成可能なポリシー制御が実行され、エンドポイントキャッシュの動作を制御する。デフォルトの動作は、例えば、可能であれば階層０キャッシュからの読み出し動作が実行され、若しくは失敗に終わり、階層０キャッシュにおいて書き込み動作が実行され、中央記憶装置へ後に書き込むべくキューに入れられる。続いて、他のシステムからのコンフリクトする書き込み動作が同時に発生した場合、コンフリクトする処理を解決する方法が必要となる。
【００７２】
本願発明の一変形例において、アプリケーションが使用する有効なＩ／Ｏバッファリングポリシーが透過的に変更される。現在用いられているオペレーティングシステム上で動作するアプリケーションは一般的に、バッファリングされたＩ／ＯとバッファリングされていないＩ／Ｏとの間で選択を行う。バッファリングされたＩ／Ｏとは、アプリケーションが要求するＩ／Ｏ動作がオペレーティングシステムカーネル内のキャッシュマネージャを通り、読み出し動作に関しては、カーネルバッファキャッシュ内の要求されたデータをルックアップし、書き込み動作に関しては、提供されたデータをカーネルバッファキャッシュに書き込み、カーネルは、Ｉ／Ｏの実際のターゲットの更新を（主記憶装置のいずれかの位置において）担当することを意味する。バッファリングされていないＩ／Ｏとは、上述したようにアプリケーションにより要求されたＩ／Ｏ動作がキャッシュマネージャを通らず、代わりに、リアルタイムで、主記憶装置上のＩ／Ｏのターゲットからデータを読み出し、または当該ターゲットへデータを書き込むことを意味する。この実施形態の変形例では、物理的な位置への書き込みが単にキューに入れられるのではなく、データが、書き込みの成功がアプリケーションに報告される前に、当該データを表す物理的な位置へ実際に確実に書き込まれるようにする。本願発明の本変形例は、読み出しおよび書き込みのうち少なくとも一方のＩ／Ｏ動作を行うようアプリケーションが要求するデータの有効なオペレーティングシステムバッファリングポリシーを、データをオペレーティングシステムバッファへアクティブに供給することにより、またはオペレーティングシステムバッファからアクティブにデータを削除することにより、透過的に変更する段階と、Ｉ／Ｏ動作に必要なオペレーティングシステムバッファキャッシュを有効化するか、または無効化する段階とを含み、オペレーティングシステムバッファへデータを供給する段階は、アプリケーションがオペレーティングシステムによりキャッシュされたデータを使用するよう構成する段階を含む。
【００７３】
本願発明は、各Ｉ／Ｏタイプのバッファリングを独立して制御することにより、このシナリオに適用することが可能である。例えば、読み出し動作がバッファリングされる一方で書き込み動作がバッファリングされない。一例として、通常ではバッファリングされていないＩ／Ｏ動作により動作するデータベースが現実には、動作セマンティックに変更を加えることなく、バッファリングされた読み出し動作およびバッファリングされていない書き込み動作を行うことが出来る。Ｉ／Ｏを要求するアプリケーションに対し外部で、かつ当該アプリケーションに対して透過的にＩ／Ｏ動作のバッファリングを制御する単純な方法の１つは、本願発明に係る記憶アクセラレータ機能の完全な制御下にある階層０キャッシュ記憶においてデータのバッファリングを制御することである。このことは、このように動作するように外部からのポリシーによって設定することが出来る、２０１１年８月２４日にＺａｃｈａｒｉａｓｓｅｎらにより出願された同時係属出願であるＰＣＴ国際出願番号ＰＣＴ／ＣＡ２０１１／０５０５１５に説明されるようなインターセプトキャッシュモジュールにより達成することが出来る。当該特許出願は、本明細書に参照により組み込まれる。当該ＰＣＴ出願のインターセプトキャッシュモジュールは、３つの方法によりアプリケーションキャッシュを制御することが出来る。それら３つの方法とは、特定のタイプのバッファリングを要求するアプリケーションからのファイルオープンパラメータをインターセプトし、それらを適切に変更すること、および／または、階層０キャッシュ上に保持されるデータのバッファリングを変更すること、および／または、オペレーティングシステムキャッシュマネージャへのクエリー、および当該マネジャーからの要求をインターセプトすること、である。このようにして、エンドポイントキャッシュは、本願発明を用いない場合であればネットワークを横切ってリモート記憶装置まで到達しなければならないＩ／Ｏに対して、エンドポイントコンピュータシステム内でマルチレベルのキャッシュを行うことが出来る。
【００７４】
上述した実施形態は本願発明の例として用いられており、当業者であれば、以下の請求項によってのみ定められる本願発明の態様から逸脱することなく、変更および修正を加えることが可能である。
【図１】
2013541788.tif 000003
【図２】
2013541788.tif 000004
【図３】
2013541788.tif 000005
【図４】
2013541788.tif 000006
【図５】
2013541788.tif 000007
【図６】
2013541788.tif 000008
【図７】
2013541788.tif 000009
【図８】
2013541788.tif 000010
【国際調査報告】
2013541788.tif 000011
2013541788.tif 000012
2013541788.tif 000013