Storage system and data processing method
By building redundant group control software in the storage system, a quick response to the host's write request is achieved when a node fails, solving the problem of long host response time in the existing technology and improving the system's response performance and reliability.
Patent Information
- Application Number
- CN202210151166.8
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2021-06-16
- Filing Date
- 2022-02-15
- Publication Date
- 2025-10-21
- Estimated Expiration
- 2042-02-15
AI Technical Summary
In existing software-defined storage systems, the host takes a long time to respond when a node fails, and cannot quickly reply to indicate a successful write.
In the storage system, the control software for building the redundant group is configured in different storage nodes. When the active control software receives a write request, it stores the data in duplicate in the cache, responds to the write completion in the upper device, and stores the data in redundant form in the storage device.
Through data redundancy processing, the host's response performance is improved, the response time when a node fails is reduced, and the reliability and stability of the system are enhanced.
Smart Images

Figure CN115480909B_ABST
Abstract
Description
Technical Field
[0001] The present invention relates to a storage system and a data processing method. Background Art
[0002] Currently, technologies for constructing storage systems using software (Software Defined Storage: SDS) have been proposed.
[0003] For example, Patent Document 1 states the following: "In a storage system having multiple storage nodes, each storage node is provided with one or more storage devices each providing a storage area, and one or more control software programs for reading and writing requested data in the corresponding storage devices in response to a request from a superior device. Each control software program maintains predetermined structural information required for reading and writing the requested data in the corresponding storage device in response to the request from the superior device. The plurality of control software programs are managed as a redundant group, and the structural information maintained by each control software program belonging to the same redundant group is synchronously updated. The plurality of control software programs constituting the redundant group are respectively configured on different storage nodes to balance the load on each storage node."
[0004] Prior art literature
[0005] Patent Literature
[0006] Patent Document 1: Japanese Patent Application Publication No. 2019-101703 Summary of the Invention
[0007] Technical problem to be solved by the invention
[0008] Using the technology described in Patent Document 1, a storage system capable of continuing reading and writing data even when a node failure occurs in an SDS can be constructed. However, because data must be written to the drives of multiple storage nodes for redundancy, the time required to send a successful write response to the host is long. The present invention aims to provide a storage system that can also shorten the response time to the host in such a system.
[0009] Technical means to solve the problem
[0010] To solve the above-mentioned problem, the present invention provides a storage system comprising a plurality of storage nodes and one or more storage devices each providing a storage area, wherein the storage nodes comprise: one or more control software, which reads and writes the requested data in the corresponding storage device in response to a request from an upper-level device; and a cache, which stores the cache data involved in the reading and writing, wherein the plurality of control software constitutes a redundant group, and each of the control software belonging to the same redundant group is respectively configured on a different storage node. Among the plurality of control software constituting the redundant group, the control software in an active state capable of processing a request from the upper-level device, upon receiving a write request, writes the data requested by the write request into the cache of the storage node configured with the active control software and into the cache of the storage node configured with the inactive control software belonging to the same redundant group, thereby duplicating the data, responds to the upper-level device with a completion of the write, and stores the data written to the cache redundantly in the storage device.
[0011] In addition, a data processing method in a storage system is provided, in which a plurality of control software constituting a redundant group are dispersedly configured in a plurality of storage nodes, the data processing method comprising: a step in which an active control software among the plurality of control software constituting the redundant group receives a write request from an upper-level device; a step in which the active control software writes the data requested by the write request into a cache of a storage node configured with the active control software and a cache of a storage node configured with an inactive control software belonging to the same redundant group to duplex the data; and a step in which the active control software responds to the upper-level device indicating that the write is complete and redundantly stores the data written to the cache in the storage device.
[0012] Effects of the Invention
[0013] The present invention can improve the host response performance. Other technical problems, technical features and technical effects than those mentioned above will be made clear by the following description of the embodiments. BRIEF DESCRIPTION OF THE DRAWINGS
[0014] Figure 1 This is a system configuration diagram showing the entire storage system according to the first embodiment.
[0015] Figure 2 This is a diagram showing an example of the physical structure of a storage node.
[0016] Figure 3 This is a diagram showing an example of the logical structure of a storage node.
[0017] Figure 4This is a diagram showing an example of a storage area managed by the data protection control unit.
[0018] Figure 5 It is a diagram for explaining the outline of the present invention.
[0019] Figure 6 This is an example of a non-volatile memory structure diagram.
[0020] Figure 7 This is a diagram showing an example of a software module structure.
[0021] Figure 8 This is a diagram showing an example of a cache directory.
[0022] Figure 9 This is an example of a storage control unit management table.
[0023] Figure 10 This is a flowchart showing the reading process.
[0024] Figure 11 This is a flowchart showing the write process.
[0025] Figure 12 This is a flowchart of asynchronous destage processing.
[0026] Figure 13 This is a flowchart of failover processing.
[0027] Figure 14 It is a flowchart of the staging process.
[0028] Figure 15 This is a flowchart of the off-stage processing.
[0029] Figure 16 It is a software module diagram of the second embodiment.
[0030] Figure 17 FIG. 1 is a diagram showing the structure of the nonvolatile memory in the second embodiment. DETAILED DESCRIPTION
[0031] An embodiment of the present invention will be described in detail below with reference to the accompanying drawings. This embodiment relates to a storage system including, for example, a plurality of storage nodes, each of which has one or more SDSs installed.
[0032] [Example 1]
[0033] (1) First embodiment
[0034] (1-1) Configuration of the Storage System of the Present Embodiment
[0035] Figure 1 This is a system configuration diagram showing the entire storage system according to the first embodiment.
[0036] Figure 1 The storage system 100 shown includes, for example, multiple host devices 101, multiple storage nodes 103, and a management node 104. The host devices 101, storage nodes 103, and management nodes 104 are connected to each other via a network 102 constructed using Fiber Channel, Ethernet (registered trademark), LAN (Local Area Network), or the like.
[0037] The host device 101 is a general-purpose computer device that sends read requests or write requests (hereinafter collectively referred to as I / O (Input / Output) requests) to the storage node 103 based on user operations, requests from installed applications, etc. Alternatively, the host device 101 may be a virtual computer device such as a virtual machine.
[0038] The storage node 103 is a computer device that provides a storage area for reading and writing data to the host device 101. The storage node 103 is, for example, a general-purpose server device.
[0039] The management node 104 is a computer device used by the system administrator to manage the entire storage system 100. The management node 104 manages multiple storage nodes 103 as a group called a cluster. Figure 1 , an example in which only one cluster is provided is shown, but a plurality of clusters may be provided in the storage system 100 .
[0040] Figure 2 This is a diagram showing an example of the physical structure of the storage node 103.
[0041] The storage node 103 includes a CPU (Central Processing Unit) 1031 , a volatile memory 1032 (Volatile Memory), a non-volatile memory (Non-Volatile Memory) 1035 , a plurality of storage devices 1033 (Drives), and a communication device 1034 (NIC: Network Interface Card).
[0042] CPU 1031 is the processor responsible for controlling the operations of the entire storage node. Volatile memory 1032 is composed of volatile semiconductor memory such as SRAM (Static RAM (Random Access Memory)) and DRAM (Dynamic RAM). Non-volatile memory 1035 is composed of NVRAM (Non-Volatile RAM) and NAND flash memory. Volatile memory 1032 and non-volatile memory 1035 are used to temporarily store various programs and required data. By executing the programs stored in volatile memory 1032 and non-volatile memory 1035, CPU 1031 executes various processes for the entire storage node 103, as described below.
[0043] The storage device 1033 is composed of one or more large-capacity nonvolatile storage devices such as an SSD (Solid State Drive), a SAS (Serial Attached SCSI (Small Computer System Interface)) hard disk drive, or a SATA (Serial ATA (Advanced Technology Attachment)) hard disk drive. The storage device 1033 provides a physical storage area for reading or writing data in response to I / O requests from the host device 101.
[0044] The communication device 1034 is an interface for the storage node 103 to communicate with the host device 101, other storage nodes 103, or the management node 104 via the network 102. The communication device 1034 is composed of, for example, a NIC or FC card. The communication device 1034 performs protocol control when communicating with the host device 101, other storage nodes 103, or the management node 104.
[0045] Figure 3 This is a diagram showing an example of the logical structure of the storage node 103.
[0046] The storage node 103 includes a front-end driver 1081 (Front-end driver), a back-end driver 1087 (Back-end driver), one or more storage control units 1083 (Storage Controller), and a data protection control unit 1086 (Data Protection Controller).
[0047] The front-end driver 1081 is composed of software and has the function of controlling the communication device 1034 and providing the CPU 1031 with an abstracted interface for communication between the host device 101 , other storage nodes 103 , or the management node 104 and the storage control unit 1083 .
[0048] The backend driver 1087 is composed of software, and its function is to control each storage device 1033 in its own storage node 103 and provide the CPU 1031 with an abstracted interface for communicating with each storage device 1033 .
[0049] The storage control unit 1083 is software that functions as a controller of the SDS. The storage control unit 1083 receives an I / O request from the host device 101 and sends an I / O command corresponding to the I / O request to the data protection control unit 1086. In addition, the storage control unit 1083 has a logical volume composition function. The role of the logical volume composition function is to establish an association between the logical block (Logical Chunk) composed by the data protection control unit and the logical volume provided to the host. For example, a direct mapping method can be adopted (the logical block and the logical volume are associated with each other in a 1:1 manner, so that the address of the logical block and the address of the logical volume are the same) or a virtual volume function (Thin Provisioning) method can be adopted (the logical volume and the logical block are divided into small-sized areas (pages), and the addresses of the logical volume and the logical block are associated with each other in page units).
[0050] In this embodiment, each storage control unit 1083 installed in a storage node 103 is managed as a pair with another storage control unit 1083 arranged in another storage node 103 to form a redundant structure. Hereinafter, this pair is referred to as a storage control unit group 1085 .
[0051] Figure 3 The example in which two storage control units 1083 form one storage control unit group 1085 is shown. The following description also assumes that two storage control units 1083 form the storage control unit group 1085, but three or more storage control units 1083 may form one redundant configuration.
[0052] In the storage control unit group 1085, one storage control unit 1083 is set to a state in which it can receive I / O requests from the host device 101 (a state in which the system is currently in use, hereinafter referred to as active mode). In the storage control unit group 1085, another storage control unit 1083 is set to a state in which it cannot receive I / O requests from the host device 101 (a state in which the system is in standby mode, hereinafter referred to as standby mode).
[0053] Furthermore, in the storage control unit group 1085, if a failure occurs in a storage control unit 1083 set to active mode (hereinafter referred to as the active storage control unit) or in a storage node 103 equipped with the active storage control unit, the state of the storage control unit 1083 previously set to standby mode (hereinafter referred to as the standby storage control unit) is switched to active mode. This allows the standby storage control unit to take over I / O processing previously performed by the active storage control unit if the active storage control unit becomes inoperable.
[0054] The data protection control unit 1086 is composed of software, and its function is to allocate a physical storage area provided by a storage device 1033 within its own storage node 103 or within another storage node 103 to each storage control unit group 1085, and to read or write specified data in the corresponding storage device 1033 in response to the above-mentioned I / O command provided from the storage control unit 1083.
[0055] In this case, when the data protection control unit 1086 allocates a physical storage area provided by a storage device 1033 within another storage node 103 to the storage control unit group 1085, it cooperates with the data protection control unit 1086 installed on the other storage node 103 to exchange data with the data protection control unit 1086 via the network 102, thereby reading or writing data in its storage area in response to an I / O command provided from the active storage control unit of the storage control unit group 1085.
[0056] Figure 4 This is a diagram showing an example of a storage area managed by the data protection control unit 1086.
[0057] like Figure 4 As shown, the data protection control unit 1086 divides the physical storage area provided by the storage device 1033 in each storage node 103 into physical storage areas 1092 of a predetermined size (hereinafter referred to as physical blocks (Physical Chunks)) for management.
[0058] In addition, the data protection control unit 1086 associates a dedicated pool with each storage control unit group 1085, and appropriately allocates logical storage areas of the same size as physical blocks to these pools, namely logical storage areas 1091 (hereinafter referred to as logical chunks), and associates one or more physical blocks with each logical block.
[0059] Furthermore, one or more virtual logical volumes (hereinafter referred to as virtual volumes or volumes) are defined on the pool of each storage control unit group 1085 , and these virtual volumes are provided to the host device 101 as host volumes.
[0060] When the host device 101 writes data on the virtual volume, it sends a write request to any storage node 103 in the corresponding cluster, wherein the write request specifies the identifier (LUN (Logical Number Unit)) of the virtual volume (hereinafter referred to as the write object volume) that is the write target of the data, and the storage area in the write object volume that is the write target of the data (hereinafter referred to as the write target storage area).
[0061] The front-end driver 1081 of the storage node 103 that receives the write request is associated with (determined by) the storage control unit group 1085 via the write object volume and pool specified in the received write request, and transmits the write request and the data of the write object (hereinafter referred to as write data) sent from the host device 101 together with the write request to the front-end driver 1081 of each storage node 103 of the active storage control unit or the standby storage control unit configured with the storage control unit group 1085.
[0062] Then, the front-end driver 1081 of the storage node 103 that receives the write request and write data passes the write request and write data to the storage control unit 1083 of the storage control unit group 1085 associated with (determined by) the write target volume and pool specified in the write request.
[0063] Then, the active storage control unit in the storage control unit 1083 that receives the write request and write data allocates a storage area (hereinafter referred to as a logical area) as needed from the logical blocks constituting the pool associated with the write target volume to the write target storage area within the write target volume.
[0064] In addition, the active storage control unit generates an I / O command as a write command, and sends the generated I / O command together with the write data to the data protection control unit 1086 in its own storage node 103, wherein the write command is an I / O command obtained by converting the address of the write target storage area in the write object volume specified in the write request into the block number of the logical block that has allocated the logical area to the write target storage area and the offset position of the logical area.
[0065] When receiving an I / O command and write data, the data protection control unit 1086 stores the data in storage areas at the offset positions within each storage device 1033 that provides each physical block associated with the logical block specified by the I / O command.
[0066] Thus, in the storage system 100, data from the host device 101 is redundantly stored in multiple physical blocks associated with the corresponding logical block. Therefore, the number of physical blocks allocated to a logical block is determined by the redundancy mode settings of the storage system 100.
[0067] For example, in the case of a setting in which data is stored in a dual manner, two physical blocks are associated with one logical block. In the case of a setting in which data is stored in a triple or higher manner or in a multiple manner, in the case of a setting in which redundant data is generated from data and stored as in EC (Erasure-Coding), three or more necessary physical blocks are associated with one logical block.
[0068] On the other hand, when reading data from a virtual volume, the host device 101 sends a read request specifying the LUN of the virtual volume (hereinafter referred to as the read object volume) and the storage area of the read target of the data in the read object volume (hereinafter referred to as the read target area) to any storage node 103 in the cluster including the read object volume.
[0069] The front-end drive 1081 of the storage node 103 that receives the read request is associated with (determined by) the storage control unit group 1085 via the read object volume and pool specified in the received read request, and transmits the read request to each storage node 103 of the active storage control unit or standby storage control unit configured with the storage control unit group 1085.
[0070] Then, the front-end driver 1081 of the storage node 103 that has received the read request passes the read request to the storage control unit 1083 of the storage control unit group 1085 associated with (identified by) the read target volume and pool specified in the read request.
[0071] The active storage control unit in the storage control unit 1083 that receives the read request generates an I / O command as a read command, and sends the generated I / O command to the data protection control unit 1086 in its own storage node 103, wherein the read command is an I / O command obtained by converting the address of the read target area in the read object volume into the block number of the logical block that has allocated the logical area to the read target area and the offset position of the logical area.
[0072] Upon receiving an I / O command, the data protection control unit 1086 reads data from the storage area at the offset specified in the I / O command within the physical block designated as "master" among the physical blocks associated with the logical block specified in the I / O command, and transmits the read data as read data to the active storage control unit that issued the I / O command. The active storage control unit then transmits the read data via the network 102 to the host device 101 that issued the read request.
[0073] (1-2) Allocate physical blocks to logical blocks
[0074] As described above, when a redundancy method is employed in which multiple physical blocks are associated with a single logical block and data is stored in each physical block to achieve data redundancy, from the perspective of data protection, it is desirable to select multiple physical blocks associated with a single logical block from among the physical blocks provided by different storage nodes 103. This is because, for example, if multiple physical blocks within the same storage node 103 are associated with a single logical block, data loss may occur if the storage node 103 cannot read data due to a failure or the like.
[0075] Therefore, in the present storage system 100 , when allocating a logical block to the storage control unit group 1085 and associating multiple physical blocks with the logical block, the data protection control unit 1086 selects multiple physical blocks from the physical blocks provided by multiple different storage nodes 103 .
[0076] (1-3) Write command processing
[0077] Figure 5 This figure illustrates the outline of the present invention. The arrows in the figure represent the data flow for a write I / O command issued by the host and indicate whether the data flow is synchronized with the host I / O. Synchronous with the host I / O means that the processing is performed before a successful response is returned to the host's write command. Conversely, asynchronous with the host I / O means that the processing is performed after a successful response is returned to the host's write command.
[0078] Data written from the host is delivered to the active storage controller (the front-end and back-end drivers are omitted in the figure) via the front-end drivers of each storage node. In this figure, the data is delivered to the active storage controller belonging to storage controller group 1. The storage controller performs a write process, mirroring the written data to cache area 1 on the non-volatile memory configured corresponding to the nodes belonging to the active and standby mode storage controllers of storage controller group 1, and sends a successful response to the host regarding the write command.
[0079] After returning a successful response to the host, the storage control unit invokes the asynchronous destage process of the data protection control unit and transfers the data in the cache area to the data protection control unit. The data protection control unit uses mirroring or EC to store the data redundantly between nodes.
[0080] (1-4) Memory and Data
[0081] Figure 6This is an example of a non-volatile memory structure diagram. A cache area and a cache directory are configured in the non-volatile memory. The cache area stores data written from the host and data read from the host. The cache directory is information used to manage the cache area, and records the address of the corresponding logical volume for each subdivided area of the cache area (called a cache segment). Details are in Figure 8 Instructions.
[0082] The same number of cache directories and cache areas exist in the form corresponding to the storage control unit 1083 configured on the same node. For example, the cache directory corresponding to storage control unit group 1 is cache directory 1, the cache area corresponding to storage control unit group 1 is cache area 1, the cache directory corresponding to storage control unit group 2 is cache directory 2, and the cache area corresponding to storage control unit group 2 is cache area 2.
[0083] The same cache data is stored in the cache areas corresponding to the storage controllers belonging to the same storage controller group, and the same information (mirroring) is also stored in the cache directory that manages the cache data. This mirroring process is performed in the write process described later.
[0084] Figure 7 This is a diagram showing an example of the software module structure of the storage control unit 1083 and the data protection control unit 1086.
[0085] The storage control unit 1083 executes read processing, write processing, asynchronous destage processing, and SC failover processing.
[0086] Read processing is the process of reading the read target data from the cache area or storage device in response to the read command received from the front-end driver. Reading from the storage device is called "staging" and is performed by calling the staging process of the data protection control unit.
[0087] The write process is the process of writing the write target data to the cache area or storage device in response to the write command received from the front-end drive. Writing to the storage device is called "destaging" and is performed by calling the destaging process of the data protection control unit.
[0088] Asynchronous destage processing is the process of writing data from the cache area to the storage device.
[0089] SC failover processing is performed when a storage node within the system fails. In this process, among the storage control units within the storage control unit group, the storage control unit in Standby mode is transferred to Active mode, so that it inherits the structure and cache area of the storage control unit in Active mode originally executed in the failed storage node.
[0090] The data protection control unit 1086 includes staging and destaging processes. Details of each process will be described later.
[0091] The control information is described below. Figures 8 and 9 The table shown is an example of control information.
[0092] Figure 8 This figure shows an example of a cache directory. The cache directory is management information of areas (cache segments) obtained by subdividing the cache area, and has entries corresponding to the cache segments.
[0093] Each entry contains a cache address, a logical volume number, a logical volume address, and an attribute entry. The cache address refers to the address of the cache segment corresponding to each entry on the memory. The logical volume number and the logical volume address indicate which logical volume and which address the data stored in the cache segment is. In the case where the cache segment does not store data, "-" is saved to indicate no value. In the case where the cache segment stores data, the attribute field has a value of "Dirty" or "Clean". Dirty indicates that the data has not been destaged and has not been written to the storage device. Clean indicates that the data has been destaged and is consistent with the value written to the storage device.
[0094] Figure 9 This is an example of a storage control unit management table. In this embodiment, the storage control unit management table is stored in volatile memory, but it can be stored in non-volatile memory, stored in a storage device, or stored in a storage device and then copied to a volatile memory.
[0095] The storage control unit management table has entries corresponding to storage control unit groups. Each entry includes a storage control unit group number, an active placement target node number, and a standby placement target node number. The storage control unit group number uniquely identifies each storage control unit group, while the active placement target node number and the standby placement target node number indicate the nodes to which active and standby mode storage control units belonging to the group are to be placed.
[0096] (1-5) Description of the action
[0097] Figure 10This is an example of a flowchart representing a read process. The read process is performed by the storage control unit. The storage control unit first receives the read command sent from the host via the front-end driver, interprets it, and obtains the logical volume number and logical volume address of the read object (step S101). Next, it determines whether a cache hit occurs (step S102). Specifically, the storage control unit refers to the cache directory and searches for an entry corresponding to the logical volume number and logical volume address in the cache directory. If it exists (hit), the cache address is referenced from the entry, the branch enters "yes", and the data is read from the cache area (step S107), and the data is responded to the host (step S108).
[0098] If there is no entry corresponding to the logical volume number and logical volume address in the cache directory (miss), the branch is taken to "No" and the logical block number / logical block address corresponding to the logical volume / address is calculated (step S103). The staging process is called with the thus calculated logical block number / logical block address as a parameter (step S104). The staging process is executed by the data protection control unit, and its details will be described in detail in Figure 14 As explained in the example, the result of this execution is that the data corresponding to the logical volume number / logical volume address is read from the storage device. The storage control unit determines whether the read data should be stored in the cache (step S105). If it is determined that the data should be stored, it is stored in the cache (step S106) and read from the cache in the same manner as in the case of a cache hit (step S107). If it is determined that the data should not be stored, the data is directly sent to the host without being stored in the cache area (step S108).
[0099] As a judgment condition for whether to store in the cache, for example, a judgment condition is given in which a cache hit rate is counted and the data is not stored in the cache when the cache hit rate is low.
[0100] Furthermore, data stored in the cache during read processing can also be sent to the standby memory for duplication. By duplicating cache data during read processing, the cache contents on the active and standby sides can be made consistent. On the other hand, to reduce the communication load between storage nodes, data stored in the cache during read processing may not be duplicated.
[0101] Figure 11This is an example of a flowchart representing a write process. The write process is performed by the storage control unit. The storage control unit first receives the write command sent from the host via the front-end driver, interprets it, and obtains the logical volume number and logical volume address of the write object (step S201). Next, it is determined whether a cache hit occurs (step S202). Specifically, referring to the cache directory, the entry corresponding to the logical volume number and logical volume address is searched in the cache directory. If it exists (hit), the cache address is referenced from the entry, and the branch enters "yes". Next, the data is saved respectively to the cache area corresponding to the same storage control unit group (located at the same node as the Active and Standby storage control units) (step S207, step S208). Next, in the corresponding cache directory, the attribute of the entry corresponding to the cache segment is updated to dirty data (step S209, step S210). Then, a write success response is sent to the host (step S211).
[0102] In the case of a cache miss, the branch goes to "No" to determine whether the write-through condition is met. If not, the branch goes to "No" and the cache segment is secured. The same process as for a hit is then repeated through steps S207 to S211. Specifically, if the write-through condition is not met, a write-back process is performed, duplicating the cached data before responding to the write completion.
[0103] If the direct write condition is met, the data is stored in a temporary buffer (step S205), and the destage process described below is called. After the destage process is completed, a write success response is sent to the host.
[0104] In this way, direct writing is performed when the direct writing conditions are met, wherein the cached data is not duplicated between the standby side, and writing is performed in the storage device of the storage node configured with active control software and the storage device configured with standby (inactive) control software belonging to the same redundancy group, and then a response to the completion of the write is made.
[0105] As a result, when the write-through conditions are met, the response to the host becomes slower, but the network load between storage nodes can be reduced.
[0106] As direct writing conditions, for example, the following conditions can be used.
[0107] "The communication load between storage nodes exceeds the threshold,"
[0108] "The data size of the write request exceeds the threshold",
[0109] "The load on the processor executing active control software exceeds the threshold,"
[0110] "Consecutive write requests received."
[0111] These conditions may be used alone or in combination. In addition, there is no limitation on the use of conditions other than those shown in the examples, and any conditions may be set.
[0112] Figure 12 This is a flowchart for asynchronous destaging. During asynchronous destaging, the cache directory is searched for entries with the "dirty data" attribute (step S301). If no such entry exists (step S302: "No"), the process terminates immediately. If a dirty entry exists (step S302: "Yes"), destaging is performed for that cache segment (step S303). Upon completion, the entry is deleted from the cache directory (step S304). This deletion is performed on both the active and standby cache directories corresponding to the same storage controller group.
[0113] Figure 13 This is a flowchart of the failover process. In the event of a storage node failure, the process is performed by the storage control unit in Active mode, which is located in the storage control unit group of the node. First, the storage control unit (Standby mode) receives an instruction from the management node 104 to switch to Active mode (step S401). The storage control unit sets the cache of the storage node where its own storage control unit is installed to be valid (step S402), changes the mode of its own storage control unit from Standby to Active, and rewrites the storage control unit management table (step S403).
[0114] Figure 14 This is a flowchart of the staging process. The staging request received from the storage control unit is interpreted to obtain the logical block number and logical block address of the read object (step S501). It is determined whether there is a fault in the storage device that stores the primary physical block of the logical block (step S502). If there is no fault (step S502: "No"), the data is read from the drive that stores the physical block (step S504). In the case of a fault (step S502: "Yes"), redundant data is read from the other physical blocks that constitute the logical block (step S503), the data is restored, and the drive read is performed (step S504). This shows the case where EC protection is adopted, but the recovery method depends on the data protection method performed by the data protection control unit. For example, when mirror protection is adopted, it is sufficient to read from the mirror physical block. After that, the data read by any method is responded to the storage control unit as the caller (step S505).
[0115] Figure 15 This is a flowchart of the destage process. The data protection control unit interprets the destage request received from the storage control unit (step S601) and obtains the logical block number and logical block address of the write target. The data protection control unit creates redundancy for the data through mirroring or EC, saves it to the storage device (step S602), and issues a success response (step S603).
[0116] [Example 2]
[0117] (1) Second embodiment
[0118] The second embodiment is described below. The difference from the first embodiment is that in the second embodiment, there are three storage control units constituting the storage control unit group, and they are arranged in three different storage nodes.
[0119] Figure 16 This diagram shows the software modules of the second embodiment. Three storage controllers are configured in each storage node, and a storage controller group consists of the storage controllers configured in the three nodes. A storage controller group consists of storage controllers in active mode (Active), standby 1 mode (Standby 1), and standby 2 mode (Standby 2). Because there are two standby modes, even if two storage nodes fail, one storage controller in the storage controller group will remain functional, ensuring continued data access.
[0120] Figure 17 This is an example of a nonvolatile memory configuration diagram in the second embodiment. Since the storage control unit is tripled, the cache directory and cache area on the nonvolatile memory are also tripled accordingly.
[0121] As described above, the storage system of the disclosed embodiment includes multiple storage nodes and one or more storage devices that respectively provide storage areas, and is characterized in that the storage nodes include: one or more control software that, in response to a request from a superior device, reads and writes the requested data in the corresponding storage device; and a cache that stores the read and written cache data, wherein the multiple control software constitute a redundant group, and each of the control software belonging to the same redundant group is respectively configured on a different storage node. Among the multiple control software constituting the redundant group, the control software that is in an active state capable of processing requests from the superior device, when receiving a write request, writes the data requested by the write request to the cache of the storage node configured with the active control software and the cache of the storage node configured with the inactive control software belonging to the same redundant group to duplicate the data, responds to the superior device that the write is completed, and then stores the data written to the cache redundantly in the storage device.
[0122] With this configuration and operation, a success response is issued to the host based on the write to the cache, and writing from the cache to the storage device can be performed asynchronously with the host I / O, thereby improving response performance.
[0123] In addition, by duplicating the cache, host responsiveness can be improved while achieving high reliability.
[0124] In addition, according to the disclosed embodiment, the control software in the active state performs write-back processing when the specified conditions are not met. In the write-back processing, a response of the completion of the write is made after the cached data is duplicated. When the specified conditions are met, a direct write processing is performed. In the direct write processing, writing is performed on the storage device of the storage node configured with the control software in the active state, and then a response of the completion of the write is made to the superior device.
[0125] Therefore, it is possible to prevent the network load from being excessively increased due to both the duplication of the cache and writing to the storage device occurring simultaneously.
[0126] In addition, according to the disclosed embodiment, the control software of the active state can use the communication load between storage nodes exceeding a threshold as the prescribed condition.
[0127] By using this condition, the communication load can be suppressed through direct feedback control.
[0128] In addition, the control software of the active state can use the data size requested by the write request exceeding a threshold as the predetermined condition.
[0129] By using this condition, the network load can be predicted in advance based on the data size.
[0130] Alternatively, the predetermined condition may be that the load of a processor executing the control software in the active state exceeds a threshold.
[0131] In this condition, the load of the entire system is used as an indicator representing the network load. Therefore, compared with the case of feeding back the network load, load fluctuation does not occur, stable control can be performed, and load control of the processor itself is also effective.
[0132] Alternatively, the active state control software can use the receipt of consecutive write requests as the predetermined condition.
[0133] By using this condition, it is possible to predict that duplication of the cache and writing to the storage device will occur simultaneously.
[0134] In addition, the redundant group may include two or more inactive control software.
[0135] Furthermore, the data stored in the storage device is redundantly stored, allowing it to be used by both the active and inactive control software. When the inactive control software switches to the active state, the data stored in the storage device and the cached data, which is redundantly stored in the cache of the storage node where the control software is installed, can be used to process subsequent requests. Specifically, if a storage node fails, the control software installed in that storage node causes the other control software in the redundant group to inherit its processing. In this case, by inheriting the cache of the redundant non-volatile memory on the same node, data is not lost even in the event of a storage node failure.
[0136] Furthermore, the present invention is not limited to the above-described embodiments and encompasses various variations. For example, the above-described embodiments are examples provided to facilitate understanding of the present invention and are not intended to limit the present invention to include all of the described structures. Structures may be deleted, replaced, or added.
[0137] In addition, the various structures, functions, processing units, processing schemes, etc. mentioned above can be partially or entirely implemented in hardware, for example, by means of integrated circuit design. In addition, the present invention can also be implemented by the program code of software that implements the functions of the embodiments. In this case, a storage medium recording the program code is provided to a computer, and the program code stored in the storage medium is read by a processor possessed by the computer. In this case, the functions of the aforementioned embodiments are implemented by the program code itself read from the storage medium, and the program code itself and the storage medium storing it constitute the present invention. As a storage medium for providing such a program code, for example, a floppy disk, CD-ROM, DVD-ROM, hard disk, SSD (Solid State Drive), optical disk, optical magneto-disk, CD-R, magnetic tape, non-volatile memory card, ROM, etc. are used.
[0138] Description of Reference Numerals
[0139] 100: Storage system, 101: Host device, 102: Network, 103: Storage node, 104: Management node, 1032: Volatile memory, 1033: Storage device, 1034: Communication device, 1035: Non-volatile memory, 1081: Front-end drive, 1083: Storage control unit, 1085: Storage control unit group, 1086: Data protection control unit, 1087: Back-end drive, 1091: Logical storage area, 1092: Physical storage area.
Claims
1. A storage system comprising a plurality of storage nodes and one or more storage devices each providing a storage area, characterized in that: The storage node includes: One or more control software, which reads and writes requested data in the corresponding storage device in response to a request from a superior device; and A cache that holds cache data involved in the reading and writing, The plurality of control software constitutes a redundancy group, and the control software belonging to the same redundancy group is respectively configured on different storage nodes. Among the plurality of control software constituting the redundant group, the control software in the active state capable of processing requests from the superior device, upon receiving a write request, writes the data requested by the write request into the cache of the storage node configured with the active control software and the cache of the storage node configured with the inactive control software belonging to the same redundant group, thereby duplicating the data, and responds to the superior device that the write is completed. The data written to the cache is stored redundantly in the storage device, wherein: Control software for said active state, If a predetermined condition is not satisfied, a write-back process is performed, wherein a response indicating completion of the write is made after duplication of the cached data. When a predetermined condition is satisfied, a direct write process is performed in which writing is performed on the storage device of the storage node where the control software in the active state is configured, and then a response indicating completion of writing is sent to the upper-level device.
2. The storage system according to claim 1, wherein: The control software for the active state uses the communication load between storage nodes exceeding a threshold as the prescribed condition.
3. The storage system according to claim 1, wherein: The control software in the active state uses the data size requested by the write request exceeding a threshold as the prescribed condition.
4. The storage system according to claim 1, wherein: The predetermined condition is that the load of a processor executing the control software in the active state exceeds a threshold.
5. The storage system according to claim 1, wherein: The control software of the active state uses the receipt of consecutive write requests as the prescribed condition.
6. The storage system according to claim 1, wherein: The redundant group includes two or more inactive control software.
7. The storage system according to claim 1, wherein: The data stored in the storage device is stored redundantly so that the active control software and the inactive control software can use the data. When the control software in the inactive state switches to the active state, the data stored in the storage device and the cache data stored in the cache of the storage node where the control software is installed are used for processing subsequent requests.
8. A data processing method in a storage system, In the storage system, a plurality of control software components constituting a redundant group are distributed across a plurality of storage nodes. The data processing method is characterized by comprising: a step of receiving a write request from a higher-level device by an active control software among the plurality of control software constituting the redundant group; The active control software writes the data requested by the write request into a cache of a storage node where the active control software is configured and into a cache of a storage node where the inactive control software belonging to the same redundancy group is configured, thereby duplicating the data; and The active control software responds to the upper device that the writing is completed, and stores the data written to the cache in a redundant manner in a storage device, wherein: Control software for said active state, If a predetermined condition is not satisfied, a write-back process is performed, wherein a response indicating completion of the write is made after duplication of the cached data. When a predetermined condition is satisfied, a direct write process is performed in which writing is performed on the storage device of the storage node where the control software in the active state is configured, and then a response indicating completion of writing is sent to the upper-level device.
Citation Information
Patent Citations
Storage system and control software arrangement method
JP2019101703A
Storage system and control software deployment method
CN109857445A