IP Library Granted Patent US 7,389,300
Granted Patent B1
US 7,389,300 · App. 11/139,101 · Granted Jun 17, 2008

System and method for multi-staged in-memory checkpoint replication with relaxed consistency

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 7,389,300
App. No.
11/139,101
Granted
Jun 17, 2008
Kind
B1
Abstract

A system for multi-staged in-memory checkpoint replication with relaxed consistency includes a replication manager and a cluster with a plurality of nodes. In accordance with a configurable replication policy, the replication manager may be configured to identify a primary group of nodes to store primary replicas of a specified source memory region of a source node, and to identify a node of the primary group as an initiator of replication to a secondary group of nodes. In response to a replication request, the replication manager may be configured to copy contents of one or more data blocks of the source memory region to a each node of the primary group within a single atomic transaction, and initiate an operation to copy the contents of the data blocks from the initiator to an additional node of the secondary group.

Claims (79)

1. A system, comprising:

a cluster including a plurality of nodes, including a source node, a primary group of one or more nodes, and a secondary group of one or more nodes, wherein the primary group does not include the source node, and wherein the secondary group does not include the source node;

a processor; and

memory coupled to the processor, wherein the memory stores program instructions computer-executable by the processor to implement a replication manager;

wherein the replication manager is configured to:

in accordance with a configurable replication policy,

identify the primary group of one or more nodes of the cluster to store one or more respective primary replicas of a specified source memory region of the source node; and

identify a node of the primary group to serve as an initiator of replication to the secondary group of one or more nodes of the cluster; and

in response to a replication request,

within an atomic transaction, copy contents of one or more blocks of the source memory region to a respective primary replica at each node of the primary group; and

initiate an operation to copy the contents of the one or more blocks from the initiator to an additional replica at an additional node of the secondary group.

2. The system as recited in claim 1 , wherein the replication manager is further configured to:

receive the replication request from an application at the source node;

generate a commit record indicative of a completion of the transaction prior to sending an acknowledgement of transaction completion to the application; and

make the commit record accessible to at least one node of the secondary group.

3. The system as recited in claim 2 , wherein the replication manager is further configured to:

write the commit record to a storage device accessible from the at least one node of the secondary group.

4. The system as recited in claim 2 , wherein the replication manager is further configured to:

send a message containing contents of the commit record to at least one node of the secondary group.

5. The system as recited in claim 2 , wherein the replication manager is further configured to:

maintain a secondary replication completion record associated with the commit record; and

update the secondary replication completion record to indicate a completion of the operation to copy the contents of the one or more blocks at the additional node of the secondary group.

6. The system as recited in claim 2 , wherein the secondary group includes two or more nodes, further comprising a recovery manager, wherein the recovery manager is configured to:

upon a detection of a failure,

make a determination whether one or more nodes of the primary group are operational;

if a result of the determination is positive, select a particular node of the primary group as a failover target of the application; and,

if the result of the determination is negative, use the commit record and the secondary replication completion record to select a particular node of the secondary group as the failover target.

7. The system as recited in claim 1 , wherein the replication manager is further configured to:

identify the one or more blocks of the source memory region to be copied within the atomic transaction.

8. The system as recited in claim 1 , wherein the configurable replication policy includes a specification of a desired number of replication stages in a multi-stage replication hierarchy.

9. The system as recited in claim 1 , wherein the configurable replication policy includes a specification of a performance criterion.

10. The system as recited in claim 1 , wherein the configurable replication policy includes a specification of a software compatibility criterion.

11. The system as recited in claim 1 , wherein the replication manager includes a local replication manager component at the initiator, wherein the local replication manager component is configured to identify one or more nodes to be included in the secondary group.

12. The system as recited in claim 1 , wherein the source memory region is part of a volatile memory, and wherein the one or more primary replicas are maintained in volatile memory.

13. The system as recited in claim 1 , wherein at least one node of the secondary group is linked to at least one node of the primary group via a wide area network (WAN).

14. A method, comprising:

in accordance with a configurable replication policy,

identifying a primary group of one or more nodes of a cluster to store one or more respective primary replicas of a specified source memory region of a source node of the cluster wherein the primary group does not include the source node; and

