特許第6974009号(P6974009)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 三星電子株式会社の特許一覧

特許6974009キーバリューシステムにおける格納装置への高速キャッシュアクセス方法及びシステム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6974009
(24)【登録日】2021年11月8日
(45)【発行日】2021年12月1日
(54)【発明の名称】キーバリューシステムにおける格納装置への高速キャッシュアクセス方法及びシステム
(51)【国際特許分類】
   G06F 16/172 20190101AFI20211118BHJP
   G06F 3/06 20060101ALI20211118BHJP
   G06F 16/28 20190101ALI20211118BHJP
【FI】
   G06F16/172
   G06F3/06 302A
   G06F16/28
【請求項の数】20
【全頁数】42
(21)【出願番号】特願2017-20161(P2017-20161)
(22)【出願日】2017年2月7日
(65)【公開番号】特開2017-151974(P2017-151974A)
(43)【公開日】2017年8月31日
【審査請求日】2020年1月14日
(31)【優先権主張番号】62/298,987
(32)【優先日】2016年2月23日
(33)【優先権主張国】US
(31)【優先権主張番号】15/143,504
(32)【優先日】2016年4月29日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
(74)【代理人】
【識別番号】110000051
【氏名又は名称】特許業務法人共生国際特許事務所
(72)【発明者】
【氏名】シンハ, ヴィカス
(72)【発明者】
【氏名】ガズ, ツヴィ
(72)【発明者】
【氏名】林 銘
【審査官】 鹿野 博嗣
(56)【参考文献】
【文献】 特開2015−153014(JP,A)
【文献】 特開2014−048741(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/172
G06F 3/06
G06F 16/28
(57)【特許請求の範囲】
【請求項1】
キーバリューシステムにおける格納装置へのキャッシュアクセスシステムであって、
コンピュータと、
前記コンピュータ内のプロセッサと、
前記コンピュータ内のメモリと、
前記メモリに格納されて前記プロセッサ上で動作し、ページキャッシュを含むファイルシステムと、
前記メモリに格納されて前記プロセッサ上で動作するキーバリューファイルシステム(KVFS)と、
前記メモリに格納されて前記プロセッサ上で動作するKVFSシムと、を備え、
前記KVFSは、
ファイルを識別するファイル名称を含むファイルシステムコマンドを前記ファイルシステムから受信する受信ユニットと、
前記ファイルシステムコマンドをキーバリューシステムコマンドにマッピングするマッピングユニットと、
前記キーバリューシステムコマンドを前記格納装置に伝送するコマンドユニットと、
前記キーバリューシステムコマンドの結果を前記ファイルシステムに返還する返還ユニットと、を含み、
前記KVFSシムは、
客体の名称を含む第2キーバリューシステムコマンドをアプリケーションから受信する第2受信ユニットと、
前記第2キーバリューシステムコマンドを前記ファイルシステムコマンドにマッピングする第2マッピングユニットと、
前記ファイルシステムコマンドを前記ファイルシステムに伝送する第2コマンドユニットと、を含むことを特徴とするシステム。
【請求項2】
前記格納装置は、前記ファイルに対するメタデータ客体及びデータ客体を格納することを特徴とする請求項1に記載のシステム。
【請求項3】
前記KVFSシムは、前記ファイルに対応するファイルディスクリプタを格納するファイルディスクリプタルックアップテーブルを更に含むことを特徴とする請求項に記載のシステム。
【請求項4】
前記第2コマンドユニットは、前記ファイルシステムに前記ファイルディスクリプタ及び前記ファイルシステムコマンドを伝送するように動作することを特徴とする請求項に記載のシステム。
【請求項5】
前記KVFSシムは、前記客体名称から前記ファイル名称を生成する名称生成ユニットを更に含むことを特徴とする請求項に記載のシステム。
【請求項6】
前記KVFSは、KVFSキャッシュを更に含むことを特徴とする請求項1に記載のシステム。
【請求項7】
前記KVFSキャッシュは、前記格納装置からの客体に対するデータのコピーを格納するように動作することを特徴とする請求項に記載のシステム。
【請求項8】
前記返還ユニットは、前記ファイルシステムに前記KVFSキャッシュに格納された前記客体に対する前記データの一部のみを返還するように動作することを特徴とする請求項に記載のシステム。
【請求項9】
前記KVFSは、前記格納装置からの客体に対するメタデータを格納するアイノードを更に含むことを特徴とする請求項1に記載のシステム。
【請求項10】
前記客体に対するデータを格納する前記ページキャッシュの少なくとも一部、及び前記客体に対するデータを要請する前記ファイルシステムコマンドに基づいて、前記ファイルシステムは、前記ファイルシステムコマンドを前記KVFSに伝送することなく、前記ページキャッシュから前記客体に対するデータを変換することを特徴とする請求項1に記載のシステム。
【請求項11】
キーバリューシステムにおける格納装置へのキャッシュアクセスシステムの動作方法であって、
前記キャッシュアクセスシステムは、コンピュータ内のメモリに格納されてプロセッサ上で動作するファイルシステム、キーバリューファイルシステム(KVFS)、及びKVFSシムを備え、
前記方法は、前記KVFSによって、
ファイルを識別するファイルの名称を含むファイルシステムコマンドを前記ファイルシステムから受信する段階と、
前記ファイルにする情報を格納しているアイノードにアクセスする段階と、

前記アイノードから前記格納装置に格納されたデータ客体を識別するための客体名称を識別する段階と、
前記ファイルシステムコマンドをキーバリューシステムコマンドにマッピングする段階と、
前記KVFSに含まれるKVFSキャッシュの客体に対してキーバリューシステムコマンドを遂行する段階と、
前記キーバリューシステムコマンドを前記格納装置に伝送する段階と、
前記格納装置から受信した前記キーバリューシステムコマンドの結果を前記ファイルシステムに返還する段階と、を有し、
前記方法は、前記KVFSシムによって、
客体の名称を含む第2キーバリューシステムコマンドをアプリケーションから受信する段階と、
前記第2キーバリューシステムコマンドを前記ファイルシステムコマンドにマッピングする段階と、
前記ファイルシステムコマンドを前記ファイルシステムに伝送する段階と、を更に有することを特徴とする方法。
【請求項12】
前記KVFSキャッシュの客体に対してキーバリューシステムコマンドを遂行する段階は、
前記KVFSキャッシュで前記客体名称を検索する段階と、
前記客体名称と共に前記客体が前記KVFSキャッシュに存在する場合、前記KVFSキャッシュの客体に対するコマンドを遂行する段階と、を含むことを特徴とする請求項11に記載の方法。
【請求項13】
前記KVFSキャッシュの客体に対してキーバリューシステムコマンドを遂行する段階は、
前記客体名称が前記KVFSキャッシュに存在しない場合、前記ファイルシステムコマンドをキーバリューシステムコマンドにマッピングする段階と、
前記客体名称と共に前記客体に対する前記キーバリューシステムコマンドを前記格納装置に伝送する段階と、
前記格納装置から前記客体を受信する段階と、
前記客体を前記KVFSキャッシュに格納する段階と、を含むことを特徴とする請求項12に記載の方法。
【請求項14】
前記キーバリューシステムコマンドの結果を前記ファイルシステムに返還する段階は、
前記客体に対するデータの一部のみにアクセスする段階と、
前記キーバリューシステムコマンドの結果として前記データの一部を返還する段階と、を含むことを特徴とする請求項13に記載の方法。
【請求項15】
前記ファイルに対応するアイノードが発見されない場合、前記格納装置にファイル名称によって識別されるメタデータ客体を要請する段階と、
前記格納装置から前記ファイルに対するメタデータを含む前記メタデータ客体を受信する段階と、
前記メタデータ客体から前記メタデータを取出す段階と、
前記メタデータを使用して前記アイノードを生成する段階と、を更に含むことを特徴とする請求項11に記載の方法。
【請求項16】
前記KVFSキャッシュの客体に対してキーバリューシステムコマンドを遂行する段階は、前記ファイルシステムコマンドに応答して前記アイノードを変形する段階を含むことを特徴とする請求項15に記載の方法。
【請求項17】
前記KVFSキャッシュの客体に対してキーバリューシステムコマンドを遂行する段階は、
前記格納装置からの前記メタデータ客体を削除する段階と、
前記格納装置に交替メタデータ客体を格納する段階と、を更に含むことを特徴とする請求項16に記載の方法。
【請求項18】
前記第2キーバリューシステムコマンドを前記ファイルシステムコマンドにマッピングする段階は、第2客体の名称からファイルの名称を生成する段階を含み、
前記第2客体の名称からファイルの名称を生成する段階は、前記第2客体名称にハッシュ機能を適用して前記ファイル名称を生成する段階を含むことを特徴とする請求項11に記載の方法。
【請求項19】
前記第2客体の名称にハッシュ機能を適用してファイルの名称を生成する段階は、前記ハッシュ機能によるハッシュ値のASCII表示として前記ファイルの名称を生成する段階含むことを特徴とする請求項18に記載の方法。
【請求項20】
前記ハッシュ機能によるハッシュ値のASCII表示として前記ファイル名称を生成する段階は、前記ハッシュ値のASCII表示と衝突インデックスとを組合せる段階を含むことを特徴とする請求項19に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、キーバリュー格納に関し、より詳細には、オペレーティングシステムキャッシュを使用してキーバリューシステム格納装置にアクセスするキャッシュアクセス提供方法及びシステムに関する。
【背景技術】
【0002】
既存のオペレーティングシステムは、多様な方法を具現してメモリのファイルシステムデータをキャッシングし、性能を向上させる。特に、ページキャッシュ(又はバッファキャッシュ)は頻繁にアクセスされるデータを多くキャッシングして全体的なファイルシステム性能を向上させる。ページキャッシュ自体はファイルシステムがブロック装置に存在することを要求しないが、実際にページキャッシュを活用してファイルシステムの性能を向上させる大部分の構成では、ファイルシステムがブロック装置に存在することを要求する。
【0003】
キーバリューソリッドステートドライブ(Key−value Solid State Drives)は更に良いストレージ性能を提供する最新技術である。しかし、このようなSSDで使用されるキーバリューシステムは、ブロック記号(block semantics)の代わりに客体記号(object semantics)をエクスポートして、ページキャッシュと一般的に連結されることができない。キーバリューSSDを使用することは、現在のファイルシステム全体を経由しないか(bypassing)、又はページキャッシュの長所無しにファイルシステムを使用することの中の1つを必要とする。いずれの場合にも、キーバリューSSDからのデータはオペレーティングシステムのページキャッシュ又はバッファキャッシュにキャッシングされない。
【0004】
これは、性能障壁(performance cliff)を作り、使用者プログラム自体のキャッシング方法を具現して合理的な性能を回復することを要求する。使用者プログラム内でキャッシュを具現することは使用者に対してソフトウェア開発費用及び複雑性を増加させる。更に、使用者空間キャッシングが使用される場合、他のプログラムはそれらのキャッシュを容易に共有することができず、プログラムが終了されると、全体のキャッシュコンテンツが消失される。
【0005】
キーバリューSSDを含むシステムがページキャッシュの長所を活用する方法に対する要求が存在する。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】米国特許第8,407,403号明細書
【特許文献2】米国特許第8,880,787号明細書
【特許文献3】米国特許出願公開第2013/0042060号明細書
【特許文献4】米国特許出願公開第2013/0250686号明細書
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、ファイルシステムインターフェイスを通じてキーバリューシステム格納装置にアクセスするキャッシュアクセス方法及びシステムを提供することにある。
【課題を解決するための手段】
【0008】
上記目的を達成するためになされた本発明の一態様によるキーバリューシステム格納装置へのキャッシュアクセスシステムは、コンピュータと、前記コンピュータ内のプロセッサと、前記コンピュータ内のメモリと、前記メモリに格納されて前記プロセッサ上で動作し、ページキャッシュを含むファイルシステムと、前記メモリに格納されたキーバリューファイルシステム(KVFS)と、を備え、前記KVFSは、ファイルを識別するファイル名称を含むファイルシステムコマンドを前記ファイルシステムから受信する受信ユニットと、前記ファイルシステムコマンドをキーバリューシステムコマンドにマッピングするマッピングユニットと、前記キーバリューシステムコマンドを格納装置に伝送するコマンドユニットと、前記キーバリューシステムコマンドの結果を前記ファイルシステムに返還する返還ユニットと、を含む。
【0009】
上記目的を達成するためになされた本発明の一態様によるキーバリューシステム格納装置へのキャッシュアクセス方法は、ファイルを識別するファイルシステムコマンドを受信する段階と、前記ファイルに対応するアイノードにアクセスする段階と、前記アイノードから格納装置に格納された客体を識別する客体名称を識別する段階と、キーバリューファイルシステム(KVFS)キャッシュの客体に対するコマンドを遂行する段階と、前記コマンドの結果を返還する段階と、を有する。
【0010】
上記目的を達成するためになされた本発明の他の態様によるキーバリューシステム格納装置へのキャッシュアクセス方法は、格納装置に格納された客体を識別する客体名称を受信する段階と、前記客体名称にハッシュ機能を適用してファイル名称を生成する段階と、を有する。
【発明の効果】
【0011】
本発明によれば、ファイルシステムインターフェイスを通じてキーバリューシステム格納装置への高速キャッシュアクセスを提供することができる。
【図面の簡単な説明】
【0012】
図1】本発明の一実施形態によるキーバリューシステム格納装置にアクセスする際のオペレーティングシステムのページキャッシュを使用するシステムを示す図である。
図2図1に示すコンピュータの追加的な詳細構成図である。
図3A図1に示すコンピュータの階層を通じたデータ及びコマンドの流れを示す図である。
図3B図1に示すコンピュータの階層を通じたデータ及びコマンドの流れを示す図である。
図4図1に示すキーバリューファイルシステム(KVFS:key−value file system)の詳細構成図である。
図5図1に示すKVFSシムの詳細構成図である。
図6図5に示す名称生成ユニットの詳細構成図である。
図7図5に示すファイルディスクリプタルックアップテーブルの詳細構成図である。
図8図1に示すメタデータ客体の構造の一例を示す詳細構成図である。
図9A】本発明の一実施形態による図1に示すコンピュータを使用してコマンドを処理する手続の一例を示すフローチャートである。
図9B】本発明の一実施形態による図1に示すコンピュータを使用してコマンドを処理する手続の一例を示すフローチャートである。
図9C】本発明の一実施形態による図1に示すコンピュータを使用してコマンドを処理する手続の一例を示すフローチャートである。
図9D】本発明の一実施形態による図1に示すコンピュータを使用してコマンドを処理する手続の一例を示すフローチャートである。
図9E】本発明の一実施形態による図1に示すコンピュータを使用してコマンドを処理する手続の一例を示すフローチャートである。
図10A】本発明の一実施形態による図1に示すKVFSシムの動作の手続の一例を示すフローチャートである。
図10B】本発明の一実施形態による図1に示すKVFSシムの動作の手続の一例を示すフローチャートである。
図11A】本発明の一実施形態による図1に示すKVFSの動作の手続の一例を示すフローチャートである。
図11B】本発明の一実施形態による図1に示すKVFSの動作の手続の一例を示すフローチャートである。
図12A】本発明の一実施形態による図1に示すKVFSキャッシュを使用する手続の一例を示すフローチャートである。
図12B】本発明の一実施形態による図1に示すKVFSキャッシュを使用する手続の一例を示すフローチャートである。
図13】本発明の一実施形態による図5に示す名称生成ユニットを使用して客体名称からファイル名称を生成する手続の一例を示すフローチャートである。
図14】本発明の一実施形態による図1に示すメタデータ客体を変形する手続の一例を示すフローチャートである。
【発明を実施するための形態】
【0013】
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。以下の詳細な説明で、多様な詳細な説明は本発明の技術的思想の理解を助けるためである。しかし、当業者がこのような詳細な説明無しに本発明の思想を遂行できる。また、広く公知された方法、手続、構成、回路、及びネットワークは実施形態が不必要に不明瞭にならないように説明しない。
【0014】
第1、第2等の用語を本明細書で多様な要素を説明するために使用するが、このような要素はこのような用語に限定されない。このような用語は単に1つの要素から他の1つを区分するために使用される。例えば、本発明の思想から逸脱することなく、第1モジュールは第2モジュールを示し、同様に第2モジュールは第1モジュールを示すことがある。
【0015】
本明細書で使用する用語は単に特定の実施形態を説明するための目的を有し、本発明の限定を意図しない。本明細書及び特許請求の範囲で使用する単数用語は、脈絡が明確に他のものを指称しない限り、複数の形態を含むものと意図する。本明細書で使用する“及び/又は”の用語は列挙した目録の1つ又はそれ以上の可能な組合せを含むか、或いは参照するものである。詳細な説明で使用する“含む”の用語は言及する特性、数、段階、動作、及び/又は構成要素の存在を明示し、1つ又はそれ以上の他の特性、数、段階、動作、構成要素、及び/又はこれらのグループの存在又は追加を排除しない。図面の特徴及び構成は必しも一定の縮尺で図示しない。
【0016】
本発明の実施形態はオペレーティングシステムのページキャッシュ(又はバッファキャッシュ)を使用してデータアクセスを加速化させるキーバリューをアクセスする方法を含む。キーバリュー要請(又はキーバリューシステムコマンド)はページキャッシュを活用するファイルシステム要請に変換される。また、本発明の実施形態はファイルシステム要請をキーバリュー要請に変換する。例えば、本発明の実施形態はページキャッシュRead PageコマンドをキーバリューシステムGET及びPUTコマンドに変換する。このような変換を具現するために、キーバリューファイルシステム(KVFS:key−value file system)は、格納装置のアクセス要請の生成回数を減少させる自体の内部ページキャッシュを含み、部分読出し及び書込み(partial reads and writes)を管理する。また、格納装置は、最小オーバーヘッドを要求しながら、ファイルシステムインターフェイス及び機能を支援するメタデータ客体(オブジェクト)を格納する。
【0017】
既存のオペレーティングシステムページキャッシュを活用することによって、本発明の実施形態はキーバリューアプリケーションのデータアクセス性能を向上させる。このような結果は、複数のアプリケーションがページキャッシュを共有し、キャッシュされたデータがアプリケーションの再開始を通じて継続されるようにする追加された長所を有する。
【0018】
本発明の実施形態は、オペレーティングシステムの包括的な構成(generic part)の変化を要求すること無しに、標準オペレーティングシステムページキャッシュ及びバッファキャッシュを使用する。このような結果を達成するために、本発明の実施形態は以下の2つの新しい構成を含む。
【0019】
1)オペレーティングシステムの使用者空間で、新しいキーバリューファイルシステム(KVFS:key−value file system)シム(shim)が導入される。KVFSシムはアプリケーションが連結される方法の一部を無視してアプリケーションに透過で具現する。
【0020】
2)オペレーティングシステムのファイルシステム階層で、KVFSドライバー(KVFS階層又はKVFSと称する)が導入される。KVFSドライバーはオペレーティングシステムによって要求される標準ファイルシステムインターフェイス(BSD(登録商標)’s Vnode又は Linux(登録商標)’s VFSインターフェイス)に従い、ファイルシステム要請をキーバリューシステム要請に変換する。
【0021】
図1は、本発明の一実施形態によるキーバリューシステム格納装置にアクセスする際のオペレーティングシステムのページキャッシュを使用するシステムを示す図である。図1で、コンピュータ105は、プロセッサ110、メモリ115、及び格納装置120を含む。プロセッサ110は、多様なプロセッサ、例えばインテルゼオン(Intel Xeon(登録商標))又はインテルセレロンプロセッサ(Intel Celeron(登録商標) processor)である。メモリ115は、不揮発性メモリ(例えば、フラッシュメモリ)又はSRAM(static Random Access Memory)のような多様なメモリであるが、或いは一般的なDRAMであってもよい。格納装置120は従来のブロックインターフェイスを使用しない多様な格納装置である。本実施形態はキーバリュー(客体)インターフェイスを提供するソリッドステートドライブ(SSD:solid state drive)を含む。しかし、他の実施形態において、他の種類の格納装置、他の種類のインターフェイス、又はその両方を支援する。以下の詳細な説明で、コマンド、インターフェイスの文脈又は他の文脈で、一般的に“キーバリュー”の用語は他の専用格納装置120に適合する他の案として代替される。
【0022】
メモリ115は多様なアプリケーションであるアプリケーション125を含む。一実施形態で、アプリケーション125は格納装置120のキーバリューインターフェイスを活用するように設計されたアプリケーションである。しかし、他の実施形態で、アプリケーション125は従来のファイルシステムを活用するアプリケーションである。以下の図3Bを参照して説明するように、本発明の実施形態は、従来のファイルシステムコマンドを活用するアプリケーションが格納装置120のようにキーバリューインターフェイスを提供する格納装置にアクセスすることを可能にする。
【0023】
メモリ115はファイルシステム135を含むオペレーティングシステム130を更に含む。ファイルシステム135はオペレーティングシステム130がページキャッシュを含む従来のオペレーティングシステムであると同様に従来のファイルシステムである。“ページキャッシュ”の用語は、より一般的なバッファキャッシュ又はより最新のリナックス(登録商標)類型のページキャッシュ等、オペレーティングシステムによって提供されてアプリケーションのためにデータを格納するキャッシュを含む。従来のファイルシステムコマンドとキーバリューシステムコマンドとの間の変換のために、オペレーティングシステム130はキーバリューファイルシステム(KVFS)シム140及びKVFS145を含む。KVFSシム140はキーバリューシステムコマンドをファイルシステムで以後の処理が可能なファイルシステムコマンドに変換する。KVFS145は、ファイルシステムコマンドをキーバリューシステムコマンドに再び変換して、(上述したように、従来のブロックインターフェイスの代わりにキーバリューシステムインターフェイスを提供する)格納装置120と通信する。KVFSシム140はアプリケーションによって一般的に呼出されるライブラリ機能を無視する機能として使用される。
【0024】
KVFSシム140及びKVFS145を具現する詳細な構成が、格納装置120によって適用されるコマンド、ファイルシステム135、及びオペレーティングシステム130の具体的な事項を含む変数に依存するため、具現は他の装置を通じて変化する。一実施形態で、KVFSシム140及びKVFS145は、接続可能な機能(pluggable functions)を使用して具現され、KVFSシム140及びKVFS145の全ては全ての可能な機能の完全なセットを含む。特定の具現のために、特定の機能が活性化され、残りの機能は非活性化状態で残る。例えば、KVFSシム140及びKVFS145は、全ての可能なファイルシステムに対する全ての可能なファイルシステムコマンドを管理する機能、及び全ての可能な格納装置120に対する全ての可能なキーバリューシステムコマンドを管理する機能を含む。KVFSシム140及びKVFS145がコンピュータにインストールされた場合、ファイルシステム135及び格納装置120によって認識される特定コマンドを処理する機能が活性化され、コンピュータ105のために必要な特定のKVFSシム140及びKVFS145を使用する。
【0025】
オペレーティングシステム130は自体がページキャッシュを含み、追加拡張はコンピュータ105が格納装置120のデータにアクセスする必要性を減少させる。例えば、KVFS145はKVFSキャッシュ150を含む。KVFSキャッシュ150はデータのコピー155及びメタデータのコピー160を格納する。コピー(155、160)は格納装置120に格納されたデータ客体165及びメタデータ客体170のコピーである。以下の図3A図8を参照して更に詳細に説明するように、データ客体165は基本データ(underlying data)を格納し、メタデータ客体170はファイルのメタデータを格納する。即ち、データ客体165及びメタデータ客体170は共にファイル175を構成する。
【0026】
KVFSキャッシュ150を含む1つの理由は部分読出し及び書込みを管理するためである。キーバリューシステム記号(key−value semantics)は、客体が全体的に読出されるか又は書込まれることを明示し、部分データ読出し又は書込みが許容されない。即ち、格納装置120に格納されたデータ客体165からデータが必要である場合、データ客体165の全体が読出されなければならない。同様に、データが格納装置120に格納されたデータ客体165に書込まれる場合、データ客体165の全体が書込まれなければならない。
【0027】
しかし、ファイルシステム記号は部分データ読出し及び書込みを許容する。例えば、ファイルシステムコマンドはデータ客体165からデータフィールドを読出すことのみを望むことがある。キーバリューシステム記号は、どの位多くのデータが実際に使用されたかに拘らず、読出されるデータ客体165の全体を要求し、残りのデータは将来必要な場合にどこかにキャッシングされ、データ客体165を再び読出す必要性を防止する。しかし、オペレーティングシステム130からのファイルシステムコマンドはアプリケーションによって要求される特定データのみを要請するため、オペレーティングシステム130内のページキャッシュはデータ客体165から残りのデータをキャッシングしない。
【0028】
即ち、KVFSキャッシュ150は、将来所定の時点で必要とすることがあるにも拘らず、除去されるデータを格納する手段を提供する。
【0029】
勿論、これはKVFSキャッシュ150が任意のキャッシュに対して存在する制限事項を伴うキャッシュであることを意味する。KVFSキャッシュ150はKVFSキャッシュ150に割当られた空間によって決定された有限の大きさを含む。KFVSキャッシュ150に割当られた空間より多いデータを格納するように要求される場合、KVFSキャッシュ150はKVFSキャッシュ150のデータ出力を循環する必要がある。KVFSキャッシュ150はLFU(Least Frequently Used)、LRU(Least Recently Used)、又は所定の他のスケジュールのように古いデータを除去して新しいデータのための空間を生成する適切なアルゴリズムを使用する。
【0030】
前のデータを除去するKVFSキャッシュ150の1つの結果は、一部客体に対して、KVFSキャッシュ150がデータの一部領域のみを含む。例えば、データが200MBの大きさであるデータベースから要請されるものと仮定する。客体がキーバリューシステム格納装置から全体データで読出され、また書込まれるため、大略200MBの大きさである単一客体はデータベースを格納する。データベースの一部が読出される場合、データベースの200MBの全体がKFVSキャッシュ150にロードされる。その後に、10KBの大きさのファイルを読出すための要請が受信されるが、KVFSキャッシュ150がフル(full)である状態であるものと仮定する。何らかの理由で、KVFSキャッシュ150はデータベースの10KBの容量を除去することを決定して要請されたファイルのための空間を生成する。
【0031】
データベースからのデータのための他の要請が受信されるものと仮定する。199MB以上のデータベースがKVFSキャッシュ150にある場合、要請されたデータが相変わらずKVFSキャッシュ150にある可能性が高い。そうである場合、要請は、格納装置120をアクセスすることなく、KVFSキャッシュ150から遂行される。しかし、更に小さいデータが読出される場合、要請されたデータがKVFSキャッシュ150から除去されたデータの一部である場合、KVFS145は200MBデータベース客体の全体を再び要請することを必要とする。
【0032】
データ書込みは同様に管理される。データが書込まれる場合、交替されたデータがKVFSキャッシュ150に格納された場合、KVFSキャッシュ150内のデータが更新され、KVFS145は結果を返還する。その後に、KVFS145はKVFSキャッシュ150からのデータを格納装置120に書込んでデータが更に永久的な格納所に更新されるようにする。その後に、KVFSキャッシュ150内のデータは消去される。勿論、KVFSキャッシュ150がフル(full)である状態で、新しいデータがKVFSキャッシュ150にロードされる場合、KVFSキャッシュ150は、データのページがKVFSキャッシュ150から除去されると、データが格納装置120にフラッシュされるようにデータが格納装置120に書込まれたか否かを認知する必要がある。そのため、KVFSキャッシュ150はKVFSキャッシュ150の各ページに対するダーティビットを追跡することを必要とする。勿論、他の代案はKVFS145がデータ書込み動作の結果を返還する前にデータ客体が格納装置120に書込まれるようにすることである。このような状況で、KVFSキャッシュ150はデータが安全に除去されることを確信する。
【0033】
データ客体165は客体名称180を含む。客体名称180は格納装置120にデータ客体165を唯一に位置させるために使用されるデータである。同様な方式で、メタデータ客体170は、以下の図5及び図6を参照して説明するように、自体が名称を含む。メタデータ客体170の名称はデータ客体165の名称180から誘導(derived)される。客体名称180の誘導によってメタデータ客体170の名称を生成することで、メタデータ客体170は常に客体名称180を認知するように置かれる。
【0034】
ファイル175はファイル名称185を含む。ファイル名称185は客体名称180に対して独立的であり、ファイル名称185は、客体名称180の変更無しに変更することができ、その反対も可能である。
【0035】
図2は、図1に示すコンピュータ105の追加的な詳細構成図である。図2を参照すると、一般的に、1つ以上のマシン105は1つ以上のマシン105の構成の動作を組織化するために使用されるメモリコントローラ215及びクロック220を含む1つ以上のプロセッサ110を含む。プロセッサ110は、例えばランダムアクセスメモリ(RAM)、読出し専用メモリ(ROM)、及び他の状態保存媒体を含むメモリ115に連結される。プロセッサ110は格納装置120及びネットワークコネクター230に連結される。例えば、ネットワークコネクター215はイーサーネット(登録商標)コネクター又は無線コネクターである。プロセッサ110はバス240に連結される。他の構成要素の中でI/O(入力/出力)エンジン250を使用して管理される入力/出力インターフェイスポート及び使用者インターフェイス245はバス240に接続される。
【0036】
図3A及び図3Bは、図1に示すコンピュータ105の階層を通じたデータ及びコマンドの流れを示す図である。図3Aで、アプリケーション125が格納装置120によって認識されるキーバリューシステムコマンドを発行する本発明の一実施形態を示す。アプリケーション125がキーバリューシステムコマンド305を発行する場合、アプリケーション125はライブラリ機能(library function)を使用する。このようなライブラリ機能はKVFSシム140によって無視され、KVFSシム140はキーバリューシステムコマンド305を受信する。KVFSシム140はキーバリューシステムコマンド305をファイルシステムコマンド310にマッピングする。ファイルシステムコマンド310は、キーバリューシステムコマンド305と類似なファイルシステムコマンドであるが、図1のオペレーティングシステム130の一部であるファイルシステム135によって処理される。ファイルシステム135(又はファイルシステム135及び図1のオペレーティングシステム130の具現に依存する図1のオペレーティングシステム130)はページキャッシュ315にアクセスしてファイルシステムコマンド310を遂行する。ページキャッシュ315がファイルシステムコマンド310を遂行すると、ファイルシステム135(又は図1のオペレーティングシステム130)は結果320(result)をKVFSシム140に返還する。KVFSシム140は結果320をアプリケーション125によって予想される形態にマッピングする。アプリケーション125はファイルシステムコマンド310に対する結果と異なる形態を有するキーバリューシステムコマンド305に対する結果を予想する。
【0037】
ファイルシステム135(又は図1のオペレーティングシステム130)がページキャッシュ315を使用してファイルシステムコマンド310を遂行しなかった場合、ファイルシステム135はファイルシステムコマンド310をKVFS145に伝送する。KVFS145はKVFSキャッシュ150を使用してファイルシステムコマンド310を遂行する。KVFS145がKVFSキャッシュ150を使用してファイルシステムコマンド135を遂行すると、KVFSは結果325を返還する。ファイルシステム135(又は図1のオペレーティングシステム130)はページキャッシュ315への必要なアップデートを生成し、(図3Aの結果320として図示した)結果325をKVFSシム140に返還する。処理は上述したように続けられる。
【0038】
KVFS145は格納装置120のアップデートを必要とする。例えば、ファイルシステムコマンド310が図1のファイル175に対するメタデータをアップデートする場合、KVFS145は格納装置120に格納されたようにメタデータ客体170をアップデートする。しかし、KVFS145が格納装置120への変化を必要とするか否かは、KVFS145、格納装置120、及びファイルシステムコマンド310の具体的思想に依存し、全てのファイルシステムコマンド310に対して必ずしも要求されない。
【0039】
KVFS145がKVFSキャッシュ150を使用してファイルシステムコマンド310を遂行できない場合、KVFS145はファイルシステムコマンド310をキーバリューシステムコマンド330にマッピングする。キーバリューシステムコマンド330はアプリケーション125によって発行されたキーバリューシステムコマンド305と普通同一であるものと予想される。しかし、キーバリューシステムコマンド330がキーバリューシステムコマンド305と何らかの形で異なる可能性がある。KVFS145はKVFS145が結果335のようにファイルシステム135(又は図1のオペレーティングシステム130)に返還する結果を格納装置120から受信する。その後に、処理は上述したように続けられる。KVFS145は格納装置120から受信された結果335に基づいて図1のKVFSキャッシュ150をアップデートする。例えば、ファイルシステムコマンド310が図1のファイル175を再命名すること(renaming)を含み、図1のKVFSキャッシュ150が図1のメタデータ客体170を予め格納しない場合、KVFS145はキーバリューシステムコマンド330を発行して図1のメタデータ客体170を回収し、メタデータ客体170のコピー160を図1のKVFSキャッシュ150に格納し、図1のKVFSキャッシュ150に格納された図1のメタデータ客体170のコピー160をアップデートする。KVFS145は、追加的な第2キーバリューシステムコマンド330を発行して格納装置120から図1のメタデータ客体170を削除し、格納装置120に図1の交替されたメタデータ客体170を格納する。従って、格納装置120はアップデートされたメタデータを含む。
【0040】
図3B図3Aと類似である。しかし、他の実施形態として、アプリケーション125は図3Aのキーバリューシステムコマンド305の代わりにファイルシステムコマンド310を発行する。例えば、アプリケーション125は、格納装置120によって提供されるキーバリューインターフェイスを活用するように設計されないアプリケーションであるが、その代わりに、従来のファイルシステムコマンドを使用することを予想する。
【0041】
アプリケーション125が従来のファイルシステムコマンドを発行するため、KVFSシム140はキーバリューシステムコマンドをファイルシステムコマンドに変換することを必要としない。結果的に、ファイルシステム135(又は図1のオペレーティングシステム130)はファイルシステムコマンド310に基づいてページキャッシュ315を活用する。しかし、変わらずにKVFS145はファイルシステムコマンド310をキーバリューシステムコマンド330にマッピングする。実際の格納装置120が客体格納所を使用する場合、KVFS145を使用してファイルシステムコマンド310をキーバリューシステムコマンド310にマッピングすることによって、KVFS145はファイルシステム135に格納装置120が従来のブロック格納所を使用するように見せる。本発明のこのような実施形態で、アプリケーション125は、格納装置120が従来のブロック格納所を使用しないにも拘らず、ページキャッシュ315の長所に影響を与える。ファイルシステム135(及び/又は図1のオペレーティングシステム130)、KVFS145(及び図1のKVFSキャッシュ150)、及び格納装置120の動作は図3Aに記載されたことと同一である。
【0042】
図3A及び図3Bは本発明の互いに代案的な実施形態として示したが、図3A及び図3Bに記載した本発明の実施形態は互いに組合される。例えば、本発明の実施形態はアプリケーション125が図3Aのキーバリューシステムコマンド305のようなキーバリューシステムコマンドを発行した場合、図3Aに示したように動作し、アプリケーション125が図3Bのファイルシステムコマンド310のようなファイルシステムコマンドを発行した場合、図3Bに示したように動作する。結果的に、図1のKVFSキャッシュ150及びページキャッシュ315はアプリケーション125を通じてキーバリューシステムコマンド又はファイルシステムコマンドの中の1つを使用することに影響を受け、データは図1のKVFSキャッシュ150及びページキャッシュ315内でこのようなアプリケーション125を通じて共有される。
【0043】
図4は、図1に示すキーバリューファイルシステム(KVFS:Key−Value File System)145の詳細構成図である。図4で、図1図3A、及び図3Bを参照して説明したKVFSキャッシュ150は除外され、KVFS145は、受信ユニット405、マッピングユニット410、コマンドユニット415、及び返還ユニット420を含む。受信ユニット405は図1のファイルシステム135のように図1のオペレーティングシステム130の他のレベルからコマンドを受信する。マッピングユニット410はファイルシステムコマンドをキーバリューシステムコマンドにマッピングする。コマンドユニット415はキーバリューシステムコマンドを図1の格納装置120に対して発行する。返還ユニット420は図1のファイルシステム135のような図1のオペレーティングシステム130の呼出レベル(calling level)に結果を返還する。全てのユニットが全てのファイルシステムコマンドに応答することを必要としない。例えば、ファイルシステムコマンドがKVFSキャッシュ150に存在するデータから遂行される場合、マッピングユニット410及びコマンドユニット415は図1の格納装置120から情報にアクセスすることを必要としない。
【0044】
ファイルシステムコマンドのキーバリューシステムコマンドへのマッピングは図3A及び図3Bを参照して説明した。このようなマッピングを達成するために、マッピングユニット410はファイルシステムコマンドからキーバリューシステムコマンドへの適切なマッピングを含む。例えば、マッピングユニット410は与えられたファイルシステムコマンドと対応するキーバリューシステムコマンドが何であるかを示すテーブルを含む。関連(association)は一対多(one−to−may)である。単一ファイルシステムコマンドは複数のキーバリューシステムコマンドを含む。例えば、フラッシュSSDで、データは上書き(overwrite)されない。データを変更することは(適切な時、SSDによってガーベッジコレクションの対象になる)原本データを無効化すること及び新しいデータ客体を書込むことを含む。即ち、ファイルに対するメタデータを変更することは、KVFS145が、図1のメタデータ客体170を削除し(より正確には、KVFS145が格納装置120で図1のメタデータ客体170を無効化すること、及び格納装置120がガーベッジコレクションを遂行して以前の客体によって占有された空間を確保すること)、交替メタデータ客体を格納するように要請する。
【0045】
差異が(distinction)がシステム内の多様なデータ要素の名称間で区分されることに注意する価値がある。図1を再び参照すると、データ客体165は客体名称180を含み、ファイル175はファイル名称185を含む。(メタデータ客体170はまた以下の図5図8を参照して説明するように客体名称を含む。しかし、メタデータ客体170の名称はコンピュータ105の動作で厳格に内部的であるため、メタデータ客体170の名称は本明細書で十分に説明しない。)客体名称180はデータ客体165を識別する。ファイル名称185はファイル175を識別する。ファイル名称185自体はメタデータ客体170に格納されたメタデータであり、図1に示した表示は単なる象徴的なものである。ファイル175はファイルシステム135に効率的な要素であり、データ客体165は格納装置120のキーバリューシステムに効率的な要素である。客体名称180及びファイル名称185は区分され、完全に不可能でない場合、客体名称180及びファイル名称185が同一であることは非常に珍しいことである。
【0046】
また、客体名称180及びファイル名称185は互いに影響を与えずに各々変形される。例えば、アプリケーション125がファイル名称185を再命名することを決定した場合、このような変化はメタデータ客体170のコンテンツに影響を与えるが客体名称180を変更しない。或いは、客体名称180が変更される場合、これはデータ客体165に影響を与えるが、(そして、メタデータ客体170に対する客体名称が変更されるため、メタデータ客体170に間接的な影響を与えるが、)ファイル名称185は変更されずに維持される。即ち、客体名称及びファイル名称のコンテンツを別に維持することは非常に重要であり、それは関連するが区分される概念である。
【0047】
図4を再び参照すると、KVFS145はアイノード425(inode)を更に含む。アイノード425はファイルの代表的なデータ構造である。アイノード425はUnix−基盤のシステムに使用される一般的なアイノードであるか、或いはアイノード425は新しいデータ構造である。アイノード425は図1のファイル175のようなファイルに対する情報を格納する。特に、アイノード425は、ファイル名称185、ファイル生成時間及び日付、ファイルの所有者等のようなファイルメタデータを格納する。しかし、アイノード425は具現のために適切に追加的な情報を含む。
【0048】
図5は、図1に示すKVFSシム140の詳細構成図である。図5で、KVFSシム140は、受信ユニット505、マッピングユニット510、コマンドユニット515、及び返還ユニット520を含む。受信ユニット505は図1のアプリケーション125からコマンドを受信する。マッピングユニット510はキーバリューシステムコマンドをファイルシステムコマンドにマッピングする。コマンドユニット515はファイルシステムコマンドを図1のファイルシステム135(又は図1のオペレーティングシステム130)に発行する。返還ユニット520は図1のアプリケーション125に結果を返還する。図4のKVFS145と異なり、KVFSシム140は、自体がキーバリューシステムコマンドを遂行せず、ファイルシステムコマンドを図1のファイルシステム135(又は図1のオペレーティングシステム130)に伝送する。
【0049】
キーバリューシステムコマンドのファイルシステムコマンドへのマッピングは図3A及び図3Bを参照して説明した。このようなマッピングを達成するために、マッピングユニット510はキーバリューシステムコマンドからファイルシステムコマンドへの適切なマッピングを含む。例えば、マッピングユニット510は与えられたキーバリューシステムコマンドに対応するファイルシステムコマンドが何なのかを示すテーブルを含む。しかし、図4のマッピングユニット410と対照的に、KVFSシム140のマッピングユニット510は一般的に更に単純な具現を含む。図1のファイルシステム135に発行される多数のファイルシステムコマンドが存在する反面、キーバリュー格納装置に発行される唯3つのキーバリューシステムコマンド(GET、PUT、及びDELETE)が存在する。GETコマンドは格納装置からデータを読出し、PUTコマンドは格納装置にデータを書込み、DELETEコマンドは格納装置のデータを無効化する。即ち、キーバリュー格納装置に発行されるコマンドの数が少なければ、マッピングユニット510の具現が単純になる傾向がある。また、図1のファイルシステム135は、一般的にデータ読出し、書込み、及び削除に対する同様のコマンドを含むため、キーバリューシステムコマンドからファイルシステムコマンドへのマッピングを比較的単純にする。それにも拘らず、図1の格納装置120及び図1のオペレーティングシステム130の詳細な構成に従って、単一キーバリューシステムコマンドは複数のファイルシステムコマンドにマッピングする。
【0050】
KVFSシム140はファイルディスクリプタルックアップテーブル525(file descriptor lookup table)を更に含む。ファイルディスクリプタ(file descriptor)はファイル内のデータにアクセス(書込み又は読出しの中の1つ)するための内部的な方法である。KVFSシム140はファイルディスクリプタルックアップテーブル525にファイルディスクリプタに対する識別子(identifiers)を格納する。置かれたファイルディスクリプタはファイルシステムコマンドへの引受(argument)として図1のファイルシステム135に伝送される。ファイルディスクリプタルックアップテーブル525が無い場合、KVFSシム140は、ファイルがアクセスされるか又はファイルをオープンする時毎にファイルディスクリプタを図1のオペレーティングシステム130に問い合わせ、必須的なコマンドを遂行して全てのキーバリューシステムコマンドに対するファイルをクローズすることを必要とする。しかし、これらのアプローチは全て時間がかかる(time−intensive)。ファイルディスクリプタをファイルディスクリプタルックアップテーブル525に格納することによって、KVFSシム140は受信されたキーバリューシステムコマンドに対応するファイルシステムコマンドに対する適切なファイルディスクリプタを速く判別することができる。ファイルディスクリプタルックアップテーブル525は、図7を参照してより詳細に説明する。
【0051】
KVFSシム140は名称生成ユニット530を更に含む。上述したように、メタデータ客体は客体をアクセスするために必要な名称を含む。しかし、メタデータ客体名称は客体からファイルに変換された場合のみに重要である。従って、メタデータ客体の名称は図1のKVFSシム140及びKVFS145のみで重要である。結果的に、メタデータ客体に対する名称を生成する概ね全ての適切なアルゴリズムが使用される。
【0052】
メタデータ客体に対する名称を生成するための手続に対する幾つかの適切な特徴が存在する。第1に、手続は決定論的(deterministic)でなければならない。同一のデータが与えられた場合、同一のメタデータ名称が常に発生しなければならない。第2に、手続は衝突(collisions)を避けることができなければならない。他のデータが与えられた場合、他のメタデータ名称が発生しなければならない。第3に、客体名称が所定の長さを有するため、手続は潜在的長さのデータを処理する必要がある。これは客体名称180が与えられた場合、図1のメタデータ客体170に対する名称を生成する名称生成ユニット530に存在する全ての特徴である。
【0053】
図6は、図5に示す名称生成ユニット530の詳細構成図であり、図1の客体名称180から図1のメタデータ客体170に対する名称を生成する構成を示す。客体名称180と共に開始することによって、名称生成ユニット530は矛盾する入力から図1のメタデータ客体170に対して同一の名称を一貫して生成する問題点を避ける。図6で、名称生成ユニット530は、ハッシュユニット605、ASCII表示ユニット610、及び衝突インデックスユニット615を含む。ハッシュユニット605は客体名称180に対するハッシュ(hash)を遂行する。SHA−1のような暗号化ハッシュアルゴリズムは名称生成に適切な特徴の大部分を提供する。従って、メタデータ客体に対する名称を生成する最適の選択である。しかし、(コンテナからファイルを分離するのに時々使用されるスラッシュ(/)のように)ファイル名称の一部ではない一部文字が存在する。暗号化ハッシュアルゴリズムの結果がファイル名称として必須的に使用可能ではないため、ASCII表示ユニット610は、ハッシュユニット605の結果を獲得し、その結果のASCII表示を生成する。ASCII表示ユニット610はハッシュユニット605の結果から問題がある文字を除去する。
【0054】
勿論、暗号化ハッシュアルゴリズムはハッシュ結果の間の衝突が無いことを保証しない。例えば、SHA−1は、入力データの大きさに拘らず、160ビットハッシュ結果を生成する。即ち、SHA−1が160ビット以上の入力データを受信した場合、SHA−1は160ビットハッシュを生成する。160ビットより大きい入力の大きさに対して出力より更に多い可能な入力が存在するため、可能性が少ないが衝突の可能性は相変わらず存在する。このような可能性を解決するために、衝突インデックスユニット615は、衝突が発生した場合、衝突インデックスをASCII表示に追加する。衝突インデックスとハッシュユニット605の結果のASCII表示との組合せは図1のメタデータ客体170に対する名称の生成で可能な衝突を避ける。
【0055】
図1のメタデータ客体170に対する名称が生成された場合、図1のKVFSシム140及び図1のKVFS145はこのような名称を使用して図1のメタデータ客体170にアクセスする。PUT、GET、又はDELETE要請を図1のメタデータ客体170に対して生成された名称と共に図1の格納装置120に伝送することによって、図1のKVFSシム140及び図1のKVFS145は、確実にそして持続的に図1のメタデータ客体170にアクセスし、使用する。
【0056】
図7は、図5に示すファイルディスクリプタルックアップテーブル525の詳細構成図である。図5を参照して上述したように、ファイルディスクリプタルックアップテーブル525は図1のKVFSシム140が与えられたファイルに対するファイルディスクリプタ(file descriptor)にアクセスするための方法を提供する。図7で、ファイルディスクリプタルックアップテーブル525はハッシュ及びファイルディスクリプタに対する多様な関連を含む。例えば、第1ハッシュ705は第1ファイルディスクリプタ710に関連し、第2ハッシュ715は第2ファイルディスクリプタ720に関連し、第3ハッシュ725は第3ファイルディスクリプタ730に関連する。図7で、ファイルディスクリプタルックアップテーブル525は3つの関連を示すが、本実施形態は多様な関連を支援する。ハッシュ値が与えられた場合、対応するファイルディスクリプタがファイルディスクリプタルックアップテーブル525に存在すると、KVFSシム140は対応するファイルディスクリプタを探す。
【0057】
ハッシュ(705、715、725)は図1のオペレーティングシステム130によって管理されるようなファイルに対するファイルディスクリプタを格納する。ファイルディスクリプタが未だオープンされない場合、図1のKVFSシム140は、ファイルをオープンし、ファイルディスクリプタを再び受信する。図1のKVFSシム140は将来使用するためにハッシュ値及びファイルディスクリプタをファイルディスクリプタルックアップテーブル525に追加する。
【0058】
図1のKVFSシム140は、ファイルディスクリプタルックアップテーブル525を検索するためのハッシュとして、図1のメタデータ客体170に対する名称を使用する。図1のメタデータ客体170に対する名称が図6のハッシュユニット605を(他の手続と共に)使用することによって生成されるため、2つの他のファイルディスクリプタがファイルディスクリプタルックアップテーブル525で同一のハッシュ値に関連する可能性は実質的にない。
【0059】
図8は、図1に示すメタデータ客体170の構造の一例を示す詳細構成図である。図8で、メタデータ客体170は多様なデータフィールドを含む。このようなデータフィールドはファイル名称185、図1のファイル175が生成された日付805、(本明細書で使用する“日付”の用語は日付及び時間を全て含むものと看做す)図1のファイル175が最近変更された日付810、図1のファイル175が最近アクセスされた日付815、図1のファイル175に対する種類820(例えば、実行可能、文書、テキストファイル、又は他のもの)、図1のファイル175の大きさ825、図1のファイル175を格納するコンテナ830、及び図1のファイル175の所有者835を含む。
【0060】
メタデータ客体170は客体名称180を更に含む。客体名称180を含むことによって、メタデータ客体170へのアクセスがデータ客体165に再び戻るためのシステムを提供する。(メタデータ客体170に対する名称が客体名称180から生成されることを想起)一実施形態で、メタデータ客体170は客体名称180を直接含む。メタデータ客体170へのアクセスを効率的にするために、メタデータ客体170は固定された大きさを有する。固定された大きさは客体名称180に対して割当られた空間が予め固定されることを意味する。客体名称が潛在的に無限大の長さを有するため、メタデータ客体170内に客体名称180を含むことは問題を生じることがある。客体名称180がメタデータ客体170内の客体名称180に対して割当られたフィールドの大きさより長くないようにすることが必要である。特に、これは問題になる可能性が低い。名称180のために割当られたフィールドは文字の意図した個数(200、1000、10000、又はそれ以上)を含む。しかし、フィールド超過の可能性が存在し、これは図1のオペレーティングシステム130でエラーを発生させる。
【0061】
代案として、図8に示したように、メタデータ客体170は客体名称180が格納された位置を示すポインター840を含む。システムが客体名称180が何処に格納されたか、そして客体名称180の長さ845が分かる場合、システムは客体名称180を回収する。その理由は、名称長さ845に対するポインターを含むメタデータ客体170は、固定された大きさのデータを読出すことが未知の大きさのデータを読出すことより効率的であるためである。図8は客体名称180と共に格納された名称長さ845を示しているが、他の実施形態で、名称長さ845はメタデータ客体170内に格納される。
【0062】
メタデータ客体170は権限855(permissions)へのポインター850を更に含む。権限855は図1のデータ客体165に対して存在する権限が何であるかを特定する。権限855の構造は図1のオペレーティングシステム130に従って変わる。例えば、ユニックス基盤のシステムで、権限855は、図1のファイル175の所有者であるか、又は図1のファイル175の所有者が含まれるグループの他の使用者であるかを特定し、他の使用者がファイルを読出し、書込み、実行するかを特定する。他のオペレーティングシステムは他の方式に権限855を特定する。図8がメタデータ客体170からポインター850を通じてアクセスされる権限855を示しているが、他の実施形態で、権限855はメタデータ客体170内に格納される。
【0063】
図9A図9Eは、本発明の一実施形態による図1に示すコンピュータ105を使用してコマンドを処理する手続の一例を示すフローチャートである。図9Aを参照すると、903段階で、図1のKVFSシム140は図1のアプリケーション125から図3Aのキーバリューシステムコマンド305を受信する。906段階で、図1のKVFSシム140は図3Aのキーバリューシステムコマンド305を図3Aのファイルシステムコマンド310にマッピングする。909段階で、KVFSシム140は図5のファイルディスクリプタルックアップテーブル525を検索して意図したファイルが以前にオープンされたか否かを認知する。図6を参照して説明したように、このような検索は図5の名称生成ユニット530によって生成された図1のメタデータ客体170に対する名称を使用する。
【0064】
図9Bの912段階で、図1のKVFSシム140は図5のファイルディスクリプタルックアップテーブル525が意図したファイルディスクリプタを含むか否かを判別する。図5のファイルディスクリプタルックアップテーブル525が意図したファイルディスクリプタを含む場合、915段階で、図1のKVFSシム140は図5のファイルディスクリプタルックアップテーブル525から意図したファイルディスクリプタにアクセスする。そうでない場合、918段階で、KVFSシム140は意図したファイルをオープンすることによって、図1のオペレーティングシステム130から新しいファイルディスクリプタを要請する。921段階で、図1のKVFSシム140は新しいファイルディスクリプタを受信する。924段階で、図1のKVFSシム140は将来使用するために、新しいファイルディスクリプタを図5のファイルディスクリプタルックアップテーブル525に追加する。
【0065】
いずれの場合も、図1のKVFSシム140が意図したファイルディスクリプタを含む場合、図9Cの927段階で、図1のKVFS145は図1のファイルシステム135から、より詳細には図1のオペレーティングシステム130から図1のファイルシステムコマンド310を受信する。このような段階は図1のKVFSシム140が図3Aのファイルシステムコマンド310を図1のオペレーティングシステム130に伝送して図3Aのページキャッシュ315を使用して要請を遂行することを含む。図3Aのページキャッシュ315が要請を遂行できない場合、図1のオペレーティングシステム130は図3Aのファイルシステムコマンド310を図1のKVFS145に伝達する。
【0066】
930段階で、KVFS145は意図したメタデータを格納する図4のアイノード425が存在するか否かを判別する。アイノード425が存在しない場合、933段階で、図1のKVFS145は図1の格納装置120から図1のファイル175に対するメタデータを要請する。より詳細には、図1のKVFS145は図1の格納装置120から図1のメタデータ客体170を要請する。936段階で、図1のKVFS145は図1の格納装置120から図1のファイル175に対するメタデータ客体170を受信する。939段階で、図1のKVFS145は図4のアイノード425にメタデータを格納する。
【0067】
942段階で、意図したメタデータを格納する図4のアイノード425が存在するか否かに拘らず、図1のKVFS145は図4のアイノード425又は図1のメタデータ客体170から図1の客体名称180にアクセスする。945段階で、図1のKVFS145は図3Aのファイルシステムコマンド310を図3Aのキーバリューシステムコマンド330にマッピングする。
【0068】
図9Dの948段階で、図3Aのファイルシステムコマンド310が図1のファイル175のメタデータを何らかの形で変形した場合、図1のKVFS145は図4のアイノード425を変形する。951段階で、図1のKVFS145は図1のKVFSキャッシュ150を使用して図3Aのキーバリューシステムコマンド330を遂行する。
【0069】
954段階で、図1のKVFS145は図1のKVFSキャッシュ150が意図したデータを格納するか否かを判断するために図1のKVFSキャッシュ150を検索する。957段階で、図1のKVFS145は図1のKVFSキャッシュ150が意図したデータを格納したか否かを判別する。図1のデータ客体165(又は図1のデータ客体165の適切な一部)が図1のKVFSキャッシュ150に格納されない場合、960段階で、図1のKVFS145は図3Aのキーバリューシステムコマンド330を図1の格納装置120に伝送して図1のデータ客体165を回収する。963段階で、図1のKVFS145は格納装置120から図1のデータ客体165を受信し、966段階で、図1のKVFS145は図1のデータ客体165のコピー155を図1のKVFSキャッシュ150に格納する。勿論、格納する段階は、図1のKVFSキャッシュ150から一部のデータを除去して新しいデータのための空間を生成することを含む。図1のKVFS145は意図したアルゴリズムを使用して図1のKVFSキャッシュ150から除去されるデータを選択する。
【0070】
このような点で、図1のKVFS145は図1のKVFSキャッシュ150が意図したデータを格納することを保証する。図9Eの969段階で、図1のKVFS145は図1のKVFSキャッシュ150からの図1のデータ客体165のコピー155からデータ又はデータの一部にアクセスする。データが書込まれる場合、このようなアクセス動作は、図1の格納装置120から図1のデータ客体160を削除して新しいデータ客体を書込むこと、又は図1のKVFSキャッシュ150のページを(後に、ページが図1の格納装置120にフラッシュされるように)ダーティとして単純に示すことの中の1つを含む。972段階で、図1のKVFS145は図3Aの結果335を図1のオペレーティングシステム130に返還する。975段階で、図1のオペレーティングシステム130は図3Aの結果として図1のアプリケーション125に伝播する。
【0071】
上述した説明は、図1のKVFSシム140、図1のファイルシステム135、及び図1のKVFS145を含むオペレーティングシステム130の全てのレベルの動作を示すため、非常に複雑である。図1のKVFSシム140及び図1のKVFS145で動作を個別的に検討することが有利である。図1のファイルシステム135が本実施形態で変更されずに維持されるため、図1のファイルシステムの動作の分析は以下で提供しない。
【0072】
図10A及び図10Bは、本発明の一実施形態による図1に示すKVFSシム140の動作の手続の一例を示すフローチャートである。図10Aの1005段階で、図5の受信ユニット505は図3Aのキーバリューシステムコマンド305を図1のアプリケーション125から受信する。1010段階で、図5のマッピングユニット510は図3Aのキーバリューシステムコマンド305を図3Aのファイルシステムコマンド310にマッピングする。以下の図13を参照して説明するように、これは図1のメタデータ客体170に対する名称を生成することを含む。1015段階で、図1のKVFSシム140はファイルディスクリプタルックアップテーブル525を検索して図1のファイル175に対するファイルディスクリプタが存在するか否かを判別する。
【0073】
図10Bの1020段階で、図1のKVFSシム140は図1のファイル175に対するファイルディスクリプタが図5のファイルディスクリプタルックアップテーブル525で発見されたか否かを判別する。図1のファイル175に対するファイルディスクリプタが図5のファイルディスクリプタルックアップテーブル525で発見された場合、ファイルディスクリプタは1025段階で、アクセスされる。そうでない場合、1030段階で、図1のKVFSシム140は図1のファイル175に対する新しいファイルディスクリプタを要請する。このような要請は図1のファイルシステム135が図1のファイル175をオープンする要請を含む。1035段階で、図1のKVFSシム140は図1のファイルシステム135から新しいファイルディスクリプタを受信する。1040段階で、図1のKVFSシム140は新しいファイルディスクリプタ(及び図1のメタデータ客体170に対する名称)を図5のファイルディスクリプタルックアップテーブル525に追加する。
【0074】
いずれの場合も、図1のKVFSシム140が図1のファイル175に対するファイルディスクリプタを含む場合、1045段階で、図1のKVFSシム140はファイルシステムコマンド310を図1のオペレーティングシステム130を通じて図1の格納装置120に伝送する。次に、1050段階で、図1のKVFSシム140は図3Aのオペレーティングシステム130から受信された図3Aの結果325を図1のアプリケーション125に返還する。
【0075】
図1のKVFSシム140は、図3Aのオペレーティングシステム130の本来のページキャッシュ315が影響を受けるように、キーバリューシステムコマンドをファイルシステムコマンドに変換する役割を遂行する。アプリケーション125がキーバリューシステムコマンドの代わりにファイルシステムコマンドを発行する場合、図1のKVFSシム140は通過(bypass)され、ファイルシステムコマンドは図1のオペレーティングシステム130に直接伝達される。そして、図3Bの結果325は図1のアプリケーションに直接返還される。
【0076】
図11A及び図11Bは、本発明の一実施形態による図1に示すKVFS145の動作の手続の一例を示すフローチャートである。図11Aの1105段階で、図1のKVFS145は図3Aのファイルシステムコマンド310を受信する。1110段階で、図1のKVFS145は図3Aのファイルシステムコマンド310によって識別される図1のファイル175に対するメタデータを含む図4のアイノード425を検索する。1115段階で、図1のKVFS145は図4のアイノード425が発見されたか否かを判別する。図4のアイノード425が発見された場合、1120段階で、図1のKVFS145は図4のアイノード425にアクセスし、1125段階で、図1のKVFS145は図4のアイノード425から客体名称180にアクセスする。
【0077】
一方、1115段階で、図1のKVFS145が図4のアイノード425を発見しない場合、図11Bの1130段階で、図1のKVFS145は図1の格納装置120に図1のメタデータ客体170を要請する。1135段階で、図1のKVFS145は格納装置120から図1のメタデータ客体170を受信する。1140段階で、図1のKVFS145は図1のメタデータ客体170からメタデータを取出す。1145段階で、図1のKVFS145は図1のメタデータ客体170から図1の客体名称180にアクセスする。このような取出しはメタデータ客体170が客体名称180を直接的に格納した場合、直接的な動作である。或いは、このような取出しは図1のKVFS145が客体名称180をロードする前に、客体名称180(及び名称長さ845)のポインターを先ず取出す間接的な動作である。1150段階で、図1のKVFS145は図4のアイノード425を生成する。
【0078】
図4のアイノード425が生成されたか又は発見されたかに拘らず、1155段階で、図1のKVFSキャッシュ150が存在する場合、図1のKVFS145は図1のデータ客体165の図1のコピー155に対してファイルシステムコマンドを遂行する。最後に、1160段階で、図1のKVFS145はコマンドの結果を返還する。
【0079】
図11A及び図11Bに対する内容は図1のKVFS145が図1の格納装置120にキーバリューシステムコマンドを伝送しないことを仮定する。このような結果は図11Bの1155段階を詳細に説明する以下の図12A及び図12Bを参照して説明するように正確でないこともある。
【0080】
図12A及び図12Bは、本発明の一実施形態による図1に示すKVFSキャッシュ150を使用する手続の一例を示すフローチャートである。図12Aの1205段階で、図1のKVFS145は、図1のKVFSキャッシュ150を検索して、図1のデータ客体165及びメタデータ客体170のコピー(155、160)が図1のKVFSキャッシュ150に存在するか否かを判別する。1210段階で、図1のKVFS145は図1のKVFSキャッシュ150が図1のデータ客体165及びメタデータ客体170のコピー(155、160)を格納したか否かを判別する。本明細書で、“コピーを格納すること”の用語は、図1のデータ客体165及びメタデータ客体170のコピー(155、160)の全体を格納するか、又は図1のデータ客体165及びメタデータ客体170の全ての部分を格納することを必須的に意味しない。必須的なことは図1のKVFSキャッシュ150がファイルシステムコマンドが適用される図1のデータ客体165及び/又はメタデータ客体170の一部分のコピーを格納することである。図1のKVFSキャッシュ150が図1のデータ客体165及び/又はメタデータ客体170の適切な部分の全てのコピーを格納する場合、図1のコピー(155、160)が図1のデータ客体165及びメタデータ客体170の全体コピーでなくても、図1のKVFS145は図1のKVFSキャッシュ150が図1のデータ客体165及びメタデータ客体170のコピー(155、160)を格納すると判断する。
【0081】
図1のKVFSキャッシュ150が図1のデータ客体165及びメタデータ客体170のコピー(155、160)を格納した場合、1215段階で、図1のKVFS145は図1のコピー(155、160)に対して図3Aのファイルシステムコマンド310を遂行する。ファイルシステムコマンド310が図1のデータ客体165又は図1のメタデータ客体170の中の1つに対するデータの変更を含む場合、図1のKVFS145は図1のKVFSキャッシュ150で影響を受けるページをダーティとしてマーキングして変更されたデータが結局格納装置120にフラッシュされるようにするか、又は図1のKVFS145が現在影響を受ける客体を直ちに削除して変更された客体の交替コピーを格納装置120に格納することの中の1つを遂行する。
【0082】
図1のKVFSキャッシュ150が図1のデータ客体165のコピー155を格納しない場合、図12Bの1220段階で、図1のKVFS145は図3Aのファイルシステムコマンド310を図3Aのキーバリューシステムコマンド330にマッピングする。1225段階で、図1のKVFS145は図3Aのキーバリューシステムコマンド330を図1の格納装置120に伝送する。1230段階で、図1のKVFS145は図3Aのキーバリューシステムコマンド330によって影響を受ける客体のコピーを格納装置120から受信する。1235段階で、図1のKVFS145は図1の格納装置120から受信された図1のデータ客体165及び/又はメタデータ客体170のコピー(155及び/又は160)を図1のKVFSキャッシュ150に格納する。
【0083】
1240段階で、図1のKVFSキャッシュ150が図1のデータ客体165及び/又はメタデータ客体170又は図1のコピー155及び/又は160が格納されたか、或は格納されなくても、コマンドが遂行される。1240段階で、図1のKVFS145は図4のアイノード425を変形して図3Aのファイルシステムコマンド330によって指称される全ての変更を反映する。1245段階で、図1のKVFS145は図1のKVFSキャッシュ150からの図1のコピー155及び/又は160の中の1つ又は全てからデータの適切な一部にアクセスする。1250段階で、図1のKVFS145は図1のオペレーティングシステム130にアクセスしたデータの一部を返還する。
【0084】
図13は、本発明の一実施形態による図5に示す名称生成ユニット530を使用して客体名称180からファイル名称を生成する手続の一例を示すフローチャートである。図13の1305段階で、図1のKVFSシム140は客体名称180を受信する。客体名称180からファイル名称が生成される。1310段階で、図6のハッシュユニット605は図1の客体名称180にハッシュアルゴリズムを適用してハッシュ値を生成する。1315段階で、図6のASCII表示ユニット610はハッシュ値のASCII表示を生成し、それに従って図1のファイルシステム135内に有効なファイル名称を生成する。1320段階で、衝突インデックスユニット615はハッシュ値のASCII表示と衝突インデックスとを組合せて図1のメタデータ客体170に対する名称を生成する。図1のメタデータ客体170に対する名称は図1のオペレーティングシステム130で唯一であるか、又は少なくとも図1のファイル175を含むフォルダー内で唯一であることが保証される。
【0085】
図14は、本発明の一実施形態による図1に示すメタデータ客体170を変形する手続の一例を示すフローチャートである。図1の格納装置120がフラッシュ基盤の格納装置である場合、データは上書きされないことが想起される。代わりに、データを変形するために原本データは無効化され(後のガーベッジコレクションの対象になり)、変形されたデータを含む新しいデータ客体が書込まれる。図14の1410段階で、図1のKVFS145は図1のメタデータ客体170を図1の格納装置120から削除する。1415段階で、図1のKVFS145は図1の格納装置120に交替メタデータ客体を格納する。
【0086】
図9A図14を参照して、本発明の実施形態を示した。しかし、当業者はいずれかの段階の順序を変更するか、いずれかの段階を省略するか、又は図面に示さない連結を含ませることによって、他の実施形態が可能である。明確に記載したか、或いは記載しなくても、フローチャートのこのような全ての変形は本発明の実施形態と見做される。
【0087】
以下の説明は本発明の特定の思想が具現される機械又は適切な機械(machine)の一般的な説明を提供する。1つ以上の機械は、少なくとも一部で、キーボード、マウス等のような一般的な入力装置からの入力のみならず、他の機械から受信された命令語、仮想現実環境(virtual reality environment)、生体フィードバック、又は他の入力信号によって制御される。本明細書で使用したように、“機械(machine)”の用語は、単一機械、仮想マシン、又は機械、仮想マシン又は共に作動する装置が通信で連結されたシステムを広く含むものと意図する。例示的な機械は、パーソナルコンピュータ、ワークステーション、サーバー、携帯用コンピュータ、小型コンピュータ、電話機、タブレット等のようなコンピューティング装置のみならず、大衆交通、例えば、自動車、汽車、タクシー等のような運送装置を含む。
【0088】
1つ以上の機械は、プログラム可能か又はプログラム不可能なロジック装置又はアレイ、ASIC(Application Specific Integrated Circuit)、内装されたコンピュータ、スマートカード等のような内装されたコントローラを含む。1つ以上の機械はネットワークインターフェイス、モデム、又は他の通信連結等のように1つ以上の遠隔装置と1つ以上の連結を活用する。装置は、イントラネット、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)等のような物理的及び/又は論理的ネットワーク方法によって相互連結される。当業者は、ネットワーク通信が無線(RF:Radio Frequency)、衛星、マイクロウェーブ、IEEE(Institute of Electrical and Electronics Engineers)802.11、ブルートゥース(登録商標)、光、赤外線、ケーブル、レーザー等のような多様な有線又は無線短波長又は長波長キャリヤー及びプロトコルを活用できることを認知する。
【0089】
本発明の実施形態は機械によってアクセスされる際、機械で作業を遂行するか、又は要約データタイプ又は低レベルハードウェア構成を定義するようにする機能、手続、データ構造、アプリケーションプログラムを含む関連するデータを参照するか、又は関連して説明される。関連するデータは、揮発性又は不揮発性メモリ(例えば、RAM、ROM)に格納されるか、又はハードドライブ、フロッピー(登録商標)ディスク、光ストレージ、テープ、フラッシュメモリ、メモリスティック(登録商標)、デジタルビデオディスク、生体ストレージ等を含む関連するストレージ媒体及び他の格納装置に格納される。関連するデータは、物理的又は論理的ネットワークを含む伝送環境上でパケット、直列データ、並列データ、電波信号等のような形態で提供され、圧縮されるか又は暗号化された形式で使用される。関連するデータは、分散された環境で使用され、論理的又は遠隔に装置アクセスのために格納される。
【0090】
本発明の実施形態は1つ以上のプロセッサによって実行される命令語を含む類型の非一時的な機械読出し可能な記録媒体(tangible、non−transitory machine−readable medium)を含む。命令語は本明細書に記載したような本発明の構成要素を遂行するための命令語を含む。
【0091】
実施形態を参照して本発明の理論を説明したが、本実施形態は本発明の技術的思想から逸脱せずに変形され、他の適切な方式と組合される。そして、詳細な説明を特定の実施形態に集中させたが、他の構成が考慮される。特に、本明細書で“本発明の実施形態によると”のような表現を使用したが、このような表現は一般的に参照実施形態の可能性を意味し、本発明が特定の実施形態の構成に限定されることを意図しない。本明細書に記載したように、このような用語は他の実施形態と組合される同一の又は他の実施形態が参照される。
【0092】
上述した実施形態は本発明を限定するものではない。一部の実施形態を説明したが、当業者は本明細書の長所及び新しい特徴から逸脱せずに本発明の可能な多様な変形を容易に遂行し得る。従って、このような変形は特許請求の範囲に定義された本発明の思想内に含まれるように意図される。
【0093】
本発明の実施形態は、以下のステートメント(statements)に制限無しに拡張される。
【0094】
ステートメント1。本発明の実施形態はキーバリューシステム格納装置へのキャッシュアクセスシステムを含む。システムは、コンピュータ105と、コンピュータ105に含まれるプロセッサ110と、コンピュータ105に含まれるメモリ115と、メモリ115に格納されてプロセッサ110上で動作し、ページキャッシュ315を含むファイルシステム135と、メモリに格納されたキーバリューファイルシステム(KVFS:key−value file system)と、を備える。KVFS145は、ファイルシステム135からファイル175を識別するファイル名称185を含むファイルシステムコマンド310を受信する受信ユニット405と、ファイルシステムコマンド310をキーバリューシステムコマンド330にマッピングするマッピングユニット410と、キーバリューシステムコマンド330を格納装置120に伝送するコマンドユニット415と、キーバリューシステムコマンド330の結果をファイルシステム135に返還する返還ユニット420と、を含む。
【0095】
ステートメント2。本発明による実施形態はステートメント1に従うシステムを含む。格納装置120はファイル175に対するメタデータ客体170及びデータ客体165を格納する。
【0096】
ステートメント3。本発明による実施形態はステートメント1に従うシステムを含む。本発明による実施形態は、メモリ115に格納されてプロセッサ110上で動作してファイルシステムコマンド310を発行するアプリケーション125を更に含む。
【0097】
ステートメント4。本発明による実施形態はステートメント1に従うシステムを含む。本発明による実施形態は、メモリに格納されたKVFSシム140を更に含む。KVFSシム140は、客体名称180を含む第2キーバリューシステムコマンド305を受信する第2受信ユニット505と、第2キーバリューシステムコマンド305をファイルシステムコマンド310にマッピングする第2マッピングユニット510と、ファイルシステムコマンド310をファイルシステム135に伝送する第2コマンドユニット515と、を含む。
【0098】
ステートメント5。本発明による実施形態はステートメント1に従うシステムを含む。KVFSシム140は、ファイル175に対応するファイルディスクリプタ(710、720、730)を格納するファイルディスクリプタルックアップテーブル525を更に含む。
【0099】
ステートメント6。本発明による実施形態はステートメント5に従うシステムを含む。第2コマンドユニット515は、ファイルシステムコマンド310及びファイルディスクリプタ(710、720、730)をファイルシステム135に伝送するように動作する。
【0100】
ステートメント7。本発明による実施形態はステートメント5に従うシステムを含む。KVFSシム140は客体名称180からファイル名称185を生成する名称生成ユニット530を更に含む。
【0101】
ステートメント8。本発明による実施形態はステートメント7に従うシステムを含む。名称生成ユニット530は客体名称180をハッシュしてハッシュ値を生成するハッシュユニット605を含む。
【0102】
ステートメント9。本発明による実施形態はステートメント8に従うシステムを含む。名称生成ユニット530はハッシュ値のASCII表示としてファイル名称185を生成するASCII表示ユニット610を更に含む。
【0103】
ステートメント10。本発明による実施形態はステートメント9に従うシステムを含む。名称生成ユニット530はファイル名称185と衝突インデックスとを組合せる衝突インデックスユニット615を更に含む。
【0104】
ステートメント11。本発明による実施形態はステートメント1に従うシステムを含む。KVFS145はKVFSキャッシュ150を含む。
【0105】
ステートメント12。本発明による実施形態はステートメント11に従うシステムを含む。KVFSキャッシュ150は格納装置120から客体(165、170)に対するデータのコピー155を格納するように動作する。
【0106】
ステートメント13。本発明による実施形態はステートメント12に従うシステムを含む。返還ユニット140はKVFSキャッシュ150に格納された客体(165、170)に対するデータの一部のみをファイルシステム135に返還するように動作する。
【0107】
ステートメント14。本発明による実施形態はステートメント1に従うシステムを含む。KVFS145は格納装置120からの客体165に対するメタデータを格納するアイノード425を含む。
【0108】
ステートメント15。本発明の実施形態はメモリ115を含む。本発明の実施形態はメモリ115に格納されたデータ構造を含む。データ構造は、ファイル175に対する名称185と、ファイル175に対する生成日付805と、ファイル175に対する変形日付810と、ファイル175に対するアクセス日付815と、ファイル175に対する種類820と、ファイル175に対する大きさ830と、ファイル175に対する所有者と、データが格納された客体165に対する名称180と、を含む。
【0109】
ステートメント16。本発明の実施形態はステートメント15に従うメモリ115を含む。データを格納する客体165に対する名称180はデータを格納する客体165に対する名称180へのポインター840を含む。
【0110】
ステートメント17。本発明の実施形態はステートメント16に従うメモリ115を含む。データを格納する客体165に対する名称180はデータを格納する客体165に対する名称180の大きさ845を含む。
【0111】
ステートメント18。本発明の実施形態はステートメント15に従うメモリ115を含む。データ構造はデータを格納する客体165に対する複数の権限855を含む。
【0112】
ステートメント19。本発明の実施形態はステートメント18に従うメモリ115を含む。データを格納する客体165に対する複数の権限855はデータを格納する客体165に対する複数の権限855を格納する第2データ構造へのポインター850を含む。
【0113】
ステートメント20。本発明の実施形態はキーバリューシステム格納装置へのキャッシュアクセス方法を含む。方法は、ファイル175を識別するファイル名称185を含むファイルシステムコマンド310を受信する段階と、ファイルシステムコマンド310を客体165を識別する少なくとも1つの客体名称180で遂行される少なくとも1つのキーバリューシステムコマンド330にマッピングする段階と、キーバリューファイルシステム(KVFS:key−value file system)キャッシュ150を使用して少なくとも1つのキーバリューシステムコマンド330を満足させる段階と、少なくとも1つのキーバリューシステムコマンド330のキーバリューシステム結果335を受信する段階と、キーバリューシステム結果325を返還する段階と、を含む。
【0114】
ステートメント21。本発明の実施形態はステートメント20に従う方法を含む。ファイルシステムコマンド310を受信する段階は、第2客体165を識別する第2客体名称180を含む第2キーバリューシステムコマンド305を受信する段階(903)と、第2キーバリューシステムコマンド305をファイルシステムコマンド310にマッピングする段階(906)と、を含む。
【0115】
ステートメント22。本発明の実施形態はステートメント21に従う方法を含む。第2キーバリューシステムコマンド305を受信する段階(903)は、PUTコマンド、GETコマンド、及びDELETEコマンドを含むセットから得られる第2キーバリューシステムコマンド305を受信する段階(903)を含む。
【0116】
ステートメント23。本発明の実施形態はステートメント21に従う方法を含む。第2キーバリューシステムコマンド305をファイルシステムコマンド310にマッピングする段階(906)は第2客体名称180からファイル名称185を生成する段階(1310、1315、1320)を含む。
【0117】
ステートメント24。本発明の実施形態はステートメント23に従う方法を含む。第2客体名称180からファイル名称185を生成する段階(1310、1315、1320)は第2客体名称180にハッシュ機能を適用してファイル名称185を生成する段階(1310)を含む。
【0118】
ステートメント25。本発明の実施形態はステートメント24に従う方法を含む。第2客体名称180にハッシュ機能を適用してファイル名称185を生成する段階(1310)は、第2客体名称180にハッシュ機能を適用してハッシュ値を生成する段階(1310)と、ハッシュ値のASCII表示としてファイル名称185を生成する段階(1315)と、を含む。
【0119】
ステートメント26。本発明の実施形態はステートメント25に従う方法を含む。第2客体名称180からファイル名称185を生成する段階(1315)はハッシュ値のASCII表示と衝突インデックスとを組合せる段階(1320)を更に含む。
【0120】
ステートメント27。本発明の実施形態はステートメント21に従う方法を含む。ファイルシステムコマンド310を受信する段階(927)はファイル名称185に関連するファイルディスクリプタ(710、720、730)をファイルディスクリプタルックアップテーブル525で検索する段階(909)を含む。
【0121】
ステートメント28。本発明の実施形態はステートメント27に従う方法を含む。ファイルシステムコマンド310を受信する段階(927)は、ファイルディスクリプタルックアップテーブル525がファイル名称185を含まない場合、ファイル175に対するファイルディスクリプタ(710、720、730)を受信する段階(921)と、ファイルディスクリプタ(710、720、730)及びファイル名称185をファイルディスクリプタルックアップテーブル525に追加する段階(924)と、を更に含む。
【0122】
ステートメント29。本発明の実施形態はステートメント27に従う方法を含む。ファイルシステムコマンド310を受信する段階(927)は、ファイルディスクリプタルックアップテーブル525がファイル名称185を含む場合、ファイル名称185を使用してファイルディスクリプタルックアップテーブル525からファイル175に対するファイルディスクリプタ(710、720、730)をアクセスする段階(915)を更に含む。
【0123】
ステートメント30。本発明の実施形態はステートメント23に従う方法を含む。ファイルシステムコマンド310を受信する段階(927)は、格納装置120からファイル名称185によって識別されるメタデータ客体170を要請する段階(933)と、格納装置120からファイル175に対するメタデータを含むメタデータ客体170を受信する段階(936)と、を更に含む。
【0124】
ステートメント31。本発明の実施形態はステートメント30に従う方法を含む。ファイルシステムコマンド310を少なくとも1つのキーバリューシステムコマンド330にマッピングする段階(945)はメタデータ客体170から第2客体名称180にアクセスする段階(942)を含む。KVFSキャッシュ150を使用して少なくとも1つのキーバリューシステムコマンド330を満足させる段階(951)は、メタデータ客体170を使用して少なくとも1つのキーバリューシステムコマンド330を満足させるためにKVFSキャッシュ150を使用する段階(951)と、第2客体165を使用して少なくとも1つのキーバリューシステムコマンド330を満足させるためにKVFSキャッシュ150を使用する段階(951)と、を含む。
【0125】
ステートメント32。本発明の実施形態はステートメント31に従う方法を含む。メタデータ客体170から第2客体名称180をアクセスする段階(942)は、メタデータ客体170から第2客体165に対する第2客体名称180へのポインター840にアクセスする段階(942)と、第2客体名称180へのポインター840を使用して第2客体名称180を回収する段階(942)と、を含む。
【0126】
ステートメント33。本発明の実施形態はステートメント32に従う方法を含む。メタデータ客体170から第2客体165に対する第2客体名称180へのポインター840にアクセスする段階(942)はメタデータ客体170から第2客体名称180に対する名称長さ845及び第2客体名称180へのポインター840にアクセスする段階(942)を含む。第2客体名称180へのポインター840を使用して第2客体名称180を回収する段階(942)は第2客体名称180に対する名称長さ845及び第2客体名称180へのポインター840を使用して第2客体名称180を回収する段階(942)を含む。
【0127】
ステートメント34。本発明の実施形態はステートメント30に従う方法を含む。ファイルシステムコマンド310を受信する段階(927)はメタデータ客体170からのメタデータをアイノード425に格納する段階(939)を含む。
【0128】
ステートメント35。本発明の実施形態はステートメント34に従う方法を含む。キーバリューファイルシステム(KVFS:key−valuefilesystem)キャッシュ150を使用して少なくとも1つのキーバリューシステムコマンド330を満足させる段階(951)は少なくとも1つのキーバリューシステムコマンド330に応答してアイノード425を変形する段階(948)を含む。
【0129】
ステートメント36。本発明の実施形態はステートメント35に従う方法を含む。少なくとも1つのキーバリューシステムコマンド330に応答してアイノード425を変形する段階(948)は、格納装置120からメタデータ客体170を削除する段階(1410)と、交替メタデータ客体170を格納装置120に格納する段階(1415)と、を含む。
【0130】
ステートメント37。本発明の実施形態はステートメント20に従う方法を含む。キーバリューファイルシステム(KVFS:key−value file system)キャッシュ150を使用して少なくとも1つのキーバリューシステムコマンド330を満足させる段階(951)はKVFSキャッシュ150で客体150を検索する段階(954)を含む。
【0131】
ステートメント38。本発明の実施形態はステートメント37に従う方法を含む。少なくとも1つのキーバリューシステムコマンド330のキーバリューシステム結果335を受信する段階(972)は、KVFSキャッシュ150が客体165を格納する場合、KVFSキャッシュ150から客体165に対するデータにアクセスする段階(969)を含む。
【0132】
ステートメント39。本発明の実施形態はステートメント38に従う方法を含む。少なくとも1つのキーバリューシステムコマンド330のキーバリューシステム結果335を受信する段階(972)は、KVFSキャッシュ150が客体165を格納しない場合、キーバリューシステムコマンド330を格納装置120に伝送する段階(960)と、客体165に対するデータを格納装置120から受信する段階(963)と、データをKVFSキャッシュ150に格納する段階(966)と、を含む。
【0133】
ステートメント40。本発明の実施形態はステートメント37に従う方法を含む。少なくとも1つのキーバリューシステムコマンド330のキーバリューシステム結果335を受信する段階(972)は、客体165に対するデータの一部のみを受信する段階(969)と、キーバリューシステム結果325としてデータの一部を返還する段階(972)と、を含む。
【0134】
ステートメント41。本発明の実施形態はキーバリューシステム格納装置へのキャッシュアクセス方法を含む。方法は、客体165を識別する客体名称180を含むキーバリューシステムコマンド330を受信する段階(1005)と、キーバリューシステムコマンド330をファイルシステムコマンド310にマッピングする段階310と、ファイルシステムコマンド310を格納装置120に伝送する段階(1045)と、を含む。
【0135】
ステートメント42。本発明の実施形態はステートメント41に従う方法を含む。キーバリューシステムコマンド330を受信する段階(1005)は、PUTコマンド、GETコマンド、及びDELETEコマンドを含むセットから得られるキーバリューシステムコマンド330を受信する段階(1005)を含む。
【0136】
ステートメント43。本発明の実施形態はステートメント41に従う方法を含む。キーバリューシステムコマンド330をファイルシステムコマンド310にマッピングする段階(1010)は客体名称180からファイル名称185を生成する段階(1310、1315、1320)を含む。
【0137】
ステートメント44。本発明の実施形態はステートメント43に従う方法を含む。客体名称180からファイル名称185を生成する段階(1310、1315、1320)は客体名称180にハッシュ機能を適用してファイル名称185を生成する段階(1310)を含む。
【0138】
ステートメント45。本発明の実施形態はステートメント44に従う方法を含む。客体名称180にハッシュ機能を適用してファイル名称185を生成する段階(1310)は、客体名称180にハッシュ機能を適用してハッシュ値を生成する段階(1310)と、ハッシュ値のASCII表示としてファイル名称185を生成する段階(1315)と、を含む。
【0139】
ステートメント46。本発明の実施形態はステートメント45に従う方法を含む。客体名称180からファイル名称185を生成する段階(1315)はハッシュ値のASCII表示と衝突インデックスとを組合せる段階(1320)を含む。
【0140】
ステートメント47。本発明の実施形態はステートメント41に従う方法を含む。キーバリューシステムコマンド330をファイルシステムコマンド310にマッピングする段階(1010)はファイルディスクリプタルックアップテーブル525でファイル名称185に関連するファイルディスクリプタ(710、720、730)を検索する段階(1015)を含む。
【0141】
ステートメント48。本発明の実施形態はステートメント47に従う方法を含む。キーバリューシステムコマンド330をファイルシステムコマンド310にマッピングする段階(1010)は、ファイルディスクリプタルックアップテーブル525にファイル名称185が含まれない場合、客体165に対応するファイル175に対するファイルディスクリプタ(710、720、730)を受信する段階(1035)と、ファイルディスクリプタ(710、720、730)及びファイル名称185をファイルディスクリプタルックアップテーブル525に追加する段階(1040)と、を更に含む。
【0142】
ステートメント49。本発明の実施形態はステートメント47に従う方法を含む。キーバリューシステムコマンド330をファイルシステムコマンド310にマッピングする段階(1010)は、ファイルディスクリプタルックアップテーブル525がファイル名称185を含む場合、ファイル名称185を使用してファイルディスクリプタルックアップテーブル525からファイル175に対するファイルディスクリプタ(710、720、730)にアクセスする段階(1025)を更に含む。
【0143】
ステートメント50。本発明の実施形態はステートメント41に従う方法を含む。方法はファイルシステムコマンド310の結果320を返還する段階(1050)を更に含む。
【0144】
ステートメント51。本発明の実施形態はキーバリューシステム格納装置へのキャッシュアクセス方法を含む。方法は、ファイル175を識別するファイルシステムコマンド310を受信する段階(1105)と、ファイル175に対応するアイノード425にアクセスする段階(1120)と、格納装置120に格納された客体165を識別する客体名称180をアイノード425からアクセスする段階(1125)と、キーバリューファイルシステム(KVFS:key−value file system)キャッシュ150の客体165に対してコマンドを遂行する段階(1155)と、コマンドの結果325を返還する段階(1160)と、を含む。
【0145】
ステートメント52。本発明の実施形態はステートメント51に従う方法を含む。ファイルシステムコマンド310を受信する段階(1105)はファイルディスクリプタ(710、720、730)を含むファイルシステムコマンド310を受信する段階(1105)を含む。ファイル175に対応するアイノード425にアクセスする段階(1120)はファイルディスクリプタ(710、720、730)に対応するアイノード425にアクセスする段階(1120)を含む。
【0146】
ステートメント53。本発明の実施形態はステートメント51に従う方法を含む。キーバリューファイルシステム(KVFS:key−value file system)キャッシュ150の客体165に対してコマンドを遂行する段階(1155)は、客体名称180をKVFSキャッシュ150で検索する段階(1205)と、客体名称180を有する客体165がKVFSキャッシュ150に存在する場合、KVFSキャッシュ150の客体165に対してコマンドを遂行する段階(1215)と、を含む。
【0147】
ステートメント54。本発明の実施形態はステートメント53に従う方法を含む。KVFSキャッシュ150の客体165に対してコマンドを遂行する段階(1215)は、客体名称180を有する客体165がKVFSキャッシュ150に含まれない場合、ファイルシステムコマンド310をキーバリューシステムコマンド330にマッピングする段階(1220)と、客体名称180を有する客体165に対するキーバリューシステムコマンド330を格納装置120に伝送する段階(1225)と、格納装置120から客体165を受信する段階(1230)と、KVFSキャッシュ150に客体165を格納する段階(1235)と、を含む。
【0148】
ステートメント55。本発明の実施形態はステートメント54に従う方法を含む。キーバリューシステムコマンド330の結果320を返還する段階(1160)は、客体165に対するデータの一部のみにアクセスする段階(1245)と、キーバリューシステム結果325としてデータの一部を返還する段階(1250)と、を含む。
【0149】
ステートメント56。本発明の実施形態はステートメント51に従う方法を含む。方法は、ファイルディスクリプタ(710、720、730)に対応するアイノード425を検索できない場合、格納装置120からファイル名称185によって識別されるメタデータ客体170を要請する段階(1130)と、格納装置120からファイル175に対するメタデータを含むメタデータ客体170を受信する段階(1135)と、メタデータ客体170からメタデータを取出す段階(1140)と、メタデータを使用してアイノード425を生成する段階(1150)と、を更に含む。
【0150】
ステートメント57。本発明の実施形態はステートメント56に従う方法を含む。メタデータ客体170からメタデータを取出す段階(1140)はメタデータ客体170から客体165に対する客体名称180へのポインター840にアクセスする段階(1145)を含む。
【0151】
ステートメント58。本発明の実施形態はステートメント57に従う方法を含む。メタデータ客体170から客体165に対する客体名称180へのポインター840にアクセスする段階(1145)はメタデータ客体180から客体名称180に対する名称長さ845及び客体名称180へのポインターにアクセスする段階(1145)を含む。
【0152】
ステートメント59。本発明の実施形態はステートメント51に従う方法を含む。キーバリューファイルシステム(KVFS:key−value file system)キャッシュ150の客体165に対してコマンドを遂行する段階(1155)はファイルシステムコマンド310に応答してアイノード425を変形する段階を含む。
【0153】
ステートメント60。本発明の実施形態はステートメント59に従う方法を含む。キーバリューファイルシステム(KVFS:key−value file system)キャッシュ150の客体165に対してコマンドを遂行する段階(1155)は、格納装置120からメタデータ客体170を削除する段階(1410)と、格納装置120に交替メタデータ客体170を格納する段階(1415)と、を含む。
【0154】
ステートメント61。本発明の実施形態はキーバリューシステム格納装置へのキャッシュアクセス方法を含む。方法は、格納装置120に格納された客体170を識別する客体名称180を受信する段階(1305)と、客体名称180にハッシュ機能を適用してファイル名称185を生成する段階(1310)と、を含む。
【0155】
ステートメント62。本発明の実施形態はステートメント61に従う方法を含む。方法はファイル名称185をハッシュ値のASCII表示として生成する段階(1315)を更に含む。
【0156】
ステートメント63。本発明の実施形態はステートメント62に従う方法を含む。ファイル名称185をハッシュ値のASCII表示として生成する段階(1315)はハッシュ値のASCII表示と衝突インデックスとを組合せる段階(1320)を含む。
【0157】
ステートメント64。本発明の実施形態は非一時的な命令語を含む類型の格納媒体を含む製品(又は物品)を含む。非一時的な命令語がマシン105で実行される際、ファイル175を識別するファイル名称185を含むファイルシステムコマンド310を受信(927)し、ファイルシステムコマンド310を客体165を識別する少なくとも1つの客体名称180に対する少なくとも1つのキーバリューシステムコマンド330にマッピング(945)し、キーバリューファイルシステム(KVFS:key−value file system)キャッシュ150を使用して少なくとも1つのキーバリューシステムコマンド330を満足(951)させ、少なくとも1つのキーバリューシステムコマンド330のキーバリューシステム結果335を受信(975)し、キーバリューシステム結果325を返還することが実行される。
【0158】
ステートメント65。本発明の実施形態はステートメント64に従う製品を含む。ファイルシステムコマンド310を受信すること(927)は、第2客体165を識別する第2客体名称180を含む第2キーバリューシステムコマンド305を受信すること(903)と、第2キーバリューシステムコマンド305をファイルシステムコマンド310にマッピングすること(906)と、を含む。
【0159】
ステートメント66。本発明の実施形態はステートメント65に従う製品を含む。第2キーバリューシステムコマンド305を受信すること(903)は、PUTコマンド、GETコマンド、及びDELETEコマンドを含むセットから得られる第2キーバリューシステムコマンド305を受信すること(903)を含む。
【0160】
ステートメント67。本発明の実施形態はステートメント65に従う製品を含む。第2キーバリューシステムコマンド305をファイルシステムコマンド310にマッピングすること(906)は第2客体名称180からファイル名称185を生成すること(1310、1315、1320)を含む。
【0161】
ステートメント68。本発明の実施形態はステートメント23に従う製品を含む。第2客体名称180からファイル名称185を生成すること(1310、1315、1320)は第2客体名称180にハッシュ機能を適用してファイル名称185を生成すること(1310)を含む。
【0162】
ステートメント69。本発明の実施形態はステートメント68に従う製品を含む。第2客体名称180にハッシュ機能を適用してファイル名称185を生成すること(1310)は、第2客体名称180にハッシュ機能を適用してハッシュ値を生成すること(1310)と、ハッシュ値のASCII表示としてファイル名称185を生成すること(1315)と、を含む。
【0163】
ステートメント70。本発明の実施形態はステートメント69に従う製品を含む。第2客体名称180からファイル名称185を生成すること(1315)はハッシュ値のASCII表示と衝突インデックスとを組合せること(1320)を更に含む。
【0164】
ステートメント71。本発明の実施形態はステートメント65に従う製品を含む。ファイルシステムコマンド310を受信すること(927)はファイル名称185に関連するファイルディスクリプタ(710、720、730)をファイルディスクリプタルックアップテーブル525で検索すること(909)を含む。
【0165】
ステートメント72。本発明の実施形態はステートメント71に従う製品を含む。ファイルシステムコマンド310を受信すること(927)は、ファイルディスクリプタルックアップテーブル525がファイル名称185を含まない場合、ファイル175に対するファイルディスクリプタ(710、720、730)を受信すること(921)と、ファイルディスクリプタ(710、720、730)及びファイル名称185をファイルディスクリプタルックアップテーブル525に追加すること(924)と、を更に含む。
【0166】
ステートメント73。本発明の実施形態はステートメント71に従う製品を含む。ファイルシステムコマンド310を受信する段階(927)は、ファイルディスクリプタルックアップテーブル525がファイル名称185を含む場合、ファイル名称185を使用してファイルディスクリプタルックアップテーブル525からファイル175に対するファイルディスクリプタ(710、720、730)にアクセスすること(915)を更に含む。
【0167】
ステートメント74。本発明の実施形態はステートメント67に従う製品を含む。ファイルシステムコマンド310を受信すること(927)は、格納装置120からファイル名称185によって識別されるメタデータ客体170を要請すること(933)と、格納装置120からファイル175に対するメタデータを含むメタデータ客体170を受信すること(936)と、を更に含む。
【0168】
ステートメント75。本発明の実施形態はステートメント74に従う製品を含む。ファイルシステムコマンド310を少なくとも1つのキーバリューシステムコマンド330にマッピングすること(945)はメタデータ客体170から第2客体名称180にアクセスすること(942)を含む。KVFSキャッシュ150を使用して少なくとも1つのキーバリューシステムコマンド330を満足させること(951)は、メタデータ客体170を使用して少なくとも1つのキーバリューシステムコマンド330を満足させるためにKVFSキャッシュ150を使用すること(951)と、第2客体165を使用して少なくとも1つのキーバリューシステムコマンド330を満足させるためにKVFSキャッシュ150を使用すること(951)と、を含む。
【0169】
ステートメント76。本発明の実施形態はステートメント75に従う製品を含む。メタデータ客体170から第2客体名称180にアクセスすること(942)は、メタデータ客体170から第2客体165に対する第2客体名称180へのポインター840にアクセスすること(942)と、第2客体名称180へのポインター840を使用して第2客体名称180を回収すること(942)と、を含む。
【0170】
ステートメント77。本発明の実施形態はステートメント76に従う製品を含む。メタデータ客体170から第2客体165に対する第2客体名称180へのポインター840にアクセスすること(942)はメタデータ客体170から第2客体名称180に対する名称長さ845及び第2客体名称180へのポインター840にアクセスすること(942)を含む。第2客体名称180へのポインター840を使用して第2客体名称180を回収すること(942)は第2客体名称180に対する名称長さ845及び第2客体名称180へのポインター840を使用して第2客体名称180を回収すること(942)を含む。
【0171】
ステートメント78。本発明の実施形態はステートメント74に従う製品を含む。ファイルシステムコマンド310を受信すること(927)はメタデータ客体170からのメタデータをアイノード425に格納すること(939)を含む。
【0172】
ステートメント79。本発明の実施形態はステートメント79に従う製品を含む。キーバリューファイルシステム(KVFS:key−value file system)キャッシュ150を使用して少なくとも1つのキーバリューシステムコマンド330を満足させること(951)は少なくとも1つのキーバリューシステムコマンド330に応答してアイノード425を変形すること(948)を含む。
【0173】
ステートメント80。本発明の実施形態はステートメント79に従う製品を含む。少なくとも1つのキーバリューシステムコマンド330に応答してアイノード425を変形すること(948)は、格納装置120からメタデータ客体170を削除すること(1410)と、交替メタデータ客体170を格納装置120に格納すること(1415)と、を含む。
【0174】
ステートメント81。本発明の実施形態はステートメント64に従う製品を含む。キーバリューファイルシステム(KVFS:key−value file system)キャッシュ150を使用して少なくとも1つのキーバリューシステムコマンド330を満足させること(951)はKVFSキャッシュ150で客体150を検索すること(954)を含む。
【0175】
ステートメント82。本発明の実施形態はステートメント81に従う製品を含む。少なくとも1つのキーバリューシステムコマンド330のキーバリューシステム結果335を受信すること(972)は、KVFSキャッシュ150が客体165を格納する場合、KVFSキャッシュ150から客体165に対するデータにアクセスすること(969)を含む。
【0176】
ステートメント83。本発明の実施形態はステートメント82に従う製品を含む。少なくとも1つのキーバリューシステムコマンド330のキーバリューシステム結果335を受信すること(972)は、KVFSキャッシュ150が客体165を格納しない場合、キーバリューシステムコマンド330を格納装置120に伝送すること(960)と、客体165に対するデータを格納装置120から受信すること(963)と、データをKVFSキャッシュ150に格納すること(966)と、を含む。
【0177】
ステートメント84。本発明の実施形態はステートメント81に従う製品を含む。少なくとも1つのキーバリューシステムコマンド330のキーバリューシステム結果335を受信すること(972)は、客体165に対するデータの一部のみを受信すること(969)と、キーバリューシステム結果325としてデータの一部を返還すること(972)と、を含む。
【0178】
ステートメント85。本発明の実施形態は非一時的な命令語を含む類型の格納媒体を含む製品(又は物品)を含む。非一時的な命令語がマシン105で実行される際、客体165を識別する客体名称180を含むキーバリューシステムコマンド330を受信すること(1005)と、キーバリューシステムコマンド330をファイルシステムコマンド310にマッピングすること310と、ファイルシステムコマンド310を格納装置120に伝送すること(1045)と、が実行される。
【0179】
ステートメント86。本発明の実施形態はステートメント85に従う製品を含む。キーバリューシステムコマンド330を受信すること(1005)は、PUTコマンド、GETコマンド、及びDELETEコマンドを含むセットから得られるキーバリューシステムコマンド330を受信すること(1005)を含む。
【0180】
ステートメント87。本発明の実施形態はステートメント88に従う製品を含む。キーバリューシステムコマンド330をファイルシステムコマンド310にマッピングすること(1010)は客体名称180からファイル名称185を生成すること(1310、1315、1320)を含む。
【0181】
ステートメント88。本発明の実施形態はステートメント87に従う製品を含む。客体名称180からファイル名称185を生成すること(1310、1315、1320)は客体名称180にハッシュ機能を適用してファイル名称185を生成すること(1310)を含む。
【0182】
ステートメント89。本発明の実施形態はステートメント88に従う製品を含む。客体名称180にハッシュ機能を適用してファイル名称185を生成すること(1310)は、客体名称180にハッシュ機能を適用してハッシュ値を生成すること(1310)と、ハッシュ値のASCII表示としてファイル名称185を生成すること(1315)と、を含む。
【0183】
ステートメント90。本発明の実施形態はステートメント89に従う製品を含む。客体名称180からファイル名称185を生成すること(1315)はハッシュ値のASCII表示と衝突インデックスとを組合せること(1320)を含む。
【0184】
ステートメント91。本発明の実施形態はステートメント85に従う製品を含む。キーバリューシステムコマンド330をファイルシステムコマンド310にマッピングすること(1010)はファイルディスクリプタルックアップテーブル525でファイル名称185に関連するファイルディスクリプタ(710、720、730)を検索すること(1015)を含む。
【0185】
ステートメント92。本発明の実施形態はステートメント91に従う製品を含む。キーバリューシステムコマンド330をファイルシステムコマンド310にマッピングすること(1010)は、ファイルディスクリプタルックアップテーブル525にファイル名称185が含まれない場合、客体165に対応するファイル175に対するファイルディスクリプタ(710、720、730)を受信すること(1035)と、ファイルディスクリプタ(710、720、730)及びファイル名称185をファイルディスクリプタルックアップテーブル525に追加すること(1040)と、を更に含む。
【0186】
ステートメント93。本発明の実施形態はステートメント91に従う製品を含む。キーバリューシステムコマンド330をファイルシステムコマンド310にマッピングすること(1010)は、ファイルディスクリプタルックアップテーブル525がファイル名称185を含む場合、ファイル名称185を使用してファイルディスクリプタルックアップテーブル525からファイル175に対するファイルディスクリプタ(710、720、730)にアクセスすること(1025)を更に含む。
【0187】
ステートメント94。本発明の実施形態はステートメント85に従う製品を含む。命令語がマシン105によって実行される際、ファイルシステムコマンド310の結果320を返還すること(1050)が実行される。
【0188】
ステートメント95。本発明の実施形態は非一時的な命令語を含む類型の格納媒体を含む製品(又は物品)を含む。非一時的な命令語がマシン105で実行される際、ファイル175を識別するファイルシステムコマンド310を受信すること(1105)と、ファイル175に対応するアイノード425にアクセスすること(1120)と、格納装置120に格納された客体165を識別する客体名称180をアイノード425からアクセスすること(1125)と、キーバリューファイルシステム(KVFS:key−value file system)キャッシュ150の客体165に対してコマンドを遂行すること(1155)と、コマンドの結果325を返還すること(1160)と、が実行される。
【0189】
ステートメント96。本発明の実施形態はステートメント95に従う製品を含む。ファイルシステムコマンド310を受信すること(1105)はファイルディスクリプタ(710、720、730)を含むファイルシステムコマンド310を受信すること(1105)を含む。ファイル175に対応するアイノード425にアクセスすること(1120)はファイルディスクリプタ(710、720、730)に対応するアイノード425にアクセスすること(1120)を含む。
【0190】
ステートメント97。本発明の実施形態はステートメント95に従う製品を含む。キーバリューファイルシステム(KVFS:key−value file system)キャッシュ150の客体165に対してコマンドを遂行すること(1155)は、客体名称180をKVFSキャッシュ150で検索すること(1205)と、客体名称180を有する客体165がKVFSキャッシュ150に存在する場合、KVFSキャッシュ150の客体165に対してコマンドを遂行すること(1215)と、を含む。
【0191】
ステートメント98。本発明の実施形態はステートメント97に従う製品を含む。KVFSキャッシュ150の客体165に対してコマンドを遂行すること(1215)は、客体名称180を有する客体165がKVFSキャッシュ150に含まれない場合、ファイルシステムコマンド310をキーバリューシステムコマンド330にマッピングすること(1220)と、客体名称180を有する客体165に対するキーバリューシステムコマンド330を格納装置120に伝送すること(1225)と、格納装置120から客体165を受信すること(1230)と、KVFSキャッシュ150に客体165を格納すること(1235)と、を含む。
【0192】
ステートメント99。本発明の実施形態はステートメント98に従う製品を含む。キーバリューシステムコマンド330の結果320を返還すること(1160)は、客体165に対するデータの一部のみにアクセスすること(1245)と、キーバリューシステム結果325としてデータの一部を返還すること(1250)と、を含む。
【0193】
ステートメント100。本発明の実施形態はステートメント95に従う製品を含む。命令語がマシン105によって実行される際、ファイルディスクリプタ(710、720、730)に対応するアイノード425を検索できない場合、格納装置120からファイル名称185によって識別されるメタデータ客体170を要請すること(1130)と、格納装置120からファイル175に対するメタデータを含むメタデータ客体170を受信すること(1135)と、メタデータ客体170からメタデータを取出すこと(1140)と、メタデータを使用してアイノード425を生成すること(1150)と、が実行される。
【0194】
ステートメント101。本発明の実施形態はステートメント100に従う製品を含む。メタデータ客体170からメタデータを取出すこと(1140)はメタデータ客体170から客体165に対する客体名称180へのポインター840にアクセスすること(1145)を含む。
【0195】
ステートメント102。本発明の実施形態はステートメント101に従う製品を含む。メタデータ客体170から客体165に対する客体名称180へのポインター840にアクセスすること(1145)はメタデータ客体180から客体名称180に対する名称長さ845及び客体名称180へのポインターにアクセスすること(1145)を含む。
【0196】
ステートメント103。本発明の実施形態はステートメント95に従う製品を含む。キーバリューファイルシステム(KVFS:key−valuefilesystem)キャッシュ150の客体165に対してコマンドを遂行すること(1155)はファイルシステムコマンド310に応答してアイノード425を変形することを含む。
【0197】
ステートメント104。本発明の実施形態はステートメント103に従う製品を含む。キーバリューファイルシステム(KVFS:key−value file system)キャッシュ150の客体165に対してコマンドを遂行すること(1155)は、格納装置120からメタデータ客体170を削除すること(1410)と、格納装置120に交替メタデータ客体170を格納すること(1415)と、を含む。
【0198】
ステートメント105。本発明の実施形態は非一時的な命令語を含む類型の格納媒体を含む製品(又は物品)を含む。非一時的な命令語がマシン105で実行される際、格納装置120に格納された客体170を識別する客体名称180を受信すること(1305)と、客体名称180にハッシュ機能を適用してファイル名称185を生成すること(1310)と、が実行される。
【0199】
ステートメント106。本発明の実施形態はステートメント105に従う製品を含む。命令語がマシン105で実行される際、ファイル名称185をハッシュ値のASCII表示として生成すること(1315)が実行される。
【0200】
ステートメント107。本発明の実施形態はステートメント106に従う製品を含む。ファイル名称185をハッシュ値のASCII表示として生成すること(1315)はハッシュ値のASCII表示と衝突インデックスとを組合せること(1320)を含む。
【0201】
以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
【符号の説明】
【0202】
105 コンピュータ
110 プロセッサ
115 メモリ
120 格納装置
125 アプリケーション
130 オペレーティングシステム
135 ファイルシステム
140 KVFSシム
145 キーバリューファイルシステム(KVFS)
150 KVFSキャッシュ
155 データ客体(コピー)
160 メタデータ客体(コピー)
165 データ客体
170 メタデータ客体
175 ファイル
180 客体名称
185 ファイル名称
215 メモリコントローラ
220 クロック
230 ネットワークコネクター
240 バス
245 使用者インターフェイス
250 I/O(入力/出力)エンジン
305、330 キーバリューシステムコマンド
310 ファイルシステムコマンド
315 ページキャッシュ
320、325、335 結果
405、505 受信ユニット
410、510 マッピングユニット
415、515 コマンドユニット
420、520 返還ユニット
425 アイノード
525 ファイルディスクリプタルックアップテーブル
530 名称生成ユニット
605 ハッシュユニット
610 ASCII表示ユニット
615 衝突インデックスユニット
705、715、725 第1〜第3ハッシュ
710、720、730 第1〜第3ファイルディスクリプタ
805 生成された日付
810 変更された日付
815 アクセスされた日付
820 種類
825 大きさ
830 コンテナ
835 所有者
840、850 ポインター
845 長さ
855 権限
図1
図2
図3A
図3B
図4
図5
図6
図7
図8
図9A
図9B
図9C
図9D
図9E
図10A
図10B
図11A
図11B
図12A
図12B
図13
図14