Multi-node replication systems, devices and methods
First Claim
1. A method, comprising:
- assigning a replicated storage node of a replicated storage network to be an owner of a replicated data block in the replicated storage network, the owner of the replicated data block to issue write memory block commands to write data to the replicated data block, the network including at least two replicated storage nodes including the replicated storage node assigned to be the owner of the replicated data block, each of the replicated storage nodes to store the replicated data block, the replicated storage network including a plurality of replicated data blocks where each of the plurality of replicated data blocks is individually assigned to be owned by one of the at least two replicated storage nodes;
when a read memory block command is received to read the replicated data block, issuing a read_lock for the replicated data block, reading the replicated data block, and releasing the read_lock for the replicated data block; and
when a write memory block command is received to write new data to the replicated data block, issuing a write_lock for the replicated data block, writing the replicated data block and incrementing a version associated with the replicated data block, and releasing the write_lock for the replicated data block, wherein;
each of the plurality of replicated data blocks being identified by a unique block number;
each replicated storage node of the network is identified by a unique node number; and
assigning a replicated storage node to be the owner of the replicated data block includes dividing the block number of the replicated data block by the number of replicated storage nodes in the network and identifying a resulting remainder value; and
assigning a replicated storage node with a node number that corresponds to the remainder value to be the owner of the replicated data block.
3 Assignments
0 Petitions
Accused Products
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.
-
Citations
18 Claims
-
1. A method, comprising:
-
assigning a replicated storage node of a replicated storage network to be an owner of a replicated data block in the replicated storage network, the owner of the replicated data block to issue write memory block commands to write data to the replicated data block, the network including at least two replicated storage nodes including the replicated storage node assigned to be the owner of the replicated data block, each of the replicated storage nodes to store the replicated data block, the replicated storage network including a plurality of replicated data blocks where each of the plurality of replicated data blocks is individually assigned to be owned by one of the at least two replicated storage nodes; when a read memory block command is received to read the replicated data block, issuing a read_lock for the replicated data block, reading the replicated data block, and releasing the read_lock for the replicated data block; and when a write memory block command is received to write new data to the replicated data block, issuing a write_lock for the replicated data block, writing the replicated data block and incrementing a version associated with the replicated data block, and releasing the write_lock for the replicated data block, wherein; each of the plurality of replicated data blocks being identified by a unique block number; each replicated storage node of the network is identified by a unique node number; and assigning a replicated storage node to be the owner of the replicated data block includes dividing the block number of the replicated data block by the number of replicated storage nodes in the network and identifying a resulting remainder value; and
assigning a replicated storage node with a node number that corresponds to the remainder value to be the owner of the replicated data block. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A multi-node replicated storage network, comprising:
-
at least two network replicated storage nodes, each network replicated storage node including; a memory storage device, including replicated storage having a plurality of replicated data blocks stored therein and a version associated with each of the replicated data blocks; a network link interface; and a replication manager to communicate with other network replicated storage 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 replicated storage nodes are adapted to; determine node ownership for each of the plurality of replicated data blocks each replicated data block being individually owned by one of the replicated storage nodes, the replicated storage node that owns a given one of the replicated data blocks to issue write memory block commands for the given one of the replicated data blocks; and write a first replicated data block using a first process at an owner replicated storage node for the first replicated data block and using a second process at non-owner replicated storage nodes, wherein the first process at the owner replicated storage node includes; issuing a write_lock request for the first replicated data block to all replicated storage nodes in the network; copying old data for the first replicated data block to a memory location, and issuing a write command to non-owner replicated storage nodes in the network to write new data for the first replicated data block; waiting for the acknowledgment from each non-owner replicated storage node indicating that the non-owner replicated storage node has written the new data for the first replicated data block; writing the new data for the first replicated data block to the owner replicated storage node, and incrementing a version associated with the first replicated data block; issuing a write_unlock request for the first replicated data block to all replicated storage nodes on the network; and performing a write_unlock for the first replicated data block on the owner replicated storage node.
-
-
11. A multi-node replicated storage network, comprising:
-
at least two network replicated storage nodes, each network replicated storage node including; a memory storage device, including replicated storage having a plurality of replicated data blocks stored therein and a version associated with each of the replicated data blocks; a network link interface; and a replication manager to communicate with other network replicated storage 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 replicated storage nodes are adapted to; determine node ownership for each of the plurality of replicated data blocks each replicated data block being individually owned by one of the replicated storage nodes, the replicated storage node that owns a given one of the replicated data blocks to issue write memory block commands for the given one of the replicated data blocks; and write a first replicated data block using a first process at an owner replicated storage node for the first replicated data block and using a second process at non-owner replicated storage nodes, wherein the second process at non-owner replicated storage nodes includes; receiving the write_lock request for the first replicated data block from the owner replicated storage node for the first replicated data block; performing a write_lock for the first replicated data block, and copying old data for the first replicated data block into memory; writing the new data for the first replicated data block, and incrementing a version number associated with the first replicated data block; sending the acknowledgment to the owner replicated storage node; and performing a write_unlock for the first replicated data block.
-
-
12. A method, comprising:
-
assigning a replicated storage node of a replicated storage network to be an owner of a replicated data block in the replicated storage network, the owner of the replicated data block to issue write memory block commands to write data to the replicated data block, the network including at least two replicated storage nodes including the replicated storage node assigned to be the owner of the replicated data block, each of the replicated storage nodes to store the replicated data block, the replicated storage network including a plurality of replicated data blocks where each of the plurality of replicated data blocks is individually assigned to be owned by one of the at least two replicated storage nodes; when a read memory block command is received to read the replicated data block, issuing a read_lock for the replicated data block, reading the replicated data block, and releasing the read_lock for the replicated data block; and when a write memory block command is received to write new data to the replicated data block, issuing a write_lock for the replicated data block, writing the replicated data block and incrementing a version associated with the replicated data block, and releasing the write_lock for the replicated data block, wherein; assigning a replicated storage node to be the owner of the replicated data block includes mapping the plurality of replicated data blocks across all replicated storage nodes in the network, and mapping the plurality of replicated data blocks includes dividing a block number by a number of the replicated storage nodes in the network, and using a remainder value from dividing to assign the replicated storage node. - View Dependent Claims (13)
-
-
14. A multi-node replicated storage network, comprising:
-
at least two network replicated storage nodes, each network replicated storage node including; a memory storage device, including replicated storage having a plurality of replicated data blocks stored therein and a version associated with each of the replicated data blocks; a network link interface; and a replication manager to communicate with other network replicated storage 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 replicated storage nodes are adapted to; determine node ownership for replicated data blocks to issue write memory block commands, each replicated data block being owned by one replicated storage node; and write a first replicated data block using a first process at an owner replicated storage node for the first replicated data block and using a second process at non-owner replicated storage nodes, wherein the first process at the owner replicated storage node includes; issuing a write_lock request for the first replicated data block to all replicated storage nodes in the network; copying old data for the first replicated data block to a memory location, and issuing a write command to non-owner replicated storage nodes in the network to write new data for the first replicated data block; waiting for the acknowledgment from each non-owner replicated storage node indicating that the non-owner replicated storage node has written the new data for the first replicated data block; writing the new data for the first replicated data block to the owner replicated storage node; incrementing a version associated with the first replicated data block; issuing a write_unlock request for the first replicated data block to all replicated storage nodes on the network; and performing a write_unlock for the first replicated data block on the owner replicated storage node.
-
-
15. A multi-node replicated storage network, comprising:
-
at least two network replicated storage nodes, each network replicated storage node including; a memory storage device, including replicated storage having a plurality of replicated data blocks stored therein and a version associated with each of the replicated data blocks; a network link interface; and a replication manager to communicate with other network replicated storage 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 replicated storage nodes are adapted to; determine node ownership for replicated data blocks to issue write memory block commands, each replicated data block being owned by one replicated storage node; and write a first replicated data block using a first process at an owner replicated storage node for the first replicated data block and using a second process at non-owner replicated storage nodes, wherein the second process at non-owner replicated storage nodes includes; receiving the write_lock request for the first replicated data block from the owner replicated storage node for the first replicated data block; performing a write_lock for the first replicated data block, and copying old data for the first replicated data block into memory; writing the new data for the first replicated data block, and incrementing a version number associated with the first replicated data block; sending the acknowledgment to the owner replicated storage node; and performing a write_unlock for the first replicated data block.
-
-
16. A method, comprising:
-
assigning a replicated storage node of a replicated storage network to be an owner of a replicated data block to issue write memory block commands, the network including at least two replicated storage nodes including the replicated storage node assigned to be the owner, each of the replicated storage nodes to store the replicated data block; when a read memory block command is received to read the replicated data block, issuing a read_lock for the replicated data block, reading the replicated data block, and releasing the read_lock for the replicated data block; and when a write memory block command is received to write new data to the replicated data block, issuing a write_lock for the replicated data block, writing the replicated data block and incrementing a version associated with the replicated data block, and releasing the write_lock for the replicated data block, wherein the method further comprises; determining if a network error occurred prior to writing the replicated data block to the owner replicated storage node; writing the data block to the owner replicated storage node if a network error did not occur; and if a network error occurred, performing corrective action, wherein, if a network error occurred prior to writing the data block to the owner replicated storage node, the method further comprises; determining if the owner replicated storage node is active or passive after performing corrective action; and aborting the local write of the replicated data block to the owner replicated storage node if the owner replicated storage node is passive after performing corrective action, or writing the replicated data block to the owner replicated storage node if the owner replicated storage node is active after performing the corrective action. - View Dependent Claims (17, 18)
-
Specification