Storage system, and management method of storage system

The storage system optimizes resource allocation by adjusting processor core assignments based on volume attributes and operational states, addressing inefficiencies in existing systems and improving performance.

JP2025014626APending Publication Date: 2025-01-30HITACHI VANTARA LTD
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
JP2023117331
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2023-07-19
Publication Date
2025-01-30

AI Technical Summary

Technical Problem

Existing storage systems fail to consider the differences in load due to volume functions and attributes, such as data compression, and operational states like failover, leading to suboptimal resource allocation and performance.

Method used

A storage system with multiple storage nodes, each equipped with processor cores, adjusts the number of cores assigned to programs based on volume attributes and operational states to optimize resource allocation.

Benefits of technology

Improves storage system performance by accurately assigning resources considering volume attributes and operational states, enhancing efficiency and reducing performance degradation during failover.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025014626000001_ABST
    Figure 2025014626000001_ABST
Patent Text Reader

Abstract

To provide a storage system capable of improving the performance of the storage system by allocating resources appropriately.SOLUTION: The storage system includes multiple storage nodes 150 with a processor 70 and storage. The processor 70 has multiple processor cores and executes multiple programs that process data input and output to storage using the processor core, and provides volumes as the logical storage areas to adjust the number of processor cores allocated to each of the multiple programs.SELECTED DRAWING: Figure 1
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present invention relates to a storage system and a method for managing a storage system. [Background technology]

[0002] Conventionally, there is a technology described in JP 2021-026659 A (Patent Document 1) for appropriately allocating resources of a storage system to improve performance. This publication states that "each of the multiple nodes constituting a node group includes a hardware control unit including one or more drivers of the resource group of the node, and a command control unit that controls the hardware control unit in processing for I / O according to the I / O command when the node receives an I / O (Input / Output) command. At least one node includes an allocation determination unit. The allocation determination unit determines resource allocation for the hardware control unit and the command control unit for the one or more nodes based on the I / O characteristics of the one or more nodes including the node. In each of the one or more storage nodes, the resource amount of the resource group of the storage node that is allocated to each of the hardware control unit and the command control unit follows the resource allocation determined above." [Prior art documents] [Patent documents]

[0003] [Patent Document 1] Patent Publication No. 2021-026659 Summary of the Invention [Problem to be solved by the invention]

[0004] The above technology determines CPU core allocation for volumes that store uncompressed data by taking into account the RW (Write / Read) ratio. However, it does not take into account differences in load due to volume functions and attributes, such as volumes that can store compressed data. It also does not take into account differences in load due to the operating status of storage nodes, such as load fluctuations due to failover.

[0005] Therefore, an object of the present invention is to improve the performance of a storage system by taking into consideration differences in load due to volume attributes and / or operating states of storage nodes and allocating storage system resources more appropriately. [Means for solving the problem]

[0006] In order to achieve the above-mentioned objective, one representative storage system of the present invention is a storage system comprising a plurality of storage nodes each having a processor, and a storage device, wherein the processors each have a plurality of processor cores, and use the processor cores to execute a plurality of programs for processing data to be input / output to the storage device, provide a volume which is a logical storage area, and adjust the number of processor cores to be allocated to each of the plurality of programs. Furthermore, one representative storage system management method of the present invention is a management method for a storage system including a plurality of storage nodes each having a processor, and a storage device, wherein the processors each have a plurality of processor cores, and use the processor cores to execute a plurality of programs for processing data to be input / output to the storage device, provide a volume which is a logical storage area, and adjust the number of processor cores to be allocated to each of the plurality of programs. Effect of the Invention

[0007] According to the present invention, the resources of the storage system can be appropriately allocated to improve the performance of the storage system. Problems, configurations and effects other than those described above will become apparent from the following description of the embodiments. [Brief description of the drawings]

[0008] [Figure 1] FIG. 1 is an explanatory diagram of a storage system according to a first embodiment. [Diagram 2] A diagram illustrating the physical configuration of a storage system. [Diagram 3] Storage control program and memory redundancy configuration diagram [Figure 4] Diagram of data redundancy in uncompressed volumes [Diagram 5] Diagram of data redundancy in compressed volumes [Figure 6] FIG. 1 shows an example of programs and tables stored in a memory. [Figure 7] Specific example of address translation table [Figure 8] Specific example of compressed data address conversion table [Figure 9] Example of volume configuration management table [Figure 10] Example of core allocation ratio management table [Figure 11] Example of core management table [Figure 12] Specific example of the management table for the number of cores per program subject to core allocation adjustment [Figure 13] Flowchart of write processing for uncompressed volumes [Figure 14] Flowchart of a process for destaging uncompressed user data [Figure 15] Flowchart of compressed data write processing [Figure 16] Flowchart of a process for destaging compressed data [Figure 17] Flowchart of adjusting the number of cores in the first embodiment [Figure 18] Flowchart showing details of the core count increase / decrease process [Figure 19] Volume configuration management table in the system of the second embodiment [Figure 20] FIG. 11 is an explanatory diagram of an attribute-based I / O processing overhead management table of the system of the second embodiment. [Figure 21] Flowchart of adjusting the number of cores in the second embodiment [Figure 22] Flowchart showing details of core allocation ratio calculation processing [Figure 23] Failover illustration [Figure 24] FIG. 13 is an explanatory diagram of a cluster management table used in the third embodiment. [Diagram 25] Flowchart showing the failover process [Figure 26] Flowchart of adjusting the number of cores in the third embodiment [Figure 27] Flowchart for adjusting the number of cores for multiple storage control programs DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0009] In the following description, an "interface device" may refer to one or more communication interface devices. The one or more communication interface devices may be one or more homogeneous communication interface devices (e.g., one or more NICs (Network Interface Cards)) or two or more heterogeneous communication interface devices (e.g., a NIC and an HBA (Host Bus Adapter)).

[0010] In the following description, a "memory" refers to one or more memory devices, which are an example of one or more storage devices, and may typically be a primary storage device. At least one memory device in the memory may be a volatile memory device or a non-volatile memory device.

