IP Library Granted Patent US 9,965,483
Granted Patent B2
US 9,965,483 · App. 15/585,693 · Granted May 8, 2018

File system

Inventors: Arthur J. Beaverson (Boxborough, MA); Paul Bowden (Berlin, MA)
Assignee: HEWLETT PACKARD ENTERPRISE COMPANY
G06F17/30097G06F17/30088G06F17/30117G06F17/30203G06F17/30233
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,965,483
App. No.
15/585,693
Granted
May 8, 2018
Kind
B2
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 ail 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.

Claims (62)

1. A non-transitory machine-readable storage medium encoded with instructions executable by a data processing apparatus to write a file to a system, the machine readable storage medium comprising instructions to:

receive the file at a namespace file system of the system,

wherein the file includes data and has a filename, and

wherein the system includes the namespace file system and an object store;

associate the file with an index node (inode) number, wherein the inode number is an integer;

break the file data into a set of data objects;

generate a data hash for each data object of the set of data objects to identify and access each data object, wherein the data hash is derived at least from a content of the data object;

generate a file object for the file that maps the data hashes of the set of data objects of the file;

generate a file hash for the file object to identify and access each file object, wherein the file hash is derived at least from a content of the file object;

map the inode number to the file hash;

store the set of data objects and the file object in the object store such that there is at most a single copy within the object store of each data object of the set of data objects; and

generate a transaction log of object activity in the object store.

2. The machine-readable storage medium of claim 1 , wherein mapping the inode number to the file hash includes generating a mapping object.

3. The machine-readable storage medium of claim 2 , further comprising instructions to:

generate a directory object to map the filename to the inode number;

generate a directory hash of the directory object derived at least from a content of the directory object; and

generate a mapping hash of the mapping object derived at least from a content of the mapping object.

4. The machine-readable storage medium of claim 3 , wherein the mapping hash corresponds to a snapshot of the system.

5. The machine-readable storage medium of claim 3 , further comprising instructions to:

receive a request to modify the file at the namespace file system of the system, wherein the request to modify the file includes modified data; and

generate a new file object for a modified file that maps data hashes of a new set of data objects of the modified file,

wherein the new set of data objects includes a data object for the modified data, and

wherein the new file object has a new file hash, the new file hash derived at least from a content of the new file object; and

generate a new mapping object to map the inode number to the new file hash.

6. The machine-readable storage medium of claim 1 ,

wherein the data hash is derived at least from the content of the data object and from salt, and

wherein the file hash is derived at least from the content of the file object and from salt.

7. The machine-readable storage medium of claim 1 , further comprising instructions to:

generate an index at the object store to map the file hash to a reference count and a storage location.

8. The machine-readable storage medium of claim 7 , further comprising instructions to:

increment the reference count each time the file object is written;

decrement the reference count each time the file object is deleted; and

remove the file object from the object store when the reference count is zero.

9. A non-transitory machine-readable storage medium encoded with instructions executable by a data processing apparatus, including instructions to:

implement a file system comprising a namespace layer and an object layer, wherein the namespace layer and the object layer are in user-space;

store data and metadata from the namespace layer in objects in an object store of the object layer;

store data of a file as a set of data objects in the object store such that there is at most a single copy within the object store of each data object of the set of data objects;

generate a hash for each data object of the set of data objects that is derived at least from a content of the respective data object and that is used to access the respective data object in the object store;

store a file object corresponding to the file in the object store, the file object including the hashes of the set of data objects;

generate a hash for the file object that is derived at least from a content of the file object and that is used to access the file object in the object store;

store a mapping object in the object store, the mapping object including a mapping of an index node (inode) number to the hash of the file object;

generate a hash for the mapping object that is derived at least from a content of the respective mapping object and that is used to access the mapping object in the object store; and

generate a transaction log that tracks transactions of the object store.

10. The non-transitory machine readable storage medium of claim 9 , further comprising instructions to:

generate a snapshot of the file system, the snapshot corresponding to the hash of the mapping object.

11. The non-transitory machine readable storage medium of claim 9 , further comprising instructions to:

store a directory object in the object store, the directory object including a mapping of the inode number to a filename of the given file; and

generate a hash for the directory object that is derived at least from a content of the directory object and that is used to access the directory object in the object store.

12. The non-transitory machine readable storage medium of claim 9 , further comprising instructions to:

implement an index in the object store of the object layer that maps:

the respective hashes of each data object of the set of data objects, the file object, and the mapping object,

respective reference counts for each data object of the set of data objects, and the file object, and

respective storage locations of each data object of the set of data objects, the file object, and the mapping object.

13. The non-transitory machine readable storage medium of claim 9 ,

wherein the respective hashes of each data object of the set of data objects, the file object, and the mapping object are distinct from their respective storage addresses.

14. The non-transitory machine readable storage medium of claim 9 ,

wherein the mapping object includes a mapping of an inode number to a content-derived hash of another mapping object.

15. The non-transitory machine readable storage medium of claim 10 , further comprising instructions to:

maintain respective reference counts in the object store of the object layer for the data objects of the set of data objects and for the file object,

wherein the reference counts each indicate a number of copies of their corresponding object that the namespace layer considers to be stored in the object store of the object layer.

16. The non-transitory machine readable storage medium of claim 15 , further comprising instructions to:

increment the reference count of a given one of the data objects of the set of data objects in response to receiving a request from the namespace layer to write to the object layer another copy of the given data object.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 28, 2022
From: HEWLETT PACKARD ENTERPRISE COMPANY
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 060339/0774 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 12, 2017
From: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
To: HEWLETT PACKARD ENTERPRISE COMPANY
Reel/Frame 043564/0591 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 1, 2017
From: SIMPLIVITY CORPORATION
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 042565/0608 →
Continuity (5)
Continuation 15176558 · Jun 8, 2016
Continuation 13932297 · Jul 1, 2013
Continuation 12823922 · Jun 25, 2010
Provisional Application 61269633 · Jun 26, 2009
Related Publication 20170235749A1 · Aug 17, 2017