Storage system and storage control method

The storage system optimizes control information updates by distinguishing between different types of updates, creating individual and consolidated logs, thereby enhancing performance and reliability.

JP2026011373APending Publication Date: 2026-01-23HITACHI VANTARA LTD
View PDF 8 Cites 0 Cited by

Patent Information

Application Number
JP2024111913
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-07-11
Publication Date
2026-01-23

AI Technical Summary

Technical Problem

Existing storage systems face increased processor, network, and disk loads due to the large amount of logs created during updates of control information with small update sizes and numerous updates, leading to decreased performance.

Method used

A storage system and method that differentiates control information into first and second types based on update size, creating individual logs for the first type and consolidated logs for the second type, reducing log data size and optimizing log creation and storage processes.

Benefits of technology

This approach achieves both high performance and reliability by minimizing the load on processors, networks, and disks during control information updates.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026011373000001_ABST
    Figure 2026011373000001_ABST
Patent Text Reader

Abstract

To provide a storage system having both high performance and high reliability.SOLUTION: When a write request is processed and control information or cache data is updated, a storage controller (for example, the storage control unit 123) can execute a log creation process of creating an update log by adding a header to the updated data and storing the update log in a log buffer. The storage controller creates an update log (normal log 132) by adding a log header to each piece of updated first type of control information in a log creation process when the first type of control information (normal control information) is updated, and creates one consolidated log (consolidated log 137) as an update log for a plurality of pieces of second type of control information in a log creation process when the second type of control information (cache directory) is updated.SELECTED DRAWING: Figure 5
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 storage control method. [Background technology]

[0002] Conventionally, storage systems have adopted a redundant configuration to improve availability and reliability.

[0003] For example, Patent Document 1 discloses a storage system comprising a plurality of storage nodes, each of which has one or more storage devices that provide storage areas and one or more storage control units that read and write requested data from and to the corresponding storage devices in response to a request from a host device. In the storage system disclosed in Patent Document 1, each storage control unit holds predetermined configuration information necessary for reading and writing requested data from and to the corresponding storage device in response to a request from the host device, and a plurality of control software programs are managed as a redundancy group. In the storage system disclosed in Patent Document 1, the configuration information held by each control software program belonging to the same redundancy group is synchronously updated within the redundancy group, and the plurality of control software programs that make up the redundancy group are arranged on different storage nodes so as to distribute the load on each storage node. This realizes a redundant configuration. [Prior art documents] [Patent documents]

[0004] [Patent Document 1] Japanese Patent Application Publication No. 2023-152247 Summary of the Invention [Problem to be solved by the invention]

[0005] The storage system of Patent Document 1 mentioned above is expected to provide a highly reliable storage service that uses a technology for constructing a storage system using software (SDS: Software Defined Storage) to continue reading and writing even in the event of a node failure, and that can efficiently make control information and cache data non-volatile so that they are not lost even in the event of a power outage.

[0006] However, in the storage system of Patent Document 1, when the update size of the control information is small and the number of updates is large (specifically, for example, cache directory information held in a cache directory), the amount of logs created in association with the update of the control information is large, resulting in a high processing load on the processor (CPU). Furthermore, when attempting to make the updates of the control information redundant or non-volatile (storing them on disk), the total amount of management information (header) attached to the update data increases, which also increases the amount of data transferred to the network and disk. In other words, in the storage system of Patent Document 1, in the process of updating the control information, for control information (for example, cache directory information) with a small update size and a large number of updates, the load on the processor, network, disk, etc. increases, which could lead to a decrease in performance.

[0007] The present invention has been made in consideration of the above points, and aims to propose a storage system and storage control method that can achieve both high performance and high reliability even when control information is updated. [Means for solving the problem]

[0008] In order to solve the above problem, the present invention provides a storage system comprising one or more storage nodes each having a volatile memory, a non-volatile storage device, and a storage controller that processes data read from and written to at least one of the memory and the storage device, wherein the memory stores control information for accessing data in the storage device and cache data, and the control information corresponding to the data is updated as the data is written in response to a write request, the control information includes first type control information and second type control information having an update size smaller than that of the first type control information, and when the control information or the cache data is updated in response to the write request, the storage controller adds a header to the updated data and updates it. A storage system is provided which is capable of executing a log creation process that creates a log and stores the created update log in a log buffer of the memory, an update log non-volatile process that stores the update log stored in the log buffer by the log creation process in the storage device and responds to the source of the write request, and a destage process that destages the update log stored in the log buffer of the memory to the storage device, wherein in the log creation process when the first type of control information is updated, the storage controller creates an update log by adding a log header to each piece of updated first type control information and stores it in the log buffer, and in the log creation process when the second type of control information is updated, creates a single consolidated log as an update log related to multiple pieces of second type control information and stores it in the log buffer.

[0009] Furthermore, in order to solve the above problem, the present invention provides a storage control method for a storage system comprising one or more storage nodes, wherein the one or more storage nodes each have a volatile memory, a non-volatile storage device, and a storage controller that processes data to be read from or written to at least one of the memory and the storage device, the memory stores control information for accessing data in the storage device and cache data, the control information corresponding to the data is updated as the data is written in response to a write request, the control information includes first type control information and second type control information having an update size smaller than that of the first type control information, and when the control information or the cache data is updated in response to the write request, the storage controller adds a header to the updated data to create an update log, a log creation step of storing the updated update log in a log buffer of the memory, an update log non-volatilization step in which the storage controller stores the update log stored in the log buffer in the log creation step in the storage device and responds to the source of the write request, and a destaging step in which the storage controller destages the update log stored in the log buffer of the memory to the storage device, wherein in the log creation step when the first type of control information is updated, the storage controller creates an update log by adding a log header to each piece of updated first type control information and stores the update log in the log buffer, and in the log creation step when the second type of control information is updated, the storage controller creates a single consolidated log as an update log related to a plurality of pieces of second type control information and stores the consolidated log in the log buffer. [Effects of the Invention]

[0010] According to the present invention, it is possible to achieve both high performance and high reliability. [Brief explanation of the drawings]

[0011] [Figure 1] 1 is a diagram showing an example of the configuration of a storage system 100 according to a first embodiment of the present invention. [Figure 2] FIG. 2 illustrates an example of the physical configuration of a storage node 103. [Figure 3] FIG. 2 illustrates an example of a logical configuration of a storage node 103. [Figure 4] FIG. 1 is a diagram for explaining an overview of a storage control method in a storage system 100. [Figure 5] 10 is a diagram illustrating a detailed configuration example of an update log created in the storage system 100. FIG. [Figure 6] FIG. 2 is a diagram illustrating an example of the configuration of a memory 112. [Figure 7] FIG. 2 is a diagram illustrating an example of the configuration of a storage device 113. [Figure 8] 10 is a diagram illustrating an example of a software module structure in a storage control unit 123. FIG. [Figure 9] FIG. 2 is a diagram illustrating an example of the configuration of a cache directory 142. [Figure 10] FIG. 10 is a diagram illustrating an example of the configuration of a log header 133. [Figure 11] FIG. 10 is a diagram showing an example of the configuration of a summary log header 138. [Figure 12] 10 is a diagram showing an example of the structure of a log header 136 of a small-sized log 135. FIG. [Figure 13] 10 is a flowchart illustrating an example of a processing procedure for a read process. [Figure 14] 10 is a flowchart illustrating an example of a processing procedure for a write process. [Figure 15] 10 is a flowchart illustrating an example of a processing procedure for asynchronous destage processing. [Figure 16] 10 is a flowchart illustrating an example of a processing procedure for control information update processing. [Figure 17] 10 is a flowchart illustrating an example of a processing procedure for cache data update processing. [Figure 18] 10 is a flowchart illustrating an example of a processing procedure for a normal log creation process. [Figure 19]10 is a flowchart illustrating an example of a processing procedure for a control information update confirmation process. [Figure 20] 10 is a flowchart illustrating an example of a processing procedure for log redundancy processing. [Figure 21] 10 is a flowchart illustrating an example of a processing procedure for log saving processing. [Figure 22] 10 is a flowchart illustrating an example of a processing procedure for log recovery processing. [Figure 23] FIG. 10 is a diagram illustrating a modified example in which the size of information indicating the reflection position of a log is reduced. [Figure 24] FIG. 10 is a diagram for explaining an image of data processing by a compression function. DETAILED DESCRIPTION OF THE INVENTION

[0012] Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.

[0013] Note that the following description and drawings are examples for explaining the present invention, and have been omitted or simplified as appropriate for clarity of explanation. Furthermore, not all of the combinations of features described in the embodiments are necessarily essential to the solution of the invention. The present invention is not limited to the embodiments, and all application examples consistent with the concept of the present invention are included in the technical scope of the present invention. Those skilled in the art can make various additions and modifications to the present invention within the scope of the present invention. The present invention can also be implemented in various other forms. Unless otherwise specified, each component may be plural or singular.

[0014] 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., an NIC and an HBA (Host Bus Adapter)).

[0015] In the following description, "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.

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

[0017] Furthermore, in the following description, a "processor" may refer to 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 another type of processor device 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 also 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 that performs part or all of the processing (e.g., an FPGA (Field-Programmable Gate Array), a CPLD (Complex Programmable Logic Device), or an ASIC (Application Specific Integrated Circuit)).

[0018] In the following description, various types of information may be described using expressions such as "table," "list," "queue," etc., but the various types of information may also be expressed using other data structures (data configurations). To indicate independence from the data structure, "XX table," "XX list," etc. may be referred to as "XX information." When describing the content of each piece of information, expressions such as "identification information," "identifier," "name," "ID," and "number" are used, but these are interchangeable. Also, in the following description, the structure of each table is an example; one table may be divided into two or more tables, or all or part of two or more tables may be one table.

[0019] Furthermore, although the following description may describe processing performed by executing a program, the program is executed by at least one processor (e.g., a CPU) to perform a predetermined process using storage resources (e.g., memory) and / or interface devices (e.g., communication ports) as appropriate, and therefore the processor may be the subject of the processing. Similarly, the subject of the processing performed by executing a program may be a controller, device, system, computer, node, storage system, storage device, server, management computer, client, or host having a processor. The subject of the processing performed by executing a program (e.g., a processor) may include a hardware circuit that performs part or all of the processing. For example, the subject of the processing performed by executing a program may include a hardware circuit that performs encryption and decryption or compression and decompression. The processor operates as a functional unit that realizes a predetermined function by operating in accordance with the program. Apparatuses and systems including a processor are apparatuses and systems that include these functional units.