[0011] In the following description, a "persistent storage device" may be one or more persistent storage devices, which are an example of one or more persistent storage devices. A persistent storage device may typically be a non-volatile storage device (e.g., an auxiliary storage device), and more specifically, may be, for example, a hard disk drive (HDD), a solid state drive (SSD), a non-volatile memory express (NVMe) drive, or a storage class memory (SCM).

[0012] Also, in the following description, "storage device" may be at least memory, including memory and persistent storage device.

[0013] Furthermore, in the following description, a "processor" may be one or more processor devices. The at least one processor device may typically be a microprocessor device such as a CPU (Central Processing Unit), but may also be other types of processor devices such as a GPU (Graphics Processing Unit). The at least one processor device may be a single-core or multi-core. The at least one processor device may be a processor core. The at least one processor device may also be a processor device in a broader sense, such as a hardware circuit (e.g., an FPGA (Field-Programmable Gate Array) or an ASIC (Application Specific Integrated Circuit)) that performs part or all of the processing.

[0014] In the following description, information that gives an output for an input may be described using expressions such as "xxx table," but the information may be data of any structure (for example, structured data or unstructured data) or a learning model such as a neural network that generates an output for an input. Therefore, the "xxx table" may be referred to as "xxx information." In the following description, the structure of each table is an example, and one table may be divided into two or more tables, or all or part of two or more tables may be one table.

[0015] In addition, in the following description, the processing may be described with a "program" as the subject, but since the program is executed by a processor to perform a defined process using a storage device and / or an interface device, etc. as appropriate, the subject of the processing may be the processor (or a device such as a controller having the processor). The program may be installed in a device such as a computer from a program source. The program source may be, for example, a program distribution server or a computer-readable (e.g., non-transitory) recording medium. In the following description, two or more programs may be realized as one program, or one program may be realized as two or more programs.

[0016] In the following description, the term "storage system" includes a group of nodes (e.g., a distributed system) having a multi-node configuration with multiple storage nodes each having a storage device. Each storage node may have one or more RAID (Redundant Array of Independent (or Inexpensive) Disks) groups, but may typically be a general-purpose computer. One or more computers may be constructed as SDx (Software-Defined anything) by each of the one or more computers executing predetermined software. For example, SDS (Software Defined Storage) or SDDC (Software-defined Datacenter) may be adopted as SDx. For example, a storage system as SDS may be constructed by each of one or more general-purpose computers executing software having a storage function. Also, one storage node may execute a virtual computer as a host computer and a virtual computer as a storage control device of the storage system (typically, a device that inputs and outputs data to and from a storage device unit in response to an I / O request). Also, it may be on-premise or on cloud, or a hybrid of the two.

[0017] In the following description, a "volume" may be written as a "VOL." "VOL" is an abbreviation for logical volume and may be a logical storage device. A VOL may be an actual VOL (RVOL) or a virtual VOL (VVOL). An "RVOL" may be a VOL based on physical storage resources (e.g., one or more RAID groups) of a storage system that provides the RVOL. A "VVOL" may be, for example, a capacity-expanded VOL (TPVOL). A TPVOL may be a VOL that is configured with multiple virtual areas (virtual storage areas) and conforms to a capacity virtualization technology (typically Thin Provisioning). A "pool" may be a storage area that is configured with multiple real areas (actual storage areas) based on one or more persistent storage devices (e.g., persistent storage devices in a storage node that manages the pool, or persistent storage devices in a storage node that can communicate with the storage node). When a real area is not allocated to the virtual area (the virtual area of ​​the TPVOL) to which the address specified in the received write request belongs, the storage system may allocate a real area from the pool to that virtual area (write destination virtual area) (even if another real area has already been allocated to the write destination virtual area, a real area may be newly allocated to the write destination virtual area). The storage system may write the write target data associated with the write request to the allocated real area.

[0018] In the following description, common reference symbols are used when describing elements of the same type without distinction, and reference symbols are used when describing elements of the same type with distinction. For example, when describing storage nodes without distinction, they may be described as "storage node 150," and when describing individual storage nodes with distinction, they may be described as "storage node 150A1," "storage node 150B1," and so on.

[0019] Furthermore, in the following description, the "I / O amount" of a storage node may be the amount of I / O generated when the storage node receives one or more I / O commands. At least one of the "number of I / Os" and the "I / O size" may be adopted as the "I / O amount". The "number of I / Os" may be the number of I / O commands received by the storage node, or the number of I / O commands issued based on the one or more received I / O commands. The destination of the issued I / O command may be a storage device within the storage node, or may be another storage node. The "I / O size" may be the total size of data I / O'd when the storage node receives one or more I / O commands. The "I / O amount" may be the write amount, the read amount, or an amount according to both the write amount and the read amount (for example, the write amount and the read amount). The explanation of "write amount" may be the same as the explanation of "I / O amount" in this paragraph, where "I / O" is replaced with "write." Similarly, the explanation of "read amount" may be the same as the explanation of "I / O amount" in this paragraph, where "I / O" is replaced with "read."

[0020] In the following description, a "cluster" refers to two or more storage nodes. Data that is the subject of a write generated in a certain cluster is made redundant (for example, duplicated) and stored in two or more storage nodes in the cluster. A cluster may include an active storage control program 80 and a standby storage control program 80 that takes over the processing of the active storage control program 80 and starts up (failover) when the active storage control program 80 stops. The combination of the active storage control program 80 and the standby storage control program 80 is determined in advance and is arranged in separate storage nodes. In addition, multiple storage control programs 80 belonging to different combinations can be operated on the same processor.

[0021] An embodiment will be described in detail below. EXAMPLES

[0022] FIG. 1 is an explanatory diagram of a storage system according to a first embodiment. The storage system 95 of the first embodiment is a node group including a plurality of storage nodes 150. The storage node 150 is, for example, a computer (for example, a general-purpose computer) that executes predetermined software (for example, SDS software). The storage system 95 is communicably connected to the computation node 100.

[0023] The computing node 100 is a computer that executes an application 110 (application program). The computing node 100 may be a physical computer or a virtual computer (for example, an execution environment such as a virtual machine or a container).

