WO2018002999A1 - Storage device and storage equipment - Google Patents

Storage device and storage equipment Download PDF

Info

Publication number
WO2018002999A1
WO2018002999A1 PCT/JP2016/069077 JP2016069077W WO2018002999A1 WO 2018002999 A1 WO2018002999 A1 WO 2018002999A1 JP 2016069077 W JP2016069077 W JP 2016069077W WO 2018002999 A1 WO2018002999 A1 WO 2018002999A1
Authority
WO
WIPO (PCT)
Prior art keywords
storage
block
data
controller
ssd
Prior art date
Application number
PCT/JP2016/069077
Other languages
French (fr)
Japanese (ja)
Inventor
英通 小関
藤本 和久
Original Assignee
株式会社日立製作所
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2016/069077 priority Critical patent/WO2018002999A1/en
Publication of WO2018002999A1 publication Critical patent/WO2018002999A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/08Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers from or to individual record carriers, e.g. punched card, memory card, integrated circuit [IC] card or smart card

Definitions

  • the present invention relates to storage device control.
  • the storage apparatus has a large number of storage devices for storing data and a storage controller for controlling the storage devices, and is intended to provide a large-capacity data storage space to a computer.
  • An HDD Hard Disk Disk Drive
  • SSD Solid State
  • FM flash memory
  • the reclamation process is a process of generating a reusable block by erasing one or more blocks.
  • an SSD When erasing a block, the data on the page in use must be moved to another block. Therefore, as described in Patent Document 1, for example, an SSD generally has a physical storage capacity larger than the size of a logical address space provided to an initiator such as a host or a storage controller. This physical storage area exceeding the size of the logical address space is called a spare area. The SSD performs reclamation processing using a spare area.
  • SSD requires a spare block (spare area) for reclamation processing. If there are no spare blocks (depletion), the operation cannot be continued. As is well known, there is an upper limit on the number of times each block can be erased. When the number of erasable blocks exceeds the upper limit, the block cannot be used, and the spare area is reduced.
  • the number of erasures can be predicted to some extent by observing the usage trend of the SSD. Therefore, the use of the SSD with the increased number of erasures is stopped, and the data of the SSD is stored in another storage device. It is possible to continue operation by moving to. Rather, a problem is a failure that occurs suddenly (occurs at an unexpected timing).
  • F FM block or die quality varies. If the quality of certain blocks (or dies) is innately worse than others, some of these blocks (or dies) will fail suddenly, resulting in depletion of spare areas As a result, there is a possibility that the operation cannot be continued. However, it is difficult to detect such a sudden decrease in blocks in advance.
  • a storage device includes a device controller that provides a storage controller with a logical storage space of a predetermined size, and a nonvolatile semiconductor storage medium having a plurality of blocks that are data erasure units. Each block is configured so that the cells in the block can be changed from a state in which the cell is operating in the first mode capable of storing n-bit information to a second mode capable of storing m-bit (n ⁇ m) information. Has been.
  • the device controller manages, as a spare capacity, a storage area that exceeds the amount of the intra-block storage area required for allocation to the logical storage space among the usable storage areas in the block.
  • the usable storage area is increased by changing a part of the block being operated in the first mode to be operated in the second mode.
  • 12 is a flowchart of data read / write processing of the SSD controller according to the second embodiment. 12 is a flowchart of FM diagnosis processing of the SSD controller in the second embodiment. It is a figure explaining the outline
  • capacitance rebalance process. 10 is a flowchart of drive monitoring processing of a storage controller in Embodiment 2. It is a figure explaining the structure of the logical physical conversion table in Example 2. FIG. It is a figure explaining the structure of the block management table in Example 2. FIG.
  • the description is based on the premise that the storage device is an SSD.
  • the nonvolatile semiconductor storage medium included in the SSD is a flash memory (FM).
  • the flash memory is assumed to be a type of flash memory that is read / written in units of pages, typically a NAND flash memory.
  • the flash memory may be another type of flash memory instead of the NAND type.
  • other types of non-volatile semiconductor storage media such as phase change memory may be employed.
  • FIG. 1 is a time-series representation of the capacity change of the SSD according to the first embodiment.
  • the SSD in this embodiment is equipped with an FM capable of changing the cell mode.
  • the description will be made on the assumption that each cell can be operated in either a mode capable of storing n-bit data or a mode capable of storing m-bit data (where n ⁇ m). .
  • the mode in which the cell can store n-bit (2 bits) data is called the MLC (Multi-Level Cell) mode, and the mode in which the cell can store m-bit (3 bits) data. This is called a TLC (Triple-Level Cell) mode.
  • the MLC mode and the TLC mode are collectively referred to as “cell mode” or “mode”.
  • the SSD has a logical address space (LBA space) provided to an initiator such as a storage controller and a physical address space (PBA space) for storing actual data.
  • LBA space logical address space
  • PBA space physical address space
  • the size of the logical address space is the logical capacity
  • the size of the physical address space is the physical capacity.
  • a rectangular object 1000 represents a logical address space
  • objects 1001 and 1002 represent areas on the physical address space.
  • the lengths of the objects 1000, 1001, and 1002 represent the size (capacity) of the space. Therefore, in the description of FIG. 1, the objects 1000, 1001, and 1002 are referred to as a logical capacity 1000, a physical capacity 1001, and a physical capacity 1002, respectively.
  • the SSD provides the logical capacity 1000 to the initiator and has a physical address space (physical storage area) having a size equal to the sum of the physical capacities 1001 and 1002.
  • the physical capacities 1001 and 1002 are constructed in the MLC mode.
  • the physical capacity 1001 is the total capacity of physical areas (a set of cells) reserved for allocation to the logical address space, and is equal to the logical capacity 1000.
  • the physical capacity 1002 is an area that the SSD has beyond the physical capacity 1001 and is a kind of surplus area.
  • the physical capacity 1002 is the amount of physical storage area that the SSD has for that purpose, and is referred to as “reserve capacity” in this specification.
  • the state at time t2 shows a situation when a failure occurs in some blocks in the SSD and the spare capacity is reduced.
  • the physical storage area corresponding to the physical capacity 1004 is unusable due to a block failure. Even if some of the blocks become unusable, the logical capacity 1000 cannot be reduced, and the physical capacity to be allocated to the logical capacity 1000 is as much as the logical capacity 1000. Therefore, when some blocks become unusable, the reserve capacity is reduced by the amount of the unusable blocks. As a result, the reserve capacity 1002 existing at time t1 is reduced to the reserve capacity 1003 at time t2. If further block failure occurs from here, there is a high possibility that the reserve capacity will be exhausted. Here, the FM cell remains in the MLC mode.
  • the SSD controller that has recognized that there is a high risk of reserve capacity depletion expands (recovers) the reserve capacity by changing some cells from the MLC mode to the TLC mode.
  • the state at time t3 indicates the internal state of the SSD after the mode change is performed.
  • the SSD controller changes a part of blocks constituting the physical capacity 1001 (or physical capacity 1003) from the MLC mode to the TLC mode. Therefore, the MLC mode area is reduced from the physical capacity 1001 (and physical capacity 1003) to the physical capacity 1005. On the other hand, in the area of the difference between the physical capacity 1001 and the physical capacity 1005, the capacity has increased 1.5 times due to the TLC mode.
  • the areas correspond to physical capacities 1006 and 1007.
  • the SSD controller allocates physical capacities 1005 and 1006 (an area having a size equal to the logical capacity 1000) to a user data storage application, and uses the physical capacity 1007 as a spare capacity. As a result, the reserve capacity has expanded from the physical capacity 1003 at time t2 to the physical capacity 1007.
  • the SSD controller can expand the physical capacity by changing the cell mode when the reserve capacity decreases. As a result, the reduced reserve capacity can be recovered, and the risk of operation stoppage due to exhaustion of the reserve capacity can be avoided. Furthermore, in a series of processes, the logical capacity provided to the initiator such as the storage controller is not changed, so that the storage controller can continue operation without being influenced by the internal state of the SSD.
  • FIG. 2 is a diagram illustrating a configuration example of the storage system 10000 including the storage apparatus 1 according to the first embodiment.
  • the storage device 1 includes a storage controller 10 and a plurality of SSDs 21 connected to the storage controller 10.
  • the SSD 21 is a storage device for storing write data from an initiator such as the host 2, and is a storage device that employs a nonvolatile semiconductor memory such as a flash memory as a storage medium.
  • the internal configuration of the SSD 21 will be described later.
  • the SSD 21 is connected to the storage controller 10 by a transmission line (SAS link) conforming to the SAS (Serial Attached SCSI) standard, a transmission line (PCI link) conforming to the PCI (Peripheral Component Interconnect) standard, or the like.
  • SAS link SAS
  • PCI link Peripheral Component Interconnect
  • the storage apparatus 1 of this embodiment can be equipped with an HDD (Hard Disk Drive) 25 in addition to the SSD 21.
  • the HDD 25 is a storage device that uses a magnetic disk as a recording medium.
  • the HDD 25 is also connected to the storage controller 10 like the SSD 21.
  • the HDD 25 is also connected to the storage controller 10 by a SAS link or the like.
  • storage devices such as the SSD 21 and the HDD 25 installed in the storage apparatus 1 may be referred to as “drives”.
  • drives storage devices
  • One or more hosts 2 are connected to the storage controller 10.
  • a management host 5 is connected to the storage controller 10.
  • the storage controller 10 and the host 2 are connected via a SAN (Storage Area Network) 3 formed using a fiber channel as an example.
  • the storage controller 10 and the management host 5 are connected via a LAN (Local Area Network) 6 formed using Ethernet as an example.
  • the storage controller 10 includes at least a processor (CPU) 11, a host interface (denoted as “host I / F” in the figure) 12, a disk interface (denoted as “disk I / F” in the figure) 13, a memory 14, a management I / F 15 for use.
  • the processor 11, host IF 12, disk IF 13, memory 14 and management I / F 15 are interconnected via an internal switch (internal SW) 16.
  • internal SW internal switch
  • FIG. 2 a plurality of these components may be mounted in the storage controller 10 in order to achieve high performance and high availability. Further, instead of the internal SW 16, the components may be connected to each other via a common bus.
  • the disk I / F 13 has at least an interface controller and a transfer circuit.
  • the interface controller is a component for converting a protocol (SAS in one example) used by the SSD 21 into a communication protocol (PCI-Express as an example) used in the storage controller 10.
  • the transfer circuit is used when the storage controller 10 transfers data (read, write) to the SSD 21.
  • the host I / F 12 has at least an interface controller and a transfer circuit, like the disk I / F 13.
  • the interface controller included in the host I / F 12 converts a communication protocol (for example, fiber channel) used in the data transfer path between the host 2 and the storage controller 10 and a communication protocol used in the storage controller 10. belongs to.
  • the processor 11 performs various controls of the storage device 1.
  • the memory 14 is used to store programs executed by the processor 11 and various management information of the storage device 1 used by the processor 11.
  • the memory 14 is also used for temporarily storing I / O target data for the SSD 21.
  • the storage area in the memory 14 used for temporarily storing the I / O target data for the SSD 21 is referred to as “cache”.
  • the memory 14 is configured by a volatile storage medium such as DRAM or SRAM. However, as another embodiment, the memory 14 may be configured by using a nonvolatile memory.
  • FIG. 3 is a diagram for explaining the volume configuration of the storage system.
  • the capacity virtualization function is a technique for providing a virtual capacity larger than the physical capacity of the storage apparatus to the host computer as a virtual volume. Details will be described below with reference to FIG.
  • the storage device 1 is equipped with SSDs 21-1 to 21-3.
  • the SSD 21-1 has a logical address space presented to the storage controller 10 and a physical address space for storing actual data.
  • the size of the logical address space is the logical capacity
  • the size of the physical address space is the physical capacity.
  • the association between the area on the logical address space and the area on the physical address space can be dynamically changed, and is managed by a logical-physical conversion table 1100 described later.
  • the physical address space is composed of a plurality of blocks 211 described later.
  • the block 211 is used in either the MLC mode (“M” in the figure) or the TLC mode (“T” in the figure).
  • the SSD 21 can change the cell mode for each block 211.
  • the storage controller 10 forms a RAID group (RG) 30-1 using the logical address space provided by the SSDs 21-1 to 21-3. Although not shown, the RAID group 30-2 is configured using another SSD. Further, the storage controller 10 makes the two RAID groups 30-1 and 30-2 belong to a management unit called a pool 35.
  • the pool 35 is a set of storage areas that can be allocated to virtual chunks of a virtual volume to be described later.
  • the storage controller 10 manages the storage area of the RAID group by dividing it into partitions of a predetermined size. This partition is called “chunk”. A chunk 31 is created in the RAID group 30-1, and a chunk 32 is created in the RAID group 30-2.
  • the storage device 1 is connected to the host computer 2 and provides the virtual volume 40 to the host computer 2.
  • the virtual volume 40 is a virtual volume formed by the capacity virtualization function.
  • the storage controller 10 receives a write request for the virtual volume 40 from the host computer 2, the storage controller 10 allocates an arbitrary chunk in the pool 35 to the virtual chunk 41 of the virtual volume 40 and writes data associated with the write request to the chunk.
  • the storage device 1 manages a plurality of SSDs 21 as one RAID group.
  • one (or two) SSDs 21 in the RAID group fail and data access becomes impossible, the data stored in the failed SSD 21 is stored using the data in the remaining SSDs 21. I am trying to recover.
  • SSD # 0 (20-0) to SSD # 3 (20-3) respectively represent logical address spaces provided by the SSD 21 to the storage controller 10.
  • the storage controller 10 forms one RAID group 30 from a plurality (four in the example of FIG. 4) of SSDs 21, and the logical address space (SSD # 0 (20-0) to SSD) of each SSD belonging to the RAID group 30 # 3 (20-3)) is divided into a plurality of fixed-size storage areas called stripe blocks (301) for management.
  • FIG. 4 shows an example in which the RAID level of the RAID group 30 (representing the data redundancy method in the RAID technology and generally having RAID levels of RAID1 to RAID6) is RAID5.
  • boxes such as “0”, “1”, and “P” in the RAID group 20 represent stripe blocks.
  • a number such as “1” assigned to each stripe block is referred to as a “stripe block number”.
  • a stripe block described as “P” in the stripe block is a stripe block in which redundant data (parity) is stored, and this is called a “parity stripe”.
  • a stripe block in which numbers (0, 1, etc.) are written is a stripe block in which data written from an initiator such as the host 2 (data that is not redundant data) is stored. This stripe block is called “data stripe”.
  • the stripe block located at the head of SSD # 3 (20-3) is the parity stripe 301-3.
  • the data stripe positioned at the head of each SSD (SSD # 0 (20-0) to SSD # 2 (20-2)) Redundant data is generated by performing a predetermined operation (for example, exclusive OR (XOR) or the like) on data stored in (striped blocks 301-0, 301-1, 301-2).
  • a predetermined operation for example, exclusive OR (XOR) or the like
  • each stripe block belonging to one stripe line is located at the same position in the logical address space of the SSDs 21-0 to 21-3, as in the stripe line 300 shown in FIG.
  • a stripe line is configured according to the rule of existing at (address).
  • the “chunk” described above is an area composed of a plurality of stripe lines continuously arranged in the RAID group, as shown in FIG. Further, the number of data stripes included in each chunk in the storage device 1 is the same.
  • one chunk 31 is a region composed of a plurality of stripe lines, but one chunk 31 may be configured to have only one stripe line.
  • a virtual chunk is a partition of a predetermined size on the storage space of a virtual volume.
  • One chunk is mapped to one virtual chunk.
  • the storage device 1 receives a data write request for a virtual chunk from the host 2, the storage device 1 stores the data in the mapped chunk.
  • the size of the virtual chunk is equal to the total size of all data stripes included in the chunk.
  • the storage controller 10 manages the storage area (chunk) allocated to the virtual chunk by recording the mapping between the virtual chunk and the chunk in a virtual volume management table 500 described later.
  • the storage controller 10 determines a storage area (chunk) on the SSD 20 to which data written to the area is to be written only when a write request for the area on the virtual chunk is received from the host 2. As the chunk determined here, one chunk is determined from among chunks not yet assigned to any virtual chunk (unused chunk).
  • the contents of these programs and management tables will be described below.
  • FIG. 5 is a diagram for explaining the configuration of the virtual volume management table.
  • the virtual volume management table 500 is a table for managing the mapping relationship between the virtual chunks in each virtual volume defined in the storage apparatus 1 and the chunks.
  • the virtual volume management table 500 has columns of virtual volume # 501, pool # 502, virtual volume LBA range 503, virtual chunk number 504, RAID group number 505, and chunk number 506. Each row (record) of the virtual volume management table 500 indicates that the chunk specified by the RAID group number 505 and the chunk number 506 is mapped to the virtual chunk specified by the virtual volume # 501 and the virtual chunk number 504. To express.
  • not only the virtual volume management table 500 but also each row of a table for managing various information is referred to as a “record”.
  • NULL invalid value
  • Pool # 502 stores the identification number of the pool to which the chunk that can be allocated to the virtual volume belongs. That is, the chunks that can be allocated to the virtual chunks of the virtual volume identified by the virtual volume # 501 are limited to the chunks (or RAID groups) belonging to the pool # 502 in principle.
  • the virtual volume LBA range 503 is information indicating which range on the virtual volume the virtual chunk specified by the virtual chunk number 504 corresponds to. As an example, in the row (record) 500-1 of FIG. 5, the virtual volume LBA range 503 is “0x0500 to 0x09FF” and the virtual chunk number 504 is “2”. This indicates that the LBA of volume # 0 corresponds to the area from 0x0500 to 0x09FF.
  • FIG. 6 is a diagram for explaining the configuration of the pool management table.
  • the pool is managed by a pool management table 550.
  • the pool management table 550 includes columns of pool # 551, RG # 552, chunk # 553, RAID group LBA 554, status 555, and remaining capacity 556.
  • each record is for storing information about a chunk.
  • RG # 552 of each record represents the RAID group number of the RAID group to which the chunk belongs
  • pool # 551 represents the pool number of the pool to which the chunk belongs.
  • pool # 551 represents the pool number to which the RAID group specified by RG # 552 belongs.
  • the RAID group LBA 554 of each record is information indicating in which range on the RAID group the chunk is positioned.
  • the status 555 is information indicating whether the chunk is assigned to the virtual chunk (whether mapped). When “assigned” is stored in the status 555, it indicates that the chunk is assigned to the virtual chunk. Conversely, when “unallocated” is stored in the status 555, it means that the chunk is not allocated to the virtual chunk.
  • the remaining capacity 556 is a total value of unused capacity of the RAID group in the pool, and is equal to the total value of the capacity of chunks whose status 555 is “unallocated”. Note that the storage apparatus 1 according to the present embodiment manages the remaining capacity 556 for each RAID group.
  • the storage apparatus 1 may manage the remaining capacity for each pool.
  • FIG. 7 is a diagram for explaining the configuration of a RAID group management table.
  • the RAID group is managed by a RAID group management table 650.
  • the RAID group management table 650 includes columns of RG # 651, RAID level 652, drive number 653, drive attribute 654, RAID group LBA655, drive logical capacity 656, and average data compression rate 657.
  • RG # 651 stores the RAID group number of the RAID group.
  • the RAID level 652 indicates the RAID configuration of the RAID group.
  • the drive number 653 stores an identifier of the SSD 21 belonging to the RAID group specified by RG # 651.
  • the drive attribute 654 indicates whether the drive specified by the drive number 653 is an active drive or a spare drive.
  • the active drive means a drive that currently stores user data, and “active” is set in the drive attribute 654 of the active drive.
  • One spare drive is a drive that starts operation as an alternative drive when the active drive fails. “Spare” is set in the drive attribute 654 of the spare drive.
  • the RAID group LBA 655 is information indicating which area on the RAID group each area of the SSD 21 specified by the drive number 653 is positioned.
  • the drive logical capacity 655 indicates the capacity (logical capacity) of the drive.
  • the average data compression rate 657 is information indicating how much data transferred by the storage controller 10 is reduced when the drive has a data compression function. In the first embodiment, it is assumed that the data compression function is invalidated. Therefore, “N / A” indicating an invalid state is stored in FIG.
  • FIG. 8 is a diagram illustrating a configuration example of the SSD 21.
  • the SSD 21 includes an SSD controller 200 and a plurality of FM chips 210.
  • the SSD controller 200 includes a processor (CPU) 201, a disk I / F 202, an FM chip I / F 203, a memory 204, a parity operation circuit 206, and a compression / decompression circuit 207, which are interconnected via an internal connection switch 205. Has been.
  • the disk I / F 202 is an interface controller for performing communication between the SSD 21 and the storage controller 10.
  • the disk I / F 202 is connected to the disk I / F 13 of the storage controller 10 via a transmission line (SAS link or PCI link).
  • the FM chip I / F 203 is an interface controller for performing communication between the SSD controller 200 and the FM chip 210.
  • the FM chip I / F 203 has a function of generating ECC (Error Correcting Code), error detection using the ECC, and error correction.
  • ECC Error Correcting Code
  • a BCH code, an LDPC (Low Density Parity Check) code, or the like may be used.
  • the FM chip I / F 203 When the data is transmitted (written) from the SSD controller 200 to the FM chip 210, the FM chip I / F 203 generates an ECC. The FM chip I / F 203 adds the generated ECC to the data, and writes the data with the ECC added to the FM chip 210.
  • the SSD controller 200 reads data from the FM chip 210
  • the data with the ECC added is read from the FM chip 210
  • the data with the ECC added arrives at the FM chip I / F 203.
  • the FM chip I / F 203 performs a data error check using the ECC (generates an ECC from the data, and checks whether the generated ECC matches the ECC added to the data), and a data error is detected. In this case, data correction is performed using ECC.
  • the CPU 201 performs processing related to various commands coming from the storage controller 10.
  • the memory 204 stores a program executed by the processor 201 and various management information. A part of the memory 204 is also used as a buffer for temporarily storing write data transmitted from the storage controller 10 together with a write command and data read from the FM chip 210.
  • an area used as a buffer in the area of the memory 204 is referred to as a “buffer area”.
  • a volatile memory such as a DRAM is used.
  • a nonvolatile memory may be used for the memory 204.
  • At least an SSD control program, a logical-physical conversion table 1100, a block management table 1150, and a configuration information management table 1300 are stored in the memory 204 of the SSD 21.
  • the parity operation circuit 206 is a circuit for creating parity data in the SSD 21.
  • the SSD 21 has a function of configuring a RAID group from a plurality of FM chips 210 and performing data recovery using RAID technology.
  • the parity calculation circuit 206 is hardware for generating redundant data (parity) in RAID technology.
  • the redundant data generated by the parity operation circuit 206 is expressed as “parity” or “parity data”, while the ECC generated by the FM chip I / F 203 is expressed as “ECC”.
  • the compression / decompression circuit 207 is a circuit for compressing and decompressing data. However, in the first embodiment, an example in which the SSD 21 does not compress data will be described. Therefore, in the SSD 21 according to the first embodiment, the compression / decompression circuit 207 may not be provided. A usage example of the compression / decompression circuit 207 will be described in a second embodiment.
  • FM chip 210 is a non-volatile semiconductor memory chip such as a NAND flash memory.
  • the FM chip 210 has a plurality of dies 213, and each die 213 has a plurality of cells 214.
  • the cell 214 is a memory element including a transistor or the like, and each cell 214 can hold one or a plurality of bits of data.
  • Write data from the SSD controller 200 is stored in the cell 214.
  • the amount of information (number of bits) that can be stored in the cell 214 can be changed by an instruction from the SSD controller 200.
  • reading / writing of data in the flash memory cannot be performed in units of cells 214.
  • a set of a plurality of cells 214 is performed for each area of a predetermined size (for example, 8 KB) called a page.
  • Data erasure is performed for each block 211 that is a set of pages.
  • SSD means a storage device having the same form factor as the HDD.
  • the SSD means a general storage device including a plurality of flash memories and a controller for controlling them, and the external shape is not limited to a general HDD or SSD form factor.
  • a nonvolatile semiconductor memory such as NOR or NAND may be used for the flash memory.
  • magnetoresistive memory MRAM Magnetic random access memory
  • resistance change memory ReRAM resistance random access memory
  • ferroelectric memory FeRAM Feroelectric random
  • Various semiconductor memories may be used.
  • FIG. 9 is an explanatory diagram of data arrangement in the SSD. This is equivalent to the case where the RAID group 30 in FIG. 4 is replaced with the SSD 21 and the SSD is replaced with the FM chip.
  • the unit of the stripe block (401-0, 401-1, 401-2, 401-3, etc.) is one physical page.
  • the RAID group may be configured such that the block 211, the die 213, or the FM chip 210 is a unit of a stripe block.
  • the SSD 21 When write data is written to a data stripe (physical page), the SSD 21 generates parity belonging to the same stripe line, writes write data to the data stripe, and stores parity in the parity stripe. Since the physical page cannot be overwritten, when updating the data stripe and parity stripe, an unused physical page in the chip is selected and data and parity are written to the unused physical page.
  • the physical capacity 1001 is equal to the size of the logical capacity 1000
  • the physical address space corresponding to the physical capacity 1001 is an area where write data from the storage controller 10 serving as the initiator can be stored.
  • the physical address space is a space composed of data stripes in the SSD 21 and does not include the capacity of the parity stripe in FIG.
  • the ECC generated by the FM chip I / F 203 is not included in the physical address space. Therefore, the total of the physical capacities 1001 and 1002 is in a relation that it is equal to the total capacity of the blocks 211 (or cells 214) used as data stripes among the blocks 211 in the SSD 21.
  • FIG. 10 is a diagram for explaining the configuration of the configuration information management table.
  • the configuration information management table 1300 mainly stores information related to the capacity of the SSD 21.
  • the configuration information management table 1300 includes columns of logical capacity 1301, block status 1302, number of blocks 1303, capacity 1304, spare capacity 1305, FM mode change threshold 1306, and average data compression ratio 1307.
  • the logical capacity 1301 indicates the size of the logical address space provided by the SSD.
  • the block status 1302, the number of blocks 1303, and the capacity 1304 indicate what state the FM block is currently in.
  • “normal (MLC mode)” indicates a block in a normal state and operating in the MLC mode
  • “normal (TLC mode)” indicates a block in a normal state and operating in the TLC mode
  • “Failure (MLC mode)” indicates each block in a failure state.
  • the configuration information management table 1300 illustrated in FIG. 10 indicates that 1000 blocks are operating in the normal state and in the MLC mode, and the capacity thereof is 1500 GB.
  • the number of blocks 1303 and the capacity 1304 in the row in which the block status 1302 is “normal (MLC mode)” respectively store the number of blocks that are operating in the normal state and in the MLC mode, and the total capacity of the blocks.
  • the number of blocks 1303 and the capacity 1304 in the row in which the block status 1302 is “normal (TLC mode)” respectively store the number of blocks operating in the normal state and the TLC mode, and the total capacity of the blocks.
  • the number of blocks 1303 and the capacity 1304 in the row where the block status 1302 is “failed” respectively store the number of blocks of the failed block and the total capacity of the blocks.
  • the block number 1303 and the capacity 1304 of the row in which the block status 1302 is “normal (MLC mode)” are respectively referred to as “the number of blocks in the normal state (MLC mode)” and “the block capacity in the normal state (MLC mode)”.
  • the number of blocks 1303 and the capacity 1304 of the row whose block status 1302 is “normal (TLC mode)” are “the number of blocks in the normal state (TLC mode)” and “the block capacity in the normal state (TLC mode)”, respectively.
  • the number of blocks 1303 and the capacity 1304 in the row whose block status 1302 is “failed” are respectively referred to as “number of blocks in failure state” and “block capacity in failure state”.
  • the spare capacity 1305 indicates the size of the spare capacity of the SSD.
  • the normal (MLC mode) block capacity is M
  • the normal (TLC mode) block capacity is T
  • the logical capacity is L
  • the reserve capacity 1305 is expressed by the following equation (1).
  • Reserve capacity 1305 M + TL (1) Is a value calculated by.
  • M in the initial state, about 30% to 40% of the physical area of the SSD is secured as a spare capacity, as in the case of a general SSD. If some blocks fail and cannot be used while using the SSD 21, the value of M (or T) decreases. Since L is a constant value (the logical capacity does not change), the reserve capacity 1305 is reduced as a result.
  • the FM mode change threshold value 1306 is a value for the SSD controller 200 to determine that a block mode change is necessary. When the value of the spare capacity 1304 falls below the value of the FM mode change threshold value 1306, the SSD controller 200 determines that there is a risk that the spare block will be exhausted, and the mode of some of the MLC mode blocks in the FM Make changes.
  • the average data compression rate 1307 is information indicating which data is compressed when the data compression function is enabled. However, in the first embodiment, “N / A” indicating an invalid state is stored in FIG. 10 in order to describe an example in which data compression is not performed.
  • the SSD 21 having the configuration information management table 1300 currently has a total physical capacity of 1875 GB, of which 150 GB is in a failure state and the remaining 1725 GB is in a normal state. Yes, of which 1500 GB is operating in MLC mode and 225 GB is operating in TLC mode.
  • the SSD 21 provides a capacity of 1000 GB to the user or the storage controller 10 as a logical capacity, and has a reserve capacity of 725 GB.
  • the physical capacity (capacity 1304, spare capacity 1305) shown in FIG. 10 represents the capacity of the block 211 used as the data stripe.
  • the number of blocks 1303 in FIG. 10 also represents the number of blocks 211 used as data stripes.
  • the SSD 21 may record the capacity of all blocks 211 in the SSD 21 in the capacity 1304 and the reserve capacity 1305, and record the number of all blocks 211 in the SSD 21 in the number of blocks 1303.
  • FIG. 11 is a diagram for explaining the configuration of the logical-physical conversion table.
  • the logical / physical conversion table 1100 is a table for managing the mapping between logical pages and physical pages managed by the SSD 21.
  • the SSD 21 employs a flash memory as a storage medium.
  • the minimum access (read, write) unit of the flash memory (FM chip 210) is a page (physical page).
  • the size of the physical page is, for example, 8 KB.
  • the SSD 21 according to the first embodiment manages the logical address space provided to the storage controller 10 by dividing the logical address space into areas of the same size as the physical page. An area having the same size as the physical page is called a “logical page”.
  • the SSD 21 according to the first embodiment maps one physical page to one logical page.
  • the SSD 21 manages each block in all the FM chips 210 with a unique identification number in the SSD 21, and this identification number is called a block number (block #).
  • block # Each physical page in the block is managed with a unique number in the block, and this number is called a physical page number (or physical page #).
  • physical page # By specifying the block # and the physical page #, the physical page in the SSD 21 is uniquely specified.
  • the SSD 21 manages each logical page in the SSD 21 by assigning a unique identification number in the SSD. This identification number is called a logical page number (logical page #).
  • the logical-physical conversion table 1100 stores information on block # and physical page # of a physical page mapped to a certain logical page for each logical page.
  • the logical-physical conversion table 1100 has columns of SSD LBA 1101, logical page # 1102, status 1103, block # 1104, and physical page # 1105, as shown in FIG. Each record of the logical-physical conversion table 1100 stores information about the logical page specified by the logical page # 1102.
  • the SSD LBA 1101 stores the LBA (range) on the logical address space provided by the SSD 21 to the storage controller 10 corresponding to the logical page.
  • the SSD 21 can convert the LBA included in the access request into a logical page # using the SSD LBA 1101 and the logical page # 1102.
  • block # 1104 and physical page # 1105 information for specifying the physical page mapped to the logical page (that is, block # and physical page #) is stored.
  • Status 1103 stores information indicating whether a physical page is mapped to a logical page. No physical page is mapped to the logical page of the SSD 21 in the initial state.
  • a physical page is mapped to a logical page to be written by the write request.
  • “assignment” is stored in the status 1103, it indicates that the physical page is mapped to the logical page.
  • unallocated is stored in the status 1103, it means that the physical page is not mapped to the logical page (at this time, the block # 1104 and the physical page # 1105 corresponding to the logical page are set to NULL). (Invalid value) is stored).
  • FIG. 12 is a diagram illustrating the configuration of the block management table.
  • the block management table 1150 is a table for managing the states of blocks and physical pages. Each record in the block management table 1150 stores information about a physical page in the SSD 21.
  • the block management table 1150 has columns of block # 1151, FM cell mode 1152, physical page # 1153, status 1154, and erase count 1155.
  • status 1154 is the same information as block # 1104, physical page # 1105, and status 1103 in the logical-physical conversion table 1100, respectively. That is, when a physical page is allocated to a logical page, the block # and physical page # of the allocated physical page are stored in block # 1104 and physical page # 1105 of the logical-physical conversion table 1100, and the status 1103 is “allocated”. Is stored. At the same time, “assignment” is also stored in the status 1154 (in the block management table 1105) of the assigned physical page.
  • the SSD 21 manages the block as an unusable block. Therefore, the SSD 21 stores “failure (blocked)” in the status 1154 of each physical page belonging to the block.
  • the FM cell mode 1152 is information indicating which mode the cell of the block is in, and the FM cell mode 1152 stores either “TLC” or “MLC” information. is doing. In the erase count 1155, the cumulative count of block erase is stored.
  • FIG. 13 is a flowchart of the storage controller task.
  • the storage controller task is realized by the CPU 11 of the storage controller 10 executing a storage control program.
  • the storage controller 10 periodically executes this task process.
  • the storage controller 10 determines whether a read or write request has been received from the host computer 2 (S10). If no request has been received (S10: No), S20 is performed next.
  • the storage controller 10 determines whether this request is a read or a write (S40). If this request is a read (S40: Read), the storage controller 10 executes a read process (S50), and then executes S20. Details of the read process will be described later (see FIG. 15). If this request is a write (S40: write), the storage controller 10 executes a write process (S60), and then executes S20. Details of the write processing will be described later (see FIG. 14).
  • the storage controller 10 executes a drive monitoring process (S20), and then makes a determination in S30. Details of the drive monitoring process will be described later (FIG. 20).
  • the storage controller 10 determines whether or not a request for stopping the storage apparatus 1 has been received (S30). When the stop request has been received (S30: Yes), the storage controller 10 executes the stop process of the storage apparatus 1 and ends the process (END). When the stop request has not been received (S30: No), the storage controller 10 repeats the process from S10 again.
  • FIG. 14 is a flowchart of storage controller write processing. Similar to the storage controller task, the write processing is also realized by the CPU 11 of the storage controller 10 executing the storage control program.
  • the host 2 transmits a write request and write data to the storage controller 10 (S61).
  • the storage controller 10 receives a write request from the host 2, the storage controller 10 starts a write process.
  • the storage controller 10 refers to the virtual volume management table 500 and the pool management table 550 to determine whether or not a chunk has been allocated to a virtual chunk including the write destination address of the virtual volume specified by the write request. (S62).
  • the storage controller 10 assigns the chunk to the virtual chunk (S63), and executes S64 after the chunk is assigned.
  • the storage controller 10 executes S64 without performing S63.
  • the storage controller 10 stores the write data in the cache and generates parity (S64).
  • the parity generated here is parity data of a parity stripe belonging to the same stripe line as the write data. Further, when it is necessary to read data or parity before update from the storage device (SSD 21) for parity generation, the processing is also performed.
  • the storage controller 10 transmits a write command and write data to the write destination storage device (S65).
  • the parity is also written to the storage device.
  • the storage controller 10 receives a write completion notification from the write destination storage device (S66).
  • the storage controller 10 transmits a completion response to the write request to the host 2 (S67).
  • the host 2 receives a completion response to the write request from the storage controller 10 (S68), and ends the processing (END).
  • the flow of the write process described here is an example, and each step may be executed in a different order.
  • a completion response is transmitted to the host 2.
  • the storage controller 10 performs processing in the order of transmitting a completion response to the host 2 immediately after storing the write data in the cache (S64) and then transmitting the write data and parity to the storage device. May be.
  • the storage apparatus 1 can store the write data transmitted from the host 2.
  • FIG. 15 is a flowchart of the storage controller read processing. The read process is also realized by the CPU 11 of the storage controller 10 executing a storage control program.
  • the host 2 sends a read request to the storage controller 10 (S51).
  • the storage controller 10 When the storage controller 10 receives a read request from the host 2, the storage controller 10 starts a read process. First, the storage controller 10 specifies a virtual chunk including the address of the virtual volume specified by the read request, specifies a chunk assigned to the virtual chunk, and stores the read destination from the storage devices constituting the chunk. A device is specified (S52). The storage controller 10 transmits a read command to the specified storage device (S53). Then, the storage controller 10 receives read data from the storage device (S54). The storage controller 10 stores the read data in the cache (S55). The storage controller 10 transmits a completion response to the read request and read data to the host 2 (S56). The host 2 receives a completion response and read data from the storage controller 10 (S57), and ends the processing (END).
  • the storage apparatus 1 can respond with read data in response to a read request from the host 2.
  • FIG. 16 is a flowchart of the SSD controller task.
  • the SSD controller task is performed by the CPU 201 of the SSD controller 200 executing the SSD control program.
  • the SSD controller task is executed periodically.
  • each process will be described with the SSD controller 200 as the subject. However, unless otherwise specified, it means that each process is executed by the CPU 201.
  • the SSD controller 200 first performs a process for a read or write request from the storage controller 10 as an initiator (S100). Details of the read / write processing will be described later (FIG. 17). Next, FM diagnosis processing for checking the presence or absence of a block failure is performed (S120), and then an FM for restoring the spare area as necessary. A depletion recovery process is executed (S140), and the determination of S160 is performed. Details of the FM diagnosis process will be described later (FIG. 18). Further, the FM depletion recovery process will be described later (FIG. 19).
  • the SSD controller 200 determines whether or not a request to stop the SSD 21 has been received from the storage controller 10. When the stop request has been received (S160: Yes), the SSD controller 200 executes the stop process of the SSD 21 and ends the process (END). When the stop request has not been received (S160: No), the SSD controller 200 repeats the process from S100 again.
  • the SSD 21 can store the write data transmitted from the storage controller 10 and read the read data. Further, the state of the FM chip 210 can be monitored, and the recovery process of the spare capacity can be executed according to the result.
  • FIG. 17 is a flowchart of data read / write processing of the SSD controller. Similar to the SSD controller task, the CPU 201 of the SSD controller 200 executes the SSD control program, thereby realizing data read / write processing.
  • the data access size specified by the access request (read request or write request) requested by the storage controller 10 to the SSD 21 is the size of one logical page. An example will be described in which the range on the logical address space specified by the access request matches the logical page boundary.
  • the SSD controller 200 determines whether a read or write request has been received from the storage controller 10 as an initiator (S101). If the request has not been received (S101: No), the SSD controller 200 ends this process. When the request from the storage controller 10 is received (S101: Yes), the SSD controller 200 determines the content of the request (S102).
  • the SSD controller 200 transfers data from the physical page storing the read target data to the buffer area based on the information in the logical-physical conversion table 1100. (S103). Next, the SSD controller 200 determines whether or not the read data is normally read based on the error detection result of the ECC circuit included in the FM chip I / F 203 (S104). If the data could not be read normally in S104, the SSD controller 200 determines that an uncorrectable error state in which an error due to ECC is impossible (S104: Yes), and proceeds to S105. On the other hand, when the data can be normally read in S104 (S104: no), the SSD controller 200 transfers the data in the buffer area to the storage controller 10 (S117), and ends a series of processing.
  • S104 uncorrectable error state in which an error due to ECC is impossible
  • the SSD controller 200 determines that the block to which the physical page storing the read target data belongs is in a failure state, and closes the block (S105). Next, the SSD controller 200 performs data recovery processing of the block using the parity data (S106), and transfers the read target data to the storage controller 10 from the recovered data (S108). Next, in order to store the recovered data, the SSD controller 200 secures one block of physical pages whose status 1153 is unallocated based on the information in the block management table 1150, and the recovered data is secured. Store in the block (S109).
  • the SSD controller 200 After S109, the SSD controller 200 performs an update operation of various tables (the logical physical conversion table 1100, the block management table 1150, and the configuration information management table 1300) (S110). In particular, in S110, the SSD controller 200 adds 1 to the number of failed blocks 1303 in the configuration information management table 1300, and adds the capacity of one block to the failed block capacity 1304. When the blocked block is in the MLC mode, the SSD controller 200 subtracts 1 from the number of blocks 1303 in the normal state (MLC mode) and subtracts the capacity for one block from the block capacity 1304 in the normal state (MLC mode).
  • MLC mode normal state
  • MLC mode the capacity for one block from the block capacity 1304 in the normal state
  • the SSD controller 200 updates (subtracts) the reserve capacity 1305. After S110, the SSD controller 200 ends the process.
  • the SSD controller 200 when the request received in S102 is a write command (S102: write command), the SSD controller 200 first stores the write target data in the buffer area (S111), and then stores the data in the block management table 1150. Based on the information, the physical page whose status 1153 is not allocated is specified, and the data stored in the buffer area is stored in the specified physical page (S113). Furthermore, the SSD controller 200 generates a parity stripe on the same stripe line as the physical page in which data is stored, selects one unassigned physical page to store the generated parity stripe, and selects the selected physical page. Parity data is written in the physical page (S114). Thereafter, the SSD controller 200 returns a notification (response) of the completion of processing related to the write command to the storage controller 10 (S115).
  • S102 write command
  • the SSD controller 200 After S115, the SSD controller 200 performs S110.
  • the SSD controller 200 updates the logical-physical conversion table 1100 and the block management table 1150 in S110.
  • FIG. 18 is a flowchart of the FM diagnosis process of the SSD controller. Similar to the SSD controller task, the CPU 201 of the SSD controller 200 executes the SSD control program, thereby realizing FM diagnosis processing.
  • the SSD controller 200 determines whether there is a block that needs to be diagnosed (S121). For example, this processing may be performed periodically at specific time intervals (cycles) or when a specific command such as an execution instruction from the storage controller 10 is received, the number of block erasures, or page access It may be executed when a specific event occurs, such as when the number of times reaches N times.
  • the SSD controller 200 ends the process (END).
  • the SSD controller 200 selects a block to be inspected (S122), and reads the data of the page in the handling block (S123). Thereafter, S124 is performed. In S123, the SSD controller 200 does not need to read all pages. For example, only the physical page allocated to the logical page or only a specific physical page having an even or odd physical page number is read. Also good.
  • the SSD controller 200 determines whether there is a page in which an uncorrectable error has occurred due to a sudden hardware failure or the like. If there is a page where an uncorrectable error has occurred (S124: Yes), the SSD controller 200 closes the block (S127). Next, the parity data is used to recover the data in the block (S128), and the recovered data is stored in another block (S129). Thereafter, various tables are updated (S130). The processing of S127 to S130 is the same as S105 to S110 except that data transmission to the storage controller 10 (S108) is not performed. Thereafter, S121 is performed again.
  • the SSD controller 200 executes S125.
  • S125 the SSD controller 200 determines whether or not the number of error bits generated on the inspection target page is greater than a predetermined threshold. If the number of generated error bits is not greater than the predetermined threshold value in S125 (S125: no), the SSD controller 200 performs the process from S121 again. On the other hand, when the number of generated error bits is larger than the predetermined threshold (S125: Yes), the SSD controller 200 performs a refresh process on the block (S126), and then executes S130.
  • “refresh” means a process of reading data stored in a physical page (or block) and moving it to another physical page (block). Therefore, in S130, the logical / physical conversion table 1100 and the block management table 1150 are updated. However, when S130 is executed after S126, the block of block is not generated, and the configuration information management table 1300 is not updated.
  • FIG. 19 is a flowchart of the FM depletion recovery process of the SSD controller. Similar to the SSD controller task, the CPU 201 of the SSD controller 200 executes the SSD control program, thereby realizing FM depletion recovery processing.
  • the SSD controller 200 refers to the configuration information management table 1300 to determine whether or not the spare capacity is almost exhausted (S141). Specifically, when the value of the reserve capacity 1305 is below the FM mode change threshold value 1306, the SSD controller 200 determines that the reserve capacity is almost exhausted. If it is determined in S141 that the depletion is not near (S141: No), the process ends.
  • the SSD controller 200 determines whether there is a block whose cell mode can be changed based on the block management table 1150 (S142). ). If the status 1154 is not “failure”, but the FM cell mode 1152 has only a “TLC” block (S142: No), the SSD controller 200 determines that there is no mode changeable cell and ends the process. To do. On the other hand, when the status 1154 is not “failure” and there is a block whose FM cell mode 1152 is “MLC” (S142: Yes), the SSD controller 200 determines that there is a cell whose mode can be changed, and executes S143. To do.
  • the SSD controller 200 expands the physical capacity by changing the cell mode of some blocks from MLC to TLC.
  • the SSD controller 200 can arbitrarily determine the number of blocks whose cell mode is changed. However, at least the number of blocks necessary for the reserve capacity 1305 to exceed the FM mode change threshold 1306 is changed from the MLC mode to the TLC mode.
  • the cell mode of a block in use (a block having a physical page assigned to a logical page) may be changed. However, in that case, the SSD controller 200 changes the cell mode after moving the physical page data allocated to the logical page among the physical pages in the block to an unused physical page. If the data is moved to an unused physical page, the mapping between the logical page and the physical page is changed, so that the logical-physical conversion table 1100, the block management table 1150, etc. are updated (in step S144 described later). )
  • the SSD controller 200 updates the configuration information management table 1300 and, if necessary, updates the logical-physical conversion table 1100 and the block management table 1150 (S144). Further, the SSD controller 200 notifies the storage controller 10 that the FM cell mode has been changed and that the cause is a block failure (S145), and ends this processing.
  • the notification transmitted from the SSD 21 to the storage controller 10 in S145 is referred to as “mode change notification”.
  • the mode change notification includes information included in the configuration information management table 1300. Therefore, the storage controller 10 can grasp the state of the SSD 21 in detail by receiving the mode change notification.
  • FIG. 20 is a flowchart of storage controller drive monitoring processing. Similar to the storage controller task, the drive monitoring process is also realized by the CPU 11 of the storage controller 10 executing the storage control program.
  • Storage controller 10 determines whether a mode change notification has been received from SSD controller 200 (S21). If no mode change notification has been received (S21: No), this process ends. If a mode change notification has been received (S21: Yes), the storage controller 10 determines whether there is room for expanding the physical capacity (S22).
  • the storage controller 10 When S22 is performed, the storage controller 10 receives the information of the configuration information management table 1300 from the SSD 21 (SSD controller 200) together with the mode change notification. Therefore, the storage controller 10 uses the information in the configuration information management table 1300 to determine whether there is room for expanding the physical capacity (whether the normal state (MLC mode) block 1303 is greater than 0). If there is a normal block that is operating in the MLC mode (S22: Yes), it is determined that there is still room for enlargement, and this process is terminated. On the other hand, if it is determined in S22 that there is no room for enlargement (S22: No), the storage controller 10 next executes S23.
  • MLC mode normal state
  • the storage controller 10 has no remaining capacity for avoiding the risk of depletion of the spare capacity in the relevant SSD 21, so that if there is a further block failure, there is a risk that the spare capacity will be completely depleted. It is determined that the data is very high, data is copied to the spare drive, and the relevant SSD is blocked (S23).
  • S23 data is copied to the spare drive, and the relevant SSD is blocked.
  • RAID technology it is possible to execute access request processing to a drive and data movement to a spare drive in parallel (even if these two processes are performed in parallel, Some can be controlled to prevent data corruption and access to incorrect data).
  • an access request (read or write request) to the SSD 21 may be accepted in parallel with the processing of S23. Thereafter, this process is terminated.
  • the storage controller 10 determines whether the normal state (MLC mode) block 1303 is larger than a predetermined threshold. It may be determined whether or not. Alternatively, when the determination of S21 is affirmative (when the mode change notification is received), the storage controller 10 may always execute S23 without performing the determination of S22. This is because the SSD that issues the mode change notification is likely to be in a state where it cannot be used because the spare capacity is exhausted soon.
  • the storage device SSD
  • the storage apparatus when the reserve capacity decreases and falls below a predetermined threshold, a part of a block operated in the MLC mode (or a mode in which each cell can store n-bit data) is stored in the TLC.
  • the mode is changed to operate in a mode (or a mode in which each cell can store m-bit (m> n) data), and the reserve capacity is increased.
  • the SSD spare capacity is depleted and the SSD cannot be used.
  • the SSD when the SSD according to the present embodiment changes a part of the block operated in the MLC mode to the TLC mode, the SSD transmits a mode change notification to the storage controller of the storage apparatus.
  • the storage controller receives this notification, it moves the SSD data that issued the notification to the spare drive.
  • the SSD that issues the mode change notification that is, the SSD that has changed the mode of the cell is in a state where the spare capacity is small, and there is a high possibility that it cannot be used if a further failure occurs.
  • the storage controller moves the data of the SSD that has issued the mode change notification to the spare drive, it is possible to prevent a situation in which the data cannot be accessed even if a further failure occurs.
  • the storage controller may immediately move the data to the spare drive without changing the cell mode in the SSD. If a further failure occurs, the SSD cannot be used, and there is a possibility that data cannot be moved to the spare drive. Therefore, as explained in the present embodiment, it is more reliable that the storage controller moves the data to the spare drive after the SSD has changed the cell mode once to secure a certain spare capacity. It can be performed.
  • the configuration of the storage apparatus according to the second embodiment is the same as that described in the first embodiment.
  • the hardware configuration of the SSD according to the second embodiment is almost the same as that described in the first embodiment. Therefore, when specifying each component in a storage apparatus or SSD, it demonstrates using the same term (or reference number) used in Example 1.
  • FIG. 1
  • the SSD according to the first embodiment does not necessarily include the compression / decompression circuit 207, but the SSD according to the second embodiment always includes the compression / decompression circuit 207 or an equivalent thereof.
  • compression means a process of reducing the data size while maintaining the meaning of the data using a reversible compression algorithm such as the LZW algorithm.
  • the SSD 21 receives the write data from the storage controller 10, it compresses the data using the compression / decompression circuit 207 and stores the compressed data in the FM 210.
  • Data compressed by the compression / decompression circuit 207 is referred to as “compressed data”.
  • the SSD 21 receives a read request from the storage controller 10, the SSD 21 reads the compressed data from the FM 210, decompresses the compressed data using the compression / decompression circuit 207, and returns the data to the storage controller 10. That is, in the storage device 1 according to the present embodiment, data compression or expansion is performed transparently to the host 1 and the storage controller 10.
  • the definition of the compression rate in a present Example is as follows.
  • the compression ratio can be obtained by calculating “y ⁇ x”.
  • the value of the compression rate becomes smaller (takes a value close to 0).
  • the larger the data size after compression the larger the value of the compression ratio (takes a value close to 1). Therefore, in this embodiment, “small compression ratio” means that the compression efficiency is good and the data size after compression is small, and “high compression ratio” means that the compression efficiency is bad and the data size after compression is too small. It means not to be.
  • FIG. 21 is a diagram showing an outline of the second embodiment. Similar to FIG. 1, the change in the internal capacity of the SSD is expressed in time series. At time t1, the physical capacity 1021 is the size of the physical storage area required for allocation to the logical address space, and the physical capacity 1022 is a spare capacity. At time t1, the physical area corresponding to the physical capacities 1021 and 1022 is constructed in the MLC mode.
  • the logical capacity is determined in expectation that the size of data stored in the FM is reduced. Therefore, in the initial state, the logical capacity 1020 of the SSD is set to a value larger than the physical capacity 1021. This is because when the data actually stored in the physical capacity is reduced, an amount of data exceeding the physical capacity can be stored in the SSD.
  • the average value of the compression rate when general data is compressed by the compression / decompression circuit 207 (this is referred to as “assumed compression rate” in this specification.
  • the assumed compression rate is a predetermined constant.
  • the logical capacity is determined on the basis of In the initial state, if the assumed compression rate of data is a, the logical capacity 1020 is equal to the value obtained by the physical capacity 1021 ⁇ a.
  • the state at time t1 is a state in which data is written in the entire logical address space (or almost the entire region) and the compression rate of each data is the assumed compression rate (a). At this time, an amount of physical area corresponding to the physical capacity 1021 is mapped to the entire logical address space.
  • the logical capacity may be determined based on an index other than the average value of the compression rate.
  • the logical capacity may be determined on the assumption that all data is compressed at the minimum compression rate (this is b) that can be realized by the compression / decompression circuit 207.
  • the logical capacity is physical capacity 1021 / b.
  • the logical capacity is four times the physical capacity 1021.
  • T2 represents a case in which when the data already stored at t1 is overwritten and updated, the update data has changed to a data pattern that is difficult to compress (that is, the data compression rate has deteriorated).
  • the data compression rate deteriorates, the data size after compression increases.
  • the physical capacity required to store user data at t1 increases from the physical capacity 1021 to the physical capacity 1024.
  • the size of the physical capacity 1022 reserved as the spare capacity is reduced to the physical capacity 1025.
  • FIG. 26 is a configuration example of the logical-physical conversion table 1100 ′ included in the SSD 21 according to the second embodiment.
  • the SSD 21 according to the second embodiment includes a logical-physical conversion table 1100 'instead of the logical-physical conversion table 1100 (FIG. 11) included in the SSD 21 according to the first embodiment.
  • the SSD LBA 1101 to physical page # 1105 are the same as the logical / physical conversion table 1100 described in the first embodiment.
  • the logical / physical conversion table 1100 ′ further includes columns of Offset 1106 and Length 1107.
  • Offset 1106 represents a relative address (offset) where the top of the physical page is 0, and Length 1107 represents the length of the area.
  • the unit of the value stored in Offset 1106 and Length 1107 is a byte.
  • each row (record) of the logical-physical conversion table 1100 ′ is added to the logical page specified by the logical page # 1102, and the top of this physical page among the physical pages specified by the block # 1104 and the physical page # 1105. This indicates that an area of Length 1106 (bytes) starting from the position of Offset 1105 (bytes) to Allocation is allocated.
  • FIG. 27 is a configuration example of the block management table 1150 ′ included in the SSD 21 according to the second embodiment.
  • the SSD 21 according to the second embodiment has a block management table 1150 'instead of the block management table 1500 (FIG. 12) included in the SSD 21 according to the first embodiment.
  • the block management table 1150 ′ has columns of Offset 1156 and Length 1157 in addition to the columns of the block management table 1150 in the first embodiment.
  • Offset 1156 and Length 1157 are the same information as Offset 1106 and Length 1107 of the logical-physical conversion table 1100 ′.
  • Offset 1156 represents the relative address (offset) when the top position of the physical page is 0, and Length 1157 represents the length of the area. .
  • the unit of the value stored in Offset 1156 and Length 1157 is a byte.
  • each row of the block management table 1150 ′ indicates that the areas specified by Offset 1156 and Length 1157 among the areas of the physical page specified by block # 1151 and physical page # 1153 are allocated to the logical page. To express.
  • the difference between the configuration information management table 1300 in the second embodiment and the first embodiment will be described. Since the format of the configuration information management table 1300 included in the SSD 21 according to the second embodiment is the same as that described in the first embodiment, the illustration is omitted. However, the definition of the reserve capacity 1305 in the second embodiment is different from that described in the first embodiment.
  • the spare capacity 1305 has the normal (MLC mode) block capacity M, the normal (TLC mode) block capacity T, and the logical capacity L.
  • the reserve capacity 1305 is expressed by the following equation (2).
  • Reserve capacity 1305 Min (M + TL ⁇ a, M + TA) (2) The value calculated in Note that a is an assumed compression rate, A is the total capacity of physical pages allocated to the logical address space, and Min ( ⁇ , ⁇ ) means the smaller value of ⁇ and ⁇ .
  • the SSD 21 according to the second embodiment secures an area of about 30% to 40% as a spare capacity in the physical area of the SSD in the initial state.
  • A 0. Therefore, the reserve capacity is equal to “M + TL ⁇ a”.
  • M or T
  • M + TL ⁇ a the value of M (or T) decreases, resulting in “M + TL ⁇ a”.
  • the value (reserved capacity 1305) will decrease.
  • FIG. 22 is a flowchart of the data read / write processing of the SSD controller according to the second embodiment.
  • the main difference from FIG. 17 is that the data compression process is added before the data is stored in the FM in the write process (S112), and the data is decompressed before the data is transferred to the storage controller 10 in the read process. (S107 and S116).
  • the Offset 1106, Length 1107, Offset 1156, and Length 1157 are also updated.
  • the spare capacity 1305 is updated, the SSD controller 200 determines the spare capacity 1305 based on the equation (2) described above.
  • the compression rate of the SSD 21 may fluctuate. Therefore, in the management information update process (S110) performed after S115, the SSD controller 200 obtains the data compression rate and updates the content of the average data compression rate 1307.
  • the compression rate can be obtained, for example, by performing the following calculation. In the area on the logical address space, X is the number of logical pages to which physical pages are allocated, and Y is the number of physical pages allocated to logical pages. At this time, “Y ⁇ X” is the compression rate. Both X and Y can be counted by referring to the logical-physical conversion table 1100 '.
  • the process illustrated in FIG. 22 is an example, and may be executed by a procedure other than this.
  • each time a write command is received compressed data is written to a physical page. Therefore, an unused area (an area where received data is not written) is written in the latter half of the physical page. ) Remains. Since the minimum write unit of the FM 210 is a physical page, data cannot be written into this unused area later. Therefore, the SSD controller 200 may accumulate the write data after compression in the buffer area and perform S115 (return of completion notification) before executing S113 and S114. Then, the SSD controller 200 may execute S113 and S114 when compressed data of one physical page or more is accumulated in the buffer area. Thereby, a lot of compressed data can be stored in one physical page.
  • FIG. 23 is a flowchart of the FM depletion recovery process of the SSD controller according to the second embodiment.
  • the compression rate of stored data deteriorates as an execution factor of the reserve capacity recovery process due to the change of the cell mode, in addition to the case of the block failure described in the first embodiment.
  • the difference between the FM depletion recovery process according to the second embodiment and the process described in the first embodiment (FIG. 19) is that the FM depletion recovery process according to the second embodiment updates the internal information after changing the FM cell mode.
  • a process (S146) for determining the cause of the shortage of the spare capacity is added.
  • the SSD controller 200 refers to the average data compression ratio 1307 and the number of failed blocks 1303 (or failed block capacity 1304) in the configuration information management table 1300, and the deterioration of the data compression ratio is a cause of the exhaustion of the spare capacity. Alternatively, it may be determined whether the increase in the number of failed blocks is the cause of exhaustion of the spare capacity. If the cause is a deterioration of the data compression rate (S146: deterioration of the data compression rate), the SSD controller 200 informs the storage controller 10 to that effect (S147).
  • the storage controller 10 when the storage controller 10 detects an SSD in which the cell mode has been changed due to the deterioration factor of the data compression rate in the drive monitoring process, the storage controller 10 avoids the depletion of the spare capacity due to the further deterioration of the data compression rate. Then, a capacity rebalancing process is performed in which a part of the data of the SSD is moved to another SSD.
  • the outline will be described with reference to FIG.
  • capacity rebalancing is performed by means of moving data in chunk units, not SSD units.
  • RG30-1 is a RAID group to which the SSD that has changed the cell mode belongs, and has a large amount of data storage.
  • the RG 30-2 is a RAID group with a small data storage amount. Therefore, the storage controller 10 reduces the data storage amount of the RG 30-1 by moving the data of the chunk 31 belonging to the RG 30-1 to the chunk 32 belonging to the RG 30-2. Along with this, a reduction in the data storage amount of the SSD belonging to RG 30-1 is realized. Note that the above-described chunk movement is performed transparently to the host 2 by the capacity virtualization function of the storage controller.
  • FIG. 25 is a flowchart of the drive monitoring process of the storage controller in the second embodiment.
  • the storage controller 10 determines whether or not a cell mode change notification is received from the SSD controller 200 (S21). When the notification has not been received (S21: No), this process ends. If a notification has been received in S21 (S21: Yes), the storage controller 10 analyzes the factor (S24). If the cause is a block failure (S24: block failure), the storage controller 10 executes S22 and S23, and the post-execution processing of S23 ends. Since the processing contents of S22 and S23 have already been described in the first embodiment, description thereof is omitted here.
  • the storage controller 10 determines whether or not the capacity rebalancing can be executed (S25). More specifically, in S25, the storage controller 10 refers to the pool management table 550 and determines whether there is a RAID group with a sufficient capacity (a RAID group whose remaining capacity 556 is equal to or greater than a predetermined threshold value). Determine if it exists). If another RAID group with sufficient capacity exists (S25: Yes), the storage controller 10 moves some chunks of data to the RAID group with sufficient capacity (S26), and ends this process. To do.
  • the storage controller 10 displays a notification requesting capacity addition to the pool on the display screen of the management host 5, The user is prompted to add a storage area to the pool (S27). After the user adds a storage area (RAID group) to the pool, the storage controller 10 moves some chunks of data to the pool with the storage area added (S28). After S28, this process ends.
  • the case where only the physical capacity is increased when the cell mode is changed has been described.
  • the logical capacity may be increased simultaneously.
  • the SSD compresses data using the compression / decompression circuit 207 and reduces the amount of data stored in the FM.
  • the CPU 201 uses the lossless compression algorithm. May be configured to perform data compression or decompression.
  • duplication of data is performed.
  • the amount of data stored in the FM may be reduced by performing the exclusion process.
  • Deduplication is a technique for reducing the amount of data by searching for the same data in the entire storage area and deleting the rest of the data, and can be said to be a data compression process in a broad sense. In that case, the deterioration of the data compression rate may be read as the deterioration of the deduplication rate.
  • the SSD may be configured to further reduce the amount of data stored in the FM by using both the deduplication process and the compression process using the lossless compression algorithm.
  • Each program (storage control program or SSD control program) that causes the CPU to execute the processing described above is provided by a program distribution server or a storage medium that can be read by a computer, and is installed in each device that executes the program. Also good.
  • the computer-readable storage medium is a non-transitory computer-readable medium such as a non-volatile storage medium such as an IC card, an SD card, or a DVD.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

A storage device according to an embodiment of the present invention comprises a device controller, which provides a logical storage space of a predetermined size to a storage controller, and a nonvolatile semiconductor storage medium having a plurality of blocks, which are data erase units. Further, each block is configured such that the cells in the block can be switched from operating in a first mode, in which the cells can store n-bit information, to operating in a second mode, in which the cells can store m-bit information (where n < m). The device controller manages, as reserve capacity, the portion of the combined available storage area of the plurality of blocks other than a selected storage area required to allocate the logical storage space, and if the reserve capacity becomes less than a predetermined threshold value, the device controller switches some of the blocks from operating in the first mode to operating in the second mode, thereby increasing available storage areas.

Description

記憶デバイス及びストレージ装置Storage device and storage device
 本発明は、記憶デバイスの制御に関する。 The present invention relates to storage device control.
 ストレージ装置は、データを格納する多数の記憶デバイスと、記憶デバイスを制御するストレージコントローラとを有しており、計算機に大容量のデータ格納空間を提供することを目的としている。 The storage apparatus has a large number of storage devices for storing data and a storage controller for controlling the storage devices, and is intended to provide a large-capacity data storage space to a computer.
 記憶デバイスとして、一般にHDD(Hard Disk Drive)が搭載されているが、近年、HDDに代わる新しい記憶媒体として、不揮発性半導体メモリ(例えば、FM:フラッシュメモリ)を有する記憶デバイス(例えばSSD:Solid State Drive)が注目されている。 An HDD (Hard Disk Disk Drive) is generally mounted as a storage device, but recently, a storage device (for example, SSD: Solid State) having a non-volatile semiconductor memory (for example, FM: flash memory) as a new storage medium replacing the HDD. Drive) is drawing attention.
 一般的に、多くのSSDはNAND型のFMチップを複数枚搭載しており、FMチップは、ページ(Page)と呼ばれる単位でデータのリードやライトを行う。FMはページに格納したデータを直接上書きすることが出来ないので、新たなデータを格納するには、リクラメーション処理を行うことで、データを一度消去する必要がある。なおデータの消去は、ブロック(Block)と呼ばれるページの集合体に対して実施される。 Generally, many SSDs are equipped with a plurality of NAND type FM chips, and the FM chips read and write data in units called pages. Since FM cannot directly overwrite the data stored in the page, it is necessary to erase the data once by performing a reclamation process in order to store new data. Note that erasure of data is performed on a collection of pages called a block.
 リクラメーション処理とは、1以上のブロックの消去を行うことで、再度利用可能なブロックを生成する処理である。ブロックを消去する際、使用中のページのデータは、別のブロックへ移動しなければならない。そのため、たとえば特許文献1に記載されているように、一般にSSDは、ホストやストレージコントローラなどのイニシエータに対して提供する論理アドレス空間のサイズよりも大きな物理記憶容量を持つ。この、論理アドレス空間のサイズを超える物理記憶領域は、予備領域と呼ばれる。SSDは予備領域を用いて、リクラメーション処理を行う。 The reclamation process is a process of generating a reusable block by erasing one or more blocks. When erasing a block, the data on the page in use must be moved to another block. Therefore, as described in Patent Document 1, for example, an SSD generally has a physical storage capacity larger than the size of a logical address space provided to an initiator such as a host or a storage controller. This physical storage area exceeding the size of the logical address space is called a spare area. The SSD performs reclamation processing using a spare area.
国際公開第2014/045329号International Publication No. 2014/045329
 先に述べたとおり、SSDはリクラメーション処理のために予備のブロック(予備領域)を必要とする。予備のブロックが無くなる(枯渇する)と、運用を継続することができない。良く知られているように、各ブロックの消去可能な回数には上限があり、ブロックの消去可能回数が上限を超過するとそのブロックは使用できなくなり、予備領域の減少が発生する。 As mentioned earlier, SSD requires a spare block (spare area) for reclamation processing. If there are no spare blocks (depletion), the operation cannot be continued. As is well known, there is an upper limit on the number of times each block can be erased. When the number of erasable blocks exceeds the upper limit, the block cannot be used, and the spare area is reduced.
 ただし消去回数は、SSDの利用傾向を観測することで、ある程度の予測を行うことが可能であるから、消去回数が多くなったSSDについては使用を中止し、そのSSDのデータを別の記憶デバイスに移動することで、運用を継続することは可能である。むしろ問題となるのは、突発的に発生する(予期せぬタイミングで発生する)故障である。 However, the number of erasures can be predicted to some extent by observing the usage trend of the SSD. Therefore, the use of the SSD with the increased number of erasures is stopped, and the data of the SSD is stored in another storage device. It is possible to continue operation by moving to. Rather, a problem is a failure that occurs suddenly (occurs at an unexpected timing).
 FMのブロックまたはダイの品質にはばらつきがある。特定のいくつかのブロック(またはダイ)の品質が、他のブロックよりも先天的に悪かった場合、これらの幾つかのブロック(またはダイ)が突発的に故障し、その結果、予備領域が枯渇して運用が継続できない事態が発生する可能性がある。しかし、このような突発的なブロックの減少を事前に検知することは難しい。 F FM block or die quality varies. If the quality of certain blocks (or dies) is innately worse than others, some of these blocks (or dies) will fail suddenly, resulting in depletion of spare areas As a result, there is a possibility that the operation cannot be continued. However, it is difficult to detect such a sudden decrease in blocks in advance.
 本発明の一実施形態に係る記憶デバイスは、ストレージコントローラに所定サイズの論理記憶空間を提供するデバイスコントローラと、データの消去単位であるブロックを複数有する不揮発性半導体記憶媒体とを有する。また各ブロックは、ブロック内のセルを、nビットの情報を格納可能な第1モードで運用中の状態から、mビット(n<m)の情報を格納可能な第2モードに変更可能に構成されている。 A storage device according to an embodiment of the present invention includes a device controller that provides a storage controller with a logical storage space of a predetermined size, and a nonvolatile semiconductor storage medium having a plurality of blocks that are data erasure units. Each block is configured so that the cells in the block can be changed from a state in which the cell is operating in the first mode capable of storing n-bit information to a second mode capable of storing m-bit (n <m) information. Has been.
 デバイスコントローラは、ブロック内の使用可能な記憶領域のうち、論理記憶空間に割り当てるために必要なブロック内記憶領域の量を超過する記憶領域を、予備容量として管理しており、予備容量が所定の閾値を下回った時、第1モードで運用中のブロックの一部を、第2モードで運用されるように変更することで、使用可能な記憶領域を増加させる。 The device controller manages, as a spare capacity, a storage area that exceeds the amount of the intra-block storage area required for allocation to the logical storage space among the usable storage areas in the block. When the value falls below the threshold value, the usable storage area is increased by changing a part of the block being operated in the first mode to be operated in the second mode.
 予備容量の突発的な枯渇により起こり得る、SSDやストレージ装置の運用停止のリスクを回避することが出来る。 ∙ It is possible to avoid the risk of SSD or storage device operation stoppage that may occur due to sudden depletion of spare capacity.
本発明の概要を示す図である。It is a figure which shows the outline | summary of this invention. 第1の実施例に係るストレージ装置1を含むストレージシステム10000の構成例を示す図である。It is a figure which shows the structural example of the storage system 10000 containing the storage apparatus 1 which concerns on a 1st Example. ストレージシステムのボリューム構成を説明する図である。It is a figure explaining the volume structure of a storage system. RAIDグループの説明図である。It is explanatory drawing of a RAID group. 仮想ボリューム管理テーブルの構成を説明する図である。It is a figure explaining the structure of a virtual volume management table. プール管理テーブルの構成を説明する図である。It is a figure explaining the structure of a pool management table. RAIDグループ管理テーブルの構成を説明する図である。It is a figure explaining the structure of a RAID group management table. SSD21の構成例を示す図である。It is a figure which shows the structural example of SSD21. SSD内のデータ配置の説明図である。It is explanatory drawing of the data arrangement | positioning in SSD. 構成情報管理テーブルの構成を説明する図である。It is a figure explaining the structure of a structure information management table. 論理物理変換テーブルの構成を説明する図である。It is a figure explaining the structure of a logical physical conversion table. ブロック管理テーブルの構成を説明する図である。It is a figure explaining the structure of a block management table. ストレージコントローラタスクのフローチャートである。It is a flowchart of a storage controller task. ストレージコントローラのデータライト処理のフローチャートである。It is a flowchart of the data write process of a storage controller. ストレージコントローラのデータリード処理のフローチャートである。It is a flowchart of a data read process of the storage controller. SSDコントローラタスクのフローチャートである。It is a flowchart of an SSD controller task. SSDコントローラのデータリード・ライト処理のフローチャートである。It is a flowchart of a data read / write process of the SSD controller. SSDコントローラのFM診断処理のフローチャートである。It is a flowchart of FM diagnosis processing of the SSD controller. SSDコントローラのFM枯渇回復処理のフローチャートである。It is a flowchart of FM depletion recovery processing of the SSD controller. ストレージコントローラのドライブ監視処理のフローチャートである。It is a flowchart of the drive monitoring process of a storage controller. 第2の実施例の概要を示す図である。It is a figure which shows the outline | summary of a 2nd Example. 実施例2における、SSDコントローラのデータリード・ライト処理のフローチャートである。12 is a flowchart of data read / write processing of the SSD controller according to the second embodiment. 実施例2における、SSDコントローラのFM診断処理のフローチャートである。12 is a flowchart of FM diagnosis processing of the SSD controller in the second embodiment. 容量リバランス処理の概要を説明する図である。It is a figure explaining the outline | summary of a capacity | capacitance rebalance process. 実施例2における、ストレージコントローラのドライブ監視処理のフローチャートである。10 is a flowchart of drive monitoring processing of a storage controller in Embodiment 2. 実施例2における論理物理変換テーブルの構成を説明する図である。It is a figure explaining the structure of the logical physical conversion table in Example 2. FIG. 実施例2におけるブロック管理テーブルの構成を説明する図である。It is a figure explaining the structure of the block management table in Example 2. FIG.
 以下、幾つかの実施例を説明する。以下の説明では、記憶デバイスがSSDであるとの前提に基づいた説明を行う。SSDに含まれる不揮発半導体記憶媒体は、フラッシュメモリ(FM)であるとする。そのフラッシュメモリは、ページ単位でリード/ライトが行われる種類のフラッシュメモリ、典型的にはNAND型のフラッシュメモリであるとする。しかし、フラッシュメモリは、NAND型に代えて他種のフラッシュメモリでも良い。また、フラッシュメモリに代えて、他種の不揮発半導体記憶媒体、例えば相変化メモリなどが採用されても良い。 Hereinafter, some examples will be described. In the following description, the description is based on the premise that the storage device is an SSD. Assume that the nonvolatile semiconductor storage medium included in the SSD is a flash memory (FM). The flash memory is assumed to be a type of flash memory that is read / written in units of pages, typically a NAND flash memory. However, the flash memory may be another type of flash memory instead of the NAND type. Further, instead of the flash memory, other types of non-volatile semiconductor storage media such as phase change memory may be employed.
 以下、本実施形態を詳細に説明する。まず、図1を用いて実施形態の概要を説明する。 Hereinafter, this embodiment will be described in detail. First, the outline of the embodiment will be described with reference to FIG.
 図1は、実施例1に係るSSDの、容量の変化する様子を、時系列に表現したものである。本実施例におけるSSDは、セルのモード変更が可能なFMを搭載している。本実施例では、各セルは、nビットのデータを格納可能なモード、あるいはmビット(ただしn<mの関係にある)のデータを格納可能なモードのいずれかで運用可能という前提で説明する。また、以下では特に断りのない限り、n=2、m=3の場合について説明する。また、セルがnビット(2ビット)のデータを格納可能なモードのことを、MLC(Multi-Level Cell)モードと呼び、セルがmビット(3ビット)のデータを格納可能なモードのことを、TLC(Triple-Level Cell)モードと呼ぶ。また、MLCモードとTLCモードを総称して、「セルモード」または「モード」と呼ぶ。 FIG. 1 is a time-series representation of the capacity change of the SSD according to the first embodiment. The SSD in this embodiment is equipped with an FM capable of changing the cell mode. In this embodiment, the description will be made on the assumption that each cell can be operated in either a mode capable of storing n-bit data or a mode capable of storing m-bit data (where n <m). . In the following, a case where n = 2 and m = 3 will be described unless otherwise specified. The mode in which the cell can store n-bit (2 bits) data is called the MLC (Multi-Level Cell) mode, and the mode in which the cell can store m-bit (3 bits) data. This is called a TLC (Triple-Level Cell) mode. Further, the MLC mode and the TLC mode are collectively referred to as “cell mode” or “mode”.
 本実施例では、各SSDの初期状態(使用開始直後)では、全セルがMLCモードに設定されている前提で説明する。使用開始後しばらくして、SSDコントローラが幾つかのセルのモードを変更(MLCモードからTLCモードに変更)させる。 In the present embodiment, description will be made on the assumption that all cells are set to the MLC mode in the initial state of each SSD (immediately after the start of use). After a while, the SSD controller changes the mode of some cells (changes from MLC mode to TLC mode).
 SSDはストレージコントローラなどのイニシエータに提供する、論理アドレス空間(LBA空間)と、実際のデータを格納する物理アドレス空間(PBA空間)をそれぞれ有している。なお、論理アドレス空間のサイズが論理容量であり、物理アドレス空間のサイズが物理容量である。図1において、長方形状のオブジェクト1000は論理アドレス空間を表し、オブジェクト1001及び1002はそれぞれ、物理アドレス空間上の領域を表す。またオブジェクト1000,1001,1002の長さは、空間のサイズ(容量)を表している。そのため、図1の説明においては、オブジェクト1000,1001,1002のことをそれぞれ、論理容量1000、物理容量1001、物理容量1002と呼ぶ。 The SSD has a logical address space (LBA space) provided to an initiator such as a storage controller and a physical address space (PBA space) for storing actual data. Note that the size of the logical address space is the logical capacity, and the size of the physical address space is the physical capacity. In FIG. 1, a rectangular object 1000 represents a logical address space, and objects 1001 and 1002 represent areas on the physical address space. The lengths of the objects 1000, 1001, and 1002 represent the size (capacity) of the space. Therefore, in the description of FIG. 1, the objects 1000, 1001, and 1002 are referred to as a logical capacity 1000, a physical capacity 1001, and a physical capacity 1002, respectively.
 時刻t1の初期状態では、SSDは論理容量1000をイニシエータに提供し、また物理容量1001および1002の合計に等しいサイズの物理アドレス空間(物理記憶領域)を有する。なおt1では、物理容量1001および1002は、MLCモードにより構築されている。物理容量1001は論理アドレス空間に割り当てるために確保されている物理領域(セルの集合)の合計容量であり、論理容量1000と等しい。物理容量1002は、SSDが物理容量1001を超過して有している領域で、一種の余剰領域である。 In the initial state at time t1, the SSD provides the logical capacity 1000 to the initiator and has a physical address space (physical storage area) having a size equal to the sum of the physical capacities 1001 and 1002. Note that at t1, the physical capacities 1001 and 1002 are constructed in the MLC mode. The physical capacity 1001 is the total capacity of physical areas (a set of cells) reserved for allocation to the logical address space, and is equal to the logical capacity 1000. The physical capacity 1002 is an area that the SSD has beyond the physical capacity 1001 and is a kind of surplus area.
 先に述べたとおり、SSDはリクラメーション処理等を行う必要がある。物理容量1002はそのためにSSDが有している物理記憶領域の量であり、本明細書ではこれを「予備容量」と呼ぶ。 As mentioned earlier, SSD needs to be reclaimed. The physical capacity 1002 is the amount of physical storage area that the SSD has for that purpose, and is referred to as “reserve capacity” in this specification.
 時刻t2の状態は、SSD内の一部のブロックに故障が発生し、予備容量が減少した際の様子を示している。 The state at time t2 shows a situation when a failure occurs in some blocks in the SSD and the spare capacity is reduced.
 t2では、物理容量1004に相当する量の物理記憶領域がブロック故障により使用不可能となっている。一部のブロックが使用不可能になっても論理容量1000を削減するわけにはいかず、また論理容量1000に割り当てるべき物理容量は、論理容量1000と同じだけ必要である。そのため一部のブロックが使用不可能になった場合、使用不可能になったブロックの量だけ予備容量が削減される。結果として時刻t1において存在していた予備容量1002は、時刻t2では予備容量1003へと減少している。ここからさらなるブロック故障が発生すると、予備容量が枯渇する可能性が高い状態にある。なお、ここではFMのセルはMLCモードのままである。 At t2, the physical storage area corresponding to the physical capacity 1004 is unusable due to a block failure. Even if some of the blocks become unusable, the logical capacity 1000 cannot be reduced, and the physical capacity to be allocated to the logical capacity 1000 is as much as the logical capacity 1000. Therefore, when some blocks become unusable, the reserve capacity is reduced by the amount of the unusable blocks. As a result, the reserve capacity 1002 existing at time t1 is reduced to the reserve capacity 1003 at time t2. If further block failure occurs from here, there is a high possibility that the reserve capacity will be exhausted. Here, the FM cell remains in the MLC mode.
 t2にて、予備容量の枯渇リスクが高いことを認識したSSDコントローラは、一部のセルをMLCモードからTLCモードに変更することで、予備容量を拡大(回復)させる。時刻t3の状態は、モード変更実施後のSSDの内部状態を示している。 At t2, the SSD controller that has recognized that there is a high risk of reserve capacity depletion expands (recovers) the reserve capacity by changing some cells from the MLC mode to the TLC mode. The state at time t3 indicates the internal state of the SSD after the mode change is performed.
 t3では、SSDコントローラは、物理容量1001(または物理容量1003)を構成するブロックの一部をMLCモードからTLCモードに変更する。そのためMLCモード領域は、物理容量1001(及び物理容量1003)から物理容量1005へと縮小されている。一方で、物理容量1001と物理容量1005の差分の領域は、TLCモード化により容量が1.5倍に増加している。その領域は、物理容量1006と1007に該当する。SSDコントローラは、物理容量1005と1006(論理容量1000と等しいサイズの領域)を、ユーザデータの格納用途に割り当て、物理容量1007を予備容量として使用する。これにより予備容量は、t2時点の物理容量1003から、物理容量1007へと拡大している。 At t3, the SSD controller changes a part of blocks constituting the physical capacity 1001 (or physical capacity 1003) from the MLC mode to the TLC mode. Therefore, the MLC mode area is reduced from the physical capacity 1001 (and physical capacity 1003) to the physical capacity 1005. On the other hand, in the area of the difference between the physical capacity 1001 and the physical capacity 1005, the capacity has increased 1.5 times due to the TLC mode. The areas correspond to physical capacities 1006 and 1007. The SSD controller allocates physical capacities 1005 and 1006 (an area having a size equal to the logical capacity 1000) to a user data storage application, and uses the physical capacity 1007 as a spare capacity. As a result, the reserve capacity has expanded from the physical capacity 1003 at time t2 to the physical capacity 1007.
 以上の処理により、SSDコントローラは、予備容量が減少した際に、セルのモードを変更することで、物理容量を拡大することが出来る。これにより、減少した予備容量を回復させることが出来るため、予備容量の枯渇による運用停止のリスクを回避することが出来る。更に一連の処理では、ストレージコントローラ等のイニシエータに提供する論理容量は変更されないため、ストレージコントローラはSSDの内部状態に左右されることなく、運用を継続することが出来る。 Through the above processing, the SSD controller can expand the physical capacity by changing the cell mode when the reserve capacity decreases. As a result, the reduced reserve capacity can be recovered, and the risk of operation stoppage due to exhaustion of the reserve capacity can be avoided. Furthermore, in a series of processes, the logical capacity provided to the initiator such as the storage controller is not changed, so that the storage controller can continue operation without being influenced by the internal state of the SSD.
 図2は、第1の実施例に係るストレージ装置1を含むストレージシステム10000の構成例を示す図である。 FIG. 2 is a diagram illustrating a configuration example of the storage system 10000 including the storage apparatus 1 according to the first embodiment.
 ストレージ装置1は、ストレージコントローラ10と、ストレージコントローラ10に接続された複数のSSD21を有する。 The storage device 1 includes a storage controller 10 and a plurality of SSDs 21 connected to the storage controller 10.
 SSD21は、ホスト2などのイニシエータからのライトデータを格納するための記憶デバイスで、フラッシュメモリ等の不揮発性半導体メモリを記憶媒体として採用した記憶デバイスである。SSD21の内部構成は後述する。SSD21は一例として、SAS(Serial Attached SCSI)規格に従う伝送線(SASリンク)や、PCI(Peripheral Component Interconnect)規格に従う伝送線(PCIリンク)などによって、ストレージコントローラ10と接続される。 The SSD 21 is a storage device for storing write data from an initiator such as the host 2, and is a storage device that employs a nonvolatile semiconductor memory such as a flash memory as a storage medium. The internal configuration of the SSD 21 will be described later. As an example, the SSD 21 is connected to the storage controller 10 by a transmission line (SAS link) conforming to the SAS (Serial Attached SCSI) standard, a transmission line (PCI link) conforming to the PCI (Peripheral Component Interconnect) standard, or the like.
 また、図2に示されているように、本実施例のストレージ装置1にはSSD21の他、HDD(Hard Disk Drive)25も搭載可能である。HDD25は、磁気ディスクを記録媒体とする記憶デバイスである。HDD25もSSD21と同様、ストレージコントローラ10に接続される。またSSD21と同様、HDD25もSASリンクなどによってストレージコントローラ10に接続される。本実施例では、ストレージ装置1に搭載される、SSD21やHDD25等の記憶デバイスのことを「ドライブ」と呼ぶこともある。ただし以下では、本実施例のストレージ装置1には、記憶デバイスとしてSSD21のみが接続されている構成について中心に説明する。 Further, as shown in FIG. 2, the storage apparatus 1 of this embodiment can be equipped with an HDD (Hard Disk Drive) 25 in addition to the SSD 21. The HDD 25 is a storage device that uses a magnetic disk as a recording medium. The HDD 25 is also connected to the storage controller 10 like the SSD 21. Similarly to the SSD 21, the HDD 25 is also connected to the storage controller 10 by a SAS link or the like. In this embodiment, storage devices such as the SSD 21 and the HDD 25 installed in the storage apparatus 1 may be referred to as “drives”. However, in the following, the configuration in which only the SSD 21 is connected as a storage device to the storage apparatus 1 of the present embodiment will be mainly described.
 ストレージコントローラ10には、1以上のホスト2が接続される。またストレージコントローラ10には、管理ホスト5が接続される。ストレージコントローラ10とホスト2とは、一例としてファイバチャネルを用いて形成されるSAN(Storage Area Network)3を介して接続される。ストレージコントローラ10と管理ホスト5とは、一例としてイーサネットを用いて形成されるLAN(Local Area Network)6を介して接続される One or more hosts 2 are connected to the storage controller 10. A management host 5 is connected to the storage controller 10. The storage controller 10 and the host 2 are connected via a SAN (Storage Area Network) 3 formed using a fiber channel as an example. The storage controller 10 and the management host 5 are connected via a LAN (Local Area Network) 6 formed using Ethernet as an example.
 ストレージコントローラ10は少なくとも、プロセッサ(CPU)11、ホストインタフェース(図中では「ホストI/F」と表記)12、ディスクインタフェース(図中では「ディスクI/F」と表記)13、メモリ14、管理用I/F15を有する。そしてプロセッサ11、ホストIF12、ディスクIF13、メモリ14、管理用I/F15は、内部スイッチ(内部SW)16を介して相互接続されている。図2ではこれらの構成要素がそれぞれ1つだけ示されているが、高性能化及び高可用性の確保のため、これらの構成要素のそれぞれがストレージコントローラ10内に複数搭載されていてもよい。また内部SW16ではなく、共通バスを介して各構成要素が相互接続された構成にしてもよい。 The storage controller 10 includes at least a processor (CPU) 11, a host interface (denoted as “host I / F” in the figure) 12, a disk interface (denoted as “disk I / F” in the figure) 13, a memory 14, a management I / F 15 for use. The processor 11, host IF 12, disk IF 13, memory 14 and management I / F 15 are interconnected via an internal switch (internal SW) 16. Although only one of these components is shown in FIG. 2, a plurality of these components may be mounted in the storage controller 10 in order to achieve high performance and high availability. Further, instead of the internal SW 16, the components may be connected to each other via a common bus.
 ディスクI/F13は少なくとも、インタフェースコントローラと転送回路を有する。インタフェースコントローラは、SSD21の用いているプロトコル(一例ではSAS)をストレージコントローラ10内部で用いられている通信プロトコル(一例としてPCI-Express)に変換するためのコンポーネントである。転送回路は、ストレージコントローラ10が、SSD21に対してデータの転送(リード、ライト)を行う際に用いられる。 The disk I / F 13 has at least an interface controller and a transfer circuit. The interface controller is a component for converting a protocol (SAS in one example) used by the SSD 21 into a communication protocol (PCI-Express as an example) used in the storage controller 10. The transfer circuit is used when the storage controller 10 transfers data (read, write) to the SSD 21.
 ホストI/F12は、ディスクI/F13と同様に、少なくともインタフェースコントローラと転送回路を有する。ホストI/F12が有するインタフェースコントローラは、ホスト2とストレージコントローラ10間のデータ転送経路で用いられている通信プロトコル(たとえばファイバチャネル)と、ストレージコントローラ10内部で用いられている通信プロトコルを変換するためのものである。 The host I / F 12 has at least an interface controller and a transfer circuit, like the disk I / F 13. The interface controller included in the host I / F 12 converts a communication protocol (for example, fiber channel) used in the data transfer path between the host 2 and the storage controller 10 and a communication protocol used in the storage controller 10. belongs to.
 プロセッサ11は、ストレージ装置1の各種制御を行う。メモリ14は、プロセッサ11が実行するプログラムや、プロセッサ11が使用するストレージ装置1の各種管理情報を記憶するために用いられる。またメモリ14は、SSD21に対するI/O対象データを一時的に記憶するためにも用いられる。以下、SSD21に対するI/O対象データを一時的に記憶するために用いられる、メモリ14中の記憶領域を、「キャッシュ」と呼ぶ。メモリ14はDRAM、SRAM等の揮発性記憶媒体で構成されるが、別の実施形態として、不揮発性メモリを用いてメモリ14を構成してもよい。 The processor 11 performs various controls of the storage device 1. The memory 14 is used to store programs executed by the processor 11 and various management information of the storage device 1 used by the processor 11. The memory 14 is also used for temporarily storing I / O target data for the SSD 21. Hereinafter, the storage area in the memory 14 used for temporarily storing the I / O target data for the SSD 21 is referred to as “cache”. The memory 14 is configured by a volatile storage medium such as DRAM or SRAM. However, as another embodiment, the memory 14 may be configured by using a nonvolatile memory.
 図3は、ストレージシステムのボリューム構成を説明する図である。 FIG. 3 is a diagram for explaining the volume configuration of the storage system.
 本実施例におけるストレージコントローラは、容量仮想化機能を有するものとする。容量仮想化機能とは、ストレージ装置の物理容量よりも大きな仮想容量を、仮想ボリュームとしてホスト計算機に提供する技術である。以下、図3を用いて詳細を説明する。 Suppose that the storage controller in this embodiment has a capacity virtualization function. The capacity virtualization function is a technique for providing a virtual capacity larger than the physical capacity of the storage apparatus to the host computer as a virtual volume. Details will be described below with reference to FIG.
 ストレージ装置1には、SSD21-1~21-3が搭載されている。SSD21-1は、ストレージコントローラ10に提示する論理アドレス空間と、実際のデータを格納する物理アドレス空間をそれぞれ有している。論理アドレス空間のサイズが論理容量であり、物理アドレス空間のサイズが物理容量である。なお論理アドレス空間上の領域と物理アドレス空間上の領域の対応付けは動的に変更が可能で、後述する論理物理変換テーブル1100にて管理される。 The storage device 1 is equipped with SSDs 21-1 to 21-3. The SSD 21-1 has a logical address space presented to the storage controller 10 and a physical address space for storing actual data. The size of the logical address space is the logical capacity, and the size of the physical address space is the physical capacity. The association between the area on the logical address space and the area on the physical address space can be dynamically changed, and is managed by a logical-physical conversion table 1100 described later.
 物理アドレス空間は、後述する複数のブロック211により構成されている。なお、ブロック211は、それぞれMLCモード(図中「M」)とTLCモード(図中「T」)のいずれかにて使用されている。本実施例では、SSD21はブロック211毎にセルのモードを変更可能とする。 The physical address space is composed of a plurality of blocks 211 described later. The block 211 is used in either the MLC mode (“M” in the figure) or the TLC mode (“T” in the figure). In this embodiment, the SSD 21 can change the cell mode for each block 211.
 ストレージコントローラ10は、SSD21-1~21-3が提供する論理アドレス空間を用いて、RAIDグループ(RG)30-1を構成している。図示はしていないが、RAIDグループ30-2は別のSSDを用いて構成されている。さらに、ストレージコントローラ10は、2つのRAIDグループ30-1と30-2をプール35という管理単位に所属させている。プール35は、後述する仮想ボリュームの仮想チャンクに割り当て可能な記憶領域の集合である。なお、ストレージコントローラ10は、RAIDグループの記憶領域を、所定サイズの区画に分割して管理する。この区画を「チャンク」と呼ぶ。RAIDグループ30-1にはチャンク31が、RAIDグループ30-2にはチャンク32がそれぞれ作成されている。 The storage controller 10 forms a RAID group (RG) 30-1 using the logical address space provided by the SSDs 21-1 to 21-3. Although not shown, the RAID group 30-2 is configured using another SSD. Further, the storage controller 10 makes the two RAID groups 30-1 and 30-2 belong to a management unit called a pool 35. The pool 35 is a set of storage areas that can be allocated to virtual chunks of a virtual volume to be described later. The storage controller 10 manages the storage area of the RAID group by dividing it into partitions of a predetermined size. This partition is called “chunk”. A chunk 31 is created in the RAID group 30-1, and a chunk 32 is created in the RAID group 30-2.
 ストレージ装置1は、ホスト計算機2に接続されており、ホスト計算機2に対して仮想ボリューム40を提供する。仮想ボリューム40は、容量仮想化機能によって形成される仮想的なボリュームである。ストレージコントローラ10は、ホスト計算機2から仮想ボリューム40に対するライト要求を受信すると、プール35内の任意のチャンクを、仮想ボリューム40の仮想チャンク41に割り当て、ライト要求に伴うデータをチャンクに書き込む。 The storage device 1 is connected to the host computer 2 and provides the virtual volume 40 to the host computer 2. The virtual volume 40 is a virtual volume formed by the capacity virtualization function. When the storage controller 10 receives a write request for the virtual volume 40 from the host computer 2, the storage controller 10 allocates an arbitrary chunk in the pool 35 to the virtual chunk 41 of the virtual volume 40 and writes data associated with the write request to the chunk.
 次に、RAIDグループ内の記憶領域について、図4を用いて説明する。 Next, storage areas in the RAID group will be described with reference to FIG.
 ストレージ装置1は、複数のSSD21を1つのRAIDグループとして管理する。そしてRAIDグループ内で1つ(あるいは2つ)のSSD21に障害が発生してデータアクセスできなくなった場合に、残りのSSD21内のデータを用いて、障害が発生したSSD21に格納されていたデータを復旧できるようにしている。 The storage device 1 manages a plurality of SSDs 21 as one RAID group. When one (or two) SSDs 21 in the RAID group fail and data access becomes impossible, the data stored in the failed SSD 21 is stored using the data in the remaining SSDs 21. I am trying to recover.
 図4において、SSD#0(20-0)~SSD#3(20-3)はそれぞれ、SSD21がストレージコントローラ10に提供している論理アドレス空間を表している。ストレージコントローラ10は、複数(図4の例では4つ)のSSD21から1つのRAIDグループ30を構成し、RAIDグループ30に所属する各SSDの論理アドレス空間(SSD#0(20-0)~SSD#3(20-3))を、ストライプブロック(301)と呼ぶ複数の固定サイズの記憶領域に分割して管理している。 In FIG. 4, SSD # 0 (20-0) to SSD # 3 (20-3) respectively represent logical address spaces provided by the SSD 21 to the storage controller 10. The storage controller 10 forms one RAID group 30 from a plurality (four in the example of FIG. 4) of SSDs 21, and the logical address space (SSD # 0 (20-0) to SSD) of each SSD belonging to the RAID group 30 # 3 (20-3)) is divided into a plurality of fixed-size storage areas called stripe blocks (301) for management.
 また図4では、RAIDグループ30のRAIDレベル(RAID技術におけるデータ冗長化方式を表すもので、一般的にはRAID1~RAID6のRAIDレベルがある)がRAID5である場合の例を表している。図4において、RAIDグループ20内の、「0」、「1」、「P」などのボックスがストライプブロックを表している。また、各ストライプブロックに付されている、「1」等の番号のことを、「ストライプブロック番号」と呼ぶ。 FIG. 4 shows an example in which the RAID level of the RAID group 30 (representing the data redundancy method in the RAID technology and generally having RAID levels of RAID1 to RAID6) is RAID5. In FIG. 4, boxes such as “0”, “1”, and “P” in the RAID group 20 represent stripe blocks. A number such as “1” assigned to each stripe block is referred to as a “stripe block number”.
 図4で、ストライプブロックのうち、「P」と記載されているストライプブロックは、冗長データ(パリティ)の格納されるストライプブロックであり、これを「パリティストライプ」と呼ぶ。一方、数字(0、1等)が記載されているストライプブロックは、ホスト2などのイニシエータから書き込まれるデータ(冗長データではないデータ)が格納されるストライプブロックである。このストライプブロックのことは、「データストライプ」と呼ばれる。 In FIG. 4, a stripe block described as “P” in the stripe block is a stripe block in which redundant data (parity) is stored, and this is called a “parity stripe”. On the other hand, a stripe block in which numbers (0, 1, etc.) are written is a stripe block in which data written from an initiator such as the host 2 (data that is not redundant data) is stored. This stripe block is called “data stripe”.
 図4に示されたRAIDグループ30では、たとえばSSD#3(20-3)の先頭に位置するストライプブロックはパリティストライプ301-3である。そしてストレージコントローラ10がこのパリティストライプ301-3に格納される冗長データを作成する際、各SSD(SSD#0(20-0)~SSD#2(20-2))の先頭に位置するデータストライプ(ストライプブロック301-0、301-1、301-2)に格納されるデータに対して所定の演算(たとえば排他的論理和(XOR)等)を施すことによって、冗長データを生成する。 In the RAID group 30 shown in FIG. 4, for example, the stripe block located at the head of SSD # 3 (20-3) is the parity stripe 301-3. When the storage controller 10 creates redundant data stored in the parity stripe 301-3, the data stripe positioned at the head of each SSD (SSD # 0 (20-0) to SSD # 2 (20-2)) Redundant data is generated by performing a predetermined operation (for example, exclusive OR (XOR) or the like) on data stored in (striped blocks 301-0, 301-1, 301-2).
 以下、パリティストライプと、当該パリティストライプに格納される冗長データを生成するために用いられるデータストライプのセット(たとえば図4中の要素300)のことを、「ストライプライン」と呼ぶ。本実施例に係るストレージ装置1の場合、図4に示されているストライプライン300のように、1つのストライプラインに属する各ストライプブロックは、SSD21-0~21-3の論理アドレス空間の同じ位置(アドレス)に存在するという規則で、ストライプラインが構成される。 Hereinafter, a parity stripe and a set of data stripes (for example, the element 300 in FIG. 4) used to generate redundant data stored in the parity stripe are referred to as “strip lines”. In the case of the storage apparatus 1 according to the present embodiment, each stripe block belonging to one stripe line is located at the same position in the logical address space of the SSDs 21-0 to 21-3, as in the stripe line 300 shown in FIG. A stripe line is configured according to the rule of existing at (address).
 先に述べた「チャンク」は、図4に示されているように、RAIDグループ内に連続配置される複数のストライプラインから構成される領域である。また、ストレージ装置1内の各チャンクに含まれるデータストライプの数は、いずれも同じである。本実施例では1つのチャンク31が複数のストライプラインから成る領域とするが、1つのチャンク31が1つのストライプラインのみを有するように構成されてもよい。 The “chunk” described above is an area composed of a plurality of stripe lines continuously arranged in the RAID group, as shown in FIG. Further, the number of data stripes included in each chunk in the storage device 1 is the same. In the present embodiment, one chunk 31 is a region composed of a plurality of stripe lines, but one chunk 31 may be configured to have only one stripe line.
 先に述べたとおり、チャンクは仮想ボリューム上の「仮想チャンク」に割り当てられる。仮想チャンクは、仮想ボリュームの記憶空間上の所定サイズの区画である。 As mentioned earlier, chunks are assigned to “virtual chunks” on the virtual volume. A virtual chunk is a partition of a predetermined size on the storage space of a virtual volume.
 1つの仮想チャンクには1つのチャンクがマップされる。ストレージ装置1は、ホスト2から仮想チャンクに対するデータライト要求を受け付けると、マップされたチャンクにデータを格納する。ただし、仮想チャンクにチャンクがマップされる時、チャンク内のデータストライプのみがマップされる。そのため、仮想チャンクのサイズは、チャンクに含まれる全データストライプの合計サイズに等しい。ストレージコントローラ10は、後述する仮想ボリューム管理テーブル500に、仮想チャンクとチャンクのマッピングを記録することで、仮想チャンクに割り当てられる記憶領域(チャンク)を管理している。 1 One chunk is mapped to one virtual chunk. When the storage device 1 receives a data write request for a virtual chunk from the host 2, the storage device 1 stores the data in the mapped chunk. However, when a chunk is mapped to a virtual chunk, only the data stripe in the chunk is mapped. Therefore, the size of the virtual chunk is equal to the total size of all data stripes included in the chunk. The storage controller 10 manages the storage area (chunk) allocated to the virtual chunk by recording the mapping between the virtual chunk and the chunk in a virtual volume management table 500 described later.
 仮想ボリュームが定義された直後は、仮想ボリュームの各仮想チャンクには、チャンクがマップされていない。ストレージコントローラ10は、ホスト2から仮想チャンク上の領域に対するライト要求を受信した時にはじめて、当該領域に対してライトされたデータの書き込まれるべき、SSD20上の記憶領域(チャンク)を決定する。ここで決定されるチャンクは、まだどの仮想チャンクにも割り当てられていないチャンク(未使用チャンク)のなかから1つのチャンクが決定される。 -Immediately after the virtual volume is defined, no chunk is mapped to each virtual chunk of the virtual volume. The storage controller 10 determines a storage area (chunk) on the SSD 20 to which data written to the area is to be written only when a write request for the area on the virtual chunk is received from the host 2. As the chunk determined here, one chunk is determined from among chunks not yet assigned to any virtual chunk (unused chunk).
 ここで、ストレージコントローラ10のメモリ14には、図示はしていないが少なくともストレージ制御プログラム、仮想ボリューム管理テーブル500、プール管理テーブル550、RAIDグループ管理テーブル650が存在する。以下で、これらのプログラム及び管理テーブルの内容について説明していく。 Here, although not shown, at least a storage control program, a virtual volume management table 500, a pool management table 550, and a RAID group management table 650 exist in the memory 14 of the storage controller 10. The contents of these programs and management tables will be described below.
 図5は、仮想ボリューム管理テーブルの構成を説明する図である。仮想ボリューム管理テーブル500は、ストレージ装置1内に定義された各仮想ボリューム内の仮想チャンクと、チャンクとのマッピング関係を管理するためのテーブルである。 FIG. 5 is a diagram for explaining the configuration of the virtual volume management table. The virtual volume management table 500 is a table for managing the mapping relationship between the virtual chunks in each virtual volume defined in the storage apparatus 1 and the chunks.
 仮想ボリューム管理テーブル500は仮想ボリューム#501、プール#502、仮想ボリュームLBA範囲503、仮想チャンク番号504、RAIDグループ番号505、チャンク番号506のカラムを有する。仮想ボリューム管理テーブル500の各行(レコード)は、仮想ボリューム#501及び仮想チャンク番号504により特定される仮想チャンクに対し、RAIDグループ番号505及びチャンク番号506で特定されるチャンクがマッピングされていることを表す。なお、以降では、仮想ボリューム管理テーブル500に限らず、各種情報を管理するテーブルの各行のことを「レコード」と呼ぶ。 The virtual volume management table 500 has columns of virtual volume # 501, pool # 502, virtual volume LBA range 503, virtual chunk number 504, RAID group number 505, and chunk number 506. Each row (record) of the virtual volume management table 500 indicates that the chunk specified by the RAID group number 505 and the chunk number 506 is mapped to the virtual chunk specified by the virtual volume # 501 and the virtual chunk number 504. To express. Hereinafter, not only the virtual volume management table 500 but also each row of a table for managing various information is referred to as a “record”.
 仮想チャンク番号504で特定される仮想チャンクに対してチャンクがマッピングされていない場合、当該レコードのRAIDグループ番号505及びチャンク番号506には無効値(NULL)が格納される。 When no chunk is mapped to the virtual chunk specified by the virtual chunk number 504, an invalid value (NULL) is stored in the RAID group number 505 and the chunk number 506 of the record.
 またプール#502は、仮想ボリュームに割り当て可能なチャンクの属するプールの識別番号が格納される。つまり、仮想ボリューム#501で特定される仮想ボリュームの仮想チャンクに割り当て可能なチャンクは原則として、プール#502に属するチャンク(またはRAIDグループ)に限定される。また仮想ボリュームLBA範囲503は、仮想チャンク番号504で特定される仮想チャンクが、仮想ボリューム上のどの範囲に相当する領域であるかを表す情報である。一例として、図5の行(レコード)500-1では、仮想ボリュームLBA範囲503は“0x0500~0x09FF”、仮想チャンク番号504は“2”であるから、仮想ボリューム#0の仮想チャンク2は、仮想ボリューム#0のLBAが0x0500~0x09FFの領域に相当することを表している。 Pool # 502 stores the identification number of the pool to which the chunk that can be allocated to the virtual volume belongs. That is, the chunks that can be allocated to the virtual chunks of the virtual volume identified by the virtual volume # 501 are limited to the chunks (or RAID groups) belonging to the pool # 502 in principle. The virtual volume LBA range 503 is information indicating which range on the virtual volume the virtual chunk specified by the virtual chunk number 504 corresponds to. As an example, in the row (record) 500-1 of FIG. 5, the virtual volume LBA range 503 is “0x0500 to 0x09FF” and the virtual chunk number 504 is “2”. This indicates that the LBA of volume # 0 corresponds to the area from 0x0500 to 0x09FF.
 図6は、プール管理テーブルの構成を説明する図である。プールは、プール管理テーブル550によって管理される。プール管理テーブル550は、プール#551、RG#552、チャンク#553、RAIDグループLBA554、ステータス555、残容量556のカラムを有する。プール管理テーブル550において、各レコードはチャンクについての情報を格納するためのものである。各レコードのRG#552は、チャンクの属しているRAIDグループのRAIDグループ番号を表し、プール#551は、チャンクの属しているプールのプール番号を表す。さらにプール#551は、RG#552で特定されるRAIDグループの属するプール番号を表している。 FIG. 6 is a diagram for explaining the configuration of the pool management table. The pool is managed by a pool management table 550. The pool management table 550 includes columns of pool # 551, RG # 552, chunk # 553, RAID group LBA 554, status 555, and remaining capacity 556. In the pool management table 550, each record is for storing information about a chunk. RG # 552 of each record represents the RAID group number of the RAID group to which the chunk belongs, and pool # 551 represents the pool number of the pool to which the chunk belongs. Furthermore, pool # 551 represents the pool number to which the RAID group specified by RG # 552 belongs.
 また、各レコードのRAIDグループLBA554は、チャンクがRAIDグループ上のどの範囲に位置づけられているかを表す情報である。ステータス555は、チャンクが仮想チャンクに割り当てられているか(マップされているか)否かを表す情報である。ステータス555に「割当済」が格納されている場合、チャンクが仮想チャンクに割り当てられていることを表す。逆にステータス555に「未割当」が格納されている場合、チャンクが仮想チャンクに割り当てられていないことを意味する。残容量556は、プール内RAIDグループの未使用容量の合計値であり、ステータス555が「未割当て」のチャンクの容量の合計値に等しい。なお、本実施例に係るストレージ装置1は、残容量556をRAIDグループ毎に管理する。たとえば図6に記載のプール管理テーブル550では、RG#1の残容量556は400GB、RG#2の残容量556は600GBである旨が管理されている。ただし別の実施形態として、ストレージ装置1はプールごとに残容量を管理してもよい。 Further, the RAID group LBA 554 of each record is information indicating in which range on the RAID group the chunk is positioned. The status 555 is information indicating whether the chunk is assigned to the virtual chunk (whether mapped). When “assigned” is stored in the status 555, it indicates that the chunk is assigned to the virtual chunk. Conversely, when “unallocated” is stored in the status 555, it means that the chunk is not allocated to the virtual chunk. The remaining capacity 556 is a total value of unused capacity of the RAID group in the pool, and is equal to the total value of the capacity of chunks whose status 555 is “unallocated”. Note that the storage apparatus 1 according to the present embodiment manages the remaining capacity 556 for each RAID group. For example, in the pool management table 550 illustrated in FIG. 6, it is managed that the remaining capacity 556 of RG # 1 is 400 GB and the remaining capacity 556 of RG # 2 is 600 GB. However, as another embodiment, the storage apparatus 1 may manage the remaining capacity for each pool.
 図7は、RAIDグループ管理テーブルの構成を説明する図である。RAIDグループは、RAIDグループ管理テーブル650によって管理される。RAIDグループ管理テーブル650は、RG#651、RAIDレベル652、ドライブ番号653、ドライブ属性654、RAIDグループLBA655、ドライブ論理容量656、平均データ圧縮率657のカラムを有する。 FIG. 7 is a diagram for explaining the configuration of a RAID group management table. The RAID group is managed by a RAID group management table 650. The RAID group management table 650 includes columns of RG # 651, RAID level 652, drive number 653, drive attribute 654, RAID group LBA655, drive logical capacity 656, and average data compression rate 657.
 RG#651にはRAIDグループのRAIDグループ番号が格納される。RAIDレベル652は、当該のRAIDグループのRAID構成を示している。ドライブ番号653には、RG#651で特定されるRAIDグループに属するSSD21の識別子が格納される。ドライブ属性654はドライブ番号653で特定されるドライブが、アクティブドライブとスペアドライブのどちらであるかを示している。アクティブドライブとは、現在ユーザデータを実際に格納しているドライブを意味し、アクティブドライブのドライブ属性654には“アクティブ”が設定される。一方のスペアドライブは、アクティブドライブが故障した際に、代替のドライブとして稼働を開始するドライブである。スペアドライブのドライブ属性654には“スペア”が設定される。RAIDグループLBA655は、ドライブ番号653で特定されるSSD21の各領域が、RAIDグループ上のどの領域に位置づけられるかを表す情報である。ドライブ論理容量655は、ドライブの容量(論理容量)を示している。平均データ圧縮率657は、ドライブがデータ圧縮機能を有している場合に、ストレージコントローラ10が転送したデータが、どの程度削減されているかを示す情報である。なお、実施例1ではデータ圧縮機能が無効化されたケースを想定するものとする。そのため、図7では無効状態を示す「N/A」が格納されている。 RG # 651 stores the RAID group number of the RAID group. The RAID level 652 indicates the RAID configuration of the RAID group. The drive number 653 stores an identifier of the SSD 21 belonging to the RAID group specified by RG # 651. The drive attribute 654 indicates whether the drive specified by the drive number 653 is an active drive or a spare drive. The active drive means a drive that currently stores user data, and “active” is set in the drive attribute 654 of the active drive. One spare drive is a drive that starts operation as an alternative drive when the active drive fails. “Spare” is set in the drive attribute 654 of the spare drive. The RAID group LBA 655 is information indicating which area on the RAID group each area of the SSD 21 specified by the drive number 653 is positioned. The drive logical capacity 655 indicates the capacity (logical capacity) of the drive. The average data compression rate 657 is information indicating how much data transferred by the storage controller 10 is reduced when the drive has a data compression function. In the first embodiment, it is assumed that the data compression function is invalidated. Therefore, “N / A” indicating an invalid state is stored in FIG.
 図8は、SSD21の構成例を示す図である。SSD21は、SSDコントローラ200と複数のFMチップ210を有する。SSDコントローラ200は、プロセッサ(CPU)201、ディスクI/F202、FMチップI/F203、メモリ204、パリティ演算回路206、圧縮・伸張回路207を有し、これらは内部接続スイッチ205を介して相互接続されている。 FIG. 8 is a diagram illustrating a configuration example of the SSD 21. The SSD 21 includes an SSD controller 200 and a plurality of FM chips 210. The SSD controller 200 includes a processor (CPU) 201, a disk I / F 202, an FM chip I / F 203, a memory 204, a parity operation circuit 206, and a compression / decompression circuit 207, which are interconnected via an internal connection switch 205. Has been.
 ディスクI/F202は、SSD21とストレージコントローラ10間の通信を行うためのインタフェースコントローラである。ディスクI/F202は、伝送線(SASリンクや、PCIリンク)を介してストレージコントローラ10のディスクI/F13に接続される。一方FMチップI/F203は、SSDコントローラ200とFMチップ210間の通信を行うためのインタフェースコントローラである。 The disk I / F 202 is an interface controller for performing communication between the SSD 21 and the storage controller 10. The disk I / F 202 is connected to the disk I / F 13 of the storage controller 10 via a transmission line (SAS link or PCI link). On the other hand, the FM chip I / F 203 is an interface controller for performing communication between the SSD controller 200 and the FM chip 210.
 またFMチップI/F203は、ECC(Error Correcting Code)の生成、ECCを用いたエラー検出及びエラー訂正を行う機能を有している。なおECCの一例として、BCH符号やLDPC(Low Density Parity Check)符号などが用いられても良い。 Also, the FM chip I / F 203 has a function of generating ECC (Error Correcting Code), error detection using the ECC, and error correction. As an example of the ECC, a BCH code, an LDPC (Low Density Parity Check) code, or the like may be used.
 SSDコントローラ200からFMチップ210にデータが送信(書き込み)される際、FMチップI/F203はECCを生成する。そしてFMチップI/F203はデータに対し、生成されたECCを付加し、FMチップ210にはECCの付加されたデータを書き込む。 When the data is transmitted (written) from the SSD controller 200 to the FM chip 210, the FM chip I / F 203 generates an ECC. The FM chip I / F 203 adds the generated ECC to the data, and writes the data with the ECC added to the FM chip 210.
 SSDコントローラ200がFMチップ210からデータを読み出す際、FMチップ210からはECCの付加されたデータが読み出され、FMチップI/F203にはこのECCの付加されたデータが到来する。FMチップI/F203はECCを用いてデータエラーチェック(データからECCを生成し、この生成されたECCと、データに付加されているECCが一致するかチェック)を行い、データエラーが検出された場合、ECCを用いてデータ訂正を行う。 When the SSD controller 200 reads data from the FM chip 210, the data with the ECC added is read from the FM chip 210, and the data with the ECC added arrives at the FM chip I / F 203. The FM chip I / F 203 performs a data error check using the ECC (generates an ECC from the data, and checks whether the generated ECC matches the ECC added to the data), and a data error is detected. In this case, data correction is performed using ECC.
 CPU201は、ストレージコントローラ10から到来する各種コマンドに係る処理等を行う。メモリ204には、プロセッサ201が実行するプログラムや、各種管理情報が記憶される。またメモリ204の一部の領域は、ストレージコントローラ10からライトコマンドと共に送信されてくるライトデータや、FMチップ210から読み出されたデータを一時的に格納するためのバッファとしても用いられる。以下では、メモリ204の領域のうち、バッファとして用いられる領域を「バッファ領域」と呼ぶ。メモリ204には、DRAM等の揮発性メモリが用いられる。ただしメモリ204に不揮発性メモリが使用されても良い。 The CPU 201 performs processing related to various commands coming from the storage controller 10. The memory 204 stores a program executed by the processor 201 and various management information. A part of the memory 204 is also used as a buffer for temporarily storing write data transmitted from the storage controller 10 together with a write command and data read from the FM chip 210. Hereinafter, an area used as a buffer in the area of the memory 204 is referred to as a “buffer area”. As the memory 204, a volatile memory such as a DRAM is used. However, a nonvolatile memory may be used for the memory 204.
 なお図示はしていないが、SSD21のメモリ204には少なくとも、SSD制御プログラム、論理物理変換テーブル1100、ブロック管理テーブル1150、構成情報管理テーブル1300が格納される。 Although not shown, at least an SSD control program, a logical-physical conversion table 1100, a block management table 1150, and a configuration information management table 1300 are stored in the memory 204 of the SSD 21.
 パリティ演算回路206は、SSD21内でパリティデータを作成するための回路である。SSD21は、複数のFMチップ210からRAIDグループを構成し、RAID技術によるデータ復旧を行う機能を有する。パリティ演算回路206は、RAID技術における冗長データ(パリティ)を生成するためのハードウェアである。本実施例ではパリティ演算回路206が生成する冗長データを「パリティ」または「パリティデータ」と表現し、一方FMチップI/F203が生成するECCは「ECC」と表現する。 The parity operation circuit 206 is a circuit for creating parity data in the SSD 21. The SSD 21 has a function of configuring a RAID group from a plurality of FM chips 210 and performing data recovery using RAID technology. The parity calculation circuit 206 is hardware for generating redundant data (parity) in RAID technology. In this embodiment, the redundant data generated by the parity operation circuit 206 is expressed as “parity” or “parity data”, while the ECC generated by the FM chip I / F 203 is expressed as “ECC”.
 圧縮・伸張回路207はデータの圧縮や伸張処理を行うための回路である。ただし実施例1では、SSD21がデータの圧縮を行わない例を説明する。そのため実施例1に係るSSD21では、圧縮・伸張回路207は無くてもよい。圧縮・伸張回路207の使用例については、実施例2で述べる。 The compression / decompression circuit 207 is a circuit for compressing and decompressing data. However, in the first embodiment, an example in which the SSD 21 does not compress data will be described. Therefore, in the SSD 21 according to the first embodiment, the compression / decompression circuit 207 may not be provided. A usage example of the compression / decompression circuit 207 will be described in a second embodiment.
 FMチップ210は、たとえばNAND型フラッシュメモリ等の不揮発性半導体メモリチップである。FMチップ210は複数のダイ213を有し、各ダイ213には複数のセル214が存在する。セル214はトランジスタ等から構成された記憶素子で、各セル214は、1または複数ビットのデータを保持することができる。SSDコントローラ200からのライトデータは、このセル214に格納される。また本実施例におけるFMチップ210が有するセル214は、SSDコントローラ200からの指示によって、セル214に格納可能な情報量(ビット数)が変更可能である。 FM chip 210 is a non-volatile semiconductor memory chip such as a NAND flash memory. The FM chip 210 has a plurality of dies 213, and each die 213 has a plurality of cells 214. The cell 214 is a memory element including a transistor or the like, and each cell 214 can hold one or a plurality of bits of data. Write data from the SSD controller 200 is stored in the cell 214. In the cell 214 of the FM chip 210 in this embodiment, the amount of information (number of bits) that can be stored in the cell 214 can be changed by an instruction from the SSD controller 200.
 周知の通り、フラッシュメモリのデータの読み出し・書き込みは、セル214単位に行うことはできない。複数のセル214の集合で、ページと呼ばれる所定サイズ(たとえば8KB等)の領域ごとに行われる。またデータ消去は、ページの集合であるブロック211ごとに行われる。 As is well known, reading / writing of data in the flash memory cannot be performed in units of cells 214. A set of a plurality of cells 214 is performed for each area of a predetermined size (for example, 8 KB) called a page. Data erasure is performed for each block 211 that is a set of pages.
 なお一般に、「SSD」とはHDDと同じフォームファクタを有する記憶デバイスを意味する。ただし本実施例において、SSDは、複数のフラッシュメモリと、それらを制御するコントローラとを備える記憶デバイス全般を意味し、外観形状等が一般的なHDDやSSDのフォームファクタに限定されるものではない。また、フラッシュメモリには、NORやNANDといった不揮発性の半導体メモリが使用されてよい。また、フラッシュメモリに代えて、磁気抵抗メモリであるMRAM(Magnetoresistive random access memory)や、抵抗変化型メモリであるReRAM(resistance random access memory)、強誘電体メモリであるFeRAM(Ferroelectric random access memory)等の各種半導体メモリが使用されても良い。 In general, “SSD” means a storage device having the same form factor as the HDD. However, in this embodiment, the SSD means a general storage device including a plurality of flash memories and a controller for controlling them, and the external shape is not limited to a general HDD or SSD form factor. . Further, a nonvolatile semiconductor memory such as NOR or NAND may be used for the flash memory. Also, instead of flash memory, magnetoresistive memory MRAM (Magnetoretic random access memory), resistance change memory ReRAM (resistance random access memory), ferroelectric memory FeRAM (Ferroelectric random), etc. Various semiconductor memories may be used.
 図9は、SSD内のデータ配置の説明図である。これは、図4のRAIDグループ30をSSD21に、SSDをFMチップにそれぞれ置き換えたものに等しい。なお、本実施例に係るSSDでは、ストライプブロック(401-0,401-1,401-2,401-3等)の単位は、1物理ページである。ただし、ブロック211やダイ213、あるいはFMチップ210が、ストライプブロックの単位になるようにRAIDグループが構成されても良い。データストライプ(物理ページ)にライトデータが書き込まれる時、SSD21は同一ストライプラインに属するパリティの生成を行い、データストライプにライトデータを書き込むとともにパリティストライプにパリティを格納する。なお、物理ページの上書きはできないため、データストライプ、パリティストライプの更新の際には、チップ内の未使用の物理ページを選択して未使用の物理ページにデータ、パリティを書き込む。 FIG. 9 is an explanatory diagram of data arrangement in the SSD. This is equivalent to the case where the RAID group 30 in FIG. 4 is replaced with the SSD 21 and the SSD is replaced with the FM chip. In the SSD according to this embodiment, the unit of the stripe block (401-0, 401-1, 401-2, 401-3, etc.) is one physical page. However, the RAID group may be configured such that the block 211, the die 213, or the FM chip 210 is a unit of a stripe block. When write data is written to a data stripe (physical page), the SSD 21 generates parity belonging to the same stripe line, writes write data to the data stripe, and stores parity in the parity stripe. Since the physical page cannot be overwritten, when updating the data stripe and parity stripe, an unused physical page in the chip is selected and data and parity are written to the unused physical page.
 ここで、図1と図9を参照しながら、物理アドレス空間(物理容量)とSSD内のデータ配置の関係について説明する。図1において、物理容量1001は論理容量1000のサイズに等しく、物理容量1001に相当する物理アドレス空間はすべて、イニシエータであるストレージコントローラ10からのライトデータが格納可能な領域である。言い換えると、物理アドレス空間はSSD21内のデータストライプで構成される空間で、図9におけるパリティストライプの容量は含まない。また、FMチップI/F203で生成されるECCも、物理アドレス空間には含まれていない。そのため、物理容量1001及び1002の合計は、SSD21内のブロック211のうち、データストライプとして用いられるブロック211(またはセル214)の合計容量に等しいという関係にある。 Here, the relationship between the physical address space (physical capacity) and the data arrangement in the SSD will be described with reference to FIG. 1 and FIG. In FIG. 1, the physical capacity 1001 is equal to the size of the logical capacity 1000, and the physical address space corresponding to the physical capacity 1001 is an area where write data from the storage controller 10 serving as the initiator can be stored. In other words, the physical address space is a space composed of data stripes in the SSD 21 and does not include the capacity of the parity stripe in FIG. Also, the ECC generated by the FM chip I / F 203 is not included in the physical address space. Therefore, the total of the physical capacities 1001 and 1002 is in a relation that it is equal to the total capacity of the blocks 211 (or cells 214) used as data stripes among the blocks 211 in the SSD 21.
 図10は、構成情報管理テーブルの構成を説明する図である。構成情報管理テーブル1300は、おもにSSD21の容量に関する情報を格納している。構成情報管理テーブル1300は、論理容量1301、ブロックステータス1302、ブロック数1303、容量1304、予備容量1305、FMモード変更閾値1306、平均データ圧縮率1307のカラムを有する。 FIG. 10 is a diagram for explaining the configuration of the configuration information management table. The configuration information management table 1300 mainly stores information related to the capacity of the SSD 21. The configuration information management table 1300 includes columns of logical capacity 1301, block status 1302, number of blocks 1303, capacity 1304, spare capacity 1305, FM mode change threshold 1306, and average data compression ratio 1307.
 論理容量1301は、SSDが提供する論理アドレス空間のサイズを示している。ブロックステータス1302、ブロック数1303、容量1304は、FMのブロックが現在どのような状態にあるかを示している。ブロックステータス1302の、「正常(MLCモード)」は、正常状態かつMLCモードで動作しているブロックを、「正常(TLCモード)」は、正常状態かつTLCモードで動作しているブロックを、「故障(MLCモード)」は、故障状態にあるブロックをそれぞれ示している。例えば図10に記載の構成情報管理テーブル1300は、1000個のブロックが正常状態かつMLCモードで動作しており、その容量が1500GBあることを示している。 The logical capacity 1301 indicates the size of the logical address space provided by the SSD. The block status 1302, the number of blocks 1303, and the capacity 1304 indicate what state the FM block is currently in. In the block status 1302, “normal (MLC mode)” indicates a block in a normal state and operating in the MLC mode, and “normal (TLC mode)” indicates a block in a normal state and operating in the TLC mode. “Failure (MLC mode)” indicates each block in a failure state. For example, the configuration information management table 1300 illustrated in FIG. 10 indicates that 1000 blocks are operating in the normal state and in the MLC mode, and the capacity thereof is 1500 GB.
 そしてブロックステータス1302が「正常(MLCモード)」の行のブロック数1303と容量1304にはそれぞれ、正常状態かつMLCモードで動作しているブロックのブロック数及びそのブロックの合計容量が格納される。同様に、ブロックステータス1302が「正常(TLCモード)」の行のブロック数1303と容量1304にはそれぞれ、正常状態かつTLCモードで動作しているブロックのブロック数及びそのブロックの合計容量が格納される。またブロックステータス1302が「故障」の行のブロック数1303と容量1304にはそれぞれ、故障したブロックのブロック数及びそのブロックの合計容量が格納される。 The number of blocks 1303 and the capacity 1304 in the row in which the block status 1302 is “normal (MLC mode)” respectively store the number of blocks that are operating in the normal state and in the MLC mode, and the total capacity of the blocks. Similarly, the number of blocks 1303 and the capacity 1304 in the row in which the block status 1302 is “normal (TLC mode)” respectively store the number of blocks operating in the normal state and the TLC mode, and the total capacity of the blocks. The Further, the number of blocks 1303 and the capacity 1304 in the row where the block status 1302 is “failed” respectively store the number of blocks of the failed block and the total capacity of the blocks.
 以下では、ブロックステータス1302が「正常(MLCモード)」の行のブロック数1303と容量1304のことをそれぞれ、「正常状態(MLCモード)のブロック数」、「正常状態(MLCモード)のブロック容量」と呼ぶ。同様に、ブロックステータス1302が「正常(TLCモード)」の行のブロック数1303と容量1304はそれぞれ、「正常状態(TLCモード)のブロック数」、「正常状態(TLCモード)のブロック容量」と呼ばれ、ブロックステータス1302が「故障」の行のブロック数1303と容量1304はそれぞれ、「故障状態のブロック数」、「故障状態のブロック容量」と呼ばれる。 Hereinafter, the block number 1303 and the capacity 1304 of the row in which the block status 1302 is “normal (MLC mode)” are respectively referred to as “the number of blocks in the normal state (MLC mode)” and “the block capacity in the normal state (MLC mode)”. " Similarly, the number of blocks 1303 and the capacity 1304 of the row whose block status 1302 is “normal (TLC mode)” are “the number of blocks in the normal state (TLC mode)” and “the block capacity in the normal state (TLC mode)”, respectively. The number of blocks 1303 and the capacity 1304 in the row whose block status 1302 is “failed” are respectively referred to as “number of blocks in failure state” and “block capacity in failure state”.
 次に、予備容量1305は、当該のSSDが有する予備容量のサイズを示している。実施例1に係るSSD21では、正常(MLCモード)のブロック容量をM、正常(TLCモード)のブロック容量をT、論理容量をLとすると、予備容量1305は以下の式(1)
 予備容量1305=M+T-L ・・・(1)
により算出される値である。本実施例に係るSSD21では、一般的なSSDと同様に、初期状態ではSSDの有する物理領域のうち、約30%~40%の領域を予備容量として確保する。SSD21を使用している間に、幾つかのブロックが故障し使用できなくなると、M(あるいはT)の値が減少する。そしてLは不変の値であるので(論理容量は変動しない)、結果として予備容量1305が減少することになる。
Next, the spare capacity 1305 indicates the size of the spare capacity of the SSD. In the SSD 21 according to the first embodiment, assuming that the normal (MLC mode) block capacity is M, the normal (TLC mode) block capacity is T, and the logical capacity is L, the reserve capacity 1305 is expressed by the following equation (1).
Reserve capacity 1305 = M + TL (1)
Is a value calculated by. In the SSD 21 according to the present embodiment, in the initial state, about 30% to 40% of the physical area of the SSD is secured as a spare capacity, as in the case of a general SSD. If some blocks fail and cannot be used while using the SSD 21, the value of M (or T) decreases. Since L is a constant value (the logical capacity does not change), the reserve capacity 1305 is reduced as a result.
 FMモード変更閾値1306は、SSDコントローラ200が、ブロックのモード変更が必要であると判断するための値である。予備容量1304の値が、FMモード変更閾値1306の値を下まわると、SSDコントローラ200は予備ブロックが枯渇するリスクがあると判断し、FM内のMLCモードのブロックのうちいくつかのブロックのモード変更を実行する。 The FM mode change threshold value 1306 is a value for the SSD controller 200 to determine that a block mode change is necessary. When the value of the spare capacity 1304 falls below the value of the FM mode change threshold value 1306, the SSD controller 200 determines that there is a risk that the spare block will be exhausted, and the mode of some of the MLC mode blocks in the FM Make changes.
 平均データ圧縮率1307は、データ圧縮機能を有効化した場合に、データがどの圧縮されているかを示す情報である。ただし実施例1では、データ圧縮を行わない例を説明するため、図10には無効状態を示す「N/A」が格納されている。 The average data compression rate 1307 is information indicating which data is compressed when the data compression function is enabled. However, in the first embodiment, “N / A” indicating an invalid state is stored in FIG. 10 in order to describe an example in which data compression is not performed.
 図10に示された構成情報管理テーブル1300は、この構成情報管理テーブル1300を有するSSD21は現時点で合計1875GB分の物理容量を有しており、そのうち150GBが故障状態、残りの1725GBは正常状態であり、そのうちの1500GBがMLCモード、225GBがTLCモードで運用されていることを示している。また、このSSD21は1000GBの容量を論理容量としてユーザやストレージコントローラ10に提供し、725GBの予備容量を有していることを示している。 In the configuration information management table 1300 shown in FIG. 10, the SSD 21 having the configuration information management table 1300 currently has a total physical capacity of 1875 GB, of which 150 GB is in a failure state and the remaining 1725 GB is in a normal state. Yes, of which 1500 GB is operating in MLC mode and 225 GB is operating in TLC mode. The SSD 21 provides a capacity of 1000 GB to the user or the storage controller 10 as a logical capacity, and has a reserve capacity of 725 GB.
 なお、先に述べたとおり、ブロック211の一部はパリティストライプとして使用される。ただし図10に示す物理容量(容量1304、予備容量1305)は、データストライプとして使用されているブロック211の容量を表す。同様に図10のブロック数1303も、データストライプとして使用されているブロック211の数を表している。ただし別の実施形態として、SSD21は、容量1304と予備容量1305に、SSD21内全ブロック211の容量を記録し、ブロック数1303にもSSD21内全ブロック211の数を記録してもよい。 As described above, a part of the block 211 is used as a parity stripe. However, the physical capacity (capacity 1304, spare capacity 1305) shown in FIG. 10 represents the capacity of the block 211 used as the data stripe. Similarly, the number of blocks 1303 in FIG. 10 also represents the number of blocks 211 used as data stripes. However, as another embodiment, the SSD 21 may record the capacity of all blocks 211 in the SSD 21 in the capacity 1304 and the reserve capacity 1305, and record the number of all blocks 211 in the SSD 21 in the number of blocks 1303.
 図11は、論理物理変換テーブルの構成を説明する図である。論理物理変換テーブル1100は、SSD21の管理する論理ページと物理ページのマッピングを管理するためのテーブルである。SSD21は記憶媒体にフラッシュメモリを採用している。よく知られているように、フラッシュメモリ(FMチップ210)の最小アクセス(リード、ライト)単位はページ(物理ページ)である。物理ページのサイズはたとえば8KBである。そのため、実施例1に係るSSD21は、SSD21がストレージコントローラ10に提供している論理アドレス空間を、物理ページと同サイズの領域に分割して管理している。この物理ページと同サイズの領域のことを、「論理ページ」と呼ぶ。そして実施例1に係るSSD21は、1つの論理ページに1つの物理ページをマッピングさせる。 FIG. 11 is a diagram for explaining the configuration of the logical-physical conversion table. The logical / physical conversion table 1100 is a table for managing the mapping between logical pages and physical pages managed by the SSD 21. The SSD 21 employs a flash memory as a storage medium. As is well known, the minimum access (read, write) unit of the flash memory (FM chip 210) is a page (physical page). The size of the physical page is, for example, 8 KB. For this reason, the SSD 21 according to the first embodiment manages the logical address space provided to the storage controller 10 by dividing the logical address space into areas of the same size as the physical page. An area having the same size as the physical page is called a “logical page”. The SSD 21 according to the first embodiment maps one physical page to one logical page.
 本実施例に係るSSD21は、全FMチップ210内の各ブロックに対し、SSD21内で一意な識別番号を付して管理しており、この識別番号はブロック番号(ブロック#)と呼ばれる。また、ブロック内の各物理ページには、ブロック内で一意な番号を付して管理しており、この番号は物理ページ番号(または物理ページ#)と呼ばれる。ブロック#と物理ページ#が特定されることにより、SSD21内の物理ページが一意に特定される。 The SSD 21 according to the present embodiment manages each block in all the FM chips 210 with a unique identification number in the SSD 21, and this identification number is called a block number (block #). Each physical page in the block is managed with a unique number in the block, and this number is called a physical page number (or physical page #). By specifying the block # and the physical page #, the physical page in the SSD 21 is uniquely specified.
 また、本実施例に係るSSD21は、SSD21内の各論理ページに、SSD内で一意な識別番号を付して管理している。この識別番号は論理ページ番号(論理ページ#)と呼ばれる。論理物理変換テーブル1100には、ある論理ページにマッピングされる物理ページの、ブロック#と物理ページ#の情報が、論理ページごとに格納されている。 Further, the SSD 21 according to the present embodiment manages each logical page in the SSD 21 by assigning a unique identification number in the SSD. This identification number is called a logical page number (logical page #). The logical-physical conversion table 1100 stores information on block # and physical page # of a physical page mapped to a certain logical page for each logical page.
 論理物理変換テーブル1100は、図11に示されているように、SSD LBA1101、論理ページ#1102、ステータス1103、ブロック#1104、物理ページ#1105のカラムを有する。論理物理変換テーブル1100の各レコードには、論理ページ#1102で特定される論理ページについての情報が格納される。SSD LBA1101には、論理ページに対応する、SSD21がストレージコントローラ10に提供している論理アドレス空間上のLBA(の範囲)が格納される。SSD21がストレージコントローラ10からアクセス要求を受信すると、SSD21は、SSD LBA1101と論理ページ#1102を用いて、アクセス要求に含まれているLBAを、論理ページ#に変換することができる。そして、ブロック#1104、物理ページ#1105にはそれぞれ、論理ページにマッピングされる物理ページを特定するための情報(つまりブロック#と物理ページ#)が格納される。 The logical-physical conversion table 1100 has columns of SSD LBA 1101, logical page # 1102, status 1103, block # 1104, and physical page # 1105, as shown in FIG. Each record of the logical-physical conversion table 1100 stores information about the logical page specified by the logical page # 1102. The SSD LBA 1101 stores the LBA (range) on the logical address space provided by the SSD 21 to the storage controller 10 corresponding to the logical page. When the SSD 21 receives an access request from the storage controller 10, the SSD 21 can convert the LBA included in the access request into a logical page # using the SSD LBA 1101 and the logical page # 1102. In block # 1104 and physical page # 1105, information for specifying the physical page mapped to the logical page (that is, block # and physical page #) is stored.
 ステータス1103は、物理ページが論理ページにマッピングされているか否かを表す情報が格納される。SSD21の論理ページには、初期状態では物理ページはマッピングされていない。ストレージコントローラ10からライト要求を受信した時点で、ライト要求でライト対象となる論理ページに対して物理ページがマッピングされる。ステータス1103に「割当」が格納されている場合、物理ページが論理ページにマッピングされていることを表す。逆にステータス1103に「未割当」が格納されている場合、物理ページが論理ページにマッピングされていないことを意味する(この時、論理ページに対応するブロック#1104と物理ページ#1105にはNULL(無効値)が格納される)。 Status 1103 stores information indicating whether a physical page is mapped to a logical page. No physical page is mapped to the logical page of the SSD 21 in the initial state. When a write request is received from the storage controller 10, a physical page is mapped to a logical page to be written by the write request. When “assignment” is stored in the status 1103, it indicates that the physical page is mapped to the logical page. Conversely, when “unallocated” is stored in the status 1103, it means that the physical page is not mapped to the logical page (at this time, the block # 1104 and the physical page # 1105 corresponding to the logical page are set to NULL). (Invalid value) is stored).
 良く知られているように、一旦書き込みが行われた物理ページは上書きが不可能である(物理ページの上書きをしたい場合、物理ページの属するブロック全体を一度消去する必要がある)。そのためSSD21では、ある論理ページに対する更新(上書き)要求をストレージコントローラ10から受信すると、更新データを、更新前データの書き込まれている物理ページ(旧物理ページと呼ぶ)とは異なる物理ページ(新物理ページと呼ぶ)に格納する。そして更新対象となる論理ページに対応する、ブロック#1104と物理ページ#1105に、新物理ページのブロック#、物理ページ#を格納する。 As is well known, a physical page once written cannot be overwritten (if it is desired to overwrite the physical page, the entire block to which the physical page belongs needs to be erased once). Therefore, in the SSD 21, when an update (overwrite) request for a certain logical page is received from the storage controller 10, the update data is a physical page (new physical page) different from the physical page in which the pre-update data is written (referred to as an old physical page). Stored in a page). Then, block # 1 and physical page # of the new physical page are stored in block # 1104 and physical page # 1105 corresponding to the logical page to be updated.
 図12は、ブロック管理テーブルの構成を説明する図である。ブロック管理テーブル1150は、ブロックと物理ページの状態を管理するためのテーブルである。ブロック管理テーブル1150内の各レコードには、SSD21内の物理ページについての情報が格納される。ブロック管理テーブル1150は、ブロック#1151、FMセルモード1152、物理ページ#1153、ステータス1154、消去回数1155のカラムを有する。 FIG. 12 is a diagram illustrating the configuration of the block management table. The block management table 1150 is a table for managing the states of blocks and physical pages. Each record in the block management table 1150 stores information about a physical page in the SSD 21. The block management table 1150 has columns of block # 1151, FM cell mode 1152, physical page # 1153, status 1154, and erase count 1155.
 ブロック#1151、物理ページ#1153は、ステータス1154はそれぞれ、論理物理変換テーブル1100の、ブロック#1104、物理ページ#1105、ステータス1103と同様の情報である。つまりある物理ページが論理ページに割り当てられると、割り当てられた物理ページのブロック#、物理ページ#が、論理物理変換テーブル1100のブロック#1104及び物理ページ#1105に格納され、ステータス1103に「割当」が格納される。そして同時に、割り当てられた物理ページのステータス1154(ブロック管理テーブル1105内の)にも、「割当」が格納される。 In block # 1151 and physical page # 1153, status 1154 is the same information as block # 1104, physical page # 1105, and status 1103 in the logical-physical conversion table 1100, respectively. That is, when a physical page is allocated to a logical page, the block # and physical page # of the allocated physical page are stored in block # 1104 and physical page # 1105 of the logical-physical conversion table 1100, and the status 1103 is “allocated”. Is stored. At the same time, “assignment” is also stored in the status 1154 (in the block management table 1105) of the assigned physical page.
 また、ブロックに障害が発生して、ブロック内の物理ページにアクセスできなくなった場合、SSD21はそのブロックを使用できないブロックとして管理する。そのためにSSD21は、そのブロックに属する各物理ページのステータス1154に「故障(閉塞)」を格納する。 Also, when a failure occurs in a block and the physical page in the block cannot be accessed, the SSD 21 manages the block as an unusable block. Therefore, the SSD 21 stores “failure (blocked)” in the status 1154 of each physical page belonging to the block.
 FMセルモード1152は、当該ブロックのセルがどのモードであるかを示す情報で、FMセルモード1152には“TLC”または“MLC”の何れかの情報が格納される。している。消去回数1155には、ブロック消去の累積回数が格納される。 The FM cell mode 1152 is information indicating which mode the cell of the block is in, and the FM cell mode 1152 stores either “TLC” or “MLC” information. is doing. In the erase count 1155, the cumulative count of block erase is stored.
 これ以降では、各処理のフローについて説明する。 Hereafter, the flow of each process will be described.
 図13は、ストレージコントローラタスクのフローチャートである。ストレージコントローラタスクは、ストレージコントローラ10のCPU11がストレージ制御プログラムを実行することにより実現される。ストレージコントローラ10は定期的にこのタスク処理を実行する。なお、以下でストレージコントローラ10を主語として説明されている処理があるが、これは特に断りのない限りCPU11で実行されることを意味する。 FIG. 13 is a flowchart of the storage controller task. The storage controller task is realized by the CPU 11 of the storage controller 10 executing a storage control program. The storage controller 10 periodically executes this task process. In the following, there is a process described with the storage controller 10 as the subject, but this means that it is executed by the CPU 11 unless otherwise specified.
 ストレージコントローラ10は、ホスト計算機2からリード又はライトの要求を受信済みであるか否かを判定する(S10)。何れの要求も受けていない場合(S10:No)、次にS20が行われる。 The storage controller 10 determines whether a read or write request has been received from the host computer 2 (S10). If no request has been received (S10: No), S20 is performed next.
 リード又はライトの要求を受信済みの場合(S10:Yes)、ストレージコントローラ10は、この要求がリード又はライトの何れであるかを判定する(S40)。この要求がリードであった場合(S40:リード)、ストレージコントローラ10は、リード処理を実行し(S50)、その後S20を実行する。リード処理の詳細については後述する(図15参照)。この要求がライトであった場合(S40:ライト)、ストレージコントローラ10は、ライト処理を実行し(S60)、その後S20を実行する。ライト処理の詳細については後述する(図14参照)。 When a read or write request has been received (S10: Yes), the storage controller 10 determines whether this request is a read or a write (S40). If this request is a read (S40: Read), the storage controller 10 executes a read process (S50), and then executes S20. Details of the read process will be described later (see FIG. 15). If this request is a write (S40: write), the storage controller 10 executes a write process (S60), and then executes S20. Details of the write processing will be described later (see FIG. 14).
 次にストレージコントローラ10は、ドライブ監視処理を実行し(S20)、その後S30の判定を行う。ドライブ監視処理の詳細については後述する(図20)。 Next, the storage controller 10 executes a drive monitoring process (S20), and then makes a determination in S30. Details of the drive monitoring process will be described later (FIG. 20).
 S30において、ストレージコントローラ10は、ストレージ装置1の停止の要求を受信済みであるか否かを判定する(S30)。停止の要求を受信済みの場合(S30:Yes)、ストレージコントローラ10は、ストレージ装置1の停止処理を実行し、処理を終了する(END)。停止の要求を未受信の場合(S30:No)、ストレージコントローラ10は、再びS10から処理を繰り返す。 In S30, the storage controller 10 determines whether or not a request for stopping the storage apparatus 1 has been received (S30). When the stop request has been received (S30: Yes), the storage controller 10 executes the stop process of the storage apparatus 1 and ends the process (END). When the stop request has not been received (S30: No), the storage controller 10 repeats the process from S10 again.
 図14は、ストレージコントローラのライト処理のフローチャートである。ストレージコントローラタスクと同様、ライト処理も、ストレージコントローラ10のCPU11がストレージ制御プログラムを実行することにより実現される。 FIG. 14 is a flowchart of storage controller write processing. Similar to the storage controller task, the write processing is also realized by the CPU 11 of the storage controller 10 executing the storage control program.
 ホスト2は、ストレージコントローラ10に、ライト要求及びライトデータを送信する(S61)。ストレージコントローラ10は、ホスト2からライト要求を受信すると、ライト処理を開始する。まずストレージコントローラ10は、仮想ボリューム管理テーブル500及びプール管理テーブル550を参照し、そのライト要求が指定する仮想ボリュームのライト先のアドレスを含む仮想チャンクに、チャンクが割り当て済みであるか否かを判定する(S62)。 The host 2 transmits a write request and write data to the storage controller 10 (S61). When the storage controller 10 receives a write request from the host 2, the storage controller 10 starts a write process. First, the storage controller 10 refers to the virtual volume management table 500 and the pool management table 550 to determine whether or not a chunk has been allocated to a virtual chunk including the write destination address of the virtual volume specified by the write request. (S62).
 そのライト先の仮想チャンクにチャンクが未割り当ての場合(S62:No)、ストレージコントローラ10は、その仮想チャンクにチャンクを割り当て(S63)、チャンクの割り当てが行われた後S64を実行する。ライト先の仮想チャンクにチャンクが割り当て済みである場合(S62:Yes)、ストレージコントローラ10は、S63を行うことなくS64を実行する。 When the chunk is not assigned to the write-destination virtual chunk (S62: No), the storage controller 10 assigns the chunk to the virtual chunk (S63), and executes S64 after the chunk is assigned. When the chunk has been allocated to the write-destination virtual chunk (S62: Yes), the storage controller 10 executes S64 without performing S63.
 S64において、ストレージコントローラ10は、ライトデータをキャッシュに格納し、パリティの生成を行う(S64)。ここで生成されるパリティは、ライトデータと同一ストライプラインに属するパリティストライプのパリティデータである。また、パリティ生成のために記憶デバイス(SSD21)から更新前のデータまたはパリティを読み出す必要がある場合には、その処理も行われる。 In S64, the storage controller 10 stores the write data in the cache and generates parity (S64). The parity generated here is parity data of a parity stripe belonging to the same stripe line as the write data. Further, when it is necessary to read data or parity before update from the storage device (SSD 21) for parity generation, the processing is also performed.
 S64の後、ストレージコントローラ10はライト先の記憶デバイスへライトコマンド及びライトデータを送信する(S65)。なお、ここではライトデータの他に、パリティも記憶デバイスに書き込まれる。そして、ストレージコントローラ10は、ライト先の記憶デバイスからライト完了通知を受信する(S66)。ストレージコントローラ10は、ホスト2に、ライト要求に対する完了応答を送信する(S67)。ホスト2は、ストレージコントローラ10からライト要求に対する完了応答を受信し(S68)、処理を終了する(END)。 After S64, the storage controller 10 transmits a write command and write data to the write destination storage device (S65). Here, in addition to the write data, the parity is also written to the storage device. Then, the storage controller 10 receives a write completion notification from the write destination storage device (S66). The storage controller 10 transmits a completion response to the write request to the host 2 (S67). The host 2 receives a completion response to the write request from the storage controller 10 (S68), and ends the processing (END).
 なお、ここで説明したライト処理の流れは一例であり、これとは異なる順序で各ステップが実行されてもよい。たとえば上で説明した処理では、記憶デバイスにライトデータ及びパリティが書き込まれた後、ホスト2に完了応答が送信される。ただし別の実施形態として、ストレージコントローラ10はライトデータをキャッシュに格納した(S64)直後に、ホスト2に完了応答を送信し、その後ライトデータやパリティを記憶デバイスに送信するという順序で処理を行ってもよい。 Note that the flow of the write process described here is an example, and each step may be executed in a different order. For example, in the processing described above, after write data and parity are written to the storage device, a completion response is transmitted to the host 2. However, as another embodiment, the storage controller 10 performs processing in the order of transmitting a completion response to the host 2 immediately after storing the write data in the cache (S64) and then transmitting the write data and parity to the storage device. May be.
 以上の処理により、ストレージ装置1は、ホスト2から送信されたライトデータを格納することが出来る。 Through the above processing, the storage apparatus 1 can store the write data transmitted from the host 2.
 図15は、ストレージコントローラのリード処理のフローチャートである。リード処理も、ストレージコントローラ10のCPU11がストレージ制御プログラムを実行することにより実現される。 FIG. 15 is a flowchart of the storage controller read processing. The read process is also realized by the CPU 11 of the storage controller 10 executing a storage control program.
 ホスト2は、ストレージコントローラ10に、リード要求を送信する(S51)。ストレージコントローラ10は、ホスト2からリード要求を受信するとリード処理を開始する。まずストレージコントローラ10は、そのリード要求が指定する仮想ボリュームのアドレスを含む仮想チャンクを特定し、仮想チャンクに割り当てられているチャンクを特定し、チャンクを構成する記憶デバイスの中から、リード先の記憶デバイスを特定する(S52)。ストレージコントローラ10は、その特定した記憶デバイスにリードコマンドを送信する(S53)。そして、ストレージコントローラ10は、その記憶デバイスからリードデータを受信する(S54)。ストレージコントローラ10は、そのリードデータをキャッシュに格納する(S55)。ストレージコントローラ10は、ホスト2に、リード要求に対する完了応答及びリードデータを送信する(S56)。ホスト2は、ストレージコントローラ10から完了応答及びリードデータを受信し(S57)、処理を終了する(END)。 The host 2 sends a read request to the storage controller 10 (S51). When the storage controller 10 receives a read request from the host 2, the storage controller 10 starts a read process. First, the storage controller 10 specifies a virtual chunk including the address of the virtual volume specified by the read request, specifies a chunk assigned to the virtual chunk, and stores the read destination from the storage devices constituting the chunk. A device is specified (S52). The storage controller 10 transmits a read command to the specified storage device (S53). Then, the storage controller 10 receives read data from the storage device (S54). The storage controller 10 stores the read data in the cache (S55). The storage controller 10 transmits a completion response to the read request and read data to the host 2 (S56). The host 2 receives a completion response and read data from the storage controller 10 (S57), and ends the processing (END).
 以上の処理により、ストレージ装置1は、ホスト2からのリード要求に対して、リードデータを応答することができる。 Through the above processing, the storage apparatus 1 can respond with read data in response to a read request from the host 2.
 図16は、SSDコントローラタスクのフローチャートである。SSDコントローラ200のCPU201がSSD制御プログラムを実行することで、SSDコントローラタスクが行われる。SSDコントローラタスクは定期的に実行される。以下では、SSDコントローラ200を主語として各処理の説明を行うが、特に断りのない限り、各処理はCPU201で実行されることを意味する。 FIG. 16 is a flowchart of the SSD controller task. The SSD controller task is performed by the CPU 201 of the SSD controller 200 executing the SSD control program. The SSD controller task is executed periodically. In the following, each process will be described with the SSD controller 200 as the subject. However, unless otherwise specified, it means that each process is executed by the CPU 201.
 SSDコントローラ200は、まずイニシエータであるストレージコントローラ10からのリードやライトの要求に対する処理を行う(S100)。リード・ライト処理の詳細については後述する(図17)次に、ブロック故障の有無をチェックするためのFM診断処理を実施(S120)し、その後、必要に応じて予備領域を回復させるためのFM枯渇回復処理を実行し(S140)、S160の判定を行う。なお、FM診断処理の詳細については後述する(図18)。また、FM枯渇回復処理についても後述する(図19)。 The SSD controller 200 first performs a process for a read or write request from the storage controller 10 as an initiator (S100). Details of the read / write processing will be described later (FIG. 17). Next, FM diagnosis processing for checking the presence or absence of a block failure is performed (S120), and then an FM for restoring the spare area as necessary. A depletion recovery process is executed (S140), and the determination of S160 is performed. Details of the FM diagnosis process will be described later (FIG. 18). Further, the FM depletion recovery process will be described later (FIG. 19).
 S160において、SSDコントローラ200は、ストレージコントローラ10からSSD21の停止の要求を受信済みであるか否かを判定する。停止の要求を受信済みの場合(S160:Yes)、SSDコントローラ200は、SSD21の停止処理を実行し、処理を終了する(END)。停止の要求を未受信の場合(S160:No)、SSDコントローラ200は、再びS100から処理を繰り返す。 In S160, the SSD controller 200 determines whether or not a request to stop the SSD 21 has been received from the storage controller 10. When the stop request has been received (S160: Yes), the SSD controller 200 executes the stop process of the SSD 21 and ends the process (END). When the stop request has not been received (S160: No), the SSD controller 200 repeats the process from S100 again.
 以上の処理により、SSD21は、ストレージコントローラ10から送信されたライトデータの格納や、リードデータの読み出しをすることができる。また、FMチップ210の状態を監視し、その結果に応じて、予備容量の回復処理を実行することが出来る。 Through the above processing, the SSD 21 can store the write data transmitted from the storage controller 10 and read the read data. Further, the state of the FM chip 210 can be monitored, and the recovery process of the spare capacity can be executed according to the result.
 図17は、SSDコントローラのデータリード・ライト処理のフローチャートである。SSDコントローラタスクと同様、SSDコントローラ200のCPU201がSSD制御プログラムを実行することで、データリード・ライト処理が実現される。なお、説明が複雑化することを避けるために、ここでは、ストレージコントローラ10がSSD21に要求するアクセス要求(リード要求やライト要求)で指定されるデータアクセスサイズは1論理ページのサイズであり、またアクセス要求で指定される論理アドレス空間上の範囲は、論理ページ境界に一致している例を説明する。 FIG. 17 is a flowchart of data read / write processing of the SSD controller. Similar to the SSD controller task, the CPU 201 of the SSD controller 200 executes the SSD control program, thereby realizing data read / write processing. In order to avoid complicated description, here, the data access size specified by the access request (read request or write request) requested by the storage controller 10 to the SSD 21 is the size of one logical page. An example will be described in which the range on the logical address space specified by the access request matches the logical page boundary.
 SSDコントローラ200は、イニシエータであるストレージコントローラ10からリードやライトの要求を受領したか否かを判定する(S101)。要求を受領していない場合(S101:No)、SSDコントローラ200は、本処理を終了する。ストレージコントローラ10からの要求を受領した場合(S101:Yes)、SSDコントローラ200は、要求の内容を判定する(S102)。 The SSD controller 200 determines whether a read or write request has been received from the storage controller 10 as an initiator (S101). If the request has not been received (S101: No), the SSD controller 200 ends this process. When the request from the storage controller 10 is received (S101: Yes), the SSD controller 200 determines the content of the request (S102).
 この要求がリードコマンドであった場合(S102:リードコマンド)、SSDコントローラ200は、論理物理変換テーブル1100の情報をもとに、リード対象のデータを格納する物理ページから、バッファ領域にデータを転送する(S103)。次にSSDコントローラ200は、FMチップI/F203の有するECC回路のエラー検出結果をもとに、リードしたデータが正常に読めたか否かを判断する(S104)。S104にてデータが正常にリードできなかった場合は、SSDコントローラ200はECCによるエラーが不可であるアンコレクタブルエラー状態であると判断し(S104:Yes)、S105に進む。一方、S104にてデータが正常にリードできた場合には(S104:no)、SSDコントローラ200はバッファ領域内のデータをストレージコントローラ10に転送し(S117)、一連の処理を終了する。 If this request is a read command (S102: read command), the SSD controller 200 transfers data from the physical page storing the read target data to the buffer area based on the information in the logical-physical conversion table 1100. (S103). Next, the SSD controller 200 determines whether or not the read data is normally read based on the error detection result of the ECC circuit included in the FM chip I / F 203 (S104). If the data could not be read normally in S104, the SSD controller 200 determines that an uncorrectable error state in which an error due to ECC is impossible (S104: Yes), and proceeds to S105. On the other hand, when the data can be normally read in S104 (S104: no), the SSD controller 200 transfers the data in the buffer area to the storage controller 10 (S117), and ends a series of processing.
 S105では、SSDコントローラ200は、リード対象のデータを格納していた物理ページが所属するブロックが故障状態であると判断して、当該ブロックを閉塞させる(S105)。次にSSDコントローラ200は、パリティデータを用いて、当該ブロックのデータの回復処理を行い(S106)、回復させたデータの中からリード対象のデータをストレージコントローラ10に転送する(S108)。次にSSDコントローラ200は、回復したデータを格納するために、ブロック管理テーブル1150の情報をもとに、ステータス1153が未割当状態の物理ページを1ブロック分確保し、回復したデータを確保されたブロックへ格納する(S109)。 In S105, the SSD controller 200 determines that the block to which the physical page storing the read target data belongs is in a failure state, and closes the block (S105). Next, the SSD controller 200 performs data recovery processing of the block using the parity data (S106), and transfers the read target data to the storage controller 10 from the recovered data (S108). Next, in order to store the recovered data, the SSD controller 200 secures one block of physical pages whose status 1153 is unallocated based on the information in the block management table 1150, and the recovered data is secured. Store in the block (S109).
 S109の後、SSDコントローラ200は各種テーブル(論理物理変換テーブル1100とブロック管理テーブル1150と構成情報管理テーブル1300)の更新作業を行う(S110)。特にS110では、SSDコントローラ200は構成情報管理テーブル1300の故障状態のブロック数1303に1を加算し、故障状態のブロック容量1304に1ブロック分の容量を加算する。また閉塞されたブロックがMLCモードの場合、SSDコントローラ200は、正常状態(MLCモード)のブロック数1303を1減算し、正常状態(MLCモード)のブロック容量1304から1ブロック分の容量を減算する(TLCモードのブロックが閉塞された場合には、正常状態(TLCモード)のブロック数1303及び正常状態(TLCモード)のブロック容量1304の減算が行われる)。更にSSDコントローラ200は、予備容量1305の更新(減算)を行う。S110の後SSDコントローラ200は、処理を終了する。 After S109, the SSD controller 200 performs an update operation of various tables (the logical physical conversion table 1100, the block management table 1150, and the configuration information management table 1300) (S110). In particular, in S110, the SSD controller 200 adds 1 to the number of failed blocks 1303 in the configuration information management table 1300, and adds the capacity of one block to the failed block capacity 1304. When the blocked block is in the MLC mode, the SSD controller 200 subtracts 1 from the number of blocks 1303 in the normal state (MLC mode) and subtracts the capacity for one block from the block capacity 1304 in the normal state (MLC mode). (When a block in the TLC mode is blocked, the number of blocks 1303 in the normal state (TLC mode) and the block capacity 1304 in the normal state (TLC mode) are subtracted). Furthermore, the SSD controller 200 updates (subtracts) the reserve capacity 1305. After S110, the SSD controller 200 ends the process.
 一方、S102にて受領した要求がライトコマンドであった場合(S102:ライトコマンド)、SSDコントローラ200は、先ずライト対象のデータをバッファ領域に格納し(S111)、次に、ブロック管理テーブル1150の情報をもとに、ステータス1153が未割当状態の物理ページを特定し、バッファ領域に格納したデータを特定された物理ページに格納する(S113)。さらにSSDコントローラ200は、データの格納された物理ページと同一ストライプラインにあるパリティストライプを生成して、生成されたパリティストライプを格納するために未割り当て状態の物理ページを1つ選択し、選択された物理ページにパリティデータを書き込む(S114)。その後SSDコントローラ200は、ライトコマンドに係る処理の完了の通知(応答)を、ストレージコントローラ10に返送する(S115)。 On the other hand, when the request received in S102 is a write command (S102: write command), the SSD controller 200 first stores the write target data in the buffer area (S111), and then stores the data in the block management table 1150. Based on the information, the physical page whose status 1153 is not allocated is specified, and the data stored in the buffer area is stored in the specified physical page (S113). Furthermore, the SSD controller 200 generates a parity stripe on the same stripe line as the physical page in which data is stored, selects one unassigned physical page to store the generated parity stripe, and selects the selected physical page. Parity data is written in the physical page (S114). Thereafter, the SSD controller 200 returns a notification (response) of the completion of processing related to the write command to the storage controller 10 (S115).
 S115の後、SSDコントローラ200は、S110を行う。なお、S115の後にS110が行われる場合、SSDコントローラ200はS110で、論理物理変換テーブル1100とブロック管理テーブル1150の更新を行う。 After S115, the SSD controller 200 performs S110. When S110 is performed after S115, the SSD controller 200 updates the logical-physical conversion table 1100 and the block management table 1150 in S110.
 図18は、SSDコントローラのFM診断処理のフローチャートである。SSDコントローラタスクと同様、SSDコントローラ200のCPU201がSSD制御プログラムを実行することで、FM診断処理が実現される。 FIG. 18 is a flowchart of the FM diagnosis process of the SSD controller. Similar to the SSD controller task, the CPU 201 of the SSD controller 200 executes the SSD control program, thereby realizing FM diagnosis processing.
 SSDコントローラ200は、診断が必要なブロックが存在するか否かを判断する(S121)。例えば本処理は、特定の時間間隔(周期)などで定期的に処理しても良いし、ストレージコントローラ10からの実行指示などの特定のコマンドを受領した際や、ブロックの消去回数やページのアクセス回数がN回に到達したなどの、特定のイベントが発生した際などに実行しても良い。診断が不要と判断した場合(S121:No)、SSDコントローラ200は処理を終了する(END)。処理が必要と判断した場合(S121:Yes)は、SSDコントローラ200は検査対象のブロックを選択し(S122)、対処ブロック内のページのデータをリードする(S123)。その後、S124が行われる。なお、S123でSSDコントローラ200は全てのページをリードする必要はなく、例えば、論理ページに割り当てられている物理ページのみ、あるいは物理ページ番号が偶数や奇数などの特定の物理ページのみをリード対象としても良い。 The SSD controller 200 determines whether there is a block that needs to be diagnosed (S121). For example, this processing may be performed periodically at specific time intervals (cycles) or when a specific command such as an execution instruction from the storage controller 10 is received, the number of block erasures, or page access It may be executed when a specific event occurs, such as when the number of times reaches N times. When it is determined that the diagnosis is unnecessary (S121: No), the SSD controller 200 ends the process (END). If it is determined that processing is necessary (S121: Yes), the SSD controller 200 selects a block to be inspected (S122), and reads the data of the page in the handling block (S123). Thereafter, S124 is performed. In S123, the SSD controller 200 does not need to read all pages. For example, only the physical page allocated to the logical page or only a specific physical page having an even or odd physical page number is read. Also good.
 S124ではSSDコントローラ200は、ハードウェアの突発的な故障などにより、アンコレクタブルエラーが発生したページが存在するか否かを判断する。アンコレクタブルエラーが発生したページが存在する場合には(S124:Yes)、SSDコントローラ200は当該のブロックを閉塞させる(S127)。次にパリティデータを用いて、当該ブロックのデータを回復させ(S128)、回復したデータを別のブロックへと格納する(S129)。その後、各種テーブルの更新作業を行う(S130)。S127~S130の処理は、ストレージコントローラ10へのデータ送信(S108)が行われない点を除けばS105~S110と同じである。その後、再びS121が行われる。 In S124, the SSD controller 200 determines whether there is a page in which an uncorrectable error has occurred due to a sudden hardware failure or the like. If there is a page where an uncorrectable error has occurred (S124: Yes), the SSD controller 200 closes the block (S127). Next, the parity data is used to recover the data in the block (S128), and the recovered data is stored in another block (S129). Thereafter, various tables are updated (S130). The processing of S127 to S130 is the same as S105 to S110 except that data transmission to the storage controller 10 (S108) is not performed. Thereafter, S121 is performed again.
 一方、S124でアンコレクタブルエラーが発生したページが存在しない場合には(S124:No)、SSDコントローラ200はS125を実行する。S125では、SSDコントローラ200は、検査対象のページに発生していたエラービットの数が所定の閾値より多いか否かを判断する。S125にてエラービットの発生数が所定の閾値より多くない場合は(S125:no)、SSDコントローラ200は再びS121から処理を行う。一方、エラービットの発生数が所定の閾値より多い場合は(S125:Yes)、SSDコントローラ200は当該のブロックに対して、リフレッシュ処理を実施し(S126)、その後S130を実行する。なお、「リフレッシュ」とは、物理ページ(またはブロック)に格納されているデータを読み出して、別の物理ページ(ブロック)に移動する処理のことを意味する。そのためS130では、論理物理変換テーブル1100、ブロック管理テーブル1150の更新が行われる。ただしS126の後にS130が実行される場合、ブロックの閉塞は発生していないため、構成情報管理テーブル1300の更新は行われない。 On the other hand, when there is no page in which an uncorrectable error has occurred in S124 (S124: No), the SSD controller 200 executes S125. In S125, the SSD controller 200 determines whether or not the number of error bits generated on the inspection target page is greater than a predetermined threshold. If the number of generated error bits is not greater than the predetermined threshold value in S125 (S125: no), the SSD controller 200 performs the process from S121 again. On the other hand, when the number of generated error bits is larger than the predetermined threshold (S125: Yes), the SSD controller 200 performs a refresh process on the block (S126), and then executes S130. Note that “refresh” means a process of reading data stored in a physical page (or block) and moving it to another physical page (block). Therefore, in S130, the logical / physical conversion table 1100 and the block management table 1150 are updated. However, when S130 is executed after S126, the block of block is not generated, and the configuration information management table 1300 is not updated.
 図19は、SSDコントローラのFM枯渇回復処理のフローチャートである。SSDコントローラタスクと同様、SSDコントローラ200のCPU201がSSD制御プログラムを実行することで、FM枯渇回復処理が実現される。 FIG. 19 is a flowchart of the FM depletion recovery process of the SSD controller. Similar to the SSD controller task, the CPU 201 of the SSD controller 200 executes the SSD control program, thereby realizing FM depletion recovery processing.
 SSDコントローラ200は、構成情報管理テーブル1300を参照し、予備容量の枯渇が近いか否かを判断する(S141)。具体的には、SSDコントローラ200は予備容量1305の値がFMモード変更閾値1306を下まわっている場合に、予備容量の枯渇が近いと判断する。S141にて、枯渇が近くないと判断された場合には(S141:No)、処理は終了する。 The SSD controller 200 refers to the configuration information management table 1300 to determine whether or not the spare capacity is almost exhausted (S141). Specifically, when the value of the reserve capacity 1305 is below the FM mode change threshold value 1306, the SSD controller 200 determines that the reserve capacity is almost exhausted. If it is determined in S141 that the depletion is not near (S141: No), the process ends.
 一方、枯渇が近いと判断された場合には(S141:Yes)、SSDコントローラ200はセルのモードを変更可能なブロックが存在するか否かを、ブロック管理テーブル1150をもとに判断する(S142)。ステータス1154が「故障」ではないが、FMセルモード1152が「TLC」のブロックしか存在しない場合(S142:No)、SSDコントローラ200は、モード変更可能なセルは存在しないと判断し、処理を終了する。一方、ステータス1154が「故障」ではなく、FMセルモード1152が「MLC」のブロックが存在する場合(S142:Yes)、SSDコントローラ200は、モード変更可能なセルが存在すると判断し、S143を実行する。 On the other hand, if it is determined that the depletion is near (S141: Yes), the SSD controller 200 determines whether there is a block whose cell mode can be changed based on the block management table 1150 (S142). ). If the status 1154 is not “failure”, but the FM cell mode 1152 has only a “TLC” block (S142: No), the SSD controller 200 determines that there is no mode changeable cell and ends the process. To do. On the other hand, when the status 1154 is not “failure” and there is a block whose FM cell mode 1152 is “MLC” (S142: Yes), the SSD controller 200 determines that there is a cell whose mode can be changed, and executes S143. To do.
 S143ではSSDコントローラ200は、一部のブロックのセルモードをMLCからTLCへと変更することで、物理容量の拡大を行う。ここでセルモードが変更されるブロックの数は、SSDコントローラ200が任意に決定できる。ただし少なくとも、予備容量1305がFMモード変更閾値1306を上回るために必要な数のブロックをMLCモードからTLCモードに変更する。また、使用中のブロック(論理ページに割り当てられている物理ページを有するブロック)のセルモードが変更されてもよい。ただしその場合、SSDコントローラ200はそのブロック内の物理ページのうち、論理ページに割り当てられている物理ページのデータを未使用の物理ページに移動してから、セルモードの変更を行う。またここで未使用の物理ページにデータを移動した場合、論理ページと物理ページのマッピングが変更されるので、論理物理変換テーブル1100、ブロック管理テーブル1150等の更新が行われる(後述するS144で行われる)。 In S143, the SSD controller 200 expands the physical capacity by changing the cell mode of some blocks from MLC to TLC. Here, the SSD controller 200 can arbitrarily determine the number of blocks whose cell mode is changed. However, at least the number of blocks necessary for the reserve capacity 1305 to exceed the FM mode change threshold 1306 is changed from the MLC mode to the TLC mode. Further, the cell mode of a block in use (a block having a physical page assigned to a logical page) may be changed. However, in that case, the SSD controller 200 changes the cell mode after moving the physical page data allocated to the logical page among the physical pages in the block to an unused physical page. If the data is moved to an unused physical page, the mapping between the logical page and the physical page is changed, so that the logical-physical conversion table 1100, the block management table 1150, etc. are updated (in step S144 described later). )
 その後SSDコントローラ200は、構成情報管理テーブル1300の更新、また必要な場合には論理物理変換テーブル1100とブロック管理テーブル1150の更新を行う(S144)。さらにSSDコントローラ200はストレージコントローラ10に対して、FMのセルモードを変更したことと、その要因がブロックの故障であることを通知して(S145)、本処理を終了する。S145でSSD21からストレージコントローラ10に送信される通知のことを、「モード変更通知」と呼ぶ。なお、モード変更通知には、構成情報管理テーブル1300に含まれる情報も含まれている。そのためストレージコントローラ10はモード変更通知を受け取ることで、SSD21の状態を詳細に把握することが出来る。 Thereafter, the SSD controller 200 updates the configuration information management table 1300 and, if necessary, updates the logical-physical conversion table 1100 and the block management table 1150 (S144). Further, the SSD controller 200 notifies the storage controller 10 that the FM cell mode has been changed and that the cause is a block failure (S145), and ends this processing. The notification transmitted from the SSD 21 to the storage controller 10 in S145 is referred to as “mode change notification”. The mode change notification includes information included in the configuration information management table 1300. Therefore, the storage controller 10 can grasp the state of the SSD 21 in detail by receiving the mode change notification.
 図20は、ストレージコントローラのドライブ監視処理のフローチャートである。ストレージコントローラタスクと同様、ドライブ監視処理も、ストレージコントローラ10のCPU11がストレージ制御プログラムを実行することにより実現される。 FIG. 20 is a flowchart of storage controller drive monitoring processing. Similar to the storage controller task, the drive monitoring process is also realized by the CPU 11 of the storage controller 10 executing the storage control program.
 ストレージコントローラ10は、SSDコントローラ200から、モード変更通知を受領しているか否かを判断する(S21)。モード変更通知を受領していない場合には(S21:No)、本処理は終了する。モード変更通知を受領していた場合には(S21:Yes)、ストレージコントローラ10は物理容量を拡大する余地が残っているかを判断する(S22)。 Storage controller 10 determines whether a mode change notification has been received from SSD controller 200 (S21). If no mode change notification has been received (S21: No), this process ends. If a mode change notification has been received (S21: Yes), the storage controller 10 determines whether there is room for expanding the physical capacity (S22).
 S22が行われる場合、ストレージコントローラ10にはSSD21(SSDコントローラ200)からモード変更通知と共に、構成情報管理テーブル1300の情報も届いている。そのためストレージコントローラ10は構成情報管理テーブル1300の情報を用いて、物理容量を拡大する余地が残っているか(正常状態(MLCモード)のブロック1303が0より大きいか)を判断する。正常かつMLCモードで動作中のブロックが存在する場合には(S22:Yes)、拡大の余地が残っていると判断し、本処理を終了する。一方S22にて、拡大の余地が残っていないと判断した場合には(S22:No)、ストレージコントローラ10は次にS23を実行する。 When S22 is performed, the storage controller 10 receives the information of the configuration information management table 1300 from the SSD 21 (SSD controller 200) together with the mode change notification. Therefore, the storage controller 10 uses the information in the configuration information management table 1300 to determine whether there is room for expanding the physical capacity (whether the normal state (MLC mode) block 1303 is greater than 0). If there is a normal block that is operating in the MLC mode (S22: Yes), it is determined that there is still room for enlargement, and this process is terminated. On the other hand, if it is determined in S22 that there is no room for enlargement (S22: No), the storage controller 10 next executes S23.
 S23では、ストレージコントローラ10は、当該のSSD21には予備容量の枯渇のリスクを回避するための余力が残っていないため、更なるブロックの故障が発生すると、予備容量の完全枯渇が発生するリスクが非常に高いと判断し、スペアドライブにデータをコピーして、当該のSSDを閉塞させる(S23)。なお、RAID技術を採用した公知のストレージ装置の中には、ドライブへのアクセス要求の処理と、スペアドライブへのデータ移動とを並行して実行できる(この2つの処理が並行実施されても、データ破壊や誤ったデータへのアクセスが起きないように制御できる)ものもある。本実施例に係るストレージ装置においても、S23の処理と並行して当該SSD21に対するアクセス要求(リードあるいはライト要求)を受け付けるようにしてもよい。その後、本処理を終了する。 In S23, the storage controller 10 has no remaining capacity for avoiding the risk of depletion of the spare capacity in the relevant SSD 21, so that if there is a further block failure, there is a risk that the spare capacity will be completely depleted. It is determined that the data is very high, data is copied to the spare drive, and the relevant SSD is blocked (S23). In a known storage apparatus that employs RAID technology, it is possible to execute access request processing to a drive and data movement to a spare drive in parallel (even if these two processes are performed in parallel, Some can be controlled to prevent data corruption and access to incorrect data). Also in the storage apparatus according to the present embodiment, an access request (read or write request) to the SSD 21 may be accepted in parallel with the processing of S23. Thereafter, this process is terminated.
 また、S22の判定で、正常状態(MLCモード)のブロック1303が0より大きいか否かを判定する代わりに、ストレージコントローラ10は、正常状態(MLCモード)のブロック1303が所定の閾値より大きいか否かを判定してもよい。あるいはストレージコントローラ10は、S21の判定が肯定的な場合(モード変更通知を受領した場合)には、S22の判定を行わずに必ずS23を実施するようにしてもよい。モード変更通知を発行するSSDは、遠からず予備容量が枯渇して、使用できない状態にある可能性が高いからである。 Further, instead of determining whether or not the normal state (MLC mode) block 1303 is larger than 0 in the determination of S22, the storage controller 10 determines whether the normal state (MLC mode) block 1303 is larger than a predetermined threshold. It may be determined whether or not. Alternatively, when the determination of S21 is affirmative (when the mode change notification is received), the storage controller 10 may always execute S23 without performing the determination of S22. This is because the SSD that issues the mode change notification is likely to be in a state where it cannot be used because the spare capacity is exhausted soon.
 以上が実施例1に係る記憶デバイス(SSD)及びストレージ装置の説明である。本実施例に係るSSDは、予備容量が減少し所定の閾値を下回った時、MLCモード(あるいは各セルがnビットのデータを格納可能なモード)で運用されているブロックの一部を、TLCモード(あるいは各セルがmビット(m>n)のデータを格納可能なモード)で運用されるように変更し、予備容量を増加させる。これによりSSDの予備容量が枯渇して、SSDが使用できなくなる事態が発生することを防ぐことができる。 The above is the description of the storage device (SSD) and the storage apparatus according to the first embodiment. In the SSD according to the present embodiment, when the reserve capacity decreases and falls below a predetermined threshold, a part of a block operated in the MLC mode (or a mode in which each cell can store n-bit data) is stored in the TLC. The mode is changed to operate in a mode (or a mode in which each cell can store m-bit (m> n) data), and the reserve capacity is increased. As a result, it is possible to prevent a situation in which the SSD spare capacity is depleted and the SSD cannot be used.
 また本実施例に係るSSDはMLCモードで運用されているブロックの一部をTLCモードに変更した場合、モード変更通知をストレージ装置のストレージコントローラに送信する。ストレージコントローラはこの通知を受領すると、通知を発行したSSDのデータをスペアドライブに移動する。モード変更通知を発行するSSD、つまりセルのモード変更を行ったSSDは、予備容量が少ない状態にあり、さらなる故障が発生すると使用できなくなる可能性が高い。ストレージコントローラが、モード変更通知を発行したSSDのデータをスペアドライブに移動することで、さらなる故障が発生しても、データにアクセスできなくなる事態を防ぐことができる。 In addition, when the SSD according to the present embodiment changes a part of the block operated in the MLC mode to the TLC mode, the SSD transmits a mode change notification to the storage controller of the storage apparatus. When the storage controller receives this notification, it moves the SSD data that issued the notification to the spare drive. The SSD that issues the mode change notification, that is, the SSD that has changed the mode of the cell is in a state where the spare capacity is small, and there is a high possibility that it cannot be used if a further failure occurs. When the storage controller moves the data of the SSD that has issued the mode change notification to the spare drive, it is possible to prevent a situation in which the data cannot be accessed even if a further failure occurs.
 また、SSDの予備容量が所定閾値を下回った時点で、SSDでセルのモード変更を行わずに、即座にストレージコントローラに、スペアドライブへのデータ移動を行わせてもよいが、その場合、SSDに更なる故障が発生すると、そのSSDが使用できなくなり、スペアドライブへのデータ移動ができなくなる可能性がある。そのため本実施例で説明したように、一旦SSDがセルのモード変更を行って、ある程度の予備容量を確保してから、ストレージコントローラがスペアドライブへのデータ移動を行う方が、より確実にデータ移動を行うことができる。 In addition, when the spare capacity of the SSD falls below a predetermined threshold, the storage controller may immediately move the data to the spare drive without changing the cell mode in the SSD. If a further failure occurs, the SSD cannot be used, and there is a possibility that data cannot be moved to the spare drive. Therefore, as explained in the present embodiment, it is more reliable that the storage controller moves the data to the spare drive after the SSD has changed the cell mode once to secure a certain spare capacity. It can be performed.
 続いて実施例2に係るストレージ装置の説明を行う。実施例2に係るストレージ装置の構成は実施例1で説明したものと同じである。また、実施例2に係るSSDのハードウェア構成も実施例1で説明したものとほぼ同様である。そのため、ストレージ装置やSSD内の各構成要素を特定する際、実施例1で用いられた用語(または参照番号)と同じものを用いて説明する。 Subsequently, the storage apparatus according to the second embodiment will be described. The configuration of the storage apparatus according to the second embodiment is the same as that described in the first embodiment. The hardware configuration of the SSD according to the second embodiment is almost the same as that described in the first embodiment. Therefore, when specifying each component in a storage apparatus or SSD, it demonstrates using the same term (or reference number) used in Example 1. FIG.
 なお、実施例1に係るSSDは、必ずしも圧縮・伸張回路207を備えている必要はなかったが、実施例2に係るSSDは、必ず圧縮・伸張回路207あるいはそれの均等物を備える。 Note that the SSD according to the first embodiment does not necessarily include the compression / decompression circuit 207, but the SSD according to the second embodiment always includes the compression / decompression circuit 207 or an equivalent thereof.
 本明細書において、「圧縮」とはLZWアルゴリズム等の可逆圧縮アルゴリズムを用いて、データの意味を保ったままデータサイズを縮小する処理のことを意味する。SSD21はストレージコントローラ10からライトデータを受領すると、圧縮・伸長回路207を用いてデータの圧縮を行い、圧縮されたデータをFM210に格納する。圧縮・伸長回路207によって圧縮されたデータのことを「圧縮データ」と呼ぶ。 In this specification, “compression” means a process of reducing the data size while maintaining the meaning of the data using a reversible compression algorithm such as the LZW algorithm. When the SSD 21 receives the write data from the storage controller 10, it compresses the data using the compression / decompression circuit 207 and stores the compressed data in the FM 210. Data compressed by the compression / decompression circuit 207 is referred to as “compressed data”.
 また可逆圧縮アルゴリズムを用いて、圧縮データを元のデータサイズに戻す処理のことを、「伸張」と呼ぶ。SSD21はストレージコントローラ10からリード要求を受け付けると、FM210から圧縮データを読み出し、圧縮・伸長回路207を用いて圧縮データを伸張してから、ストレージコントローラ10にデータを返送する。つまり本実施例に係るストレージ装置1では、データの圧縮または伸張は、ホスト1やストレージコントローラ10には透過的に実施される。 Also, the process of restoring the compressed data to the original data size using the lossless compression algorithm is called “decompression”. When the SSD 21 receives a read request from the storage controller 10, the SSD 21 reads the compressed data from the FM 210, decompresses the compressed data using the compression / decompression circuit 207, and returns the data to the storage controller 10. That is, in the storage device 1 according to the present embodiment, data compression or expansion is performed transparently to the host 1 and the storage controller 10.
 以下、図21を用いて実施例2の概要を説明する。なお本実施例における圧縮率の定義は以下の通りである。あるデータ(サイズをxとする)を圧縮したことにより、そのデータのサイズがy(0<y≦x)に減少した時、圧縮率は“y÷x”を算出する事で求められる。データの圧縮効率が良く、圧縮後のデータサイズが小さくなるほど、圧縮率の値も小さくなる(0に近い値をとる)。逆に圧縮後のデータサイズが大きいほど、圧縮率の値は大きくなる(1に近い値をとる)。そのため本実施例では、「圧縮率が小さい」とは圧縮効率が良く圧縮後データサイズが小さくなることを意味し、「圧縮率が大きい」とは圧縮効率が悪く、圧縮後データサイズがあまり小さくならないことを意味する。 Hereinafter, an outline of the second embodiment will be described with reference to FIG. In addition, the definition of the compression rate in a present Example is as follows. When compression of certain data (with size x) reduces the data size to y (0 <y ≦ x), the compression ratio can be obtained by calculating “y ÷ x”. As the data compression efficiency is higher and the data size after compression becomes smaller, the value of the compression rate becomes smaller (takes a value close to 0). Conversely, the larger the data size after compression, the larger the value of the compression ratio (takes a value close to 1). Therefore, in this embodiment, “small compression ratio” means that the compression efficiency is good and the data size after compression is small, and “high compression ratio” means that the compression efficiency is bad and the data size after compression is too small. It means not to be.
 図21は、第2の実施例の概要を示す図で、図1と同様に、SSD内部の容量の変化を時系列で表現したものである。時刻t1において、物理容量1021は論理アドレス空間に割り当てるために必要な物理記憶領域のサイズで、物理容量1022は予備容量である。また時刻t1の時点では、物理容量1021および1022に相当する物理領域はMLCモードにより構築されている。 FIG. 21 is a diagram showing an outline of the second embodiment. Similar to FIG. 1, the change in the internal capacity of the SSD is expressed in time series. At time t1, the physical capacity 1021 is the size of the physical storage area required for allocation to the logical address space, and the physical capacity 1022 is a spare capacity. At time t1, the physical area corresponding to the physical capacities 1021 and 1022 is constructed in the MLC mode.
 実施例2に係るSSDでは、FMに格納されるデータのサイズが縮小されることを期待して、論理容量が定められている。そのため、初期状態において、SSDの論理容量1020は、物理容量1021よりも大きい値に定められている。なぜなら物理容量に実際に格納されるデータが縮小されると、物理容量を超える量のデータがSSDに格納できるからである。 In the SSD according to the second embodiment, the logical capacity is determined in expectation that the size of data stored in the FM is reduced. Therefore, in the initial state, the logical capacity 1020 of the SSD is set to a value larger than the physical capacity 1021. This is because when the data actually stored in the physical capacity is reduced, an amount of data exceeding the physical capacity can be stored in the SSD.
 実施例2に係るSSDでは、一般的なデータを圧縮・伸張回路207で圧縮した場合の圧縮率の平均値(本明細書ではこれを「想定圧縮率」と呼ぶ。想定圧縮率は所定の定数である)に基づいて論理容量が定められている。初期状態において、データの想定圧縮率をaとすると、論理容量1020は、物理容量1021÷aで求められる値に等しい。図21において、時刻t1の状態は、論理アドレス空間の全域(あるいはほぼ全域)にデータが書き込まれ、各データの圧縮率が想定圧縮率(a)だった場合の状態である。この時は、物理容量1021に相当する量の物理領域が、論理アドレス空間全域にマップされた状態にある。 In the SSD according to the second embodiment, the average value of the compression rate when general data is compressed by the compression / decompression circuit 207 (this is referred to as “assumed compression rate” in this specification. The assumed compression rate is a predetermined constant. The logical capacity is determined on the basis of In the initial state, if the assumed compression rate of data is a, the logical capacity 1020 is equal to the value obtained by the physical capacity 1021 ÷ a. In FIG. 21, the state at time t1 is a state in which data is written in the entire logical address space (or almost the entire region) and the compression rate of each data is the assumed compression rate (a). At this time, an amount of physical area corresponding to the physical capacity 1021 is mapped to the entire logical address space.
 ただし、圧縮率の平均値以外の値が想定圧縮率として用いられてもよい。つまり圧縮率の平均値以外の指標に基づいて論理容量が定められてもよい。たとえば全てのデータが、圧縮・伸張回路207で実現可能な最小の圧縮率(これをbとする)で圧縮されることを前提として、論理容量が定められてもよい。その場合、論理容量は物理容量1021÷bになる。たとえばb=0.25の場合(すべてのデータが4分の1に圧縮される場合)、論理容量は物理容量1021の4倍になる。 However, a value other than the average compression rate may be used as the assumed compression rate. That is, the logical capacity may be determined based on an index other than the average value of the compression rate. For example, the logical capacity may be determined on the assumption that all data is compressed at the minimum compression rate (this is b) that can be realized by the compression / decompression circuit 207. In this case, the logical capacity is physical capacity 1021 / b. For example, when b = 0.25 (when all data is compressed to a quarter), the logical capacity is four times the physical capacity 1021.
 t2はt1にて格納済みのデータが上書き更新された場合に、更新データが圧縮の効きにくいデータパタンに変化した(すなわち、データの圧縮率が悪化した)ケースを示している。データの圧縮率が悪化すると、圧縮後のデータサイズが大きくなる。そのため、t1にてユーザデータを格納するために必要とする物量容量は、物理容量1021から物理容量1024へと大きくなる。それに伴い、予備容量として確保されていた物理容量1022のサイズは、物理容量1025へと縮小される。 T2 represents a case in which when the data already stored at t1 is overwritten and updated, the update data has changed to a data pattern that is difficult to compress (that is, the data compression rate has deteriorated). When the data compression rate deteriorates, the data size after compression increases. For this reason, the physical capacity required to store user data at t1 increases from the physical capacity 1021 to the physical capacity 1024. Along with this, the size of the physical capacity 1022 reserved as the spare capacity is reduced to the physical capacity 1025.
 すなわち、データ圧縮機能と論理容量の拡張機能を有するSSDでは、格納済みデータの圧縮率が悪化すると、予備容量が圧迫され、最終的に枯渇に陥るリスクを有する。そこで実施例2では、t3にて物理容量1024または1025の一部をMLCモードからTLCモードに切り替えることで、予備容量を拡大し、枯渇に陥るリスクを回避する。 That is, in an SSD having a data compression function and a logical capacity expansion function, when the compression rate of stored data deteriorates, there is a risk that the reserve capacity is compressed and eventually runs out. Therefore, in the second embodiment, by switching a part of the physical capacity 1024 or 1025 from the MLC mode to the TLC mode at t3, the reserve capacity is expanded and the risk of exhaustion is avoided.
 以降では、実施例1との差分点のみを記載する。 Hereinafter, only the difference from Example 1 will be described.
 図26は、実施例2に係るSSD21が有する、論理物理変換テーブル1100’の構成例である。実施例2に係るSSD21は、実施例1に係るSSD21が有する論理物理変換テーブル1100(図11)に代えて、論理物理変換テーブル1100’を有する。 FIG. 26 is a configuration example of the logical-physical conversion table 1100 ′ included in the SSD 21 according to the second embodiment. The SSD 21 according to the second embodiment includes a logical-physical conversion table 1100 'instead of the logical-physical conversion table 1100 (FIG. 11) included in the SSD 21 according to the first embodiment.
 論理物理変換テーブル1100’のカラムのうち、SSD LBA1101~物理ページ#1105は、実施例1で説明した論理物理変換テーブル1100と同じである。論理物理変換テーブル1100’はさらに、Offset1106、Length1107のカラムを有する。 Among the columns of the logical / physical conversion table 1100 ′, the SSD LBA 1101 to physical page # 1105 are the same as the logical / physical conversion table 1100 described in the first embodiment. The logical / physical conversion table 1100 ′ further includes columns of Offset 1106 and Length 1107.
 Offset1106は物理ページの先頭を0とする相対アドレス(オフセット)を表し、Length1107は領域の長さを表す。Offset1106、Length1107に格納される値の単位はバイトである。これにより論理物理変換テーブル1100’の各行(レコード)は、論理ページ#1102で特定される論理ページに、ブロック#1104及び物理ページ#1105で特定される物理ページ上のうち、この物理ページの先頭からOffset1105(バイト)の位置からはじまるLength1106(バイト)の領域が、割り当てられていることを表す。 Offset 1106 represents a relative address (offset) where the top of the physical page is 0, and Length 1107 represents the length of the area. The unit of the value stored in Offset 1106 and Length 1107 is a byte. As a result, each row (record) of the logical-physical conversion table 1100 ′ is added to the logical page specified by the logical page # 1102, and the top of this physical page among the physical pages specified by the block # 1104 and the physical page # 1105. This indicates that an area of Length 1106 (bytes) starting from the position of Offset 1105 (bytes) to Allocation is allocated.
 図27は、実施例2に係るSSD21が有する、ブロック管理テーブル1150’の構成例である。実施例2に係るSSD21は、実施例1に係るSSD21が有するブロック管理テーブル1500(図12)に代えて、ブロック管理テーブル1150’を有する。図27に示されているように、ブロック管理テーブル1150’は実施例1におけるブロック管理テーブル1150が有していたカラムに加えて、Offset1156、Length1157のカラムを有する。 FIG. 27 is a configuration example of the block management table 1150 ′ included in the SSD 21 according to the second embodiment. The SSD 21 according to the second embodiment has a block management table 1150 'instead of the block management table 1500 (FIG. 12) included in the SSD 21 according to the first embodiment. As shown in FIG. 27, the block management table 1150 ′ has columns of Offset 1156 and Length 1157 in addition to the columns of the block management table 1150 in the first embodiment.
 Offset1156、Length1157は、論理物理変換テーブル1100’のOffset1106、Length1107と同様の情報で、Offset1156は物理ページの先頭位置の0とするときの相対アドレス(オフセット)を表し、Length1157は領域の長さを表す。Offset1156、Length1157に格納される値の単位はバイトである。これにより、ブロック管理テーブル1150’の各行は、ブロック#1151及び物理ページ#1153で特定される物理ページの領域のうち、Offset1156及びLength1157で特定される領域が、論理ページに割り当てられていることを表す。 Offset 1156 and Length 1157 are the same information as Offset 1106 and Length 1107 of the logical-physical conversion table 1100 ′. Offset 1156 represents the relative address (offset) when the top position of the physical page is 0, and Length 1157 represents the length of the area. . The unit of the value stored in Offset 1156 and Length 1157 is a byte. Thereby, each row of the block management table 1150 ′ indicates that the areas specified by Offset 1156 and Length 1157 among the areas of the physical page specified by block # 1151 and physical page # 1153 are allocated to the logical page. To express.
 続いて、実施例2における構成情報管理テーブル1300について、実施例1との差異を説明する。実施例2に係るSSD21が有する構成情報管理テーブル1300の形式は、実施例1で説明したものと同じであるため、図示は略す。ただし実施例2における予備容量1305の定義が、実施例1で説明したものと異なる。 Subsequently, the difference between the configuration information management table 1300 in the second embodiment and the first embodiment will be described. Since the format of the configuration information management table 1300 included in the SSD 21 according to the second embodiment is the same as that described in the first embodiment, the illustration is omitted. However, the definition of the reserve capacity 1305 in the second embodiment is different from that described in the first embodiment.
 実施例1では、予備容量1305には、正常(MLCモード)のブロック容量をM、正常(TLCモード)のブロック容量をT、論理容量をLとすると、予備容量1305は実施例1で説明した式(1)(予備容量1305=M+T-L)で求められた。一方実施例2では、予備容量1305は以下の式(2)
 予備容量1305=Min(M+T-L×a,M+T-A) ・・・(2)
で算出される値とする。なお、aは想定圧縮率で、Aは論理アドレス空間に割り当て済みの物理ページの合計容量で、Min(α,β)は、α,βのうち小さい方の値を意味する。
In the first embodiment, the spare capacity 1305 has the normal (MLC mode) block capacity M, the normal (TLC mode) block capacity T, and the logical capacity L. The spare capacity 1305 has been described in the first embodiment. It was determined by equation (1) (reserved capacity 1305 = M + TL). On the other hand, in the second embodiment, the reserve capacity 1305 is expressed by the following equation (2).
Reserve capacity 1305 = Min (M + TL × a, M + TA) (2)
The value calculated in Note that a is an assumed compression rate, A is the total capacity of physical pages allocated to the logical address space, and Min (α, β) means the smaller value of α and β.
 式(2)の意味を概説する。実施例2に係るSSD21も実施例1に係るSSDと同様に、初期状態ではSSDの有する物理領域のうち、約30%~40%の領域を予備容量として確保する。初期状態では論理アドレス空間に割り当て済みの物理ページは無いため、A=0である。そのため予備容量は、“M+T-L×a”に等しい。実施例1で説明したとおり、SSD21を使用している間に、幾つかのブロックが故障し使用できなくなると、M(あるいはT)の値が減少し、結果として“M+T-L×a”の値(予備容量1305)が減少することになる。 Outline the meaning of equation (2). Similarly to the SSD according to the first embodiment, the SSD 21 according to the second embodiment secures an area of about 30% to 40% as a spare capacity in the physical area of the SSD in the initial state. In the initial state, there is no physical page already assigned to the logical address space, so A = 0. Therefore, the reserve capacity is equal to “M + TL−a”. As described in the first embodiment, when some blocks fail and cannot be used while the SSD 21 is used, the value of M (or T) decreases, resulting in “M + TL−a”. The value (reserved capacity 1305) will decrease.
 ただし実施例2に係るSSDの場合、ブロックに故障が発生しなかった場合でも、論理アドレス空間に割り当てられた物理ページ数が増加すると(つまり式(2)で用いられているAが大きくなると)、“M+T-A”の値が小さくなる。論理アドレス空間に割り当てられた物理ページ数が増加する例として、更新後データの圧縮率が大きくなり、想定圧縮率を超過した場合がある。その場合、“M+T-L×a”よりも“M+T-A”が小さくなることがあり得、予備予量1305は減少する。 However, in the case of the SSD according to the second embodiment, even when no failure occurs in the block, when the number of physical pages allocated to the logical address space increases (that is, when A used in Expression (2) increases). , “M + TA” becomes smaller. As an example in which the number of physical pages allocated to the logical address space increases, there is a case where the compression rate of the post-update data becomes large and exceeds the assumed compression rate. In that case, “M + TA” may be smaller than “M + TL × a”, and the reserve amount 1305 decreases.
 図22は、実施例2における、SSDコントローラのデータリード・ライト処理のフローチャートである。図17との主な違いは、ライト処理においてFMにデータを格納する前に、データの圧縮処理が加わる点と(S112)、リード処理においてデータをストレージコントローラ10に転送する前に、データを伸張する処理が加わる点である(S107及びS116)。また、S110において論理物理変換テーブル1100’またはブロック管理テーブル1150の内容を更新する際には、Offset1106、Length1107、Offset1156、Length1157の更新も行われる。さらに予備容量1305を更新する際には、SSDコントローラ200は上で述べた式(2)に基づいて、予備容量1305を決定する。 FIG. 22 is a flowchart of the data read / write processing of the SSD controller according to the second embodiment. The main difference from FIG. 17 is that the data compression process is added before the data is stored in the FM in the write process (S112), and the data is decompressed before the data is transferred to the storage controller 10 in the read process. (S107 and S116). Also, when updating the contents of the logical-physical conversion table 1100 ′ or the block management table 1150 in S <b> 110, the Offset 1106, Length 1107, Offset 1156, and Length 1157 are also updated. Further, when the spare capacity 1305 is updated, the SSD controller 200 determines the spare capacity 1305 based on the equation (2) described above.
 また、ライト処理(S111~S115)が行われた場合、SSD21の圧縮率が変動していることがある。そのため、S115の後に行われる管理情報の更新処理(S110)では、SSDコントローラ200はデータ圧縮率を求めて、平均データ圧縮率1307の内容を更新する。圧縮率は、たとえば以下の計算を行うことで求められる。論理アドレス空間上の領域のうち、物理ページが割り当てられている論理ページ数をX、論理ページに割り当てられている物理ページ数をYとする。この時、“Y÷X”が圧縮率である。X、Yはいずれも、論理物理変換テーブル1100’を参照することで計数できる。 Also, when the write process (S111 to S115) is performed, the compression rate of the SSD 21 may fluctuate. Therefore, in the management information update process (S110) performed after S115, the SSD controller 200 obtains the data compression rate and updates the content of the average data compression rate 1307. The compression rate can be obtained, for example, by performing the following calculation. In the area on the logical address space, X is the number of logical pages to which physical pages are allocated, and Y is the number of physical pages allocated to logical pages. At this time, “Y ÷ X” is the compression rate. Both X and Y can be counted by referring to the logical-physical conversion table 1100 '.
 これらが実施例1で説明したデータリード・ライト処理と、実施例2におけるデータリード・ライト処理の違いであり、その他の処理は図17と同じである。 These are the differences between the data read / write process described in the first embodiment and the data read / write process in the second embodiment, and other processes are the same as those in FIG.
 なお、図22に記載の処理は一例であり、これ以外の手順で実行されてもよい。特に図22のライト処理の手順では、ライトコマンドを受領するたびに、物理ページへの圧縮データの書き込みが行われるので、物理ページの後半部に未使用領域(受領したデータの書かれていない領域)が残る。FM210の最小書き込み単位は物理ページなので、この未使用領域に後からデータを書き込むことはできない。そのため、SSDコントローラ200は、バッファ領域に圧縮後のライトデータを蓄積して、S113、S114の実行前にS115(完了通知の返送)を行ってもよい。そしてSSDコントローラ200は、バッファ領域に1物理ページ以上の圧縮データが蓄積された時点で、S113とS114を実行してもよい。これにより、1物理ページに多くの圧縮データを格納できる。 Note that the process illustrated in FIG. 22 is an example, and may be executed by a procedure other than this. In particular, in the write processing procedure of FIG. 22, each time a write command is received, compressed data is written to a physical page. Therefore, an unused area (an area where received data is not written) is written in the latter half of the physical page. ) Remains. Since the minimum write unit of the FM 210 is a physical page, data cannot be written into this unused area later. Therefore, the SSD controller 200 may accumulate the write data after compression in the buffer area and perform S115 (return of completion notification) before executing S113 and S114. Then, the SSD controller 200 may execute S113 and S114 when compressed data of one physical page or more is accumulated in the buffer area. Thereby, a lot of compressed data can be stored in one physical page.
 図23は、実施例2における、SSDコントローラのFM枯渇回復処理のフローチャートである。実施例2に係るSSD21では、セルモードの変更による、予備容量回復処理の実行要因として、実施例1で説明したブロック故障のケースに加え、格納データの圧縮率悪化のケースがある。 FIG. 23 is a flowchart of the FM depletion recovery process of the SSD controller according to the second embodiment. In the SSD 21 according to the second embodiment, there are cases where the compression rate of stored data deteriorates as an execution factor of the reserve capacity recovery process due to the change of the cell mode, in addition to the case of the block failure described in the first embodiment.
 それゆえ、実施例2に係るFM枯渇回復処理と実施例1(図19)で説明した処理との違いは、実施例2に係るFM枯渇回復処理ではFMのセルモード変更後の内部情報の更新処理(S144)の後に、予備容量の枯渇が近くなった要因を判定する処理(S146)が追加される。S146ではSSDコントローラ200は、構成情報管理テーブル1300の平均データ圧縮率1307と故障状態のブロック数1303(または故障状態のブロック容量1304)を参照し、データ圧縮率の悪化が予備容量の枯渇の要因か、故障したブロックが増加したことが予備容量の枯渇の原因か、判定するとよい。また、その要因がデータ圧縮率の悪化によるものであれば、(S146:データ圧縮率の悪化)、SSDコントローラ200はその旨をストレージコントローラ10に伝える(S147)。 Therefore, the difference between the FM depletion recovery process according to the second embodiment and the process described in the first embodiment (FIG. 19) is that the FM depletion recovery process according to the second embodiment updates the internal information after changing the FM cell mode. After the process (S144), a process (S146) for determining the cause of the shortage of the spare capacity is added. In S146, the SSD controller 200 refers to the average data compression ratio 1307 and the number of failed blocks 1303 (or failed block capacity 1304) in the configuration information management table 1300, and the deterioration of the data compression ratio is a cause of the exhaustion of the spare capacity. Alternatively, it may be determined whether the increase in the number of failed blocks is the cause of exhaustion of the spare capacity. If the cause is a deterioration of the data compression rate (S146: deterioration of the data compression rate), the SSD controller 200 informs the storage controller 10 to that effect (S147).
 続いて、実施例2に係るストレージコントローラ10で行われる処理のうち、実施例1と異なる点について説明する。実施例2では、ストレージコントローラ10は、ドライブ監視処理において、データ圧縮率の悪化要因によりセルモードの変更を行ったSSDを検出すると、更なるデータ圧縮率の悪化による予備容量の枯渇を回避するために、当該のSSDの一部データを別のSSDに移動させる、容量リバランスの処理を行う。まず図24を用いて、その概要を説明する。 Subsequently, of the processes performed by the storage controller 10 according to the second embodiment, differences from the first embodiment will be described. In the second embodiment, when the storage controller 10 detects an SSD in which the cell mode has been changed due to the deterioration factor of the data compression rate in the drive monitoring process, the storage controller 10 avoids the depletion of the spare capacity due to the further deterioration of the data compression rate. Then, a capacity rebalancing process is performed in which a part of the data of the SSD is moved to another SSD. First, the outline will be described with reference to FIG.
 本実施例ではSSD単位ではなく、チャンク単位でデータを移動する手段により、容量のリバランスを実行する。図中、RG30-1は、セルモードの変更を行ったSSDが所属するRAIDグループであり、データの格納量が多い。一方、RG30-2は、データの格納量が少ないRAIDグループである。そこで、ストレージコントローラ10は、RG30-1に所属するチャンク31のデータを、RG30-2に所属するチャンク32に移動させることで、RG30-1のデータ格納量を減少させる。それに伴い、RG30-1に所属するSSDのデータ格納量の減少が実現される。なお、ストレージコントローラの容量仮想化機能により、前述のチャンク移動はホスト2に透過的に行われる。 In this embodiment, capacity rebalancing is performed by means of moving data in chunk units, not SSD units. In the figure, RG30-1 is a RAID group to which the SSD that has changed the cell mode belongs, and has a large amount of data storage. On the other hand, the RG 30-2 is a RAID group with a small data storage amount. Therefore, the storage controller 10 reduces the data storage amount of the RG 30-1 by moving the data of the chunk 31 belonging to the RG 30-1 to the chunk 32 belonging to the RG 30-2. Along with this, a reduction in the data storage amount of the SSD belonging to RG 30-1 is realized. Note that the above-described chunk movement is performed transparently to the host 2 by the capacity virtualization function of the storage controller.
 図25は、実施例2における、ストレージコントローラのドライブ監視処理のフローチャートである。 FIG. 25 is a flowchart of the drive monitoring process of the storage controller in the second embodiment.
 ストレージコントローラ10は、SSDコントローラ200から、セルモードの変更通知を受領しているか否かを判断する(S21)。通知を受領していない場合には(S21:No)、本処理は終了する。S21にて、通知を受領していた場合には(S21:Yes)、ストレージコントローラ10はその要因を分析する(S24)。その要因がブロック故障である場合には(S24:ブロック故障)、ストレージコントローラ10はS22、S23を実行し、S23の実行後処理は終了する。S22、S23の処理内容は実施例1で説明済みのため、ここでの説明は略す。 The storage controller 10 determines whether or not a cell mode change notification is received from the SSD controller 200 (S21). When the notification has not been received (S21: No), this process ends. If a notification has been received in S21 (S21: Yes), the storage controller 10 analyzes the factor (S24). If the cause is a block failure (S24: block failure), the storage controller 10 executes S22 and S23, and the post-execution processing of S23 ends. Since the processing contents of S22 and S23 have already been described in the first embodiment, description thereof is omitted here.
 一方S24にて、要因がデータ圧縮率の悪化による場合は(S24:データ圧縮率の悪化)、ストレージコントローラ10は容量リバランスの実行可否を判断する(S25)。S25では具体的には、ストレージコントローラ10はプール管理テーブル550を参照し、容量に余裕のあるRAIDグループが存在するか否かを判断する(残容量556があらかじめ定められた閾値以上のRAIDグループが存在するか判定する)。容量に余裕のある別のRAIDグループが存在する場合には(S25:Yes)、ストレージコントローラ10は容量に余裕があるRAIDグループに一部のチャンクのデータを移動させ(S26)、本処理を終了する。一方、S25にて、余裕のある別のRAIDグループが存在しない場合には(S25:No)、ストレージコントローラ10はプールへの容量追加を要求する通知を、管理ホスト5の表示画面に表示し、ユーザにプールへの記憶領域の追加を促す(S27)。ユーザがプールに記憶領域(RAIDグループ)を追加した後、ストレージコントローラ10は、記憶領域が追加されたプールに一部のチャンクのデータを移動させる(S28)。S28の後、本処理は終了する。 On the other hand, in S24, when the cause is the deterioration of the data compression rate (S24: Deterioration of the data compression rate), the storage controller 10 determines whether or not the capacity rebalancing can be executed (S25). More specifically, in S25, the storage controller 10 refers to the pool management table 550 and determines whether there is a RAID group with a sufficient capacity (a RAID group whose remaining capacity 556 is equal to or greater than a predetermined threshold value). Determine if it exists). If another RAID group with sufficient capacity exists (S25: Yes), the storage controller 10 moves some chunks of data to the RAID group with sufficient capacity (S26), and ends this process. To do. On the other hand, in S25, when there is no other RAID group with room (S25: No), the storage controller 10 displays a notification requesting capacity addition to the pool on the display screen of the management host 5, The user is prompted to add a storage area to the pool (S27). After the user adds a storage area (RAID group) to the pool, the storage controller 10 moves some chunks of data to the pool with the storage area added (S28). After S28, this process ends.
 以上、本発明の実施例を説明したが、これらは、本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。すなわち、本発明は、他の種々の形態でも実施する事が可能である。たとえば上の実施例では、SSDがストレージ装置に搭載され、ストレージコントローラに接続される構成例について説明したが、サーバに直接搭載される構成でも良い。 As mentioned above, although the Example of this invention was described, these are the illustrations for description of this invention, Comprising: It is not the meaning which limits the scope of the present invention only to these Examples. That is, the present invention can be implemented in various other forms. For example, in the above embodiment, the configuration example in which the SSD is mounted on the storage device and connected to the storage controller has been described. However, the configuration may be such that the SSD is directly mounted on the server.
 さらに上記実施例では、セルのモード変更を実施した際に、物理容量のみを増加させるケースで説明を行ったが、物理容量に加え論理容量を同時に増加させても良い。 Further, in the above embodiment, the case where only the physical capacity is increased when the cell mode is changed has been described. However, in addition to the physical capacity, the logical capacity may be increased simultaneously.
 また実施例2では、SSDが圧縮・伸張回路207を用いてデータを圧縮し、FMに格納するデータ量を削減する例を説明したが、圧縮・伸張回路207を設ける代わりにCPU201で可逆圧縮アルゴリズムを実行することで、データ圧縮または伸張を行うように構成されていてもよい。 In the second embodiment, the SSD compresses data using the compression / decompression circuit 207 and reduces the amount of data stored in the FM. However, instead of providing the compression / decompression circuit 207, the CPU 201 uses the lossless compression algorithm. May be configured to perform data compression or decompression.
 また上の実施例では、FMに格納するデータ量を削減する機能の一例として、可逆圧縮アルゴリズムを用いたデータ圧縮処理を行う例を説明したが、可逆圧縮アルゴリズムを用いる代わりに、たとえばデータの重複排除処理を行うことで、FMに格納するデータ量を削減してもよい。重複排除とは、記憶領域全体の中から同じデータを探し出し、一ヵ所を残して他を削除することで容量を削減・節約する手法で、広義のデータ圧縮処理と言える。その場合、データ圧縮率の悪化を、重複排除率の悪化と読み替えれば良い。すなわち、SSDに格納済みのデータの重複排除率が悪化した場合には、重複排除後のデータのサイズが大きくなってしまうため、圧縮のケースと同様に、予備容量が圧迫されることとなる。また、SSDが重複排除処理と可逆圧縮アルゴリズムを用いた圧縮処理を併用することで、FMに格納するデータ量をさらに削減するように構成されていてもよい。 In the above embodiment, an example of performing data compression processing using a lossless compression algorithm as an example of a function for reducing the amount of data stored in FM has been described. Instead of using a lossless compression algorithm, for example, duplication of data is performed. The amount of data stored in the FM may be reduced by performing the exclusion process. Deduplication is a technique for reducing the amount of data by searching for the same data in the entire storage area and deleting the rest of the data, and can be said to be a data compression process in a broad sense. In that case, the deterioration of the data compression rate may be read as the deterioration of the deduplication rate. That is, when the deduplication rate of data already stored in the SSD deteriorates, the size of the data after deduplication increases, so that the reserve capacity is compressed as in the case of compression. Further, the SSD may be configured to further reduce the amount of data stored in the FM by using both the deduplication process and the compression process using the lossless compression algorithm.
 また、上で説明した処理をCPUに実行させる各プログラム(ストレージ制御プログラムあるいはSSD制御プログラム)は、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアによって提供され、プログラムを実行する各装置にインストールされてもよい。計算機が読み取り可能な記憶メディアとは、非一時的なコンピュータ可読媒体で、例えばICカード、SDカード、DVD等の不揮発性記憶媒体である。 Each program (storage control program or SSD control program) that causes the CPU to execute the processing described above is provided by a program distribution server or a storage medium that can be read by a computer, and is installed in each device that executes the program. Also good. The computer-readable storage medium is a non-transitory computer-readable medium such as a non-volatile storage medium such as an IC card, an SD card, or a DVD.
1:ストレージ装置, 2:ホスト, 3:SAN, 5:管理ホスト, 10:ストレージコントローラ, 11:CPU, 12ホストI/F, 13:ディスクI/F, 14:メモリ, 15:管理用I/F, 21:SSD, 25:HDD, 200:SSDコントローラ, 201:CPU, 202:ディスクI/F, 203:FMチップI/F, 204:メモリ, 205:内部接続スイッチ, 206:パリティ演算回路, 207:圧縮・伸張回路, 210:FMチップ, 211:ブロック, 213:ダイ, 214:セル 1: storage device, 2: host, 3: SAN, 5: management host, 10: storage controller, 11: CPU, 12 host I / F, 13: disk I / F, 14: memory, 15: management I / F F, 21: SSD, 25: HDD, 200: SSD controller, 201: CPU, 202: disk I / F, 203: FM chip I / F, 204: memory, 205: internal connection switch, 206: parity calculation circuit, 207: Compression / decompression circuit, 210: FM chip, 211: Block, 213: Die, 214: Cell

Claims (12)

  1.  ストレージコントローラに接続される記憶デバイスであって、
     前記記憶デバイスは、前記ストレージコントローラに所定サイズの論理記憶空間を提供するデバイスコントローラと、データの消去単位であるブロックを複数有する不揮発性半導体記憶媒体とを有し、
     前記ブロックは、データを記憶するためのセルを複数有し、前記ブロックはそれぞれ、前記セルを、nビットの情報を格納可能な第1モードで運用中の状態から、mビット(n<m)の情報を格納可能な第2モードに変更可能に構成されており、
     前記デバイスコントローラは、前記ブロック内の使用可能な記憶領域のうち、前記論理記憶空間に割り当てるために必要な前記ブロック内記憶領域の量を超過する前記記憶領域を、予備容量として管理しており、
     前記デバイスコントローラは前記予備容量が所定の閾値を下回った時、前記第1モードで運用中の前記ブロックの一部を、前記第2モードで運用されるように変更することで、前記使用可能な記憶領域を増加させる、
    記憶デバイス。
    A storage device connected to the storage controller,
    The storage device includes a device controller that provides a logical storage space of a predetermined size to the storage controller, and a nonvolatile semiconductor storage medium having a plurality of blocks that are data erasure units,
    The block has a plurality of cells for storing data, and each block has m bits (n <m) from the state in which the cell is operated in the first mode capable of storing n-bit information. Can be changed to the second mode that can store the information of
    The device controller manages the storage area that exceeds the amount of the storage area in the block necessary for allocation to the logical storage space among the storage areas that can be used in the block as a spare capacity,
    When the reserve capacity falls below a predetermined threshold, the device controller can use the block by changing a part of the block that is operating in the first mode so that it is operated in the second mode. Increase storage space,
    Storage device.
  2.  前記ブロックが故障により使用不可能になると、前記予備容量が使用不可能になった前記ブロックの記憶容量に相当する分だけ削減される、
    請求項1に記載の記憶デバイス。
    When the block becomes unusable due to a failure, the reserve capacity is reduced by an amount corresponding to the storage capacity of the block that has become unusable.
    The storage device according to claim 1.
  3.  前記デバイスコントローラは、前記ブロックの記憶領域の総和を超えるサイズの前記論理記憶空間を提供し、
     前記デバイスコントローラは、前記ストレージコントローラからライトコマンドとライトデータを受領すると、前記ライトコマンドで指定されている前記論理記憶空間上の位置に前記ブロック内記憶領域を割り当てて、前記論理記憶空間上の位置に割り当てられた前記ブロック内記憶領域に前記ライトデータを格納するよう構成されており、
     前記デバイスコントローラは、前記ブロック内の使用可能な記憶領域の総和と前記論理記憶空間に割り当てられた前記ブロック内記憶領域の量の差を、前記予備容量として管理する、
    請求項1に記載の記憶デバイス。
    The device controller provides the logical storage space having a size exceeding the sum of the storage areas of the blocks;
    When the device controller receives a write command and write data from the storage controller, the device controller allocates the intra-block storage area to the position on the logical storage space specified by the write command, and the position on the logical storage space The write data is stored in the storage area in the block allocated to
    The device controller manages, as the spare capacity, a difference between a total of usable storage areas in the block and an amount of the storage area in the block allocated to the logical storage space.
    The storage device according to claim 1.
  4.  前記デバイスコントローラは、前記ライトデータを圧縮し、前記ライトデータの圧縮後データを前記ブロック内記憶領域に格納するよう構成されている、
    請求項3に記載の記憶デバイス。
    The device controller is configured to compress the write data and store the compressed data of the write data in the storage area in the block.
    The storage device according to claim 3.
  5.  前記デバイスコントローラは、前記第1モードで運用中の前記ブロックの一部を、前記第2モードで運用されるように変更した旨を、前記ストレージコントローラに通知する、
    請求項1に記載の記憶デバイス。
    The device controller notifies the storage controller that a part of the block being operated in the first mode has been changed to be operated in the second mode;
    The storage device according to claim 1.
  6.  ストレージコントローラと、前記ストレージコントローラに接続される複数の記憶デバイスとを有し、
     前記記憶デバイスは、前記ストレージコントローラに所定サイズの論理記憶空間を提供するデバイスコントローラと、データの消去単位であるブロックを複数有する不揮発性半導体記憶媒体とを有し、
     前記ブロックは、データを記憶するためのセルを複数有し、前記ブロックはそれぞれ、前記セルを、nビットの情報を格納可能な第1モードで運用中の状態から、mビット(n<m)の情報を格納可能な第2モードに変更可能に構成されており、
     前記デバイスコントローラは、前記ブロック内の使用可能な記憶領域のうち、前記論理記憶空間に割り当てるために必要な前記ブロック内記憶領域の量を超過する前記記憶領域を、予備容量として管理しており、
     前記デバイスコントローラは前記予備容量が所定の閾値を下回った時、前記第1モードで運用中の前記ブロックの一部を、前記第2モードで運用されるように変更することで、前記使用可能な記憶領域を増加させる、
    ストレージ装置。
    A storage controller and a plurality of storage devices connected to the storage controller;
    The storage device includes a device controller that provides a logical storage space of a predetermined size to the storage controller, and a nonvolatile semiconductor storage medium having a plurality of blocks that are data erasure units,
    The block has a plurality of cells for storing data, and each block has m bits (n <m) from the state in which the cell is operated in the first mode capable of storing n-bit information. Can be changed to the second mode that can store the information of
    The device controller manages the storage area that exceeds the amount of the storage area in the block necessary for allocation to the logical storage space among the storage areas that can be used in the block as a spare capacity,
    When the reserve capacity falls below a predetermined threshold, the device controller can use the block by changing a part of the block that is operating in the first mode so that it is operated in the second mode. Increase storage space,
    Storage device.
  7.  前記ブロックが故障により使用不可能になると、前記予備容量が前記ブロックの記憶容量に相当する分だけ削減される、
    請求項6に記載のストレージ装置。
    When the block becomes unusable due to a failure, the reserve capacity is reduced by an amount corresponding to the storage capacity of the block;
    The storage apparatus according to claim 6.
  8.  前記デバイスコントローラは、前記ブロックの記憶領域の総和を超えるサイズの前記論理記憶空間を提供し、
     前記デバイスコントローラは、前記ストレージコントローラからライトコマンドとライトデータを受領すると、前記ライトコマンドで指定されている前記論理記憶空間上の位置に前記ブロック内記憶領域を割り当てて、前記論理記憶空間上の位置に割り当てられた前記ブロック内記憶領域に前記ライトデータを格納するよう構成されており、
     前記デバイスコントローラは、前記ブロック内の使用可能な記憶領域の総和と前記論理記憶空間に割り当てられた前記ブロック内記憶領域の量の差を、前記予備容量として管理する、
    請求項6に記載のストレージ装置。
    The device controller provides the logical storage space having a size exceeding the sum of the storage areas of the blocks;
    When the device controller receives a write command and write data from the storage controller, the device controller allocates the intra-block storage area to the position on the logical storage space specified by the write command, and the position on the logical storage space The write data is stored in the storage area in the block allocated to
    The device controller manages, as the spare capacity, a difference between a total of usable storage areas in the block and an amount of the storage area in the block allocated to the logical storage space.
    The storage apparatus according to claim 6.
  9.  前記デバイスコントローラは、前記ライトデータを圧縮し、前記ライトデータの圧縮後データを前記ブロック内記憶領域に格納するよう構成されている、
    請求項8に記載のストレージ装置。
    The device controller is configured to compress the write data and store the compressed data of the write data in the storage area in the block.
    The storage device according to claim 8.
  10.  前記ストレージコントローラは、前記第1モードで運用中の前記ブロックの一部を、前記第2モードで運用されるように変更した旨を前記記憶デバイスから受領すると、
    前記記憶デバイスに格納されているデータを全て、前記複数の記憶デバイスのうち代替用の記憶デバイスに移動する、
    請求項6に記載のストレージ装置。
    When the storage controller receives from the storage device that a part of the block being operated in the first mode has been changed to be operated in the second mode,
    Moving all the data stored in the storage device to an alternative storage device among the plurality of storage devices;
    The storage apparatus according to claim 6.
  11.  前記ストレージコントローラは、複数の前記記憶デバイスを用いて、少なくとも第1のRAIDグループと第2のRAIDグループを構成しており、
     前記ストレージコントローラは、前記第1モードで運用中の前記ブロックの一部を、前記第2モードで運用されるように変更した旨を、前記第1のRAIDグループに属する前記記憶デバイスから受領すると、
    前記第1のRAIDグループに格納されているデータの一部を、前記第2のRAIDグループに移動する、
    請求項9に記載のストレージ装置。
    The storage controller comprises at least a first RAID group and a second RAID group using a plurality of the storage devices,
    When the storage controller receives from the storage device belonging to the first RAID group that a part of the block being operated in the first mode has been changed to be operated in the second mode,
    Moving a portion of the data stored in the first RAID group to the second RAID group;
    The storage device according to claim 9.
  12.  前記ストレージコントローラはホスト計算機に、複数の区画から成る仮想ボリュームを提供し、前記区画のそれぞれは、前記ホスト計算機からライト要求を受け付けた時に、前記第1または第2のRAIDグループの記憶領域が割り当てられるよう構成されており、
     前記ストレージコントローラは、前記第1モードで運用中の前記ブロックの一部を、前記第2モードで運用されるように変更した旨を、前記第1のRAIDグループに属する前記記憶デバイスから受領すると、前記区画に割り当てられている前記第1のRAIDグループの記憶領域のデータを、前記第2のRAIDグループの記憶領域のうち、前記仮想ボリュームに未割り当ての記憶領域に移動する、
    請求項11に記載のストレージ装置。
    The storage controller provides a virtual volume composed of a plurality of partitions to a host computer, and each of the partitions is assigned a storage area of the first or second RAID group when a write request is received from the host computer. Configured to be
    When the storage controller receives from the storage device belonging to the first RAID group that a part of the block being operated in the first mode has been changed to be operated in the second mode, Moving the data in the storage area of the first RAID group assigned to the partition to a storage area not assigned to the virtual volume in the storage areas of the second RAID group;
    The storage apparatus according to claim 11.
PCT/JP2016/069077 2016-06-28 2016-06-28 Storage device and storage equipment WO2018002999A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/069077 WO2018002999A1 (en) 2016-06-28 2016-06-28 Storage device and storage equipment

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/069077 WO2018002999A1 (en) 2016-06-28 2016-06-28 Storage device and storage equipment

Publications (1)

Publication Number Publication Date
WO2018002999A1 true WO2018002999A1 (en) 2018-01-04

Family

ID=60787096

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2016/069077 WO2018002999A1 (en) 2016-06-28 2016-06-28 Storage device and storage equipment

Country Status (1)

Country Link
WO (1) WO2018002999A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110162267A (en) * 2018-02-13 2019-08-23 点序科技股份有限公司 Flash memory storage and write-in management method

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009090731A1 (en) * 2008-01-16 2009-07-23 Fujitsu Limited Semiconductor storage device, controlling apparatus and controlling method
JP2011003111A (en) * 2009-06-22 2011-01-06 Hitachi Ltd Method for managing storage system using flash memory, and computer
JP2012068986A (en) * 2010-09-24 2012-04-05 Toshiba Corp Memory system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009090731A1 (en) * 2008-01-16 2009-07-23 Fujitsu Limited Semiconductor storage device, controlling apparatus and controlling method
JP2011003111A (en) * 2009-06-22 2011-01-06 Hitachi Ltd Method for managing storage system using flash memory, and computer
JP2012068986A (en) * 2010-09-24 2012-04-05 Toshiba Corp Memory system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110162267A (en) * 2018-02-13 2019-08-23 点序科技股份有限公司 Flash memory storage and write-in management method

Similar Documents

Publication Publication Date Title
JP6073471B2 (en) Storage device
JP6283771B2 (en) Storage device
JP6381529B2 (en) Storage apparatus and storage control method
JP5937697B2 (en) Storage system
JP6000376B2 (en) Information processing apparatus having a plurality of types of cache memories having different characteristics
JP5192352B2 (en) Storage device and data storage area management method
JP6216897B2 (en) Storage system
WO2014141411A1 (en) Storage system and method for controlling storage system
US20140189203A1 (en) Storage apparatus and storage control method
JP6062060B2 (en) Storage device, storage system, and storage device control method
WO2011024239A1 (en) Storage system having plurality of flash packages
US10013322B2 (en) Storage apparatus and storage apparatus control method
WO2017109931A1 (en) Computer system
WO2016181528A1 (en) Storage device
US20190205053A1 (en) Storage apparatus and distributed storage system
CN111124950A (en) Data management apparatus, data management method, and storage medium
JP2017199043A (en) Storage device, system, method and program
JP6817340B2 (en) calculator
WO2018002999A1 (en) Storage device and storage equipment
JP6163588B2 (en) Storage system
JP6605762B2 (en) Device for restoring data lost due to storage drive failure

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: 16907232

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16907232

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP