Storage system, and control method of storage system

The storage system optimizes data handling through cache and write log areas to reduce drive writes, enhancing I/O performance and data reliability by minimizing the impact of power loss.

JP2025164530AActive Publication Date: 2025-10-30HITACHI VANTARA LTD
View PDF 8 Cites 0 Cited by

Patent Information

Application Number
JP2024068558
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-04-19
Publication Date
2025-10-30
Estimated Expiration
2044-04-19

AI Technical Summary

Technical Problem

Existing storage systems face issues with data corruption during power loss and increased I/O processing time due to multiple writes required for write requests, affecting data reliability and performance.

Method used

A storage system with non-volatile storage devices and volatile memory that employs a cache area for temporary data storage, a cache log storage area for updated contents, and a write log storage area, allowing for write-back and write-through operations to optimize data handling.

Benefits of technology

Improves I/O performance by reducing the number of drive writes while maintaining data reliability, even in the event of power loss.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025164530000001_ABST
    Figure 2025164530000001_ABST
Patent Text Reader

Abstract

To provide a storage system capable of improving I / O performance for a host unit by reducing the number of times writing is performed on a drive to a write request while suppressing the deterioration of data reliability due to errors.SOLUTION: A storage system is configured to, when selected to perform a write-back operation, store the data requested to be written from a host device in the cache area, and after storing the updated contents of the cache area in a cache log storage area, write the data to the data storage area. On the other hand, when the storage system selects to perform a write-through operation, the storage system does not store data in the cache area and cache log storage area, but stores the updated contents of the data storage area in the write log storage area, and then writes the data to the data storage area, and after storing the updated contents of the data storage area in a Write log storage area, write the data to the data storage area.SELECTED DRAWING: Figure 16
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 control method for a storage system. [Background technology]

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

[0003] For example, Patent Document 1 discloses the following storage system. That is, the storage system is composed of multiple storage nodes, each having one or more storage devices that provide storage areas and one or more storage controllers that read and write data from and to the corresponding storage devices in response to requests from a host device. This storage system combines storage controllers on multiple storage nodes and manages them as redundancy groups. When this storage controller receives a request from a host device, it transfers data to multiple storage controllers that make up the same redundancy group, and each storage controller stores the data in the storage device of its own storage node. [Prior art documents] [Patent documents]

[0004] [Patent Document 1] International Publication No. 2018 / 179073 Summary of the Invention [Problem to be solved by the invention]

[0005] In a storage system that associates a virtual volume, which is a virtual storage area, with a physical area on a storage device and rewrites data in the corresponding area on the storage device in response to a write request to the virtual volume from a host device, if power is lost while data on the storage device is being rewritten, an error may occur in the data in the area to be rewritten (the data may become corrupted and no longer match the data before or after rewriting).

[0006] According to the above-mentioned Patent Document 1, when a storage system rewrites data on a storage device, it writes the update contents to the storage device in advance before performing the update, so that even if an error occurs in the data in the area to be rewritten, the error can be resolved by applying the update contents that were written earlier.

[0007] On the other hand, in this storage system, for one write request received from the host, the storage device is accessed twice (to write the updated content and then to write the data) to update the data on the storage device, which increases the time or amount of calculation required to process the I / O request and has an impact on the I / O performance of the host device.

[0008] The present invention has been made in consideration of the above-mentioned problems, and aims to improve I / O performance for host devices by reducing the number of drive writes in response to write requests while suppressing a decrease in data reliability due to errors. [Means for solving the problem]

[0009] In order to achieve the above object, the present invention provides a storage system comprising one or more storage nodes each having a non-volatile storage device, and a storage controller and volatile memory that processes reading and writing of data from and to the storage device, wherein the memory has a cache area that temporarily stores data related to a write request from a host device, and the storage device has a cache log storage area that stores updated contents of the cache area, a data storage area that permanently stores data related to the write request, and a write log storage area that stores updated contents of the data storage area, and the storage controller switches between a write-back operation in which the data related to the write request is stored in the cache area and the cache log storage area, and then responds to the host device and writes the data to the data storage area after the response, and a write-through operation in which the data is written to the data storage area and then responds to the host device, and in the write-back operation, data is written to the data storage area without writing the updated contents of the data storage area to the write log storage area, and in the write-through operation, the storage controller writes the updated contents of the data storage area to the write log storage area before writing the data to the data storage area. [Effects of the Invention]

[0010] According to the present invention, it is possible to improve I / O performance for a host device by reducing the number of drive writes in response to a write request while suppressing a decrease in data reliability in the event of an error. [Brief explanation of the drawings]

[0011] [Figure 1] FIG. 4 is an explanatory diagram of a write process (write back) according to the first embodiment. [Figure 2] FIG. 3 is an explanatory diagram of a write process (write-through) according to the first embodiment. [Figure 3] FIG. 4 is an explanatory diagram of a power interruption recovery process when a power source is lost according to the first embodiment. [Figure 4] FIG. 1 is a configuration diagram of a storage system according to a first embodiment. [Figure 5] FIG. 1 is a diagram showing an example of the hardware configuration of a storage system according to a first embodiment. [Figure 6] FIG. 2 is a diagram showing an example of the software configuration of the storage system according to the first embodiment. [Figure 7] FIG. 1 is a diagram showing an example of the logical configuration of a storage system according to the first embodiment. [Figure 8] FIG. 2 is a diagram showing an example of a software module structure of the storage node according to the first embodiment. [Figure 9] FIG. 3 is a diagram showing a specific example of data stored in a memory according to the first embodiment. [Figure 10] FIG. 4 is a diagram showing an example of a cache log storage area management table according to the first embodiment. [Figure 11] FIG. 4 is a diagram showing an example of a write log storage area management table according to the first embodiment. [Figure 12] FIG. 3 is a diagram showing a specific example of data stored in the storage device according to the first embodiment. [Figure 13] FIG. 2 is a diagram showing an example of the arrangement of a data storage area according to the first embodiment. [Figure 14] FIG. 4 is a diagram showing an example of the structure of a Write log header according to the first embodiment. [Figure 15] FIG. 4 is a diagram showing an example of the structure of a cache log header according to the first embodiment. [Figure 16] 10 is a flowchart showing the processing procedure of a write process according to the first embodiment. [Figure 17] 10 is a flowchart showing the processing procedure of a cache log creation / saving process according to the first embodiment. [Figure 18] 10 is a flowchart showing the processing steps of a cache log evacuation process according to the first embodiment. [Figure 19] 10 is a flowchart showing the processing procedure of a data writing process according to the first embodiment. [Figure 20] 10 is a flowchart showing the processing procedure of a Write log creation / saving process according to the first embodiment. [Figure 21] 5 is a flowchart showing the processing procedure of power interruption recovery processing when power is lost according to the first embodiment. [Figure 22] 10 is a flowchart showing the processing procedure of a Write log creation / saving process according to the second embodiment. [Figure 23] 11 is a flowchart showing the processing procedure of a Write log creation / saving process according to the third embodiment. [Figure 24] FIG. 10 is a diagram showing an example of the arrangement of a data storage area according to the fourth embodiment. [Figure 25] 10 is a flowchart showing the processing procedure of a write process according to the fourth embodiment. [Figure 26] 10 is a flowchart showing the processing procedure of data redundancy processing according to the fourth embodiment. [Figure 27] 10 is a flowchart showing the processing procedure of a data protection code writing process according to the fourth embodiment. [Figure 28] 10 is a flowchart showing the processing steps of an EC parity write process according to the fourth embodiment. DETAILED DESCRIPTION OF THE INVENTION