[0024] 1, the computing node 100 and the storage node 150 are different nodes, but one node may serve as two or more of these nodes. For example, the computing node 100 may be included in at least one of the storage nodes 150.

[0025] Each storage node 150 has a set of resources, which are a number of computing resources such as interface devices, storage devices, and processors 70 connected thereto.

[0026] An example of at least a portion of an interface apparatus is port 161. Port 161 is an example of a communication interface device.

[0027] An example of at least a part of a storage device is a disk group 65 that is one or more disks 60. The disk 60 is an example of a storage device (particularly, a persistent storage device).

[0028] An example of at least a part of the processor 70 may be one or more CPUs, and the one or more CPUs have multiple processor cores (hereinafter, cores) 71. Both the CPU and the cores 71 are examples of a processor device.

[0029] The processor 70 uses a plurality of cores 71 to execute programs such as a storage control program 80, an allocation adjustment program 81, and a data redundancy program 82. The storage control program 80 configures volumes, which are logical storage areas, based on the physical storage areas of the disk group 65. When the application 110 requests input / output of data to a volume, the storage control program 80 processes this as input / output of data to the disk group 65. The data redundancy program 82 makes redundant the data input / output to / from the disk group 65 .

[0030] The allocation adjustment program 81 adjusts the number of cores 71 allocated to the storage control program 80 and the data redundancy program 82 according to the attributes of the volume. In FIG. 1, the allocation adjustment program 81 allocates four cores 71 to the storage control program 80 and allocates four cores 71 to the data redundancy program 82 . The allocation adjustment program 81 itself is also executed by one of the cores 71, but since the load is much smaller than that of the storage control program 80 and the data redundancy program 82, allocation on a core-by-core basis is not required.

[0031] The volume attribute is, for example, whether the volume is a compression volume in which the function of compressing and storing data is enabled, or a simplex volume in which the function is disabled or absent and data is stored uncompressed. Compression and decompression are performed by the storage control program 80. The multiple volumes may be a mixture of compressed and uncompressed volumes. The allocation adjustment program 81 refers to an allocation ratio table that associates the ratio of compressed volumes in the entire volume with the ratio of cores 71 to be allocated to each program, and determines the number of cores 71 to be allocated to each program.

[0032] FIG. 2 is an explanatory diagram of the physical configuration of the storage system 95. As shown in FIG. The storage system 95 is composed of a plurality of clusters 200. Each cluster 200 is composed of two or more storage nodes 150. For example, the cluster 200A is composed of storage nodes 150A1 to 150A3, and the cluster 200B is composed of storage nodes 150B1 to 150B3. Each storage node 150 has a memory 90 in addition to the computational resources described with reference to FIG. 1. The memory 90 is connected to the processor 70. Furthermore, each storage node 150 is connected to a management node 120 in addition to the computational nodes 100 described with reference to FIG. 1.

[0033] The management node 120 is a computer that executes management software. The management node 120 may be a physical computer or a virtual computer. The management node 120 manages the overall configuration of the storage system 95, the individual configurations of the storage nodes 150, the status of each storage node 150, and the like.

[0034] In each cluster 200, each storage node 150 communicates with the management node 120, the computation node 100, and other storage nodes 150 via a network. The network includes one or more networks, for example, a first network 51, a second network 52, and a third network 53. The first network 51 is a network used for communication between the storage node 150 and the management node 120. The second network 52 is a network used for communication between the storage node 150 and the computation node 100 (and the storage node 150 in another cluster 200). The third network 53 is a so-called internal network used for communication between the storage nodes 150 in the same cluster 200. The third network 53 exists for each cluster 200. For example, there is a network 53A used for communication between the storage nodes 150A, and a network 53B used for communication between the storage nodes 150B.

[0035] 2, for example, the second network 52 may be a WAN (Wide Area Network) or a LAN (Local Area Network), and each of the first network 51 and the third network 53 may be a LAN. At least one of the first network 51, the second network 52, and the third network 53 may be made redundant. For example, the first network 51 and the second network 52 may be a common network without being separated from each other. The connection standard for any of the networks 51 to 53 may be Ethernet (registered trademark), Infiniband (registered trademark), or wireless. The storage node 150 receives I / O commands from the application 110 via the second network 52 .

[0036] Fig. 3 is an explanatory diagram of a redundant configuration of storage control programs and memories. In Fig. 3, the storage control program 80A1 of the storage node 150A1 is active, and the storage control program 80A2 of the storage node 150A2 is on standby. The processor 70A1 of the storage node 150A1 executes a memory data redundancy program 83A1 in addition to the storage control program 80A1. Similarly, the processor 70A2 of the storage node 150A2 executes a memory data redundancy program 83A2 in addition to the storage control program 80A2.

[0037] When the application 110 of the computing node 100 issues an I / O command to a volume, the active storage control program 80A1 processes the I / O command. The storage control program 80A1 stores the results of the I / O in the memory 90A1.

[0038] The memory data redundancy program 83A1 sends the data that the storage control program 80A1 has stored in the memory 90A1 to the memory data redundancy program 83A2. The memory data redundancy program 83A2 stores the data received from the memory data redundancy program 83A1 in the memory 90A2 of the storage node 150A2. As a result, the data in memory 90A1 and memory 90A2 can be made to match.

[0039] FIG. 4 is an explanatory diagram of data redundancy in an uncompressed volume. In this embodiment, duplication is performed by the Mirror method, but an Ereasure Coding (EC) method using parity may also be adopted. First, an application 110 of a computing node 100 writes user data to an uncompressed volume. A storage control program 80A1 of a storage node 150A1 stores the write data in a buffer. A buffer area in a memory 90A1 is used as this buffer. An address on the uncompressed volume and an address in the disk group 65A1 are associated with each other by an address conversion table 84A1.

[0040] Furthermore, the memory data redundancy program 83A1 of the storage node 150A1 reads the user data from the buffer and sends it to the memory data redundancy program 83A2 of the storage node 150A2. The memory data redundancy program 83A2 duplicates the user data received from the memory data redundancy program 83A1 by writing it to the buffer of the storage control program 80A2. The data is then temporarily stored in the disk groups 65A1 and 65A2, respectively, to make it non-volatile, and the storage control program 80A1 then sends a completion response to the application 110.

[0041] Thereafter, the data redundancy program 82A1 of the storage node 150A1 reads the user data from the buffer, processes the storage function, writes the data to the final storage area of ​​the disk group 65A1, and sends the data redundancy program 82A2 to the storage node 150A2. The data redundancy program 82A2 writes the user data received from the data redundancy program 82A1 to the final storage area of ​​the disk group 65A2.

[0042] In this way, according to the operation of FIG. 4, the user data written to the uncompressed volume can be made redundant both in the buffer of the storage control program 80A and in the group of disks 65.

[0043] 5 is an explanatory diagram of data redundancy in a compressed volume. First, the application 110 of the computing node 100 writes user data to the compressed volume. The storage control program 80A1 of the storage node 150A1 determines whether or not the user data needs to be compressed. If compression is not required, the storage control program 80A1 is stored in an overwrite buffer. The overwrite buffer corresponds to the buffer in FIG. 4. Subsequent processing when compression is not required is the same as in FIG. 4, and therefore description thereof will be omitted.

[0044] If compression is required, the storage control program 80A1 performs compression processing on the user data to generate compressed data and stores the compressed data in the write buffer. The write buffer is an area provided in the memory 90A1 to temporarily store the compressed data. The address of the compressed data on the compression volume and the address in the disk group 65A1 are associated with each other by the compressed data address conversion table 85A1.

[0045] Furthermore, the memory data redundancy program 83A1 of the storage node 150A1 reads the compressed data groups from the write buffer and sends them to the memory data redundancy program 83A2 of the storage node 150A2. The memory data redundancy program 83A2 duplicates the compressed data groups received from the memory data redundancy program 83A1 by writing them to the write buffer of the storage control program 80A2. The compressed data groups are then temporarily stored in the disk groups 65A1 and 65A2, respectively, and made non-volatile, after which the storage control program 80A1 sends a completion response to the application 110.

[0046] Thereafter, the data redundancy program 82A1 of the storage node 150A1 reads the compressed data group from the additional write buffer, performs storage function processing to write the data group to the final storage area of ​​the disk group 65A1, and also sends the data redundancy program 82A2 to the storage node 150A2. The data redundancy program 82A2 writes the compressed data group received from the data redundancy program 82A1 to the final storage area of ​​the disk group 65A2.

[0047] In this way, according to the operation of FIG. 5, the compressed data can be made redundant both in the buffer of the storage control program 80A and in the group of disks 65.

[0048] FIG. 6 is a diagram showing an example of the programs and tables stored in the memory 90. As shown in FIG.

[0049] The memory 90 stores a storage control program 80, an allocation adjustment program 81, a data redundancy program 82, and a memory data redundancy program 83. The memory 90 also stores an address conversion table 84, a compressed data address conversion table 85, a volume configuration management table 86, a core management table 87, a core allocation ratio management table 88, and a number of cores for each program subject to core allocation adjustment management table 89. At least a portion of these programs and tables may be stored on the disk 60.

[0050] 6 may be the memory 90 of each storage node 150, may be the memory 90 of the master storage node 150 for each cluster 200, or may be any specific storage node 150. In addition, at least one table stored in the memory 90 illustrated in FIG. 6 may be saved in the management node 120.

[0051] 7 is a specific example of the address conversion table 84. The address conversion table 84 associates an address on a volume, whether the address is used to store compressed data, an address on an overwrite buffer, and an address on a disk device. Among the addresses on the volume, the addresses used to store compressed data have "no value" for the addresses on the overwrite buffer and the addresses on the disk device.

[0052] 8 is a specific example of the compressed data address conversion table 85. The compressed data address conversion table 85 associates an address on a volume, an address on a write buffer, and an address on a disk device.

[0053] 9 is a specific example of the volume configuration management table 86. The volume configuration management table 86 includes a volume-by-volume configuration information table and an attribute-by-volume statistics table.

[0054] The volume-specific configuration information table associates volume IDs with attributes and capacities. A volume ID is identification information that uniquely identifies a volume. The attribute is "Simplex" if the volume is an uncompressed volume, and "Compression" if the volume is a compressed volume. In FIG. 9, volume ID "0" has the attribute "Simplex" and a capacity of "500 GiB," volume ID "1" has the attribute "Compression" and a capacity of "1 TiB," and volume ID "2" has the attribute "Compression" and a capacity of "1.5 TiB."

[0055] The volume statistics table by attribute indicates the attribute, the number of volumes having the attribute, and the total capacity. In Figure 9, the attribute "Simplex" has the number of volumes "1" and the total capacity "500 GiB". The attribute "Compression" has the number of volumes "2" and the total capacity "2.5 TiB". And the total of all attributes has the number of volumes "3" and the total capacity "3 TiB".

[0056] Fig. 10 is a specific example of a core allocation ratio management table 88. The core allocation ratio management table 88 corresponds to the allocation ratio table of Fig. 1. The core allocation ratio management table 88 associates a storage control program core ratio, a data redundancy program core ratio, and a memory data redundancy program core ratio with the "Compression" ratio.

[0057] In FIG. 10, the "storage control program core ratio:data redundancy program core ratio:memory data redundancy program core ratio" is "1:3:2" when the "Compression" volume ratio is "0%", "1:3:2" when it is "10%", and "4:1:1" when it is "100%". In this way, when the ratio of compressed volumes is high, the core allocation ratio management table 88 allocates more cores 71 to the storage control program 80. Therefore, it is possible to optimize the allocation of cores 71 by taking into consideration the high load required for data compression.

[0058] 11 is a specific example of the core management table 87. The core management table 87 includes a core allocation management table and a core number management table. The core allocation management table is a table in which a core ID for identifying a core 71 is associated with a program running on that core. The number-of-cores management table is a table in which a storage node ID for identifying a storage node 150 is associated with the number of cores 71 operating in that storage node 150 .

[0059] 12 is a specific example of the core allocation adjustment target program-specific core count management table 89. The core allocation adjustment target program-specific core count management table 89 associates the operating core ID and the number of cores for each program. 12, two cores 71 with core ID "1" and core ID "2" are assigned to the storage control program 80. Furthermore, two cores 71 with core ID "3" and core ID "4" are assigned to the data redundancy program 82. Furthermore, two cores 71 with core ID "5" and core ID "6" are assigned to the memory data redundancy program 83.

[0060] Next, the operation of the storage system will be described. FIG. 13 is a flowchart of a write process for an uncompressed volume. First, the application 110 issues a write command to the uncompressed volume (step S101). Next, the storage control program 80 analyzes the write command and obtains an address to write data on the volume (step S102). Next, the storage control program 80 stores the user data in a buffer, and further temporarily stores it on a disk to make it non-volatile (step S103). Next, the storage control program 80 stores the address on the buffer in the address conversion table 84 to correspond to the address on the volume (step S104). Next, the storage control program 80 responds to the application 110 that the write command has been completed (step S105), and ends the process.

[0061] FIG. 14 is a flowchart of a process for destaging uncompressed user data. First, the storage control program 80 stores user data in a buffer on the data redundancy program (step S201). Next, the storage control program 80 refers to the address conversion table 84 (step S202).

[0062] If the address on the disk device does not exist in the address conversion table 84 (step S203; No), the storage control program 80 newly assigns an address on the disk device (step S204). Next, the storage control program 80 stores the address on the disk device in the address conversion table 84 in correspondence with the address (step S205).

[0063] After step S205, or if the address on the disk device exists in the address conversion table 84 (step S203; Yes), the storage control program 80 stores the user data in the data redundancy program 82 (step S206). After that, the storage control program 80 issues a command to the data redundancy program 82 to store the user data at the address on the disk device (step S207).

[0064] The data redundancy program 82 transfers the user data to the data redundancy programs 82 of the other storage nodes 150 (step S208). The data redundancy programs 82 of the own storage node 150 and the other storage nodes 150 store the user data in the disk devices of their respective storage nodes 150 (step S209), and the process ends.

[0065] FIG. 15 is a flowchart of the compressed data write process. First, the application 110 issues a write command to the compressed volume (step S301). Next, the storage control program 80 analyzes the write command and acquires an address on the volume (step S302). Next, the storage control program 80 determines whether compression is necessary (step S303).

[0066] If compression is not required (step S304; No), the storage control program 80 stores the user data in the overwrite buffer, and then temporarily stores it on the disk and makes it non-volatile (step S305). Next, the storage control program 80 stores the address on the overwrite buffer in the address conversion table 84 (step S306), and ends the process.

[0067] If compression is required (step S304; Yes), the storage control program 80 newly assigns an address in the follow-up buffer (step S307). Thereafter, the storage control program 80 compresses the user data (step S308). Next, the storage control program 80 stores the compressed data generated by compressing the user data in the follow-up buffer, and further temporarily stores the data on the disk and makes it non-volatile (step S309). Thereafter, the storage control program 80 stores the address in the follow-up buffer in the compressed data address conversion table 85 (step S310), and ends the process.

[0068] FIG. 16 is a flowchart of a process for destaging compressed data. First, the storage control program 80 stores the compressed data group in a buffer on the data redundancy program (step S401). Next, the storage control program 80 assigns a new address on the disk device (step S402). Next, the storage control program 80 stores the address on the disk device in the compressed data address conversion table 85 (step S403).

[0069] Thereafter, the storage control program 80 stores the compressed data group in the data redundancy program 82 (step S404). Next, the storage control program 80 issues a command to the data redundancy program 82 to store the compressed data group at an address on the disk device (step S405).

[0070] The data redundancy program 82 transfers the compressed data group to the data redundancy program 82 of the other storage node 150 (step S406). The data redundancy programs 82 of the own storage node 150 and the other storage node 150 store the compressed data group in the disk device of each storage node 150 (step S407), and the process ends.

[0071] FIG. 17 is a flowchart of the number of cores adjustment according to the first embodiment. First, the allocation adjustment program 81 checks whether the volume-by-volume configuration information table has been updated (step S501). The allocation adjustment program 81 refers to the volume-by-volume configuration information table and updates the attribute-by-attribute volume statistics table (step S502). After that, the allocation adjustment program 81 refers to the attribute-by-attribute volume statistics table and obtains the number of volumes for each attribute and the total (step S503). Here, the number of volumes for each attribute is obtained, but the configuration may be such that the capacity of the volume for each attribute is obtained.

[0072] After step S503, the allocation adjustment program 81 uses the acquired value to calculate the compressed volume ratio (step S504). For example, when the number of volumes is used, it can be calculated as (compressed volume ratio)=(number of compressed volumes) / (total number of compressed volumes and number of uncompressed volumes).

[0073] After step S504, the allocation adjustment program 81 refers to the core allocation ratio management table and acquires the core allocation ratio at the compressed volume ratio closest to the calculated ratio (step S505). The allocation adjustment program 81 also refers to the core count management table and acquires the total number of cores of the storage node (step S506).

[0074] Thereafter, the allocation adjustment program 81 calculates the target number of cores to be allocated for each program using the acquired core ratio and the total number of cores (step S507). For example, the target number of cores to be allocated for each program is calculated by (target number of cores to be allocated for each program)=(total number of cores)×(core ratio of the program) / (sum of core ratios of each program). Note that it is preferable to round the target number of cores to be allocated to an integer.

[0075] After step S507, the allocation adjustment program 81 performs the core number increase / decrease process for each program (step S508), and ends the process.

[0076] FIG. 18 is a flowchart showing details of the core number increasing / decreasing process. When the core number increase / decrease process starts, the allocation adjustment program 81 refers to the core allocation adjustment program-specific core number management table 89 (step S601). Then, the allocation adjustment program 81 sequentially selects the core allocation adjustment target programs (step S602).

