IP Library Granted Patent US 10,915,260
Granted Patent B1
US 10,915,260 · App. 15/964,309 · Granted Feb 9, 2021

Dual-mode deduplication based on backup history

Inventors: Chao Lei (Beijing, CN); Hui Yuan (Beijing, CN); Qing Fu Dong (Beijing, CN)
Assignee: Veritas Technologies LLC
G06F3/0641G06F3/0608G06F12/0893G06F16/137G06F16/1748G06F16/907
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,915,260
App. No.
15/964,309
Granted
Feb 9, 2021
Kind
B1
Abstract

Disclosed herein are methods, systems, and processes to perform dual-mode deduplication based on backup history. A fingerprint of a data segment of a data stream is calculated and a determination is made as to whether the fingerprint of the data segment matches a corresponding fingerprint in a cache. If the fingerprint matches the corresponding fingerprint, another fingerprint of a subsequent data segment of the data stream is calculated. If the fingerprint does not match the corresponding fingerprint, a segment boundary of the data stream is calculated based on a hash value, a determination is made that a new fingerprint calculated based on the segment boundary does not match the corresponding fingerprint, segment boundaries and new fingerprints are calculated, and a determination is made that a first fingerprint matches another corresponding fingerprint in the cache.

Claims (79)

1. A computer-implemented method, comprising:

storing segment layout information of a backup image in a cache;

receiving a data stream having a plurality of variable-length data segments;

executing a fast mode of deduplication operations including,

calculating a fingerprint of a variable-length data segment received in the data stream, wherein the length of the data segment corresponds to the length of a corresponding data segment defined in the cache,

determining whether the calculated fingerprint of the variable-length data segment received in the data stream matches a fingerprint of the corresponding data segment in the cache,

if the calculated fingerprint matches the fingerprint of the corresponding data segment in the cache, continuing to execute deduplication operations in the fast mode on subsequent data segments in the data stream so long as the calculated fingerprint of each variable-length data segment received in the data stream matches the fingerprint for the corresponding data segment in the cache;

if it is determined that the calculated fingerprint of the variable-length data segment received in the data stream does not match the fingerprint for the corresponding data segment in the cache, executing a slow mode of deduplication operations, wherein the slow mode of deduplication operations include,

calculating a new segment boundary for the data segment that does not match the fingerprint in the data stream using a rolling hash operation,

calculating a new fingerprint for the data segment defined by the new segment boundary,

continuing execution of the slow mode of deduplication operations on subsequent segments in the data stream until a fingerprint calculated based on a subsequent variable length data segment matches the fingerprint of a corresponding data segment in the cache; and

returning to the execution of the fast mode of deduplication operations if it is determined that the fingerprint calculated based on a subsequent data segment matches the fingerprint for a corresponding data segment in the cache.

2. The computer-implemented method of claim 1 , wherein

the subsequent data segments in the data stream used in the fast mode of deduplication operations are adjacent to one another; and

the subsequent data segments in the data stream used in the slow mode of deduplication operations are adjacent data segments having the new data segment boundary.

3. The computer-implemented method of claim 1 , further comprising:

retrieving data segment metadata associated with the backup image, wherein

the backup image is maintained by a backup server,

the backup image is a previous backup image, and

the data segment metadata comprises fingerprints and respective data segment lengths.

4. The computer-implemented method of claim 1 , further comprising:

deduplicating substantially all of the variable-length data segments of the data stream.

5. The computer-implemented method of claim 4 , wherein

deduplication operations are executed in a dual-mode deduplication process including the fast mode of deduplication operations and the slow mode of deduplication operations, wherein

the fast mode of the dual-mode implements hashing of data in the data stream for calculating the fingerprints of the variable-length data segments, and

the slow mode of the dual-mode implements a rolling hashing of data in the data stream.

6. The computer-implemented method of claim 1 , further comprising:

switching between the fast mode of deduplication operations and the slow mode of deduplication operations, and vice-versa, to implement dual-mode deduplication operations on the data stream.

7. The computer-implemented method of claim 1 , wherein

the fast mode of deduplication operations utilizes segment length information from a previous backup image as a segment boundary to chunk a current data stream to compute one or more fingerprints of one or more data segments in the current data stream.

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

store segment layout information of a backup image in a cache;

receive a data stream having a plurality of variable length data segments;

execute a fast mode of deduplication operations including,

calculating a fingerprint of a variable-length data segment received in the data stream, wherein the length of the data segment corresponds to the length of a corresponding data segment defined in the cache,

determining whether the calculated fingerprint of the variable-length data segment matches a fingerprint of the corresponding data segment in the cache;

if the calculated fingerprint matches the fingerprint of the corresponding fingerprint in the cache, continuing execution of deduplication operations in the fast mode of deduplication operations on subsequent data segments in the data stream so long as the calculated fingerprint of each variable-length data segment received in the data stream matches the fingerprint of a corresponding data segment in the cache;

if it is determined that the calculated fingerprint of the variable-length data segment received in the data stream does not match the fingerprint for the corresponding data segment in the cache, executing a slow mode of deduplication operations, wherein the slow mode of deduplication operations include,

