IP Library Granted Patent US 10,474,631
Granted Patent B2
US 10,474,631 · App. 15/176,558 · Granted Nov 12, 2019

Method and apparatus for content derived data placement in memory

Inventors: Arthur J. Beaverson (Boxborough, MA); Paul Bowden (Berlin, MA)
Assignee: HEWLETT PACKARD ENTERPRISE COMPANY
G06F16/137G06F16/128G06F16/13G06F16/162G06F16/1744G06F16/1748G06F16/183G06F16/188G06F16/2246G06F16/9014G06F16/9017
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 10,474,631
App. No.
15/176,558
Granted
Nov 12, 2019
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 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.

Claims (68)

1. A system comprising:

a processor; and

a non-transitory machine readable medium encoded with instructions that, when executed, cause the processor to:

provide a namespace file system, wherein data structures of the namespace file system are objects stored in an object store, wherein the objects each includes data, metadata, or a combination of data and metadata, wherein the objects have respective object fingerprints, wherein each of the object fingerprints is derived from the content of the respective object, and wherein each of the object fingerprints uniquely identifies the respective object in the object store and enables inter-object references in the namespace file system to be defined by the object fingerprint;

include in the data structures an hnode object comprising a mapping that stores a collection of object fingerprints for a collection of objects and the hnode object having an hnode object fingerprint derived from the collection of object fingerprints, the hnode object using the collection of object fingerprints to identify content of the collection of objects rather than physical or logical block addressing, and a change to the content of the hnode object results in a new hnode object fingerprint;

provide inode map objects comprising hnode objects that map file system inode numbers and object fingerprints of respective files of the namespace file system; and

provide an index, utilized by the object store, that maps the object fingerprints and physical or logical locations of the objects in the object store.

2. The system of claim 1 , wherein the hnode object is among a plurality of hnode objects, and the plurality of hnode objects include file objects and directory objects.

3. The system of claim 2 , wherein one of the hnode objects include is a root object comprising a mapping of all object fingerprints of the file objects and directory objects.

4. The system of claim 2 , wherein

the inode map objects comprise a first collection of file objects and directory objects at time T0, and

the non-transitory machine readable medium is encoded with instructions that, when executed, cause the processor to generate a second collection of file objects and directory objects at time T1 as content of the first collection is added or modified over time, wherein fingerprints of inode map objects of the second collection differs from fingerprints of the inode map objects of the first collection.

5. The system of claim 1 , wherein the hnode object is a randomly addressable sequence of content.

6. The system of claim 1 , wherein the non-transitory machine readable medium is encoded with instructions that, when executed, cause the processor to provide the object store as a lower portion of a stack and to provide the namespace file system as an upper portion of the stack.

7. The system of claim 1 , wherein the index is stored in non-volatile memory.

8. The system of claim 1 , wherein the namespace file system is a portable operating system interface (POSIX) standard compliant file system.

9. The system of claim 1 , wherein each of the object fingerprints is a cryptographic hash digest of the respective object content.

10. The system of claim 1 , wherein each of the object fingerprints is a cryptographic hash digest of the respective object content plus salt.

11. The system of claim 1 , wherein the index includes a reference count for each of the objects, the reference count indicating a number of times the respective object is referenced.

12. The system of claim 1 , wherein the non-transitory machine readable medium is encoded with instructions that, when executed, cause the processor to provide a root object having an object fingerprint derived from all of the objects, wherein each of the objects is accessible through the root object.

13. The system of claim 12 , wherein a change to the file system results in a change in the root object, and

wherein the non-transitory machine readable medium is encoded with instructions that, when executed, cause the processor to track changes in the root object fingerprint to provide a history of file system activity.

14. The system of claim 1 , wherein the non-transitory machine readable medium is encoded with instructions that, when executed, cause the processor to provide a transaction log of object activity, including reads, writes, deletes and reference count updates.

15. The system of claim 1 , wherein the non-transitory machine readable medium is encoded with instructions that, when executed, cause the processor to implement the object store.

16. A method of accessing files of a computer file system comprising:

in a namespace file system wherein data structures of the namespace file system are objects stored in an object store;

each of the objects comprising data, metadata, or a combination of data and metadata;

each of the objects having a respective object fingerprint derived from the content of the object, wherein the object fingerprint of an object uniquely identifies the object in the object store and enables inter-object references in the namespace file system to be defined by the object fingerprint;

the data structures including an hnode object comprising a mapping that stores a collection of object fingerprints for a collection of metadata or data objects and the hnode object having an hnode object fingerprint derived from the collection of object fingerprints, the hnode object using the collection of object fingerprints to identify content of the collection of objects rather than physical or logical block addressing, and a change to the content of the hnode object results in a new hnode object fingerprint;

the method comprising:

utilizing inode map objects comprising hnode objects that map file system inode numbers and object fingerprints of respective files of the namespace file system to convert an inode number into a fingerprint of an hnode object; and

utilizing an index comprising a mapping of object fingerprints and physical or logical locations of the objects in the object store to access the objects of the namespace file system.

17. The method of claim 16 , further comprising utilizing fingerprints of the inode map objects as a snapshot of the namespace file system.

18. The method of claim 16 , further comprising publishing fingerprints of the inode map objects to another computer system on a distinct object store.