[0077] If the current number of cores for the program selected in step S602 is less than the target number of cores to be allocated to the program (step S603; Yes), the allocation adjustment program 81 increases the number of cores to be allocated to the program (step S604).

[0078] If, for a program selected in step S602, the current number of cores for that program has reached the target number of cores to be allocated for that program (step S603; No) and the current number of cores for that program exceeds the target number of cores to be allocated for that program (step S605; Yes), the allocation adjustment program 81 reduces the number of cores allocated to that program (step S606).

[0079] After step S604, after step S606, or when the current number of cores for a program selected in step S602 is equal to the target number of cores to be allocated for that program (step S605; No), the allocation adjustment program 81 determines whether or not the selection of all programs to be subject to core allocation adjustment has been completed (step S607). If there is an unselected program to be subject to core allocation adjustment (step S607; No), the process returns to step S602. If the selection of all programs to be subject to core allocation adjustment has been completed (step S607; Yes), the allocation adjustment program 81 ends the core number increase / decrease process. EXAMPLES

[0080] In the first embodiment, the case has been described where the allocation of the cores 71 to the programs subject to core allocation adjustment (the storage control program 80, the data redundancy program 82, and the memory data redundancy program 83) is determined according to the ratio of compressed volumes to uncompressed volumes. In the second embodiment, a configuration will be described in which the number of processor cores to be allocated to a program subject to core allocation adjustment is determined according to the number of data inputs / outputs to / from a volume.

[0081] FIG. 19 is an explanatory diagram of the volume configuration management table in the system of the second embodiment. In the storage system of the second embodiment, the volume configuration management table 86 includes a volume-by-volume configuration information table and a volume-by-volume IOPS management table.

[0082] The volume-specific configuration information table associates attributes with volume IDs. Attributes include "Simplex", "Compression", "Snapshot", and "Remote Replication". A volume with the attribute "Snapshot" is set to create a snapshot at a specified time. A volume with the attribute "Remote Replication" is set to create a replica on another node by remote replication. In Figure 19, the volume with volume ID "0" has the attributes "Simplex" and "Snapshot". The volume with volume ID "1" has the attributes "Compression", "Snapshot", and "Remote Replication".

[0083] The volume-specific IOPS management table associates IOPS (the number of inputs / outputs per second) with volume IDs. In Fig. 19, the volume with volume ID "0" has an IOPS of "10,000". The volume with volume ID "1" has an IOPS of "20,000".

[0084] FIG. 20 is an explanatory diagram of an attribute-based I / O processing overhead management table of the system of the second embodiment. The attribute-based I / O processing overhead management table indicates the correspondence between the attributes and the overhead of the programs subject to core allocation adjustment. In Figure 20, for the storage control program 80, the overhead corresponding to the attribute "Simplex" is "100", the overhead corresponding to the attribute "Compression" is "300", the overhead corresponding to the attribute "Snapshot" is "50", and the overhead corresponding to the attribute "Remote Replication" is "5". Furthermore, for the data redundancy program 82, the overhead corresponding to the attribute “Simplex” is “500”, the overhead corresponding to the attribute “Compression” is “100”, the overhead corresponding to the attribute “Snapshot” is “30”, and the overhead corresponding to the attribute “Remote Replication” is “10”. In addition, for the memory data redundancy program 83, the overhead corresponding to the attribute “Simplex” is “200”, the overhead corresponding to the attribute “Compression” is “100”, the overhead corresponding to the attribute “Snapshot” is “50”, and the overhead corresponding to the attribute “Remote Replication” is “5”.

[0085] 21 is a flowchart of the number of cores adjustment in the embodiment 2. When the number of cores adjustment starts in the embodiment 2, the allocation adjustment program 81 first executes a core allocation ratio calculation process (step S701). The core allocation ratio calculation process will be described later in detail.

[0086] After the core allocation ratio calculation process, the allocation adjustment program 81 refers to the number of cores management table and acquires the total number of cores of the storage node (step S702). The allocation adjustment program 81 calculates the target number of cores to be allocated for each program using the calculated core ratio and the total number of cores (step S703). For example, the target number of cores to be allocated for each program may be calculated as follows: (target number of cores to be allocated for each program)=(total number of cores)×(core ratio of the program) / (sum of core ratios of each program).

[0087] After step S703, the allocation adjustment program 81 performs the core number increase / decrease process for each program (step S704), and ends the process. The core number increase / decrease process for each program is the same as in the first embodiment, and therefore the description will be omitted.

[0088] FIG. 22 is a flowchart showing details of the core allocation ratio calculation process. When the allocation adjustment program 81 starts the core allocation ratio calculation process, it refers to the volume-by-volume configuration information table and acquires the attributes of each volume (step S801).

[0089] After step S801, the allocation adjustment program 81 refers to the attribute I / O processing overhead management table and calculates the basic overhead of the storage control program, data redundancy program, and memory data redundancy program for each volume (step S802). The basic overhead can be calculated, for example, as follows. (Basic overhead of storage control program) = (overhead corresponding to the first attribute of the volume) + (overhead corresponding to the second attribute of the volume) + ...

[0090] After step S802, the allocation adjustment program 81 refers to the volume-specific IOPS management table and acquires the IOPS of each volume (step S803). Thereafter, the allocation adjustment program 81 calculates the overhead of the storage control program, the data redundancy program, and the memory data redundancy program for each volume from the calculated basic overhead and the acquired IOPS (step S804). For example, it can be found as follows: (Storage control program overhead for volume ID 0) = (Basic overhead of storage control program for volume ID 0) x (IOPS of volume ID 0)

[0091] After step S804, the allocation adjustment program 81 calculates the core allocation ratios of the storage control program, data redundancy program, and memory data redundancy program from the calculated overhead of the storage control program, data redundancy program, and memory data redundancy program for each volume (step S805), and terminates the core allocation ratio calculation process. For example, it can be found as follows: (storage control program):(data redundancy program):(memory data redundancy program)= (Storage control program overhead for volume ID 0) +... : (Overhead of data redundancy program for volume ID 0)+...: (Volume ID 0 memory data redundancy program overhead) +... EXAMPLES