[0012] DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS An embodiment of the present invention will now be described with reference to the accompanying drawings. The embodiment relates to a storage system having a plurality of storage nodes, each of which implements one or more SDSs (Software Defined Storage).

[0013] In the following description, the contents of the description and drawings are simplified or omitted as appropriate for clarity. Furthermore, not all of the combinations of features described in the embodiments are necessarily required for the solution of the invention.

[0014] In the following explanation, information may be explained using a "table," but the information may also be expressed in other data structures. To indicate that it is not dependent on the data structure, "XX table," "XX list," etc. may be referred to as "XX information." When explaining the content of each piece of information, terms such as "identification information," "identifier," "name," "ID," and "number" are used, but these terms are interchangeable.

[0015] [Embodiment 1] First, an outline of the first embodiment will be described with reference to FIGS.

[0016] (Outline of write processing according to the first embodiment) The write processing according to the first embodiment will be described with reference to Fig. 1. Fig. 1 is an explanatory diagram of the write processing (write back) according to the first embodiment. Fig. 2 is an explanatory diagram of the write processing (write through) according to the first embodiment.

[0017] The storage system 100 is composed of a host device 101 and a storage node 103. The storage node 103 is a computer device that provides the host device 101 with a storage area for reading and writing data. The host device 101 is an example of a higher-level device, and is a computer device that sends a data read request or a write request (write request) to the storage node 103.

[0018] The storage node 103 has a storage controller 1083, a volatile memory 1032, and a non-volatile storage device 1033. The memory 1032 has a cache area for temporarily storing data received from the host device. The storage device 1033 has a cache log storage area 1201, a write log storage area 1202, and a data storage area 1203.

[0019] The storage controller 1083 uses the data storage area 1203 to store data for which a write request has been made from the host device 101. The storage controller 1083 uses the write log storage area 1202 to store the update contents (write log) of the data before writing it to the data storage area.

[0020] In this way, the update contents are written in advance as a write log to the storage device 1033. As a result, even if a data error occurs due to a loss of power or the like when writing data to the data storage area 1203, the update contents can be read from the write log storage area 1202 and applied again to the data storage area to resolve the data error.

[0021] The storage controller 1083 also uses the cache log storage area 1201 to store the update contents (cache log) when data is written to the cache area in memory. In this way, the update contents are written to the cache log storage area 1201. As a result, even if the data in the cache area 1102 is lost due to a power outage or the like, the data in the cache area 1102 can be recovered by reading the update contents from the cache log storage area 1201 and applying them to the cache area 1102.

[0022] When the host device 101 issues a write request to the storage node 103, the storage controller 1083 selects whether to perform a write-through operation or a write-back operation on the data. As an example of the selection method, if the write request is for an area that is not contiguous with the area for which the previous write request was made (random write), the write-back operation is selected, and if the data size is equal to or larger than a predetermined size or if the write request is for an area that is contiguous with the area for which the previous write request was made (sequential write), the write-through operation is selected.

[0023] When a write-back operation is selected, data is written to the cache area 1102, and the updated contents are written to the cache log storage area 1201, as shown in FIG. 1(a).

[0024] When writing data to the data storage area 1203 on the storage device 1033, it is determined whether or not to write the data to the write log storage area 1202. If the write-back operation is selected, then, as shown in FIG. 1(b), the cache update contents have been written to the cache log storage area 1201, so it is determined not to write the write log, and the data is written only to the data storage area 1203.

[0025] 2, data is written to the cache area 1102 as a temporary storage (not shown), but data is not written to the cache log storage area 1201. Then, because (1) the write-through operation is selected, it is determined that a write log is to be written, a write log is created and written to the write log storage area 1202, and then (2) the data stored in the cache area 1102 is written to the data storage area 1203.

[0026] With this method, data written to the data storage area 1203 is written as update information to either the cache log storage area 1201 or the write log storage area 1022. Therefore, even if an error occurs in the data of the data storage area 1203 due to a power loss or the like while writing to the data storage area 1203, the data of the cache log storage area 1201 or the write log storage area 1022 can be written to the data storage area 1203, and the error can be resolved.

[0027] (Outline of power interruption recovery process at the time of power loss according to the first embodiment) 3 is an explanatory diagram of the power interruption recovery process when power is lost according to the first embodiment. The power interruption recovery process when power is lost first (1-1) reads the updated cache contents stored in the cache log storage area 1201 and applies them to the cache area 1102. Then (1-2) writes the recovered data of the cache area 1102 to the data storage area 1203. The updated cache contents stored in the cache log storage area 1201 are data related to the write process of the write-back operation.

[0028] Next, (2-1) reads the update contents of the data storage area 1203 from the write log storage area 1202, and (2-2) applies the read update contents to the data storage area 1203. The write log stored in the write log storage area 1202 is data related to the write-through write process.

[0029] (Configuration of storage system 100 according to embodiment 1) FIG. 4 is a configuration diagram of a storage system 100 according to the first embodiment.

[0030] 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 and storage nodes 103 are connected to each other via a network 102 configured by Ethernet, a LAN (Local Area Network), Fibre Channel, or the like.

[0031] The host device 101 is a general-purpose computer device that transmits read or write requests to the storage node 103 in response to user operations or requests from application programs running on the host device 101. Hereinafter, read requests and write requests are collectively referred to as I / O (Input / Output) requests. The host device 101 may also be a virtual computer device such as a virtual machine.

[0032] 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 computer device.

[0033] 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 multiple storage nodes 103 as a group called a cluster. Although Fig. 1 shows an example in which only one cluster is provided, multiple clusters may be provided within the storage system 100.

[0034] In this way, the storage system 100 is configured with one or more storage nodes 103, one or more host devices 101, and one management node 104. The configuration in the figure is an example, and the host device 101, storage node 103, and management node 104 may be the same node. They may also be realized as virtual machines or containers, or may be configured to coexist as processes on a single computer device. The network may also be redundant, or may be separated into a management network and a storage network.

[0035] (Hardware configuration of the storage system 100 according to the first embodiment) FIG. 5 is a diagram illustrating an example of the hardware configuration of the storage system 100 according to the first embodiment.

[0036] The storage node 103 includes a CPU (Central Processing Unit) 1031 , a memory 1032 , a plurality of storage devices (drives) 1033 , and a communication device 1034 .

[0037] The CPU 1031 controls the processing of the entire storage node. The memory 1032 is composed of semiconductor memory such as SRAM (Static RAM (Random Access Memory)) and DRAM (Dynamic RAM). The memory 1032 is used to temporarily store various programs and necessary data. The CPU 1031 executes the programs stored in the volatile memory 1032, thereby executing various processes of the entire storage node 103, which will be described later.

[0038] The storage device 1033 is configured from one or more types of large-capacity nonvolatile storage devices such as an SSD (Solid State Drive), a hard disk drive, etc. The storage device 1033 provides a physical storage area for reading or writing data in response to an I / O request from the host device 101.

[0039] The communication device 1034 is an interface that enables the storage node 103 to communicate with the host device 101, other storage nodes 103, or management node 104 via the network 102, and is configured, for example, by a NIC (Network Interface Card), an FC card, etc. The communication device 1034 controls protocols during communication with the host device 101, other storage nodes 103, or management node 104.

[0040] (Software Configuration of Storage System 100 According to First Embodiment) FIG. 6 is a diagram showing an example of the software configuration of the storage system 100 according to the first embodiment.

