WO2016030992A1 - 記憶デバイスおよびストレージ装置 - Google Patents

記憶デバイスおよびストレージ装置 Download PDF

Info

Publication number
WO2016030992A1
WO2016030992A1 PCT/JP2014/072428 JP2014072428W WO2016030992A1 WO 2016030992 A1 WO2016030992 A1 WO 2016030992A1 JP 2014072428 W JP2014072428 W JP 2014072428W WO 2016030992 A1 WO2016030992 A1 WO 2016030992A1
Authority
WO
WIPO (PCT)
Prior art keywords
storage
block
page
specific
data
Prior art date
Application number
PCT/JP2014/072428
Other languages
English (en)
French (fr)
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 US14/425,556 priority Critical patent/US10204003B2/en
Priority to PCT/JP2014/072428 priority patent/WO2016030992A1/ja
Publication of WO2016030992A1 publication Critical patent/WO2016030992A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications
    • G11C29/765Masking faults in memories by using spares or by reconfiguring using address translation or modifications in solid state disks
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5678Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using amorphous/crystalline phase transition storage elements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5685Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using storage elements comprising metal oxide memory material, e.g. perovskites

Definitions

  • the present invention relates to a storage device and a storage apparatus.
  • HDD Hard Disk Drive
  • SSD Solid State Drive
  • nonvolatile semiconductor memory for example, flash memory
  • flash memory physical storage areas are managed in units called blocks, and data is erased in units of blocks. There is an upper limit to the number of times that a block can be erased, and if the number of times of erasure increases, data may not be written to the flash memory, or the error rate of data written to the flash memory may increase. That is, the flash memory has a lifetime, and the SSD having a large number of flash memories also has a lifetime. Further, as the miniaturization of flash memory chips progresses, the capacity of flash memory chips increases, while the reliability decreases, and quality varies in units such as dies and chips. A die having poor quality is likely to have an increased error rate and cannot be used due to a failure even if it is less than a predetermined number of erasures.
  • Patent Document 1 discloses a data recovery technique when a failure occurs in a block in an SSD.
  • a storage apparatus having a plurality of SSDs when a failure of a block in a certain SSD is detected, a technique for rebuilding all data of the SSD including the failed block to another SSD is known.
  • a storage device includes a plurality of nonvolatile semiconductor memories and an instruction to access the plurality of nonvolatile semiconductor memories connected to the plurality of nonvolatile semiconductor memories.
  • a device controller connected to a higher-level device that issues Each of the plurality of nonvolatile semiconductor memories includes a plurality of storage circuits and a plurality of control circuits, and the plurality of storage circuits are connected to the device controller via the plurality of control circuits, respectively.
  • Each of the storage circuits includes a plurality of blocks, the blocks are data erasing units, each of the plurality of blocks includes a plurality of pages, and the pages are data read / write units.
  • the device controller When the device controller detects an uncorrectable error (UE) of the data stored in the specific page by reading the data stored in the specific page of the plurality of nonvolatile semiconductor memories
  • the device controller specifies a specific storage circuit that is a storage circuit including the specific page as diagnostic processing, and the specific controller Read the data stored in a portion of the block in the ⁇ path, based on a result of the data stored in the block read, to identify the failed component of said specific storage circuit.
  • UE uncorrectable error
  • FIG. 1 shows a configuration of a computer system according to an embodiment of the present invention.
  • the structure of FMPK300 is shown.
  • the structure of the FM chip 570 is shown.
  • the configuration of block 581 is shown.
  • the information stored in the memory 520 of the FM-CTL 500 is shown.
  • a word line-page correspondence table 760 is shown.
  • a plane-block correspondence table 770 is shown.
  • the structure of the logical page and physical page of FMPK300 is shown.
  • a page mapping management table 720 is shown.
  • An FMPK state management table 730 is shown.
  • a failure address list 750 is shown.
  • the first process of the fault notification process is shown.
  • the 2nd process after the 1st process of a failure notification process is shown.
  • the die diagnosis process is shown.
  • the plane diagnosis process is shown.
  • FIG. 2 shows a configuration of RG and LU (Logical Unit) in the storage system 100.
  • 2 shows a configuration of an LU and a VVOL (Virtual Volume) in the storage system 100.
  • the information stored in the memory 420 of the storage controller 400 is shown.
  • An RG management table 620 is shown.
  • An LU management table 630 is shown.
  • a virtual page mapping management table 650 is shown.
  • the real page state management table 660 is shown.
  • a PDEV management table 640 is shown.
  • the information stored in the memory 520 of FM-CTL500 of Example 2 is shown.
  • the current user capacity acquisition process is shown.
  • An RG creation process is shown. Indicates regular monitoring processing. Data recovery processing is shown.
  • the capacity degeneration process is shown.
  • a data movement process is shown.
  • the real page replacement process is shown.
  • a real page replacement process is typically shown.
  • An FMPK capacity change process is shown.
  • a capacity degeneration process is schematically shown.
  • the failure portion in the storage device is determined without reading all the data stored in the storage circuit. Identify and block only the fault site without blocking the entire storage device. Details of this embodiment will be described below.
  • FIG. 1 shows the configuration of a computer system according to an embodiment of the present invention.
  • This computer system has a storage system (storage device) 100 and a plurality of host computers 200. Each of the plurality of host computers 200 is connected to the storage system 100 via a SAN (Storage Area Network) 210.
  • the computer system may have one or more host computers 200.
  • the storage system 100 includes two storage controllers (DKC: Disk Controller) 400 and a plurality of FMPKs (Flash Memory Package) 300.
  • the storage controller 400 is, for example, a controller that controls a plurality of storage devices as a RAID (Redundant Arrays of Inexpensive Disks) group (RG).
  • the two storage controllers 400 are made redundant. In normal times, one storage controller 400 controls the storage system 100, and when the storage controller 400 fails, the other storage controller 400 continues to control the storage system 100.
  • FMPK300 other storage devices such as SAS (Serial Attached Small Computer System Interface) -HDD (Hard Disk Drive), SATA (Serial Advanced Technology Attachment) -HDD may be used. In the following description and drawings, such a storage device may be called a PDEV (Physical Device).
  • the storage controller 400 provides a virtual volume to the host computer 200.
  • the storage controller 400 includes a CPU (Central Processing Unit) 410, a memory 420, a host I / F (Interface) 430, and a disk I / F 440. Each unit in the storage controller 400 is connected to each other via a bus.
  • the memory 420 stores a program for controlling the storage system 100.
  • the memory 420 has an area as a cache memory that temporarily stores data read from the storage device and data written to the storage device.
  • the CPU 410 controls the storage system 100 according to a program stored in the memory 420.
  • the host I / F 430 is connected to the SAN 210 and transmits / receives data to / from the host computer 200.
  • the disk I / F 440 is connected to the FMPK 300 and transmits / receives data to / from the FMPK 300.
  • FIG. 2 shows the configuration of FMPK300.
  • the FMPK 300 includes an FM-CTL (Flash Memory Controller, device controller) 500 and a plurality of memory modules 310.
  • the FM-CTL 500 includes a CPU 510, a memory 520, a host I / F 530, and a plurality of FM I / F 540s. Each part in the FM-CTL 500 is connected to each other via a bus.
  • the memory 520 stores a program for controlling the FMPK 300.
  • the memory 520 stores data read from the FM chip and data written to the FM chip.
  • CPU 510 controls FMPK 300 in accordance with a program stored in memory 520.
  • the FM I / F 540 includes a plurality of DMA (Direct Memory Access) controllers 541.
  • the memory module 310 includes a plurality of switches (SW) 560 and a plurality of FM chips 570.
  • One switch 560 is connected to one DMA controller 541.
  • a plurality of FM chips 570 are connected to one switch 560.
  • the FM chip 570 has a plurality of dies 571.
  • the die 571 has a plurality of blocks.
  • the DMA controller 541 controls communication with the FM chip 570.
  • the FM chip 570 may be simply referred to as a chip
  • the DMA controller 541 may be simply referred to as a DMA.
  • the failure rate may vary depending on the quality of the flash memory. If the DMA fails, it becomes impossible to access the chip in DMA units. In this embodiment, it is assumed that the capacity of each page, the capacity of each block, the capacity of each die, the capacity of each chip, and the number of chips connected to each DMA are equal. However, the respective capacities may be different.
  • the FM-CTL 500 specifies a failure site and does not use the failure site thereafter.
  • FM-CTL 500 provides storage controller 400 with a logical address space in FMPK 300.
  • a physical storage area in the FMPK 300 is associated with the logical address space.
  • a physical storage area corresponding to a logical storage space provided outside the FMPK 300 is called a user area.
  • the logical address space is managed in the FMPK 300 by dividing it into logical pages of a predetermined size.
  • the FM-CTL 500 receives a read / write request designating a logical address from the storage controller 400, the FM-CTL 500 specifies a physical page from the logical address and executes data read / write.
  • the FM-CTL 500 manages failures that partially occur in the FMPK 300.
  • the physical storage area of the flash memory includes a plurality of blocks, and each block includes a plurality of pages.
  • a block is a unit for erasing data
  • a page is a unit for writing and reading data. That is, the FM-CTL 500 erases data in block units and controls data writing and reading in page units.
  • flash memory has a characteristic that data cannot be overwritten. Therefore, when the FM-CTL 500 receives data (update data) for updating data stored in a certain page, the FM-CTL 500 writes the update data to an empty page in which no data is stored. Then, the correspondence between the logical page and the page before update is changed to the correspondence between the logical page and the page after update. Therefore, the storage controller 400 does not need to change the logical address of the access destination.
  • FM-CTL 500 manages data before update as invalid data and data after update as valid data.
  • the page in which the invalid data is stored becomes an empty page, and data can be written.
  • erasure is performed in block units.
  • the FM-CTL 500 copies the valid data to another empty page and erases the data in the block. This valid data copying and block erasing process is called reclamation.
  • a storage device using a flash memory as a storage medium is provided with an area for writing update data (update area).
  • the user area and update area need not be physically separated. For example, when a certain block is erased after being used as a user area, the next may be used as an update area.
  • FIG. 3 shows the configuration of the FM chip 570.
  • the FM chip 570 includes a plurality of stacked dies 571.
  • the die 571 is realized by a semiconductor substrate.
  • the die 571 includes a plurality of planes 572.
  • the plane 572 includes a plurality of blocks 581 arranged in the column direction of the two-dimensional array.
  • the die 571 further includes a row decoder 573 and a sense amplifier 574 for each plane 572.
  • the row decoder 573 is connected to the plane 572, selects a word line corresponding to the address specified by the FM-CTL 500, and passes a current through the selected word line.
  • the sense amplifier 574 amplifies the voltage obtained from the corresponding plane 572.
  • the die 571 further includes a peripheral circuit 575 connected to the two sense amplifiers 574.
  • the peripheral circuit 575 is connected to the row decoder 573 and the sense amplifier 574, and is connected to a switch 560 outside the FM chip 570, and performs boosting and control of other circuits.
  • the FM chip 570 includes four dies 571.
  • the die 571 includes two planes 572.
  • the plane 572 includes 2048 blocks.
  • FIG. 4 shows the configuration of the block 581.
  • Block 581 has a plurality of pages 583. Specifically, in the block 581, a plurality of pages 583 are arranged in the column direction and the row direction, and a word line (Word Line: WL) is provided in each page row (a plurality of pages 583 arranged in the row direction). 582 is connected. Of the plurality of word lines 582, the word line 582 connected to the access destination page 583 is selected for access to the access destination page 583.
  • Each page 583 is a set of a plurality of memory cells (cell transistors) connected in the row direction.
  • the memory cell is a circuit for storing data. For example, 1-bit data is stored in the case of SLC (Single-Level Cell), and multi-bit data is stored in the case of MLC (Multi-Level Cell).
  • a page 583 is a unit of Program (write) and Read (read).
  • a block 581 is a unit of Erase (erase).
  • one page row corresponding to one word line may be represented by a word line 582 in some cases.
  • the particles placed on the semiconductor substrate during manufacturing or the like may cause the UE.
  • UE is generated in reading data stored in the page 583 corresponding to the word lines 582.
  • the configuration of the storage area in the FM chip 570 is not limited to this example.
  • the number of blocks 581 in one die 571 or one plane 572 may be another number, and can be represented by an integer M of 2 or more.
  • the number of pages 583 in one block 581 may be another number, and can be represented by an integer N of 2 or more.
  • the number of word lines 582 in one block 581 may be another number, and can be represented by an integer K of 2 or more.
  • One die 571 may have one plane 572.
  • the word lines 582 in the block 581 are identified by consecutive word line numbers. Pages 583 in block 581 are identified by consecutive page numbers.
  • FIG. 5 shows information stored in the memory 520 of the FM-CTL 500.
  • the memory 520 stores an FMPK control program 710, a page mapping management table 720, an FMPK state management table 730, a fault address list 750, a word line-page correspondence table 760, and a plane-block correspondence table 770.
  • the CPU 510 executes control of the FMPK 300 according to the FMPK control program 710.
  • FIG. 6 shows a word line-page correspondence table 760.
  • the word line-page correspondence table 760 shows a case where the number of word lines (#of WL) included in one block is 64.
  • the word line-page correspondence table 760 includes an entry for each word line.
  • An entry of a certain word line includes a word line number (WL #) and a page number (Page #).
  • the word line number is a number indicating the word line in the block including the word line.
  • the page number indicates a plurality of pages included in the word line, and is a number indicating a page in the block. Four page numbers are associated with one word line number.
  • FIG. 7 shows a plane-block correspondence table 770.
  • the plane-block correspondence table 770 indicates a case where the number of planes 572 (#of Plane) included in one die 571 is two.
  • the plane-block correspondence table 770 includes an entry for each plane.
  • An entry of a certain plane includes a plane number (Plane #) and a block number (Block #).
  • the plane number is a number indicating the plane in the die including the plane.
  • the block number indicates a plurality of blocks included in the plane, and is a number indicating the block in the die.
  • the plane # 0 includes a block having an even block number
  • the plane # 1 includes a block having an odd block number.
  • the FM-CTL 500 can determine to which plane a certain block belongs.
  • This drawing further shows a plane-block correspondence table 770b in the case where one die 571 includes four planes 572 and one plane 572 includes 4096 blocks.
  • the plane number of the plane 571 to which a certain block 581 belongs is a remainder when the block number is divided by the number of planes of 4.
  • FIG. 8 shows the configuration of logical pages and physical pages of FMPK300.
  • the FM-CTL 500 provides the logical address space 911 to the storage controller 400, and manages the logical address space 911 by dividing it into logical pages 912 having a predetermined page size (for example, 8 kB).
  • the FM-CTL 500 manages a block by dividing it into physical pages 913 having a predetermined page size (for example, 8 kB).
  • the page in the FM chip 570 is referred to as a physical page 913 to distinguish it from the logical page 912.
  • the FM-CTL 500 allocates the physical page 913 to the logical page 912.
  • the block 914 has a predetermined number (for example, 256) of physical pages 913.
  • the FM-CTL 500 reads / writes data from / to the FM chip 570 in units of physical pages 913 and erases data from / to the FM chips 570 in units of blocks 914.
  • the logical address may be referred to as LBA (Logical Block Address) and the physical page may be simply referred to as a page.
  • FIG. 9 shows the page mapping management table 720.
  • the page mapping management table 720 has an entry for each logical page.
  • An entry of a certain logical page has an LBA 723 indicating the head of the logical page, a logical page identifier 721 indicating the logical page, and a physical page identifier 722 indicating a physical page assigned to the logical page.
  • the physical page identifier 722 indicates unallocated.
  • the physical page identifier includes, for example, a chip number indicating the position of the chip in the FMPK 300, a die number indicating the position of the die in the chip, a block number indicating the position of the block in the die, and a word line in the block A combination of a word line number indicating the position of the page number and a page number indicating the position of the physical page in the block.
  • the memory 520 stores related information indicating a physical page identifier unique in the FMPK 300, a chip number, a die number, a block number, a word line number, and a page number, and the FM-CTL 500 stores the related information. Based on the physical page identifier, the chip number, die number, block number, word line number, and page number may be specified.
  • FIG. 10 shows the FMPK state management table 730.
  • the FMPK state management table 730 includes a DMA management table 810 for each DMA.
  • a DMA management table 810 of a DMA includes a DMA number (DMA #) 811 indicating the DMA, a Status 812 of the DMA, the number of defective chips 813 among all chips belonging to the DMA, and a total number belonging to the DMA. It has a chip number 814 and a chip management table 820 for each chip belonging to the DMA. Status 812 indicates “Good” if the DMA is usable, and indicates “Bad” otherwise.
  • a chip management table 820 of a certain chip includes a chip number (Chip #) 821 indicating the chip, a status 822 of the chip, the number of defective dies 823 among all the dies in the chip, and the total number in the chip. It has a die number 824 and a die management table 830 for each die in the chip. Status 822 indicates “Good” if the chip is usable, and indicates “Bad” otherwise.
  • the die management table 830 of a certain die includes a die number (Die #) 831 indicating the die, a status 832 of the die, the number of bad blocks 833 among all the blocks in the die, and a logic in the die. It has an allocation block number 834 that is the number of blocks already allocated to the page, a total block number 835 in the die, and a block management table 840 for each block in the die. Status 832 indicates “Good” if the die is usable, “Bad” if the die is not usable, and “Diagnosing” if the die is a diagnosis target die described later.
  • the block management table 840 of a certain block includes the block number (Block #) 841 indicating the block, the status 842 of the block, the total number of pages 843 in the block, and the data in all the pages in the block.
  • In-use 844 that is the number of pages that are storing (in use)
  • Valid 845 that is the number of valid pages in the used pages
  • Invalid 846 that is the number of invalid pages in the used pages .
  • Status 842 indicates “Allocated” if the block is usable and stores data, and indicates “Unallocated” if the block is usable and does not store data. Further, Status 842 indicates “failure” when the block has a failure, and indicates “life” when the number of rewrites of the block exceeds a threshold.
  • a failure mainly in units of dies, planes, and blocks will be described as an example.
  • the occurrence of failures in other physical units such as DMA and chips may be managed.
  • FIG. 11 shows a failure address list 750.
  • the FM-CTL 500 detects a failed part which is a physical storage area where a failure has occurred in the FMPK 300, generates a failed address list 750 indicating a logical address area (logical address range) corresponding to the failed part, and sends it to the storage controller 400.
  • the fault address list 750 has an entry for each fault area that is a logical address area in the FMPK logical address space corresponding to the physical storage area where the fault has occurred in the FMPK 300.
  • An entry has a failure address 751 that is the start LBA of the failure area, and a length 752 that is the length of the failure area.
  • the FM-CTL 500 cannot restore lost data. Therefore, the FM-CTL 500 identifies the logical address area corresponding to the physical storage area where the failure has occurred and notifies the storage controller 400 so that the storage controller 400 uses the RAID to delete the lost data from the other FMPK 300. Can be restored. Since the storage controller 400 cannot recognize a failure in the physical storage area, if the logical address area cannot be acquired from the FM-CTL 500, it is necessary to restore all data in the FMPK 300. The larger the capacity of the FMPK 300, the longer the data restoration process takes place, and the redundancy is lowered during that time.
  • the FM-CTL 500 notifies the storage controller 400 of a specific logical address area as in the present embodiment, data in an appropriate range can be restored, so that the data restoration process is completed in a short time.
  • the reliability of the storage system can be improved by reducing the time when the redundancy is reduced.
  • the FM I / F 540 includes an ECC generation circuit that generates an ECC (Error Correction Code) based on data, a data loss detection circuit that detects data loss using ECC, and an ECC correction circuit that corrects data using ECC.
  • ECC Error Correction Code
  • the ECC I / F 540 adds ECC to the data and writes the data, and corrects an error when the data is read based on the ECC.
  • one page 583 stores a predetermined number of ECC CWs (Code Words).
  • One ECC CW includes data and ECC based on the data.
  • the error correction capability in this case is represented by the number of correctable failure bits, which is the number of correctable failure bits in one ECC CW.
  • the error correction capability of ECC differs depending on the type of ECC.
  • the FM I / F 540 corrects the failure bit in the ECC CW (collectable error).
  • the FM I / F 540 determines that a UE has occurred.
  • FIG. 12 shows the first process of the fault notification process.
  • FIG. 13 shows a second process after the first process of the failure notification process.
  • the storage controller 400 transmits a read request to the FMPK 300 in response to a command from the host 200 or the like. Thereafter, in S120, the FM-CTL 500 reads data from the physical mapping corresponding to the page mapping management table 720 and the designated LBA designated by the read request. Here, it is assumed that FM-CTL 500 detects the UE by the lead. Thereafter, in S140, the FM-CTL 500 transmits a normal UE response indicating the UE to the storage controller 400. Thereafter, in S150, the storage controller 400 receives the normal UE response and recognizes the UE. Here, the storage controller 400 counts the number of normal UE responses received from the FMPK 300 within a predetermined time. When the number of normal UE responses exceeds a predetermined UE number threshold, the storage controller 400 disconnects the FMPK 300 and reconstructs the RG using the spare FMPK 300 prepared in advance instead of the FMPK 300.
  • the FM-CTL 500 specifies a physical page where the UE is generated as a UE page, selects a die 571 including the UE page as a diagnostic part, and starts a die diagnostic process for diagnosing the diagnostic part.
  • the FM-CTL 500 changes the status 832 of the die at the diagnosis site to “under diagnosis” in the FMPK status management table 730.
  • the FM-CTL 500 also starts die diagnosis processing when it detects a UE during internal processing such as reclamation. Further, for diagnosis of the FMPK 300, the storage controller 400 may periodically select a page according to a predetermined rule and transmit a read request for designating the page to the FMPK 300.
  • the storage controller 400 transmits a read request in S210 during die diagnosis processing.
  • the FM-CTL 500 receives the read request and reads data from the physical page corresponding to the designated LBA designated by the read request. If the FM-CTL 500 completes reading normally, a normal response is transmitted to the storage controller 400.
  • FM-CTL 500 detects the UE by the lead.
  • the FM-CTL 500 determines whether or not the physical page is included in the diagnostic part.
  • the FM-CTL 500 determines that the physical page is included in the diagnostic part when the FMPK status management table 730 indicates that the Status 832 of the die including the physical page is “under diagnosis”. For example, when the storage controller 400 transmits a read request by retry according to the above-described recognition of the UE, the physical page is included in the diagnostic part.
  • the FM-CTL 500 sends a special UE response requesting the storage controller 400 not to count the UE to the storage controller 400. Send. Thereafter, in S250, the storage controller receives the special UE response and recognizes the UE, but does not count this UE.
  • the FM-CTL 500 transmits a normal UE response indicating the UE to the storage controller 400 in S340. Thereafter, in S350, the storage controller 400 receives the normal UE response, recognizes the UE, and counts the UE of the FMPK 300. Thereafter, in S360, the FM-CTL 500 determines a new UE page and a new diagnostic part, and starts a die diagnosis process for the new diagnostic part. In the die diagnosis process, the FM-CTL 500 detects a faulty part and generates a faulty address list 750 indicating the LBA corresponding to the faulty part.
  • the storage controller 400 transmits a read or write request to the FMPK 300 in S410. Thereafter, in S420, the FM-CTL 500 receives this I / O request and performs processing according to this I / O request. Thereafter, in S430, the FM-CTL 500 transmits a response indicating the result of this process and the result of the die diagnosis process to the storage controller 400. Note that the FM-CTL 500 may transmit the result of die diagnosis processing to the storage controller 400 in accordance with other commands from the storage controller 400 such as diagnostic commands in addition to I / O requests.
  • the storage controller 400 receives this response, recognizes that there is a diagnosis result, and transmits a failure address list request for requesting the failure address list 750 to the FM-CTL 500. Thereafter, when the FM-CTL 500 receives this fault address list request, in S450, the FM-CTL 500 transmits a fault address list 750 indicating the LBA of the fault area corresponding to the fault site detected by the die diagnosis process to the storage controller 400. To do. Thereafter, the FM-CTL 500 deletes the transmitted fault address list 750.
  • the storage controller 400 receives the failure address list 750, recognizes the failure area (LBA range) storing the lost data based on the failure address list 750, and uses the RG including the FMPK 300. Data that has been lost due to collection is restored, and a write request for writing the restored data back to the failure area and the restored data are transmitted to the FM-CTL 500. Thereafter, in S470, the FM-CTL 500 receives the write request and the restored data, writes the restored data to the designated LBA, and transmits a response to the write request to the storage controller 400. Here, the FM-CTL 500 allocates a normal physical page to the designated LBA and writes the restored data to the physical page.
  • the storage controller 400 repeats S460 and S470 until the restoration and writing back of all the data indicated in the failure address list 750 is completed.
  • the FMPK 300 can diagnose the die in which the UE has occurred in response to the detection of the UE. Further, the storage controller 400 can receive the failure address list 750 from the FM-CTL 500 to recover the data lost by the UE using the RG and write the recovered data back to the FMPK 300.
  • the FMPK returns a special UE response to the storage controller 400, whereby the storage controller 400 counts the number of UEs of the FMPK. prevent.
  • the storage controller 400 can access other than the diagnostic part in the FMPK even if the FMPK is in the die diagnosis process.
  • the FMPK 300 when using a protocol that the FMPK 300 responds in response to a request from the storage controller 400, such as SCSI, the FMPK 300 adds the result of the die diagnosis process to another request, thereby the result of the die diagnosis process is added to the storage controller. 400 can be notified.
  • the storage controller 400 and the FMPK 300 use a protocol that can send a notification from the FMPK 300 to the storage controller 400, such as FICON (Fiber Connection), the FMPK 300 does not wait for a request from the storage controller 400 and performs die diagnosis processing. May be notified to the storage controller 400.
  • FIG. 14 shows the die diagnosis process
  • the FM-CTL 500 starts the die diagnosis process through S160 and S360 described above.
  • the FM-CTL 500 identifies a block including the UE page as a UE block, and reads data stored in all pages in the UE block. Thereafter, in S530, the FM-CTL 500 determines whether or not a UE has occurred by this read.
  • the FM-CTL 500 registers the UE block as a bad block and ends this flow.
  • the FM-CTL 500 changes the status 842 in the block management table 840 corresponding to the UE block in the FMPK state management table 730 to “failure”, and the bad block in the die management table 830 corresponding to the die including the block. Add 1 to Equation 833.
  • the FM-CTL 500 identifies the page in which the UE has occurred in the UE block as a defective page, and whether or not the defective page satisfies the word line condition Determine whether.
  • the word line condition is that defective pages are distributed only in the range of two word lines adjacent to each other.
  • the FM-CTL 500 can estimate the cause of the UE as the above-mentioned particle and identify the faulty part.
  • the word line condition may be that defective pages are distributed only in the range of three consecutive word lines.
  • the FM-CTL 500 registers the UE block as a defective block in the FMPK state management table 730, and based on the page mapping management table 720. Then, the faulty area corresponding to the defective block is specified, the faulty area is registered in the fault address list 750, and this flow is finished.
  • the FM-CTL 500 identifies a plane including the UE block as a diagnostic plane, and performs plane diagnostic processing for diagnosing the diagnostic plane. Do. Thereafter, in S620, the FM-CTL 500 determines whether or not the diagnosis plane is determined to be defective by this plane diagnosis processing.
  • the FM-CTL 500 sets the UE block and the additional UE block detected by the plane diagnosis process as a defective block in the FMPK state management table.
  • the failure area corresponding to the defective block is specified, the failure area is registered in the failure address list 750, and this flow is finished.
  • the FM-CTL 500 identifies the die including the diagnostic plane as the target die and identifies another plane in the target die as the additional diagnostic plane. Then, plane diagnosis processing for diagnosing the additional diagnosis plane is performed. Thereafter, in S650, the FM-CTL 500 determines whether or not the additional diagnosis plane is determined to be defective by this plane diagnosis processing.
  • step S650 If it is determined in step S650 that the additional diagnosis plane is not defective (No), in S660, the FM-CTL 500 determines that all blocks in the diagnosis plane and the additional UE block detected by this plane diagnosis processing are defective blocks. Is registered in the FMPK state management table 730, the failure area corresponding to the defective block is specified, the failure area is registered in the failure address list 750, and this flow is terminated.
  • the FM-CTL 500 may select a plane sharing a circuit connected to the diagnostic plane as an additional diagnostic plane in S640. Further, the FM-CTL 500 may determine that the target die is defective when two of the three or more planes in the target die are determined to be defective.
  • the FM-CTL 500 can quickly estimate the failure caused by particles based on the structure of the memory cell in the target die and identify the minimum block as the failure site. Can do. Only when the position of the UE generated by reading the data stored in the UE block is distributed more widely than the range of two adjacent word lines, the FM-CTL 500 performs the plane diagnosis process, The load of die diagnosis processing can be reduced. In addition, when the UE is not generated due to the reading of data stored in the UE block, or the position of the generated UE is distributed only within the range of two word lines adjacent to each other, the FM-CTL 500 The UE block can be identified as a failure site. Further, only when it is determined that the plane is defective, the FM-CTL 500 can diagnose the die in a short time by determining whether other planes in the die including the plane are defective. .
  • FIG. 15 shows the plane diagnosis process.
  • the FM-CTL 500 performs plane diagnosis processing.
  • a diagnostic plane or an additional diagnostic plane designated as a target for plane diagnostic processing is referred to as a target plane.
  • the FM-CTL 500 determines whether there is a block that satisfies the selection condition among the blocks not yet selected as the target block in the target plane.
  • the block satisfying the selection condition is a block in which data is written up to the last page. For example, when writing data to a certain block, the FM-CTL 500 writes data in ascending order of page numbers from the first page.
  • the block management table 840 corresponding to the block in the FMPK state management table 730, when the In-use 843 is equal to the total page number 843, the FM-CTL 500 has written data up to the last page of the block. Is determined.
  • a block that satisfies the selection condition is not an open block.
  • An “open block” is a physical block in which data is written up to an intermediate physical page (a physical block in which data is written on at least the first page but an empty page still remains).
  • N is an integer of 2 or more
  • data is written up to the Xth page (X is an integer of 2 or more and smaller than N).
  • Y is an integer of 1 or more
  • the characteristic deterioration due to the open block does not depend on the characteristics of the entire die.
  • the FM-CTL 500 determines that the target plane is not defective and ends this flow.
  • the FM-CTL 500 selects a block satisfying the selection condition as a target block and is stored in all pages in the target block. Read data.
  • the FM-CTL 500 randomly selects one block from the plurality of blocks as the target block.
  • the FM-CTL 500 determines whether or not a UE has occurred due to this read.
  • the FM-CTL 500 determines that the target plane is not defective, and ends this flow.
  • the FM-CTL 500 recognizes the target block as an additional UE block. Thereafter, in S760, the FM-CTL 500 determines whether or not the number of additional UE blocks has reached a predetermined number of diagnostic blocks.
  • the number of diagnostic blocks is 5, for example.
  • the number of diagnostic blocks may be another number and can be represented by an integer L of 2 or more and less than M. The larger the number of additional UE blocks in the target plane, the higher the probability that the target plane is defective. The number of additional UE blocks whose probability is sufficiently high is determined in advance as the number of diagnostic blocks.
  • the FM-CTL 500 determines that the target plane is defective and ends this flow.
  • the case where the target plane is defective is, for example, a case where the target plane cannot be controlled due to a failure of the row decoder 573 or the sense amplifier 574 connected to the target plane.
  • the target die is defective, for example, when the target die cannot be controlled due to a failure of the peripheral circuit 575 connected to the two planes 572 in the target die.
  • the FM-CTL 500 selects a block that satisfies the selection condition in the target plane, reads data stored in the block, and the number of blocks generated by the UE is the number of diagnosis blocks.
  • the target plane it is possible to detect the defect of the plane 572 without reading the data stored in all the pages in the plane 572 by determining that the target plane is defective.
  • the diagnosis time can be reduced, the load on the FM-CTL 500 can be reduced, and the performance degradation of the FMPK 300 can be prevented.
  • a block is selected from the target plane and the UE is detected by the number of blocks to be diagnosed, it is possible to maintain the accuracy of diagnosis of the target plane by determining that the target plane is defective.
  • the FM-CTL 500 changes the status 842 of the block management table 840 of the block in the FMPK status management table 730 to “Bad”, and the die management table of the die including the block The number of bad blocks 833 in 830 is increased.
  • the FM-CTL 500 changes the Status 832 of the die management table 830 of the die in the FMPK state management table 730 to “Bad”, and chip management of the FM chip including the die The number of defective dies 823 in the table 820 is increased.
  • the FM-CTL 500 does not assign a physical page in a block registered as a bad block to a logical page. Thereby, although the update area of the FMPK 300 decreases as the number of defective blocks increases, the FMPK 300 can continue to operate without being totally blocked.
  • the FM-CTL 500 reads and diagnoses the entire data stored in the plane or die in which the UE has occurred, the failure part should be used in response to an I / O request from the storage controller 400 during the diagnosis.
  • the I / O performance to other parts is reduced due to the load of diagnosis.
  • the FM-CTL 500 detects a UE on a certain die, the FM-CTL 500 identifies a faulty part in the die without reading data stored in all pages in the die. be able to.
  • the FM-CTL 500 detects a UE, the FM-CTL 500 can identify a fault site in units of blocks, planes, and dies, and can isolate only the fault site.
  • FM-CTL 500 does not have a function of directly detecting a failure of the circuit such as the row decoder 573, the sense amplifier 574, and the peripheral circuit 575 in the die 571, the failure of those circuits is detected by the die diagnosis process. It is possible to identify the site of failure caused by the problem.
  • the FM-CTL 500 may perform die diagnosis processing in accordance with an error such as a status error in response to a write (program) request or an error at the time of erasure.
  • the storage controller 400 detects a failure based on a response such as a status error.
  • the host 200 can write by retry, the write data is not lost.
  • the UE at the time of reading loses data as described above, but can recover the data by the failure notification process.
  • the configuration of the storage system 100 of the present embodiment is the same as the configuration of the storage system 100 of the first embodiment. Hereinafter, differences from the first embodiment will be mainly described.
  • the storage system 100 of the present embodiment changes the capacity of the FMPK 300 according to the occurrence of a failure in the FMPK 300.
  • the capacity of the update area In flash memory, the greater the capacity of the update area, the less frequent reclamation and the higher the performance. However, if the capacity of the update area is large, the capacity of the user data storage area (user area) is small. That is, the relationship between the capacity of the user area and the capacity of the update area and the data capacity that can be stored in the FMPK 300 by the storage controller 400 and the performance are determined.
  • the capacity of the user area may be referred to as user capacity
  • the capacity of the update area may be referred to as update capacity
  • the sum of the user capacity and update capacity may be referred to as physical capacity.
  • the user capacity and the update capacity change with the occurrence of a failure. In this embodiment, the capacity is changed while the ratio between the user capacity and the update capacity is kept constant. Thereby, even when the capacity is reduced, the performance can be maintained.
  • FIG. 16 shows the configuration of RG and LU (Logical Unit) in the storage system 100.
  • the storage controller 400 constructs an RG using a plurality of PDEVs.
  • the storage controller 400 constructs RG # 0 using PDEV # 0- # 3 from PDEV # 0- # 15, and uses DEV # 8- # 15 to establish RG # Build one.
  • Each RG has a plurality of stripes.
  • Each stripe spans a plurality of PDEVs and includes a plurality of data and a parity generated from the plurality of data.
  • the arrangement of data and parity in a plurality of PDEVs is different for each stripe.
  • one stripe includes three data and parity generated from the three data.
  • the storage controller 400 generates parity.
  • the storage controller 400 allocates a storage area in the RG to the LU. In the example of this figure, the storage controller 400 assigns RG # 0 to LU # 0 and # 1, and assigns RG # 1 to LU # 2.
  • FIG. 17 shows the configuration of LUs and VVOLs (Virtual Volumes) in the storage system 100.
  • the storage controller 400 manages the LU by dividing it into real pages that are logical storage areas of a predetermined size.
  • the storage controller 400 registers and manages real pages in the pool.
  • the storage controller 400 provides VVOL to the host computer 200.
  • the storage controller 400 manages the virtual address space in the VVOL by dividing it into virtual pages that are virtual storage areas of a predetermined size.
  • the storage controller 400 allocates a real page from the pool to the virtual page including the address range in the VVOL specified by the write request in response to the write request from the host computer 200 by the thin provisioning function. When the allocation of the real page to the virtual page is released, the storage controller 400 returns the real page to the pool.
  • the storage controller 400 registers real pages in LU # 0 to # 2 in pools # 0 and # 1. Furthermore, the storage controller 400 assigns the real pages in the pools # 0 and # 1 to the virtual pages in the VVOL # 0 and # 1.
  • FIG. 18 shows information stored in the memory 420 of the storage controller 400.
  • the memory 420 stores a storage control program 610, an RG management table 620, an LU management table 630, a PDEV management table 640, a virtual page mapping management table 650, and a real page state management table 660.
  • the storage control program 610 is a program for causing the CPU 410 to control the storage system 100.
  • FIG. 19 shows the RG management table 620.
  • the RG management table 620 has an entry for each RG.
  • An entry of a certain RG includes an RG number (RG #) 621 indicating the RG, a PDEV number (PDEV #) 622 indicating a PDEV belonging to the RG, a RAID level 623 of the RG, and a PDEV belonging to the RG.
  • RG # RG number
  • PDEV # PDEV number
  • RAID level 623 of the RG a PDEV belonging to the RG.
  • a PDEV type 624 that is a type
  • a PDEV minimum capacity 625 that is a minimum value of the user capacity of the PDEV belonging to the RG.
  • FIG. 20 shows the LU management table 630.
  • the LU management table 630 has an entry for each LU.
  • An entry of an LU includes an LU number (LU #) 631 indicating the LU, an RG number (RG #) 632 indicating an RG allocated to the LU, a stripe size 633 of the LU, and the RG And the LU start address 634 which is the start address of the LU and the LU size 635 which is the size of the LU.
  • FIG. 21 shows a virtual page mapping management table 650.
  • the virtual page mapping management table 650 has an entry for each virtual page.
  • An entry of a virtual page includes a VVOL number (VVOL #) 651 indicating the VVOL to which the virtual page belongs, a virtual page ID 652 indicating the virtual page, and a real page ID 653 indicating a real page assigned to the virtual page. And have. When a real page is not assigned to the virtual page, the real page ID 653 indicates “unassigned”.
  • the virtual page ID 652 is a unique identifier within the storage system 100.
  • the real page ID 653 is a unique identifier within the storage system 100.
  • FIG. 22 shows the real page state management table 660.
  • the real page state management table 660 has an entry for each real page.
  • An entry of a real page has a pool number (POOL #) 661 indicating a pool to which the real page belongs, a real page ID 662 indicating the real page, and a status 663 of the real page.
  • the state 663 indicates whether the virtual page is allocated (in use).
  • FIG. 23 shows the PDEV management table 640.
  • the PDEV management table 640 has an entry for each PDEV.
  • An entry of a PDEV includes a PDEV number (PDEV #) 641 indicating the PDEV, a current user capacity 642 that is the current user capacity of the PDEV, an initial user capacity 643 that is an initial user capacity of the PDEV, It has a start address 644 of the user area in the logical address space of the PDEV (FMPK logical address space) and an end address 645 of the user area in the logical address space of the PDEV.
  • the FMPK logical address space is represented by, for example, LBA (Logical Block Address).
  • FIG. 24 shows information stored in the memory 520 of the FM-CTL 500 of the second embodiment.
  • the memory 520 of this embodiment further includes a user capacity ratio 741, a physical capacity 742, a current user capacity 743, an initial user capacity 744, and a user capacity lower limit. 745 are stored.
  • a user capacity ratio 741, a physical capacity 742, an initial user capacity 744, and a user capacity lower limit 745 are determined in advance and stored in the memory 520.
  • the current user capacity 743 is equal to the initial user capacity 744 at the start of operation, but decreases when a failure occurs in the storage area in the FMPK 300.
  • the user capacity ratio 741 is a ratio of the current user capacity 743 to the total capacity of the storage area (user area and update area) without any failure. In this embodiment, the user capacity ratio 741 is constant.
  • FIG. 25 shows the current user capacity acquisition process.
  • the storage controller 400 executes a current user capacity acquisition process for acquiring the current user capacity of the target FMPK.
  • the storage controller 400 acquires the current user capacity with the FMPK 300 as the target FMPK.
  • the storage controller 400 may periodically perform current user capacity update processing.
  • the storage controller 400 receives the current user capacity from the target FMPK by transmitting a capacity inquiry command to the target FMPK (S4110), and sets the current user capacity 642 of the target FMPK in the PDEV management table 640 according to the received current user capacity. Update (S4120) and end this process.
  • the FM-CTL 500 When receiving the capacity inquiry command from the storage controller 400 (S4210), the FM-CTL 500 transmits the current user capacity 743 in the memory 520 to the storage controller 400 (S4220), and ends this process.
  • the above is the current user capacity acquisition process.
  • the storage controller 400 can acquire the current user capacity of the FMPK 300.
  • FIG. 26 shows the RG creation process
  • the storage controller 400 When the storage controller 400 creates a new RG using a plurality of FMPKs 300, the storage controller 400 determines the capacity used for the RG for each of the plurality of FMPKs 300, and executes an RG creation process for creating an RG.
  • the storage controller 400 detects the minimum value of the current user capacity 642 of the FMPK 300 belonging to the RG from the PDEV management table 640 and sets it as the PDEV minimum capacity of the RG (S4310). Thereafter, the storage controller 400 creates the RG using the logical address area for the minimum PDEV capacity in each of all the FMPKs 300 belonging to the RG, and uses the PDEV minimum capacity as the RG in the RG management table 620. Is input to the minimum PDEV capacity 625 (S4320), and this process is terminated.
  • the above is the RG creation process.
  • the storage controller 400 stripes and stores data for a plurality of PDEVs belonging to the RG.
  • each PDEV in the RG needs to have a free space of the same size. That is, if there is no free space in a certain PDEV, data cannot be stored even if there is free space in another PDEV in the RG. Therefore, when the user capacity of a certain PDEV is reduced, even if other PDEVs in the RG have a free capacity, the RG cannot store data. Therefore, the storage controller 400 creates an RG according to the PDEV minimum capacity.
  • an RG having an appropriate capacity can be created in accordance with the current user capacity of the FMPK 300 belonging to the RG.
  • the storage controller 400 may detect the faulty part by the fault notification process of the first embodiment or may detect the faulty part by the periodic monitoring process when a read request is made to the FMPK 300.
  • FIG. 27 shows the regular monitoring process.
  • the storage controller 400 periodically selects one of the FMPKs 300 as the target FMPK, and executes a periodic monitoring process for acquiring the state of the target PDEV.
  • the storage controller 400 periodically performs a regular monitoring process for each of all PDEVs.
  • the storage controller 400 issues a PDEV monitoring command similar to the failure address list request of the first embodiment to the target FMPK (S2110).
  • the FM-CTL 500 that has received the PDEV monitoring command transmits a failure address list 750 to the storage controller 400 as a response to the PDEV monitoring command.
  • the storage controller 400 receives the failure address list 750 from the target FMPK (S2120).
  • the storage controller 400 determines whether a failure is detected based on the failure address list 750 (S2130). If it is determined that no failure has been detected (S2130: No), the storage controller 400 ends this processing.
  • the storage controller 400 recognizes the target FMPK as a failure FMPK, executes data recovery processing to recover data lost in the failure FMPK (S2140),
  • the RG to which the FMPK belongs is recognized as a failure RG, a capacity degeneration process for reducing the user capacity of the FMPK 300 belonging to the failure RG is executed (S2150), and this process ends.
  • Data recovery processing and capacity degeneration processing will be described later. The above is the periodic monitoring process.
  • the FM-CTL 500 sends a UA (Unit Attention) to the storage controller 400 as a response to the Read command and the Write command as in the first embodiment. By transmitting, the storage controller 400 may be notified that a failure has occurred. In this case, the storage controller 400 may acquire the failure address list 750 by a PDEV monitoring command. Further, the FM-CTL 500 may notify the storage controller 400 of a failure area according to a rule predetermined for the storage controller 400 and the FM-CTL 500.
  • a UA Unit Attention
  • the FM-CTL 500 detects a failure for each logical address area of a report size (for example, 256 kB) that is a predetermined size, and only the start address (LBA) of the logical address area where the failure is detected is stored in the storage controller 400. Send to. Receiving the start address, the storage controller 400 recovers the data in the logical address area of the report size specified by the start address.
  • a report size for example, 256 kB
  • LBA start address
  • FIG. 28 shows data recovery processing
  • the storage controller 400 executes data recovery processing.
  • the storage controller 400 selects one entry in order from the top of the failure address list 750 acquired from the failure FMPK, and recognizes the failure area from the selected entry (S2510). Thereafter, the storage controller 400 identifies the FMPK 300 other than the failed FMPK belonging to the failed RG based on the RG management table 620, identifies the stripe corresponding to the failed area based on the LU management table 630, and identifies the identified stripe
  • the data or parity of the specified FMPK 300 is read and RAID calculation is performed to regenerate data lost in the failure area (failure data) and write the regenerated data to the failure area of the failure FMPK (S2520). ).
  • the FM-CTL 500 of the fault FMPK allocates a normal physical storage area to the fault area and writes data from the storage controller 400 to the physical storage area. Thereafter, the storage controller 400 determines whether or not selection of all entries in the acquired failure address list 750 has been completed (S2530). When it is determined that selection of all entries has been completed (S2530: Yes), the storage controller 400 ends the process. Otherwise, the storage controller 400 shifts the process to S2510. The above is the data recovery process.
  • the FM-CTL 500 identifies the logical address area where the failure has occurred and notifies the storage controller 400, so that the storage controller 400 can recover the data relating to the identified address range.
  • the address range is not specified, it is necessary to recover the data in all logical address areas in the fault FMPK, so that the data recovery time can be shortened in this data recovery process.
  • FIG. 29 shows the capacity degeneration process.
  • the storage controller 400 executes capacity degeneration processing.
  • the storage controller 400 executes data movement processing for moving data in the logical address area reduced by the failure RG (S2620), and executes FMPK capacity change processing for changing the capacity of the FMPK 300 belonging to the failure RG (S2630). This process is terminated. Data movement processing and FMPK capacity change processing will be described later. The above is the capacity degeneration processing.
  • FIG. 30 shows the data movement process
  • the storage controller 400 executes data movement processing.
  • the storage controller 400 determines a reduction area that is a logical address area that is reduced from the failure FMPK (S2710).
  • the storage controller 400 determines a reduction size, which is the size of the reduction area, and a start address (LBA) of the reduction area.
  • the reduction area is, for example, an address range corresponding to the previous reduction size from the end address 645 of each FMPK 300 in the PDEV management table 640.
  • reducing the capacity means limiting the logical address area of the FMPK 300 that can be used by the storage controller 400.
  • the storage controller 400 transmits a normal area capacity inquiry to the fault FMPK.
  • the FM-CTL 500 that has received the inquiry about the normal area capacity calculates a value obtained by multiplying the capacity of the physical storage area excluding the current defective portion (physical capacity 742) by the user capacity ratio as the normal area capacity. Is transmitted to the storage controller 400.
  • the defective part is, for example, a Bad Block.
  • the FMPK 300 in this embodiment closes a die when all the allocated blocks in the die are Bad Blocks, and blocks the die even if some of the allocated blocks in the die are Bad Blocks. do not do. Therefore, in FMPK300, the capacity of all Bad Blocks may be different from the capacity of the blocked part. Therefore, the defective portion may be a closed portion.
  • the storage controller 400 that has received the normal area capacity calculates a value obtained by subtracting the normal area capacity from the current user capacity 642 of the fault FMPK as a reduction size.
  • the storage controller 400 identifies the RG reduction range, which is the logical address area of the stripe corresponding to the reduction area in the RG including the failed FMPK, based on the RG management table 620, the LU management table 630, and the PDEV management table 640. Then, a list of all real pages within the RG reduction range is generated (S2720).
  • the size of the RG reduction range differs depending on the RAID level 623 of the failure RG in the RG management table 620. For example, when the RAID level 623 of the fault RG is 0, 5, or 6, the size of the RG reduction range is the number of data disks (the value obtained by subtracting the number of parity disks from the total number of disks belonging to the fault RG). Multiply value. When the RAID level 623 of the failure RG is 1, the size of the RG reduction range is the reduction size.
  • the storage controller 400 Since the storage controller 400 manages the storage area of the RG in units of real pages, the size of the RG is reduced in units of real pages. Here, the storage controller 400 does not simply set the size of the failed area notified from the FMPK 300 as the reduced size, but determines the reduced size based on the information on the real page. If the size of the failure area includes a fraction in real page units, the storage controller 400 calculates a reduced size by rounding up the size of the failure area to an integral multiple of the real page. The storage controller 400 manages real page information, but the FMPK 300 does not manage real page information. Therefore, the storage controller 400 needs to notify the FMPK 300 of the reduced size by FMPK capacity change processing described later.
  • the storage controller 400 selects the first real page from the list of real pages within the RG reduction range (S2730). Thereafter, the storage controller 400 determines whether or not the real page is in use (assigned to a virtual page) based on the real page state management table 660 (S2740). When it is determined that it is not in use (S2740: No), the storage controller 400 shifts the process to S2760. This is because there is no need to copy data if a real page is not assigned to a virtual page. When it is determined that it is in use (S2740: Yes), the storage controller 400 executes a real page replacement process for replacing the real page with another real page as a replacement original real page by using the Thin Provisioning function (S2750). ).
  • the storage controller 400 determines whether or not selection of all real pages in the list of real pages has been completed (S2760). If selection of all real pages within the RG reduction range has not been completed (S2760: No), the storage controller 400 selects the next real page from the list of real pages (S2770), and shifts the processing to S2740. . When the selection of all real pages within the RG reduction range is completed (S2760: Yes), the storage controller 400 ends this process. The above is the data movement process.
  • FIG. 31 shows the real page replacement process.
  • the storage controller 400 executes a real page replacement process.
  • the storage controller 400 determines the selected real page as a replacement original real page (S2810). Thereafter, the storage controller 400 selects a replacement destination real page from the pool including the unused real pages based on the real page state management table 660 (S2820). Here, the storage controller 400 may select a real page other than the failure RG among the real pages in the pool. Thereafter, the storage controller 400 copies the data of the replacement source real page to the replacement destination real page (S2830).
  • the storage controller 400 allocates the replacement destination real page to the virtual page to which the replacement original real page has been allocated (S2840).
  • the storage controller 400 changes the replacement source real page ID to the replacement destination real page ID in the virtual page mapping management table 650, and changes the status 663 of the replacement source real page to unused in the real page status management table 660. Then, the status 663 of the replacement destination real page is changed to being used.
  • the storage controller 400 issues a PDEV area release command that notifies the target FMPK that the logical page allocated to the replacement original real page in the target FMPK is unused (S2850), and ends this processing. .
  • this PDEV area release command notifies that the target FMPK may discard the data of the logical page.
  • the above is the actual page replacement process.
  • FIG. 32 schematically shows the real page replacement process.
  • the real page # 100 is selected as the replacement original real page, and the replacement original real page is assigned to the virtual page # 002. Thereafter, the real page # 001 is selected from the pool # 0 as a replacement destination real page, and the replacement destination real page is assigned to the virtual page # 002.
  • a real page can be allocated from the pool to a virtual page to which a real page to be reduced in the failure RG is allocated. Thereby, all the real pages reduced in the failure RG can be changed to an unused state, and the capacity of the failure RG can be reduced.
  • the reduction area can be determined based on the current user capacity and the capacity of the physical storage area where the failure in the failure FMPK has occurred. Further, the data stored in the real page corresponding to the reduced area of the failure FMPK is moved, and the real page to be moved is assigned to the virtual page to which the real page has been assigned. As a result, access from the host computer 200 to the address included in the virtual page can be maintained.
  • FIG. 33 shows the FMPK capacity change process.
  • the storage controller 400 executes the FMPK capacity change process by setting all the FMPKs 300 belonging to the failure RG as the target FMPKs.
  • the storage controller 400 transmits a capacity change command for designating the reduction size to the target FMPK (S2910) and receives a response (S2920). Thereafter, the storage controller 400 updates the entry of the target FMPK in the PDEV management table 640 (S2930).
  • the storage controller 400 changes the value stored in the current user capacity 642 of the target FMPK to a value obtained by subtracting the reduction size from the stored value. Further, the storage controller 400 changes the stored address value to a value obtained by subtracting the reduction size from the stored value.
  • the storage controller 400 updates the RG management table 620 and the LU management table 630 (S2940), and ends this processing.
  • the storage controller 400 updates the PDEV minimum capacity 625 of the RG management table 620 and the LU size 635 of the LU management table 630 based on the updated current user capacity 642.
  • the replacement original real page returned to the pool by the page replacement process is deleted from the pool.
  • the FM-CTL 500 When the FM-CTL 500 receives the capacity change command from the storage controller 400 (S3010), the FM-CTL 500 calculates a value obtained by subtracting the reduction size specified in the capacity change command from the current user capacity 743 in the memory 520 as the post-reduction user capacity. Then, it is determined whether the post-reduction user capacity is larger than the user capacity lower limit 745 in the memory 520 (S3020). When it is determined that the post-reduction user capacity is greater than the user capacity lower limit 745 (S3020: Yes), the FM-CTL 500 changes the value of the current user capacity 743 to the post-reduction user capacity and succeeds in the capacity change command. The response shown is transmitted to the storage controller 400 (S3030), and this process ends.
  • the FM-CTL 500 transmits a response indicating failure to the capacity change command to the storage controller 400 (S3030), and ends this process.
  • the storage controller 400 receives a response indicating failure from the FMPK 300, the storage controller 400 blocks the entire FMPK 300. That is, when the user capacity of the FMPK 300 becomes equal to or lower than the user capacity lower limit 745 by the FMPK capacity change process, the FMPK 300 is closed. The above is the FMPK capacity change process.
  • the host computer 200 when changing the capacity of the access destination volume, the host computer 200 needs to stop the operation and re-recognize the volume.
  • the FMPK capacity when the FMPK capacity is reduced, the pool capacity is decreased. More specifically, the number of real pages included in the pool is reduced. A storage area is allocated to the virtual volume from the pool, but the capacity of the virtual volume is not changed. As a result, the host computer 200 does not need to recognize a capacity reduction due to a partial failure inside the FMPK, and can continue accessing the virtual volume.
  • the FMPK 300 other than the fault FMPK belonging to the fault RG may be referred to as a related FMPK, and the logical address area of the related FMPK corresponding to the stripe of the fault FMPK reduction area in the fault RG is referred to as a related area. There is. According to the FMPK capacity change process, it is possible not only to reduce the reduction area of the fault FMPK but also to reduce the related area of the related FMPK.
  • the current user area reduced by the storage controller 400 can be reflected in the FMPK 300.
  • FIG. 34 schematically shows the capacity degeneration process.
  • This figure shows the arrangement of real pages in the fault RG before the capacity degeneration processing and the arrangement of real pages in the RG after the capacity degeneration processing.
  • the storage controller 400 moves the data stored in the real page corresponding to the reduced area of the failure FMPK, and assigns the real page in the pool to the virtual page to which the real page is assigned.
  • the current user capacity of the fault FMPK can be reduced.
  • the FM-CTL 500 can reduce the current user capacity in accordance with an instruction from the storage controller 400.
  • the storage controller 400 when a failure occurs in the FMPK 300, the storage controller 400 reduces the capacity of the FMPK 300 according to the failed part, thereby preventing the entire FMPK 300 from being blocked and continuing to use the FMPK 300. be able to. Further, the part where the failure has occurred can be blocked by the unit of DMA, chip, die or plane in the FMPK 300. Further, when a failure occurs in one of the plurality of FMPKs 300 belonging to the RG, the storage controller 400 can continue to use the RG by reducing the capacity of the RG.
  • the information of the present invention is described using expressions such as “aaa table” and “aaa list”.
  • the information may be expressed in other data structures such as DBs and queues. Good. Therefore, “aaa table”, “aaa list”, “aaaDB”, “aaa queue”, etc. may be referred to as “aaa information” to indicate that they are not dependent on the data structure.
  • program is used as the subject.
  • the program performs processing determined by being executed by the processor using the memory and the communication port.
  • the description may be given using the processor as the subject.
  • the processing disclosed with the program as the subject may be processing performed by a management computer or an information processing apparatus. Further, part or all of the program may be realized by dedicated hardware.
  • Various programs may be installed in each computer by a program distribution server or a storage medium that can be read by the computer.
  • the nonvolatile semiconductor memory in the above embodiment is FM (Flash Memory).
  • the FM in the above embodiment is a type of FM that is erased in units of blocks and read and written in units of pages, typically a NAND flash memory.
  • the FM may be another type of flash memory (for example, NOR type) instead of the NAND type.
  • other types of nonvolatile semiconductor memories such as magnetoresistive memory MRAM (Magnetoresistive random access memory), resistance change type memory ReRAM (Resistance random access memory), ferroelectric memory, etc.
  • a semiconductor memory such as a certain FeRAM (Ferroelectric random access memory) or a phase change memory may be used.
  • FMPK300 etc. may be used as a storage device.
  • An FM chip 570 or the like may be used as the nonvolatile semiconductor memory.
  • the storage controller 400 or the host computer 200 may be used.
  • An FM-CTL 500 or the like may be used as the device controller.
  • the memory circuit a plane 572 or a die 571 in the FM chip 570 may be used.
  • the control circuit a row decoder 573, a sense amplifier 574, a peripheral circuit 575, and the like in the die 571 may be used.
  • a block 581 or the like may be used as the block.
  • a page 583 or the like may be used as the page.
  • I / O read or write may be used.
  • diagnosis processing die diagnosis processing, plane diagnosis processing, or the like may be used.
  • a partial block in the specific storage circuit a UE block in S520, a target block in S720, or the like may be used.
  • LBA or the like may be used as the logical address.
  • a physical page identifier or the like may be used as the physical address.
  • failure information a failure address list 750 or the like may be used.
  • a UE block or the like may be used as the specific block.
  • distribution condition the fact that No in S540 is satisfied may be used.
  • a die 571 or the like in the FM chip 570 is used as a semiconductor substrate, a plane 572 or the like in the die 571 is used as a storage circuit, a diagnostic plane or the like is used as a specific storage circuit, and an additional diagnosis is performed as an additional storage circuit.
  • a plane or the like may be used.
  • a page row or the like connected to the word line 582 may be used as the page row.
  • a special UE response or the like may be used as a response requesting not to count UEs based on the read request.
  • the storage system 100 or the like may be used as the storage device.
  • the storage controller 400 or the like may be used.
  • User capacity or the like may be used as the capacity of the logical storage area.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

 不揮発性半導体メモリに障害が発生した場合に障害部位を特定する。デバイスコントローラが、複数の不揮発性半導体メモリの中の特定ページに格納されているデータをリードすることにより、特定ページに格納されているデータのアンコレクタブルエラー(UE)を検出した場合、デバイスコントローラは診断処理として、特定ページを含む記憶回路である特定記憶回路を特定し、特定記憶回路の中の一部のブロックに格納されているデータをリードし、ブロックに格納されているデータのリードの結果に基づいて、特定記憶回路内の障害部位を特定する。

Description

記憶デバイスおよびストレージ装置
 本発明は、記憶デバイスおよびストレージ装置に関する。
 近年、企業で扱われるデータ量の増大に伴い、ストレージ装置は多数の記憶デバイスを備え、記憶デバイスの容量も年々増大している。記憶デバイスとして、一般にHDD(Hard Disk Drive)が搭載されているが、近年、HDDに代わって、記憶媒体として不揮発性半導体メモリ(例えば、フラッシュメモリ)を有する記憶デバイス(例えばSSD:Solid State Drive)が注目されている。SSDは、HDDに比べて高価であるがI/O処理が非常に高速である。
 フラッシュメモリでは、物理的な記憶領域は、ブロックと呼ばれる単位で管理されており、データの消去はこのブロック単位で行われる。ブロックを消去可能な回数には上限があり、消去回数が増加すると、フラッシュメモリにデータが書き込めなくなる場合や、フラッシュメモリに書き込まれたデータのエラー発生率が増大する場合がある。つまり、フラッシュメモリには寿命があり、多数のフラッシュメモリを有するSSDにも寿命がある。また、フラッシュメモリチップの微細化の進展に伴い、フラッシュメモリチップが大容量化する一方で、信頼性が低下し、ダイやチップなどの単位で品質にばらつきが生じる。品質が悪いダイは、エラー発生率が増大しやすく所定の消去回数未満でも障害により使用できなくなる。複数のダイにこのような障害が発生すると、ユーザデータを格納する記憶領域を確保できなくなり、記憶デバイスを閉塞せざるを得なくなる。このように、所定の期間よりも早期にSSDが使用不能になると、交換の頻度が増加し、SSDの購入や保守のためのコストが発生する可能性がある。
 例えば、特許文献1には、SSD内のブロックに障害が発生した場合のデータ復旧技術が開示されている。複数のSSDを有するストレージ装置において、或るSSD内のブロックの障害が検出されると、障害ブロックを含むSSDの全データを別のSSDにリビルドする技術が知られている。
米国特許第8041991号明細書
 特許文献1の技術では、記憶デバイス内の不揮発性半導体メモリの一部に障害が発生した場合、他に品質が良く使用可能な部分(メモリのダイやチップ)が多数存在していても、その記憶デバイスは閉塞されるため、その記憶デバイスを交換する必要があった。記憶デバイスが大容量化すると、部分的に障害が発生しても依然として使用可能な容量も大きいことになる。このため、一部の障害に対して記憶デバイスを閉塞すると、無駄が多い。そこで、障害が発生した場合に、記憶デバイス内のコントローラが不揮発性半導体メモリの全体を検査し、障害部位を特定すれば、記憶デバイスの閉塞を避けられる可能性がある。しかし、不揮発性半導体メモリの全体を検査する処理は、負荷が大きく、記憶デバイスの性能低下につながる。
 上記課題を解決するために、本発明の一態様である記憶デバイスは、複数の不揮発性半導体メモリと、前記複数の不揮発性半導体メモリに接続され、前記複数の不揮発性半導体メモリへのアクセスの指示を発行する上位装置に接続されるデバイスコントローラと、を備える。前記複数の不揮発性半導体メモリの夫々は、複数の記憶回路と、複数の制御回路とを含み、前記複数の記憶回路は、夫々前記複数の制御回路を介して前記デバイスコントローラに接続され、前記複数の記憶回路の夫々は、複数のブロックを含み、前記ブロックは、データの消去単位であり、前記複数のブロックの夫々は、複数のページを含み、前記ページは、データのリード/ライト単位であり、前記デバイスコントローラが、前記複数の不揮発性半導体メモリの中の特定ページに格納されているデータをリードすることにより、前記特定ページに格納されているデータのアンコレクタブルエラー(UE)を検出した場合、前記デバイスコントローラは診断処理として、前記特定ページを含む記憶回路である特定記憶回路を特定し、前記特定記憶回路の中の一部のブロックに格納されているデータをリードし、前記ブロックに格納されているデータのリードの結果に基づいて、前記特定記憶回路内の障害部位を特定する。
本発明の実施例の計算機システムの構成を示す。 FMPK300の構成を示す。 FMチップ570の構成を示す。 ブロック581の構成を示す。 FM-CTL500のメモリ520に格納される情報を示す。 ワード線-ページ対応テーブル760を示す。 プレーン-ブロック対応テーブル770を示す。 FMPK300の論理ページ及び物理ページの構成を示す。 ページマッピング管理テーブル720を示す。 FMPK状態管理テーブル730を示す。 障害アドレスリスト750を示す。 障害通知処理の第一処理を示す。 障害通知処理の第一処理の後の第二処理を示す。 ダイ診断処理を示す。 プレーン診断処理を示す。 ストレージシステム100におけるRG及びLU(Logical Unit)の構成を示す。 ストレージシステム100におけるLU及びVVOL(Virtual Volume:仮想ボリューム)の構成を示す。 ストレージコントローラ400のメモリ420に格納される情報を示す。 RG管理テーブル620を示す。 LU管理テーブル630を示す。 仮想ページマッピング管理テーブル650を示す。 実ページ状態管理テーブル660を示す。 PDEV管理テーブル640を示す。 実施例2のFM-CTL500のメモリ520に格納される情報を示す。 現在ユーザ容量取得処理を示す。 RG作成処理を示す。 定期監視処理を示す。 データ回復処理を示す。 容量縮退処理を示す。 データ移動処理を示す。 実ページ張替え処理を示す。 実ページ張替え処理を模式的に示す。 FMPK容量変更処理を示す。 容量縮退処理を模式的に示す。
 実施形態の概要を説明する。本実施形態では、記憶デバイス内の不揮発性半導体メモリ内の特定の記憶回路に障害が発生した場合、その記憶回路に格納されている全てのデータをリードすることなく、記憶デバイス内の障害部位を特定し、記憶デバイス全体を閉塞せずに障害部位だけを閉塞する。本実施形態の詳細は以下に説明する。
 以下、本実施例の計算機システムの構成について説明する。
 図1は、本発明の実施例の計算機システムの構成を示す。
 この計算機システムは、ストレージシステム(ストレージ装置)100と、複数のホスト計算機200とを有する。複数のホスト計算機200の夫々は、SAN(Storage Area Network)210を介して、ストレージシステム100に接続されている。計算機システムは、一つ以上のホスト計算機200を有していても良い。
 ストレージシステム100は、二つのストレージコントローラ(DKC:Disk Controller)400と、複数のFMPK(Flash Memory Package)300とを有する。ストレージコントローラ400は例えば、複数の記憶デバイスをRAID(Redundant Arrays of Inexpensive Disks)グループ(RG)として制御するコントローラである。二つのストレージコントローラ400は、冗長化されており、通常時には一方のストレージコントローラ400がストレージシステム100を制御し、そのストレージコントローラ400の障害発生時に他方のストレージコントローラ400がストレージシステム100の制御を継続させる。FMPK300に加えて、SAS(Serial Attached Small Computer System Interface)-HDD(Hard Disk Drive)、SATA(Serial Advanced Technology Attachment)-HDD等、他の記憶デバイスが用いられても良い。以後の説明及び図面において、このような記憶デバイスをPDEV(Physical Device)と呼ぶことがある。
 ストレージコントローラ400は、ホスト計算機200に仮想ボリュームを提供する。ストレージコントローラ400は、CPU(Central Processing Unit)410と、メモリ420と、ホストI/F(Interface)430と、ディスクI/F440とを有する。ストレージコントローラ400内の各部は、バスを介して互いに接続されている。メモリ420は、ストレージシステム100を制御するためのプログラムを格納する。また、メモリ420は、記憶デバイスから読み出されたデータや記憶デバイスに書き込まれるデータを一時的に格納するキャッシュメモリとしての領域を有する。CPU410は、メモリ420に格納されたプログラムに従ってストレージシステム100を制御する。ホストI/F430は、SAN210に接続され、ホスト計算機200とのデータの送受信を行う。ディスクI/F440は、FMPK300に接続され、FMPK300とのデータの送受信を行う。
 図2は、FMPK300の構成を示す。
 FMPK300は、FM-CTL(Flash Memory Controller、デバイスコントローラ)500と、複数のメモリモジュール310とを有する。FM-CTL500は、CPU510と、メモリ520と、上位I/F530と、複数のFM I/F540とを有する。FM-CTL500内の各部は、バスを介して互いに接続されている。メモリ520は、FMPK300を制御するためのプログラムを格納する。また、メモリ520は、FMチップから読み出されたデータやFMチップに書き込まれるデータを格納する。CPU510は、メモリ520に格納されたプログラムに従ってFMPK300を制御する。
 一つのFM I/F540には、一つのメモリモジュール310が接続されている。FM I/F540は、複数のDMA(Direct Memory Access)コントローラ541を有する。メモリモジュール310は、複数のスイッチ(SW)560と、複数のFMチップ570とを有する。一つのDMAコントローラ541には、一つのスイッチ560が接続されている。一つのスイッチ560には、複数のFMチップ570が接続されている。FMチップ570は、複数のダイ(Die)571を有する。ダイ571は、複数のブロックを有する。DMAコントローラ541は、FMチップ570との通信を制御する。以後の説明及び図面において、FMチップ570を単にチップと呼ぶことがあり、DMAコントローラ541を単にDMAと呼ぶことがある。
 チップにおいては、ページ、ブロック、ダイ、プレーン等の単位で障害が発生する可能性がある。障害の発生率は、フラッシュメモリの品質によって異なりうる。また、DMAが故障すれば、DMA単位でチップにアクセスすることができなくなる。本実施例では、各ページの容量、各ブロックの容量、各ダイの容量、各チップの容量、各DMAに接続されるチップ数は等しいものとする。ただし、それぞれの容量が異なっていてもよい。FM-CTL500は、ページ、ブロック、プレーン、ダイ、チップ、DMAに障害が発生した場合、障害部位を特定し、以後障害部位を使用しない。
 FM-CTL500は、FMPK300内の論理アドレス空間をストレージコントローラ400に提供する。論理アドレス空間には、FMPK300内の物理記憶領域が対応付けられる。FMPK300の外部に提供される論理記憶空間に対応する物理記憶領域をユーザ領域と呼ぶ。論理アドレス空間は、FMPK300内部で所定のサイズの論理ページに区切って管理される。FM-CTL500は、ストレージコントローラ400から論理アドレスを指定したリード/ライト要求を受信すると、論理アドレスから物理ページを特定し、データのリード/ライトを実行する。また、FM-CTL500は、FMPK300に部分的に発生する障害を管理する。
 フラッシュメモリの物理記憶領域は、複数のブロックを含み、各ブロックは複数のページを含む。ブロックはデータの消去の単位であり、ページはデータの書き込み及び読み出しの単位である。つまり、FM-CTL500は、ブロック単位でデータを消去し、ページ単位でデータの書き込み及び読み出しを制御する。
 また、フラッシュメモリは、データの上書きができないという特性がある。このため、FM-CTL500は、あるページに格納されているデータを更新するデータ(更新データ)を受信すると、更新データをデータが格納されていない空きページへ書き込む。そして、論理ページと更新前のページの対応関係を、その論理ページと更新後のページの対応関係に変更する。このため、ストレージコントローラ400はアクセス先の論理アドレスを変更する必要はない。
 そして、FM-CTL500は、更新前のデータを無効データ、更新後のデータを有効データとして管理する。無効データが消去されると、無効データが格納されていたページは空きページとなり、データを書き込むことが可能になる。ただし、消去はブロック単位で行われる。ブロック内に有効データと無効データが混在している場合、FM-CTL500は有効データを他の空きページにコピーして、そのブロック内のデータの消去を行う。この有効データのコピーとブロックの消去処理を、リクラメーションと呼ぶ。
 このようにフラッシュメモリでは、空きページが存在しない場合、ブロック単位でデータの消去を行わなければ新たにデータを書き込むことができない。また、消去処理が実行されると、消去処理が終わるまでデータを書き込むことができないため書き込み性能が低下し、消去処理そのもののオーバーヘッドによる性能低下も発生する。そこで、フラッシュメモリを記憶媒体とする記憶デバイスでは、更新データを書き込む領域(更新領域)が設けられる。
 なお、ユーザ領域と更新領域は物理的に区別されている必要はない。例えば、あるブロックがユーザ領域として使用された後に消去された場合、次は更新領域として使用されてもよい。
 図3は、FMチップ570の構成を示す。
 FMチップ570は、積層された複数のダイ571を含む。ダイ571は、半導体基板により実現される。ダイ571は、複数のプレーン572を含む。プレーン572は、2次元配列の列方向に並べられた複数のブロック581を含む。ダイ571は更に、各プレーン572に対し、ロウデコーダ573とセンスアンプ574とを含む。ロウデコーダ573は、プレーン572に接続され、FM-CTL500により指定されたアドレスに対応するワード線を選択し、選択されたワード線に電流を流す。センスアンプ574は、対応するプレーン572から得られる電圧を増幅する。ダイ571は更に、2個のセンスアンプ574に接続されている周辺回路575を含む。周辺回路575は、ロウデコーダ573及びセンスアンプ574に接続されると共に、FMチップ570の外のスイッチ560に接続され、昇圧や他の回路の制御などを行う。
 本実施例において、FMチップ570は、4個のダイ571を含む。ダイ571は、2個のプレーン572を含む。プレーン572は、2048個のブロックを含む。
 図4は、ブロック581の構成を示す。
 ブロック581は、複数のページ583を有する。具体的には、ブロック581には、列方向及び行方向に複数のページ583が配列されており、各ページ行(行方向に並んだ複数のページ583)に、ワード線(Word Line:WL)582が接続されている。複数のワード線582のうち、アクセス先のページ583に接続されているワード線582が、そのアクセス先のページ583へのアクセスのために選択される。各ページ583は、行方向に接続された複数のメモリセル(セルトランジスタ)の集合である。メモリセルは、データを格納する回路であり、例えば、SLC(Single-Level Cell)であれば1ビットのデータを記憶し、MLC(Multi-Level Cell)であれば複数ビットのデータを記憶する。
 本実施例において、ブロック581には、64個のページ行が存在し、故に、ブロック581には、64本のワード線582が接続される。1つのページ行に4個のページ583が並んでいるので、ブロック581は、64×4=256個のページ583を含む。ページ583のサイズは、8kBである。ページ583は、Program(書き込み、Write)及びRead(読み出し)の単位である。ブロック581は、Erase(消去)の単位である。以後、一つのワード線に対応する一つのページ行を、ワード線582で表す場合がある。
 このような構成において、製造時等に半導体基板上に載ったパーティクルがUEの原因となる場合がある。例えば、互いに隣接する2個のワード線582の間がパーティクルによりショートすることにより、それらのワード線582に対応するページ583に格納されているデータのリードにおいてUEが発生する。
 なお、FMチップ570内の記憶領域の構成は、この例に限定されない。なお、一つのダイ571又は一つのプレーン572内のブロック581の数は、他の数でも良く、2以上の整数Mで表すことができる。一つのブロック581内のページ583の数は、他の数でも良く、2以上の整数Nで表すことができる。一つのブロック581内のワード線582の数は、他の数でも良く、2以上の整数Kで表すことができる。また、一つのダイ571が一つのプレーン572を有していても良い。
 ブロック581内のワード線582は、連続するワード線番号により識別される。ブロック581内のページ583は、連続するページ番号により識別される。
 図5は、FM-CTL500のメモリ520に格納される情報を示す。
 メモリ520は、FMPK制御プログラム710と、ページマッピング管理テーブル720と、FMPK状態管理テーブル730と、障害アドレスリスト750と、ワード線-ページ対応テーブル760と、プレーン-ブロック対応テーブル770とを格納する。CPU510は、FMPK制御プログラム710に従ってFMPK300の制御を実行する。
 図6は、ワード線-ページ対応テーブル760を示す。
 ワード線-ページ対応テーブル760は、1個のブロックに含まれるワード線の数(#of WL)が64である場合を示す。ワード線-ページ対応テーブル760は、ワード線毎のエントリを含む。或るワード線のエントリは、ワード線番号(WL#)と、ページ番号(Page#)とを含む。ワード線番号は、当該ワード線を含むブロック内で当該ワード線を示す番号である。ページ番号は、当該ワード線に含まれる複数のページを示し、当該ブロック内でページを示す番号である。1個のワード線番号に、4個のページ番号が関連付けられている。
 図7は、プレーン-ブロック対応テーブル770を示す。
 プレーン-ブロック対応テーブル770は、一つのダイ571に含まれるプレーン572の数(#of Plane)が2である場合を示す。プレーン-ブロック対応テーブル770は、プレーン毎のエントリを含む。或るプレーンのエントリは、プレーン番号(Plane#)と、ブロック番号(Block#)とを含む。プレーン番号は、当該プレーンを含むダイ内で当該プレーンを示す番号である。ブロック番号は、当該プレーンに含まれる複数のブロックを示し、当該ダイ内で当該ブロックを示す番号である。2個のプレーン#0、#1のうち、プレーン#0は、ブロック番号が偶数であるブロックを含み、プレーン#1は、ブロック番号が奇数であるブロックを含む。これにより、FM-CTL500は、或るブロックが何れのプレーンに属しているかを判定することができる。
 この図は更に、1個のダイ571が4個のプレーン572を含み、1個のプレーン572が4096個のブロックを含む場合の、プレーン-ブロック対応テーブル770bを示す。或るブロック581が属するプレーン571のプレーン番号は、ブロック番号をプレーン数の4で除したときの剰余である。
 図8は、FMPK300の論理ページ及び物理ページの構成を示す。
 FM-CTL500は、論理アドレス空間911を、ストレージコントローラ400に提供し、論理アドレス空間911を所定のページサイズ(例えば8kB)の論理ページ912に分割して管理する。FM-CTL500は、ブロックを、所定のページサイズ(例えば8kB)の物理ページ913に分割して管理する。ここでは、FMチップ570内のページを、論理ページ912と区別するために、物理ページ913と呼ぶ。FM-CTL500は、物理ページ913を論理ページ912に割り当てる。ブロック914は、所定数(例えば256個)の物理ページ913を有する。FM-CTL500は、FMチップ570に対するデータの読み書きを物理ページ913単位で行い、FMチップ570に対する消去をブロック914単位で行う。以後、論理アドレスをLBA(Logical Block Address)と呼び、物理ページを単にページと呼ぶことがある。
 図9は、ページマッピング管理テーブル720を示す。
 ページマッピング管理テーブル720は、論理ページ毎のエントリを有する。或る論理ページのエントリは、当該論理ページの先頭を示すLBA723と、当該論理ページを示す論理ページ識別子721と、当該論理ページに割り当てられている物理ページを示す物理ページ識別子722とを有する。当該論理ページに物理ページが割り当てられていない場合、物理ページ識別子722は、未割当を示す。物理ページ識別子は例えば、FMPK300内のチップの位置を示すチップ番号と、当該チップ内のダイの位置を示すダイ番号と、当該ダイ内のブロックの位置を示すブロック番号と、当該ブロック内のワード線の位置を示すワード線番号と、当該ブロック内の当該物理ページの位置を示すページ番号との組み合わせを示す。なお、メモリ520が、FMPK300内で一意の物理ページ識別子と、チップ番号とダイ番号とブロック番号とワード線番号とページ番号との関連付けを示す関連情報を格納し、FM-CTL500が、関連情報に基づいて、物理ページ識別子から、チップ番号とダイ番号とブロック番号とワード線番号とページ番号とを特定しても良い。
 図10は、FMPK状態管理テーブル730を示す。
 FMPK状態管理テーブル730は、DMA毎のDMA管理テーブル810を有する。
 或るDMAのDMA管理テーブル810は、当該DMAを示すDMA番号(DMA#)811と、当該DMAのStatus812と、当該DMAに属する全てのチップの内の不良チップ数813と、当該DMAに属する総チップ数814と、当該DMAに属するチップ毎のチップ管理テーブル820とを有する。Status812は、当該DMAが使用可能であれば「Good」を示し、そうでなければ「Bad」を示す。
 或るチップのチップ管理テーブル820は、当該チップを示すチップ番号(Chip#)821と、当該チップのStatus822と、当該チップ内の全てのダイの内の不良ダイ数823と、当該チップ内の総ダイ数824と、当該チップ内のダイ毎のダイ管理テーブル830とを有する。Status822は、当該チップが使用可能であれば「Good」を示し、そうでなければ「Bad」を示す。
 或るダイのダイ管理テーブル830は、当該ダイを示すダイ番号(Die#)831と、当該ダイのStatus832と、当該ダイ内の全てのブロックの内の不良ブロック数833と、当該ダイ内で論理ページに割り当て済みのブロックの数である割当ブロック数834と、当該ダイ内の総ブロック数835と、当該ダイ内のブロック毎のブロック管理テーブル840とを有する。Status832は、当該ダイが使用可能であれば「Good」を示し、使用不可能であれば「Bad」を示し、当該ダイが後述する診断対象ダイであれば「診断中」を示す。
 或るブロックのブロック管理テーブル840は、当該ブロックを示すブロック番号(Block#)841と、当該ブロックのStatus842と、当該ブロック内の総ページ数843と、当該ブロック内の全てのページの内でデータを格納している(使用中)ページの数であるIn-use844と、使用中ページの内の有効ページの数であるValid845と、使用中ページの内の無効ページの数であるInvalid846とを有する。Status842は、当該ブロックが使用可能で且つデータを格納していれば「割り当て済(Allocated)」を示し、当該ブロックが使用可能で且つデータを格納していなければ「未割り当て」を示す。更にStatus842は、当該ブロックに障害がある場合に「故障」を示し、当該ブロックの書き換え回数が閾値を超過した場合に「寿命」を示す。
 本実施例では、主にダイ、プレーン、ブロックを単位とする障害を例として説明するが、DMA、チップなど、他の物理的な単位での障害の発生を管理してもよい。
 図11は、障害アドレスリスト750を示す。
 FM-CTL500は、FMPK300内で障害が発生した物理記憶領域である障害部位を検出し、障害部位に対応する論理アドレス領域(論理アドレス範囲)を示す障害アドレスリスト750を生成し、ストレージコントローラ400へ送信する。障害アドレスリスト750は、FMPK300において、障害が発生した物理記憶領域に対応するFMPK論理アドレス空間内の論理アドレス領域である障害領域毎のエントリを有する。或るエントリは、当該障害領域の開始LBAである障害アドレス751と、当該障害領域の長さであるレングス752とを有する。
 物理記憶領域に障害が発生すると、その物理記憶領域に格納されたデータが消失する。FM-CTL500は、消失したデータを復元することができない。このため、FM-CTL500が、障害が発生した物理記憶領域に対応する論理アドレス領域を特定し、ストレージコントローラ400に通知することで、ストレージコントローラ400はRAIDを用いて他のFMPK300から、消失したデータを復元することができる。ストレージコントローラ400は、物理記憶領域の障害を認識できないため、FM-CTL500から論理アドレス領域を取得できない場合は、FMPK300内の全データを復元する必要がある。FMPK300の容量が大きいほど、データの復元処理には時間がかかり、その間は冗長性が低下した状態となる。しかし、本実施例のようにFM-CTL500がストレージコントローラ400に特定の論理アドレス領域を通知することで、適切な範囲のデータを復元することができるため、短時間でデータの復元処理を完了することができ、冗長性が低下する時間を短縮することでストレージシステムの信頼性が向上する。
 以下、ストレージシステム100の動作について説明する。
 ここでは、或るFMPK300のFM-CTL500によりアンコレクタブルエラーが検出された場合に、FM-CTL500がストレージコントローラ400へ障害領域を通知する処理である障害通知処理について説明する。以後、アンコレクタブルエラーをUEと呼ぶことがある。FM I/F540は、データに基づいてECC(Error Correction Code)を生成するECC生成回路と、ECCによりデータ損失を検出するデータ損失検出回路と、ECCによりデータを訂正するECC訂正回路とを含む。FM I/F540は、データをメモリモジュール310へ書き込むときに、そのデータにECCを付加して書き込み、そのデータを読み出したときの誤りをECCに基づいて訂正する。例えば、一つのページ583は、予め定められた数のECC CW(Code Word)を格納する。一つのECC CWは、データと、それに基づくECCとを含む。この場合の誤り訂正能力は、一つのECC CW内の訂正可能な障害ビット数である訂正可能障害ビット数で表される。ECCの誤り訂正能力は、ECCの種類によって異なる。読み出されたECC CW内の障害ビット数が訂正可能障害ビット数以下である場合、FM I/F540は、ECC CW内の障害ビットを訂正する(コレクタブルエラー)。読み出されたECC CW内の障害ビット数が訂正可能障害ビット数を超える場合、即ち、読み出されたエラーが誤り訂正能力を超える場合、FM I/F540は、UEが発生したと判定する。
 図12は、障害通知処理の第一処理を示す。図13は、障害通知処理の第一処理の後の第二処理を示す。
 S110においてストレージコントローラ400は、ホスト200からのコマンド等に応じて、リード要求をFMPK300へ送信する。その後、S120においてFM-CTL500は、ページマッピング管理テーブル720、リード要求により指定された指定LBAに対応する物理ページからデータをリードする。ここでは、FM-CTL500がリードによりUEを検出したとする。その後、S140においてFM-CTL500は、UEを示す通常UE応答を、ストレージコントローラ400へ送信する。その後、S150においてストレージコントローラ400は、通常UE応答を受信し、UEを認識する。ここでストレージコントローラ400は、所定の時間内に当該FMPK300から受信した通常UE応答の数をカウントする。ストレージコントローラ400は、通常UE応答の数が所定のUE数閾値を超えた場合、当該FMPK300を切り離し、当該FMPK300の代わりに予め用意されたスペアFMPK300を用いてRGを再構築する。
 その後、S160においてFM-CTL500は、UEが発生した物理ページをUEページとして特定し、UEページを含むダイ571を、診断部位として選択し、診断部位を診断するダイ診断処理を開始する。ここでFM-CTL500は、FMPK状態管理テーブル730において診断部位のダイのStatus832を「診断中」に変更する。
 なお、FM-CTL500は、リクラメーション等の内部処理中にUEを検出した場合にも、ダイ診断処理を開始する。また、ストレージコントローラ400がFMPK300の診断のために、定期的に所定の規則でページを選択し、そのページを指定するリード要求をFMPK300へ送信しても良い。
 ダイ診断処理中のS210において、ストレージコントローラ400が、リード要求を送信したとする。S220においてFM-CTL500は、リード要求を受信し、リード要求により指定された指定LBAに対応する物理ページからデータをリードする。もし、FM-CTL500が正常にリードを完了した場合、正常応答をストレージコントローラ400へ送信する。ここでは、FM-CTL500がリードによりUEを検出したとする。その後、S230においてFM-CTL500は、当該物理ページが診断部位に含まれるか否かを判定する。ここでFM-CTL500は、FMPK状態管理テーブル730において、当該物理ページを含むダイのStatus832が「診断中」であることを示す場合、当該物理ページが診断部位に含まれると判定する。例えば、ストレージコントローラ400が前述のUEの認識に応じてリトライによるリード要求を送信した場合、当該物理ページが診断部位に含まれることになる。
 S230の結果、当該物理ページが診断部位に含まれると判定された場合(Yes)、S240においてFM-CTL500は、UEをカウントしないことをストレージコントローラ400に要求する特殊UE応答を、ストレージコントローラ400へ送信する。その後、S250においてストレージコントローラは、特殊UE応答を受信し、UEを認識するが、このUEをカウントしない。
 S230の結果、当該物理ページが診断部位に含まれないと判定された場合(No)、S340においてFM-CTL500は、UEを示す通常UE応答を、ストレージコントローラ400へ送信する。その後、S350においてストレージコントローラ400は、通常UE応答を受信し、UEを認識し、当該FMPK300のUEをカウントする。その後、S360においてFM-CTL500は、新たなUEページ及び新たな診断部位を決定し、新たな診断部位に対するダイ診断処理を開始する。ダイ診断処理においてFM-CTL500は、障害部位を検出し、障害部位に対応するLBAを示す障害アドレスリスト750を生成する。
 S160で開始されたダイ診断処理が完了した後、S410においてストレージコントローラ400がリード又はライトの要求を当該FMPK300へ送信したとする。その後、S420においてFM-CTL500は、このI/O要求を受信し、このI/O要求に応じた処理を行う。その後、S430においてFM-CTL500は、この処理の結果と、ダイ診断処理の結果とを示す応答を、ストレージコントローラ400へ送信する。なお、FM-CTL500は、I/O要求以外に、診断コマンド等、ストレージコントローラ400からの他のコマンドに応じてダイ診断処理の結果をストレージコントローラ400へ送信しても良い。
 その後、S440においてストレージコントローラ400は、この応答を受信し、診断結果があることを認識し、障害アドレスリスト750を要求する障害アドレスリスト要求をFM-CTL500へ送信する。その後、FM-CTL500がこの障害アドレスリスト要求を受信すると、S450においてFM-CTL500は、ダイ診断処理により検出された障害部位に対応する障害領域のLBAを示す障害アドレスリスト750をストレージコントローラ400へ送信する。その後、FM-CTL500は、送信された障害アドレスリスト750を削除する。
 その後、S460において、ストレージコントローラ400は、障害アドレスリスト750を受信し、障害アドレスリスト750に基づいて消失したデータを格納する障害領域(LBAの範囲)を認識し、当該FMPK300を含むRGを用いたコレクションにより消失したデータを復元し、復元されたデータを当該障害領域へ書き戻すライト要求と復元されたデータとをFM-CTL500へ送信する。その後、S470においてFM-CTL500は、このライト要求と復元されたデータとを受信し、復元されたデータを、指定されたLBAへ書き込み、そのライト要求に対する応答をストレージコントローラ400へ送信する。ここでFM-CTL500は、指定されたLBAに正常な物理ページを割り当て、復元されたデータをその物理ページへ書き込む。
 ストレージコントローラ400は、障害アドレスリスト750に示された全てのデータの復元及び書き戻しが完了するまで、S460及びS470を繰り返す。
 以上の障害通知処理によれば、FMPK300は、UEの検出に応じて、UEが発生したダイを診断することができる。また、ストレージコントローラ400は、FM-CTL500から障害アドレスリスト750を受信することにより、UEにより消失したデータを、RGを用いて回復し、回復されたデータをFMPK300へ書き戻すことができる。
 また、ストレージコントローラ400がリトライ等によりFMPK300に対し診断部位へのリード要求を発行しても、当該FMPKが特殊UE応答をストレージコントローラ400へ返すことにより、ストレージコントローラ400による当該FMPKのUE数のカウントを防ぐ。これにより、ストレージコントローラ400がダイ診断処理中のUEにより当該FMPKを切り離すことを防ぐことができ、当該FMPKの使用を継続することができる。また、ストレージコントローラ400は、当該FMPKがダイ診断処理中であっても、当該FMPK内の診断部位以外へアクセスすることができる。
 また、SCSIのようにストレージコントローラ400からの要求に応じてFMPK300が応答するプロトコルを用いる場合、FMPK300は、他の要求にダイ診断処理の結果を追加することにより、ダイ診断処理の結果をストレージコントローラ400へ通知することができる。なお、ストレージコントローラ400及びFMPK300が、FICON(Fiber Connection)のようにFMPK300からストレージコントローラ400へ通知を送ることができるプロトコルを用いる場合、FMPK300は、ストレージコントローラ400からの要求を待たずにダイ診断処理の結果をストレージコントローラ400へ通知しても良い。
 図14は、ダイ診断処理を示す。
 前述のS160、S360により、FM-CTL500は、ダイ診断処理を開始する。
 S520においてFM-CTL500は、UEページを含むブロックをUEブロックとして特定し、UEブロック内の全ページに格納されているデータをリードする。その後、S530においてFM-CTL500は、このリードにより、UEが発生したが否かを判定する。
 S530の結果、UEが発生していないと判定された場合(No)、S560においてFM-CTL500は、UEブロックを不良ブロックとして登録し、このフローを終了する。ここでFM-CTL500は、FMPK状態管理テーブル730において、UEブロックに対応するブロック管理テーブル840内のStatus842を「故障」に変更し、そのブロックを含むダイに対応するダイ管理テーブル830内の不良ブロック数833に1を加える。
 S530の結果、UEが発生したと判定された場合(Yes)、S550においてFM-CTL500は、UEブロック内でUEが発生したページを不良ページとして特定し、不良ページがワード線条件を満たすか否かを判定する。ここで、ワード線条件は、不良ページが、互いに隣接する2個のワード線の範囲だけに分布していることである。この場合、FM-CTL500は、UEの原因を前述のパーティクルと推定し、障害部位を特定することができる。なお、ワード線条件は、不良ページが、連続する3個のワード線の範囲だけに分布していることであっても良い。
 S550の結果、不良ページがワード線条件を満たすと判定された場合(Yes)、S560においてFM-CTL500は、UEブロックを不良ブロックとしてFMPK状態管理テーブル730へ登録し、ページマッピング管理テーブル720に基づいてその不良ブロックに対応する障害領域を特定し、その障害領域を障害アドレスリスト750へ登録し、このフローを終了する。
 S550の結果、不良ページがワード線条件を満たさないと判定された場合(No)、S610においてFM-CTL500は、UEブロックを含むプレーンを診断プレーンとして特定し、診断プレーンを診断するプレーン診断処理を行う。その後、S620においてFM-CTL500は、このプレーン診断処理により診断プレーンが不良と判定されたか否かを判定する。
 S620の結果、診断プレーンが不良と判定されなかった場合(No)、S630においてFM-CTL500は、UEブロックと、このプレーン診断処理により検出された追加UEブロックとを、不良ブロックとしてFMPK状態管理テーブル730へ登録し、その不良ブロックに対応する障害領域を特定し、その障害領域を障害アドレスリスト750へ登録し、このフローを終了する。
 S620の結果、診断プレーンが不良と判定された場合(Yes)、S640においてFM-CTL500は、診断プレーンを含むダイを対象ダイと特定し、対象ダイ内の別のプレーンを追加診断プレーンとして特定し、追加診断プレーンを診断するプレーン診断処理を行う。その後、S650においてFM-CTL500は、このプレーン診断処理により追加診断プレーンが不良と判定されたか否かを判定する。
 S650の結果、追加診断プレーンが不良と判定されなかった場合(No)、S660においてFM-CTL500は、診断プレーン内の全ブロックと、このプレーン診断処理により検出された追加UEブロックとを、不良ブロックとしてFMPK状態管理テーブル730へ登録し、その不良ブロックに対応する障害領域を特定し、その障害領域を障害アドレスリスト750へ登録し、このフローを終了する。
 S650の結果、追加診断プレーンが不良と判定された場合(Yes)、S670においてFM-CTL500は、対象ダイを切り離し(閉塞し)、このフローを終了する。
 なお、対象ダイが3個以上のプレーンを含む場合、S640においてFM-CTL500は、診断プレーンに接続された回路を共有するプレーンを追加診断プレーンとして選択しても良い。また、FM-CTL500は、対象ダイ内の3個以上のプレーンのうち、2個のプレーンが不良と判定された場合に、対象ダイを不良と判定しても良い。
 以上のダイ診断処理によれば、FM-CTL500は、対象ダイ内のメモリセルの構造に基づいて、パーティクルを原因とする障害を短時間で推定し、最小限のブロックを障害部位として特定することができる。UEブロックに格納されているデータのリードにより発生したUEの位置が、互いに隣接する2個のワード線の範囲より広く分布している場合のみ、FM-CTL500は、プレーン診断処理を行うことにより、ダイ診断処理の負荷を低減することができる。また、UEブロックに格納されているデータのリードによりUEが発生しない、又は発生したUEの位置が、互いに隣接する2個のワード線の範囲内だけに分布している場合、FM-CTL500は、UEブロックを障害部位として特定することができる。また、プレーンが不良であると判定された場合のみ、FM-CTL500は、そのプレーンを含むダイ内の他のプレーンが不良であるかを判定することにより、短時間でダイを診断することができる。
 図15は、プレーン診断処理を示す。
 前述のS610及びS640において、FM-CTL500は、プレーン診断処理を行う。ここでは、プレーン診断処理の対象として指定された診断プレーン又は追加診断プレーンを対象プレーンと呼ぶ。
 S710においてFM-CTL500は、対象プレーン内で未だ対象ブロックとして選択されていないブロックの中に、選択条件を満たすブロックがあるか否かを判定する。ここで選択条件を満たすブロックは、最後のページまでデータが書き込まれているブロックである。例えば、FM-CTL500は、或るブロックへデータを書き込むとき、先頭のページからページ番号の昇順にデータを書き込む。FMPK状態管理テーブル730の中の、当該ブロックに対応するブロック管理テーブル840において、In-use843が総ページ数843に等しい場合、FM-CTL500は、当該ブロックの最後のページまでデータが書き込まれていると判定する。また、選択条件を満たすブロックは、オープンブロックでない。「オープンブロック」とは、途中の物理ページまでデータが書き込まれている物理ブロック(少なくとも先頭ページにデータがライトされているが空きページが未だ残っている物理ブロック)である。例えば、1つの物理ブロックがN個の物理ページ(Nは2以上の整数)で構成されていて、Xページ目までデータがライトされているとする(Xは2以上の整数且つNより小さい)。この場合、所定数Yを用いると、(X-Y)ページ目~Xページ目(最後にデータがライトされたページから前にYページ程度)の特性が悪くなる(エラー発生率が高くなる)傾向がある(Yは1以上の整数)。全ページにライト済みならこのような特性劣化は発生しない。そして、オープンブロックによる特性劣化は、ダイ全体の特性に依存するものではない。オープンブロックでないブロックを対象ブロックとして選択することにより、プレーン診断処理においてオープンブロックによるエラーの影響を除くことができる。また、1ページも書き込まれていないブロックは、リードできないブロックであり、選択条件を満たさない。
 S710の結果、選択条件を満たすブロックがないと判定された場合(No)、S790においてFM-CTL500は、対象プレーンが不良でないと判定し、このフローを終了する。
 S710の結果、選択条件を満たすブロックがあると判定された場合(Yes)、S730においてFM-CTL500は、選択条件を満たすブロックを対象ブロックとして選択し、対象ブロック内の全ページに格納されているデータをリードする。ここで、複数のブロックが選択条件を満たすと判定された場合、FM-CTL500は、それら複数のブロックの中からランダムに1個のブロックを対象ブロックとして選択する。その後、S740においてFM-CTL500は、このリードによりUEが発生したか否かを判定する。
 S740の結果、UEが発生していないと判定された場合(No)、S790においてFM-CTL500は、対象プレーンが不良でないと判定し、このフローを終了する。
 S740の結果、UEが発生したと判定された場合(Yes)、S750においてFM-CTL500は、対象ブロックを追加UEブロックとして認識する。その後、S760においてFM-CTL500は、追加UEブロックの数が所定の診断ブロック数に達したか否かを判定する。診断ブロック数は例えば、5である。なお、診断ブロック数は、他の数でも良く、2以上M未満の整数Lで表すことができる。対象プレーン内の追加UEブロック数が大きい程、対象プレーンが不良である確率が高くなる。その確率が十分高くなる追加UEブロック数が、診断ブロック数として予め決定される。
 S760の結果、追加UEブロックの数が診断ブロック数に達していないと判定された場合(No)、FM-CTL500は、処理をS710へ移行させる。
 S760の結果、追加UEブロックの数が診断ブロック数に達したと判定された場合(Yes)、S770においてFM-CTL500は、対象プレーンが不良であると判定し、このフローを終了する。
 対象プレーンが不良である場合は例えば、対象プレーンに接続されているロウデコーダ573やセンスアンプ574の故障により、対象プレーンを制御することができなくなった場合である。対象ダイが不良である場合は例えば、対象ダイ内の2個のプレーン572に接続された周辺回路575の故障により、対象ダイを制御することができなくなった場合である。
 以上のプレーン診断処理によれば、FM-CTL500は、対象プレーン内で選択条件を満たすブロックを選択し、そのブロックに格納されているデータをリードし、UEが発生したブロックの数が診断ブロック数に達した場合に、対象プレーンを不良と判定することにより、プレーン572内の全てのページに格納されているデータをリードすることなく、プレーン572の不良を検出することができる。これにより、プレーン572内の全てのページに格納されているデータをリードすることに比べ、診断の時間を抑え、FM-CTL500の負荷を抑え、FMPK300の性能低下を防ぐことができる。また、対象プレーンからブロックを選択し、診断ブロック数のブロックでUEを検出した場合に、対象プレーンを不良と判定することにより、対象プレーンの診断の精度を保つことができる。
 ダイ診断処理において不良ブロックが特定された場合、FM-CTL500は、FMPK状態管理テーブル730内の当該ブロックのブロック管理テーブル840のStatus842を「Bad」に変更し、当該ブロックを含むダイのダイ管理テーブル830の不良ブロック数833を増加させる。ダイ診断処理において不良ダイが特定された場合、FM-CTL500は、FMPK状態管理テーブル730内の当該ダイのダイ管理テーブル830のStatus832を「Bad」に変更し、当該ダイを含むFMチップのチップ管理テーブル820の不良ダイ数823を増加させる。
 ダイ診断処理の後、FM-CTL500は、不良ブロックと登録されたブロック内の物理ページを、論理ページに割り当てない。これにより、不良ブロックの増加に応じてFMPK300の更新領域が減少するものの、FMPK300は、全体が閉塞することなく、継続して動作することができる。
 もし、FM-CTL500が、UEが発生したプレーンやダイに格納されているデータの全体をリードして診断する場合、診断中に、ストレージコントローラ400からのI/O要求により障害部位を使用することや、診断の負荷により他の部位へのI/O性能が低下することが考えられる。本実施例によれば、FM-CTL500は、或るダイでUEを検出した場合に、そのダイ内の全てのページに格納されているデータをリードすることなく、ダイ内の障害部位を特定することができる。また、FM-CTL500は、UEを検出した場合に、ブロック、プレーン、ダイの単位で障害部位を特定し、その障害部位だけを切り離すことができる。また、FM-CTL500は、ダイ571内の、ロウデコーダ573、センスアンプ574、及び周辺回路575等の回路の故障を直接検出する機能を持たなくても、ダイ診断処理により、それらの回路の故障を原因とする障害部位を特定することができる。
 なお、FM-CTL500は、ライト(プログラム)要求に対するステータスエラー等のエラーや、消去時のエラーに応じて、ダイ診断処理を行っても良い。ストレージコントローラ400は、ステータスエラー等の応答により、障害を検出するが、ホスト200によりリトライでライトすることができるため、ライトデータを消失しない。また、ブロックの消去時にエラーが発生した場合も、有効なデータを消失することはない。一方、リード時のUEは、前述したように、データを消失するが、障害通知処理によりそのデータを回復することができる。
 本実施例のストレージシステム100の構成は、実施例1のストレージシステム100の構成と同様である。以下、主に実施例1との相違点について説明する。本実施例のストレージシステム100は、FMPK300内の障害の発生に応じてFMPK300の容量を変更する。
 フラッシュメモリにおいては、更新領域の容量が大きいほど、リクラメーションの頻度が小さくなり、性能が維持される。ただし、更新領域の容量が大きいと、ユーザデータを格納する領域(ユーザ領域)の容量は小さくなる。つまり、ユーザ領域の容量と更新領域の容量の比率によって、ストレージコントローラ400がFMPK300に格納可能なデータ容量と性能の関係が決まることになる。以下の説明及び図面において、ユーザ領域の容量をユーザ容量と呼び、更新領域の容量を更新容量と呼び、ユーザ容量と更新容量の合計を物理容量と呼ぶことがある。本実施例において、障害の発生に伴いユーザ容量及び更新容量は変化する。本実施例では、ユーザ容量と更新容量の比率を一定に保って、容量を変化させる。これにより、容量を削減した場合であっても、性能を維持することができる。
 以下、ストレージシステム100における記憶領域の関連付けについて説明する。
 図16は、ストレージシステム100におけるRG及びLU(Logical Unit)の構成を示す。
 ストレージコントローラ400は、複数のPDEVを用いてRGを構築する。この図の例において、ストレージコントローラ400は、PDEV#0~#15の中から、PDEV#0~#3を用いて、RG#0を構築し、PDEV#8~#15を用いて、RG#1を構築する。各RGは、複数のストライプを有する。各ストライプは、複数のPDEVに跨り、複数のデータと複数のデータから生成されるパリティを含む。例えばRAID5の場合、複数のPDEVにおけるデータとパリティの配置はストライプ毎に異なる。3D+1PのRAID5の構成であれば、1つのストライプには3つのデータと3つのデータから生成されるパリティとが含まれる。ストレージコントローラ400が、パリティの生成を行う。更にストレージコントローラ400は、RG内の記憶領域をLUに割り当てる。この図の例において、ストレージコントローラ400は、RG#0をLU#0、#1に割り当て、RG#1をLU#2に割り当てる。
 図17は、ストレージシステム100におけるLU及びVVOL(Virtual Volume:仮想ボリューム)の構成を示す。
 ストレージコントローラ400は、LUを所定のサイズの論理記憶領域である実ページに分割して管理する。ストレージコントローラ400は、実ページをプールに登録して管理する。ストレージコントローラ400は、ホスト計算機200に対してVVOLを提供する。ストレージコントローラ400は、VVOL内の仮想的なアドレス空間を所定のサイズの仮想記憶領域である仮想ページに分割して管理する。ストレージコントローラ400は、Thin Provisioning機能により、ホスト計算機200からの書き込み要求に応じて、書き込み要求で指定されたVVOL内のアドレスの範囲が含まれる仮想ページへ、プールから実ページを割り当てる。ストレージコントローラ400は、実ページの仮想ページへの割り当てを解除すると、その実ページをプールへ戻す。この図の例において、ストレージコントローラ400は、LU#0~#2内の実ページをプール#0、#1に登録する。更にストレージコントローラ400は、プール#0、#1内の実ページをVVOL#0、#1内の仮想ページに割り当てる。
 以下、ストレージシステム100により管理される情報について説明する。
 図18は、ストレージコントローラ400のメモリ420に格納される情報を示す。
 メモリ420は、ストレージ制御プログラム610と、RG管理テーブル620と、LU管理テーブル630と、PDEV管理テーブル640と、仮想ページマッピング管理テーブル650と、実ページ状態管理テーブル660とを格納する。
 ストレージ制御プログラム610は、ストレージシステム100の制御をCPU410に実行させるためのプログラムである。
 図19は、RG管理テーブル620を示す。
 RG管理テーブル620は、RG毎のエントリを有する。或るRGのエントリは、当該RGを示すRG番号(RG#)621と、当該RGに属するPDEVを示すPDEV番号(PDEV#)622と、当該RGのRAIDレベル623と、当該RGに属するPDEVの種別であるPDEV種別624と、当該RGに属するPDEVのユーザ容量の最小値であるPDEV最小容量625とを有する。
 図20は、LU管理テーブル630を示す。
 LU管理テーブル630は、LU毎のエントリを有する。或るLUのエントリは、当該LUを示すLU番号(LU#)631と、当該LUに割り当てられているRGを示すRG番号(RG#)632と、当該LUのストライプサイズ633と、当該RG内の論理アドレス空間で当該LUの開始アドレスであるLU開始アドレス634と、当該LUのサイズであるLUサイズ635とを有する。
 図21は、仮想ページマッピング管理テーブル650を示す。
 仮想ページマッピング管理テーブル650は、仮想ページ毎のエントリを有する。或る仮想ページのエントリは、当該仮想ページが属するVVOLを示すVVOL番号(VVOL#)651と、当該仮想ページを示す仮想ページID652と、当該仮想ページに割り当てられている実ページを示す実ページID653とを有する。当該仮想ページに実ページが割り当てられていない場合、実ページID653は「未割り当て」であることを示す。仮想ページID652は、ストレージシステム100内でユニークな識別子である。実ページID653は、ストレージシステム100内でユニークな識別子である。
 図22は、実ページ状態管理テーブル660を示す。
 実ページ状態管理テーブル660は、実ページ毎のエントリを有する。或る実ページのエントリは、当該実ページが属するプールを示すプール番号(POOL#)661と、当該実ページを示す実ページID662と、当該実ページの状態663とを有する。状態663は、仮想ページに割り当てられている(使用中)か否かを示す。
 図23は、PDEV管理テーブル640を示す。
 PDEV管理テーブル640は、PDEV毎のエントリを有する。或るPDEVのエントリは、当該PDEVを示すPDEV番号(PDEV#)641と、当該PDEVの現在のユーザ容量である現在ユーザ容量642と、当該PDEVの初期のユーザ容量である初期ユーザ容量643と、当該PDEVの論理アドレス空間(FMPK論理アドレス空間)におけるユーザ領域の開始アドレス644と、当該PDEVの論理アドレス空間におけるユーザ領域の終端アドレス645とを有する。FMPK論理アドレス空間は例えば、LBA(Logical Block Address)で表される。
 図24は、実施例2のFM-CTL500のメモリ520に格納される情報を示す。
 実施例1のメモリ520に格納される情報と比較すると、本実施例のメモリ520は更に、ユーザ容量比率741と、物理容量742と、現在ユーザ容量743と、初期ユーザ容量744と、ユーザ容量下限745とを格納する。ユーザ容量比率741と、物理容量742と、初期ユーザ容量744と、ユーザ容量下限745とは予め定められ、メモリ520に格納される。現在ユーザ容量743は、動作開始時には初期ユーザ容量744と等しいが、FMPK300内の記憶領域に障害が発生すると減少する。ユーザ容量比率741は、障害の無い記憶領域(ユーザ領域及び更新領域)の全容量に対する現在ユーザ容量743の比率である。本実施例において、ユーザ容量比率741は、一定である。
 以下、ストレージシステム100の動作について説明する。
 図25は、現在ユーザ容量取得処理を示す。
 ストレージコントローラ400は、対象FMPKの現在ユーザ容量を取得する現在ユーザ容量取得処理を実行する。ストレージコントローラ400は、FMPK300をストレージシステム100へインストールする場合に、そのFMPK300を対象FMPKとして現在ユーザ容量を取得する。ストレージコントローラ400は、定期的に現在ユーザ容量更新処理を行ってもよい。
 ストレージコントローラ400は、対象FMPKへ容量問い合わせコマンドを送信することにより、対象FMPKから現在ユーザ容量を受信し(S4110)、受信された現在ユーザ容量によりPDEV管理テーブル640において対象FMPKの現在ユーザ容量642を更新し(S4120)、この処理を終了する。
 FM-CTL500は、ストレージコントローラ400から容量問い合わせコマンドを受信すると(S4210)、メモリ520内の現在ユーザ容量743をストレージコントローラ400へ送信し(S4220)、この処理を終了する。以上が現在ユーザ容量取得処理である。
 現在ユーザ容量取得処理によれば、ストレージコントローラ400は、FMPK300の現在ユーザ容量を取得することができる。
 図26は、RG作成処理を示す。
 ストレージコントローラ400は、複数のFMPK300を用いて新たなRGを作成する場合に、複数のFMPK300の夫々についてRGに用いる容量を決定し、RGを作成するRG作成処理を実行する。
 ストレージコントローラ400は、PDEV管理テーブル640から、RGに属するFMPK300の現在ユーザ容量642の最小値を検出して、当該RGのPDEV最小容量とする(S4310)。その後、ストレージコントローラ400は、当該RGに属する全てのFMPK300の夫々の内でPDEV最小容量分の論理アドレス領域を用いて当該RGを作成し、そのPDEV最小容量を、RG管理テーブル620内の当該RGのPDEV最小容量625へ入力し(S4320)、この処理を終了する。以上がRG作成処理である。ストレージコントローラ400は、RGに属する複数のPDEVに対して、データをストライピングして格納する。ストライピングしてデータを格納するためには、RG内の各PDEVに同じサイズの空き容量が必要となる。つまり、あるPDEVに空き容量がなければ、RG内の他のPDEVに空き容量があってもデータを格納することはできない。よって、あるPDEVのユーザ容量が削減されると、RG内の他のPDEVに空き容量があっても、RGとしてはデータを格納できない。このため、ストレージコントローラ400は、PDEV最小容量にあわせて、RGを作成する。
 RG作成処理によれば、RGに属するFMPK300の現在ユーザ容量に合わせて、適切な容量のRGを作成することができる。
 ストレージコントローラ400は、FMPK300へのリード要求時に、実施例1の障害通知処理により、障害部位を検出しても良いし、定期監視処理により障害部位を検出しても良い。
 図27は、定期監視処理を示す。
 ストレージコントローラ400は、定期的に、FMPK300の一つを対象FMPKとして選択し、対象PDEVの状態を取得する定期監視処理を実行する。ストレージコントローラ400は、定期的に、全PDEVのそれぞれに対して、定期監視処理を実行する。
 ストレージコントローラ400は、実施例1の障害アドレスリスト要求と同様のPDEV監視コマンドを対象FMPKへ発行する(S2110)。PDEV監視コマンドを受信したFM-CTL500は、PDEV監視コマンドの応答として障害アドレスリスト750をストレージコントローラ400へ送信する。その後、ストレージコントローラ400は、対象FMPKから障害アドレスリスト750を受信する(S2120)。その後、ストレージコントローラ400は、障害アドレスリスト750に基づいて障害を検出したか否かを判定する(S2130)。障害を検出していないと判定された場合(S2130:No)、ストレージコントローラ400は、この処理を終了する。障害を検出したと判定された場合(S2130:Yes)、ストレージコントローラ400は、対象FMPKを障害FMPKと認識し、障害FMPKで失われたデータを回復するデータ回復処理を実行し(S2140)、障害FMPKが属するRGを障害RGと認識し、障害RGに属するFMPK300のユーザ容量を削減する容量縮退処理を実行し(S2150)、この処理を終了する。データ回復処理及び容量縮退処理については後述する。以上が定期監視処理である。
 なお、FM-CTL500は、障害が発生し、ダイ診断処理により障害アドレスリスト750が作成された場合、実施例1と同様、Readコマンド及びWriteコマンドの応答としてUA(Unit Attention)をストレージコントローラ400へ送信することにより、障害が発生していることをストレージコントローラ400に知らせても良い。この場合、ストレージコントローラ400は、PDEV監視コマンドにより障害アドレスリスト750を取得しても良い。また、ストレージコントローラ400とFM-CTL500に予め定められたルールに従って、FM-CTL500が障害領域をストレージコントローラ400へ通知しても良い。例えば、FM-CTL500は、予め定められたサイズである報告サイズ(例えば256kB)の論理アドレス領域毎に障害を検出し、障害が検出された論理アドレス領域の開始アドレス(LBA)だけをストレージコントローラ400へ送信する。開始アドレスを受信したストレージコントローラ400は、開始アドレスにより特定される報告サイズの論理アドレス領域のデータを回復する。
 図28は、データ回復処理を示す。
 前述のS2140において、ストレージコントローラ400はデータ回復処理を実行する。
 ストレージコントローラ400は、障害FMPKから取得された障害アドレスリスト750の先頭から順に、一つのエントリを選択し、選択されたエントリから障害領域を認識する(S2510)。その後、ストレージコントローラ400は、RG管理テーブル620に基づいて、障害RGに属する障害FMPK以外のFMPK300を特定し、LU管理テーブル630に基づいて、障害領域に対応するストライプを特定し、特定されたストライプの特定されたFMPK300のデータ又はパリティを読み出しRAID計算を実行することにより、障害領域で失われたデータ(障害データ)を再生成し、再生成されたデータを障害FMPKの障害領域へ書き込む(S2520)。この処理に対して障害FMPKのFM-CTL500は、障害領域に正常な物理記憶領域を割り当て、ストレージコントローラ400からのデータをその物理記憶領域へ書き込む。その後、ストレージコントローラ400は、取得された障害アドレスリスト750の全てのエントリの選択が終了したか否かを判定する(S2530)。全てのエントリの選択が終了したと判定された場合(S2530:Yes)、ストレージコントローラ400は、処理を終了する。そうでない場合、ストレージコントローラ400は、処理をS2510へ移行させる。以上がデータ回復処理である。
 データ回復処理によれば、障害FMPKの中の障害が発生した部分に格納されていたデータを回復させることができる。FM-CTL500は、障害の発生した論理アドレス領域を特定してストレージコントローラ400に通知することで、ストレージコントローラ400は特定されたアドレス範囲に関するデータの回復を行うことができる。これにより、アドレス範囲が特定されない場合は、障害FMPK内の全論理アドレス領域のデータを回復する必要があるため、本データ回復処理ではデータ回復の時間を短縮できる。
 図29は、容量縮退処理を示す。
 前述のS2150において、ストレージコントローラ400は容量縮退処理を実行する。
 ストレージコントローラ400は、障害RGで削減される論理アドレス領域内のデータを移動させるデータ移動処理を実行し(S2620)、障害RGに属するFMPK300の容量を変更するFMPK容量変更処理を実行し(S2630)、この処理を終了する。データ移動処理及びFMPK容量変更処理については後述する。以上が容量縮退処理である。
 図30は、データ移動処理を示す。
 前述のS2620において、ストレージコントローラ400はデータ移動処理を実行する。
 ストレージコントローラ400は、障害FMPKから削減される論理アドレス領域である削減領域を決定する(S2710)。ここでストレージコントローラ400は、削減領域のサイズである削減サイズと、削減領域の開始アドレス(LBA)とを決定する。削減領域は、例えば、PDEV管理テーブル640における各FMPK300の終端アドレス645から前の削減サイズ分のアドレス範囲である。つまり、容量を削減するとは、ストレージコントローラ400が使用可能なFMPK300の論理アドレス領域を制限することである。例えば、ストレージコントローラ400は、正常領域容量の問い合わせを障害FMPKへ送信する。正常領域容量の問い合わせを受信したFM-CTL500は、現在の不良部分を除いた物理記憶領域の容量(物理容量742)に、ユーザ容量比率を乗じた値を正常領域容量として算出し、正常領域容量をストレージコントローラ400へ送信する。不良部分は例えば、Bad Block(不良ブロック)である。なお、本実施例におけるFMPK300は、ダイ内の全ての割り当て済みブロックがBad Blockである場合にそのダイを閉塞し、ダイ内の割り当て済みブロックの一部がBad Blockであってもそのダイを閉塞しない。従って、FMPK300において、全てのBad Blockの容量は、閉塞された部分の容量と異なる場合がある。そこで、不良部分は閉塞された部分であっても良い。正常領域容量を受信したストレージコントローラ400は、障害FMPKの現在ユーザ容量642から正常領域容量を減じた値を削減サイズとして算出する。
 その後、ストレージコントローラ400は、RG管理テーブル620とLU管理テーブル630とPDEV管理テーブル640とに基づいて、障害FMPKを含むRG内で削減領域に対応するストライプの論理アドレス領域であるRG削減範囲を特定し、RG削減範囲内の全ての実ページの一覧を生成する(S2720)。RG削減範囲のサイズは、RG管理テーブル620における障害RGのRAIDレベル623によって異なる。例えば、障害RGのRAIDレベル623が0、5、又は6である場合、RG削減範囲のサイズは、削減サイズにデータディスク数(障害RGに属する全ディスク数からパリティディスク数を除いた値)を乗じた値になる。また、障害RGのRAIDレベル623が1である場合、RG削減範囲のサイズは、削減サイズになる。
 ストレージコントローラ400は、RGの記憶領域を実ページ単位で管理しているため、実ページ単位でRGのサイズを削減する。ここで、ストレージコントローラ400は、単にFMPK300から通知された障害領域のサイズを削減サイズとするのではなく、実ページの情報に基づいて削減サイズを決定する。障害領域のサイズが実ページ単位で端数を含んでいれば、ストレージコントローラ400は、障害領域のサイズを実ページの整数倍に切り上げた削減サイズを算出する。ストレージコントローラ400は、実ページの情報を管理しているが、FMPK300は、実ページの情報を管理していない。従って、ストレージコントローラ400は、後述するFMPK容量変更処理により、削減サイズをFMPK300へ通知する必要がある。
 その後、ストレージコントローラ400は、RG削減範囲内の実ページの一覧から先頭の実ページを選択する(S2730)。その後、ストレージコントローラ400は、実ページ状態管理テーブル660に基づいて、当該実ページが使用中である(仮想ページに割り当てられている)か否かを判定する(S2740)。使用中でないと判定された場合(S2740:No)、ストレージコントローラ400は、処理をS2760へ移行させる。実ページが仮想ページに割り当てられていなければ、データをコピーする必要がないためである。使用中であると判定された場合(S2740:Yes)、ストレージコントローラ400は、Thin Provisioning機能により、当該実ページを張替え元実ページとして別の実ページに張り替える実ページ張替え処理を実行する(S2750)。実ページ張替え処理については後述する。その後、ストレージコントローラ400は、実ページの一覧の全ての実ページの選択を終了したか否かを判定する(S2760)。RG削減範囲内の全ての実ページの選択を終了していない場合(S2760:No)、ストレージコントローラ400は、実ページの一覧から次の実ページを選択し(S2770)、処理をS2740へ移行させる。RG削減範囲内の全ての実ページの選択を終了した場合(S2760:Yes)、ストレージコントローラ400は、この処理を終了する。以上がデータ移動処理である。
 図31は、実ページ張替え処理を示す。
 前述のS2750において、ストレージコントローラ400は、実ページ張替え処理を実行する。
 ストレージコントローラ400は、選択された実ページを張替え元実ページとして決定する(S2810)。その後、ストレージコントローラ400は、実ページ状態管理テーブル660に基づいて、未使用の実ページを含むプールから張替え先実ページを選択する(S2820)。ここでストレージコントローラ400は、プール内の実ページの中で障害RG以外の実ページを選択しても良い。その後、ストレージコントローラ400は、張替え元実ページのデータを張替え先実ページへコピーする(S2830)。
 その後、ストレージコントローラ400は、張替え元実ページを割り当てられていた仮想ページに、張替え先実ページを割り当てる(S2840)。ここでストレージコントローラ400は、仮想ページマッピング管理テーブル650において、張替え元実ページIDを張替え先実ページIDに変更し、実ページ状態管理テーブル660において、張替え元実ページの状態663を未使用に変更し、張替え先実ページの状態663を使用中に変更する。
 その後、ストレージコントローラ400は、対象FMPK内で張替え元実ページに割り当てられている論理ページが未使用であることを通知するPDEV領域解放コマンドを対象FMPKへ発行し(S2850)、この処理を終了する。言い換えれば、このPDEV領域解放コマンドは、対象FMPKが当該論理ページのデータを破棄しても良いことを通知する。以上が実ページ張替え処理である。
 図32は、実ページ張替え処理を模式的に示す。
 この図の実ページ張替え処理において、実ページ#100が張替え元実ページとして選択されており、張替え元実ページは、仮想ページ#002に割り当てられている。その後、プール#0から実ページ#001が張替え先実ページとして選択され、張替え先実ページが仮想ページ#002に割り当てられる。
 実ページ張替え処理によれば、障害RG内で削減される実ページを割り当てられている仮想ページへ、プールから実ページを割り当てることができる。これにより、障害RG内で削減される全ての実ページを未使用の状態に変更することができ、障害RGの容量を削減することができる。
 データ移動処理によれば、現在ユーザ容量と、障害FMPKにおける障害が発生した物理記憶領域の容量とに基づいて、削減領域を決定することができる。また、障害FMPKの削減領域に対応する実ページに格納されているデータを移動させると共に、その実ページを割り当てられていた仮想ページに、移動先の実ページを割り当てる。これにより、ホスト計算機200からその仮想ページに含まれるアドレスへのアクセスを維持することができる。
 図33は、FMPK容量変更処理を示す。
 前述のS2630において、ストレージコントローラ400は、障害RGに属する全てのFMPK300の夫々を対象FMPKとしてFMPK容量変更処理を実行する。
 ストレージコントローラ400は、削減サイズを指定する容量変更コマンドを、対象FMPKへ送信し(S2910)、その応答を受信する(S2920)。その後、ストレージコントローラ400は、PDEV管理テーブル640において対象FMPKのエントリを更新する(S2930)。ここでストレージコントローラ400は、対象FMPKの現在ユーザ容量642において、格納されている値から削減サイズを減じた値へ変更する。更にストレージコントローラ400は、終端アドレス645において、格納されている値から削減サイズを減じた値へ変更する。
 その後、ストレージコントローラ400は、RG管理テーブル620及びLU管理テーブル630を更新し(S2940)、この処理を終了する。ここでストレージコントローラ400は、更新した現在ユーザ容量642に基づいて、RG管理テーブル620のPDEV最小容量625と、LU管理テーブル630のLUサイズ635とを更新する。これにより、ページ張替え処理でプールに戻された張替え元実ページは、プールから削除される。
 FM-CTL500は、ストレージコントローラ400から容量変更コマンドを受信すると(S3010)、メモリ520内の現在ユーザ容量743から、容量変更コマンドに指定された削減サイズを減じた値を削減後ユーザ容量として算出し、削減後ユーザ容量が、メモリ520内のユーザ容量下限745より大きいか否かを判定する(S3020)。削減後ユーザ容量がユーザ容量下限745より大きいと判定された場合(S3020:Yes)、FM-CTL500は、現在ユーザ容量743の値を削減後ユーザ容量に変更し、容量変更コマンドに対して成功を示す応答をストレージコントローラ400へ送信し(S3030)、この処理を終了する。そうでない場合(S3020:No)、FM-CTL500は、容量変更コマンドに対して失敗を示す応答をストレージコントローラ400へ送信し(S3030)、この処理を終了する。ストレージコントローラ400は、FMPK300から失敗を示す応答を受信した場合、そのFMPK300の全体を閉塞する。つまり、FMPK容量変更処理によりFMPK300のユーザ容量がユーザ容量下限745以下になった場合、そのFMPK300は閉塞する。以上がFMPK容量変更処理である。
 一般に、ホスト計算機200は、アクセス先のボリュームの容量を変更する場合、業務を停止して、ボリュームを再認識する必要がある。本実施例では、FMPKの容量が削減された場合は、プールの容量を減少させる。より具体的には、プールに含まれる実ページの数を減少させる。仮想ボリュームにはプールから記憶領域が割当てられるが、仮想ボリュームの容量が変更されることはない。これにより、ホスト計算機200は、FMPK内部の部分的な障害による容量削減を認識する必要がなく、仮想ボリュームへのアクセスを継続することができる。
 以後の説明及び図面において、障害RGに属する障害FMPK以外のFMPK300を関連FMPKと呼ぶことがあり、障害RGにおいて障害FMPKの削減領域のストライプに対応する関連FMPKの論理アドレス領域を関連領域と呼ぶことがある。FMPK容量変更処理によれば、障害FMPKの削減領域を削減するだけでなく、関連FMPKの関連領域を削減することができる。
 FMPK容量変更処理によれば、ストレージコントローラ400により削減された現在ユーザ領域を、FMPK300に反映することができる。
 図34は、容量縮退処理を模式的に示す。
 この図は、容量縮退処理前の障害RGにおける実ページの配置と、容量縮退処理後のRGにおける実ページの配置とを示す。容量縮退処理により、障害RGに属するFMPK300において、削減されたユーザ容量より後のアドレス範囲の実ページに格納されているデータは別の実ページに移動する。これにより、障害RGに属する全てのFMPK300において、先頭から現在ユーザ容量までのアドレス範囲が障害RGに割り当てられる。また、障害RGに属する全てのFMPK300において、現在ユーザ容量より後のアドレス範囲は、障害RGに用いられない未使用領域(Free Area)となる。
 容量縮退処理によれば、ストレージコントローラ400は、障害FMPKの削減領域に対応する実ページに格納されているデータを移動し、その実ページを割り当てられている仮想ページへ、プール内の実ページを割り当てることにより、障害FMPKの現在ユーザ容量を削減することができる。また、削減領域及び関連領域を削減することにより、障害RGに属するFMPK300の現在ユーザ容量を合わせ、障害RGの容量を削減することができる。また、FM-CTL500は、ストレージコントローラ400からの指示に従って、現在ユーザ容量を削減することができる。
 本実施例によれば、ストレージコントローラ400は、FMPK300に障害が発生した場合に、障害部分に応じてFMPK300の容量を削減することにより、そのFMPK300全体の閉塞を防ぎ、そのFMPK300の使用を継続することができる。また、FMPK300内のDMA、チップ、ダイ又はプレーンの単位で、障害が発生した部分を閉塞することができる。また、ストレージコントローラ400は、RGに属する複数のFMPK300の一つに障害が発生した場合に、そのRGの容量を削減することにより、そのRGの使用を継続することができる。
 なお、以上の説明では「aaaテーブル」、「aaaリスト」等の表現にて本発明の情報を説明するが、これら情報は、それ以外のデータ構造であるDB、キュー等で表現されていてもよい。そのため、データ構造に依存しないことを示すために「aaaテーブル」、「aaaリスト」、「aaaDB」、「aaaキュー」等について「aaa情報」と呼ぶことがある。
 更に、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ID」という表現を用いるが、これらについてはお互いに置換が可能である。
 以上の説明では「プログラム」を主語として説明を行う場合があるが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポートを用いながら行うため、プロセッサを主語とした説明としてもよい。また、プログラムを主語として開示された処理は管理計算機や情報処理装置が行う処理としてもよい。また、プログラムの一部または全ては専用ハードウェアによって実現されてもよい。
 また、各種プログラムはプログラム配布サーバや、計算機が読み取り可能な記憶メディアによって各計算機にインストールされてもよい。
 以上の実施例における不揮発性半導体メモリは、FM(Flash Memory)である。以上の実施例におけるFMは、ブロック単位で消去が行われ、ページ単位でリード及びライトが行われる種類のFM、典型的にはNAND型のフラッシュメモリである。しかし、FMは、NAND型に代えて他種のフラッシュメモリ(例えばNOR型)でも良い。また、FMに代えて、他種の不揮発性半導体メモリ、例えば、磁気抵抗メモリであるMRAM(Magnetoresistive random access memory)や、抵抗変化型メモリであるReRAM(Resistance random access memory)、強誘電体メモリであるFeRAM(Ferroelectric random access memory)等の半導体メモリや、相変化メモリが使用されても良い。
 記憶デバイスとして、FMPK300等が用いられても良い。不揮発性半導体メモリとして、FMチップ570等が用いられても良い。上位装置として、ストレージコントローラ400又はホスト計算機200等が用いられても良い。デバイスコントローラとして、FM-CTL500等が用いられても良い。記憶回路として、FMチップ570内のプレーン572又はダイ571等が用いられても良い。制御回路として、ダイ571内のロウデコーダ573、センスアンプ574、周辺回路575等が用いられても良い。ブロックとして、ブロック581等が用いられても良い。ページとして、ページ583等が用いられても良い。I/Oとして、リード又はライト等が用いられても良い。診断処理として、ダイ診断処理又はプレーン診断処理等が用いられても良い。特定記憶回路の中の一部のブロックとして、S520のUEブロック又はS720の対象ブロック等が用いられても良い。論理アドレスとして、LBA等が用いられてもよい。物理アドレスとして、物理ページ識別子等が用いられても良い。障害情報として、障害アドレスリスト750等が用いられても良い。特定ブロックとして、UEブロック等が用いられても良い。分布条件として、S540のNoが成立すること等が用いられても良い。半導体基板として、FMチップ570内のダイ571等が用いられ、記憶回路として、ダイ571内のプレーン572等が用いられ、特定記憶回路として、診断プレーン等が用いられ、追加記憶回路として、追加診断プレーン等が用いられても良い。ページ行として、ワード線582に接続されたページ行等が用いられても良い。リード要求に基づくUEをカウントしないことを要求する応答として、特殊UE応答等が用いられても良い。ストレージ装置として、ストレージシステム100等が用いられても良い。ストレージコントローラとして、ストレージコントローラ400等が用いられても良い。論理記憶領域の容量として、ユーザ容量等が用いられても良い。
 本発明は、以上の実施例に限定されるものでなく、その趣旨から逸脱しない範囲で、他の様々な形に変更することができる。
 100…ストレージシステム 200…ホスト計算機 300…FMPK 310…メモリモジュール 400…ストレージコントローラ 410…CPU 420…メモリ 500…FM-CTL 510…CPU 520…メモリ 541…DMAコントローラ 570…FMチップ 571…ダイ 572…プレーン 581…ブロック 582…ワード線 583…ページ
 

Claims (14)

  1.  複数の不揮発性半導体メモリと、
     前記複数の不揮発性半導体メモリに接続され、前記複数の不揮発性半導体メモリへのアクセスの指示を発行する上位装置に接続されるデバイスコントローラと、
    を備え、
     前記複数の不揮発性半導体メモリの夫々は、複数の記憶回路と、複数の制御回路とを含み、 前記複数の記憶回路は、夫々前記複数の制御回路を介して前記デバイスコントローラに接続され、
     前記複数の記憶回路の夫々は、複数のブロックを含み、
     前記ブロックは、データの消去単位であり、
     前記複数のブロックの夫々は、複数のページを含み、
     前記ページは、データのリード/ライト単位であり、
     前記デバイスコントローラが、前記複数の不揮発性半導体メモリの中の特定ページに格納されているデータをリードすることにより、前記特定ページに格納されているデータのアンコレクタブルエラー(UE)を検出した場合、前記デバイスコントローラは診断処理として、前記特定ページを含む記憶回路である特定記憶回路を特定し、前記特定記憶回路の中の一部のブロックに格納されているデータをリードし、前記一部のブロックに格納されているデータのリードの結果に基づいて、前記特定記憶回路内の障害部位を特定する、
    記憶デバイス。
  2.  前記デバイスコントローラは、論理アドレスを指定するI/O要求を前記上位装置から受け付け、前記論理アドレスを、前記複数の不揮発性半導体メモリの中の位置を示す物理アドレスに変換し、前記I/O要求に基づいて前記物理アドレスに対するI/Oを行い、
     前記デバイスコントローラは、前記障害部位に対応する論理アドレスを示す障害情報を、前記上位装置へ通知する、
    請求項1に記載の記憶デバイス。
  3.  前記デバイスコントローラは、前記特定ページを含むブロックである特定ブロックを特定し、前記特定ブロックに格納されているデータをリードし、前記特定ブロックに格納されているデータのリードの結果が所定の分布条件を満たすか否かを判定し、前記特定ブロックに格納されているデータのリードの結果が前記分布条件を満たさないと判定された場合、前記特定ブロックが前記障害部位であると判定する、
    請求項2に記載の記憶デバイス。
  4.  前記特定ブロックに格納されているデータのリードの結果が前記分布条件を満たすと判定された場合、前記デバイスコントローラは、前記特定記憶回路の中の一部のブロックを選択ブロックとして選択し、前記選択ブロックに格納されているデータをリードし、前記選択ブロックに格納されているデータのリードの結果に基づいて、前記特定記憶回路が前記障害部位であるか否かを判定する、
    請求項3に記載の記憶デバイス。
  5.  L個の選択ブロックの夫々が所定の選択条件を満たし、且つ前記L個の選択ブロックの夫々に格納されているデータのリードによりUEが検出された場合、前記デバイスコントローラは、前記特定記憶回路が前記障害部位であると判定し、
     Lは、2以上であり、且つ前記複数のブロックの数より小さい、
    請求項4に記載の記憶デバイス。
  6.  前記選択条件を満たすブロックは、全体に亘ってデータを書き込まれているブロックである、
    請求項5に記載の記憶デバイス。
  7.  前記複数の不揮発性半導体メモリの夫々は、複数の半導体基板を含み、
     前記複数の半導体基板の夫々は、前記複数の記憶回路と、前記複数の制御回路とを含み、
     前記デバイスコントローラは、前記診断処理において、前記特定記憶回路を含む半導体基板を特定半導体基板として特定し、前記特定記憶回路が前記障害部位であると判定された場合、前記特定半導体基板の中の他の記憶回路を追加記憶回路として選択し、前記追加記憶回路の中の一部のブロックを追加ブロックとして選択し、前記追加ブロックに格納されているデータをリードし、前記追加ブロックに格納されているデータのリードの結果に基づいて、前記追加記憶回路が前記障害部位であるか否かを判定することにより、前記特定半導体基板内の障害部位を特定する、
    請求項6に記載の記憶デバイス。
  8.  前記デバイスコントローラは、前記診断処理中に前記上位装置からのリード要求に応じたリードによりUEを検出し、且つ前記リード要求により指定された論理アドレスが前記特定半導体基板内の物理アドレスに対応する場合、前記リード要求に基づくUEをカウントしないことを要求する応答を、前記上位装置へ通知する、
    請求項7に記載の記憶デバイス。
  9.  前記複数のブロックの夫々は、2次元配列の列方向に並べられた複数のページ行を含み、 前記複数のページ行の夫々は、行方向に接続された複数のページを含み、
     前記複数のページの夫々は、行方向に接続された複数のメモリセルを含み、
     前記メモリセルは、データを格納する回路であり、
     前記デバイスコントローラは、前記特定ブロックに格納されているデータのリードによるUEの位置が、互いに隣接する2個のページ行より広い範囲に分布している場合、前記特定ブロックに格納されているデータのリードの結果が前記分布条件を満たすと判定する、
    請求項3に記載の記憶デバイス。
  10.  前記デバイスコントローラは、前記障害部位の特定の後、前記上位装置から要求を受け付けた場合、前記要求に対する応答と前記障害部位の特定の結果とを前記上位装置へ通知する、
    請求項2に記載の記憶デバイス。
  11.  複数の記憶デバイスと、
     前記複数の記憶デバイスに接続されるストレージコントローラと、
    を備え、
     前記複数の記憶デバイスは、
      複数の不揮発性半導体メモリと、
      前記複数の不揮発性半導体メモリ及び前記ストレージコントローラに接続されるデバイスコントローラと、
    を含み、
     前記複数の不揮発性半導体メモリの夫々は、複数の記憶回路と、複数の制御回路とを含み、
     前記複数の記憶回路は、夫々前記複数の制御回路を介して前記デバイスコントローラに接続され、
     前記複数の記憶回路の夫々は、複数のブロックを含み、
     前記ブロックは、データの消去単位であり、
     前記複数のブロックの夫々は、複数のページを含み、
     前記ページは、データのリード/ライト単位であり、
     前記デバイスコントローラは、前記複数の不揮発性半導体メモリの中の特定ページに格納されているデータをリードすることにより、前記特定ページに格納されているデータのアンコレクタブルエラー(UE)を検出した場合、前記特定ページを含む記憶回路である特定記憶回路を特定し、前記特定記憶回路の中の一部のブロックに格納されているデータをリードし、前記一部のブロックに格納されているデータのリードの結果に基づいて、前記特定記憶回路内の障害部位を特定する、
    ストレージ装置。
  12.  前記デバイスコントローラは、論理アドレスを指定するI/O要求を前記ストレージコントローラから受け付け、前記論理アドレスを、前記複数の不揮発性半導体メモリの中の位置を示す物理アドレスに変換し、前記I/O要求に基づいて前記物理アドレスに対するI/Oを行い、
     前記デバイスコントローラは、前記障害部位に対応する論理アドレスを示す障害情報を、前記ストレージコントローラへ通知する、
    請求項11に記載のストレージ装置。
  13.  前記ストレージコントローラは、前記複数の記憶デバイスを含むRAIDグループを構築し、
     前記ストレージコントローラは、前記記憶デバイスから前記障害情報を受け付けた場合、前記RAIDグループに基づいて前記障害部位に格納されたデータを復元する、
    請求項12に記載のストレージ装置。
  14.  前記ストレージコントローラは、前記記憶デバイスから前記障害情報を受け付けた場合、前記障害情報に基づいて前記記憶デバイスの論理記憶領域の容量を削減する、
    請求項13に記載のストレージ装置。
     
PCT/JP2014/072428 2014-08-27 2014-08-27 記憶デバイスおよびストレージ装置 WO2016030992A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US14/425,556 US10204003B2 (en) 2014-08-27 2014-08-27 Memory device and storage apparatus
PCT/JP2014/072428 WO2016030992A1 (ja) 2014-08-27 2014-08-27 記憶デバイスおよびストレージ装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/072428 WO2016030992A1 (ja) 2014-08-27 2014-08-27 記憶デバイスおよびストレージ装置

Publications (1)

Publication Number Publication Date
WO2016030992A1 true WO2016030992A1 (ja) 2016-03-03

Family

ID=55398932

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/072428 WO2016030992A1 (ja) 2014-08-27 2014-08-27 記憶デバイスおよびストレージ装置

Country Status (2)

Country Link
US (1) US10204003B2 (ja)
WO (1) WO2016030992A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11205483B2 (en) * 2016-04-11 2021-12-21 SK Hynix Inc. Memory system having dies and operating method of the memory system outputting a command in response to a status of a selected die
US11023605B1 (en) * 2017-04-20 2021-06-01 EMC IP Holding Company LLC Data access threat detection and prevention
US10901866B2 (en) * 2017-08-01 2021-01-26 Seagate Technology, Llc Failure detection and data recovery in a storage system
TWI657336B (zh) * 2017-08-28 2019-04-21 慧榮科技股份有限公司 用以檢測資料儲存裝置之資料儲存方法及其資料儲存裝置
KR102480464B1 (ko) * 2017-12-20 2022-12-23 에스케이하이닉스 주식회사 메모리 컨트롤러, 메모리 컨트롤러를 포함하는 메모리 시스템, 및 메모리 컨트롤러의 동작 방법
KR20190074691A (ko) * 2017-12-20 2019-06-28 에스케이하이닉스 주식회사 반도체 장치 및 이를 포함하는 반도체 시스템
KR20210030599A (ko) * 2019-09-10 2021-03-18 에스케이하이닉스 주식회사 데이터를 분산 리드할 수 있는 메모리 시스템 및 메모리 시스템의 동작방법
US11188432B2 (en) * 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58130500A (ja) * 1982-01-29 1983-08-03 Fujitsu Ltd 予防診断方式
JP2004272476A (ja) * 2003-03-06 2004-09-30 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP2013037631A (ja) * 2011-08-10 2013-02-21 Nec Computertechno Ltd 診断装置、診断方法および診断プログラム診断方法
WO2013046463A1 (ja) * 2011-09-30 2013-04-04 株式会社日立製作所 不揮発半導体記憶システム
WO2013094041A1 (ja) * 2011-12-21 2013-06-27 株式会社日立製作所 計算機システム、及び管理システム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110050404A (ko) * 2008-05-16 2011-05-13 퓨전-아이오, 인크. 결함 있는 데이터 저장소를 검출하고 교체하는 장치, 시스템 및 프로그램 제품
US8041991B2 (en) 2008-11-18 2011-10-18 Lsi Corporation System and method for recovering solid state drive data
US8281227B2 (en) * 2009-05-18 2012-10-02 Fusion-10, Inc. Apparatus, system, and method to increase data integrity in a redundant storage system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58130500A (ja) * 1982-01-29 1983-08-03 Fujitsu Ltd 予防診断方式
JP2004272476A (ja) * 2003-03-06 2004-09-30 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP2013037631A (ja) * 2011-08-10 2013-02-21 Nec Computertechno Ltd 診断装置、診断方法および診断プログラム診断方法
WO2013046463A1 (ja) * 2011-09-30 2013-04-04 株式会社日立製作所 不揮発半導体記憶システム
WO2013094041A1 (ja) * 2011-12-21 2013-06-27 株式会社日立製作所 計算機システム、及び管理システム

Also Published As

Publication number Publication date
US20160259675A1 (en) 2016-09-08
US10204003B2 (en) 2019-02-12

Similar Documents

Publication Publication Date Title
US11726688B2 (en) Storage system managing metadata, host system controlling storage system, and storage system operating method
US10372558B2 (en) Storage device, an operating method of the storage device and an operating method of a computing system including the storage device and a host device
WO2016030992A1 (ja) 記憶デバイスおよびストレージ装置
US10459639B2 (en) Storage unit and storage system that suppress performance degradation of the storage unit
US10445200B2 (en) Storage device having various recovery methods and recovery modes
US9946616B2 (en) Storage apparatus
US8069301B2 (en) Apparatus, storage system, and computer program product for prevention of data loss
US8516343B2 (en) Apparatus, system, and method for retiring storage regions
US8489806B2 (en) Storage apparatus and method of managing data storage area
JP6055544B2 (ja) ストレージ装置およびストレージ装置制御方法
US10002042B2 (en) Systems and methods of detecting errors during read operations and skipping word line portions
US8239714B2 (en) Apparatus, system, and method for bad block remapping
JP4901968B2 (ja) 半導体記憶装置
US9891989B2 (en) Storage apparatus, storage system, and storage apparatus control method for updating stored data stored in nonvolatile memory
US10120769B2 (en) Raid rebuild algorithm with low I/O impact
JPWO2009130848A1 (ja) ストレージシステム及びストレージシステムの制御方法
US20180275894A1 (en) Storage system
US8370688B2 (en) Identifying a storage device as faulty for a first storage volume without identifying the storage device as faulty for a second storage volume
WO2014045329A1 (en) Storage system and storage control method
WO2018002999A1 (ja) 記憶デバイス及びストレージ装置

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 14425556

Country of ref document: US

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14900488

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP