IP Library Granted Patent US 8,954,398
Granted Patent B1
US 8,954,398 · App. 13/734,901 · Granted Feb 10, 2015

Systems and methods for managing deduplication reference data

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,954,398
App. No.
13/734,901
Granted
Feb 10, 2015
Kind
B1
Abstract

A method for managing deduplication reference data may include (1) identifying multiple of data containers configured to store a plurality of deduplicated data segments that are referenced by multiple data objects within a deduplicated data system, (2) maintaining multiple reference databases including (i) a first reference database corresponding to a first subset of the data containers and (ii) a second reference database corresponding to a second subset of the data containers, the second subset differing from the first subset, (3) determining that a data object references at least one segment within a first data container within the first subset but does not reference any data segment within a second data container within the second subset and (4) updating the first reference database with information specifying that the data object references at least one data segment within at least one data container within the first subset of data containers.

Claims (64)

1. A computer-implemented method for managing deduplication reference data, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising:

identifying a plurality of data containers configured to store a plurality of deduplicated data segments that are referenced by a plurality of data objects within a deduplicated data system;

maintaining a plurality of reference databases, the plurality of reference databases comprising:

a first reference database that is configured to store information specifying which data objects within the plurality of data objects reference at least one data segment within a first subset of the plurality of data containers;

a second reference database that is configured to store information specifying which data objects within the plurality of data objects reference at least one data segment within a second subset of the plurality of data containers, the second subset differing from the first subset;

determining that a data object references at least one data segment within a first data container within the first subset of the plurality of data containers but that the data object does not reference any data segment within a second data container within the second subset of the plurality of data containers;

updating the first reference database with information specifying that the data object references at least one data segment within at least one data container within the first subset of the plurality of data containers.

2. The computer-implemented method of claim 1 ,

further comprising detecting a backup image introduced to the deduplicated data system by a backup operation, the backup image comprising the data object;

wherein updating the first reference database precedes marking the backup operation as successful.

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

identifying a corrupted reference database within the plurality of reference databases;

while rebuilding the corrupted reference database, keeping the deduplicated data system online to allow at least one of:

adding at least one data object to the deduplicated data system;

retrieving at least one data object from the deduplicated data system;

removing at least one data object from the deduplicated data system.

4. The computer-implemented method of claim 3 , wherein identifying the corrupted reference database comprises checking a reference within a selected data object within the plurality of data objects that points to a referenced data segment within the plurality of data segments stored within a corresponding data container within the plurality of data containers and determining that the corrupted reference database does not correctly indicate that the selected data object references data stored within the corresponding data container.

5. The computer-implemented method of claim 4 , wherein identifying the corrupted reference database further comprises identifying the corrupted reference database while the deduplicated data system is online.

6. The computer-implemented method of claim 3 , wherein:

identifying the corrupted reference database comprises identifying the corrupted reference database before a checking period designated for checking each data object within the deduplicated data system against each reference database within the plurality of reference databases;

rebuilding the corrupted reference database comprises rebuilding the corrupted reference database during the checking period based at least in part on identifying the corrupted reference database before the checking period.

7. The computer-implemented method of claim 3 , wherein keeping the deduplicated data system online to allow removing at least one data object from the deduplicated data system comprises allowing removal of at least one data object that does not reference any data segment stored in any data container corresponding to the corrupted reference database but blocking removal of a selected data object that does reference at least one data segment stored in at least one data container corresponding to the corrupted reference database.

8. The computer-implemented method of claim 3 , wherein keeping the deduplicated data system online to allow removing at least one data object from the deduplicated data system comprises allowing removal of at least one data segment within the plurality of deduplicated data segments that is not stored in any data container corresponding to the corrupted reference database but blocking removal of at least one data segment stored in at least one data container corresponding to the corrupted reference database.

9. A system for managing deduplication reference data, the system comprising:

an identification module programmed to identify a plurality of data containers configured to store a plurality of deduplicated data segments that are referenced by a plurality of data objects within a deduplicated data system;

a maintaining module programmed to maintain a plurality of reference databases, the plurality of reference databases comprising:

a first reference database that is configured to store information specifying which data objects within the plurality of data objects reference at least one data segment within a first subset of the plurality of data containers;

a second reference database that is configured to store information specifying which data objects within the plurality of data objects reference at least one data segment within a second subset of the plurality of data containers, the second subset differing from the first subset;

a determination module programmed to determine that a data object references at least one data segment within a first data container within the first subset of the plurality of data containers but that the data object does not reference any data segment within a second data container within the second subset of the plurality of data containers;

an updating module programmed to update the first reference database with information specifying that the data object references at least one data segment within at least one data container within the first subset of the plurality of data containers;

at least one processor configured to execute the identification module, the maintaining module, the determination module and the updating module.

10. The system of claim 9 ,

further comprising a detection module programmed to detect a backup image introduced to the deduplicated data system by a backup operation, the backup image comprising the data object;

wherein the updating module is programmed to update the first reference database precedes marking the backup operation as successful.

