IP Library Granted Patent US 9,495,373
Granted Patent B2
US 9,495,373 · App. 14/098,773 · Granted Nov 15, 2016

File versions within content addressable storage

Inventors: Ahmed Gheith (Austin, TX); Eric Van Hensbergen (Austin, TX); James Xenidis (San Jose, CA)
Assignee: International Business Machines Corporation
G06F17/30091
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,495,373
App. No.
14/098,773
Granted
Nov 15, 2016
Kind
B2
Abstract

A request to access to a logical location in a file stored in a content addressable storage (CAS) system can be processed by retrieving first tree data from a first node in a first hash tree that represents a first version of the file. Based on the first tree data, a second node is selected from which a CAS signature is compared to a reserved CAS signature to determine the proper file version. In response to a match, a third node is accessed in a second hash tree that represents a second version of the file. Tree data is retrieved from a third node.

Claims (73)

1. A computer-implemented method for processing a request to access a logical location in a file stored in a non-transitory content addressable storage (CAS) system, the computer-implemented method comprising:

retrieving, in response to the request, first tree data from a first node in a first hash tree that represents a first version of the file, the first tree data including a first hash tree depth, a first CAS signature, a block size and a file size;

selecting, based on the first tree data, a second node from a higher level in the first hash tree;

retrieving second tree data from the second node in the first hash tree that represents the first version of the file, the second tree data including a second CAS signature;

determining that the second CAS signature matches a reserved CAS signature, wherein the reserved CAS signature represents a second version of the file;

retrieving, in response to determining the second CAS signature matches the reserved CAS signature, a third node in a second hash tree corresponding to the second node in the first hash tree, wherein the second hash tree represents the second version of the file;

retrieving third tree data from the third node in the second hash tree, the third tree data including a third hash tree depth, a third CAS signature, the block size and the file size; and

traversing, based on the third tree data, the second hash tree to a leaf node corresponding to the logical location of the request; and

transferring a data block corresponding to the leaf node of the second version of the file, and corresponding to the logical location of the request from the CAS system, to a second non-transitory computer readable storage medium;

receiving another request to access another logical location in the first version of the file;

retrieving, based on the another request, fourth tree data from a fourth node of the hash tree that represents the file, the fourth tree data including a fourth CAS signature;

determining that the fourth CAS signature does not match the reserved CAS signature; and

transferring, to the second non-transitory computer readable storage medium and in response to determining the fourth CAS signature does not match the reserved CAS signature, a data block for the another logical location within the file.

2. The method of claim 1 , wherein traversing, based on the third tree data, the second hash tree includes:

selecting, based on the third tree data, a fourth node from a higher level in the second hash tree;

retrieving fourth tree data from the fourth node, the fourth tree data including a fourth CAS signature;

determining that the fourth CAS signature does not match the reserved CAS signature and is a leaf of the second hash tree; and

transferring, in response to determining that the fourth CAS signature does not match the reserved CAS signature and is a leaf of the second hash tree, a data block corresponding to the fourth node from the CAS system to the second non-transitory computer readable storage medium.

3. The method of claim 1 , wherein the file is a disk image that corresponds to a file system with allocated and unallocated portions.

4. The method of claim 1 , wherein selecting a second node from a higher level in the hash tree includes:

identifying a block within the file that corresponds to the logical location; and

determining, based upon block, a path through the hash tree.

5. The method of claim 1 , wherein the reserved CAS signature is zero.

6. The method of claim 1 , wherein retrieving the first tree data includes sending a request to a CAS datacenter.

7. The method of claim 6 , further wherein the request is sent to a web accessible interface of the CAS datacenter.

8. A computer-implemented method for storing content addressable storage (CAS) signatures for different versions of a file in a non-transitory computer readable storage medium, the computer-implemented method comprising:

generating, by a processor, a first hash tree for a first version of the file, the first hash tree having a first root CAS signature that is encoded with a depth for the first hash tree, a block size for the first hash tree and a file size for the file; and

generating, by a processor, a second hash tree for a second version of the file by:

categorizing, relative to corresponding blocks in the first version of the file, a first set of one or more blocks in the second version of the file as modified and a second set of one or more blocks in the second version as unmodified,

generating a first level of CAS signatures for the second hash tree by:

applying a hash function to the first set of one or more blocks categorized as modified, and

