WO2018037509A1 - Storage system and storage control method - Google Patents
Storage system and storage control method Download PDFInfo
- Publication number
- WO2018037509A1 WO2018037509A1 PCT/JP2016/074691 JP2016074691W WO2018037509A1 WO 2018037509 A1 WO2018037509 A1 WO 2018037509A1 JP 2016074691 W JP2016074691 W JP 2016074691W WO 2018037509 A1 WO2018037509 A1 WO 2018037509A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- stripe
- chunk
- parity
- data
- zone
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Images
Classifications
- 
        - G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 control, for example, storage control of a storage system having SMR (Shingled Magnetic Recording) -HDD (Hard Disk Drive).
- SMR Shiled Magnetic Recording
- HDD Hard Disk Drive
- a PDEV physical storage device
- a PDEV is typically a non-volatile storage device
- an example of a PDEV is an HDD (Hard Disk Drive).
- an HDD having a larger storage capacity than a normal HDD an HDD to which an SMR (Shingled Magnetic Recording) technology is applied, that is, an SMR-HDD is known.
- SMR-HDD Single Magnetic Recording
- a continuous logical area called a zone is defined in advance in the SMR-HDD.
- a zone a conventional zone in which random writing is possible can be defined, but a sequential writing in which random writing is not possible (that is, only sequential writing is possible for writing) is possible for writing according to SMR. Need to be defined.
- the conventional zone can be supported by a conventional command (typically, SCSI Block Command).
- SCSI Block Command typically, SCSI Block Command
- the sequential zone cannot be supported by a conventional command, but can be supported by an SMR optimization command (Zoned Block Command) which is an example of an extended command.
- a logical area based on SMR-HDD can be directly or indirectly allocated to a logical volume provided to a host system (one or more host computers) of a storage system.
- a host system one or more host computers
- SMR-HDD there may be other types of zone providing storage devices (PDEVs) in which sequential zones are defined.
- PDEVs zone providing storage devices
- the above-described problem is not limited to SMR-HDD, but may be a case where another type of zone providing storage device in which a sequential zone is defined is adopted as a PDEV installed in the storage system.
- the first chunk which is at least one of the one or more chunks, is configured using the two or more zones. For each, an area aligned with two or more chunk pages based on the first chunk is a parcel that is a component of the chunk.
- the storage system allocates at least one of the two or more chunk pages based on the first chunk directly or indirectly to the logical volume.
- Indirect allocation means that a chunk page is allocated to a logical volume via an allocation destination area of the chunk page.
- An example of the “allocation destination area” is a virtual page described later.
- Direct allocation means that the chunk page is allocated to the logical volume without passing through any allocation destination area.
- a logical area based on a zone provided by a zone providing storage device can be appropriately allocated to a logical volume.
- FIG. 1 is a schematic diagram of Example 1.
- FIG. 1 shows a configuration of an entire system according to a first embodiment.
- An example of the storage hierarchy based on Example 1 is shown. Shows programs, tables and areas in memory.
- a correspondence relationship between chunks and chunk pages and corresponding to RAID5 is shown.
- a correspondence relationship between a chunk and a chunk page and corresponding to RAID4 is shown.
- An example of address mapping is shown.
- the structure of a logical volume management table is shown.
- the structure of an SMR-HDD management table is shown.
- the structure of a cluster mapping table is shown.
- the structure of a cluster reverse mapping table is shown.
- the structure of a cache management table is shown.
- the structure of a write destination virtual page management table is shown.
- the structure of a virtual page write pointer management table is shown.
- the flow of cache memory write processing is shown.
- the flow of read processing is shown. It is a schematic diagram of the outline
- the flow of parity generation processing according to the parity generation method (1) is shown.
- the structure of a temporary storage area management table is shown.
- the flow of parity generation processing according to the parity generation method (3) is shown.
- the flow of the available capacity report processing is shown.
- An example of the storage hierarchy based on Example 2 is shown.
- An example of the address mapping which concerns on Example 3 is shown.
- the structure of a zone management table is shown.
- the flow of destage processing 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 “storage unit” includes one or more memories.
- the at least one memory may be a volatile memory or a non-volatile memory.
- the storage unit is mainly used during processing by the processor unit.
- 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.
- 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 process may be described using “program” as a subject.
- the program is executed by a processor (for example, a CPU (Central Processing Unit)), so that a predetermined processing is appropriately performed. Since the processing is performed using a storage unit (for example, a memory) and / or an interface device (for example, a communication port), the subject of processing may be a processor (or an apparatus or system having the processor).
- the processor may include a hardware circuit that performs a part or all of the processing.
- the program may be installed in a computer-like device from a program source.
- the program source may be, for example, a recording medium (for example, non-transitory) readable 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.
- the “host system” may be one or more physical host computers (for example, a cluster of host computers), or at least one virtual host computer (for example, VM (Virtual Machine)). ) May be included.
- the host system is simply referred to as “host”.
- the “storage system” may be one or more physical storage devices, or at least one virtual storage device (for example, LPAR (Logical Partition) or SDS (Software Defined Storage). ) May be included.
- LPAR Logical Partition
- SDS Software Defined Storage
- PDEV means a physical storage device, and is typically a nonvolatile storage device (for example, an auxiliary storage device).
- the PDEV is typically an SMR-HDD.
- SMR-HDD SMR-HDD
- other types of PDEVs in particular, other types of PDEVs in which sequential zones are defined in advance, can be applied to the present invention.
- RAID is an abbreviation for Redundant “Array” of “Independent” (or “Inexpensive)” Disks.
- the “RAID group” may be a group that stores data according to a RAID level (RAID configuration) configured and associated with a plurality of SMR-HDDs, or is configured and associated with a plurality of parcels (described later). It may be a group that stores data according to a specified RAID level (RAID configuration). The latter group may be called “chunk” in the embodiment, as will be described later.
- SMR-HDD 51 is described when the SMR-HDD is not particularly distinguished
- SMR-HDD 1-1 is described when the individual SMR-HDD is distinguished. There are things to do.
- Zone is a storage area defined in advance in the SMR-HDD.
- a zone is a continuous logical storage area according to continuous logical addresses (typically LBA (Logical Block Address)).
- LBA Logical Block Address
- the zone can be supported (operated) by a command for the SMR-HDD. For example, a response describing the capacity of a zone can be acquired by a certain control command.
- a plurality of zones exist in one SMR-HDD. Note that the size of any zone in the SMR-HDD is the same.
- Parent means all or part of a zone.
- Stripes are parts of parcels.
- a plurality of stripes in one SMR-HDD constitute one parcel in the SMR-HDD.
- the stripe either user data that is a part of a data unit corresponding to a stripe column (described later) including the stripe, or parity corresponding to the data unit is stored.
- a stripe in which user data is stored can be referred to as a “data stripe”, and a stripe in which parity is stored can be referred to as a “parity stripe”.
- Data unit means data in stripe columns.
- “Chunk” is a storage area composed of a plurality of parcels existing in a plurality of SMR-HDDs. Accordingly, the chunk includes a plurality of stripes.
- the plurality of stripes include a data stripe and a parity stripe.
- a “chunk page” is a storage area composed of a plurality of data stripes existing in a plurality of SMR-HDDs. In other words, the chunk page is composed of a plurality of stripes, but each of the plurality of stripes is a data stripe and does not include a parity stripe.
- a “stripe column” is a storage area composed of a plurality of stripes of the same address respectively existing in a plurality of SMR-HDD areas constituting one RAID group.
- the “cache stripe column” is a storage area corresponding to the stripe column and a storage area on the cache memory area.
- Logical volume is a logical storage area recognized by the host.
- a “logical page” is a part of a logical volume.
- a logical volume is composed of a plurality of logical pages.
- a “logical cluster” is a part of a logical page.
- a logical page is composed of a plurality of logical clusters.
- the “virtual volume” is a so-called capacity expansion volume, and is typically a logical storage area according to Thin Provisioning.
- the virtual volume is an internal volume (a volume not provided to the host) associated with the logical volume.
- a “virtual page” is a part of a virtual volume.
- a virtual volume is composed of a plurality of virtual pages.
- a “virtual cluster” is a part of a virtual page.
- the virtual page is composed of a plurality of virtual clusters.
- FIG. 1 is a schematic diagram of the first embodiment.
- Each SMR-HDD 51 is an example of a zone providing storage device. Each SMR-HDD 51 provides a plurality of zones 50. As the zone 50, there is at least a sequential zone 50S. There may be a conventional zone 50C. The conventional zone 50C is a zone where random writing is possible. On the other hand, the sequential zone 50S is a zone where random writing is impossible, in other words, a zone where only sequential writing is possible for writing. In the present embodiment, the conventional zone 50C can be supported by a SCSI Block ⁇ Command which is an example of a conventional command. On the other hand, the sequential zone 50S cannot be supported by a conventional command, but is supported by an SMR optimization command (Zoned Block Command) which is an example of an extended command.
- SMR optimization command Zerod Block Command
- Each zone 50 includes a parcel 41.
- the parcel 41 includes a plurality of stripes 52 provided by the SMR-HDD 51 having the parcel 41.
- the size of the stripe 52 is, for example, 512 KB.
- a plurality of chunk pages 60 are provided based on a plurality of SMR-HDDs 51.
- Each chunk page 60 includes a plurality of stripes 52 provided by a plurality of SMR-HDDs 51 that provide the chunk page 60, respectively.
- the unused area 53 can be provided in at least one sequential zone 50S. That is, at least one sequential zone 50 ⁇ / b> S can be composed of the parcel 41 and the unused area 53. In other words, instead of using up the entire area of the sequential zone 50 ⁇ / b> S (rather than providing it as a plurality of stripes 52), a partial area of the sequential zone 50 ⁇ / b> S can be defined as the unused area 53.
- the “unused area” is a storage area that is not used as an effective storage area. In other words, no part of the unused area is provided (not used) as at least part of the stripe 52. Accordingly, neither user data nor parity is stored in the unused area 53.
- the usable capacity of the storage system is defined as follows.
- the “usable capacity” is the capacity of an area where user data can be stored, and does not include the capacity of an area where parity can be stored.
- the size of the zone 50 (for example, the size of the sequential zone 50S) is larger than the page size.
- the RAID level is mD + nP (m is a natural number, n is an integer of 0 or more), that is, one stripe column is composed of m data stripes and n parity stripes.
- the “page size” may be the size of any one of the virtual page and the logical page (typically, the size of the virtual page and the logical page is the same). Further, according to the above definition, the parcel size may be the same as the zone size. In this case, the size of the unused area 53 is 0, that is, the unused area 53 is not necessary. .
- the page size is 42 MB, but as in the specific example, the page size is preferably 42 MB.
- An example of the reason is as follows.
- the stripe size is generally a power of 2 and is typically 512 KB.
- the page size is divisible by any of 512 KB ⁇ 14. For this reason, even when the RAID level of any of the above cases is used, when the data stripe 52 is associated with the page, N stripe columns can be associated with the page (N is a natural number).
- the page size is preferably a natural number multiple of the least common multiple of a plurality of data stripe sizes total (stripe size ⁇ number of data stripes) respectively corresponding to a plurality of different RAID levels.
- the page size is different from the page size according to this consideration, for example, when the page size is 64 MB, the above result cannot be obtained.
- the page size can be determined in accordance with such consideration, it is desirable that the page size is an appropriate size in relation to the zone size defined in advance in the SMR-HDD 51. There is a technical problem that it is difficult to determine the page size and the area management burden is large.
- At least one sequential zone 50S is not used as a usable area, but the above technical problem is solved by a simple technical idea that a non-use area 53 is provided. Can do. That is, instead of adjusting the page size, it is possible to appropriately set the storage area size relationship between different storage hierarchies by adjusting the zone side size (parcel size) by providing the unused area 53 in the zone size. it can. If the above technical problems remain, it is difficult to adopt a PDEV such as the SMR-HDD 51 as the PDEV that constitutes the RAID group of the storage system. Therefore, it is possible to provide a storage system having the SMR-HDD 51, that is, a storage system having a larger capacity than a storage system having a normal HDD.
- non-use area 53 may also be provided in the conventional zone 50C as shown in FIG.
- FIG. 2 shows the configuration of the entire system according to the first embodiment.
- the storage system 100 is connected to one or more hosts 300 via a communication network such as SAN (Storage Area Network).
- SAN Storage Area Network
- the storage system 100 includes a plurality of PDEVs including a plurality of SMR-HDDs 51 and a storage controller 110 connected to the plurality of PDEVs.
- the storage system 100 may include a RAID group based on the SMR-HDD 51 and a RAID group based on another type of PDEV (for example, an SSD or a normal HDD).
- the storage controller 110 adjusts the zone side size (parcel size) described with reference to FIG. Specifically, for example, the storage controller 110 sends a command for inquiring the zone size to the SMR-HDD 51 (for example, a command “REPORT ZONE” supported by Zoned Block Command), and a response to the command (the zone size is The response described) is received from the SMR-HDD 51.
- the storage controller 110 uses the RAID configuration (which parcel 41 of which SMR-HDD 51 configures the RAID), the zone size of the SMR-HDD 51, and the number of data stripes (m) in the RAID configuration, as described above.
- the parcel size is calculated for each RAID configuration. Further, by calculating the above (Equation 1) using the parcel size, the number of parcels in the storage system 100, the number of data stripes (m) in the RAID configuration, and the number of parity stripes (n) in the RAID configuration, Calculate available capacity.
- the storage controller 110 has an interface unit, a storage unit, and a processor unit.
- An example of the interface unit is a plurality of FC (Fibre Channel) I / F (interface) 113, which is an example of a front-end interface unit connected to the host, and a plurality of examples of a back-end interface unit connected to the PDEV.
- SAS Serial Attached SCSI
- An example of the storage unit is the memory 112.
- An example of the processor unit is the CPU 111.
- FC I / F 113 is an interface for communicating with the host.
- the SAS I / F 115 is an interface for communicating with the SMR-HDD 51.
- the memory 112 stores programs and tables.
- the memory 112 may include a cache memory area in which data input / output to / from the PDEV such as the SMR-HDD 51 is temporarily stored.
- the CPU 111 reads and executes a program from the memory, and uses a table in the memory 112.
- the storage controller 110 further has an ASIC (Application Specific Integrated Circuit) 116 that is an example of a hardware circuit.
- the ASIC 116 may be an example of an element included in the processor unit. Instead of the ASIC 116, other types of hardware circuits (for example, FPGA (Field-Programmable Gate Array)) may be employed.
- the ASIC 116 creates parity.
- an ASIC 116 and a SAS I / F 115 are provided for each PDEV group 121.
- the PDEV group 121 may be a RAID group or may not be a RAID group.
- the storage system 100 has a battery for power failure to protect dirty data (data not yet stored in the PDEV and stored in the cache memory area). Also good.
- the memory 112 may be duplicated. Further, when the memories 112 are duplicated, the power supply systems of these memories 112 may be different.
- the storage controller 110 may execute a Log-Structured write described later.
- the storage controller 110 may have at least one of a deduplication function and a compression function for reducing the amount of data regarding the Log-Structured write.
- FIG. 3 shows an example of a storage hierarchy according to the first embodiment.
- distributed RAID is adopted.
- a RAID group is configured with HDD as a basic unit
- a RAID group is configured with parcel as a basic unit.
- a RAID group composed of a plurality of parcels 41 is called a chunk 303.
- the parcel 41 in the SMR-HDD 1-1, the parcel 41 in the SMR-HDD 2-2, the parcel 41 in the SMR-HDD 3-1 and the parcel 41 in the SMR-HDD 4-3 are used.
- Chunk 303 is configured.
- SMR-HDDs 51 There are a plurality of combinations of SMR-HDDs 51 that store the parcels 41 constituting the chunk 303.
- the CPU 111 selects the SMR-HDD 51 so that (almost) all the SMR-HDDs 51 in the storage system 100 are involved in RAID rebuild (collection copy) processing. be able to.
- a plurality of data stripes included in the chunk 303 constitute a plurality of chunk pages 60.
- the chunk page 60 is a storage area allocated to the virtual page 302.
- the chunk 303 may be common to a plurality of virtual volumes 141, or a chunk 303 may be provided for each virtual volume 141.
- One or more chunks 303 may correspond to, for example, a capacity pool (a pool of chunk pages 60) according to Thin Provisioning.
- the virtual volume 141 and the logical volume 151 may correspond by 1: 1, but in this embodiment, they correspond by many: many. That is, an area (for example, logical page 301) in the logical volume 151 corresponds to an area (for example, virtual page 302) in the virtual volume 141, and another area in the same logical volume 151 is an area in another virtual volume 141. It corresponds to.
- the logical volume 151 and the virtual volume 141 are associated by a cluster mapping table described later.
- a logical volume 151 is provided to the host 300.
- FIG. 4 shows programs, tables, and areas in the memory 112.
- the memory 112 an I / O control program 401 and an area management program 402 are stored.
- the memory 112 also includes a cluster mapping table 411, a cluster reverse mapping table 412, a page mapping table 413, a chunk mapping table 414, a parcel mapping table 415, a RAID management table 416, a write destination virtual page management table 417, and a virtual page write pointer.
- a management table 418, a logical volume management table 419, an SMR-HDD management table 420, a cache management table 421, a temporary storage area management table 422, and a zone management table 423 are stored.
- the memory 112 has a cache memory area 430. At least one of the program and table on the memory 112 may be copied (backed up) to at least one SMR-HDD 51.
- the I / O control program 401 controls data I / O.
- the area management program 402 executes calculation of area capacity.
- the cluster mapping table 411 is a table that holds a cluster correspondence (mapping from the logical cluster to the virtual cluster) regarding the direction from the logical cluster to the virtual cluster.
- the cluster reverse mapping table 412 is a table that holds the cluster correspondence (mapping from the virtual cluster to the logical cluster) regarding the direction from the virtual cluster to the logical cluster.
- the page mapping table 413 is a table that holds the correspondence relationship between the virtual page 302 and the chunk page 60.
- the chunk mapping table 414 is a table that holds the correspondence between the chunk 303 and the chunk page 60 and the correspondence between the chunk page 60 and the stripe 52.
- the parcel mapping table 415 is a table that holds the correspondence between the parcel 41 and the stripe 52 and the correspondence between the parcel 41 and the zone 50.
- the correspondence relationship between the parcel 41 and the zone 50 may include the type of the zone 50 including the parcel 41 (whether it is a conventional zone or a sequential zone).
- the storage controller 110 can identify the correspondence relationship of the areas between the storage tiers by referring to at least one of these mapping tables (specifically, for example, areas (addresses) in a plurality of storage tiers can be identified.
- the final write destination or read source area for example, the stripe 52 or the parcel 41 can be specified).
- the RAID management table 416 holds information on the RAID configuration (RAID level) for each RAID group (for example, the SMR-HDD 51 number, parcel 41 number, RAID level, etc.).
- the write destination virtual page management table 417 is a table that holds information on the write destination virtual page (current write target virtual page 302) for each logical volume 151.
- the virtual page write pointer management table 418 is a table that holds information on a virtual page write pointer (relative position address in the virtual page 302) for each virtual page 302.
- the logical volume management table 419 is a table that holds capacity information for each logical volume 151.
- the SMR-HDD management table 420 is a table that holds information on the HDD number, zone size, parcel size, and unused area size for each SMR-HDD 51.
- the cache management table 421 is a table that holds the correspondence between cache slots (described later) and stripes 52.
- the temporary storage area management table 422 is a table that holds information regarding the stripe 52 used as a temporary storage area.
- the zone management table 423 is a table that holds information regarding the zone 50.
- the cache memory area 430 is composed of a plurality of cache slots. That is, the cache slot is a part of the cache memory area 430.
- FIG. 5 shows the correspondence relationship between the chunk 303 and the chunk page 60, and the correspondence relationship according to RAID5.
- the chunk 303 is composed of a plurality of parcels 41.
- the plurality of parcels 41 typically exist in a plurality of different SMR-HDDs 51, respectively.
- the chunk 303 can be regarded as a RAID group composed of a plurality of parcels 41. Because of RAID5, data stripes 52D and parity stripes 52P are mixed in each parcel 41. 5 and FIG. 6 and subsequent figures, for the stripe 52, the squares with numerals such as “1”, “2”, “3”,... Mean the data stripe 52D, and the description of “P”. A square with a means the parity stripe 52P.
- One chunk 303 includes a plurality (or one) of chunk pages 60.
- Each chunk page 60 is composed of a plurality of stripes 52.
- the plurality of stripes 52 are all data stripes 52D.
- Each chunk page 60 does not include the parity stripe 52P.
- FIG. 6 shows the correspondence between the chunk 303 and the chunk page 60 and the correspondence according to RAID4.
- RAID 4 is, for example, a RAID level (RAID configuration) employed in a parity generation method (2) described later.
- RAID4 all the stripes 52 in a certain parcel 41 are parity stripes 52P.
- a zone 50 including a certain parcel 41 may be a conventional zone 50C.
- FIG. 7 shows an example of address mapping
- the logical volume 151 is provided to the host 300.
- the logical volume 151 is composed of a plurality of logical pages 301.
- the size of the logical page 301 is a fixed size (for example, 42 MB).
- Each logical page 301 is composed of a plurality of logical clusters 701.
- the size of the logical cluster 701 is also a fixed size (for example, 8 KB).
- the virtual volume 141 is a so-called internal volume that is not directly provided to the host 300.
- the virtual volume 141 is composed of a plurality of virtual pages 302.
- the size of the virtual page 302 is also a fixed size (for example, 42 MB).
- Each virtual page 302 is composed of a plurality of virtual clusters 702.
- the size of the virtual cluster 702 may be a fixed size, but is a variable size in this embodiment.
- the size of the virtual cluster 702 is 512 B (bytes) ⁇ N (N is a natural number).
- the size of the virtual cluster may be smaller than the size of the logical cluster.
- the logical cluster 701 and the virtual cluster 702 are mapped by the cluster mapping table 411 and the cluster reverse mapping table 412.
- the logical cluster 701 and the virtual cluster 702 have a relationship of X: 1 (X is a natural number). X is greater than 1 if the logical cluster 701 is deduplicated into one virtual cluster 702.
- the mapping between the logical cluster 701 and the virtual cluster 702 can be called “cluster mapping”.
- One chunk page 60 is mapped to one virtual page 302.
- Statistical information such as the host 300 I / O frequency can be stored in at least one table on the memory 112 for each logical page 301 (or for each virtual page 302).
- the mapping between the virtual page 302 and the chunk page 60 can be referred to as “page mapping”.
- the storage controller 110 can identify the final read source area (for example, the stripe 52 or the parcel 41).
- the read source is specified in the read request received from the host 300 by the storage controller 110.
- the information indicating the read source includes, for example, a logical volume number and a logical address.
- the logical volume number is, for example, a LUN (Logical Unit Number).
- the logical address is, for example, an LBA (Logical Block Address).
- the final read source area can be specified in the following flow. (S1)
- the I / O control program 401 identifies the logical cluster 701 from the logical volume number and logical address as the read source.
- the offset of the logical address specified as the read source from the head address of the logical page 301 including the specified logical cluster 701 is also specified.
- the I / O control program 401 identifies the virtual cluster 702 corresponding to the identified logical cluster 701 by referring to the cluster mapping table 411.
- the I / O control program 401 refers to the page mapping table 413, and identifies the chunk page 60 assigned to the virtual page 302 including the identified virtual cluster 702.
- the I / O control program 401 specifies the data stripe 52D included in the specified chunk page 60 based on the chunk mapping table 414 and the specified offset.
- the I / O control program 401 refers to the parcel mapping table 415 to identify the parcel 41 including the identified data stripe 52D and the SMR-HDD 51 that provides the parcel 41.
- the I / O control program 401 transmits a read command specifying the address of the specified data stripe 52D to the specified SMR-HDD 51.
- Log-Structured light can be adopted.
- a Log-Structured light can be adopted as a light for the virtual page 302.
- old data (pre-update data) in the virtual page 302 is overwritten with new data (updated data) according to the Log-Structured write method.
- a free virtual cluster 702 (an example of a free area) in the virtual page 302 is secured, and new data is written to the secured free virtual cluster 702.
- the free virtual cluster 702 can be specified by a write pointer for the virtual page 302.
- a new virtual cluster 702 (virtual cluster in which new data is written) is used instead of the old virtual cluster 702. 702) are mapped.
- the old virtual cluster 702 that is, the virtual cluster 702 that is not mapped to any logical cluster 701
- Invalid data can also be called garbage data.
- Garbage data may be collected by a so-called garbage collection process. This is because if even one old virtual cluster 702 is included in the virtual page 302, the chunk page 60 remains mapped to the virtual page 302, and the assignable chunk page 60 may be insufficient. Garbage collection processing is performed in units of chunks 303.
- the garbage collection process is as follows, for example. That is, the storage controller 110 copies only valid data (new data) from the copy source chunk 303 to the copy destination chunk 303 (an empty (unused) chunk 303).
- the storage controller 110 discards invalid data from the copy source chunk 303 and manages the copy source chunk 303 as an empty chunk 303. Further, the storage controller 110, for each of the plurality of parcels 41 included in the empty chunk 303, with respect to the sequential zone 50S including the parcel 41, Zoned Block Command “RESET WRITE POINTER” (drive write pointer reset command) ), The drive write pointer of the sequential zone 50S is reset to the head (this updates a drive write pointer 1504 described later). As described above, in the SMR-HDD 51, the unit for resetting the write pointer (which can be rephrased as a unit for changing the used area in the SMR-HDD 51 to an empty (unused) area) is the zone 50. It is. In addition, since one chunk 303 is associated with a plurality of zones 50, the garbage collection process is inevitably executed in units of chunks 303 (for example, garbage collection in units of chunk pages 60). Processing cannot be performed).
- FIG. 8 shows the configuration of the logical volume management table 419.
- the logical volume management table 419 holds a logical volume number 801 and a capacity 802 for each logical volume 151.
- the logical volume number 801 represents the number of the logical volume 151.
- the capacity 802 represents the capacity (usable capacity) of the logical volume 151.
- FIG. 9 shows the configuration of the SMR-HDD management table 420.
- the SMR-HDD management table 420 holds an HDD number 901, a zone size 902, a parcel size 904, and an unused area size 905 for each SMR-HDD 51.
- the HDD number 901 represents the number of the SMR-HDD 51 having the zone 50.
- the zone size 902 represents the size of the zone 50.
- the zone type 903 represents the type of the zone 50 (conventional zone or sequential zone).
- the parcel size 904 represents the size of the parcel 41 included in the zone 50.
- the unused area size 904 represents the size of the unused area 53 included in the zone 50.
- the parcel size and the unused area size described in this table 420 are, for example, the sizes calculated by the area management program 402. These sizes are obtained from (Expression 2) described above based on the RAID management table 416 described above, for example.
- ctor is the smallest unit of the logical storage area of the HDD.
- the sector size is 512 bytes in a typical HDD.
- FIG. 10 shows the configuration of the cluster mapping table 411.
- the cluster mapping table 411 holds logical cluster identification information 1001 and virtual cluster identification information 1002 for each logical cluster 701.
- the logical cluster identification information 1001 is identification information of the logical cluster 701 and represents, for example, a logical volume number and an LBA for the logical volume 151.
- the virtual cluster identification information 1002 is identification information of the virtual cluster 702 mapped from the logical cluster 701, and represents the virtual volume 141 number, the LBA for the virtual volume 141, and the size of the virtual cluster 702, for example.
- FIG. 11 shows the configuration of the cluster reverse mapping table 412.
- the cluster reverse mapping table 412 holds virtual cluster identification information 1101 and logical cluster identification information 1102 for each virtual cluster 702.
- the configurations of the virtual cluster identification information 1101 and the logical cluster identification information 1102 are as described with reference to FIG.
- FIG. 12 shows the configuration of the cache management table 421.
- the cache management table 421 has a plurality of entries 1202 corresponding to a plurality of cache slots 1201. Specifically, the cache management table 421 has a queue for each cache status, and an entry 1202 corresponding to the cache status slot 1201 corresponding to the queue is connected to the queue.
- the cache status includes empty, clean, and dirty.
- An empty slot is a slot 1201 in which no data is stored.
- the clean slot is a slot 1201 in which only clean data (data already stored in the SMR-HDD 51) is stored.
- the dirty slot is a slot 1201 in which dirty data (data not stored in the SMR-HDD 51) is stored.
- Data stored in the cache memory area 430 such as clean data and dirty data can be called “cache data”.
- Cache data is classified as either upper cache data or lower cache data.
- dirty slots and clean slots can be classified into upper cache slots and lower cache slots.
- the upper cache slot is a slot corresponding to an area in the logical volume 151.
- the size of the upper cache slot is equal to or smaller than the stripe size.
- the lower cache slot is a slot corresponding to an area in the virtual volume 141.
- the size of the lower cache slot is equal to or smaller than the size of the stripe 52.
- a lower cache slot may correspond to one stripe 52.
- Clean slots and dirty slots are classified as either upper cache slots or lower cache slots as described above. On the other hand, empty slots are not classified as either upper cache slots or lower cache slots.
- the data in the upper cache slot is the upper cache data.
- the upper clean data which is the clean data as the upper cache data, is at least a part of the data in accordance with the write request from the host 300 and is already written in the virtual volume 141 or in accordance with the read request from the host 300.
- the data is at least a part of the data and is read from the virtual volume 141.
- the upper dirty data which is dirty data as the upper cache data, is data that is at least a part of data in accordance with a write request from the host 300 and has not yet been written to the virtual volume 141.
- the data in the lower cache slot is the lower cache data.
- the lower clean data which is clean data as the lower cache data, is data written from the logical volume 151 and already written to the PDEV (typically SMR-HDD 51) or read from the PDEV. It is data.
- the lower dirty data which is dirty data as lower cache data, is data written from the logical volume 151 and not yet written to the PDEV.
- the logical volume 151 is provided above the virtual volume 141 in order to realize the Log-Structured write for the virtual page 302, and accordingly, the cache management is performed by the upper management and the lower management. It is divided into and.
- compressed data can be stored in the lower cache slot.
- various lossless compression methods such as an algorithm based on a Huffman code can be used.
- FIG. 13 shows the configuration of the write destination virtual page management table 417.
- the write destination virtual page management table 417 has a logical volume number 1301 and a write destination virtual page number 1302 for each logical volume 151.
- the write destination virtual page number 1302 represents the page number corresponding to the write destination virtual page (the current write target virtual page 302) for the corresponding logical volume 151.
- the logical volume 151 and the write destination virtual page may correspond to 1: 1, many: 1, and many: many.
- FIG. 14 shows the configuration of the virtual page write pointer management table 418.
- the virtual page write pointer management table 418 holds a virtual page number 1401, a virtual page write pointer 1402, and a head flag 1403 for each virtual page 302.
- the virtual page number 1401 represents the number of the virtual page 302.
- a virtual page write pointer 1402 represents a virtual page write pointer of the virtual page 302 (relative position information in the virtual page 302).
- the head flag 1403 is a flag indicating whether or not the virtual page write pointer points to the head of the virtual page 302. Note that the head flag may be omitted, and in that case, it may be determined whether the head is pointed based on the value of the virtual page write pointer.
- FIG. 26 shows the configuration of the zone management table 423.
- the zone management table 423 holds an HDD number 1501, a zone number 1502, a zone type 1503, and a drive pointer 1504 for each zone 50.
- the HDD number 1501 represents the number of the SMR-HDD 51 including the zone 50.
- the zone number 1502 represents the zone 50 number.
- the zone type 1503 represents the type of the zone 50.
- the drive write pointer 1504 is address information indicating a write pointer in the sequential zone 50S. As the drive pointer 1504, the LBA of the SMR-HDD 51 is used. The drive write pointer 1504 is managed so that it matches the write pointer that the SMR-HDD 51 returns as a response to the REPORT ZONE command.
- the drive write pointer 1504 is updated when dirty data of the data stripe or parity stripe is destaged to the SMR-HDD 51 or in response to a RESET WRITE POINTER command issued in the garbage collection process.
- the drive write pointer 1504 need not be stored in the memory 112 for all the sequential zones 50S.
- a drive write pointer may be acquired from the SMR-HDD 51 and registered in the memory 112 as necessary.
- FIG. 15 shows the flow of the cache memory write process.
- the cache memory write process is a process for writing data to the cache memory area.
- the cache memory write process is started by the I / O control program 401 when the storage controller 110 receives a write request from the host 300.
- S1501 and S1502 are processes performed in response to a write request, that is, synchronous processes.
- S1503 to S1507 are processing different from processing performed in response to the write request, that is, asynchronous processing.
- Asynchronous processing is repeatedly executed as appropriate.
- the I / O control program 401 executes cache control for securing an upper cache slot for storing write data (data according to a write request) (S1501).
- the I / O control program 401 writes the write data to the upper cache slot, and sends a write completion report to the host 300 as a response to the write request (S1502).
- the I / O control program 401 determines whether or not a new write destination virtual page 302 is necessary (S1503). For example, if the size of the free area of any virtual page 302 in use is less than the size of the write data, the determination result in S1503 is true.
- “In-use virtual page 302” means the virtual page 302 specified by the write destination virtual page number 1302 of the write destination virtual page management table 417 corresponding to the write data. Based on the virtual page write pointer management table 418, the size of the free area of the virtual page 302 in use can be specified from the virtual page size and the virtual page write pointer 1402 corresponding to the virtual page 302 in use.
- the I / O control program 401 uses the virtual page 302 whose write pointer is the top of the virtual page (for example, the virtual page 302 whose top flag is “True”) as the write destination.
- the virtual page 302 is selected and the write destination virtual page management table 417 is updated (S1504).
- the I / O control program 401 secures a lower cache slot associated with the virtual cluster 702 according to the virtual page write pointer 1402 of the virtual page 302 (S1505).
- the I / O control program 401 copies the write data from the upper cache slot in which the write data was written in S1502 to the lower cache slot secured in S1505 (S1506).
- the I / O control program 401 uses the data in the cache stripe column including the lower cache slot to generate parity (S1507). Parity generation follows any one of parity generation methods (1) to (3) described later.
- S1503 If the determination result in S1503 is false (S1503: N), the I / O control program 401 skips S1504 and executes S1505 to S1507. In S1505, any in-use virtual page 302 whose free area size is equal to or larger than the write data size is the write destination.
- the deduplication process or the compression process may be executed in S1505 and S1506.
- the deduplication processing if the data in the logical cluster 701 is duplicate data, the cluster mapping is replaced.
- the deduplication process if the data in the logical cluster 701 is unique data (non-duplicate data), the data is written to the lower cache slot.
- the compression process the data of the logical cluster 701 is compressed when the data of the logical cluster 701 is written into the lower cache slot.
- the write destination logical cluster 701 (the logical cluster 701 corresponding to the LBA specified by the write request) is newly mapped to the virtual cluster 702, or the write destination logical cluster 701 has an old mapping destination.
- the virtual cluster 702 changes to the new virtual cluster 702. Further, the position of the virtual page write pointer for the virtual page 302 including the virtual cluster 702 that is the mapping destination of the write destination logical cluster 701 also advances by the size of the write data. Accordingly, the I / O control program 401 updates the cluster mapping table 411 and the cluster reverse mapping table 412 and updates the virtual page write pointer management table 418.
- the page mapping table 413 is also updated. That is, the correspondence between the new virtual page 302 and the chunk page 60 assigned to the virtual page 302 is registered in the page mapping table 413.
- FIG. 27 shows the flow of destage processing.
- the destage process is a process of storing data from the cache memory area to the SMR-HDD 51.
- the I / O control program 401 selects the dirty data to be destaged (S2701). For dirty data whose storage destination is a sequential zone, the I / O control program 401 first selects dirty data having a smaller storage destination address for each sequential zone. This is because when a plurality of dirty data is stored in a sequential zone, the plurality of dirty data needs to be written sequentially.
- the I / O control program 401 destages the dirty data selected in S2701 to the SMR-HDD 51 (S2702).
- the storage destination (destage destination) is a sequential zone
- the dirty data selected in S2701 is written in ascending order of the storage destination address from the address indicated by the drive write pointer 1504 corresponding to the sequential zone.
- the drive write pointer 1504 is updated.
- the destage target is parity
- the generated parity is destaged after the parity is generated.
- the destaging target is user data (data based on parity)
- the user data may be destaged after parity generation, or parity generation may be performed after destaging user data.
- FIG. 16 shows the flow of read processing.
- the read process is started by the I / O control program 401 when the storage controller 110 receives a read request from the host 300.
- the I / O control program 401 executes cache control for searching for an upper cache slot storing read data (data according to a read request) (S1601).
- the I / O control program 401 determines whether read data exists in the upper cache slot (S1602).
- the I / O control program 401 transmits the read data in the upper cache slot to the host 300 (S1607).
- the I / O control program 401 executes cache control for searching for a lower cache slot storing read data (S1603).
- the I / O control program 401 determines whether read data exists in the lower cache slot (S1604). If the determination result in S1604 is true (S1604: Y), the I / O control program 401 copies the read data from the lower cache slot to the upper cache slot (S1606), and the read data in the upper cache slot is transferred to the host 300. (S1607).
- the I / O control program 401 executes staging control that secures a lower cache slot and reads read data from the SMR-HDD 51 in the lower cache slot (S1605). Thereafter, the I / O control program 401 executes S1606 and S1607.
- parity generation is a data operation on the cache memory area. Therefore, hereinafter, the area corresponding to the data stripe in the stripe string and the area in the cache stripe string is referred to as “cache data stripe”, and the area corresponding to the parity stripe in the stripe string and corresponding to the parity stripe in the cache stripe string. The area is called “cache parity stripe”.
- FIG. 17 is a schematic diagram of an outline of the parity generation method (1).
- the parity generation method (1) is a method in which a read-modify-write method in which user data is read from one of the data stripes 52D in the stripe column to the cache memory area and the user data is updated to update the parity does not occur.
- the parity is updated when the user data is updated.
- the parity generation method (1) may be employed particularly when the zone 50 including the parity stripe 52P is the sequential zone 50S. Therefore, for example, if the RAID level of the chunk 300 including the target stripe row is RAID 5, all the zones 50 including all the parcels 41 constituting the chunk 300 are sequential zones 50S. Further, for example, if the RAID level of the chunk 300 including the target stripe row is RAID 4, at least one zone 50 of the parcels 41 constituting the chunk 300 is a sequential zone 50S.
- parity (P) is generated based on all user data in the cache stripe column.
- an area corresponding to one stripe 52 and in the cache memory area can be called a “cache stripe”. Since the stripe 52 is a fixed size, the cache stripe is also a fixed size. The size of the cache stripe is P times the size of the cache slot 1201 (P is a natural number).
- P is a natural number.
- FIG. 18 shows a flow of parity generation processing according to the parity generation method (1).
- the I / O control program 401 sets the parity in the cache memory area 430 based on all the user data. Is generated (S1803). That is, the parity created based on all the user data is stored in the parity stripe 1701P.
- the I / O control program 401 does not write at least one user data to all the cache data stripes 1701D in the cache stripe column (S1801: N)
- the other conditions for generating the parity are satisfied (S1802: Y)
- parity is generated on the cache memory area 430 (S1803).
- other conditions for example, when the empty slots are depleted in the cache memory area 430 (for example, when the number of empty slots becomes less than the threshold)
- the power supply to the storage system 100 is cut off and the memory At least one of the cases where 112 is operating on a battery, the storage system 100 is turned off, the duplication of dirty data is not maintained due to a failure of one of the duplicated memories 112 It's okay.
- the I / O control program 401 writes zero data (data in which all bits are 0) to the unwritten area (area indicated by the drive write pointer 1504) of the data stripe 52D in the stripe string, and then writes it to the stripe string.
- Parity may be generated based on all corresponding user data (for example, parity is generated using the ASIC 116), and the generated parity may be written in the parity stripe 52P. Note that the drive write pointer 1504 and the virtual page write pointer 1402 are updated by the amount of the written zero data.
- FIG. 19 is a schematic diagram of the outline of the parity generation method (2).
- parity generation method (2) before all the user data corresponding to the stripe column is written to the cache stripe column, the parity is generated based on the user data in the cache stripe column, and the parity is written to the parity stripe 52P.
- parity may be generated based on all the user data, and the parity may be written to the parity stripe 52P.
- the parity generation “before all user data corresponding to the stripe column is written to the cache stripe column” may be a parity update according to the read-modify-write method or a parity update according to the all-stripe write method. . Note that an unwritten area of the data stripe 52D needs to be regarded as zero data (data whose bit values are all 0).
- the zone 50 including the parity stripe 52P is the conventional zone 50C.
- the parity generation method (2) can be adopted when all the stripes 52 included in a certain parcel 41 are parity stripes 52P as in RAID4 (FIG. 6), for example.
- the conventional zone 50C is employed as the zone 50 including the. Even if not all the stripes 52 constituting a certain parcel 41 are parity stripes 52P, the parity generation method (2) may be employed when the zone 50 including the parity stripes 52P is the conventional zone 50C.
- the parity generation method (2) can be adopted at any RAID level other than RAID 4 as long as the parity level does not scatter and store parity.
- RAID 1 is a RAID level that does not scatter and store parity.
- the parity stripe 52P is a stripe 52 based on a PDEV (typically a normal HDD or SSD) that provides a randomly writable logical area.
- the PDEV on which the parity stripe 52P is based may be, for example, a flash memory device.
- FIG. 20 is a schematic diagram of the outline of the parity generation method (3).
- a temporary storage area 2001 used as a temporary parity stripe 52P is prepared.
- the temporary storage area 2001 is provided in the cache memory area 430, for example.
- one temporary storage area 2001 is provided for one chunk 303 (that is, one RAID group), but one temporary storage area 2001 may be provided for a plurality of chunks 303.
- the temporary storage area 2001 is associated with a PDEV 2002 (for example, SMR-HDD 51) that provides a randomly writable logical area (for example, the conventional zone 50C).
- the parity in the temporary storage area 2001 is appropriately stored in a randomly writable logical area provided by the PDEV 2002 (destage). That is, as a destaging destination of the parity in the temporary storage area 2001, the random storage writable logical area is associated with the temporary storage area 2001.
- the parity generation method (3) before all the user data corresponding to the stripe column is written to the cache stripe column, the parity is generated based on the user data in the cache stripe column, and the parity is stored in the temporary storage area. Stored in 2001. After all user data corresponding to the stripe column is written to the cache stripe column, parity is generated based on all the user data, and after the parity is written to the temporary storage area 2001, the temporary storage area The parity in 2001 is written to the cache parity stripe 1701P.
- correction copy or correction read can be performed using the parity in the temporary storage area 2001. It can be determined from the drive write pointer 1504 whether data has not been written in the parity in the stripe column. Specifically, whether or not data has been written to the parity in the stripe column corresponds to whether or not the LBA at the end of the parity stripe is exceeded. In other words, if dirty data corresponding to the parity in the cache stripe column exists in the cache memory area, correction copy or the like may be executed using the dirty data. If dirty data corresponding to the parity in the cache stripe column does not exist in the cache memory area, but data has been written to the parity in the stripe column, correction copy or the like may be executed using the parity.
- any of the following (3-1) to (3-3) can be adopted.
- (3-1) The destage destination area corresponding to the temporary storage area 2001 is an area in the conventional zone 50C of the SMR-HDD 51.
- the destage-destination PDEV 2002 corresponding to the temporary storage area 2001 is a PDEV other than the SMR-HDD 51.
- a flash memory device is employed as such a PDEV.
- (3-3) There is no destage destination PDEV corresponding to the temporary storage area 2001.
- FIG. 21 shows the configuration of the temporary storage area management table 422.
- the temporary storage area management table 422 holds a chunk number 2101, disk position information 2102, and cache position information 2103 for each temporary storage area 2001.
- the chunk number 2101 is the number of the chunk 303 corresponding to the temporary storage area 2001.
- the disk position information 2102 is an area corresponding to the temporary storage area 2001 and is information indicating the position of the area in the PDEV corresponding to the temporary storage area 2001.
- the disk position information 2102 is, for example, a combination of a parcel number and an address in the parcel 41.
- the cache position information 2103 is an area corresponding to the temporary storage area 2001 and is information indicating the position of the area in the cache memory area 430.
- the cache position information 2103 is, for example, a cache address.
- parity generation method (3) the read-modify-write method and the all-stripe write method are selectively adopted.
- the flow of parity generation processing according to the parity generation method (3) will be described, but before that, the read-modify-write method and the all-stripe write method will be described.
- user data is represented as “D”
- parity is represented as “P”.
- a new P is generated using D1 (new D1 or old D1), D2 (new D2 or old D2) and D3 (new D3 or old D3).
- D1 new D1 or old D1
- D2 new D2 or old D2
- D3 new D3 or old D3
- New P (old D1) XOR (old D2) XOR (new D3)
- FIG. 22 shows the flow of parity generation processing according to the parity generation method (3).
- the read-modify-write method is expressed as “RMW”
- the all-stripe write method is expressed as “ASW”.
- D1, D2, D3, and P are stored in the target stripe column.
- the I / O control program 401 initializes the temporary storage area 2001 (S2201). Specifically, for example, the I / O control program 401 stores the parity (initial value) in the temporary storage area 2001 when it is assumed that the data in all the data stripes 52D in the stripe column is zero data. .
- the I / O control program 401 refers to the virtual page write pointer management table 418 and determines whether or not the write pointer for the write destination virtual page 302 exceeds the end of the stripe column (S2202).
- the I / O control program 401 determines which of RMW and ASW is selected (S2203).
- S2203 a method is selected that minimizes the number of disk accesses (the number of accesses to the SMR-HDD 51) based on the number of user data existing in the cache memory area 430. This is because the number of disk accesses differs depending on whether RMW or ASW is used. For example, if new D1, new D2, and new D3 exist in the cache area, it is preferable to select ASW. This is because parity can be generated without causing disk access.
- the I / O control program 401 When RMW is selected in S2203 (S2203: RMW), the I / O control program 401 generates a parity based on the parity in the temporary storage area 2001 according to the RMW, and the generated parity is used as a cache parity stripe 1701P. (S2204).
- the I / O control program 401 When ASW is selected in S2203 (S2203: ASW), the I / O control program 401 generates parity based on all user data in the cache stripe column in accordance with ASW, and the generated parity is cached. It is stored in the parity stripe 1701P (S2205).
- the I / O control program 401 determines which of RMW and ASW to select (S2206).
- S2206 as in S2203, the method that minimizes the number of disk accesses is selected based on the number of user data existing in the cache memory area 430.
- the I / O control program 401 When the RMW is selected in S2206 (S2206: RMW), the I / O control program 401 generates a parity based on the parity in the temporary storage area 2001 according to the RMW, and the generated parity is stored in the temporary storage area 2001. Store (S2207).
- the I / O control program 401 When ASW is selected in S2206 (S2203: ASW), the I / O control program 401 generates parity based on the user data in the cache stripe column in accordance with ASW, and the generated parity is temporarily stored in the storage area. It is stored in 2001 (S2208).
- FIG. 23 shows the flow of the available capacity reporting process. This processing is started by the area management program 402 when the storage controller 110 receives a capacity inquiry from the host 300.
- the area management program 402 calculates the total size of the data stripe 52D (S2301), and reports the calculated total size to the host 300 as an available capacity (S2302). In other words, the usable capacity does not include the capacity of the unused area 53 in the zone 50. Further, the calculation of S2301 may be the calculation of (Equation 1) described above.
- 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. 24 shows an example of a storage hierarchy according to the second embodiment.
- a RAID group composed of a plurality of SMR-HDDs 51 is employed as the RAID group.
- Example 3 will be described. At that time, the differences from the first and second embodiments will be mainly described, and the description of the common points with the first and second embodiments will be omitted or simplified.
- FIG. 25 illustrates an example of address mapping according to the third embodiment.
- the virtual volume 141 does not exist under the logical volume 151.
- a lower cluster 2501 that is a partial area in the chunk page 60 is allocated to the logical cluster 701.
- Log-Structured storage is performed on the chunk page 60. All parcels constituting a chunk including the chunk page 60 in which Log-Structured storage is performed may be parcels included in the sequential zone.
- the correspondence relationship between the logical cluster 701 and the lower cluster 2501 is managed by a cluster mapping table (however, the virtual cluster identification information 1002 is replaced with the lower cluster identification information).
- the size of the lower cluster 2501 may be an integer multiple of a block (for example, 512B).
- the size of the lower cluster 2501 may be variable.
- the RAID group is a RAID group according to the distributed RAID described with reference to FIG. 3 (that is, a RAID group configured by a plurality of parcels 41 respectively existing in a plurality of different SMR-HDDs 51).
- it may be a normal RAID group (RAID group composed of a plurality of HDDs) described with reference to FIG.
- a continuous logical storage area called a zone is defined.
- a storage area including at least a part of a zone is allocated to the logical volume provided by the storage system. Therefore, at least one of the following problems can be considered.
- the write destination of the allocated page may exceed the write pointer of the sequential zone that is the basis of the page.
- the plurality of PDEVs included in the storage system 100 are typically a plurality of SMR-HDDs 51.
- the plurality of PDEVs are PDEVs other than the plurality of SMR-HDDs 51, for example, normal HDDs and SDDs. Two or more PDEVs that provide a randomly writable logic area may be included.
- the storage controller 110 provides the size of the parcel 41 provided as the area including the stripe 52, the size of the zone 50 including the parcel 41, and the chunk that is the logical area including the stripe 52 associated with the virtual page 302 or the logical page 301. This is determined based on the size of the page 60 and the number of data stripes (the number of data stripes 52D in one stripe column) according to the RAID level of the chunk (RAID group) including the parcel 41.
- the parcel size is smaller than the zone size, a difference between the zone 50 and the parcel 41 becomes an unused area 53 (an area in which neither user data nor parody is stored). Specifically, the parcel size is determined according to the above (Equation 2).
- the storage controller 110 executes writing according to the all stripe write method for the stripe columns associated with the parity stripes 52P included in the sequential zone 50S.
- the storage controller 110 adopts the conventional zone 50C as the zone 50 including the parity stripe 52P.
- the storage controller 110 stores the parity in the temporary storage area 2001 until all user data in the cache stripe column is updated. Store (save).
- the storage controller 110 uses the old user data, the new user data, and the old parity (parity in the temporary storage area 2001). Parity is generated and the new parity is stored in the temporary storage area 2001.
- the storage controller 110 stores new parity based on all the new user data in the parity stripe 52P.
- the temporary storage area 2001 may be provided on the cache memory area 430.
- the destage destination of the temporary storage area 2001 is a PDEV that provides a logical area in which random writing is possible.
- the “random-writable logical area” is, for example, a logical area provided by a conventional zone 50C in the SMR-HDD 51 or a random-writable PDEV such as an SSD or a normal HDD.
- the storage controller 110 selects the virtual page 302 whose write pointer points to the first LBA of the virtual page 302 as the virtual page 302 allocated to the logical volume 151, and allocates the selected virtual page 302 to the logical volume 151. That is, if the storage controller 110 can write the write data to at least one halfway write virtual page 302 (virtual page 302 whose write pointer does not point to the first LBA), the storage controller 110 writes to the halfway write virtual page 302. Append data. In other words, the storage controller 110 suppresses newly assigning the virtual page 302 to the logical volume 151 as long as the write data can be written to at least one halfway write virtual page 302. In an embodiment in which the virtual volume 141 does not exist, the virtual page 302 can be read as the chunk page 60, and the chunk page write pointer may be managed for each chunk page 60.
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
本発明は、概して、記憶制御に関し、例えば、SMR(Shingled Magnetic Recording)-HDD(Hard Disk Drive)を有するストレージシステムの記憶制御に関する。 The present invention generally relates to storage control, for example, storage control of a storage system having SMR (Shingled Magnetic Recording) -HDD (Hard Disk Drive).
         
 ストレージシステムとして、例えば、特許文献1及び2に開示のストレージシステムが知られている。
