JP2017504924A - ファイルシステムのコンテンツベースの編成 - Google Patents
ファイルシステムのコンテンツベースの編成 Download PDFInfo
- Publication number
- JP2017504924A JP2017504924A JP2016567483A JP2016567483A JP2017504924A JP 2017504924 A JP2017504924 A JP 2017504924A JP 2016567483 A JP2016567483 A JP 2016567483A JP 2016567483 A JP2016567483 A JP 2016567483A JP 2017504924 A JP2017504924 A JP 2017504924A
- Authority
- JP
- Japan
- Prior art keywords
- hash
- file
- pointer
- content
- data object
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
Abstract
コンテンツアドレス可能オブジェクトストア上のファイルシステムを編成し及び管理するための方法及びシステムが提供される。ユーザコンテンツが、コンテンツアドレス可能オブジェクトストアにおけるアドレスに関連付けられたコンテンツハッシュを含むレコードに関連付けられる。コンテンツハッシュは、ユーザコンテンツの関数であり、ファイルをデータオブジェクトに分割することと、データオブジェクト上にハッシュのポインタツリーを生成することと、ポインタツリーのルートのハッシュを算出することとによって決定される。レコード、ポインタツリー、及びファイルが、オブジェクトストアに記憶される。オブジェクトストアからユーザコンテンツを読み出すことが、レコードを読み出すことと、コンテンツハッシュを取り出してポインタツリーのルートを発見することと、ポインタツリーのリーフを下降して、ユーザコンテンツに関連付けられたデータオブジェクトのハッシュを読み出すことと、データオブジェクトを順次ファイルデータにおいて再組立することとを含む。
Description
関連出願の相互参照
本出願は、2014年2月4日に申請された米国仮出願第61/935,618号の利益を主張する。前述された出願の開示は、すべての目的について、本明細書において参照により援用される。
本出願は、2014年2月4日に申請された米国仮出願第61/935,618号の利益を主張する。前述された出願の開示は、すべての目的について、本明細書において参照により援用される。
本開示は、概してデータ処理に関し、より具体的には、コンピュータファイルシステムの編成及び管理のための方法及びシステムに関する。
本セクションに説明されるアプローチは、追求されたことがある可能性があるが、必ずしもこれまでに着想され、あるいは追求されてきたアプローチではない。それゆえに、他に示されない限り、本セクションに説明されるアプローチのいずれも、単に本セクションに含まれるという理由で従来技術と見なすと仮定されるべきではない。
コンピュータシステムにおいて、ハードディスクなどの記憶装置上に保有されるデータは、ファイルシステムとして編成される。大抵、ファイルシステムはツリー構造を有し、ルートディレクトリ、ディレクトリ、サブディレクトリ、及びファイルから成る。ファイルシステム内の各オブジェクト、すなわち、ファイル又はディレクトリは、オブジェクト識別子(ID)と、“Iノード”と呼ばれる特別なレコードとを有し、上記Iノードは、オブジェクトに関連付けられた属性、例えば、バイト単位のファイルサイズ、ブロック割り振り、所有者ユーザID、所有者のグループID、最後の修正の時間などを保持する。
コンテンツアドレス可能ファイルシステムにおいて、オブジェクトIDは、ユーザ又はメタデータコンテンツ上で数学的関数を実行することによって作成される。伝統的なファイルシステムにおいて、オブジェクトIDは、典型的に、使用されていない識別子のリストから選ばれる。
大抵のファイルシステムは、ファイルの最新バージョンのみ保有する。ユーザがより古いバージョンのファイル又はディレクトリを保有したい場合、ユーザはこれらを手動で保存し、あるいは特別なバージョニングソフトウェアを使用して異なるバージョンから成る複数のバージョンの記録をつけなければならない。データのバックアップが管理者によって定期的に実行されることがあり、ユーザは、より古いバージョンのファイルを得るためには、管理者にコンタクトをとる必要がある。
本発明の概要は、以下に詳細な説明においてさらに説明される概念のうち選択されたものを簡素化された形式において導入するために提供される。本発明の概要は、請求される対象事項の重要な特徴又は必須の特徴を識別するものではなく、請求される対象事項の範囲を決定することの助けとして用いられるべきものでもない。
本明細書に説明されるテクノロジーは、コンピュータ記憶装置におけるファイルシステムの編成及び管理の方法である。ファイルシステムは、コンテンツアドレス可能分散オブジェクトストアの上に構築される。
一例示的な実施形態に従い、方法が、レコードをユーザコンテンツに関連付けることを含む。レコードは、ユーザコンテンツに関連付けられた属性を含むことができる。属性は、コンテンツアドレス可能オブジェクトストア内のオブジェクトに関連付けられたコンテンツハッシュを少なくとも含むことができる。方法は、ユーザコンテンツを複数のデータオブジェクトに分割することを可能にすることができる。各データオブジェクトは、所定の最小サイズを有する。方法は、複数のデータオブジェクトのうちの各データオブジェクトについて、それぞれのデータオブジェクトハッシュを生成することを含む。データオブジェクトハッシュは、データオブジェクトに関連付けられたそれぞれのデータオブジェクトコンテンツの関数である。方法は、データオブジェクトハッシュに基づいて、コンテンツハッシュを決定することをさらに含む。
いくつかの実施形態において、コンテンツハッシュを決定することは、複数のデータオブジェクトの中のオブジェクトの数を算出することを含む。オブジェクトの数が1である場合、コンテンツハッシュはデータオブジェクトハッシュに設定される。オブジェクトの数が2以上である場合、データオブジェクトハッシュに基づいて、ポインタツリーが生成される。ポインタツリーの生成は、データオブジェクトハッシュを複数のポインタオブジェクトにグループ化することを含む。ポインタオブジェクトは、ポインタツリーにおけるレイヤのリーフとして割り当てられる。レイヤが2つ以上のリーフを含む場合、ポインタツリーの次レイヤが構築される。次レイヤの構築は、ポインタオブジェクトの各々について、ポインタハッシュを生成することを含む。ポインタハッシュは、ポインタオブジェクトに関連付けられたそれぞれのポインタオブジェクトコンテンツの関数である。次レイヤの構築は、ポインタハッシュを複数のさらなるポインタオブジェクトにグループ化することを含む。次レイヤの構築は、さらなるポインタオブジェクトをポインタツリーにおけるさらなるレイヤのリーフとして割り当てることを含む。ポインタハッシュの生成、ポインタハッシュのグループ化、及びさらなるポインタオブジェクトの割り当ては、1つのリーフを有する最終レイヤが受信されるまで繰り返される。最終レイヤのリーフは、ポインタツリーのルートとして割り当てられる。ルートハッシュが、ポインタツリーのルートのコンテンツに基づいて計算され、レコードのコンテンツハッシュは、ルートポインタハッシュに設定される。
いくつかの実施形態において、ポインタツリーの深さは、下記の式:MaxFileSize = BLKSZ x (truncate(BLKSZ÷SMASHSZ))depthによって決定される。MaxFileSizeは、コンテンツエンティティのサイズである。BLKSZは、所定の最小サイズである。SMASHSZは、コンテンツハッシュのサイズである。truncateは、実数の関数であり、実数の整数部分を返す。
いくつかの実施形態において、ユーザコンテンツは、下記のうち1つ以上を含む:データファイル、及びフォルダ。
いくつかの実施形態において、フォルダは、さらなるレコードに関連付けられた少なくとも1つのフォルダエントリを含む。上記さらなるレコードは、さらなるユーザコンテンツに関連付けられる。フォルダエントリは、下記のうち少なくとも1つを含む:さらなるユーザコンテンツのタイプに関連付けられた、エントリのタイプ、さらなるユーザコンテンツに関連付けられた名前、さらなるユーザコンテンツに関連付けられた名前の長さ、及びさらなるレコードに関連付けられた、エントリの属性。さらなるレコードハッシュが、さらなるレコードの属性に基づいて生成される。
いくつかの実施形態において、フォルダは、さらなるレコードに関連付けられた1つ以上のエントリを含み、さらなるレコードの各々は、ユーザコンテンツについての一意の時間バージョンに関連付けられる。
いくつかの実施形態において、レコードの属性は、前のレコードハッシュを含む。前のレコードハッシュは、前のレコードの属性に関連付けられたコンテンツに基づいて生成される。前のレコードは、ユーザコンテンツのそれぞれの前のバージョンに関連付けられる。
いくつかの実施形態において、上記方法は、ユーザコンテンツの変更に応答して、ユーザコンテンツに関連付けられたポインタツリーを少なくとも部分的に再生成することをさらに含む。方法は、さらなるレコードを生成することと、さらなるレコードのコンテンツハッシュを、上記の再生成されたポインタツリーのルートに関連付けられたポインタハッシュに設定することとを含む。方法は、さらに、レコードの属性に関連付けられたコンテンツに基づいて、レコードコンテンツハッシュを計算することを含む。方法は、この新しいレコードについての前のレコードハッシュを、レコードコンテンツハッシュに設定することを含む。
いくつかの実施形態において、方法は、さらに、データオブジェクトをクラスタストレージに書き込むことを含む。データオブジェクトの書き込みは、データオブジェクトとデータオブジェクトのタイプとを受信することを含む。データオブジェクトハッシュが計算される。データオブジェクトのコピーを記憶すべきクラスタストレージの物理ノードが決定される。上記の決定された物理ノードの各々において、データオブジェクトハッシュがコンテンツアドレス可能オブジェクトストア内でルックアップされて、データオブジェクトメタデータが取得される。メタデータは、少なくともディスク識別子とディスク内の場所とを含む。データオブジェクトハッシュが発見されない場合、データオブジェクトのコピーがノードに書き込まれ、コンテンツアドレス可能オブジェクトストアは、データオブジェクトに関連付けられた新しいメタデータで更新される。
いくつかの実施形態において、方法は、クラスタストレージにファイルを書き込むことをさらに含む。ファイルの書き込みは、ファイルをファイルデータオブジェクト分けることと、ファイルデータオブジェクトのためのファイルデータオブジェクトハッシュを計算することとを含む。ファイルポインタツリーが、ファイルポインタツリーのリーフに関連付けられたファイルポインタオブジェクトにファイルデータオブジェクトハッシュを挿入することによって、生成される。ファイルポインタオブジェクトがフルであるか、あるいはすべてのファイルデータオブジェクトが処理されている場合、ファイルポインタオブジェクトのためのファイルポインタハッシュが計算され、このファイルポインタハッシュは親ファイルポインタオブジェクトに挿入される。ファイルポインタオブジェクトのためのファイルポインタハッシュの計算は、ファイルポインタツリーが構築されるまで繰り返される。ファイルの書き込みは、さらに、ファイルポインタツリーのルートのファイルポインタハッシュをファイルレコードのコンテンツハッシュ属性に挿入することを含む。ゆえに、ファイルレコードは、ファイルに関連付けられる。ファイルレコードの属性は、少なくともファイルサイズとタイムスタンプとで更新される。レコードコンテンツハッシュが、ファイルレコードの属性に基づいて計算される。ファイルデータオブジェクト、ファイルポインタオブジェクト、及びファイルレコードは、クラスタストレージに書き込まれる。書き込みの成功及び失敗のうち一方の指標が返される。
いくつかの実施形態において、コンテンツアドレス可能オブジェクトストア上のファイルシステムを編成し及び管理する方法が、クラスタストレージからデータオブジェクトを読み出すことを含む。データオブジェクトの読み出しは、データオブジェクトハッシュを受信することを含む。データオブジェクトの読み出しは、さらに、クラスタストレージの物理ノードのセットを決定することを含む。物理ノードは、データオブジェクトのコピーを含む可能性の最大から可能性の最小へ順序付けられる。各々の順序付けされた物理ノードについて、コンテンツアドレス可能オブジェクトストアにおけるデータオブジェクトハッシュがルックアップされる。データオブジェクトハッシュが発見される場合及びとき、データオブジェクトの読み出しは、データオブジェクトハッシュに基づいて、データオブジェクトメタデータを受信することをさらに含む。オブジェクトメタデータは、ディスク識別子とディスク内の場所とを含む。それから、データオブジェクトのコピーが、データオブジェクトメタデータを用いてノードから読み出される。
いくつかの実施形態において、方法は、クラスタストレージからファイルを読み出すことをさらに含むことができる。ファイルの読み出しは、ファイルに関連付けられたファイルレコードのレコードコンテンツハッシュを受信することを含む。ファイルレコードは、読み出し処理を適用することによって、クラスタストレージから読み出される。上記処理は、ファイルレコードのコンテンツハッシュを取り出すことによって、ファイルポインタツリーのルートに関連付けられたルートポインタハッシュを決定することを含む。上記読み出しは、ファイルポインタツリーをルートから始めて下降して、ファイルポインタツリーの子リーフの中のファイルポインタハッシュを取り出すことを含む。ファイルポインタハッシュに関連付けられたファイルデータオブジェクトが、上記読み出し処理を適用することによって読み出されることができる。ファイルデータオブジェクトは、順次ファイルデータへと再組立てされる。クラスタストレージからファイルを読み出すことは、上記順次ファイルデータを返すことで完結する。
本開示の別の例示的な実施形態に従い、コンテンツアドレス可能オブジェクトストア上のファイルシステムを編成し及び管理する方法のステップが、命令を含むマシン可読媒体上に記憶され、上記命令は、1つ以上のプロセッサにより実施されると、列挙されたステップを実行する。
本願方法の他の特徴には、実行中の(on the fly)すべてのファイル及びディレクトリについてのバージョンの追跡の履歴を提供することが含まれる。ゆえに、より古いバージョンのファイル及びディレクトリが、ルートディレクトリを含め、任意のときにユーザに対して利用可能である。
実施形態は、添付図面の図において限定ではなく例として例示され、同様の参照は類似の要素を示す。
ファイルシステムにおけるコンテンツの一例を示す。
所与のファイルのデータオブジェクトのためのスマートハッシュの生成を例示する。
ファイルシステム内のIノードエントリを説明する属性のテーブルを表示する。
Ichdataパラメータの属性の集合を表示する。
ファイルデータを直接指し示すIノードを例示する。
ファイル又はディレクトリを表現する1レイヤポインタツリーを例示する。
ファイル又はディレクトリを表現する2レイヤポインタツリーを例示する。
ファイル又はディレクトリを表現する3レイヤポインタツリーを例示する。
ファイルのバージョンに関連付けられた、リンクされたIノードのチェーンを例示する。
ディレクトリデータオブジェクトの構造、及び、Iノードと対応するファイルデータオブジェクトとに対するディレクトリエントリの接続を例示する。
タイプ1のディレクトリエンティティを有するディレクトリデータの一例を示す。
より古いバージョンのファイル又はディレクトリに対するアクセスをユーザが有することを可能にするメカニズム及びスナップショットのための仮想ディレクトリのスキームを例示する。
オブジェクトを書き込む方法を示す処理フロー図である。
オブジェクトを読み出す方法を示す処理フロー図である。
ファイルを書き込む方法を示す処理フロー図である。
ファイルを読み出す方法を示す処理フロー図である。
コンピュータシステムの例示的な電子形態におけるマシンのコンピューティング装置の概略表現を示し、これにおいて、本明細書に論じられる方法論のうち任意の1つ以上をマシンに実行させる命令セットが実行されることができる。
下記の詳細な説明は添付図面に対する参照を含み、添付図面は本詳細な説明の一部を形成する。図面は、例示的な実施形態に従い例示を示す。こうした例示的な実施形態は、本明細書において「例」とさらに呼ばれ、十分詳細に説明されて、当業者が本対象事項を実施することを可能にする。実施形態は組み合わせられてもよく、他の実施形態が利用されてもよく、あるいは、構造的、論理的、及び電気的な変更が、請求されるものの範囲から逸脱することなく行われてもよい。ゆえに、下記の詳細な説明は、限定的な意味においてとられるべきではなく、その範囲は、別記の請求項及びその均等物によって定義される。
本明細書に説明されるテクノロジーは、コンテンツアドレス可能分散オブジェクトストア(content addressable distributed object store)の上に築かれるファイルシステムの編成及び管理を可能にする。ファイルシステム内の各可視オブジェクトが、オブジェクトIDのチェーンに関連付けられることができ、上記オブジェクトIDの各々は、所与の時点におけるオブジェクトのバージョンに対応する。ゆえに、オブジェクトストアは、様々な時点におけるファイルシステムの「スナップショット」を提供すると言われ得る。ファイルシステムは、すべてのファイルのすべてのバージョンを保有し、ガーベッジコレクション処理を実行して、もはや必要とされないバージョンを廃棄することができる。
一例示的な実施形態に従い、上記方法は、レコード(さらに、iノード(inode)オブジェクトとして参照される)をユーザコンテンツに関連付けることを含む。レコードは、ユーザコンテンツに関連付けられた属性を含むことができる。属性は、コンテンツアドレス可能オブジェクトストア(content addressable object store)内のオブジェクトに関連付けられたコンテンツハッシュを少なくとも含むことができる。この例示的な方法は、ユーザコンテンツを複数のデータオブジェクトに分割することを可能にすることができる。各データオブジェクトは、所定の最小サイズを有する。方法は、複数のデータオブジェクトの各データオブジェクトについて、それぞれのデータオブジェクトハッシュを生成することを含むことができる。データオブジェクトハッシュは、対応するデータオブジェクトに関連付けられたそれぞれのデータオブジェクトコンテンツの関数である。方法は、データオブジェクトハッシュに基づいて、コンテンツハッシュを決定することを含むことができる。
ファイルシステム100の一例が図1に示されている。ファイルシステムは階層ツリーとして見られ得る。ツリーのルートノードは、ルートディレクトリ110、すなわち、ファイルシステムのルートフォルダ、いかなる他のフォルダの子でもない唯一のフォルダに対応する。所与のノードである子ノード120、130、140、150、160はファイル又はフォルダであり得る。ファイルシステムはPOSIXセマンティック(semantic)を利用することができる。
すべてのオブジェクトIDがオブジェクトの内容に基づいて計算される。オブジェクト内容が変わる場合、オブジェクトIDがさらに変わり、新しいオブジェクトIDを有し得る。オブジェクトの変更は、さらに、その親のオブジェクトIDの変更を引き起こし得る。上記変更は、ファイルシステム100を表現するツリーのルートまでずっと伝播する。こうして、一意のオブジェクトIDがファイルシステム100の各バージョンについて生成されることができる。
各オブジェクトIDのキー属性はタイプSmashのパラメータであり、Smashはスマートハッシュ(smart hash)を表す。スマートハッシュは、さらに、オブジェクト識別子として参照される。図2は、ファイルのSmashオブジェクトIDを算出する一例示的な表現200を示している。
ファイル210は、BLKSZサイズのオブジェクト220に分けられる。これらオブジェクト220の各々は、Smashタイプのパラメータを返すハッシュ関数のための入力オブジェクトである。
ハッシュ関数はいくつかの要件を有し得る。この関数は、あらゆるとり得る入力オブジェクトに対して出力される一意のSmashを生成しなければならない。2つの入力オブジェクトがちょうど1ビットだけ異なる場合、ハッシュ関数は、高い確率で、2つの異なるSmash値を生成しなければならない。
ハッシュ関数は、常に、同じ長さのバイトのものであるSmash230を生成する。Smash230の長さは、SMASHSZとして知られている。データオブジェクトの最大長は、BLKSZとして知られている。これらは、ファイルシステムのための所定のパラメータである。例えば、長さ20バイトの複数のSmashと32KBのBLKSZ値とが使用されることができる。32KB長の2つの異なる入力オブジェクトが長さ20バイトの同じSmash値を結果としてもたらし得る確率は、非常に小さくなければならない。
ハッシュ関数の出力は、ハッシュ空間において公平に均等に分散されるべきである。ハッシュ関数は、毎回同じ入力を与えられるたび、同じ出力を生成しなければならない。
zzhashと呼ばれる特別なSmash値がある。この値は、存在しない何かを表現することに使用される。
ファイルシステム内の、ユーザに対して可視の各オブジェクトについて、Iノード(Inode)と呼ばれる少なくとも1つのエンティティが存在する。Iノードは、ファイルシステム内のファイル又はディレクトリを表現するのに必要とされるすべての情報を保持する。図3は、Iノード300の構造を示している。Iノードの属性310の多くが、POSIX標準により定義される通常のパラメータ、例えば、所有者ID、グループID、バイト単位でのファイルのサイズなどである。いくつかのカスタム属性が追加されることができ、例えば、chash、xhash、及びichdataなどである。
chashは、コンテンツハッシュを表す。chashはSmashタイプのパラメータであり、ディレクトリデータオブジェクト、ディレクトリポインタオブジェクト、データオブジェクト、ポインタツリーオブジェクト、又はzzhashのSmashを含み得る。
xhashは、拡張された属性ハッシュである。このハッシュは、拡張された属性データオブジェクト、拡張された属性ポインタオブジェクト、又はzzhashのSmashパラメータを含み得る。
意図的チェーン化ヒストリデータ(Intentional Chained History Data)(ichdata)400の構造が図4に示されている。これは、データストア内の変えられない(immutable)オブジェクトの中から変えられる(mutable)オブジェクトの履歴を作成すること及び追跡することについて責任を負うメカニズムにおいて利用される属性410のセットである。このパラメータのセットは、generation、revgen、snaptime、及びsnaptagを含む。generationは、スナップショット生成カウントであり、revgenは、スナップショット内における改訂(revision)カウントであり、snaptimeは、スナップショットが作成された時間であり、snaptagは、いずれのファイルシステム動作がスナップショットを引き起こしたかを示す列挙値であり、例えば、作成、削除、ファイルに対する書き込み、ファイルの名前変更などである。
ichdata400は、Smashタイプの3つのパラメータ420をさらに含み得る。
a.ohashは、古いハッシュ(old hash)を表し、このIノードの前のバージョンのためのSmashを保持する。ohashは、このオブジェクトの前のバージョンがない場合、zzhashに等しい。
b.Mhash又はマージハッシュ(merge hash)は、このノードが由来する代替の履歴を表現する。Mhashは、こうした代替の履歴がない場合、zzhashに等しくなり得る。
c.Uuid又はユニバーサル一意識別子(Universally Unique Identifier)は、このオブジェクトのすべてのバージョンによって、その履歴の全体を通して継承されるパラメータである。uuidパラメータは、この特定のファイル又はディレクトリのためのIノードが最初に作成されるとき、生成される。
a.ohashは、古いハッシュ(old hash)を表し、このIノードの前のバージョンのためのSmashを保持する。ohashは、このオブジェクトの前のバージョンがない場合、zzhashに等しい。
b.Mhash又はマージハッシュ(merge hash)は、このノードが由来する代替の履歴を表現する。Mhashは、こうした代替の履歴がない場合、zzhashに等しくなり得る。
c.Uuid又はユニバーサル一意識別子(Universally Unique Identifier)は、このオブジェクトのすべてのバージョンによって、その履歴の全体を通して継承されるパラメータである。uuidパラメータは、この特定のファイル又はディレクトリのためのIノードが最初に作成されるとき、生成される。
Iノードは、ただ1つのchashパラメータを有する。ファイルサイズがBLKSZの予め定義されたシステムパラメータより小さいか又は等しいとき、必要なことは、ハッシュ関数をファイルに単に適用して、対応するSmashを生成することである。しかしながら、ファイルシステム内のファイルの大多数と、同様にディレクトリとは、BLKSZより大きく成長する可能性がある。ファイル又はディレクトリのサイズがBLKSZより大きいとき、ファイル又はディレクトリはポインタツリーを介して表現される。
図5は、Iノード300についての表現500を示しており、Iノード300は、データオブジェクト520として示されるBLKSZより小さいか又は等しいサイズのファイルを指し示している。Iノード内のchashパラメータは、このファイルについて算出されたSmashである。
図6は、BLKSZより大きいサイズのファイルに対応するIノード610と、上記ファイルを表現する対応した1レイヤポインタツリーとの表現600を示している。Iノード300内のchashパラメータは、今度はSmash640のレイヤ1を含むオブジェクトのSmashである。レイヤ1のSmash640は、ファイルデータ520のオブジェクトについて算出され、ファイルデータ520は、ポインタツリーにおけるリーフとして見られ得る。各データオブジェクト520は、サイズBLKSZのものである。最後のデータオブジェクト520は、サイズBLKSZか又はより小さいものであり得る。オブジェクトハッシュを含むオブジェクトが、ポインタオブジェクト620として参照される。
各ポインタオブジェクト620は、ゆえに、最大で、N=truncate(BLKSZ÷SMASHSZ)ハッシュまで保持し得る。例えば、BLKSZが32KBであり、SMASHSZが20バイトであるとき、1レイヤのSmashを有するポインタツリーは、サイズにおいて最大53,673,984バイトまでのファイルを表現することができる。
図7Aは、2レイヤポインタツリー700を例示している。レイヤ1のポインタオブジェクト620は、他のポインタオブジェクトのSmashを保持する。第2のレイヤの各ポインタオブジェクトは、データオブジェクト520のためのSmash640を含む。例えば、BLKSZが32KBであり、SMASHSZが20バイトであるとき、2レイヤポインタツリーは、サイズにおいて最大約83GBまでのファイルを表現することができる。
図7Bは、3レイヤポインタツリー750を示している。図7Aの2レイヤポインタツリー700とは対照的に、3レイヤポインタツリー750は、さらなるレイヤのポインタオブジェクト620を含む。例えば、BLKSZが32KBであり、SMASHSZが20バイトであるとき、3レイヤポインタツリー750は、サイズにおいて最大約134TBまでのファイルに対処することができる。
ポインタオブジェクトツリーの任意の与えられた深さに対するファイルの最大サイズは、下記のとおり算出されることができる:MaxFileSize = BLKSZ x (truncate(BLKSZ÷SMASHSZ))depth。
ポインタツリーを用いたデータの表現は、ファイルデータからSmashを通してIノードの後ろのレイヤに変更を迅速に伝播することに役立つ。ポインタツリーの同じメカニズムが、大きいディレクトリを表現することに使用されることができる。
図8は、接続されたIノード300のリスト800を例示しており、Iノード300は、ファイル820として示される1つのエンティティ、ファイル、又はディレクトリを説明している。Iノード300は、エンティティに対する修正が行われた時点T0、T1、T2などに対応する。新しいIノードが、対応するコンテンツが毎回修正されるたび、作成され、チェーンの上部に追加される。新しいIノードのgeneration属性850は、1ずつ増加し得る。
各Iノード300のchashパラメータ830は、所与の時点におけるエンティティ又はエンティティのポインタツリーについてのSmashを含む。ohashパラメータは、前の時点に対応するIノード300のSmashである。第1の時点のIノード300のohashパラメータは、このエンティティについて前のバージョンがないので、zzhashに向けられる。ohashパラメータ840は、所与のエンティティの「スナップショット」の時間逆行チェーン(back in time chain)を構築する、所与のエンティティのIノード300をリンクしている。チェーンの中の各Iノード300のchashパラメータ830は、そのバージョンのデータを指し示す。このタイプの接続は、データの異なるバージョンを通した検索を可能にする。ガーベッジコレクタが、このチェーンを歩いて行く(walk down)ように設定され、上記バージョンのうちいずれが削除されることができるかを決めることができる。ガーベッジコレクションを実行する方法の一例が、2013年6月12日に申請され“Hybrid Garbage Collection”と題された米国仮特許出願第61/834,097号に説明されており、該出願は本明細書において参照により援用される。
図9は、ディレクトリ910の内容の一例示的な表現900を示している。ディレクトリデータは、ディレクトリエントリ920のセットから成る。ディレクトリエントリ920は、下記の属性を含む可変サイズのレコードである:エントリのタイプ、エントリの名前の長さ、エントリの名前、及びタイプにより指定される属性。ディレクトリエントリのタイプは、少なくとも2つのとり得る値:0及び1を有することができる。
タイプ0のディレクトリエントリは、Iノード300を識別する。ディレクトリエントリ920の中の名前フィールドは、Iノードが表現するファイル940又はディレクトリの、名前を保持する。ディレクトリエントリの中の指定された属性が、Iノード300のSmashである。
タイプ1のディレクトリエンティティについて、名前ファイルは、仮想スナップショットツリーのルートを識別する。ディレクトリエントリの特定属性は、この場合には使用されない。ユーザは、仮想スナップショットツリーの名前をサブディレクトリとして見ることができる。図10は、タイプ1のディレクトリエンティティ1010を有するディレクトリデータ1000の一例を示している。
仮想ディレクトリが、ユーザがファイルシステムのスナップショットを調べたいとき、生成される。図11は、仮想ディレクトリの構造1100を示している。仮想ディレクトリの仮想ディレクトリデータ1110は、タイプ0のディレクトリエントリ1120を含むことができ、名前1130は、スナップショットの作成に関連付けられたタイムスタンプによって表現されることができる。ディレクトリエントリのハッシュ属性1140は、タイムスタンプに対応するIノード1150のSmashを含むことができる。上記Iノード1150を通して、ユーザは、対応するより古いバージョンに対するアクセスを有することができる。ファイルシステムのスナップショットを調べる方法のさらなる詳細は、2014年10月10日に申請され“Hierarchical Data Archiving”と題された米国特許出願第14/512,299号に説明されており、該出願は本明細書において参照により援用される。
図12は、ストレージクラスタにオブジェクトを書き込む方法1200を示す「ライトオブジェクト」処理フロー図である。方法1200は、ステップ1210において、書き込むべきオブジェクト及びオブジェクトタイプを受信することから始まる。ステップ1220において、オブジェクトのSmashが計算される。ステップ1230において、オブジェクトのコピーを有するべき物理ノードが、一貫したハッシングアルゴリズム(Consistent Hashing Algorithm)を適用することによって発見される。一貫したハッシングアルゴリズムは、2012年4月6日に申請され“Consistent Ring Namespaces Facilitating Data Storage and Organization in Network Infrastructures”と題された米国特許出願第13/441,592号において説明されており、該出願は本明細書において参照により援用される。ステップ1240において、オブジェクト及びSmashが、前のステップ1230において決定された各物理ノードに対して送信される。各ノードは、そのハッシュデータベース(HDB)内でSmashのルックアップを実行する。ルックアップは、2012年4月6日に申請され“Cryptographic Hash Database”と題された米国特許出願第13/441,715号において説明される方法を用いて実行されてもよく、該出願は本明細書において参照により援用される。ルックアップはオブジェクトメタデータを返し、オブジェクトメタデータは、このSmashを有するオブジェクトについてのディスク識別子とディスク上の場所とを含む。ステップ1250において、ルックアップが成功する場合、オブジェクトが既に存在するので、オブジェクトの新しいコピーは書き込まれない。ルックアップが失敗する場合、ステップ1260において、オブジェクトの新しいコピーが、ステップ1230において一貫したハッシングアルゴリズムにより決定されたとおりのクラスタの中のノード及びディスクに書き込まれる。オブジェクトをディスクに書き込む方法は、2013年10月16日に申請され“Forward-Only Page Data Storage Management”と題された米国特許出願第14/055,662号において説明されており、該出願は本明細書において参照により援用される。ステップ1270において、オブジェクトを書き込んだ各ノードは、そのHDBを、オブジェクトの新しい属性を用いて更新する。HDBを更新する方法は、米国特許出願第13/441,715号(完全な引用文は上記)において説明されている。ステップ1280において、成功又は失敗の指標がライタ(writer)に返される。
図13は、一例示的な実施形態に従う、ストレージクラスタからオブジェクトを読み出す方法1300を示す「リードオブジェクト」処理フロー図である。方法1300は、ステップ1310において、オブジェクトのSmashを受信することから始まる。ステップ1320において、2012年4月6日に申請され“Consistent Ring Namespaces Facilitating Data Storage and Organization in Network Infrastructures”と題された、本明細書において参照により援用される米国特許出願第13/441,592号に説明されるとおりの一貫したハッシングアルゴリズムが適用されて、オブジェクトのコピーを保持する可能性の最大から可能性の最小にソートされたノードのセットを発見する。ステップ1330において、各ノードにおいて、オブジェクトのSmashが、ノードに属するHDB内でルックアップされる。HDBを検索する方法は、米国特許出願第13/441,715号(完全な引用文は上記)において説明されている。Smashのレコードが発見される場合、方法1300のステップ1340に進む。Smashが発見されない場合、ステップ1330におけるルックアップが、次に最も可能性のあるノード上で繰り返される。オブジェクトを発見することなく、すべてのノードが検索された場合、「発見されない(not found)」の指標が要求元に返される。ステップ1340において、オブジェクトは、ステップ1330におけるルックアップにより受信されるデータから取得されるディスク識別子とディスク上の場所とを用いて、ディスクから読み出される。ディスクからオブジェクトを読み出す方法は、米国特許出願第14/055,662号(完全な引用文は上記)において説明されている。ステップ1350において、オブジェクトデータ及びメタデータが要求元に返される。このアルゴリズムは、1つ以上のノード上で同時的に実行され得ることが留意されるべきである。
図14は、ストレージクラスタにファイルを書き込む一例示的な方法1400を示す処理フロー図である。方法1400は、ステップ1410において、ライタからファイルデータを受信することから始まる。ステップ1415において、ファイルデータはデータオブジェクトに分けられ、各データオブジェクトは最後のチャンクを除いてサイズBLKSZのものであり、最後のチャンクはBLKSZより小さい可能性がある。ステップ1420において、Smashが各データオブジェクトについて計算される。ステップ1425において、ポインタツリーが、図5、図6、図7A、及び図7Bに示されるとおり、データオブジェクトSmashをリーフポインタノードに挿入することによって構築される。ステップ1430において、ポインタオブジェクトがフル(full)であるか、あるいはすべてのデータオブジェクトが処理されている場合、ポインタオブジェクトのSmashが計算され、親ポインタオブジェクトに挿入される。ステップ1435において、ポインタオブジェクトの完全なツリーが構築されるまでステップ1430が繰り返される。ステップ1440において、ポインタオブジェクトツリーのルートのSmashが、Iノードオブジェクトのchashフィールドに挿入される。ステップ1445において、他のIノード属性、例えばファイルサイズ、タイムスタンプなどが、更新される。ステップ1450において、IノードオブジェクトのSmashが計算される。ステップ1455において、本処理により作成され又は修正された各オブジェクトについて、図12に説明されるとおりの「ライトオブジェクト」処理が呼び出される。最後、ステップ1460において、成功又は失敗がライタに返される。
図15は、ストレージクラスタからファイルを読み出す方法1500を示す処理フロー図である。方法1500は、ステップ1510において、リーダ(reader)からIノードオブジェクトのSmashを受信することから始まる。ステップ1520において、図13に説明される「リードオブジェクト」処理が使用されて、Iノードオブジェクトを読み出す。ステップ1530において、ポインタツリーのルートが、Iノードオブジェクトのchash属性からSmashを取り出すことによって発見される。ステップ1540において、ポインタツリーが、chashから始め、子のSmashを取り出すことと図13に説明される「リードオブジェクト」処理を適用してオブジェクトを読み出すこととによって、リーフノードへ下降される。ステップ1550において、データオブジェクトが、順次(sequential)ファイルデータへと再組立てされる。ステップ1560において、ファイルデータがリーダに返される。
図16は、コンピュータシステム1600の例示的な電子形態におけるマシンのコンピューティング装置の概略表現を示しており、これにおいて、本明細書に論じられる方法論のうち任意の1つ以上をマシンに実行させる命令セットが実行されることができる。様々な例示的な実施形態において、マシンはスタンドアロン装置として動作し、あるいは他のマシンに接続され(例えば、ネットワーク化され)てもよい。ネットワーク化された展開において、マシンは、サーバクライアントネットワーク環境の中でサーバ又はクライアントマシンの能力において、又は、ピアツーピア(又は、分散型)ネットワーク環境においてピアマシンとして動作し得る。マシンは、サーバ、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、PDA、セルラー電話、デジタルカメラ、ポータブル音楽プレーヤ(例えば、MP3(Moving Picture Experts Group Audio Layer 3)プレーヤなどのポータブルハードドライブオーディオ装置)、ウェブ家電製品、ネットワークルータ、スイッチ、ブリッジ、又は、マシンにより行われるべきアクションを指定する命令セット(順次の、又はその他の)を実行することができる任意のマシンであり得る。さらに、単一のマシンだけが例示されているが、用語「マシン」は、さらに、命令の一セット(又は、複数のセット)を個々に又は共同で実行して本明細書に論じられる方法論のうち任意の1つ以上を遂行するマシンの任意の集合を含むものとみなされるべきである。
例示的なコンピュータシステム1600は、一のプロセッサ又は複数のプロセッサ1602、ハードディスクドライブ1604、メインメモリ1606、及びスタティックメモリ1608を含み、これらは、バス1610を介して互いに通信する。コンピュータシステム1600は、ネットワークインターフェース装置1612をさらに含み得る。ハードディスクドライブ1604は、コンピュータ可読媒体1620を含み、コンピュータ可読媒体1620は、本明細書に説明される方法論又は機能のうち任意の1つ以上を具現化し又は該1つ以上により利用される1つ以上の命令セット1622を記憶する。命令1622は、さらに、コンピュータシステム1600による命令1622の実行の間、メインメモリ1606内及び/又はプロセッサ1602内に、完全に又は少なくとも部分的に存在し得る。メインメモリ1606及びプロセッサ1602もまた、マシン可読媒体を構成する。
コンピュータ可読媒体1620が、一例示的な実施形態において単一の媒体であるように図示されているが、用語「コンピュータ可読媒体」は、1つ以上の命令セットを記憶する単一の媒体又は複数の媒体(例えば、集中型又は分散型のデータベース及び/又は関連付けられたキャッシュ及びサーバ)を含むようにみなされるべきである。用語「コンピュータ可読媒体」は、さらに、マシンによる実行のための命令セットを記憶し、エンコードし、又は運ぶことができて、本出願の方法論のうち任意の1つ以上をマシンに実行させ、あるいは上記の命令セットにより利用され又はこれに関連付けられたデータ構造を記憶し、エンコードし、又は運ぶことができる任意の媒体を含むようにみなされるべきである。用語「コンピュータ可読媒体」は、したがって、これらに限られないが、ソリッドステートメモリ並びに光及び磁気媒体を含むようにみなされるべきである。こうした媒体には、さらに、限定でなく、ハードディスク、フロッピーディスク、NAND又はNORフラッシュメモリ、デジタルビデオディスク、RAM、ROMなどが含まれ得る。
本明細書に説明される例示的な実施形態は、コンピュータ上にインストールされるコンピュータ実行可能命令(例えば、ソフトウェア)を含む動作環境において、ハードウェアにおいて、又はソフトウェアとハードウェアとの組み合わせにおいて実装され得る。コンピュータ実行可能命令は、コンピュータプログラミング言語において書かれてもよく、あるいはファームウェアロジックにおいて具現化されてもよい。認識されている標準に合うプログラミング言語において書かれる場合、上記の命令は、様々なハードウェアプラットフォーム上で、及び、様々なオペレーティングシステムに対するインターフェースのために実行されることができる。これらに限定されないが、本願方法を実施するコンピュータソフトウェアプログラムは、任意数の適切なプログラミング言語、例えば、C、Python、Javascript(登録商標)、Go、又は、他のコンパイラ、アセンブラ、インタプリタ、若しくは他のコンピュータの言語若しくはプラットフォームにおいて書かれることができる。
こうして、ファイルシステムのコンテンツベースの編成のためのシステム及び方法が開示されている。実施形態が、特定の例示的な実施形態を参照して説明されたが、本出願のより広い主旨及び範囲から逸脱することなく、上記の例示的な実施形態に対して様々な修正及び変更がなされ得ることが明らかであり得る。したがって、明細書及び図面は、限定的ではなく例示的な意味において考慮されるべきである。
Claims (25)
- コンテンツアドレス可能オブジェクトストア上のファイルシステムを編成し及び管理する、コンピュータにより実施される方法であって、
レコードをユーザコンテンツに関連付けるステップであって、前記レコードは、前記ユーザコンテンツに関連付けられた属性を含み、前記属性は、前記コンテンツアドレス可能オブジェクトストアにおけるアドレスに関連付けられたコンテンツハッシュを少なくとも含む、ステップと、
前記ユーザコンテンツを複数のデータオブジェクトに分割するステップであって、各データオブジェクトは所定の最小サイズを有する、ステップと、
前記複数のデータオブジェクトの各データオブジェクトについて、それぞれのデータオブジェクトハッシュを生成するステップであって、前記データオブジェクトハッシュは、前記データオブジェクトに関連付けられたそれぞれのデータオブジェクトコンテンツの関数である、ステップと、
前記データオブジェクトハッシュに基づいて、前記コンテンツハッシュを決定するステップと、
を含む方法。 - 前記コンテンツハッシュを決定するステップは、
前記複数のデータオブジェクトの中のオブジェクトの数を算出することと、
前記オブジェクトの数が1である場合、前記コンテンツハッシュを前記データオブジェクトハッシュに設定することと、
前記オブジェクトの数が2以上である場合、前記データオブジェクトハッシュに基づいてポインタツリーを生成することであって、前記ポインタツリーを生成することは、
前記データオブジェクトハッシュを複数のポインタオブジェクトにグループ化することと、
前記ポインタオブジェクトを前記ポインタツリーにおけるレイヤのリーフとして割り当てることと、
前記レイヤが2つ以上のリーフを含む場合、前記ポインタツリーの次レイヤを構築することであり、前記次レイヤを構築することは、
前記ポインタオブジェクトの各々について、ポインタハッシュを生成することであり、前記ポインタハッシュは、前記ポインタオブジェクトに関連付けられたそれぞれのポインタオブジェクトコンテンツの関数である、こと、
前記ポインタハッシュを複数のさらなるポインタオブジェクトにグループ化することであり、前記さらなるポインタオブジェクトの各々は前記所定の最小サイズを有する、こと、
前記さらなるポインタオブジェクトを、前記ポインタツリーにおけるさらなるレイヤのリーフとして割り当てること、並びに、
前記ポインタハッシュを生成すること、前記ポインタハッシュをグループ化すること、及び前記さらなるポインタオブジェクトを割り当てることを、1つのリーフを有する最終レイヤが受信されるまで繰り返すこと、
を含む、ことと、
前記最終レイヤのリーフを、前記ポインタツリーのルートとして割り当てることと、
前記ポインタツリーのルートのコンテンツに基づいて、ルートポインタハッシュを計算することと、
を含む、ことと、
前記レコードの前記コンテンツハッシュを前記ルートポインタハッシュに設定することと、
を含む、請求項1に記載の方法。 - 前記ポインタツリーの深さが、下記の式:MaxFileSize = BLKSZ x (truncate(BLKSZ÷SMASHSZ))depthにより決定され、MaxFileSizeはコンテンツエンティティのサイズであり、BLKSZは前記所定の最小サイズであり、SMASHSZは前記コンテンツハッシュのサイズであり、前記truncateは、実数のうちの整数部分を返す、実数の関数である、請求項2に記載の方法。
- 前記ユーザコンテンツは、データファイルとフォルダとのうち1つ以上を含む、請求項2に記載の方法。
- 前記フォルダは、さらなるレコードに関連付けられた少なくとも1つのフォルダエントリを含み、前記さらなるレコードは、さらなるユーザコンテンツに関連付けられ、前記少なくとも1つのフォルダエントリは、
前記さらなるユーザコンテンツのタイプに関連付けられた、エントリのタイプと、
前記さらなるユーザコンテンツの長さに関連付けられた、エントリの長さと、
前記さらなるユーザコンテンツの名前に関連付けられた、エントリの名前と、
さらなるコンテンツハッシュに関連付けられた、エントリの属性であって、前記さらなるコンテンツハッシュは、前記さらなるレコードの属性に基づいて生成される、エントリの属性と、
のうち少なくとも1つを含む、請求項4に記載の方法。 - 前記フォルダは、さらなるレコードに関連付けられた1つ以上のエントリを含み、前記さらなるレコードの各々は、前記ユーザコンテンツの一意の時間バージョンに関連付けられる、請求項5に記載の方法。
- 前記レコードの前記属性は、前のコンテンツハッシュを含み、前記前のコンテンツハッシュは、前のレコードの属性に関連付けられたコンテンツに基づいて生成され、前記前のレコードは、前記ユーザコンテンツのそれぞれの前のバージョンに関連付けられる、請求項4に記載の方法。
- 前記ユーザコンテンツにおける変更に応答して、
前記ユーザコンテンツに関連付けられた前記ポインタツリーを少なくとも部分的に再生成するステップと、
さらなるレコードを生成するステップと、
前記さらなるレコードのコンテンツハッシュを、前記の再生成されたポインタツリーのルートに関連付けられたポインタハッシュに設定するステップと、
前記レコードの前記属性に関連付けられたコンテンツに基づいて、レコードコンテンツハッシュを計算するステップと、
前記新しいレコードの前のコンテンツハッシュを、前記レコードコンテンツハッシュに設定するステップと、
をさらに含む請求項7に記載の方法。 - 前記データオブジェクトをクラスタストレージに書き込むステップ、をさらに含み、前記データオブジェクトを書き込むステップは、
前記データオブジェクトと前記データオブジェクトのタイプとを受信することと、
前記データオブジェクトハッシュを計算することと、
前記クラスタストレージの物理ノードを決定することであって、前記物理ノードは前記データオブジェクトのコピーを含む、ことと、
前記の決定された物理ノードの各々において、下記のステップ:
前記コンテンツアドレス可能オブジェクトストアにおける前記データオブジェクトハッシュをルックアップして、データオブジェクトメタデータを取得することであり、前記メタデータは少なくともディスク識別子とディスク内の場所とを含む、こと、並びに、
前記データオブジェクトハッシュが発見されない場合、
前記物理ノードに前記データオブジェクトのコピーを書き込むこと、及び
前記コンテンツアドレス可能オブジェクトストアを、前記データオブジェクトに関連付けられた新しいメタデータで更新すること、
を実行することと、
を含む、請求項2に記載の方法。 - 前記クラスタストレージにファイルを書き込むステップ、をさらに含み、前記ファイルを書き込むステップは、
前記ファイルを受信することと、
前記ファイルをファイルデータオブジェクトに分けることと、
前記ファイルデータオブジェクトのファイルデータオブジェクトハッシュを計算することと、
ファイルポインタツリーを、
前記ファイルデータオブジェクトハッシュを、前記ファイルポインタツリーのリーフに関連付けられたファイルポインタオブジェクトに挿入すること、
前記ファイルポインタオブジェクトがフルであり、あるいはすべてのファイルデータオブジェクトが処理されている場合、前記ファイルポインタオブジェクトのファイルポインタハッシュを計算すること、及び、前記ファイルポインタハッシュを親ファイルポインタオブジェクトに挿入すること、並びに、
前記ファイルポインタオブジェクトのファイルポインタハッシュを計算することを、前記ファイルポインタツリーが構築されるまで繰り返すこと、
により生成することと、
前記ファイルポインタツリーのルートのファイルポインタハッシュを、ファイルレコードのコンテンツハッシュに挿入することであって、前記ファイルレコードは前記ファイルに関連付けられる、ことと、
前記ファイルレコードの属性を、少なくともファイルサイズ及びタイムスタンプで更新することと、
前記ファイルレコードの属性に基づいて、レコードコンテンツハッシュを計算することと、
集合からの各オブジェクトを前記クラスタストレージに書き込むことであって、前記集合は、前記ファイルデータオブジェクト、前記ファイルポインタオブジェクト、及び前記ファイルレコードを含む、ことと、
前記書き込みの成功と失敗とのうち一方の指標を返すことと、
を含む、請求項9に記載の方法。 - クラスタストレージから前記データオブジェクトを読み出すステップ、をさらに含み、前記データオブジェクトを読み出すステップは、
前記データオブジェクトハッシュを受信することと、
前記クラスタストレージの物理ノードのセットを決定することであって、前記物理ノードは、前記データオブジェクトのコピーを有する可能性の最大から可能性の最小に順序付けられる、ことと、
各々の順序付けられた物理ノードについて、前記コンテンツアドレス可能オブジェクトストアにおける前記データオブジェクトハッシュをルックアップすることと、
前記データオブジェクトハッシュが発見される場合及びとき、
前記データオブジェクトハッシュに基づいて、ディスク識別子とディスク内の場所とを含むデータオブジェクトメタデータを受信することと、
前記データオブジェクトメタデータを用いて、前記物理ノードから前記データオブジェクトのコピーを読み出すことと、
を含む、請求項2に記載の方法。 - 前記クラスタストレージからファイルを読み出すステップ、をさらに含み、前記ファイルを読み出すステップは、
前記ファイルに関連付けられたファイルレコードのレコードコンテンツハッシュを受信することと、
前記データオブジェクトを読み出すステップを適用することによって、前記クラスタストレージから前記ファイルレコードを読み出すことと、
前記ファイルレコードの前記コンテンツハッシュを取り出すことによって、ファイルポインタツリーのルートに関連付けられたルートポインタハッシュを決定することと、
前記ファイルポインタツリーを前記ルートから始めて下降して、前記ファイルポインタツリーの子リーフの中のファイルポインタハッシュを取り出すこと、及び、前記データオブジェクトを読み出すステップを適用することによって、前記ファイルポインタハッシュに関連付けられたファイルデータオブジェクトを読み出すことと、
前記ファイルデータオブジェクトを順次ファイルデータに再組立てすることと、
前記順次ファイルデータを返すことと、
を含む、請求項11に記載の方法。 - コンテンツアドレス可能オブジェクトストア上のファイルシステムを編成し及び管理するシステムであって、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに通信可能に結合されたメモリと、
を含み、
前記メモリは、前記少なくとも1つのプロセッサにより実行されるときに方法を実行する命令を記憶し、前記方法は、
レコードをユーザコンテンツに関連付けるステップであって、前記レコードは、前記ユーザコンテンツに関連付けられた属性を含み、前記属性は、前記コンテンツアドレス可能オブジェクトストアにおけるアドレスに関連付けられたコンテンツハッシュを少なくとも含む、ステップと、
前記ユーザコンテンツを複数のデータオブジェクトに分割するステップであって、各データオブジェクトは所定の最小サイズを有する、ステップと、
前記複数のデータオブジェクトの各データオブジェクトについて、それぞれのデータオブジェクトハッシュを生成するステップであって、前記データオブジェクトハッシュは、前記データオブジェクトに関連付けられたそれぞれのデータオブジェクトコンテンツの関数である、ステップと、
前記データオブジェクトハッシュに基づいて、前記コンテンツハッシュを決定するステップと、
を含む、システム。 - 前記コンテンツハッシュを決定するステップは、
前記複数のデータオブジェクトの中のオブジェクトの数を算出することと、
前記オブジェクトの数が1である場合、前記コンテンツハッシュを前記データオブジェクトハッシュに設定することと、
前記オブジェクトの数が2以上である場合、前記データオブジェクトハッシュに基づいてポインタツリーを生成することであって、前記ポインタツリーを生成することは、
前記データオブジェクトハッシュを複数のポインタオブジェクトにグループ化することと、
前記ポインタオブジェクトを前記ポインタツリーにおけるレイヤのリーフとして割り当てることと、
前記レイヤが2つ以上のリーフを含む場合、前記ポインタツリーの次レイヤを構築することであり、前記次レイヤを構築することは、
前記ポインタオブジェクトの各々について、ポインタハッシュを生成することであり、前記ポインタハッシュは、前記ポインタオブジェクトに関連付けられたそれぞれのポインタオブジェクトコンテンツの関数である、こと、
前記ポインタハッシュを複数のさらなるポインタオブジェクトにグループ化することであり、前記さらなるポインタオブジェクトは前記所定の最小サイズを有する、こと、
前記さらなるポインタオブジェクトを、前記ポインタツリーにおけるさらなるレイヤのリーフとして割り当てること、並びに、
前記ポインタハッシュを生成すること、前記ポインタハッシュをグループ化すること、及び前記さらなるポインタオブジェクトを割り当てることを、1つのリーフを有する最終レイヤが受信されるまで繰り返すこと、
を含む、ことと、
前記最終レイヤのリーフを、前記ポインタツリーのルートとして割り当てることと、
前記ポインタツリーのルートのコンテンツに基づいて、ルートポインタハッシュを計算することと、
を含む、ことと、
前記レコードの前記コンテンツハッシュを前記ルートポインタハッシュに設定することと、
を含む、請求項13に記載のシステム。 - 前記ポインタツリーの深さが、下記の式:MaxFileSize = BLKSZ x (truncate(BLKSZ÷SMASHSZ))depthにより決定され、MaxFileSizeはコンテンツエンティティのサイズであり、BLKSZは前記所定の最小サイズであり、SMASHSZは前記コンテンツハッシュのサイズであり、前記truncateは、実数のうちの整数部分を返す、実数の関数である、請求項14に記載のシステム。
- 前記ユーザコンテンツは、データファイルとフォルダとのうち1つ以上を含む、請求項14に記載のシステム。
- 前記フォルダは、さらなるレコードに関連付けられた少なくとも1つのフォルダエントリを含み、前記さらなるレコードは、さらなるユーザコンテンツに関連付けられ、前記少なくとも1つのフォルダエントリは、
前記さらなるユーザコンテンツのタイプに関連付けられた、エントリのタイプと、
前記さらなるユーザコンテンツの長さに関連付けられた、エントリの長さと、
前記さらなるユーザコンテンツの名前に関連付けられた、エントリの名前と、
さらなるコンテンツハッシュに関連付けられた、エントリの属性であって、前記さらなるコンテンツハッシュは、前記さらなるレコードの属性に基づいて生成される、エントリの属性と、
のうち少なくとも1つを含む、請求項16に記載のシステム。 - 前記フォルダは、さらなるレコードに関連付けられた1つ以上のエントリを含み、前記さらなるレコードの各々は、前記ユーザコンテンツの一意の時間バージョンに関連付けられる、請求項17に記載のシステム。
- 前記レコードの前記属性は、前のコンテンツハッシュを含み、前記前のコンテンツハッシュは、前のレコードの属性に関連付けられたコンテンツに基づいて生成され、前記前のレコードは、前記ユーザコンテンツのそれぞれの前のバージョンに関連付けられる、請求項16に記載のシステム。
- 前記ユーザコンテンツにおける変更に応答して、
前記ユーザコンテンツに関連付けられた前記ポインタツリーを少なくとも部分的に再生成するステップと、
さらなるレコードを生成するステップと、
前記さらなるレコードのコンテンツハッシュを、前記の再生成されたポインタツリーのルートに関連付けられたポインタハッシュに設定するステップと、
前記レコードの前記属性に関連付けられたコンテンツに基づいて、レコードコンテンツハッシュを計算するステップと、
前記新しいレコードの前のコンテンツハッシュを、前記レコードコンテンツハッシュに設定するステップと、
をさらに含む請求項19に記載のシステム。 - 前記データオブジェクトをクラスタストレージに書き込むステップ、をさらに含み、前記データオブジェクトを書き込むステップは、
前記データオブジェクトと前記データオブジェクトのタイプとを受信することと、
前記データオブジェクトハッシュを計算することと、
前記クラスタストレージの物理ノードを決定することであって、前記物理ノードは前記データオブジェクトのコピーを含む、ことと、
前記の決定された物理ノードの各々において、下記のステップ:
前記コンテンツアドレス可能オブジェクトストアにおける前記データオブジェクトハッシュをルックアップして、データオブジェクトメタデータを取得することであり、前記メタデータは少なくともディスク識別子とディスク内の場所とを含む、こと、並びに、
前記データオブジェクトハッシュが発見されない場合、
前記物理ノードに前記データオブジェクトのコピーを書き込むこと、及び
前記コンテンツアドレス可能オブジェクトストアを、前記データオブジェクトに関連付けられた新しいメタデータで更新すること、
を実行することと、
を含む、請求項14に記載のシステム。 - 前記クラスタストレージにファイルを書き込むステップ、をさらに含み、前記ファイルを書き込むステップは、
前記ファイルを受信することと、
前記ファイルをファイルデータオブジェクトに分けることと、
前記ファイルデータオブジェクトのファイルデータオブジェクトハッシュを計算することと、
ファイルポインタツリーを、
前記ファイルデータオブジェクトハッシュを、前記ファイルポインタツリーのリーフに関連付けられたファイルポインタオブジェクトに挿入すること、
前記ファイルポインタオブジェクトがフルであり、あるいはすべてのファイルデータオブジェクトが処理されている場合、前記ファイルポインタオブジェクトのファイルポインタハッシュを計算すること、及び、前記ファイルポインタハッシュを親ファイルポインタオブジェクトに挿入すること、並びに、
前記ファイルポインタオブジェクトのファイルポインタハッシュを計算することを、前記ファイルポインタツリーが構築されるまで繰り返すこと、
により生成することと、
前記ファイルポインタツリーのルートのファイルポインタハッシュを、ファイルレコードのコンテンツハッシュに挿入することであって、前記ファイルレコードは前記ファイルに関連付けられる、ことと、
前記ファイルレコードの属性を、少なくともファイルサイズ及びタイムスタンプで更新することと、
前記ファイルレコードの属性に基づいて、レコードコンテンツハッシュを計算することと、
集合からの各オブジェクトを前記クラスタストレージに書き込むことであって、前記集合は、前記ファイルデータオブジェクト、前記ファイルポインタオブジェクト、及び前記ファイルレコードを含む、ことと、
前記書き込みの成功と失敗とのうち一方の指標を返すことと、
を含む、請求項21に記載のシステム。 - クラスタストレージから前記データオブジェクトを読み出すステップ、をさらに含み、前記データオブジェクトを読み出すステップは、
前記データオブジェクトハッシュを受信することと、
前記クラスタストレージの物理ノードのセットを決定することであって、前記物理ノードは、前記データオブジェクトのコピーを有する可能性の最大から可能性の最小に順序付けられる、ことと、
各々の順序付けられた物理ノードについて、前記コンテンツアドレス可能オブジェクトストアにおける前記データオブジェクトハッシュをルックアップすることと、
前記データオブジェクトハッシュが発見される場合及びとき、
前記データオブジェクトハッシュに基づいて、ディスク識別子とディスク内の場所とを含むデータオブジェクトメタデータを受信することと、
前記データオブジェクトメタデータを用いて、前記物理ノードから前記データオブジェクトのコピーを読み出すことと、
を含む、請求項14に記載のシステム。 - 前記クラスタストレージからファイルを読み出すステップ、をさらに含み、前記ファイルを読み出すステップは、
前記ファイルに関連付けられたファイルレコードのレコードコンテンツハッシュを受信することと、
前記データオブジェクトを読み出すステップを適用することによって、前記クラスタストレージから前記ファイルレコードを読み出すことと、
前記ファイルレコードの前記コンテンツハッシュを取り出すことによって、ファイルポインタツリーのルートに関連付けられたルートポインタハッシュを決定することと、
前記ファイルポインタツリーを前記ルートから始めて下降して、前記ファイルポインタツリーの子リーフの中のファイルポインタハッシュを取り出し、前記データオブジェクトを読み出すステップを適用することによって、前記ファイルポインタハッシュに関連付けられたファイルデータオブジェクトを読み出すことと、
前記ファイルデータオブジェクトを順次ファイルデータに再組立てすることと、
前記順次ファイルデータを返すことと、
を含む、請求項23に記載のシステム。 - 1つ以上のプロセッサにより実行されるときにコンテンツアドレス可能オブジェクトストア上のファイルシステムを編成し及び管理する方法を実行する命令を具現化させた非一時的コンピュータ可読記憶媒体であって、前記方法は、
レコードをユーザコンテンツに関連付けるステップであって、前記レコードは、前記ユーザコンテンツに関連付けられた属性を含み、前記属性は、前記コンテンツアドレス可能オブジェクトストアにおけるアドレスに関連付けられたコンテンツハッシュを少なくとも含む、ステップと、
前記ユーザコンテンツを複数のデータオブジェクトに分割するステップであって、データオブジェクトの各々は所定の最小サイズを有する、ステップと、
前記複数のデータオブジェクトの各データオブジェクトについて、それぞれのデータオブジェクトハッシュを生成するステップであって、前記データオブジェクトハッシュは、前記データオブジェクトに関連付けられたそれぞれのデータオブジェクトコンテンツの関数である、ステップと、
前記データオブジェクトハッシュに基づいて、前記コンテンツハッシュを決定するステップと、
を含む、非一時的コンピュータ可読記憶媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201461935618P | 2014-02-04 | 2014-02-04 | |
US61/935,618 | 2014-02-04 | ||
PCT/US2015/014492 WO2015120071A2 (en) | 2014-02-04 | 2015-02-04 | Content based organization of file systems |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017504924A true JP2017504924A (ja) | 2017-02-09 |
Family
ID=53754998
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016567483A Pending JP2017504924A (ja) | 2014-02-04 | 2015-02-04 | ファイルシステムのコンテンツベースの編成 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9830324B2 (ja) |
EP (1) | EP3103025B1 (ja) |
JP (1) | JP2017504924A (ja) |
WO (1) | WO2015120071A2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210029914A (ko) * | 2019-09-09 | 2021-03-17 | 주식회사 엘지유플러스 | 컨텐츠에 대한 블록 체인의 블록 갱신 방법 및 서버 |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9628438B2 (en) | 2012-04-06 | 2017-04-18 | Exablox | Consistent ring namespaces facilitating data storage and organization in network infrastructures |
US9552382B2 (en) | 2013-04-23 | 2017-01-24 | Exablox Corporation | Reference counter integrity checking |
JP2016526717A (ja) | 2013-06-12 | 2016-09-05 | エグザブロックス・コーポレーション | ハイブリッドガベージコレクション |
EP3011428A4 (en) | 2013-06-19 | 2017-02-22 | Exablox Corporation | Data scrubbing in cluster-based storage systems |
US9934242B2 (en) | 2013-07-10 | 2018-04-03 | Exablox Corporation | Replication of data between mirrored data sites |
US10248556B2 (en) | 2013-10-16 | 2019-04-02 | Exablox Corporation | Forward-only paged data storage management where virtual cursor moves in only one direction from header of a session to data field of the session |
US9985829B2 (en) | 2013-12-12 | 2018-05-29 | Exablox Corporation | Management and provisioning of cloud connected devices |
US9774582B2 (en) | 2014-02-03 | 2017-09-26 | Exablox Corporation | Private cloud connected device cluster architecture |
US9830324B2 (en) | 2014-02-04 | 2017-11-28 | Exablox Corporation | Content based organization of file systems |
US10409822B2 (en) * | 2014-05-06 | 2019-09-10 | Shutterstock, Inc. | Systems and methods for presenting ranked search results |
US20170060924A1 (en) * | 2015-08-26 | 2017-03-02 | Exablox Corporation | B-Tree Based Data Model for File Systems |
US9846553B2 (en) | 2016-05-04 | 2017-12-19 | Exablox Corporation | Organization and management of key-value stores |
US10460115B2 (en) * | 2017-05-15 | 2019-10-29 | International Business Machines Corporation | Data anonymity |
US20180367313A1 (en) * | 2017-06-20 | 2018-12-20 | Jakob Østergaard | Secure memory and hierarchical structure and system therefor |
CN109144786B (zh) * | 2018-08-28 | 2021-05-28 | 天阳宏业科技股份有限公司 | 打包文件内小文件的恢复方法及恢复系统 |
US11347696B2 (en) * | 2019-02-19 | 2022-05-31 | Oracle International Corporation | System for transition from a hierarchical file system to an object store |
US11501295B2 (en) * | 2019-07-24 | 2022-11-15 | Advanced New Technologies Co., Ltd. | Object distribution processing |
US11409724B2 (en) | 2020-03-10 | 2022-08-09 | International Business Machines Corporation | Hashed balanced tree data structure |
US11669318B2 (en) * | 2021-05-28 | 2023-06-06 | Oracle International Corporation | Rapid software provisioning and patching |
US20230229628A1 (en) * | 2022-01-14 | 2023-07-20 | Xetdata Inc. | Content-addressed storage using content-defined trees |
US20230334093A1 (en) * | 2022-04-13 | 2023-10-19 | Oracle International Corporation | Graph-organized file system |
Family Cites Families (178)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
NL8303167A (nl) | 1983-09-14 | 1985-04-01 | Philips Nv | Alleenstaande dienstverlenende inrichting met micro-computer, die beschermd is tegen storingen. |
US4660130A (en) | 1984-07-24 | 1987-04-21 | Texas Instruments Incorporated | Method for managing virtual memory to separate active and stable memory blocks |
CA2285096C (en) | 1991-11-12 | 2000-05-09 | Ibm Canada Limited-Ibm Canada Limitee | Logical mapping of data objects using data spaces |
GB2265734A (en) | 1992-03-27 | 1993-10-06 | Ibm | Free memory cell management system |
US6237009B1 (en) | 1996-10-11 | 2001-05-22 | Sun Microsystems, Inc. | Lease renewal service |
US5832529A (en) | 1996-10-11 | 1998-11-03 | Sun Microsystems, Inc. | Methods, apparatus, and product for distributed garbage collection |
US6167437A (en) | 1997-09-02 | 2000-12-26 | Silicon Graphics, Inc. | Method, system, and computer program product for page replication in a non-uniform memory access system |
US6098079A (en) | 1998-04-02 | 2000-08-01 | Mitsubishi Electric Information Technology Center America, Inc. (Ita) | File version reconciliation using hash codes |
US6154747A (en) | 1998-08-26 | 2000-11-28 | Hunt; Rolf G. | Hash table implementation of an object repository |
GB9825102D0 (en) | 1998-11-16 | 1999-01-13 | Insignia Solutions Plc | Computer system |
JP2000207266A (ja) | 1999-01-13 | 2000-07-28 | Mitsubishi Electric Corp | レプリカシステムおよびレプリカ方法 |
US6480950B1 (en) | 2000-01-24 | 2002-11-12 | Oracle International Corporation | Software paging system |
US7266555B1 (en) | 2000-03-03 | 2007-09-04 | Intel Corporation | Methods and apparatus for accessing remote storage through use of a local device |
AU2001263033A1 (en) | 2000-05-09 | 2001-11-20 | Sun Microsystems, Inc. | Method and apparatus for proximity discovery of services |
US8219662B2 (en) | 2000-12-06 | 2012-07-10 | International Business Machines Corporation | Redirecting data generated by network devices |
US7216136B2 (en) | 2000-12-11 | 2007-05-08 | International Business Machines Corporation | Concurrent collection of cyclic garbage in reference counting systems |
SE0004736D0 (sv) | 2000-12-20 | 2000-12-20 | Ericsson Telefon Ab L M | Mapping system and method |
US20030028514A1 (en) | 2001-06-05 | 2003-02-06 | Lord Stephen Philip | Extended attribute caching in clustered filesystem |
US7222187B2 (en) | 2001-07-31 | 2007-05-22 | Sun Microsystems, Inc. | Distributed trust mechanism for decentralized networks |
US7134041B2 (en) | 2001-09-20 | 2006-11-07 | Evault, Inc. | Systems and methods for data backup over a network |
US6973049B2 (en) | 2001-10-16 | 2005-12-06 | Corrigent Systems Ltd. | Auto-configuration of network interfaces in a bidirectional ring network |
US7117505B2 (en) | 2001-11-29 | 2006-10-03 | Veritas Operating Corporation | Methods, systems, and apparatus to interface with storage objects |
US7177980B2 (en) | 2001-12-18 | 2007-02-13 | Storage Technology Corporation | Cache storage system and method |
US7392421B1 (en) | 2002-03-18 | 2008-06-24 | Symantec Operating Corporation | Framework for managing clustering and replication |
US6968439B2 (en) | 2002-08-29 | 2005-11-22 | Micron Technology, Inc. | Single segment data object management |
AU2003278779A1 (en) | 2002-09-10 | 2004-04-30 | Exagrid Systems, Inc. | Primary and remote data backup with nodal failover |
GB0301726D0 (en) | 2003-01-24 | 2003-02-26 | Ecebs Ltd | Improved smartcard |
US7043494B1 (en) | 2003-01-28 | 2006-05-09 | Pmc-Sierra, Inc. | Fast, deterministic exact match look-ups in large tables |
US7177886B2 (en) | 2003-02-07 | 2007-02-13 | International Business Machines Corporation | Apparatus and method for coordinating logical data replication with highly available data replication |
JP4068473B2 (ja) | 2003-02-19 | 2008-03-26 | 株式会社東芝 | ストレージ装置、分担範囲決定方法及びプログラム |
US7478096B2 (en) | 2003-02-26 | 2009-01-13 | Burnside Acquisition, Llc | History preservation in a computer storage system |
US7403961B1 (en) | 2003-03-14 | 2008-07-22 | Xilinx, Inc. | Dangling reference detection and garbage collection during hardware simulation |
US6988180B2 (en) | 2003-09-29 | 2006-01-17 | Microsoft Corporation | Method and apparatus for lock-free, non-blocking hash table |
US7496690B2 (en) | 2003-10-09 | 2009-02-24 | Intel Corporation | Method, system, and program for managing memory for data transmission through a network |
US7596704B2 (en) | 2003-10-10 | 2009-09-29 | Jing-Jang Hwang | Partition and recovery of a verifiable digital secret |
US8103772B2 (en) | 2003-12-24 | 2012-01-24 | Sap Aktiengesellschaft | Cluster extension in distributed systems using tree method |
EP1870814B1 (en) | 2006-06-19 | 2014-08-13 | Texas Instruments France | Method and apparatus for secure demand paging for processor devices |
US8185663B2 (en) | 2004-05-11 | 2012-05-22 | Hewlett-Packard Development Company, L.P. | Mirroring storage interface |
US7065611B2 (en) | 2004-06-29 | 2006-06-20 | Hitachi, Ltd. | Method for controlling storage policy according to volume activity |
US7715396B2 (en) | 2004-08-19 | 2010-05-11 | Microsoft Corporation | Network routing |
US7613703B2 (en) | 2004-09-30 | 2009-11-03 | Microsoft Corporation | Organizing resources into collections to facilitate more efficient and reliable resource access |
CN1761219B (zh) | 2004-10-12 | 2010-04-28 | 华为技术有限公司 | 在mpls环网中实现拓扑结构自动发现的方法 |
US20060083247A1 (en) | 2004-10-14 | 2006-04-20 | Sun Microsystems, Inc. | Prefix lookup using address-directed hash tables |
US7694167B2 (en) | 2004-10-22 | 2010-04-06 | Microsoft Corporation | Maintaining routing consistency within a rendezvous federation |
US20120310892A1 (en) | 2004-12-21 | 2012-12-06 | Dam Tru Q | System and method for virtual cluster file server |
KR101123910B1 (ko) | 2005-03-10 | 2012-03-26 | 톰슨 라이센싱 | 하이브리드 메쉬 라우팅 프로토콜 |
JP5043820B2 (ja) | 2005-03-11 | 2012-10-10 | ロックソフト リミテッド | 低冗長記憶システムで索引を行う方法 |
US8356021B2 (en) | 2005-03-11 | 2013-01-15 | Ross Neil Williams | Method and apparatus for indexing in a reduced-redundancy storage system |
US8442996B2 (en) | 2005-04-12 | 2013-05-14 | Enrico Maim | Methods for granting access to resources modifiable by users in a computer environment, and resources structured therefore |
US7539836B1 (en) | 2005-04-18 | 2009-05-26 | Netapp, Inc. | Method and system for configuring a data storage object |
US20070005746A1 (en) | 2005-06-30 | 2007-01-04 | Roe Bryan Y | Enhanced network discovery service |
US8296550B2 (en) | 2005-08-29 | 2012-10-23 | The Invention Science Fund I, Llc | Hierarchical register file with operand capture ports |
US20070130232A1 (en) | 2005-11-22 | 2007-06-07 | Therrien David G | Method and apparatus for efficiently storing and managing historical versions and replicas of computer data files |
US8554758B1 (en) | 2005-12-29 | 2013-10-08 | Amazon Technologies, Inc. | Method and apparatus for monitoring and maintaining health in a searchable data service |
US7454592B1 (en) | 2006-02-16 | 2008-11-18 | Symantec Operating Corporation | Block-level and hash-based single-instance storage |
CN101046755B (zh) | 2006-03-28 | 2011-06-15 | 郭明南 | 一种计算机自动内存管理的系统及方法 |
US20070233828A1 (en) | 2006-03-31 | 2007-10-04 | Jeremy Gilbert | Methods and systems for providing data storage and retrieval |
US7801128B2 (en) | 2006-03-31 | 2010-09-21 | Amazon Technologies, Inc. | Managing communications between computing nodes |
US9195665B2 (en) | 2006-04-28 | 2015-11-24 | Hewlett-Packard Development Company, L.P. | Method and system for data retention |
US20070271303A1 (en) | 2006-05-18 | 2007-11-22 | Manuel Emilio Menendez | Personal file version archival management and retrieval |
US8255420B2 (en) | 2006-05-23 | 2012-08-28 | Noryan Holding Corporation | Distributed storage |
US8099605B1 (en) * | 2006-06-05 | 2012-01-17 | InventSec AB | Intelligent storage device for backup system |
US8990270B2 (en) | 2006-08-03 | 2015-03-24 | Hewlett-Packard Development Company, L. P. | Protocol virtualization for a network file system |
WO2008024971A1 (en) | 2006-08-25 | 2008-02-28 | University Of Florida Research Foundation Inc. | Recursively partioned static ip router tables |
US7539783B2 (en) | 2006-09-22 | 2009-05-26 | Commvault Systems, Inc. | Systems and methods of media management, such as management of media to and from a media storage library, including removable media |
WO2008043197A1 (en) | 2006-09-26 | 2008-04-17 | Intel Corporation | Dynamically changing a garbage collector in a managed runtime system |
US7827218B1 (en) | 2006-11-18 | 2010-11-02 | X-Engines, Inc. | Deterministic lookup using hashed key in a multi-stride compressed trie structure |
US8161353B2 (en) | 2007-12-06 | 2012-04-17 | Fusion-Io, Inc. | Apparatus, system, and method for validating that a correct data segment is read from a data storage device |
US7987278B2 (en) | 2006-12-18 | 2011-07-26 | Ricoh Company, Ltd. | Web services device profile on a multi-service device: dynamic addition of services |
US7840537B2 (en) | 2006-12-22 | 2010-11-23 | Commvault Systems, Inc. | System and method for storing redundant information |
US8935206B2 (en) | 2007-01-31 | 2015-01-13 | Hewlett-Packard Development Company, L.P. | Snapshots in distributed storage systems |
JP5020673B2 (ja) | 2007-03-27 | 2012-09-05 | 株式会社日立製作所 | 重複したファイルの記憶を防ぐコンピュータシステム |
US8190274B2 (en) | 2007-04-15 | 2012-05-29 | Phoenix Contact Gmbh & Co. Kg | Method and control device for controlling an automating system |
EP2015587B1 (fr) | 2007-05-14 | 2012-01-25 | Apple Inc. | Procédé de mémorisation d'un objet multimédia, structure de donnée et terminal associé |
US7725437B2 (en) | 2007-07-31 | 2010-05-25 | Hewlett-Packard Development Company, L.P. | Providing an index for a data store |
JP4386932B2 (ja) | 2007-08-17 | 2009-12-16 | 富士通株式会社 | ストレージ管理プログラム、ストレージ管理装置およびストレージ管理方法 |
US8069317B2 (en) | 2007-10-12 | 2011-11-29 | International Business Machines Corporation | Providing and utilizing high performance block storage metadata |
US8447733B2 (en) | 2007-12-03 | 2013-05-21 | Apple Inc. | Techniques for versioning file systems |
US8140599B1 (en) | 2007-12-07 | 2012-03-20 | Emc Corporation | Garbage collection for merged collections |
US8244846B2 (en) | 2007-12-26 | 2012-08-14 | Symantec Corporation | Balanced consistent hashing for distributed resource management |
US8171244B2 (en) | 2008-02-01 | 2012-05-01 | Imation Corp. | Methods for implementation of worm mode on a removable disk drive storage system |
JP5091704B2 (ja) | 2008-02-06 | 2012-12-05 | 株式会社日立製作所 | ストレージ構成回復方法及びストレージ管理システム |
US8019882B2 (en) * | 2008-06-27 | 2011-09-13 | Microsoft Corporation | Content identification for peer-to-peer content retrieval |
JP5146174B2 (ja) | 2008-07-28 | 2013-02-20 | 富士通株式会社 | 仮想マシンモニタ装置およびプログラム,ならびに仮想マシン間メモリ共有管理方法 |
US8078646B2 (en) | 2008-08-08 | 2011-12-13 | Oracle International Corporation | Representing and manipulating RDF data in a relational database management system |
US8316064B2 (en) * | 2008-08-25 | 2012-11-20 | Emc Corporation | Method and apparatus for managing data objects of a data storage system |
US20100114905A1 (en) * | 2008-11-03 | 2010-05-06 | Elvin Slavik | Method, System, and Product for Managing Spatial Data in a Database |
US8353018B2 (en) | 2008-11-13 | 2013-01-08 | Yahoo! Inc. | Automatic local listing owner authentication system |
JP5396848B2 (ja) | 2008-12-16 | 2014-01-22 | 富士通株式会社 | データ処理プログラム、サーバ装置およびデータ処理方法 |
US9344438B2 (en) | 2008-12-22 | 2016-05-17 | Qualcomm Incorporated | Secure node identifier assignment in a distributed hash table for peer-to-peer networks |
US8886714B2 (en) | 2011-08-08 | 2014-11-11 | Ctera Networks Ltd. | Remote access service for cloud-enabled network devices |
US8132168B2 (en) | 2008-12-23 | 2012-03-06 | Citrix Systems, Inc. | Systems and methods for optimizing a process of determining a location of data identified by a virtual hard drive address |
US8094500B2 (en) | 2009-01-05 | 2012-01-10 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partitioning |
US8566362B2 (en) | 2009-01-23 | 2013-10-22 | Nasuni Corporation | Method and system for versioned file system using structured data representations |
US8397051B2 (en) | 2009-02-23 | 2013-03-12 | Autonomy, Inc. | Hybrid hash tables |
US8301654B2 (en) | 2009-02-24 | 2012-10-30 | Hitachi, Ltd. | Geographical distributed storage system based on hierarchical peer to peer architecture |
US8135748B2 (en) | 2009-04-10 | 2012-03-13 | PHD Virtual Technologies | Virtual machine data replication |
US8886206B2 (en) | 2009-05-01 | 2014-11-11 | Digimarc Corporation | Methods and systems for content processing |
US8478799B2 (en) * | 2009-06-26 | 2013-07-02 | Simplivity Corporation | Namespace file system accessing an object store |
US8612439B2 (en) | 2009-06-30 | 2013-12-17 | Commvault Systems, Inc. | Performing data storage operations in a cloud storage environment, including searching, encryption and indexing |
US8706980B2 (en) | 2009-07-30 | 2014-04-22 | Cleversafe, Inc. | Method and apparatus for slice partial rebuilding in a dispersed storage network |
US8320282B2 (en) | 2009-07-30 | 2012-11-27 | Calix, Inc. | Automatic control node selection in ring networks |
US8285925B1 (en) | 2009-07-31 | 2012-10-09 | Amazon Technologies, Inc. | Management of object mapping information corresponding to a distributed storage system |
US8843762B2 (en) | 2009-09-04 | 2014-09-23 | Gradiant, Centro Tecnolóxico de Telecomunicacións de Galicia | Cryptographic system for performing secure iterative computations and signal processing directly on encrypted data in untrusted environments |
BR112012007376B1 (pt) | 2009-10-01 | 2023-02-14 | Telefonaktiebolaget Lm Ericsson (Publ) | Plataforma de escopo de aplicação, dispositivo de usuário para uma aplicação web, e, método para possibilitar comunicação entre uma plataforma de escopo de aplicação e uma aplicação web |
JP2011095976A (ja) | 2009-10-29 | 2011-05-12 | Nippon Telegr & Teleph Corp <Ntt> | 分散データ管理装置及び方法及びプログラム |
US8868510B2 (en) | 2009-12-03 | 2014-10-21 | Sybase, Inc. | Managing data storage as an in-memory database in a database management system |
US8606751B1 (en) * | 2009-12-21 | 2013-12-10 | Emc Corporation | System and method for backup by inode number |
US8458131B2 (en) | 2010-02-26 | 2013-06-04 | Microsoft Corporation | Opportunistic asynchronous de-duplication in block level backups |
EP2548122B1 (en) | 2010-03-16 | 2021-06-09 | BlackBerry Limited | Highly scalable and distributed data de-duplication |
US8458299B2 (en) | 2010-03-17 | 2013-06-04 | Hitachi, Ltd. | Metadata management method for NAS global namespace design |
FR2959089B1 (fr) | 2010-04-16 | 2012-08-03 | Inst Nat Rech Inf Automat | Outil de gestion de ressources et d'infrastructures informatiques et reseaux |
US20110264880A1 (en) | 2010-04-23 | 2011-10-27 | Tatu Ylonen Oy Ltd | Object copying with re-copying concurrently written objects |
US9047218B2 (en) | 2010-04-26 | 2015-06-02 | Cleversafe, Inc. | Dispersed storage network slice name verification |
US8504718B2 (en) | 2010-04-28 | 2013-08-06 | Futurewei Technologies, Inc. | System and method for a context layer switch |
US8984241B2 (en) | 2010-07-07 | 2015-03-17 | Nexenta Systems, Inc. | Heterogeneous redundant storage array |
CN103380423B (zh) | 2010-07-09 | 2016-01-27 | 道富公司 | 用于私人云计算的系统和方法 |
WO2012016089A2 (en) | 2010-07-28 | 2012-02-02 | Fusion-Io, Inc. | Apparatus, system, and method for conditional and atomic storage operations |
US20120030260A1 (en) | 2010-07-30 | 2012-02-02 | Maohua Lu | Scalable and parallel garbage collection method and system for incremental backups with data de-duplication |
US8407438B1 (en) | 2010-08-16 | 2013-03-26 | Symantec Corporation | Systems and methods for managing virtual storage disk data |
US8495093B2 (en) | 2010-08-18 | 2013-07-23 | International Business Machines Corporation | Multiway trie data structure that dynamically adjusts node sizes in a manner that reduces memory footprint and improves access speed |
JP5514041B2 (ja) | 2010-08-25 | 2014-06-04 | 日本電信電話株式会社 | 識別子割当て方法及びプログラム |
US8473778B2 (en) | 2010-09-08 | 2013-06-25 | Microsoft Corporation | Erasure coding immutable data |
US8972366B2 (en) | 2010-09-29 | 2015-03-03 | Red Hat, Inc. | Cloud-based directory system based on hashed values of parent and child storage locations |
WO2012051600A2 (en) | 2010-10-15 | 2012-04-19 | Kyquang Son | File system-aware solid-state storage management system |
US8239584B1 (en) | 2010-12-16 | 2012-08-07 | Emc Corporation | Techniques for automated storage management |
US8484408B2 (en) | 2010-12-29 | 2013-07-09 | International Business Machines Corporation | Storage system cache with flash memory in a raid configuration that commits writes as full stripes |
US9201667B2 (en) | 2010-12-31 | 2015-12-01 | Vmware, Inc. | Providing virtual desktops using resources accessed on public computer networks |
US9311135B2 (en) | 2011-01-18 | 2016-04-12 | Scality, S.A. | Method for generating universal objects identifiers in distributed multi-purpose storage systems |
WO2012109679A2 (en) | 2011-02-11 | 2012-08-16 | Fusion-Io, Inc. | Apparatus, system, and method for application direct virtual memory management |
US8510267B2 (en) | 2011-03-08 | 2013-08-13 | Rackspace Us, Inc. | Synchronization of structured information repositories |
WO2012129191A2 (en) | 2011-03-18 | 2012-09-27 | Fusion-Io, Inc. | Logical interfaces for contextual storage |
US8341312B2 (en) | 2011-04-29 | 2012-12-25 | International Business Machines Corporation | System, method and program product to manage transfer of data to resolve overload of a storage system |
US8572290B1 (en) | 2011-05-02 | 2013-10-29 | Board Of Supervisors Of Louisiana State University And Agricultural And Mechanical College | System and architecture for robust management of resources in a wide-area network |
US8433681B2 (en) | 2011-05-12 | 2013-04-30 | Dell Products L.P. | System and method for managing replication in an object storage system |
US8346810B2 (en) | 2011-05-13 | 2013-01-01 | Simplivity Corporation | Reference count propagation |
US8949182B2 (en) | 2011-06-17 | 2015-02-03 | International Business Machines Corporation | Continuous and asynchronous replication of a consistent dataset |
US8843998B2 (en) | 2011-06-27 | 2014-09-23 | Cliqr Technologies, Inc. | Apparatus, systems and methods for secure and selective access to services in hybrid public-private infrastructures |
US8880837B2 (en) | 2011-08-24 | 2014-11-04 | International Business Machines Corporation | Preemptively allocating extents to a data set |
WO2013039535A1 (en) | 2011-09-12 | 2013-03-21 | Microsoft Corporation | Querying and repairing data |
EP2575379A1 (en) | 2011-09-29 | 2013-04-03 | Alcatel Lucent | Apparatuses and computer program products for discovering and accessing local services via WiFi hotspots |
US9372827B2 (en) | 2011-09-30 | 2016-06-21 | Commvault Systems, Inc. | Migration of an existing computing system to new hardware |
US9455996B2 (en) | 2011-10-03 | 2016-09-27 | New York University | Generating progressively a perfect hash data structure, such as a multi-dimensional perfect hash data structure, and using the generated data structure for high-speed string matching |
JP2015510138A (ja) | 2011-12-05 | 2015-04-02 | クゥアルコム・インコーポレイテッドQualcomm Incorporated | テレヘルスワイヤレス通信ハブデバイスおよびサービスプラットフォームシステム |
US8762627B2 (en) | 2011-12-21 | 2014-06-24 | Sandisk Technologies Inc. | Memory logical defragmentation during garbage collection |
WO2013101186A1 (en) | 2011-12-30 | 2013-07-04 | Schneider Electric It Corporation | Systems and methods of remote communication |
US8782344B2 (en) | 2012-01-12 | 2014-07-15 | Fusion-Io, Inc. | Systems and methods for managing cache admission |
US9489827B2 (en) | 2012-03-12 | 2016-11-08 | Cisco Technology, Inc. | System and method for distributing content in a video surveillance network |
US9213581B2 (en) | 2012-03-14 | 2015-12-15 | Sap Se | Method and system for a cloud frame architecture |
US9043567B1 (en) | 2012-03-28 | 2015-05-26 | Netapp, Inc. | Methods and systems for replicating an expandable storage volume |
US20130263151A1 (en) | 2012-04-03 | 2013-10-03 | Microsoft Corporation | Consistent Hashing Table for Workload Distribution |
US8868926B2 (en) | 2012-04-06 | 2014-10-21 | Exablox Corporation | Cryptographic hash database |
US9628438B2 (en) * | 2012-04-06 | 2017-04-18 | Exablox | Consistent ring namespaces facilitating data storage and organization in network infrastructures |
EP3897016A3 (en) | 2012-04-27 | 2021-11-24 | Interdigital Patent Holdings, Inc. | Method and apparatus for provisioning of d2d policies for a wireless transmit receive unit (wtru) |
US20150081964A1 (en) | 2012-05-01 | 2015-03-19 | Hitachi, Ltd. | Management apparatus and management method of computing system |
US9323589B2 (en) | 2012-05-15 | 2016-04-26 | Oracle International Corporation | Self registration of event—consumers/producers and auto discovery |
US9317511B2 (en) * | 2012-06-19 | 2016-04-19 | Infinidat Ltd. | System and method for managing filesystem objects |
US20130346839A1 (en) | 2012-06-20 | 2013-12-26 | Francis Dinha | Private tunnel network portal |
US20130346591A1 (en) | 2012-06-21 | 2013-12-26 | Alcatel-Lucent Usa Inc. | Clientless Cloud Computing |
US9003477B2 (en) | 2012-06-27 | 2015-04-07 | Microsoft Technology Licensing, Llc | Model for managing hosted resources using logical scopes |
US9348652B2 (en) | 2012-07-02 | 2016-05-24 | Vmware, Inc. | Multi-tenant-cloud-aggregation and application-support system |
US8966343B2 (en) | 2012-08-21 | 2015-02-24 | Western Digital Technologies, Inc. | Solid-state drive retention monitor using reference blocks |
US9002792B2 (en) | 2012-11-19 | 2015-04-07 | Compellent Technologies | Confirming data consistency in a data storage environment |
US9715507B2 (en) | 2013-03-28 | 2017-07-25 | Ctera Networks, Ltd. | Techniques for reconciling metadata and data in a cloud storage system without service interruption |
US9552382B2 (en) | 2013-04-23 | 2017-01-24 | Exablox Corporation | Reference counter integrity checking |
US9786197B2 (en) | 2013-05-09 | 2017-10-10 | Rockwell Automation Technologies, Inc. | Using cloud-based data to facilitate enhancing performance in connection with an industrial automation system |
WO2014190093A1 (en) | 2013-05-21 | 2014-11-27 | Exablox Corporation | Automatic data ring discovery and configuration |
US9389651B2 (en) | 2013-05-22 | 2016-07-12 | Exablox Corporation | Modular electronics chassis |
JP2016526717A (ja) | 2013-06-12 | 2016-09-05 | エグザブロックス・コーポレーション | ハイブリッドガベージコレクション |
EP3011428A4 (en) | 2013-06-19 | 2017-02-22 | Exablox Corporation | Data scrubbing in cluster-based storage systems |
US9934242B2 (en) | 2013-07-10 | 2018-04-03 | Exablox Corporation | Replication of data between mirrored data sites |
US8991950B2 (en) | 2013-07-10 | 2015-03-31 | Exablox Corporation | Modular electronics chassis |
US20150066524A1 (en) | 2013-09-05 | 2015-03-05 | Dorsata, Inc. | Methods and systems for the implementation of web based collaborative clinical pathways |
EP3055794A4 (en) | 2013-10-11 | 2017-04-05 | Exablox Corporation | Hierarchical data archiving |
US10248556B2 (en) | 2013-10-16 | 2019-04-02 | Exablox Corporation | Forward-only paged data storage management where virtual cursor moves in only one direction from header of a session to data field of the session |
US9985829B2 (en) | 2013-12-12 | 2018-05-29 | Exablox Corporation | Management and provisioning of cloud connected devices |
US9774582B2 (en) | 2014-02-03 | 2017-09-26 | Exablox Corporation | Private cloud connected device cluster architecture |
US9830324B2 (en) | 2014-02-04 | 2017-11-28 | Exablox Corporation | Content based organization of file systems |
-
2015
- 2015-02-04 US US14/614,266 patent/US9830324B2/en active Active
- 2015-02-04 WO PCT/US2015/014492 patent/WO2015120071A2/en active Application Filing
- 2015-02-04 JP JP2016567483A patent/JP2017504924A/ja active Pending
- 2015-02-04 EP EP15746801.8A patent/EP3103025B1/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210029914A (ko) * | 2019-09-09 | 2021-03-17 | 주식회사 엘지유플러스 | 컨텐츠에 대한 블록 체인의 블록 갱신 방법 및 서버 |
KR102300191B1 (ko) * | 2019-09-09 | 2021-09-08 | 주식회사 엘지유플러스 | 컨텐츠에 대한 블록 체인의 블록 갱신 방법 및 서버 |
Also Published As
Publication number | Publication date |
---|---|
EP3103025A2 (en) | 2016-12-14 |
WO2015120071A3 (en) | 2015-11-05 |
WO2015120071A2 (en) | 2015-08-13 |
US9830324B2 (en) | 2017-11-28 |
EP3103025B1 (en) | 2019-07-10 |
US20150220578A1 (en) | 2015-08-06 |
EP3103025A4 (en) | 2017-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9830324B2 (en) | Content based organization of file systems | |
RU2740865C1 (ru) | Способы и устройство для эффективной реализации базы данных, поддерживающей быстрое копирование | |
US10942813B2 (en) | Cloud object data layout (CODL) | |
US9646030B2 (en) | Computer-readable medium storing program and version control method | |
US11914485B2 (en) | Restoration of specified content from an archive | |
US8849759B2 (en) | Unified local storage supporting file and cloud object access | |
KR20200093556A (ko) | 클라이언트 동기화 서비스에 대한 로컬 트리의 업데이트 | |
US10262004B2 (en) | Native snapshots in distributed file systems | |
US9146930B2 (en) | Method and apparatus for file storage | |
JP5886447B2 (ja) | ロケーション非依存のファイル | |
JP6598996B2 (ja) | データ準備のためのシグニチャベースのキャッシュ最適化 | |
US9183212B2 (en) | Representing directory structure in content-addressable storage systems | |
JP5650982B2 (ja) | ファイルの重複を排除する装置及び方法 | |
JP2016526737A (ja) | Posix互換なファイル・システム、ファイル・リストを生成する方法および記憶デバイス | |
CN106484820A (zh) | 一种重命名方法、访问方法及装置 | |
US10503605B2 (en) | Method of detecting source change for file level incremental backup | |
CN111045857A (zh) | 数据备份和恢复的方法、电子设备和计算机可读存储介质 | |
CN111104377B (zh) | 文件管理的方法、电子设备和计算机可读存储介质 | |
JP6598997B2 (ja) | データ準備のためのキャッシュ最適化 | |
CN107209707B (zh) | 基于云的分级系统保存 | |
US20200349115A1 (en) | File system metadata deduplication | |
US20190332574A1 (en) | Method and system of snapshot generation and management | |
US20170153951A1 (en) | Incremental synchronous hierarchical system restoration | |
CN110008178B (zh) | 分布式文件系统元数据的组织方法及装置 | |
WO2023138788A1 (en) | Method of backing up file-system onto object storgae system and data management module |