IP Library Granted Patent US 8,346,719
Granted Patent B2
US 8,346,719 · App. 11/973,198 · Granted Jan 1, 2013

Multi-node replication systems, devices and methods

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,346,719
App. No.
11/973,198
Granted
Jan 1, 2013
Kind
B2
Abstract

Replication techniques are presented. According to an embodiment of a method, a node of a replicated storage network is assigned to be an owner of a data block to issue write memory block commands. The network includes at least two nodes including the node assigned to be the owner. If a read memory block command is received to read the data block, a read_lock is issued for the data block, the data block is read, and the read_lock for the data block is released. If a write memory block command is received to write new data to the data block, a write_lock is issued for the data block, the data block is written and a version associated with the data block is incremented, and the write_lock for the data block is released.

Claims (93)

1. A method of replicating data in a storage network having at least two nodes, comprising:

assigning nodes of the network to be owners of data blocks to issue write memory block commands, each data block being owned by one node;

performing a local write of a first data block to an owner node for the first data block, including performing a first process at the owner node and performing a second process at the non-owner nodes in the network:

wherein the first process at the owner node includes:

issuing a write_lock request for the first data block to all nodes in the network;

copying old data for the first data block to a memory location, and issuing a write command to non-owner nodes in the network to write new data for the first data block;

waiting for the acknowledgment from each non-owner node indicating that the non-owner node has written the new data for the first data block;

writing the new data for the first data block to the owner node, and incrementing a version associated with the first data block;

issuing a write_unlock request for the first data block to all nodes on the network; and

performing a write_unlock for the first data block on the owner node; and

wherein the second process at non-owner nodes includes:

receiving the write_lock request for the first data block from the owner node for the first data block;

performing a write_lock for the first data block, and copying old data for the first data block into memory;

writing the new data for the first data block, and incrementing a version number associated with the first data block;

sending the acknowledgment to the owner node; and

performing a write_unlock for the first data block.

2. The method of claim 1 , wherein the first process at the owner node further comprises:

determining if a network error occurred prior to writing the new data for the first data block to the owner node;

writing the new data for the first data block to the owner node if a network error did not occur; and

if a network error occurred, performing corrective action.

3. The method of claim 2 , wherein, if a network error occurred prior to writing the new data for the first data block to the owner node, the first process at the owner node further comprises:

determining if the owner node is active or passive after performing corrective action;

aborting the local write of the first data block to the owner node if the owner node is passive after performing corrective action; and

writing the new data for the first data block to the owner node if the owner node is active after performing the corrective action.

4. The method of claim 3 , further comprising making the owner node passive after a network error if the owner node is part of a cluster of nodes that remain in communication with each other that is less than half of the nodes of a replication network before the network error.

5. The method of claim 3 , wherein determining if the owner node is active or passive includes an administrator determining if the owner node is active or passive.

6. The method of claim 1 , wherein the first process at the owner node further comprises:

determining if a network error occurred after writing the new data for the first data block to the owner node;

performing the write_unlock for the first data block on the owner node if a network error did not occur; and

if a network error occurred, performing corrective action.

7. The method of claim 6 , wherein, if a network error occurred after writing the new data for the first data block to the owner node, the first process at the owner node further comprises determining if the owner node is active or passive after performing corrective action;

if the owner node is passive after performing corrective action, writing saved old data back to the first data block and decrementing the version number associated with the first data block; and

if the owner node is active after performing the corrective action, performing the write_unlock for the first data block on the owner node.

8. The method of claim 1 , wherein the second process at the non-owner nodes further comprises:

determining if a network error occurred after writing the new data for the first data block; and

if a network error occurred, performing corrective action.

9. The method of claim 8 , wherein, if a network error occurred after writing the new data for the first data block, the second process at the non-owner nodes further comprises:

determining if the owner node is active or passive after performing corrective action; and

if the owner node is passive after performing corrective action, writing saved old data back to the first data block and decrementing the version number associated with the first data block.

10. The method of claim 1 , further comprising performing a third process to locally write a second data block to one of the non-owner nodes of the second data block, including:

issuing a write_lock for the second data block and copying old data for the second data block into local memory;

sending new data for the second data block to the owner node of the second data block;

if write request is received from the owner node for the second data block, writing the new data for the second data block, and incrementing a version number associated with the second data block, and performing a write_unlock for the second data block.

11. The method of claim 10 , wherein the third process further comprises determining if the owner node sent competing data to write the second data block before the write request is received from the owner node, and writing the competing data to the second data block if the owner node sent competing data before the write request is received from the owner node.

12. The method of claim 10 , wherein the third process further comprises:

determining if a network error occurred after writing the new data for the second data block; and

if a network error occurred, performing corrective action.

13. The method of claim 12 , wherein, if a network error occurred after writing the new data for the second data block, the third process further comprises:

determining if the one of the non-owner nodes is active or passive after performing corrective action;

if the one of the non-owner nodes is passive after performing corrective action, writing saved old data back to the first data block and decrementing the version number associated with the first data block; and

if the one of the non-owner nodes is active after performing corrective action, resending the second data block to a new owner of the second data block.

14. The method of claim 12 , wherein, if a network error occurred after writing the new data for the second data block, the third process further comprises performing a write unlock if a network failure did not occur.

15. A multi-node replicated storage network, comprising:

at least two network nodes, each network node including:

a memory storage device, including replicated storage having a plurality of data blocks stored therein and a version associated with each of the data blocks;

a network link interface; and

a replication manager to communicate with other network nodes using the network link interface, and the replication manager to communicate with the memory storage device;

wherein the replication managers for the at least two network nodes are adapted to:

determine node ownership for data blocks to issue write memory block commands, each data block being owned by one node; and

write a first data block using a first process at an owner node for the first data block and using a second process at non-owner nodes,

wherein the first process at the owner node for the first data block includes:

issuing a write_lock request for the first data block to all nodes in the network;

copying old data for the first data block to memory, and issuing a write command to non-owner nodes in the network to write new data for the first data block;

waiting for the acknowledgment from each non-owner node indicating that the non-owner node has written the new data for the first data block;

writing the new data for the first data block to the owner node, and incrementing a version associated with the first data block;

issuing a write_unlock request for the first data block to all nodes on the network; and

performing a write_unlock for the first data block on the owner node.

16. The network of claim 15 , wherein the second process at non-owner nodes for the first data block includes:

receiving the write_lock request for the first data block from the owner node for the first data block;

performing a write_lock for the first data block, and copying old data for the first data block into memory;

writing the new data for the first data block, and incrementing a version number associated with the first data block;

sending an acknowledgment to the owner node; and

performing a write_unlock for the first data block.

17. The network of claim 16 , wherein:

the first process at the owner node includes:

determining if a network error occurred prior to writing the new data for the first data block to the owner node;

writing the new data for the first data block to the owner node if a network error did not occur; and

if a network error occurred, performing corrective action; and

the second process at the non-owner nodes includes:

determining if a network error occurred after writing the new data for the first data block; and

if a network error occurred, performing corrective action.

18. A multi-node replicated storage network, comprising:

at least two network nodes, each network node including:

a memory storage device, including replicated storage having a plurality of data blocks stored therein and a version associated with each of the data blocks;

a network link interface; and

a replication manager to communicate with other network nodes using the network link interface, and the replication manager to communicate with the memory storage device;

wherein the replication managers for the at least two network nodes are adapted to:

determine node ownership for data blocks to issue write memory block commands, each data block being owned by one node; and

write a first data block using a first process at an owner node for the first data block and using a second process at non-owner nodes,

wherein the replication managers for the at least two network nodes are adapted to locally write a second data block to non-owner nodes of the second data block using a third process, including:

issuing a write_lock for the second data block and copying old data for the second data block into local memory;

sending new data for the second data block to the owner node of the second data block; and