[0092] In the first and second embodiments, the case has been described in which the allocation of the cores 71 to the programs subject to core allocation adjustment is determined according to the attributes of the volumes. In the third embodiment, a case will be described in which the allocation of the cores 71 is determined depending on the operating state of the storage node 150.

[0093] Fig. 23 is an explanatory diagram of a failover. Fig. 23 shows a configuration in which the storage control programs are made redundant in the storage nodes 150A0 to 150A2. In Fig. 23, the storage node 150A0 fails and is blocked, and a failover occurs from the storage control program 80A0 in the storage node 150A0 to the storage control program 80A1 in the storage node 150A1. Therefore, in the storage node 150A1, an active storage control program and a standby control program were running before the failover, but after the failover, the originally active storage control program and the storage control program that became active from standby due to the failover are running.

[0094] If the cores 71 used by other programs (the data redundancy program 82 and the memory data redundancy program 83) are assigned to the storage control program that has become active due to a failover, the extent of the overall performance degradation will become large. Therefore, the allocation adjustment program 81 of the storage node 150A1 assigns cores 71 to the storage control program that was originally active and to the storage control program that has become active due to a failover, while maintaining the allocation of cores 71 to programs other than the storage control program.

[0095] 24 is an explanatory diagram of a cluster management table used in the embodiment 3. The cluster management table includes a storage node operation state management table and an active-standby correspondence table. The storage node operational state management table associates an operational state with a storage node ID. The operational state indicates the state related to the operation of the storage node 150, such as "blocked" or "normal." The Active-Standby correspondence table shows the redundant configuration of storage nodes. In Fig. 24, an active storage node with ID "0" is associated with a standby storage node with ID "1". Also, an active storage node with ID "1" is associated with a standby storage node with ID "2". Also, an active storage node with ID "2" is associated with a standby storage node with ID "0".

[0096] FIG. 25 is a flowchart showing a procedure for a failover process. First, the storage system 95 detects a failure in any of the storage nodes 150 (step S901). The storage system 95 refers to the storage node operation state management table, and changes the operation state of the storage node in which the failure has been detected to blocked (step S902).

[0097] Thereafter, the storage system 95 refers to the Active-Standby correspondence table and promotes the standby storage control program 80 of another node that corresponds to the active storage control program 80 that was running on the storage node to active (step S903). The storage system 95 executes the allocation adjustment program 81, adjusts the number of cores of the storage node 150 for which the storage control program 80 has been promoted to active (step S904), and ends the process.

[0098] 26 is a flowchart of the number of cores adjustment in the embodiment 3. When the number of cores adjustment starts in the embodiment 3, the allocation adjustment program 81 first executes a core allocation ratio calculation process (step S1001). After the core allocation ratio calculation process, the allocation adjustment program 81 refers to the number of cores management table and acquires the total number of cores of the storage node (step S1002). The allocation adjustment program 81 calculates the target number of cores to be allocated for each program using the calculated core ratio and the total number of cores (step S1003). For example, the target number of cores to be allocated for each program may be calculated as follows: (target number of cores to be allocated for each program)=(total number of cores)×(core ratio of the program) / (sum of core ratios of each program). After step S1003, the allocation adjustment program 81 performs the process of increasing or decreasing the number of cores for each program (step S1004), and ends the process. Here, the case where the number of cores is adjusted in the same manner as in the second embodiment has been described, but the number of cores may be adjusted in the same manner as in the first embodiment.

[0099] 26, the allocation of the number of cores for each program subject to core allocation adjustment is determined. That is, it is determined how many cores 71 are allocated to the storage control program 80. In the third embodiment, further, the number of processor cores to be allocated to the storage control program 80 that was active before the failover (the storage control program 80 that was originally active) and the storage control program 80 that has shifted from standby to active due to the failover (the storage control program 80 that was originally standby) is adjusted.

[0100] FIG. 27 is a flowchart of adjusting the number of cores for a plurality of storage control programs. First, the allocation adjustment program 81 refers to the core number per program target for core allocation adjustment management table, and acquires the number of cores for the storage control program (step S1101). After step S1101, the allocation adjustment program 81 calculates the target number of cores to be allocated to the originally active storage control program 80 (step S1102). For example, this may be calculated as (target number of cores to be allocated to the originally active storage control program)=(current number of cores of the storage control program) / 2. After step S1102, the allocation adjustment program 81 calculates the target number of cores to be allocated to the originally standby storage control program 80 (step S1103). For example, this may be calculated as (target number of cores to be allocated to the originally standby storage control program)=(number of cores in the current storage control program) / 2.

[0101] After step S1103, the allocation adjustment program 81 sets the target number of allocated cores for programs subject to core allocation adjustment other than the storage control program 80 to the same number as the current number of cores (step S1104). After step S1104, the allocation adjustment program 81 performs the core number increase / decrease process for each program (step S1105), and ends the process.

[0102] As described above, the disclosed system is a storage system 95 comprising a plurality of storage nodes 150, each having a processor 70, and a storage device. Each of the processors 70 has a plurality of processor cores (cores 71), and uses the processor cores to execute a plurality of programs for processing data to be input / output to the storage device, provides volumes which are logical storage areas, and adjusts the number of processor cores to be allocated to each of the plurality of programs. Therefore, it is possible to improve the performance of the storage system by appropriately allocating the resources of the storage system, taking into consideration the difference in load due to the attributes of the volume and / or the operating state of the storage node.

[0103] Also, the allocation of processor cores to the programs is changed based on volume attributes, the volume attributes including at least one of the presence or absence of a function to compress and store the data and the presence or absence of a function to generate a copy of the data. This makes it possible to allocate resources with a high degree of accuracy by taking into account the difference in load caused by whether or not data is compressed, and the difference in load caused by duplicating data. The function for generating a replica of the data can use a snapshot creation function or a remote copy function.