calculating a new segment boundary of the data segment that does not match the fingerprint in the data stream using a rolling hash operation,

calculating a new fingerprint for the data segment defined by the new segment boundary,

continue execution of the slow mode of deduplication operations on subsequent variable-length data segments in the data stream until a fingerprint calculated based on a subsequent variable length data segment matches a fingerprint of a corresponding data segment in the cache; and

returning to the execution of the fast mode of deduplication operations if it is determined that the fingerprint calculated based on a subsequent data segment matches a fingerprint for a corresponding data segment in the cache.

9. The non-transitory computer readable storage medium of claim 8 , wherein

the subsequent data segments in the data stream used in the fast mode of deduplication operations are adjacent to one another; and

the subsequent data segments in the data stream used in the slow mode of deduplication operations are adjacent data segments having the new data segment boundary.

10. The non-transitory computer readable storage medium of claim 8 , further comprising:

retrieving data segment metadata associated with the backup image, wherein

the backup image is maintained by a backup server,

the backup image is a previous backup image, and

the data segment metadata comprises fingerprints and respective data segment lengths.

11. The non-transitory computer readable storage medium of claim 8 , further comprising:

duplicating substantially all of the variable-length data segments of the data stream.

12. The non-transitory computer readable storage medium of claim 11 , wherein

deduplication operations are executed in a dual-mode deduplication process including the fast mode of deduplication operations and the slow mode of deduplication operations, wherein

the fast mode of the dual-mode deduplication process implements hashing of data in the data stream for calculating the fingerprints of the variable-length data segments, and

the slow mode of the dual-mode deduplication process implements a rolling hash of data in the data stream.

13. A system comprising:

one or more processors; and

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

store segment layout information of a backup image in a cache;

receive a data stream having a plurality of variable length data segments;

execute a fast mode of deduplication operations including,

calculating a fingerprint of a variable-length data segment received in the data stream, wherein the variable-length corresponds to the length of a corresponding data segment defined in the cache;

determining whether the calculated fingerprint of the variable-length data segment matches a fingerprint of the corresponding data segment in the cache;

if the calculated fingerprint matches the fingerprint of the corresponding fingerprint in the cache, continuing to execute deduplication operations in the fast mode on subsequent data segments in the data stream so long as the calculated fingerprint of each variable-length data segment received in the data stream matches the fingerprint for the corresponding data segment in the cache,

if it is determined that the calculated fingerprint of the variable-length data segment received in the data stream does not match the fingerprint for the corresponding data segment in the cache, executing a slow mode of deduplication operations, wherein the slow mode of deduplication operations include,

calculating a new segment boundary of the data segment that does not match the fingerprints in the data stream using a hash operation,

calculating a new fingerprint for the data segment defined by the new segment boundary,

continuing execution of the slow mode of deduplication operations on subsequent variable-length data segments in the data stream until a fingerprint calculated based on a subsequent variable length data segment matches a corresponding data segment in the cache; and

returning to execution of the fast mode of deduplication operations if it is determined that the fingerprint calculated based on a subsequent data segment matches a fingerprint for a corresponding data segment in the cache.

14. The system of claim 13 , wherein

the subsequent data segments in the data stream used in the fast mode of deduplication operations are adjacent to one another; and

the subsequent data segments in the data stream used in the slow mode of deduplication operations are adjacent data segments having the new data segment boundary.

15. The system of claim 14 , further comprising:

deduplicating substantially all of the data segments of the data stream.

16. The system of claim 15 , wherein

the deduplication operations are executed in a dual-mode deduplication process including the fast mode of deduplication operations and the slow mode of de-duplication operations, wherein

the fast mode of the dual-mode deduplication process implements hashing of data in the data stream, and

the slow mode of the dual-mode deduplication process implements a rolling hash of data in the data stream.

Assignments (11)
AMENDMENT NO. 1 TO PATENT SECURITY AGREEMENT Recorded Apr 8, 2025
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 070779/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2025
From: VERITAS TECHNOLOGIES LLC
To: COHESITY, INC.
Reel/Frame 070335/0013 →
RELEASE OF SECURITY INTEREST Recorded Dec 16, 2024
From: ACQUIOM AGENCY SERVICES LLC, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069697/0238 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069634/0584 →
SECURITY INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK. N.A.
Reel/Frame 069890/0001 →
ASSIGNMENT OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Nov 25, 2024
From: BANK OF AMERICA, N.A., AS ASSIGNOR
To: ACQUIOM AGENCY SERVICES LLC, AS ASSIGNEE
Reel/Frame 069440/0084 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS AT R/F 052426/0001 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 054535/0565 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
PATENT SECURITY AGREEMENT SUPPLEMENT Recorded Apr 16, 2020
From: VERITAS TECHNOLOGIES, LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 052426/0001 →
PATENT SECURITY AGREEMENT SUPPLEMENT Recorded Mar 18, 2020
From: VERITAS TECHNOLOGIES LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 052189/0311 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 4, 2018
From: LEI, CHAO; YUAN, HUI; DONG, QING FU
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 045718/0247 →
Cited By (5)
US 12,411,776 US 12,581,161 US 12,608,279 US 12,645,545 US 12,664,245