As a storage system, for example, storage systems disclosed in 
          
ユーザが保持又は利用するデータの増加に伴い、ストレージシステムに搭載するPDEV(物理記憶デバイス)の容量拡大が求められている。PDEVは、典型的には、不揮発性の記憶デバイスであり、PDEVの一例として、HDD(Hard Disk Drive)がある。通常のHDDよりも記憶容量の大きいHDDとして、SMR(Shingled Magnetic Recording)技術が適用されたHDD、つまり、SMR-HDDが知られている。HDDは、将来的にも比較的安価であることが継続する見通しであり、このことから、SMR-HDDをPDEVとして備えるストレージシステムが考えられる。 As the data held or used by users increases, the capacity of the PDEV (physical storage device) installed in the storage system is required to be increased. A PDEV is typically a non-volatile storage device, and an example of a PDEV is an HDD (Hard Disk Drive). As an HDD having a larger storage capacity than a normal HDD, an HDD to which an SMR (Shingled Magnetic Recording) technology is applied, that is, an SMR-HDD is known. The HDD is expected to continue to be relatively inexpensive in the future, and from this, a storage system including the SMR-HDD as a PDEV is conceivable.
SMR-HDDの特徴の1つによれば、SMR-HDDには、ゾーンと呼ばれる連続した論理領域が予め定義されている。ゾーンとしては、ランダムライトが可能であるコンベンショナルゾーンを定義することもできるが、SMRに従うライトのためには、ランダムライトが不可能である(つまりライトについてはシーケンシャルライトのみが可能である)シーケンシャルゾーンを定義する必要がある。具体的には、例えば、コンベンショナルゾーンは、コンベンショナルなコマンド(典型的にはSCSI Block Command)によりサポートできる。しかし、シーケンシャルゾーンは、コンベンショナルなコマンドによってはサポートできず、拡張コマンドの一例であるSMR最適化コマンド(Zoned Block Command)によってサポートできる。 According to one of the features of the SMR-HDD, a continuous logical area called a zone is defined in advance in the SMR-HDD. As a zone, a conventional zone in which random writing is possible can be defined, but a sequential writing in which random writing is not possible (that is, only sequential writing is possible for writing) is possible for writing according to SMR. Need to be defined. Specifically, for example, the conventional zone can be supported by a conventional command (typically, SCSI Block Command). However, the sequential zone cannot be supported by a conventional command, but can be supported by an SMR optimization command (Zoned Block Command) which is an example of an extended command.
PDEVとしてSMR-HDDが採用されれば、SMR-HDDに基づく論理領域を、ストレージシステムのホストシステム(1以上のホスト計算機)に提供される論理ボリュームに直接的に又は間接的に割り当てることができる。しかし、論理ボリュームに割り当てられる論理領域の基になる記憶領域としてシーケンシャルゾーンを採用した技術は知られていない。 If SMR-HDD is adopted as PDEV, a logical area based on SMR-HDD can be directly or indirectly allocated to a logical volume provided to a host system (one or more host computers) of a storage system. . However, there is no known technique that employs a sequential zone as a storage area that is the basis of a logical area allocated to a logical volume.
SMR-HDDに限らず、シーケンシャルゾーンが定義された他種のゾーン提供記憶デバイス(PDEV)もあり得る。上述の問題は、SMR-HDDに限らず、シーケンシャルゾーンが定義された他種のゾーン提供記憶デバイスがストレージシステムに搭載されるPDEVとして採用された場合にもあり得る。 Not limited to SMR-HDD, there may be other types of zone providing storage devices (PDEVs) in which sequential zones are defined. The above-described problem is not limited to SMR-HDD, but may be a case where another type of zone providing storage device in which a sequential zone is defined is adopted as a PDEV installed in the storage system.
ストレージシステムは、1以上のチャンクのうちの少なくとも1つのチャンクである第1のチャンクを、2以上のゾーン提供記憶デバイスが提供する2以上のゾーンを用いて構成する場合、前記2以上のゾーンの各々について、前記第1のチャンクに基づく2以上のチャンクページとアラインする領域を、チャンクの構成要素であるパーセルとする。ストレージステムは、第1のチャンクに基づく2以上のチャンクページのうちの少なくとも1つのチャンクページを論理ボリュームに直接的に又は間接的に割り当てる。「間接的に割り当てる」とは、チャンクページの割当て先領域を経由してチャンクページが論理ボリュームに割り当てられることを意味する。「割当て先領域」の一例が、後述の仮想ページである。「直接的に割り当てる」とは、チャンクページがいずれの割当て先領域を経由せずにチャンクページが論理ボリュームに割り当てられることを意味する。 When the storage system is configured by using two or more zones provided by two or more zone providing storage devices, the first chunk, which is at least one of the one or more chunks, is configured using the two or more zones. For each, an area aligned with two or more chunk pages based on the first chunk is a parcel that is a component of the chunk. The storage system allocates at least one of the two or more chunk pages based on the first chunk directly or indirectly to the logical volume. “Indirect allocation” means that a chunk page is allocated to a logical volume via an allocation destination area of the chunk page. An example of the “allocation destination area” is a virtual page described later. “Direct allocation” means that the chunk page is allocated to the logical volume without passing through any allocation destination area.
ゾーン提供記憶デバイスが提供するゾーンに基づく論理領域を適切に論理ボリュームに割り当てることができる。 A logical area based on a zone provided by a zone providing storage device can be appropriately allocated to a logical volume.
        
