JP2017504924A - ファイルシステムのコンテンツベースの編成 - Google Patents

ファイルシステムのコンテンツベースの編成 Download PDF

Info

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
Application number
JP2016567483A
Other languages
English (en)
Inventor
ハント,タッド
イー バラス,フランク
イー バラス,フランク
Original Assignee
エグザブロックス・コーポレーション
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by エグザブロックス・コーポレーション filed Critical エグザブロックス・コーポレーション
Publication of JP2017504924A publication Critical patent/JP2017504924A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based

Abstract

コンテンツアドレス可能オブジェクトストア上のファイルシステムを編成し及び管理するための方法及びシステムが提供される。ユーザコンテンツが、コンテンツアドレス可能オブジェクトストアにおけるアドレスに関連付けられたコンテンツハッシュを含むレコードに関連付けられる。コンテンツハッシュは、ユーザコンテンツの関数であり、ファイルをデータオブジェクトに分割することと、データオブジェクト上にハッシュのポインタツリーを生成することと、ポインタツリーのルートのハッシュを算出することとによって決定される。レコード、ポインタツリー、及びファイルが、オブジェクトストアに記憶される。オブジェクトストアからユーザコンテンツを読み出すことが、レコードを読み出すことと、コンテンツハッシュを取り出してポインタツリーのルートを発見することと、ポインタツリーのリーフを下降して、ユーザコンテンツに関連付けられたデータオブジェクトのハッシュを読み出すことと、データオブジェクトを順次ファイルデータにおいて再組立することとを含む。

Description