[0041] The storage node 103 includes a front-end driver 1081 (Front-end The storage system includes a back-end driver 1087, one or more storage controllers 1083, and a data protection controller 1086.

[0042] The front-end driver 1081 is software that controls the communication device 1034 and has the function of providing the CPU 1031 with an interface for communication between the storage controller 1083 and the host device 101 , other storage nodes 103 , and management node 104 .

[0043] The back-end driver 1087 is software that controls each storage device 1033 in its own storage node 103 and has the function of providing the CPU 1031 with an abstracted interface for communication with each storage device 1033 .

[0044] The storage controller 1083 is software that functions as a controller for the SDS. The storage controller 1083 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 1086. The storage controller 1083 also has a logical volume configuration function. The logical volume configuration function associates the logical chunks configured by the data protection control unit 1086 with the logical volumes provided to the host. For example, a straight mapping method (a one-to-one correspondence between logical chunks and logical volumes, with the addresses of the logical chunks and the logical volume being the same) may be used. Alternatively, a virtual volume function (Thin Provisioning) method (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) may be used.

[0045] In this embodiment, each storage controller 1083 implemented in a storage node 103 is managed as a storage controller group 1085 that configures a redundant configuration together with other storage controllers 1083 arranged in other storage nodes 103. When there are two storage nodes 103 belonging to a storage controller group 1085, they can also be called a storage controller pair.

[0046] In the storage controller group 1085, one storage controller 1083 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 controller group 1085, the other storage controller 1083 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. Note that a node on which a storage controller 1083 in active mode operates is called an active node, and a node on which a storage controller 1083 in standby mode operates is called a standby node.

[0047] In the storage controller group 1085, if a power loss occurs in the active storage controller or the storage node 103 in which this controller is located, the state of the standby storage controller is switched to active mode. A storage controller 1083 set to active mode is called an active storage controller. A storage controller 1083 set to standby mode is called a standby storage controller. This allows the standby storage controller to take over the I / O processing that was being performed by the active storage controller if the active storage controller becomes unable to operate.

[0048] The data protection control unit 1086 is software having a function of allocating, as logical chunks, physical storage areas provided by the storage devices 1033 in its own storage node 103 or other storage nodes 103 to each storage controller group 1085. Furthermore, the data protection control unit 1086 is software having a function of reading or writing specified data from or to the corresponding storage device 1033 in accordance with the above-mentioned I / O command given from the storage controller 1083.

[0049] There are two methods for allocating physical storage areas to the data protection control unit 1086, both of which are applicable to the storage system 100. The first method is a method of allocating the physical area of ​​one storage device to one logical chunk. In other words, this method allocates the physical area of ​​one storage device 1033 in its own storage node 103 or in another storage node 103 to each storage controller group 1085. The second method is a method of allocating the physical area of ​​storage devices 1033 in two or more storage nodes 103 to one logical chunk in order to make data redundant among multiple storage nodes 103.

[0050] The data protection control unit 1086 executes the following process when a physical storage area provided by a storage device 1033 in another storage node 103 is allocated to the storage controller group 1085. That is, the data protection control unit 1086 cooperates with another data protection control unit 1086 implemented in the other storage node 103 to exchange data with the other data protection control unit 1086 via the network 102. As a result, the data protection control unit 1086 reads or writes data related to the I / O command from a storage area in the other storage node 103 in accordance with an I / O command from an active storage controller in the storage controller group 1085.

[0051] When the data protection control unit 1086 adopts a redundant method as the physical storage area allocation configuration, the corresponding methods for storing data in two or more storage devices 1033 include a mirroring method and an EC (erasure coding) method. Either method can be applied to the storage system 100.

[0052] In the mirroring method, the data protection control unit 1086 writes data provided by the active storage controller of the storage controller group 1085 to the storage devices 1033 on the corresponding two or more storage nodes 103 to make them redundant.

[0053] In the EC method, the data protection control unit 1086 separates data provided from the active storage controller of the storage controller group 1085 into first data and second data. The first data is then stored in the first storage node 103, the second data in the second storage node 103, and the parity calculated from the first data and the second data in the storage device 1033 of the third storage node 103.

[0054] (Logical Configuration of Storage System 100 According to First Embodiment) FIG. 7 is a diagram showing an example of the logical configuration of the storage system 100 according to the first embodiment.

[0055] The storage controller 1083 provides a virtual storage area (virtual volume) to the host (thin provisioning method) using a storage area (pool volume) provided by the data protection control unit 1086. The storage controller 1083 also reserves a cache area in memory and uses a storage area provided by the backend driver as a cache log storage area 1201.

[0056] The data protection control unit 1086 uses the storage areas provided by the backend driver as a data storage area 1203 and a write log storage area 1202. The data protection control unit 1086 creates a storage area (pool volume) associated with the data storage areas 1203 in two or more storage nodes 103 by a so-called mirroring method, and provides this to the storage controller 1083.

[0057] When the storage controller 1083 receives a write request for a virtual storage area from the host device 101, it selects whether to perform a write-through operation or a write-back operation on the data related to the write request. If the storage controller 1083 selects the write-back operation, it writes the data to the cache area, logs the update contents (cache log), writes the log to the cache log storage area 1201, and makes it non-volatile. After writing the cache log, or if the storage controller 1083 selects the write-through operation, it passes the I / O request to the data protection control unit 1086.

[0058] When an I / O request is handed over from the active storage controller, the data protection control unit 1086 transmits the I / O request to the data protection control unit 1086 of another storage node 103 having a storage device 1033 to which the data is to be redundantly written. Here, the data protection control unit 1086 that is the sender of the I / O request is sometimes referred to as the "self-system data protection control unit," and the data protection control unit 1086 that is the destination is sometimes referred to as the "other-system data protection control unit."

[0059] Next, the local system data protection control unit and the remote system data protection control unit determine whether or not to write a write log to the storage device 1033. If the write-through operation is selected in the storage controller 1083, the local system data protection control unit and the remote system data protection control unit determine to write a write log. Then, the local system data protection control unit and the remote system data protection control unit turn the data into a log (write log) and write it to the write log storage area 1202 on the storage device on the storage node 103 in which they are implemented. After writing the write log, the local system data protection control unit and the remote system data protection control unit write the data to the data storage area 1203.

[0060] On the other hand, when a write-back operation is selected in the storage controller 1083 , the local system data protection control unit and the remote system data protection control unit determine not to write a write log, and write the data directly to the data storage area 1203 .

[0061] (Software Module Structure of Storage Node 103 According to First Embodiment) 8 is a diagram showing an example of a software module structure of the storage node 103 according to the first embodiment. The storage controller 1083 executes a write process 1091, a cache log creation / saving process 1092, and a power interruption recovery process 1093. The data protection control unit 1086 executes a data redundancy process 1096, a data write process 1097, an EC parity write process 1098, and a write log creation / saving process 1099. Details of each process will be described later. The data redundancy process 1096 and the EC parity write process 1098 are processes according to the fourth embodiment described below, and can be omitted in embodiments other than the fourth embodiment.

[0062] (Data stored in the memory 1032 according to the first embodiment) 9 is a diagram showing a specific example of data stored in the memory 1032 according to embodiment 1. A cache log storage area management table 1101, a cache area 1102, and a cache log buffer 1103 are arranged in an area of ​​the memory 1032 managed by the storage controller 1083 of the CPU 1031 of the storage node 103. A write log storage area management table 1105 and a write log buffer 1106 are arranged in an area of ​​the memory 1032 managed by the data protection control unit 1086.

[0063] (Cache Log Storage Area Management Table 1101 According to the First Embodiment) 10 is a diagram showing an example of a cache log storage area management table 1101 according to embodiment 1. As an example of a cache log storage method, a method of writing one or more cache logs together in a cache log storage area on the storage device 1033 by appending will be described.

[0064] When this method is adopted, the cache log storage area management table 1101 has the following items: cache log storage area ID, storage device 1033 ID, start position address of the stored log (storage position of the first log), and end position address (end position of the last log). The "cache log storage area ID" uniquely identifies the storage area of ​​the cache log. The "storage device 1033 ID" uniquely identifies the storage device 1033 in which the cache log storage area specified by the cache log storage area ID exists. The "start position address" is the start position address of the log stored in the cache log storage area specified by the cache log storage area ID. The "end position address" is the end position address of the log stored in the cache log storage area specified by the cache log storage area ID.

[0065] (Write log storage area management table 1105 according to the first embodiment) 11 is a diagram showing an example of a write log storage area management table 1105 according to the first embodiment. Write logs can be stored by dividing the write log storage area on the storage device 1033 into multiple areas and storing one write log in each of the divided areas (see FIG. 11(a)). When this method is adopted, the write log storage area management table has, for each divided area, items for a write log storage area ID that uniquely identifies the area, the ID of the storage device 1033 in which the write log storage area exists, and the start address of the area.

[0066] As another log writing method, one method of storing write logs is to write one or more write logs together in a write log storage area on the storage device 1033 by appending (see FIG. 11(b)). When this method is adopted, the write log storage area management table has the following items: write log storage area ID, storage device 1033 ID, start position address (storage position of the first log), and end position address (end position of the last log). The "write log storage area ID" uniquely identifies the storage area of ​​the write log. The "storage device 1033 ID" uniquely identifies the storage device 1033 in which the write log storage area identified by the write log storage area ID exists. The "start position address" is the start position address of the write log stored in the write log storage area identified by the write log storage area ID. The "end position address" is the end position address of the write log stored in the write log storage area identified by the write log storage area ID.

[0067] (Data stored in the storage device 1033 according to the first embodiment) 12 is a diagram showing a specific example of data stored in the storage device 1033 according to the first embodiment. A cache log storage area 1201, a write log storage area 1202, and a data storage area 1203 are arranged on each storage device 1033. The cache log storage area 1201 is an area for storing cache logs, and the log write destination address is managed by the cache log storage area management table 1101. The write log storage area 1202 is an area for storing write logs, and the log write destination address is managed by the write log storage area management table 1105. Details of the data storage area 1203 will be described later with reference to FIG. 13.

[0068] (Configuration of data storage area 1203 according to embodiment 1) FIG. 13 is a diagram showing an example of the configuration of the data storage area 1203 according to the first embodiment.

[0069] The data storage area 1203 is used as a physical storage area for storing data received from the host device 101. The data storage area 1203 can be divided into multiple areas and these divided areas can be assigned to logical chunks. The protection code is a parity code, checksum, cyclic redundancy code, etc. calculated from the data.

[0070] As shown in "(A) Method of storing only data in a data storage area" in Figure 13, the data storage area 1203 is divided into sectors, which are the management units of the storage area. A sector is an example of the smallest unit for writing data. The divided areas are provided to the data protection control unit 1086 as physical storage areas. The data protection control unit 1086 allocates the provided physical storage areas to logical chunks, and when it receives an I / O request from the storage controller 1083, it writes data to the corresponding area on the storage device 1033.

[0071] (Write log header 1301 according to the first embodiment) FIG. 14 is a diagram showing an example of the structure of the write log header 1301 according to the first embodiment.

[0072] The write log header 1301 is a table included in the write log that the data protection control unit 1086 writes to the storage device 1033. The write log header 1301 is added to the beginning of the log by the data protection control unit 1086 when the write log is created.

[0073] The Write log header 1301 has fields for the Write log sequence number, write destination address, size, etc. The Write log sequence number field stores a Write log sequence number that is uniquely assigned to each Write log. The Write destination address field stores the address of the data storage area to be updated for each log. The Update size field stores the size of the update.

[0074] (Cache log header 1401 according to the first embodiment) FIG. 15 is a diagram showing an example of the structure of the cache log header 1401 according to the first embodiment.

[0075] The cache log header 1401 is a table included in each cache log stored in the cache log storage area on the storage device 1033. The cache log header 1401 is added to the beginning of the cache log by the data protection control unit 1086 when creating a cache log from the update contents during cache update.

[0076] The cache log header 1401 has fields for a log sequence number, an update address, an update size, etc. The log sequence number field stores a log sequence number that is uniquely assigned to each cache log. The update address field stores the address of the cache data to be updated for each log. The update size field stores the size of the update.

[0077] (Write process 1091 according to the first embodiment) Fig. 16 is a flowchart showing the processing steps of write processing 1091 according to embodiment 1. Fig. 16 shows an example of processing when a write request is made from the host device 101 to a virtual volume provided by the storage controller 1083. The write processing 1091 is performed by the active controller of the pair of storage controllers 1083.

[0078] First, the storage controller 1083 analyzes the command (step S11) and determines whether a page has already been allocated to the access destination (step S12). If the page has not already been allocated (step S12; No), the storage controller 1083 allocates a physical page on the storage device 1033 to the logical area (thread S13).

[0079] After the physical page has been allocated or if a page has already been allocated to the access destination (step S12; Yes), the storage controller 1083 selects whether to perform a write-back operation or a write-through operation on the data (step S14). In this selection, as an example, if the area on the virtual volume that is the write request destination is not contiguous with the data of the previous write request (random write), the write-back operation is selected. Also, if the data size of the write request is equal to or larger than a predetermined size, or if the area on the virtual volume of the current write request data is contiguous with the data of the previous write request (sequential write), the write-through operation is selected.

[0080] If the storage controller 1083 selects the write-back operation (step S14; write-back operation), it writes the data to be written to the cache area 1102 in the memory 1032 (step S15). Next, the storage controller 1083 executes a cache log creation / saving process 1092 to write the cache update contents to the storage device 1033 (step S16), and waits for its completion (step S17). Details of the cache log creation / saving process 1092 in step S16 will be described later with reference to FIG. 17.

[0081] Next, after the storage controller 1083 has completed writing the updated cache contents to the storage device 1033, it returns a response to the write request to the host device 101 (step S18).

[0082] Next, after the storage controller 1083 responds to the host device 101 or if it is determined that a write-through operation is required (step S14; write-through operation), the data protection control unit 1086 performs a data write process. That is, the data protection control unit 1086 writes the data to the storage device 1033 (step S19). Details of the data write process will be described later with reference to FIG. 19.

[0083] Next, the storage controller 1083 determines whether or not a host response has been made after writing to the data storage area (step S20). If a host response has not been made (step S20; No), the storage controller 1083 makes a response to the host device 101 (step S21). If a storage device host response has been made or a host response has been made (step S20; Yes), the storage controller 1083 ends the write process 1091.

[0084] (Cache log creation / saving process 1092 according to the first embodiment) 17 is a flowchart showing the processing steps of the cache log creation / saving process 1092 according to the first embodiment. In the cache log creation process, the storage controller 1083 creates a cache log by adding a cache log header 1041 to the update contents of the cache. The storage controller 1083 then compiles one or more of the created cache logs and writes them to the storage devices 1033 of its own storage node and the other paired storage node.

[0085] Specifically, the storage controller 1083 acquires a log sequence number that is uniquely set in the cache log (step S16a) and creates a cache log header 1041 (step S16b). Next, the storage controller 1083 assigns the cache log header 1041 to the data received from the process caller (step S16c). Next, the storage controller 1083 reserves a storage area in the cache log buffer 1103 (step S16d) and stores the log in the reserved area (step S16e).

[0086] Next, the storage controller 1083 verifies whether the total size of the cache logs in the cache log buffer 1103 is equal to or larger than a predetermined size (step S16f). If the total size of the cache logs is equal to or larger than the predetermined size (step S16f; Yes), the storage controller 1083 transfers the logs to the cache log buffer 1103 of the other storage node 103. Then, the storage controller 1083 sends a cache log evacuation request (step S16g). Then, the storage controller 1083 performs cache log evacuation processing for its own storage node 103 (step S16h). Having received the transferred logs, the other storage node 103 performs log evacuation processing for its own storage node 103 similar to that of step S16h (step S16h'). Details of the cache log evacuation processing in steps S16h and S16h' will be described later with reference to FIG. 18.

[0087] The storage controller 1083 of the node that sent the evacuation request receives the evacuation completion notification from the other node (step S16i), returns a completion response (step S16j), and ends the process.

[0088] (Cache log evacuation process according to the first embodiment) FIG. 18 is a flowchart illustrating the processing procedure of the cache log saving process according to the first embodiment.

[0089] First, the storage controller 1083 reads the log from the cache log buffer 1103 (step S16h1). Next, the storage controller 1083 selects one cache log storage area to be the write destination from the cache log storage area management table 1101, and obtains the log end address as the storage destination address (step S16h2). Then, the storage controller 1083 writes the cache log to the obtained storage destination address (step S16h3). Next, the storage controller 1083 deletes the log that has been written to the storage device from the log buffer (step S16h4). Then, the storage controller 1083 updates the log end address of the cache log storage area held in the cache log storage area management table 1101 to an address that indicates the end position of the log written to that area (step S16h5).

[0090] (Data write process 1097 according to the first embodiment) FIG. 19 is a flowchart showing the processing procedure of the data write process 1097 according to the first embodiment.

[0091] First, the data protection control unit 1086 acquires the sequence number of the data storage area update (step S19a), acquires the allocation destination address (step S19b), and acquires the exclusive access (step S19c).

[0092] Next, the data protection control unit 1086 determines whether or not a write log needs to be created (step S19d). If a write-back operation is determined in step S14 (FIG. 16) and the data has been written to the storage device 1033 as a cache log in step S16, the data protection control unit 1086 determines that a write log does not need to be created (step S19d; No). If a write-through operation is determined in step S14 or the data has not been written to the storage device 1033 as a cache log in step S16, the data protection control unit 1086 determines that a write log needs to be created (step S19d; Yes). If the data protection control unit 1086 determines that a write log needs to be created (step S19d; Yes), it performs a write log creation / saving process and writes the data to a write log storage area in the storage device 1033 (step S19e). Details of the write log creation / saving process in step S19e will be described later with reference to FIG. 20.

[0093] Next, after writing the data to the write log storage area, or if it is determined that creation of a write log is not necessary (step S19d; NO), the data protection control unit 1086 writes the data to the assigned address in the data storage area 1203 (step S19f). When the data writing is complete, the data protection control unit 1086 releases the exclusion (step S19g) and ends the data write process 1097.

[0094] (Write log creation and saving process according to the first embodiment) 20 is a flowchart showing the processing procedure for write log creation and saving processing according to embodiment 1. This embodiment shows a method in which the write log storage area 1022 on the storage device 1033 is divided into multiple areas, and one write log is stored in each of the divided areas.

[0095] The data protection control unit 1086 writes the created write logs one by one to the storage device 1033. First, the data protection control unit 1086 creates a write log header 1301 (step S19e1). Next, the data protection control unit 1086 adds the write log header 1301 to the data received from the process caller (step S19e2).

[0096] Next, the data protection control unit 1086 acquires the exclusive control (step S19e3). Next, the data protection control unit 1086 selects one write destination area from the write log storage area management table 1105, acquires the start address of that area, and sets it as the storage destination address (step S19e4). Next, the data protection control unit 1086 writes the write log to the storage destination address (step S19e5). Next, the data protection control unit 1086 releases the exclusive control (step S19e6). Next, the data protection control unit 1086 returns a completion response to the process caller (step S19e7).

[0097] (Power interruption recovery process 1093 according to the fifth embodiment) Fig. 21 is a flowchart showing the processing steps of the power interruption recovery processing 1093 at the time of power loss according to embodiment 5. Fig. 21 shows an example of processing when the storage system 100 performs recovery after power loss during the write processing 1091.

[0098] First, the storage controller 1083 reads the cache log from the cache log storage area 1201 of the storage device 1033 (step S31). Next, the storage controller 1083 sorts the logs read in step S32 in order of cache log sequence number (step S32). Next, the storage controller 1083 applies the cache logs sorted in step S32 to the cache area 1102 in the memory 1032 (step S33). In applying the cache log, the storage controller 1083 applies the log to the address of the cache area described in the update address field of the cache log header 1401. Next, the storage controller 1083 writes the data restored to the cache area 1102 to the assigned address of the storage device 1033 (step S34).

[0099] Next, the storage controller 1083 reads the write log from the storage device 1033 (step S35). Next, the storage controller 1083 sorts the read logs in order of write log sequence numbers (step S36). Next, the storage controller 1083 extracts data from the write log (step S37) and applies it to the storage device 1033 in the sorted order (step S38). When applying the write log, the storage controller 1083 writes the log to an address in the data storage area 1203 that is written in the write destination address field of the write log header 1301.

[0100] (Effects of the first embodiment) In the first embodiment, whether or not to write a write log is switched depending on whether a write-back operation or a write-through operation is selected. That is, during a write-back operation, a write log is not written when writing to the storage device 1033, and during a write-through operation, a write log is written when writing to the storage device 1033. This reduces the number of I / Os to the backend drive during a write-back operation, improves performance when there is a drive bottleneck, and reduces the CPU cost required for drive I / O.

[0101] Furthermore, in the first embodiment, when recovering from a power outage, the data in the cache area 1102 and the data storage area 1203 is restored from the data in the cache log storage area 1201, and the data in the data storage area 1203 is restored from the data in the write log storage area 1202. That is, when restoring data in the data storage area 1203, if it can be restored from the data stored in the cache area 1102, it is restored from the data in the cache area 1102. On the other hand, data that cannot be restored from the data in the cache area 1102 is restored from the write log stored in the write log storage area 1202. This reduces the number of situations where a write log is required, and therefore reduces the number of times writing to the write log.

[0102] [Embodiment 2] In the second embodiment, the write log creation / saving process employs a method of writing one or more write logs together by appending them to a write log storage area on the storage device 1033. In this embodiment, instead of the write log creation / saving process shown in Fig. 20, the write log creation / saving process shown in Fig. 22 is executed.

[0103] In the second embodiment, the same configurations and processes as those in the first embodiment are assigned the same reference numerals and description thereof will be omitted, and the differences will be mainly described.

[0104] (Write log creation and saving process according to the second embodiment) 22 is a flowchart showing the processing steps of the write log creation / saving process according to embodiment 2. In the write log creation / saving process of this embodiment, the data protection control unit 1086 collectively writes one or more created write logs to the storage device 1033.

[0105] In the write log creation and backup processing of this embodiment, steps S19e1 and S19e2 are the same as in embodiment 1. Following step S19e2, the data protection control unit 1086 reserves a storage area for the data to which the write log header has been added in the write log buffer 1106 (step S19B3). Next, the data protection control unit 1086 stores the write log in the reserved area (step S19B4).

[0106] Next, the data protection control unit 1086 verifies whether the total size of the write logs in the write log buffer 1106 is equal to or greater than a predetermined size (step S19B5). If the total size of the write logs is equal to or greater than the predetermined size (step S19B5; Yes), the data protection control unit 1086 selects one write log storage area to be the write destination from the write log storage area management table 1105. Then, the data protection control unit 1086 obtains the log end address of the selected write log storage area and sets it as the storage destination address (step S19B6).

[0107] The data protection control unit 1086 then reads one or more write logs from the write log buffer 1106 (step S19B7). The data protection control unit 1086 then writes these write logs together to the acquired storage address (step S19B8). The data protection control unit 1086 then deletes the write logs that have been written to the storage device from the write log buffer 1106 (step S19B9). The data protection control unit 1086 then updates the log end address of the write log storage area held in the write log storage area management table 1105 to an address that indicates the end position of the log written to that area (step S19B0). The data protection control unit 1086 then returns a completion response to the process caller (step S19e7).

[0108] After step S19e7 or if the total size of the write logs in the write log buffer 1106 is less than the predetermined size (step S19B5; No), the data protection control unit 1086 ends the write log creation and saving process.

[0109] (Effects of the second embodiment) In the second embodiment, a specified number or a specified amount of write logs are collectively written to the write log storage area 1202. By collectively writing write logs in this way, it is possible to further reduce the number of drive I / Os, improve performance when a drive bottleneck occurs, and reduce the CPU cost required for drive I / O.

[0110] [Embodiment 3] In the third embodiment, a method is shown in which, in the write log creation / saving process, one or more write logs are written together with a cache log to the storage device 1033. In this embodiment, instead of the write log creation / saving process shown in Fig. 20, the write log creation / saving process shown in Fig. 23 is executed.

[0111] In the third embodiment, the same configurations and processes as those in the first and second embodiments are assigned the same reference numerals and explanations thereof will be omitted, and the explanation will focus on the differences.

[0112] (Write log creation and saving process according to the third embodiment) FIG. 23 is a flowchart illustrating the processing procedure of the Write log creation and saving process according to the third embodiment.

[0113] In the write log creation / saving process of this embodiment, steps S19e1 and S19e2 are the same as in embodiment 1. Following step S19e2, the data protection control unit 1086 passes the data (write log) to which the write log header 1301 has been added, and executes the cache log creation / saving process 1092 (FIG. 18) (step S19C3). In step S19C3, a specified number or amount of write logs and a specified number or amount of cache logs are written together to a predetermined storage area in the storage device.

[0114] Next, the data protection control unit 1086 returns a completion response (step S19e7).

[0115] (Effects of the third embodiment) In the third embodiment, the update contents (cache logs) of one or more cache areas 1102 and the update contents (write logs) of one or more data storage areas 1203 are written together to a predetermined storage area in the storage device 1033. This makes it possible to omit the processes related to writing the cache logs in steps S14 to S18 in the write process 1091 (FIG. 16). By writing the cache logs and write logs together in this way to the storage device 1033, it is possible to reduce the number of drive I / O operations, improve performance when there is a drive bottleneck, and reduce the CPU cost required for drive I / O.

[0116] [Embodiment 4] In embodiment 4, a protection code is assigned to the data to be written, and the data and protection code are stored redundantly in the storage node that is the redundancy source and another storage node that is the redundancy destination, or are distributed across three or more storage nodes that make up a storage cluster.

[0117] (Configuration of data storage area 1203 according to the fourth embodiment) FIG. 24 is a diagram showing an example of the configuration of the data storage area 1203 according to the fourth embodiment.

[0118] There are two methods for writing protection codes for detecting data errors into the data storage area 1203: (B1) a method for storing data and its protection codes in the same sector, and (B2) a method for storing protection codes for multiple data items together in a sector different from the data item. The method for storing data and its protection codes in the same sector is called the same sector method. The method for storing protection codes for multiple data items together in a sector different from the data item is called the separate method. Either method is applicable to the storage system 100.

[0119] In the "(B1) same sector method," the data storage area 1203 is divided into sectors, which are the management units of the storage area, and each divided area is provided to the data protection control unit 1086 as a physical storage area in which data and protection codes can be stored together. The storage controller 1083 then calculates a protection code from the data received from the host device 101 and passes an I / O request to the data protection control unit 1086. The data protection control unit 1086 writes the data and protection code passed from the storage controller 1083 to the corresponding area on the storage device.

[0120] In the "(B2) separate method", the data storage area 1203 is divided into sectors, which are the management units of the storage area, and each of these sectors is provided to the data protection control unit 1086 as a data storage area and a protection code storage area for collectively storing protection codes. In the "(B2) separate method", protection codes for multiple data items (hereinafter, a collection of protection codes for multiple data items is referred to as a "protection code group") are stored collectively in one sector.

[0121] Writing data to the storage device 1033 is a sector-by-sector process. Therefore, in the "(B2) separate method," the following steps must be taken when rewriting one protection code included in a protection code group on the storage device 1033. That is, the data protection control unit 1086 first reads the old protection code group from the storage device 1033. Next, the data protection control unit 1086 updates the protection code portion corresponding to the data to create a new protection code group. Next, the data protection control unit 1086 writes the created new protection code group to the storage device 1033.

[0122] The storage controller 1083 calculates a protection code from the data received from the host device 101 and passes an I / O request to the data protection control unit 1086. The data protection control unit 1086 writes the data to a corresponding area on the storage device 1033. Next, due to the constraints imposed when writing to the storage device 1033 mentioned above, the data protection control unit 1086 reads the old protection code group from the corresponding area on the storage device 1033 and rewrites it with the protection code received from the storage controller 1083. The data protection control unit 1086 then writes the new protection code group to the corresponding area on the storage device. Note that the order in which the data and protection code are written to the storage device may be reversed (the protection code may be written first), or may be performed simultaneously in parallel.

[0123] In the fourth embodiment, the write process 1091 shown in Fig. 25 is executed instead of the write process 1091 shown in Fig. 16. That is, the write process 1091 of this embodiment is a process executed when a write request is made from the host device 101 to a virtual volume in which data is made redundant in two or more storage nodes 103. The virtual volume here is a virtual volume configured from storage devices 1033 on two or more storage nodes 103 and corresponding logical chunk areas. The write process 1091 according to this embodiment is executed under the initiative of the active controller of the pair of storage controllers 1083. A protection code is assigned to the data before it is stored in the storage device 1033.

[0124] In the fourth embodiment, the same configurations and processes as those in the first, second, and third embodiments are assigned the same reference numerals and explanations thereof will be omitted, and the explanation will focus on the differences.

[0125] (Write process 1091 according to the fourth embodiment) Fig. 25 is a flowchart showing the processing steps of the write process 1091 according to the fourth embodiment. The write process 1091 according to the fourth embodiment differs from the write process 1091 according to the first embodiment (Fig. 16) in that step S14D is executed immediately before step S14. Also, it differs in that step S19D is executed immediately before steps S18 and S20. Other than this, the write process 1091 according to the fourth embodiment is the same as the write process 1091 according to the first embodiment.

[0126] In step S13D, the storage controller 1083 generates a protection code from the data to be written. In step S19D, the storage controller 1083 executes a data redundancy process 1096. Details of the data redundancy process 1096 in step S19D will be described later with reference to FIG.

[0127] (Data redundancy processing 1096 according to the fourth embodiment) FIG. 26 is a flowchart showing the processing procedure of the data redundancy processing 1096 according to the fourth embodiment.

[0128] By the data redundancy processing 1096 according to the fourth embodiment, the data to be written is written to the storage device 1033 in the own storage node 103 and the other storage node 103 that is the data redundancy destination.

[0129] First, the data protection control unit 1086 acquires the sequence number of the data storage area update (step S1901), acquires the allocation destination address (step S1902), and acquires the exclusive access (step S1903).

[0130] Next, the data protection control unit 1086 determines the redundancy method of the I / O request destination area of ​​the data to be written (step S1904). If the redundancy method of the I / O request destination area of ​​the data is the Mirror method (step S1904; Mirror method), the data protection control unit 1086 transmits the data and protection code to another storage node 103 that will be the redundancy destination of the data (step S1905). Then, the data protection control unit 1086 waits for a response from the other storage node 103 to the transmission of the data and protection code in step S1905 (step S1906).

[0131] On the other hand, the data protection control unit 1086 of the other storage node 103 that received the data from its own storage node 103, executes data redundancy processing 1096 for the storage device 1033 on the other storage node (step S1907). Details of the data protection code write processing of step S1917 will be described later with reference to Fig. 27. Then, similar to step S17, the data protection control unit 1086 of the other storage node 103 transmits a response to the storage node 103 that transmitted the data (step S1908).

[0132] On the other hand, if the redundancy method is the EC method (step S1904; EC method), the data protection control unit 1086 reads the old data before updating from the assigned address of the storage device 1033 of its own storage node 103 (step S1909). Next, the data protection control unit 1086 generates intermediate parity (intermediate code) from the data to be written and the old data read in step S1909 (step S1910). Next, the data protection control unit 1086 transmits the intermediate parity to the other storage node 103 that is the data redundancy destination (step S1911), and waits for a response from the other storage node 103 (step S1912).

[0133] The data protection control unit 1086 of the other storage node 103 that received the intermediate parity performs an EC parity write process (step S1913) and transmits a response to the storage node 103 that transmitted the intermediate parity (step S1914). Details of the EC parity write process of step S1913 will be described later with reference to FIG.

[0134] After receiving the response in step S1906 or after receiving the response in step S1912, the data protection control unit 1086 performs a data protection code write process (step S1915) for the storage device 1033 on its own storage node 103. Details of the data protection code write process in step S1915 will be described later with reference to FIG.

[0135] Next, the data protection control unit 1086 releases the exclusion (step S1916), and ends the data redundancy processing 1096.

[0136] (Data protection code writing process according to the fourth embodiment) 27, in the fourth embodiment, if a write-back operation is determined in S14 of FIG. 25 and data is written to the storage device 1033 as a cache log in S16, it is determined that no write log creation is necessary (step S2011; No). If a write-through operation is determined in S14 of FIG. 25 and data is not written to the storage device 1033 as a cache log, it is determined that a write log creation is necessary (step S2011; Yes).

[0137] First, if the data protection control unit 1086 determines in step S2001 that it is not necessary to create a write log for the data (step S2001; No), it acquires the protection code storage method of the storage device (step S2012). If the protection code storage method is the separate method (step S2013; separate method), the data protection control unit 1086 writes the protection code group to be updated to the storage device 1033 as a write log. Specifically, the data protection control unit 1086 reads the protection code group containing the protection code of the data to be updated from the storage device 1033 (step S2014), and updates the protection code of the data to be updated from this protection code group (step S2015). Next, the data protection control unit 1086 writes the new protection code group to the storage device 1033 by a write log creation / saving process (step S2016) and waits for its completion (step S2017).

[0138] On the other hand, if it is determined in step S2011 that a write log needs to be created (step S2011; Yes), the data protection control unit 1086 writes the data and the protection code as a write log to the storage device 1033. Specifically, the data protection control unit 1086 acquires the storage method of the protection code of the storage device 1033 (step S2018).

[0139] Next, the data protection control unit 1086 determines the protection code storage method (step S2019). Next, if the protection code storage method is the separate method (step S2019; separate method), the data protection control unit 1086 reads the protection code group including the protection code of the data to be updated from the storage device 1033 (step S2020). Next, the data protection control unit 1086 updates the protection code of the data to be updated from the protection code group read in step S2020 (step S2021). Next, the data protection control unit 1086 creates a write log of the new protection code group and data updated in step S2021 by a write log creation and saving process, and writes the log to the storage device 1033 (step S2022). Then, the data protection control unit 1086 waits for the writing in step S2022 to be completed (step S2023). When step S2023 is completed, the data protection control unit 1086 advances the process to step S2024.

[0140] On the other hand, if the protection code storage method is the same sector method (step S2019; same sector method), the data protection control unit 1086 proceeds to step S2022.

[0141] The Write log creation and saving processes in steps S2016 and S2022 can use any of the methods described with reference to FIGS.

[0142] On the other hand, if the data has been made nonvolatile and the protection code storage method is the same sector method (step S2013; same sector method), the data protection control unit 1086 proceeds to step S2024. Alternatively, the data protection control unit 1086 also proceeds to step S2024 when it receives a completion response while waiting for the completion of the write log backup process (step S2023). In step S2024, the data to be written and the protection code are written to the assigned address on the storage device 1033.

[0143] (EC Parity Write Process According to the Fourth Embodiment) 28 is a flowchart showing the processing steps of EC parity write processing according to embodiment 4. In the EC parity write processing, the parity and the parity protection code are written as a log to the storage device 1033, and then the parity and the parity protection code are written to an assigned address in the data storage area 1203.

[0144] First, the data protection control unit 1086 reads the old parity from the assigned address (step S2101), then generates a new parity from the old parity and the intermediate parity, and generates a protection code from the new parity (step S2102).

[0145] Next, the data protection control unit 1086 acquires the protection code storage method of the storage device (step S2103). Next, the data protection control unit 1086 determines the protection code storage method. If the protection code storage method is the separate method (step S2104; separate method), the data protection control unit 1086 writes the protection code group including the protection code to be updated this time to the storage device 1033 as a write log. Specifically, the data protection control unit 1086 reads the protection code group including the protection code of the data to be updated from the storage device 1033 (step S2105). Next, the data protection control unit 1086 updates the protection code of the data to be updated from this protection code group (step S2106). After step S2106 is completed, the data protection control unit 1086 proceeds to step S2107.

[0146] If the protection code storage method is the same sector method (step S2404; same sector method) or after step S2106 is completed, the data protection control unit 1086 executes a write log creation and saving process (step S2107). In the write log creation and saving process, the parity and the new protection code group are written as a write log and written to the storage device 1033. Next, the data protection control unit 1086 waits for the completion of the write log creation and saving process of step S2107 (step S2108). The write log creation and saving process of step S2107 can use any of the methods described with reference to FIGS. 20, 22, and 23.

[0147] Next, when the data protection control unit 1086 receives a completion response while waiting for the completion of the write log save process (step S2108), it writes the parity and protection code to the assigned address on the storage device 1033 (step S2109).

[0148] (Effects of the fourth embodiment) In the fourth embodiment, whether or not to write to the write log is switched depending on whether a write-back operation or a write-through operation is selected for the data and its protection code for which a write request is received from the host device 101. Therefore, even if a protection code is added to the data, the number of times writing to the write log can be reduced.

[0149] In addition, in embodiment 4, the protection code assigned to the data to be written is written to the same sector as the data, thereby limiting the number of I / O operations to reading only the sector related to storing the data, thereby reducing the degradation of I / O performance.

[0150] In addition, in embodiment 4, the protection code assigned to the data to be written is written to a sector different from the data, thereby limiting the number of sector reads of the protection code group when updating multiple data, thereby reducing the number of I / O operations and suppressing a decrease in I / O performance.

[0151] Furthermore, in the fourth embodiment, when the redundancy method is the mirror method, the data to be written and its protection code are made redundant between the storage node 103 that is the redundancy source and another storage node 103 that is the redundancy destination. Under this configuration, each storage node 103 switches whether to write a write log depending on whether a write-back operation or a write-through operation is selected. As a result, even in a mirror method data redundancy configuration, it is possible to reduce the number of drive I / O operations in each storage node 103, improve performance during drive bottlenecks, and reduce the CPU cost required for drive I / O.

[0152] Furthermore, in the fourth embodiment, when the redundancy method is the EC method, the EC parity of the data to be written is distributed between the storage node 103 that is the redundancy source and two or more other storage nodes 103 that are redundancy destinations. Under this configuration, each storage node 103 switches whether to write a write log depending on whether a write-back operation or a write-through operation is selected. As a result, even in an EC data redundancy configuration, it is possible to reduce the number of drive I / O operations in each storage node 103, improve performance during drive bottlenecks, and reduce the CPU cost required for drive I / O.

[0153] It should be noted that the present invention is not limited to the above-described embodiments, and includes various modifications. Furthermore, the above-described embodiments have been described in detail to clearly explain the present invention, and are not necessarily limited to those having all of the described configurations. Furthermore, not only are such configurations removed, but replacement or addition of configurations is also possible. Furthermore, forms in which some or all of the above-described embodiments are appropriately combined to be consistent are also included in the embodiments of the present invention.

[0154] Furthermore, the above-described configurations, functions, processing units, processing means, etc. may be partially or entirely implemented in hardware, for example, by designing them as integrated circuits. The present invention can also be implemented by software program code that implements the functions of the embodiments. In this case, a recording medium on which the program code is recorded is provided to a computer, and a processor within the computer reads the program code stored in the recording medium.

[0155] In this case, the program code itself read from the recording medium will realize the functions of the above-described embodiment, and the program code itself and the recording medium on which it is stored constitute the present invention. Examples of recording media for supplying such program code include flexible disks, CD-ROMs, DVD-ROMs, hard disks, SSDs (Solid State Drives), optical disks, magneto-optical disks, CD-Rs, magnetic tapes, non-volatile memory cards, and ROMs.

[0156] Furthermore, the program code that realizes the functions described in this embodiment can be implemented in a wide range of program or script languages, such as assembler, C / C++, perl, Shell, PHP, and Java (registered trademark).

[0157] In the above-described embodiment, the control lines and information lines are those that are considered necessary for the explanation, and not all control lines and information lines in the product are necessarily shown. All components may be interconnected. [Explanation of symbols]

[0158] 100: Storage system, 101: Host device, 102: Network, 103: Storage node, 1031: CPU, 1032: Memory, 1033: Storage device, 1083: Storage controller, 1086: Data control protection unit.

Claims

1. a non-volatile storage device; a storage system including one or more storage nodes each having a storage controller that processes reading and writing of data from and to the storage device and a volatile memory, The memory has a cache area for temporarily storing data related to a write request from a host device, the storage device has a cache log storage area for storing updated contents of the cache area, a data storage area for permanently storing data related to the write request, and a write log storage area for storing updated contents of the data storage area; The storage controller switching between a write-back operation in which the data related to the write request is stored in the cache area and the cache log storage area, and then a response is made to the host device, and then the data is written to the data storage area after the response, and a write-through operation in which the data is written to the data storage area and then a response is made to the host device; In the write-back operation, data is written to the data storage area without writing the updated contents of the data storage area to the write log storage area, and in the write-through operation, the updated contents of the data storage area are written to the write log storage area and then the data is written to the data storage area. A storage system comprising:

2. 2. The storage system according to claim 1, The storage controller If a power loss occurs in the storage system between the response and the writing of data to the data storage area, in the power loss recovery process, in the case of the write-back operation, the updated contents of the cache area are read from the cache log storage area of ​​the storage device, the data of the cache area in the memory is restored, and the restored data is written to the data storage area, and in the case of the write-through operation, the updated contents of the data storage area are read from the write log storage area and applied to the data storage area. A storage system comprising:

3. 2. The storage system according to claim 1, The storage controller When the write request is received, a protection code for error detection is added to the data related to the write request; In the write-back operation, the data and the protection code are stored in the cache area and the cache log storage area, and then written to the data storage area; In the write-through operation, the updated contents of the data storage area are written to the write log storage area, and then the data and the protection code are written to the data storage area. A storage system comprising:

4. 4. The storage system according to claim 3, The storage controller Dividing an area in the storage device and a storage area corresponding to the area and provided to the host device into sectors, which are the minimum writing units; The protection code and the corresponding data are written in the same sector of the data storage area. A storage system comprising:

5. 4. The storage system according to claim 3, Dividing an area in the storage device and a storage area corresponding to the area and provided to the host device into sectors, which are the minimum writing units; The protection code and the corresponding data are written in different sectors in the data storage area. A storage system comprising:

6. 4. The storage system according to claim 3, The storage controller Dividing an area in the storage device and a storage area corresponding to the area and provided to the host device into sectors, which are the minimum writing units; a protection code group is formed by grouping the protection codes associated with the data in the sectors; When writing the data to a sector of the data storage area, the protection code group including the protection code of the data to be written is read from the data storage area, the protection code of the protection code group is rewritten and written to the write log storage area, and then the protection code group including the rewritten protection code is written to the data storage area. A storage system comprising:

7. 2. The storage system according to claim 1, The storage controller collectively writes the update contents of the data storage area related to the plurality of write requests into the write log storage area. A storage system comprising:

8. 2. The storage system according to claim 1, The storage controller writes the update contents of the data storage area related to the plurality of write requests and the update contents of one or more cache areas together to the storage device. A storage system comprising:

9. 2. The storage system according to claim 1, The storage controller of one of the storage nodes that has received the write request from the host device transfers data related to the write request to the other storage nodes that constitute the storage system, The storage controller of the storage node that received the transferred data switching between a write-back operation in which the transferred data is stored in the cache area and the cache log storage area, and then a response is made to the host device, and then the data is written to the data storage area after the response, and a write-through operation in which the data is written to the data storage area and then a response is made to the host device; In the write-back operation, data is written to the data storage area without writing the updated contents of the data storage area to the write log storage area, and in the write-through operation, the updated contents of the data storage area are written to the write log storage area and then the data is written to the data storage area. A storage system comprising:

10. 2. The storage system according to claim 1, a storage node that stores the data and a parity associated with the data are stored in the storage node; The storage controller of one of the storage nodes that receives the write request from the host device reads from the data storage area the old data that is to be updated by the new data related to the write request, generates an intermediate code from the new data and the old data, and transfers the intermediate code to another storage node that configures the storage system and stores the parity; The storage controller of the other storage node that received the intermediate code The old parity on the data storage area is read, new parity is generated from the intermediate code and the old parity, the new parity is written to the write log storage area, and then the new parity is written to the data storage area. A storage system comprising:

11. A control method for a storage system including one or more storage nodes each having a storage controller that processes data reading and writing and a volatile memory, the method comprising: The memory has a cache area for temporarily storing data related to a write request from a host device, the nonvolatile storage device has a cache log storage area for storing update contents of the cache area, a data storage area for permanently storing data related to the write request, and a write log storage area for storing update contents of the data storage area; The storage controller switching between a write-back operation in which the data related to the write request is stored in the cache area and the cache log storage area, and then a response is made to the host device, and then the data is written to the data storage area after the response, and a write-through operation in which the data is written to the data storage area and then a response is made to the host device; In the write-back operation, data is written to the data storage area without writing the updated contents of the data storage area to the write log storage area, and in the write-through operation, the updated contents of the data storage area are written to the write log storage area and then the data is written to the data storage area. A storage system control method comprising:

Citation Information

Patent Citations

  • Disk control mechanism suitable for random disk write

    JP2001243021A

  • Information processor

    JP2006134125A

  • Access control device, error correction control method and storage device

    JP2012118839A

  • Storage system and monitoring device

    JP2017091025A

  • Page cache write logging in block-based storage

    JP2017515193A