Flexible efficient runtime placement of data across multiple disks
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;
receiving a first write operation, wherein the first write operation targets a first block of the logical storage space and the first allocation map indicates that the first block is allocated to the first component node;
communicating with the first component node to execute the received first write operation on the first component node and update the second allocation map to indicate that the first block is a written block;
receiving a second write operation, wherein the second write operation targets a second block of the logical storage space and is received when the first allocation map does not indicate that the second block is allocated to any of the component nodes;
selecting the second component node for executing the received second write operation;
communicating with the second component node to execute the received second write operation on the second component node and update the third allocation map to indicate that the second block is a written block; and
upon completion of the second write operation on the second component node, updating the first allocation map to indicate that the second block is allocated to the second component node.
1 Assignment
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, selecting the second component node for executing a second write operation, and executing the second write operation on the second component node. Upon execution of the second write operation, the third allocation map is updated to indicate that the second block is a written block and the first allocation map is updated to indicate that the second block is allocated to the second component node.
1 Citation
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; receiving a first write operation, wherein the first write operation targets a first block of the logical storage space and the first allocation map indicates that the first block is allocated to the first component node; communicating with the first component node to execute the received first write operation on the first component node and update the second allocation map to indicate that the first block is a written block; receiving a second write operation, wherein the second write operation targets a second block of the logical storage space and is received when the first allocation map does not indicate that the second block is allocated to any of the component nodes; selecting the second component node for executing the received second write operation; communicating with the second component node to execute the received second write operation on the second component node and update the third allocation map to indicate that the second block is a written block; and upon completion of the second write operation on the second component node, updating the first allocation map to indicate that the second block is allocated to the second component node. - 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; receiving a first write operation, wherein the first write operation targets a first block of the logical storage space and the first allocation map indicates that the first block is allocated to the first component node; communicating with the first component node to execute the received first write operation on the first component node and update the second allocation map to indicate that the first block is a written block; receiving a second write operation, wherein the second write operation targets a second block of the logical storage space and is received when the first allocation map does not indicate that the second block is allocated to any of the component nodes; selecting the second component node for executing the received second write operation; communicating with the second component node to execute the received second write operation on the second component node and update the third allocation map to indicate that the second block is a written block; and upon completion of the second write operation on the second component node, updating the first allocation map to indicate that the second block is allocated to the second component node. - 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; receiving a first write operation, wherein the first write operation targets a first block of the logical storage space and the first allocation map indicates that the first block is allocated to the first component node; communicating with the first component node to execute the received first write operation on the first component node and update the second allocation map to indicate that the first block is a written block; receiving a second write operation, wherein the second write operation targets a second block of the logical storage space and is received when the first allocation map does not indicate that the second block is allocated to any of the component nodes; selecting the second component node for executing the received second write operation; communicating with the second component node to execute the received second write operation on the second component node and update the third allocation map to indicate that the second block is a written block; and upon completion of the second write operation on the second component node, updating the first allocation map to indicate that the second block is allocated to the second component node. - View Dependent Claims (18, 19, 20)
-
Specification