JP5695040B2 - ファイルシステム - Google Patents
ファイルシステム Download PDFInfo
- Publication number
- JP5695040B2 JP5695040B2 JP2012517787A JP2012517787A JP5695040B2 JP 5695040 B2 JP5695040 B2 JP 5695040B2 JP 2012517787 A JP2012517787 A JP 2012517787A JP 2012517787 A JP2012517787 A JP 2012517787A JP 5695040 B2 JP5695040 B2 JP 5695040B2
- Authority
- JP
- Japan
- Prior art keywords
- file system
- file
- fingerprint
- bucket
- data
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 claims description 141
- 238000013507 mapping Methods 0.000 claims description 47
- 230000008859 change Effects 0.000 claims description 32
- 230000006835 compression Effects 0.000 claims description 15
- 238000007906 compression Methods 0.000 claims description 15
- 230000000694 effects Effects 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 11
- 230000001133 acceleration Effects 0.000 claims description 9
- 238000011084 recovery Methods 0.000 claims description 6
- 239000007787 solid Substances 0.000 claims description 6
- 238000004891 communication Methods 0.000 claims description 2
- 230000001419 dependent effect Effects 0.000 claims 3
- 230000008569 process Effects 0.000 description 70
- 230000006870 function Effects 0.000 description 54
- 238000010586 diagram Methods 0.000 description 42
- 238000013479 data entry Methods 0.000 description 20
- 238000013519 translation Methods 0.000 description 18
- 238000006243 chemical reaction Methods 0.000 description 17
- 230000036961 partial effect Effects 0.000 description 14
- 241000544061 Cuculus canorus Species 0.000 description 13
- 150000003839 salts Chemical class 0.000 description 13
- 230000002000 scavenging effect Effects 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 7
- 238000012217 deletion Methods 0.000 description 6
- 230000037430 deletion Effects 0.000 description 6
- 238000003780 insertion Methods 0.000 description 5
- 230000037431 insertion Effects 0.000 description 5
- 230000000670 limiting effect Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000002085 persistent effect Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000006978 adaptation Effects 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 238000012937 correction Methods 0.000 description 3
- 238000006073 displacement reaction Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000002688 persistence Effects 0.000 description 3
- 230000010076 replication Effects 0.000 description 3
- 238000009966 trimming Methods 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 235000012431 wafers Nutrition 0.000 description 2
- 108090000248 Deleted entry Proteins 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000008260 defense mechanism Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000001771 impaired effect Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000008521 reorganization Effects 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 238000009738 saturating Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000010561 standard procedure Methods 0.000 description 1
- 238000009827 uniform distribution Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1054—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9017—Indexing; Data structures therefor; Storage structures using directory or table look-up
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/254—Distributed memory
- G06F2212/2542—Non-uniform memory access [NUMA] architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/402—Encrypted data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6032—Way prediction in set-associative cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
デジタルに署名されたファイルシステムであって、該システムにおいてデータ、メタデータ及びファイルはオブジェクトであり、各オブジェクトは、グローバルに一意でありコンテンツ導出のフィンガープリントを有し、オブジェクト参照はフィンガープリントによってマップされる、デジタルに署名されたファイルシステムを含み、
ファイルシステムは、ファイルシステム内の全てのオブジェクトのフィンガープリントのマッピングを含むルートオブジェクトを有し、
ファイルシステムに対する変更は、ルートオブジェクト内の変更を生じ、ルートオブジェクト内の変更を追跡することは、ファイルシステムアクティビティの履歴を提供する。
ファイルシステムは、ファイルオブジェクトのフィンガープリントへのiノード番号のマッピングを含むiノードマップオブジェクトを含み、iノードマップオブジェクトのフィンガープリントは、ファイルシステムのスナップショットを含む。
データ、メタデータ及びファイルをオブジェクトとして提供するステップと、
オブジェクトごとにフィンガープリントを提供するステップであって、該フィンガープリントはグローバルに一意でありオブジェクトのコンテンツから導出される、ステップと
を含み、
ファイルシステムルートオブジェクトが提供され、該オブジェクトは、ファイルシステム内の全てのオブジェクトのフィンガープリントのマッピングを含み、ファイルシステムに対する変更がルートオブジェクト内の変更を生じ、ルートオブジェクト内の変更を追跡することはファイルシステムアクティビティの履歴を提供する。
ファイルシステムiノードマップオブジェクトを提供するステップであって、該オブジェクトはファイルオブジェクトのフィンガープリントへのiノード番号のマッピングを含む、ステップを含み、
iノードマップオブジェクトのフィンガープリントは、ファイルシステムのスナップショットを含む。
iノードマップフィンガープリントを、別個のオブジェクトストア上の別のコンピュータシステムに発行するステップを含む。
iノードマップフィンガープリントを、障害回復のために、ファイルシステムのスナップショットとして使用するステップを含む。
iノードマップオブジェクトは、以前のiノードマップのフィンガープリントを含む。
一実施形態では、
以前のiノードマップフィンガープリントは、ファイルシステムのスナップショットの履歴を含む。
オブジェクトは、参照カウントを有し、
ファイルシステムに対する変更があると、iノードマップオブジェクトの下のあらゆるオブジェクトのオブジェクト参照カウントを調節するステップである。
調節するステップは、あらゆるIOトランザクションにおいて行われて、継続的データ保護が提供される。
調節するステップは、周期的に、オンデマンドで又は特定のイベントにおいて行われて、スナップショットが生成される。
オブジェクトは、参照カウントを有し、
参照カウントに対する調節は、新しいデータコンテンツのみが格納されるように、データ重複排除のために利用される。
名前空間ファイルシステムを含み、ファイル、データ及びメタデータはオブジェクトであり、各オブジェクトは、オブジェクトのコンテンツから導出されたグローバルに一意なフィンガープリントを有し、各ファイルオブジェクトは、ファイルのデータオブジェクト及びメタデータオブジェクトのうちの一方又は双方のためのオブジェクトフィンガープリントのマッピングを含み、ファイルオブジェクトは、ファイル内のオブジェクトのフィンガープリントから導出された該ファイルオブジェクト自体のオブジェクトフィンガープリントを有し、このシステムは、ファイルオブジェクトのフィンガープリントへのiノード番号のマッピングを含む。
オブジェクト参照は、オブジェクトフィンガープリントによって定まる。
一実施形態では、
ファイルオブジェクトのマッピングは、線形リスト、ツリー構造又は間接指定テーブルを含む。
ファイルオブジェクトはルートオブジェクトを含み、このルートオブジェクトは、ファイルシステム内のオブジェクトの全てから導出された該ルートオブジェクト自体のオブジェクトフィンガープリントを有し、ファイルシステム内のあらゆるオブジェクトはルートオブジェクトを通じてアクセス可能である。
名前空間ファイルシステムは、仮想ファイルシステム層とブロックストレージ抽象化層の間の、ストレージスタックにおける層として提供される。
オブジェクトフィンガープリント、オブジェクト位置及びオブジェクト参照カウントのインデックスを含むオブジェクトストアを更に含む。
オブジェクトストアインデックスは、不揮発性メモリに格納される。
一実施形態では、
フィンガープリントは、オブジェクトコンテンツの暗号ハッシュダイジェストである。
オブジェクトサイズは可変である。
一実施形態では、
ファイルシステムはPOSIX準拠ファイルシステムである。
ファイルシステム内のデータオブジェクトのためのオブジェクトフィンガープリントを生成するステップであって、データオブジェクトはデータ又はメタデータを含み、オブジェクトフィンガープリントは、データオブジェクトのコンテンツから導出されたグローバルに一意なフィンガープリントを含む、ステップと、
ファイルオブジェクトのためのオブジェクトフィンガープリントを生成するステップであって、各ファイルオブジェクトは、ファイル内の複数のデータオブジェクトのフィンガープリントを含み、ファイルオブジェクトのフィンガープリントは、ファイルオブジェクトのコンテンツから導出されたグローバルに一意なフィンガープリントを含む、ステップと、
ファイルシステム内のオブジェクトフィンガープリントの全てのマッピングを含むルートオブジェクトを生成するステップと
を含む。
オブジェクトごとに参照カウントを維持し、オブジェクトへの参照が追加又は削除されたときに、オブジェクトの参照カウントを更新するステップを含む。
読出し、書込み、削除及び参照カウント更新を含むオブジェクトアクティビティのトランザクションログを生成するステップを含む。
ファイル内のデータオブジェクトを追加、修正又は削除し、新しいファイルオブジェクトのフィンガープリントを生成するステップを含む。
ファイルオブジェクト又はデータオブジェクトのコンテンツが変更されるとき、変更をルートオブジェクトまで伝えるステップである。
伝えるステップを、
I/Oトランザクションごとに、
周期的に、
オンデマンドで、
特定のイベントで、
のうち1つで行うステップを含む。
複数のデータオブジェクトを提供するステップであって、各データオブジェクトはデータ又はメタデータを含み、各データオブジェクトは、グローバルに一意であり該データオブジェクトのコンテンツから導出されたフィンガープリントを有する、ステップと、
複数の関連付けられたデータオブジェクトのための複数のデータオブジェクトのフィンガープリントを含むファイルオブジェクトを生成し、グローバルに一意でありファイルオブジェクトのコンテンツから導出されるファイルオブジェクトのフィンガープリントを生成するステップと、
ファイルオブジェクトのフィンガープリントへのiノード番号のインデックスを維持するステップと
を含む。
オブジェクトフィンガープリント及びオブジェクトの物理位置をマッピングするための位置インデックスを維持するステップを含む。
位置インデックスは、オブジェクトのための参照カウントを含む。
一実施形態では、
フィンガープリント及びインデックスは、ファイルシステムを含む。
プロセスによって実行されるとき、方法の請求項27のステップを行うプログラムコード手段を含むコンピュータプログラム製品が提供される。
格納されたオブジェクトをインデックス付けする方法のための実行可能プログラム命令を含むコンピュータ可読媒体が提供され、上記方法は、
グローバルに一意であり、データ及びメタデータのオブジェクトのコンテンツから導出されたフィンガープリントを生成するステップと、
データ及びメタデータのうちの一方又は双方のオブジェクトの複数のフィンガープリントを含むファイルオブジェクトを生成し、ファイルオブジェクトのフィンガープリントを生成するステップであって、ファイルオブジェクトのフィンガープリントは、グローバルに一意でありファイルオブジェクトのコンテンツについて導出された、ステップと、
データ、メタデータ及びファイルのオブジェクトのフィンガープリントの全てのマッピングを含むルートオブジェクトを生成するステップと
を含む。
データ、メタデータ及びファイルへのアクセスを提供する物理プロセッサ及びストレージデバイスが提供され、
データ、メタデータ及びファイルはオブジェクトであり、各オブジェクトは、グローバルに一意でありコンテンツ導出のフィンガープリントを有し、オブジェクト参照はフィンガープリントによってインデックス付けされ、
インデックス付けは、ファイルオブジェクトのフィンガープリントへのiノード番号のマッピングを含む。
データオブジェクト、及び、ファイルオブジェクトを含むデータオブジェクトの集まりを命名し格納するための処理及びストレージの装置であって、各データオブジェクトはデータ又はメタデータを含み、各オブジェクトは、コンテンツベースのグローバルに一意なフィンガープリントを該オブジェクトのオブジェクト名として有し、ファイルオブジェクトは、データオブジェクト名の集まりであり、該ファイルオブジェクト自体のコンテンツベースのグローバルに一意なフィンガープリントを該ファイルオブジェクトのファイルオブジェクト名として有する、処理及びストレージの装置と、
2つの層を有するファイルシステムであって、これら2つの層は、
オブジェクト名及び物理オブジェクト位置のマッピングインデックスを含むオブジェクトストア層と、
ファイルオブジェクトごとのデータオブジェクト名のマッピングインデックスを含む名前空間層と
を含む、2つの層を有するファイルシステムと
が提供される。
名前空間層は、ファイルオブジェクト名へのiノード番号のマッピングインデックスを含む。
オブジェクトストア層は、オブジェクトごとの参照カウントを含む。
一実施形態では、
オブジェクト名は、オブジェクトのコンテンツの暗号ハッシュダイジェストである。
システムは、オブジェクトの命名、圧縮及び暗号化のうち1つ又は複数のために機能するハードウェアアクセラレーション装置を含む。
オブジェクトストア層は、ファイルシステム内の全てのオブジェクトのグローバルインデックスを含み、グローバルなオブジェクトのインデックスのための主キーはオブジェクト名であり、オブジェクト名は、オブジェクトのコンテンツの暗号ハッシュダイジェストである。
[0031]従来のファイルシステムは、幾つかの基本データ構造を有する。ユーザが見ることができるディレクトリ及びファイルに加えて、内部構造は、スーパーブロック、iノード、アロケーションマップ、及びトランザクションログを含む。
[0039]本発明の様々な実施形態によれば、新しいデータ構造が、新しいタイプのファイルシステムを埋め込むために提供される。このファイルシステムは、他のファイルシステムと並んで存在し、働くことができ、レガシーファイルシステム及び既知のユーザレベルユーティリティと互換性がある。しかし、本発明の新しいデータ構造は、レガシーファイルシステムでは達成できない利益を提供する。これらの利益は、限定されないが、以下のうち1つ又は複数を含む。
・データオブジェクトのコンテンツから導出されたグローバル一意フィンガープリントをオブジェクト名として利用することであって、各データオブジェクトはデータ又はメタデータを備えること、
・名前空間ファイルシステム内でオブジェクトフィンガープリントを利用することであって、全ての内部データ構造はオブジェクトであり、全てのオブジェクト間参照がオブジェクトフィンガープリントによって定義されることを可能とすること、
・「hノード」構造と呼ばれる新しいデータ構造を提供することであって、ファイルhノードは、ファイル内の全てのデータオブジェクトフィンガープリントのマッピング構造であり、それ自体は、ファイルオブジェクトのコンテンツから導出されたグローバル一意フィンガープリントを有するオブジェクトであること、
・同様に、ルートhノード(オブジェクト)は、ファイルシステム内の全てのオブジェクトフィンガープリントのマッピング構造であり、ファイルシステムに対するいかなる変更もルートオブジェクト内の変更を生じ、且つ、ルートオブジェクトに対する変更を追跡することがファイルシステムアクティビティの履歴を提供するようにすること、
・ファイルオブジェクトフィンガープリントへのiノード番号のマッピングを備える、iノードマップオブジェクト(iマップ)を提供し、ファイルコンテンツが変化するときにオブジェクト名(フィンガープリント)が変化しながら、iノード番号が一定であることを可能にすることであって、iノードマップオブジェクトのフィンガープリントは、ファイルシステムのスナップショットを備えること。
[0044]カーネル空間及び次いでユーザ空間の両方で実装される、新しいファイルシステムの具体例を記載する前に、本実施形態で利用される様々なコンポーネントのより全体的な説明が定義される。
[0045]オブジェクトストアは、本実施形態では、不透明(opaque)データ(オブジェクト)のフラットな集まりである。各オブジェクトは固有であり、参照カウント(名前空間ファイルシステムによって参照される回数)を有する。オブジェクトの名前は、オブジェクトのコンテンツの暗号ハッシュであり、即ち、コンテンツを変更すると、名前は変化しなければならない。
[0051]強力な暗号ダイジェストを使用することは、オブジェクトがグローバル一意且つ一貫性のある名前を有することを可能とする。同じ名前を有する2つのオブジェクトは、実際上は、同じコンテンツを有するようになる。
[0052]名前空間ファイルシステムは、本実施形態では、ファイル、ディレクトリ構造、リンク、スーパーブロック等を有する。
[0055]hノードは、本実施形態では、ファイル等、コンテンツを共に結び付けるデータ構造である。時として、コンテンツは大変大きくなる可能性があり(多GB)、ディスク又は永続媒体上で連続的に適合しない。そのコンテンツは分割され、複数の個別のユニットとして格納される。従来のファイルシステムの場合、これはディスク上のブロックとなる。本発明では、これらがオブジェクト名である。hノードは、マッピング構造内のオブジェクト名の全てのリストを保持する。線形リストは、そのようなマッピング構造の一例であるが、より複雑な間接指定テーブルもまた可能である。
[0057]本発明に固有のものは、iマップであり、iノード番号をオブジェクトフィンガープリント(名前)に変換するものである。このフィンガープリントは典型的にはhノードであり、hノードは、コンテキストに応じて様々な方法で解釈される。これは、名前空間ファイルシステムの残りがiノード番号に対処することを可能とし、多数のユーザレベルユーティリティがそのようなコンストラクトを見ることを必要とするので、必須のものである。ある意味で、これは、従来の静的なiノードテーブルを越えて、追加の間接指定(又は仮想化)の層を提供する。
[0060]iマップのフィンガープリントを有する場合、本質的に、ファイルシステムの完全な「スナップ」を有する。このフィンガープリントの下のあらゆる可視のオブジェクトの参照カウントをバンプすることは、スナップをロックし、他のファイルシステムアクティビティにかかわらず、スナップが削除されることを妨げる。
[0062]スーパーブロックは、本実施形態では、オブジェクトストアが永続媒体上で存続するとき、使用されるデータ構造である。スーパーブロックは、既知の(1つ又は複数の)位置内で存続する。スーパーブロックは、アロケーションマップ、iマップ、オブジェクトプール、インデックス及び他の構造が媒体上のどこで存続するかを記述する。オブジェクトストアは、常にグローバル一意識別子(GUID)を有し、GUIDは、オブジェクトストアのその固有インスタンスを表現する。
[0064]ファイルコンストラクトは、本実施形態では、hノードから導出される。ファイルコンストラクトは、読出し、書込み、開く、閉じる等、ファイルに関する通常(例えば、POSIX(登録商標))のセマンティクスの全てを有する。
[0065]ディレクトリは、本実施形態では、hノードの特化されたバージョンである。ディレクトリは、(iノード番号、オブジェクト名)の対のマップを含む。線形リスト、ベクトル、又は他のより複雑な構造は、実装の例である。マップは少なくとも、hノードに対してそれとして持続するために、直列化可能且つ非直列化可能でなければならない。マッピング構造に応じて、ランダムアクセスもまた可能である。
[0066]ファイルシステムは、通常の書込み、削除及び読出しにより修正される(読出しがアクセス時間を変化させることを認める)ので、そのファイルシステムを構成するオブジェクト及びhノードもまた変化する。これは、結果としてルートハッシュの履歴となり、ルートハッシュの履歴は、大変細かい粒度では、継続的データ保護(CDP)と呼ばれ、より粗い粒度では、スナップと呼ばれる。違いは、どのくらいの頻度でルートハッシュが取り込まれるか、のみにある。
[0068]本実施形態では、hノードとしてHが書き込まれ、新しいhノードH’が作成され、より多くの変化が生じる場合、場合によってはH”である。これらの変化は蓄積してもよいが、ある時点で、最後の変化がルートまで遡って伝わる。この保留中の入力/出力(IO)は、ファイルシステムが変化を蓄積し、且つ、変化ごとにルートまで伝わらないことを可能とする。どのくらいの頻度でこれが発生するかは、ポリシーに基づく。変化リストH−>H’−>H”の途中のオブジェクトのための参照カウントは、それに応じて対処され、ダングリング参照又は到達不可能オブジェクトがないようにしなければならない。
[0069]ここで図1を参照すると、図示されるものは、オペレーティングシステムカーネル101内の様々なストレージコンポーネントである。Linux(登録商標)環境をもとに描かれるが、この図は十分に一般的であるので、Windows(登録商標)、Solaris(登録商標)及び他のUnix(登録商標)クラスのオペレーティングシステム等、他のオペレーティングシステムに適用される。
[0080]オブジェクトストア108は、トランザクションのセマンティクス(ACID特性)を有し、トランザクション境界は、トランザクションオペレーション152cを通じて管理される。これは、保留中のトランザクションをリストすることに加えて、トランザクションの開始、コミット及び中断を含む。
[0082]インデックス204はマップであり、その主キーはオブジェクト名である。他のところで論じたように、インデックスは大変大きくなりうる。システム内のあらゆるオブジェクトのためのインデックスエントリがある。各エントリは、以下を含む。
[0084]オブジェクトコンテナ206は、ランダムにアドレス指定可能な永続ストレージ抽象化である。例は、生のLUN、ファイル、ディスク上のパーティション、又は、広域ネットワークWANに渡るiSCSIデバイスを含む。
b)故障境界(fault boundaries)に渡ってオブジェクトをレプリケートすること。これは、2つの別々のローカルディスク、ローカルディスク及びリモートディスク、又は、それらの任意の複数のものに渡る可能性がある。レプリケーションはまた、読出し性能利益を与えることもできる。レプリケーションはまた、消去コードによる等、オブジェクトを分割することを含むこともできる。
d)温度、即ち、それらの使用の頻度又は期待される頻度に基づいて、オブジェクトを移動させること。
[0100]図5に示すように、hノード401は、ファイルに類似した、ランダムにアドレス指定可能なコンテンツのシーケンスである。どのようにそのコンテンツが解釈されるかは、コンテキストによって決まる。本発明の本実施形態では、hノードは更に、ファイル、ディレクトリ及びiマップに特化される。オブジェクト指向プログラミングの専門用語では、クラスファイル、ディレクトリ及びiマップは、ベースクラスhノードから派生される。
[0107]時間T0 610で、Root0ディレクトリRoot0 640は、2つのファイルFOO641及びBAR642を有する。ファイルFOO641は、オブジェクトP652及びQ655に分割されたコンテンツからなる。P652及びQ655のためのオブジェクト名は、FOO641の、以前に例示された(図4)マッピングテーブルに格納される。同様に、ファイルBAR642は、コンテンツQ655を有する。ルートディレクトリ640もまた、Root0 653によって示されたオブジェクトである。同様に、ファイル(hノード)FOO641及びBAR642は、それぞれオブジェクト651及び654において表現される。オブジェクトRoot0 653を有するルートディレクトリRoot0 640がそうであるように、最初のiImap0 502aもまた、オブジェクトiImap0 650において表現される。
[0120]機能の組み合わせを統合するファイルシステムを、従来のシステムのコストの何分の1かで構築する新規の方法が上述された。様々な修正は、代替実施形態の構築時に当業者には明らかになるであろう。
[0135]ハードウェア支援は、DICEライブラリによって、予め記載されたように、管理されうる。
[0139]一実施形態では、hノード名は、そのコンテンツのハッシュにソルトを加えたものである。ソルトは、8から32バイト程度の小さい値であり、シグネチャが計算される前に、内部で自動的にあらゆるオブジェクトの前に付加又は後に付加される。オブジェクトが書き出されるとき、ソルトは格納されない。
−あらゆるオブジェクトは、そのフィンガープリントを使用して追跡される、
−フィンガープリントは、インデックス内に格納される、
−フィンガープリントの配布はフラットであり、即ち、全てのフィンガープリントは等しく発生する可能性がある、
−インデックス付けアルゴリズムは、鍵(フィンガープリント)の一律の配布を前提とする。
[0144]本発明の方法及び装置は、本願と同日(2010年6月25日)に出願され、2009年6月26日出願の米国仮特許出願第61/269,633号に対する優先権を主張する、本願と同じ発明者であるP.Bowden及びA.J.Beaversonによる、同時係属の、所有者が同じである「Scalable Indexing(スケーラブルなインデックス付け)」という名称の米国特許出願第12/823,452号に記載された、以下のインデックス付けアルゴリズム及びメモリ技術と共に実装されうる。両出願に対する優先権が本明細書で主張され、各々の完全な開示はそれらの全体として参照により本明細書に組み込まれる。
1)概要
[0146]本発明の一実施形態によれば、ユニフォームアクセスインデックス付け処理によって、ノンユニフォームアクセスメモリに格納されたインデックスにアクセスする方法が提供され、この方法は、
インデックス付け処理によって生成された論理バケット識別子を、メモリの物理バケット位置にマップして、インデックス内の各レコードデータエントリにアクセスするために、変換テーブルを維持するステップと、
インデックスに書き込まれる複数のレコードデータエントリをキャッシュ内に集めるステップであって、該ステップは、メモリの少なくとも1つの物理バケット位置へのエントリの集まりの後続の順次書込みに先立つ、ステップと
を含む。
レコードデータエントリの集まりを、キャッシュからメモリのバケット位置へ、順次書込みとして書き込むステップと、
集まりのレコードデータエントリのためのバケット位置により、変換テーブルを更新するステップと
を含む。
1つ又は複数の順次レコードデータエントリを、メモリからキャッシュへ読み出すステップと、
1つ又は複数のエントリが読み出されたメモリ内の物理位置を、フリーとして指定するステップと
を含む。
ブロック内の任意の有効エントリをキャッシュに読み出すこと、及び、そのようなエントリが読み出されたメモリ内の物理位置を、フリーとして指定することによって、メモリ内の複数の順次物理バケット位置をフリーブロックとするステップを含む。
インデックス付け処理が、一律に配布され一意のインデックスキーに基づいて、インデックスへのランダムアクセス要求を生成する。
キーは、暗号ハッシュダイジェストを含む。
一実施形態では、
インデックス付け処理は、置き換えハッシングの処理を含む。
置き換えハッシングは、カッコウハッシング処理を含む。
一実施形態では、
メモリは、フラッシュ、相変化及びソリッドステートディスクのメモリデバイスのうちの1つ又は複数を含む。
メモリは、ランダム書込みアクセス時間、ランダム読出し−修正−書込みアクセス時間、順次書込み、アラインメント制約、消去時間、消去ブロック境界及び摩耗のうちの1つ又は複数によって制限される。
物理バケットのサイズは、メモリの最小書込みサイズを含む。
一実施形態では、
物理バケットのサイズは、ページ又は部分ページを含む。
メモリは、複数のページを含む消去ブロックを有する。
一実施形態では、この方法は、
メモリ内のどのバケット位置が有効であるかを追跡するためのバケット有効テーブルを維持するステップを含む。
メモリ内のバケットは、1つ又は複数のレコードデータエントリのセット、及び、バケット変換テーブルへのセルフインデックスを含む。
バケット内のレコードデータエントリは順序付けされない。
一実施形態では、この方法は、
メモリに順次書き込まれたレコードデータエントリを、キャッシュ内で読出し専用として指定するステップを含む。
バケット変換テーブルは、永続メモリに格納される。
一実施形態では、この方法は、
消去ブロック内のフリーバケットの数を追跡し、フリーバケットのしきい値が満たされたとき、フリー消去ブロックを生成するための処理を実施するステップを含む。
インデックス付け処理は、レコードが挿入、削除、ルックアップ及び修正のうちの1以上をされる要求に基づいて、インデックス付けオペレーションを行う。
インデックス付け処理は、インデックスのレコードを格納する物理バケットを読み出し該物理バケットに書き込むための、論理バケットオペレーションを提示する。
物理バケットオペレーションは、ランダム読出し及び順次書込みを含む。
一実施形態では、
物理バケットオペレーションは、トリムコマンドを更に含む。
メモリは、ノンユニフォーム読出し及び書込みアクセス、並びに、サイズ、アラインメント及びタイミングについての不変性によって特徴付けられた物理デバイス層を含む。
レコードデータエントリは、キー、参照カウント及び物理ブロックアドレスのためのフィールドを含む。
キーは、データの暗号ハッシュダイジェストを含み、
物理ブロックアドレスフィールドは、ストレージデバイス上に格納されたデータの物理ブロックアドレスへのポインタを含む。
論理バケット位置は、複数のハッシュ関数によって生成される。
一実施形態では、
メモリは、複数の消去ブロックを含むフラッシュメモリデバイスを含み、各消去ブロックは複数のページを含み、各ページは複数のバケットを含む。
プロセッサによって実行されるとき、前述の方法のステップを行うプログラムコード手段を含むコンピュータプログラム製品が提供される。
インデックス付け処理によって生成された論理バケット識別子を、メモリの物理バケット位置にマップして、インデックス内の各レコードデータエントリにアクセスするために、変換テーブルを維持するステップと、
インデックスに書き込まれる複数のレコードデータエントリをキャッシュ内に集めるステップであって、該ステップは、メモリの少なくとも1つの物理バケット位置へのエントリの集まりの後続の順次書込みに先立つ、ステップと
を含む。
該コンピュータ可読媒体は、ユニフォームアクセスインデックス付け処理によってノンユニフォームアクセスメモリに格納されたインデックスにアクセスする方法のための実行可能プログラム命令を含み、上記方法は、
インデックス付け処理によって生成された論理バケット識別子を、メモリの物理バケット位置にマップして、インデックス内の各レコードデータエントリにアクセスするために、変換テーブルを維持するステップと、
インデックスに書き込まれる複数のレコードデータエントリをキャッシュ内に集めるステップであって、該ステップは、メモリの少なくとも1つの物理バケット位置へのエントリの集まりの後続の順次書込みに先立つ、ステップと
を含む。
インデックスを格納するメモリは、ノンユニフォーム読出し及び書込みアクセス、並びに、サイズ、アラインメント及びタイミングについての不変性によって特徴付けられた物理デバイス層を含む。
インデックスを格納するメモリは、フラッシュ、相変化及びソリッドステートディスクのメモリデバイスのうちの1つ又は複数を含む。
インデックスを格納するメモリは、複数の消去ブロックを含むフラッシュメモリデバイスを含み、各消去ブロックは複数のページを含み、各ページは複数のバケットを含む。
インデックス内のレコードデータエントリごとに論理バケット識別子をメモリの物理バケット位置にマップする変換テーブルに、インデックス付け処理によって生成された論理バケット識別子を提供するステップと、
論理バケット識別子にマップされた物理バケット位置にアクセスするステップと、
インデックスに書き込まれるレコードデータエントリをキャッシュ内に集めるステップと、
続いて、レコードデータエントリの集まりを、キャッシュから、メモリの少なくとも1つの新しい物理バケット位置におけるインデックスに順次書き込むステップと、
変換テーブルを更新して、少なくとも1つの新しい物理バケット位置を論理バケット識別子に関連付けるステップと
を含む。
ノンユニフォームアクセスメモリであって、メモリの物理バケット位置においてレコードデータエントリを含むインデックスが格納される、ノンユニフォームアクセスメモリと、
ユニフォームアクセスインデックス付け処理によって生成された論理バケット識別子を、レコードデータエントリの各々のためのメモリの物理バケット位置にマップするための、変換テーブルと、
インデックスに書き込まれる集められたレコードデータエントリのためのキャッシュと、
メモリの物理バケット位置にアクセスする手段であって、該物理バケット位置は、インデックス付け処理によって変換テーブルに供給された論理バケット識別子にマップされた、手段と、
レコードデータエントリの集まりを、キャッシュから、メモリの少なくとも1つの物理バケット位置のインデックスに順次書き込む手段と、
変換テーブルを更新して、少なくとも1つの物理バケット位置を論理バケット識別子に関連付ける手段と
を含む。
[0147]インデックス付けの発明は、以下の図面と共に、詳細な説明を参照することによって、より十分に理解される。
図10Aないし10Dは、本発明で使用されうるデータ構造の様々な実施形態を例示する図である。
図12は、本発明の一実施形態による挿入オペレーションを例示する概略ブロック図である。
図14は、本発明の一実施形態による更新オペレーションの概略ブロック図である。
図15A及び15Bは、本発明の一実施形態によるフリー消去ブロックを生成するためのランダム読出し処理を例示する概略ブロック図である。
図17は、本発明の実装を例示するための6層のビュー又はスタックを例示する概略ブロック図である。
図19A〜19Eは、本発明の一実施形態によるカッコウハッシングの実装を概略的に例示する図である。
図21は、本発明の一実施形態によるバケットのコンテンツの概略図である。
図23A〜図23Bは、本発明の一実施形態によるデバイス管理層のあるコンポーネントを例示する図である。
[0148]本発明の1つ又は複数の実施形態によれば、特化されたメモリ技術及びアルゴリズムが使用されて、多数のレコード及びトランザクション要件を同時に有するインデックスが構築される。一実施形態は、置き換え(displacement)ハッシングインデックス付けアルゴリズム、例えばカッコウハッシングを利用する。本発明は、フラッシュ、相変化及びソリッドステートディスク(SSD)メモリデバイス等、ノンユニフォームアクセスメモリ技術の使用を可能とする。
[0155]フラッシュ技術は、インデックス付け問題のために必要とされた容量及びIOレートを達成する基本機能を有するが、フラッシュアクセス特性はノンユニフォームである。このノンユニフォーム性はかなり十分なので、通常のインデックス付けアルゴリズムは、フラッシュメモリデバイスと共に、たとえ機能するとしても、うまく機能しない。
[0159]ダイは、数千もの消去ブロックからなる。消去ブロックは典型的には、128〜512KBのサイズである。データがクリアされる必要があるとき、消去ブロック境界上でクリアされなければならない。
[0176]本発明の様々な実施形態がここで、添付の図9〜14を利用して説明され、本発明に従って行われた様々なインデックス付けオペレーションが例示される。図15〜16は、ストレージ媒体(例えば、フラッシュメモリ)の効率的利用のためにフリー消去ブロックを生成する、2つの方法を例示する。これらの実施形態は例示的なものであり、限定するものではない。
[0186]図10は、本発明において有用なデータ構造の様々な実施形態を例示する。そのようなデータ構造は例示的なものであり、限定するものではない。
[0194]典型的なフラッシュサブシステムは、複数のフラッシュデバイスからなる。NANDフラッシュデバイスは、消去オペレーション間に所与のブロック内で1ページ(又は部分ページ)につき1回、順次書き込まれ、複数のブロックが、同時に書込み及び読出しを行うために使用可能である。
[0195]図11は、キーの存在を検証し、関連付けられた衛星データを返すためのルックアップオペレーション処理の一実施形態を例示する。ステップ1 41’で、ルックアップキーがルックアップ関数に入力される。ステップ2 42’で、ルックアップ関数f(キー)は、ハッシュテーブルルックアップをサポート(例えば、加速)する論理バケット識別子を生成する。論理バケット識別子は変換関数に入力され、変換関数は、ステップ3 43’で、バケット変換テーブル(BTT)17’を介してフラッシュメモリ(物理バケット)位置にマップされる。ステップ4 44’で、バケットがキャッシュに格納されるまで、フラッシュメモリ内の対象バケットがフラッシュメモリから読み出され45a’、バケットがキャッシュに格納された場合、キャッシュ23’から読出し可能である45b’。ステップ6 46’で、キーのための衛星(レコード)データがインデックス付けアルゴリズムに返される。
[0201]この実施形態では、置き換えハッシングインデックス付けアルゴリズム125’は、論理バケット126’を生成する。インデックス付けアルゴリズムによって見なされる論理バケットサイズは、インデックス付けアルゴリズム及びフラッシュメモリが互換性を有するように、フラッシュ消去ブロックサイズに関連付けられる。これらのバケットは、インデックス読出し及び更新の結果として、ランダムに読み出されるようになる。
[0209]本発明のもう1つのより具体的な実施例が、ここで図17〜24を参照して説明される。
・バケットトリミング(細かいページトリミング)及びページ内のバケット追跡のモデルは、SSD又は同等のストレージデバイスのフラッシュファイルシステムに直接組み込まれる場合、よりよい消去ブロック管理を可能とする。
H1(x)=x<032:63>mod N
H2(x)=<064:95>mod N
H3(x)=x<096:127>mod N
[0217]抽出されたBitField幅は、log2(N)以上である。ばらばらのビットの任意の組み合わせを使用することができ、log2(N)制約を受ける。図18に例示されるように、最初のフィールド141’内のフィンガープリントのみがハッシュされて、キーが形成される。レコード140’の残りのコンテンツ(フィールド142’〜145’)は、値又はペイロードを備える。
1を読み出す(Qを得る)
2を読み出す(Pを得る)
1を書き込む(Rを書き込む)
3を読み出す(妥当性チェック)
3を書き込む(Q)
[0220]最初の2つの読出しは、Rがインデックス内にすでに存在しているのではないことを検証するために使用される。妥当性チェック(3を読み出す)は、スロット番号3が空であるかどうかを決定し、そうである場合、Qがスロット3に書込み可能となり、どのエントリもスロット3に再書込みされなかったとき、このアルゴリズムは終了される。スロット3が空でなかった場合、スロット3内の現在のエントリが別のスロットに移動されることが必要となる。我々がビットマップを有する場合、スロット3のコンテンツは既知であり、そうでない場合、我々は、そのステータスを決定するために、スロット3内のエントリを読み出す必要がある。各エントリは、そのエントリが有効であるかどうかを示す有効ビットを含む。有効とは、それが使用中である(且つ、その位置を現在占有しているものが変位されなければならない)ことを意味する。有効ではないとは、その位置が空であることを意味し、処理中のレコードがそこに書込み可能である。有効ビットのコンテンツもまた、あるメモリを犠牲にして、別のビットマップに格納されうる。
Claims (36)
- 1つ又は複数のコンピュータストレージデバイスでのファイルの命名及び記憶のためのコンピュータファイルシステムであって、
前記ファイルシステムは、オブジェクトストアにアクセスする名前空間ファイルシステムを含み、前記名前空間ファイルシステムは、メモリと、該メモリと通信するハードウェアプロセッサとを含み、前記プロセッサは、オブジェクトフィンガープリントを用いて前記オブジェクトストアにアクセスするためにプログラム命令を実行し、前記オブジェクトストアはファイル、データ及びメタデータをオブジェクトとして保持し、各オブジェクトは、該オブジェクトのコンテンツから導出され、前記オブジェクトストアにアクセスするために用いられるグローバルに一意なオブジェクトフィンガープリントを有し、
各ファイルのオブジェクトは、該ファイルの前記データのオブジェクト又はメタデータのオブジェクトに対するオブジェクトフィンガープリントのマッピングを含み、前記ファイルのオブジェクトは、該ファイル内の前記オブジェクトの前記フィンガープリントから導出された前記ファイルのオブジェクト自体のオブジェクトフィンガープリントを有し、
前記オブジェクトストアは、更に、
ファイルシステムのiノード番号とオブジェクトフィンガープリントとのマッピングを含むiノードマップのオブジェクトであって、該オブジェクトフィンガープリントは、前記iノード番号を一定とすることを可能にしつつ、前記ファイルのコンテンツに変更が生じると変更される、iノードマップのオブジェクトと、
各々がiノード番号とファイル名とのマッピングを含む複数のディレクトリのオブジェクトと、
を含み、前記iノードマップのオブジェクトとディレクトリのオブジェクトとの各々は、それぞれのオブジェクトのコンテンツから導出した自分自身のオブジェクトフィンガープリントを有することを特徴とするファイルシステム。 - 請求項1に記載のファイルシステムであって、オブジェクト参照は、前記オブジェクトフィンガープリントによってマッピングされることを特徴とするファイルシステム。
- 請求項1又は2に記載のファイルシステムであって、前記ファイルのオブジェクトのマッピングは、線形リスト、ツリー構造又は間接指定テーブルを含むことを特徴とするファイルシステム。
- 請求項1から3の何れか一項に記載のファイルシステムであって、前記ファイルのオブジェクトはルートオブジェクトを含み、前記ルートオブジェクトは、前記ファイルシステム内の前記オブジェクトの全てから導出された該ルートオブジェクト自体のオブジェクトフィンガープリントを有し、それにより、前記ファイルシステム内のあらゆるオブジェクトは前記ルートオブジェクトを通じてアクセス可能であることを特徴とするファイルシステム。
- 請求項1から4の何れか一項に記載のファイルシステムであって、前記名前空間ファイルシステムは、仮想ファイルシステム層とブロックストレージ抽象化層の間の、ストレージスタックにおける層として提供されることを特徴とするファイルシステム。
- 請求項2から5の何れか一項に記載のファイルシステムにおいて、前記オブジェクトストアは、オブジェクトフィンガープリント、オブジェクト位置及びオブジェクト参照カウントのインデックスを含むことを特徴とするファイルシステム。
- 請求項6に記載のファイルシステムであって、前記オブジェクトストアのインデックスは、不揮発性メモリに記憶されたことを特徴とするファイルシステム。
- 請求項1から7の何れか一項に記載のファイルシステムであって、前記フィンガープリントは、前記オブジェクトのコンテンツの暗号ハッシュダイジェストであることを特徴とするファイルシステム。
- 請求項1から8の何れか一項に記載のファイルシステムであって、前記オブジェクトのサイズは可変であることを特徴とするファイルシステム。
- 請求項1から9の何れか一項に記載のファイルシステムであって、前記ファイルシステムはPOSIX規格準拠ファイルシステムであることを特徴とするファイルシステム。
- 請求項1から10の何れか一項に記載のファイルシステムであって、前記オブジェクトストアは、更に、
各オブジェクトに対する参照カウントを含む位置インデックスを含み、概参照カウントは前記オブジェクトが参照される回数を示すことを特徴とするファイルシステム。 - 請求項11に記載のファイルシステムであって、
読出し、書込み、削除及び参照カウント更新を含むオブジェクトアクティビティのトランザクションログ
を含むファイルシステム。 - 請求項4又は請求項4に従属する場合の請求項5から12の何れか一項に記載のファイルシステムであって、ファイルシステムの何れかのオブジェクトのコンテンツの変更は前記ルートオブジェクトの変更を生じ、前記ルートオブジェクトにおける変更を追跡することは、ファイルシステムアクティビティの履歴を提供することを特徴とするファイルシステム。
- 請求項1から13の何れか一項に記載のファイルシステムであって、
前記オブジェクトの生成及び記憶の1つ又は複数を実施するためのハードウェアアクセラレータ
を含むファイルシステム。 - 請求項1から14の何れか一項に記載のファイルシステムであって、
スタック
を含み、前記オブジェクトストアは前記スタックの下部を構成し、前記ファイルシステムは前記スタックの上部を構成することを特徴とするファイルシステム。 - 請求項7又は請求項7に従属する場合の請求項8から15の何れか一項に記載のファイルシステムであって、前記不揮発性メモリはソリッドステートディスクを含むことを特徴とするファイルシステム。
- 請求項16に記載のファイルシステムであって、前記メモリはフラッシュメモリを含むことを特徴とするファイルシステム。
- 請求項1から17の何れか一項に記載のファイルシステムであって、前記名前空間ファイルシステム及び前記オブジェクトストアは、デジタル電子回路、コンピュータハードウェア、ファームウェア、非一時的マシン読み取り可能ストレージデバイス内のコンピュータプログラム又はそれらの組み合わせのうちの1つ又は複数において実装されたことを特徴とするファイルシステム。
- 名前空間ファイルシステムによりオブジェクトストアにアクセスするステップであって、該オブジェクトストアは、ファイル、データ又はメタデータをオブジェクトとして保持し、各オブジェクトは、グローバルに一意であり、該オブジェクトのコンテンツから導出され、前記オブジェクトストアにアクセスするために用いられるオブジェクトフィンガープリントを有し、各ファイルのオブジェクトは、オブジェクトフィンガープリントの、該ファイルの前記データのオブジェクト又はメタデータのオブジェクトに対するマッピングを含み、前記ファイルのオブジェクトは、該ファイル内の前記オブジェクトの前記フィンガープリントから導出された該ファイルのオブジェクト自体のオブジェクトフィンガープリントを有する、ステップと、
ファイルシステムのiノード番号とオブジェクトフィンガープリントとのマッピングを含むiノードマップのオブジェクトを前記オブジェクトストアに維持するステップであって、該オブジェクトフィンガープリントは、前記iノード番号を一定とすることを可能にしつつ、前記ファイルのコンテンツに変更が生じると変更される、ステップと、
前記オブジェクトストアにおいてディレクトリのオブジェクトを維持するステップであって、各ディレクトリのオブジェクトはiノード番号とファイル名とのマッピングを含む、ステップと
を含み、前記iノードマップのオブジェクト及びディレクトリのオブジェクトの各々は、それぞれの前記オブジェクトのコンテンツから導出した自分自身のオブジェクトフィンガープリントを有することを特徴とする方法。 - 請求項19に記載の方法であって、オブジェクトフィンガープリントと前記オブジェクトの物理的位置とをマッピングするための位置インデックスを維持するステップを含む方法。
- 請求項20に記載の方法であって、前記位置インデックスは、前記オブジェクトに対する参照カウントを含むことを特徴とする方法。
- 請求項21に記載の方法であって、前記フィンガープリント、位置インデックス、iノードマップのオブジェクト、ファイルのオブジェクト及びディレクトリのオブジェクトは、ファイルシステムを構成することを特徴とする方法。
- 請求項19から22の何れか一項に記載の方法であって、
前記ファイルシステムのスナップショットを前記iノードマップのオブジェクトの前記フィンガープリントから生成するステップ
を含む方法。 - 請求項19から23の何れか一項に記載の方法であって、
前記iノードマップのフィンガープリントを別のオブジェクトストアに発行するステップ
を含む方法。 - 請求項19から24の何れか一項に記載の方法であって、
前記iノードマップのフィンガープリントを前記ファイルシステムのスナップショットとして用いて障害回復を行うステップ
を含む方法。 - 請求項19から25の何れか一項に記載の方法であって、前記iノードマップのオブジェクトは以前のiノードマップのフィンガープリントを含むことを特徴とする方法。
- 請求項26に記載の方法であって、前記以前のiノードマップのフィンガープリントは、前記ファイルシステムのスナップショットの履歴を構成することを特徴とする方法。
- 請求項19から27の何れか一項に記載の方法であって、
前記オブジェクトストアにおいてオブジェクト名と物理的オブジェクト位置との位置インデックスを維持するステップ
を含む方法。 - 請求項21又は請求項21に従属する場合の請求項22から28の何れか一項に記載の方法であって、
前記ファイルシステムに対する変更の際に、前記iノードマップのオブジェクトの下のあらゆるオブジェクトの前記参照カウントを調節するステップ
を含む方法。 - 請求項29記載の方法であって、調節する前記ステップは、あらゆる入力/出力トランザクションに関して行われて、継続的データ保護が提供されることを特徴とする方法。
- 請求項29に記載の方法であって、調節する前記ステップは、周期的に、オンデマンドで、又は、特定のイベントにおいて行われて、スナップショットが生成されることを特徴とする方法。
- 請求項19から31の何れか一項に記載の方法であって、前記ファイルのオブジェクトのマッピングは、前記ファイルの前記コンテンツへのオフセットによってインデックス付けされ、線形リスト、ツリー構造又は間接指定テーブルを含むことを特徴とする方法。
- 請求項21から32の何れか一項に記載の方法であって、読出し、書込み、削除及び参照カウント更新を含む全てのオブジェクトアクティビティのトランザクションログを生成するステップ
を含む方法。 - 請求項19から33の何れか一項に記載の方法であって、
前記ファイルのオブジェクトを追加、修正又は削除し、ファイルの新しいオブジェクトフィンガープリントを生成するステップ
を含む方法。 - 請求項34に記載の方法であって、
ハードウェアアクセラレーションを利用してオブジェクトの生成、圧縮及び暗号化のうちの1つ又は複数を行うステップ
を含む方法。 - プロセッサに、請求項19から35の何れか一項に記載の方法の前記ステップを実行させるプログラムコードを含む、非一時的マシン読み取り可能ストレージデバイスに記憶されたコンピュータプログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US26963309P | 2009-06-26 | 2009-06-26 | |
US61/269,633 | 2009-06-26 | ||
PCT/US2010/040058 WO2010151813A1 (en) | 2009-06-26 | 2010-06-25 | File system |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2012531675A JP2012531675A (ja) | 2012-12-10 |
JP2012531675A5 JP2012531675A5 (ja) | 2013-08-15 |
JP5695040B2 true JP5695040B2 (ja) | 2015-04-01 |
Family
ID=42541578
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012517787A Active JP5695040B2 (ja) | 2009-06-26 | 2010-06-25 | ファイルシステム |
JP2012517764A Pending JP2012531674A (ja) | 2009-06-26 | 2010-06-25 | ノンユニフォームアクセスメモリにおけるスケーラブルなインデックス付け |
JP2015075686A Active JP6126158B2 (ja) | 2009-06-26 | 2015-04-02 | ノンユニフォームアクセスメモリにおけるスケーラブルなインデックス付け |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012517764A Pending JP2012531674A (ja) | 2009-06-26 | 2010-06-25 | ノンユニフォームアクセスメモリにおけるスケーラブルなインデックス付け |
JP2015075686A Active JP6126158B2 (ja) | 2009-06-26 | 2015-04-02 | ノンユニフォームアクセスメモリにおけるスケーラブルなインデックス付け |
Country Status (10)
Country | Link |
---|---|
US (2) | US8880544B2 (ja) |
EP (2) | EP2433227B1 (ja) |
JP (3) | JP5695040B2 (ja) |
CN (2) | CN102483755B (ja) |
AU (2) | AU2010265954B2 (ja) |
BR (2) | BRPI1013794A8 (ja) |
CA (2) | CA2766161C (ja) |
DK (2) | DK2433226T3 (ja) |
ES (2) | ES2548194T3 (ja) |
WO (2) | WO2010151813A1 (ja) |
Families Citing this family (80)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8478799B2 (en) | 2009-06-26 | 2013-07-02 | Simplivity Corporation | Namespace file system accessing an object store |
US10558705B2 (en) * | 2010-10-20 | 2020-02-11 | Microsoft Technology Licensing, Llc | Low RAM space, high-throughput persistent key-value store using secondary memory |
WO2012126180A1 (en) | 2011-03-24 | 2012-09-27 | Microsoft Corporation | Multi-layer search-engine index |
US8346810B2 (en) * | 2011-05-13 | 2013-01-01 | Simplivity Corporation | Reference count propagation |
US8924629B1 (en) | 2011-06-07 | 2014-12-30 | Western Digital Technologies, Inc. | Mapping table for improving write operation efficiency |
JP5524144B2 (ja) | 2011-08-08 | 2014-06-18 | 株式会社東芝 | key−valueストア方式を有するメモリシステム |
US9626434B2 (en) * | 2011-08-30 | 2017-04-18 | Open Text Sa Ulc | Systems and methods for generating and using aggregated search indices and non-aggregated value storage |
CN102364474B (zh) * | 2011-11-17 | 2014-08-20 | 中国科学院计算技术研究所 | 用于机群文件系统的元数据存储系统和管理方法 |
US9032183B2 (en) * | 2012-02-24 | 2015-05-12 | Simplivity Corp. | Method and apparatus for content derived data placement in memory |
US9165005B2 (en) * | 2012-02-24 | 2015-10-20 | Simplivity Corporation | Method and apparatus utilizing non-uniform hash functions for placing records in non-uniform access memory |
US9390055B2 (en) | 2012-07-17 | 2016-07-12 | Coho Data, Inc. | Systems, methods and devices for integrating end-host and network resources in distributed memory |
US9152325B2 (en) | 2012-07-26 | 2015-10-06 | International Business Machines Corporation | Logical and physical block addressing for efficiently storing data |
US8805793B2 (en) | 2012-08-08 | 2014-08-12 | Amazon Technologies, Inc. | Data storage integrity validation |
US10120579B1 (en) | 2012-08-08 | 2018-11-06 | Amazon Technologies, Inc. | Data storage management for sequentially written media |
US9225675B2 (en) | 2012-08-08 | 2015-12-29 | Amazon Technologies, Inc. | Data storage application programming interface |
US9904788B2 (en) | 2012-08-08 | 2018-02-27 | Amazon Technologies, Inc. | Redundant key management |
KR101954594B1 (ko) * | 2012-08-08 | 2019-03-06 | 아마존 테크놀로지스, 인크. | 아카이벌 데이터 저장 시스템 |
US8392428B1 (en) * | 2012-09-12 | 2013-03-05 | DSSD, Inc. | Method and system for hash fragment representation |
EP2898424B8 (en) * | 2012-09-19 | 2019-08-21 | Hitachi Vantara Corporation | System and method for managing deduplication using checkpoints in a file storage system |
US9043334B2 (en) * | 2012-12-26 | 2015-05-26 | Industrial Technology Research Institute | Method and system for accessing files on a storage system |
US9043923B2 (en) | 2012-12-27 | 2015-05-26 | Empire Technology Development Llc | Virtual machine monitor (VMM) extension for time shared accelerator management and side-channel vulnerability prevention |
US9612955B2 (en) * | 2013-01-09 | 2017-04-04 | Wisconsin Alumni Research Foundation | High-performance indexing for data-intensive systems |
US10558581B1 (en) | 2013-02-19 | 2020-02-11 | Amazon Technologies, Inc. | Systems and techniques for data recovery in a keymapless data storage system |
US9208105B2 (en) | 2013-05-30 | 2015-12-08 | Dell Products, Lp | System and method for intercept of UEFI block I/O protocol services for BIOS based hard drive encryption support |
US9594795B1 (en) * | 2013-06-28 | 2017-03-14 | EMC IP Holding Company LLC | Maintaining data consistency when data is changed out from under another data service |
US9430492B1 (en) * | 2013-06-28 | 2016-08-30 | Emc Corporation | Efficient scavenging of data and metadata file system blocks |
US9043576B2 (en) * | 2013-08-21 | 2015-05-26 | Simplivity Corporation | System and method for virtual machine conversion |
US9531722B1 (en) | 2013-10-31 | 2016-12-27 | Google Inc. | Methods for generating an activity stream |
US9542457B1 (en) | 2013-11-07 | 2017-01-10 | Google Inc. | Methods for displaying object history information |
US9614880B1 (en) | 2013-11-12 | 2017-04-04 | Google Inc. | Methods for real-time notifications in an activity stream |
US9509772B1 (en) | 2014-02-13 | 2016-11-29 | Google Inc. | Visualization and control of ongoing ingress actions |
EP2913938A1 (de) * | 2014-02-26 | 2015-09-02 | Siemens Aktiengesellschaft | Verfahren und Anordnung zum Zugriff auf Informationen eines drahtlos zugreifbaren Datenträgers |
US9536199B1 (en) | 2014-06-09 | 2017-01-03 | Google Inc. | Recommendations based on device usage |
US9507791B2 (en) | 2014-06-12 | 2016-11-29 | Google Inc. | Storage system user interface with floating file collection |
US10078781B2 (en) | 2014-06-13 | 2018-09-18 | Google Llc | Automatically organizing images |
CN105320466A (zh) * | 2014-07-29 | 2016-02-10 | 广明光电股份有限公司 | 固态硬盘安排操作的方法 |
US9727575B2 (en) * | 2014-08-29 | 2017-08-08 | Microsoft Technology Licensing, Llc | File system with data block sharing |
WO2016093809A1 (en) * | 2014-12-09 | 2016-06-16 | Hewlett Packard Enterprise Development Lp | Storage media sections with alternative cells |
US9870420B2 (en) | 2015-01-19 | 2018-01-16 | Google Llc | Classification and storage of documents |
WO2016118607A1 (en) * | 2015-01-20 | 2016-07-28 | Ultrata Llc | Distributed index for fault tolerant object memory fabric |
US9880755B2 (en) | 2015-02-25 | 2018-01-30 | Western Digital Technologies, Inc. | System and method for copy on write on an SSD |
US10678650B1 (en) * | 2015-03-31 | 2020-06-09 | EMC IP Holding Company LLC | Managing snaps at a destination based on policies specified at a source |
US10303453B2 (en) | 2015-05-08 | 2019-05-28 | Desktop 365, LLC | Method and system for managing the end to end lifecycle of the virtualization environment for an appliance |
US11449322B2 (en) | 2015-05-08 | 2022-09-20 | Desktop 365, Inc. | Method and system for managing the end to end lifecycle of a cloud-hosted desktop virtualization environment |
JP6818982B2 (ja) | 2015-06-01 | 2021-01-27 | エスゼット ディージェイアイ テクノロジー カンパニー リミテッドSz Dji Technology Co.,Ltd | ファイルを格納する方法 |
JP6030713B1 (ja) * | 2015-06-16 | 2016-11-24 | 株式会社ソフトギア | 分散型データ処理プログラム、情報処理装置、分散型データベースシステム及び分散システム |
US10019382B2 (en) * | 2015-10-20 | 2018-07-10 | Sap Se | Secondary data structures for storage class memory (scm) enables main-memory databases |
JP6034467B2 (ja) * | 2015-10-23 | 2016-11-30 | 株式会社東芝 | システム |
CN105183401A (zh) * | 2015-10-30 | 2015-12-23 | 深圳市泽云科技有限公司 | 一种固态硬盘数据恢复方法、装置及系统 |
US10887232B2 (en) * | 2015-12-16 | 2021-01-05 | Hewlett Packard Enterprise Development Lp | Dynamic allocation of hash table resources |
CN105550345B (zh) * | 2015-12-25 | 2019-03-26 | 百度在线网络技术(北京)有限公司 | 文件操作方法和装置 |
US9880743B1 (en) * | 2016-03-31 | 2018-01-30 | EMC IP Holding Company LLC | Tracking compressed fragments for efficient free space management |
US20170315928A1 (en) * | 2016-04-28 | 2017-11-02 | Netapp, Inc. | Coarse-grained cache replacement scheme for a cloud-backed deduplication storage system |
JP6203929B2 (ja) * | 2016-10-20 | 2017-09-27 | 株式会社ソフトギア | 分散型データ処理プログラム、情報処理装置、分散型データベースシステム及び分散システム |
US11010300B2 (en) | 2017-05-04 | 2021-05-18 | Hewlett Packard Enterprise Development Lp | Optimized record lookups |
CN107391701B (zh) * | 2017-07-27 | 2021-04-23 | 郑州云海信息技术有限公司 | 一种文件创建方法及装置 |
US10545921B2 (en) | 2017-08-07 | 2020-01-28 | Weka.IO Ltd. | Metadata control in a load-balanced distributed storage system |
CN107688463B (zh) * | 2017-09-21 | 2020-08-18 | 杭州全维技术股份有限公司 | 一种嵌入式设备版本文件打包的方法 |
US11243703B2 (en) | 2018-04-27 | 2022-02-08 | Hewlett Packard Enterprise Development Lp | Expandable index with pages to store object records |
JP2019194780A (ja) | 2018-05-01 | 2019-11-07 | 富士通株式会社 | 情報処理装置、データ管理プログラム及びデータ管理方法 |
EP3791274B1 (en) * | 2018-05-08 | 2024-05-01 | Telefonaktiebolaget LM Ericsson (publ) | Method and node for managing a request for hardware acceleration by means of an accelerator device |
US11163489B2 (en) * | 2018-05-23 | 2021-11-02 | SK Hynix Inc. | Workload clusterization for memory system and method of executing the same |
CN110633296A (zh) * | 2018-05-31 | 2019-12-31 | 北京京东尚科信息技术有限公司 | 数据查询方法、装置、介质及电子设备 |
CN108984686B (zh) * | 2018-07-02 | 2021-03-30 | 中国电子科技集团公司第五十二研究所 | 一种基于日志合并的分布式文件系统索引方法和装置 |
US10884917B2 (en) * | 2018-12-05 | 2021-01-05 | Western Digital Technologies, Inc | Dual media packaging targeted for SSD usage |
US11170803B1 (en) | 2019-04-05 | 2021-11-09 | Western Digital Technologies, Inc. | Magnetic recording write head with spin-torque oscillator (STO) and extended seed layer |
US11354038B2 (en) | 2019-07-19 | 2022-06-07 | International Business Machines Corporation | Providing random access to variable-length data |
WO2021170228A1 (en) * | 2020-02-26 | 2021-09-02 | Huawei Technologies Co., Ltd. | A device and a method for indexing snapshots of multiple file systems |
US11138115B2 (en) * | 2020-03-04 | 2021-10-05 | Micron Technology, Inc. | Hardware-based coherency checking techniques |
US11403023B2 (en) | 2020-10-20 | 2022-08-02 | Micron Technology, Inc. | Method of organizing a programmable atomic unit instruction memory |
US11586439B2 (en) | 2020-10-20 | 2023-02-21 | Micron Technology, Inc. | Detecting infinite loops in a programmable atomic transaction |
US11436187B2 (en) | 2020-10-20 | 2022-09-06 | Micron Technology, Inc. | Method of notifying a process or programmable atomic operation traps |
US12020062B2 (en) * | 2020-10-20 | 2024-06-25 | Micron Technology, Inc. | Method of executing programmable atomic unit resources within a multi-process system |
US11693690B2 (en) | 2020-10-20 | 2023-07-04 | Micron Technology, Inc. | Method of completing a programmable atomic transaction by ensuring memory locks are cleared |
US11740929B2 (en) * | 2020-10-20 | 2023-08-29 | Micron Technology, Inc. | Registering a custom atomic operation with the operating system |
US11734189B2 (en) * | 2021-03-16 | 2023-08-22 | Micron Technology, Inc. | Caching of logical-to-physical mapping information in a memory sub-system |
US11755495B2 (en) * | 2021-03-16 | 2023-09-12 | Micron Technology, Inc. | Storing a logical-to-physical mapping in NAND memory |
CN113703678B (zh) * | 2021-08-20 | 2023-12-22 | 济南浪潮数据技术有限公司 | 一种存储桶索引重分裂的方法、装置、设备和介质 |
KR102670498B1 (ko) * | 2021-12-27 | 2024-05-29 | (주)하몬소프트 | 블록체인 기반의 엔드포인트 위협탐지 및 대응 장치 |
US12007911B2 (en) | 2022-03-10 | 2024-06-11 | Samsung Electronics Co., Ltd | System and method for efficiently obtaining information stored in an address space |
Family Cites Families (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2251323B (en) * | 1990-12-31 | 1994-10-12 | Intel Corp | Disk emulation for a non-volatile semiconductor memory |
JPH06195253A (ja) * | 1992-12-24 | 1994-07-15 | Nippon Telegr & Teleph Corp <Ntt> | ファイル管理装置 |
US5815709A (en) * | 1996-04-23 | 1998-09-29 | San Microsystems, Inc. | System and method for generating identifiers for uniquely identifying object types for objects used in processing of object-oriented programs and the like |
US6128346A (en) * | 1998-04-14 | 2000-10-03 | Motorola, Inc. | Method and apparatus for quantizing a signal in a digital system |
US6412080B1 (en) * | 1999-02-23 | 2002-06-25 | Microsoft Corporation | Lightweight persistent storage system for flash memory devices |
US6453404B1 (en) * | 1999-05-27 | 2002-09-17 | Microsoft Corporation | Distributed data cache with memory allocation model |
US6704730B2 (en) | 2000-02-18 | 2004-03-09 | Avamar Technologies, Inc. | Hash file system and method for use in a commonality factoring system |
US7266555B1 (en) | 2000-03-03 | 2007-09-04 | Intel Corporation | Methods and apparatus for accessing remote storage through use of a local device |
CA2331474A1 (en) | 2001-01-19 | 2002-07-19 | Stergios V. Anastasiadis | Stride-based disk space allocation scheme |
US7043637B2 (en) | 2001-03-21 | 2006-05-09 | Microsoft Corporation | On-disk file format for a serverless distributed file system |
US7062490B2 (en) | 2001-03-26 | 2006-06-13 | Microsoft Corporation | Serverless distributed file system |
US6912645B2 (en) | 2001-07-19 | 2005-06-28 | Lucent Technologies Inc. | Method and apparatus for archival data storage |
US7115919B2 (en) * | 2002-03-21 | 2006-10-03 | Hitachi, Ltd. | Storage system for content distribution |
JP3896077B2 (ja) * | 2002-09-11 | 2007-03-22 | 株式会社東芝 | 計算機システムおよびファイル管理方法 |
JP4077313B2 (ja) * | 2002-12-27 | 2008-04-16 | 株式会社リコー | 情報処理装置、フラッシュrom管理方法およびプログラム |
US7139781B2 (en) | 2003-04-29 | 2006-11-21 | International Business Machines Corporation | Managing filesystem versions |
US7380059B2 (en) * | 2003-05-16 | 2008-05-27 | Pillar Data Systems, Inc. | Methods and systems of cache memory management and snapshot operations |
US7092976B2 (en) * | 2003-06-24 | 2006-08-15 | International Business Machines Corporation | Parallel high speed backup for a storage area network (SAN) file system |
US7877426B2 (en) | 2003-07-17 | 2011-01-25 | International Business Machines Corporation | Performance-enhancing system and method of accessing file system objects |
US7509473B2 (en) * | 2003-08-27 | 2009-03-24 | Adaptec, Inc. | Segmented storage system mapping |
US8417913B2 (en) * | 2003-11-13 | 2013-04-09 | International Business Machines Corporation | Superpage coalescing which supports read/write access to a new virtual superpage mapping during copying of physical pages |
US7328217B2 (en) | 2003-11-26 | 2008-02-05 | Symantec Operating Corporation | System and method for detecting and storing file identity change information within a file system |
US20050187898A1 (en) * | 2004-02-05 | 2005-08-25 | Nec Laboratories America, Inc. | Data Lookup architecture |
US7272654B1 (en) * | 2004-03-04 | 2007-09-18 | Sandbox Networks, Inc. | Virtualizing network-attached-storage (NAS) with a compact table that stores lossy hashes of file names and parent handles rather than full names |
US20110179219A1 (en) * | 2004-04-05 | 2011-07-21 | Super Talent Electronics, Inc. | Hybrid storage device |
US8583657B2 (en) * | 2004-05-06 | 2013-11-12 | Oracle International Corporation | Method and apparatus for using a hash-partitioned index to access a table that is not partitioned or partitioned independently of the hash partitioned index |
US8108429B2 (en) | 2004-05-07 | 2012-01-31 | Quest Software, Inc. | System for moving real-time data events across a plurality of devices in a network for simultaneous data protection, replication, and access services |
US7827182B1 (en) * | 2004-06-02 | 2010-11-02 | Cisco Technology, Inc | Searching for a path to identify where to move entries among hash tables with storage for multiple entries per bucket during insert operations |
EP1617341A1 (en) | 2004-07-16 | 2006-01-18 | International Business Machines Corporation | File operation management device |
US7730114B2 (en) * | 2004-11-12 | 2010-06-01 | Microsoft Corporation | Computer file system |
US7814078B1 (en) | 2005-06-20 | 2010-10-12 | Hewlett-Packard Development Company, L.P. | Identification of files with similar content |
US20060294163A1 (en) | 2005-06-23 | 2006-12-28 | Emc Corporation | Methods and apparatus for accessing content stored in a file system |
US8560503B1 (en) | 2006-01-26 | 2013-10-15 | Netapp, Inc. | Content addressable storage system |
US7454592B1 (en) * | 2006-02-16 | 2008-11-18 | Symantec Operating Corporation | Block-level and hash-based single-instance storage |
US8131682B2 (en) | 2006-05-11 | 2012-03-06 | Hitachi, Ltd. | System and method for replacing contents addressable storage |
US8307148B2 (en) * | 2006-06-23 | 2012-11-06 | Microsoft Corporation | Flash management techniques |
US8145865B1 (en) * | 2006-09-29 | 2012-03-27 | Emc Corporation | Virtual ordered writes spillover mechanism |
WO2008070688A1 (en) | 2006-12-04 | 2008-06-12 | Commvault Systems, Inc. | Systems and methods for creating copies of data, such as archive copies |
US20100115175A9 (en) * | 2006-12-18 | 2010-05-06 | Zhiqing Zhuang | Method of managing a large array of non-volatile memories |
US20080201335A1 (en) | 2007-02-20 | 2008-08-21 | Nec Laboratories America, Inc. | Method and Apparatus for Storing Data in a Peer to Peer Network |
US7657500B2 (en) * | 2007-03-12 | 2010-02-02 | Sun Microsystems, Inc. | Concurrent extensible cuckoo hashing |
US20080243878A1 (en) * | 2007-03-29 | 2008-10-02 | Symantec Corporation | Removal |
US8489830B2 (en) * | 2007-03-30 | 2013-07-16 | Symantec Corporation | Implementing read/write, multi-versioned file system on top of backup data |
US7870122B2 (en) * | 2007-04-23 | 2011-01-11 | Microsoft Corporation | Self-tuning index for flash-based databases |
US20080270436A1 (en) * | 2007-04-27 | 2008-10-30 | Fineberg Samuel A | Storing chunks within a file system |
US8028106B2 (en) | 2007-07-06 | 2011-09-27 | Proster Systems, Inc. | Hardware acceleration of commonality factoring with removable media |
US7890555B2 (en) * | 2007-07-10 | 2011-02-15 | International Business Machines Corporation | File system mounting in a clustered file system |
US7725437B2 (en) * | 2007-07-31 | 2010-05-25 | Hewlett-Packard Development Company, L.P. | Providing an index for a data store |
US7945815B2 (en) * | 2007-08-14 | 2011-05-17 | Dell Products L.P. | System and method for managing memory errors in an information handling system |
JP4949176B2 (ja) * | 2007-09-10 | 2012-06-06 | ソニー株式会社 | 情報処理装置、記録方法およびコンピュータプログラム |
US8024545B2 (en) | 2007-10-19 | 2011-09-20 | Inha-Industry Partnership Institute | Efficient prefetching and asynchronous writing for flash memory |
US20090198952A1 (en) * | 2008-02-04 | 2009-08-06 | Apple Inc | Memory Mapping Architecture |
US7747663B2 (en) | 2008-03-05 | 2010-06-29 | Nec Laboratories America, Inc. | System and method for content addressable storage |
US8346730B2 (en) | 2008-04-25 | 2013-01-01 | Netapp. Inc. | Deduplication of data on disk devices based on a threshold number of sequential blocks |
US8271564B2 (en) * | 2008-07-14 | 2012-09-18 | Symbol Technologies, Inc. | Lookup table arrangement and related management method for accommodating concurrent processors |
US8135723B2 (en) * | 2008-11-12 | 2012-03-13 | Microsoft Corporation | Leveraging low-latency memory access |
US9542409B2 (en) | 2008-11-26 | 2017-01-10 | Red Hat, Inc. | Deduplicated file system |
US20100274772A1 (en) * | 2009-04-23 | 2010-10-28 | Allen Samuels | Compressed data objects referenced via address references and compression references |
US8195636B2 (en) | 2009-04-29 | 2012-06-05 | Netapp, Inc. | Predicting space reclamation in deduplicated datasets |
US8478799B2 (en) | 2009-06-26 | 2013-07-02 | Simplivity Corporation | Namespace file system accessing an object store |
US9165005B2 (en) * | 2012-02-24 | 2015-10-20 | Simplivity Corporation | Method and apparatus utilizing non-uniform hash functions for placing records in non-uniform access memory |
-
2010
- 2010-06-25 CN CN201080033630.9A patent/CN102483755B/zh active Active
- 2010-06-25 JP JP2012517787A patent/JP5695040B2/ja active Active
- 2010-06-25 WO PCT/US2010/040058 patent/WO2010151813A1/en active Application Filing
- 2010-06-25 CA CA2766161A patent/CA2766161C/en not_active Expired - Fee Related
- 2010-06-25 AU AU2010265954A patent/AU2010265954B2/en not_active Ceased
- 2010-06-25 AU AU2010265984A patent/AU2010265984C1/en not_active Ceased
- 2010-06-25 CN CN201080033622.4A patent/CN102483754B/zh active Active
- 2010-06-25 EP EP10731653.1A patent/EP2433227B1/en active Active
- 2010-06-25 WO PCT/US2010/039966 patent/WO2010151750A1/en active Application Filing
- 2010-06-25 CA CA2766231A patent/CA2766231C/en not_active Expired - Fee Related
- 2010-06-25 BR BRPI1013794A patent/BRPI1013794A8/pt not_active Application Discontinuation
- 2010-06-25 DK DK10730310.9T patent/DK2433226T3/en active
- 2010-06-25 US US12/823,452 patent/US8880544B2/en active Active
- 2010-06-25 DK DK10731653.1T patent/DK2433227T3/en active
- 2010-06-25 ES ES10731653.1T patent/ES2548194T3/es active Active
- 2010-06-25 EP EP10730310.9A patent/EP2433226B1/en active Active
- 2010-06-25 ES ES10730310.9T patent/ES2546562T3/es active Active
- 2010-06-25 BR BRPI1013789A patent/BRPI1013789A8/pt not_active Application Discontinuation
- 2010-06-25 JP JP2012517764A patent/JP2012531674A/ja active Pending
-
2014
- 2014-10-21 US US14/519,722 patent/US10176113B2/en active Active
-
2015
- 2015-04-02 JP JP2015075686A patent/JP6126158B2/ja active Active
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5695040B2 (ja) | ファイルシステム | |
US9965483B2 (en) | File system | |
EP3036616B1 (en) | Management of extent based metadata with dense tree structures within a distributed storage architecture | |
EP3191957B1 (en) | Low-overhead restartable merge operation with efficient crash recovery | |
US8996797B1 (en) | Dense tree volume metadata update logging and checkpointing | |
US7673099B1 (en) | Affinity caching | |
US7930559B1 (en) | Decoupled data stream and access structures | |
WO2021202175A1 (en) | File systems constructed of block objects | |
EP3191931A1 (en) | Optimized segment cleaning technique | |
WO2020061398A1 (en) | Efficient memory footprint in deduplicated system storing with content based addressing | |
CN113986826B (zh) | 存储系统容量使用率估计 | |
Patočka | Design and implementation of the Spad filesystem | |
Venti | TR03-16 | |
Patocka | Design and Implementation of the Spad Filesystem Department of Software Engineering Advisor: RNDr. Filip Zavoral, Ph. D. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130625 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130625 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140214 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140226 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20140526 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20140602 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140804 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20150107 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150205 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5695040 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |