IP Library Granted Patent US 10,656,858
Granted Patent B1
US 10,656,858 · App. 15/288,001 · Granted May 19, 2020

Deduplication featuring variable-size duplicate data detection and fixed-size data segment sharing

Inventors: Ronald Karr (Palo Alto, CA); Graham Bromley (Dublin, CA); Deepak Patil (Roseville, MN)
Assignee: Veritas Technologies LLC
G06F3/0641G06F3/067G06F3/0608G06F3/0644G06F3/0659
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,656,858
App. No.
15/288,001
Granted
May 19, 2020
Kind
B1
Abstract

A hybrid deduplication system operates to detect variable-sized deduplication matches, while performing the storage deduplication on fixed-size segments of data. The hybrid deduplication system calculates unique identifiers for variable-sized sections of data within a data stream being written to a deduplicated data store. The hybrid deduplication system then compares those newly-calculated identifiers to identifiers of variable-sized sections of data that have already been stored within the deduplicated data store. If a match is found, the hybrid deduplication system identifies the location of each of the fixed-size data segment(s), already stored in the deduplicated data store, that include the identified variable-sized section of data. Instead of writing the sections that match already-existing sections to the deduplicated data store, the hybrid deduplication system simply causes the creation of a reference to the identified storage locations, indicating that the data stream being written includes the data in these pre-existing storage locations.

Claims (68)

1. A method comprising:

receiving a data stream;

dividing the data stream into a plurality of variable-sized sections;

calculating a fingerprint for a first variable-sized section of the plurality of variable-sized sections, wherein

the fingerprint is calculated as a function of all data within the first variable-sized section;

determining whether the fingerprint matches a stored fingerprint;

in response to determining that the fingerprint matches the stored fingerprint, identifying a fixed-length data segment in storage that contains a copy of data in the first variable-sized section, wherein

the fixed-length data segment comprises

the copy, and

additional data that is not found in the first variable-sized section;

replacing the first variable-sized section with a plurality of references including a reference to the fixed-length data segment; and

updating a reference file to identify

the fixed-length data segment,

a first portion of data in the fixed-length data segment that corresponds to the copy, and

a second portion of data in the fixed-length data segment that corresponds to the additional data.

2. The method of claim 1 , further comprising:

calculating a second fingerprint corresponding to a second variable-sized section of the plurality of variable-sized sections;

determining that the second fingerprint does not match any stored fingerprint;

in response to determining that the second fingerprint does not match any stored fingerprint, store fixed-length data segments of the second variable-sized section in the storage; and

replacing the second variable-sized section with a plurality of references including the references to the fixed-length data segments of the second variable-sized section in the storage.

3. The method of claim 1 , wherein

at least two or more of the plurality of variable-sized sections comprise unaligned common data.

4. A non-transitory computer readable storage medium comprising program instructions executable by one or more processors to perform a method comprising:

receiving a data stream;

dividing the data stream into a plurality of variable-sized sections;

calculating a fingerprint for a first variable-sized section of the plurality of variable-sized sections, wherein

the fingerprint is calculated as a function of all data within the first variable-sized section;

determining whether the fingerprint matches a stored fingerprint;

in response to determining that the fingerprint matches the stored fingerprint, identifying a fixed-length data segment in storage that contains a copy of data in the first variable-sized section, wherein

the fixed-length data segment comprises

the copy, and

additional data that is not found in the first variable-sized section;

replacing the first variable-sized section with a plurality of references including a reference to the fixed-length data segment; and

updating a reference file to identify

the fixed-length data segment,

a first portion of data in the fixed-length data segment that corresponds to the copy, and

a second portion of data in the fixed-length data segment that corresponds to the additional data.

5. The non-transitory computer readable storage medium of claim 4 , wherein the method further comprises:

calculating a second fingerprint corresponding to a second variable-sized section of the plurality of variable-sized sections;

determining that the second fingerprint does not match any stored fingerprint;

in response to determining that the second fingerprint does not match any stored fingerprint, store fixed-length data segments of the second variable-sized section in the storage; and

replacing the second variable-sized section with a plurality of references including the references to the fixed-length data segments of the second variable-sized section in the storage.

6. The non-transitory computer readable storage medium of claim 4 , wherein

at least two or more of the plurality of variable-sized sections comprise unaligned common data.

7. A system comprising:

one or more processors; and

a memory storing program instructions executable by the one or more processors to perform a method comprising:

receiving a data stream;

dividing the data stream into a plurality of variable-sized sections;

calculating a fingerprint for a first variable-sized section of the plurality of variable-sized sections, wherein

the fingerprint is calculated as a function of all data within the first variable-sized section;

determining whether the fingerprint matches a stored fingerprint;

in response to determining that the fingerprint matches the stored fingerprint, identifying a fixed-length data segment in storage that contains a copy of data in the first variable-sized section, wherein

the fixed-length data segment comprises

the copy, and

additional data that is not found in the first variable-sized section;

replacing the first variable-sized section with a plurality of references including a reference to the fixed-length data segment; and

updating a reference file to identify

the fixed-length data segment,

a first portion of data in the fixed-length data segment that corresponds to the copy, and

a second portion of data in the fixed-length data segment that corresponds to the additional data.

8. The system of claim 7 , wherein the method further comprises:

calculating a second fingerprint corresponding to a second variable-sized section of the plurality of variable-sized sections;

determining that the second fingerprint does not match any stored fingerprint;

in response to determining that the second fingerprint does not match any stored fingerprint, store fixed-length data segments of the second variable-sized section in the storage; and

replacing the second variable-sized section with a plurality of references including the references to the fixed-length data segments of the second variable-sized section in the storage.

9. The system of claim 7 , wherein

at least two or more of the plurality of variable-sized sections comprise unaligned common data.

Assignments (9)
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 13, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069634/0584 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069574/0863 →
SECURITY INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK. N.A.
Reel/Frame 069890/0001 →
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 1, 2017
From: VERITAS TECHNOLOGIES LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 041850/0511 →
Continuity (1)
Continuation 13716123 · Dec 15, 2012
Cited By (1)
US 12,265,504