[0020] A program may be installed on a device such as a computer from a program source. The program source may be, for example, a program distribution server or a non-transitory storage medium readable by a computer. When the program source is a program distribution server, the program distribution server includes a processor (e.g., a CPU) and a non-transitory storage resource, and the storage resource may further store a distribution program and a program to be distributed. Then, the processor of the program distribution server may execute the distribution program, thereby distributing the program to be distributed to other computers. Also, in the following description, two or more programs may be realized as one program, and one program may be realized as two or more programs.

[0021] Furthermore, in the following description, when describing elements of the same type without distinguishing between them, the common portion (the portion excluding the subscript and subscript) of the reference sign including the subscript and subscript may be used, and when describing elements of the same type while distinguishing between them, the reference sign including the subscript and subscript may be used. For example, when describing storage nodes without distinguishing between them, they may be referred to as "storage node 103," whereas when describing individual storage nodes 103 while distinguishing between them, they may be referred to with subscripts such as "storage node 103A" and "storage node 103B." Furthermore, individual elements may be referred to using identifiers (IDs) assigned to the elements in question. Specifically, for example, storage node 103A may be referred to as "storage node #1," and storage node 103B may be referred to as "storage node #2."

[0022] (1) First embodiment (1-1) System configuration Fig. 1 is a diagram showing an example of the configuration of a storage system 100 according to a first embodiment of the present invention. As shown in Fig. 1, the storage system 100 includes, for example, a plurality of host devices 101 (Host), a plurality of storage nodes 103 (Storage Node), and a management node 104. The host devices 101, the storage nodes 103, and the management node 104 are connected to each other via a network 102 configured from a Fibre Channel, Ethernet (registered trademark), a LAN (Local Area Network), or the like.

[0023] The host device 101 is, for example, a general-purpose computer device, and transmits input / output requests such as read requests or write requests (hereinafter, these may be collectively referred to as I / O (Input / Output) requests) to the storage node 103 in response to user operations or requests from implemented application programs, etc. The host device 101 may also be a virtual computer device such as a virtual machine.

[0024] 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.

[0025] The management node 104 is a computer device used by a system administrator to manage the entire storage system 100. The management node 104 manages a plurality of storage nodes 103 as a group called a cluster. Note that while FIG. 1 shows an example in which one cluster is provided, the storage system 100 according to this embodiment may have a plurality of clusters provided within the system.

[0026] Fig. 2 is a diagram showing an example of the physical configuration of the storage node 103. As shown in Fig. 2, the storage node 103 includes, for example, a CPU (Central Processing Unit) 111, a memory 112, a plurality of storage devices 113 (Drives), and a communication device 114 (NIC: Network Interface Card).

[0027] The CPU 111 is a processor that controls the overall operation of the storage node 103. The memory 112 is a volatile storage device, and specifically, is configured by a semiconductor memory such as an SRAM (Static Random Access Memory) or a DRAM (Dynamic RAM). The memory 112 is used to temporarily store various programs and data required to execute these programs. The CPU 111 executes the programs stored in the volatile memory 112, thereby executing various processes of the storage node 103 as a whole, as will be described later.

[0028] The storage device 113 is a non-volatile storage device, and specifically, is configured with one or more types of large-capacity non-volatile storage devices, such as an SSD (Solid State Drive), an SAS (Serial Attached SCSI (Small Computer System Interface)) standard HDD (Hard Disk Drive), or a SATA (Serial ATA (Advanced Technology Attachment)) standard HDD. The storage device 113 provides a physical storage area for reading or writing data in response to an I / O request from the host device 101.

[0029] The communication device 114 is an interface for the storage node 103 to communicate with other nodes (host device 101, management node 104, or other storage nodes 103) via the network 102, and controls the protocol during the communication. Specifically, the communication device 114 is configured, for example, by a NIC, an FC card, or the like.

[0030] Fig. 3 is a diagram showing an example of the logical configuration of the storage node 103. As shown in Fig. 3, the storage node 103 includes a front-end driver 121, a back-end driver 122, one or more storage controllers 123, and a data protection controller 125, as software that provides the CPU 111 with predetermined functions.

[0031] The front-end driver 121 is software that controls the communication device 114 and has the function of providing the CPU 111 (storage control unit 123) with an abstracted interface when communicating with other nodes (host device 101, management node 104, or other storage nodes 103).

[0032] The backend driver 122 is software that controls each storage device 113 in its own storage node 103 and has the function of providing an abstracted interface for communication with each storage device 113 to the CPU 111 (storage control unit 123).

[0033] The storage control unit 123 is software (storage controller) that functions as a controller for SDS (Software Defined Storage). The storage control unit 123 accepts I / O requests from the host device 101 and issues I / O commands corresponding to the I / O requests to the data protection control unit 125. The storage control unit 123 also has a logical volume configuration function that configures logical volumes. The logical volume configuration function is a function that associates logical chunks configured by the data protection control unit 125 with logical volumes provided to the host device 101, and specifically, for example, may be a straight mapping method (a method in which logical chunks and logical volumes are associated one-to-one and the addresses of the logical chunks are the same as the addresses of the logical volume) or a virtual volume method such as thin provisioning (a method in which logical volumes and logical chunks are divided into small-sized areas (pages) and the addresses of the logical volumes and logical chunks are associated with each other on a page-by-page basis).

[0034] Furthermore, in the storage system 100 according to this embodiment, each storage control unit 123 implemented in a storage node 103 is managed as a pair constituting a redundant configuration in combination with a storage control unit 123 arranged in another storage node 103. Such a pair of redundant configurations made up of storage control units 123 of different storage nodes 103 is called a storage controller group 124 (Storage Controller Group).

[0035] 3 shows an example of a redundant configuration in the storage system 100 in which one storage control unit group 124 is configured by two storage control units 123, and this type of configuration example will also be used in other explanations that will be given later. Note that the redundant configuration in the storage system 100 is not limited to this example, and one redundant configuration (storage control unit group 124) may be configured by three or more storage control units 123.

[0036] In the storage control unit group 124, one storage control unit 123 is set to a state (active system state, hereinafter referred to as active mode) in which it can accept I / O requests from the host device 101. In addition, in the storage control unit group 124, the other storage control unit 123 is set to a state (standby system state, hereinafter referred to as standby mode) in which it cannot accept I / O requests from the host device 101.

[0037] In the storage system 100, if a failure occurs in the storage control unit 123 (active storage control unit) set to active mode or in the storage node 103 in which the active storage control unit is located, the active storage control unit 123 may be unable to continue normal operation (it may become difficult for the active storage control unit to continue controlling the storage), and therefore the state of the storage control unit 123 (standby storage control unit) that had been set to standby mode in the corresponding storage control unit group 124 is switched to active mode. By switching in this way, if the active storage control unit becomes unable to operate, the I / O processing that was being executed by the active storage control unit can be taken over by the standby storage control unit of the same storage control unit group 124, thereby improving availability.

[0038] The data protection control unit 125 is software that allocates physical storage areas provided by storage devices 113 within its own storage node 103 or within other storage nodes 103 to each storage control unit group 124, and has the function of reading or writing specified data to the corresponding storage device 113 in accordance with the above-mentioned I / O command given from the storage control unit 123.

[0039] More specifically, when the data protection control unit 125 allocates a physical storage area provided by a storage device 113 in another storage node 103 to the storage control unit group 124, it cooperates with the data protection control unit 125 implemented in that other storage node 103 to exchange data with that data protection control unit 125 via the network 102, thereby reading or writing the data from or to the allocated storage area in accordance with an I / O command given by the active storage control unit of the storage control unit group 124. Note that the data protection control unit 125 is software executed by the processor (CPU 111) of the storage node 103, and is therefore a "storage controller" just like the storage control unit 123.

[0040] 4 is a diagram for explaining an overview of a storage control method in the storage system 100. The storage control unit 123 updates storage control information or cache data for processing in response to an I / O request received from the host device 101 (I / O processing) and various other processing. Note that "updating storage control information or cache data" may also include both updating storage control information and updating cache data, and this also applies to the following explanation.

[0041] The storage control information is control information (storage control information) for realizing various storage functions by the storage system 100 (storage control unit 123), and the storage control information updated by the storage control unit 123 is stored in a control information area 141 on the memory 112. When data is written (including both new writing and overwriting) to the storage system 100 (memory 112 or storage device 113) in response to a write request, the storage control information corresponding to the data is updated. Cache data is data that temporarily stores at least a portion of predetermined information related to the realization of various storage functions by the storage system 100 (storage control unit 123), and for example, user data is treated as cache data. The cache data updated by the storage control unit 123 is stored in a cache data area 143 on the memory 112.

[0042] In addition, when updating storage control information or cache data, the storage control unit 123 of this embodiment updates the control information or cache data in the memory 112 and stores a log of the update in the non-volatile storage device 113, thereby making the updated data non-volatile.

[0043] 4, in order to make the logs nonvolatile, when the storage control unit 123 updates control information, it creates a log (update log) related to the update of the control information in the control information log buffer 144 on the memory 112, and when it updates cache data, it creates a log (update log) related to the update of the cache data in the cache data log buffer 145 on the memory 112. Furthermore, the storage control unit 123 writes the update logs on these log buffers 144, 145 to log areas (control information log area 151, cache data log area 152) on the storage device 113 in an append format (append write format) at a predetermined timing, thereby realizing nonvolatility of the update data. Note that the timing for writing the update log on the memory 112 to the storage device 113 may be immediately executed when the control information or cache data is updated, or may be written asynchronously with the update.

[0044] The update log is information indicating how control information and cache data in memory 112 have been updated, and is made up of the update data itself and a header (log header). The log header includes information indicating the update location (update address), update size, and update sequence relationship (see, for example, FIG. 10). The detailed configuration of the update log will be described with reference to FIG. 5.