11. The system of claim 9 , further comprising a rebuilding module programmed to:

identify a corrupted reference database within the plurality of reference databases;

while rebuilding the corrupted reference database, keep the deduplicated data system online to allow at least one of:

adding at least one data object to the deduplicated data system;

retrieving at least one data object from the deduplicated data system;

removing at least one data object from the deduplicated data system.

12. The system of claim 11 , wherein the rebuilding module is programmed to identify the corrupted reference database by checking a reference within a selected data object within the plurality of data objects that points to a referenced data segment within the plurality of data segments stored within a corresponding data container within the plurality of data containers and determining that the corrupted reference database does not correctly indicate that the selected data object references data stored within the corresponding data container.

13. The system of claim 12 , wherein the rebuilding module is programmed to identify the corrupted reference database further by identifying the corrupted reference database while the deduplicated data system is online.

14. The system of claim 11 , wherein:

the rebuilding module is programmed to identify the corrupted reference database by identifying the corrupted reference database before a checking period designated for checking each data object within the deduplicated data system against each reference database within the plurality of reference databases;

the rebuilding module is programmed to rebuild the corrupted reference database by rebuilding the corrupted reference database during the checking period based at least in part on identifying the corrupted reference database before the checking period.

15. The system of claim 11 , wherein the rebuilding module is programmed to keep the deduplicated data system online to allow removing at least one data object from the deduplicated data system by allowing removal of at least one data object that does not reference any data segment stored in any data container corresponding to the corrupted reference database but blocking removal of a selected data object that does reference at least one data segment stored in at least one data container corresponding to the corrupted reference database.

16. The system of claim 11 , wherein the rebuilding module is programmed to keep the deduplicated data system online to allow removing at least one data object from the deduplicated data system by allowing removal of at least one data segment within the plurality of deduplicated data segments that is not stored in any data container corresponding to the corrupted reference database but blocking removal of at least one data segment stored in at least one data container corresponding to the corrupted reference database.

17. A non-transitory computer-readable-storage medium comprising one or more computer-readable instructions that, when executed by at least one processor of a computing device, cause the computing device to:

identify a plurality of data containers configured to store a plurality of deduplicated data segments that are referenced by a plurality of data objects within a deduplicated data system;

maintain a plurality of reference databases, the plurality of reference databases comprising:

a first reference database that is configured to store information specifying which data objects within the plurality of data objects reference at least one data segment within a first subset of the plurality of data containers;

a second reference database that is configured to store information specifying which data objects within the plurality of data objects reference at least one data segment within a second subset of the plurality of data containers, the second subset differing from the first subset;

determine that a data object references at least one data segment within a first data container within the first subset of the plurality of data containers but that the data object does not reference any data segment within a second data container within the second subset of the plurality of data containers;

update the first reference database with information specifying that the data object references at least one data segment within at least one data container within the first subset of the plurality of data containers.

18. The non-transitory computer-readable-storage medium of claim 17 ,

wherein the one or more computer-readable instructions further cause the computing device to detect a backup image introduced to the deduplicated data system by a backup operation, the backup image comprising the data object;

wherein the one or more computer-readable instructions cause the computing device to update the first reference database before marking the backup operation as successful.

19. The non-transitory computer-readable-storage medium of claim 17 , wherein the one or more computer-readable instructions further cause the computing device to:

identify a corrupted reference database within the plurality of reference databases;

while rebuilding the corrupted reference database, keep the deduplicated data system online to allow at least one of:

adding at least one data object to the deduplicated data system;

retrieving at least one data object from the deduplicated data system;

removing at least one data object from the deduplicated data system.

20. The non-transitory computer-readable-storage medium of claim 19 , wherein the one or more computer-readable instructions cause the computing device to identify the corrupted reference database by causing the computing device to check a reference within a selected data object within the plurality of data objects that points to a referenced data segment within the plurality of data segments stored within a corresponding data container within the plurality of data containers and determine that the corrupted reference database does not correctly indicate that the selected data object references data stored within the corresponding data container.

Assignments (13)
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 (F/K/A VERITAS US IP HOLDINGS LLC)
Reel/Frame 069712/0090 →
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 IN PATENTS AT R/F 037891/0726 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS US IP HOLDINGS, LLC
Reel/Frame 054535/0814 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
MERGER AND CHANGE OF NAME Recorded Apr 18, 2016
From: VERITAS US IP HOLDINGS LLC; VERITAS TECHNOLOGIES LLC
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 038455/0752 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 037891/0726 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037891/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2016
From: SYMANTEC CORPORATION
To: VERITAS US IP HOLDINGS LLC
Reel/Frame 037697/0412 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 4, 2013
From: ZHANG, XIANBO; SHE, HAIBIN; GUO, FANGLU; LEI, CHAO; CHENG, SHUAI; WANG, HAIGANG; SUN, DONGXU; GUAN, HONGXING; JIANG, WEN FENG
To: SYMANTEC CORPORATION
Reel/Frame 029573/0051 →