19. The method of claim 16 , further comprising performing disaster recovery using fingerprints of the inode map objects as a snapshot of the namespace file system.

20. The method of claim 16 , wherein the inode map objects include a fingerprint of a previous inode map object.

21. The method of claim 20 , further comprising utilizing the fingerprint of the previous inode map object as a snapshot of the namespace file system.

22. The method of claim 16 , further comprising:

maintaining, in the inode map objects, a fingerprint of a root object, the root object having an object fingerprint derived from all of the objects of the file system, wherein each of the objects in the file system is accessible through the root object; and

upon a change to an object, propagating the change up to the root object.

23. The method of claim 22 , wherein each of the objects has a reference count, the method further comprising adjusting the reference counts on every I/O transaction to provide continuous data protection.

24. The method of claim 22 , wherein each of the objects has a reference count, the method further comprising adjusting the reference counts periodically, on demand, or on particular events to generate snapshots.

25. The method of claim 16 , wherein the hnode object mapping comprises a linear list, a tree structure, or an indirection table.

26. The method of claim 16 , further comprising generating a transaction log of object activity, including reads, writes, deletes and reference count updates.

27. The method of claim 16 , further comprising adding, modifying and deleting an object of the file system and generating a new object fingerprint.

28. The method of claim 16 , further comprising utilizing a hardware accelerator to perform computer intensive operations including compression, encryption, and generating fingerprints.

29. The method of claim 16 , wherein the file system is a portable operating system interface (POSIX) standard compliant file system.

30. The method of claim 16 , wherein each of the object fingerprints is a cryptographic hash digest of the respective object content.

31. A non-transitory machine readable medium encoded with instructions that when executed by a processor, cause the processor to:

provide a namespace file system, wherein data structures of the namespace file system are objects stored in an object store, wherein the objects each includes data, metadata, or a combination of data and metadata, wherein the objects have respective object fingerprints, wherein each of the object fingerprints is derived from the content of the respective object, and wherein each of the object fingerprints uniquely identifies the respective object in the object store and enables inter-object references in the namespace file system to be defined by the object fingerprint;

include in the data structures an hnode object comprising a mapping that stores a collection of object fingerprints for a collection of objects and the hnode object having an object fingerprint derived from the collection of object fingerprints, the hnode object using the collection of object fingerprints to identify content of the collection of objects rather than physical or logical block addressing, and a change to the content of the hnode object results in a new hnode object fingerprint;

utilize inode map objects comprising hnode objects and including a mapping of file system inode numbers and object fingerprints of respective files of the namespace file system to convert an inode number into a fingerprint of an hnode object; and

utilize an index that maps the object fingerprints and physical or logical locations of the objects in the object store to access the objects of the namespace file system.

32. The non-transitory machine readable medium of claim 31 , wherein the instructions are further to cause the processor to utilize fingerprints of the inode map objects as a snapshot of the namespace file system.

33. The non-transitory machine readable medium of claim 31 , wherein the instructions are further to cause the processor to publish fingerprints of the inode map objects to another computer system on a distinct object store.

34. The non-transitory machine readable medium of claim 31 , wherein the instructions are further to cause the processor to perform disaster recovery using fingerprints of the inode map objects as a snapshot of the namespace file system.

35. The non-transitory machine readable medium of claim 31 , wherein the instructions are further to cause the processor to:

maintain, in the inode map objects, a fingerprint of a root object, the root object having an object fingerprint derived from all of the objects of the file system, wherein each of the objects in the file system is accessible through the root object; and

upon a change to an object, propagate the change up to the root object.

36. The non-transitory machine readable medium of claim 35 , wherein each object has a reference count, and

wherein the instructions are further to cause the processor to adjust the reference counts on every I/O transaction to provide continuous data protection.

37. The non-transitory machine readable medium of claim 35 , wherein each object has a reference count, and

wherein the instructions are further to cause the processor to adjust the reference counts periodically, on demand, or on particular events to generate snapshots.

38. The non-transitory machine readable medium of claim 31 , wherein each of the object fingerprints is a cryptographic hash digest of the respective object content.

39. The non-transitory machine readable medium of claim 31 , wherein the instructions are further to cause the processor to generate a transaction log of all object activity, including reads, writes, deletes and reference count updates.

40. The non-transitory machine readable medium of claim 31 , wherein the inode map objects includes a fingerprint of a previous inode map object.

41. The non-transitory machine readable medium of claim 31 , wherein the hnode object mapping comprises a linear list, a tree structure, or an indirection table.

42. The non-transitory machine readable medium of claim 31 , wherein the instructions are further to cause the processor to add, modify, and delete an object of the file system and generate a new object fingerprint.

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/0941 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 13, 2017
From: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
To: HEWLETT PACKARD ENTERPRISE COMPANY
Reel/Frame 043566/0715 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 1, 2017
From: SIMPLIVITY CORPORATION
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 042565/0608 →
Continuity (4)
Continuation 13932297 · Jul 1, 2013
Continuation 12823922 · Jun 25, 2010
Provisional Application 61269633 · Jun 26, 2009
Related Publication 20160283498A1 · Sep 29, 2016
Cited By (1)
US 12,379,998