関連出願の相互参照
本出願は、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ノードが最初に作成されるとき、生成される。
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. 前記コンテンツハッシュを決定するステップは、
    前記複数のデータオブジェクトの中のオブジェクトの数を算出することと、
    前記オブジェクトの数が1である場合、前記コンテンツハッシュを前記データオブジェクトハッシュに設定することと、
    前記オブジェクトの数が2以上である場合、前記データオブジェクトハッシュに基づいてポインタツリーを生成することであって、前記ポインタツリーを生成することは、
    前記データオブジェクトハッシュを複数のポインタオブジェクトにグループ化することと、
    前記ポインタオブジェクトを前記ポインタツリーにおけるレイヤのリーフとして割り当てることと、
    前記レイヤが2つ以上のリーフを含む場合、前記ポインタツリーの次レイヤを構築することであり、前記次レイヤを構築することは、
    前記ポインタオブジェクトの各々について、ポインタハッシュを生成することであり、前記ポインタハッシュは、前記ポインタオブジェクトに関連付けられたそれぞれのポインタオブジェクトコンテンツの関数である、こと、
    前記ポインタハッシュを複数のさらなるポインタオブジェクトにグループ化することであり、前記さらなるポインタオブジェクトの各々は前記所定の最小サイズを有する、こと、
    前記さらなるポインタオブジェクトを、前記ポインタツリーにおけるさらなるレイヤのリーフとして割り当てること、並びに、
    前記ポインタハッシュを生成すること、前記ポインタハッシュをグループ化すること、及び前記さらなるポインタオブジェクトを割り当てることを、1つのリーフを有する最終レイヤが受信されるまで繰り返すこと、
    を含む、ことと、
    前記最終レイヤのリーフを、前記ポインタツリーのルートとして割り当てることと、
    前記ポインタツリーのルートのコンテンツに基づいて、ルートポインタハッシュを計算することと、
    を含む、ことと、
    前記レコードの前記コンテンツハッシュを前記ルートポインタハッシュに設定することと、
    を含む、請求項1に記載の方法。
  3. 前記ポインタツリーの深さが、下記の式:MaxFileSize = BLKSZ x (truncate(BLKSZ÷SMASHSZ))depthにより決定され、MaxFileSizeはコンテンツエンティティのサイズであり、BLKSZは前記所定の最小サイズであり、SMASHSZは前記コンテンツハッシュのサイズであり、前記truncateは、実数のうちの整数部分を返す、実数の関数である、請求項2に記載の方法。
  4. 前記ユーザコンテンツは、データファイルとフォルダとのうち1つ以上を含む、請求項2に記載の方法。
  5. 前記フォルダは、さらなるレコードに関連付けられた少なくとも1つのフォルダエントリを含み、前記さらなるレコードは、さらなるユーザコンテンツに関連付けられ、前記少なくとも1つのフォルダエントリは、
    前記さらなるユーザコンテンツのタイプに関連付けられた、エントリのタイプと、
    前記さらなるユーザコンテンツの長さに関連付けられた、エントリの長さと、
    前記さらなるユーザコンテンツの名前に関連付けられた、エントリの名前と、
    さらなるコンテンツハッシュに関連付けられた、エントリの属性であって、前記さらなるコンテンツハッシュは、前記さらなるレコードの属性に基づいて生成される、エントリの属性と、
    のうち少なくとも1つを含む、請求項4に記載の方法。
  6. 前記フォルダは、さらなるレコードに関連付けられた1つ以上のエントリを含み、前記さらなるレコードの各々は、前記ユーザコンテンツの一意の時間バージョンに関連付けられる、請求項5に記載の方法。
  7. 前記レコードの前記属性は、前のコンテンツハッシュを含み、前記前のコンテンツハッシュは、前のレコードの属性に関連付けられたコンテンツに基づいて生成され、前記前のレコードは、前記ユーザコンテンツのそれぞれの前のバージョンに関連付けられる、請求項4に記載の方法。
  8. 前記ユーザコンテンツにおける変更に応答して、
    前記ユーザコンテンツに関連付けられた前記ポインタツリーを少なくとも部分的に再生成するステップと、
    さらなるレコードを生成するステップと、
    前記さらなるレコードのコンテンツハッシュを、前記の再生成されたポインタツリーのルートに関連付けられたポインタハッシュに設定するステップと、
    前記レコードの前記属性に関連付けられたコンテンツに基づいて、レコードコンテンツハッシュを計算するステップと、
    前記新しいレコードの前のコンテンツハッシュを、前記レコードコンテンツハッシュに設定するステップと、
    をさらに含む請求項7に記載の方法。
  9. 前記データオブジェクトをクラスタストレージに書き込むステップ、をさらに含み、前記データオブジェクトを書き込むステップは、
    前記データオブジェクトと前記データオブジェクトのタイプとを受信することと、
    前記データオブジェクトハッシュを計算することと、
    前記クラスタストレージの物理ノードを決定することであって、前記物理ノードは前記データオブジェクトのコピーを含む、ことと、
    前記の決定された物理ノードの各々において、下記のステップ:
    前記コンテンツアドレス可能オブジェクトストアにおける前記データオブジェクトハッシュをルックアップして、データオブジェクトメタデータを取得することであり、前記メタデータは少なくともディスク識別子とディスク内の場所とを含む、こと、並びに、
    前記データオブジェクトハッシュが発見されない場合、
    前記物理ノードに前記データオブジェクトのコピーを書き込むこと、及び
    前記コンテンツアドレス可能オブジェクトストアを、前記データオブジェクトに関連付けられた新しいメタデータで更新すること、
    を実行することと、
    を含む、請求項2に記載の方法。
  10. 前記クラスタストレージにファイルを書き込むステップ、をさらに含み、前記ファイルを書き込むステップは、
    前記ファイルを受信することと、
    前記ファイルをファイルデータオブジェクトに分けることと、
    前記ファイルデータオブジェクトのファイルデータオブジェクトハッシュを計算することと、
    ファイルポインタツリーを、
    前記ファイルデータオブジェクトハッシュを、前記ファイルポインタツリーのリーフに関連付けられたファイルポインタオブジェクトに挿入すること、
    前記ファイルポインタオブジェクトがフルであり、あるいはすべてのファイルデータオブジェクトが処理されている場合、前記ファイルポインタオブジェクトのファイルポインタハッシュを計算すること、及び、前記ファイルポインタハッシュを親ファイルポインタオブジェクトに挿入すること、並びに、
    前記ファイルポインタオブジェクトのファイルポインタハッシュを計算することを、前記ファイルポインタツリーが構築されるまで繰り返すこと、
    により生成することと、
    前記ファイルポインタツリーのルートのファイルポインタハッシュを、ファイルレコードのコンテンツハッシュに挿入することであって、前記ファイルレコードは前記ファイルに関連付けられる、ことと、
    前記ファイルレコードの属性を、少なくともファイルサイズ及びタイムスタンプで更新することと、
    前記ファイルレコードの属性に基づいて、レコードコンテンツハッシュを計算することと、
    集合からの各オブジェクトを前記クラスタストレージに書き込むことであって、前記集合は、前記ファイルデータオブジェクト、前記ファイルポインタオブジェクト、及び前記ファイルレコードを含む、ことと、
    前記書き込みの成功と失敗とのうち一方の指標を返すことと、
    を含む、請求項9に記載の方法。
  11. クラスタストレージから前記データオブジェクトを読み出すステップ、をさらに含み、前記データオブジェクトを読み出すステップは、
    前記データオブジェクトハッシュを受信することと、
    前記クラスタストレージの物理ノードのセットを決定することであって、前記物理ノードは、前記データオブジェクトのコピーを有する可能性の最大から可能性の最小に順序付けられる、ことと、
    各々の順序付けられた物理ノードについて、前記コンテンツアドレス可能オブジェクトストアにおける前記データオブジェクトハッシュをルックアップすることと、
    前記データオブジェクトハッシュが発見される場合及びとき、
    前記データオブジェクトハッシュに基づいて、ディスク識別子とディスク内の場所とを含むデータオブジェクトメタデータを受信することと、
    前記データオブジェクトメタデータを用いて、前記物理ノードから前記データオブジェクトのコピーを読み出すことと、
    を含む、請求項2に記載の方法。
  12. 前記クラスタストレージからファイルを読み出すステップ、をさらに含み、前記ファイルを読み出すステップは、
    前記ファイルに関連付けられたファイルレコードのレコードコンテンツハッシュを受信することと、
    前記データオブジェクトを読み出すステップを適用することによって、前記クラスタストレージから前記ファイルレコードを読み出すことと、
    前記ファイルレコードの前記コンテンツハッシュを取り出すことによって、ファイルポインタツリーのルートに関連付けられたルートポインタハッシュを決定することと、
    前記ファイルポインタツリーを前記ルートから始めて下降して、前記ファイルポインタツリーの子リーフの中のファイルポインタハッシュを取り出すこと、及び、前記データオブジェクトを読み出すステップを適用することによって、前記ファイルポインタハッシュに関連付けられたファイルデータオブジェクトを読み出すことと、
    前記ファイルデータオブジェクトを順次ファイルデータに再組立てすることと、
    前記順次ファイルデータを返すことと、
    を含む、請求項11に記載の方法。
  13. コンテンツアドレス可能オブジェクトストア上のファイルシステムを編成し及び管理するシステムであって、
    少なくとも1つのプロセッサと、
    前記少なくとも1つのプロセッサに通信可能に結合されたメモリと、
    を含み、
    前記メモリは、前記少なくとも1つのプロセッサにより実行されるときに方法を実行する命令を記憶し、前記方法は、
    レコードをユーザコンテンツに関連付けるステップであって、前記レコードは、前記ユーザコンテンツに関連付けられた属性を含み、前記属性は、前記コンテンツアドレス可能オブジェクトストアにおけるアドレスに関連付けられたコンテンツハッシュを少なくとも含む、ステップと、
    前記ユーザコンテンツを複数のデータオブジェクトに分割するステップであって、各データオブジェクトは所定の最小サイズを有する、ステップと、
    前記複数のデータオブジェクトの各データオブジェクトについて、それぞれのデータオブジェクトハッシュを生成するステップであって、前記データオブジェクトハッシュは、前記データオブジェクトに関連付けられたそれぞれのデータオブジェクトコンテンツの関数である、ステップと、
    前記データオブジェクトハッシュに基づいて、前記コンテンツハッシュを決定するステップと、
    を含む、システム。
  14. 前記コンテンツハッシュを決定するステップは、
    前記複数のデータオブジェクトの中のオブジェクトの数を算出することと、
    前記オブジェクトの数が1である場合、前記コンテンツハッシュを前記データオブジェクトハッシュに設定することと、
    前記オブジェクトの数が2以上である場合、前記データオブジェクトハッシュに基づいてポインタツリーを生成することであって、前記ポインタツリーを生成することは、
    前記データオブジェクトハッシュを複数のポインタオブジェクトにグループ化することと、
    前記ポインタオブジェクトを前記ポインタツリーにおけるレイヤのリーフとして割り当てることと、
    前記レイヤが2つ以上のリーフを含む場合、前記ポインタツリーの次レイヤを構築することであり、前記次レイヤを構築することは、
    前記ポインタオブジェクトの各々について、ポインタハッシュを生成することであり、前記ポインタハッシュは、前記ポインタオブジェクトに関連付けられたそれぞれのポインタオブジェクトコンテンツの関数である、こと、
    前記ポインタハッシュを複数のさらなるポインタオブジェクトにグループ化することであり、前記さらなるポインタオブジェクトは前記所定の最小サイズを有する、こと、
    前記さらなるポインタオブジェクトを、前記ポインタツリーにおけるさらなるレイヤのリーフとして割り当てること、並びに、
    前記ポインタハッシュを生成すること、前記ポインタハッシュをグループ化すること、及び前記さらなるポインタオブジェクトを割り当てることを、1つのリーフを有する最終レイヤが受信されるまで繰り返すこと、
    を含む、ことと、
    前記最終レイヤのリーフを、前記ポインタツリーのルートとして割り当てることと、
    前記ポインタツリーのルートのコンテンツに基づいて、ルートポインタハッシュを計算することと、
    を含む、ことと、
    前記レコードの前記コンテンツハッシュを前記ルートポインタハッシュに設定することと、
    を含む、請求項13に記載のシステム。
  15. 前記ポインタツリーの深さが、下記の式:MaxFileSize = BLKSZ x (truncate(BLKSZ÷SMASHSZ))depthにより決定され、MaxFileSizeはコンテンツエンティティのサイズであり、BLKSZは前記所定の最小サイズであり、SMASHSZは前記コンテンツハッシュのサイズであり、前記truncateは、実数のうちの整数部分を返す、実数の関数である、請求項14に記載のシステム。
  16. 前記ユーザコンテンツは、データファイルとフォルダとのうち1つ以上を含む、請求項14に記載のシステム。
  17. 前記フォルダは、さらなるレコードに関連付けられた少なくとも1つのフォルダエントリを含み、前記さらなるレコードは、さらなるユーザコンテンツに関連付けられ、前記少なくとも1つのフォルダエントリは、
    前記さらなるユーザコンテンツのタイプに関連付けられた、エントリのタイプと、
    前記さらなるユーザコンテンツの長さに関連付けられた、エントリの長さと、
    前記さらなるユーザコンテンツの名前に関連付けられた、エントリの名前と、
    さらなるコンテンツハッシュに関連付けられた、エントリの属性であって、前記さらなるコンテンツハッシュは、前記さらなるレコードの属性に基づいて生成される、エントリの属性と、
    のうち少なくとも1つを含む、請求項16に記載のシステム。
  18. 前記フォルダは、さらなるレコードに関連付けられた1つ以上のエントリを含み、前記さらなるレコードの各々は、前記ユーザコンテンツの一意の時間バージョンに関連付けられる、請求項17に記載のシステム。
  19. 前記レコードの前記属性は、前のコンテンツハッシュを含み、前記前のコンテンツハッシュは、前のレコードの属性に関連付けられたコンテンツに基づいて生成され、前記前のレコードは、前記ユーザコンテンツのそれぞれの前のバージョンに関連付けられる、請求項16に記載のシステム。
  20. 前記ユーザコンテンツにおける変更に応答して、
    前記ユーザコンテンツに関連付けられた前記ポインタツリーを少なくとも部分的に再生成するステップと、
    さらなるレコードを生成するステップと、
    前記さらなるレコードのコンテンツハッシュを、前記の再生成されたポインタツリーのルートに関連付けられたポインタハッシュに設定するステップと、
    前記レコードの前記属性に関連付けられたコンテンツに基づいて、レコードコンテンツハッシュを計算するステップと、
    前記新しいレコードの前のコンテンツハッシュを、前記レコードコンテンツハッシュに設定するステップと、
    をさらに含む請求項19に記載のシステム。
  21. 前記データオブジェクトをクラスタストレージに書き込むステップ、をさらに含み、前記データオブジェクトを書き込むステップは、
    前記データオブジェクトと前記データオブジェクトのタイプとを受信することと、
    前記データオブジェクトハッシュを計算することと、
    前記クラスタストレージの物理ノードを決定することであって、前記物理ノードは前記データオブジェクトのコピーを含む、ことと、
    前記の決定された物理ノードの各々において、下記のステップ:
    前記コンテンツアドレス可能オブジェクトストアにおける前記データオブジェクトハッシュをルックアップして、データオブジェクトメタデータを取得することであり、前記メタデータは少なくともディスク識別子とディスク内の場所とを含む、こと、並びに、
    前記データオブジェクトハッシュが発見されない場合、
    前記物理ノードに前記データオブジェクトのコピーを書き込むこと、及び
    前記コンテンツアドレス可能オブジェクトストアを、前記データオブジェクトに関連付けられた新しいメタデータで更新すること、
    を実行することと、
    を含む、請求項14に記載のシステム。
  22. 前記クラスタストレージにファイルを書き込むステップ、をさらに含み、前記ファイルを書き込むステップは、
    前記ファイルを受信することと、
    前記ファイルをファイルデータオブジェクトに分けることと、
    前記ファイルデータオブジェクトのファイルデータオブジェクトハッシュを計算することと、
    ファイルポインタツリーを、
    前記ファイルデータオブジェクトハッシュを、前記ファイルポインタツリーのリーフに関連付けられたファイルポインタオブジェクトに挿入すること、
    前記ファイルポインタオブジェクトがフルであり、あるいはすべてのファイルデータオブジェクトが処理されている場合、前記ファイルポインタオブジェクトのファイルポインタハッシュを計算すること、及び、前記ファイルポインタハッシュを親ファイルポインタオブジェクトに挿入すること、並びに、
    前記ファイルポインタオブジェクトのファイルポインタハッシュを計算することを、前記ファイルポインタツリーが構築されるまで繰り返すこと、
    により生成することと、
    前記ファイルポインタツリーのルートのファイルポインタハッシュを、ファイルレコードのコンテンツハッシュに挿入することであって、前記ファイルレコードは前記ファイルに関連付けられる、ことと、
    前記ファイルレコードの属性を、少なくともファイルサイズ及びタイムスタンプで更新することと、
    前記ファイルレコードの属性に基づいて、レコードコンテンツハッシュを計算することと、
    集合からの各オブジェクトを前記クラスタストレージに書き込むことであって、前記集合は、前記ファイルデータオブジェクト、前記ファイルポインタオブジェクト、及び前記ファイルレコードを含む、ことと、
    前記書き込みの成功と失敗とのうち一方の指標を返すことと、
    を含む、請求項21に記載のシステム。
  23. クラスタストレージから前記データオブジェクトを読み出すステップ、をさらに含み、前記データオブジェクトを読み出すステップは、
    前記データオブジェクトハッシュを受信することと、
    前記クラスタストレージの物理ノードのセットを決定することであって、前記物理ノードは、前記データオブジェクトのコピーを有する可能性の最大から可能性の最小に順序付けられる、ことと、
    各々の順序付けられた物理ノードについて、前記コンテンツアドレス可能オブジェクトストアにおける前記データオブジェクトハッシュをルックアップすることと、
    前記データオブジェクトハッシュが発見される場合及びとき、
    前記データオブジェクトハッシュに基づいて、ディスク識別子とディスク内の場所とを含むデータオブジェクトメタデータを受信することと、
    前記データオブジェクトメタデータを用いて、前記物理ノードから前記データオブジェクトのコピーを読み出すことと、
    を含む、請求項14に記載のシステム。
  24. 前記クラスタストレージからファイルを読み出すステップ、をさらに含み、前記ファイルを読み出すステップは、
    前記ファイルに関連付けられたファイルレコードのレコードコンテンツハッシュを受信することと、
    前記データオブジェクトを読み出すステップを適用することによって、前記クラスタストレージから前記ファイルレコードを読み出すことと、
    前記ファイルレコードの前記コンテンツハッシュを取り出すことによって、ファイルポインタツリーのルートに関連付けられたルートポインタハッシュを決定することと、
    前記ファイルポインタツリーを前記ルートから始めて下降して、前記ファイルポインタツリーの子リーフの中のファイルポインタハッシュを取り出し、前記データオブジェクトを読み出すステップを適用することによって、前記ファイルポインタハッシュに関連付けられたファイルデータオブジェクトを読み出すことと、
    前記ファイルデータオブジェクトを順次ファイルデータに再組立てすることと、
    前記順次ファイルデータを返すことと、
    を含む、請求項23に記載のシステム。
  25. 1つ以上のプロセッサにより実行されるときにコンテンツアドレス可能オブジェクトストア上のファイルシステムを編成し及び管理する方法を実行する命令を具現化させた非一時的コンピュータ可読記憶媒体であって、前記方法は、
    レコードをユーザコンテンツに関連付けるステップであって、前記レコードは、前記ユーザコンテンツに関連付けられた属性を含み、前記属性は、前記コンテンツアドレス可能オブジェクトストアにおけるアドレスに関連付けられたコンテンツハッシュを少なくとも含む、ステップと、
    前記ユーザコンテンツを複数のデータオブジェクトに分割するステップであって、データオブジェクトの各々は所定の最小サイズを有する、ステップと、
    前記複数のデータオブジェクトの各データオブジェクトについて、それぞれのデータオブジェクトハッシュを生成するステップであって、前記データオブジェクトハッシュは、前記データオブジェクトに関連付けられたそれぞれのデータオブジェクトコンテンツの関数である、ステップと、
    前記データオブジェクトハッシュに基づいて、前記コンテンツハッシュを決定するステップと、
    を含む、非一時的コンピュータ可読記憶媒体。
JP2016567483A 2014-02-04 2015-02-04 ファイルシステムのコンテンツベースの編成 Pending JP2017504924A (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210029914A (ko) * 2019-09-09 2021-03-17 주식회사 엘지유플러스 컨텐츠에 대한 블록 체인의 블록 갱신 방법 및 서버

Families Citing this family (21)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (2)

* Cited by examiner, † Cited by third party
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