以下、幾つかの実施例を説明する。 Hereinafter, some examples will be described.
なお、以下の説明では、「インターフェース部」は、1以上のインターフェースを含む。1以上のインターフェースは、1以上の同種のインターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし2以上の異種のインターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。 In the following description, 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.
また、以下の説明では、「記憶部」は、1以上のメモリを含む。少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。記憶部は、主に、プロセッサ部による処理の際に使用される。 In the following description, the “storage unit” includes one or more memories. The at least one memory may be a volatile memory or a non-volatile memory. The storage unit is mainly used during processing by the processor unit.
また、以下の説明では、「プロセッサ部」は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)である。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。 In the following description, 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.
また、以下の説明では、「xxxテーブル」といった表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。 In the following description, 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”. In the following description, 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.
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶部(例えばメモリ)及び/又はインターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主語が、プロセッサ(或いは、そのプロセッサを有する装置又はシステム)とされてもよい。また、プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な(例えば非一時的な)記録媒体であってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。 In the following description, the process may be described using “program” as a subject. However, the program is executed by a processor (for example, a CPU (Central Processing Unit)), so that a predetermined processing is appropriately performed. Since the processing is performed using a storage unit (for example, a memory) and / or an interface device (for example, a communication port), the subject of processing may be a processor (or an apparatus or system having the processor). The processor may include a hardware circuit that performs a part or all of the processing. The program may be installed in a computer-like device from a program source. The program source may be, for example, a recording medium (for example, non-transitory) readable by a program distribution server or a computer. In the following description, two or more programs may be realized as one program, or one program may be realized as two or more programs.
また、以下の説明では、「ホストシステム」は、1以上の物理的なホスト計算機(例えばホスト計算機のクラスタ)であってもよいし、少なくとも1つの仮想的なホスト計算機(例えばVM(Virtual Machine))を含んでもよい。以下、ホストシステムを、単に「ホスト」と呼ぶ。 In the following description, the “host system” may be one or more physical host computers (for example, a cluster of host computers), or at least one virtual host computer (for example, VM (Virtual Machine)). ) May be included. Hereinafter, the host system is simply referred to as “host”.
また、以下の説明では、「ストレージシステム」は、1以上の物理的なストレージ装置であってもよいし、少なくとも1つの仮想的なストレージ装置(例えばLPAR(Logical Partition)又はSDS(Software Defined Storage))を含んでもよい。 In the following description, the “storage system” may be one or more physical storage devices, or at least one virtual storage device (for example, LPAR (Logical Partition) or SDS (Software Defined Storage). ) May be included.
また、以下の説明では、「PDEV」は、物理的な記憶デバイスを意味し、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)である。以下の実施例では、PDEVは、典型的には、SMR-HDDである。しかし、SMR-HDDに限らず、他種のPDEV、特に、予めシーケンシャルゾーンが定義された他種のPDEVも、本発明に適用できる。 In the following description, “PDEV” means a physical storage device, and is typically a nonvolatile storage device (for example, an auxiliary storage device). In the following embodiments, the PDEV is typically an SMR-HDD. However, not only the SMR-HDD but also other types of PDEVs, in particular, other types of PDEVs in which sequential zones are defined in advance, can be applied to the present invention.
また、以下の説明では、「RAID」は、Redundant Array of Independent (or Inexpensive) Disksの略である。 Also, in the following description, “RAID” is an abbreviation for Redundant “Array” of “Independent” (or “Inexpensive)” Disks.
また、以下の説明では、「RAIDグループ」は、複数のSMR-HDDで構成され関連付けられたRAIDレベル(RAID構成)に従いデータを記憶するグループでもよいし、複数のパーセル(後述)で構成され関連付けられたRAIDレベル(RAID構成)に従いデータを記憶するグループでもよい。後者のグループは、後述するように、実施例では「チャンク」と呼ばれることがある。 In the following description, the “RAID group” may be a group that stores data according to a RAID level (RAID configuration) configured and associated with a plurality of SMR-HDDs, or is configured and associated with a plurality of parcels (described later). It may be a group that stores data according to a specified RAID level (RAID configuration). The latter group may be called “chunk” in the embodiment, as will be described later.
         
 また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号(又は参照符号における共通部分)を使用し、同種の要素を区別して説明する場合は、要素のID(又は要素の参照符号)を使用することがある。例えば、SMR-HDDを特に区別しないで説明する場合には、「SMR-HDD51」と記載し、個々のSMR-HDDを区別して説明する場合には、「SMR-HDD1-1」のように記載することがある。