identify a node of the primary group to serve as an initiator of replication to a secondary group of one or more nodes of the cluster, wherein the secondary group does not include the source node; and

in response to a replication request,

within an atomic transaction, copying contents of one or more blocks of the source memory region to a respective primary replica at each node of the primary group; and

initiating an operation to copy the contents of the one or more blocks from the initiator to an additional replica at an additional node of the secondary group.

15. The method as recited in claim 14 , further comprising:

receiving the replication request from an application at the source node;

generating a commit record indicative of a completion of the transaction prior to sending an acknowledgement of transaction completion to the application; and

making the commit record accessible to at least one node of the secondary group.

16. The method as recited in claim 15 , further comprising:

writing the commit record to a storage device accessible from the at least one node of the secondary group.

17. The method as recited in claim 15 , further comprising:

maintaining a secondary replication completion record associated with the commit record; and

updating the secondary replication completion record to indicate a completion of the operation to copy the contents of the one or more blocks at the additional node of the secondary group.

18. The method as recited in claim 14 , wherein the configurable replication policy includes a specification of a desired number of replication stages in a multi-stage replication hierarchy.

19. A computer readable storage medium comprising program instructions, wherein the instructions are computer executable to:

in accordance with a configurable replication policy,

identify a primary group of one or more nodes of a cluster to store one or more respective primary replicas of a specified source memory region of a source node of the cluster, wherein the primary group does not include the source node; and

identify a node of the primary group to serve as an initiator of replication to a secondary group of one or more nodes of the cluster, wherein the secondary group does not include the source node; and

in response to a replication request,

within an atomic transaction, copy contents of one or more blocks of the source memory region to a respective primary replica at each node of the primary group; and

initiate an operation to copy the contents of the one or more blocks from the initiator to an additional replica at an additional node of the secondary group.

20. The computer readable storage medium as recited in claim 19 , wherein the instructions are further executable to:

receive the replication request from an application at the source node;

generate a commit record indicative of a completion of the transaction prior to sending an acknowledgement of transaction completion to the application; and

make the commit record accessible to at least one node of the secondary group.

21. The computer readable storage medium as recited in claim 20 , wherein the instructions are further executable to:

write the commit record to a storage device accessible from the at least one node of the secondary group.

22. The computer readable storage medium as recited in claim 20 , wherein the instructions are further executable to:

maintain a secondary replication completion record associated with the commit record; and

update the secondary replication completion record to indicate a completion of the operation to copy the contents of the one or more blocks at the additional node of the secondary group.

23. The computer readable storage medium as recited in claim 19 , wherein the configurable replication policy includes a specification of a desired number of replication stages in a multi-stage replication hierarchy.

24. A device, comprising:

a processor; and

memory coupled to the processor,

wherein the memory stores program instructions computer-executable by the processor to implement a replication manager, wherein the replication manager is configured to:

in accordance with a configurable replication policy,

identify a primary group of one or more nodes of a cluster to store one or more respective primary replicas of a specified source memory region of a source node of the cluster wherein the primary group does not include the source node; and

identify a node of the primary group to serve as an initiator of replication to a secondary group of one or more nodes of the cluster, wherein the primary group does not include the source node; and

in response to a replication request,

within an atomic transaction, copy contents of one or more blocks of the source memory region to a respective primary replica at each node of the primary group; and

initiate an operation to copy the contents of the one or more blocks from the initiator to an additional replica at an additional node of the secondary group.

Assignments (15)
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 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED ON REEL 019872 FRAME 979. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNEE IS SYMANTEC OPERATING CORPORATION. Recorded Mar 5, 2012
From: VERITAS OPERATING CORPORATION
To: SYMANTEC OPERATING CORPORATION
Reel/Frame 027819/0462 →
CHANGE OF NAME Recorded Sep 26, 2007
From: VERITAS OPERATING CORPORATION
To: SYMANTEC CORPORATION
Reel/Frame 019872/0979 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 27, 2005
From: SHAH, VEERAL; PANCHBUDHE, ANKUR; KEKRE, ANAND
To: VERITAS OPERATING CORPORATION
Reel/Frame 016642/0779 →