IP Library Granted Patent US 9,830,231
Granted Patent B2
US 9,830,231 · App. 14/524,397 · Granted Nov 28, 2017

Processes and methods for client-side fingerprint caching to improve deduplication system backup performance

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,830,231
App. No.
14/524,397
Filed
Oct 27, 2014
Granted
Nov 28, 2017
Kind
B2
Examiner
AHN, SANGWOO
Art Unit
2166
USPC
707/654
Abstract

A system and method for caching fingerprints in a client cache is provided. A data object that comprises a set of data segments and describes a backup process is identified. Thereafter, a request referencing the data object is made to a deduplication server to request that a task identifier be added to the data object. If the deduplication server is able to successfully add the task identifier to the data object, then an active identifier is added to each data segment from the set of data segments in a cache that is within a client system.

Claims (145)

1. A method comprising:

transmitting statistical information to a deduplication server, wherein

the statistical information comprises information associated with a client system or a backup process;

receiving one or more items from the client system at the deduplication server, wherein

each of the one or more items comprises a data object or a fingerprint for a data segment that is referenced by the backup process;

transmitting a request to the deduplication server, wherein

the request instructs the deduplication server to add a task identifier to each of the one or more items stored at the deduplication server, and

addition of the task identifier to the each of the one or more items prevents the each of the one or more items stored at the deduplication server from being deleted from the deduplication server during the backup process; and

in response to a determination that the deduplication server has successfully added the task identifier to the each of the one or more items stored at the deduplication server,

adding a fingerprint for the each of the one or more items in a cache, wherein

the cache is stored at the client system, and

adding an active identifier to the each of the one or more items in the cache, wherein

the active identifier indicates that the each of the one or more items stored at the deduplication server will be maintained at the deduplication server during the backup process.

2. A method comprising:

identifying a set of data segments, wherein

the set of data segments comprises one or more data segments, and

the one or more data segments are to be backed up during a backup process;

generating a fingerprint for each data segment of a subset of data segments, wherein

the subset of data segments represents the one or more data segments of the set of data segments;

querying a deduplication server for a data object, wherein

the data object comprises a matching fingerprint, and

the matching fingerprint matches a fingerprint of at least one data segment from the subset of data segments;

receiving the data object comprising the matching fingerprint from the deduplication server; and

in response to receiving the data object comprising the matching fingerprint from the deduplication server,

adding a fingerprint to a cache, and

preventing deletion of the data object from the deduplication server during the backup process by adding a task identifier to the data object; and

in response to a determination that the deduplication server has successfully added the task identifier to the data object stored at the deduplication server,

adding the fingerprint for each data segment in the subset of data segments that comprise the matching fingerprint in the data object in the cache, wherein

the cache is stored at a client system, and

adding an active identifier to the data object in the cache, wherein the active identifier indicates that the data object stored at the deduplication server will be maintained at the deduplication server during the backup process.

3. The method of claim 2 , further comprising:

sampling the set of data segments to create the subset of data segments, wherein

the sampling comprises selecting a certain number of data segments from the set of data segments.

4. The method of claim 2 , further comprising:

determining whether any data objects at the deduplication server comprise the matching fingerprint.

5. The method of claim 4 , further comprising:

identifying one or more data objects at the deduplication server that comprise the matching fingerprint;

selecting the data object from the one or more data objects; and

transmitting the data object to a client system.

6. The method of claim 2 , further comprising:

receiving the data object at the client system, wherein

the data object comprises at least one of

a matching fingerprint for all data segments in the subset of data segments,

a greatest number of matching fingerprints for a greatest number of data segments in the subset of data segments, or

a greatest number of frequently encountered data segments in the subset of data segments.

7. The method of claim 2 , further comprising:

performing the backup process for the client system using the cache, wherein

the performing comprises

searching the cache for a fingerprint match and the active identifier for a given data segment,

if a fingerprint match and the active identifier are found in the cache for the given data segment, abstaining from sending the given data segment to the deduplication server, and

if a fingerprint match and the active identifier are not found in the cache for the given data segment, transmitting the given data segment to the deduplication server.

8. A non-transitory computer readable storage medium comprising instructions executable to:

identify a set of data segments, wherein

the set of data segments comprises one or more data segments, and

the one or more data segments are to be backed up during a backup process;

generate a fingerprint for each data segment of a subset of data segments, wherein

the subset of data segments represents the one or more data segments of the set of data segments;

query a deduplication server for a data object, wherein

the data object comprises a matching fingerprint, and

the matching fingerprint matches a fingerprint of at least one data segment from the subset of data segments;

receive the data object comprising the matching fingerprint from the deduplication server; and

in response to receiving the data object comprising the matching fingerprint from the deduplication server,

add a fingerprint to a cache, and

prevent deletion of the data object from the deduplication server during the backup process by adding a task identifier to the data object; and

in response to a determination that the deduplication server has successfully added the task identifier to the data object stored at the deduplication server,

add the fingerprint for each data segment in the subset of data segments that comprise the matching fingerprint in the data object in the cache, wherein

the cache is stored at a client system, and

add an active identifier to the data object in the cache, wherein the active identifier indicates that the data object stored at the deduplication server will be maintained at the deduplication server during the backup process.

