IP Library Granted Patent US 8,577,851
Granted Patent B2
US 8,577,851 · App. 12/982,086 · Granted Nov 5, 2013

Content aligned block-based deduplication

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 8,577,851
App. No.
12/982,086
Granted
Nov 5, 2013
Kind
B2
Abstract

A content alignment system according to certain embodiments aligns a sliding window at the beginning of a data segment. The content alignment system performs a block alignment function on the data within the sliding window. A deduplication block is established if the output of the block alignment function meets a predetermined criteria. At least part of a gap is established if the output of the block alignment function does not meet the predetermined criteria. The predetermined criteria is changed if a threshold number of outputs fail to meet the predetermined criteria.

Claims (57)

1. A method for defining deduplication block alignments within a data segment, the method comprising:

iteratively performing a block alignment function on data within a sliding window in a data segment, and following each iterative performance of the block alignment function:

in response to determining that the output of the block alignment function performed on a current window of data satisfies a predetermined criteria:

establishing with one or more computer processors a deduplication data block having a predetermined block size; and

moving the sliding window relative to the data segment by an amount based on the predetermined block size before a next iterative performance of the block alignment function; and

in response to determining that the output of the block alignment function performed on the current window of data does not satisfy the predetermined criteria:

moving the sliding window relative to the data segment by a predetermined incremental amount that is different from the predetermined block size before the next iterative performance of the block alignment function and without establishing a deduplication data block,

wherein gaps of data not belonging to any deduplication data block exist between at least some established deduplication data blocks following performance of the block alignment function across the data segment, and

wherein the size of the gaps of data is based at least on a number of successive outputs of the block alignment function that do not satisfy the predetermined criteria.

2. The method of claim 1 , wherein each of the established deduplication data blocks have the same predetermined block size.

3. The method of claim 1 , wherein the gaps of data comprise variable gap sizes.

4. The method of claim 1 , further comprising changing the predetermined criteria in response to determining, for a threshold number of consecutive iterations, that the output of the block alignment performed on the data within the sliding window does not satisfy the predetermined criteria.

5. The method of claim 4 , wherein the predetermined criteria is whether the output of the block alignment function falls within a predetermined range, and changing the predetermined criteria comprises altering the predetermined range.

6. The method of claim 4 , wherein the changing the predetermined criteria comprises altering the block alignment function.

7. The method of claim 6 , wherein the block alignment function is a hash function and altering the block alignment function comprises using a different hash function.

8. The method of claim 4 , further comprising iteratively performing the block alignment function across at least a portion of the data segment again in response to changing the predetermined criteria.

9. The method of claim 1 , further comprising:

in response to determining for a threshold number of consecutive iterations that the output of the block alignment function performed on the current window of data does not satisfy the predetermined criteria:

establishing a deduplication data block; and

moving the sliding window relative to the data segment by an incremental amount.

10. The method of claim 1 , wherein a size of the gaps of data correspond to a size of one or more incremental amounts.

11. A deduplication system configured to define deduplication block alignments within a data segment, the system comprising:

a deduplication block alignment module executing in one or more processors and configured to iteratively perform a deduplication block alignment function on data within a sliding window in a data segment and which, for each iterative performance of the block alignment function, is configured to:

establish a deduplication block having a predetermined block size in response to determining that the output of the deduplication block alignment function performed on the data within the sliding window satisfies a predetermined criteria; and

define at least a portion of data having a predetermined incremental size that is different from the predetermined block size as not belonging to a deduplication block in response to determining that the output of the block alignment function performed on the data within the sliding window does not satisfy the predetermined criteria,

wherein the predetermined incremental size is determined prior to determining that the output of the block alignment function performed on the data within the sliding window does not satisy the predetermined criteria.

12. The system of claim 11 , wherein the block alignment module is further configured to:

move the sliding window relative to the data segment by an amount based on the predetermined block size in response to determining that the output of the block alignment function performed on the data within the sliding window satisfies the predetermined criteria; and

move the sliding window relative to the data segment by an incremental amount in response to determining that the output of the block alignment function performed on the data within the sliding window does not satisfy the predetermined criteria.

13. The system of claim 12 , wherein the block alignment module is further configured to change the predetermined criteria in response to determining, for a threshold number of consecutive iterations, that the output of the block alignment function performed on the data within the sliding window does not satisfy the predetermined criteria.

