Seamless fault tolerance via block remapping and efficient reconciliation
First Claim
1. In a storage cluster having nodes that are arranged hierarchically, the nodes including a parent node and component nodes that are child nodes of the parent node, the component nodes including a first component node and a second component node, a method of allocating blocks of a logical storage space of a storage object by the parent node to one of the component nodes, comprising:
- maintaining a first allocation map for the parent node, wherein second and third allocation maps are also maintained for the first and second component nodes, respectively;
attempting to communicate with the first component node to execute a received first write operation on the first component node and update the second allocation map to indicate that a first-block of the logical storage space is a written block based on the received first write operation, wherein;
the received first write operation targets the first block of the logical storage space; and
the first allocation map indicates that the first block is allocated to the first component node; and
upon detecting that the first component node is offline so the received first write operation was not executed on the first component node, communicating with the second component node to execute a second write operation targeting the first block of the logical storage space, on the second component node, and update the third allocation map to indicate that the first block is a written block, wherein the second write operation is issued for writing data that was intended to be written by the received first write operation.
2 Assignments
0 Petitions
Accused Products
Abstract
In a storage cluster having nodes, blocks of a logical storage space of a storage object are allocated flexibly by a parent node to component nodes that are backed by physical storage. The method includes maintaining a first allocation map for the parent node, and second and third allocation maps for the first and second component nodes, respectively, executing a first write operation on the first component node and updating the second allocation map to indicate that the first block is a written block, and upon detecting that the first component node is offline, executing a second write operation that targets a second block of the logical storage space, which is allocated to the first component node, on the second component node and updating the third allocation map to indicate that the second block is a written block.
14 Citations
20 Claims
-
1. In a storage cluster having nodes that are arranged hierarchically, the nodes including a parent node and component nodes that are child nodes of the parent node, the component nodes including a first component node and a second component node, a method of allocating blocks of a logical storage space of a storage object by the parent node to one of the component nodes, comprising:
-
maintaining a first allocation map for the parent node, wherein second and third allocation maps are also maintained for the first and second component nodes, respectively; attempting to communicate with the first component node to execute a received first write operation on the first component node and update the second allocation map to indicate that a first-block of the logical storage space is a written block based on the received first write operation, wherein; the received first write operation targets the first block of the logical storage space; and the first allocation map indicates that the first block is allocated to the first component node; and upon detecting that the first component node is offline so the received first write operation was not executed on the first component node, communicating with the second component node to execute a second write operation targeting the first block of the logical storage space, on the second component node, and update the third allocation map to indicate that the first block is a written block, wherein the second write operation is issued for writing data that was intended to be written by the received first write operation. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A non-transitory computer readable medium comprising instructions that are executable in a computer system, which is a parent node in a storage cluster having a plurality of hierarchically arranged nodes, the nodes further including component nodes that are child nodes of the parent node, the component nodes including a first component node and a second component node, wherein the instructions when executed in the computer system cause the computer system to carry out a method of allocating blocks of a logical storage space of a storage object to one of the component nodes, said method including the steps of:
-
maintaining a first allocation map for the parent node, wherein second and third allocation maps are also maintained for the first and second component nodes, respectively; attempting to communicate with the first component node to execute a received first write operation on the first component node and update the second allocation map to indicate that a first-block of the logical storage space is a written block based on the received first write operation, wherein; the received first write operation targets the first block of the logical storage space; the first allocation map indicates that the first block is allocated to the first component node; upon detecting that the first component node is offline so the received first write operation was not executed on the first component node, communicating with the second component node to execute a second write operation targeting the first block of the logical storage space, on the second component node, and update the third allocation map to indicate that the first block is a written block, wherein the second write operation is issued for writing data that was intended to be written by the received first write operation. - View Dependent Claims (11, 12, 13, 14, 15, 16)
-
-
17. A storage cluster having nodes that are arranged hierarchically, the nodes comprising:
-
a parent node; and component nodes that are child nodes of the parent node, the component nodes including a first component node and a second component node, wherein the parent node is programmed to carry out a method of allocating blocks of a logical storage space of a storage object to one of the component nodes, said method including the steps of; maintaining a first allocation map for the parent node, wherein second and third allocation maps are also maintained for the first and second component nodes, respectively; attempting to communicate with the first component node to execute a received first write operation on the first component node and update the second allocation map to indicate that a first-block of the logical storage space is a written block based on the received first write operation, wherein; the received first write operation targets the first block of the logical storage space; the first allocation map indicates that the first block is allocated to the first component node; upon detecting that the first component node is offline so the received first write operation was not executed on the first component node, communicating with the second component node to execute a second write operation targeting the first block of the logical storage space, on the second component node, and update the third allocation map to indicate that the first block is a written block, wherein the second write operation is issued for writing data that was intended to be written by the received first write operation. - View Dependent Claims (18, 19, 20)
-
Specification