[0045] FIG. 5 is a diagram illustrating a detailed configuration example of an update log created in the storage system 100. In the storage node 103 according to this embodiment, the control information managed in the memory 112 includes not only the control information described in FIG. 4 (hereinafter sometimes referred to as normal control information) but also a cache directory (cache directory information). The cache directory (cache directory information) is management information for cache segments, which are areas obtained by dividing the cache area, and has entries corresponding to each cache segment. FIG. 6, which will be described later, shows an example configuration of the memory 112, and a control information area 141, in which the control information is stored, stores a cache directory 142 in addition to normal control information. FIG. 9, which will be described later, illustrates an example configuration of the cache directory 142.

[0046] One of the features of the storage system 100 according to this embodiment is that the format of the log (update log) created is different when updating normal control information or cache data as explained in Fig. 4 and when updating a cache directory as explained below. In Fig. 5, (A) shows a method for creating an update log when updating normal control information or cache data, and (B) shows a method for creating an update log when updating a cache directory.

[0047] First, (A) of Fig. 5 will be described. When normal control information or cache data is updated, the storage control unit 123 creates and attaches a normal log header 133 (a log header that is generated and attached when creating a general update log) to each piece of update data (data 131) to create a normal log 132, and inserts it into a log buffer (the control information log buffer 144 shown in Fig. 6 for the normal log 132 associated with updating normal control information, and the cache data log buffer 145 shown in Fig. 6 for the normal log 132 associated with updating cache data). For example, the data size of the normal log header 133 is 32 bytes (32B) as shown in Fig. 5.

[0048] Next, (B) of Fig. 5 will be described. When the cache directory is updated, the storage control unit 123 generates a small log 135 by generating and attaching a small log header 136 to each piece of updated data (data 134). Furthermore, the storage control unit 123 combines the multiple small logs 135 generated as described above into one data section (summarized log data section 139), generates a log header (summarized log header 138) for this summarized log data section 139, and attaches it to create a summarized log 137, which is then inserted into the log buffer (control information log buffer 144 shown in Fig. 6). Hereinafter, the process of combining multiple small logs 135 (and further attaching the summarized log header 138) to create the summarized log 137 will also be referred to as "summarization."

[0049] As explained above, the normal log 132 is created as an update log accompanying updates to normal control information or cache data, and the summary log 137 is created as an update log accompanying updates to the cache directory. Of these, the normal log 132 accompanying updates to normal control information and the summary log 137 accompanying updates to the cache directory are both inserted into the control information log buffer 144, and therefore, as shown in the lower part of Fig. 5, an arbitrary number of normal logs 132 and summary logs 137 are linked together in the control information log buffer 144 to form a log (update log) 140.

[0050] Now, referring to Figure 5, check the data size of each log.

[0051] In the normal log 132 created in response to an update of normal control information or cache data, 4 bytes (hereinafter, a byte is also abbreviated as "B") are allocated to "flags, etc." that store information such as the log type and valid flag, 4 B to "update size" that stores information about the data size of the data 131, 8 B to "update address" that stores address information for the data 131, 8 B to "Seq#" that stores information about the log sequence number of the normal log 132, and 8 B to a "spare area" that is a spare area used for storing other information, resulting in a data size of 32 bytes (32 B). Note that, as shown in FIG. 10 (described later), the data size of the data 131 is, for example, 32 B, but is not limited thereto and may be less than 32 B or greater than 32 B. However, the data size of the data 131, which is update data of normal control information or cache data, is generally larger than the data size ("4 B" in the example of FIG. 5) of the data 134, which is update data of the cache directory.

[0052] On the other hand, when updating a cache directory, data is updated in units of cache segments into which the cache area is subdivided. Therefore, the data size of one piece of update data (data 134) is significantly smaller (specifically, 4B, for example) than the data size of update data (data 131) in normal control information or cache data updates. Furthermore, for the small-size log 135 corresponding to each piece of data 134, unnecessary log fields are omitted and the storage area of ​​necessary log fields is reduced as much as possible, thereby making the data size smaller than that of the normal log 132. Specifically, in the small-size log 135 illustrated in FIG. 5, the header section for one piece of data 134 (data size 4 bytes) is allocated 4 bits for "flag" and 10 bits for "size" and 4 bytes for "address," achieving a total data size of 6 bytes (details of each field will be described later with reference to FIG. 12). Therefore, the data size of one small-size log 135 is at most 10B, even if the 6B for the header section and the 4B for the data 134 are added together. The summary log 137 is created by combining multiple such small size logs 135 to form a summary log data section 139 and adding a 32B summary log header 138, so that the more small size logs 135 (which can also be read as cache directory update data (data 134)) contained in one summary log 137, the greater the effect of reducing the overall data size due to the consolidation.

[0053] Specifically, the data size of an update log (normal log 132) created in conjunction with an update of one piece of data 131 in normal control information or cache data is 32B+32B=64 bytes. On the other hand, the data size of an update log (summary log 137) created in conjunction with a data update in the cache directory is 32+10n bytes when n small size logs 135 (which may be read as data 134 of the update data) are included in one summary log 137, and the data size per piece of update data is 32 / n+10 bytes. This means that this is significantly smaller than the data size of 64 bytes of the normal log 132.

[0054] 6 is a diagram showing an example of the configuration of the memory 112. As shown in FIG. 6, the memory 112 has a control information area 141, a cache data area 143, a control information log buffer 144, and a cache data log buffer 145.

[0055] The control information area 141 is an area for storing control information (storage control information) for realizing various storage functions. Specifically, in addition to storing the normal control information described above, it also stores a cache directory 142 (information constituting the cache directory 142) which is management information for cache segments.

[0056] The control information log buffer 144 is a log buffer that temporarily stores update logs of control information (storage control information), and more specifically, stores an update log (normal log 132) created in conjunction with updates to normal control information and an update log (summary log 137) updated in conjunction with updates to the cache directory 142. In the control information log buffer 144, the normal log 132 and the summary log 137 may be stored in a linked configuration like the update log 140 described in Fig. 5, or may be stored separately.

[0057] On the other hand, the cache data area 143 is an area for storing cache data. The cache data log buffer 145 is a log buffer that temporarily stores update logs of cache data, and more specifically, stores update logs (normal logs 132) created in association with updates to cache data.

[0058] Although details will be described later, the update logs temporarily stored in the log buffers (control information log buffer 144, cache data log buffer 145) are written to a log area on the nonvolatile storage device 113 at a predetermined timing by the storage control unit 123, and are deleted from the log buffer after the writing is completed. Writing the update logs to the log area on the nonvolatile storage device 113 makes the update data nonvolatile.

[0059] 7 is a diagram showing an example of the configuration of the storage device 113. As shown in FIG. 7, the storage device 113 has a control information log area 151, a cache data log area 152, and a permanent area 153.

[0060] The control information log area 151 and the cache data log area 152 are log areas that are used as backup destinations when update logs are saved to the storage device 113 by the log backup process described below. Update logs temporarily stored in the control information log buffer 144 are written to the control information log area 151, and update logs temporarily updated in the cache data log buffer 145 are written to the cache data log area 152. Details of these log backup processes will be described later.

[0061] The permanent area 153 is an area for storing predetermined data that is to be permanently held in the storage system 100, and stores user data and the like managed by the data protection control unit 125. Specifically, for example, when a data redundancy function is provided by the destaging process described below, compressed user data and the like are made redundant and stored in the permanent area 153.

[0062] Fig. 8 is a diagram for explaining an example of a software module structure in the storage control unit 123. Fig. 8 shows read processing, write processing, asynchronous destage processing, normal log creation processing, log evacuation processing, control information update processing, and cache data update processing as examples of software processing that can be executed under the control of the storage control unit 123, but the storage control unit 123 (CPU 111) can also control other processing that is not shown. Each processing that can be controlled and executed by the storage control unit 123 will be described later with reference to the flowcharts from Fig. 13 onwards.

[0063] (1-2) Data structure 9 is a diagram showing an example of the configuration of the cache directory 142. The cache directory 142 is management information for areas (cache segments) obtained by dividing the cache area, and has entries corresponding to each cache segment.

[0064] In the case of FIG. 9, each entry corresponding to a cache segment is configured to have the following fields: segment number 1421, logical volume number 1422, logical volume address 1423, attribute 1424, data presence / absence bitmap 1425, dirty bitmap 1426, and exclusive word 1427.

[0065] The segment number 1421 indicates the number of the corresponding cache segment. The logical volume number 1422 and logical volume address 1423 indicate which logical volume and which address the data stored in the cache segment belongs to. If no data is stored in the cache segment, the values ​​of each field other than the segment number 1421 will be set to "-", meaning no value.

[0066] The attribute 1424 indicates whether the data stored in the cache segment has been destaged. Specifically, if the data has not yet been destaged (i.e., has not been written to the storage device 113), the value of "Dirty" is stored in the attribute 1424, and if the data has been destaged (i.e., the value matches the data that has been written to the storage device 113), the value of "Clean" is stored in the attribute 1424.

[0067] The data presence bitmap 1425 indicates information for managing where data exists within the cache segment. For example, when the size of a cache segment is 64 KB and the length of an I / O received by the storage node 103 (storage control unit 123) from the host device 101 is 8 KB, data may be partially written to the cache segment (hereinafter also simply referred to as a segment). In such a case, the data presence bitmap 1425 can be used to manage where data exists within the cache segment. Specifically, for example, the data presence bitmap 1425 can be expressed as a sequence of 0s or 1s, with a bit value of "1" corresponding to a position where data exists within the segment and a bit value of "0" corresponding to a position where data does not exist. The unit of each bit can be, for example, 512 B, which is the minimum write unit in SCSI, an example of an I / O protocol from the host device 101.

[0068] The dirty bitmap 1426 indicates information for managing which data in the cache segment is dirty. As with the data presence bitmap 1425, the dirty bitmap 1426 may indicate values ​​in bit units of a predetermined size within the cache segment (segment), and specifically, for example, the dirty bitmap 1426 can be expressed as a sequence of 0s and 1s, with the bit value corresponding to the position where dirty data exists within the segment being "1" and the bit value corresponding to the position where clean data exists being "0".