9. The non-transitory computer readable storage medium of claim 8 , wherein the program instructions are further executable to:

sample the set of data segments to create the subset of data segments, wherein

the sampling comprises selecting a certain number of data segments from the set of data segments.

10. The non-transitory computer readable storage medium of claim 8 , wherein the program instructions are further executable to:

determine whether any data objects at the deduplication server comprise the matching fingerprint.

11. The non-transitory computer readable storage medium of claim 10 , wherein the program instructions are further executable to:

identify one or more data objects at the deduplication server that comprise the matching fingerprint;

select the data object from the one or more data objects; and

transmit the data object to a client system.

12. The non-transitory computer readable storage medium of claim 8 , wherein the program instructions are further executable to:

receive the data object at the client system, wherein

the data object comprises at least one of

a matching fingerprint for all data segments in the subset of data segments,

a greatest number of matching fingerprints for a greatest number of data segments in the subset of data segments, or

a greatest number of frequently encountered data segments in the subset of data segments.

13. The non-transitory computer readable storage medium of claim 8 , wherein the program instructions are further executable to:

perform the backup process for the client system using the cache, wherein

the instructions to perform the backup process are executable to

search the cache for a fingerprint match and the active identifier for a given data segment,

abstain from sending the given data segment to the deduplication server, if a fingerprint match and the active identifier are found in the cache for the given data segment, and

transmit the given data segment to the deduplication server, if a fingerprint match and the active identifier are not found in the cache for the given data segment.

14. A system comprising:

one or more processors; and

memory coupled to the processors, wherein the memory stored program instructions executable by the one or more processors to:

identify a set of data segments, wherein

the set of data segments comprises one or more data segments, and

the one or more data segments are to be backed up during a backup process;

generate a fingerprint for each data segment of a subset of data segments, wherein

the subset of data segments represents the one or more data segments of the set of data segments;

query a deduplication server for a data object, wherein

the data object comprises a matching fingerprint, and

the matching fingerprint matches a fingerprint of at least one data segment from the subset of data segments;

receive the data object comprising the matching fingerprint from the deduplication server; and

in response to receiving the data object comprising the matching fingerprint from the deduplication server,

add a fingerprint to a cache, and

prevent deletion of the data object from the deduplication server during the backup process by adding a task identifier to the data object; and

in response to a determination that the deduplication server has successfully added the task identifier to the data object stored at the deduplication server,

add the fingerprint for each data segment in the subset of data segments that comprise the matching fingerprint in the data object in the cache, wherein

the cache is stored at a client system, and

add an active identifier to the data object in the cache, wherein the active identifier indicates that the data object stored at the deduplication server will be maintained at the deduplication server during the backup process.

15. The system of claim 14 , wherein the program instructions are further executable to:

determine whether any data objects at the deduplication server comprise the matching fingerprint,

identify one or more data objects at the deduplication server that comprise the matching fingerprint,

select the data object from the one or more data objects, and

transmit the data object to the client system.

16. The system of claim 14 , wherein the program instructions are further executable to:

receive the data object at the client system, wherein

the data object comprises at least one of

a matching fingerprint for all data segments in the subset of data segments,

a greatest number of matching fingerprints for a greatest number of data segments in the subset of data segments, or

a greatest number of frequently encountered data segments in the subset of data segments.

17. A non-transitory computer readable storage medium comprising instructions executable to:

transmit statistical information to a deduplication server, wherein

the statistical information comprises information associated with a client system or a backup process;

receive one or more items from the client system at the deduplication server, wherein

each of the one or more items comprises a data object or a fingerprint for a data segment that is referenced by the backup process;

transmit a request to the deduplication server, wherein

the request instructs the deduplication server to add a task identifier to each of the one or more items stored at the deduplication server, and

addition of the task identifier to the each of the one or more items prevents the each of the one or more items stored at the deduplication server from being deleted from the deduplication server during the backup process; and

in response to a determination that the deduplication server has successfully added the task identifier to the each of the one or more items stored at the deduplication server,

add a fingerprint for the each of the one or more items in a cache, wherein

the cache is stored at the client system, and

add an active identifier to the each of the one or more items in the cache, wherein the active identifier indicates that the each of the one or more items stored at the deduplication server will be maintained at the deduplication server during the backup process.

18. A system comprising:

one or more processors; and

memory coupled to the processors, wherein the memory stores program instructions executable by the one or more processors to:

transmit statistical information to a deduplication server, wherein

the statistical information comprises information associated with a client system or a backup process;

receive one or more items from the client system at the deduplication server, wherein

each of the one or more items comprises a data object or a fingerprint for a data segment that is referenced by the backup process;

transmit a request to the deduplication server, wherein

the request instructs the deduplication server to add a task identifier to each of the one or more items stored at the deduplication server, and

addition of the task identifier to the each of the one or more items prevents the each of the one or more items stored at the deduplication server from being deleted from the deduplication server during the backup process; and

in response to a determination that the deduplication server has successfully added the task identifier to the each of the one or more items stored at the deduplication server,

add a fingerprint for the each of the one or more items in a cache, wherein

the cache is stored at the client system, and

add an active identifier to the each of the one or more items in the cache, wherein the active identifier indicates that the each of the one or more items stored at the deduplication server will be maintained at the deduplication server during the backup process.