Storage system and memory control method
Patent Information
- Application Number
- JP2025059214
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2025-03-31
- Publication Date
- 2026-10-14
AI Technical Summary
【0009】 本発明によれば、不揮発性記憶装置に対するデータの入出力量を抑えることができる。
Smart Images

Figure 2026166338000001_ABST
Abstract
Description
Technical Field
[0001] The present invention relates to a storage system and a storage control method, and is suitably applied to, for example, a storage system related to a technology that uses a cache when executing data read and write processing with a host device.
Background Art
[0002] In recent years, storage systems are desired to have both high performance and high reliability. As such a storage system, there is one disclosed in Patent Document 1. The storage system includes a volatile memory, a nonvolatile storage device, and a storage controller. The storage controller executes data read and write processing using a storage function. The data write processing is executed in the following procedure. When the storage controller first receives a write request from a request source, it temporarily stores the data in the volatile memory. Next, the storage controller saves a log related to this data in the nonvolatile storage device. At the point when the log saving is completed, the storage controller returns a completion response to the request source. Finally, the storage controller processes the data stored in the memory with the storage function, and destages the data to a storage device. This completes the permanent storage of the data.
[0003] To improve performance and reliability, the storage controller stores control information and cache data in the volatile memory, and after storing logs of the stored control information and cache data in the nonvolatile storage device, it sends a completion response to the request source. After that, the storage controller destages the cache data stored in the volatile memory to the nonvolatile storage device.
Prior Art Documents
Patent Documents
[0004]
Patent Document 1
[0005] However, in such a configuration, the amount of data input and output to the non-volatile storage device becomes large when performing data read and write operations, which can become a performance bottleneck.
[0006] This invention was made with the above points in mind, and aims to propose a storage system that can reduce the amount of data input and output to a non-volatile memory device. [Means for solving the problem]
[0007] To solve these problems, the present invention provides a first volatile storage device capable of temporarily storing data to be sent and received from the requester of an I / O request, a second volatile storage device capable of temporarily storing data, a non-volatile storage device capable of permanently storing data, and a storage controller that controls data input / output processing for the first volatile storage device, the second volatile storage device, and the non-volatile storage device. The storage controller moves the data between the first volatile storage device, the second volatile storage device, and the non-volatile storage device based on the access status of the data stored in the first volatile storage device, the second volatile storage device, and the non-volatile storage device.
[0008] The present invention provides a storage control method for a storage system comprising: a first volatile storage device capable of temporarily storing data and storing data to be sent and received from the requester of an I / O request; a second volatile storage device capable of temporarily storing data; a non-volatile storage device capable of permanently storing data; and a storage controller that controls data input / output processing for the first volatile storage device, the second volatile storage device, and the non-volatile storage device, wherein the storage controller moves the data between the first volatile storage device, the second volatile storage device, and the non-volatile storage device based on the access status of the data stored in the first volatile storage device, the second volatile storage device, and the non-volatile storage device. [Effects of the Invention]
[0009] According to the present invention, the amount of data input and output to a non-volatile storage device can be reduced. [Brief explanation of the drawing]
[0010] [Figure 1] This is a system configuration diagram showing an example of the storage system configuration according to this embodiment. [Figure 2] This figure shows an example of the physical configuration of the storage node shown in Figure 1. [Figure 3] This figure shows an example of the logical configuration of a storage node. [Figure 4] This is a conceptual diagram illustrating the outline of the storage system and memory control method according to this embodiment. [Figure 5] This figure shows an example of the configuration of memory storage areas. [Figure 6] This figure shows an example of a configuration diagram for a second volatile memory device. [Figure 7] This figure shows an example of a non-volatile memory device configuration diagram. [Figure 8] This is a block diagram showing an example structure of a storage controller software module. [Figure 9] This figure shows an example of a cache directory. [Figure 10] This is a diagram showing an example of the structure of a log header. [Figure 11] This is a flowchart showing an example of the procedure of read processing. [Figure 12] This is a flowchart showing an example of the procedure of write processing. [Figure 13] This is a flowchart showing an example of the procedure of data migration processing from a memory as an example of a first volatile storage device to a second volatile storage device. [Figure 14] This is a flowchart showing an example of the procedure of asynchronous destage processing. [Figure 15] This is a flowchart showing an example of the procedure of control information update processing. [Figure 16] This is a flowchart showing an example of the procedure of cache data update processing. [Figure 17] This is a flowchart of log creation processing. [Figure 18] This is a flowchart of control information determination processing. [Figure 19] This is a flowchart showing an example of the procedure of log evacuation processing. [Figure 20] This is a flowchart showing an example of the procedure of log recovery processing. [Mode for Carrying Out the Invention]
[0011] Hereinafter, the present embodiment of the present invention will be described in detail based on the drawings. The present embodiment relates to, for example, a storage system including a plurality of storage nodes on which one or more SDS (Software Defined Storage) is implemented.
[0012] Figure 1 is a system configuration diagram showing a configuration example of the storage system 1 according to the present embodiment. The storage system 100 includes one or more storage nodes 103, and further includes one or more host devices 101 and a management node 104. The host device 101, the storage node 103, and the management node 104 are interconnected via a network 102.
[0013] The host device 101 is a general-purpose computer used by the user. The host device 101 may be, for example, a physical computer or a virtual computer running on a physical computer. The host device 101 sends read requests and write requests to the storage node 103, for example, in response to user operations or requests from application programs. Hereinafter, "read requests" and "write requests" will also be referred to as "I / O requests".
[0014] Network 102 is, for example, a SAN (Storage Area Network) or a LAN (Local Area Network). The connection standard for network 102 is, for example, FC (Fibre Channel) or Ethernet®.
[0015] The storage node 103 is a computer equipped with external storage devices such as SSDs (Solid State Drives) and HDDs (Hard Disk Drives). The storage node 103 may also be a general-purpose server. The storage node 103 has a storage area for reading and writing data. The storage node 103 provides the host device 101 with a non-volatile storage area as an example of a storage area. The storage area may include a volatile storage area.
[0016] The management node 104 is a computer used by the administrator to manage the entire storage system 100. The management node 104 manages two or more storage nodes as a "cluster." Note that there may be one or more clusters within the storage system 100.
[0017] The storage system 100 may be on-premises, in the cloud, or a hybrid of both. The network 102 may be, for example, a virtual network on the cloud. The storage node 103 may be, for example, a virtual server on the cloud.
[0018] Figure 2 shows an example of the physical configuration of a storage node 103 of the storage system 100 shown in Figure 1. In this example, the host device 101 is omitted from the diagram for simplification. The storage node 103 includes a CPU (Central Processing Unit) 1031, a memory 1032 as an example of a first volatile storage device, one or more second volatile storage devices 1033, one or more non-volatile storage devices 1034, and a NIC (Network Interface Card) 1035.
[0019] The storage node 103 of the storage system 100 includes a memory 1032 that can temporarily store data related to I / O requests from the host device 101 as the requesting party and stores data to be sent and received from the requesting party of the I / O request, a second volatile storage device 1033 that can temporarily store data, a non-volatile storage device 1034 that can permanently store data, and a storage controller that controls data input / output processing for the memory 1032, the second volatile storage device 1033, and the non-volatile storage device 1034. The storage controller moves data between the memory 1032, the second volatile storage device 1033, and the non-volatile storage device 1034 based on the access status of the data stored in the memory 1032, the second volatile storage device 1033, and the non-volatile storage device 1034. In this embodiment, for example, the memory 1032 is byte-accessible, while the second volatile storage device 1033 and the non-volatile storage device 1034 are not byte-accessible.
[0020] When the storage controller receives a data write request from the host device 101, which is an example of a request source, it stores the data corresponding to the write request in the memory 1032 and stores a log corresponding to the data stored in the memory 1032 in the non-volatile storage device 1034. After storing the log in the non-volatile storage device 1034, the storage controller sends a completion response to the host device 101, and if there are no cache hits for the data stored in the memory 1032 during the first period from the first time the data was stored in the memory 1032, it moves the data stored in the memory 1032 to the second volatile storage device 1033 and stores it there. If there are no cache hits for the data stored in the second volatile storage device 1033 during the second period from the second time the data was stored in the second volatile storage device 1033, the storage controller destages the data stored in the second volatile storage device 1033 to the non-volatile storage device 1034.
[0021] The storage controller manages clean data, which is the same data stored in memory 1032 as the data stored in non-volatile storage device 1034, and dirty data, which is the data stored in memory 1032 that has not been destaged in non-volatile storage device 1034. The storage controller moves the dirty data from memory 1032 to the second volatile storage device 1033 for storage. The storage controller may, for example, choose not to move the clean data to the second volatile storage device 1033 for storage. In this embodiment, memory 1032 can input and output data in data units related to I / O requests. The second volatile storage device 1033 and the non-volatile storage device 1034 input and output data in units larger than the data units related to the I / O requests.
[0022] The CPU 1031 described above is a processor device that controls the operation of the storage node 103. The memory 1032 is a semiconductor memory capable of temporarily storing application programs and data. The memory 1032 is, for example, SRAM (Static Random Access Memory) or DRAM (Dynamic Random Access Memory). The CPU 1031 controls the operation of the storage node 103 by executing the application program held in the memory 1032.
[0023] The second volatile storage device 1033 is, for example, a volatile storage device that temporarily holds data. The second volatile storage device 1033 is controlled so that the data stored in it is erased simultaneously with the shutdown of the virtual machine on the cloud. The second volatile storage device 1033 may be, for example, an external storage device (instance store) on the cloud. For this reason, the external storage device physically used here may be a non-volatile storage device such as an NVMe (Non-Volatile Memory Express) drive. In this embodiment, the second volatile storage device 1033 has better I / O performance than the non-volatile storage device 1034, is accessed faster than the non-volatile storage device 1034, and can input and output more data than the non-volatile storage device 1034.
[0024] The non-volatile storage device 1034 provides a physical storage area for reading or writing data in response to I / O requests from the requesting host device 101. The non-volatile storage device 1034 is, for example, an HDD (Hard Disk Drive), an SSD (Solid State Drive), or an NVMe drive. Alternatively, the non-volatile storage device 1034 may be a network-attached shared storage device.
[0025] NIC1035 is an interface for storage node 103 to communicate with host device 101, other storage nodes 103, or management node 104 via network 102. NIC1034 may be an FC card, for example, instead of a NIC. NIC1034 performs protocol control during communication with host device 101, other storage nodes 103, or management node 104.
[0026] Figure 3 shows an example of the logical configuration of storage node 103. Storage node 103 includes front-end drivers 1051A, 1051B, 1051C, one or more storage controllers 1052A1, 1052A2, 1052B1, 1052B2, 1052C1, 1052C2, data protection controllers 1053A, 1053B, 1053C, and back-end drivers 1054A, 1054B, 1054C. In this embodiment, storage controllers 1052A1 and 1052A2 may also be collectively referred to as storage controller 1052A, storage controllers 1052B1 and 1052B2 as storage controller 1052B, and storage controllers 1052C1 and 1052C2 as storage controller 1052C.
[0027] Front-end drivers 1051A, 1051B, and 1051C are software that controls the NIC 1034 and provides the CPU 1031 with an abstract interface to the storage controllers 1052A, 1052B, and 1052C when communicating with the host device 101, other storage nodes 103, or the management node 104.
[0028] The backend drivers 1054A, 1054B, and 1054C are software that controls the second volatile storage devices 1033 of their respective storage nodes 103 and provides the CPU 1031 with an abstracted interface for communication with each second volatile storage device 1033.
[0029] The storage controllers 1052A, 1052B, and 1052C are software that functions, for example, as controllers for Software Defined Storage (SDS). The storage controllers 1052A, 1052B, and 1052C receive I / O requests from the host device 101 and issue I / O commands corresponding to those I / O requests to the data protection controllers 1053A, 1053B, and 1053C. The storage controllers 1052A, 1052B, and 1052C have a logical volume configuration function. The logical volume configuration function associates logical chunks configured by the data protection controllers 1053A, 1053B, and 1053C with logical volumes to be provided to the host. This association may be, for example, a straight mapping method (a one-to-one association between logical chunks and logical volumes, where the address of the logical chunk and the address of the logical volume are the same) or a virtual volume function (Thin Provisioning) method. This Thin Provisioning method, for example, divides logical chunks and logical volumes into small areas (pages) and associates the addresses of logical chunks and logical volumes on a page-by-page basis.
[0030] In this embodiment, the storage system 100 has a plurality of storage nodes 103, each storage node 103 comprising a memory 1032, a second volatile storage device 1033, a non-volatile storage device 1034, and a storage controller. The storage controller on a storage node 103 is configured redundantly with one or more storage controllers on other storage nodes 103.
[0031] Of the storage controllers 1052A, 1052B, and 1052C that constitute the redundant configuration, for example, storage controller 1052A is set to a state where it can accept I / O requests from the host device 101 that is the requesting party (active state, described later), while the other storage controller 1052B is set to a standby state (standby state, described later) that takes over the processing of the active controller 1052A, described later.
[0032] In this embodiment, storage controllers 1052A, 1052B, and 1052C on a certain storage node 103 are managed as a storage controller group 1056 that forms a redundant configuration together with one or more storage controllers 1052A, 1052B, and 1052C on other storage nodes 103. In the storage controller group 1056, one storage controller 1052A, 1052B, or 1052C is set to a state where it can accept I / O requests from the host device 101 (this is the active system state, and is called the active state).
[0033] In the storage control unit 1055, storage controllers 1052A, 1052B, and 1052C that are not in an active state are set to a state where they do not accept I / O requests from the host device 101 (this is a standby state, also called the standby state). In Figure 3, for example, the storage controller group 1056A is configured such that the storage controller 1052A1 on storage node 103A is in an active state, and the storage controller 1052B1 on storage node 103B is in a standby state.
[0034] In the storage controller group 1056, if a failure occurs in storage node 103 where the storage controllers 1052A, 1052B, and 1052C of storage node 103, which are set to the active state, are located, the state of the storage controllers 1052A, 1052B, and 1052C of another storage node 103, which were previously set to the standby state, is switched to the active state. As a result, if the storage controllers 1052A, 1052B, and 1052C of storage node 103, which are set to the active state, become unable to operate, the storage controllers 1052A, 1052B, and 1052C of another storage node 103, which are set to the standby state, can take over the I / O processing that the storage controllers 1052A, 1052B, and 1052C were performing.
[0035] The data protection controllers 1053A, 1053B, and 1053C are software that allocates physical storage space to each storage controller group 1056A provided by a second volatile storage device 1033 within its own storage node 103 or a second volatile storage device 1033 in another storage node 103, and also has the function of reading or writing specified data to the corresponding second volatile storage device 1033 according to I / O commands provided by the storage controllers 1052A, 1052B, and 1052C.
[0036] Figure 4 is a conceptual diagram illustrating the overview of the storage system and its storage control method according to this embodiment. First, the overview of the storage control method according to this embodiment will be described. The storage control method is a storage control method for a storage system 100 comprising: a memory 1032 as an example of a first volatile storage device that can temporarily store data related to I / O requests from a host device 101 as an example of a request source and stores data to be sent and received to the request source of the I / O request; a second volatile storage device 1033 that can temporarily store data; a non-volatile storage device 1034 that can permanently store data; and a storage controller that controls the input / output processing of data to the memory 1032, the second volatile storage device 1033, and the non-volatile storage device 1034. The storage controller moves data between the memory 1032, the second volatile storage device 1033, and the non-volatile storage device 1034 based on the access status of the data stored in the memory 1032, the second volatile storage device 1033, and the non-volatile storage device 1034. For example, when this storage controller receives a data write request from the host device 101, it stores the data corresponding to the write request in memory 1032, stores a log corresponding to the data stored in memory 1032 in the non-volatile storage device 1034, and after storing the log in the non-volatile storage device 1034, it sends a completion response to the host device 101. For example, if the data stored in memory 1032 does not have a cache hit for a first period from the first time the data was stored in memory 1032, this storage controller moves the data stored in memory 1032 to the second volatile storage device 1033 and stores it there. Furthermore, for example, if the data stored in the second volatile storage device 1033 does not have a cache hit for a second period from the second time the data was stored in the second volatile storage device 1033, this storage controller destages the data stored in the second volatile storage device 1033 to the non-volatile storage device 1034. In this embodiment, as described above, for example, memory 1032 is byte-accessible, while the second volatile storage device 1033 and the non-volatile storage device 1034 are not byte-accessible.
[0037] First, storage controllers 1052A, 1052B, and 1052C update cache data for processing related to I / O requests from the host device 101 and various other processes. Memory 1032 has a cache data area 10322. The second volatile storage device 1033 has a cache data area 10331. The non-volatile storage device 1034 has a persistence area 10341 that permanently holds data and a cache data log area 10343 that holds logs.
[0038] In this process, storage controllers 1052A, 1052B, and 1052C update the cache data in the cache data area 10322 of memory 1032, create a log, and store the log in the cache data log area 10343 of the non-volatile storage device 1034 to make it non-volatile. The log includes the updated cache data itself and a log header, and contains information indicating how the cache data in memory 1032 was updated. The log header includes the update address, update size, and log type for each log sequence number (see Figure 10 described later).
[0039] The cache data in the cache data area 10322 of memory 1032 has a state that identifies whether the data has also been updated in the persistence area 10341 on the non-volatile storage device 1034. If it has been updated in the persistence area 10341, it is in a clean state; if it has not been updated, it is in a dirty state.
[0040] The storage controllers 1052A, 1052B, and 1052C store the cached data from the cache data area 10322 of memory 1032 onto the cache data area 10331 of the second volatile storage device 1033 while it is still in a dirty state. The storage controllers 1052A, 1052B, and 1052C then read the cached data from the cache data area 10331 of the second volatile storage device 1033 onto the cache data area 10322 of memory 1032.
[0041] The storage controllers 1052A, 1052B, and 1052C perform asynchronous destaging on dirty cache data in the cache data area 10331 of the second volatile storage device 1033. Asynchronous destaging is an operation in which data on the cache data area 10331 is written to the persistence area 10341 asynchronously with respect to I / O requests.
[0042] Figure 5 shows an example of the memory area configuration of memory 1032. Memory 1032 includes storage control information 10321, cache data area 10322, control information log buffer 10323, cache data log buffer 10324, and asynchronous destaging buffer 10325. Storage control information 10321 includes cache directory 103211. The cache directory is explained in Figure 9. Control information log buffer 10323 temporarily stores logs of control information, and cache data log buffer 10324 temporarily stores logs of cache data.
[0043] The control information log buffer 10323 has, for example, four types of log headers. The cache data log buffer 10324 also has, for example, four types of log headers.
[0044] Figure 6 shows an example of the configuration diagram of the second volatile storage device 1033. The second volatile storage device 1033 includes a cache data area 10331, separate from the cache data area 10322 of the memory 1032. The cache data area 10331 will be described later.
[0045] Figure 7 shows an example of the configuration diagram of the non-volatile storage device 1034. The non-volatile storage device 1034 includes a persistence area 10341, a control information log area 10342, and a cache data log area 10343. The persistence area 10341 is an area for storing user data managed by data protection controllers 1053A, 1053B, and 1053C. The control information log area 10342 and the cache data log area 10332 are the areas to which logs are saved in the log backup process described later.
[0046] The control information log area 10342 has, for example, four types of log headers. The cache data log area 10343 also has, for example, four types of log headers.
[0047] Figure 8 is a block diagram showing example structures of the software modules of the storage controllers 1052A, 1052B, and 1052C. The storage controllers 1052A, 1052B, and 1052C execute a read processing unit 400, a write processing unit 401, a cache data movement processing unit 402, an asynchronous destaging processing unit 403, a control information update processing unit 404, a cache data update processing unit 405, a log creation processing unit 406, a control information confirmation processing unit 407, a log saving processing unit 408, and a log recovery processing unit 409. The cache data movement processing unit 402 controls the movement of cache data from memory 1032 to the second volatile storage device 1033. Details of these read processing units 400 and others will be described later.
[0048] Figure 9 shows an example of the cache directory 103211. The cache directory 103211 is management information for cache segments, which are subdivided areas of the cache data area 10322 and the cache data area 10331. The cache directory 103211 has an entry corresponding to each cache segment.
[0049] Each entry includes a cache address, logical volume number, logical volume address, and attributes. The cache address indicates the address in memory 1032 of the cache segment corresponding to each entry. The logical volume number and logical volume address indicate which logical volume and logical volume address the data stored in the cache segment belongs to. If no data is stored in the cache segment, a "-" is stored to indicate "no value". On the other hand, if data is stored in the cache segment, the attribute field is stored with a value of "dirty" or "clean".
[0050] Figure 10 shows an example of the structure of a log header 103231. The log header 103231 has the following fields and values corresponding to each field. The log header 103231 is a table contained in each log, stored, for example, in the control information log buffer 10323 and cache data log buffer 10324 on the memory 1032, the cache data log header management list, and the control information log area 10342 and cache data log area 10343 on the non-volatile storage device 1034. Each log header 103231 includes, for example, a log sequence number, update address, update size, and log type as fields.
[0051] The Log Sequence Number field stores the log sequence number uniquely assigned to each log. The Update Address field stores the address of the cache data area 10322 that each log updates. The Update Size field stores the size of the cache data that each log updates.
[0052] The log type field stores a value (log type) to identify what kind of log was created in conjunction with the trigger for creating the log. The log type may include, for example, a cache data log associated with the write processing unit 401, or a destaging log associated with the asynchronous destaging processing unit 403. The log type field may store a string such as "cache data log" or "destaging log," or a numerical value such as "1" or "2."
[0053] Figure 11 is a flowchart showing an example of the read processing procedure. The read processing is called when a read I / O request is received from the host device 101. The read processing is performed by the read processing unit 400 of the storage controllers 1052A, 1052B, and 1052C. In the illustrated example, if the data related to the read request is not in memory 1032 but in the second volatile storage device 1033, the storage controllers 1052A, 1052B, and 1052C store the data from the second volatile storage device 1033 in memory 1032 and respond to the host device 101, the source of the read request, with the data stored in memory 1032.
[0054] First, the read processing unit 400 receives a read I / O request sent by the host device 101 via the front-end drivers 1051A, 1051B, and 1051C, interprets this read I / O request, and obtains the logical volume number and logical volume address to be read (step S4001).
[0055] Next, the read processing unit 400 determines whether the cache data corresponding to the logical volume number and logical volume address is located in the cache data area 10322 of memory 1032 (cache hit) (step S4002). If it is a cache hit (step S4002; Yes), the read processing unit 400 reads the data from the cache data area 10322 of memory 1032 (step S4008) and responds with the data to the host (step S4009).
[0056] If a cache miss occurs on the cache data area 10322 of memory 1032 (step S4002; No), the read processing unit 400 determines whether the cache data corresponding to the logical volume number and logical volume address is located on the cache data area 10331 of the second volatile storage device 1033 (cache hit) (step S4003).
[0057] If a cache hit occurs (step S4003; Yes), the read processing unit 400 reads the data from the cache data area 10331 of the second volatile storage device 1033 (step S4005), and if the read data is in a dirty state, it calls the log creation process (step S4006). After that, the read processing unit 400 stores the read data in the cache data area 10322 of the memory 1032 (step S4006).
[0058] In this case, the read processing unit 400 sets the requirement for non-volatilization to "required" if the read data is in a dirty state, and sets the requirement for non-volatilization to "not required" if the data is in a clean state, and calls the cache data update process described later. The read processing unit 400 updates the cache directory and calls the control information update process. In this case, similar to the cache data update, the read processing unit 400 sets the requirement for non-volatilization to "required" if the read data is in a dirty state, and sets the requirement for non-volatilization to "not required" if the data is in a clean state, and calls the process.
[0059] Finally, the read processing unit 400 reads data from the cache data area 10322 in the memory 1032, similar to when a cache hit occurs on the cache data area 10322 (step S4009), and responds with the data to the host device 101 (step S400A).
[0060] If a cache miss occurs on the cache data area 10331 of the second volatile storage device 1033 (step S4003; No), the staging process is called (step S4004). The staging process is executed by the data protection controllers 1053A, 1053B, and 1053C. The staging process reads data corresponding to the logical volume number and logical volume address from the persistence area 10341 on the non-volatile storage device 1034. The read data is stored in the cache data area 10322 on the memory 1032 (step S4007). At this time, the staging process sets the non-volatility requirement to "not required" and calls the cache data update processing unit 405, which will be described later. Similar to the case of a cache hit, data is read from the cache data area 10322 of the memory 1032 (step S4009) and the data is sent back to the host device 101 (step S400A).
[0061] Figure 12 is a flowchart showing an example of the write process procedure. The write process is called when a write I / O request is received from the host device 101 and is executed by the write processing unit 401 of the storage controllers 1052A, 1052B, and 1052C.
[0062] First, the write processing unit 401 receives a write I / O request sent by the host device 101 via the front-end driver, interprets it, and obtains the logical volume number and logical volume address to be written (step S4011).
[0063] Next, the write processing unit 401 determines whether the cache data corresponding to the logical volume number and logical volume address is located in the cache data area 10322 of memory 1032 (cache hit) (step S4012). If it is a cache hit (step S4012; Yes), the write processing unit 401 stores the data in the cache data area 10322 of memory 1032 (step S4017). At this time, the write processing unit 401 sets the non-volatility requirement to "Required" and calls the cache data update process described later.
[0064] Next, the write processing unit 401 updates the cache directory and calls the control information update process, which will be described later (step S4018). At this time, the write processing unit 401 sets the requirement for non-volatility to "required" when calling the process, similar to the cache data update. The write processing unit 401 then calls the control information confirmation process, which will be described later (step S4019). Finally, the write processing unit 401 responds to the host device 101 with a write success (step S401A).
[0065] If a cache miss occurs on the cache data area 10322 of memory 1032 (step S4012; No), the write processing unit 401 determines whether the data is on the cache data area 10331 of the second volatile storage device 1033 (cache hit) (step S4013). If a cache hit occurs (step S4013; Yes), the write processing unit 401 updates the cache directory and calls the control information update process (step S4014). At this time, the write processing unit 401 sets the non-volatility requirement to "Required" when making the call. The write processing unit 401 calls the log creation process (step S4105). Subsequently, the write processing unit 401 allocates a cache segment (step S4016) and proceeds to step 4107, where it performs the same processing as in the case of a cache hit.
[0066] If a cache miss occurs on the cache data area 10331 of the second volatile memory device 1033 (step S4013; No), the write processing unit 401 executes step S4016 and then performs the same processing as in the case of a cache hit.
[0067] Figure 13 is a flowchart showing an example of the procedure for moving data from memory to the second volatile storage device 1033. First, the cache data movement processing unit 402 searches for a cache segment on the cache data area 10322 of memory 1032 (step S4021), and determines whether the cache segment has been stored on the cache data area 10322 of memory 1032 for a predetermined period of time (step S4022).
[0068] On the other hand, if the predetermined period has not elapsed (step S4022; No), the cache data transfer processing unit 402 terminates the data transfer process. If the predetermined period has elapsed (step S4022; Yes), the cache data transfer processing unit 402 stores the cache segment in the cache data area 10331 of the second volatile storage device 1033 (step S4023). Subsequently, the cache data transfer processing unit 402 updates the cache directory and calls the control information update process (step S4024). At this time, the non-volatility requirement is set to "Required" when calling the process. Next, the log creation process is called (step S4025).
[0069] Figure 14 is a flowchart showing an example of the asynchronous destaging procedure. First, the asynchronous destaging unit 403 searches for dirty cache segments on the cache data area 10331 of the second volatile memory device 1033 (step S4031). If no such cache segments are found (step S4032; No), the asynchronous destaging process is terminated.
[0070] On the other hand, if there is a dirty cache segment (step S4032; Yes), the asynchronous destaging processing unit 403 determines whether a predetermined time has elapsed since the cache segment was stored on the cache data area 10331 of the second volatile storage device 1033 (step S4033).
[0071] If the predetermined time has not elapsed (step S4033; No), the asynchronous destaging unit 403 terminates the asynchronous destaging process. On the other hand, if the predetermined time has elapsed (step S4033; Yes), the asynchronous destaging unit 403 retrieves the cache segment to the asynchronous destaging buffer 10325 on memory 1032 (step S4034) and executes the destaging process (step S4035). The destaging process is executed by the storage controllers 1052A, 1052B, 1052C and the data protection controllers 1053A, 1053B, 1053C. The asynchronous destaging unit 403 writes data corresponding to the logical volume number and logical volume address to the persistence area 10341 on the non-volatile storage device 1034. After that, it deletes the entry from the cache directory and calls the control information update process (step S4036). At this time, the asynchronous destaging unit 403 calls the process with the non-volatility requirement set to "Required". Finally, the log creation process is called (step S4037).
[0072] Figure 15 is a flowchart illustrating an example of the control information update procedure. The control information update procedure is called when updating the control information in memory 1032. When the control information update procedure is called, the memory address and size to identify the control information to be updated, the update value, and information indicating whether or not non-volatile is required are passed to the procedure.
[0073] First, the control information update processing unit 404 updates the control information in memory 1032 (step S4041). Next, the control information update processing unit 404 refers to the passed non-volatility requirement and determines whether non-volatility is required (step S4042). Only if it is required (step S4042; Yes), the log creation process is called.
[0074] Figure 16 is a flowchart illustrating an example of the cache data update procedure. The cache data update procedure is called when updating cache data in memory 1032. When the cache data update procedure is called, the cache data update processing unit 405 is passed information to identify the cache data to be updated, including its memory address, size, update value, and whether or not non-volatile status is required.
[0075] First, the cache data update processing unit 405 updates the cache data in memory 1032 (step S4051). Next, the cache data update processing unit 405 refers to the passed non-volatility requirement and determines whether it is necessary (step S4052). Only if non-volatility is required (step S4052; Yes), the log creation process is called (step S4053).
[0076] Figure 17 is a flowchart of the log creation process. First, the log creation processing unit 406 determines the log sequence number (step S4061). The log sequence number is assigned in the order in which the logs are created, and there is always one log corresponding to one log sequence number. Next, the log creation processing unit 406 reserves an area on the log buffer for writing the log (step S4062). Next, the log creation processing unit 406 creates the log header 103231 (step S4063).
[0077] The log creation processing unit 406 stores the above-mentioned log sequence number in the log header sequence number field, stores the memory address for identifying the control information to be updated or the cache data in the update address field, and stores the size of the data to be updated in the update size field.
[0078] The log type field stores a "control information log" when called from the control information update process, and a "cache data log" when called from the cache data update process. Additionally, the log type field stores a "cache data deletion log" when called in conjunction with volatile external storage device operations or from asynchronous destaging.
[0079] The log creation processing unit 406 stores the log in the log buffer (step S4064). Specifically, the log creation processing unit 406 stores the log header at the beginning of the area allocated in step S4042 on the log buffer, and the updated control information or cache data at a memory address obtained by adding the size of the log header to the allocated area.
[0080] Figure 18 is a flowchart of the control information confirmation process. In the control information confirmation process, the control information update processing unit 404 calls the log backup process (step S4071). The log backup process is executed by the log backup processing unit 408. The log backup process will be described later.
[0081] Figure 19 is a flowchart illustrating an example of the log backup process. First, the log backup processing unit 408 of the storage controllers 1052A, 1052B, and 1052C refers to the log buffer and reads the logs that have not been backed up (step S4081). Next, the log backup processing unit 408 stores the logs that have not been backed up in the log area on the non-volatile storage device 1034 (step S4082). The storage location is immediately after the last written log. The log backup processing unit 408 then deletes the logs stored in the log area from the log buffer (step S4083).
[0082] Figure 20 is a flowchart showing an example of the log recovery process procedure. The log recovery process is called before the storage controllers 1052A, 1052B, and 1052C start up when the system restarts after a power outage. First, the log recovery processing unit 409 of the storage controllers 1052A, 1052B, and 1052C sorts the control information log and cache data log according to their sequence numbers, arranging them from the oldest log (the log with the lowest sequence number) to the newest log (the log with the highest sequence number) (step S4091).
[0083] Subsequently, the log recovery processing unit 409 reflects the logs, from the oldest to the newest, in the storage control information 10321 on memory 1032, the cache data area 10322, and the cache data area 10331 on the second volatile storage device 1033, based on the log addresses (step S4092). In this way, the log recovery processing unit 409 completes the recovery of the control information and cache data after the power outage.
[0084] In this embodiment, in the read operation described above, even if a cache hit does not occur in the cache data area of memory 1032, a cache hit occurs in the cache data area on the second volatile storage device 1033, reducing the amount of input / output to the non-volatile storage device 1034. Dirty data in the cache data area of memory 1032 generated during the write operation is stored in the cache data area of memory and the cache data area on the second volatile storage device 1033 while the data remains in a dirty state for a predetermined period, thus reducing the amount of input / output to the non-volatile storage device 1034 due to asynchronous destaging.
[0085] This eliminates the performance bottleneck in the input / output volume for the non-volatile memory device 1034, resulting in improved performance. The second volatile memory device 1033 used in the cloud has better I / O performance than the non-volatile memory device 1034, and can access the cache area on the second volatile memory device 1033 at high speed, thus improving performance.
[0086] Logs may be created not only when data is updated during write operations, but also when metadata on the cache is updated due to storage functions such as compression or remote copying.
[0087] The storage node 103 of the storage system 100 according to this embodiment includes a memory 1032 as an example of a first volatile storage device that can temporarily store data and stores data to be sent and received to the requester of an I / O request, a second volatile storage device 1033 that can temporarily store data, a non-volatile storage device 1034 that can permanently store data, and a storage controller that controls data input / output processing for the memory 1032, the second volatile storage device 1033, and the non-volatile storage device 1034. The storage controller moves data between the memory 1032, the second volatile storage device 1033, and the non-volatile storage device 1034 based on the access status of the data stored in the memory 1032, the second volatile storage device 1033, and the non-volatile storage device 1034.
[0088] In this way, if a cache hit does not occur for data stored in memory 1032, instead of destaging the data stored in memory 1032 to the non-volatile storage device 1034, it is moved to the second volatile storage device 1033 and stored there, thereby reducing the amount of data input and output to the non-volatile storage device 1034.
[0089] In this embodiment, when the storage controller receives a data write request from a host device 101, which is an example of a request source, it stores the data corresponding to the write request in memory 1032 and stores a log corresponding to the data stored in memory 1032 in the non-volatile storage device 1034. After storing the log in the non-volatile storage device 1034, the storage controller sends a completion response to the host device 101, and if there are no cache hits for the data stored in memory 1032 during the first period from the first time the data was stored in memory 1032, it moves the data stored in memory 1032 to the second volatile storage device 1033 and stores it there. Furthermore, if there are no cache hits for the data stored in the second volatile storage device 1033 during the second period from the second time the data was stored in the second volatile storage device 1033, the storage controller destages the data stored in the second volatile storage device 1033 to the non-volatile storage device 1034.
[0090] In this way, if no cache hit occurs for the data stored in memory 1032 over the first period, instead of destaging the data stored in memory 1032 to the non-volatile storage device 1034, it is moved to the second volatile storage device 1033 and stored there, thereby reducing the amount of data input and output to the non-volatile storage device 1034.
[0091] In this embodiment, the memory 1032 can input and output data in units corresponding to the I / O request. The second volatile storage device 1033 and the non-volatile storage device 1034 input and output data in units larger than the data units corresponding to the I / O request.
[0092] In this embodiment, for example, memory 1032 is byte-accessible, while the second volatile storage device 103 and the non-volatile storage device 1034 are not byte-accessible.
[0093] In this embodiment, the storage controller manages clean data, which is the same data stored in memory 1032 as the data stored in the non-volatile storage device 1034, and dirty data, which is the data stored in memory 1032 that has not been destaged in the non-volatile storage device 1034. The storage controller moves the dirty data from the data stored in memory 1032 to the second volatile storage device 1033 and stores it there, but does not move the clean data to the second volatile storage device 1033 and store it there. In this way, if there are no cache hits for the data stored in memory 1032 over a first period, the data stored in memory 1032 is moved to the second volatile storage device 1033 and stored there instead of being destaged in the non-volatile storage device 1034. In particular, the amount of data input / output to the non-volatile storage device 1034 can be reduced by the amount of dirty data from the data stored in memory 1032.
[0094] In this embodiment, the storage system 100 has a plurality of storage nodes 103, each of which is equipped with a memory 1032 as an example of a first volatile storage device, a second volatile storage device 1033, a non-volatile storage device 1034, and a storage controller. The storage controller on a storage node 103 is configured redundantly with one or more storage controllers on other storage nodes 103. Of the storage controllers in the redundant configuration, one storage controller 1052A is set to an active state that can accept I / O requests from the host device 101 that is the requesting party, while the other storage controllers 1052B are set to a standby state that takes over the processing of the active controller 1052A. In this way, if the storage controller 1052B does not experience a cache hit for data stored in memory 1032 over a first period, instead of destaging the data stored in memory 1032 to the non-volatile storage device 1034, it moves the data stored in memory 1032 to the second volatile storage device 1033 and stores it there, thereby reducing the amount of data input and output to the non-volatile storage device 1034. On the other hand, the other storage controller 1052A can be set to a standby state that does not accept I / O requests from the host device 101, thereby reducing power consumption.
[0095] In this embodiment, if the data subject to a read request is not in memory 1032 but in the second volatile storage device 1033, the storage controllers 1052A, 1052B, and 1052C store the data from the second volatile storage device 1033 in memory 1032 and respond to the host device 101, which is the source of the read request, with the data stored in memory 1032.
[0096] It should be noted that the present invention is not limited to the embodiments described above, but includes various modifications and equivalent configurations within the spirit of the attached claims. For example, the embodiments described above are described in detail for the purpose of clearly illustrating the present invention, and the present invention is not necessarily limited to having all the configurations described. In this embodiment, each element described in parallel may be configured such that at least one of the elements is connected in series with respect to the other elements. [Industrial applicability]
[0097] The present invention can be applied, for example, to a storage system that uses a cache when reading and writing data between host devices. [Explanation of Symbols]
[0098] 100...Storage system, 101...Host device, 102...Network, 103...Storage node, 104...Management node, 1031...CPU, 1032...Memory, 1033...Second volatile storage device, 1034...Non-volatile storage device, 1053A, 1053B, 1053C...Storage controllers.
Claims
1. A first volatile memory device capable of temporarily storing data and storing data to be sent and received from the requester of an I / O request, A second volatile memory device capable of temporarily storing data, A non-volatile memory device capable of permanently storing data, The system comprises a first volatile storage device, a second volatile storage device, and a storage controller that controls data input / output processing for the non-volatile storage device, The aforementioned storage controller Based on the access status of the data stored in the first volatile storage device, the second volatile storage device, and the non-volatile storage device, the data is moved between the first volatile storage device, the second volatile storage device, and the non-volatile storage device. A storage system characterized by the following features.
2. The aforementioned storage controller When a data write request is received from the requesting party, the data corresponding to the write request is stored in the first volatile storage device. Logs corresponding to the data stored in the first volatile storage device are stored in the non-volatile storage device. After storing the log in the non-volatile storage device, a completion response is sent to the requester. The storage system according to feature 1.
3. The aforementioned storage controller If no cache hit occurs for the data stored in the first volatile storage device during the first period from the first time the data was stored in the first volatile storage device, the data stored in the first volatile storage device is moved to the second volatile storage device and stored there. The storage system according to feature 1.
4. The aforementioned storage controller If no cache hit occurs for the data stored in the second volatile storage device during the second period from the second time point in time when the data was stored in the second volatile storage device, the data stored in the second volatile storage device is destaged to the non-volatile storage device. The storage system according to claim 3.
5. The first volatile storage device is capable of inputting and outputting data in units corresponding to I / O requests, The second volatile storage device and the non-volatile storage device input and output data in units larger than the data unit related to the I / O request. The storage system according to feature 1.
6. The first volatile storage device is byte-accessible, The second volatile storage device and the non-volatile storage device are byte-inaccessible. The storage system according to feature 1.
7. The second volatile storage device described above is comprised of an instance store. The storage system according to feature 1.
8. The aforementioned storage controller The system manages clean data, which is the same as the data stored in the non-volatile storage device, and dirty data, which is the same as the data stored in the non-volatile storage device. Of the data stored in the first volatile storage device, the dirty data is moved to the second volatile storage device and stored there, while the clean data is not moved to the second volatile storage device and stored there. The storage system according to feature 1.
9. The system comprises a plurality of storage nodes, each comprising the first volatile storage device, the second volatile storage device, the non-volatile storage device, and the storage controller. The storage controller on the storage node is: A redundant configuration is configured with one or more storage controllers on other storage nodes, Of the storage controllers constituting the redundant configuration, one of the storage controllers is set to an active state that can accept I / O requests from the requester. Other storage controllers are set to a standby state, which takes over the processing of the active controller. The storage system according to feature 1.
10. The aforementioned storage controller If the data subject to the read request is not on the first volatile storage device but is on the second volatile storage device, the data from the second volatile storage device is stored in the first volatile storage device, and the data stored in the first volatile storage device is used to respond to the requester of the read request. The storage system according to feature 1.
11. A first volatile memory device capable of temporarily storing data and storing data to be sent and received from the requester of an I / O request, A second volatile memory device capable of temporarily storing data, A non-volatile memory device capable of permanently storing data, A storage control method for a storage system comprising a storage controller that controls data input / output processing for the first volatile storage device, the second volatile storage device, and the non-volatile storage device, The aforementioned storage controller Based on the access status of the data stored in the first volatile storage device, the second volatile storage device, and the non-volatile storage device, the data is moved between the first volatile storage device, the second volatile storage device, and the non-volatile storage device. A memory control method characterized by the following:
Citation Information
Patent Citations
Storage system and storage control method
JP2023152247A