14. The system of claim 13 , wherein the block alignment module is further configured to perform the block alignment function across at least a portion of the data segment again in response to the criteria adjustment module changing the predetermined criteria.

15. The method of claim 13 , wherein the changing the predetermined criteria comprises altering the block alignment function.

16. The system of claim 11 , wherein the block alignment module is further configured to:

establish a deduplication data block in response to the block alignment module determining for a threshold number of consecutive iterations that the output of the block alignment function performed on the current window of data does not satisfy the predetermined criteria; and

move the sliding window relative to the data segment by an incremental amount in response to the block alignment module determining for a threshold number of consecutive iterations that the output of the block alignment function performed on the current window of data does not satisfy the predetermined criteria.

17. A method for defining deduplication block alignments within a data segment, the method comprising:

iteratively performing a deduplication block alignment function on data within a sliding window in a data segment and, for each iterative performance of the deduplication block alignment function:

establishing with one or more computer processors a deduplication data block having a predetermined block size in response to determining that the output of the deduplication block alignment function performed on the data within the sliding window satisfies a predetermined criteria; and

defining at least a portion of a gap of data having a predetermined incremental size that is different from the predetermined block size as not belonging to a deduplication data block in response to determining that the output of the deduplication block alignment function performed on the data within the sliding window does not satisfy the predetermined criteria, wherein the predetermined incremental size is determined prior to determining that the output of the block alignment function performed on the data within the sliding window does not satisfy the predetermined criteria.

18. The method of claim 17 , further comprising:

moving the sliding window relative to the data segment by an amount that is based on the predetermined block size before performing the next iteration in response to determining that the output of the block alignment function performed on the data within the sliding window satisfies the predetermined criteria; and

moving the sliding window relative to the data segment by an incremental amount in response to determining that the output of the block alignment function performed on the data within the sliding window does not satisfy the predetermined criteria.

19. The method of claim 18 , further comprising iteratively performing the block alignment function across at least a portion of the data segment again in response to changing the predetermined criteria.

20. The method of claim 17 , further comprising changing the predetermined criteria in response to determining, for a threshold number of consecutive iterations, that the output of the block alignment function performed on the data within the sliding window does not satisfy the predetermined criteria.

21. The method of claim 17 , further comprising:

in response to determining for a threshold number of consecutive iterations that the output of the block alignment function performed on the current window of data does not satisfy the predetermined criteria:

establishing a deduplication data block; and

moving the sliding window relative to the data segment by an incremental amount.

22. A deduplication system configured to define deduplication block alignments within a data segment, the system comprising:

a deduplication block alignment module executing in one or more processors and configured to iteratively perform a deduplication block alignment function on data within a sliding window in a data segment and which, for each iterative performance of the block alignment function, is configured to:

in response to a determination that the output of the block alignment function performed on a current window of data satisfies a predetermined criteria:

establish a deduplication block having a predetermined block size, and

move the sliding window relative to the data segment by an amount based on the predetermined block size before a next iterative performance of the block alignment function; and

in response to a determination that the output of the block alignment function performed on the current window of data does not satisfy the predetermined criteria:

move the sliding window relative to the data segment by a predetermined incremental amount that is different from the predetermined block size before the next iterative performance of the block alignment function and without establishing a deduplication data block,

wherein gaps of data not belonging to any deduplication data block exist between at least some established deduplication data blocks following performance of the block alignment function across the data segment, and

wherein the size of the gaps of data is based at least on a number of successive outputs of the block alignment function that do not satisfy the predetermined criteria.

Assignments (5)
SUPPLEMENTAL CONFIRMATORY GRANT OF SECURITY INTEREST IN UNITED STATES PATENTS Recorded Apr 16, 2025
From: COMMVAULT SYSTEMS, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 070864/0344 →
SECURITY INTEREST Recorded Dec 13, 2021
From: COMMVAULT SYSTEMS, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 058496/0836 →
RELEASE OF SECURITY INTEREST Recorded Jan 6, 2021
From: BANK OF AMERICA, N.A.
To: COMMVAULT SYSTEMS, INC.
Reel/Frame 054913/0905 →
SECURITY INTEREST Recorded Jul 2, 2014
From: COMMVAULT SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 033266/0678 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 22, 2011
From: VIJAYAN, MANOJ KUMAR; ATTARDE, DEEPAK RAGHUNATH; VISWANATHAN, SRIKANT
To: COMMVAULT SYSTEMS, INC.
Reel/Frame 026011/0939 →