Moreover, in the following description, when explaining without distinguishing the same kind of element, a reference code (or a common part in the reference sign) is used, and when explaining the same kind of element separately, the element ID (or Element reference signs) may be used. For example, “SMR-
また、以下の説明では、要素の識別子として主に番号が使用されるが、番号に代えて又は加えて他種の符号が使用されてもよい。 In the following description, numbers are mainly used as element identifiers, but other types of codes may be used instead of or in addition to numbers.
         
 また、以下の実施例における複数種類の記憶領域の各々の定義は、下記の通りである。
・「ゾーン」とは、SMR-HDDに予め定義されている記憶領域である。ゾーンは、連続した論理アドレス(典型的にはLBA(Logical Block Address))に従う連続した論理的な記憶領域である。ゾーンは、SMR-HDDに対するコマンドによりサポート(操作)可能である。例えば、或る制御コマンドにより、ゾーンの容量が記述された応答を取得することが可能である。複数のゾーンが、1つのSMR-HDDに存在する。なお、SMR-HDDにおいていずれのゾーンのサイズも同じである。
・「パーセル」とは、ゾーンの全部又は一部である。
・「ストライプ」とは、パーセルの一部である。1つのSMR-HDDにおける複数のストライプが、そのSMR-HDDにおける1つのパーセルを構成する。ストライプに、そのストライプを含んだストライプ列(後述)に対応したデータユニットの一部分であるユーザデータと、そのデータユニットに対応したパリティとのうちのいずれかが格納される。ユーザデータが格納されるストライプを「データストライプ」と言うことができ、パリティが格納されるストライプを「パリティストライプ」と言うことができる。「データユニット」は、ストライプ列単位のデータを意味する。
・「チャンク」とは、複数のSMR-HDDに存在する複数のパーセルで構成された記憶領域である。従って、チャンクは、複数のストライプを含む。その複数のストライプには、データストライプもパリティストライプも存在する。
・「チャンクページ」とは、複数のSMR-HDDに存在する複数のデータストライプで構成された記憶領域である。別の言い方をすれば、チャンクページは、複数のストライプで構成されるが、その複数のストライプは、いずれもデータストライプであり、パリティストライプを含まない。
・「ストライプ列」とは、1つのRAIDグループを構成する複数のSMR-HDD領域にそれぞれ存在する同一アドレスの複数のストライプで構成された記憶領域である。
・「キャッシュストライプ列」とは、ストライプ列に対応した記憶領域であってキャッシュメモリ領域上の記憶領域である。キャッシュストライプ列内のデータが、そのキャッシュストライプ列に対応したストライプ列に格納(デステージ)される。
・「論理ボリューム」とは、ホストに認識される論理的な記憶領域である。
・「論理ページ」とは、論理ボリュームの一部である。論理ボリュームは、複数の論理ページで構成される。
・「論理クラスタ」とは、論理ページの一部である。論理ページは、複数の論理クラスタで構成される。
・「仮想ボリューム」とは、いわゆる容量拡張ボリュームであり、典型的には、Thin Provisioningに従う論理的な記憶領域である。仮想ボリュームは、論理ボリュームに関連付けられる内部ボリューム(ホストに提供されないボリューム)である。
・「仮想ページ」とは、仮想ボリュームの一部である。仮想ボリュームは、複数の仮想ページで構成される。
・「仮想クラスタ」とは、仮想ページの一部である。仮想ページは、複数の仮想クラスタで構成される。
In addition, the definitions of the plurality of types of storage areas in the following embodiments are as follows. 
 “Zone” is a storage area defined in advance in the SMR-HDD. A zone is a continuous logical storage area according to continuous logical addresses (typically LBA (Logical Block Address)). The zone can be supported (operated) by a command for the SMR-HDD. For example, a response describing the capacity of a zone can be acquired by a certain control command. A plurality of zones exist in one SMR-HDD. Note that the size of any zone in the SMR-HDD is the same. 
 “Parcel” means all or part of a zone. 
 “Stripes” are parts of parcels. A plurality of stripes in one SMR-HDD constitute one parcel in the SMR-HDD. In the stripe, either user data that is a part of a data unit corresponding to a stripe column (described later) including the stripe, or parity corresponding to the data unit is stored. A stripe in which user data is stored can be referred to as a “data stripe”, and a stripe in which parity is stored can be referred to as a “parity stripe”. “Data unit” means data in stripe columns. 
 “Chunk” is a storage area composed of a plurality of parcels existing in a plurality of SMR-HDDs. Accordingly, the chunk includes a plurality of stripes. The plurality of stripes include a data stripe and a parity stripe. 
 A “chunk page” is a storage area composed of a plurality of data stripes existing in a plurality of SMR-HDDs. In other words, the chunk page is composed of a plurality of stripes, but each of the plurality of stripes is a data stripe and does not include a parity stripe. 
 A “stripe column” is a storage area composed of a plurality of stripes of the same address respectively existing in a plurality of SMR-HDD areas constituting one RAID group. 
 The “cache stripe column” is a storage area corresponding to the stripe column and a storage area on the cache memory area. Data in the cache stripe column is stored (destaged) in a stripe column corresponding to the cache stripe column. 
 “Logical volume” is a logical storage area recognized by the host. 
 A “logical page” is a part of a logical volume. A logical volume is composed of a plurality of logical pages. 
 A “logical cluster” is a part of a logical page. A logical page is composed of a plurality of logical clusters. 
 The “virtual volume” is a so-called capacity expansion volume, and is typically a logical storage area according to Thin Provisioning. The virtual volume is an internal volume (a volume not provided to the host) associated with the logical volume. 
 A “virtual page” is a part of a virtual volume. A virtual volume is composed of a plurality of virtual pages. 
 A “virtual cluster” is a part of a virtual page. The virtual page is composed of a plurality of virtual clusters.
      
図1は、実施例1の概要図である。 FIG. 1 is a schematic diagram of the first embodiment.
           
 複数のSMR-HDD51が存在する。各SMR-HDD51は、ゾーン提供記憶デバイスの一例である。各SMR-HDD51は、複数のゾーン50を提供する。ゾーン50として、少なくともシーケンシャルゾーン50Sがある。コンベンショナルゾーン50Cがあってもよい。コンベンショナルゾーン50Cは、ランダムライトが可能であるゾーンである。一方、シーケンシャルゾーン50Sは、ランダムライトが不可能なゾーン、言い換えれば、ライトについてはシーケンシャルライトのみが可能であるゾーンである。本実施例では、コンベンショナルゾーン50Cは、コンベンショナルなコマンドの一例であるSCSI Block Commandによりサポートできる。一方、シーケンシャルゾーン50Sは、コンベンショナルなコマンドによってはサポートできず、拡張コマンドの一例であるSMR最適化コマンド(Zoned Block Command)によってサポートされる。
There are multiple SMR-
           
 各ゾーン50は、パーセル41を含む。パーセル41は、そのパーセル41を有するSMR-HDD51が提供する複数のストライプ52で構成される。ストライプ52のサイズは、例えば512KBである。
Each zone 50 includes a 
           
 複数のSMR-HDD51に基づき複数のチャンクページ60が提供される。各チャンクページ60は、そのチャンクページ60を提供する複数のSMR-HDD51がそれぞれ提供する複数のストライプ52で構成される。
A plurality of 
           
 本実施例によれば、少なくとも1つのシーケンシャルゾーン50Sに、不使用領域53が設けられ得る。つまり、少なくとも1つのシーケンシャルゾーン50Sは、パーセル41と不使用領域53とで構成され得る。言い換えれば、シーケンシャルゾーン50Sの全域を使い切るのではなく(複数のストライプ52として提供するのではなく)、シーケンシャルゾーン50Sの一部の領域は、不使用領域53として定義され得る。「不使用領域」とは、有効な記憶領域としては使用されない記憶領域である。別の言い方をすれば、不使用領域のいずれの部分も、ストライプ52の少なくとも一部として提供されない(使用されない)。従って、不使用領域53には、ユーザデータもパリティも格納されない。
According to the present embodiment, the 
           
 本実施例によれば、ストレージシステムの使用可能容量は、以下の定義となる。なお、「使用可能容量」は、ユーザデータを格納可能な領域の容量であり、パリティを格納可能な領域の容量を含まない。また、典型的には、ゾーン50のサイズ(例えばシーケンシャルゾーン50Sのサイズ)は、ページサイズより大きい。また、以下の定義では、RAIDレベルを、mD+nPとする(mは自然数。nは0以上の整数)、すなわち、1つのストライプ列が、m個のデータストライプとn個のパリティストライプで構成されているとする。