applying a common CAS signature to the second set of one or more blocks categorized as unmodified, wherein the common CAS signature represents the first version of the file;

generating a second root CAS signature from the first level of CAS signatures, the second root CAS signature encoded with a depth for the second hash tree, a block size for the second hash tree and a file size for the file; and

storing the first hash tree and the second hash tree in the non-transitory computer readable storage medium, wherein the non-transitory computer readable storage medium is configured to restore one or more versions of the file responsive to a user request.

9. The method of claim 8 , further comprising generating a third hash tree for a third version of the file.

10. The method of claim 8 , wherein the file is a disk image that corresponds to a file system with allocated and unallocated portions.

11. The method of claim 10 , further comprising determining whether the blocks of the file are allocated or unallocated based upon directory information corresponding to the file system.

12. The method of claim 8 , wherein the common CAS signature is a predetermined bit value.

13. The method of claim 12 , wherein the common CAS signature is zero.

14. The method of claim 8 , further comprising generating a root CAS signature for each hash tree.

15. The method of claim 8 , wherein the method is implemented using a computer of a CAS datacenter.

16. A system for accessing data from a non-transitory content addressable storage (CAS) system storing different versions of a file, the system comprising:

a client device configured with a client interface module and a processor that is configured to:

retrieve, in response to a request to access a logical location of the file from the client interface module, first tree data from a first node in a first hash tree that represents a first version of the file, the first tree data including a first hash tree depth, a first CAS signature, a block size and a file size;

select, based on the first tree data, a second node from a higher level in the first hash tree;

retrieve second tree data from the second node in the first hash tree that represents the first version of the file, the second tree data including a second CAS signature;

determine that the second CAS signature matches a reserved CAS signature, wherein the reserved CAS signature represents a second version of the file;

retrieve, in response to determining the second CAS signature matches the reserved CAS signature, a third node in a second hash tree corresponding to the second node in the first hash tree that represents the second version of the file;

retrieve third tree data from the third node in the second hash tree, the third tree data including a third hash tree depth, a third CAS signature, the block size and the file size;

traverse, based on the third tree data, the second hash tree to a top-level node corresponding to the request to access the logical location from the client interface module; and

output a block corresponding to the top-level node to the client interface module responsive to the request.

17. The system of claim 16 , further comprising:

a CAS datacenter device configured with an interface module and a processor that is configured to:

receive a plurality of versions of a file;

generate the first hash tree for a first version of the file, the first hash tree having a first root CAS signature that is encoded with a depth for the first hash tree, the block size for the first hash tree and the file size for the file; and

generate the second hash tree for the second version of the file by:

categorizing, relative to corresponding blocks in the first version of the file, a first set of one or more blocks in the second version of the file as modified and a second set of one or more blocks in the second version as unmodified;

generate a first level of CAS signatures for the second hash tree by:

applying a hash function to the first set of one or more blocks categorized as modified, and

applying a common CAS signature to the second set of one or more blocks categorized as unmodified;

generate a second root CAS signature from the first level of CAS signatures, the second root CAS signature encoded with a depth for the second hash tree, a block size for the second hash tree and a file size for the file; and

store the generated hash trees and CAS signatures in the CAS system.

18. The system of claim 17 , wherein the CAS datacenter device is further configured to:

in response to receiving a new version of a file, generate a difference report identifying changes in the new version of the file relative to a previous version of the file;

identify unmodified blocks of the file relative to the previous version of the file and based on the difference report;

apply the reserved CAS signature to the identified unmodified blocks; and

generate a hash tree for the new version of the file.

19. The system of claim 16 , wherein the processor configured to traverse the second hash tree to a top-level node is further configured to:

select a node from a higher level in the second hash tree;

determine the selected node is a top-level node;

in response to determining the selected node has a CAS signature not matching the reserved CAS signature, retrieving a block associated with the selected node; and

in response to determining that the selected node has a CAS signature matching the reserved CAS signature, selecting a corresponding node in a hash tree representing a previous version of the file; and

retrieve a block associated with the corresponding node.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 14, 2014
From: GHEITH, AHMED; VAN HENSBERGEN, ERIC; XENIDIS, JAMES
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 032664/0618 →
Continuity (1)
Related Publication 20150161153A1 · Jun 11, 2015