FILE SYSTEM
First Claim
Patent Images
1. A file system comprising:
- a digitally signed file system in which data, metadata and files are objects, each object having a globally unique and content-derived fingerprint and wherein object references are mapped by the fingerprints;
the file system having a root object comprising a mapping of all object fingerprints in the file system;
wherein a change to the file system results in a change in the root object, and tracking changes in the root object provides a history of file system activity.
5 Assignments
0 Petitions
Accused Products
Abstract
A digitally signed file system in which data, metadata and files are objects, each object having a globally unique and content-derived fingerprint and wherein object references are mapped by the fingerprints; the file system has a root object comprising a mapping of all object fingerprints in the file system, such that a change to the file system results in a change in the root object, and tracking changes in the root object provides a history of file system activity.
171 Citations
41 Claims
-
1. A file system comprising:
-
a digitally signed file system in which data, metadata and files are objects, each object having a globally unique and content-derived fingerprint and wherein object references are mapped by the fingerprints; the file system having a root object comprising a mapping of all object fingerprints in the file system; wherein a change to the file system results in a change in the root object, and tracking changes in the root object provides a history of file system activity.
-
-
2. The file system of claim 1, wherein:
the file system includes an inode map object comprising a mapping of inode numbers to file object fingerprints and wherein the fingerprint of the inode map object comprises a snapshot of the file system.
-
3. A computer-readable medium containing executable program instructions for a method of indexing stored objects, the method comprising:
-
providing data, metadata and files as objects; providing a fingerprint for each object which is globally unique and derived from the content of the object; and wherein a file system root object is provided comprising a mapping of all object fingerprints in the file system, such that a change to the file system results in a change in the root object, and tracking changes in the root object provides a history of file system activity.
-
-
4. The medium of claim 3, including:
-
providing a file system inode map object comprising a mapping of inode numbers to file object fingerprints, wherein the fingerprint of the inode map object comprises a snapshot of the file system.
-
-
5. The medium of claim 4, including:
publishing the inode map fingerprint to another computer system on a distinct object store.
-
6. The medium of claim 4, including:
using the inode map fingerprint as a snapshot of the file system for disaster recovery.
-
7. The medium of claim 4, wherein:
the inode map object contains a fingerprint of a previous inode map.
-
8. The medium of claim 7, wherein:
the previous inode map fingerprints comprise a history of snapshots of the file system.
-
9. The medium of claim 4, wherein:
-
the objects have reference counts; and upon a change to the file system, adjusting the object reference counts of every object beneath the inode map object.
-
-
10. The medium of claim 9, wherein:
the adjusting is performed on every IO transaction to provide continuous data protection.
-
11. The medium of claim 9, wherein:
the adjusting is performed periodically, on demand, or on particular events to generate snapshots.
-
12. The medium of claim 4, wherein:
-
the objects have reference counts; and adjustments to the reference counts are utilized for data deduplication such that only new data content is stored.
-
-
13. A computer file system for naming and storing of files on one or more computer storage devices, the system comprising:
a namespace file system wherein files, data and metadata are objects, each object having a globally unique fingerprint derived from the content of the object, each file object comprising a mapping of object fingerprints for the data objects and/or metadata objects of the file and the file object having its own object fingerprint derived from the fingerprints of the objects in the file, and wherein the system includes a mapping of inode numbers to the file object fingerprints.
-
14. The file system of claim 13, wherein:
object references are defined by the object fingerprints.
-
15. The file system of claim 13, wherein:
the file object mapping comprises a linear list, a tree structure or an indirection table.
-
16. The file system of claim 13, wherein:
the file objects include a root object having its own object fingerprint derived from all of the objects in the file system such that every object in the file system is accessible through the root object.
-
17. The file system of claim 13, wherein:
the namespace file system is provided as a layer in a storage stack between a virtual file system layer and a block storage abstraction layer.
-
18. The file system of claim 13, further comprising:
an object store containing an index of object fingerprints, object locations and object reference counts.
-
19. The file system of claim 18, wherein:
the object store index is stored in non-volatile memory.
-
20. The file system of claim 13, wherein:
the fingerprint is an cryptographic hash digest of the object content.
-
21. The file system of claim 13, wherein:
the object size is variable.
-
22. The file system of claim 13, wherein:
the file system is a POSIX compliant file system.
-
23. A method comprising:
-
generating object fingerprints for data objects in a file system, the data objects comprising data or metadata, and the object fingerprints comprising a globally unique fingerprint derived from the data object content; generating object fingerprints for file objects, wherein each file object comprises the fingerprints of a plurality of the data objects in the file and the file object fingerprint comprises a globally unique fingerprint derived from the file object content; and generating a root object comprising a mapping of all the object fingerprints in the file system.
-
-
24. The method of claim 23, including:
maintaining a reference count for each object, and updating the object'"'"'s reference count when references to the object are added or deleted.
-
25. The method of claim 24, including:
generating a transaction log of object activity, including reads, writes, deletes and reference count updates.
-
26. The method of claim 23, including:
adding, modifying or deleting a data object in a file and generating a new file object fingerprint.
-
27. The method of claim 23, including:
when the content of a file object or data object is changed, propagating the change up to the root object.
-
28. The method of claim 27, including:
-
performing the propagating step at one of; every I/O transaction; periodically; on demand; at a particular event.
-
-
29. A method comprising:
-
providing a plurality of data objects, each data object comprising data or metadata, and each data object having a fingerprint which is globally unique and derived from its content; and generating a file object comprising a plurality of data object fingerprints for a plurality of associated data objects, and generating a file object fingerprint which is globally unique and derived from the content of the file object; and maintaining an index of inode numbers to file object fingerprints.
-
-
30. The method of claim 29, comprising:
maintaining a location index for mapping object fingerprints and physical locations of the objects.
-
31. The method of claim 30, wherein:
the location index includes reference counts for the objects.
-
32. The method of claim 31, wherein:
the fingerprints and indices comprise a file system.
-
33. A computer program product comprising program code means which, when executed by a process, performs the steps of method claim 29.
-
34. A computer-readable medium containing executable program instructions for a method of indexing stored objects, the method comprising:
-
generating fingerprints which are globally unique and derived from the content of data and metadata objects; generating file objects comprising a plurality of fingerprints of data and/or metadata objects and generating fingerprints of the file objects which are globally unique and derived for the content of the file object; and generating a root object comprising a mapping of all the fingerprints of the data, metadata and file objects.
-
-
35. A system comprising:
-
physical processor and storage devices providing access to data, metadata and files; and wherein the data, metadata and files are objects, each object having a globally unique and content-derived fingerprint and wherein object references are indexed by the fingerprints; and the indexing includes mapping of inode numbers to the file object fingerprints.
-
-
36. A file system comprising:
-
a processing and storage apparatus for naming and storing data objects and collections of data objects comprising file objects, each data object comprising data or metadata and each object having a content-based globally unique fingerprint as its object name, the file object being a collection of data object names and having its own content-based globally unique fingerprint as its file object name; a file system having two layers including; an object store layer including a mapping index of object names and physical object locations; and a namespace layer including a mapping index of data object names for each file object.
-
-
37. The system of claim 36, wherein:
the namespace layer includes a mapping index of inode numbers to the file object names.
-
38. The system of claim 36, wherein:
the object store layer includes reference counts for each object.
-
39. The system of claim 36, wherein:
the object name is a cryptographic hash digest of the object content.
-
40. The system of claim 36, wherein:
the system includes hardware acceleration apparatus to perform for one or more of object naming, compression and encryption.
-
41. The system of claim 36, wherein:
the object store layer includes a global index of all objects in the file system, wherein the primary key for the global object index is the object name, and the object name is a cryptographic hash digest of the object content.
Specification