使用可能容量
=データストライプ合計容量
=パーセルサイズ×m÷(m+n)×パーセル数・・・・(式1)
According to the present embodiment, the usable capacity of the storage system is defined as follows. The “usable capacity” is the capacity of an area where user data can be stored, and does not include the capacity of an area where parity can be stored. Typically, the size of the zone 50 (for example, the size of the 
 Usable capacity = total data stripe capacity = parcel size x m / (m + n) x number of parcels (1)
        
           
 「パーセルサイズ」は、以下の定義となる。なお、以下の定義では、(式1)と同様に、RAIDレベルを、mD+nPとする(mは自然数。nは0以上の整数)、すなわち、1つのストライプ列が、m個のデータストライプとn個のパリティストライプで構成されているとする。
パーセルサイズ
=int{ゾーンサイズ/(ページサイズ/m)}×(ページサイズ/m)・・・(式2)
※「int」は、小数点以下を切り捨てることを意味する。
※「m」は、「mD+nP」における「m」。
“Parcel size” is defined as follows. In the following definition, as in (Equation 1), the RAID level is mD + nP (m is a natural number, n is an integer of 0 or more), that is, one stripe column includes m data stripes and n Suppose that it is composed of one parity stripe. 
 Parcel size = int {zone size / (page size / m)} × (page size / m) (Formula 2) 
 * “Int” means that the decimal part is rounded down. 
 * “M” is “m” in “mD + nP”.
        
           
 以上の定義によれば、ゾーンサイズが256MBであり、ページサイズが42MBであり、m=3の場合、パーセルサイズは、252MBである。従って、不使用領域53のサイズは、4MB(=256MB(ゾーンサイズ)-252MB(パーセルサイズ))である。なお、「ページサイズ」とは、仮想ページ及び論理ページのうちのいずれのページのサイズでもよい(典型的には、仮想ページと論理ページのサイズは同じである)。また、上記の定義によれば、パーセルサイズはゾーンサイズと同じになることもあり、その場合には、不使用領域53のサイズは0、すなわち、不使用領域53が必要無い、ということになる。
According to the above definition, when the zone size is 256 MB, the page size is 42 MB, and m = 3, the parcel size is 252 MB. Therefore, the size of the 
上述の定義に基づく具体例では、ページサイズは42MBであるが、その具体例のように、ページサイズは42MBであることが好ましい。その理由の一例は、下記の通りである。 In the specific example based on the above definition, the page size is 42 MB, but as in the specific example, the page size is preferably 42 MB. An example of the reason is as follows.
           
 ストライプサイズは、一般には、2のべき乗であり、典型的には512KBである。ストライプサイズが512KBの場合、各ストライプ列におけるデータストライプ52の合計サイズに関して、下記の状況が得られる。
RAIDレベルケース1:RAID1(1D+1P)
データストライプ52の合計サイズ=512KB×1=512KB
RAIDレベルケース2:RAID1(2D+2P)
データストライプ52の合計サイズ=512KB×2=1024KB
RAIDレベルケース3:RAID5(3D+1P)
データストライプ52の合計サイズ=512KB×3=1536KB
RAIDレベルケース4:RAID5(7D+1P)
データストライプ52の合計サイズ=512KB×7=3584KB
RAIDレベルケース5:RAID6(6D+2P)
データストライプ52の合計サイズ=512KB×6=3072KB
RAIDレベルケース6:RAID6(14D+2P)
データストライプ52の合計サイズ=512KB×14=7168KB
The stripe size is generally a power of 2 and is typically 512 KB. When the stripe size is 512 KB, the following situation is obtained with respect to the total size of the 
 RAID level case 1: RAID1 (1D + 1P) 
 Total size of 
 RAID level case 2: RAID1 (2D + 2P) 
 Total size of 
 RAID level case 3: RAID 5 (3D + 1P) 
 Total size of 
 RAID level case 4: RAID 5 (7D + 1P) 
 Total size of 
 RAID level case 5: RAID 6 (6D + 2P) 
 Total size of 
 RAID level case 6: RAID 6 (14D + 2P) 
 Total size of 
           
 RAIDレベルケース1~6の最小公倍数は、21MB(=512KB×2×3×7)である。ページサイズを、その最小公倍数(21MB)の自然数倍、例えば、42MB(=21MB×2)とすることで、512KB×1、512KB×2、512KB×3、512KB×7、512KB×6、及び、512KB×14のいずれでもページサイズが割り切れる。このため、上記のいずれのケースのRAIDレベルが使用されても、ページにデータストライプ52を対応付ける際に、ページにN個のストライプ列を対応付けることができる(Nは自然数)。すなわち、ページサイズは、異なる複数のRAIDレベルにそれぞれ対応した複数のデータストライプサイズ合計(ストライプサイズ×データストライプ数)の最小公倍数の自然数倍であることが好ましいということである。この考察に従うページサイズとは異なるページサイズ、例えば、ページサイズを64MBとした場合、上記の結果は得られない。
The least common multiple of 
           
 このような考察に従いページサイズを決めることができるが、ページサイズは、SMR-HDD51に予め定義されているゾーンサイズとの関係でも適切なサイズであることが望ましいが、ゾーンサイズを考慮した適切なページサイズの決定は困難であり領域管理負担が大きいという技術的課題が存在する。
Although the page size can be determined in accordance with such consideration, it is desirable that the page size is an appropriate size in relation to the zone size defined in advance in the SMR-
           
 そこで、上述したように、少なくとも1つのシーケンシャルゾーン50Sについては、その全域を使用可能領域とするのではなく、不使用領域53を設けるというシンプルな技術的工夫により、上記技術的課題を解決することができる。すなわち、ページサイズを調整するのではなく、ゾーンサイズに不使用領域53を設けるというゾーン側サイズ(パーセルサイズ)の調整により、異なる記憶階層間の記憶領域のサイズの関係を適切に設定することができる。上記のような技術的課題が残ると、ストレージシステムが有するRAIDグループを構成するPDEVとして、SMR-HDD51のようなPDEVを採用することは困難であるが、上記の技術的工夫により技術的課題を解決することができるため、SMR-HDD51を搭載したストレージシステム、すなわち、通常のHDDを搭載したストレージシステムよりも大容量のストレージシステムを提供することができる。
Therefore, as described above, at least one 
           
 以下、本実施例を詳細に説明する。なお、コンベンショナルゾーン50Cについても、図1に示すように、不使用領域53が設けられてもよい。
Hereinafter, this embodiment will be described in detail. Note that the 
図2は、実施例1に係るシステム全体の構成を示す。 FIG. 2 shows the configuration of the entire system according to the first embodiment.
           
 ストレージシステム100は、SAN(Storage Area Network)のような通信ネットワークを経由して1以上のホスト300に接続される。
The 
           
 ストレージシステム100は、複数のSMR-HDD51を含んだ複数のPDEVと、複数のPDEVに接続されたストレージコントローラ110とを有する。ストレージシステム100に、SMR-HDD51に基づくRAIDグループと、他種のPDEV(例えばSSD又は通常のHDD)に基づくRAIDグループとが混在してもよい。
The 
           
 ストレージコントローラ110は、図1を参照して説明したゾーン側サイズ(パーセルサイズ)の調整を実行する。具体的には、例えば、ストレージコントローラ110は、SMR-HDD51にゾーンサイズを問い合わせるコマンド(例えばZoned Block Command でサポートされている“REPORT ZONE”というコマンド)を送信し、そのコマンドに対する応答(ゾーンサイズが記述された応答)をSMR-HDD51から受信する。ストレージコントローラ110は、RAID構成(いずれのSMR-HDD51のいずれのパーセル41でRAIDが構成されるか)、SMR-HDD51のゾーンサイズ、及び、RAID構成におけるデータストライプ数(m)を用いて上述の(式2)を算出することにより、RAID構成毎にパーセルサイズを算出する。また、パーセルサイズ、ストレージシステム100におけるパーセル数、RAID構成におけるデータストライプ数(m)及びRAID構成におけるパリティストライプ数(n)を用いて上述の(式1)を算出することにより、ストレージシステム100の使用可能容量を算出する。
The 
           
 ストレージコントローラ110は、インターフェース部、記憶部及びプロセッサ部を有する。インターフェース部の一例が、ホストに接続されるフロントエンドインターフェース部の一例である複数のFC(Fibre Channel) I/F(インターフェース)113と、PDEVに接続されるバックエンドインターフェース部の一例である複数のSAS(Serial Attached SCSI) I/F115とである。記憶部の一例が、メモリ112である。プロセッサ部の一例が、CPU111である。
The 
           
 FC I/F113は、ホストと通信するためのインターフェースである。SAS I/F115は、SMR-HDD51と通信するためのインターフェースである。メモリ112は、プログラムとテーブルを格納する。メモリ112は、キャッシュメモリ領域を含んでよく、その領域に、SMR-HDD51のようなPDEVに入出力されるデータが一時的に記憶される。CPU111が、メモリからプログラムを読み出して実行し、メモリ112内のテーブルを使用する。
FC I / 
           
 ストレージコントローラ110は、更に、ハードウェア回路の一例であるASIC(Application Specific Integrated Circuit)116を有する。ASIC116は、プロセッサ部に含まれる要素の一例でよい。ASIC116に代えて、他種のハードウェア回路(例えばFPGA(Field-Programmable Gate Array))が採用されてもよい。ASIC116は、パリティを作成する。本実施例では、ASIC116及びSAS I/F115がPDEV群121毎に設けられる。PDEV群121は、RAIDグループであってもよいし、RAIDグループでなくてもよい。
The 
           
 なお、図示しないが、ストレージシステム100は、ダーティデータ(PDEVに未だ格納されていないデータであってキャッシュメモリ領域に格納されているデータ)の保護のため電源障害に備えたバッテリーを有していてもよい。また、メモリ112は、二重化されていてもよい。また、メモリ112が二重化されている場合、それらのメモリ112の電源系統は別々でもよい。
Although not shown, the 
           
 ストレージコントローラ110は、後述のLog-Structuredライトを実行してよい。ストレージコントローラ110は、Log-Structuredライトに関し、データ量削減のための重複排除機能及び圧縮機能のうちの少なくとも1つを有していてもよい。
The 
図3は、実施例1に係る記憶階層の一例を示す。 FIG. 3 shows an example of a storage hierarchy according to the first embodiment.
           
 この例によれば、分散RAIDが採用されている。通常のRAIDではHDDを基本単位としてRAIDグループが構成されるのに対して、分散RAIDではパーセルを基本単位としてRAIDグループが構成される。複数のパーセル41により構成されるRAIDグループをチャンク303と呼ぶ。例えば、複数のSMR-HDD群として、SMR-HDD1-1~1-3から成る第1のSMR-HDD群と、SMR-HDD2-1~2-3から成る第2のSMR-HDD群と、SMR-HDD3-1~3-3から成る第3のSMR-HDD群と、SMR-HDD4-1~4-3から成る第4のSMR-HDD群とがあるとする。分散RAIDの実現の一例として、SMR-HDD1-1内のパーセル41、SMR-HDD2-2内のパーセル41、SMR-HDD3-1内のパーセル41、及び、SMR-HDD4-3内のパーセル41により、チャンク303が構成されている。チャンク303を構成するパーセル41を格納するSMR-HDD51の組み合わせは、複数通りである。分散RAIDでは、あるSMR-HDD51が故障した際に、CPU111が、ストレージシステム100内の(ほぼ)全てのSMR-HDD51がRAIDのリビルド(コレクションコピー)処理に関与するようにSMR-HDD51を選択することができる。
According to this example, distributed RAID is adopted. In a normal RAID, a RAID group is configured with HDD as a basic unit, whereas in distributed RAID, a RAID group is configured with parcel as a basic unit. A RAID group composed of a plurality of 
           
 チャンク303が有する複数のデータストライプが、複数のチャンクページ60を構成する。チャンクページ60が、仮想ページ302に割り当てられる記憶領域である。チャンク303は、複数の仮想ボリューム141に共通であってもよいし、仮想ボリューム141毎にチャンク303が設けられてもよい。1以上のチャンク303が、例えば、Thin Provisioningに従う容量プール(チャンクページ60のプール)に相当してよい。
A plurality of data stripes included in the 
           
 複数の仮想ボリューム141と複数の論理ボリューム151とがある。仮想ボリューム141と論理ボリューム151は、1:1で対応してもよいが、本実施例では、多:多で対応している。すなわち、論理ボリューム151における領域(例えば論理ページ301)は、仮想ボリューム141内の領域(例えば仮想ページ302)に対応し、同一の論理ボリューム151における他の領域は、別の仮想ボリューム141内の領域に対応している。論理ボリューム151と仮想ボリューム141は後述するクラスタマッピングテーブルによって関連付けられている。論理ボリューム151が、ホスト300に提供される。
There are a plurality of 
           
 図4は、メモリ112内のプログラム、テーブル及び領域を示す。
FIG. 4 shows programs, tables, and areas in the 
           
 メモリ112には、I/O制御プログラム401及び領域管理プログラム402が格納される。また、メモリ112には、クラスタマッピングテーブル411、クラスタ逆マッピングテーブル412、ページマッピングテーブル413、チャンクマッピングテーブル414、パーセルマッピングテーブル415、RAID管理テーブル416、ライト先仮想ページ管理テーブル417、仮想ページライトポインタ管理テーブル418、論理ボリューム管理テーブル419、SMR-HDD管理テーブル420、キャッシュ管理テーブル421、一時格納領域管理テーブル422、及び、ゾーン管理テーブル423が格納される。また、メモリ112は、キャッシュメモリ領域430を有する。メモリ112上のプログラム及びテーブルのうちの少なくとも1つが、少なくとも1つのSMR-HDD51にコピー(バックアップ)されてもよい。
In the 
I/O制御プログラム401は、データのI/Oを制御する。領域管理プログラム402は、領域の容量の算出等を実行する。 The I / O control program 401 controls data I / O. The area management program 402 executes calculation of area capacity.
           
 クラスタマッピングテーブル411は、論理クラスタから仮想クラスタへの方向に関してのクラスタ対応関係(論理クラスタから仮想クラスタへのマッピング)を保持するテーブルである。クラスタ逆マッピングテーブル412は、仮想クラスタから論理クラスタへの方向に関してのクラスタ対応関係(仮想クラスタから論理クラスタへのマッピング)を保持するテーブルである。ページマッピングテーブル413は、仮想ページ302とチャンクページ60との対応関係を保持するテーブルである。チャンクマッピングテーブル414は、チャンク303とチャンクページ60との対応関係と、チャンクページ60とストライプ52との対応関係とを保持するテーブルである。パーセルマッピングテーブル415は、パーセル41とストライプ52との対応関係と、パーセル41とゾーン50との対応関係を保持するテーブルである。パーセル41とゾーン50との対応関係には、パーセル41を含んだゾーン50の種類(コンベンショナルゾーンであるかシーケンシャルゾーンであるか)が含まれていてもよい。ストレージコントローラ110は、これらのマッピングテーブルのうちの少なくとも1つを参照することで、記憶階層間の領域の対応関係を特定できる(具体的には、例えば、複数の記憶階層における領域(アドレス)を辿って、最終的なライト先又はリード元の領域(例えば、ストライプ52又はパーセル41)を特定することができる)。
The cluster mapping table 411 is a table that holds a cluster correspondence (mapping from the logical cluster to the virtual cluster) regarding the direction from the logical cluster to the virtual cluster. The cluster reverse mapping table 412 is a table that holds the cluster correspondence (mapping from the virtual cluster to the logical cluster) regarding the direction from the virtual cluster to the logical cluster. The page mapping table 413 is a table that holds the correspondence relationship between the 
           
 RAID管理テーブル416は、RAIDグループ毎のRAID構成(RAIDレベル)に関する情報(例えば、SMR-HDD51の番号、パーセル41の番号、RAIDレベル等)を保持する。ライト先仮想ページ管理テーブル417は、論理ボリューム151毎にライト先仮想ページ(現在の書き込み対象の仮想ページ302)の情報を保持するテーブルである。仮想ページライトポインタ管理テーブル418は、仮想ページ302毎に仮想ページライトポインタ(仮想ページ302内の相対位置アドレス)の情報を保持するテーブルである。論理ボリューム管理テーブル419は、論理ボリューム151毎の容量の情報を保持するテーブルである。SMR-HDD管理テーブル420は、SMR-HDD51毎にHDD番号、ゾーンサイズ、パーセルサイズ及び不使用領域サイズの情報を保持するテーブルである。キャッシュ管理テーブル421は、キャッシュスロット(後述)とストライプ52との対応関係を保持するテーブルである。一時格納領域管理テーブル422は、一時格納領域として利用されているストライプ52に関する情報を保持するテーブルである。ゾーン管理テーブル423は、ゾーン50に関する情報を保持するテーブルである。
The RAID management table 416 holds information on the RAID configuration (RAID level) for each RAID group (for example, the SMR-
           
 キャッシュメモリ領域430は、複数のキャッシュスロットで構成される。つまり、キャッシュスロットとは、キャッシュメモリ領域430の一部である。
The 
           
 図5は、チャンク303とチャンクページ60との対応関係であってRAID5に従う対応関係を示す。
FIG. 5 shows the correspondence relationship between the 
           
 チャンク303は、複数のパーセル41で構成される。その複数のパーセル41は、典型的には、異なる複数のSMR-HDD51にそれぞれ存在する。
The 
           
 チャンク303は、複数のパーセル41で構成されたRAIDグループとみなすことができる。RAID5のため、各パーセル41に、データストライプ52Dとパリティストライプ52Pとが混在する。図5及び図6以降の図において、ストライプ52について、「1」、「2」、「3」、…のように数字の記載がある四角は、データストライプ52Dを意味し、「P」の記載がある四角は、パリティストライプ52Pを意味する。
The 
           
 1つのチャンク303が、複数(又は1つ)のチャンクページ60を含む。各チャンクページ60は、複数のストライプ52で構成されている。それら複数のストライプ52は、いずれも、データストライプ52Dである。各チャンクページ60は、パリティストライプ52Pを含まない。
One 
           
 図6は、チャンク303とチャンクページ60との対応関係であってRAID4に従う対応関係を示す。
FIG. 6 shows the correspondence between the 
           
 RAID4に従う対応関係のため、チャンク303における或るパーセル41を構成する複数のストライプ52は、いずれもパリティストライプ52Pである。
Because of the correspondence according to 
           
 RAID4は、例えば、後述のパリティ生成方式(2)で採用されるRAIDレベル(RAID構成)である。RAID4では、或るパーセル41内のストライプ52はいずれもパリティストライプ52Pである。或るパーセル41を含んだゾーン50は、コンベンショナルゾーン50Cでよい。
図7は、アドレスマッピングの一例を示す。 FIG. 7 shows an example of address mapping.
           
 論理ボリューム151は、ホスト300に提供される。論理ボリューム151は、複数の論理ページ301で構成される。論理ページ301のサイズは、固定サイズ(例えば42MB)である。各論理ページ301は、複数の論理クラスタ701で構成される。論理クラスタ701のサイズも、固定サイズ(例えば8KB)である。
The 
           
 仮想ボリューム141は、ホスト300に直接提供されないいわゆる内部ボリュームである。仮想ボリューム141は、複数の仮想ページ302で構成される。仮想ページ302のサイズも、固定サイズ(例えば42MB)である。各仮想ページ302は、複数の仮想クラスタ702で構成される。仮想クラスタ702のサイズは、固定サイズでもよいが、本実施例では可変サイズである。例えば、仮想クラスタ702のサイズは、512B(バイト)×N(Nは自然数)である。ストレージコントローラ110の圧縮機能が利用されている場合には、仮想クラスタのサイズは、論理クラスタのサイズより小さいことがありうる。
The 
           
 論理クラスタ701と仮想クラスタ702は、クラスタマッピングテーブル411及びクラスタ逆マッピングテーブル412によりマッピングされている。論理クラスタ701と仮想クラスタ702は、X:1の関係になっている(Xは自然数)。論理クラスタ701が1つの仮想クラスタ702に重複排除されている場合、Xは1より大きい。論理クラスタ701と仮想クラスタ702間のマッピングを、「クラスタマッピング」と呼ぶことができる。
The 
           
 1つの仮想ページ302に1つのチャンクページ60がマッピングされる。論理ページ301毎に(又は仮想ページ302毎に)、ホスト300I/O頻度等の統計情報をメモリ112上の少なくとも1つのテーブルに格納することができる。仮想ページ302とチャンクページ60間のマッピングを、「ページマッピング」と呼ぶことができる。
One 
           
 上述した複数のマッピングテーブルのうちの少なくとも1つを参照することで、ストレージコントローラ110は、最終的なリード元の領域(例えば、ストライプ52又はパーセル41)を特定できる。具体的には、例えば、ストレージコントローラ110がホスト300から受信するリード要求には、リード元が指定されている。リード元を表す情報は、例えば、論理ボリューム番号及び論理アドレスを含むとする。論理ボリューム番号は、例えば、LUN(Logical Unit Number)である。論理アドレスは、例えばLBA(Logical Block Address)である。リード元を表す情報から、以下の流れで、最終的なリード元の領域を特定することができる。
(S1)I/O制御プログラム401が、リード元としての論理ボリューム番号及び論理アドレスから論理クラスタ701を特定する。特定された論理クラスタ701を含んだ論理ページ301の先頭アドレスからの、リード元として指定された論理アドレスのオフセットも特定される。
(S2)I/O制御プログラム401が、クラスタマッピングテーブル411を参照することにより、特定された論理クラスタ701に対応する仮想クラスタ702を特定する。
(S3)I/O制御プログラム401が、ページマッピングテーブル413を参照することにより、特定された仮想クラスタ702を含んだ仮想ページ302に割り当てられているチャンクページ60を特定する。
(S4)I/O制御プログラム401が、チャンクマッピングテーブル414と、上記特定されたオフセットとを基に、特定されたチャンクページ60に含まれるデータストライプ52Dを特定する。
(S5)I/O制御プログラム401が、パーセルマッピングテーブル415を参照することで、特定されたデータストライプ52Dを含んだパーセル41と、そのパーセル41を提供するSMR-HDD51とを特定する。
(S6)I/O制御プログラム401が、特定されたSMR-HDD51に、特定されたデータストライプ52Dのアドレスを指定したリードコマンドを送信する。
By referring to at least one of the plurality of mapping tables described above, the 
 (S1) The I / O control program 401 identifies the 
 (S2) The I / O control program 401 identifies the 
 (S3) The I / O control program 401 refers to the page mapping table 413, and identifies the 
 (S4) The I / O control program 401 specifies the 
 (S5) The I / O control program 401 refers to the parcel mapping table 415 to identify the 
 (S6) The I / O control program 401 transmits a read command specifying the address of the specified 
           
 ところで、Log-Structuredライトを採用することができる。例えば、仮想ページ302に対するライトとして、Log-Structuredライトを採用することができる。具体的には、例えば、論理ボリューム151が更新される場合、Log-Structuredライト方式によれば、仮想ページ302内の旧データ(更新前データ)が新データ(更新後データ)に上書きされるのではなく、仮想ページ302内の空き仮想クラスタ702(空き領域の一例)が確保され、確保された空き仮想クラスタ702に、新データが書き込まれる。空き仮想クラスタ702は、仮想ページ302についてのライトポインタにより特定することができる。この場合、旧仮想クラスタ702(旧データが格納されている仮想クラスタ702)がマッピングされている論理クラスタ701には、旧仮想クラスタ702に代えて新仮想クラスタ702(新データが書き込まれた仮想クラスタ702)がマッピングされる。
By the way, Log-Structured light can be adopted. For example, a Log-Structured light can be adopted as a light for the 
           
 なお、旧仮想クラスタ702、すなわち、いずれの論理クラスタ701にもマッピングされない仮想クラスタ702は、無効なデータ、又は、未使用の領域である。無効なデータは、ガーベージデータと呼ぶこともできる。ガーベージデータは、いわゆるガーベージコレクション処理により回収されてよい。旧仮想クラスタ702が1つでも仮想ページ302に含まれていると、その仮想ページ302にはチャンクページ60がマッピングされたままであり、割当て可能なチャンクページ60が不足し得るからである。ガーベージコレクション処理は、チャンク303単位で行われる。ガーベージコレクション処理は、例えば次の通りである。すなわち、ストレージコントローラ110は、コピー元チャンク303から有効データ(新データ)のみをコピー先チャンク303(空き(未使用)のチャンク303)にコピーする。ストレージコントローラ110は、コピー元チャンク303から無効データを破棄し、コピー元チャンク303を空きチャンク303として管理する。また、ストレージコントローラ110は、空きチャンク303に含まれる複数のパーセル41の各々について、そのパーセル41を含んだシーケンシャルゾーン50Sに対しては、Zoned Block Command “RESET WRITE POINTER”(ドライブライトポインタのリセットコマンドの一例)により、シーケンシャルゾーン50Sのドライブライトポインタを先頭にリセットする(これにより、後述のドライブライトポインタ1504が更新される)。このように、SMR-HDD51においては、ライトポインタのリセットの単位(SMR-HDD51内の使用中の領域を空き(未使用)の領域に変更する際の単位と言い換えることもできる)が、ゾーン50である。また、1つのチャンク303は、複数のゾーン50に関連付けられていることから、必然的に、ガベージコレクション処理は、チャンク303単位で実行せざるを得ない(例えば、チャンクページ60単位でのガベージコレクション処理は実行できない)。
Note that the old 
図8は、論理ボリューム管理テーブル419の構成を示す。 FIG. 8 shows the configuration of the logical volume management table 419.
           
 論理ボリューム管理テーブル419は、論理ボリューム151毎に、論理ボリューム番号801及び容量802を保持する。論理ボリューム番号801は、論理ボリューム151の番号を表す。容量802は、論理ボリューム151の容量(使用可能容量)を表す。
The logical volume management table 419 holds a 
図9は、SMR-HDD管理テーブル420の構成を示す。 FIG. 9 shows the configuration of the SMR-HDD management table 420.
           
 SMR-HDD管理テーブル420は、SMR-HDD51毎に、HDD番号901、ゾーンサイズ902、パーセルサイズ904、及び、不使用領域サイズ905を保持する。HDD番号901は、ゾーン50を有するSMR-HDD51の番号を表す。ゾーンサイズ902は、ゾーン50のサイズを表す。ゾーン種類903は、ゾーン50の種類(コンベンショナルゾーンかシーケンシャルゾーンか)を表す。パーセルサイズ904は、ゾーン50に含まれるパーセル41のサイズを表す。不使用領域サイズ904は、ゾーン50に含まれる不使用領域53のサイズを表す。
The SMR-HDD management table 420 holds an 
なお、このテーブル420に記載のパーセルサイズ及び不使用領域サイズは、例えば、領域管理プログラム402により算出されたサイズである。それらのサイズは、例えば、上述のRAID管理テーブル416を基に上述の(式2)から得られる。 The parcel size and the unused area size described in this table 420 are, for example, the sizes calculated by the area management program 402. These sizes are obtained from (Expression 2) described above based on the RAID management table 416 described above, for example.
           
 また、パーセル41の先頭アドレス(LBA)及び終端アドレス(LBA)は、次の通りに定義される。
・パーセル41の先頭アドレス=パーセル番号×(ゾーンサイズ÷セクタサイズ)
・パーセル41の終端アドレス=パーセル番号×(ゾーンサイズ÷セクタサイズ)+パーセルサイズ÷セクタサイズ-1
The start address (LBA) and end address (LBA) of the 
 -Start address of 
 End address of 
なお、「セクタ」とは、HDDの論理記憶領域の最小単位である。セクタサイズは、典型的なHDDにおいては512バイトである。 Note that the “sector” is the smallest unit of the logical storage area of the HDD. The sector size is 512 bytes in a typical HDD.
図10は、クラスタマッピングテーブル411の構成を示す。 FIG. 10 shows the configuration of the cluster mapping table 411.
           
 クラスタマッピングテーブル411は、論理クラスタ701毎に、論理クラスタ識別情報1001及び仮想クラスタ識別情報1002を保持する。論理クラスタ識別情報1001は、論理クラスタ701の識別情報であり、例えば、論理ボリューム番号、及び、論理ボリューム151についてのLBAを表す。仮想クラスタ識別情報1002は、論理クラスタ701からマッピングされた仮想クラスタ702の識別情報であり、例えば、仮想ボリューム141番号、仮想ボリューム141についてのLBA、及び、仮想クラスタ702のサイズを表す。
The cluster mapping table 411 holds logical 
図11は、クラスタ逆マッピングテーブル412の構成を示す。 FIG. 11 shows the configuration of the cluster reverse mapping table 412.
           
 クラスタ逆マッピングテーブル412は、仮想クラスタ702毎に、仮想クラスタ識別情報1101及び論理クラスタ識別情報1102を保持する。仮想クラスタ識別情報1101及び論理クラスタ識別情報1102の各々の構成は、図10を参照して説明した通りである。
The cluster reverse mapping table 412 holds virtual 
図12は、キャッシュ管理テーブル421の構成を示す。 FIG. 12 shows the configuration of the cache management table 421.
           
 キャッシュ管理テーブル421は、複数のキャッシュスロット1201に対応した複数のエントリ1202を有する。具体的には、キャッシュ管理テーブル421には、キャッシュステータス毎にキューがあり、キューに、そのキューに対応したキャッシュステータスのスロット1201に対応したエントリ1202が接続されている。キャッシュステータスとしては、空き、クリーン及びダーティがある。空きスロットは、データが格納されていないスロット1201である。クリーンスロットは、クリーンデータ(SMR-HDD51に格納済のデータ)のみが格納されているスロット1201である。ダーティスロットは、ダーティデータ(SMR-HDD51に未格納のデータ)が格納されているスロット1201である。クリーンデータ及びダーティデータのようにキャッシュメモリ領域430に格納されているデータを「キャッシュデータ」と呼ぶことができる。
The cache management table 421 has a plurality of 
キャッシュデータは、上位キャッシュデータと下位キャッシュデータのいずれかに分類される。言い換えれば、ダーティスロット及びクリーンスロットを、上位キャッシュスロットと下位キャッシュスロットとに分類することができる。 Cache data is classified as either upper cache data or lower cache data. In other words, dirty slots and clean slots can be classified into upper cache slots and lower cache slots.
           
 上位キャッシュスロットは、論理ボリューム151内の領域に対応したスロットである。上位キャッシュスロットのサイズは、ストライプサイズ以下である。
The upper cache slot is a slot corresponding to an area in the 
           
 下位キャッシュスロットは、仮想ボリューム141内の領域に対応したスロットである。下位キャッシュスロットのサイズは、ストライプ52のサイズ以下である。下位キャッシュスロットは1つのストライプ52に対応してよい。
The lower cache slot is a slot corresponding to an area in the 
クリーンスロット及びダーティスロットは、上述したように、上位キャッシュスロット及び下位キャッシュスロットのいずれかに分類される。一方、空きスロットは、上位キャッシュスロット及び下位キャッシュスロットのいずれにも分類されない。 Clean slots and dirty slots are classified as either upper cache slots or lower cache slots as described above. On the other hand, empty slots are not classified as either upper cache slots or lower cache slots.
           
 上位キャッシュスロット内のデータが、上位キャッシュデータである。上位キャッシュデータとしてのクリーンデータである上位クリーンデータは、ホスト300からのライト要求に従うデータの少なくとも一部のデータであって既に仮想ボリューム141に書き込まれたデータ、又は、ホスト300からのリード要求に従うデータの少なくとも一部のデータであって仮想ボリューム141から読み出されたデータである。上位キャッシュデータとしてのダーティデータである上位ダーティデータは、ホスト300からのライト要求に従うデータの少なくとも一部のデータであって未だ仮想ボリューム141に書き込まれていないデータである。
The data in the upper cache slot is the upper cache data. The upper clean data, which is the clean data as the upper cache data, is at least a part of the data in accordance with the write request from the 
           
 下位キャッシュスロット内のデータが、下位キャッシュデータである。下位キャッシュデータとしてのクリーンデータである下位クリーンデータは、論理ボリューム151から書き込まれたデータであって既にPDEV(典型的にはSMR-HDD51)に書き込まれたデータ、又は、PDEVから読み出されたデータである。下位キャッシュデータとしてのダーティデータである下位ダーティデータは、論理ボリューム151から書き込まれたデータであって未だPDEVに書き込まれていないデータである。
The data in the lower cache slot is the lower cache data. The lower clean data, which is clean data as the lower cache data, is data written from the 
           
 以上のように、本実施例では、仮想ページ302についてLog-Structuredライトを実現するべく、仮想ボリューム141の上位に論理ボリューム151が設けられ、それに伴い、キャッシュ管理が、上位の管理と下位の管理とに分けられている。
As described above, in this embodiment, the 
           
 なお、ストレージコントローラ110の圧縮機能を利用する場合、下位キャッシュスロットには、圧縮済みのデータが格納され得る。圧縮方式としては、ハフマン符号に基づいたアルゴリズムなどの様々な可逆圧縮方式を用いることができる。
Note that, when the compression function of the 
図13は、ライト先仮想ページ管理テーブル417の構成を示す。 FIG. 13 shows the configuration of the write destination virtual page management table 417.
           
 ライト先仮想ページ管理テーブル417は、論理ボリューム151毎に、論理ボリューム番号1301及びライト先仮想ページ番号1302を有する。ライト先仮想ページ番号1302は、対応する論理ボリューム151についてのライト先仮想ページ(現在の書き込み対象の仮想ページ302)に対応したページ番号を表す。論理ボリューム151とライト先仮想ページは、1:1、多:1、多:多で対応してよい。
The write destination virtual page management table 417 has a 
図14は、仮想ページライトポインタ管理テーブル418の構成を示す。 FIG. 14 shows the configuration of the virtual page write pointer management table 418.
           
 仮想ページライトポインタ管理テーブル418は、仮想ページ302毎に、仮想ページ番号1401、仮想ページライトポインタ1402及び先頭フラグ1403を保持する。仮想ページ番号1401は、仮想ページ302の番号を表す。仮想ページライトポインタ1402は、仮想ページ302の仮想ページライトポインタ(仮想ページ302内の相対位置情報)を表す。先頭フラグ1403は、仮想ページライトポインタが仮想ページ302の先頭を指しているか否かを示すフラグである。なお、先頭フラグは無くてもよく、その場合、仮想ページライトポインタの値に基づいて先頭を指しているか否かが判断されてもよい。
The virtual page write pointer management table 418 holds a virtual page number 1401, a virtual page write pointer 1402, and a 
図26は、ゾーン管理テーブル423の構成を示す。 FIG. 26 shows the configuration of the zone management table 423.
           
 ゾーン管理テーブル423は、ゾーン50毎に、HDD番号1501、ゾーン番号1502、ゾーン種類1503及びドライブポインタ1504を保持する。HDD番号1501は、ゾーン50を含んだSMR-HDD51の番号を表す。ゾーン番号1502は、ゾーン50の番号を表す。ゾーン種類1503は、ゾーン50の種類を表す。
The zone management table 423 holds an 
           
 ドライブライトポインタ1504は、シーケンシャルゾーン50S内でのライトポインタを示すアドレス情報である。ドライブポインタ1504としては、SMR-HDD51のLBAが用いられる。ドライブライトポインタ1504は、SMR-HDD51がREPORT ZONEコマンドの応答として返却するライトポインタに一致するように管理される。
The drive write pointer 1504 is address information indicating a write pointer in the 
           
 ドライブライトポインタ1504は、データストライプ又はパリティストライプのダーティデータがSMR-HDD51にデステージされたとき、若しくは、ガーベージコレクション処理において発行されたRESET WRITE POINTERコマンドに応答して、更新される。
The drive write pointer 1504 is updated when dirty data of the data stripe or parity stripe is destaged to the SMR-
           
 なお、ドライブライトポインタは、SMR-HDD51に対するREPORT ZONEコマンドの応答としてSMR-HDD51から取得可能のため、全てのシーケンシャルゾーン50Sについてドライブライトポインタ1504がメモリ112に格納されていなくてもよい。必要に応じてドライブライトポインタがSMR-HDD51から取得されメモリ112に登録されてもよい。
Since the drive write pointer can be acquired from the SMR-
           
 図15は、キャッシュメモリライト処理の流れを示す。キャッシュメモリライト処理は、キャッシュメモリ領域にデータを書き込む処理である。キャッシュメモリライト処理は、ストレージコントローラ110がホスト300からライト要求を受信した場合にI/O制御プログラム401により開始される。S1501及びS1502は、ライト要求に応答して行われる処理、つまり同期処理である。一方、S1503~S1507は、ライト要求に応答して行われる処理とは別の処理、つまり非同期処理である。非同期処理は、適宜繰り返し実行される。
FIG. 15 shows the flow of the cache memory write process. The cache memory write process is a process for writing data to the cache memory area. The cache memory write process is started by the I / O control program 401 when the 
           
 I/O制御プログラム401は、ライトデータ(ライト要求に従うデータ)の格納先の上位キャッシュスロットを確保するためのキャッシュ制御を実行する(S1501)。I/O制御プログラム401は、上位キャッシュスロットにライトデータを書き込み、ライト要求に対する応答としてライト完了報告をホスト300に送信する(S1502)。
The I / O control program 401 executes cache control for securing an upper cache slot for storing write data (data according to a write request) (S1501). The I / O control program 401 writes the write data to the upper cache slot, and sends a write completion report to the 
           
 その後、I/O制御プログラム401は、新たなライト先の仮想ページ302が必要か否かを判断する(S1503)。例えば、いずれの使用中仮想ページ302の空き領域のサイズも、ライトデータのサイズ未満の場合、S1503の判断結果が真となる。「使用中仮想ページ302」とは、当該ライトデータに対応するライト先仮想ページ管理テーブル417のライト先仮想ページ番号1302で指定される仮想ページ302を意味する。使用中仮想ページ302の空き領域のサイズは、仮想ページライトポインタ管理テーブル418を基に、仮想ページサイズと、その使用中仮想ページ302に対応した仮想ページライトポインタ1402とから特定可能である。
Thereafter, the I / O control program 401 determines whether or not a new write destination 
           
 S1503の判断結果が真の場合(S1503:Y)、I/O制御プログラム401は、ライトポインタが仮想ページ先頭である仮想ページ302(例えば先頭フラグが“True”の仮想ページ302)を、ライト先仮想ページ302として選択し、ライト先仮想ページ管理テーブル417を更新する(S1504)。I/O制御プログラム401は、仮想ページ302の仮想ページライトポインタ1402に従う仮想クラスタ702に対応付けられる下位キャッシュスロットを確保する(S1505)。I/O制御プログラム401は、S1502でライトデータが書き込まれた上位キャッシュスロットから、S1505で確保した下位キャッシュスロットにライトデータをコピーする(S1506)。I/O制御プログラム401は、下位キャッシュスロットを含んだキャッシュストライプ列内のデータを用いて、パリティを生成する(S1507)。パリティの生成は、後述するパリティ生成方式(1)~(3)のうちのいずれかの方式に従う。
If the determination result in S1503 is true (S1503: Y), the I / O control program 401 uses the 
           
 S1503の判断結果が偽の場合(S1503:N)、I/O制御プログラム401は、S1504をスキップし、S1505~S1507を実行する。そのS1505では、空き領域のサイズがライトデータのサイズ以上のいずれかの使用中仮想ページ302が、ライト先である。
If the determination result in S1503 is false (S1503: N), the I / O control program 401 skips S1504 and executes S1505 to S1507. In S1505, any in-use 
           
 重複排除機能及び圧縮機能のうちの少なくとも1つのようなデータ削減機能がストレージコントローラ110に採用されている場合、重複排除処理又は圧縮処理は、S1505及びS1506で実行されてよい。重複排除処理では、論理クラスタ701内のデータが重複データであれば、クラスタマッピングの張替えが行われる。また、重複排除処理では、論理クラスタ701内のデータがユニークデータ(非重複データ)であれば、下位キャッシュスロットにデータが書き込まれる。圧縮処理では、下位キャッシュスロットに論理クラスタ701のデータが書き込まれる際に、論理クラスタ701のデータの圧縮が行われる。
When at least one of the deduplication function and the compression function is employed in the 
           
 キャッシュメモリライト処理では、ライト先論理クラスタ701(ライト要求で指定されたLBAに該当する論理クラスタ701)が新たに仮想クラスタ702にマッピングされるか、又は、ライト先論理クラスタ701のマッピング先が旧仮想クラスタ702から新仮想クラスタ702に変わる。また、ライト先論理クラスタ701のマッピング先の仮想クラスタ702を含んだ仮想ページ302についての仮想ページライトポインタの位置も、ライトデータのサイズ分、先に進む。これらに伴い、I/O制御プログラム401は、クラスタマッピングテーブル411及びクラスタ逆マッピングテーブル412を更新したり、仮想ページライトポインタ管理テーブル418を更新したりする。
In the cache memory write process, the write destination logical cluster 701 (the 
           
 また、キャッシュメモリライト処理では、新たにライト先仮想ページ302が選択された場合、その仮想ページ302にデータが書き込まれることになるためその仮想ページ302に新たにチャンクページ60が割り当てられる。これに伴い、ページマッピングテーブル413も更新される。つまり、新たな仮想ページ302と、その仮想ページ302に割り当てられたチャンクページ60との対応関係がページマッピングテーブル413に登録される。
In the cache memory write process, when a new write destination 
           
 図27は、デステージ処理の流れを示す。デステージ処理は、キャッシュメモリ領域からSMR-HDD51へのデータの格納の処理である。
FIG. 27 shows the flow of destage processing. The destage process is a process of storing data from the cache memory area to the SMR-
I/O制御プログラム401は、デステージ対象のダーティデータを選択する(S2701)。格納先がシーケンシャルゾーンであるダーティデータについては、I/O制御プログラム401は、各シーケンシャルゾーンについて格納先アドレスが小さいダーティデータから先に選択する。複数のダーティデータの格納先がシーケンシャルゾーンの場合、それら複数のダーティデータはシーケンシャルに書き込まれる必要があるためである。 The I / O control program 401 selects the dirty data to be destaged (S2701). For dirty data whose storage destination is a sequential zone, the I / O control program 401 first selects dirty data having a smaller storage destination address for each sequential zone. This is because when a plurality of dirty data is stored in a sequential zone, the plurality of dirty data needs to be written sequentially.
I/O制御プログラム401は、S2701で選択されたダーティデータをSMR-HDD51にデステージする(S2702)。格納先(デステージ先)がシーケンシャルゾーンの場合、そのシーケンシャルゾーンに対応したドライブライトポインタ1504が指すアドレスから、S2701で選択されたダーティデータが、格納先アドレスの小さい順に書き込まれる。デステージ後、ドライブライトポインタ1504が更新される。 The I / O control program 401 destages the dirty data selected in S2701 to the SMR-HDD 51 (S2702). When the storage destination (destage destination) is a sequential zone, the dirty data selected in S2701 is written in ascending order of the storage destination address from the address indicated by the drive write pointer 1504 corresponding to the sequential zone. After destage, the drive write pointer 1504 is updated.
なお、デステージ対象がパリティの場合、パリティが生成された後にその生成されたパリティのデステージが行われるが。デステージ対象がユーザデータ(パリティの基になるデータ)の場合、パリティ生成後にユーザデータがデステージされてもよいし、ユーザデータのデステージ後にパリティ生成が行われてもよい。 Note that, when the destage target is parity, the generated parity is destaged after the parity is generated. When the destaging target is user data (data based on parity), the user data may be destaged after parity generation, or parity generation may be performed after destaging user data.
           
 図16は、リード処理の流れを示す。リード処理は、ストレージコントローラ110がホスト300からリード要求を受信した場合にI/O制御プログラム401により開始される。
FIG. 16 shows the flow of read processing. The read process is started by the I / O control program 401 when the 
I/O制御プログラム401は、リードデータ(リード要求に従うデータ)を格納している上位キャッシュスロットを検索するキャッシュ制御を実行する(S1601)。I/O制御プログラム401は、上位キャッシュスロットにリードデータが存在するか否かを判断する(S1602)。 The I / O control program 401 executes cache control for searching for an upper cache slot storing read data (data according to a read request) (S1601). The I / O control program 401 determines whether read data exists in the upper cache slot (S1602).
S1602の判断結果が真の場合(S1602:Y)、I/O制御プログラム401は、上位キャッシュスロット内のリードデータをホスト300に送信する(S1607)。 If the determination result in S1602 is true (S1602: Y), the I / O control program 401 transmits the read data in the upper cache slot to the host 300 (S1607).
           
 S1602の判断結果が偽の場合(S1602:N)、I/O制御プログラム401は、リードデータを格納している下位キャッシュスロットを検索するキャッシュ制御を実行する(S1603)。I/O制御プログラム401は、下位キャッシュスロットにリードデータが存在するか否かを判断する(S1604)。S1604の判断結果が真の場合(S1604:Y)、I/O制御プログラム401は、下位キャッシュスロットから上位キャッシュスロットにリードデータをコピーし(S1606)、その上位キャッシュスロット内のリードデータをホスト300に送信する(S1607)。一方、S1604の判断結果が偽の場合(S1604:N)、I/O制御プログラム401は、下位キャッシュスロットを確保しその下位キャッシュスロットにSMR-HDD51からリードデータを読み出すステージング制御を実行する(S1605)。その後、I/O制御プログラム401は、S1606及びS1607を実行する。
If the determination result in S1602 is false (S1602: N), the I / O control program 401 executes cache control for searching for a lower cache slot storing read data (S1603). The I / O control program 401 determines whether read data exists in the lower cache slot (S1604). If the determination result in S1604 is true (S1604: Y), the I / O control program 401 copies the read data from the lower cache slot to the upper cache slot (S1606), and the read data in the upper cache slot is transferred to the 
本実施例では、以下のパリティ生成方式(1)~(3)の少なくとも1つが採用される。以下、パリティ生成方式(1)~(3)の各々を説明する。なお、本実施例において、「パリティ生成」は、キャッシュメモリ領域上のデータ操作である。そのため、以下、ストライプ列内のデータストライプに対応した領域であってキャッシュストライプ列内の領域を「キャッシュデータストライプ」と言い、ストライプ列内のパリティストライプに対応した領域であってキャッシュストライプ列内の領域を「キャッシュパリティストライプ」と言う。 In this embodiment, at least one of the following parity generation methods (1) to (3) is adopted. Hereinafter, each of the parity generation methods (1) to (3) will be described. In this embodiment, “parity generation” is a data operation on the cache memory area. Therefore, hereinafter, the area corresponding to the data stripe in the stripe string and the area in the cache stripe string is referred to as “cache data stripe”, and the area corresponding to the parity stripe in the stripe string and corresponding to the parity stripe in the cache stripe string. The area is called “cache parity stripe”.
図17は、パリティ生成方式(1)の概要の模式図である。 FIG. 17 is a schematic diagram of an outline of the parity generation method (1).
           
 パリティ生成方式(1)として、ストライプ列における全てのデータストライプ52Dにそれぞれ対応した全てのユーザデータがキャッシュストライプ列にある場合にパリティを生成する方式である全ストライプライト方式が採用される。言い換えれば、パリティ生成方式(1)は、ストライプ列におけるいずれかのデータストライプ52Dからユーザデータをキャッシュメモリ領域に読み出しそのユーザデータを更新してパリティを更新するリードモディファイライト方式が発生しない方式である。リードモディファイライト方式によれば、ユーザデータが更新されるとパリティが更新される。パリティの更新及び格納が複数回発生すると、パリティストライプ52Pを含んだゾーン50に対してランダムライトが発生し得るが、そのゾーン50がシーケンシャルゾーン50Sの場合、ランダムライトは不可能である。
As the parity generation method (1), an all-stripe write method, which is a method for generating parity when all user data respectively corresponding to all the 
           
 そこで、パリティ生成方式(1)として、全ストライプライト方式が採用される。パリティ生成方式(1)は、特に、パリティストライプ52Pを含んだゾーン50がシーケンシャルゾーン50Sの場合に採用されてよい。このため、例えば、対象のストライプ列を含んだチャンク300のRAIDレベルが、RAID5であれば、そのチャンク300を構成する全てのパーセル41を含んだ全てのゾーン50は、シーケンシャルゾーン50Sである。また、例えば、対象のストライプ列を含んだチャンク300のRAIDレベルが、RAID4であれば、そのチャンク300を構成するパーセル41のうちの少なくとも1つのゾーン50は、シーケンシャルゾーン50Sである。パリティ生成方式(1)では、キャッシュストライプ列内の全てのユーザデータに基づいてパリティ(P)が生成される。
Therefore, the all stripe write method is adopted as the parity generation method (1). The parity generation method (1) may be employed particularly when the zone 50 including the 
           
 なお、上述したように、1つのストライプ52に対応した領域であってキャッシュメモリ領域内の領域を、「キャッシュストライプ」と呼ぶことができる。ストライプ52が固定サイズであるため、キャッシュストライプも固定サイズである。キャッシュストライプのサイズは、キャッシュスロット1201のサイズのP倍である(Pは自然数)。ストライプ列に対応したデータユニット(全てのユーザデータ)がキャッシュメモリ領域430に存在する場合にそのデータユニットを基にパリティがキャッシュメモリ領域430上に生成され、非同期で、パリティがSMR-HDD51に書き込まれる。データユニットは、図15のキャッシュメモリライト処理と非同期でSMR-HDD51に書き込まれる。データストライプ52D及びパリティストライプ52Pは、シーケンシャルゾーン50Sの部分領域でよい。
As described above, an area corresponding to one 
図18は、パリティ生成方式(1)に従うパリティ生成処理の流れを示す。 FIG. 18 shows a flow of parity generation processing according to the parity generation method (1).
           
 I/O制御プログラム401は、キャッシュストライプ列における全てのキャッシュデータストライプ1701Dに全てのユーザデータが書き込まれたならば(S1801:Y)、その全てのユーザデータを基にキャッシュメモリ領域430上にパリティを生成する(S1803)。つまり、その全てのユーザデータを基に作成されたパリティが、パリティストライプ1701Pに格納される。
If all user data is written in all the 
           
 I/O制御プログラム401は、キャッシュストライプ列における全てのキャッシュデータストライプ1701Dに少なくとも1つのユーザデータが書き込まれていなくても(S1801:N)、パリティを生成する他の条件が満たされている場合(S1802:Y)、キャッシュメモリ領域430上にパリティを生成する(S1803)。他の条件が満たされている場合とは、例えば、キャッシュメモリ領域430に空きスロットが枯渇した場合(例えば、空きスロット数が閾値未満になった場合)、ストレージシステム100の電源供給が断たれメモリ112がバッテリーで動作している場合、ストレージシステム100の電源をオフにする場合、二重化されたメモリ112の一方が故障したためにダーティデータの二重化が維持されなくなった場合、のうちの少なくとも1つの場合でよい。この場合、I/O制御プログラム401は、ストライプ列におけるデータストライプ52Dの未書き込み領域(ドライブライトポインタ1504が示す領域)にゼロデータ(すべてのビットが0のデータ)を書き込んだ後に、ストライプ列に対応した全てのユーザデータを基にパリティを生成し(例えばASIC116を用いてパリティを生成し)、その生成されたパリティをパリティストライプ52Pに書き込んでよい。なお、書き込まれたゼロデータの分、ドライブライトポインタ1504と仮想ページライトポインタ1402が更新される。
When the I / O control program 401 does not write at least one user data to all the 
図19は、パリティ生成方式(2)の概要の模式図である。 FIG. 19 is a schematic diagram of the outline of the parity generation method (2).
           
 パリティ生成方式(2)では、ストライプ列に対応した全てのユーザデータがキャッシュストライプ列に書き込まれる前に、キャッシュストライプ列内のユーザデータに基づいてパリティが生成され、そのパリティがパリティストライプ52Pに書き込まれてもよいし、ストライプ列に対応した全てのユーザデータがキャッシュストライプ列に書き込まれた後に、それら全てのユーザデータに基づいてパリティが生成され、そのパリティがパリティストライプ52Pに書き込まれてもよい。「ストライプ列に対応した全てのユーザデータがキャッシュストライプ列に書き込まれる前」のパリティ生成は、リードモディファイライト方式に従うパリティ更新であってもよいし、全ストライプライト方式に従うパリティ更新であってもよい。なお、データストライプ52Dの未書き込みの領域はゼロデータ(ビット値が全て0のデータ)とみなす必要がある。
In the parity generation method (2), before all the user data corresponding to the stripe column is written to the cache stripe column, the parity is generated based on the user data in the cache stripe column, and the parity is written to the 
           
 パリティ生成方式(2)では、下記の(2-1)及び(2-2)のうちのいずれも採用可能である。
(2-1)パリティストライプ52Pを含んだゾーン50が、コンベンショナルゾーン50Cである。具体的には、例えば、パリティ生成方式(2)は、例えばRAID4(図6)のように或るパーセル41に含まれる全てのストライプ52がパリティストライプ52Pの場合に採用可能であり、パリティストライプ52Pを含んだゾーン50として、コンベンショナルゾーン50Cが採用される。或るパーセル41を構成する全てのストライプ52がパリティストライプ52Pでなくても、パリティ生成方式(2)は、パリティストライプ52Pを含んだゾーン50がコンベンショナルゾーン50Cの場合に採用されてよい。パリティ生成方式(2)は、パリティを分散格納しないRAIDレベルであれば、RAID4以外のRAIDレベルでも採用可能であり、そのようなパリティを分散格納しないRAIDレベルとしては例えばRAID1が挙げられる。
(2-2)パリティストライプ52Pは、ランダムライト可能な論理領域を提供するPDEV(典型的には通常のHDDやSSD)に基づくストライプ52である。パリティストライプ52Pの基になるPDEVは、例えば、フラッシュメモリデバイスでよい。
In the parity generation method (2), any of the following (2-1) and (2-2) can be adopted. 
 (2-1) The zone 50 including the 
 (2-2) The 
図20は、パリティ生成方式(3)の概要の模式図である。 FIG. 20 is a schematic diagram of the outline of the parity generation method (3).
           
 パリティ生成方式(3)によれば、一時的なパリティストライプ52Pとして使用される一時格納領域2001が用意される。一時格納領域2001は、例えばキャッシュメモリ領域430に設けられる。一時格納領域2001は、本実施例では1つのチャンク303(つまり1つのRAIDグループ)につき1つであるが、複数のチャンク303につき1つでもよい。一時格納領域2001は、ランダムライト可能な論理領域(例えばコンベンショナルゾーン50C)を提供するPDEV2002(例えばSMR-HDD51)に対応付けられる。一時格納領域2001内のパリティは、適宜、そのPDEV2002が提供するランダムライト可能な論理領域に格納される(デステージ)。つまり、一時格納領域2001内のパリティのデステージ先として、一時格納領域2001に、そのランダムライト可能な論理領域が関連付けられている。
According to the parity generation method (3), a 
           
 パリティ生成方式(3)によれば、ストライプ列に対応した全てのユーザデータがキャッシュストライプ列に書き込まれる前に、キャッシュストライプ列内のユーザデータに基づいてパリティが生成され、そのパリティが一時格納領域2001に格納される。そして、ストライプ列に対応した全てのユーザデータがキャッシュストライプ列に書き込まれた後に、それら全てのユーザデータに基づいてパリティが生成され、そのパリティが一時格納領域2001に書き込まれた後、一時格納領域2001内のパリティがキャッシュパリティストライプ1701Pに書き込まれる。
According to the parity generation method (3), before all the user data corresponding to the stripe column is written to the cache stripe column, the parity is generated based on the user data in the cache stripe column, and the parity is stored in the temporary storage area. Stored in 2001. After all user data corresponding to the stripe column is written to the cache stripe column, parity is generated based on all the user data, and after the parity is written to the 
           
 なお、いわゆるコレクションコピーやコレクションリードの際、キャッシュストライプ列内のパリティに対応するダーティデータがキャッシュメモリ領域内に存在しない、且つ、ストライプ列内のパリティにデータが未書き込みであるという条件が満たされている場合、一時格納領域2001内のパリティを用いてコレクションコピーやコレクションリードを行うことができる。ストライプ列内のパリティにデータが未書き込みであるか否かは、ドライブライトポインタ1504から判断可能である。具体的には、ストライプ列内のパリティにデータが未書き込みであるか否かは、パリティストライプの末尾のLBAを越えているか否かに相当する。つまり、キャッシュストライプ列内のパリティに対応するダーティデータがキャッシュメモリ領域内に存在すれば、そのダーティデータを用いてコレクションコピー等が実行されてよい。キャッシュストライプ列内のパリティに対応するダーティデータがキャッシュメモリ領域に存在しないがストライプ列内のパリティにデータが書き込み済みである場合、そのパリティを用いてコレクションコピー等が実行されてよい。
During so-called collection copy and collection read, the condition that the dirty data corresponding to the parity in the cache stripe column does not exist in the cache memory area and the data is not written to the parity in the stripe column is satisfied. In such a case, correction copy or correction read can be performed using the parity in the 
           
 パリティ生成方式(3)では、下記の(3-1)~(3-3)のうちのいずれも採用可能である。
(3-1)一時格納領域2001に対応したデステージ先の領域が、SMR-HDD51のコンベンショナルゾーン50Cにおける領域である。
(3-2)一時格納領域2001に対応したデステージ先のPDEV2002が、SMR-HDD51以外のPDEVである。例えば、そのようなPDEVとして、フラッシュメモリデバイスが採用される。
(3-3)一時格納領域2001に対応したデステージ先のPDEVが存在しない。
In the parity generation method (3), any of the following (3-1) to (3-3) can be adopted. 
 (3-1) The destage destination area corresponding to the 
 (3-2) The destage-
 (3-3) There is no destage destination PDEV corresponding to the 
図21は、一時格納領域管理テーブル422の構成を示す。 FIG. 21 shows the configuration of the temporary storage area management table 422.
           
 一時格納領域管理テーブル422は、一時格納領域2001毎に、チャンク番号2101、ディスク位置情報2102及びキャッシュ位置情報2103を保持する。チャンク番号2101は、一時格納領域2001に対応したチャンク303の番号である。ディスク位置情報2102は、一時格納領域2001に対応した領域であって、その一時格納領域2001に対応したPDEVにおける領域の位置を表す情報である。ディスク位置情報2102は、例えば、パーセル番号及びパーセル41内アドレスの組合せである。キャッシュ位置情報2103は、一時格納領域2001に対応した領域であって、キャッシュメモリ領域430における領域の位置を表す情報である。キャッシュ位置情報2103は、例えば、キャッシュアドレスである。
The temporary storage area management table 422 holds a 
パリティ生成方式(3)では、リードモディファイライト方式及び全ストライプライト方式が選択的に採用される。以下、パリティ生成方式(3)に従うパリティ生成処理の流れを説明するが、その前に、リードモディファイライト方式及び全ストライプライト方式を説明する。なお、その説明では、ユーザデータを「D」と表記し、パリティを「P」と表記する。 In the parity generation method (3), the read-modify-write method and the all-stripe write method are selectively adopted. Hereinafter, the flow of parity generation processing according to the parity generation method (3) will be described, but before that, the read-modify-write method and the all-stripe write method will be described. In the description, user data is represented as “D” and parity is represented as “P”.
例えば、ストライプ列に、旧D1、旧D2、旧D3、及び旧Pが格納されているとする。P=(D1) XOR (D2) XOR (D3)である。 For example, it is assumed that old D1, old D2, old D3, and old P are stored in the stripe row. P = (D1) XOR (D2) XOR (D3).
           
 旧D1のみが新D1に更新された場合、リードモディファイライト方式を採用可能である。リードモディファイライト方式では、以下の式で新Pが得られる。
新P=(旧D1) XOR (新D1) XOR (旧P)
When only the old D1 is updated to the new D1, the read-modify-write method can be adopted. In the read-modify-write method, a new P is obtained by the following formula. 
 New P = (old D1) XOR (new D1) XOR (old P)
        
           
 一方、全ストライプライト方式では,これらの例のように、D1(新D1または旧D1)、D2(新D2または旧D2)及びD3(新D3または旧D3)を用いて新Pが生成される。例えば、旧D1、旧D2及び旧D3が、それぞれ、新D1、新D2及び新D3に更新された場合、全ストライプライト方式を採用可能である。その場合、以下の式で新Pが得られる。
新P=(新D1) XOR (新D2) XOR (新D3)
On the other hand, in the all stripe write method, as in these examples, a new P is generated using D1 (new D1 or old D1), D2 (new D2 or old D2) and D3 (new D3 or old D3). . For example, when the old D1, the old D2, and the old D3 are updated to the new D1, the new D2, and the new D3, respectively, the all-stripe write method can be adopted. In that case, a new P is obtained by the following equation. 
 New P = (New D1) XOR (New D2) XOR (New D3)
        
           
 また、例えば、旧D3のみが新D3に更新された場合であっても、全ストライプライト方式を採用可能である。その場合,以下の式で新Pが得られる。
新P=(旧D1)XOR (旧D2) XOR (新D3)
Further, for example, even when only the old D3 is updated to the new D3, the all stripe write method can be adopted. In that case, a new P is obtained by the following equation. 
 New P = (old D1) XOR (old D2) XOR (new D3)
        
図22は、パリティ生成方式(3)に従うパリティ生成処理の流れを示す。なお、以下の説明では、リードモディファイライト方式を「RMW」と表記し、全ストライプライト方式を「ASW」と表記する。また、以下の説明では、対象のストライプ列には、D1、D2及びD3とPが格納されるとする。 FIG. 22 shows the flow of parity generation processing according to the parity generation method (3). In the following description, the read-modify-write method is expressed as “RMW”, and the all-stripe write method is expressed as “ASW”. In the following description, it is assumed that D1, D2, D3, and P are stored in the target stripe column.
           
 I/O制御プログラム401は、一時格納領域2001が未初期化であれば、一時格納領域2001を初期化する(S2201)。具体的には、例えば、I/O制御プログラム401は、ストライプ列内の全てのデータストライプ52D内のデータがゼロデータであると仮定した場合のパリティ(初期値)を一時格納領域2001に格納する。
If the 
           
 I/O制御プログラム401は、仮想ページライトポインタ管理テーブル418を参照し、ライト先の仮想ページ302についてのライトポインタがストライプ列の終端を越えているか否かを判断する(S2202)。
The I / O control program 401 refers to the virtual page write pointer management table 418 and determines whether or not the write pointer for the write destination 
           
 S2202の判断結果が真の場合(S2202:Y)、I/O制御プログラム401は、RMWとASWのいずれを選択するかを決定する(S2203)。S2203では、キャッシュメモリ領域430に上に存在するユーザデータ数に基づき、ディスクアクセス回数(SMR-HDD51へのアクセスの回数)が最小になる方式が選択される。RMWとASWのどちらを使うかによってディスクアクセス回数が異なるからである。例えば、新D1、新D2及び新D3がキャッシュ領域に存在しているのであれば、ASWが選択されることが好ましい。ディスクアクセスを発生させることなくパリティの生成が可能だからである。
When the determination result in S2202 is true (S2202: Y), the I / O control program 401 determines which of RMW and ASW is selected (S2203). In S2203, a method is selected that minimizes the number of disk accesses (the number of accesses to the SMR-HDD 51) based on the number of user data existing in the 
           
 S2203でRMWが選択された場合(S2203:RMW)、I/O制御プログラム401は、RMWに従い、一時格納領域2001内のパリティを基にパリティを生成し、生成されたパリティを、キャッシュパリティストライプ1701Pに格納する(S2204)。一方、S2203でASWが選択された場合(S2203:ASW)、I/O制御プログラム401は、ASWに従い、キャッシュストライプ列内の全てのユーザデータを基にパリティを生成し、生成したパリティを、キャッシュパリティストライプ1701Pに格納する(S2205)。
When RMW is selected in S2203 (S2203: RMW), the I / O control program 401 generates a parity based on the parity in the 
           
 さて、S2202の判断結果が偽の場合でも(S2202:N)、I/O制御プログラム401は、RMWとASWのいずれを選択するかを決定する(S2206)。S2206でも、S2203と同様、キャッシュメモリ領域430上に存在するユーザデータ数に基づき、ディスクアクセス回数が最小になる方式が選択される。
Now, even if the determination result of S2202 is false (S2202: N), the I / O control program 401 determines which of RMW and ASW to select (S2206). In S2206, as in S2203, the method that minimizes the number of disk accesses is selected based on the number of user data existing in the 
           
 S2206でRMWが選択された場合(S2206:RMW)、I/O制御プログラム401は、RMWに従い、一時格納領域2001内のパリティに基づいてパリティを生成し、生成されたパリティを一時格納領域2001に格納する(S2207)。一方、S2206でASWが選択された場合(S2203:ASW)、I/O制御プログラム401は、ASWに従い、キャッシュストライプ列内のユーザデータに基づいてパリティを生成し、生成されたパリティを一時格納領域2001に格納する(S2208)。
When the RMW is selected in S2206 (S2206: RMW), the I / O control program 401 generates a parity based on the parity in the 
           
 図23は、使用可能容量報告処理の流れを示す。この処理は、ホスト300からストレージコントローラ110が容量問合せを受けた場合に領域管理プログラム402により開始される。
FIG. 23 shows the flow of the available capacity reporting process. This processing is started by the area management program 402 when the 
           
 領域管理プログラム402は、データストライプ52Dの合計サイズを算出し(S2301)、算出された合計サイズを使用可能容量としてホスト300へ報告する(S2302)。つまり、使用可能容量には、ゾーン50内の不使用領域53の容量は含まれない。また、S2301の算出は、上述した(式1)の算出でもよい。
The area management program 402 calculates the total size of the 
以下、実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略又は簡略する。 Hereinafter, 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.
図24は、実施例2に係る記憶階層の一例を示す。 FIG. 24 shows an example of a storage hierarchy according to the second embodiment.
           
 実施例2では、分散RAIDが採用されない。RAIDグループとして、複数のSMR-HDD51で構成されたRAIDグループが採用される。
In the second embodiment, distributed RAID is not adopted. A RAID group composed of a plurality of SMR-
以下、実施例3を説明する。その際、実施例1及び2との相違点を主に説明し、実施例1及び2との共通点については説明を省略又は簡略する。 Hereinafter, Example 3 will be described. At that time, the differences from the first and second embodiments will be mainly described, and the description of the common points with the first and second embodiments will be omitted or simplified.
図25は、実施例3に係るアドレスマッピングの一例を示す。 FIG. 25 illustrates an example of address mapping according to the third embodiment.
           
 実施例3によれば、論理ボリューム151の下位に、仮想ボリューム141が存在しない。論理クラスタ701に、チャンクページ60における部分領域である下位クラスタ2501が割り当てられる。実施例3では、チャンクページ60に対してLog-Structured格納が行われる。Log-Structured格納が行われるチャンクページ60を含んだチャンクを構成する全てのパーセルが、シーケンシャルゾーンに含まれるパーセルでよい。
According to the third embodiment, the 
           
 論理クラスタ701と下位クラスタ2501との対応関係が、クラスタマッピングテーブル(但し、仮想クラスタ識別情報1002が下位クラスタ識別情報に差し替えられる)により管理される。下位クラスタ2501のサイズは、ブロック(例えば512B)の整数倍でよい。下位クラスタ2501のサイズは、可変でよい。
The correspondence relationship between the 
           
 実施例3では、RAIDグループは、図3を参照して説明した分散RAIDに従うRAIDグループ(すなわち、異なる複数のSMR-HDD51にそれぞれ存在する複数のパーセル41で構成されたRAIDグループ)であってもよいし、図24を参照して説明した通常のRAIDグループ(複数のHDDで構成されたRAIDグループ)であってもよい。
In the third embodiment, the RAID group is a RAID group according to the distributed RAID described with reference to FIG. 3 (that is, a RAID group configured by a plurality of 
以上、実施例1~3を説明したが、その説明を基に、下記のように総括することができる。なお、下記の総括では、上述の説明に無い事項が含まれていてもよいし、逆に上述の説明に存在する事項が含まれていなくてもよい。 As described above, the first to third embodiments have been described, and can be summarized as follows based on the description. In the following summary, matters not included in the above description may be included, and conversely, items existing in the above description may not be included.
<総括> <Summary>
           
 ストレージシステムの記憶容量を大きくするために、通常のHDDに代えてSMR-HDDを採用することが考えられる。SMR-HDDには、ゾーンと呼ばれる連続した論理的な記憶領域が定義される。ストレージシステムにより提供される論理ボリュームには、ゾーンの少なくとも一部を含んだ記憶領域が割り当てられることになる。そこで、以下の課題のうちの少なくとも1つが考えられる。
(課題1)ゾーンとゾーンよりも上位の記憶階層に属する領域との関係。
(課題2)ストレージシステムには、一般に、RAID構成が採用される。ゾーンとして、シーケンシャルゾーンがあるが、パリティが生じるRAIDレベル(RAID構成)について、1つのストライプ列に対応したユーザデータ及びパリティのセットがシーケンシャルに書き込まれるとは限らない。
(課題3)Thin Provisioningのような容量拡張機能をストレージシステムが有する場合、割り当てられたページにおけるライト先が、そのページの基になっているシーケンシャルゾーンのライトポインタを超えてしまう可能性がある。
In order to increase the storage capacity of the storage system, it is conceivable to adopt an SMR-HDD instead of a normal HDD. In the SMR-HDD, a continuous logical storage area called a zone is defined. A storage area including at least a part of a zone is allocated to the logical volume provided by the storage system. Therefore, at least one of the following problems can be considered. 
 (Problem 1) Relationship between a zone and an area belonging to a higher storage hierarchy than the zone. 
 (Problem 2) A RAID configuration is generally adopted for a storage system. There is a sequential zone as a zone, but for a RAID level (RAID configuration) where parity occurs, a set of user data and parity corresponding to one stripe column is not always written sequentially. 
 (Problem 3) When the storage system has a capacity expansion function such as Thin Provisioning, the write destination of the allocated page may exceed the write pointer of the sequential zone that is the basis of the page.
        
           
 課題1~3は、例えば、下記により解決される。なお、ストレージシステム100が有する複数のPDEVは、実施例では、典型的には複数のSMR-HDD51であるが、複数のPDEVは、複数のSMR-HDD51以外のPDEV、例えば、通常のHDDやSDDのようなランダムライト可能な論理領域を提供するPDEVを2以上含んでいてもよい。
           
 <課題1の解決>
ストレージコントローラ110が、ストライプ52を含む領域として提供されるパーセル41のサイズを、そのパーセル41を含むゾーン50のサイズと、仮想ページ302又は論理ページ301に関連付けられストライプ52を含む論理領域であるチャンクページ60のサイズと、そのパーセル41を含むチャンク(RAIDグループ)のRAIDレベルに従うデータストライプ数(1つのストライプ列におけるデータストライプ52Dの数)とに基づいて、決定する。パーセルサイズがゾーンサイズ未満の場合、ゾーン50とパーセル41との差分が、不使用領域53(ユーザデータ及びパリディのいずれも格納されることのない領域)となる。具体的には、上述の(式2)に従いパーセルサイズが決定される。
<Solution of 
 The 
           
 <課題2の解決>
(第1の解決)ストレージコントローラ110が、シーケンシャルゾーン50Sに含まれるパリティストライプ52Pに関連付けられたストライプ列については、全ストライプライト方式に従う書込みを実行する。
(第2の解決)ストレージコントローラ110が、パリティストライプ52Pを含んだゾーン50として、コンベンショナルゾーン50Cを採用する。
(第3の解決)ストレージコントローラ110が、シーケンシャルゾーン50Sに含まれるパリティストライプ52Pを含んだストライプ列について、キャッシュストライプ列内の全てのユーザデータが更新されるまで、パリティを、一時格納領域2001に格納(退避)する。つまり、ストレージコントローラ110は、ストライプ列についての一部の旧ユーザデータが新ユーザデータに更新された場合、旧ユーザデータ、新ユーザデータ及び旧パリティ(一時格納領域2001内のパリティ)を用いて新パリティを生成し、新パリティを一時格納領域2001に格納する。キャッシュストライプ列内の全てのユーザデータが新ユーザデータになった場合、ストレージコントローラ110は、その全ての新ユーザデータに基づく新パリティをパリティストライプ52Pに格納する。一時格納領域2001は、キャッシュメモリ領域430上に設けられてよい。一時格納領域2001のデステージ先は、ランダムライト可能な論理領域を提供するPDEVである。「ランダムライト可能な論理領域」は、例えば、SMR-HDD51におけるコンベンショナルゾーン50C、又は、SSDや通常のHDDのようなランダムライト可能なPDEVが提供する論理領域である。
<Solution of 
 (First Solution) The 
 (Second Solution) The 
 (Third Solution) For the stripe column including the 
           
 <課題3の解決>
ストレージコントローラ110は、論理ボリューム151に割り当てられる仮想ページ302として、ライトポインタが仮想ページ302の先頭LBAを指している仮想ページ302を選択し、選択した仮想ページ302を論理ボリューム151に割り当てる。すなわち、ストレージコントローラ110は、少なくとも1つの途中書き仮想ページ302(ライトポインタが先頭LBAを指していない仮想ページ302)にライトデータを書き込むことができるようであれば、その途中書き仮想ページ302にライトデータを追記するようになっている。言い換えれば、ストレージコントローラ110は、少なくとも1つの途中書き仮想ページ302にライトデータを書き込むことができるようであれば、新たに仮想ページ302を論理ボリューム151に割り当てることを抑止する。仮想ボリューム141が存在しない実施例では、仮想ページ302をチャンクページ60と読み替えることができ、チャンクページ60毎にチャンクページライトポインタが管理されてよい。
<Solution of 
 The 
以上、幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。 Although several embodiments have been described above, these are merely examples for explaining the present invention, and the scope of the present invention is not limited to these embodiments. The present invention can be implemented in various other forms.
100…ストレージシステム 100: Storage system
Claims (15)
複数のゾーン提供記憶デバイスを含む複数の記憶デバイスと、
前記複数の記憶デバイスに接続され、前記ホストシステムに論理ボリュームを提供し、1以上のチャンクに基づく複数のチャンクページのうちの少なくとも1つのチャンクページを前記論理ボリュームに直接的に又は間接的に割り当てるストレージコントローラと
を有し、
前記複数のゾーン提供記憶デバイスの各々は、複数のゾーンを提供し、
前記複数のゾーンの各々は、そのゾーンを提供するゾーン提供記憶デバイスに予め定義された連続した論理領域であり、
前記ストレージコントローラは、前記1以上のチャンクのうちの少なくとも1つのチャンクである第1のチャンクを、2以上のゾーン提供記憶デバイスが提供する2以上のゾーンを用いて構成する場合、前記2以上のゾーンの各々について、前記第1のチャンクに基づく2以上のチャンクページとアラインする領域を、チャンクの構成要素であるパーセルとする、
ストレージシステム。 A storage system connected to the host system,
A plurality of storage devices including a plurality of zone-providing storage devices;
Connected to the plurality of storage devices, providing a logical volume to the host system, and allocating at least one chunk page of a plurality of chunk pages based on one or more chunks directly or indirectly to the logical volume A storage controller,
Each of the plurality of zone providing storage devices provides a plurality of zones;
Each of the plurality of zones is a contiguous logical area predefined in a zone providing storage device that provides the zone;
In the case where the storage controller configures the first chunk, which is at least one of the one or more chunks, using two or more zones provided by two or more zone providing storage devices, For each of the zones, an area aligned with two or more chunk pages based on the first chunk is a parcel that is a component of the chunk.
Storage system.
請求項1記載のストレージシステム。 For each of the two or more zones, if there is an area that is not aligned with two or more chunk pages based on the first chunk, the storage controller defines the unaligned area as an unused area that is not a component of the chunk. To
The storage system according to claim 1.
前記複数のパーセルの各々が、複数のストライプで構成され、
前記複数のストライプ列の各々が、そのストライプ列を構成するチャンク内の2以上のパーセルにそれぞれ含まれている2以上のストライプで構成され、
ストライプとして、データが格納されるストライプであるデータストライプと、パリティが格納されるストライプであるパリティストライプとのうち、少なくともデータストライプがあり、
前記複数のチャンクページの各々が、複数のデータストライプに対応し、いずれのパリティストライプに対応しない、
請求項2記載のストレージシステム。 Each of the one or more chunks is composed of a plurality of parcels constituting a plurality of stripe columns,
Each of the plurality of parcels is composed of a plurality of stripes,
Each of the plurality of stripe rows is composed of two or more stripes respectively included in two or more parcels in a chunk constituting the stripe row,
As a stripe, there is at least a data stripe among a data stripe that is a stripe in which data is stored and a parity stripe that is a stripe in which parity is stored.
Each of the plurality of chunk pages corresponds to a plurality of data stripes and does not correspond to any parity stripe;
The storage system according to claim 2.
請求項3記載のストレージシステム。 For the first chunk, the storage controller determines the first chunk based on the size of the zone, the size of the chunk page, and the number of data stripes included in one stripe column according to the RAID level for the first chunk. Determine the size of parcels in one chunk,
The storage system according to claim 3.
前記使用可能容量は、前記1以上のチャンクの各々についてのパーセルのサイズに基づく容量である、
請求項1記載のストレージシステム。 The storage controller reports available capacity;
The usable capacity is a capacity based on a parcel size for each of the one or more chunks.
The storage system according to claim 1.
前記ストレージコントローラが、ライト先パリティストライプを含むストライプ列に対応した領域であって前記キャッシュメモリ領域内の領域にそのストライプ列に対応した全てのデータが書き込まれた後に、その全てのデータを基にパリティを生成してそのパリティを前記ライト先パリティストライプに格納し、
前記ライト先パリティストライプを含んだパーセルを含むゾーンが、ランダムライトは不可能でありシーケンシャルライトが可能なゾーンであるシーケンシャルゾーンである、
請求項1記載のストレージシステム。 The storage controller has a cache memory area;
The storage controller is an area corresponding to a stripe column including a write destination parity stripe, and after all the data corresponding to the stripe column is written to the area in the cache memory area, the storage controller Generating parity and storing the parity in the write destination parity stripe;
The zone including the parcel including the write destination parity stripe is a sequential zone that is a zone where random writing is impossible and sequential writing is possible.
The storage system according to claim 1.
請求項6記載のストレージシステム。 If the storage controller satisfies a predetermined parity generation condition before all data corresponding to a stripe column including the write destination parity stripe is written to all data stripes in the stripe column, an unwritten data stripe It is assumed that zero data is written, and parity is generated based on all data corresponding to the stripe column including the write destination parity stripe and the parity is stored in the write destination parity stripe.
The storage system according to claim 6.
前記ライト先パリティストライプを含んだパーセルを含むゾーンが、ランダムライトが可能なゾーンであるコンベンショナルゾーンである、
請求項1記載のストレージシステム。 The storage controller generates parity for the stripe column before or after the data of all the data stripes constituting the stripe column including the write destination parity stripe is written, and converts the parity to the write destination parity stripe. Store and
The zone including the parcel including the write destination parity stripe is a conventional zone in which random writing is possible.
The storage system according to claim 1.
前記ストレージコントローラが、
ライト先パリティストライプを含むストライプ列を構成する全てのデータストライプのデータが書き込まれる前に、そのストライプ列に関するパリティを前記一時格納領域内のパリティを基に更新してその更新後のパリティを前記一時格納領域に格納し、
前記ライト先パリティストライプを含むストライプ列を構成する全てのデータストライプのデータが書き込まれた後に、そのストライプ列に関するパリティを前記ライト先パリティストライプに格納し、
前記ライト先パリティストライプを含んだパーセルを含むゾーンが、ランダムライトは不可能でありシーケンシャルライトが可能なゾーンであるシーケンシャルゾーンである、
請求項1記載のストレージシステム。 The storage controller has a temporary storage area;
The storage controller is
Before the data of all the data stripes constituting the stripe column including the write destination parity stripe is written, the parity related to the stripe column is updated based on the parity in the temporary storage area, and the updated parity is updated to the temporary column. Store it in the storage area,
After data of all the data stripes constituting the stripe column including the write destination parity stripe is written, the parity related to the stripe column is stored in the write destination parity stripe,
The zone including the parcel including the write destination parity stripe is a sequential zone that is a zone where random writing is impossible and sequential writing is possible.
The storage system according to claim 1.
請求項1記載のストレージシステム。 Each of the two or more zones each including two or more parcels constituting the first chunk is a sequential zone that is a zone where random writing is impossible and sequential writing is possible.
The storage system according to claim 1.
前記仮想ボリュームは、それぞれチャンクページが割り当てられ得る複数の仮想ページで構成され、
前記複数の仮想ページの各々には、Log-Structured格納が採用され、
前記ストレージコントローラは、仮想ページライトポインタが指す位置と先頭とが一致する仮想ページを前記論理ボリュームに割り当てる、
請求項1記載のストレージシステム。 The storage controller manages virtual volumes under the logical volume;
The virtual volume is composed of a plurality of virtual pages to which a chunk page can be allocated,
Each of the plurality of virtual pages employs Log-Structured storage,
The storage controller assigns a virtual page whose position pointed to by the virtual page write pointer and the head match to the logical volume,
The storage system according to claim 1.
前記ストレージコントローラにより実行されるキャッシュ管理として、前記論理ボリューム内の領域と前記キャッシュメモリ領域内のスロットとの対応関係を管理する上位のキャッシュ管理と、前記仮想ボリューム内の領域と前記キャッシュメモリ領域内のスロットとの対応関係を管理する下位のキャッシュ管理とがあり、
前記ストレージコントローラは、前記論理ボリュームに対するデータ入出力のために、前記上位のキャッシュ管理に従うキャッシュスロットと前記下位のキャッシュ管理に従うキャッシュスロット間のデータコピーを実行する、
請求項11記載のストレージシステム。 The storage controller has a cache memory area composed of a plurality of cache slots;
As cache management executed by the storage controller, higher-level cache management that manages the correspondence between the area in the logical volume and the slot in the cache memory area, the area in the virtual volume, and the cache memory area There is a lower level cache management that manages the correspondence with the slot of
The storage controller executes data copy between a cache slot according to the higher-level cache management and a cache slot according to the lower-level cache management for data input / output with respect to the logical volume.
The storage system according to claim 11.
前記ストレージコントローラは、前記第1のチャンクに基づく前記2以上のチャンクページのうち、チャンクページライトポインタが指す位置と先頭とが一致するチャンクページを、前記論理ボリュームに割り当てる、
請求項1記載のストレージシステム。 Each of two or more chunk pages based on the first chunk employs Log-Structured storage,
The storage controller allocates, to the logical volume, a chunk page in which the position pointed to by the chunk page write pointer matches the beginning of the two or more chunk pages based on the first chunk.
The storage system according to claim 1.
請求項1記載のストレージシステム。 Each of the two or more zone providing storage devices is SMR (Shingled Magnetic Recording) -HDD (Hard Disk Drive).
The storage system according to claim 1.
前記2以上のゾーンの各々は、そのゾーンを提供するゾーン提供記憶デバイスに予め定義された連続した論理領域であり、
前記第1のチャンクに基づく2以上のチャンクページのうちの少なくとも1つのチャンクページを前記論理ボリュームに直接的に又は間接的に割り当てる、
記憶制御方法。 When the first chunk, which is at least one of the one or more chunks, is configured using two or more zones provided by two or more zone providing storage devices, for each of the two or more zones, The area aligned with two or more chunk pages based on the first chunk is a parcel that is a component of the chunk,
Each of the two or more zones is a contiguous logical region predefined in a zone providing storage device that provides the zone;
Allocating at least one of the two or more chunk pages based on the first chunk directly or indirectly to the logical volume;
Memory control method.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title | 
|---|---|---|---|
| PCT/JP2016/074691 WO2018037509A1 (en) | 2016-08-24 | 2016-08-24 | Storage system and storage control method | 
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title | 
|---|---|---|---|
| PCT/JP2016/074691 WO2018037509A1 (en) | 2016-08-24 | 2016-08-24 | Storage system and storage control method | 
Publications (1)
| Publication Number | Publication Date | 
|---|---|
| WO2018037509A1 true WO2018037509A1 (en) | 2018-03-01 | 
Family
ID=61245637
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date | 
|---|---|---|---|
| PCT/JP2016/074691 Ceased WO2018037509A1 (en) | 2016-08-24 | 2016-08-24 | Storage system and storage control method | 
Country Status (1)
| Country | Link | 
|---|---|
| WO (1) | WO2018037509A1 (en) | 
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title | 
|---|---|---|---|---|
| WO2021216128A1 (en) * | 2020-04-24 | 2021-10-28 | Western Digital Technologies, Inc. | Data parking for ssds with zones | 
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title | 
|---|---|---|---|---|
| JP2012531653A (en) * | 2009-10-09 | 2012-12-10 | 株式会社日立製作所 | Storage control device and virtual volume control method | 
| JP2014127029A (en) * | 2012-12-26 | 2014-07-07 | Toshiba Corp | Disk storage device and method | 
- 
        2016
        - 2016-08-24 WO PCT/JP2016/074691 patent/WO2018037509A1/en not_active Ceased
 
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title | 
|---|---|---|---|---|
| JP2012531653A (en) * | 2009-10-09 | 2012-12-10 | 株式会社日立製作所 | Storage control device and virtual volume control method | 
| JP2014127029A (en) * | 2012-12-26 | 2014-07-07 | Toshiba Corp | Disk storage device and method | 
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title | 
|---|---|---|---|---|
| WO2021216128A1 (en) * | 2020-04-24 | 2021-10-28 | Western Digital Technologies, Inc. | Data parking for ssds with zones | 
| CN114730291A (en) * | 2020-04-24 | 2022-07-08 | 西部数据技术公司 | Data parking of SSD with partitions | 
| US11409459B2 (en) | 2020-04-24 | 2022-08-09 | Western Digital Technologies, Inc. | Data parking for SSDs with zones | 
| US11847337B2 (en) | 2020-04-24 | 2023-12-19 | Western Digital Technologies, Inc. | Data parking for ZNS devices | 
Similar Documents
| Publication | Publication Date | Title | 
|---|---|---|
| US11941255B2 (en) | Storage system and data management method | |
| JP6073471B2 (en) | Storage device | |
| US10621083B2 (en) | Storage system and storage control method | |
| US9898196B1 (en) | Small block write operations in non-volatile memory systems | |
| US10691354B1 (en) | Method and system of disk access pattern selection for content based storage RAID system | |
| JP6062060B2 (en) | Storage device, storage system, and storage device control method | |
| WO2014102882A1 (en) | Storage apparatus and storage control method | |
| US20150212752A1 (en) | Storage system redundant array of solid state disk array | |
| WO2015162758A1 (en) | Storage system | |
| JP6677740B2 (en) | Storage system | |
| JP2016506585A (en) | Method and system for data storage | |
| US20120278560A1 (en) | Pre-fetching in a storage system that maintains a mapping tree | |
| JP6817340B2 (en) | calculator | |
| US10705907B1 (en) | Data protection in a heterogeneous random access storage array | |
| WO2015068233A1 (en) | Storage system | |
| US10740250B2 (en) | Storage apparatus | |
| US10713117B2 (en) | Storage system and method for controlling storage system | |
| WO2019026221A1 (en) | Storage system and storage control method | |
| WO2018037509A1 (en) | Storage system and storage control method | |
| WO2017212514A1 (en) | Storage system and storage control method | |
| WO2018002999A1 (en) | Storage device and storage equipment | |
| WO2018116392A1 (en) | Information processing system and information processing method | 
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: 16914183 Country of ref document: EP Kind code of ref document: A1 | |
| NENP | Non-entry into the national phase | Ref country code: DE | |
| NENP | Non-entry into the national phase | Ref country code: JP | |
| 122 | Ep: pct application non-entry in european phase | Ref document number: 16914183 Country of ref document: EP Kind code of ref document: A1 |