IP Library Granted Patent US 11,741,060
Granted Patent B2
US 11,741,060 · App. 16/698,288 · Granted Aug 29, 2023

Methods and systems for scalable deduplication

Inventors: Yong Yang (Beijing, CN); Xianbo Zhang (Plymouth, MN); Weibao Wu (Vadnais Heights, MN); Chao Lei (Beijing, CN); Yafeng Wang (Beijing, CN); Haigang Wang (Shoreview, MN); Lulu Wei (Beijing, CN)
Assignee: Veritas Technologies LLC
G06F16/215
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 11,741,060
App. No.
16/698,288
Granted
Aug 29, 2023
Kind
B2
Abstract

Methods, computer program products, computer systems, and the like are disclosed that provide for scalable deduplication in an efficient and effective manner. For example, such methods, computer program products, and computer systems can include receiving a data object at an assigned node, determining whether the data object includes a sub-data object, and processing the sub-data object. The assigned node is a node of a plurality of nodes of a cluster, where the data object includes a data segment, and a signature. The signature is generated based, at least in part, on data of the data segment. The processing includes sending the sub-data object to a remote node. The remote node is another node of the plurality of nodes of the cluster.

Claims (171)

1. A method comprising:

receiving a data object from a client system at an assigned node, wherein

the assigned node is a node of a plurality of nodes of a cluster,

the data object is being backed up as part of a backup operation for the client system,

the assigned node is assigned to the backup operation and stores a catalog for use in the backup operation,

the data object comprises

a data segment, and

a signature, and

the signature is generated based, at least in part, on data of the data segment;

determining whether the data object comprises a sub-data object, wherein

the determining uses the catalog; and

in response to a determination that the data object comprises the sub-data object,

processing the data object, wherein

the backup operation comprises the determining and the processing,

the assigned node performs the determining and the processing the data object,

the data segment is stored in a first local deduplication pool at the assigned node,

the signature is stored in a first local metadata store at the assigned node, and

the processing the data object comprises

determining a remote node at which the sub-data object is to be stored,

generating a reference that identifies the sub-data object and the remote node,

storing the reference as a stored reference in a catalog at the assigned node, wherein

storage of the stored reference in the catalog facilitates access to the sub-data object at the remote node, and

sending the sub-data object to the remote node, wherein

the sending the sub-data object facilitates storage of

 a data segment of the sub-data object in a second local deduplication pool at the remote node, and

 a signature of the sub-data object in a second local metadata store at the remote node, and

the remote node is another node of the plurality of nodes, other than the assigned node.

2. The method of claim 1 , wherein

the data object comprises a container,

the container comprises a container deduplicated data store and a container metadata store,

the container deduplicated data store comprises one or more data segments comprising the data segment, and

the container metadata store comprises metadata associated with the one or more data segments.

3. The method of claim 2 , wherein

the metadata comprises the signature of the data segment and a location in the container deduplicated data store at which the data segment is stored.

4. The method of claim 3 , wherein

the signature is a fingerprint, and

the fingerprint was generated by performing a hash function on the data of the data segment.

5. The method of claim 1 , wherein the data object comprises a container, and the sending the sub-data object to the remote node comprises:

sending the container to the remote node; and

sending a container reference to the remote node, wherein

the container reference comprises a container identifier that identifies the container.

6. The method of claim 5 , further comprising:

receiving the sub-data object at the remote node;

storing the container in a local deduplication pool at the remote node; and

storing the container reference in a local reference database at the remote node.

7. The method of claim 6 , further comprising:

receiving a request for a fingerprint list from a client system;

retrieving the fingerprint list from a catalog; and

sending the fingerprint list to the client system.

8. The method of claim 7 , further comprising:

receiving a request for a location of the fingerprint list from the client system;

determining the location; and

sending the location to the client system.

9. The method of claim 7 , wherein

the catalog is implemented as a single instance for the cluster.

10. The method of claim 1 , wherein the data object comprises a container and a container reference, and the method further comprises:

storing the container in a local deduplication pool at the assigned node, wherein

the container comprises

a deduplicated data store, and

a metadata store; and

storing the container reference in a local reference database at the assigned node, wherein

the container reference identifies the container.

11. The method of claim 1 , wherein

the determining whether the sub-data object is to be stored at the assigned node is based,

at least in part, on at least one of

a computational resource of the assigned node,

a storage resource of the assigned node,

a network resource of the assigned node, or

the sub-data object being a remote reference.

12. A non-transitory computer-readable storage medium, comprising program instructions, which, when executed by one or more processors of a computing system, perform a method comprising:

receiving a data object from a client system at an assigned node, wherein

the assigned node is a node of a plurality of nodes of a cluster,

the data object is being backed up as part of a backup operation for the client system,

the assigned node is assigned to the backup operation and stores a catalog for use in the backup operation,

the data object comprises

a data segment, and

a signature, and

the signature is generated based, at least in part, on data of the data segment;

determining whether the data object comprises a sub-data object, wherein

the determining uses the catalog; and

in response to a determination that the data object comprises the sub-data object,

processing the data object, wherein

the backup operation comprises the determining and the processing,

the assigned node performs the determining and the processing the data object,

