Allocation apparatus and allocation method
The allocation device and method address capacity imbalances in storage systems by using dual data mapping tables to distribute chunks across nodes, optimizing storage capacity distribution and utilization.
Patent Information
- Application Number
- JP2024106436
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-07-01
- Publication Date
- 2026-01-16
AI Technical Summary
Conventional storage systems fail to address capacity imbalances between computer nodes, leading to surplus capacity on nodes with larger storage capacity due to uniform chunk group configuration based on node number.
An allocation device and method using first and second data mapping tables to distribute chunks across computer nodes, adjusting allocation processes based on capacity imbalances, ensuring each chunk is distributed to a different node, and employing a processor to manage these processes.
The solution effectively suppresses capacity imbalances among computer nodes, optimizing resource utilization and ensuring equitable distribution of storage capacity.
Smart Images

Figure 2026007011000001_ABST
Abstract
Description
[Technical Field]
[0001] The present invention relates to an allocation device and an allocation method for allocating capacity. [Background technology]
[0002] Patent Document 1 below discloses a storage system that moves parity between nodes and reconfigures stripes when the node configuration is changed. This storage system is configured to include multiple nodes, and the nodes are targets of data write and read requests, and stripes are formed using multiple pieces of data stored in different nodes and parity generated based on this multiple pieces of data, and redundancy is achieved by storing the parity of the stripe to which the data of the write request belongs in a node different from the multiple nodes that store the multiple pieces of data, and a management unit sends an allocation change request to the nodes to move the parity between nodes and reconfigure the stripes when the node configuration is changed. [Prior art documents] [Patent documents]
[0003] [Patent Document 1] Japanese Patent Publication No. 2020-107082 Summary of the Invention [Problem to be solved by the invention]
[0004] In the conventional technology described above, chunk groups are configured using only a data mapping table that is determined by the number of computer nodes, so chunk groups can only be created if the capacity is uniform between computer nodes. In other words, if there is a bias in the capacity (number of chunks) between computer nodes, the capacity of the node with the larger capacity will be largely surplus.
[0005] The present invention aims to suppress imbalances in capacity between computer nodes. [Means for solving the problem]
[0006] An allocation device according to one aspect of the invention disclosed in the present application is an allocation device having a processor that executes a program and a storage device that stores the program, wherein the storage device stores a first data mapping table and a second data mapping table, wherein the first data mapping table is defined so that for each first placement group consisting of first chunk groups, the number of which is two or more and one less than the number of a plurality of computer nodes, each chunk of the first chunk group is distributed to a different computer node, and the second data mapping table is defined so that for each second placement group consisting of second chunk groups, the number of which is the same as the number of the plurality of computer nodes, each chunk of the second chunk group is distributed to a different computer node, and the processor is configured to allocate the chunks between the plurality of computer nodes. a first allocation process, if the determination process determines that the imbalance is outside the acceptable range, using the first data mapping table to allocate the first chunk group to the unallocated capacity of a group of computer nodes that is one less than the number of the plurality of computer nodes so that each chunk of the first chunk group is distributed to a different computer node, for each of the first placement groups; and a second allocation process, if the determination process determines that the imbalance is within the acceptable range, using the second data mapping table to allocate the second chunk group to the unallocated capacity of the plurality of computer nodes so that each chunk of the second chunk group is distributed to a different computer node, for each of the second placement groups. [Effects of the Invention]
[0007] According to a representative embodiment of the present invention, it is possible to suppress imbalances in capacity among computer nodes. Problems, configurations, and effects other than those described above will become clear from the following description of the embodiment. [Brief explanation of the drawings]
[0008] [Figure 1]FIG. 1 is an explanatory diagram showing an example of the physical configuration of a storage system. [Figure 2] FIG. 2 is an explanatory diagram showing an example of information read from a drive to a memory. [Figure 3] FIG. 3 is an explanatory diagram illustrating an example of a node management table. [Figure 4] FIG. 4 is an explanatory diagram illustrating an example of the drive management table. [Figure 5] FIG. 5 is an explanatory diagram illustrating an example of a data mapping table. [Figure 6] FIG. 6 is an explanatory diagram illustrating an example of the first data mapping table. [Figure 7] FIG. 7 is an explanatory diagram illustrating an example of the second data mapping table. [Figure 8] FIG. 8 is an explanatory diagram illustrating an example of the chunk management table. [Figure 9] FIG. 9 is an explanatory diagram illustrating an example of a group mapping management table. [Figure 10] FIG. 10 is an explanatory diagram showing an example of a chunk group management table. [Figure 11] FIG. 11 is an explanatory diagram illustrating an example of a column-node correspondence management table. [Figure 12] FIG. 12 is an explanatory diagram showing a first data mapping example. [Figure 13] FIG. 13 is an explanatory diagram showing a data mapping example 2 (first time). [Figure 14] FIG. 14 is an explanatory diagram showing a data mapping example 2 (second time). [Figure 15] FIG. 15 is an explanatory diagram showing a data mapping example 2 (third time). [Figure 16] FIG. 16 is an explanatory diagram showing a data mapping example 2 (fourth time). [Figure 17] FIG. 17 is an explanatory diagram showing a data mapping example 2 (fifth time). [Figure 18] FIG. 18 is an explanatory diagram showing a data mapping example 2 (9th time). [Figure 19] FIG. 19 is an explanatory diagram showing a data mapping example 2 (13th time). [Figure 20] FIG. 20 is an explanatory diagram showing a data mapping example 2 (14th to 17th times). [Figure 21] FIG. 21 is a flowchart illustrating an example of a procedure for a capacity generation process. [Figure 22] FIG. 22 is a flowchart showing a detailed example of the processing procedure of the first allocation process (step S2106). [Figure 23] FIG. 23 is an explanatory diagram showing an example of generating entries GM1-1 to GM1-5. [Figure 24] FIG. 24 is an explanatory diagram showing an example of generating entries GM2-1 to GM2-5. [Figure 25] FIG. 25 is an explanatory diagram showing an example of generating entries GM3-1 to GM3-5. [Figure 26] FIG. 26 is an explanatory diagram showing an example of generating entries GM4-1 to GM4-5. [Figure 27] FIG. 27 is an explanatory diagram showing an example of generating entries GM5-1 to GM5-5. [Figure 28] FIG. 28 is an explanatory diagram showing an example of generating entries GM9-1 to GM9-5. [Figure 29] FIG. 29 is an explanatory diagram showing an example of generating entries GM13-1 to GM13-5. [Figure 30] FIG. 30 is an explanatory diagram showing entry creation example 1 of the chunk group management table. [Figure 31] FIG. 31 is a flowchart showing a detailed processing procedure example of the second chunk group generation processing (step S2107). [Figure 32] FIG. 32 is an explanatory diagram showing an entry creation example 2 of the chunk group management table shown in step S3103. [Figure 33] FIG. 33 is an explanatory diagram showing an entry creation example 2 of the chunk group management table. [Figure 34] FIG. 34 is an explanatory diagram showing an example of a configuration change (chunk rebalancing). [Figure 35] FIG. 35 is an explanatory diagram showing an example of identifying a placement group in configuration change 1. In FIG. [Figure 36] FIG. 36 is an explanatory diagram showing an example of a placement group change in configuration change 1. In FIG. [Figure 37] FIG. 37 is an explanatory diagram showing update example 1 of the column-node correspondence management table in configuration change 1. [Figure 38] FIG. 38 is an explanatory diagram showing an example of updating the group mapping management table in configuration change 1. [Figure 39] FIG. 39 is an explanatory diagram showing an example of a placement group change in configuration change 2. [Figure 40] FIG. 40 is an explanatory diagram showing an example of updating the group mapping management table in configuration change 2. [Figure 41] FIG. 41 is an explanatory diagram showing an example of updating the chunk group management table in configuration change 2. [Figure 42] FIG. 42 is an explanatory diagram showing an example of updating the chunk management table in configuration change 2. [Figure 43] FIG. 43 is an explanatory diagram showing an example of a placement group change in configuration change 2. [Figure 44] FIG. 44 is an explanatory diagram showing an example of updating the group mapping management table in configuration change 3. [Figure 45] FIG. 45 is an explanatory diagram showing an example of updating the chunk group management table in configuration change 3. [Figure 46] FIG. 46 is an explanatory diagram showing an example of updating the chunk management table in configuration change 3. [Figure 47] FIG. 47 is an explanatory diagram showing an example of deleting unnecessary placement groups in a node group configuration. [Figure 48] FIG. 48 is an explanatory diagram showing an example of deleting unnecessary placement groups in the group mapping table. [Figure 49] FIG. 49 is an explanatory diagram showing an example of deleting unnecessary placement groups in the chunk group management table. [Figure 50]FIG. 50 is an explanatory diagram showing an example of deleting unnecessary placement groups in the chunk management table. [Figure 51] FIG. 51 is a flowchart of an example of a capacity expansion process procedure according to the second embodiment. DETAILED DESCRIPTION OF THE INVENTION [Example]
[0009] <Figure 1 Storage system> 1 is an explanatory diagram showing an example of the physical configuration of a storage system. The storage system 100 has one or more computer domains 101. The computer domains 101 are communicatively connected to each other via a network 102 such as the Internet, a LAN (Local Area Network), or a WAN (Wide Area Network).
[0010] The computer domain 101 includes one or more computer nodes 110. The computer node 110 may have the configuration of a typical server computer. The computer node 110 includes, for example, a processor 111, a memory 112, one or more drives 113, and one or more ports 114. These components within the computer node 110 are connected via an internal bus 115.
[0011] The processor 111, for example, performs various types of processing. The memory 112 stores control information necessary to realize the functions of the computer node 110, and stores cache data. The memory 112 also stores, for example, programs executed by the processor 111. The memory 112 may be a volatile dynamic random access memory (DRAM), a non-volatile storage class memory (SCM), or any other storage device.
[0012] The drive 113 stores various data, programs, etc. The drive 113 may be a hard disk drive (HDD) or solid state drive (SSD) connected via SAS (Serial Attached SCSI) or SATA (Serial Advanced Technology Attachment), an SSD connected via NVMe (Non-Volatile Memory Express), or a non-volatile memory (SCM: Storage Class Memory).
[0013] The port 114 is connected to a network 120, and is communicatively connected to other computer nodes 110 within the computer domain 101. The network 120 is, for example, a LAN, but is not limited to a LAN.
[0014] The physical configuration of the storage system 100 is not limited to the above. For example, the networks 102 and 120 may be made redundant. Furthermore, for example, the network 120 may be separated into a management network and a storage network, the connection standard may be Ethernet (registered trademark), Infiniband, or wireless, and the connection topology is not limited to the configuration shown in FIG. 1.
[0015] <Figure 2 Information read from drive 113 to memory 112> 2 is an explanatory diagram showing an example of information read from the drive 113 to the memory 112. The memory 112 stores a control information table 200 and a management program 210.
[0016] The control information table 200 includes a node management table 201 , a drive management table 202 , a data mapping table 203 , a chunk management table 204 , a group mapping management table 205 , a chunk group management table 206 , and a column-node correspondence management table 207 .
[0017] The management program 210 includes a capacity creation program 211 and a configuration change program 212 .
[0018] <Figure 3 Node management table 201> FIG. 3 is an explanatory diagram showing an example of the node management table 201. The node management table 201 is a table for managing the computer nodes 110. The node management table 201 is a pre-set table. The node management table 201 has the following fields: a node index 301 and a node name 302. The node index 301 is identification information that uniquely identifies the computer node 110. The node name 302 is the name of the computer node 110, "Node NX" (X is any uppercase alphabet that corresponds to the computer node 110). Hereinafter, the computer node 110 may be referred to as the node name 302.
[0019] <Figure 4 Drive Management Table 202> 4 is an explanatory diagram showing an example of the drive management table 202. The drive management table 202 is a table for managing the drives 113. The drive management table 202 is a table that is set in advance. The drive management table 202 has a drive index 401, a capacity 402, and a node index 301 as fields.
[0020] The drive index 401 is identification information that uniquely identifies the drive 113 that the node NX has. The drive 113 identified by the drive index 401 is expressed as drive DX# (# is a number). The capacity 402 is the size that the drive DX# can store data.
[0021] <Figure 5 Data mapping table 203> 5 is an explanatory diagram showing an example of the data mapping table 203. The data mapping table 203 is a table that defines the mapping of placement groups to computer nodes 110. The data mapping table 203 is a table that is set in advance. A placement group G# (# is a number) is a collection of unit physical areas called chunks within a drive 113. A placement group G# is configured across one or more computer nodes 110.
[0022] The data mapping table 203 is a table optimized according to the number of computer nodes 110 when forming a placement group G#, enabling distributed placement of the placement group G#. Therefore, in the data mapping table 203, capacity is formed in data mapping table units. In the redundant configuration mD+nP, the data mapping table unit is n+m chunks x number of computer nodes. m and n are integers greater than or equal to 1.
[0023] The redundancy configuration mD+nP makes data redundant by combining the number of data elements m that make up the data and the number of parities n for that data. Specifically, for example, the redundancy configuration mD+nP means that data is made redundant in placement group G# with a ratio of m:n between data elements and parity. The data mapping table 203 is hard-coded with a redundancy configuration of 2D+1P.
[0024] The data mapping table 203 has the following fields: a data mapping index 501, a group size 502, a map size 503, an arrangement index 504, and an arrangement position 505. The data mapping index 501 is identification information that uniquely identifies the data mapping of the arrangement group G#. Hereinafter, the entries of the data mapping table 203 may be referred to as data mappings DM1, DM2, ..., DM11 using the data mapping index 501. Furthermore, when there is no need to distinguish between the data mappings DM1, DM2, ..., DM11, they will be referred to as data mappings DM.
[0025] The group size 502 is the size of the placement group G#, that is, the number of computer nodes 110 spanned by the placement group G#, that is, m+n. In the case of a redundant configuration 2D+1P, redundancy is achieved with m+n=3 computer nodes 110, so the group size 502 of each data mapping DM1 to DM11 is "3".
[0026] The map size 503 is the size to which the placement group G# is mapped, that is, the number of columns. In this example, the placement group G# is distributed across columns Col1 to Col5, so the map size 503 is "5".
[0027] The placement index 504 is identification information that uniquely identifies the placement group G#. The placement position 505 is the column position where the placement group G# is placed. Each of the columns Col1 to Col5 corresponds to a computer node 110. When there is no need to distinguish between Col1 to Col5, they are referred to as Col.
[0028] <Figure 6 First data mapping table> 6 is an explanatory diagram showing an example of the first data mapping table. The first data mapping table 600 is made up of data mappings DM1 to DM5 of the data mapping table 203. In the first data mapping table 600, the cells written with "G1" to "G5" respectively indicate chunks.
[0029] Focusing on placement group G1, the components of placement group G1 (two data elements and one parity) are assigned to the computer nodes 110 corresponding to Col1, Col2, and Col3, respectively. Therefore, the placement position 505 of placement group G1 is {Col1, Col2, Col3}. This means that placement group G1 is composed of "G1" in Col1, "G1" in Col2, and "G1" in Col3. The same is true for placement groups G2 to G5, but the placement positions 505 are different.
[0030] <Figure 7 Second data mapping table> 7 is an explanatory diagram showing an example of the second data mapping table. The second data mapping table 700 is made up of data mappings DM6 to DM11 of the data mapping table 203. In the second data mapping table 700, the cells written as "G6" to "G11" respectively indicate chunks.
[0031] Focusing on placement group G7, the components of placement group G7 (two data elements and one parity) are assigned to the computer nodes 110 corresponding to Col1, Col2, and Col6, respectively. Therefore, the placement position 505 of placement group G7 is {Col1, Col2, Col6}. The same is true for placement groups G7 to G11, but the placement positions 505 are different.
[0032] <Figure 8 Chunk management table 204> 8 is an explanatory diagram showing an example of the chunk management table 204. The chunk management table 204 is a table for managing chunks. The chunk management table 204 is created by executing the capacity creation program 211. The chunk management table 204 has the following fields: chunk index 801, chunk size 802, drive index 401, and allocated flag 803.
[0033] The chunk index 801 is identification information that uniquely identifies a chunk created on drive DX#. The chunk identified by the chunk index 801 is expressed as chunk CK#(DX#). The chunk size 802 is the size (capacity) of the chunk CK#(DX#). When there is no need to distinguish between chunk CK#(DX#), it is expressed as chunk CK(DX). The allocated flag 803 is a flag that indicates whether the chunk CK#(DX#) is allocated or not. "1" indicates allocated, and "0" indicates unallocated. The default is "0".
[0034] <Figure 9 Group mapping management table 205> 9 is an explanatory diagram showing an example of the group mapping management table 205. The group mapping management table 205 is a table for managing group mapping. A group mapping is a correspondence relationship between a data mapping index 501 and a column node mapping index 902. The group mapping management table 205 is created by executing the capacity generation program 211.
[0035] The group mapping management table 205 has, as fields, a group mapping index 901, a data mapping index 501, and a column node mapping index 902. The group mapping index 901 is identification information that uniquely identifies a group mapping GM#. The column node mapping index 902 is identification information (column node mapping) that uniquely identifies the correspondence between a column Col and a node NX.
[0036] The group mapping identified by the group mapping index 901 is referred to as a group mapping GM#. When there is no need to distinguish between group mappings GM#, they are referred to as group mapping GM. Also, an entry identified by a group mapping GM# may be referred to as an entry GM#.
[0037] A column node mapping identified by the column node mapping index 902 is referred to as a column node mapping CNM#. When there is no need to distinguish between column node mappings CNM#, it is referred to as a column node mapping CNM. Also, an entry identified by a column node mapping CNM# may be referred to as an entry CNM#.
[0038] <Figure 10 Chunk group management table 206> 10 is an explanatory diagram showing an example of the chunk group management table 206. The chunk group management table 206 is a table for managing chunk groups. A chunk group is a collection of chunks CK (DX) created in the same or different drives 113. The chunk group management table 206 is created by executing the capacity creation program 211.
[0039] The chunk group management table 206 has the following fields: chunk group index 1000, group mapping index 901, and chunk index 801. The chunk group index 1000 is identification information that uniquely identifies a chunk group. The chunk group identified by the chunk group index 1000 is referred to as chunk group CG#. When chunk groups CG1 to CG19 are not to be distinguished, they are referred to as chunk group CG. Also, an entry identified by chunk group CG# may be referred to as entry CG#.
[0040] The chunk group index 1000 is associated with the group mapping index 901, and therefore also with the data mapping index 501 and the column node mapping index 902 in FIG.
[0041] Furthermore, the chunk group index 1000 is also associated with the chunk index 801, so it is possible to identify which chunks CK (DX) are included in the chunk group CG.
[0042] <Figure 11 Column-node correspondence management table 207> 11 is an explanatory diagram showing an example of the column-node correspondence management table 207. The column-node correspondence management table 207 is a table that manages the correspondence between the column Col and the node NX. The column-node correspondence management table 207 is created by executing the capacity generation program 211.
[0043] The column node correspondence management table 207 has as its fields a column node mapping index 902 and Col1 node index 1101 to Col6 node index 1106. The Col1 node index 1101 to Col6 node index 1106 each identify a node NX corresponding to the column Col. In this example, a maximum of six computer nodes 110 are used, and therefore the number of columns is also six. Therefore, the Col1 node index 1101 to Col6 node index 1106 change depending on the number of computer nodes 110 used.
[0044] <Figure 12 Data mapping example 1> 12 is an explanatory diagram showing data mapping example 1. Data mapping example 1 shows an example in which a placement group GX is assigned to a plurality of computer nodes 110 (nodes NA to NF) with varying capacities, using a second data mapping table 700.
[0045] The node group configuration 1200 shows the capacity of each of the nodes NA to NF. Each cell of the nodes NA to NF, shown as a rectangle, shows the capacity of three chunks, for example. In this example, the number of cells of the node NB is three more than the number of cells of the nodes NA, ND to NF, and the number of cells of the node NC is two more than the number of cells of the nodes NA, ND to NF.
[0046] The second data mapping table 700 is mapped to each cell in the cell rows 1201 of the nodes NA to NF in the node group configuration 1200. In this case, three cells 1202 of the node NB and two cells 1203 of the node NC are not mapped to the second data mapping table 700.
[0047] <Figures 13 to 19 Data mapping example 2> Next, an example will be shown in which the first data mapping table 600 is used to refer to the column-node correspondence management table 207 and allocate a placement group GX to a node group configuration 1200. Note that when mapping, the column-node mapping CNM is referred to, and the column-node mapping CNM used for the reference is selected according to priority criteria, which will be described later.
[0048] [Figure 13 Data mapping example 2 (1st time)] 13 is an explanatory diagram showing data mapping example 2 (first time). In the first data mapping, placement groups G1 to G5 defined in the first data mapping table 600 are mapped to nodes NA to NE in accordance with column-node mapping CNM1.
[0049] Specifically, for example, each component {G1, G2, G5} of placement groups G1, G2, G5 that make up column Col1 is mapped to node NA, each component {G1, G2, G3} of placement groups G1 to G3 that make up column Col2 is mapped to node NB, each component {G1, G3, G4} of placement groups G1, G3, G4 that make up column Col3 is mapped to node NC, each component {G3, G4, G5} of placement groups G3 to G5 that make up column Col4 is mapped to node ND, and each component {G2, G4, G5} of placement groups G2, G4, G5 that make up column Col5 is mapped to node NE.
[0050] [Figure 14 Data mapping example 2 (second time)] 14 is an explanatory diagram showing data mapping example 2 (second time). In the second data mapping, placement groups G1 to G5 defined in the first data mapping table 600 are mapped to nodes NA to ND and NF in accordance with column-node mapping CNM2.
[0051] Specifically, for example, each component {G1, G2, G5} of placement groups G1, G2, G5 that make up column Col1 is mapped to node NA, each component {G1, G2, G3} of placement groups G1 to G3 that make up column Col2 is mapped to node NB, each component {G1, G3, G4} of placement groups G1, G3, G4 that make up column Col3 is mapped to node NC, each component {G3, G4, G5} of placement groups G3 to G5 that make up column Col4 is mapped to node ND, and each component {G2, G4, G5} of placement groups G2, G4, G5 that make up column Col5 is mapped to node NF.
[0052] [Figure 15 Data mapping example 2 (3rd time)] 15 is an explanatory diagram showing data mapping example 2 (third time). In the third data mapping, placement groups G1 to G5 defined in the first data mapping table 600 are mapped to nodes NA to NC, NE, and NF in accordance with column-node mapping CNM3.
[0053] Specifically, for example, each component {G1, G2, G5} of placement groups G1, G2, G5 that make up column Col1 is mapped to node NA, each component {G1, G2, G3} of placement groups G1 to G3 that make up column Col2 is mapped to node NB, each component {G1, G3, G4} of placement groups G1, G3, G4 that make up column Col3 is mapped to node NC, each component {G3, G4, G5} of placement groups G3 to G5 that make up column Col4 is mapped to node NE, and each component {G2, G4, G5} of placement groups G2, G4, G5 that make up column Col5 is mapped to node NF.
[0054] [Figure 16 Data mapping example 2 (4th time)] 16 is an explanatory diagram showing data mapping example 2 (fourth time). In the fourth data mapping, placement groups G1 to G5 defined in the first data mapping table 600 are mapped to nodes NB to NF in accordance with column-node mapping CNM4.
[0055] Specifically, for example, each component {G1, G2, G5} of placement groups G1, G2, G5 that make up column Col1 is mapped to node NB, each component {G1, G2, G3} of placement groups G1 to G3 that make up column Col2 is mapped to node NC, each component {G1, G3, G4} of placement groups G1, G3, G4 that make up column Col3 is mapped to node ND, each component {G3, G4, G5} of placement groups G3 to G5 that make up column Col4 is mapped to node NE, and each component {G2, G4, G5} of placement groups G2, G4, G5 that make up column Col5 is mapped to node NF.
[0056] [Figure 17 Data mapping example 2 (5th time)] 17 is an explanatory diagram showing data mapping example 2 (fifth time). In the fifth time data mapping, placement groups G1 to G5 defined in the first data mapping table 600 are mapped to nodes NA to NE in accordance with column-node mapping CNM5.
[0057] Specifically, for example, each component {G1, G2, G5} of placement groups G1, G2, G5 that make up column Col1 is mapped to node NA, each component {G1, G2, G3} of placement groups G1 to G3 that make up column Col2 is mapped to node NB, each component {G1, G3, G4} of placement groups G1, G3, G4 that make up column Col3 is mapped to node NC, each component {G3, G4, G5} of placement groups G3 to G5 that make up column Col4 is mapped to node ND, and each component {G2, G4, G5} of placement groups G2, G4, G5 that make up column Col5 is mapped to node NE.
[0058] [Data mapping example 2 (6th to 8th times) not shown] Although not shown, in data mapping example 2 (sixth time), similar to data mapping example 2 (second time) shown in FIG. 14, placement groups G1 to G5 defined in the first data mapping table 600 are mapped to nodes NA to ND, NF according to column-node mapping CNM6.
[0059] In addition, in data mapping example 2 (seventh time), similar to data mapping example 2 (third time) shown in FIG. 15, placement groups G1 to G5 defined in the first data mapping table 600 are mapped to nodes NA to NC, NE, and NF according to column-node mapping CNM7.
[0060] In addition, in data mapping example 2 (8th time), similar to data mapping example 2 (4th time) shown in FIG. 16, placement groups G1 to G5 defined in the first data mapping table 600 are mapped to nodes NB to NF according to column-node mapping CNM8.
[0061] [Figure 18 Data mapping example 2 (9th time)] 18 is an explanatory diagram showing data mapping example 2 (9th time). In the 9th time data mapping, placement groups G1 to G5 defined in the first data mapping table 600 are mapped to nodes NA, NB, and ND to NF in accordance with column-node mapping CNM9.
[0062] Specifically, for example, each component {G1, G2, G5} of placement groups G1, G2, G5 that make up column Col1 is mapped to node NA, each component {G1, G2, G3} of placement groups G1 to G3 that make up column Col2 is mapped to node NB, each component {G1, G3, G4} of placement groups G1, G3, G4 that make up column Col3 is mapped to node ND, each component {G3, G4, G5} of placement groups G3 to G5 that make up column Col4 is mapped to node NE, and each component {G2, G4, G5} of placement groups G2, G4, G5 that make up column Col5 is mapped to node NF.
[0063] [Data mapping example 2 (10th to 12th times) not shown] Although not shown, in data mapping example 2 (10th time), similar to data mapping example 2 (1st time) shown in FIG. 13, placement groups G1 to G5 defined in the first data mapping table 600 are mapped to nodes NA to NE according to the column-node mapping CNM10.
[0064] Also, in data mapping example 2 (11th time), similar to data mapping example 2 (second time) shown in FIG. 14, placement groups G1 to G5 defined in the first data mapping table 600 are mapped to nodes NA to ND and NF according to column-node mapping CNM11.
[0065] In addition, in data mapping example 2 (12th time), similar to data mapping example 2 (3rd time) shown in FIG. 15, placement groups G1 to G5 defined in the first data mapping table 600 are mapped to nodes NA to NC, NE, and NF according to column-node mapping CNM12.
[0066] [Figure 19 Data mapping example 2 (13th time)] 19 is an explanatory diagram showing data mapping example 2 (13th time). In the 13th data mapping, similar to data mapping example 2 (4th time) shown in FIG. 16, placement groups G1 to G5 defined in the first data mapping table 600 are mapped to nodes NB to NF in accordance with column-node mapping CNM13.
[0067] In this way, the unallocated capacity of nodes NA to NF is equalized by the 13th data mapping. That is, an unallocated capacity 1900 consisting of four cell rows 1201 remains. In the unallocated capacity 1900, four cells remain for each column Col.
[0068] [Figure 20 Data mapping example 2 (14th to 17th)] 20 is an explanatory diagram showing data mapping example 2 (14th to 17th times). From the 13th data mapping onwards, as in data mapping example 1 shown in FIG. 12, the second data mapping table 700 is used to allocate placement group GX to the unallocated capacity 1900 of the node group configuration 1200.
[0069] That is, in each of the 14th to 17th times, placement groups G6 to G11 defined in the second data mapping table 700 are mapped to nodes NA to NF in accordance with column-node mappings CNM14 to CNM17.
[0070] <Figure 21 Capacity generation process> Fig. 21 is a flowchart showing an example of a capacity generation process procedure. The capacity generation process shown in Fig. 21 is executed, for example, by one of the computer nodes 110 in Fig. 1. Note that the computer node 110 executing the capacity generation process shown in Fig. 21 may limit the allocation destinations to only computer nodes 110 within the computer domain 101 to which the computer node 110 belongs, or may use computer nodes 110 outside the computer domain 101 to which the computer node 110 belongs as allocation destinations. In Fig. 21, one of the computer nodes 110 in Fig. 1 is described as the execution subject, but the computer node 110 that is the execution subject may be included in the allocation destinations or may be excluded from the allocation destinations.
[0071] Furthermore, if the computer node 110 is communicatively connected via the networks 102 and 120, a computer other than the computer node 110 (not shown, having a control information table 200 and a management program 210) may execute the capacity generation process shown in Figure 21 to control the computer node 110 to which it is assigned.
[0072] (Step S2101) The computer node 110 performs initial settings according to user operation and proceeds to step S2102. The initial settings include specifying the computer node 110 and drive 113 to which the capacity will be allocated, setting the chunk size 802, and setting the priority criteria for the allocation destination node NX.
[0073] By specifying the computer node 110 and the drive 113, the specified drive 113 becomes available for use as an allocation destination. In this example, nodes NA to NF are specified as the allocation destination computer nodes 110, and at least some of the drives 113 in nodes NA to NF are specified as the allocation destination drives 113. By setting the chunk size 802, step S2102 is executed with the chunk size 802 that has been set.
[0074] By setting the priority criteria for the destination node NX, the destination node NX is selected according to the set priority criteria. If the selected combination of destination nodes NX is new, it is generated as an entry in the column-node correspondence management table 207. The priority criteria can be, for example, Priority Criteria 1: descending order of the number of remaining unassigned chunks for each node NX (blank cells in FIG. 13 correspond to five chunks), Priority Criteria 2: descending order of the number of selections for each node NX up to now, or Priority Criteria 3: ascending order of the node index 301 of the node NX.
[0075] More specifically, there are five priority criteria: a combination of priority criteria 1 and priority criteria 3 (if priority criteria 1 does not determine which is better, priority criteria 3 is used), a combination of priority criteria 2 and priority criteria 3 (if priority criteria 2 does not determine which is better, priority criteria 3 is used), a combination of priority criteria 1, priority criteria 2 and priority criteria 3 (if priority criteria 1 does not determine which is better, priority criteria 2 is used, and if that still does not determine which is better, priority criteria 3 is used), a combination of priority criteria 2, priority criteria 1 and priority criteria 3 (if priority criteria 2 does not determine which is better, priority criteria 1 is used, and if that still does not determine which is better, priority criteria 3 is used), and priority criteria 3 only. Note that priority criteria 1 to 3 are just examples, and priorities other than priority criteria 1 to 3 can also be set.
[0076] (Step S2102) The computer node 110 divides the capacity 402 of each drive 113 specified in step S2102 by the chunk size 802 set in step S2102, and proceeds to step S2103. This division generates chunks CK (DX) in the drives 113. This also generates each entry in the chunk management table 204.
[0077] (Step S2103) The computer node 110 counts the number of chunks for each computer node 110 to which it is assigned, and proceeds to step S2104. Specifically, for example, the computer node 110 counts the number of chunks CK(DA) to CK(DF) that each of the nodes NA to NF holds on the drive 113.
[0078] (Step S2104) The computer node 110 calculates an evaluation value (= number of chunks / (m+n)) for determining bias for each computer node 110 to be assigned, and proceeds to step S2105. In this example, 2D1P is used, so m+n=3.
[0079] (Step S2105) The computer node 110 determines whether there is a bias in the unallocated remaining capacity among the computer nodes 110 to be allocated. Specifically, for example, if the evaluation values calculated for each computer node 110 to be allocated in step S2104 all match, the computer node 110 determines that there is no bias in the unallocated remaining capacity among the computer nodes 110 to be allocated, and proceeds to step S2107. On the other hand, if the evaluation values calculated for each computer node 110 to be allocated in step S2104 do not all match (if there is even one different evaluation value), the computer node 110 determines that there is a bias in the unallocated remaining capacity among the computer nodes 110 to be allocated, and proceeds to step S2106.
[0080] In step S2105, the computer node 110 determines that there is no bias in the unallocated remaining capacity among the computer nodes 110 to be allocated if the evaluation values calculated for each computer node 110 to be allocated in step S2104 all match.However, it may also be determined that there is no bias in the unallocated remaining capacity among the computer nodes 110 to be allocated if the difference between the maximum and minimum evaluation values calculated for each computer node 110 to be allocated is within an acceptable range.
[0081] (Step S2106) The computer node 110 executes the first allocation process and returns to step S2105. The first allocation process is the allocation process shown in data mapping example 2 of FIGS.
[0082] (Step S2107) The computer node 110 executes the second allocation process and ends the series of processes. The second allocation process is the allocation process shown in the data mapping example 2 of FIG. 20, and will be described later with reference to FIG.
[0083] <FIG. 22 First allocation process (step S2106)> FIG. 22 is a flowchart showing a detailed example of the processing procedure of the first allocation process (step S2106).
[0084] (Step S2201) If the first data mapping table 600 has not been read, the computer node 110 reads it and proceeds to step S2202.
[0085] (Step S2202) The computer node 110 selects the number of computer nodes 110 to be assigned to (the number of computer nodes to be assigned to minus 1) in accordance with the priority criteria, and proceeds to step S2203. In this example, the computer nodes to be assigned to are nodes NA to NF, so the number of computer nodes to be assigned to is 6. Therefore, the computer node 110 selects five computer nodes 110 in accordance with the priority criteria.
[0086] (Step S2203) The computer node 110 determines whether the selection result of step S2102 is in the column-node correspondence management table 207. If the selection result of step S2102 is in the column-node correspondence management table 207 (step S2103: Yes), the computer node 110 proceeds to step S2105. If the selection result of step S2102 is not in the column-node correspondence management table 207 (step S2103: No), the computer node 110 proceeds to step S2104.
[0087] (Step S2204) The computer node 110 creates an entry CNM# that reflects the selection result in the column-node correspondence management table 207, and proceeds to step S2205. For example, in Figure 13, if the selection result is nodes NA to NE, the computer node 110 creates the entry CNM1 by assigning "CNM1" as the column-node mapping index 902 in the column-node correspondence management table 207, and writing NA to NE into the Col1 node index 1101 to Col5 node index 1105, respectively. A specific example of step S2204 will be described later with reference to Figure 23.
[0088] (Step S2205) The computer node 110 generates an entry GM# in the group mapping management table 205 based on the first data mapping table 600 and the column-node correspondence management table 207, and proceeds to step S2206. The data mapping DM# selected from the first data mapping table 600 is written into the entry GM#. Also, the column-node mapping CNM# corresponding to the selection result of the column-node correspondence management table 207 is written into the entry GM#.
[0089] 13, if the selection results in nodes NA to NE, the computer node 110 assigns "GM1-1" to "GM1-5" as the group mapping index 901 in the group mapping management table 205. The computer node 110 selects data mappings DM1 to DM5 from the first data mapping table 600, and writes "DM1" to "DM5" into the data mapping index 501 of entries GM1-1 to GM1-5.
[0090] The computer node 110 extracts the column node mapping CNM1 identified by the selection result: nodes NA to NE from the column node correspondence management table 207, and writes "CNM1" to the column node mapping index 902 of entries GM1-1 to GM1-5. As a result, entry GM1 is generated. A specific example of step S2205 will be described with reference to FIGS. 24 to 29.
[0091] (Step S2206) The computer node 110 generates an entry CG# in the chunk group management table 206 based on the group mapping management table 205 and the chunk management table 204. Specifically, for example, in FIG. 13, if the selection result is nodes NA to NE, the computer node 110 assigns "CG1-1" as the chunk group index 1000 in the chunk group management table 206.
[0092] The computer node 110 writes "GM1-1", which is the group mapping index 901 of the entry GM1-1 newly created in step S2205, to the group mapping index 901 of the entry CG1-1 in the chunk group management table 206.
[0093] The computer node 110 refers to the allocated flag 803 in the chunk management table 204, selects a chunk CK# (DX#) in the drive DX having index X of the node NX to which it is to be allocated, for which the allocated flag 803 is "0", indicating that it is unallocated, and writes this to the chunk index 801 of entry CG1-1 in the chunk group management table 206. The chunk CK(DX) to be selected is a chunk CK(DX) for which the allocated flag 803 is "0", and when selected in step S2206, the allocated flag 803 of that chunk CK(DX) is updated to "1". A specific example of step S2206 will be described in Figure 30.
[0094] <FIGS. 23 to 29: Example 1 of creating entries in the group mapping management table 205> Next, an entry generation example 1 of the group mapping management table 205 shown in step S2205 will be described with reference to FIGS.
[0095] [Figure 23 Example of generating entries GM1-1 to GM1-5] 23 is an explanatory diagram showing an example of generating entries GM1-1 to GM1-5. In step S2205, in the first data mapping shown in FIG. 13, "GM1-1" to "GM1-5" are assigned as group mapping indexes 901, and "DM1" to "DM5" are associated as data mapping indexes 501.
[0096] 13, allocation to the node group configuration 1200 is performed in accordance with the entry CNM1, which is the selection result, and therefore "CNM1" is associated as the column node mapping index 902. In this way, the entry GM1 is generated.
[0097] [Figure 24 Example of generating entries GM2-1 to GM2-5] 24 is an explanatory diagram showing an example of generating entries GM2-1 to GM2-5. In the second data mapping shown in FIG. 14, "GM2-1" to "GM2-5" are assigned as group mapping indexes 901, and "DM1" to "DM5" are associated as data mapping indexes 501.
[0098] 14, allocation to the node group configuration 1200 is performed in accordance with the entry CNM2, which is the selection result, and therefore "CNM2" is associated as the column node mapping index 902. In this way, entries GM2-1 to GM2-5 are generated.
[0099] [Figure 25 Example of generating entries GM3-1 to GM3-5] 25 is an explanatory diagram showing an example of generating entries GM3-1 to GM3-5. In the third data mapping shown in FIG. 15, "GM3-1 to GM3-5" are assigned as group mapping indexes 901, and "DM1" to "DM5" are associated as data mapping indexes 501.
[0100] 15, allocation to the node group configuration 1200 is performed in accordance with the entry CNM3, which is the selection result, and therefore "CNM3" is associated as the column node mapping index 902. In this way, entries GM3-1 to GM3-5 are generated.
[0101] [Figure 26 Example of generating entries GM4-1 to GM4-5] Fig. 26 is an explanatory diagram showing an example of generating entries GM4-1 to GM4-5. In the fourth data mapping shown in Fig. 16, "GM4-1" to "GM4-5" are assigned as group mapping indexes 901, and "DM1" to "DM5" are associated as data mapping indexes 501.
[0102] 16, allocation to the node group configuration 1200 is performed in accordance with the entry CNM4, which is the selection result, and therefore "CNM4" is associated as the column node mapping index 902. In this way, entries GM4-1 to GM4-5 are generated.
[0103] [Figure 27 Example of generating entries GM5-1 to GM5-5] 27 is an explanatory diagram showing an example of generating entries GM5-1 to GM5-5. In the fifth data mapping shown in FIG. 17, "GM5-1" to "GM5-5" are assigned as group mapping indexes 901, and "DM1" to "DM5" are associated as data mapping indexes 501.
[0104] 17, allocation to the node group configuration 1200 is performed in accordance with the entry CNM5, which is the selection result, and therefore "CNM5" is associated as the column node mapping index 902. In this way, entries GM5-1 to GM5-5 are generated.
[0105] [Example of generating entries GM6-1 to GM8-5 (not shown)] In the sixth to eighth data mappings, “GM6-1” to “GM6-5”, “GM7-1” to “GM7-5”, and “GM8-1” to “GM8-5” are assigned as group mapping indices 901, and “DM1” to “DM3” are associated as data mapping indices 501.
[0106] Furthermore, in the sixth to eighth data mappings, allocation to the node group configuration 1200 is performed according to the entries CNM6 to CNM8, which are the selection results, so "CNM6" to "CNM8" are associated as the column node mapping index 902. In this way, entries GM6 to GM8 are generated.
[0107] [Figure 28 Example of generating entries GM9-1 to GM9-5] 28 is an explanatory diagram showing an example of generating entries GM9-1 to GM9-5. In the ninth data mapping shown in FIG. 18, "GM9-1" to "GM9-5" are assigned as group mapping indexes 901, and "DM1" to "DM5" are associated as data mapping indexes 501.
[0108] 18, allocation to the node group configuration 1200 is performed in accordance with the entry CNM9, which is the selection result, and therefore "CNM9" is associated as the column node mapping index 902. In this way, entries GM9-1 to GM9-5 are generated.
[0109] [Example of generating entries GM10-1 to GM12-5 (not shown)] In the 10th to 12th data mappings, the group mapping indexes 901 are numbered as "GM10-1" to "GM10-5," "GM11-1" to "GM11-5," and "GM12-1" to "GM12-5," and the data mapping indexes 501 are associated with "DM5," "DM1," and "DM2."
[0110] Furthermore, in the 10th to 12th data mappings, allocation to the node group configuration 1200 is performed in accordance with the entries CNM10 to CNM12, which are the selection results, and therefore "CNM10" to "CNM12" are associated as the column node mapping index 902. In this way, entries GM10-1 to GM12-5 are generated.
[0111] [Figure 29 Example of generating entries GM13-1 to GM13-5] Fig. 29 is an explanatory diagram showing an example of generating entries GM13-1 to GM13-5. In the 13th data mapping shown in Fig. 19, "GM13-1" to "GM13-5" are assigned as group mapping indexes 901, and "DM1" to "DM5" are associated as data mapping indexes 501.
[0112] 19, allocation to the node group configuration 1200 is performed in accordance with the entry CNM13, which is the selection result, and therefore "CNM13" is associated as the column node mapping index 902. In this way, entries GM13-1 to GM13-5 are generated.
[0113] <Figure 30 Chunk group management table 206 entry creation example 1> Fig. 30 is an explanatory diagram showing entry creation example 1 of the chunk group management table 206. In Fig. 30, as an example, the process for associating chunk CK(DX) with group mapping GM1-1 in step S2206 will be described.
[0114] First, "CG1-1" is assigned as the chunk group index 1000 and is associated with the group mapping GM1-1. Furthermore, in the group mapping management table 205, the group mapping GM1-1 is associated with the data mapping DM1 and the column node mapping CNM1.
[0115] Therefore, in the column node mapping CNM1, the values of Col1 node index 1101, Col2 node index 1102 and Col3 node index 1103 for {Col1, Col2, Col3}, which is the placement position 505 of the data mapping DM1, are identified as node index 301 as “NA”, “NB” and “NC”.
[0116] In the drive management table 202, the node indexes 301 "NA", "NB", and "NC" are associated with the values "DA1", "DB1", and "DC1" of the drive index 401. Note that they are also associated with DA2, ..., DB2, ..., DC2, ..., but any of DA2, ..., DB2, ..., DC2, ... is acceptable as long as they contain unallocated chunks CK(DA), CK(DB), and CK(DC).
[0117] In the chunk management table 204, drives DA1, DB1, and DC1 have chunks CK1-1(DA1), CK1-1(DB1), and CK1-1(DC1) as unallocated chunks CK(DA), CK(DB), and CK(DC), respectively. Therefore, chunks CK1-1(DA1), CK1-1(DB1), and CK1-1(DC1) are associated with chunk group CG1-1 as chunk index 801. This generates entry CG1-1. The same is done for group mappings GM1-2 to GM1-5, ..., GM13-5.
[0118] <Figure 31 Second chunk group generation process (step S2107)> FIG. 31 is a flowchart showing a detailed processing procedure example of the second chunk group generation processing (step S2107).
[0119] (Step S3101) The computer node 110 reads the second data mapping table 700 and proceeds to step S3102.
[0120] (Step S3102) The computer node 110 creates an entry corresponding to the second data mapping table 700 in the column-node correspondence management table 207, and proceeds to step S3103. Specifically, for example, the computer node 110 creates entry CNM6 in the column-node correspondence management table 207.
[0121] Since the map size 503 of the second data mapping table 700 is "6", the created entry CNM specifies Col1 node index 1101 to Col6 node index 1106, i.e., six nodes NA to NF. Therefore, selection according to priority criteria such as in step 2202 is not performed.
[0122] (Step S3103) The computer node 110 generates an entry GM in the group mapping management table 205 based on the column-node correspondence management table 207 and the second data mapping table 700, and proceeds to step S3104.
[0123] Specifically, for example, the computer node 110 assigns group mapping indexes 901 corresponding to the map size 503 of the second data mapping table 700, and associates each of the group mapping indexes 901 with the data mapping index 501 of the second data mapping table 700. The computer node 110 also associates each of the group mapping indexes 901 with the column node mapping index 902 generated in step S3102, and generates an entry GM in the group mapping management table 205.
[0124] (Step S3104) The computer node 110 generates an entry CG in the chunk group management table 206 based on the group mapping management table 205 and the chunk management table 204. Specifically, for example, the computer node 110 assigns a chunk group index 1000, and associates the group mapping index 901 assigned in the group mapping management table 205 in step S3103.
[0125] The computer node 110 identifies the data mapping index 501 and the column node mapping index 902 from the entry GM of this associated group mapping index 901. Then, the computer node 110 identifies the column Col that is included in the entry CNM of the identified column node mapping index 902 and is included in the placement position 505 of the entry DM of the data mapping index 501.
[0126] The computer node 110 identifies the node NX corresponding to the identified column Col, and identifies an unallocated chunk CK(DX) in the drive DX in the identified node NX. The computer node 110 associates the chunk index 801 of the identified chunk CK(DX) with the chunk group index 1000, and creates an entry CG in the chunk group management table 206.
[0127] <FIG. 32 Example 2 of creating an entry in the group mapping management table 205> Fig. 32 is an explanatory diagram showing entry generation example 2 of the chunk group management table 206 shown in step S3103. Fig. 32 shows an example of generation of entries GM14-1 to GM14-5. In the 14th data mapping shown in Fig. 20, "GM14-1" to "GM14-6" are assigned as the group mapping index 901, and "DM6" to "DM11" are associated as the data mapping index 501.
[0128] 20, allocation to the node group configuration 1200 is performed in accordance with the entry CNM6, and therefore "CNM6" is associated as the column node mapping index 902. In this way, entries GM14-1 to GM14-5 are generated.
[0129] Similarly, for the 15th to 17th data mappings shown in Figure 20, entries GM15-1 to GM15-5, GM16-1 to GM16-5, and GM17-1 to GM17-5 are associated with "DM6" to "DM11" as data mapping indexes 501, and "CNM6" as column node mapping index 902.
[0130] <Figure 33 Chunk group management table 206 entry creation example 2> Fig. 33 is an explanatory diagram showing entry creation example 2 of the chunk group management table 206. In Fig. 33, as an example, the process for associating chunk CK(DX) with group mapping GM14-1 in step S3104 will be described.
[0131] First, "CG14-1" is assigned as the chunk group index 1000 and is associated with the group mapping GM14-1. Furthermore, in the group mapping management table 205, the group mapping GM14-1 is associated with the data mapping DM6 and the column node mapping CNM6.
[0132] Therefore, in the column node mapping CNM6, the values of Col1 node index 1101, Col2 node index 1102 and Col3 node index 1103 for {Col1, Col2, Col3}, which is the placement position 505 of the data mapping DM6, are identified as node index 301, which are “NA”, “NB” and “NC”.
[0133] In the drive management table 202, the node indexes 301 "NA", "NB", and "NC" are associated with the values "DA2", "DB2", and "DC2" of the drive index 401. Note that they are also associated with DA1, ..., DB1, ..., DC1, DA3, ..., DB3, ..., DC3, ..., but any of DA1, ..., DB1, ..., DC1, DA3, ..., DB3, ..., DC3, ... is acceptable as long as it contains unallocated chunks CK(DA), CK(DB), and CK(DC).
[0134] In the chunk management table 204, drives DA2, DB2, and DC2 have chunks CK14-1(DA2), CK14-1(DB2), and CK14-1(DC2) as unallocated chunks CK(DA), CK(DB), and CK(DC), respectively. Therefore, chunks CK14-1(DA2), CK14-1(DB2), and CK14-1(DC2) are associated with chunk group CG14-1 as chunk index 801. This generates entry CG14-1. The same is done for group mappings GM14-2 to GM14-5, ..., GM17-5.
[0135] Thus, according to the first embodiment, the first data mapping table 600 can reduce the unallocated remaining capacity due to the imbalance in capacity between the computer nodes 110. After the imbalance is reduced, the second data mapping table 700 corresponding to the number of computer nodes 110 can be applied to improve the efficiency of capacity allocation. [Example]
[0136] Next, a second embodiment will be described. In the second embodiment, an expansion of capacity will be described. In order to expand capacity by adding drives 113, a capacity defined in the second data mapping table 700, which is the same number of map sizes 503 as the number of computer nodes 110, is required, so drives 113 must be added to all nodes NX.
[0137] In the second embodiment, the chunk group CG allocated in the first data mapping table 600 is reconfigured (chunk rebalancing) to be allocated in the second data mapping table 700, thereby achieving capacity expansion.
[0138] <Figure 34 Example of configuration change (chunk rebalancing)> FIG. 34 is an explanatory diagram showing an example of a configuration change (chunk rebalancing). A node group configuration 3401 shows a state in which capacity allocation has been completed according to the first embodiment. One cell indicates the capacity of one chunk x three columns. The number in the cell indicates the number of data mappings. That is, "1" to "13" indicate the first to thirteenth data mappings in which the first data mapping table 600 was applied, and "14" to "17" indicate the fourteenth to seventeenth data mappings in which the second data mapping table 700 was applied. Furthermore, the cells in the dotted rectangle indicate cells in which no drive 113 is set.
[0139] When the data mapping cycles in the node group configuration 3401 are aligned, the result is the node group configuration 3402. In the second embodiment, by allocating the capacity of the node NF to the cell cF1, the computer node 110 changes the configuration to data mapping that applies the second data mapping table 700 for the cell row 3411 with the cycle "1".
[0140] Similarly, by allocating the capacity of node NE to cell cE1, the computer node 110 changes the configuration to data mapping to which the second data mapping table 700 is applied for the cell row 3412 of the second iteration.
[0141] Also, by allocating the capacity of node ND to cell cD1, the computer node 110 changes the configuration to data mapping to which the second data mapping table 700 is applied for the cell row 3413 of the third iteration.
[0142] Also, by allocating the capacity of node NA to cell cA1, the computer node 110 changes the configuration to data mapping to which the second data mapping table 700 is applied for the cell row 3414 of the turn "4".
[0143] Also, by allocating the capacity of node NF to cell cF2, the computer node 110 changes the configuration to data mapping to which the second data mapping table 700 is applied for the cell row 3415 of the turn "5".
[0144] Also, by allocating the capacity of node NE to cell cE2, the computer node 110 changes the configuration to data mapping to which the second data mapping table 700 is applied for the cell row 3416 of the number "6".
[0145] Also, by allocating the capacity of node ND to cell cD2, the computer node 110 changes the configuration to data mapping to which the second data mapping table 700 is applied for the cell row 3417 of the turn "7".
[0146] Also, by allocating the capacity of node NA to cell cA2, the computer node 110 changes the configuration to data mapping to which the second data mapping table 700 is applied for the cell row 3418 of the cycle "8".
[0147] Also, by allocating the capacity of node NC to cell cC1, the computer node 110 changes the configuration to data mapping to which the second data mapping table 700 is applied for the cell row 3419 of the number "9".
[0148] Also, by allocating the capacity of node NF to cell cF3, the computer node 110 changes the configuration to data mapping that applies the second data mapping table 700 for the cell row 3420 of the turn "10".
[0149] Also, by allocating the capacity of node NE to cell cE3, the computer node 110 changes the configuration to data mapping to which the second data mapping table 700 is applied for the cell row 3421 of the cycle "11".
[0150] Also, by allocating the capacity of node ND to cell cD3, the computer node 110 changes the configuration to data mapping to which the second data mapping table 700 is applied for the cell row 3422 of the turn "12".
[0151] Also, by allocating the capacity of node NA to cell cA3, the computer node 110 changes the configuration to data mapping to which the second data mapping table 700 is applied for the cell row 3423 of the cycle "13".
[0152] <Figure 35 to Figure 38 Configuration Change 1> Next, configuration change 1 will be described with reference to FIGS.
[0153] [Figure 35 Example of identifying placement groups] FIG. 35 is an explanatory diagram showing an example of identifying a placement group in configuration change 1. In FIG. 35, cell row 3411 is taken as an example of a cell row that is the target of the configuration change. Note that cell row 3600 is a buffer area prepared for the configuration change. Data is mapped in each cell of nodes NA to NE in cell row 3411 of iteration "1" according to placement groups G1 to G5 of the first mapping table 600. Note that a drive 113 has not yet been set in cell cF1.
[0154] Comparing the data mapping of cell row 3411 to which first data mapping table 600 has been applied with second data mapping table 700, placement groups G1 and G6 both belong to columns Col1 to Col3, placement groups G3 and G8 both belong to columns Col2 to Col4, and placement groups G4 and G9 both belong to columns Col3 to Col5. In this way, when the placement groups are organized in the same way, there is no need to move data, and placement index 504 can be simply updated as follows: G1 ⇒ G6, G3 ⇒ G8, G4 ⇒ G9.
[0155] Therefore, the computer node 110 compares the data mapping of the cell row 3411 to which the first data mapping table 600 is applied with the second data mapping table 700. The computer node 110 identifies (G1, G6), (G3, G8), and (G4, G9) as combinations to be changed for the placement group index 504.
[0156] [Figure 36 Example of changing placement group] 36 is an explanatory diagram showing an example of a placement group change in configuration change 1. The computer node 110 changes the placement groups G1, G3, and G4 indicating the data mapping of the cell row 3411 to which the first data mapping table 600 is applied to the placement groups G6, G8, and G9 in the second data mapping table 700 in accordance with the combination of placement group indexes 504 to be changed.
[0157] [Figure 37 Example of updating the column-node correspondence management table 207] 37 is an explanatory diagram showing update example 1 of the column-node correspondence management table 207 in configuration change 1. In cell row 3411, placement groups G1 to G5 defined in the first data mapping table 600 are mapped to nodes NA to NE in accordance with column-node mapping index CNM1 (see FIG. 13).
[0158] In cell row 3411, the second data mapping table 700 is applied due to the configuration change. The second data mapping table 700 has G7, G10, and G11 as the placement index 504 in column Col6. Therefore, the computer node 110 adds "NF" to the Col6 node index 1106 of entry CNM1 in the column-node correspondence management table 207.
[0159] [Figure 38 Example of updating the group mapping management table 205] 38 is an explanatory diagram showing an example of updating the group mapping management table 205 in configuration change 1. In order to change the placement groups G1, G3, and G4 indicating the data mapping of cell row 3411 to which the first data mapping table 600 is applied to placement groups G6, G8, and G9 in the second data mapping table 700, the computer node 110 updates the data mapping index 501 of entry GM1-1 in the group mapping management table 205 from DM1 to DM6, updates the data mapping index 501 of entry GM1-3 from DM3 to DM8, and updates the data mapping index 501 of entry GM1-4 from DM4 to DM9.
[0160] In this way, in configuration change 1, the configuration change from the first data mapping table 600 to the second data mapping table 700 is realized without moving data.
[0161] <Figure 39 to Figure 42 Configuration change 2> 39 to 42, configuration change 2 will be described. Configuration change 2 is executed after configuration change 1.
[0162] [Figure 39 Example of changing placement group] 39 is an explanatory diagram showing an example of a placement group change in configuration change 2. In FIG. 39, the node group configuration 3402 updated by configuration change 1 is set as node group configuration 3902.
[0163] Comparing the data mapping of cell row 3411 to which first data mapping table 600 is applied with second data mapping table 700, placement groups G2 and G7 both belong to columns Col1-Col2, but G7 belongs to column Col6 in second data mapping table 700. When placement groups are organized differently like this, the data needs to be moved to cell row 3600.
[0164] Therefore, the computer node 110 compares the data mapping of the cell row 3411 to which the first data mapping table 600 is applied with the second data mapping table 700. Then, the computer node 110 identifies (G2, G7) as the combination of the source and destination of the placement group index 504.
[0165] The computer node 110 sets placement group G7 of the second data mapping table 700 in the cells of nodes NA and NB to which placement group G2 of cell row 3600 belongs, according to the combination of source and destination of placement group index 504. The computer node 110 also sets placement group G7 belonging to column Col6 of the second data mapping table 700 in the cell of column Col6 of node NF to which placement group G2 of cell row 3600 belongs.
[0166] As a result, the data in the cells of placement group G2 of node NA in cell row 3411 is moved to placement group G7 of node NA in cell row 3600. The data in the cells of placement group G2 of node NB in cell row 3411 is moved to placement group G7 of node NB in cell row 3600. Because node NF in cell row 3411 does not yet store any data to be saved, there is no data to be moved to placement group G7 of node NF in cell row 3600.
[0167] [Figure 40 Example of updating the group mapping management table 205] 40 is an explanatory diagram showing an example of updating the group mapping management table 205 in configuration change 2. In order to change the placement group G2 indicating the data mapping of cell row 3411 to which the first data mapping table 600 has been applied to placement group G7 in the second data mapping table 700, the computer node 110 creates a new entry in the group mapping management table 205 that will be the data migration destination for entry GM1-2. The computer node 110 sets the group mapping index 901 of the new entry to "GM1-2-new", sets the data mapping index 501 to "G7" which is the migration destination from placement group G2, and sets the column node mapping index 902 to "CNM1", as with entry GM1-2.
[0168] [Figure 41 Example of updating the chunk group management table 206] 41 is an explanatory diagram showing an example of updating the chunk group management table 206 in configuration change 2. The computer node 110 creates a new entry in the chunk group management table 206, sets "CG1-2-new" as the chunk group index 1000, and sets "GM1-2-new" as the group mapping index 901.
[0169] Then, the computer node 110 refers to the chunk management table 204, and in order to generate chunk groups in nodes NA, NB, and NF of the data mapping DM7 (Col1, Col2, Col7), it sets the chunk indexes CK1-2 (DA2), CK1-2 (DB2), and CK1-2 (DC2) of the chunks whose allocated flag 803 is "0" to the chunk index 801. As a result, a new chunk group CG1-2-new is generated.
[0170] [Figure 42 Example of updating the chunk management table 204] 42 is an explanatory diagram showing an example of updating the chunk management table 204 in configuration change 2. The computer node 110 updates the allocated flags 803 of the chunk indexes CK1-2(DA2), CK1-2(DB2), and CK1-2(DF2) of the chunks whose allocated flags 803 are "0" from "0" to "1."
[0171] In this way, in configuration change 2, the configuration change from the first data mapping table 600 to the second data mapping table 700 is realized by moving data to the cell row 3600, which is an empty area.
[0172] <Figure 43 to Figure 46 Configuration change 3> 43 to 46, configuration change 3 will be described. Configuration change 3 is executed after configuration change 2.
[0173] [Figure 43 Example of changing placement group] 43 is an explanatory diagram showing an example of a placement group change in configuration change 2. In FIG. 43, the node group configuration 3902 updated by configuration change 2 is set as a node group configuration 4302.
[0174] Comparing the data mapping of cell row 3411 to which first data mapping table 600 is applied with the second data mapping table 700, placement groups G5 and G10 both belong to column Col4, and placement groups G5 and G11 both belong to columns Col1 and Col5. Furthermore, placement groups G10 and G11 are placed in column Col6 in the second mapping table 700, but are not placed in node NF(Col6) in the data mapping of cell row 3411 to which first data mapping table 600 is applied. When the placement groups are organized differently like this, the data needs to be moved to cell row 3600.
[0175] Therefore, the computer node 110 compares the data mapping of cell row 3411 to which the first data mapping table 600 is applied with the second data mapping table 700. Then, the computer node 110 identifies (G5, G10) and (G5, G11) as combinations of source and destination of placement group index 504, and identifies placement groups G10 and G11 of column Col6 in the second data mapping table 700 as placements with no source.
[0176] The computer node 110 sets the placement group G10 of the second data mapping table 700 to the cells of the nodes ND and NE to which the placement group G5 of the cell row 3600 belongs, according to the combination (G5, G10) of the source and destination of the placement group index 504. The computer node 110 also sets the placement group G10 of column Col6 of the second data mapping table 700 to the cell of the node NF(Col6) in the cell row 3600 as a placement with no source.
[0177] Furthermore, the computer node 110 sets the placement group G11 of the second data mapping table 700 to the cells of the nodes NA and NE to which the placement group G5 of the cell row 3600 belongs, according to the combination (G5, G11) of the source and destination of the placement group index 504. Furthermore, the computer node 110 sets the placement group G11 of column Col6 of the second data mapping table 700 to the cell of the node NF(Col6) in the cell row 3600 as a placement with no source.
[0178] As a result, the data in the cells of placement group G5 of node ND in cell row 3411 is moved to the cells of placement group G10 of node ND in cell row 3600. The data in the cells of placement group G5 of node NE in cell row 3411 is moved to the cells of placement group G10 of node NE in cell row 3600. Because node NF in cell row 3411 does not yet store data to be saved, there is no data to be moved to the cells of placement group G10 of node NF in cell row 3600.
[0179] Similarly, data in a cell of placement group G5 of node NA in cell row 3411 is moved to a cell of placement group G11 of node NA in cell row 3600. Data in a cell of placement group G5 of node NE in cell row 3411 is moved to a cell of placement group G11 of node NE in cell row 3600. Because node NF in cell row 3411 does not yet store data to be saved, there is no data to be moved to a cell of placement group G11 of node NF in cell row 3600.
[0180] [Figure 44 Example of updating the group mapping management table 205] 44 is an explanatory diagram showing an example of updating the group mapping management table 205 in configuration change 3. In order to change placement group G5, which indicates the data mapping of cell row 3411 to which the first data mapping table 600 has been applied, to placement group G10 in the second data mapping table 700, the computer node 110 creates a new entry in the group mapping management table 205 that will be the data migration destination for entry GM1-5. The computer node 110 sets "GM1-5-new1" to the group mapping index 901 of the new entry, sets "G10" to be the migration destination from placement group G5 to the data mapping index 501, and sets "CNM1" to the column node mapping index 902, as with entry GM1-5.
[0181] The computer node 110 also creates a new entry in the group mapping management table 205 as the data migration destination for entry GM1-5. The computer node 110 sets "GM1-5-new2" to the group mapping index 901 of the new entry, sets "G11" to the data mapping index 501 as the migration destination from placement group G5, and sets "CNM16" to the column node mapping index 902, the same as for entry GM1-5.
[0182] [Figure 45 Example of updating the chunk group management table 206] 45 is an explanatory diagram showing an example of updating the chunk group management table 206 in configuration change 3. The computer node 110 creates a new entry in the chunk group management table 206, sets "CG1-5-new1" as the chunk group index 1000, and sets "GM1-5-new1" as the group mapping index 901.
[0183] Then, the computer node 110 refers to the chunk management table 204, and in order to generate chunk groups at nodes ND, NE, and NF of the data mapping DM10 (Col4, Col5, Col6), it sets the chunk indexes CK1-5(DD2), CK1-5(DE2), and CK1-5(DF2) of the chunks whose allocated flag 803 is "0" to the chunk index 801. As a result, a new chunk group CG1-5-new1 is generated.
[0184] Similarly, the computer node 110 creates a new entry in the chunk group management table 206, sets "CG1-5-new2" as the chunk group index 1000, and sets "GM1-5-new2" as the group mapping index 901.
[0185] Then, the computer node 110 refers to the chunk management table 204, and in order to generate chunk groups at nodes NA, NE, and NF of the data mapping DM11 (Col1, Col5, Col6), it sets the chunk indexes CK1-5(DA3), CK1-5(DE3), and CK1-5(DF3) of the chunks whose allocated flag 803 is "0" to the chunk index 801. As a result, a new chunk group CG1-5-new2 is generated.
[0186] [Figure 46 Example of updating the chunk management table 204] Figure 46 is an explanatory diagram showing an example of updating the chunk management table 204 in configuration change 3. The computer node 110 updates the allocated flags 803 of the chunk indexes CK1-5(DD2), CK1-5(DE2), CK1-5(DF2), CK1-5(DA3), CK1-5(DE3), and CK1-5(DF3) of chunks whose allocated flags 803 are "0" from "0" to "1".
[0187] In this way, in configuration change 3, similar to configuration change 2, the configuration change from the first data mapping table 600 to the second data mapping table 700 is realized by moving data to the cell row 3600, which is an empty area.
[0188] <Figure 47 to Figure 50 Deleting unnecessary placement groups> Next, an example of deleting unnecessary placement groups when a configuration change is completed will be described with reference to FIGS.
[0189] [Figure 47 Deleting unnecessary placement groups in node group configuration 4302] FIG. 47 is an explanatory diagram showing an example of deleting unnecessary placement groups in the node group configuration 4302.
[0190] (A) The data in the cells of placement group G2 has been moved to cells of placement group G7, so the data in the cells of placement group G2 is no longer needed. Therefore, the data in the cells of placement group G2 is deleted from nodes NA, NB, and NE. The data in the cells of placement group G5 has been moved to cells of placement groups G10 and G11, so the data in the cells of placement group G5 is no longer needed. Therefore, the data in the cells of placement group G5 is deleted from nodes NA, ND, and NE.
[0191] (B) The computer node 110 moves the data in the cells of groups G7, G10, and G11 arranged in cell row 3600 to cell row 3411 in the same node NX. This releases cell row 3600 from the arrangement group and makes it available as a new chunk rebalancing area.
[0192] [Figure 48 Deleting unnecessary placement groups in the group mapping table 205] 48 is an explanatory diagram showing an example of deleting unnecessary placement groups in the group mapping table 205. Since placement groups G2 and G5 are unnecessary placement groups, the computer node 110 deletes, in the group mapping table 205, entry GM1-2 corresponding to placement group G2 and entry GM1-5 corresponding to placement group G5.
[0193] [Figure 49 Deleting unnecessary placement groups in the chunk group management table 206] 49 is an explanatory diagram showing an example of deleting unnecessary placement groups in the chunk group management table 206. Since placement groups G2 and G5 are unnecessary placement groups, the computer node 110 deletes, in the chunk group management table 206, the entry CG1-2 corresponding to placement group G2 and the entry CG1-5 corresponding to placement group G5.
[0194] [Figure 50 Deleting unnecessary placement groups in the chunk management table 204] 50 is an explanatory diagram showing an example of deleting unnecessary placement groups in the chunk management table 204. Because placement groups G2 and G5 are unnecessary placement groups, the computer node 110 updates the allocated flag 803 of the chunk specified by the chunk index 801 of chunk group CG1-2 corresponding to placement group G2 from "1" to "0" in the chunk management table 204, and updates the allocated flag 803 of the chunk specified by the chunk index 801 of chunk group CG1-5 corresponding to placement group G5 from "1" to "0".
[0195] <Figure 51 Capacity expansion process> FIG. 51 is a flowchart of an example of a capacity expansion process procedure according to the second embodiment.
[0196] (Step S5101) The computer node 110 executes capacity expansion setting in response to user operation and proceeds to step S5102. Capacity expansion setting is the specification of the computer node 110 and drive 113 to which the additional capacity will be allocated. Hereinafter, the drive 113 added by the capacity expansion setting will be referred to as the additional drive 113.
[0197] (Step S5102) The computer node 110 divides the capacity 402 of each additional drive 113 specified in step S5101 by the chunk size 802 set in step S2102, and proceeds to step S5103. This division generates chunks CK(DX) in the additional drives 113. This also generates entries in the chunk management table 204 of Figure 8 for the newly generated chunks CK(DX) of the additional drives 113.
[0198] As a result, the capacity 402 allocated to the cells cA1 to cA3, cC1, cD1 to cD3, cE1 to cE3, and cF1 to cF3 of the dotted rectangular shape shown in FIG.
[0199] (Step S5103) The computer node 110 counts the number of unallocated chunks in the chunk group CG for each computer node 110, and proceeds to step S5104. Specifically, for example, the computer node 110 counts the number of unallocated chunks CK(DA) to CK(DF) that each of the nodes NA to NF holds on the drive 113 (including the additional drive 113).
[0200] (Step S5104) The computer node 110 divides the number of chunks of node NX by (m+n) for each of nodes NA to NF.
[0201] (Step S5105) The computer node 110 determines whether there are any chunks remaining (hereinafter referred to as remaining chunks) for adding capacity to each of the nodes NA to NF. Specifically, for example, the computer node 110 determines whether the quotient resulting from the division in step S5104 is 1 or greater for each of the nodes NA to NF.
[0202] If there are remaining chunks for adding capacity to each of the nodes NA to NF (step S5105: Yes), proceed to step S5106. On the other hand, if there are no remaining chunks for adding capacity to at least one of the nodes NA to NF (step S5105: No), proceed to step S5107.
[0203] (Step S5106) The computer node 110 applies the second data mapping table 700 using the remaining chunks of all nodes NA to NF, generates chunk group CG#, and returns to step S5105. Specifically, for example, entry CNM14 is generated in the column-node correspondence management table 207, entries GM14-1 to GM14-6 are generated in the group mapping management table 205, and entries CG14-1 to CG14-6 are generated in the chunk group management table 206. The loop of steps S5105: Yes, S5106 is repeated until there are no remaining chunks for adding capacity to each of nodes NA to NF.
[0204] (Step S5107) The computer node 110 determines whether there is an entry in the column-node correspondence management table 207 that does not include a computer node where a remaining chunk exists. The computer node 110 determines whether there is an entry in the column-node correspondence management table 207 that does not include a node NX where a remaining chunk exists. Specifically, for example, the node NX that has a remainder of 1 or more when the number of remaining chunks is divided by (m+n) is the node NX where the remaining chunk exists. In the second embodiment, the node NX where the remaining chunk exists is node NF. The computer node 110 determines whether there is an entry in the column-node correspondence management table 207 that does not include a node NX where such a remaining chunk exists (in the second embodiment, entry CNM1 in FIG. 11).
[0205] If the column-node correspondence management table 207 contains an entry that does not include the computer node NX where the remaining chunks exist (step S5107: Yes), proceed to step S5108. If the column-node correspondence management table 207 does not contain an entry that does not include the computer node NX where the remaining chunks exist (step S5107: No), the capacity expansion process ends.
[0206] (Step S5108) The computer node 110 adds the node of the remaining chunk to the column-node correspondence management table 207 and executes a configuration change (chunk rebalancing) process to change the data mapping table to one larger table. Specifically, for example, the computer node 110 adds "NF" as the node NX where the remaining chunk exists to the Col6 node index 1106 of entry CNM1 in the column-node correspondence management table 207. The loop of steps S5107: Yes, S5108 is repeated until there are no entries in the column-node correspondence management table 207 that do not include the node NX where the remaining chunk exists.
[0207] In this way, according to the second embodiment, capacity expansion is realized by changing the configuration (chunk rebalancing) of the chunk groups CG allocated in the first data mapping table 600 to allocation in the second data mapping table 700.
[0208] The present invention is not limited to the above-described embodiments, and includes various modifications and equivalent configurations within the spirit and scope of the appended claims. For example, the above-described embodiments have been described in detail to clearly explain the present invention, and the present invention is not necessarily limited to configurations including all of the described configurations. Furthermore, part of the configuration of one embodiment may be replaced with the configuration of another embodiment. Furthermore, the configuration of another embodiment may be added to the configuration of one embodiment. Furthermore, part of the configuration of each embodiment may be added to, deleted from, or replaced with other configurations.
[0209] Furthermore, the aforementioned configurations, functions, processing units, processing means, etc. may be realized in part or in whole in hardware, for example by designing them as integrated circuits, or may be realized in software by having a processor interpret and execute a program that realizes each function.
[0210] Information such as programs, tables, files, etc. that realize each function can be stored in storage devices such as memory, hard disks, SSDs (Solid State Drives), or recording media such as IC (Integrated Circuit) cards, SD cards, and DVDs (Digital Versatile Discs).
[0211] In addition, the control lines and information lines shown are those that are considered necessary for the explanation, and do not necessarily show all the control lines and information lines that are necessary for implementation. In reality, it can be considered that almost all components are interconnected. [Explanation of symbols]
[0212] 100 Storage Systems 101 Computer Domain 102 Network 110 computer nodes 111 processors 112 memory 113 Drive 120 Network 200 Control Information Table 201 Node Management Table 202 Drive Management Table 203 Data Mapping Table 204 Chunk Management Table 205 Group Mapping Management Table 206 Chunk group management table 207 Column node correspondence management table 210 Management Program 211 Capacity Generator 212 Configuration Change Program 220 Control Information Table 600 First Data Mapping Table 700 Second Data Mapping Table
Claims
1. An allocation device having a processor that executes a program and a storage device that stores the program, the storage device stores a first data mapping table and a second data mapping table; The first data mapping table is defined so that for each first placement group consisting of first chunk groups, the number of which is two or more and one less than the number of a plurality of computer nodes, each chunk of the first chunk group is distributed to a different computer node, The second data mapping table is defined so that, for each second placement group consisting of second chunk groups in the same number as the number of the plurality of computer nodes, each chunk of the second chunk group is distributed to a different computer node, The processor: a determination process for determining whether or not a deviation in unallocated capacity to which the chunks are not allocated among the plurality of computer nodes is within an allowable range; a first allocation process that, when it is determined by the determination process that the imbalance is outside an allowable range, uses the first data mapping table to allocate the first chunk group to unallocated capacity of a computer node group that is one less than the number of the plurality of computer nodes so that each chunk of the first chunk group is distributed to a different computer node for each first placement group; a second allocation process that allocates the second chunk group to unallocated capacity of the plurality of computer nodes using the second data mapping table when it is determined by the determination process that the bias is within an allowable range, so that each chunk of the second chunk group is distributed to a different computer node for each second placement group; An allocation device that executes the above.
2. 2. The allocation device according to claim 1, In the determination process, the processor determines whether or not there is a bias in unallocated capacity among the plurality of computer nodes, In the first allocation process, if it is determined by the determination process that there is a bias, the processor uses the first data mapping table to allocate the first chunk group to unallocated capacity of the computer node group so that each chunk of the first chunk group is distributed to a different computer node for each first placement group; In the second allocation process, if it is determined by the determination process that there is no imbalance, the processor uses the second data mapping table to allocate the second chunk group to unallocated capacities of the plurality of computer nodes for each second placement group so that each chunk of the second chunk group is distributed to a different computer node. An allocation device characterized by:
3. 2. The allocation device according to claim 1, The processor: The determination process and the first allocation process are repeatedly performed until the bias is within an allowable range as a result of the determination process; In the second allocation process, when the processor determines that the imbalance is within an acceptable range by repeatedly executing the determination process and the first allocation process, the processor uses the second data mapping table to allocate the second chunk group to unallocated capacities of the plurality of computer nodes for each second placement group so that each chunk of the second chunk group is distributed to a different computer node. An allocation device characterized by:
4. 2. The allocation device according to claim 1, The processor: execute a selection process for selecting a computer node to which each chunk of the first chunk group is to be assigned according to a predetermined priority criterion; In the first allocation process, the processor allocates the first chunk group to unallocated capacity of the computer node group based on a selection result of the selection process. An allocation device characterized by:
5. 5. The allocation device according to claim 4, The priority criterion is the amount of unallocated capacity. An allocation device characterized by:
6. 5. The allocation device according to claim 4, The priority criterion is the number of times the item has been selected in the selection process. An allocation device characterized by:
7. 2. The allocation device according to claim 1, the allocation device is one of the plurality of computer nodes, An allocation device characterized by:
8. An allocation method executed by an allocation device having a processor that executes a program and a storage device that stores the program, the storage device stores a first data mapping table and a second data mapping table; The first data mapping table is defined so that for each first placement group consisting of first chunk groups, the number of which is two or more and one less than the number of a plurality of computer nodes, each chunk of the first chunk group is distributed to a different computer node, The second data mapping table is defined so that, for each second placement group consisting of second chunk groups in the same number as the number of the plurality of computer nodes, each chunk of the second chunk group is distributed to a different computer node, The processor: a determination process for determining whether or not a deviation in unallocated capacity to which the chunks are not allocated among the plurality of computer nodes is within an allowable range; a first allocation process that, when it is determined by the determination process that the imbalance is outside an allowable range, uses the first data mapping table to allocate the first chunk group to unallocated capacity of a computer node group that is one less than the number of the plurality of computer nodes so that each chunk of the first chunk group is distributed to a different computer node for each first placement group; a second allocation process that allocates the second chunk group to unallocated capacity of the plurality of computer nodes using the second data mapping table when it is determined by the determination process that the bias is within an allowable range, so that each chunk of the second chunk group is distributed to a different computer node for each second placement group; An allocation method comprising:
Citation Information
Patent Citations
Storage system
JP2020107082A