[0104] The program also includes a storage control program 80 that provides the volumes and compresses input and output data, the storage control program 80 providing a plurality of volumes including compressed volumes that compress the data and uncompressed volumes that store the data uncompressed, and the processor adjusts the number of processor cores to be assigned to the storage control program 80 based on the number of compressed volumes and uncompressed volumes. Therefore, even when compressed volumes and uncompressed volumes are mixed, sources can be appropriately allocated and the performance of the storage system can be improved.

[0105] Furthermore, the disclosed system determines the number of processor cores to be allocated to the storage control program 80 according to the attributes of the volume and the number of data inputs and outputs to the volume. This allows the allocation of processor cores to be dynamically changed in response to fluctuations in input / output.

[0106] In addition, the disclosed system determines the basic I / O overhead of each program for each of the multiple volumes provided by the storage control program 80 in accordance with the attributes of the volume, calculates the overhead for each program of each volume from the basic I / O overhead and the number of data I / Os, adds up the calculated overhead for each program, and determines the allocation of the processor cores from the ratio of the added overheads for each program. This allows resources to be allocated appropriately by taking into account volume attributes and tracking input / output fluctuations.

[0107] In addition, in the disclosed system, an active storage control program and a standby storage control program are running on the same processor of the storage node, and when the standby storage control program transitions to active due to a failover, the number of processor cores allocated to the storage control program 80 that was active before the failover and the storage control program 80 that transitioned from standby to active due to the failover is adjusted. This allows resources to be allocated in response to a failover, minimizing performance degradation. The programs also include a storage control program that provides the volume and compresses input and output data, and a data redundancy program that makes the data redundant and stores it in multiple storage devices, and as the number of functions of the attributes of the volume increases, more cores are allocated to the storage control program and fewer cores are allocated to the data redundancy program. This allows resources to be allocated in accordance with the function of the volume attributes.

[0108] The programs also include a data redundancy program for making the data redundant and storing it in multiple storage devices, and while maintaining the ratio of processor cores allocated to the storage control program 80 and the data redundancy program 82, the number of processor cores allocated to the storage control program that was active before the failover and the storage control program that has shifted from standby to active due to the failover is adjusted. This prevents the failover from affecting the operation of programs other than the storage control program 80, thereby improving performance.

[0109] The present invention is not limited to the above-mentioned embodiment, and various modifications are included. For example, the above-mentioned embodiment is described in detail to easily explain the present invention, and is not necessarily limited to the embodiment having all the described configurations. Moreover, the present invention is not limited to the deletion of the configurations, and it is also possible to replace or add the configurations. [Explanation of symbols]

[0110] 60: disk, 65: disk group, 70: processor, 71: core, 80: storage control program, 81: allocation adjustment program, 82: data redundancy program, 83: memory data redundancy program, 84: address conversion table, 85: address conversion table for compressed data, 86: volume configuration management table, 87: core management table, 88: core allocation ratio management table, 89: number of cores per program subject to core allocation adjustment management table, 90: memory, 95: storage system, 100: computing node, 110: application, 120: management node, 150: storage node, 161: port

Claims

1. A storage system including a plurality of storage nodes each having a processor and a storage device, each of the processors has a plurality of processor cores, and executes a plurality of programs using the processor cores to process data to be input to and output from the storage device; It provides volumes, which are logical storage areas. Adjusting the number of processor cores to be assigned to each of the plurality of programs A storage system comprising:

2. 2. The storage system according to claim 1, changing an allocation of processor cores to the programs based on the attributes of the volumes; 2. A storage system according to claim 1, wherein the attributes of the volume include at least one of a function for compressing the data and a function for generating a copy of the data.

3. 3. The storage system according to claim 2, The storage system according to claim 1, wherein the function for generating a replica of data is a snapshot creation function or a remote copy function.

4. 3. The storage system according to claim 2, the programs include a storage control program that provides the volumes and compresses input and output data; the storage control program provides a plurality of volumes including a compressed volume that compresses and stores the data, and an uncompressed volume that stores the data uncompressed, The storage system according to claim 1, wherein the processor adjusts the number of processor cores to be allocated to the storage control program based on the number of compressed volumes and the number of uncompressed volumes.

5. 5. The storage system according to claim 4, A storage system comprising: a storage control program that determines the number of processor cores to be allocated to the storage control program in accordance with an attribute of the volume and the number of data inputs and outputs to the volume.

6. 6. The storage system according to claim 5, A storage system characterized by determining a basic input / output overhead for each program for each of a plurality of volumes provided by the storage control program in accordance with the attributes of the volume, calculating an overhead for each program for each volume from the basic input / output overhead and the number of data inputs / outputs, adding up the calculated overhead for each program, and determining the allocation of the processor cores from the ratio of the added overheads for each program.

7. 5. The storage system according to claim 4, A storage system characterized in that an active storage control program and a standby storage control program are running on the same processor of the storage node, and when the standby storage control program transitions to active due to a failover, the number of processor cores allocated to the storage control program that was active before the failover and the storage control program that has transitioned from standby to active due to the failover is adjusted.

8. 3. The storage system according to claim 2, The program includes: a storage control program that provides the volume and compresses input and output data; a data redundancy program for making the data redundant and storing the data in a plurality of storage devices; Includes: As the number of functions of the attributes of the volume increases, more cores are assigned to the storage control program and fewer cores are assigned to the data redundancy program. A storage system comprising:

9. 9. The storage system according to claim 8, the programs include a data redundancy program for making the data redundant and storing the data in a plurality of storage devices; A storage system characterized by adjusting the number of processor cores allocated to a storage control program that has been active since before the failover and a storage control program that has transitioned from standby to active due to the failover, while maintaining the ratio of processor cores allocated to the storage control program and the data redundancy program.

10. A method for managing a storage system including a plurality of storage nodes each having a processor and a storage device, comprising: each of the processors has a plurality of processor cores, and executes a plurality of programs using the processor cores to process data to be input to and output from the storage device; It provides volumes, which are logical storage areas. Adjusting the number of processor cores to be assigned to each of the plurality of programs A method for managing a storage system.

Citation Information

Patent Citations

  • Storage system and resource allocation control method

    JP2021026659A