the data segment is stored in a first local deduplication pool at the assigned node,

the signature is stored in a first local metadata store at the assigned node, and

the processing the data object comprises

determining a remote node at which the sub-data object is to be stored,

generating a reference that identifies the sub-data object and the remote node,

storing the reference as a stored reference in a catalog at the assigned node, wherein

storage of the stored reference in the catalog facilitates access to the sub-data object at the remote node, and

sending the sub-data object to the remote node, wherein

the sending the sub-data object facilitates storage of

 a data segment of the sub-data object in a second local deduplication pool at the remote node, and

 a signature of the sub-data object in a second local metadata store at the remote node, and

the remote node is another node of the plurality of nodes, other than the assigned node.

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

the data object comprises a container,

the container comprises a container deduplicated data store and a container metadata store,

the container deduplicated data store comprises the data segment,

the signature is a fingerprint,

the container metadata store comprises metadata comprising the fingerprint and a location of the data segment in the container deduplicated data store, and

the fingerprint was generated by performing a hash function on the data of the data segment.

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

the catalog is implemented as a single instance for the cluster.

15. The non-transitory computer-readable storage medium of claim 12 , wherein the data object comprises a container, and the sending the sub-data object to the remote node comprises:

sending the container to the remote node; and

sending a container reference to the remote node, wherein

the container reference comprises a container identifier that identifies the container.

16. The non-transitory computer-readable storage medium of claim 15 , wherein the data object comprises a container and the method further comprises:

storing the container in a local deduplication pool at the assigned node, wherein

the container comprises

a deduplicated data store, and

a metadata store; and

storing the container reference in a local reference database at the assigned node, wherein

the container reference identifies the container.

17. A computing system comprising:

one or more processors; and

a computer-readable storage medium coupled to the one or more processors, comprising program instructions, which, when executed by the one or more processors, perform a method comprising

receiving a data object from a client system at an assigned node, wherein

the assigned node is a node of a plurality of nodes of a cluster,

the data object is being backed up as part of a backup operation for the client system,

the assigned node is assigned to the backup operation and stores a catalog for use in the backup operation,

the data object comprises

a data segment, and

a signature, and

the signature is generated based, at least in part, on data of the data segment,

determining whether the data object comprises a sub-data object, wherein the determining uses the catalog, and

in response to a determination that the data object comprises the sub-data object, processing the data object, wherein

the backup operation comprises the determining and the processing,

the assigned node performs the determining and the processing the data object,

the data segment is stored in a first local deduplication pool at the assigned node,

the signature is stored in a first local metadata store at the assigned node, and

the processing the data object comprises

generating a reference that identifies the sub-data object,

storing the reference in a local reference database at the assigned node,

determining a remote node at which the sub-data object is to be stored, and

sending the sub-data object to the remote node, wherein

 a data segment of the sub-data object is stored in a second local deduplication pool at the remote node,

 a signature of the sub-data object is stored in a second local metadata store at the remote node, and

 the remote node is another node of the plurality of nodes, other than the assigned node,

the processing the data object comprises

determining a remote node at which the sub-data object is to be stored,

generating a reference that identifies the sub-data object and the remote node,

storing the reference as a stored reference in a catalog at the assigned node, wherein

storage of the stored reference in the catalog facilitates access to the sub-data object at the remote node, and

sending the sub-data object to the remote node, wherein

the sending the sub-data object facilitates storage of

 a data segment of the sub-data object in a second local deduplication pool at the remote node, and

 a signature of the sub-data object in a second local metadata store at the remote node, and

the remote node is another node of the plurality of nodes, other than the assigned node.

18. The computing system of claim 17 , wherein

the data object comprises a container,

the container comprises a container deduplicated data store and a container metadata store,

the container deduplicated data store comprises the data segment,

the signature is a fingerprint,

the container metadata store comprises metadata comprising the fingerprint and a location of the data segment in the container deduplicated data store, and

the fingerprint was generated by performing a hash function on the data of the data segment.

19. The computing system of claim 17 , wherein

the catalog is implemented as a single instance for the cluster.

20. The computing system of claim 17 , wherein the data object comprises a container, and the sending the sub-data object to the remote node comprises:

sending the container to the remote node; and

sending a container reference to the remote node, wherein

the container reference comprises a container identifier that identifies the container.

21. The computing system of claim 20 , wherein the data object comprises a container, and the method further comprises:

storing the container in a local deduplication pool at the assigned node, wherein

the container comprises

a deduplicated data store, and

a metadata store; and

storing the container reference in a local reference database at the assigned node, wherein

the container reference identifies the container.

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 13, 2024
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069574/0944 →
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 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS AT R/F 052423/0596 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 054535/0460 →
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 052423/0596 →
PATENT SECURITY AGREEMENT SUPPLEMENT Recorded Apr 9, 2020
From: VERITAS TECHNOLOGIES LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 052368/0272 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 3, 2019
From: YANG, YONG; WANG, YAFENG; WEI, LULU
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 051161/0136 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 2, 2019
From: ZHANG, XIANBO; WU, WEIBAO; LEI, CHAO; WANG, HAIGANG
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 051156/0203 →
Continuity (1)
Related Publication 20210157777A1 · May 27, 2021