IP Library Granted Patent US 9,449,014
Granted Patent B2
US 9,449,014 · App. 13/306,878 · Granted Sep 20, 2016

Resynchronization of replicated data

Inventors: Murali Bashyam (Fremont, CA); Sreekanth Garigala (San Jose, CA)
Assignee: Dell Products L.P.
G06F17/30174
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 9,449,014
App. No.
13/306,878
Filed
Nov 29, 2011
Granted
Sep 20, 2016
Kind
B2
Examiner
VO, CECILE H
Art Unit
2169
USPC
707/610
Abstract

Mechanisms are provided for efficient resynchronization of replicated data. A hash value is generated for a chunk of data replicated from a source node to a target node. The chunk of data may be a file deduplicated and compressed at both a source node and a target node. A current sequence number is determined and a sequence number and hash tuple is maintained for the chunk of data at both the source node and the target node. Sequence numbers are modified whenever the data is modified. Current sequence numbers and sequence number and hash values in the sequence number hash tuples at the source node and the target node may be compared to determine whether data is still synchronized at a later point in time or whether data requires resynchronization.

Claims (44)

1. A method, comprising:

determining an initial data tuple for a chunk of data during replication of the chunk of data from a source node to a target node, the initial data tuple comprising an initial sequence number and an initial hash value, the initial sequence number indicating a number of times the chunk of data has been modified, the initial hash value comprising the result of applying a hash function to the chunk of data;

transmitting the initial data tuple for the chunk of data to the target node;

maintaining the initial data tuple at both the source node and the target node thereby forming a maintained source data tuple and a maintained target data tuple, wherein the maintained source data tuple includes a maintained source hash value and a maintained source sequence number corresponding to the initial sequence number, and wherein the maintained target data tuple includes a maintained target hash value and a maintained target sequence number corresponding to the initial sequence number;

receiving a request to determine whether data corresponding to the chunk at the source node is synchronized with the data corresponding to the chunk at the target node, the request corresponding to the maintained source data tuple and the maintained target data tuple;

determining whether the data at the source node is synchronized with the data at the target node by comparing a current source sequence number, separate from the maintained source sequence number, at the source node to the maintained source sequence number at the source node to indicate whether the data chunk has been modified at the source node, by comparing a current target sequence number, separate from the maintained target sequence number, at the target node to the maintained target sequence number at the target node to determine whether the data chunk has been modified at the target node, and by comparing the maintained source data tuple at the source node to the maintained target data tuple at the target node to determine if the data chunk is out-of-sync, wherein the current source sequence number is separate from the current target sequence number; and

performing resynchronization if the data at the source node is determined to not be synchronized with the data at the target node.

2. The method of claim 1 , wherein the source node is an active node and the target node is a standby node.

3. The method of claim 1 , wherein the initial sequence number and the initial hash value are maintained in extended attributes associated with the chunk.

4. The method of claim 3 , wherein the chunk is a file.

5. The method of claim 1 , wherein if any of the sequence numbers do not match, the data is not synchronized and a resynchronization operation is applied.

6. The method of claim 1 , wherein if the current source and maintained source sequence numbers do match or if the current target and maintained target sequence numbers do match, it is determined whether the maintained source hash value is equal to the maintained target hash value.

7. The method of claim 6 , wherein if the maintained source and maintained target hash values do not match, the data is not synchronized and a resynchronization operation is applied.

8. The method of claim 6 , wherein if the maintained source and maintained target hash values do match, it is determined whether the maintained source sequence number is equal to the maintained target sequence number.

9. The method of claim 8 , wherein if any of the aforementioned sequence numbers do not match, the data is not synchronized and a resynchronization operation is applied.

10. The method of claim 8 , wherein if all of the aforementioned sequence numbers and all of the aforementioned hash values do match, the data is in sync and no resynchronization is required.

11. The method of claim 1 , wherein data is determined to be synchronized by using the following algorithm:

is_data_insync( )

begin

if (primary.hashtuple.seqnum==primary.current_seqnum &&secondary.hashtuple.seqnum==secondary.current_seqnum && primary.hashtuple.hash==secondary.hashtuple.hash && primary.hashtuple.seqnum==secondary.hashtuple.seqnum)

begin return in-sync;

end

return out-of-sync;

end.

12. The method of claim 1 , wherein the maintained source sequence number is stored in a datastore suitcase.

13. The method of claim 12 , wherein the datastore suitcase includes an index portion and a data portion.

14. The method of claim 13 , wherein the index portion includes indices, data offsets, and data reference counts.

15. The method of claim 14 , wherein the data portion includes indices, data, and last file references.

16. A source node, comprising:

a processor configured to determine an initial data tuple for a chunk of data during replication of the chunk of data from a source node to a target node, the initial data tuple comprising an initial sequence number and an initial hash value, the initial sequence number indicating a number of times the chunk of data has been modified, the initial hash value comprising the result of applying a hash function to the chunk of data;

an interface configured to transmit the initial data tuple for the chunk of data to the target node;

memory configured to maintain the initial data tuple thereby forming a maintained source data tuple, wherein the maintained source data tuple includes a maintained source hash value and a maintained source sequence number corresponding to the initial sequence number;

wherein the interface is operable to receive request to determine whether data corresponding to the chunk at the source node is synchronized with the data corresponding to the chunk at the target node, wherein the request corresponds to the maintained source data tuple and the maintained target data tuple, wherein the request indicates that a current target sequence number at the target node has been compared to a maintained target sequence number at the target node to determine whether the data chunk has been modified at the target node, and wherein the processor is operable to determine whether the data at the source node is synchronized with the data at the target node by comparing a current source sequence number at the source node to the maintained source sequence number at the source node to indicate whether the data chunk has been modified at the source node and by comparing the maintained source data tuple at the source node to a maintained target data tuple at the target node to determine if the data chunk is out-of-sync, wherein the current target sequence number is separate from the current source sequence number; and

