WO2017134795A1 - ストレージシステム及びキャッシュ制御方法 - Google Patents
ストレージシステム及びキャッシュ制御方法 Download PDFInfo
- Publication number
- WO2017134795A1 WO2017134795A1 PCT/JP2016/053371 JP2016053371W WO2017134795A1 WO 2017134795 A1 WO2017134795 A1 WO 2017134795A1 JP 2016053371 W JP2016053371 W JP 2016053371W WO 2017134795 A1 WO2017134795 A1 WO 2017134795A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- cache
- area
- node
- data
- target data
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
Definitions
- the present invention generally relates to storage system cache control.
- a storage system in which multiple nodes are prepared for scale-out is known.
- the system includes a plurality of nodes and a fabric memory controller to which the plurality of nodes are connected.
- Each of the plurality of nodes has a plurality of memory areas, and the plurality of memory areas are mapped to the global memory by the fabric memory controller.
- the latency of read access to the memory area is small.
- a plurality of switches are prepared.
- a first cache unit is connected to each of the plurality of switches in addition to the plurality of storage nodes.
- Each of the plurality of storage nodes has a second cache unit.
- Each first cache unit and each second cache unit are mapped to a global cache recognized by a plurality of storage nodes.
- the own node (the storage node that has received the I / O request) writes the N-duplicated I / O target data (N is an integer of 2 or more) to each of N cache units.
- the N cache units are at least one second cache unit and at least one first cache unit. If the read target data does not exist in the second cache unit of the self node but exists in any of the first cache units, the self node reads the read target data from the first cache unit.
- FIG. 1 shows a configuration of a storage system according to a first embodiment.
- the configuration of the global cache is shown.
- the structure of a global cache management table is shown. Indicates the location where the global cache management table is stored.
- the flow of read processing is shown.
- the flow of a write process is shown.
- 5 shows a flow of area securing processing according to the first embodiment.
- a 1st modification is shown.
- a second modification will be described.
- 10 shows a flow of area securing processing according to a second embodiment.
- a comparative example is shown.
- the “interface part” includes one or more interfaces.
- the one or more interfaces may be one or more similar interface devices (for example, one or more NIC (Network Interface Card)) or two or more different interface devices (for example, NIC and HBA (Host Bus Adapter)). There may be.
- NIC Network Interface Card
- HBA Home Bus Adapter
- the “cache unit” includes one or more cache memory areas.
- the “cache memory area” may be the cache memory itself or an area as a cache memory provided in the memory.
- the “processor unit” includes one or more processors.
- the at least one processor is typically a CPU (Central Processing Unit).
- the processor may include a hardware circuit that performs part or all of the processing.
- the process may be described using “program” as the subject, but the program is executed by the processor unit, so that the determined process can be appropriately performed in the storage unit and the interface unit.
- the subject of processing may be a processor unit (or a computer or a computer system having a processor unit).
- the program may be installed in the computer from a program source.
- the program source may be, for example, a storage medium that can be read by a program distribution server or a computer.
- two or more programs may be realized as one program, or one program may be realized as two or more programs.
- information may be described using an expression such as “xxx table”, but the information may be expressed in any data structure. That is, in order to show that the information does not depend on the data structure, the “xxx table” can be referred to as “xxx information”.
- the configuration of each table is an example, and one table may be divided into two or more tables, or all or part of the two or more tables may be a single table. Good.
- the reference numerals of the elements are used (for example, the first cache unit 120A and the first cache unit 120B), and the same type of elements are not distinguished.
- only the common code among the reference codes of the element may be used (for example, the first cache unit 120).
- the “dirty area” is an area that stores at least dirty data.
- “Dirty data” is data that is not stored in any physical storage device.
- the “clean area” is an area that stores clean data and does not store dirty data.
- “Clean data” is data already stored in any physical storage device.
- the “free area” is an area that can be newly set as a data write destination, in other words, an area in which only data that does not exist or is invalid is stored.
- FIG. 1 shows a configuration of a storage system according to the first embodiment.
- the storage system 100 is connected to one or more hosts 101 that issue I / O requests.
- the storage system 100 includes P storage nodes 110 (P is an integer of 2 or more), and Q interconnect switches (Q is 2 or more) each connected to P storage nodes (hereinafter, nodes) 110. Integer) 130 and Q first cache units 120 respectively connected to Q interconnect switches 130.
- P nodes 110 can provide a logical volume to the host 101 and receive an I / O request specifying the logical address of the logical volume area from the host 101.
- Each of the P nodes 110 includes an interface unit that is one or more interfaces connected to at least one of the one or more hosts 101 and at least one of the plurality of drives 15, a second cache unit, And a processor unit including one or more processors connected to the interface unit and the second cache unit.
- Each of the Q first cache units 120 and the P second cache units included in each of the P nodes 110 is one or more cache memory areas.
- the storage system 100 employs a storage tightly coupled architecture. That is, each of the P nodes 110 recognizes the global cache.
- the global cache is a cache address space in which Q first cache units 120 and P second cache units are mapped, and is common to P nodes 110.
- each node 110 can access each first cache unit 120 and the second cache unit of another node 110 in the same manner as the access to the second cache unit of the node 110.
- P Q may be sufficient, P> Q may be sufficient, and P ⁇ Q may be sufficient.
- Home is an example of an external system and is one or more host computers.
- the external system may be another storage system (for example, a copy source or a copy destination).
- An example of the interface unit is a front-end interface unit for communication with the host 101 and a back-end interface for communication with one or more drives 15 (for example, a RAID (Redundant Array-of Independent- (or Inexpensive) -Disks group)).
- An example of the front-end interface unit is FC (Fibre Channel) -I / F 6 (“I / F” is an abbreviation of interface device).
- An example of the back-end interface unit is SAS (Serial Attached SCSI) -I / F5.
- An example of the second cache unit is one or more volatile memories.
- An example of one or more volatile memories is a DIMM (Dual Inline Memory Module) 7.
- the DIMM 7 is a cache memory area.
- the cache memory area is a memory area in which I / O target data (data according to an I / O request from the host 101) is temporarily stored.
- An example of the processor unit is the CPU 8.
- the drive 15 is an example of a physical storage device, and is, for example, an HDD (Hard Disk Drive) or an SSD (Solid State Drive).
- the interconnect switch 130 is an example of a switch between nodes, for example, an InfiniBand switch or a PCIe (PCI-Express) switch.
- the first cache unit 120A is connected to the interconnect switch 130A, and the first cache unit 120B is connected to the interconnect switch 130B.
- FC-I / F6X means at least one of FC-I / F6Xa and 6Xb.
- SAS-I / F5X means at least one of SAS-I / F5Xa and 5Xb.
- DIMM7X means at least one of DIMM7Xa and 7Xb.
- the CPU 8X means at least one of “CPUs 8Xa and 8Xa”.
- Any node 110 can receive an I / O request from the host 101.
- a node that has received an I / O request may be referred to as “own node” for convenience.
- the DIMM of the own node may be referred to as “own DIMM”.
- the node 110 receives a read request.
- the own node 110 performs (x1) to (x3) when the read target data according to the read request exists in the global cache.
- (X1) If the read target data exists in the own DIMM 7, the read target data is read from the own DIMM 7.
- (X2) If the read target data does not exist in its own DIMM 7 but exists in any of the first cache units 120, the read target data is read from the first cache unit 120.
- X3 If the read target data does not exist in any of the own DIMM 7 and the first cache units 120A and 120B but exists in any DIMM 7 other than the own DIMM 7, the read target data is read from the DIMM 7.
- the own node 110 performs N-duplexed I / O target data (read target data or write target data). (Data according to the write request)) is written in each of N cache units (N is an integer of 2 or more).
- the N cache units are at least one DIMM 7 and at least one first cache unit 120.
- N 4.
- the I / O target data 10 written to the DIMMs (7Ab and 7Bb) by the own node (for example, 110C) is duplicated (see the dashed arrows 150A and 150B), and the first cache is created by the own node 110C.
- the I / O target data 10 written to the sections 120A and 120B is also duplicated (see broken line arrows 140A and 140B).
- the own node 110 does not need to read access to the DIMM 7 of the other node 110.
- the duplicated I / O target data 80 is written to the two DIMMs 7Ab and 7Bb respectively included in the two nodes 1110A and 1110B.
- the own node 1110D receives the I / O target data from the DIMM 7 of the other node 1110 if there is no I / O target data in the own DIMM 7D. Must be read (see solid arrow 1180).
- different reference numerals are assigned to elements different from the present embodiment.
- a CPU 9X that does not perform cache control as in this embodiment a node 1110X having a CPU 9X, and a storage system 1100 having a node 1110X can be cited (X is A, as described above, A, B, C or D).
- At least one I / O target data is written to at least one first cache unit 120 (a cache unit directly connected to the interconnect switch 130).
- the node 110D is its own node, even if the read target data 10 does not exist in its own DIMM 7D, the own node 110D only needs to make a read access to the first cache unit 120B (see the solid line arrow 196). There is no need for read access to the DIMM 7Ab or 7Bb of the node 110A or 110B. For this reason, the performance of the storage system 100 is improved.
- the number of DIMMs 7 (nodes 110) as the write destination of the I / O target data may be one (see the modification shown in FIG.
- the nodes 110 all DIMM. If there are many DIMMs 7 (nodes 110) to which data is written, the probability that the read target data exists in the DIMM 7 of the node 110 that has received a read request for reading the data thereafter increases.
- the own DIMM 7 can be adopted, or the DIMM 7 of the node 110 connected to the data storage destination drive 15 can be adopted.
- each first cache unit 120 is a non-volatile cache unit.
- the first cache unit 120 is referred to as a “nonvolatile cache unit 120”.
- the nonvolatile cache unit 120 is one or more nonvolatile memory areas, and an example of the one or more nonvolatile memory areas is the two nonvolatile memories 13.
- the nonvolatile cache unit 120A includes nonvolatile memories 13Aa and 13Ab
- the nonvolatile cache unit 120B includes nonvolatile memories 13Ba and 13Bb.
- At least one I / O target data is written to at least one nonvolatile cache unit 120.
- cache backup resources can be reduced from each node 110.
- the “cache backup resource” is a resource for backing up data (particularly dirty data) in the DIMM 7, and is, for example, a battery 1 and an SSD (Solid State Drive) 2.
- the SSD is an example of a backup destination nonvolatile medium.
- the total capacity of the battery 1 (for example, the capacity according to at least one of the capacity of one battery 1 and the number of the batteries 1) is sufficient to save the data in the DIMM 7 to the SSD 2 even if a power interruption occurs. Capacity.
- both the batteries 1Xa and 1Xb and the SSD 2X are required as cache backup resources.
- the cache backup resource since the write destination of at least one I / O target data is at least one nonvolatile cache unit 120, the cache backup resource, according to the illustrated example, the node 110X At least one battery 1X can be reduced.
- duplicated I / O target data out of N duplicated I / O target data is written to two nonvolatile cache units 120A and 120B, respectively. That is, the I / O target data is also duplicated in the duplicated nonvolatile cache units 120A and 120B. Therefore, even if the power interruption occurs, it is not necessary to back up the I / O target data in the DIMM 7X or mount the SSD 2X as the backup destination in the node 110X.
- the number of non-volatile cache units 120 to which I / O target data is written may be one (see the modification shown in FIG. 8).
- the battery 1Xa and the SSD 2X are necessary as indicated by the solid line frame.
- the total capacity of the battery 1Xa and the storage capacity of the SSD 2X can be reduced as compared with the case where the nonvolatile cache unit 120 is not provided.
- the first node 110 In order for the first node 110 (own node 110) to access the DIMM 7 of the second node 110 (other node 110), it is necessary to go through the CPU 8 of the second node 110 (for example, the first node 110 is the first node 110). Although it is necessary to issue some instruction to the CPU 8 of the second node 110), the first node 110 does not need to go through the other CPU 8 in order to access the first cache unit 120. From this point of view, the nonvolatile cache unit 120 can be expressed as being directly connected to the interconnect switch 130.
- Fig. 2 shows the configuration of the global cache. Specifically, the left part 210 of FIG. 2 shows the configuration of the global cache. The central portion 220 of FIG. 2 shows an example of the use of the global cache of the node 110. The right part 230 of FIG. 2 shows an example of the use of the global cache of the node 110.
- the global cache 200 is an address space of global cache addresses (address space common to the nodes 110A to 110D).
- the address space includes the own node address range 201 and P addresses.
- DIMM address range 202 (four DIMM address ranges 202A to 202D in this embodiment) and Q nonvolatile address ranges 203 (two nonvolatile address ranges 203A and 203B in this embodiment).
- the own node address range 201 is an address range to which the DIMM 7 of the node 110 that recognizes the global cache 200 is allocated.
- the own node address range 201 may include other types of ranges (“Others” in the figure) (for example, an I / O range used for I / O) in addition to the address range of the DIMM 7.
- Each DIMM address range 202 is an address range to which DIMM 7 is assigned.
- One of the DIMM address ranges 202A to 202D corresponds to the DIMM 7 of the node 110 that recognizes the global cache 200. Therefore, one of the DIMM address ranges 202A to 202D corresponds to the own node address range 201. Data is mirrored between one of the DIMM address ranges 202A to 202D and the own node address range 201.
- Each non-volatile address range 203 is an address range to which the non-volatile cache unit 120 is assigned. Since the nonvolatile cache unit 120 is the two nonvolatile memories 13, each nonvolatile address range 203 is composed of two sub nonvolatile address ranges 24 corresponding to the two nonvolatile memories 13, respectively. Specifically, the nonvolatile address range 203A is composed of two sub nonvolatile address ranges 24Aa and 24Ab, and the nonvolatile address range 203B is composed of two sub nonvolatile address ranges 24Ba and 24Bb.
- the I / O target data is typically user data, but may be control data.
- User data is data used by the host 101 (for example, an application of the host 101).
- the control data includes at least configuration information representing the configuration of the storage system 100 (for example, the relationship between the logical volume and the drive 15, the configuration of a pair configured with a copy source logical volume and a copy destination logical volume, etc.). It is a part.
- Each of the own node address range 201, the DIMM address range 202, and the nonvolatile address range 203 may be divided into a range for user data and a range for control data.
- the I / O target data 280 is quadruplexed. Specifically, the duplexed I / O target data 280 is stored in the DIMMs 7A and 7B of the two nodes 110A and 110B of the four nodes 110A to 110D, respectively, and 2 Duplicate I / O target data 280 is stored in each of the non-volatile cache units 120A and 120B.
- the own node 110A since there is I / O target data in the own DIMM 7A (own node address range 201), the own node 110A, from the own DIMM 7A to the I / O target data 280, as indicated by a thick arrow. Is read.
- I / O target data is read from one of the non-volatile cache units 120B (non-volatile address range 203B).
- FIG. 3 shows the configuration of the global cache management table.
- the global cache management table (hereinafter, management table) 300 has an entry (record) for each data existing in the global cache 200. Each entry stores a start address 301, an area size 302, a data management number 303, a redundancy 304, a destage completion flag 305, a data valid flag 306, and a corresponding drive address 307.
- management table 300 has an entry (record) for each data existing in the global cache 200. Each entry stores a start address 301, an area size 302, a data management number 303, a redundancy 304, a destage completion flag 305, a data valid flag 306, and a corresponding drive address 307.
- one data is taken as an example.
- the start address 301 represents the head address of the area (address range) where data is stored.
- the address is a global cache address (a cache address common to the nodes 110). From a predetermined digit value (for example, a numerical value or a symbol) in the address, it can be understood in which DIMM 7 or in which nonvolatile memory 13 the area to which the address belongs is present. When the address corresponds to the DIMM 7, the predetermined digit of the address may be the number of the node 110 having the corresponding DIMM 7.
- the node 110 can know the number of the node 110 by, for example, mechanical setting (for example, setting of a button provided in the node 110) or setting from a management terminal (not shown).
- the area size 302 represents the size of the area where data is stored.
- the data management number 303 is a number assigned to data.
- the global cache 200 has a maximum of four identical data, but the same data management number 303 is assigned to the same data.
- Corresponding drive addresses 307 corresponding to data having the same data management number 303 are also the same. Therefore, the column of the data management number 303 may be omitted.
- the same data in the global cache 200 can be specified from the column of the corresponding drive address 307.
- Redundancy 304 represents data redundancy, that is, the number of identical data (the number of redundant data). Therefore, in the present embodiment, the maximum value of the redundancy 304 is “4”.
- the destage completion flag 305 indicates whether the data has been destaged (whether the data has been stored in the drive 15). Regarding the destage completion flag 305, “1” means that the destage has been completed, and “0” means that the destage has not been completed.
- the data valid flag 306 indicates whether the data is valid. Regarding the data valid flag 306, “1” means valid, and “0” means invalid. From the combination of the value of the destage completion flag 305 and the value of the data valid flag 306, the type of the area where the data is stored (whether it is free, dirty, or clean) can be specified. Specifically, if the data valid flag 306 is “0”, the area is an empty area. If the data valid flag 306 is “1” and the destage completion flag 305 is “0”, the area is a dirty area. If the data valid flag 306 is “1” and the destage completion flag 305 is “1”, the area is a clean area.
- Corresponding drive address 307 represents the drive address of the data storage destination.
- the drive address is the address of the drive 15, but may instead be the address of a logical space (for example, a logical volume) on which the drive 15 is based. It is not always necessary to store all the data in the drive 15. For data that is not stored in the drive 15, the corresponding drive address may be a predetermined value (for example, “ ⁇ ”).
- a valid value (“1” or “0”) may be set for each of the destage completion flag 305 and the data valid flag 306.
- An invalid value (for example, “-”) may be set for each of the destage completion flag 305 and the data valid flag 306.
- the management table 300 is stored in each of the non-volatile cache units 120A and 120B (the management table 300 is duplicated). All the nodes 110 refer to or update the same area (an area in the nonvolatile cache unit 120 in which the management table 300 is stored). According to FIG. 4, the synchronization between the nodes 110 is not necessary.
- the master management table 300M (master of the management table 300) is arranged in the nonvolatile cache units 120A and 120B, and the copy management table 300C (master copy) is stored in the DIMM 7 of each node 110. May be arranged.
- the updated management table 300C may be reflected in the management table 300M.
- the management table 300 ⁇ / b> C serving as a reference destination of each node 110 is in the DIMM 7 of the node 110, so that the reference processing time of the management table 300 can be shortened.
- FIG. 5 shows the flow of read processing.
- the read process is started when any node 110 receives a read request from the host 101.
- the node 110 that has received the read request is referred to as “own node 110”.
- Read processing is performed by the own node 110 (the CPU 8 of the own node 110).
- a logical address typically, a logical address of a logical area in the read source logical volume
- the own node 110 refers to the management table 300 and determines whether or not the read target data according to the read request exists in the global cache 200 (S501). If the global cache address associated with the logical address specified in the read request (or the drive address specified based on the logical address) is specified, the read target data exists in the global cache 200. is there.
- the own node 110 determines whether the read target data exists in the own DIMM 7 (S502). If the global cache address specified in S501 belongs to the own node address range 201 or the DIMM address range 202 of the own node 110, the read target data exists in the own DIMM 7.
- the own node 110 reads the read target data from the own DIMM 7, and returns the read read target data to the host 101 (S503).
- the node 110 determines whether the read target data exists in any of the nonvolatile cache units 120 (S504). If the global cache address identified in S501 belongs to any nonvolatile address range 203, it means that the read target data exists in any nonvolatile cache unit 120.
- the node 110 reads the read target data from any of the non-volatile cache units 120 (nonvolatile memory 13), and returns the read read target data to the host 101 (S505). ).
- the own node 110 reads the read target data from the address range to which the global cache address specified in S501 belongs, that is, the DIMM 7 of the other node 110, and reads the read target. Data is returned to the host 101 (S506).
- the own node 110 refers to the management table 300, and whether the global cache 200 has a free area necessary for staging (reading of read target data from the drive 15). It is determined whether or not (S507). If any two of the DIMMs 7 (for example, including at least the DIMM 7 of the own node 110) and the two nonvolatile cache units 120 have the necessary free areas, the necessary free areas are in the global cache 200. is there. On the other hand, if at least one of the two DIMMs 7 and the two non-volatile cache units 120 does not have a required free area, the required free area does not exist in the global cache 200.
- the “necessary free area” is a free area having a size equal to or larger than the size of the I / O target data (the size of the read target data in the read process and the write target data in the write process described later).
- the total size of free areas (specifically, the total of area sizes 302 of areas corresponding to data valid flags 306 of “0”) ) Is greater than or equal to the size of the I / O target data.
- the “area securing process” is a process for securing a necessary free area from each of the one or more free and insufficient cache units (at least one of the DIMM 7 and the non-volatile cache unit 120). Specifically, in the area securing process, one or more of one or more clean areas and one or more dirty areas is set as a free area for each of one or more empty shortage cache units. This is a process of securing a necessary free space (a free space larger than the size of the I / O target data).
- the “empty insufficient cache part” is a cache part without a necessary free area.
- the node 110 reads the read target data from the drive 15, and reads the read target data with two DIMMs 7 and two nonvolatiles. Write to the necessary free space in each of the cache units 120, and return the read target data to the host 101 (S509). That is, in S509, the quadruple read target data is written in the two DIMMs 7 and the two nonvolatile cache units 120, respectively. Further, the read target data returned to the host 101 in S509 may be read target data written (cached) in the DIMM 7 of the local node 110.
- FIG. 6 shows the flow of write processing.
- the write process is started when any node 110 receives a write request from the host 101.
- the node 110 that has received the write request is referred to as “own node 110”.
- the write processing is performed by the own node 110 (the CPU 8 of the own node 110).
- a logical address (typically, a logical address of a logical area in the write destination logical volume) is specified in the write request.
- the own node 110 refers to the management table 300 and determines whether or not a necessary free area exists in the global cache 200 (S601). If any two of the DIMMs 7 (for example, including at least the DIMM 7 of the own node 110) and the two nonvolatile cache units 120 have the necessary free areas, the necessary free areas are in the global cache 200. is there. On the other hand, if at least one of the two DIMMs 7 and the two non-volatile cache units 120 does not have a required free area, the required free area does not exist in the global cache 200.
- the total size of free areas (specifically, the total size of area sizes 302 corresponding to the data valid flag 306 corresponding to “0”) ) Is greater than or equal to the size of the I / O target data.
- S601 determines whether the determination result in S601 is false (S601: No)
- the own node 110 executes the area allocation process (S602), so that it is necessary from the cache unit (DIMM7 or the non-volatile cache unit 120) having no necessary free area. Secure free space.
- the own node 110 transmits the write target data (data according to the write request) to each of the two DIMMs 7 and the two nonvolatile cache units 120. Is written in the necessary free space (S603). That is, the quadruple write target data is written to two DIMMs 7 and two nonvolatile cache units 120, respectively.
- the own node 110 updates the management table 300 (S604). Specifically, for example, for each of the quadruple write target data, the entry corresponding to the write target data includes the write destination global cache address (start address 301) and the write destination area size 302. And the same data management number 303 allocated to the quadruple write target data by the own node 110, the redundancy 304 ("4" in this case), the destage completion flag 305 "0", and the data valid A flag 306 “1” is written.
- the own node 110 returns a write completion response to the host 101 (S605).
- FIG. 7 shows a flow of area securing processing according to the first embodiment.
- the own node 110 sets each of one or more areas (at least one of a clean area and a dirty area) as a free area for each of the one or more free and insufficient cache units.
- the same data (redundant data) as the data in the area is stored, and an area in a cache part different from the cache part including the area is not set as an empty area. That is, in the area securing process according to the first embodiment, the area is set as an empty area only for each of the one or more empty deficient cache units.
- S701 to S706 are performed for each of the one or more deficient cache units. In the following, one free and insufficient cache unit is taken as an example.
- the own node 110 refers to the management table 300 and determines whether or not there is a clean area having a total size equal to or larger than ⁇ (size of I / O target data) ⁇ (total size of free area) ⁇ for each of the insufficient and insufficient cache units. Is determined (S701). Each of the clean areas of the total size is referred to as “target clean area” in the description of FIG.
- the node 110 sets each target clean area as a free area, and subtracts 1 from the value of the redundancy 304 related to each target clean area (S702). Specifically, the node 110 changes the data valid flag 306 corresponding to the target clean area to “0” for each target clean area. As a result, each target clean area becomes a free area. Further, the own node 110 subtracts 1 from the value of the redundancy 304 in the entry corresponding to the target clean area for each target clean area, and the same data as the data management number 303 in the entry corresponding to the target clean area Also, 1 is subtracted from the value of the redundancy 304 in the entry holding the management number 303. That is, the value of the redundancy 304 is decremented by 1 for each of the data in the target clean area and its redundant data.
- the own node 110 sets all the clean areas as vacant areas, and subtracts 1 from the value of the redundancy 304 related to each clean area (S703). . Specifically, for each clean area, the node 110 changes the data valid flag 306 corresponding to the clean area to “0”. As a result, each clean area becomes an empty area. In addition, for each clean area, the node 110 subtracts 1 from the value of the redundancy 304 in the entry corresponding to the clean area, and the same data management number 303 as the data management number 303 in the entry corresponding to the clean area. 1 is also subtracted from the value of the redundancy 304 in the entry holding.
- the own node 110 refers to the management table 300 and identifies a dirty area having a total size equal to or larger than ⁇ (size of I / O target data) ⁇ (total size of free area) ⁇ (S704). Note that the “total size of free areas” in S704 is the sum of the “total size of free areas” in S701 and the total size of clean areas determined as free areas in S703.
- the own node 110 destages the dirty data in each dirty area specified in S704 to the drive 15 according to the corresponding drive address 307 of the dirty data (S705).
- the own node 110 sets each of all the dirty areas specified in S704 as a free area, and subtracts 1 from the value of the redundancy 304 related to each of all the dirty areas (S706). Specifically, the node 110 changes the data validity flag 306 corresponding to the dirty area to “0” for each dirty area. As a result, each dirty area becomes a free area. In addition, for each dirty area, the node 110 subtracts 1 from the value of the redundancy 304 in the entry corresponding to the dirty area, and the same data management number 303 as the data management number 303 in the entry corresponding to the dirty area. 1 is also subtracted from the value of the redundancy 304 in the entry holding. Further, the own node 110 changes the destage completion flag 305 corresponding to the dirty area to “0” for each dirty area.
- Example 2 will be described. At that time, differences from the first embodiment will be mainly described, and description of common points with the first embodiment will be omitted or simplified.
- FIG. 10 shows a flow of area securing processing according to the second embodiment.
- the own node 110 sets each of one or more areas (at least one of a clean area and a dirty area) as a free area for each of the one or more free and insufficient cache units.
- the same data (redundant data) as the data in the area that is set as an empty area is stored, and an area in a cache part different from the cache part including the area is also set as an empty area. That is, in the area securing process according to the first embodiment, the area is set as an empty area only for each of the one or more empty deficient cache units. As a result, all the redundant data associated with the data is treated as having been erased from the global cache 200.
- an area securing process is performed for at least one cache unit.
- the frequency can be reduced.
- S1001 to S1006 are performed for each of the one or more deficient cache units.
- one free and insufficient cache unit is taken as an example.
- the own node 110 refers to the management table 300 and determines whether or not there is a clean area having a total size equal to or larger than ⁇ (size of I / O target data) ⁇ (total size of free area) ⁇ for each of the insufficient and insufficient cache units. Is determined (S1001). Each of the clean areas of the total size is referred to as “target clean area” in the description of FIG.
- the node 110 sets, for each target clean area, each of the target clean area and all the redundant areas of the target clean area as free areas (S1002). ). Specifically, for each target clean area, the own node 110 changes the data valid flag 306 to “0” for each of the target clean area and all the redundant areas of the target clean area.
- the “redundant area” of the target clean area is an area (an area in a different cache unit) corresponding to an entry holding the same data management number 303 as the data management number 303 in the entry corresponding to the target clean area. In other words, this is an area in which redundant data of data in the target clean area is stored.
- the node 110 sets each clean area as an empty area (S1003). Specifically, for each clean area, the node 110 changes the data valid flag 306 corresponding to the clean area to “0”.
- the own node 110 refers to the management table 300 and specifies a dirty area having a total size equal to or larger than ⁇ (size of I / O target data) ⁇ (total size of free area) ⁇ (S1004).
- the “total size of free areas” in S1004 is the sum of the “total size of free areas” in S1001 and the total size of clean areas determined as free areas in S1003.
- the own node 110 destages the dirty data for each dirty area identified in S1004 to the drive 15 according to the drive address 307 corresponding to the dirty data, and sets the destage completion flag 305 corresponding to the dirty area to “0”. (S1005).
- the own node 110 sets each of the dirty area and all redundant areas of the dirty area as free areas for each of the dirty areas specified in S1004 (S1006). Specifically, for each dirty area, the own node 110 changes the data valid flag 306 to “0” for each of the dirty area and all the redundant areas of the dirty area.
- the “redundant area” of the dirty area is an area (an area in a different cache unit) corresponding to an entry that holds the same data management number 303 as the data management number 303 in the entry corresponding to the dirty area. In other words, it is an area that stores redundant data of data in the dirty area.
- the redundant area is a dirty area
- the node 110 destages the dirty data in the dirty area to the drive 15 and changes the destage completion flag 305 corresponding to the dirty area to “0”.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
複数のスイッチが用意される。複数のスイッチの各々に、複数のストレージノードに加えて、第1キャッシュ部が接続される。複数のストレージノードの各々は、第2キャッシュ部を有する。複数のストレージノードが認識するグローバルキャッシュに、各第1キャッシュ部及び各第2キャッシュ部がマッピングされる。自ノード(I/O要求を受信したストレージノード)は、N重化されたI/O対象データを(Nは2以上の整数)、それぞれN個のキャッシュ部に書き込む。N個のキャッシュ部は、少なくとも1つの第2キャッシュ部と少なくとも1つの第1キャッシュ部である。自ノードは、リード対象データが、自ノードの第2キャッシュ部に存在していないがいずれかの第1キャッシュ部に存在していれば、その第1キャッシュ部からリード対象データを読み出す。
Description
本発明は、概して、ストレージシステムのキャッシュ制御に関する。
スケールアウトのために複数のノードが用意されたストレージシステムが知られている。例えば、特許文献1では、システムが、複数のノードと、複数のノードが接続されたファブリックメモリコントローラとを有する。複数のノードが、それぞれ、複数のメモリ領域を有し、複数のメモリ領域がファブリックメモリコントローラによってグローバルメモリにマッピングされる。
自ノード(I/O(Input/Output)を行うノード)のメモリ領域に、I/O対象データが存在していれば、メモリ領域に対するリードアクセスのレイテンシは小さい。
しかし、自ノードのメモリ領域にI/O対象データが無く、他ノードのメモリ領域にI/O対象データが存在していれば、メモリ領域に対するリードアクセスのレイテンシが大きくなってしまう。このため、システム全体の性能(例えば、I/O要求を受けてから応答するまでのレスポンス性能)が低下してしまうおそれがある。
複数のスイッチ(例えばインターコネクトスイッチ)が用意される。複数のスイッチの各々に、複数のストレージノードに加えて、第1キャッシュ部が接続される。複数のストレージノードの各々は、第2キャッシュ部を有する。複数のストレージノードが認識するグローバルキャッシュに、各第1キャッシュ部及び各第2キャッシュ部がマッピングされる。自ノード(I/O要求を受信したストレージノード)は、N重化されたI/O対象データを(Nは2以上の整数)、それぞれN個のキャッシュ部に書き込む。N個のキャッシュ部は、少なくとも1つの第2キャッシュ部と少なくとも1つの第1キャッシュ部である。自ノードは、リード対象データが、自ノードの第2キャッシュ部に存在していないがいずれかの第1キャッシュ部に存在していれば、その第1キャッシュ部からリード対象データを読み出す。
リード対象データが自ノードの第2キャッシュ部に存在していなくても、他のストレージノードの第2キャッシュ部にリードアクセスする必要が無い。このため、ストレージシステムの性能が向上する。
以下の説明では、「インターフェース部」は、1以上のインターフェースを含む。1以上のインターフェースは、1以上の同種のインターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし2以上の異種のインターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明では、「キャッシュ部」は、1以上のキャッシュメモリ領域を含む。「キャッシュメモリ領域」は、キャッシュメモリそれ自体であってもよいし、メモリに設けられたキャッシュメモリとしての領域であってもよい。
また、以下の説明では、「プロセッサ部」は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)である。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜に記憶部及びインターフェース部のうちの少なくとも1つを用いながら行うため、処理の主語が、プロセッサ部(或いは、プロセッサ部を有する計算機又は計算機システム)とされてもよい。プログラムは、プログラムソースから計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な記憶メディアであってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
また、以下の説明では、「xxxテーブル」といった表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
また、以下の説明では、同種の要素を区別して説明する場合は、その要素の参照符号を使用し(例えば、第1キャッシュ部120A、第1キャッシュ部120B)、同種の要素を区別しないで説明する場合は、その要素の参照符号のうちの共通符号のみ使用する(例えば、第1キャッシュ部120)ことがある。
また、以下の説明では、キャッシュ部における領域として、ダーティ領域、クリーン領域及び空き領域がある。「ダーティ領域」とは、少なくともダーティデータを格納している領域である。「ダーティデータ」とは、いずれの物理記憶デバイスにも格納されていないデータである。「クリーン領域」とは、クリーンデータを格納しておりダーティデータを格納していない領域である。「クリーンデータ」とは、いずれかの物理記憶デバイスに格納済のデータである。「空き領域」は、新たにデータの書込み先とすることができる領域、言い換えれば、データが存在しない又は無効なデータのみが格納されている領域である。
図1は、実施例1に係るストレージシステムの構成を示す。
ストレージシステム100に、それぞれI/O要求を発行する1以上のホスト101に接続される。ストレージシステム100は、P個のストレージノード110と(Pは2以上の整数)と、それぞれがP個のストレージノード(以下、ノード)110に接続されたQ個のインターコネクトスイッチ(Qは2以上の整数)130と、Q個のインターコネクトスイッチ130にそれぞれ接続されたQ個の第1キャッシュ部120とを有する。P個のノード110の各々は、ホスト101に論理ボリュームを提供し、論理ボリュームの領域の論理アドレスを指定したI/O要求をホスト101から受信することができる。P個のノード110の各々は、1以上のホスト101のうちの少なくとも1つと複数のドライブ15のうちの少なくとも1つとに接続される1以上のインターフェースであるインターフェース部と、第2キャッシュ部と、インターフェース部及び第2キャッシュ部に接続された1以上のプロセッサを含んだプロセッサ部とを有する。Q個の第1キャッシュ部120と、P個のノード110がそれぞれ有するP個の第2キャッシュ部との各々は、1以上のキャッシュメモリ領域である。ストレージシステム100には、ストレージ密結合アーキテクチャが採用されている。すなわち、P個のノード110の各々は、グローバルキャッシュを認識する。グローバルキャッシュは、Q個の第1キャッシュ部120とP個の第2キャッシュ部とがマッピングされておりP個のノード110に共通のキャッシュアドレス空間である。このアーキテクチャによれば、各ノード110は、そのノード110の第2キャッシュ部へのアクセスと同様に、各第1キャッシュ部120や、他のノード110の第2キャッシュ部に、アクセスできる。P=Qであってもよいし、P>Qであってもよいし、P<Qであってもよい。「ホスト」は、外部システムの一例であり、1以上のホスト計算機である。外部システムは、別のストレージシステム(例えば、コピー元又はコピー先)であってもよい。
本実施例では、P=4であり、Q=2である。インターフェース部の一例が、ホスト101との通信のためのフロントエンドインターフェース部と、1以上のドライブ15(例えばRAID(Redundant Array of Independent (or Inexpensive) Disks)グループ)との通信のためのバックエンドインターフェース部とを含んでいる。フロントエンドインターフェース部の一例が、FC(Fibre Channel)-I/F6である(「I/F」はインターフェースデバイスの略)。バックエンドインターフェース部の一例が、SAS(Serial Attached SCSI)-I/F5である。第2キャッシュ部の一例が、1以上の揮発メモリである。1以上の揮発メモリの一例が、DIMM(Dual Inline Memory Module)7である。DIMM7の全部又は一部が、キャッシュメモリ領域である。キャッシュメモリ領域とは、I/O対象データ(ホスト101からのI/O要求に従うデータ)が一時的に格納されるメモリ領域である。プロセッサ部の一例が、CPU8である。ドライブ15は、物理記憶デバイスの一例であり、例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive)である。インターコネクトスイッチ130は、ノード間のスイッチの一例であり、例えば、インフィニバンドスイッチ又はPCIe(PCI-Express)スイッチである。インターコネクトスイッチ130Aに第1キャッシュ部120Aが接続されており、インターコネクトスイッチ130Bに第1キャッシュ部120Bが接続されている。
図1によれば、4個のノード110A~110Dを有する。4個のノード110A~110Dの各々が、2個のインターコネクトスイッチ(2重化されたインターコネクトスイッチ)130A及び130Bの各々に接続されている。ノード110X(X=A、B、C又はD)は、FC-I/F6Xa及び6Xb、SAS-I/F5Xa及び5Xb、DIMM7Xa及び7Xb、及び、CPU8Xa及び8Xaを有する。「FC-I/F6X」は、FC-I/F6Xa及び6Xbのうちの少なくとも1つを意味する。「SAS-I/F5X」は、SAS-I/F5Xa及び5Xbのうちの少なくとも1つを意味する。「DIMM7X」は、DIMM7Xa及び7Xbのうちの少なくとも1つを意味する。CPU8Xは、「CPU8Xa及び8Xa」のうちの少なくとも1つを意味する。
いずれのノード110も、ホスト101からI/O要求を受信し得る。以下の説明では、I/O要求を受信したノードを、便宜上、「自ノード」と言うことがある。また、自ノードが有するDIMMを、「自DIMM」と言うことがある。
例えば、ノード110が、リード要求を受信したとする。自ノード110は、そのリード要求に従うリード対象データがグローバルキャッシュに存在する場合、(x1)~(x3)を行うようになっている。
(x1)リード対象データが、自DIMM7に存在していれば、自DIMM7からリード対象データを読み出す。
(x2)リード対象データが、自DIMM7に存在していないがいずれかの第1キャッシュ部120に存在していれば、その第1キャッシュ部120からリード対象データを読み出す。
(x3)リード対象データが、自DIMM7と第1キャッシュ部120A及び120Bとのいずれにも存在しないが自DIMM7以外のいずれかのDIMM7に存在していれば、そのDIMM7からリード対象データを読み出す。
(x1)リード対象データが、自DIMM7に存在していれば、自DIMM7からリード対象データを読み出す。
(x2)リード対象データが、自DIMM7に存在していないがいずれかの第1キャッシュ部120に存在していれば、その第1キャッシュ部120からリード対象データを読み出す。
(x3)リード対象データが、自DIMM7と第1キャッシュ部120A及び120Bとのいずれにも存在しないが自DIMM7以外のいずれかのDIMM7に存在していれば、そのDIMM7からリード対象データを読み出す。
そこで、自ノード110は、リード対象データがグローバルキャッシュに存在しない場合、又は、受信したI/O要求がライト要求の場合、N重化されたI/O対象データ(リード対象データ又はライト対象データ(ライト要求に従うデータ))を、それぞれN個のキャッシュ部に書き込む(Nは2以上の整数)。N個のキャッシュ部は、少なくとも1個のDIMM7と、少なくとも1個の第1キャッシュ部120である。本実施例では、N=4である。具体的には、自ノード(例えば110C)によりDIMM(7Ab及び7Bb)に書き込まれるI/O対象データ10が2重化されており(破線矢印150A及び150B参照)、自ノード110Cにより第1キャッシュ部120A及び120Bに書き込まれるI/O対象データ10も2重化されている(破線矢印140A及び140B参照)。
これにより、リード対象データが自DIMM7に存在していなくても、自ノード110は、他ノード110のDIMM7にリードアクセスする必要が無い。
すなわち、図11の比較例によれば、2重化されたI/O対象データ80が、2個のノード1110A及び1110Bがそれぞれ有する2個のDIMM7Ab及び7Bbに書き込まれるが、その後に、そのI/O対象データ80のリード要求をいずれかのノード(例えば1110D)が受けた場合、自ノード1110Dは、自DIMM7DにI/O対象データが無ければ、他ノード1110のDIMM7からI/O対象データを読み出さなければならない(実線矢印1180参照)。なお、図11では、本実施例と異なるエレメントには異なる参照符号が振られている。例えば、そのようなエレメントとして、本実施例のようなキャッシュ制御を行わないCPU9X、CPU9Xを有するノード1110X、ノード1110Xを有するストレージシステム1100を挙げることができる(Xは、上述したように、A、B、C又はDである)。
本実施例によれば、図1に示したように、少なくとも1つのI/O対象データが、少なくとも1個の第1キャッシュ部120(インターコネクトスイッチ130に直結のキャッシュ部)に書き込まれる。このため、例えばノード110Dが自ノードの場合、リード対象データ10が自DIMM7Dに存在していなくても、自ノード110Dは第1キャッシュ部120Bにリードアクセスすればよく(実線矢印196参照)、他ノード110A又は110BのDIMM7Ab又は7Bbにリードアクセスする必要が無い。このため、ストレージシステム100の性能が向上する。なお、I/O対象データの書込み先としてのDIMM7(ノード110)は、1個であってもよいし(図8に示す変形例を参照)、3個以上(例えば全てのノード110の全てのDIMM)であってもよい。データの書込み先のDIMM7(ノード110)が多ければ、その後にそのデータをリード対象とするリード要求を受けたノード110のDIMM7にリード対象データが存在する確率が高まる。データの書き込み先のDIMM7の一例として、自DIMM7を採用することもできるし、そのデータの格納先ドライブ15に接続されているノード110のDIMM7を採用することもできる。
さらに、本実施例では、各第1キャッシュ部120は、不揮発キャッシュ部である。以下、第1キャッシュ部120を「不揮発キャッシュ部120」と言う。不揮発キャッシュ部120は、1以上の不揮発メモリ領域であり、1以上の不揮発メモリ領域の一例が、2つの不揮発メモリ13である。具体的には、不揮発キャッシュ部120Aが、不揮発メモリ13Aa及び13Abを有し、不揮発キャッシュ部120Bが、不揮発メモリ13Ba及び13Bbを有する。
少なくとも1つのI/O対象データが少なくとも1個の不揮発キャッシュ部120に書き込まれる。これにより、各ノード110からキャッシュバックアップ資源を削減できる。「キャッシュバックアップ資源」とは、DIMM7におけるデータ(特に、ダーティデータ)のバックアップのための資源であり、例えば、バッテリ1と、SSD(Solid State Drive)2である。SSDは、バックアップ先の不揮発メディアの一例である。バッテリ1の全体容量(例えば、1個のバッテリ1の容量とバッテリ1の数とのうちの少なくとも1つに従う容量)は、電断が生じてもDIMM7内のデータをSSD2に退避するのに十分な容量である。
図11の比較例によれば、ノード1110X(X=A、B、C又はD)の各々において、キャッシュバックアップ資源として、バッテリ1Xa及び1Xbと、SSD2Xとのいずれも必要とされる。
しかし、本実施例では、少なくとも1つのI/O対象データの書込み先が少なくとも1個の不揮発キャッシュ部120のため、キャッシュバックアップ資源、図示の例によれば、破線枠で示すように、ノード110Xにおいて少なくとも1個のバッテリ1Xを削減できる。特に、本実施例では、N重化されたI/O対象データのうちの2重化されたI/O対象データが2個の不揮発キャッシュ部120A及び120Bにそれぞれ書き込まれる。つまり、2重化された不揮発キャッシュ部120A及び120BにおいてI/O対象データも2重化されている。故に、電断が生じてもDIMM7X内のI/O対象データをバックアップしたりそのバックアップ先となるSSD2Xをノード110Xに搭載したりしておく必要が無い。なお、I/O対象データの書込み先としての不揮発キャッシュ部120は、1個であってもよい(図8に示す変形例を参照)。そのケースでは、I/O対象データを少なくとも2重化して保持するために、電断が生じたときには少なくとも1つのI/O対象データをバックアップする必要がある。故に、ノード110Xの各々において、実線枠で示すように、バッテリ1Xa及びSSD2Xは必要である。しかし、バッテリ1Xaの全体容量とSSD2Xの記憶容量は、不揮発キャッシュ部120が無いケースに比べて削減することができる。
第1ノード110(自ノード110)が第2ノード110(他ノード110)のDIMM7にアクセスするためには、第2ノード110のCPU8を経由する必要があるが(例えば、第1ノード110が第2ノード110のCPU8に何らかの命令を出す必要があるが)、第1キャッシュ部120へのアクセスのためには、第1ノード110が他のCPU8を経由する必要が無い。この観点から、不揮発キャッシュ部120はインターコネクトスイッチ130に直結されていると表現することができる。
図2は、グローバルキャッシュの構成を示す。具体的には、図2の左部分210が、グローバルキャッシュの構成を示す。図2の中央部分220が、ノード110のグローバルキャッシュの使用の一例を示す。図2の右部分230が、ノード110のグローバルキャッシュの使用の一例を示す。
図2の左部分210に示すように、グローバルキャッシュ200は、グローバルキャッシュアドレスのアドレス空間(ノード110A~110Dに共通のアドレス空間)であり、そのアドレス空間は、自ノードアドレス範囲201と、P個のDIMMアドレス範囲202(本実施例では4個のDIMMアドレス範囲202A~202D)と、Q個の不揮発アドレス範囲203(本実施例では2個の不揮発アドレス範囲203A及び203B)とで構成される。
自ノードアドレス範囲201は、このグローバルキャッシュ200を認識するノード110のDIMM7が割り当てられたアドレス範囲である。自ノードアドレス範囲201は、DIMM7のアドレス範囲以外に、他種の範囲(図では“Others”)(例えば、I/Oの際に使用されるI/O範囲)を含んでもよい。
各DIMMアドレス範囲202は、DIMM7が割り当てられたアドレス範囲である。DIMMアドレス範囲202A~202Dのうちの1つは、このグローバルキャッシュ200を認識するノード110のDIMM7に対応している。このため、DIMMアドレス範囲202A~202Dのうちの1つは、自ノードアドレス範囲201に対応している。DIMMアドレス範囲202A~202Dのうちの1つと自ノードアドレス範囲201間ではデータがミラーリングされる。
各不揮発アドレス範囲203は、不揮発キャッシュ部120が割り当てられたアドレス範囲である。不揮発キャッシュ部120は2つの不揮発メモリ13であるため、各不揮発アドレス範囲203は、2つの不揮発メモリ13にそれぞれ対応した2つのサブ不揮発アドレス範囲24で構成される。具体的には、不揮発アドレス範囲203Aは、2つのサブ不揮発アドレス範囲24Aa及び24Abで構成され、不揮発アドレス範囲203Bは、2つのサブ不揮発アドレス範囲24Ba及び24Bbで構成される。
本実施例において、I/O対象データは、典型的にはユーザデータであるが、制御データであってもよい。ユーザデータは、ホスト101(例えばホスト101のアプリケーション)が使用するデータである。制御データは、ストレージシステム100の構成を表す構成情報(例えば、論理ボリュームとドライブ15との関係、コピー元の論理ボリュームとコピー先の論理ボリュームとで構成されたペアの構成等)のうちの少なくとも一部である。自ノードアドレス範囲201、DIMMアドレス範囲202及び不揮発アドレス範囲203の各々は、ユーザデータ用の範囲と制御データ用の範囲とに区切られていてもよい。
図2の中央部分220によれば、I/O対象データ280が4重化されている。具体的には、4個のノード110A~110Dのうちの2個のノード110A及び110BのDIMM7A及び7Bに、それぞれ、2重化されたI/O対象データ280が格納されており、且つ、2個の不揮発キャッシュ部120A及び120Bに、それぞれ、2重化されたI/O対象データ280が格納されている。
図2の中央部分220によれば、自DIMM7A(自ノードアドレス範囲201)にI/O対象データがあるので、自ノード110Aは、太線矢印で示すように、自DIMM7AからI/O対象データ280を読み出す。
一方、図2の右側部分によれば、自DIMM7AにI/O対象データがないがいずれかの不揮発キャッシュ部120にI/O対象データがあるので、自ノード110Aは、太線矢印で示すように、いずれかの不揮発キャッシュ部120B(不揮発アドレス範囲203B)からI/O対象データを読み出す。
図3は、グローバルキャッシュ管理テーブルの構成を示す。
グローバルキャッシュ管理テーブル(以下、管理テーブル)300は、グローバルキャッシュ200に存在するデータ毎にエントリ(レコード)を有する。各エントリは、開始アドレス301、領域サイズ302、データ管理番号303、冗長度304、デステージ完了フラグ305、データ有効フラグ306及び対応ドライブアドレス307を格納する。以下、1つのデータを例に取る。
開始アドレス301が、データが格納されている領域(アドレス範囲)の先頭アドレスを表す。なお、アドレスは、グローバルなキャッシュアドレス(ノード110に共通のキャッシュアドレス)である。アドレスにおける所定桁の値(例えば数値又は記号)から、そのアドレスが属する領域が、いずれのDIMM7又はいずれの不揮発メモリ13に存在するかがわかる。アドレスがDIMM7に対応している場合、そのアドレスの所定桁は、その対応するDIMM7を有するノード110の番号でよい。ノード110は、そのノード110の番号を、例えば、機械的な設定(例えば、ノード110に設けられたボタンの設定)、又は、図示しない管理端末からの設定等により知ることができる。
領域サイズ302は、データが格納されている領域のサイズを表す。データ管理番号303は、データに割り振られた番号である。グローバルキャッシュ200には、最大4つの同一のデータが存在するが、同一のデータには、同一のデータ管理番号303が割り振られている。データ管理番号303が同一のデータに対応する対応ドライブアドレス307も同一である。従って、データ管理番号303のカラムが無くてもよい。対応ドライブアドレス307のカラムから、グローバルキャッシュ200における同一のデータを特定することができる。
冗長度304は、データの冗長度、すなわち、同一のデータの数(冗長化されたデータの数)を表す。従って、本実施例では、冗長度304の最大値は“4”である。
デステージ完了フラグ305は、データがデステージ済みか否か(データがドライブ15に格納済か否か)を表す。デステージ完了フラグ305について、“1”は、デステージ済みを意味し、“0”は、デステージが済んでいないを意味する。データ有効フラグ306は、データが有効か否かを表す。データ有効フラグ306について、“1”は、有効を意味し、“0”は、無効を意味する。デステージ完了フラグ305の値とデータ有効フラグ306の値の組合せから、データが格納されている領域の種類(空き、ダーティ及びクリーンのいずれであるか)を特定することができる。具体的には、データ有効フラグ306が“0”ならば、領域は、空き領域である。データ有効フラグ306が“1”且つデステージ完了フラグ305が“0”ならば、領域は、ダーティ領域である。データ有効フラグ306が“1”且つデステージ完了フラグ305が“1”ならば、領域は、クリーン領域である。
対応ドライブアドレス307が、データの格納先のドライブアドレスを表す。ドライブアドレスは、ドライブ15のアドレスであるが、それに代えて、ドライブ15が基になっている論理空間(例えば論理ボリューム)のアドレスでもよい。なお、全てのデータが、必ずしもドライブ15に格納される必要は無く、ドライブ15に格納されないデータについては、対応ドライブアドレスは所定値(例えば“‐”)でよい。
図3に示す管理テーブル300において、ユーザデータについては、デステージ完了フラグ305及びデータ有効フラグ306の各々について有効な値(“1”又は“0”)が設定されてよく、制御データについては、デステージ完了フラグ305及びデータ有効フラグ306の各々について無効な値(例えば“-”)が設定されてよい。
管理テーブル300は、例えば、図4に示すように、不揮発キャッシュ部120A及び120Bの各々に格納される(管理テーブル300は2重化されている)。全てのノード110が、同じ領域(不揮発キャッシュ部120における領域であって管理テーブル300が格納されている領域)を参照又は更新する。図4によれば、ノード110間での同期が不要である。
変形例として、図9に示すように、マスタ管理テーブル300M(管理テーブル300のマスタ)が、不揮発キャッシュ部120A及び120Bに配置され、コピー管理テーブル300C(マスタのコピー)が、各ノード110のDIMM7に配置されてもよい。各ノード110は、そのノード110のDIMM7内の管理テーブル300Cを参照又は更新し、管理テーブル300Cを更新した場合、更新後の管理テーブル300Cを、管理テーブル300Mに反映してもよい。図9によれば、各ノード110の参照先となる管理テーブル300Cは、そのノード110のDIMM7にあるので、管理テーブル300の参照処理時間が短くて済む。
以下、本実施例で行われる処理の一例を説明する。
図5は、リード処理のフローを示す。リード処理は、いずれかのノード110がリード要求をホスト101から受信した場合に開始される。以下、図5、図7及び図10の説明において、リード要求を受信したノード110を「自ノード110」と言う。自ノード110(自ノード110のCPU8)によりリード処理が行われる。リード要求には論理アドレス(典型的には、リード元の論理ボリュームにおける論理領域の論理アドレス)が指定されている。
自ノード110は、管理テーブル300を参照し、リード要求に従うリード対象データがグローバルキャッシュ200に存在するか否かを判断する(S501)。リード要求で指定されている論理アドレス(又はその論理アドレスを基に特定されるドライブアドレス)に関連付けられているグローバルキャッシュアドレスが特定されれば、リード対象データがグローバルキャッシュ200に存在するということである。
S501の判断結果が真の場合(S501:Yes)、自ノード110は、リード対象データが自DIMM7に存在するか否かを判断する(S502)。S501で特定されたグローバルキャッシュアドレスが、自ノードアドレス範囲201、又は、自ノード110のDIMMアドレス範囲202に属していれば、リード対象データが自DIMM7に存在するということである。
S502の判断結果が真の場合(S502:Yes)、自ノード110は、自DIMM7からリード対象データを読み出し、読み出したリード対象データをホスト101に返す(S503)。
S502の判断結果が偽の場合(S502:No)、自ノード110は、リード対象データがいずれかの不揮発キャッシュ部120に存在するか否かを判断する(S504)。S501で特定されたグローバルキャッシュアドレスが、いずれかの不揮発アドレス範囲203に属していれば、リード対象データがいずれかの不揮発キャッシュ部120に存在するということである。
S504の判断結果が真の場合(S504:Yes)、自ノード110は、いずれかの不揮発キャッシュ部120(不揮発メモリ13)からリード対象データを読み出し、読み出したリード対象データをホスト101に返す(S505)。
S504の判断結果が偽の場合(S504:No)、自ノード110は、S501で特定されたグローバルキャッシュアドレスが属するアドレス範囲、すなわち、他ノード110のDIMM7からリード対象データを読み出し、読み出したリード対象データをホスト101に返す(S506)。
S501の判断結果が偽の場合(S501:No)、自ノード110は、管理テーブル300を参照し、ステージング(ドライブ15からのリード対象データの読出し)に必要な空き領域がグローバルキャッシュ200にあるか否かを判断する(S507)。いずれか2個のDIMM7(例えば、少なくとも自ノード110のDIMM7を含む)と2個の不揮発キャッシュ部120の各々に必要な空き領域がある場合、必要な空き領域がグローバルキャッシュ200にあるということである。一方、いずれか2個のDIMM7と2個の不揮発キャッシュ部120のうちの少なくとも1つに、必要な空き領域が無い場合、必要な空き領域がグローバルキャッシュ200に無いということである。「必要な空き領域」とは、I/O対象データ(リード処理ではリード対象データのサイズであり、後述のライト処理ではライト対象データ)のサイズ以上のサイズの空き領域である。S507では、いずれか2個のDIMM7と2個の不揮発キャッシュ部120の各々について、空き領域の合計サイズ(具体的には、データ有効フラグ306が“0”に対応した領域の領域サイズ302の合計)がI/O対象データのサイズ以上か否かが判断される。
S507の判断結果が偽の場合(S507:No)、自ノード110は、領域確保処理(S508)を実行する。「領域確保処理」とは、1以上の空き不足キャッシュ部(DIMM7及び不揮発キャッシュ部120のうちの少なくとも1つ)の各々について、その空き不足キャッシュ部から必要な空き領域を確保する処理である。具体的には、領域確保処理は、1以上の空き不足キャッシュ部の各々について、1以上のクリーン領域と1以上のダーティ領域とのうちの1以上の領域の各々を空き領域とすることで、必要な空き領域(I/O対象データのサイズ以上の空き領域)を確保する処理である。「空き不足キャッシュ部」は、必要な空き領域の無いキャッシュ部である。
S507の判断結果が真の場合(S507:Yes)、又は、S508の後、自ノード110は、リード対象データをドライブ15から読み出し、読み出したリード対象データを、2個のDIMM7と2個の不揮発キャッシュ部120の各々における必要な空き領域に書き込み、且つ、そのリード対象データをホスト101に返す(S509)。つまり、S509では、4重化されたリード対象データが、2個のDIMM7と2個の不揮発キャッシュ部120にそれぞれ書き込まれる。また、S509でホスト101に返されるリード対象データは、自ノード110のDIMM7に書き込まれた(キャッシュされた)リード対象データでよい。
図6は、ライト処理のフローを示す。ライト処理は、いずれかのノード110がライト要求をホスト101から受信した場合に開始される。以下、図6、図7及び図10の説明において、ライト要求を受信したノード110を「自ノード110」と言う。自ノード110(自ノード110のCPU8)によりライト処理が行われる。ライト要求には論理アドレス(典型的には、ライト先の論理ボリュームにおける論理領域の論理アドレス)が指定されている。
自ノード110は、管理テーブル300を参照し、必要な空き領域がグローバルキャッシュ200にあるか否かを判断する(S601)。いずれか2個のDIMM7(例えば、少なくとも自ノード110のDIMM7を含む)と2個の不揮発キャッシュ部120の各々に必要な空き領域がある場合、必要な空き領域がグローバルキャッシュ200にあるということである。一方、いずれか2個のDIMM7と2個の不揮発キャッシュ部120のうちの少なくとも1つに、必要な空き領域が無い場合、必要な空き領域がグローバルキャッシュ200に無いということである。S601では、いずれか2個のDIMM7と2個の不揮発キャッシュ部120の各々について、空き領域の合計サイズ(具体的には、データ有効フラグ306が“0”に対応した領域の領域サイズ302の合計)がI/O対象データのサイズ以上か否かが判断される。
S601の判断結果が偽の場合(S601:No)、自ノード110は、領域確保処理(S602)を実行することで、必要な空き領域の無いキャッシュ部(DIMM7又は不揮発キャッシュ部120)から、必要な空き領域を確保する。
S601の判断結果が真の場合(S601:Yes)、又は、S602の後、自ノード110は、ライト対象データ(ライト要求に従うデータ)を、2個のDIMM7と2個の不揮発キャッシュ部120の各々における必要な空き領域に書き込む(S603)。つまり、4重化されたライト対象データが、2個のDIMM7と2個の不揮発キャッシュ部120にそれぞれ書き込まれる。
自ノード110は、管理テーブル300を更新する(S604)。具体的には、例えば、4重化されたライト対象データの各々について、そのライト対象データに対応するエントリに、書込み先のグローバルキャッシュアドレス(開始アドレス301)と、書込み先の領域の領域サイズ302と、4重化されたライト対象データに自ノード110により割り振られた同一のデータ管理番号303と、冗長度304(ここでは“4”)と、デステージ完了フラグ305“0”と、データ有効フラグ306“1”とが書き込まれる。
自ノード110は、ライト完了の応答をホスト101に返す(S605)。
図7は、実施例1に係る領域確保処理のフローを示す。
実施例1に係る領域確保処理では、自ノード110は、1以上の空き不足キャッシュ部の各々について、1以上の領域(クリーン領域及びダーティ領域のうちの少なくとも1つ)の各々を空き領域とするが、その領域内のデータと同じデータ(冗長化されたデータ)を格納しておりその領域を含んだキャッシュ部と異なるキャッシュ部における領域を空き領域としない。つまり、実施例1に係る領域確保処理では、1以上の空き不足キャッシュ部の各々についてのみ、領域が空き領域とされる。これにより、少なくとも1つのデータは、そのデータの冗長度304が下がるものの、グローバルキャッシュ200に残り続けるので、レスポンス性能の低下を軽減することができる。領域確保処理では、1以上の空き不足キャッシュ部の各々について、S701~S706が行われる。以下、1つの空き不足キャッシュ部を例に取る。
自ノード110は、管理テーブル300を参照し、各空き不足キャッシュ部について、{(I/O対象データのサイズ)-(空き領域の合計サイズ)}以上の合計サイズのクリーン領域があるか否かを判断する(S701)。その合計サイズのクリーン領域の各々を、図7の説明において、「対象クリーン領域」と言う。
S701の判断結果が真の場合(S701:Yes)、自ノード110は、各対象クリーン領域を空き領域とし、且つ、各対象クリーン領域に関連する冗長度304の値を1減算する(S702)。具体的には、自ノード110は、各対象クリーン領域について、その対象クリーン領域に対応したデータ有効フラグ306を“0”に変更する。この結果、各対象クリーン領域が空き領域となる。また、自ノード110は、各対象クリーン領域について、その対象クリーン領域に対応したエントリにおける冗長度304の値から1減算し、且つ、その対象クリーン領域に対応したエントリにおけるデータ管理番号303と同じデータ管理番号303を保持するエントリにおける冗長度304の値からも1減算する。つまり、対象クリーン領域内のデータとそれの冗長化データとの各々について、冗長度304の値が1減算される。
S701の判断結果が偽の場合(S701:No)、自ノード110は、全てのクリーン領域の各々を空き領域とし、且つ、各クリーン領域に関連する冗長度304の値を1減算する(S703)。具体的には、自ノード110は、各クリーン領域について、そのクリーン領域に対応したデータ有効フラグ306を“0”に変更する。この結果、各クリーン領域が空き領域となる。また、自ノード110は、各クリーン領域について、そのクリーン領域に対応したエントリにおける冗長度304の値から1減算し、且つ、そのクリーン領域に対応したエントリにおけるデータ管理番号303と同じデータ管理番号303を保持するエントリにおける冗長度304の値からも1減算する。
自ノード110は、管理テーブル300を参照し、{(I/O対象データのサイズ)-(空き領域の合計サイズ)}以上の合計サイズのダーティ領域を特定する(S704)。なお、このS704での「空き領域の合計サイズ」は、S701での「空き領域の合計サイズ」と、S703で空き領域とされたクリーン領域の合計サイズとの合計である。
自ノード110は、S704で特定した各ダーティ領域内のダーティデータを、そのダーティデータの対応ドライブアドレス307に従うドライブ15にデステージする(S705)。
自ノード110は、S704で特定した全てのダーティ領域の各々を空き領域とし、且つ、全てのダーティ領域の各々に関連する冗長度304の値を1減算する(S706)。具体的には、自ノード110は、各ダーティ領域について、そのダーティ領域に対応したデータ有効フラグ306を“0”に変更する。この結果、各ダーティ領域が空き領域となる。また、自ノード110は、各ダーティ領域について、そのダーティ領域に対応したエントリにおける冗長度304の値から1減算し、且つ、そのダーティ領域に対応したエントリにおけるデータ管理番号303と同じデータ管理番号303を保持するエントリにおける冗長度304の値からも1減算する。更に、自ノード110は、各ダーティ領域について、そのダーティ領域に対応したデステージ完了フラグ305を“0”に変更する。
実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略又は簡略する。
図10は、実施例2に係る領域確保処理のフローを示す。
実施例2に係る領域確保処理では、自ノード110は、1以上の空き不足キャッシュ部の各々について、1以上の領域(クリーン領域及びダーティ領域のうちの少なくとも1つ)の各々を空き領域とするだけでなく、空き領域とされる領域内のデータと同じデータ(冗長化されたデータ)を格納しておりその領域を含んだキャッシュ部と異なるキャッシュ部における領域も空き領域とする。つまり、実施例1に係る領域確保処理では、1以上の空き不足キャッシュ部の各々についてのみ、領域が空き領域とされる。これにより、データに付随してそれの全ての冗長化データがグローバルキャッシュ200から消去されたものとして扱われるが、キャッシュ部の空き領域が増えるので、少なくとも1つのキャッシュ部について領域確保処理が行われる頻度を軽減することができる。領域確保処理では、1以上の空き不足キャッシュ部の各々について、S1001~S1006が行われる。以下、1つの空き不足キャッシュ部を例に取る。
自ノード110は、管理テーブル300を参照し、各空き不足キャッシュ部について、{(I/O対象データのサイズ)-(空き領域の合計サイズ)}以上の合計サイズのクリーン領域があるか否かを判断する(S1001)。その合計サイズのクリーン領域の各々を、図10の説明において、「対象クリーン領域」と言う。
S1001の判断結果が真の場合(S1001:Yes)、自ノード110は、各対象クリーン領域について、その対象クリーン領域と、その対象クリーン領域の全ての冗長領域との各々を空き領域とする(S1002)。具体的には、自ノード110は、対象クリーン領域毎に、その対象クリーン領域と、その対象クリーン領域の全ての冗長領域との各々について、データ有効フラグ306を“0”に変更する。なお、対象クリーン領域の「冗長領域」とは、その対象クリーン領域に対応したエントリにおけるデータ管理番号303と同じデータ管理番号303を保持するエントリに対応した領域(異なるキャッシュ部における領域)である。言い換えれば、対象クリーン領域内のデータの冗長化データを記憶している領域である。
S1001の判断結果が偽の場合(S1001:No)、自ノード110は、全てのクリーン領域の各々を空き領域とする(S1003)。具体的には、自ノード110は、各クリーン領域について、そのクリーン領域に対応したデータ有効フラグ306を“0”に変更する。
自ノード110は、管理テーブル300を参照し、{(I/O対象データのサイズ)-(空き領域の合計サイズ)}以上の合計サイズのダーティ領域を特定する(S1004)。なお、このS1004での「空き領域の合計サイズ」は、S1001での「空き領域の合計サイズ」と、S1003で空き領域とされたクリーン領域の合計サイズとの合計である。
自ノード110は、S1004で特定した各ダーティ領域について、ダーティデータを、そのダーティデータの対応ドライブアドレス307に従うドライブ15にデステージし、且つ、そのダーティ領域に対応したデステージ完了フラグ305を“0”に変更する(S1005)。
自ノード110は、S1004で特定した全てのダーティ領域の各々について、そのダーティ領域と、そのダーティ領域の全ての冗長領域との各々を空き領域とする(S1006)。具体的には、自ノード110は、ダーティ領域毎に、そのダーティ領域と、そのダーティ領域の全ての冗長領域との各々について、データ有効フラグ306を“0”に変更する。なお、ダーティ領域の「冗長領域」とは、そのダーティ領域に対応したエントリにおけるデータ管理番号303と同じデータ管理番号303を保持するエントリに対応した領域(異なるキャッシュ部における領域)である。言い換えれば、ダーティ領域内のデータの冗長化データを記憶している領域である。冗長領域がダーティ領域の場合、自ノード110は、そのダーティ領域内のダーティデータをドライブ15にデステージし、且つ、そのダーティ領域に対応したデステージ完了フラグ305を“0”に変更する。
以上、幾つかの実施例及び変形例を説明したが、本発明は、これらの実施例及び変形例に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
100:ストレージシステム
Claims (15)
- それぞれI/O(Input/Output)要求を発行する1以上の外部システムに接続されるストレージシステムであって、
P個のストレージノードと(Pは2以上の整数)、
それぞれが前記P個のストレージノードに接続されたQ個のスイッチと(Qは2以上の整数)、
前記Q個のスイッチにそれぞれ接続されたQ個の第1キャッシュ部と
を有し、
前記P個のストレージノードの各々は、
前記1以上の外部システムのうちの少なくとも1つと複数の物理記憶デバイスのうちの少なくとも1つとに接続される1以上のインターフェースであるインターフェース部と、
第2キャッシュ部と、
前記インターフェース部及び前記第2キャッシュ部に接続された1以上のプロセッサを含んだプロセッサ部と
を有し、
前記Q個の第1キャッシュ部と、前記P個のストレージノードがそれぞれ有するP個の第2キャッシュ部との各々は、1以上のキャッシュメモリ領域であり、
前記P個のストレージノードの各々は、グローバルキャッシュを認識し、
前記グローバルキャッシュは、前記Q個の第1キャッシュ部と前記P個の第2キャッシュ部とがマッピングされており前記P個のストレージノードに共通のキャッシュアドレス空間であり、
前記P個のストレージノードのうちのいずれかのストレージノードがI/O要求を受信した場合、そのストレージノードである自ノードは、
(X)前記受信したI/O要求がリード要求であり、且つ、前記リード要求に従うリード対象データが前記グローバルキャッシュに存在する場合、
(x1)前記リード対象データが、前記自ノードの第2キャッシュ部に存在していれば、前記自ノードの第2キャッシュ部から前記リード対象データを読み出し、
(x2)前記リード対象データが、前記自ノードの第2キャッシュ部に存在していないが前記Q個の第1キャッシュ部のうちの1以上の第1キャッシュ部に存在していれば、前記1以上の第1キャッシュ部のいずれかから前記リード対象データを読み出し、
(x3)前記リード対象データが、前記自ノードの第2キャッシュ部と前記Q個の第1キャッシュ部とのいずれにも存在しないが前記自ノードの第2キャッシュ部以外の1以上の第2キャッシュ部に存在していれば、前記1以上の第2キャッシュ部のいずれかから前記リード対象データを読み出し、
(Y)前記リード対象データが前記グローバルキャッシュに存在しない場合、又は、前記受信したI/O要求がライト要求の場合、
(y1)それぞれが前記リード要求に従うリード対象データ又は前記ライト要求に従うライト対象データであるN重化されたI/O対象データを(Nは2以上の整数)、それぞれN個のキャッシュ部に書き込み、
前記N個のキャッシュ部は、前記P個の第2キャッシュ部のうちの少なくとも1つの第2キャッシュ部と、前記Q個の第1キャッシュ部のうちの少なくとも1つの第1キャッシュ部である、
ストレージシステム。 - 前記Q個の第1キャッシュ部の各々が有する1以上のキャッシュメモリ領域は、1以上の不揮発メモリに存在する、
請求項1記載のストレージシステム。 - 前記N個のキャッシュ部において、前記少なくとも1つの第1キャッシュ部は、K個の第1キャッシュ部である(Kは、2以上且つQ以下の整数)、
請求項2記載のストレージシステム。 - 前記N個のキャッシュ部において、前記少なくとも1つの第2キャッシュ部は、前記P個の第2キャッシュ部のうちの2以上の第2キャッシュ部である、
請求項3記載のストレージシステム。 - (Y)において、それぞれが前記I/O対象データのサイズ未満の空き領域を有するキャッシュ部である1以上の空き不足キャッシュ部が前記N個のキャッシュ部にあれば、前記自ノードは、領域確保処理を実行し、
前記領域確保処理は、前記1以上の空き不足キャッシュ部の各々について、その空き不足キャッシュ部における1以上のクリーン領域と1以上のダーティ領域とのうちの1以上の領域の各々を空き領域とすることで前記I/O対象データのサイズ以上の合計サイズの空き領域を確保する処理であり、
前記1以上のダーティ領域の各々は、いずれの物理記憶デバイスにも格納されていないデータであるダーティデータを格納している領域であり、
前記1以上のクリーン領域の各々は、いずれかの物理記憶デバイスに格納済のデータであるクリーンデータを格納しており前記ダーティデータを格納していない領域である、
請求項4記載のストレージシステム。 - 前記自ノードは、前記領域確保処理において、前記1以上の空き不足キャッシュ部の各々について、前記1以上の領域の各々を空き領域とするが、空き領域とされる領域内のデータの冗長化されたデータを格納しておりその領域を含んだキャッシュ部と異なるキャッシュ部における領域を空き領域としない、
請求項5記載のストレージシステム。 - 前記自ノードは、前記領域確保処理において、前記1以上の空き不足キャッシュ部の各々について、前記1以上の領域の各々を空き領域とするだけでなく、空き領域とされる領域内のデータの冗長化されたデータを格納しておりその領域を含んだキャッシュ部と異なるキャッシュ部における領域も空き領域とする、
請求項5記載のストレージシステム。 - (Y)において、それぞれが前記I/O対象データのサイズ未満の空き領域を有するキャッシュ部である1以上の空き不足キャッシュ部が前記N個のキャッシュ部にあれば、前記自ノードは、領域確保処理を実行し、
前記領域確保処理は、前記1以上の空き不足キャッシュ部の各々について、その空き不足キャッシュ部における1以上のクリーン領域と1以上のダーティ領域とのうちの1以上の領域の各々を空き領域とすることで前記I/O対象データのサイズ以上の合計サイズの空き領域を確保する処理であり、
前記1以上のダーティ領域の各々は、いずれの物理記憶デバイスにも格納されていないデータであるダーティデータを格納している領域であり、
前記1以上のクリーン領域の各々は、いずれかの物理記憶デバイスに格納済のデータであるクリーンデータを格納しており前記ダーティデータを格納していない領域である、
請求項1記載のストレージシステム。 - 前記自ノードは、前記領域確保処理において、前記1以上の空き不足キャッシュ部の各々について、前記1以上の領域の各々を空き領域とするが、空き領域とされる領域内のデータの冗長化されたデータを格納しておりその領域を含んだキャッシュ部と異なるキャッシュ部における領域を空き領域としない、
請求項8記載のストレージシステム。 - 前記自ノードは、前記領域確保処理において、前記1以上の空き不足キャッシュ部の各々について、前記1以上の領域の各々を空き領域とするだけでなく、空き領域とされる領域内のデータの冗長化されたデータを格納しておりその領域を含んだキャッシュ部と異なるキャッシュ部における領域も空き領域とする、
請求項8記載のストレージシステム。 - 前記Q個の第1キャッシュ部のうちの2以上の第1キャッシュ部の各々が、前記グローバルキャッシュの構成を表す情報である管理情報を記憶する、
請求項1記載のストレージシステム。 - 前記P個のストレージノードの各々は、前記2以上の第1キャッシュ部のうちの少なくとも1つにおける前記管理情報を参照又は更新する、
請求項11記載のストレージシステム。 - 前記P個のストレージノードの各々は、
前記2以上の第1キャッシュ部のうちの少なくとも1つにおける前記管理情報の複製を、そのストレージノードの前記第2キャッシュ部に格納し、
そのストレージノードの前記第2キャッシュ部における、前記管理情報の複製を参照又は更新し、
更新後の前記管理情報の複製を、前記2以上の第1キャッシュ部の各々における前記管理情報に反映する、
請求項11記載のストレージシステム。 - 前記Q個のスイッチの各々は、インターコネクトスイッチである、
請求項1記載のストレージシステム。 - それぞれI/O(Input/Output)要求を発行する1以上の外部システムに接続されるストレージシステムのキャッシュ制御方法であって、
前記ストレージシステムは、
P個のストレージノードと(Pは2以上の整数)、
それぞれが前記P個のストレージノードに接続されたQ個のスイッチと(Qは2以上の整数)、
前記Q個のスイッチにそれぞれ接続されたQ個の第1キャッシュ部と
を有し、
前記P個のストレージノードの各々は、
前記1以上の外部システムのうちの少なくとも1つと複数の物理記憶デバイスのうちの少なくとも1つとに接続される1以上のインターフェースであるインターフェース部と、
第2キャッシュ部と、
前記インターフェース部及び前記第2キャッシュ部に接続された1以上のプロセッサを含んだプロセッサ部と
を有し、
前記Q個の第1キャッシュ部と、前記P個のストレージノードがそれぞれ有するP個の第2キャッシュ部との各々は、1以上のキャッシュメモリ領域を含み、
前記P個のストレージノードの各々は、グローバルキャッシュを認識しており、
前記グローバルキャッシュは、前記Q個の第1キャッシュ部と前記P個の第2キャッシュ部とがマッピングされており前記P個のストレージノードに共通のキャッシュアドレス空間であり、
前記キャッシュ制御方法は、
前記P個のストレージノードのうちのいずれかのストレージノードがI/O要求を受信した場合、そのストレージノードである自ノードにより、
(X)前記受信したI/O要求がリード要求であり、且つ、前記リード要求に従うリード対象データが前記グローバルキャッシュに存在する場合、
(x1)前記リード対象データが、前記自ノードの第2キャッシュ部に存在していれば、前記自ノードの第2キャッシュ部から前記リード対象データを読み出し、
(x2)前記リード対象データが、前記自ノードの第2キャッシュ部に存在していないが前記Q個の第1キャッシュ部のうちの1以上の第1キャッシュ部に存在していれば、前記1以上の第1キャッシュ部のいずれかから前記リード対象データを読み出し、
(x3)前記リード対象データが、前記自ノードの第2キャッシュ部と前記Q個の第1キャッシュ部とのいずれにも存在しないが前記自ノードの第2キャッシュ部以外の1以上の第2キャッシュ部に存在していれば、前記1以上の第2キャッシュ部のいずれかから前記リード対象データを読み出し、
(Y)前記リード対象データが前記グローバルキャッシュに存在しない場合、又は、前記受信したI/O要求がライト要求の場合、
(y1)それぞれが前記リード要求に従うリード対象データ又は前記ライト要求に従うライト対象データであるN重化されたI/O対象データを(Nは2以上の整数)、それぞれ、N個のキャッシュ部に書き込み、
前記N個のキャッシュ部は、前記P個の第2キャッシュ部のうちの少なくとも1つの第2キャッシュ部と、前記Q個の第1キャッシュ部のうちの少なくとも1つの第1キャッシュ部である、
キャッシュ制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2016/053371 WO2017134795A1 (ja) | 2016-02-04 | 2016-02-04 | ストレージシステム及びキャッシュ制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2016/053371 WO2017134795A1 (ja) | 2016-02-04 | 2016-02-04 | ストレージシステム及びキャッシュ制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2017134795A1 true WO2017134795A1 (ja) | 2017-08-10 |
Family
ID=59499574
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2016/053371 WO2017134795A1 (ja) | 2016-02-04 | 2016-02-04 | ストレージシステム及びキャッシュ制御方法 |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2017134795A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111367461A (zh) * | 2018-12-25 | 2020-07-03 | 北京兆易创新科技股份有限公司 | 一种存储空间管理方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003044421A (ja) * | 2001-07-26 | 2003-02-14 | Fujitsu Ltd | 仮想ストレージシステム及び同システムに使用されるスイッチングノード |
JP2006221526A (ja) * | 2005-02-14 | 2006-08-24 | Hitachi Ltd | ストレージ制御装置 |
JP2013164660A (ja) * | 2012-02-09 | 2013-08-22 | Nec Corp | ストレージ装置 |
JP2015127949A (ja) * | 2013-12-27 | 2015-07-09 | インテル・コーポレーション | 支援型コヒーレント共有メモリ |
-
2016
- 2016-02-04 WO PCT/JP2016/053371 patent/WO2017134795A1/ja active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003044421A (ja) * | 2001-07-26 | 2003-02-14 | Fujitsu Ltd | 仮想ストレージシステム及び同システムに使用されるスイッチングノード |
JP2006221526A (ja) * | 2005-02-14 | 2006-08-24 | Hitachi Ltd | ストレージ制御装置 |
JP2013164660A (ja) * | 2012-02-09 | 2013-08-22 | Nec Corp | ストレージ装置 |
JP2015127949A (ja) * | 2013-12-27 | 2015-07-09 | インテル・コーポレーション | 支援型コヒーレント共有メモリ |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111367461A (zh) * | 2018-12-25 | 2020-07-03 | 北京兆易创新科技股份有限公司 | 一种存储空间管理方法及装置 |
CN111367461B (zh) * | 2018-12-25 | 2024-02-20 | 兆易创新科技集团股份有限公司 | 一种存储空间管理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8938574B2 (en) | Methods and systems using solid-state drives as storage controller cache memory | |
US9037671B2 (en) | System and method for simple scale-out storage clusters | |
US11860672B2 (en) | Method for supporting erasure code data protection with embedded PCIE switch inside FPGA+SSD | |
CN102209103B (zh) | 向多个存储控制器多播写请求 | |
US9824041B2 (en) | Dual access memory mapped data structure memory | |
US9047200B2 (en) | Dynamic redundancy mapping of cache data in flash-based caching systems | |
US20160085460A1 (en) | Optimized read access to shared data via monitoring of mirroring operations | |
US7743209B2 (en) | Storage system for virtualizing control memory | |
JP2009043030A (ja) | ストレージシステム | |
JP2009116783A (ja) | 障害の発生した記憶装置に記憶されているデータを修復するストレージシステム | |
US10303396B1 (en) | Optimizations to avoid intersocket links | |
US6842829B1 (en) | Method and apparatus to manage independent memory systems as a shared volume | |
US11543989B2 (en) | Storage system and control method thereof | |
JP6294569B2 (ja) | ストレージシステム及びキャッシュ制御方法 | |
US20200210099A1 (en) | Storage system | |
US20240231646A1 (en) | Storage System and Method Using Persistent Memory | |
US9740423B2 (en) | Computer system | |
US20180307427A1 (en) | Storage control apparatus and storage control method | |
US20210271393A1 (en) | Method and apparatus for performing data access management of all flash array server | |
WO2015141219A1 (ja) | ストレージシステム、制御装置、記憶装置、データアクセス方法及びプログラム記録媒体 | |
EP4293493A1 (en) | Systems and methods for a redundant array of independent disks (raid) using a raid circuit in cache coherent interconnect storage devices | |
WO2017134795A1 (ja) | ストレージシステム及びキャッシュ制御方法 | |
US8140800B2 (en) | Storage apparatus | |
WO2016006108A1 (ja) | ストレージおよびその制御方法 | |
US20240095196A1 (en) | Method for supporting erasure code data protection with embedded pcie switch inside fpga+ssd |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 16889281 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 16889281 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: JP |