[0069] The exclusive word 1427 indicates information for managing whether or not any processor (CPU 111) in the storage system 100 has exclusive control over the data in the cache segment. In the storage system 100, when updating information (data) in a cache segment, it is necessary to have exclusive control over the data between processes on other processors operating in parallel, and the exclusive word 1427 is used to enable such processing. The specific value of the exclusive word 1427 is, for example, "0 (0000 in FIG. 9)" when none of the processors (CPU 111) has exclusive access to the data in the cache segment, and "a value other than 0 (non-zero value)" when any of the processors (CPU 111) has exclusive access. Here, the "non-zero value" may be determined according to any rule. For example, when the exclusive word 1427 is represented by a four-digit number, if any processor has exclusive control, the first digit may be "1," and the remaining three digits (second to fourth digits) may contain information that can identify the processor that has exclusive control (for example, "1002" means that exclusive control is being exercised by the processor (CPU 111) of the storage node 103 #2). When updating information in a cache segment, exclusive control is exercised over the data with processes on other processors operating in parallel, for example, by using a CAS (Compare And Swap) instruction or the like to perform an operation such as "if the value is 0, update it to a non-zero value," which ensures that only one processor has updated the exclusive word 1427 in the segment to a non-zero value. This process ensures that one or more updates to the segment are exclusively executed by only one processor.

[0070] Fig. 10 is a diagram showing an example of the configuration of the log header 133. As described above with reference to Fig. 5, the log header 133 is the header portion of the normal log 132 in the update log 140 stored in the log buffer areas (control information log buffer 144, cache data log buffer 145) on the memory 112, and is, for example, data in a table format. Note that the portion of the update log 140 stored in the log areas (control information log area 151, cache data log area 152) on the storage device 113 that corresponds to the header of the normal log 132 may also be considered to have a data configuration similar to that of the log header 133 shown in Fig. 10.

[0071] The log header 133 shown in FIG. 10 is configured to have the following fields: log type 1331 , log sequence number 1332 , update address 1333 , update size 1334 , area type 1335 , and valid flag 1336 .

[0072] The log type 1331 has a value of information (for example, a character string or a number) for identifying the type of the target log. In this example, the log type of the log (normal log 132) created in conjunction with updating normal control information or cache data is set to "normal log," and the log type of the log (summary log 137) created in conjunction with updating the cache directory is set to "summary log." The log sequence number 1332 has a value of a sequence number that is uniquely assigned to the target log.

[0073] The update address 1333 has a value that is the storage address of the update data corresponding to the target log. Specifically, the update data corresponding to the target log (normal log 132) of the log header 133 is normal control information or cache data. The update size 1334 has a value that is the data size of the update data corresponding to the target log. For example, in the case of the normal log 132 shown in FIG. 5, the data size of the data 131, which is the update data, is 32B, so the value of the update size 1334 is "32".

[0074] The area type 1335 has a value that identifies whether the update data corresponding to the target log is control information or cache data. In this example, the character string "control information" or "cache data" is used as the value of the area type 1335, but other identifiers prepared in advance may also be used.

[0075] The valid flag 1336 has a value that indicates the validity of the target log (i.e., whether the target log is currently valid as a log). As an example, the valid flag 1336 has a value that indicates the character string "valid" if the target log is valid, and has a value that indicates the character string "invalid" if the target log is invalid. For example, a situation in which the target log becomes invalid may be when data at the same address is updated and a new log is created.

[0076] Fig. 11 is a diagram showing an example of the configuration of the summary log header 138. As described above with reference to Fig. 5, the summary log header 138 is the header portion of the summary log 137 in the update log 140 stored in the control information log buffer 144 on the memory 112, and is, for example, data in a table format. Note that the portion of the update log 140 stored in the control information log area 151 on the storage device 113 that corresponds to the header of the summary log 137 may also be considered to have the same data configuration as the summary log header 138 shown in Fig. 11.

[0077] The summary log header 138 shown in Fig. 11 is configured to have fields of a log type 1381, a log sequence number 1382, an update address 1383, a total update log size 1384, an area type 1385, and a valid flag 1386. Some of the fields of the summary log header 138 are common to the fields of the log header 133 shown in Fig. 10, and the following explanation will focus on the differences.

[0078] The log type 1381 has a value of information for identifying the type of the target log. While the log type 1331 in the log header 133 was "normal log," the log type 1381 has a value of the character string "summary log." The log sequence number 1382 has a value of a sequence number uniquely assigned to the target log, similar to the log sequence number 1332 in the log header 133. Note that the summary log 137 forms a single update log by integrating, in the data section, multiple logs of data 134 (small size logs 135) whose data update order (write order) is guaranteed without being controlled by differences in log sequence numbers assigned according to the log creation order. Therefore, it is sufficient to assign one log sequence number 1332 to one summary log 137. In other words, the order control information (log sequence numbers 1332) of multiple small size logs 135 included in one summary log 137 can also be considered to be the same. The guarantee of the data update order (writing order) in creating the summary log 137 will be described in detail in the explanation of the "summary end condition" in the control information processing with reference to FIG.

[0079] The update address 1383 indicates information relating to the storage address of the update data corresponding to the target log, similar to the update address 1333 of the log header 133. However, since the summary log 137, which is the target log of the summary log header 138, is an update log that collectively manages multiple update data (multiple small-sized data 134) in the cache directory, the update address 1383 does not have a storage address of specific update data, and instead stores "0xFFFFFFFFFFFFFFFF" representing an invalid value.

[0080] The total update log size 1384 has a value that is the total data size of the data section (i.e., summary log data section 139) in the summary log 137 as the data size of the update data corresponding to the target log. Note that in the multiple small size logs 135 that make up the summary log data section 139, the data size of each header section (log header 136) is a fixed length, so as a modified example, the total data size of the small size logs 135 may be the value of the total update log size 1384.

[0081] The area type 1385 indicates information for identifying whether the update data corresponding to the target log is control information or cache data, similar to the area type 1335 of the log header 133. Since the summary log header 138 treats the cache directory belonging to control information as update data, the area type 1385 has the value "control information."

[0082] The valid flag 1386, like the valid flag 1336 of the log header 133, indicates information for identifying the validity of the target log, and specifically has a value of, for example, a character string such as "valid" or "invalid."

[0083] Fig. 12 is a diagram showing an example of the configuration of the log header 136 of the small size log 135. As described above with reference to Fig. 5, the small size log 135 is a small size log corresponding to one piece of update data (data 134) in the cache directory, and has a log header 136 as its header portion.

[0084] 5, the data length (e.g., 6 B) of the log header 136 of the small size log 135 is smaller than the data length (e.g., 32 B) of the log header 133 of the normal log 132. In this embodiment, by configuring the data size of the log header 136 of the small size log 135 to be small in this way, it is possible to suppress the data size of the small size log 135 (and further, the summary log 137). For this reason, it is preferable that the field configuration of the log header 136 of the small size log 135 be a simpler field configuration than the log header 133 of the normal log 132.

[0085] Specifically, the log header 136 shown in Fig. 12 is configured to have fields for an update offset 1361 and an update size 1362, and can be configured without having fields such as the log type 1331, the log sequence number 1332, the area type 1335, and the valid flag 1336 that the log header 133 shown in Fig. 10 has. Although not shown in the figure, the log header 136 may be configured to further have, in addition to the fields shown in Fig. 12, a field indicating information equivalent to the 6-bit "flag" that the small size log 135 in Fig. 5 has.

[0086] The update offset 1361 is a field that indicates, by an offset value from a predetermined address, the storage location of the update data (data 134) corresponding to the target log (small size log 135). The control information related to the cache directory is a portion of the entire control information, and fits into a space that is smaller than the entire memory space. Therefore, in the log header 136, rather than having an address value as the update address 1333, the data length can be reduced by storing an offset value from the start address of the cache directory space (corresponding to the predetermined address mentioned above) as the update offset 1361. In fact, while the value of the update address 1333 in FIG. 10 is "0x0000001000000000", the value of the update offset 1361 in FIG. 12 is "0x00001000", which allows the data length to be reduced.

[0087] The update size 1362 has a value that is the data size of the update data (data 134) corresponding to the target log (small size log 135). Here, the update size 1362 can also be set to a data size smaller than the update size 1334 in the log header 133 of the normal log 132. For example, while the update size 1334 in the log header 133 requires 32 bits, the update size 1362 in the log header 136 can be realized with 16 bits. This is because the cache directory information is control information that differs from general storage control information (normal control information), and the typical value of the size of one update is a small size of about 4 B. Note that the upper limit of the size of one update in the cache directory information is set to, for example, 1 KB.

[0088] As described above, the log header 136, which is the header portion of the small size log 135, can reduce the number of fields compared to the log header 133 of the normal log 132, and by reducing the size of each field, the overall size of the log header 136 can be significantly reduced compared to the log header 133. Furthermore, the overall data size of the aggregate log 137, which is formed by aggregating multiple small size logs 135, can also be made smaller than the data size of the normal log 132.

[0089] (1-3) Various treatments The following describes in detail the various processes executed in the storage system 100, using the above-described configuration and data as necessary. Unless otherwise specified, the various processes described below can be considered to be executed by the CPU 111 of the storage node 103. In addition, in the following description, there may be expressions such as "calling XX process," which means that a specific software module (program) for executing the "XX process" is called and executed by the processor (CPU 111).

[0090] 13 is a flowchart showing an example of the processing procedure for read processing. The read processing is called when the storage node 103 receives a read I / O command (read command) from the host device 101, and is mainly executed by the storage control unit 123 (more precisely, the active storage control unit).

[0091] According to FIG. 13, first, the storage control unit 123 receives a read command sent from the host device 101 via the front-end driver 121, interprets the command, and obtains the logical volume number and logical volume address of the read target (step S101).

[0092] Next, the storage control unit 123 determines whether or not the data to be read is a cache hit (step S102). Specifically, the storage control unit 123 refers to the cache directory 142 of its own node, and searches the cache directory 142 for an entry corresponding to the logical volume and logical volume address acquired in step S101 (see FIG. 9). The storage control unit 123 determines that there is a cache hit if there is a corresponding entry in the cache directory 142, and determines that there is a cache miss if there is no corresponding entry.

[0093] If it is determined in step S102 that there is a cache hit (YES in step S102), the process proceeds to step S106. On the other hand, if it is determined in step S102 that there is a cache miss (NO in step S102), the process proceeds to step S206 after going through the processes of steps S103 to S105.

[0094] In step S103, the storage control unit 123 calls a staging process. The staging process is a process executed by the data protection control unit 125, and reads data corresponding to the logical volume number and logical volume address of the read target from the permanent area 153 on the storage device 113.

[0095] Then, the storage control unit 123 (which may be the data protection control unit 125) stores the data read from the permanent area 153 in step S103 in the cache data area 143 on the memory 112 (step S104). The data storage in step S104 is performed by the storage control unit 123 setting the non-volatilization necessity to "not necessary" and calling a cache data update process. Details of the cache data update process will be described later with reference to FIG. 17.

[0096] Next, the storage control unit 123 updates the data in the cache directory 142 (step S105). The data update in step S105 is executed by the storage control unit 123 calling a control information update process. Details of the control information update process will be described later with reference to FIG. 16. Note that, similar to when calling the cache data update process in step S104, the storage control unit 123 may call the control information update process in step S105 by setting the non-volatilization necessity to "not required." When the process in step S105 ends, the process proceeds to step S106.

[0097] In step S106, the storage control unit 123 reads the data to be read from the cache data area 143. Specifically, if the process proceeds from YES in step S102 to step S106, the storage control unit 123 can read the data to be read from the cache data area 143 by referencing the cache address from the entry that resulted in a cache hit in step S102. Also, if the process proceeds from NO in step S102 to step S106 via steps S103 to S105, the storage control unit 123 can read the data to be read from the cache data area 143 by referencing the storage destination address of the data in step S104.

[0098] Then, the storage control unit 123 returns the data read in step S106 to the host device 101 (step S107), and the read process is completed.

[0099] 14 is a flowchart showing an example of the processing procedure for write processing. The write processing is called when a write I / O command (write command) is received from the host device 101, and is mainly executed by the storage control unit 123 (more strictly, the active storage control unit).

[0100] According to FIG. 14, first, the storage control unit 123 receives a write command sent from the host device 101 via the front-end driver 121, interprets the command, and obtains the logical volume number and logical volume address of the write target (step S201).

[0101] Next, the storage control unit 123 determines whether the data to be written is a cache hit (step S202). Specifically, the storage control unit 123 refers to the cache directory 142 of its own node, and searches the cache directory 142 for an entry corresponding to the logical volume and logical volume address acquired in step S201. The storage control unit 123 determines that there is a cache hit if there is a corresponding entry in the cache directory 142, and determines that there is a cache miss if there is no corresponding entry.

[0102] If it is determined in step S202 that there is a cache hit (YES in step S202), the cache address is referenced from the cache-hit entry, and the process proceeds to step S204. On the other hand, if it is determined in step S202 that there is a cache miss (NO in step S202), the process proceeds to step S204 after going through the process of step S203.

[0103] In step S203, the storage control unit 123 allocates a new cache segment for caching the write data and updates the cache directory 142. Since the cache directory is a type of control information, the processing of step S203 is executed by the storage control unit 123 by setting the non-volatilization necessity to "necessary" and calling the control information update processing multiple times.

[0104] More specifically, by calling the control information update process multiple times in step S203, the storage control unit 123 newly secures a cache segment that caches the write data, updates the exclusive word 1427 in the cache directory entry (see FIG. 9) that manages the cache segment to a non-zero value (securing the exclusive state of the cache segment), updates the value of the logical volume number 1422 of the write data to be stored, updates the value of the logical volume address 1423 of the write data to be stored, and then updates the exclusive word 1427 to zero (releasing the exclusive state of the cache segment). After completing each of the above processes, the storage control unit 123 references the cache address of the cache segment that caches the write data, and proceeds to step S204.

[0105] In step S204, the storage control unit 123 stores the write data in a predetermined cache address in the cache (cache data area 143) (i.e., the cache address that was hit in step S202, or the cache address of the cache segment that was not hit in step S202 and was secured in step S203) (updating the cache data). The processing of step S204 is executed by the storage control unit 123 by setting the non-volatilization necessity to "necessary" and calling the cache data update processing.

[0106] Next, the storage control unit 123 updates the cache directory 142 in accordance with the update of the cache data in step S204 (step S205). The processing of step S205 is executed by the storage control unit 123 by setting the non-volatilization necessity to "necessary" and calling the control information update processing. Note that, since multiple cache segments may be updated in the cache data area 143 when updating the cache data, multiple entries corresponding to the update may exist in the cache directory 142. Therefore, the update of the cache data in step S205 is executed by calling the control information update processing multiple times for each relevant entry. The fact that the control information update processing may be called multiple times when updating the cache directory 142 applies not only to step S205 but also to step S105 in FIG. 13 described above, step S203 in FIG. 14, and step S304 in FIG. 15 described below.

[0107] More specifically, the processing of step S205 involves multiple calls to the control information update process to update values ​​regarding the presence or absence of data and the presence or absence of dirty data in the entries of the cache directory 142 being processed.The processing procedure is as follows: for each entry being processed, the value of exclusive word 1427 is updated to a "non-zero value", the value of attribute 1424 is updated to "dirty", the bit of data presence bitmap 1425 corresponding to the position where the data was written within the segment is updated to "1", the bit of dirty bitmap 1426 corresponding to the position where the data was written within the segment is updated to "1", and the value of exclusive word 1427 is updated to "zero".

[0108] Next, the storage control unit 123 performs log redundancy processing and log evacuation processing by calling control information confirmation processing (step S206). Details of the control information confirmation processing will be described later with reference to Fig. 19. Finally, the storage control unit 123 returns a write success response to the host device 101 (step S207) and ends the write processing.

[0109] 15 is a flowchart showing an example of the processing procedure for asynchronous destage processing. The asynchronous destage processing is processing for destaging data stored in the memory 112 asynchronously with the processing for making the update log nonvolatile, and is executed by the storage control unit 123 and the data protection control unit 125.

[0110] According to FIG. 15, first, the storage control unit 123 searches the cache directory 142 for an entry whose attribute 1424 is "dirty" (step S301).

[0111] Next, the storage control unit 123 determines whether or not there is an entry whose attribute 1424 is "dirty" (step S302), and if there is a dirty entry (YES in step S302), proceeds to step S303. On the other hand, if there is no dirty entry (NO in step S302), the asynchronous destage process ends.

[0112] In step S303, the storage control unit 123, in cooperation with the data protection control unit 125, executes destage processing for the cache segment corresponding to the entry whose attribute 1424 is "dirty" (hereinafter, the entry in question) (step S303). Specifically, in the destage processing of step S303, the storage control unit 123 and the data protection control unit 125 write data identified from the values ​​of the logical volume number 1422 and logical volume address 1423 of the entry in question to the permanent area 153 on the storage device 113.

[0113] The destaging process according to this embodiment provides various known storage functions (e.g., a thin provisioning function, a snapshot function, a data redundancy function, etc.). The thin provisioning function dynamically allocates capacity at a fixed size in response to writing, and generates a logical-physical translation address that associates logical space with physical space. The snapshot function virtually saves data at a certain point in time (called a snapshot image), and when data is updated, stores only the updated area in a separate area, and generates a logical-physical translation address from the logical space of the snapshot image to the physical space of that separate area for reference. The data redundancy function protects data by creating a copy of the data and storing it in another node, or by creating a redundant code (parity) from the data and storing it in another node, in order to make the data redundant using techniques such as mirroring and EC (Erasure Coding). The thin provisioning function and snapshot function described above are provided by the storage control unit 123, and the data redundancy function is provided by the data protection control unit 125.

[0114] After executing the destage process in step S303, the storage control unit 123 deletes the entry from the cache directory 142 (step S304). The process in step S304 is a process for updating the cache directory 142, and is therefore executed by the storage control unit 123 by setting the non-volatilization necessity to "necessary" and calling the control information update process.

[0115] Finally, the storage control unit 123 invalidates the cache log of the user data (step S305), and ends the asynchronous destage processing. The processing in step S305 is processing to search the log header management table (log header 133 in FIG. 10) of the cache data update log of the user data, and invalidate the user data cache log that specifies the same address range (update address 1333, update size 1334) as the data destaged by the destage processing in step S303 by setting the value of its valid flag 1336 to "invalid."

[0116] Fig. 16 is a flowchart showing an example of the processing procedure for control information update processing. The control information update processing is processing that is called when updating control information in memory 112. When the control information update processing is called, in addition to the memory address, data size, and update value for identifying the control information to be updated, information indicating whether non-volatilization is required (specifically, whether non-volatilization is required or not) is passed. Note that the processing procedure example shown in Fig. 16 is an example of the processing procedure for control information update processing that is executed in a single call. As described in the read processing of Fig. 13 and the write processing of Fig. 14, the control information update processing may be called multiple times in succession, and in such a case, the processing shown in Fig. 16 will be executed consecutively in each control information update processing.

[0117] According to FIG. 16, first, the storage control unit 123 updates the control information stored in the memory 112 based on the memory address, data size, and update value passed at the time of the call (step S401).

[0118] Next, the storage control unit 123 determines whether nonvolatilization is necessary based on the information on nonvolatilization necessity passed at the time of the call (step S402). Only if nonvolatilization is "necessary" in step S402 (YES in step S402), proceed to the processing of step S403 and subsequent steps, and if nonvolatilization is "unnecessary" in step S402 (NO in step S402), end the current control information update processing.

[0119] In step S403, the storage control unit 123 determines whether or not the update log of the control information to be updated is a target for aggregation (in other words, whether or not the update of the control information is an update that involves aggregation processing of the update log). As described above with reference to FIG. 5 etc., in this embodiment, when the cache directory 142 is updated, a plurality of small size logs 135 are aggregated to create the aggregate log 137, so in step S403 it is sufficient to determine whether or not the control information to be updated is a cache directory. As a more specific method of determination, it may be possible to determine whether or not the control information to be updated is a cache directory from the address of the control information to be updated, or it may be possible to specify a parameter indicating whether or not the control information is a target for aggregation when calling the control information update processing from a higher-level process.

[0120] If it is determined in step S403 that the control information is not subject to the summary log (NO in step S403), this means that the control information to be updated is "normal control information" in this embodiment. In this case, the storage control unit 123 invokes a normal log creation process to create an update log corresponding to the update of the control information in step S401 (step S404). The detailed processing procedure will be described later with reference to FIG. 18, but by executing the normal log creation process, a log header for normal control information (corresponding to the log header 133 in FIG. 5) is created, and the control information to be updated is combined as a data section (corresponding to the data 131 in FIG. 5), to create an update log corresponding to the normal control information (corresponding to the normal log 132 in FIG. 5). Then, after step S404 is completed, the control information update process is terminated.

[0121] On the other hand, if it is determined in step S403 that the control information is the target of the summary log (YES in step S403), the storage control unit 123 stores the control information to be updated in a predetermined buffer for summary processing (hereinafter, summary buffer) (step S405). The summary buffer is an area secured in the memory 112 separate from the areas for storing the normal log 132 and the summary log 137, and may be within the control information log buffer 144 or may be a storage area separate from the control information log buffer 144.

[0122] Next, the storage control unit 123 determines whether or not the termination condition of the consolidation process (consolidation termination condition) is satisfied (step S406). The consolidation termination condition means a condition at which a period in which the data update order (write order) can be guaranteed without control based on differences in log sequence numbers (i.e., a period in which a plurality of small-sized data 134 can be consolidated into one consolidation log 137 while guaranteeing the write order) ends, and specifically, for example, is the timing at which the "exclusive state of the cache segment" secured when updating the cache directory is released. The reason why the "timing of releasing the exclusive state" is appropriate as a consolidation termination condition is that when certain control information (cache directory) is updated, other processors operating in parallel with the local processor (CPU 111) will not refer to or update the control information until the timing when the exclusive state of the corresponding cache segment is released (while the exclusive state is set). (Conversely, when control information is updated after the exclusive state is released, the consistency of the control information in the shared memory may be ensured by strictly guaranteeing the order of updates. Therefore, unless a log is created and a sequence number is assigned at the time of the update, the order of data updates will not be guaranteed.) Other consolidation termination conditions include the consolidation buffer becoming full, or the log headers generated for the control information stored in the consolidation buffer reaching (or reaching) the upper limit of the total size that the consolidation log header 138 can have (for example, 32B in the case of FIG. 5), etc.

[0123] In this description, the "summarization end condition" refers to a condition under which the "summarization condition" for permitting the execution of the processes of steps S407 to S410, which will be described later, ends. Specifically, for example, if the summarization end condition is "the timing at which the exclusive state of the cache segment is released," the summarization condition becomes "a state in which the exclusive state of the cache segment is set." If the summarization end condition is not satisfied in step S406, this can be considered as "the summarization condition is satisfied," and therefore the execution of the processes of steps S407 to S410 is permitted. On the other hand, if the summarization end condition is satisfied in step S406, this can be considered as "the summarization condition is no longer satisfied," and therefore the execution of the processes of steps S407 to S410 is not permitted.

[0124] If the consolidation end condition is not met in step S406 (NO in step S406), the storage control unit 123 ends the current control information update process without creating any logs (small size log 135, consolidation log 137).

[0125] On the other hand, if the consolidation termination condition is met in step S406 (YES in step S406), the storage control unit 123 repeatedly executes a process of creating a small log (small log 135 shown in FIG. 5) by adding a small log header (log header 136 shown in FIG. 5; see FIG. 12 for an example configuration) to each piece of update data (control information) stored in the consolidation buffer (steps S407 to S409). By executing the loop process of steps S407 to S409, multiple small logs 135 are created, the number of which is the same as the number of small update data (cache directory data 134) stored in the consolidation buffer.

[0126] After the loop process of steps S407 to S409 is completed, the storage control unit 123 creates one summary log 137 by adding a summary log header 138 (see FIG. 11 for the configuration of the log header) to the multiple small size logs 135 created in the loop process as a data section (the summary log data section 139 shown in FIG. 5) (step S410). At this time, in the summary log 137 to which the same log sequence number is assigned, the multiple small size logs 135 are summarized in the summary log data section 139 in the order in which they were written (in other words, the order in which the update data (data 134) was updated). The summary log 137 created in step S410 is held in the control information log buffer 144 on the memory 112. After step S410 is completed, the control information update process ends.

[0127] 17 is a flowchart showing an example of the processing procedure for cache data update processing. The cache data update processing is processing that is invoked when updating cache data in memory 112. As described with reference to FIG. 5 and other figures, in this embodiment, the update log accompanying updates to the cache directory of the control information is created in a special configuration including multiple small size logs 135 (summary log 137), while the update log accompanying normal updates to control information and the update log accompanying updates to cache data are created in a common configuration (normal log 132).

[0128] Therefore, the cache data update process shown in Fig. 17 has much in common with the control information update process shown in Fig. 16, except that the update target is cache data instead of control information. Specifically, the process of updating the cache data in memory 112 (step S501) and the process of determining whether non-volatilization is necessary (step S502) are the same as the processes of steps S401 and S402 in Fig. 16, except for the difference in the update target. Furthermore, the process is terminated if it is determined in step S502 that non-volatilization is not necessary (NO in step S502), similar to the case of NO in step S402 in Fig. 16.

[0129] If it is determined in step S502 that nonvolatilization is necessary (YES in step S502), the storage control unit 123 creates an update log corresponding to the update of the cache data in step S501 (step S503). The process of step S503 is executed by calling the normal log creation process, similar to step S404 in Fig. 16, and therefore a detailed description thereof will be omitted.

[0130] The difference between the cache data update process and the control information update process is that when it is determined that non-volatilization is necessary, the processes of steps S504 to S506 are performed as follows after the process of step S503.

[0131] First, in step S504, the storage control unit 123 determines whether the update of the cache data in step S501 was an overwrite. Specifically, the storage control unit 123 refers to the log header management table (log header 133 shown in FIG. 10) of the cache data log stored in the cache data log buffer 145 to search for a log having the same address (update address 1333) as the cache data updated in step S501. If a log exists, the storage control unit 123 can determine that the update was an overwrite. If the update was an overwrite (YES in step S504), the storage control unit 123 invalidates the log of the overwritten original data by setting the value of the valid flag 1336 for the corresponding log header management table (log header 133) in the cache data log buffer 145 to “invalid” (step S505). Finally, the storage control unit 123 adds the log header of the log created in the normal log creation process in step S503 to the log header management table in the cache data log buffer 145 (step S506), and ends the cache data update process.

[0132] 18 is a flowchart showing an example of the processing procedure for normal log creation processing. The normal log creation processing is processing that is invoked when creating a log (an update log, more specifically, the normal log 132 shown in FIG. 5) associated with updating normal control information or cache data. As explained with reference to FIGS. 5 and 6, the normal log 132 (which may be replaced with the update log 140) created when updating normal control information is temporarily stored in the control information log buffer 144 of the memory 112, and the normal log 132 (which may be replaced with the update log 140) created when updating cache data is temporarily stored in the cache data log buffer 145 of the memory 112. In the following explanation, the temporary storage location in the memory 112 for these normal logs 132 will be simply referred to as the "log buffer."

[0133] 18, first, the storage control unit 123 determines the sequence number of the log to be created (log sequence number) (step S601). The log sequence number is order control information that is assigned in the order in which the logs are created, and one log corresponds to one log sequence number.

[0134] Next, the storage control unit 123 reserves an area in the log buffer to write the log (step S602). Note that the normal log creation process shown in Fig. 18 may be executed by multiple processes operating in parallel, but in that case, it is necessary to perform exclusive processing to prevent the same log sequence number from being acquired by another process and to prevent the same log buffer area from being reserved by another process.

[0135] Next, the storage control unit 123 creates the log header 133 (step S603). An example of the configuration of the log header 133 is as described in Fig. 10, and specifically, the value of "normal log" is stored in the log type 1331, the log sequence number determined in step S601 is stored in the log sequence number 1332, and the values ​​of the update target address and update size in the memory 112 that were passed when the current normal log creation process was called are stored in the update address 1333 and update size 1334 fields. The value of "control information" is stored in the area type 1335 field when control information is updated, and the value of "cache data" is stored when cache data is updated.

[0136] Next, the storage control unit 123 stores the log (normal log 132) in the log buffer (step S604). This log is composed of the log header 133 created in step S603 and control information or cache data itself, which is update data. In the log buffer, the log header 133 is stored at the beginning of the area secured in step S602, and the update data is stored at a memory address obtained by adding the size of the log header 133 to the beginning address of the area.

[0137] Finally, the storage control unit 123 sets the value of the valid flag 1336 of the log header 133 stored in the log buffer in step S604 to "valid" to validate the log (step S605), and terminates the normal log creation process.

[0138] 19 is a flowchart illustrating an example of a processing procedure for a control information update confirmation process. The control information update confirmation process is called at the final stage when updating control information.

[0139] 19, in the control information update confirmation process, the storage control unit 123 first calls log redundancy processing (step S701), and then calls log evacuation processing (step S792). The log redundancy processing is processing for making a log (update log) containing update data redundant, and the details of this processing will be described later with reference to Fig. 20. The log evacuation processing is processing for writing an unsaved log (update log) in the memory 112 to the storage device 113, and the details of this processing will be described later with reference to Fig. 21.

[0140] FIG. 20 is a flowchart illustrating an example of a processing procedure for log redundancy processing.

[0141] According to Figure 20, first, the active storage control unit 123 (active storage control unit) transmits the log (control information log) stored in the control information log buffer 144 and the log (cache data log) stored in the cache data log buffer 145 to the standby storage control unit 123 (standby storage control unit) in the storage control unit group 124 to which it belongs via the inter-node network (step S801).

[0142] Next, the standby storage control unit sorts the logs received in step S801 in order from the oldest log (in other words, the log with the smallest log sequence number) to the newest log (in other words, the log with the largest log sequence number) according to their respective log sequence numbers (step S802). If the control information log is the summary log 137 created in conjunction with updating the cache directory, the summary log 137 is treated as a single log. Therefore, if the control information log is the summary log 137, in the processing of step S802, the summary log header 138 is treated as a header portion that can be referenced, and the individual small size logs 135 that make up the data portion (summary log data portion 139) of the summary log 137 are not individually referenced.

[0143] Then, the standby storage control unit repeats the reflection process (steps S803 to S811) of reflecting the update data added to the logs sorted in step S802 on the memory 112 in the order from the oldest log to the newest log (or in the reverse order), and terminates the log redundancy process.

[0144] The following describes the detailed procedure of the reflection process: First, the standby storage control unit determines whether the log to be processed is a consolidated log (step S804).

[0145] If the log to be processed in step S804 is a normal log (NO in step S804), the standby storage control unit reflects the normal log in the memory 112 by copying the data portion of the normal log (data 131 in the normal log 132 shown in FIG. 5) of the size to the relevant address in the memory 112 in accordance with the address and size information included in the log header of the normal log (log header 133 in the normal log 132 shown in FIG. 5) (step S810). After the processing of step S810, the current loop processing in the reflection processing is terminated and the process moves to the next loop processing.

[0146] On the other hand, if the log to be processed in step S804 is a summary log (YES in step S804), the standby storage control unit reads the data portion of the summary log (the summary log data portion 139 in the summary log 137 shown in FIG. 5) (step S805). Then, in steps S806 to S809, the standby storage control unit repeats the following process for each small log (the small log 135 shown in FIG. 5) included in the data portion read in step S805. Specifically, first, the standby storage control unit reads the offset value included in the small log (the value of the update offset 1361 shown in FIG. 12) and converts it into an address (step S807). For example, the conversion method is to add the offset value to the start address of the cache directory area. Next, the standby storage control unit reflects the small log on the memory 112 by copying it to the address converted in step S807 (step S808). After completing the loop process of steps S806 to S809, the current loop process in the reflection process is terminated and the process proceeds to the next loop process.

[0147] As described above, by executing the processing of steps S801 to S811, each data section of the control information log and cache data log temporarily stored in the active side memory 112 is reflected in the standby side memory 112, thereby realizing redundancy.

[0148] FIG. 21 is a flowchart illustrating an example of a processing procedure for log saving processing.

[0149] 21, first, the storage control unit 123 (active storage control unit) refers to the log buffers (the control information log buffer 144 and the cache data log buffer 145) and reads out the unsaved logs (step S901). Next, the storage control unit 123 stores the unsaved logs read out in step S901 in the log areas (the control information log area 151 and the cache data log area 152) on the storage device 113 (step S902). The write position in step S902 may be, for example, the position immediately after the last written log. After the writing in step S902 is completed, the storage control unit 123 deletes the logs from the log buffers (the control information log buffer 144 and the cache data log buffer 145) on the memory 112 (step S903), and ends the log evacuation process.

[0150] 22 is a flowchart showing an example of the processing procedure for log recovery processing. The log recovery processing is called before the storage control unit 123 starts up and is executed by the storage controller (for example, the data protection control unit 125) at the time of reboot after a power outage occurs after volatilization processing of the update log and before destage processing is executed.

[0151] 22, the storage controller first reads out the control information logs and cache data logs from all log areas on the storage device 113, merges them, and sends them to the memory 112 (step S1001). Next, the storage controller sorts the logs received in step S1001 in order from the oldest log (in other words, the log with the smallest log sequence number) to the newest log (in other words, the log with the largest log sequence number) according to their respective log sequence numbers (step S1002).

[0152] Thereafter, the storage controller performs processing on all logs sorted in step S1002 according to the type of log on a log-by-log basis, similar to the processing of steps S803 to S811 in the log redundancy processing shown in Figure 20, and reflects the results on memory 112 (steps S1003 to S1011), and then terminates the log recovery processing.

[0153] As described above, by executing the processing of steps S1001 to S1011, when restarting to recover from the power outage, the control information log and cache data log that have been made non-volatile and saved in the storage device 113 can be placed in the memory 112 (for example, the control information log buffer 144 or the cache data log buffer 145) at the same addresses as before the power outage. After the log recovery processing is completed, the destage processing that was not executed due to the power outage (for example, the asynchronous destage processing shown in FIG. 15) is executed, thereby completing the recovery from the power outage.

[0154] As described above, the process of making the summary log redundant (steps S806 to S809 of the log redundancy process shown in FIG. 20) and the process of recovering the summary log (steps S1006 to S1009 of the log recovery process shown in FIG. 22) are performed in units of small logs included in the summary log (small log 135 shown in FIG. 5). In this case, by having only an offset value from the start address of the cache directory information area in memory 112 in the log header 136 of the small log 135, rather than an address value, the size of the information indicating the reflection position of the log can be reduced, and the size of the log header 136 including this information can be reduced. As a result, there is also the effect of relatively reducing the overall size of the summary log 137 that summarizes the logs of multiple cache directories, compared to when logs are created for each individual cache directory.

[0155] In this way, in this embodiment, the size of the information indicating the log reflection position can be reduced by using an offset value in the log header 136 of the multiple small size logs 135 included in the summary log 137, but as a modified example, the following method may also be adopted. This will be described in detail with reference to FIG.

[0156] FIG. 23 is a diagram illustrating a modified example in which the size of the information indicating the log reflection position is reduced.

[0157] As shown in Figure 23(A), as part of the control information, the cache directory 142 may have an array of segment management information (cache segment management information 161) that manages each segment, which is a cache segment (segment) that divides the cache data area into fixed sizes.

[0158] When updating a portion of such cache segment management information 161 when updating the cache directory 142, instead of using an offset value from the starting address of the entire control information in the cache directory 142 as described above as a method for indicating the address of the data to be updated (hereinafter referred to as the member to be updated), in this modified example, a combination of identification information of the cache segment management information 161 having the member to be updated (the value of the segment number shown as an example in Figure 23(A)) and identification information of the member to be updated in the cache segment management information 161 (the value of the member number shown in Figure 23(B)) may be used.

[0159] 23(B) is the member to be updated, this item indicates the value of the "in use" field assigned with member number "1" in cache segment management information 161 with segment number "2," and therefore can be expressed as information such as "0002-01" by combining segment number "2" and member number "1." When such a modified example is adopted, the amount of information can be further reduced compared to when the address of the member to be updated is expressed by "first address of cache directory 142 + offset value." Thus, the size of the information indicating the log reflection position can be reduced in the control information update log (summary log 137) created when the cache directory 142 is updated.

[0160] As described above, in the storage system 100 according to this embodiment, when updating the cache directory 142, a plurality of small logs 135 corresponding to a plurality of small data items 134 updated in the cache directory 142 are aggregated to create a single aggregated log 137, thereby reducing the amount of log data. Specifically, when updating control information such as the cache directory 142, which has a relatively small update size and a relatively high number of updates, a plurality of updates are aggregated to create a single log (aggregated log 137). At this time, a small log header 136 is attached to each control information update, thereby reducing the amount of data in the aggregated log (aggregated log 137). Furthermore, by reducing the amount of log data as described above, it is possible to reduce increases in the overhead of the processor (CPU 111) in the storage system 100, the amount of communication over the network 102, and the load on the storage device 113. Thus, the storage system 100 according to this embodiment can achieve both high performance and high reliability even when control information is updated.

[0161] (2) Second embodiment In the second embodiment, a configuration example will be described in which a data compression function is added to the storage system 100 described in the first embodiment.

[0162] The compression function added in the second embodiment is an example of a storage function provided by the storage control unit 123, and is a function that can reduce capacity consumption, save disk (storage device 113) capacity, and reduce disk costs by compressing and storing data received by the storage node 103 from the host device 101 using a data compression algorithm such as LZ4. Furthermore, when the compression function is used, the processing time increases by the time required for the compression process, but since data can be processed in a reduced size after compression, a reduction in processing time can be expected overall.

[0163] Fig. 24 is a diagram for explaining an image of data processing using the compression function. As shown in Fig. 24, data (e.g., user data) received by the storage node 103 from the host device 101 is stored in the cache data area 143. The processing at this time is generally similar to the write processing shown in Fig. 14, but differs in that the data to be written to the memory 112 is compressed and metadata indicating the compressed data and its location is written.

[0164] In the compression function according to this embodiment, the compressed data and metadata are written to the cache data area 143 in an append format (post-write format). The reason for this is that the size of the data received from the host device 101 after compression is indeterminate depending on the compression effect, so even if an attempt is made to overwrite the old data with compressed data, it is conceivable that the compressed data will be larger in size than the old data, making it impossible to replace them. Therefore, in the compression function according to this embodiment, an append format is appropriate, in which a new area is always reserved in the cache data area 143, the compressed data is written as cache data, and after writing, the area that stored the old data is released as free space. Furthermore, because it is an append-write format, information (metadata) indicating the storage location of the compressed data is required, and this metadata is also stored in the cache data area 143.

[0165] The compressed data and metadata stored in the cache data area 143 are then stored in the cache data log area 152 on the storage device 113 in synchronization with the host IO (i.e., before the storage node 103 returns a response to the host device 101).

[0166] When storing cache data and control information stored in memory 112 in the log area of ​​storage device 113, storage system 100 may adopt an operation of writing multiple logs accumulated in the log buffer of memory 112 together in a single disk write process (so-called "bulk write"), and by performing this bulk write, processing efficiency can be improved, the number of disk writes in storage device 113 can be reduced, and the performance of storage system 100 can be improved. Furthermore, since the control information is smaller in size than data such as user data that is compressed and stored in cache data area 143, it may be stored in control information area 141 without being compressed, as shown in Fig. 24.

[0167] Here, if an attempt is made to consolidate many logs in the consolidation process, it is conceivable to wait until many logs have accumulated in the log buffer before performing the log evacuation process (see FIG. 21). However, in that case, the response of the control information determination process (see FIG. 19), which is executed before the I / O response, will be delayed, leading to a delay in the response to the host I / O. To prevent this situation, the storage system 100 according to this embodiment may consolidate all logs accumulated in the log buffer when the log evacuation process is called, thereby preventing a delay in the start of the log evacuation process. In this way, when the I / O load on the storage is high and many logs are simultaneously accumulated in the log buffer (high load), consolidation naturally improves the efficiency of storing data in the storage device 113. When the I / O load on the storage is low (low load), data can be written to the storage device 113 without unnecessarily delaying the response to the host I / O. Thus, the storage system 100 according to this embodiment can achieve both the high throughput performance required under high load conditions and the reduced response delay required under low load conditions.

[0168] Furthermore, the compressed data and metadata stored in the cache data area 143 are written to the permanent area 153 on the disk (storage device 113) asynchronously with host I / O. This process is the asynchronous destaging process shown in FIG. 15. In asynchronous destaging, the compressed data and metadata are also written in an append-write format, similar to writing to the cache data area 143. In asynchronous destaging, processing efficiency can be improved by performing a bulk write in which adjacent data is written in a single disk write process, and the number of disk writes can be reduced, improving performance. This bulk write is particularly easy to perform for compressed data that uses the append-write format, as is the case when storing data in the cache data log area described above. Destaging involves more processing than log evacuation processing.

[0169] In the second embodiment, similar to the first embodiment, logs are consolidated when control information is updated. The data to be consolidated is the information in the cache directory 142, similar to the first embodiment. Since metadata is updated particularly frequently when the compression function is in use, the information in the cache directory 142 is frequently updated when the metadata is written to, updated, and referenced in the cache data area 143. In the storage system 100 according to this embodiment, log consolidation is particularly effective in such cases.

[0170] Furthermore, in the storage system 100 according to the second embodiment, a process similar to the consolidated logging process at the time of log creation in the first embodiment can also be applied to a cache data log of metadata created in association with updates to the cache data area 143 (particularly, metadata updates that occur multiple times per I / O). Specifically, the storage control unit 123 stores the data in a consolidation buffer and creates a consolidated log from each update data in the consolidation buffer when creating a log associated with updates to the metadata stored in the cache data area 143, similar to the process when creating an update log (consolidation log 137) for the cache directory 142 in step S107 of the read process of FIG. 13 in the first embodiment. By performing this process, a reduction in overhead due to consolidated logging can be expected for the metadata shown in FIG. 24 as well, similar to the consolidated logging process for the cache directory log in the first embodiment.

[0171] Furthermore, similar to what was explained in the first embodiment with reference to FIG. 15, in the second embodiment, in the destage processing (step S303 in FIG. 15) executed by the data protection control unit 125 during asynchronous destage processing, data can be made redundant using techniques such as mirroring and EC (Erasure Coding).

[0172] Figure 24 shows an image of the data redundancy process when using EC, in which parity data calculated between other data is stored in another node (a storage node 103 other than the original storage node 103), thereby making the data redundant.

[0173] As explained above, in the second embodiment, by collectively writing the control information and cache data logs (or at least some of these logs) to a predetermined log area, processing efficiency can be improved and the number of disk writes can be reduced, thereby improving storage performance. Also, in destaging processing, the effect of collectively writing is enhanced, particularly when the compression function is used, and improved processing efficiency and a reduction in the number of disk writes can be expected, which can lead to improved storage performance.

[0174] Furthermore, the compression function reduces the amount of data flowing to the disk (storage device 113) compared to when data is not compressed, allowing for more efficient use of the disk and improving performance.

[0175] As described above, the storage system 100 includes a storage control unit 123 as a storage controller that controls reading and writing to the storage device 113 as non-volatile storage. When reading and writing, the storage controller generates a log and stores it in the memory 112, which is a log memory, and writes the log stored in the memory 112 to the storage device 113. The generated logs include a control information log and a cache data log. When a control information log is generated, the control information log is stored in a log memory (control information log buffer 144) and is written collectively to the storage device 113 (control information log area 151, permanent area 153) in units of storage areas each having multiple control information logs. When a cache data log is generated, the cache data log is stored in a log memory (cache data log buffer 145), and the cache data in the log memory is compressed and written to the storage device 113 (cache data log area 152, permanent area 153). With this configuration and operation, the storage system 100 can realize a storage system that combines high performance and reliability.

[0176] Furthermore, the above-described storage system 100 has a configuration in which multiple storage controllers (storage control units 123) are provided, and the storage controllers are made redundant between different storage nodes 103. With such a configuration, the storage system 100 can efficiently store control information, cache data, and the like in the storage devices 113 of each storage node 103, thereby achieving high performance and reliability.

[0177] The present invention is not limited to the above-described embodiment, but includes various modifications. For example, the above-described embodiment has been described in detail to clearly explain the present invention, and the present invention is not necessarily limited to those including all of the described configurations. Furthermore, not only can the configurations be deleted, but also replacements and additions of configurations are possible.

[0178] Specifically, for example, in the first embodiment, an example was shown in which sequence numbers are used as sequence control information that is assigned according to the order in which logs are created in order to control the order in which data is updated (log sequence number 1332 in FIG. 10, log sequence number 1382 in FIG. 11), but as a modified example, a timestamp may be assigned to the log, and this timestamp may be used as the sequence control information for the log. Also, as another modified example, a pointer to the next log may be assigned to a certain log, and this may be used as the sequence control information for the log. Furthermore, instead of assigning sequence control information on a log-by-log basis, a configuration may be adopted in which sequence control information is assigned for a certain range of logs. [Explanation of symbols]

[0179] 100 Storage Systems 101 Host device 102 Network 103 storage nodes 104 Management Node 111 CPU 112 memory 113 Storage Devices 114 Communication equipment 121 Front-end driver 122 Backend Driver 123 Storage Control Unit 124 Storage Control Group 125 Data Protection Control Unit 131 Data 132 Normal Log 133 Log Header 134 Data 135 Small Log 136 Log Header 137 Summary Log 138 Summary Log Header 139 Summary Log Log Data Section 140 Update Log 141 Control Information Area 142 Cache Directory 143 Cache data area 144 Control Information Log Buffer 145 cache data log buffer 151 Control information log area 152 cache data log area 153 Persistence Area 161 Cache segment management information

Claims

1. A storage system comprising one or more storage nodes, each having a volatile memory, a non-volatile storage device, and a storage controller that processes data read from and written to at least one of the memory and the storage device, the memory stores control information for accessing data in the storage device and cache data; the control information corresponding to the data is updated in association with writing of the data in response to a write request, the control information including first type control information and second type control information having an update size smaller than that of the first type control information; The storage controller a log creation process in which, when the write request is processed and the control information or the cache data is updated, a header is added to the updated data to create an update log, and the created update log is stored in a log buffer in the memory; a journal non-volatile process for storing the journal stored in the log buffer by the journal creation process in the storage device and responding to the source of the write request; a destage process for destaging the update log stored in the log buffer of the memory to the storage device; Make it executable, The storage controller In the log creation process when the first type of control information is updated, a log header is added to each piece of the updated first type of control information to create an update log, and the update log is stored in a log buffer; In the log creation process when the second type of control information is updated, one aggregate log is created as an update log relating to the plurality of second type of control information, and is stored in a log buffer. A storage system comprising:

2. The update logs are provided with sequence control information indicating the order in which the update logs were created; In the log creation process, the storage controller Based on sequence control information of the second type of control information, a plurality of update logs relating to the plurality of second type of control information are compiled to create the compiled log, and the sequence control information is added to the compiled log.

2. The storage system according to claim 1.

3. In the log creation process, the storage controller For the plurality of pieces of second-type control information that satisfy a predetermined summarization condition, a small-size log is created by adding a small-size log header having a more limited amount of information than the log header added to the update log related to the first-type control information for each piece of updated second-type control information, and the created plurality of small-size logs are combined into one data section, and a log header is added to the one data section to create the one summary log.

3. The storage system according to claim 2.

4. The memory has a log aggregation buffer for temporarily storing a plurality of pieces of second type control information for creating the small size log, separate from the log buffer.

3. The storage system according to claim 2.

5. The storage controller is capable of executing the destage process asynchronously with the journal non-volatilization process.

2. The storage system according to claim 1.

6. When restarting the storage node after a power outage occurs after the execution of the journal non-volatilization processing and before the execution of the destage processing, the storage controller reads out the journal stored in the storage device and reflects it in the memory, and then makes it possible to execute the destage processing.

2. The storage system according to claim 1.

7. a plurality of said storage nodes each having a plurality of said storage controllers; one or more storage controller groups are formed across two or more storage nodes of the plurality of storage nodes, each group comprising a first storage controller set to an active mode that accepts I / O requests from a host device and a second storage controller set to a standby mode that does not accept I / O requests from a host device; In the same storage controller group, the first storage controller transmits the update log stored in the log buffer of its own storage node to the second storage controller, and the second storage controller reflects the update log received from the first storage controller in the memory of its own storage node, thereby enabling the execution of log redundancy processing.

2. The storage system according to claim 1.

8. the storage controller further has a compression function for compressing and storing data; The storage controller compresses the data using the compression function and stores it in memory, and executes the log creation process, the update log non-volatilization process, and the destage process for the compressed data.

2. The storage system according to claim 1.

9. In the memory, an update log relating to an update of the control information is stored in a first log buffer, and an update log relating to an update of the cache data is stored in a second log buffer different from the first log buffer in the memory; The storage controller collectively writes a plurality of update logs stored in each of the first and second log buffers to the storage device.

2. The storage system according to claim 1.

10. A storage control method for a storage system configured to include one or more storage nodes, comprising: the one or more storage nodes each include a volatile memory, a non-volatile storage device, and a storage controller that processes data read from and written to at least one of the memory and the storage device; the memory stores control information for accessing data in the storage device and cache data; the control information corresponding to the data is updated in association with writing of the data in response to a write request, the control information including first type control information and second type control information having an update size smaller than that of the first type control information; a log creation step in which, when the storage controller processes the write request and the control information or the cache data is updated, the storage controller creates an update log by adding a header to the updated data and stores the created update log in a log buffer of the memory; a log non-volatilization step in which the storage controller stores the update log stored in the log buffer in the log creation step in the storage device and responds to the source of the write request; a destage step in which the storage controller destages the update log stored in the log buffer of the memory to the storage device; Equipped with In the log creation step when the first type of control information is updated, the storage controller creates an update log by adding a log header to each piece of updated first type control information, and stores the update log in a log buffer; In the log creation step when the second type of control information is updated, the storage controller creates one aggregate log as an update log relating to the plurality of second type of control information, and stores the log in a log buffer. A storage control method comprising:

Citation Information

Patent Citations

  • File system with file management function and file management method

    JP2006106868A

  • Information processor, information processing method and program

    JP2016133976A

  • Information processing device, information processing system, and program

    JP2017162288A

  • Page cache write logging in block-based storage

    JP2017515193A

  • Storage management system, storage management method and storage management program

    JP2019191703A