wherein the processor is further operable to perform resynchronization if the data at the source node is determined to not be synchronized with the data at the target node.

17. The source node of claim 16 , wherein the source node is an active node and the target node is a standby node.

18. The source node of claim 16 , wherein the initial sequence number and the initial hash value are maintained in extended attributes associated with the chunk.

19. The source node of claim 18 , wherein the chunk is a file.

20. A non-transitory computer readable storage medium, comprising:

computer code for determining an initial data tuple for a chunk of data during replication of the chunk of data from a source node to a target node, the initial data tuple comprising an initial sequence number and an initial hash value, the initial sequence number indicating a number of times the chunk of data has been modified, the initial hash value comprising the result of applying a hash function to the chunk of data;

computer code for transmitting the initial data tuple for the chunk of data to the target node;

computer code for maintaining the initial data tuple at both the source node and the target node thereby forming a maintained source data tuple and a maintained target data tuple, wherein the maintained source data tuple includes a maintained source hash value and a maintained source sequence number corresponding to the initial sequence number, and wherein the maintained target data tuple includes a maintained target hash value and a maintained target sequence number corresponding to the initial sequence number;

computer code for receiving a request to determine whether data corresponding to the chunk at the source node is synchronized with the data corresponding to the chunk at the target node, the request corresponding to the maintained source data tuple and the maintained target data tuple;

computer code for determining whether the data at the source node is synchronized with the data at the target node by comparing a current source sequence number, separate from the maintained source sequence number, at the source node to the maintained source sequence number at the source node to indicate whether the data chunk has been modified at the source node, by comparing a current target sequence number, separate from the maintained target sequence number, at the target node to the maintained target sequence number at the target node to determine whether the data chunk has been modified at the target node, and by comparing the maintained source data tuple at the source node to the maintained target data tuple at the target node to determine if the data chunk is out-of-sync, wherein the current source sequence number is separate from the current target sequence number; and

computer code for performing resynchronization if the data at the source node is determined to not be synchronized with the data at the target node.

Assignments (27)
RELEASE OF SECURITY INTEREST Recorded Nov 19, 2025
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; BINARYTREE.COM LLC; ERWIN, INC.
Reel/Frame 073606/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 18, 2025
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; BINARYTREE.COM LLC; ERWIN, INC.
Reel/Frame 073613/0326 →
SECURITY INTEREST Recorded Jun 8, 2025
From: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; ERWIN, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 071527/0649 →
SECURITY INTEREST Recorded Jun 8, 2025
From: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; ERWIN, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 071527/0001 →
FIRST LIEN INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Feb 2, 2022
From: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; BINARYTREE.COM LLC; ERWIN, INC.; ONE IDENTITY LLC; ONELOGIN, INC.; ONE IDENTITY SOFTWARE INTERNATIONAL DESIGNATED ACTIVITY COMPANY
To: GOLDMAN SACHS BANK USA
Reel/Frame 058945/0778 →
SECOND LIEN INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Feb 2, 2022
From: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; BINARYTREE.COM LLC; ERWIN, INC.; ONE IDENTITY LLC; ONELOGIN, INC.; ONE IDENTITY SOFTWARE INTERNATIONAL DESIGNATED ACTIVITY COMPANY
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 058952/0279 →
RELEASE OF SECOND LIEN SECURITY INTEREST IN PATENTS Recorded Feb 2, 2022
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC.
Reel/Frame 059096/0683 →
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS Recorded Feb 2, 2022
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC.
Reel/Frame 059105/0479 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: QUEST SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 046327/0347 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: QUEST SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 046327/0486 →
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS RECORDED AT R/F 040581/0850 Recorded May 22, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 046211/0735 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED AT REEL: 040587 FRAME: 0624. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 28, 2017
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 044811/0598 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Nov 10, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040587/0624 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Nov 9, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040581/0850 →
CHANGE OF NAME Recorded Nov 2, 2016
From: DELL SOFTWARE INC.
To: QUEST SOFTWARE INC.
Reel/Frame 040551/0885 →
RELEASE OF SECURITY INTEREST Recorded Oct 31, 2016
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0467 →
RELEASE OF SECURITY INTEREST IN CERTAIN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040039/0642) Recorded Oct 31, 2016
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
To: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0016 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 31, 2016
From: DELL PRODUCTS L.P.
To: DELL SOFTWARE INC.
Reel/Frame 040520/0220 →
RELEASE OF SECURITY INTEREST Recorded Sep 14, 2016
From: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040065/0618 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040030/0187 →
RELEASE OF SECURITY INTEREST Recorded Sep 14, 2016
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040040/0001 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040039/0642 →
RELEASE OF SECURITY INTEREST Recorded Sep 13, 2016
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLANT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040065/0216 →
PATENT SECURITY AGREEMENT (ABL) Recorded Jan 2, 2014
From: DELL INC.; APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 031898/0001 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Jan 2, 2014
From: APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS FIRST LIEN COLLATERAL AGENT
Reel/Frame 031897/0348 →
PATENT SECURITY AGREEMENT (TERM LOAN) Recorded Jan 2, 2014
From: DELL INC.; APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 031899/0261 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 1, 2011
From: BASHYAM, MURALI; GARIGALA, SREEKANTH
To: DELL PRODUCTS L.P.
Reel/Frame 027314/0187 →
Continuity (1)
Related Publication 20130138607A1 · May 30, 2013