if write request is received from the owner node for the second data block, writing the new data for the second data block, and incrementing a version number associated with the second data block, and performing a write_unlock for the second data block.

Assignments (16)
RELEASE OF SECURITY INTEREST REEL/FRAME 035656/0251 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: BORLAND SOFTWARE CORPORATION; ATTACHMATE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.)
Reel/Frame 062623/0009 →
RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0718 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: MICRO FOCUS LLC (F/K/A ENTIT SOFTWARE LLC); BORLAND SOFTWARE CORPORATION; MICRO FOCUS (US), INC.; SERENA SOFTWARE, INC; ATTACHMATE CORPORATION; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.); NETIQ CORPORATION
Reel/Frame 062746/0399 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT TYPO IN APPLICATION NUMBER 10708121 WHICH SHOULD BE 10708021 PREVIOUSLY RECORDED ON REEL 042388 FRAME 0386. ASSIGNOR(S) HEREBY CONFIRMS THE NOTICE OF SUCCESSION OF AGENCY. Recorded Jul 26, 2018
From: BANK OF AMERICA, N.A., AS PRIOR AGENT
To: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT
Reel/Frame 048793/0832 →
SECURITY INTEREST Recorded Oct 11, 2017
From: ENTIT SOFTWARE LLC; ATTACHMATE CORPORATION; BORLAND SOFTWARE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE, INC.; ARCSIGHT, LLC; SERENA SOFTWARE, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 044183/0718 →
NOTICE OF SUCCESSION OF AGENCY Recorded May 2, 2017
From: BANK OF AMERICA, N.A., AS PRIOR AGENT
To: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT
Reel/Frame 042388/0386 →
CHANGE OF NAME Recorded Sep 13, 2016
From: NOVELL, INC.
To: MICRO FOCUS SOFTWARE INC.
Reel/Frame 040020/0703 →
SECURITY INTEREST Recorded May 13, 2015
From: MICRO FOCUS (US), INC.; BORLAND SOFTWARE CORPORATION; ATTACHMATE CORPORATION; NETIQ CORPORATION; NOVELL, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 035656/0251 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 028252/0216 Recorded Nov 24, 2014
From: CREDIT SUISSE AG
To: NOVELL, INC.
Reel/Frame 034470/0680 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 028252/0316 Recorded Nov 24, 2014
From: CREDIT SUISSE AG
To: NOVELL, INC.
Reel/Frame 034469/0057 →
GRANT OF PATENT SECURITY INTEREST SECOND LIEN Recorded May 23, 2012
From: NOVELL, INC.
To: CREDIT SUISSE AG, AS COLLATERAL AGENT
Reel/Frame 028252/0316 →
GRANT OF PATENT SECURITY INTEREST FIRST LIEN Recorded May 23, 2012
From: NOVELL, INC.
To: CREDIT SUISSE AG, AS COLLATERAL AGENT
Reel/Frame 028252/0216 →
RELEASE OF SECURITY INTEREST IN PATENTS FIRST LIEN (RELEASES RF 026270/0001 AND 027289/0727) Recorded May 22, 2012
From: CREDIT SUISSE AG, AS COLLATERAL AGENT
To: NOVELL, INC.
Reel/Frame 028252/0077 →
RELEASE OF SECURITY IN PATENTS SECOND LIEN (RELEASES RF 026275/0018 AND 027290/0983) Recorded May 22, 2012
From: CREDIT SUISSE AG, AS COLLATERAL AGENT
To: NOVELL, INC.
Reel/Frame 028252/0154 →
GRANT OF PATENT SECURITY INTEREST (SECOND LIEN) Recorded May 13, 2011
From: NOVELL, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 026275/0018 →
GRANT OF PATENT SECURITY INTEREST Recorded May 12, 2011
From: NOVELL, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 026270/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 11, 2008
From: SUDHAKAR, GOSUKONDA NAGA VENKATA SATYA
To: NOVELL, INC.
Reel/Frame 021975/0443 →