WO2016194199A1 - ストレージ装置 - Google Patents

ストレージ装置 Download PDF

Info

Publication number
WO2016194199A1
WO2016194199A1 PCT/JP2015/066212 JP2015066212W WO2016194199A1 WO 2016194199 A1 WO2016194199 A1 WO 2016194199A1 JP 2015066212 W JP2015066212 W JP 2015066212W WO 2016194199 A1 WO2016194199 A1 WO 2016194199A1
Authority
WO
WIPO (PCT)
Prior art keywords
storage
data
controller
storage device
sector
Prior art date
Application number
PCT/JP2015/066212
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 US15/558,063 priority Critical patent/US20180067676A1/en
Priority to JP2017521450A priority patent/JP6453457B2/ja
Priority to PCT/JP2015/066212 priority patent/WO2016194199A1/ja
Publication of WO2016194199A1 publication Critical patent/WO2016194199A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/20Initialising; Data preset; Chip identification

Definitions

  • the present invention relates to a storage device using a nonvolatile semiconductor memory.
  • Patent Document 1 discloses a storage system that initializes a disk drive while receiving an I / O request from a host.
  • initialization is performed in the background, and a predetermined data pattern such as all zero is written by the initialization.
  • host I / O arrives, if the I / O target area has been initialized, normal I / O is performed on that area. If not already initialized, data is written after initialization if the I / O is a write, and initialization data is returned to the host if the I / O is a read.
  • a test code for enabling data validity verification may be stored together with data when data is written to a storage device.
  • a field referred to as DIF (Data Integrity Field)
  • DIF Data Integrity Field
  • an inspection code includes an error detection code calculated based on write data and information (information calculated based on a data storage destination address) for enabling validity verification of a data access position. Since the data is stored, the content of the inspection code may vary depending on the data storage position.
  • Patent Document 1 In the initialization technique disclosed in Patent Document 1, it is possible to write a predetermined data pattern in the storage area, but it is not considered to store different information depending on the data storage position. Therefore, it is difficult to introduce the technology disclosed in Patent Document 1 to a storage system that requires high reliability.
  • a storage apparatus includes a plurality of storage devices and a storage controller.
  • the storage device provides a storage controller with a storage space having a plurality of sectors, and each sector includes a write data storage area and an inspection code storage area.
  • an inspection code is generated based on the information included in the read request, and the storage controller has a predetermined pattern. Send data and test code.
  • the initialization process for the storage device can be substantially eliminated.
  • the information of the present invention may be described in terms of “aaa table” or the like, but the information may be expressed in a data structure other than a table or the like. Therefore, the “aaa table” or the like may be referred to as “aaa information” to indicate that it does not depend on the data structure.
  • information for identifying “bbb” of the present invention may be described by an expression such as “bbb name”. However, the information for identifying these is not limited to a name, but an identifier, an identification number, Any information can be used as long as it can identify “bbb” such as an address.
  • program may be used as the subject, but in reality, the program is executed by a processor (CPU (Central Processing Unit)), so that the processing determined by the processor is stored in memory. And I / F (interface). However, to prevent the explanation from becoming redundant, the program may be described as the subject. Further, part or all of the program may be realized by dedicated hardware.
  • Various programs may be installed in each apparatus by a program distribution server or a computer-readable storage medium.
  • the storage medium for example, an IC card, an SD card, a DVD, or the like may be used.
  • FIG. 1 shows a configuration of a computer system including a storage system 1 according to the embodiment.
  • a storage system (also referred to as a storage device) 1 includes a storage controller (also referred to as DKC) 10 and a plurality of storage devices (200, 200 ') connected to the storage controller 10.
  • DKC storage controller
  • the storage device (200, 200 ') is used to store write data from a host device such as the host 2.
  • the storage system 1 is an FMPK (Flash, which is a storage device using a nonvolatile semiconductor memory such as a flash memory as a storage medium in addition to an HDD (Hard Disk Drive) using a magnetic disk as a storage medium as a storage device. Memory (PacKage) can be used. A specific configuration of FMPK will be described later.
  • the storage device 200 ′ is an HDD and the storage device 200 is FMPK will be described. Therefore, the storage device 200 may be referred to as “FMPK200”, and the storage device 200 ′ may be referred to as “HDD200 '”. However, a storage device of a type other than the HDD or FMPK may be used as the storage device (200, 200 '). In this embodiment, the storage device (200, 200 ') communicates with the storage controller 10 in accordance with the SAS (Serial Attached SCSI) standard.
  • SAS Serial Attached SCSI
  • One or more hosts 2 are connected to the DKC 10.
  • the DKC 10 and the host 2 are connected via a SAN (Storage Area Network) 3 formed using a fiber channel as an example.
  • SAN Storage Area Network
  • the DKC 10 includes at least a processor 11, a host interface (denoted as “host IF” in the figure) 12, a device interface (denoted as “device IF” in the figure) 13, a memory 14, and a parity operation circuit 15.
  • the processor 11, the host IF 12, the device IF 13, the memory 14, and the parity operation circuit 15 are interconnected via a mutual coupling switch (mutual coupling SW) 16.
  • a plurality of these components may be mounted in the DKC 10 in order to ensure high performance and high availability. However, a configuration in which only one of these components is provided in the DKC 10 may be used.
  • the device IF 13 includes at least an interface controller 131 (indicated as “SAS-CTL” in the drawing) for communicating with the storage devices 200 and 200 ′, and a transfer circuit (not shown).
  • the interface controller 131 is for converting a protocol (SAS in one example) used in the storage devices 200 and 200 'into a communication protocol (PCI-Express as an example) used in the DKC 10.
  • SAS-CTL a SAS controller
  • FIG. 1 only one SAS-CTL 131 is described in one device IF 13, but a configuration in which a plurality of SAS-CTLs 131 exist in one device IF 13 may be adopted.
  • the host IF 12 has at least an interface controller and a transfer circuit (not shown), like the device IF 13.
  • the interface controller is for converting a communication protocol (for example, fiber channel) used between the host 2 and the DKC 10 into a communication protocol used inside the DKC 10.
  • the parity calculation circuit 15 is hardware that generates redundant data (parity) required by the RAID technology. Examples of redundant data generated by the parity operation circuit 15 include exclusive OR (XOR) and Reed-Solomon code.
  • the processor 11 processes I / O requests coming from the host IF 12.
  • the memory 14 is used to store programs executed by the processor 11 and various management information of the storage system 1 used by the processor 11.
  • the memory 14 is also used for temporarily storing I / O target data for the storage devices (200, 200 ').
  • the memory 14 is configured by a volatile storage medium such as DRAM or SRAM. However, as another embodiment, the memory 14 may be configured by using a nonvolatile memory.
  • the storage system 1 can be equipped with a plurality of types of storage devices such as the FMPK 200 and the HDD 200 '.
  • the following description is based on the assumption that only the FMPK 200 is mounted in the storage system 1 unless otherwise specified.
  • the FMPK 200 includes a device controller (FM controller) 201 and a plurality of FM chips 210.
  • the FM controller 201 includes a memory 202, a processor 203, a compression / decompression circuit 204 for performing data compression / decompression, a format data generation circuit 205 for generating format data, a SAS-CTL 206, and an FM-IF 207.
  • the memory 202, the processor 203, the compression / decompression circuit 204, the format data generation circuit 205, the SAS-CTL 206, and the FM-IF 207 are interconnected via an internal connection switch (internal connection SW) 208.
  • SAS-CTL 206 is an interface controller for performing communication between the FMPK 200 and the DKC 10.
  • the SAS-CTL 206 is connected to the SAS-CTL 131 of the DKC 10 via a transmission line (SAS link).
  • the FM-IF 207 is an interface controller for performing communication between the FM controller 201 and the FM chip 210.
  • the processor 203 performs processing related to various commands coming from the DKC 10.
  • the memory 202 stores programs executed by the processor 203 and various management information.
  • a volatile memory such as a DRAM is used.
  • a nonvolatile memory may be used for the memory 202.
  • the compression / decompression circuit 204 is hardware having a function of compressing data or decompressing the compressed data. Instead of the compression / decompression circuit 204, the processor 203 may execute a data compression program to perform data compression. In addition, the compression / decompression circuit 204 is not required when compression is not performed when data is stored in the FM chip 210.
  • the format data generation circuit 205 is hardware for generating initialization data. Further, instead of the format data generation circuit 205, the processor 203 may execute a program for executing processing equivalent to that of the format data generation circuit 205, thereby causing the processor 203 to replace the format data generation circuit 205.
  • FM chip 210 is a non-volatile semiconductor memory chip such as a NAND flash memory.
  • data is read / written in units of pages in the flash memory, and data erasure is performed in units of blocks that are a set of a plurality of pages.
  • a page once written cannot be overwritten, and in order to rewrite a page once written, it is necessary to erase the entire block including the page. Therefore, the FMPK 200 does not directly provide the storage area of the FM chip 210 to the DKC 10 to which the FMPK 200 is connected, but provides a logical storage space.
  • the storage system 1 uses a plurality of FMPKs 200 to form a RAID (Redundant Arrays of Independent / Independent Disks) group.
  • RAID Redundant Arrays of Independent / Independent Disks
  • the data stored in the failed FMPK 200 can be recovered using the remaining data in the FMPKs 200.
  • a part of the storage area (or all storage areas) in the RAID group is provided as a logical volume to a host device such as the host 2.
  • FMPK # 0 to FMPK # 3 represent storage spaces provided by the FMPK 200 (200-0 to 200-3) to the DKC 10, respectively.
  • the DKC 10 constitutes one RAID group 20 from a plurality (four in the example of FIG. 3) of FMPKs 200, and FMPKs (FMPK # 0 (200-0) to FMPK # 3 (200-3) belonging to the RAID group 20 are included. ))
  • the above storage space is managed by dividing it into a plurality of fixed-size storage areas called stripe blocks.
  • FIG. 3 shows an example in which the RAID level of the RAID group 20 (representing the data redundancy method in the RAID technology and generally having RAID levels of RAID1 to RAID6) is RAID5.
  • boxes such as “0”, “1”, and “P” in the RAID group 20 represent stripe blocks, and the size of the stripe block is, for example, 64 KB, 256 KB, 512 KB, or the like.
  • a number such as “1” assigned to each stripe block is referred to as a “stripe block number”.
  • the stripe block described as “P” in the stripe block is a stripe block in which redundant data is stored, and this is called a “parity stripe”.
  • a stripe block in which numbers (0, 1 etc.) are written is a stripe block in which data (data which is not redundant data) written from a host device such as the host 2 is stored. This stripe block is called “data stripe”.
  • the stripe block located at the head of FMPK # 3 (200-3) is the parity stripe 301-3.
  • the data stripe (stripe) positioned at the head of each FMPK 200 (FMPK # 0 (200-0) to FMPK # 2 (200-2)) is stored. Redundant data is generated by performing a predetermined operation (for example, exclusive OR (XOR) or the like) on the data stored in the blocks 301-0, 301-1 and 301-2).
  • a predetermined operation for example, exclusive OR (XOR) or the like
  • each stripe block belonging to one stripe line is located at the same position in the storage space of the FMPKs 200-0 to 200-3 (like the stripe line 300 shown in FIG.
  • the stripe line is configured according to the rule of existing at the address.
  • the stripe block number described above is a number assigned to the data stripe, and is a unique number within the RAID group. As shown in FIG. 3, the DKC 10 assigns numbers 0, 1, and 2 to the data stripes included in the first stripe line in the RAID group. Further, the data stripes included in the subsequent stripe lines are also 3, 4, 5,. . . The serial number is attached.
  • a data stripe whose stripe block number is n (n is an integer value of 0 or more) is referred to as “data stripe n”.
  • the storage system 1 manages the storage area of the RAID group 20 by dividing it. Each divided storage area is called a virtual device (VDEV). Note that all storage areas of one RAID group 20 may be managed as one VDEV. Each VDEV is assigned a unique identification number within the storage system 1. This identification number is called a VDEV number (or VDEV #). A VDEV whose VDEV # is n is expressed as “VDEV # n”. In this embodiment, VDEV # is an integer value of 0 or more and 65535 or less, that is, a value that can be expressed by a 16-bit binary number.
  • the storage system 1 divides the storage area of the VDEV and provides the host 2 with a storage area obtained by removing the parity stripe from the divided storage area.
  • the storage area provided to the host 2 is called a logical device (LDEV). Similar to the VDEV, each LDEV is given a unique identifier in the storage system 1. This identifier is called an LDEV number (or LDEV #).
  • LDEV # logical device
  • the host 2 writes or reads data to or from the storage system 1, it issues a write command or a read command that specifies LDEV # (or information such as LUN that can derive the LDEV identifier).
  • the command includes an address of an access target area in the LDEV (hereinafter, this address is referred to as “LDEV LBA”) in addition to the LDEV #.
  • LDEV LBA an address of an access target area in the LDEV
  • the DKC 10 converts the LDEV # and LDEV LBA into addresses on the storage space of the VDEV # and VDEV (hereinafter referred to as “VDEV LBA”). Further, the DKC 10 calculates the identifier of the FMPK 200 and the address on the FMPK 200 (this address is referred to as “FMPK LBA”) from the VDEV # and VDEV LBA, and reads data from the FMPK 200 using the calculated FMPK LBA.
  • the DKC 10 calculates the FMPK LBA of the FMPK 200 in which the parity corresponding to the write target data is to be stored, in addition to the FMPK LBA of the FMPK 200 in which the write target data is to be stored.
  • the minimum unit when the host 2 accesses the data stored in the storage space in the LDEV is 512 bytes as an example.
  • the storage controller 10 receives a write command and write data for the LDEV from the host 2, the storage controller 10 adds an 8-byte inspection code for every 512-byte data. In this embodiment, this inspection code is called DIF.
  • this inspection code is called DIF.
  • a 520-byte data chunk consisting of 512-byte data and a DIF added thereto, or an area in which this 520-byte chunk is stored is called a “sector”.
  • a sector consists of data 510 and DIF 511.
  • Data 510 is an area where write data received from the host 2 is stored
  • DIF 511 is an area where DIF added by the storage controller 10 is stored.
  • the DIF 511 includes three types of information: CRC 512, LA 513, and APP 514.
  • the CRC 512 is an error detection code (CRC (Cyclic Redundancy Check) is used as an example) that is generated by performing a predetermined operation on the data 510, and is 2-byte information.
  • CRC Cyclic Redundancy Check
  • LA 513 is 5-byte information generated based on the data storage position.
  • LA0 (513-0) information obtained by processing VDEV # of the VDEV in which data 510 is stored is stored.
  • Information obtained by processing the storage destination address (FMPK LBA) of the data 510 is recorded in the remaining 4 bytes (referred to as “LA1 (513-1)”).
  • FMPK LBA storage destination address
  • LA1 (513-1) information obtained by processing the storage destination address of the data 510 is recorded in the remaining 4 bytes.
  • the storage controller 10 uses the data write destination address LBA included in the write request to write the write data storage destination VDEV #, the write data storage destinations FMPK and FMPK.
  • LBA information to be stored in LA0 (513-0) and LA1 (513-1) is generated.
  • APP 514 is also a kind of error detection code and is 1-byte information. APP 514 is an exclusive OR of each byte of data 510, CRC 512, and LA 513.
  • both the data 510 and the DIF 511 are returned to the storage controller 10.
  • the storage controller 10 performs a predetermined operation on the data 510 to calculate a CRC. Then, it is determined whether or not the calculated CRC matches the CRC 512 in the DIF 511 (hereinafter, this determination is referred to as “CRC check”). If they do not match, it means that the data contents have been changed due to a failure or the like in the process of transferring data from the FMPK 200. Therefore, if the two do not match, the storage controller 10 determines that the data could not be read correctly.
  • the storage controller 10 determines whether the information included in LA0 (513-0) matches the VDEV # to which the read target data belongs. In addition, a predetermined calculation (described later) is performed on an address (FMPK LBA) included in the read command issued to the FMPK 200 to determine whether it matches LA1 (513-1) (hereinafter, this determination is referred to as “LA Called "check”). If they do not match, the storage controller 10 determines that the data could not be read correctly.
  • FMPK LBA address included in the read command issued to the FMPK 200
  • the FMPK 200 has at least management information of a logical physical mapping table 600, a free page list 700, and an uninitialized block list 800.
  • FIG. 5 is a configuration example of the logical-physical mapping table 600.
  • the logical physical mapping table 600 has columns of logical page # 601, LBA 602, allocation state 603, block # 604, and physical page # 605. In each record, information about the sector of the FMPK 200 is stored.
  • the logical physical mapping table 600 is stored in the memory 202. Alternatively, it may be stored in a partial area of the FM chip 210 as another embodiment.
  • LBA 602 represents the LBA of the sector
  • logical page # 601 stores the logical page number of the logical page to which the sector belongs.
  • the physical page # 605 stores the identification number (physical page number) of the physical page mapped to the logical page to which the sector belongs
  • the block # 604 contains the identification number (block number) of the block to which the physical page belongs. Stored.
  • NULL invalid value
  • the minimum writing unit of the flash memory is a page. Therefore, even when there is a write to a part of the logical page from the DKC 10, one physical page is mapped to the logical page.
  • block # 604 and physical page # 605 of all sectors of this logical page are respectively assigned to the block number of the block to which the mapped physical page belongs and the physical of the mapped physical page. Stores the page number.
  • the allocation state 603 stores information indicating that writing has been performed on the sector specified by the LBA 602. When there is a write to the sector, “1” is stored in the allocation state 603. When there is no writing, “0” is stored.
  • the physical page is mapped to the logical page for the first time when writing from the DKC 10 to the logical page is performed. Since physical pages cannot be rewritten unless erasure processing is performed, when the FM controller 201 maps physical pages to logical pages, it maps unwritten physical pages (unused physical pages). For this purpose, the FM controller 201 stores and manages information on all unused physical pages in the FMPK 200 in the free page list 700 (FIG. 6). In block # 701 and physical page # 702 of the free page list 700, the block number of the block to which the unused physical page belongs and the physical page number of the unused physical page are stored, respectively.
  • FIG. 7 shows the structure of the uninitialized block list 800.
  • the uninitialized block list 800 is management information used when the FMPK 200 performs an initialization process.
  • the uninitialized block list 800 stores a list of block numbers of blocks that need to be erased during the initialization process.
  • the DKC 10 forms a RAID group using a plurality of FMPKs 200, and defines one or more VDEVs using the formed RAID group. Furthermore, the DKC 10 uses the VDEV to define one or more LDEVs.
  • the FMPK 200 used to form the RAID group may be an FMPK 200 that has been used for another purpose in the past in addition to the unused FMPK 200 immediately after installation in the storage system 1. Therefore, there is a possibility that arbitrary data is stored in each FMPK 200 constituting the RAID group immediately after the RAID group is formed.
  • the LDEV (VDEV) when the LDEV (VDEV) is defined, appropriate information is stored in the data stripe and parity stripe of the RAID group to which the LDEV (VDEV) belongs. Must be stored. That is, it is necessary to store redundant data (parity) formed from all data stripes of the same stripe line in the parity stripe of each stripe line.
  • the storage system 1 by setting all the data stripe and parity stripe areas (excluding the part storing the DIF) of the storage devices 200 and 200 ′ constituting the RAID group to 0.
  • the RAID group is initialized. Also, when initializing the RAID group, appropriate information is stored in the DIF of each stripe block.
  • the DKC 10 transmits an initialization command to each FMPK 200 configuring the VDEV, and causes each FMPK 200 to perform initialization.
  • 0 is not actually stored in the storage area (FM chip 210), but each FMPK 200 merely creates a state in which all zero is virtually stored in the storage area. Since the data (all zero) is not actually written to the storage area, the time required for the initialization process is substantially zero.
  • the initialization program is a program for initializing the FMPK 200, and forms a state in which no data is stored in each sector of the FMPK 200.
  • the processor 11 starts initialization of the LDEV or VDEV.
  • the processor 11 issues an initialization command to each FMPK 200 constituting the LDEV or VDEV.
  • the processor 203 of the FMPK 200 starts executing the initialization program in response to receiving the initialization command from the storage controller 10.
  • the read program is a program for executing processing related to the read command received from the DKC 10.
  • the write program is a program for executing processing related to the write command received from the DKC 10.
  • the processor 203 starts executing the initialization program.
  • the initialization program first acquires configuration information transmitted together with the initialization command and stores it in the memory 202 (S11). Details of the configuration information will be described later.
  • the initialization program initializes the management information (S12). Specifically, the allocation status 603 of all records in the logical-physical mapping table 600 is set to 0, and block # 604 and physical page # 605 are set to NULL. Also, all physical page information stored in the free page list 700 is erased. The block numbers of all blocks in the FMPK 200 are registered in the uninitialized block list 800.
  • the initialization program starts erasing the block with the block number registered in the uninitialized block list 800 (S13).
  • block #X the erasure of the block having the block number X
  • the initialization program erases the block #X from the uninitialized block list 800 and becomes free.
  • page list 700 block numbers and physical page numbers of all physical pages belonging to the block #X are registered.
  • the initialization program notifies the storage controller 10 of a message indicating that the initialization has been completed (S14). Only a small part of the blocks in the FMPK 200 may be erased before S14.
  • the storage controller 10 receives a message indicating that the initialization is completed from the FMPK 200, the storage controller 10 can issue a read command or a write command to the FMPK 200.
  • the FMPK 200 notifies the storage controller 10 that the initialization has been completed. Therefore, the FMPK 200 is in a state where the initialization is completed in a very short time. Become.
  • the initialization program continues to erase the block with the block number registered in the uninitialized block list 800 (S15).
  • S15 the execution of the initialization program ends.
  • the block erase (Erase) process of S13 and S15 is not an essential process.
  • the block may be erased when there is no empty physical page when the write command is received from the DKC 10 to the FMPK 200 without erasing the block by the initialization program.
  • the FMPK 200 starts accepting a write command from the DKC 10 without performing S13, it becomes necessary to perform block erase before storing the write data received from the DKC 10, and the performance at the time of writing deteriorates (response) Time will be longer). Therefore, in the FMPK 200 according to the present embodiment, by erasing a predetermined number of blocks in advance, the write data from the storage controller 10 can be immediately stored in a physical page (without executing block erasure). Yes.
  • the minimum writing unit when the DKC 10 writes data to the FMPK 200 is a sector.
  • the minimum writing unit when the FMPK 200 writes to the FM chip 210 is a page (physical page), and the page size is an integral multiple of the sector size (the page size is larger than the sector size). For this reason, when the size of the area designated by the write command from the DKC 10 is less than one page, the FMPK 200 performs so-called read-modify-write, and writes to the FM chip 210 in units of pages.
  • the processor 203 starts execution of the write program.
  • the write program calculates the logical page # of the logical page of the data write destination using the LBA and data length information included in the write command.
  • the write program secures unused pages from the free page list 700. If no physical page (unused page) is registered in the free page list 700, the write program erases the block registered in the uninitialized block list 800 before securing the unused page. Then, create an unused page. The created unused page information is registered in the free page list 700.
  • a plurality of data write destination logical pages may be specified. If a plurality of data write destination logical pages are specified, the write program secures a plurality of unused pages.
  • the specified logical page # is n (n is an integer value of 0 or more) will be described below.
  • the write program secures an area (hereinafter referred to as “buffer”) having a size of one page on the memory 202 (S120).
  • the buffer contents may be initialized (for example, 0 is written) or not.
  • the write program determines whether a physical page has already been mapped to the logical page of the data write destination. This can be determined by whether or not a value other than NULL is stored in the physical page # 605 (and block # 604) of the row of the logical page # 601 of the logical physical mapping table 600. If the physical page # 605 (and block # 604) is NULL, it means that the physical page is not mapped to the data write destination logical page (S130: NO). In this case, the write program skips S140 and S150, and performs the processes after S160.
  • the write program determines whether the write range specified by the write command matches the logical page boundary (S140). When the write range matches the logical page boundary (that is, the first LBA of the write target area matches the LBA of the first sector in the logical page, and the end LBA of the write target area matches the LBA of the end sector in the logical page) If it is, the process of S150 is not performed. On the other hand, if the write range does not match the logical page boundary (S140: NO), the write program reads data from the physical page mapped to the logical page and stores it in the buffer secured in S120 (S150). .
  • the write program overwrites the write data received together with the write command in the buffer secured in S120.
  • the DIF is added to each 512-byte data by the DKC 10 in the write data received together with the write command from the DKC 10.
  • the write program stores the buffer data in the physical page secured in S110 (S170).
  • the write program updates the logical-physical mapping table 600. Specifically, the write program stores the physical page number and block number of the physical page secured in S110 in the physical page # 605 and block # 604 of the row where the logical page # 601 is n in the logical physical mapping table 600. The write program also changes the allocation state 603 of the row included in the access range specified by the write command to “1” by the LBA 602 of the logical-physical mapping table 600. When these processes are completed, the write program ends the write process.
  • the minimum reading unit when the DKC 10 reads data from the FMPK 200 is a sector.
  • the processor 203 When the FMPK 200 receives the read command, the processor 203 starts executing the read program.
  • the read program confirms whether or not the access range specified by the read command is a previously written area. Specifically, if the allocation state 603 of the record included in the access range specified by the read command in the LBA 602 among the records of the logical-physical mapping table 600 is “1”, it is a previously written area. . In the following, in order to avoid redundant description, an example in which reading of an area for one sector is designated by a read command will be described.
  • the read program When the allocation state 603 of the row included in the access range specified by the read command is “1” (S220: YES), the read program reads the data from the physical page in which the read target data is stored and reads the memory 202. To store. Since the minimum read unit of the FM chip 210 is a page (physical page), data for one page is read here. Then, the read program extracts the data to be read by the read command from the data for one page read out on the memory 202, returns it to the DKC 10 (S230), and ends the read process.
  • the read program uses the format data generation circuit 205 to create the format data on the memory 202. (S250). A method for creating the format data will be described later. Then, the created data is returned to the DKC 10, and the read process is terminated.
  • the same processing is performed even when the access range extends over a plurality of sectors.
  • the area of the access range may include sectors that have been written in the past and sectors that have not been written yet.
  • the read program may perform the above-described processing of S230 for sectors that have been written in the past, and the above-described processing of S250 for sectors that have not been written yet.
  • format data data in which a predetermined data pattern is stored in the data 510 of FIG. 4 is referred to as “format data”.
  • An example of the data pattern is all zero (all bits are 0).
  • format data in which all zero is stored in the data 510 will be described.
  • the LA 513 stores information on the VDEV and FMPK LBA to which the data 510 belongs. These pieces of information are included in the configuration information received from the DKC 10 during the initialization process, and the LA 513 is created using the configuration information in S250.
  • the configuration information received from the DKC 10 will be outlined with reference to FIG. In the example of FIG. 3, VDEV # 100 and VDEV # 101 are defined in a RAID group composed of FMPK # 0 (200-0) to FMPK # 3 (200-3).
  • the FMPK 200 belonging to this RAID group includes VDEV # (100 and 101) as configuration information, the address and size (number of sectors) of the area belonging to VDEV # 100, and the address of the area belonging to VDEV # 101 among the areas in FMPK200. And the size (number of sectors) are received.
  • the format data generation circuit 205 uses the configuration information and the LBA information specified by the read command to determine which VDEV the LBA specified by the read command is. Identify whether it belongs.
  • the VDEV # of the specified VDEV is stored in LA0 (513-0).
  • VDEV # is a 16-bit size value
  • VDEV # is processed and stored in LA0 (513-0) so that it fits in LA0 (513-0), which is a 1-byte area.
  • the format data generation circuit 205 extracts the upper 8 bits and lower 8 bits of VDEV #, and stores the 8-bit information obtained by calculating the logical sum of both in LA0 (513-0).
  • other storage formats may be adopted.
  • LA1 (FMPK LBA) specified by the read command is stored in the FMPK 200 included in the VDEV to which the LBA specified by the read command belongs.
  • the remainder divided by the area size (number of sectors). For example, if the LBA specified by the read command belongs to VDEV # 100 and the size (number of sectors) of the FMPK200 area belonging to VDEV # 100 is m, the LBA specified by the read command is divided by m. The remainder is stored.
  • the format data generation circuit 205 calculates the exclusive OR of each byte of the data 510, CRC 512, and LA 513, and stores this in the APP 514.
  • the FMPK 200 when the initialization process is executed, the sector allocation state 603 is set to “0” to set each sector to a data unwritten state. However, when the initialization process is executed, data writing to the FM chip 210 is not performed.
  • the FMPK 200 creates initialization data and returns it to the DKC 10 to apparently initialize the storage area. Creating a state. Therefore, the FMPK 200 according to the present embodiment can initialize the FMPK 200 in a very short time.
  • an inspection code is added to the data and stored in the storage device when the data is stored in the storage device. Since the DIF includes information (data storage destination address, etc.) for verifying the validity of the data access position, the values that can be taken by the DIF differ depending on the storage system, volume configuration, and data storage position.
  • the FMPK 200 according to the present embodiment is configured to be able to generate information for storing in the DIF by acquiring configuration information from the storage controller 10. Therefore, there is no need to receive initialization data from the storage controller 10 and write it to the FM chip 210 during initialization.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Hardware Redundancy (AREA)

Abstract

本発明の一観点に係るストレージ装置は、複数の記憶デバイスとストレージコントローラを有する。記憶デバイスは、ライトデータ格納領域と検査用コード格納領域を含むセクタを複数有する記憶空間をストレージコントローラに提供している。記憶デバイスがストレージコントローラからリード要求を受領した時、リード対象のセクタが未書き込みの場合、リード要求に含まれている情報に基づいて検査用コードを生成し、ストレージコントローラには、所定のパターンのデータと検査用コードを送信する。

Description

ストレージ装置
 本発明は、不揮発性半導体メモリを用いたストレージ装置に関する。
 ITの進歩やインターネットの普及などにより、企業等における計算機システムが扱うデータ量は増加を続けている。そのため、大量のデータを扱う組織で用いられるストレージシステムも大容量化が進んでいる。
 ストレージシステムを使い始める時には、ストレージシステムに搭載される複数の記憶デバイスの初期化(フォーマット)を行う必要がある。初期化の際、記憶デバイスの全記憶領域に対して所定のパターンのデータ(たとえばall zero)の書き込みが行われる。そのためストレージシステムの大容量化が進むにつれ、初期化にはきわめて長い時間が必要になってきている。初期化が完了するまでは、ストレージシステムが使用できないため、初期化に長時間を要することはシステムにとって好ましいことではない。
 この問題を解決するために、たとえば特許文献1には、ホストからのI/O要求を受け付けながら、ディスクドライブの初期化を行うストレージシステムが開示されている。この初期化方法では、バックグラウンドで初期化を実行し、初期化によりall zero等の所定のデータパターンが書き込まれる。ホストI/Oが来ると、I/O対象領域が初期化済みの場合には、その領域に対して通常のI/Oを行う。初期化済でない場合には、I/Oがライトの場合には初期化後にデータを書き込み、I/Oがリードの場合には、初期化データをホストに返送する。これらの処理は、ストレージコントローラ、またはディスクドライブで実施される。
米国特許第7461176号明細書
 ところで高い信頼性を要求されるストレージシステムの中には、記憶デバイスへのデータライト時に、データとともに、データの妥当性検証を可能にするための、検査用コードを格納することがある。このようなストレージシステムでは、記憶領域上に、データを記憶する領域に加えて、検査用コードを格納するフィールド(DIF (Data Integrity Field)と呼ばれる)が設けられている。そしてデータライト時にストレージシステムが検査用コードを生成し、DIFに検査用コードを格納する。一般に検査用コードには、ライトデータをもとに算出される誤り検出符号と、データアクセス位置の妥当性検証を可能にするための情報(データ格納先アドレスをもとに算出される情報)が格納されるため、検査用コードの内容は、データの格納位置によって異なり得る。
 特許文献1に開示されているような初期化技術では、あらかじめ定められたデータパターンを記憶領域に書き込むことは可能であるが、データ格納位置によって異なる情報を格納することは考慮されていない。そのため、高い信頼性を要求されるストレージシステムに、特許文献1に開示の技術を導入することは困難である。
 本発明の一観点に係るストレージ装置は、複数の記憶デバイスとストレージコントローラを有する。記憶デバイスは、複数のセクタを有する記憶空間をストレージコントローラに提供しており、各セクタはライトデータ格納領域と検査用コード格納領域から構成される。記憶デバイスがストレージコントローラからリード要求を受領した時、リード対象のセクタが未書き込みの場合、リード要求に含まれている情報に基づいて検査用コードを生成し、ストレージコントローラには、所定のパターンのデータと検査用コードを送信する。
 本発明によれば、記憶デバイスに対する初期化処理を実質的に不要にすることができる。
本発明の実施例に係るストレージシステムを含む計算機システムのハードウェア構成図である。 FMPKの構成図である。 RAIDグループの説明図である。 データフォーマットの一例である。 論理物理マッピングテーブルの構成を説明する図である。 空きページリストの構成を説明する図である。 未初期化ブロックリストの構成を説明する図である。 初期化処理のフローチャートである。 ライト処理のフローチャートである。 リード処理のフローチャートである。
 以下、本発明の実施例について、図面を用いて説明する。なお、以下に説明する実施例は特許請求の範囲に係る発明を限定するものではなく、また実施例の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
 また、以後の説明では「aaaテーブル」等の表現にて本発明の情報を説明する場合があるが、これら情報は、テーブル等のデータ構造以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために「aaaテーブル」等について「aaa情報」と呼ぶことがある。また、「bbb名」等の表現にて本発明の「bbb」を識別するための情報を説明する場合があるが、これらの識別するための情報は、名前に限られず、識別子や識別番号、アドレスなど、「bbb」が特定できる情報であればよい。
 また、以後の説明では「プログラム」を主語として説明を行う場合があるが、実際には、プログラムはプロセッサ(CPU(Central Processing Unit))によって実行されることで、プロセッサが定められた処理をメモリ及びI/F(インタフェース)を用いながら行う。ただし説明が冗長になることを防ぐため、プログラムを主語として説明することがある。また、プログラムの一部または全ては専用ハードウェアによって実現されてもよい。また、各種プログラムはプログラム配布サーバや、計算機が読み取り可能な記憶メディアによって各装置にインストールされてもよい。記憶メディアとしては、例えば、ICカード、SDカード、DVD等であってもよい。
 図1は、実施例に係るストレージシステム1を含む計算機システムの構成を示す。ストレージシステム(ストレージ装置とも呼ばれる)1は、ストレージコントローラ(DKCと表記することもある)10と、ストレージコントローラ10に接続された複数の記憶デバイス(200、200’)を有する。
 記憶デバイス(200、200’)は、ホスト2などの上位装置からのライトデータを格納するために用いられる。本実施例のストレージシステム1は、記憶デバイスとして、磁気ディスクを記録媒体とするHDD(Hard Disk Drive)の他、フラッシュメモリなどの不揮発性半導体メモリを記憶媒体として用いた記憶装置であるFMPK(Flash Memory PacKage)を用いることができる。FMPKの具体的な構成については後述する。
 本実施例では、記憶デバイス200’がHDDで、記憶デバイス200がFMPKである例を説明する。そのため記憶デバイス200のことを「FMPK200」と呼び、また記憶デバイス200’のことを「HDD200’」と呼ぶこともある。ただし、記憶デバイス(200,200’)として、HDDやFMPK以外の種類の記憶デバイスを用いてもよい。また本実施例では、記憶デバイス(200、200’)はSAS(Serial Attached SCSI)規格に従って、ストレージコントローラ10との通信を行う。
 DKC10には、1以上のホスト2が接続される。DKC10とホスト2とは、一例としてファイバチャネルを用いて形成されるSAN(Storage Area Network)3を介して接続される。
 DKC10は少なくとも、プロセッサ11、ホストインタフェース(図中では「ホストIF」と表記)12、デバイスインタフェース(図中では「デバイスIF」と表記)13、メモリ14、パリティ演算回路15を有する。そしてプロセッサ11、ホストIF12、デバイスIF13、メモリ14、パリティ演算回路15は、相互結合スイッチ(相互結合SW)16を介して相互接続されている。これらの構成要素は、高性能化及び高可用性の確保のため、DKC10内に複数搭載されていてよい。ただしこれらの構成要素が1つだけDKC10内に設けられている構成でもよい。
 デバイスIF13は少なくとも、記憶デバイス200、200’と通信するためのインタフェースコントローラ131(図中では「SAS-CTL」と表記されている)、及び転送回路(非図示)を有する。インタフェースコントローラ131は、記憶デバイス200、200’で用いられているプロトコル(一例ではSAS)を、DKC10内部で用いられている通信プロトコル(一例としてPCI-Express)に変換するためのものである。本実施例では、記憶デバイス200、200’がSAS規格に従った通信を行うため、インタフェースコントローラ131にはSASコントローラ(以下、「SAS-CTL」と略記する)が用いられる。図1では、1つのデバイスIF13にSAS-CTL131が1つのみ記載されているが、1つのデバイスIF13に複数のSAS-CTL131が存在する構成を採用してもよい。
 ホストIF12は、デバイスIF13と同様に、インタフェースコントローラと転送回路(非図示)を少なくとも有する。インタフェースコントローラは、ホスト2とDKC10間で用いられている通信プロトコル(たとえばファイバチャネル)を、DKC10内部で用いられている通信プロトコルに変換するためのものである。
 パリティ演算回路15は、RAID技術で必要とされる冗長データ(パリティ)の生成を行うハードウェアである。パリティ演算回路15により生成される冗長データの例としては、排他的論理和(XOR)、リードソロモン符号等がある。
 プロセッサ11は、ホストIF12から到来するI/O要求の処理等を行う。メモリ14は、プロセッサ11が実行するプログラムや、プロセッサ11が使用するストレージシステム1の各種管理情報を記憶するために用いられる。またメモリ14は、記憶デバイス(200、200’)に対するI/O対象データを一時的に記憶するためにも用いられる。メモリ14はDRAM、SRAM等の揮発性記憶媒体で構成されるが、別の実施形態として、不揮発性メモリを用いてメモリ14を構成してもよい。
 先に述べたとおり、本実施例に係るストレージシステム1は、FMPK200、HDD200’等の、複数種類の記憶デバイスを搭載できる。ただし以下では特に断りのない限り、ストレージシステム1にFMPK200のみが搭載されている構成を前提として説明する。
 図2を用いて、FMPK200の構成について説明する。FMPK200は、デバイスコントローラ(FMコントローラ)201と複数のFMチップ210から構成される。FMコントローラ201は、メモリ202、プロセッサ203、データの圧縮伸長を行うための圧縮伸長回路204、フォーマットデータを生成するためのフォーマットデータ生成回路205、SAS-CTL206、FM-IF207を備える。メモリ202、プロセッサ203、圧縮伸長回路204、フォーマットデータ生成回路205、SAS-CTL206、FM-IF207は、内部接続スイッチ(内部接続SW)208を介して相互接続されている。
 SAS-CTL206は、FMPK200とDKC10間の通信を行うためのインタフェースコントローラである。SAS-CTL206は、伝送線(SASリンク)を介して、DKC10のSAS-CTL131に接続される。またFM-IF207は、FMコントローラ201とFMチップ210間の通信を行うためのインタフェースコントローラである。
 プロセッサ203は、DKC10から到来する各種コマンドに係る処理を行う。メモリ202は、プロセッサ203が実行するプログラムや、各種管理情報が記憶される。メモリ202には、DRAM等の揮発性メモリが用いられる。ただしメモリ202に不揮発性メモリを使用しても良い。
 圧縮伸長回路204は、データの圧縮、または圧縮されたデータの伸長を行う機能を備えたハードウェアである。なお、圧縮伸長回路204に代えて、プロセッサ203でデータ圧縮用プログラムを実行させることでデータ圧縮を行ってもよい。また、データをFMチップ210に格納する際に圧縮を行わない場合には、圧縮伸長回路204は不要である。
 フォーマットデータ生成回路205は、初期化データの生成を行うためのハードウェアである。またフォーマットデータ生成回路205に代えて、プロセッサ203でフォーマットデータ生成回路205と同等の処理を実行するプログラムを実行させることで、プロセッサ203にフォーマットデータ生成回路205の代わりをさせてもよい。
 FMチップ210は、たとえばNAND型フラッシュメモリ等の不揮発性半導体メモリチップである。フラッシュメモリは周知のとおり、ページ単位でデータの読み出し・書き込みが行われ、またデータ消去は、複数ページの集合であるブロック単位で行われる。そして一度書き込みが行われたページは上書きが出来ず、一度書き込みが行われたページに対して再度書き込みを行うためには、当該ページを含むブロック全体を消去する必要がある。そのため、FMPK200は、FMPK200が接続されるDKC10に対しては、FMチップ210の有する記憶領域をそのまま提供することはせず、論理的な記憶空間を提供する。
 続いて、ストレージシステム1で用いられる記憶領域の概念について説明する。ストレージシステム1は、複数のFMPK200を用いてRAID(Redundant Arrays of Inexpensive/Independent Disks)グループを形成する。そしてRAIDグループ内で1つ(あるいは2つ)のFMPK200に障害が発生した場合に、残りのFMPK200内のデータを用いて、障害が発生したFMPK200に格納されていたデータを復旧できるようにしている。また、RAIDグループ内の一部の記憶領域(あるいは全記憶領域)を、論理ボリュームとして、ホスト2などの上位装置に提供する。
 RAIDグループ内の記憶領域について、図3を用いて説明する。図3において、FMPK#0~FMPK#3はそれぞれ、FMPK200(200-0~200-3)がDKC10に提供している記憶空間を表している。DKC10は、複数(図3の例では4つ)のFMPK200から1つのRAIDグループ20を構成し、RAIDグループ20に所属する各FMPK(FMPK#0(200-0)~FMPK#3(200-3))上の記憶空間を、ストライプブロックと呼ぶ複数の固定サイズの記憶領域に分割して管理している。
 また図3では、RAIDグループ20のRAIDレベル(RAID技術におけるデータ冗長化方式を表すもので、一般的にはRAID1~RAID6のRAIDレベルがある)がRAID5である場合の例を表している。図3においてRAIDグループ20内の、「0」、「1」、「P」などのボックスがストライプブロックを表しており、ストライプブロックのサイズはたとえば、64KB、256KB、512KBなどである。また、各ストライプブロックに付されている、「1」等の番号のことを、「ストライプブロック番号」と呼ぶ。
 図3で、ストライプブロックのうち、「P」と記載されているストライプブロックは、冗長データの格納されるストライプブロックであり、これを「パリティストライプ」と呼ぶ。一方、数字(0、1等)が記載されているストライプブロックは、ホスト2等の上位装置から書き込まれるデータ(冗長データではないデータ)が格納されるストライプブロックである。このストライプブロックのことは、「データストライプ」と呼ばれる。
 図3に示されたRAIDグループ20では、たとえばFMPK#3(200-3)の先頭に位置するストライプブロックはパリティストライプ301-3である。そしてDKC10がこのパリティストライプ301-3に格納される冗長データを作成する際、各FMPK200(FMPK#0(200-0)~FMPK#2(200-2))の先頭に位置するデータストライプ(ストライプブロック301-0、301-1、301-2)に格納されるデータに対して所定の演算(たとえば排他的論理和(XOR)等)を施すことによって、冗長データを生成する。
 以下、パリティストライプと、当該パリティストライプに格納される冗長データを生成するために用いられるデータストライプのセット(たとえば図3中の要素300)のことを、「ストライプライン」と呼ぶ。本実施例に係るストレージシステム1の場合、図3に示されているストライプライン300のように、1つのストライプラインに属する各ストライプブロックは、FMPK200-0~200-3の記憶空間の同じ位置(アドレス)に存在するという規則で、ストライプラインが構成される。
 なお、先に説明したストライプブロック番号は、データストライプに付される番号で、RAIDグループ内で一意な番号である。図3に示されているように、DKC10は、RAIDグループ内の先頭のストライプラインに含まれるデータストライプの各々に0、1、2の番号を付す。またそれ以降のストライプラインに含まれるデータストライプにも、図3に示されているように3、4、5...の連続番号が付される。以下、ストライプブロック番号がn番(nは0以上の整数値)であるデータストライプのことを、「データストライプn」と表記する。
 本実施例に係るストレージシステム1は、RAIDグループ20の記憶領域を分割して管理する。分割された各記憶領域のことを、仮想デバイス(VDEV)と呼ぶ。なお、1つのRAIDグループ20の全記憶領域が1つのVDEVとして管理されてもよい。各VDEVにはストレージシステム1内で一意な識別番号が付される。この識別番号を、VDEV番号(またはVDEV#)と呼ぶ。またVDEV#がnのVDEVのことを「VDEV#n」と表記する。また、本実施例では、VDEV#は0以上65535以下の整数値、つまり16ビットの2進数で表現可能な範囲の値とする。
 さらに本実施例に係るストレージシステム1は、VDEVの記憶領域を分割し、分割された記憶領域からパリティストライプを除いた記憶領域をホスト2に提供する。このホスト2に提供される記憶領域を、論理デバイス(LDEV)と呼ぶ。VDEVと同様、各LDEVにもストレージシステム1内で一意な識別子が付される。この識別子を、LDEV番号(またはLDEV#)と呼ぶ。ホスト2がストレージシステム1に対してデータのライトまたはリードを行う際、LDEV#(またはLUNなどの、LDEVの識別子を導出可能な情報)を指定したライトコマンドまたはリードコマンドを発行する。
 コマンド(ライトコマンドまたはリードコマンド)には、LDEV#の他、LDEV内のアクセス対象領域のアドレス(以下、このアドレスを「LDEV LBA」と呼ぶ)も含まれている。DKC10はリードコマンドを受領すると、LDEV#とLDEV LBAを、VDEV#とVDEVの記憶空間上アドレス(以下、これを「VDEV LBA」と呼ぶ)に変換する。さらにDKC10は、VDEV#及びVDEV LBAから、FMPK200の識別子とFMPK200上のアドレス(このアドレスを「FMPK LBA」と呼ぶ)を算出し、この算出されたFMPK LBAを用いて、FMPK200からデータを読み出す。
 またDKC10はライトコマンドを受領した時には、ライト対象データの格納されるべきFMPK200のFMPK LBAに加えて、ライト対象データに対応するパリティの格納されるべきFMPK200のFMPK LBAも算出する。
 続いてFMPK200に格納されるデータのフォーマットについて説明する。ホスト2がLDEV内の記憶空間に格納されているデータにアクセスするときの最小単位は、一例として512バイトである。ストレージコントローラ10がホスト2からLDEVに対するライトコマンドとライトデータを受領すると、ストレージコントローラ10は512バイトのデータ毎に、8バイトの検査用コードを付加する。本実施例では、この検査用コードのことをDIFと呼ぶ。本実施例では、512バイトのデータとそれに付加されるDIFから成る520バイトのデータの塊(chunk)、またはこの520バイトのチャンクの格納される領域のことを、「セクタ」と呼ぶ。
 セクタのフォーマットについて、図4を用いて説明する。セクタはデータ510とDIF511から成る。データ510はホスト2から受領したライトデータが格納される領域で、DIF511はストレージコントローラ10によって付加されるDIFが格納される領域である。
 DIF511には、CRC512、LA513、APP514という3種類の情報が含まれる。CRC512は、データ510に所定の演算を施すことで生成される誤り検出符号(一例としてCRC(Cyclic Redundancy Check)が用いられる)で、2バイトの情報である。
 LA513はデータの格納位置に基づいて生成される5バイトの情報である。LA513の先頭バイト(以下これを「LA0(513-0)」と呼ぶ)には、データ510の格納先のVDEVのVDEV#を加工した情報が格納される。残りの4バイト(これを「LA1(513-1)」と呼ぶ)には、データ510の格納先アドレス(FMPK LBA)を加工した情報が記録される。ストレージコントローラ10がホスト2からライト要求を受領すると、ストレージコントローラ10はライト要求に含まれているデータ書き込み先アドレスLBAをもとに、ライトデータ格納先のVDEV#、ライトデータ格納先のFMPK及びFMPK LBAを特定することで、LA0(513-0)、LA1(513-1)に格納すべき情報を生成する。
 APP514も誤り検出符号の一種で、1バイトの情報である。APP514は、データ510とCRC512とLA513の各バイトの排他的論理和である。
 ストレージコントローラ10がFMPK200からデータを読み出す時、データ510とDIF511の両方がストレージコントローラ10に返送される。ストレージコントローラ10はデータ510に所定の演算を施してCRCを算出する。そして算出されたCRCと、DIF511内のCRC512とが一致するか判定する(以下、この判定のことを「CRCチェック」と呼ぶ)。両者が一致しない場合、FMPK200からデータが転送されてくる過程において、障害等の要因でデータ内容が変更されたことを意味する。そのため両者が一致しなかった場合には、ストレージコントローラ10は、データが正しく読み出せなかったと判断する。
 またストレージコントローラ10はFMPK200からデータを読み出すと、LA0(513-0)に含まれている情報と、リード対象データの属するVDEV#が一致するか判定する。またFMPK200に対して発行したリードコマンドに含まれるアドレス(FMPK LBA)等に所定の演算(後述)を施し、LA1(513-1)と一致するか判定する(以下、この判定のことを「LAチェック」と呼ぶ)。両者が一致しない場合、ストレージコントローラ10は、データが正しく読み出せなかったと判断する。
 続いて、FMPK200の有する管理情報、及びFMPK200で実行されるプログラムについて説明する。まず管理情報について説明する。FMPK200は少なくとも、論理物理マッピングテーブル600、空きページリスト700、未初期化ブロックリスト800の管理情報を有する。
 図5は論理物理マッピングテーブル600の構成例である。論理物理マッピングテーブル600は、論理ページ#601、LBA602、割当状態603、ブロック#604、物理ページ#605のカラムを有する。各レコードには、FMPK200のセクタについての情報が格納される。論理物理マッピングテーブル600はメモリ202に格納される。あるいは別の実施形態としてFMチップ210の一部の領域に格納されてもよい。
 LBA602がセクタのLBAを表し、論理ページ#601にはセクタが属する論理ページの論理ページ番号が格納される。物理ページ#605には、セクタが属する論理ページにマッピングされる物理ページの識別番号(物理ページ番号)が格納され、ブロック#604には、この物理ページの属するブロックの識別番号(ブロック番号)が格納される。論理ページに物理ページがマッピングされていない状態の場合、その論理ページの全セクタのブロック#604及び物理ページ#605には無効値(NULL)が格納される。なお、フラッシュメモリの最小書き込み単位はページである。そのためDKC10から論理ページの一部に対する書き込みがあった場合にも、1物理ページが論理ページにマッピングされる。物理ページが論理ページにマッピングされる時、この論理ページの全セクタのブロック#604と物理ページ#605にはそれぞれ、マッピングされた物理ページの属するブロックのブロック番号と、マッピングされた物理ページの物理ページ番号が格納される。
 割当状態603は、LBA602で特定されるセクタに対して書き込みがあったことを表す情報が格納される。セクタに対して書き込みがあると、割当状態603に“1”が格納される。書き込みが無い場合には“0”が格納される。
 論理ページには、DKC10から論理ページへの書き込みがあった時点で初めて物理ページがマッピングされる。物理ページは消去処理を行わない限り再書き込み不可能であるので、FMコントローラ201が論理ページに物理ページをマッピングする時、未書き込み状態の物理ページ(未使用物理ページ)をマッピングする。そのためにFMコントローラ201は、空きページリスト700(図6)にFMPK200内の全未使用物理ページの情報を格納して管理している。空きページリスト700のブロック#701、物理ページ#702にはそれぞれ、未使用物理ページの属するブロックのブロック番号、未使用物理ページの物理ページ番号が格納されている。
 図7に未初期化ブロックリスト800の構成を示す。未初期化ブロックリスト800は、FMPK200が初期化処理を行う際に用いられる管理情報である。未初期化ブロックリスト800には、初期化処理時に消去処理の必要なブロックのブロック番号の一覧が格納されている。
 続いて、本実施例に係るストレージシステム1で行われる、FMPK200の初期化処理について説明する。DKC10は複数のFMPK200を用いてRAIDグループを形成し、形成されたRAIDグループを用いて1以上のVDEVを定義する。さらにDKC10はVDEVを用いて、1以上のLDEVを定義する。
 なお、RAIDグループを形成するために用いられるFMPK200は、ストレージシステム1にインストール直後の未使用のFMPK200の他、過去に別用途で用いられていたFMPK200であってもよい。そのため、RAIDグループを構成する各FMPK200には、RAIDグループ形成直後には任意のデータが格納されている可能性がある。FMPK200に障害が発生した場合に、RAID技術によるデータ復旧を可能にするため、LDEV(VDEV)が定義された時点で、LDEV(VDEV)の属するRAIDグループのデータストライプ及びパリティストライプに適切な情報が格納されている必要がある。つまり各ストライプラインのパリティストライプには、同一ストライプラインの全データストライプから形成される冗長データ(パリティ)が格納された状態にしておく必要がある。
 そのため、本実施例に係るストレージシステム1では、RAIDグループを構成する各記憶デバイス200、200’のデータストライプ及びパリティストライプの全領域(DIFの格納される部分を除く)を0に設定することで、RAIDグループの初期化を行う。またRAIDグループの初期化の際、各ストライプブロックのDIFに適切な情報を格納する。DKC10は、VDEVを構成する各FMPK200に対して初期化コマンドを送信し、各FMPK200に初期化を行わせる。ただし、後述するように、実際に記憶領域(FMチップ210)に0が格納されるわけではなく、仮想的に記憶領域にall zeroが格納されている状態を各FMPK200が作り出すに過ぎない。実際にデータ(all zero)が記憶領域に書き込まれないため、初期化処理にかかる時間が実質的に0になる。
 続いてFMPK200で実行される各プログラムの処理の流れを説明する。FMPK200では少なくとも、初期化プログラム、リードプログラム、ライトプログラムが実行される。初期化プログラムはFMPK200の初期化を行うためのプログラムで、FMPK200の各セクタに、何もデータが格納されていない状態を形成する。ストレージシステム1の管理者(ユーザ)がストレージシステム1に接続された管理端末(非図示)を用いて、LDEVまたはVDEVの初期化の指示をストレージシステム1に発行したことに応じて、ストレージコントローラ10のプロセッサ11は、LDEVまたはVDEVの初期化を開始する。プロセッサ11は、LDEVまたはVDEVを構成する各FMPK200に対し、初期化コマンドを発行する。FMPK200のプロセッサ203はストレージコントローラ10から初期化コマンドを受領したことに応じて、初期化プログラムの実行を開始する。
 リードプログラムは、DKC10から受領したリードコマンドに係る処理を実行するためのプログラムである。ライトプログラムは、DKC10から受領したライトコマンドに係る処理を実行するためのプログラムである。
 まずFMPK200が実施する初期化処理の流れを、図8を用いて説明する。FMPK200がストレージコントローラ10から初期化コマンドを受領すると、プロセッサ203で初期化プログラムの実行が開始される。初期化プログラムはまず、初期化コマンドと共に送信されてくる構成情報を取得し、メモリ202に格納する(S11)。構成情報の詳細は後述する。
 続いて初期化プログラムは管理情報の初期化を行う(S12)。具体的には、論理物理マッピングテーブル600の全レコードの割当状態603が0に、ブロック#604と物理ページ#605がNULLに設定される。また空きページリスト700に格納されている物理ページの情報がすべて消去される。そして未初期化ブロックリスト800に、FMPK200内の全ブロックのブロック番号が登録される。
 続いて初期化プログラムは未初期化ブロックリスト800に登録されているブロック番号のブロックの消去を開始する(S13)。この時、たとえばブロック番号がXのブロック(以下ではこれを「ブロック#X」と表記する)の消去が完了すると、初期化プログラムは、未初期化ブロックリスト800からブロック#Xを消去し、空きページリスト700に、ブロック#Xに属する全物理ページのブロック番号及び物理ページ番号を登録する。
 所定数のブロックの消去が完了すると、初期化プログラムはストレージコントローラ10に対し、初期化が完了した旨のメッセージを通知する(S14)。S14の前までに消去が行われるブロックは、FMPK200内のブロックのうち、ごく一部のブロックだけでよい。ストレージコントローラ10はFMPK200から初期化が完了した旨のメッセージを受領すると、そのFMPK200に対してリードコマンドまたはライトコマンドを発行することができる。管理情報の初期化と、幾つかのブロックの消去が行われた時点で、FMPK200はストレージコントローラ10に初期化が完了した旨を通知するため、FMPK200は極めて短時間に初期化が完了した状態になる。
 S14の後も、初期化プログラムは未初期化ブロックリスト800に登録されているブロック番号のブロックの消去を継続する(S15)。未初期化ブロックリスト800に登録されていた全ブロックの消去が完了すると、初期化プログラムの実行が終了する。
 なお、S13、S15のブロックの消去(Erase)処理は必須の処理ではない。初期化プログラムでブロックの消去を行わず、FMPK200に対してDKC10からライトコマンドを受領した時点で、空き物理ページが無かった場合に、ブロックの消去を行ってもよい。ただし、FMPK200がS13を行わずに、DKC10からのライトコマンドの受け付けを開始すると、DKC10から受領したライトデータを格納する前にブロック消去を実施する必要が生じ、ライト時の性能が悪化する(応答時間が長くなる)。そのため本実施例に係るFMPK200では、あらかじめ所定数のブロックの消去を行っておくことにより、ストレージコントローラ10からのライトデータを即座に(ブロック消去を実行することなく)物理ページに格納できるようにしている。
 続いて、FMPK200がDKC10からライトコマンドを受信した時に実施する、ライト処理の流れを、図9を用いて説明する。DKC10がFMPK200にデータライトを行う際の最小書き込み単位はセクタである。一方FMPK200がFMチップ210に書き込みを行う際の最小書き込み単位はページ(物理ページ)で、ページサイズはセクタサイズの整数倍である(ページのサイズはセクタサイズより大きい)。そのため、DKC10からライトコマンドで指定される領域のサイズが1ページ未満等の場合には、FMPK200はいわゆるリードモディファイライトを実施することで、FMチップ210に対してページ単位の書き込みを行う。
 FMPK200がライトコマンドを受領すると、プロセッサ203でライトプログラムの実行が開始される。ライトプログラムはS110において、ライトコマンドに含まれているLBA、データ長の情報を用いて、データライト先の論理ページの論理ページ#を算出する。またS110でライトプログラムは、空きページリスト700から未使用ページを確保する。なお、空きページリスト700に物理ページ(未使用ページ)が登録されていない場合、ライトプログラムは未使用ページの確保の前に、未初期化ブロックリスト800に登録されているブロックの消去を行うことで、未使用ページの作成を行う。作成された未使用ページの情報は、空きページリスト700に登録される。
 S110で、データライト先の論理ページは複数特定されることもある。データライト先の論理ページが複数特定された場合には、ライトプログラムは未使用ページを複数確保する。ただし以下では、S110で論理ページが1ページ特定された場合の例、かつ特定された論理ページ#がn(nは0以上の整数値)の場合の例を説明する。
 続いてライトプログラムは、メモリ202上に、1ページ分のサイズの領域(以下、「バッファ」と呼ぶ)を確保する(S120)。バッファの内容の初期化(たとえば0を書き込む等)は行ってもよいし、行わなくともよい。
 S130で、ライトプログラムは、データライト先の論理ページに、すでに物理ページがマッピング済みか否か判定する。これは、論理物理マッピングテーブル600の論理ページ#601がnの行の物理ページ#605(及びブロック#604)にNULLでない値が格納されているか否かで判定可能である。物理ページ#605(及びブロック#604)がNULLの場合、データライト先の論理ページに物理ページがマッピングされていないことを意味する(S130:NO)。この場合ライトプログラムは、S140、S150をスキップして、S160以降の処理を行う。
 一方物理ページ#605(及びブロック#604)がNULLでない場合、データライト先の論理ページに物理ページがマッピングされている(S130:YES)。この場合ライトプログラムは、ライトコマンドによって指定されているライト範囲が論理ページ境界に一致しているか判定する(S140)。ライト範囲が論理ページ境界に一致している場合(つまりライト対象領域の先頭LBAが論理ページ内先頭セクタのLBAに一致し、ライト対象領域の終端LBAが論理ページ内の終端セクタのLBAと一致している場合)、S150の処理は行われない。一方ライト範囲が論理ページ境界に一致していない場合(S140:NO)、ライトプログラムは、論理ページにマッピングされている物理ページからデータを読み出して、S120で確保されたバッファに格納する(S150)。
 S160ではライトプログラムは、ライトコマンドとともに受領したライトデータを、S120で確保されたバッファに上書きする。上で述べたとおり、DKC10からライトコマンドとともに受領したライトデータには、DKC10によって512バイトのデータ毎にDIFが付加されている。続いてライトプログラムはバッファのデータを、S110で確保した物理ページに格納する(S170)。
 最後にS180において、ライトプログラムは、論理物理マッピングテーブル600の更新を行う。具体的にはライトプログラムは、論理物理マッピングテーブル600の論理ページ#601がnの行の物理ページ#605及びブロック#604に、S110で確保した物理ページの物理ページ番号及びブロック番号を格納する。またライトプログラムは、論理物理マッピングテーブル600のLBA602が、ライトコマンドで指定されたアクセス範囲に含まれる行の、割当状態603を“1”に変更する。これらの処理が終了したら、ライトプログラムはライト処理を終了する。
 続いて、FMPK200がDKC10からリードコマンドを受信した時に実施する、リード処理の流れを、図10を用いて説明する。DKC10がFMPK200にデータリードを行う際の最小読み出し単位はセクタである。
 FMPK200がリードコマンドを受領すると、プロセッサ203でリードプログラムの実行が開始される。リードプログラムはS210において、リードコマンドで指定されているアクセス範囲が、過去にライト済みの領域であるか否か確認する。具体的には、論理物理マッピングテーブル600のレコードのうち、LBA602がリードコマンドで指定されているアクセス範囲に含まれるレコードの割当状態603が“1”であれば、過去にライト済みの領域である。なお、以下では説明が冗長になることを避けるために、リードコマンドで1セクタ分の領域のリードが指定された場合の例を説明する。
 リードコマンドで指定されているアクセス範囲に含まれる行の割当状態603が“1”の場合(S220:YES)、リードプログラムはリード対象のデータが格納されている物理ページからデータを読み出してメモリ202に格納する。FMチップ210の最小読出し単位はページ(物理ページ)なので、ここでは1ページ分のデータが読み出される。そしてリードプログラムは、メモリ202上に読み出された1ページ分のデータの中から、リードコマンドでリード対象となっているデータを抽出し、DKC10に返送し(S230)、リード処理を終了する。
 リードコマンドで指定されているアクセス範囲に含まれる行の割当状態603が“0”の場合(S220:NO)、リードプログラムはフォーマットデータ生成回路205を用いて、フォーマットデータをメモリ202上に作成する(S250)。フォーマットデータの作成方法については後述する。そして作成されたデータをDKC10に返送し、リード処理を終了する。
 上ではリードコマンドで指定されているアクセス範囲が1セクタの場合について説明したが、アクセス範囲が複数セクタに跨る場合でも同様の処理が行われる。ただしアクセス範囲が複数セクタに跨る場合、アクセス範囲の領域の中に、過去にライト済みのセクタと、まだ一度もライトが行われていないセクタとが含まれていることがあり得る。その場合リードプログラムは、過去にライト済みのセクタについては、上で述べたS230の処理を行い、まだ一度もライトが行われていないセクタについては、上で述べたS250の処理を行えば良い。
 最後に、S250で行われるフォーマットデータの作成方法を説明する。本実施例では、図4のデータ510に所定のデータパターンが格納されたデータを「フォーマットデータ」と呼ぶ。データパターンの例として、all zero(全ビットが0)がある。以下ではデータ510に、all zeroが格納されたフォーマットデータを作成する場合の例を説明する。
 また、フォーマットデータの作成の際、LA513にはデータ510の属するVDEVやFMPK LBAの情報が格納される。これらの情報は初期化処理の際にDKC10から受領する構成情報に含まれており、S250では構成情報を用いてLA513が作成される。DKC10から受領する構成情報について、図3を用いて概説する。図3の例では、FMPK#0(200-0)~FMPK#3(200-3)で構成されるRAIDグループに、VDEV#100とVDEV#101が定義されている。このRAIDグループに属するFMPK200は、構成情報としてVDEV#(100と101)そして、FMPK200内の領域のうち、VDEV#100に属する領域のアドレス及びサイズ(セクタ数)、VDEV#101に属する領域のアドレス及びサイズ(セクタ数)を受領する。
(1) データ510の格納内容
 上でも述べたとおり、all zeroが格納される。なお、データストライプのデータ510とパリティストライプのデータ510のいずれにも、all zeroが格納される。all zeroのデータストライプを用いてパリティを生成すると、その内容はall zeroになるからである。
(2) CRC512の格納内容
 データ510に、all zeroが格納される場合、CRC512の値(つまりデータ510から生成されるCRC)も0になる。そのため、CRC512にもall zeroが格納される。
(3) LA0(513-0)の格納内容
 S250では、フォーマットデータ生成回路205は構成情報とリードコマンドで指定されているLBAの情報を用いて、リードコマンドで指定されているLBAがどのVDEVに属するか特定する。そして特定されたVDEVのVDEV#がLA0(513-0)に格納される。本実施例では、VDEV#は16ビットのサイズの値なので、1バイトの領域であるLA0(513-0)に収まるように、VDEV#を加工してLA0(513-0)に格納される。一例としてフォーマットデータ生成回路205はVDEV#の上位8ビットと下位8ビットを抽出し、両者の論理和を算出して得られた8ビットの情報をLA0(513-0)に格納する。ただしこれ以外の格納形式が採用されてもよい。
(4) LA1(513-1)の格納内容
 LA1(513-1)には、リードコマンドで指定されたLBA(FMPK LBA)を、リードコマンドで指定されているLBAが属するVDEVに含まれるFMPK200の領域サイズ(セクタ数)で割った剰余が格納される。たとえばリードコマンドで指定されているLBAがVDEV#100に属し、FMPK200の領域のうちVDEV#100に属する領域のサイズ(セクタ数)がmであれば、リードコマンドで指定されたLBAをmで割った剰余が格納される。
(5) APP514の格納内容
 S250でフォーマットデータ生成回路205は、データ510とCRC512とLA513の各バイトの排他的論理和を算出し、これをAPP514に格納する。
 以上が本実施例に係るストレージシステムで行われる処理の内容である。これまで説明してきたように、本実施例に係るFMPK200では、初期化処理が実行されると、各セクタの割当状態603を“0”にすることで、各セクタをデータ未書き込み状態にする。ただし初期化処理が実行される時には、FMチップ210へのデータ書き込みは行われない。初期化が行われた直後のFMPK200の各セクタに対してDKC10がリード要求を発行した場合、FMPK200は初期化状態のデータを作成してDKC10に返却することにより、見かけ上記憶領域が初期化された状態を作り出している。そのため、本実施例に係るFMPK200は極めて短時間でFMPK200の初期化を実施することができる。
 また、高い信頼性を要求されるストレージシステムの場合、記憶デバイスへのデータ格納時に、データに検査用コード(DIF)を付加して記憶デバイスに格納する。DIFには、データアクセス位置の妥当性を検証するための情報(データ格納先アドレス等)が含まれるため、ストレージシステムやボリュームの構成、データの格納位置によってDIFの採り得る値は異なる。本実施例に係るFMPK200ではストレージコントローラ10から構成情報を取得することで、DIFに格納するための情報を生成可能に構成されている。そのため、初期化時にストレージコントローラ10から初期化データを受け取ってFMチップ210に書き込む必要もない。
 以上、本発明の実施例を説明したが、これは、本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。すなわち、本発明は、他の種々の形態でも実施する事が可能である。
1: ストレージシステム、2: ホスト、3: SAN、10: ストレージコントローラ、11: プロセッサ(CPU)、12: ホストIF、13: デバイスIF、14: メモリ、16: 相互結合スイッチ、20: RAIDグループ、200: FMPK、200’: HDD、201: FMコントローラ、202: メモリ、203:  プロセッサ、204:  圧縮伸長回路、205:  フォーマットデータ生成回路、206: SAS-CTL、207:  FM―IF、208: 内部接続スイッチ、210: FMチップ

Claims (14)

  1.  デバイスコントローラと不揮発性記憶媒体を有する複数の記憶デバイスと、ストレージコントローラとを有し、
     前記記憶デバイスは前記ストレージコントローラに記憶空間を提供するよう構成されており、前記記憶空間は複数のセクタを有し、前記複数のセクタのそれぞれは、ライトデータ格納領域と前記ライトデータ格納領域に格納されたデータの検査用コードの格納領域から成り、
     前記記憶デバイスは、前記複数のセクタのうち、前記ストレージコントローラからの書き込みが行われていない第一セクタに対するリード要求を前記ストレージコントローラから受領した場合、
     所定のパターンのデータと、前記検査用コードとを生成し、前記所定のパターンのデータに前記検査用コードを付加した情報を前記ストレージコントローラに返送する、
    ことを特徴とする、ストレージ装置。
  2.  前記検査用コードには、前記ライトデータ格納領域に格納されるデータを用いて生成される誤り検出符号と、前記データの格納位置に関する情報が含まれる、
    ことを特徴とする、請求項1に記載のストレージ装置。
  3.  前記ストレージコントローラは、ホスト計算機からライト要求とライトデータを受領すると、前記ライト要求に含まれる位置情報と前記ライトデータに基づいて、前記検査用コードを生成し、前記ライトデータに前記検査用コードを付加して前記記憶デバイスに送信し、
     前記記憶デバイスは、前記ライトデータと前記検査用コードを前記不揮発性記憶媒体に格納する、
    ことを特徴とする、請求項2に記載のストレージ装置。
  4.  前記記憶デバイスは、前記セクタに対するライト要求を受領すると、前記セクタに前記不揮発性記憶媒体の記憶領域をマッピングし、前記マッピングされた記憶領域に前記ライトデータと前記検査用コードを格納し、前記セクタに前記ライトデータが書き込まれた旨と前記セクタにマッピングされた前記記憶領域の情報をマッピング情報に記録する、
    ことを特徴とする、請求項2に記載のストレージ装置。
  5.  前記記憶デバイスは、前記複数のセクタのうち、過去に前記ストレージコントローラからの書き込みが行われたセクタに対するリード要求を受領した時、
     前記セクタにマッピングされた前記記憶領域に格納されたデータを、前記ストレージコントローラに返送する、
    ことを特徴とする、請求項4に記載のストレージ装置。
  6.  前記デバイスコントローラは、前記ストレージコントローラから初期化指示を受領すると、前記マッピング情報をクリアする、
    ことを特徴とする、請求項4に記載のストレージ装置。
  7.  前記不揮発性記憶媒体は、データの消去単位であるブロックを複数有するフラッシュメモリであって、
     前記デバイスコントローラは、前記初期化指示を受領すると、複数の前記ブロックのうち、所定数の前記ブロックの消去を行った後、
     前記ストレージコントローラに、前記初期化指示に係る処理が完了した旨を返答する
    ことを特徴とする、請求項6に記載のストレージ装置。
  8.  前記ストレージコントローラは、前記複数の記憶デバイスの有する記憶空間を用いて1以上の論理的記憶空間を形成し、
     前記ストレージコントローラは前記検査用コードを生成する時、前記論理的記憶空間の識別子を前記検査用コードに格納するよう構成されており、
     前記記憶デバイスは、前記ストレージコントローラから前記初期化指示を受領する時に、前記記憶デバイスの属する前記論理的記憶空間の識別子を受領し、
     前記記憶デバイスが前記検査用コードを生成する時、前記受領した識別子を前記検査用コードに格納する、
    ことを特徴とする、請求項6に記載のストレージ装置。
  9.  デバイスコントローラと不揮発性記憶媒体を有し、ストレージ装置に接続される記憶デバイスであって、
     前記デバイスコントローラは前記ストレージ装置に複数のセクタを有する記憶空間を提供するよう構成されており、前記複数のセクタのそれぞれは、ライトデータ格納領域と前記ライトデータ格納領域に格納されたデータの検査用コードの格納領域から構成されており、
     前記デバイスコントローラは、前記複数のセクタのうち、前記ストレージ装置からの書き込みが行われていない第一セクタに対するリード要求を前記ストレージ装置から受領した時、
     所定のパターンのデータと、前記検査用コードを生成し、前記所定のパターンのデータに前記検査用コードを付加した情報を前記ストレージ装置に返送する、
    ことを特徴とする、記憶デバイス。
  10.  前記検査用コードには、前記ライトデータ格納領域に格納されるデータを用いて生成される誤り検出符号と、前記データの格納位置に関する情報が含まれる、
    ことを特徴とする、請求項9に記載の記憶デバイス。
  11.  前記デバイスコントローラは、前記セクタに対するライト要求を受領すると、前記セクタに前記不揮発性記憶媒体の記憶領域をマッピングし、前記マッピングされた記憶領域に前記ライトデータと前記検査用コードを格納し、前記セクタに前記ライトデータが書き込まれた旨と前記セクタにマッピングされた前記記憶領域の情報をマッピング情報に記録する、
    ことを特徴とする、請求項10に記載の記憶デバイス。
  12.  前記デバイスコントローラは、前記複数のセクタのうち、過去に前記ストレージ装置からの書き込みが行われたセクタに対するリード要求を受領した時、
     前記セクタにマッピングされた前記記憶領域に格納されたデータを、前記ストレージ装置に返送する、
    ことを特徴とする、請求項11に記載の記憶デバイス。
  13.  前記デバイスコントローラは、前記ストレージ装置から初期化指示を受領すると、前記マッピング情報をクリアする、
    ことを特徴とする、請求項11に記載の記憶デバイス。
  14.  前記不揮発性記憶媒体は、データの消去単位であるブロックを複数有するフラッシュメモリであって、
     前記デバイスコントローラは、前記初期化指示を受領すると、複数の前記ブロックのうち、所定数の前記ブロックの消去を行った後、
     前記ストレージ装置に、前記初期化指示に係る処理が完了した旨を返答する
    ことを特徴とする、請求項13に記載の記憶デバイス。
PCT/JP2015/066212 2015-06-04 2015-06-04 ストレージ装置 WO2016194199A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US15/558,063 US20180067676A1 (en) 2015-06-04 2015-06-04 Storage device
JP2017521450A JP6453457B2 (ja) 2015-06-04 2015-06-04 ストレージ装置
PCT/JP2015/066212 WO2016194199A1 (ja) 2015-06-04 2015-06-04 ストレージ装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/066212 WO2016194199A1 (ja) 2015-06-04 2015-06-04 ストレージ装置

Publications (1)

Publication Number Publication Date
WO2016194199A1 true WO2016194199A1 (ja) 2016-12-08

Family

ID=57442261

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/066212 WO2016194199A1 (ja) 2015-06-04 2015-06-04 ストレージ装置

Country Status (3)

Country Link
US (1) US20180067676A1 (ja)
JP (1) JP6453457B2 (ja)
WO (1) WO2016194199A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021166029A (ja) * 2020-04-01 2021-10-14 株式会社日立製作所 ストレージ装置

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10445506B2 (en) * 2016-03-30 2019-10-15 Airwatch Llc Detecting vulnerabilities in managed client devices

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003150321A (ja) * 2001-11-09 2003-05-23 Matsushita Electric Ind Co Ltd 仮想記憶デバイス管理装置、仮想記憶デバイス管理方法、仮想記憶デバイス管理プログラム及び仮想記憶デバイスが記録されたコンピュータ読み取り可能な記録媒体
JP2005011317A (ja) * 2003-05-02 2005-01-13 Hitachi Ltd ストレージシステムを初期化する方法と装置
JP2012516477A (ja) * 2009-05-27 2012-07-19 株式会社日立製作所 ストレージ装置、及びその制御方法、並びにプログラム
JP2015075845A (ja) * 2013-10-07 2015-04-20 富士通株式会社 ストレージ制御装置、制御プログラムおよび制御方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7334124B2 (en) * 2002-07-22 2008-02-19 Vormetric, Inc. Logical access block processing protocol for transparent secure file storage
US7275139B1 (en) * 2004-12-02 2007-09-25 Tormasov Alexander G Secure deletion of information from hard disk drive
JP5107833B2 (ja) * 2008-08-29 2012-12-26 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
US8365057B2 (en) * 2009-07-30 2013-01-29 Mellanox Technologies Ltd Processing of data integrity field
US8484414B2 (en) * 2009-08-31 2013-07-09 Hitachi, Ltd. Storage system having plurality of flash packages
US9086983B2 (en) * 2011-05-31 2015-07-21 Micron Technology, Inc. Apparatus and methods for providing data integrity
US8539142B2 (en) * 2011-09-30 2013-09-17 Hitachi, Ltd. Storage system comprising nonvolatile semiconductor storage media
JP5900063B2 (ja) * 2012-03-19 2016-04-06 日本電気株式会社 ストレージ装置およびストレージ装置における初期化方法
JP5586718B2 (ja) * 2012-06-19 2014-09-10 株式会社東芝 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置
US20130346723A1 (en) * 2012-06-22 2013-12-26 Hitachi, Ltd. Method and apparatus to protect data integrity
JP5695126B2 (ja) * 2013-05-14 2015-04-01 株式会社日立製作所 計算機システム、サーバモジュール及びストレージモジュール
US10102060B2 (en) * 2013-08-30 2018-10-16 Hitachi, Ltd. Storage apparatus and data control method of storing data with an error correction code
WO2015072028A1 (ja) * 2013-11-18 2015-05-21 株式会社日立製作所 ストレージ制御装置
US10061710B2 (en) * 2014-01-29 2018-08-28 Hitachi, Ltd. Storage device
KR102188062B1 (ko) * 2014-02-28 2020-12-07 삼성전자 주식회사 데이터 저장 장치의 동작 방법과 상기 데이터 저장 장치를 포함하는 시스템의 동작 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003150321A (ja) * 2001-11-09 2003-05-23 Matsushita Electric Ind Co Ltd 仮想記憶デバイス管理装置、仮想記憶デバイス管理方法、仮想記憶デバイス管理プログラム及び仮想記憶デバイスが記録されたコンピュータ読み取り可能な記録媒体
JP2005011317A (ja) * 2003-05-02 2005-01-13 Hitachi Ltd ストレージシステムを初期化する方法と装置
JP2012516477A (ja) * 2009-05-27 2012-07-19 株式会社日立製作所 ストレージ装置、及びその制御方法、並びにプログラム
JP2015075845A (ja) * 2013-10-07 2015-04-20 富士通株式会社 ストレージ制御装置、制御プログラムおよび制御方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021166029A (ja) * 2020-04-01 2021-10-14 株式会社日立製作所 ストレージ装置
JP7197541B2 (ja) 2020-04-01 2022-12-27 株式会社日立製作所 ストレージ装置

Also Published As

Publication number Publication date
US20180067676A1 (en) 2018-03-08
JPWO2016194199A1 (ja) 2017-10-12
JP6453457B2 (ja) 2019-01-16

Similar Documents

Publication Publication Date Title
US9910748B2 (en) Rebuilding process for storage array
CN107111535B (zh) 存储系统中的加速数据恢复
US9465561B2 (en) Storage system and storage control method
US9009395B2 (en) Storage subsystem and its data processing method for reducing the amount of data to be stored in nonvolatile memory
US10768838B2 (en) Storage apparatus and distributed storage system
US8799745B2 (en) Storage control apparatus and error correction method
US10691339B2 (en) Methods for reducing initialization duration and performance impact during configuration of storage drives
US20230229328A1 (en) Systems, Methods, and Computer Readable Media Providing Arbitrary Sizing of Data Extents
US10372538B2 (en) Computer system
US20150074371A1 (en) Storage array system and non-transitory recording medium storing control program
US10067833B2 (en) Storage system
WO2015029230A1 (ja) 記憶装置及びデータ制御方法
US12007840B2 (en) Storage controller, operation method thereof
WO2014188479A1 (ja) ストレージ装置及びストレージ装置の制御方法
US9990261B2 (en) System and method for recovering a storage array
US11625193B2 (en) RAID storage device, host, and RAID system
JP6453457B2 (ja) ストレージ装置
US8418029B2 (en) Storage control device and storage control method
CN107808686B (zh) 读出错测试方法与装置
US20130159765A1 (en) Storage subsystem and method for recovering data in storage subsystem
US20120260034A1 (en) Disk array apparatus and control method thereof
EP2924576A1 (en) Storage control apparatus, control program, and control method
US11221790B2 (en) Storage system
CN116401063A (zh) 一种raid的资源分配方法、装置、设备及介质

Legal Events

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

Ref document number: 15894232

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2017521450

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 15558063

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15894232

Country of ref document: EP

Kind code of ref document: A1