Background movement of data between nodes in a storage cluster
First Claim
1. A method for moving data between nodes of a storage cluster, the method comprising:
- creating a positive exception table in a first node of the storage cluster in response to determining that one of the nodes of the storage cluster has failed, the positive exception table identifying areas of the first node that need to be migrated to a destination node in the storage cluster;
creating a negative exception table in the destination node that identifies areas of the destination node that need to be migrated from the first node to the destination node;
executing a background process for migrating data from the first node to the destination node in accordance with contents of the positive exception table, the background process;
copying the data to be migrated to a buffer;
writing the data from the buffer to an area on the destination node; and
following completion of the write, updating the positive exception table in the first node and the negative exception table in the destination node to indicate that the area of the destination node does not need to be migrated; and
during the execution of the background process;
receiving an input/output (I/O) operation at the first node, the I/O operation directed to an area of the destination node;
determining based upon the positive exception table whether the area of the destination node identified in the I/O operation needs to be migrated from the first node to the destination node; and
either forwarding the I/O operation to the destination node in response to determining that the area of the destination node identified in the I/O operation does not need to be migrated from the first node, or fielding the I/O operation at the first node in response to determining that the area of the destination node identified in the I/O operation needs to be migrated from the first node to the destination node.
4 Assignments
0 Petitions
Accused Products
Abstract
A method, system, apparatus, and computer-readable medium are described for the background movement of data between nodes in a storage cluster. According to one method, exception tables are generated that include data identifying the areas on each node that need to be migrated to another node and the areas on each node that are to be migrated from another node. The exception tables may be generated in response to the failure of a node in the storage cluster or in other circumstances. A background resynchronization thread utilizes the contents of the exception tables to migrate data between the nodes of the cluster, thereby synchronizing the data stored on the nodes. Input/output operations directed to an area that is to be migrated from another node are redirected to the other node in accordance with a timeout period associated with the input/output operations.
-
Citations
17 Claims
-
1. A method for moving data between nodes of a storage cluster, the method comprising:
-
creating a positive exception table in a first node of the storage cluster in response to determining that one of the nodes of the storage cluster has failed, the positive exception table identifying areas of the first node that need to be migrated to a destination node in the storage cluster; creating a negative exception table in the destination node that identifies areas of the destination node that need to be migrated from the first node to the destination node; executing a background process for migrating data from the first node to the destination node in accordance with contents of the positive exception table, the background process; copying the data to be migrated to a buffer; writing the data from the buffer to an area on the destination node; and following completion of the write, updating the positive exception table in the first node and the negative exception table in the destination node to indicate that the area of the destination node does not need to be migrated; and during the execution of the background process; receiving an input/output (I/O) operation at the first node, the I/O operation directed to an area of the destination node; determining based upon the positive exception table whether the area of the destination node identified in the I/O operation needs to be migrated from the first node to the destination node; and either forwarding the I/O operation to the destination node in response to determining that the area of the destination node identified in the I/O operation does not need to be migrated from the first node, or fielding the I/O operation at the first node in response to determining that the area of the destination node identified in the I/O operation needs to be migrated from the first node to the destination node. - View Dependent Claims (2, 5, 6, 7)
-
- 3. The method of clam 1, further comprising locking the area of the first node containing the data to be migrated.
-
8. A method for moving data between nodes of a storage cluster, the method comprising:
-
creating a positive exception table in a first node of the storage cluster in response to determining that one of the nodes of the storage cluster has failed, the positive exception table identifying areas of the first node that need to be migrated to a destination node in the storage cluster; creating a negative exception table in the destination node that identifies areas of the destination node that need to be migrated from the first node to the destination node; executing a background process for migrating data from the first node to the destination node in accordance with contents of the positive exception table, the background process; copying the data to be migrated to a buffer; writing the data from the buffer to an area on the destination node; and following completion of the write, updating the positive exception table in the first node and the negative exception table in the destination node to indicate that the area of the destination node does not need to be migrated; and during the execution of the background process; receiving an input/output (I/O) operation at the destination node, the I/O operation directed to an area of the destination node; determining based upon the negative exception table whether the area of the destination node identified in the I/O operation needs to be migrated from the first node to the destination node; and either forwarding the I/O operation to the first node in response to determining that the area of the destination node identified in the I/O operation needs to be migrated from the first node or fielding the I/O operation at the destination node in response to determining that the area of the destination node identified in the I/O operation does not need to be migrated from the first node. - View Dependent Claims (9, 10, 11, 12, 13)
-
-
14. A computer system comprising two or more storage server computers, each storage server computer operating as a storage node, and each storage node configured to generate an exception table in response to determining that one of the nodes of the storage cluster has failed, the exception table identifying storage areas for migration to a destination node in the computer system, and to execute a background process for migrating contents of the areas of the storage nodes to the destination node according to the contents of a source exception table,
wherein a background process is configured to: -
migrate data from the source storage node to a destination storage node according to the contents of the source exception table; copy the data to be migrated to a buffer in accordance with the source exception table; write the data from the buffer to an area on the destination storage node; and following completion of the write, update the source exception table and a destination exception table in the destination storage node to indicate that the area of the destination storage node does not need to be migrated, and wherein each storage node is further configured to; receive an input/output (I/O) operation directed to an area of the destination node during the execution of the background process; determine based upon the contents of the source exception table whether the area of the destination node identified in the I/O operation needs to be migrated from the storage node to the destination node; and either forward the I/O operation to the destination node in response to determining that the area of the destination node identified in the I/O operation does not need to be migrated from the storage node, or field the I/O operation at the storage node in response to determining that the area of the destination node identified in the I/O operation needs to be migrated from the storage node to the destination node. - View Dependent Claims (15, 16, 17)
-
Specification