WO2014155525A1 - ストレージシステム及び制御方法 - Google Patents

ストレージシステム及び制御方法 Download PDF

Info

Publication number
WO2014155525A1
WO2014155525A1 PCT/JP2013/058783 JP2013058783W WO2014155525A1 WO 2014155525 A1 WO2014155525 A1 WO 2014155525A1 JP 2013058783 W JP2013058783 W JP 2013058783W WO 2014155525 A1 WO2014155525 A1 WO 2014155525A1
Authority
WO
WIPO (PCT)
Prior art keywords
dirty
storage controller
data block
block
storage
Prior art date
Application number
PCT/JP2013/058783
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 PCT/JP2013/058783 priority Critical patent/WO2014155525A1/ja
Priority to US14/759,989 priority patent/US20150339058A1/en
Publication of WO2014155525A1 publication Critical patent/WO2014155525A1/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • G06F2212/284Plural cache memories being distributed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/285Redundant cache memory

Definitions

  • the present invention relates to a technology of a storage system and a control method.
  • a storage system that improves fault tolerance on a cache memory by duplicating a write data block received from a host and storing it in the cache memory (for example, Patent Document 1).
  • data blocks for redundancy hereinafter referred to as “parity blocks”.
  • the process of writing the write data block to the two cache memories leads to an increase in I / O (Input / Output) load of the cache memory. Also, the process of generating a parity block can lead to an increase in the I / O load of the cache memory. An increase in the I / O load of the cache memory may cause a decrease in response performance of the storage system.
  • an object of the present invention is to reduce the I / O load on the cache memory.
  • a storage system includes a storage controller that has a first cache memory and receives a write command for a data block, and a write that follows a write command that has a non-volatile memory composed of a plurality of physical areas.
  • a storage device that provides a plurality of logical areas including the target logical area corresponding to the target.
  • the storage controller stores the data block related to the received write command in an indeterminate state in the first cache memory, and stores the data block in an indeterminate state in association with the address of the target logical area.
  • An indeterminate write command requesting is sent to the storage device.
  • the storage device receives an indeterminate write command from the storage controller, stores the data block related to the indeterminate write command in a free physical area among a plurality of physical areas, and stores the physical area in the undetermined physical area Are assigned to the target logical area.
  • the I / O load on the cache memory can be reduced and the response performance of the storage system can be improved.
  • FIG. 1 is a block diagram showing an overall configuration of a storage system. It is a figure for demonstrating the outline
  • 6 shows a flowchart of a write command reception process of the storage controller.
  • 6 shows a flowchart of write data reception processing of the storage controller.
  • the flowchart of the dirty data CM & FM duplication process of a storage controller is shown.
  • the flowchart of the dirty data CM duplication process of a storage controller is shown.
  • 6 shows a flowchart of a new parity block generation process of the storage controller.
  • the flowchart of the new parity block duplication process of a storage controller is shown.
  • 6 shows a flowchart of a dirty data confirmation process of a storage controller.
  • 5 shows a flowchart of FMPK read command reception processing.
  • 5 shows a flowchart of FMPK dirty read command reception processing.
  • 6 shows a flowchart of FMPK write command reception processing.
  • 5 shows a flowchart of FMPK dirty write command reception processing.
  • 5 shows a flowchart of FMPK dirty confirmation command reception processing.
  • 6 shows a flowchart of FMPK dirty discard command reception processing. It is a figure for demonstrating the duplication process of a dirty block when a failure generate
  • produces in a storage controller is shown.
  • 5 shows a flowchart of FMPK dirty block confirmation command reception processing. It is a block diagram which shows the whole structure of the storage system which concerns on 2nd Embodiment. 9 shows a flowchart of write data reception processing of the storage controller according to the second embodiment.
  • the storage device is described as an FMPK (Flash Memory Package) using an FM (Flash Memory) chip as a storage medium, but other devices may be used.
  • FMPK Flash Memory Package
  • FM Flash Memory
  • FIG. 1 is a block diagram showing the overall configuration of the storage system 1.
  • the storage system 1 includes, for example, a storage controller 10 # 0, a storage controller 10 # 1, and a drive enclosure 3.
  • the storage system 1 transmits and receives data blocks to and from the host 2 via the communication network N.
  • storage controller 10 when the storage controllers 10 # 0 and # 1 are not distinguished, they are simply referred to as “storage controller 10”.
  • the storage controller 10 includes a host I / F (Interface) 11, a CPU (Central Processing Unit) 12, a cache memory (hereinafter referred to as “CM (Cache Memory)”) 13, a parity calculation circuit 14, and a node I / F 15.
  • CM Central Processing Unit
  • the communication network N is configured by, for example, a SAN (Storage Area Network).
  • the SAN is composed of, for example, Fiber Channel, Ethernet (registered trademark) and / or Infiniband.
  • the communication network N may be a LAN, the Internet network, a leased line network, or a combination thereof.
  • the host I / F 11 is an I / F for connecting the communication network N and the storage controller 10.
  • the host I / F 11 is interposed between the communication network N and the internal bus 18 and controls transmission / reception of data blocks.
  • the host I / F 11 receives an I / O (Input / Output) request from the host 2.
  • I / O destination information is associated with the I / O request.
  • the I / O destination information includes an I / O destination logical volume ID (for example, LUN (Logical Unit Number)) and an I / O destination area address (for example, LBA (Logical Block Address)) in the logical volume. Yes.
  • the I / O command is a write command or a read command.
  • the CPU 12 executes a computer program (hereinafter referred to as “program”) to realize various functions of the storage controller 10.
  • the program may be stored in a non-volatile memory (not shown) in the storage controller 10, or may be stored in an external storage device or the like.
  • the CPU 12 provides each of the one or more FMPKs 20 each providing one or more logical pages corresponding to the I / O destination area specified from the I / O destination information associated with the I / O command from the host 2.
  • An I / O command associated with the address of the logical page corresponding to the I / O destination area is transmitted.
  • the I / O command sent to the FMPK 20 may be associated with the ID (eg, number) of the FMPK 20 that is the destination of the I / O command in addition to the logical page address.
  • the CM 13 temporarily holds (caches) the data block.
  • the CM 13 may be configured by a nonvolatile memory.
  • the nonvolatile memory may be a flash memory or a magnetic disk memory.
  • the CM 13 may be configured to include a backup power source in a volatile memory.
  • the volatile memory may be a DRAM (Dynamic Random Access Memory) or the like.
  • the backup power source may be a predetermined battery (battery).
  • the host I / F 11, CPU 12, and / or drive I / F 17 may execute data block writing and reading with respect to the CM 13 via the internal bus 17.
  • the node I / F 15 is an I / F for connecting the storage controllers 10 to each other.
  • the node I / F 15 may be a communication network I / F such as Infiniband, Fiber Channel, or Ethernet (registered trademark), or a bus I / F such as PCI Express.
  • a storage controller 10 # 0 and a storage controller 10 # 1 are connected via a node I / F 15.
  • the drive I / F 17 is an I / F for connecting the storage controller 10 and the drive enclosure 3.
  • the drive I / F 17 is interposed between the internal bus 17 and an FMPK (Flash Memory Package) 20 and controls transmission / reception of data blocks.
  • the drive I / F 17 may be an I / F corresponding to SAS or Fiber Channel.
  • the drive I / F 17 may transmit the data block received from the FMPK 20 to the CM 13 or transmit the data block received from the parity calculation circuit 14 to the FMPK 20.
  • the drive enclosure 3 includes, for example, FMPK20 # 0, # 1, # 2, and # 3.
  • FMPK20 when FMPK20 # 0, # 1, # 2, and # 3 are not distinguished, they are simply referred to as “FMPK20”.
  • the drive enclosure 3 may have any number of FMPKs 20.
  • the drive enclosure 3 may be connected to another non-volatile memory such as SSD (Solid State Drive) and / or HDD (Hard Disk Drive) instead of or together with the FMPK 20.
  • the drive I / F 17 and the FMPK 20 may be connected by a SAS (Serial Attached SCSI), an FC (Fibre Channel), or a SATA (Serial AT Attachment).
  • SAS Serial Attached SCSI
  • FC Fibre Channel
  • SATA Serial AT Attachment
  • the FMPK 20 in the drive enclosure 3 receives an I / O command (write command or read command) in which the address of the logical page provided by the FMPK 20 is specified from the storage controller 10 and responds to the received I / O command. Execute the process.
  • I / O command write command or read command
  • the storage system 1 may have two or more drive enclosures 3.
  • the drive I / F 17 has a plurality of ports, and one drive enclosure 3 may be connected to one port of the drive I / F 17.
  • two or more drive enclosures 3 and one drive I / F 17 may be connected via a predetermined switch device (not shown).
  • two or more drive enclosures 3 may be connected in cascade.
  • FIG. 2 is a diagram for explaining the outline of the duplexing process for dirty blocks.
  • the storage controller 10 receives a write command and a data block to be written (hereinafter referred to as “write data block”) from the host 2, the storage controller 10 temporarily stores the write data block in the CM 13 and sends a completion response to the host 2. return. That is, the storage controller 10 returns a completion response to the host 2 before storing the write data block in the FMPK 20.
  • the write performance (write speed) of the CM 13 is higher (higher speed) than that of the FMPK 20, so that the response performance of the storage system 1 to the host 2 is increased.
  • a write data block for which formal writing to the FMPK 20 has not been completed is referred to as a “dirty block”.
  • the storage system 1 may discard the dirty block stored in the CM 13 after the dirty block is formally written to the FMPK 20. This is because the storage system 1 can read the officially written data block from the FMPK 20.
  • the storage system 1 holds dirty blocks in a duplicated manner. This is to improve the fault tolerance of the storage system 1.
  • the storage system 1 according to the present embodiment duplicates dirty blocks by either the following first method or second method.
  • the storage system 1 stores the dirty block in the CM 13 of the storage controller 10 # 0 and the CM 13 of the storage controller 10 # 1.
  • an outline of processing of the storage system 1 according to the first method will be described.
  • the storage controller 10 # 0 that has received the write data block stores this write data block as a dirty block # 1 in its own CM 13 (S11). Then, the storage controller 10 # 0 also stores this dirty block # 1 in the CM 13 of the storage controller 10 # 1 (S12). As a result, the dirty block # 1 is stored (duplicated) in two locations, the CM 13 of the storage controller 10 # 0 and the CM 13 of the storage controller 10 # 1.
  • the storage controller 10 # 0 stores the dirty data # 1 stored in the CM 13 in the FMPK 20 # 1 as a formal data block # 1 at a predetermined or arbitrary timing (S13).
  • the storage system 1 stores the dirty block in the CM 13 and the FMPK 20.
  • the outline of the processing of the storage system 1 according to the second method will be described below.
  • the storage controller 10 # 0 that has received the write data block stores this write data block in the CM 13 as a dirty block # 0 (S21). Then, the storage controller 10 writes the dirty block # 0 stored in the CM 13 as the dirty block # 0 to the FMPK 20 # 0 (S22). As a result, the dirty block # 0 is stored (duplicated) in two locations, the CM 13 of the storage controller 10 # 0 and the FMPK 20 # 0.
  • the storage controller 10 # 0 issues a command (hereinafter referred to as “confirmation command”) for confirming the dirty block # 0 to the formal data block # 0 with respect to the FMPK 20 # 0 at a predetermined or arbitrary timing. Transmit (S23).
  • the confirmation command is associated with the logical page address and the FMPK 20 number.
  • the FMPK 20 that has received the confirmation command changes the management information related to the dirty block # 0 to the formal data block # 0. Therefore, the data block is not duplicated in the FMPK 20 by this confirmation command.
  • the storage system 1 has functions of both the first method and the second method, and further has a function of appropriately switching between the first method and the second method.
  • the storage system 1 may have only the function of the second method.
  • the storage system 1 may multiplex dirty blocks by combining the first method and the second method.
  • FIG. 3 is a diagram for explaining an overview of the parity block generation process.
  • the storage system 1 stores the data in the FMPK 20 with redundancy. This is to improve the fault tolerance of the storage system 1.
  • RAID 5 which is one method for making data redundant, data is made redundant by using two or more data blocks and a parity block calculated from these data blocks. The outline of the parity block generation processing will be described below based on the relationship with the second method.
  • the storage controller 10 stores the dirty blocks # 0, # 1, and # 2 in the CM 13 and each of the FPMKs # 0, # 1, and # 2, and the dirty blocks # 0, # 1, and # 2. 2 is duplicated (S31).
  • the storage system 1 has a 3D1P configuration that generates one parity block from three data blocks.
  • the storage controller 10 has all the dirty blocks # 0, # 1, and # 2 that satisfy the parity cycle in the CM 13, so that the parity block from the dirty blocks # 0, # 1, and # 2 in the CM 13 is obtained.
  • Generate (S32) is assumed that the storage system 1 has a 3D1P configuration that generates one parity block from three data blocks.
  • the storage controller 10 writes the generated parity block to the FMPK 20 # 3.
  • the storage controller 10 transmits a confirmation command to each of the FMPKs 20 # 0, # 1, and # 2, and sets the dirty blocks # 0, # 1, and # 2 to the formal data blocks # 0, # 1, and # 2. 2 (S34).
  • each of the FMPKs 20 # 0, # 1, and # 2 changes the management information related to the dirty blocks # 0, # 1, and # 2 to the formal data blocks # 0, # 1, and # 2.
  • the data blocks # 0, # 1, # 2 and the corresponding parity blocks are stored in the FMPKs 20 # 0, # 1, # 2, # 3.
  • FIG. 4 is a block diagram showing a logical configuration of the storage area of the CM 13.
  • the CM 13 includes a control information area 31 and a data area 32 as a logical configuration of the storage area.
  • data blocks are stored.
  • the write data block transmitted from the host 2 may be cached as a dirty block.
  • the data block read from the FMPK 20 may be cached as a clean block (the meaning of “clean” will be described later).
  • control information area 31 information for controlling the data area 32 is stored.
  • a cache directory 41 information for controlling the data area 32 is stored.
  • segment management block 42 information for controlling the data area 32 is stored.
  • queue management information 43 information for controlling the data area 32 is stored.
  • drive configuration information 44 information for controlling the data area 32 is stored.
  • CM usage rate information 45 information for controlling the data area 32 is stored.
  • segment management block may be referred to as “SGCB (Segment Control Block)”.
  • SGCB Segment Control Block
  • the cache directory 41 has information for managing the SGCB 42.
  • the SGCB 42 has information for managing the data area 32 of the CM 13. Details of the cache directory 41, SGCB 42, and SGCB pointer 51 will be described later (see FIG. 5).
  • the queue management information 43 includes information for managing a predetermined SGCB 42 as a queue. Details of the queue management information 43 will be described later (see FIG. 6).
  • the drive configuration information 44 includes information regarding the configuration and type of the storage device (FMPK 20 or the like) that provides the logical volume.
  • the drive configuration information 44 may include information indicating the position of the FMPK 20 within the drive enclosure 3. .
  • the drive configuration information 44 may include information regarding the relationship between the logical volume provided by the FMPK 20 and the logical volume assigned to the host 2.
  • the CM usage rate information 45 includes information on the usage rate of the CM 13 (hereinafter referred to as “CM usage rate”).
  • the CM usage rate may be the amount of data input / output (or the number of data blocks input / output) per predetermined time of the internal bus 18 with respect to the CM 13.
  • the CPU 12 may measure the input / output amount of the internal bus 18 with respect to the CM 13 and calculate the CM usage rate based on the measurement result.
  • the CPU 12 may calculate the CM usage rate based on the following formula.
  • CM usage rate (number of clocks per predetermined time assigned to data transfer processing to CM 13) / (total number of clocks per predetermined time) x 100 [%]
  • the predetermined time may be an elapsed time from when the CPU 12 starts measurement, or may be a unit time.
  • FIG. 5 is a diagram for explaining the configuration of the cache directory 41 and the SGCB 42.
  • the cache directory 41 has one or more SGCB pointers 51.
  • the cache directory 41 may manage a plurality of SGCB pointers 51 as a hash table.
  • the SGCB pointer 51 an address indicating a predetermined SGCB 42 is stored.
  • the SGCB pointer 51 may have a corresponding relationship with an LBA (Logical Block Address). That is, the storage controller 10 may specify the SGCB pointer 51 from the LBA and specify the SGCB 42 from the specified SGCB pointer 51.
  • the LBA may be disclosed to an external device such as the host 2.
  • the read command / write command transmitted from the host 2 may include an LBA indicating the read / write position of the data block.
  • the storage controller 10 may read / write the data block as follows. That is, the storage controller 10 specifies the SGCB pointer 51 corresponding to the LBA included in the read command / write command from the cache directory 41. Then, the storage controller 10 specifies the SGCB 42 pointed to by the specified SGCB pointer 51. In this way, the storage controller 10 identifies the SGCB 42 corresponding to the LBA.
  • the SGCB 42 has a next SGCB pointer 61, a bidirectional pointer 62, a segment address 63, a slot number 64, and a slot attribute 66.
  • next SGCB pointer 61 an address indicating the next SGCB 42 is stored.
  • the bidirectional pointer 62 stores the addresses of other SGCBs 42 located before and after the linked list composed of SGCBs 42. Details of the linked list will be described later (see FIG. 6).
  • the segment address 63 stores an address indicating a segment corresponding to the SGCB 42.
  • the slot number 64 stores an address in the logical volume of the segment corresponding to the SGCB 42.
  • the slot attribute 66 stores information (hereinafter referred to as “attribute information”) indicating which of the following attributes (A) to (E) the segment corresponding to the SGCB 42 has.
  • Clean “Clean” indicates that the data block stored in the segment corresponding to the SGCB 42 has already been formally stored in the FMPK 20. Such a data block is sometimes referred to as a “clean block”. Since the clean block has already been stored in the FMPK 20 as an official data block, a failure does not occur even if it is deleted from the CM 13.
  • (E) Free “Free” indicates that no data block is stored in the segment corresponding to the SGCB 42 and writing is possible.
  • the fact that the data block is not officially stored in the FMPK 20 means that the physical page storing the data block is managed as a dirty physical page. More specifically, it means a state where the value of the dirty physical page number 303 associated with the logical page number 301 corresponding to the data block is not managed as the physical page number 302 in the mapping management table 81.
  • that the data block is formally stored in the FMPK 20 means that the physical page storing the data block is managed as a physical page that is not a dirty physical page.
  • a state managed as a normal physical page (a physical page in which a data block is stored is not a dirty physical page or a physical page number 302) is also called a confirmed state, and a dirty physical page (physical page number 303) ) Is managed as an indeterminate state.
  • FIG. 6 is a diagram for explaining a linked list managed by the queue management information 43.
  • the queue management information 43 includes information for managing (A) a clean queue linked list, (B) a dirty queue linked list, and (C) a free queue linked list.
  • A a clean queue linked list
  • B a dirty queue linked list
  • C a free queue linked list.
  • a clean queue MRU (Most Recently Used) pointer 10 is linked to the top of the clean queue linked list, and a clean queue LRU (Least Recently Used) pointer 102 is linked to the end.
  • the clean queue MRU pointer 101 stores an address indicating the SGCB 42 connected to the rear side of the clean queue MRU pointer 101.
  • the clean queue LRU pointer 102 stores an address indicating the SGCB 42 connected in front of itself.
  • the clean queue MRU pointer 101 and the clean queue LRU pointer 102 are managed by the queue management information 43.
  • the SGCB 42 of the new clean block with the access (use) date and time closer to the clean queue MRU pointer 101 is the SGCB 42 of the clean block with the old access (use) date and time closer to the clean queue LRU pointer 102. It is.
  • the SGCB 42 corresponding to this clean block is linked immediately after the clean queue MRU pointer 101 in the clean queue linked list.
  • the SGCBs 42 are connected bidirectionally by a bidirectional pointer 62.
  • the storage controller 10 refers to the queue management information 43, specifies the clean queue MRU pointer 101 (or clean queue LRU pointer 102), and traces the linked list from the clean queue MRU pointer 101, so that the new (or old) clean date and time of access
  • the SGCB 42 of the block can be traced sequentially.
  • Dirty queue MRU pointer 111 is linked to the head of the dirty queue linked list, and dirty queue LRU pointer 112 is linked to the end.
  • the dirty queue MRU pointer 111 stores an address indicating the SGCB 42 connected to the rear of the dirty queue MRU pointer 111.
  • the dirty queue LRU pointer 112 stores an address indicating the SGCB 42 connected in front of itself.
  • Dirty queue MRU pointer 1111 and dirty queue LRU pointer 112 are managed by queue management information 43.
  • the SGCB 42 of the dirty block with the new access (use) date is closer to the dirty queue MRU pointer 111, and the SGCB 42 of the dirty block with the old access (use) date is closer to the dirty queue LRU pointer 112. It is.
  • the SGCB 42 corresponding to this dirty block is linked immediately after the dirty queue MRU pointer 111 in the dirty queue linked list.
  • the SGCBs 42 are connected bidirectionally by a bidirectional pointer 62.
  • the storage controller 10 identifies the dirty queue MRU pointer 1111 (or the dirty queue LRU pointer 1112) with reference to the queue management information 43, and traces the linked list from the dirty queue MRU pointer 1111 so that the new (or old) dirty date / time of the access date / time.
  • the SGCB 42 of the block can be traced sequentially.
  • the free queue start pointer 121 is linked to the top of the linked list of free queues, and the NULL pointer 122 is linked to the end.
  • the free queue start pointer 121 stores an address indicating the SGCB 42 connected to the free queue start pointer 121.
  • the free queue start pointer 121 is managed by the queue management information 43. For example, when a certain data block is erased and the segment becomes free, the SGCG corresponding to the segment is concatenated immediately before the NULL pointer 122.
  • the SGCBs 42 are connected in one direction (one direction) by a bidirectional pointer 62.
  • the storage controller 10 can trace the free SGCB 42 in order by specifying the free queue start pointer 121 with reference to the queue management information 43 and tracing the linked list therefrom.
  • FIG. 7 shows a data configuration example of the drive configuration information 44.
  • the drive configuration information 44 includes information related to a drive (FMPK 20 or the like) included in the drive enclosure 3.
  • the drive configuration information 44 includes, as items, a drive number 201, a drive type 202, a dirty write function 203, and a drive status 204.
  • the drive number 201 a number that can identify a drive in the drive enclosure 3 is stored.
  • the drive number 201 stores an ID uniquely assigned to the drive.
  • the drive type 202 stores information that can identify the type of drive.
  • the type of drive such as HDD, SSD, or FMPK, is stored.
  • the dirty write function 203 information indicating whether or not the drive is compatible with the dirty write function 203 is stored. For example, “YES” is stored when the drive is compatible with the dirty write function 203, and “NO” is stored when the drive is not compatible.
  • the drive corresponding to the dirty write function 203 has the following functions (A) and (B).
  • (B) A function for associating a dirty block with a logical page as a formal data block (that is, a function corresponding to a confirmation command). This is because the storage controller 10 can store the dirty block in the drive as a formal data block without writing the dirty block on the CM 13 to the drive again.
  • the drive status 204 stores information indicating whether or not the drive is operating normally. For example, “OK” is stored when the drive is operating normally, and “NG” is stored when any abnormality occurs.
  • FIG. 8 is a block diagram showing the configuration of the FMPK20.
  • the FMPK 20 includes an FM controller 21 and one or more FM (Flash Memory) 77.
  • the FM controller 21 includes a drive I / F 71, a CPU 72, a logical operation circuit 73, a buffer memory 74, a main memory 75, and an FM I / F 76. Any of these elements 71 to 76 may be two or more. These elements 71 to 76 are connected by an internal bus 78 capable of bidirectional data transmission / reception.
  • the drive I / F 71 mediates data transmission / reception between the FM controller 21 and the storage controller 10.
  • the drive I / F 71 is an interface corresponding to SAS or Fiber Channel, and may be connected to the drive I / F 17 of the storage controller 10.
  • the logical operation circuit 73 has a function of calculating a parity block or an intermediate parity block.
  • the logical operation circuit 73 may have a function of performing compression, expansion, encryption, and / or decryption, for example.
  • the CPU 72 executes predetermined programs to realize various functions of the FM controller 21.
  • the program may be stored in an internal non-volatile memory (not shown), or may be stored in an external storage device.
  • the main memory 75 holds various programs and data blocks used by the CPU 72 and / or the logic operation circuit 73 during execution.
  • the main memory 75 is composed of, for example, a DRAM.
  • Buffer memory 74 buffers data blocks that are written / read to / from FM 77.
  • the buffer memory 74 is configured by, for example, a DRAM or the like.
  • the main memory 314 and the buffer memory 315 may be configured as physically the same memory.
  • FM I / F 76 mediates transmission / reception of data blocks between FM controller 21 and FM 77.
  • the FM77 is a nonvolatile memory chip and has a function of holding a data block.
  • the FM 77 may be a flash memory chip, or other non-volatile memory chip, for example, a PRAM (Phase change RAM) chip, an MRAM (Magnetic Resistive RAM) chip, a ReRAM (Resistance RAM); It may be a resistance change memory) chip or the like.
  • FIG. 9 shows information that the FMPK 20 has.
  • the FMPK 20 has a mapping management table 81 and dirty page management information 82.
  • the mapping management table 81 manages the correspondence between a logical page, which is a logical page provided by the FMPK 20, and a physical page indicating an actual storage area (segment) of the FM 77.
  • a logical page which is a logical page provided by the FMPK 20
  • a physical page indicating an actual storage area (segment) of the FM 77.
  • FIG. 10 is a diagram for explaining the relationship between logical pages and physical pages.
  • the FMPK 20 divides and manages the storage area of the FM 77 in units of physical pages.
  • the FMPK 20 collectively manages a predetermined number of physical pages in units of physical blocks.
  • the FMPK 20 manages physical pages and logical pages in association with each other.
  • the mapping management table 81 manages the correspondence (mapping) between the physical page and the logical page.
  • the FMPK 20 stores a new data block in a free physical page, and associates the logical page with the physical page in which the new data block is stored in the mapping management table 81. In the case of the NAND flash memory, the data block is overwritten on the logical page in this way.
  • the NAND flash memory has a limit (lifetime) on the number of rewrites for each storage area related to the physical block. Therefore, the FM controller 21 moves a data block stored in a certain physical page to another physical page at a predetermined or arbitrary timing so that the same physical block is not rewritten frequently. Further, the FM controller 21 erases data blocks that are stored in the physical block but become unnecessary at a predetermined or arbitrary timing. Such processing is called reclamation.
  • the FMPK 20 may update the mapping management table 81 in accordance with the movement of data blocks by reclamation.
  • the FMPK 20 may manage the correspondence between logical pages and LBAs.
  • the FMPK 20 may disclose this LBA space to the storage controller 10. That is, the storage controller 10 may request reading and writing of a data block by designating an LBA.
  • FIG. 11 shows a configuration example of the mapping management table 81.
  • the mapping management table 81 includes, as items, a logical page number 301, a physical page number 302, a dirty physical page number 303, and a dirty logical page bidirectional number 304.
  • the logical page number 301 stores a number for identifying a logical page.
  • the physical page number 302 stores a number for identifying a physical page. Therefore, the logical page number 301 and the physical page number 302 in the record 310a and the like indicate the correspondence relationship between the logical page and the physical page.
  • the physical page number 302 of the physical page storing the dirty block (hereinafter referred to as “dirty physical page”) is stored. That is, a dirty block is stored in the physical page indicated by the dirty physical page number 303. Accordingly, the record 310a and the like of the mapping management table 81 indicate the correspondence relationship between the logical page, the physical page, and the dirty physical page. When there is no dirty physical page corresponding to the logical page, “NULL” is stored in the dirty physical page number 303.
  • two physical pages and dirty physical pages can be associated with one logical page.
  • the dirty block stored in the dirty physical page is eventually determined as a formal data block (that is, a formal physical page) of the logical page.
  • the FMPK 20 receives a confirmation command from the storage controller 10
  • the value stored in one or a plurality of dirty physical page numbers 303 storing dirty blocks is changed to the dirty physical page number 303 on the mapping management table 81.
  • the dirty physical page number 303 is set to “NULL” to determine the dirty block as a formal data block.
  • the dirty logical page bidirectional number 304 is used when a linked list of dirty logical pages is configured. Next, a linked list of dirty logical pages will be described with reference to the drawings.
  • FIG. 12 is a diagram for explaining the configuration of a linked list of dirty logical pages.
  • dirty logical page linked list logical pages that store dirty blocks are linked.
  • Dirty logical page MRU number 401 is linked to the top of the dirty logical page linked list, and dirty logical page LRU number 402 is linked to the end.
  • the dirty logical page MRU number 401 stores the logical page number 301 of the logical page connected to the rear of the dirty logical page MRU number 401.
  • the dirty logical page LRU number 402 stores the logical page number 301 of the logical page connected in front of itself.
  • the logical pages are bi-directionally connected to other logical pages by the dirty logical page bidirectional number 304 in the mapping management table 81 shown in FIG.
  • the dirty logical page MRU number 401 and the dirty logical page LRU number 402 are managed by the dirty page management information 82.
  • the one closer to the dirty logical page MRU number 401 indicates the new dirty block having the access (use) date and time
  • the one closer to the dirty logical page LRU number indicates the dirty block having the old access (use) date and time.
  • the logical page is linked immediately after the dirty logical page MRU number.
  • the FM controller 21 can identify the logical page associated with the dirty physical page without referring to all the records in the mapping management table 81 by referring to the linked list of dirty logical pages. That is, the FM controller 21 can efficiently search for a dirty physical page by referring to the linked list of dirty logical pages.
  • FIG. 13 shows a flowchart of the write command reception process of the storage controller 10.
  • the processing subject is the storage controller 10, but the processing subject may be the CPU 12 of the storage controller 10.
  • the storage controller 10 When the storage controller 10 receives a write command from the host 2 (S101), it executes the following processing.
  • the write command may include an LBA indicating the write destination.
  • the storage controller 10 secures a cache segment on the CM 13 for storing the write data block related to the write command (S102).
  • the storage controller 10 generates an SGCB 42 corresponding to the secured cache segment and stores it in the cache directory 41 (S103).
  • the storage controller 10 transmits a write preparation completion response to the host 2 when the cache segment can be normally secured and the write data block can be received (S104). Then, the storage controller 10 proceeds to the next write data reception process.
  • FIG. 14 shows a flowchart of write data reception processing of the storage controller 10.
  • the storage controller 10 executes the following processing.
  • the storage controller 10 stores the write data block in the cache segment secured in step S102 (S202).
  • the storage controller 10 refers to the dirty write function 203 of the drive configuration information 44, and determines whether or not the dirty write function 203 of the write target drive is “YES” (S203). Here, it is assumed that the target drive is FMPK20.
  • the storage controller 10 refers to the drive status 204 of the drive configuration information 44 and determines whether the drive status 204 of the FMPK 20 is “OK”. Is determined (S204).
  • the storage controller 10 refers to the CM usage rate information 45 and determines whether or not the CM usage rate is equal to or higher than a predetermined threshold (S205). ).
  • the storage controller 10 determines that the write data block is cached in two locations, CM13 and FMPK20 (CM & FM duplexing), and “dirty data CM & FM duplexing processing” is performed. Is executed (S206). Details of the “dirty data CM & FM duplex processing” will be described later (see FIG. 15). Then, the storage controller 10 returns a completion response to the write command to the host 2 (S210) and ends the processing.
  • the storage controller 10 determines that the write data block is cached at two locations of the own CM 13 and the other CM 13 (CM duplex), and executes “dirty data CM duplex processing” (S207). ). Details of the “dirty data CM duplexing process” will be described later (see FIG. 16). Then, the storage controller 10 returns a write data block write process completion response to the host 2 (S210), and ends the process.
  • the storage system 1 can appropriately switch between “CM duplex processing” and “CM & FM duplex processing” based on the load of the input / output amount of data with respect to the CM 13. That is, the storage system 1 determines to execute “CM duplex processing” when the load of the data input / output amount with respect to the CM 13 is relatively small, and “CM & FM duplex processing” when the load of the data input / output amount with respect to the CM 13 is relatively large. "Is executed. Thereby, the storage controller 10 can reduce a response delay to the host 2 that may occur when the load of the data input / output amount in the CM 13 is relatively high.
  • FIG. 15 shows a flowchart of the dirty data CM & FM duplex processing of the storage controller 10.
  • the storage controller 10 refers to the slot attribute 66 of the SGCB 42 corresponding to the cache segment to be processed, and determines whether or not the slot attribute 66 is “dirty (CM duplex)” (S301). If the slot attribute 66 is not “dirty (CM duplex)” (S301: NO), the storage controller 10 proceeds to step S303.
  • the storage controller 10 invalidates the dirty block cached in the CM 13 of the other storage controller 10 (S302), and the process goes to step S303. move on. As a result, it is possible to prevent the other storage controller 10 from erroneously referring to the old dirty block on the CM 13.
  • the storage controller 10 transmits a dirty write command to the FMPK 20 and requests to write the write data block (dirty block) on the CM 13 as a dirty block (S303). This is because the dirty block is stored (duplicated) in two locations, CM13 and FMPK20.
  • the dirty write command may be associated with the logical page address and the FMPK 20 number. The processing of the FMPK 20 that has received the dirty write command will be described later (see FIG. 23).
  • the storage controller 10 Upon receiving the dirty write command completion response from the FMPK 20 (S304), the storage controller 10 changes the slot attribute 66 of the SGCB 42 to “dirty (CM duplex)” (S305), and the processing in step S206 and subsequent steps in FIG. Return.
  • FIG. 16 shows a flowchart of the dirty data CM duplex processing of the storage controller 10.
  • the storage controller 10 refers to the slot attribute 66 of the SGCB 42 corresponding to the cache segment to be processed, and determines whether or not the slot attribute 66 is “dirty (CM & FM duplex)” (S401). If the slot attribute 66 is not “dirty (CM & FM duplex)” (S301: NO), the storage controller 10 proceeds to step S403.
  • the storage controller 10 transmits a dirty discard command to the FMPK 20 and requests the discard of the dirty block corresponding to the LBA included in the command. (S402).
  • the dirty discard command may be associated with the logical page address and the FMPK 20 number.
  • the FMPK 20 that has received the dirty discard command discards the correspondence between the logical page corresponding to the LBA and the dirty physical page. Details of this processing will be described later (see FIG. 25). Thereby, it is possible to prevent the self-system or other-system storage controller 10 from erroneously referring to the old dirty block on the FMPK 20.
  • the storage controller 10 secures a cache segment in the CM 13 of the other storage controller 10 (S403).
  • the storage controller 10 updates the cache directory 41 of the other storage controller 10 (S404). That is, the storage controller 10 generates an SGCB 42 corresponding to the secured cache segment, and stores the SGCB 42 in the cache directory 41.
  • the storage controller 10 writes the dirty block stored in the CM 13 of the own storage controller 10 to the cache segment secured in the CM 13 of the other storage controller 10 (S405). As a result, the dirty block is duplicated by the own CM 13 and the other CM 13.
  • the storage controller 10 changes the slot attribute 66 of the SGCB 42 to “dirty (CM duplex)” (S406), and returns to the processing after step S207 in FIG.
  • the dirty block is duplicated.
  • This dirty block is finally stored in the FM 77 as a formal data block, and is made redundant by RAID 5 or the like.
  • FIG. 17 shows a flowchart of a new parity block generation process of the storage controller 10.
  • the storage controller 10 determines whether or not dirty blocks for parity cycles are arranged in the CM 13 (S501). That is, the storage controller 10 determines whether or not full stripe write processing is possible with the dirty block stored in the CM 13.
  • the storage controller 10 uses the parity calculation circuit 14 to change a new parity block (hereinafter referred to as “new parity block” from the dirty block on the CM 13). Is generated) (S502), and the process ends.
  • the storage controller 10 corresponds to the data block (hereinafter referred to as “old data block”) already stored in the FM 17 corresponding to the dirty block and the FM 17 already. Is read from the FM 17 (hereinafter referred to as “old parity block”) (S503).
  • the storage controller 10 generates a new parity block from the dirty block, the old data block, and the old parity block on the CM 13 using the parity calculation circuit 14 (S504), and ends the processing. That is, the storage controller 10 executes the read modify write process when the full stripe write process is impossible.
  • the storage controller 10 may execute the following new parity block duplex processing after the new parity block generation processing.
  • FIG. 18 shows a flowchart of the new parity block duplex processing of the storage controller 10.
  • the storage controller 10 refers to the drive configuration information 44 to determine whether or not the dirty write function 203 of the write target FMPK 20 is “YES” (S601). Here, it is assumed that the write target drive is FMPK20.
  • the storage controller 10 refers to the drive configuration information 44 to determine whether the drive status 204 of the write target FMPK 20 is “OK”. It is determined whether or not (S602).
  • the storage controller 10 determines whether or not the CM usage rate is equal to or higher than a predetermined threshold (S603).
  • the storage controller 10 When the CM usage rate is equal to or higher than the predetermined threshold (S603: YES), the storage controller 10 writes the new parity block to the FMPK 20 to be written (S604), and ends the process. That is, the storage controller 10 stores (duplicates) the new parity block in two locations, CM 13 and FMPK 20.
  • the storage controller 10 secures a cache segment in the CM 13 of the other system (S611). Then, the storage controller 10 stores the new parity block in the secured cache segment (S612) and ends the process. In other words, the storage controller 10 stores (duplicates) the new parity block in two locations, the local CM 13 and the other CM 13.
  • FIG. 19 shows a flowchart of the dirty confirmation process of the storage controller 10.
  • Dirty confirmation refers to changing a dirty block to a formal data block in the FMPK 20 as described above.
  • the storage controller 10 determines whether or not the slot attribute 66 of the SGCB 42 to be processed is “dirty (CM & FM duplex)” (S701).
  • the storage controller 10 transmits a dirty block confirmation command to the FMPK 20 (S702).
  • the confirmation command is a command for instructing the FMPK 20 to formally store the dirty block held on the FMPK 20. More specifically, a data block managed as a dirty physical page (physical page number 303) on the FMPK 20 is changed from a normal physical page (a physical page or physical page in which the physical page storing the data block is not a dirty physical page). This is a command for instructing management as page number 302).
  • the storage controller 10 receives a completion response to the confirmation command from the FMPK 20 (S703), the storage controller 10 proceeds to step S721.
  • the storage controller 10 transmits a write command for writing the dirty block on the CM 13 as an official data block to the FMPK 20 (S711). ).
  • the storage controller 10 receives a completion response to the write command from the FMPK 20 (S712), the storage controller 10 proceeds to step S721.
  • the storage controller 10 changes the slot attribute 66 of the SGCB 42 to be processed to “clean” (S721). Then, the storage controller 10 updates the queue (linked list) (S722) and ends the process.
  • FIG. 20 shows a flowchart of the FMPK 20 read command reception process.
  • the processing subject is FMPK20, but the processing subject may be the FM controller 21 or the CPU 72 of the FMPK20.
  • the FMPK 20 When the FMPK 20 receives a read command from the storage controller 10 (S801), it executes the following processing.
  • the read command may include an LBA indicating the start point of the data block to be read and the size of the data block to be read from the LBA.
  • the read command may be associated with the logical page address and the FMPK 20 number.
  • the FMPK 20 refers to the mapping management table 81 and identifies a logical page corresponding to the LBA (S802).
  • the FMPK 20 reads the data block from the physical page corresponding to the logical page (S803).
  • the FMPK 20 includes the read data block in the read command completion response and transmits it to the storage controller 10 (S804), and ends the processing.
  • FIG. 21 shows a flowchart of the dirty read command reception process of FMPK20.
  • the FMPK 20 When the FMPK 20 receives a dirty read command from the storage controller 10 (S901), the FMPK 20 executes the following processing.
  • the dirty read command may include an LBA indicating the start point of the dirty block to be read and the size of the dirty block to be read from the LBA.
  • the dirty read command may be associated with the logical page address and the FMPK 20 number.
  • the FMPK 20 refers to the mapping management table 81 and identifies a logical page corresponding to the LBA (S902). Then, the FMPK 20 refers to the mapping management table 81 and determines whether or not a value is stored in the dirty physical page number 302 associated with the logical page (S903).
  • the FMPK 20 When a value is stored in the dirty physical page number 302 (S903: YES), the FMPK 20 reads a dirty block from the physical page indicated by the value of the dirty physical page number 302 (S904).
  • the FMPK 20 includes the read dirty block in the dirty read command completion response and sends it to the storage controller 10 (S905), and the process ends.
  • the FMPK 20 indicates that there is no dirty block corresponding to the logical page, and a dirty read command completion response To the storage controller 10 (S910), and the process ends.
  • FIG. 22 shows a flowchart of the FMPK 20 write command reception process.
  • the FMPK 20 When the FMPK 20 receives the write command and the write data block from the storage controller 10 (S1001), the FMPK 20 executes the following processing.
  • the write command may include an LBA indicating the write start point and the size of the write data block.
  • the write command may be associated with the logical page address and the FMPK 20 number.
  • the FMPK 20 reserves a “free” physical page for storing the write data block (S1002).
  • the FMPK 20 writes the write data block to the reserved “free” physical page (S1003).
  • the FMPK 20 specifies the logical page number 301 corresponding to the LBA in the mapping management table 81, and the number (value) indicating the physical page in which the write data block is written to the physical page number 302 corresponding to the logical page number 301. Is stored (S1004).
  • the FMPK 20 transmits a write command completion response to the storage controller 10 (S1005) and ends the processing.
  • FIG. 23 shows a flowchart of the dirty write command reception process of FMPK20.
  • the dirty write command may include an LBA indicating the start point of the write and the size of the dirty block.
  • the dirty write command may be associated with the logical page address and the FMPK 20 number.
  • the dirty write command is a command for storing the data block in the undetermined state on the FMPK 20 and may be called an undetermined write command.
  • the FMPK 20 refers to the mapping management table 81 and identifies the logical page corresponding to the LBA (S1102). The FMPK 20 determines whether or not a value has been stored in the dirty physical page number 302 corresponding to the logical page (S1103).
  • the FMPK 20 proceeds to step S1105.
  • the FMPK 20 changes the dirty physical page number 302 to “NULL” in the mapping management table 81 (S1104), and proceeds to step S1105.
  • the FMPK 20 secures a “free” dirty physical page for storing the dirty block (S1105).
  • the FMPK 20 writes the dirty block to the secured “free” dirty physical page (S1106).
  • the FMPK 20 specifies the logical page number 301 corresponding to the LBA in the mapping management table 81, and the number (value) indicating the dirty physical page in which the dirty block is written to the dirty physical page number 302 corresponding to the logical page number 301. Is stored (S1107).
  • the FMPK 20 updates the queue (linked list) (S1108).
  • the FMPK 20 transmits a dirty write command completion response to the storage controller 10 (S1109).
  • the process ends.
  • the FMPK 20 receives a dirty write command for a certain logical page, the FMPK 20 holds the received data block as a dirty physical page while holding the data block associated with the logical page as a physical page. Store on FMPK 20 (ie, as an indeterminate state).
  • FIG. 24 shows a flowchart of the FMPK 20 dirty confirmation command reception process.
  • the dirty block confirmation command may include an LBA indicating the dirty block to be confirmed.
  • the logical block address and the FMPK 20 number may be associated with the dirty block confirmation command.
  • the FMPK 20 refers to the mapping management table 81 and identifies the logical page corresponding to the LBA (S1202). The FMPK 20 determines whether or not a value has already been stored in the physical page number 302 corresponding to the logical page (S1203).
  • the FMPK 20 proceeds to step S1205.
  • the FMPK 20 changes the physical page number 302 to “NULL” in the mapping management table 81 (S1204), and proceeds to step S1205.
  • the FMPK 20 moves the value of the existing dirty physical page number 302 to the physical page number 302 in the mapping management table 81 (S1205).
  • the FMPK 20 changes the dirty physical page number 302 to “NULL” in the mapping management table 81 (S1206).
  • the FMPK 20 updates the queue (linked list) (S1207).
  • the FMPK 20 transmits a completion response to the confirmation command to the storage controller 10 (S1208). The process ends.
  • FIG. 25 shows a flowchart of the FMPK20 dirty block discard command reception process.
  • the FMPK 20 executes the following processing.
  • the dirty block discard command may include an LBA indicating the dirty block to be discarded.
  • the logical block address and the FMPK 20 number may be associated with the dirty block discard command.
  • the FMPK 20 refers to the mapping management table 81 and identifies a logical page corresponding to the LBA (S1302).
  • the FMPK 20 changes the dirty physical page number 302 associated with the logical page in the mapping management table 81 to “NULL” (S1303).
  • the FMPK 20 updates the queue (linked list) (S1304).
  • the FMPK 20 transmits a response indicating that the processing of the dirty discard command has been completed to the storage controller 10 (S1305). The process ends.
  • the storage system 1 can reduce the I / O load on the CM 13 by duplicating the dirty block by “CM & FM duplication” as compared with the case of duplicating the dirty block by “CM duplication”. it can.
  • the storage system 1 can maintain or improve the response performance to the host 2 by appropriately switching between “CM & FM duplexing” and “CM duplexing” based on the CM usage rate. This is because, when the CM usage rate is high (the I / O load on the CM 13 is high), waiting for a dirty block to be written to the CM 13 occurs when the CM is duplicated. That is, since the write speed of the FM 77 is sufficiently high, the total write processing time may be shorter when the dirty block is written to the FM 77 than when the dirty block is written to the CM 13 having a high CM usage rate.
  • FIG. 26 is a diagram for explaining a dirty block duplication process when a failure occurs in FMPK20 # 0.
  • data block # 0 is stored in FMPK20 # 0
  • data block # 1 is stored in FMPK20 # 1
  • data block # 2 is stored in FMPK20 # 2
  • parity blocks are stored in FMPK20 # 3. This parity block is generated from the data blocks # 0 to # 2. Dirty block # 0 is duplicated by CM13 and FMPK20 # 0.
  • the dirty block # 0 and the data block # 0 stored in the FMPK 20 # 0 are lost.
  • the dirty block # 0 also exists in the CM 13.
  • the dirty block # 0 can be restored from the data block # 1, the data block # 2, and the parity block. Therefore, the dirty block # 0 and the data block # 0 are not lost in the entire storage system.
  • the storage controller 10 reads the data blocks # 1 and # 2 from the FMPKs 20 # 1 and # 2 to the CM 13 (S41).
  • the storage controller 10 generates a new parity block from the data blocks # 1 and # 2 and the dirty block # 0 stored in the CM 13 (S42).
  • the storage controller 10 writes the new parity block to, for example, FMPK20 # 3 (S43).
  • the dirty block # 0 is made redundant.
  • FIG. 27 is a diagram for explaining the read command processing of the storage controller 10 when a failure occurs in the FMPK 20 # 0.
  • data block # 0 is stored in FMPK20 # 0
  • data block # 1 is stored in FMPK20 # 1
  • data block # 2 is stored in FMPK20 # 2
  • parity block is stored in FMPK20 # 3. This parity block is generated from the data blocks # 0 to # 2.
  • the FMPK 20 # 1 has a dirty block # 1 having a correspondence relationship with the data block # 1 in the logical page.
  • the storage controller 10 receives a read command for the data block # 0 from the host 2 in a state where a failure has occurred in the FMPK 20 # 0. In this case, the storage controller 10 cannot read the data block # 0 from the FMPK 20 # 0. Therefore, the storage controller 10 executes the following processing.
  • the storage controller 10 reads the data block # 1, the data block # 2, and the parity block from the FMPKs 20 # 1 to # 3 to the CM 13 (S51). At this time, the dirty block # 1 is stored in the FMPK 20 # 1, but the storage controller 10 reads the data block # 1 instead of the dirty block # 1 from the FMPK 20 # 1.
  • the storage controller 10 restores the data block # 0 from the data block # 1, the data block # 2, and the parity block (S52).
  • the storage controller 10 returns the restored data block # 0 to the host 2 as a response to the read command (S53).
  • the storage controller 10 can restore the data block stored in the FMPK 20 even when a failure occurs in a certain FMPK 20.
  • FIG. 28 is a diagram for explaining a dirty block duplication process when a failure occurs in the storage controller 10 # 0.
  • data block # 0 is stored in FMPK20 # 0
  • data block # 1 is stored in FMPK20 # 1
  • data block # 2 is stored in FMPK20 # 2
  • parity block is stored in FMPK20 # 3. This parity block is generated from the data blocks # 0 to # 2.
  • the dirty block # 0 is duplicated by the CM 13 of the storage controller 10 # 0 and the CM 13 of the storage controller 10 # 1.
  • Dirty block # 1 is duplicated by CM 13 and FMPK 20 # 1 of storage controller 10 # 0.
  • FIG. 29 shows a flowchart of processing when a failure occurs in the storage controller 10. This process is executed by the storage controller 10 in which no failure has occurred.
  • the storage controller 10 executes the following steps S1402 to S1405 for each drive stored in the drive enclosure 3 (S1401).
  • each drive will be described as being FMPK20.
  • the storage controller 10 refers to the mapping management table 81 and determines whether or not the dirty write function 203 of the target FMPK 20 (hereinafter referred to as “target FMPK”) of the current loop processing is “YES” (S1402).
  • step S1402 If the dirty write function 203 of the target FMPK 20 is “NO” (S1402: NO), the storage controller 10 proceeds to step S1406. This is because there is no dirty block in the target FMPK20.
  • the storage controller 10 transmits a dirty block confirmation command to the target FMPK 20 (S1403). That is, the storage controller 10 confirms whether there is a dirty block in the target FMPK 20 by a dirty block confirmation command. Although details of this dirty block confirmation command will be described later, the storage controller 10 returns the LBA in which the dirty block is stored when there is a dirty block, and the response “NULL” when there is no dirty block. Receive.
  • the storage controller 10 confirms the response to the dirty block confirmation command and determines whether or not there is a dirty block in the target FMPK 20 (S1404).
  • step S1406 If it is determined that there is no dirty block in the target drive (S1404: NO), the storage controller 10 proceeds to step S1406.
  • the storage controller 10 makes this dirty block redundant (S1405) and proceeds to step S1406.
  • the storage controller 10 may make this dirty block redundant by generating a new parity block as shown in FIG. 26, or may be duplicated by copying it to its own CM 13.
  • the storage controller 10 determines whether or not an unprocessed FMPK 20 remains. If it remains, the process returns to step S1401. If not, the storage controller 10 exits the loop process and ends the process (S1406).
  • FIG. 30 shows a flowchart of the dirty block confirmation command reception process of FMPK20.
  • the FMPK 20 When the FMPK 20 receives a dirty block confirmation command from the storage controller 10 (S1501), the FMPK 20 executes the following processing.
  • the FMPK 20 refers to the dirty page management information 82 and determines whether or not there is a dirty block in its own FMPK 20 (S1502). For example, the determination is made based on whether or not the dirty logical page MRU number 401 is “NULL”.
  • the FMPK 20 If there is no dirty block (S1502: NO), the FMPK 20 returns “NULL” to the storage controller 10 as a response to the dirty block confirmation command (S1604), and ends the processing.
  • the FMPK 20 If a dirty block exists (S1502: YES), the FMPK 20 returns the LBA indicated by the dirty logical page MRU number to the storage controller 10 as a response to the dirty block confirmation command (S1503), and ends the processing.
  • the storage controller 10 that has received the LBA indicated by the dirty logical page MRU number 401 can read each data block and make it redundant by following this linked list.
  • FIG. 31 is a block diagram showing the overall configuration of the storage system 1b according to the second embodiment.
  • the storage system 1b according to the second embodiment is the same as the storage system 1 according to the first embodiment, except that only one storage controller 10 is provided.
  • the processing of the storage system 1b when a write command is received from the host 2 in the second embodiment will be described.
  • FIG. 32 shows a flowchart of the write data reception process of the storage controller 10b according to the second embodiment.
  • the write command reception process is the same as that shown in FIG.
  • the storage controller 10b When the storage controller 10b receives the write data block from the host 2 (S2001), the storage controller 10b executes the following processing.
  • the storage controller 10b stores the write data block in the cache segment secured on the CM 13 (S2002).
  • the storage controller 10 refers to the dirty write function 203 of the drive configuration information 44, and determines whether or not the dirty write function 203 of the write target FMPK 20 (drive) is “YES” (S2003).
  • the storage controller 10b refers to the drive status 204 of the drive configuration information 44 and determines whether the drive status 204 of the target FMPK 20 is “OK”. It is determined whether or not (S2004).
  • the storage controller 10 determines that the write data block is cached at two locations of the CM 13 and the FMPK 20 (CM & FM duplex), and “dirty data CM & FM” The “duplication process” is executed (S2005). “Dirty data CM & FM duplex processing” is the same as FIG. Then, the storage controller 10 returns a write command completion response to the host 2 (S2010), and ends the processing.
  • the storage controller 10 determines that the write data block is cached in one place (CM unification), and the slot attribute 66 of the corresponding SGCB 42 is changed to “dirty (CM unification)” (S2006). Then, the storage controller 10 returns a completion response to the write command to the host 2 (S2010), and ends the processing.
  • CM 13 only one storage controller
  • data blocks can be duplicated and cached. That is, according to the second embodiment, fault tolerance in a storage system having only one CM 13 can be improved.
  • the storage device may include a nonvolatile memory (storage medium) configured by a plurality of physical areas and a media controller that accesses the nonvolatile memory in response to a request from the storage controller.
  • a nonvolatile memory storage medium
  • media controller that accesses the nonvolatile memory in response to a request from the storage controller.
  • the media controller may provide a plurality of logical areas to a higher-level device such as a storage controller.
  • the media controller may allocate a physical area to a write-destination logical area designated by a higher-level device, and write data to be written to the allocated physical area.
  • the media controller may assign the first type and the second type physical area to the same logical area.
  • the first type physical area may be a storage area as the final storage destination of data (storage destination of data to be destaged (clean data)), and an example thereof is a physical page in a fixed state (clean). Good.
  • the second type physical area may be a storage area as a cache data storage destination, and an example thereof may be an indeterminate (dirty) physical page.
  • the non-volatile memory may be a write-once memory that cannot be overwritten. That is, it is not necessary to overwrite data in either the first type or second type physical area.
  • the media controller when the first physical area is allocated to the destage destination logical area, the media controller replaces the free physical area with the allocated first type physical area and sets the destage destination logical area.
  • the data to be destaged may be written to the allocated physical area.
  • the data stored in the allocated first type physical area changes from valid data (data recently stored in the destage destination logical area) to invalid data (data older than the valid data), and the destage destination Data stored in the physical area newly assigned to the logical area may be valid data for the destage destination logical area.
  • the media controller allocates a free physical area to the cache destination logical area instead of the allocated second type physical area.
  • the data to be cached may be written in the allocated free physical area.
  • the data stored in the allocated second type physical area changes from valid data (data recently stored in the cache destination logical area) to invalid data (data older than the valid data), and the cache destination logical area.
  • the data stored in the newly allocated physical area may be valid data for the cache destination logical area.

Abstract

 ストレージコントローラは、受信したライトコマンドに係るデータブロックを未確定状態として第1のキャッシュメモリに格納し、そのライトコマンドに従うライト先に対応する対象の論理領域のアドレスを関連付けたコマンドであってデータブロックを未確定状態として格納することを要求する未確定ライトコマンドをストレージデバイスに送信する。ストレージデバイスは、複数の物理領域で構成された不揮発性メモリを有しており、ストレージコントローラからの未確定ライトコマンドに係るデータブロックを複数の物理領域のうちの空きの物理領域に格納し、その物理領域を未確定状態の物理領域として対象の論理領域に割り当てる。

Description

ストレージシステム及び制御方法
 本発明は、ストレージシステム及び制御方法の技術に関する。
 ホストから受信したライト用データブロックを二重化してキャッシュメモリに格納することにより、キャッシュメモリ上における耐障害性を高めるストレージシステムが知られている(例えば、特許文献1)。また、RAID(Redundant Arrays of Inexpensive Disks)5等に基づいて、冗長化用のデータブロック(以下「パリティブロック」という)を生成してストレージデバイスに格納することにより、ストレージデバイス上における耐障害性を高めるストレージシステムが知られている。
特開平7-160432号公報
 二箇所のキャッシュメモリにライト用データブロックをライトする処理は、キャッシュメモリのI/O(Input/Output)負荷の増大につながる。また、パリティブロックを生成する処理も、キャッシュメモリのI/O負荷の増大につながり得る。キャッシュメモリのI/O負荷の増大は、ストレージシステムの応答性能の低下を招く虞がある。
 そこで、本発明の目的は、キャッシュメモリに対するI/O負荷を低減することにある。
 本発明の一実施形態に係るストレージシステムは、第1のキャッシュメモリを有しデータブロックのライトコマンドを受信するストレージコントローラと、複数の物理領域で構成された不揮発性メモリを有しライトコマンドに従うライト先に対応する対象の論理領域を含んだ複数の論理領域を提供するストレージデバイスとを備える。
 ストレージコントローラは、受信したライトコマンドに係るデータブロックを未確定状態として第1のキャッシュメモリに格納し、対象の論理領域のアドレスを関連付けたコマンドであって、データブロックを未確定状態として格納することを要求する未確定ライトコマンドを、ストレージデバイスに送信する。
 ストレージデバイスは、ストレージコントローラから未確定ライトコマンドを受信し、未確定ライトコマンドに係るデータブロックを複数の物理領域のうちの空きの物理領域に格納し、その物理領域を、未確定状態の物理領域として、対象の論理領域に割り当てる。
 本発明によれば、キャッシュメモリに対するI/O負荷を低減し、ストレージシステムの応答性能を高めることができる。
ストレージシステムの全体構成を示すブロック図である。 ダーティブロックの二重化処理の概要を説明するための図である。 パリティブロック生成処理の概要を説明するための図である。 キャッシュメモリの記憶領域の論理的な構成を示すブロック図である。 キャッシュディレクトリ及びセグメント管理ブロックの構成を説明するための図である。 キュー管理情報によって管理される連結リストを説明するための図である。 ドライブ構成情報のデータ構成例を示す。 FMPKの構成を示すブロック図である。 FMPKの有する情報を示す。 論理ページと物理ページとの関係を説明するための図である。 マッピング管理テーブルの構成例を示す。 ダーティ論理ページの連結リストの構成を説明するための図である。 ストレージコントローラのライトコマンド受信処理のフローチャートを示す。 ストレージコントローラのライトデータ受信処理のフローチャートを示す。 ストレージコントローラのダーティデータCM&FM二重化処理のフローチャートを示す。 ストレージコントローラのダーティデータCM二重化処理のフローチャートを示す。 ストレージコントローラの新パリティブロック生成処理のフローチャートを示す。 ストレージコントローラの新パリティブロック二重化処理のフローチャートを示す。 ストレージコントローラのダーティデータ確定処理のフローチャートを示す。 FMPKのリードコマンド受信処理のフローチャートを示す。 FMPKのダーティリードコマンド受信処理のフローチャートを示す。 FMPKのライトコマンド受信処理のフローチャートを示す。 FMPKのダーティライトコマンド受信処理のフローチャートを示す。 FMPKのダーティ確定コマンド受信処理のフローチャートを示す。 FMPKのダーティ破棄コマンド受信処理のフローチャートを示す。 FMPK#0に障害が発生した場合におけるダーティブロックの二重化処理を説明するための図である。 FMPK#0に障害が発生した場合におけるストレージコントローラのリードコマンド処理を説明するための図である。 ストレージコントローラ#0に障害が発生した場合におけるダーティブロックの二重化処理を説明するための図である。 ストレージコントローラに障害が発生した場合の処理のフローチャートを示す。 FMPKのダーティブロック確認コマンド受信処理のフローチャートを示す。 第2の実施形態に係るストレージシステムの全体構成を示すブロック図である。 第2の実施形態に係るストレージコントローラのライトデータ受信処理のフローチャートを示す。
 データブロックをキャッシュメモリ及びストレージデバイスにキャッシュとして格納するストレージシステムの幾つかの実施形態について、以下、図面を参照しながら説明する。なお、それらの実施形態では、ストレージデバイスをFM(Flash Memory)チップを記憶媒体とするFMPK(Flash Memory Package)として説明するが、他のデバイスであっても良い。
(第1の実施形態)
 図1は、ストレージシステム1の全体構成を示すブロック図である。ストレージシステム1は、例えば、ストレージコントローラ10#0と、ストレージコントローラ10#1と、ドライブエンクロージャ3とを備える。ストレージシステム1は、通信ネットワークNを介して、ホスト2とデータブロックを送受信する。ストレージコントローラ10は、1つであっても良いし、2つ以上であっても良い。ドライブエンクロージャ3は、1つであっても良いし、2つ以上であっても良い。以下、ストレージコントローラ10#0及び#1を区別しない場合は、単に「ストレージコントローラ10」という。
 ストレージコントローラ10は、ホストI/F(Interface)11と、CPU(Central Processing Unit)12と、キャッシュメモリ(以下「CM(Cache Memory)」という)13と、パリティ演算回路14と、ノードI/F15と、ローカルメモリ16と、ドライブI/F17と、を有する。これらの要素11~17は、何れも2つ以上であっても良い。これらの要素11~17は、双方向のデータ伝送が可能な内部バス18によって接続されている。
 通信ネットワークNは、例えば、SAN(Storage Area Network)によって構成される。SANは、例えば、Fibre Channel、Ethernet(登録商標)及び/又はInfiniband等によって構成される。通信ネットワークNは、LAN、インターネット網、専用線網、又はそれらの組み合わせであっても良い。
 ホストI/F11は、通信ネットワークNとストレージコントローラ10とを接続するためのI/Fである。ホストI/F11は、通信ネットワークNと、内部バス18との間に介在し、データブロックの送受信を制御する。ホストI/F11は、ホスト2からI/O(Input/Output)要求を受信する。I/O要求には、I/O先情報が関連付けられている。I/O先情報は、I/O先の論理ボリュームのID(例えばLUN(Logical Unit Number))と、論理ボリュームにおけるI/O先領域のアドレス(例えばLBA(Logical Block Address))とを含んでいる。I/Oコマンドは、ライトコマンド又はリードコマンドである。
 CPU12は、コンピュータプログラム(以下「プログラム」という)を実行して、ストレージコントローラ10の有する様々な機能を実現する。プログラムは、ストレージコントローラ10内の不揮発性メモリ(不図示)に格納されても良いし、外部のストレージデバイス等に格納されても良い。CPU12は、ホスト2からのI/Oコマンドに関連付けられているI/O先情報から特定されるI/O先領域に対応した1以上の論理ページをそれぞれ提供する1以上のFMPK20の各々に、I/O先領域に対応した論理ページのアドレスが関連付けられたI/Oコマンドを送信する。FMPK20に送られるI/Oコマンドには、論理ページのアドレスの他に、そのI/Oコマンドの送信先のFMPK20のID(例えば番号)が関連付けられてよい。
 CM13は、データブロックを一時的に保持(キャッシュ)する。CM13は、不揮発性メモリによって構成されても良い。不揮発性メモリは、フラッシュメモリ、又は磁気ディスクメモリ等であっても良い。若しくは、CM13は、揮発性メモリにバックアップ電源を備える構成であっても良い。揮発性メモリは、DRAM(Dynamic Random Access Memory)等であっても良い。バックアップ電源は、所定のバッテリ(電池)であっても良い。ホストI/F11、CPU12及び/又はドライブI/F17は、内部バス17を介して、CM13に対してデータブロックのライト及びリードを実行しても良い。
 ノードI/F15は、ストレージコントローラ10同士を接続するためのI/Fである。ノードI/F15は、Infiniband、Fibre Channel又はEthernet(登録商標)等の通信ネットワーク用のI/Fであっても良いし、PCI Express等のバス用のI/Fであっても良い。図1に係るストレージシステム1では、ストレージコントローラ10#0と、ストレージコントローラ10#1とが、ノードI/F15を介して接続されている。
 ドライブI/F17は、ストレージコントローラ10とドライブエンクロージャ3とを接続するためのI/Fである。ドライブI/F17は、内部バス17と、FMPK(Flash Memory Package)20との間に介在し、データブロックの送受信を制御する。ドライブI/F17は、SAS又はFibre Channel等に対応するI/Fであっても良い。ドライブI/F17は、FMPK20から受信したデータブロックをCM13に送信したり、パリティ演算回路14から受信したデータブロックをFMPK20に送信したりしても良い。
 ドライブエンクロージャ3は、例えば、FMPK20#0、#1、#2及び#3を有する。以下、FMPK20#0、#1、#2、#3を区別しない場合は、単に「FMPK20」という。ドライブエンクロージャ3の有するFMPK20は、幾つであっても良い。ドライブエンクロージャ3には、FMPK20に代えて又はFMPK20と共に、SSD(Solid State Drive)等の他の不揮発性メモリ、及び/又はHDD(hard disk drive)が接続されても良い。また、ドライブI/F17とFMPK20とは、SAS(Serial Attached SCSI)、FC(Fibre Channel)、又はSATA(Serial AT Attachment)によって接続されても良い。
 ドライブエンクロージャ3中のFMPK20は、そのFMPK20が提供する論理ページのアドレスが指定されたI/Oコマンド(ライトコマンド又はリードコマンド)をストレージコントローラ10から受信し、その受信したI/Oコマンドに応じた処理を実行する。
 ストレージシステム1は、2つ以上のドライブエンクロージャ3を有しても良い。この場合、ドライブI/F17が複数のポートを有しており、1つのドライブエンクロージャ3が、ドライブI/F17の1つのポートに接続されても良い。又は、2つ以上のドライブエンクロージャ3と、1つのドライブI/F17とが、所定のスイッチ装置(不図示)を介して接続されても良い。又は、2つ以上のドライブエンクロージャ3が、カスケード(数珠繋ぎ)接続されても良い。
 図2は、ダーティブロックの二重化処理の概要を説明するための図である。ストレージコントローラ10は、ホスト2からライトコマンド及びライトすべきデータブロック(以下「ライト用データブロック」という)を受信すると、そのライト用データブロックをいったんCM13に格納し、ホスト2に対して完了応答を返す。つまり、ストレージコントローラ10は、ライト用データブロックをFMPK20に格納する前に、ホスト2に対して完了応答を返す。一般的にライト性能(ライト速度)は、FMPK20よりもCM13の方が高い(高速な)ので、これにより、ストレージシステム1のホスト2に対する応答性能が高まる。このFMPK20に対する正式なライトが完了していないライト用データブロックを、「ダーティブロック」という。
 ストレージシステム1は、ダーティブロックがFMPK20に対して正式にライトされた後、CM13に格納されたダーティブロックを破棄しても良い。ストレージシステム1は、正式にライトされたデータブロックをFMPK20からリードできるからである。
 また、ストレージシステム1は、ダーティブロックを二重化して保持する。ストレージシステム1の耐障害性を高めるためである。本実施形態に係るストレージシステム1は、以下の第1の方法又は第2の方法の何れかの方法でダーティブロックを二重化する。
(第1の方法)
 第1の方法では、ストレージシステム1は、ダーティブロックをストレージコントローラ10#0のCM13と、ストレージコントローラ10#1のCM13とに格納する。以下、第1の方法に係るストレージシステム1の処理の概要を述べる。
 ライト用データブロックを受信したストレージコントローラ10#0は、このライト用データブロックを自己のCM13にダーティブロック#1として格納する(S11)。そして、ストレージコントローラ10#0は、このダーティブロック#1をストレージコントローラ10#1のCM13にも格納する(S12)。これにより、ダーティブロック#1は、ストレージコントローラ10#0のCM13と、ストレージコントローラ10#1のCM13との二箇所に格納(二重化)される。
 そして、ストレージコントローラ10#0は、所定の又は任意のタイミングで、CM13に格納されているダーティデータ#1を、正式なデータブロック#1としてFMPK20#1に格納する(S13)。
(第2の方法)
 第2の方法では、ストレージシステム1は、ダーティブロックをCM13とFMPK20とに格納する。以下、第2の方法に係るストレージシステム1の処理の概要を述べる。
 ライト用データブロックを受信したストレージコントローラ10#0は、このライト用データブロックをCM13にダーティブロック#0として格納する(S21)。そして、ストレージコントローラ10は、このCM13に格納されたダーディブロック#0を、FMPK20#0にダーティブロック#0としてライトする(S22)。これにより、ダーティブロック#0は、ストレージコントローラ10#0のCM13と、FMPK20#0との二箇所に格納(二重化)される。
 そして、ストレージコントローラ10#0は、所定の又は任意のタイミングで、FMPK20#0に対して、ダーティブロック#0を正式なデータブロック#0に確定するためのコマンド(以下「確定コマンド」という)を送信する(S23)。確定コマンドには、論理ページのアドレスとFMPK20の番号が関連付けられている。この確定コマンドを受信したFMPK20は、ダーティブロック#0に係る管理情報を正式なデータブロック#0に変更する。したがって、この確定コマンドによって、FMPK20内でデータブロックが複製されるわけではない。
 本実施形態に係るストレージシステム1は、第1の方法及び第2の方法の何れの機能も有し、さらに第1の方法と第2の方法とを適切に切り換える機能を有する。しかし、ストレージシステム1は、第2の方法の機能のみを有するとしても良い。若しくは、ストレージシステム1は、第1の方法及び第2の方法を組み合わせてダーティブロックを多重化しても良い。
 図3は、パリティブロック生成処理の概要を説明するための図である。ストレージシステム1は、データに冗長性を持たせてFMPK20に格納する。ストレージシステム1の耐障害性を高めるためである。データを冗長化する一手法であるRAID5では、2以上のデータブロックと、それらのデータブロックから算出されるパリティブロックと、によってデータを冗長化する。以下、上記第2の方法との関係を踏まえて、パリティブロック生成処理の概要を述べる。
 上記第2の方法において、ストレージコントローラ10は、ダーティブロック#0、#1、#2を、CM13及び各FPMK#0、#1、#2に格納し、各ダーティブロック#0、#1、#2を二重化する(S31)。
 ここで、ストレージシステム1が、3つのデータブロックから1つのパリティブロックを生成する3D1Pの構成であるとする。この場合、ストレージコントローラ10は、CM13内にパリティサイクルを満たすダーティブロック#0、#1、#2が全て揃っているので、このCM13内のダーティブロック#0、#1、#2からパリティブロックを生成する(S32)。
 そして、ストレージコントローラ10は、この生成したパリティブロックを、FMPK20#3にライトする。
 次に、ストレージコントローラ10は、FMPK20#0、#1、#2の各々に対して確定コマンドを送信し、ダーティブロック#0、#1、#2を正式なデータブロック#0、#1、#2に確定させる(S34)。この確定コマンドを受信したFMPK20#0、#1、#2の各々は、ダーティブロック#0、#1、#2に係る管理情報を正式なデータブロック#0、#1、#2に変更する。これにより、データブロック#0、#1、#2及びそれに対応するパリティブロックが、FMPK20#0、#1、#2、#3に格納される。
 図4は、CM13の記憶領域の論理的な構成を示すブロック図である。CM13は、記憶領域の論理的な構成として、制御情報領域31と、データ領域32とを有する。
 データ領域32には、データブロックが格納される。データ領域32には、ホスト2から送信されたライト用データブロックがダーティブロックとしてキャッシュされても良い。データ領域32には、FMPK20からリードされたデータブロックがクリーンブロック(「クリーン」の意味は後述)としてキャッシュされても良い。
 制御情報領域31には、データ領域32を制御するための情報が格納される。制御情報領域31には、キャッシュディレクトリ41と、セグメント管理ブロック42と、キュー管理情報43と、ドライブ構成情報44と、CM使用率情報45と、が格納される。以下、「セグメント管理ブロック」を「SGCB(Segment Control Block)」ということがある。これらの情報41~45をまとめて「制御情報」ということがある。
 キャッシュディレクトリ41は、SGCB42を管理するための情報を有する。SGCB42は、CM13のデータ領域32を管理するための情報を有する。キャッシュディレクトリ41、SGCB42、及びSGCBポインタ51の詳細については後述する(図5参照)。
 キュー管理情報43は、所定のSGCB42をキューとして管理するための情報を有する。キュー管理情報43の詳細については後述する(図6参照)。
 ドライブ構成情報44は、論理ボリュームを提供するストレージデバイス(FMPK20等)の構成及び種別等に関する情報を有する、ドライブ構成情報44は、ドライブエンクロージャ3内におけるFMPK20の位置を示す情報を有しても良い。ドライブ構成情報44は、FMPK20によって提供される論理ボリュームと、ホスト2に割り当てる論理ボリュームとの関係に関する情報を有しても良い。
 CM使用率情報45は、CM13の使用率(以下「CM使用率」という)に関する情報を有する。CM使用率は、CM13に対する内部バス18の所定時間当たりのデータの入出力量(又はデータブロックの入出力数)としても良い。CPU12は、CM13に対する内部バス18の入出力量を計測し、その計測結果に基づいてCM使用率を算出しても良い。CPU12は、次の式に基づいてCM使用率を算出しても良い。
 CM使用率=(CM13へのデータ転送処理に割り当てた所定時間当たりのクロック数)/(所定時間当たりの全クロック数)×100[%]
 上記の所定時間は、CPU12が測定を開始した時点からの経過時間であっても良いし、単位時間であっても良い。
 図5は、キャッシュディレクトリ41及びSGCB42の構成を説明するための図である。キャッシュディレクトリ41は、1つ以上のSGCBポインタ51を有する。キャッシュディレクトリ41は、複数のSGCBポインタ51をハッシュテーブルとして管理しても良い。
 SGCBポインタ51には、所定のSGCB42を指し示すアドレスが格納される。SGCBポインタ51は、LBA(Logical Block Address)と対応関係を有しても良い。つまり、ストレージコントローラ10は、LBAからSGCBポインタ51を特定し、その特定したSGCBポインタ51からSGCB42を特定しても良い。LBAは、ホスト2等の外部の装置に公開されても良い。
 ホスト2から送信されるリードコマンド/ライトコマンドには、データブロックのリード/ライトの位置を示すLBAが含まれても良い。ストレージコントローラ10は、リードコマンド/ライトコマンドを受信すると、次のようにデータブロックをリード/ライトしても良い。つまり、ストレージコントローラ10は、そのリードコマンド/ライトコマンドに含まれるLBAに対応するSGCBポインタ51を、キャッシュディレクトリ41から特定する。そして、ストレージコントローラ10は、その特定したSGCBポインタ51の指し示すSGCB42を特定する。このようにして、ストレージコントローラ10は、LBAに対応するSGCB42を特定する。
 SGCB42は、次のSGCBポインタ61と、双方向ポインタ62と、セグメントアドレス63と、スロット番号64と、スロット属性66とを有する。
 次のSGCBポインタ61には、次のSGCB42を指し示すアドレスが格納される。双方向ポインタ62には、SGCB42で構成される連結リストの前後に位置する他のSGCB42のアドレスが格納される。連結リストの詳細については後述する(図6参照)。セグメントアドレス63には、当該SGCB42に対応するセグメントを指し示すアドレスが格納される。スロット番号64には、当該SGCB42に対応するセグメントの論理ボリュームにおけるアドレスが格納される。
 スロット属性66には、当該SGCB42に対応するセグメントが、以下の(A)~(E)何れの属性であるかを示す情報(以下「属性情報」という)が格納される。
 (A)クリーン
「クリーン」は、当該SGCB42に対応するセグメントに格納されているデータブロックが、FMPK20に既に正式に格納済みであることを示す。このようなデータブロックを「クリーンブロック」ということがある。クリーンブロックは、正式なデータブロックとして既にFMPK20に格納済みであるので、仮にCM13から削除されたとしても障害が発生したことにならない。
 (B)ダーティ(CM単体)
「ダーティ(CM単体)」は、当該SGCB42に対応するセグメントに格納されているデータブロックが、FMPK20に未だ正式に格納されておらず、二重化されていないことを示す。ダーティブロックは、正式なデータブロックとしては未だFMPK20に格納されていないので、仮にCM13から削除された場合は障害が発生したこととなる。以下においても同様である。
 (C)ダーティ(CM二重化)
「ダーティ(CM二重化)」は、当該SGCB42に対応するセグメントに格納されているデータブロックが、FMPK20に未だ正式に格納されておらず、ストレージコントローラ10#0のCM13及びストレージコントローラ10#1のCM13の二箇所に格納(二重化)されていることを示す。上述の第1の方法に対応する。
 (D)ダーティ(CM&FM二重化)
「ダーティ(CM&FM二重化)」は、当該SGCB42に対応するセグメントに格納されているデータブロックが、FMPK20に未だ正式に格納されておらず、ストレージコントローラ10#0又は#1のCM13、及びFMPK20の二箇所に格納(二重化)されていることを示す。上述の第2の方法に対応する。
 (E)フリー
「フリー」は、当該SGCB42に対応するセグメントにはデータブロックが格納されておらず、ライトが可能であることを示す。ここで、上記(A)~(E)において、データブロックが、FMPK20において、正式に格納されていないとは、データブロックを格納する物理ページがダーティ物理ページとして管理されていることをいう。より詳細には、マッピング管理テーブル81にて、そのデータブロックに対応する論理ページ番号301に関連づけられているダーティ物理ページ番号303の値が、物理ページ番号302として管理されていない状態をいう。一方、データブロックが、FMPK20において、正式に格納されているとは、データブロックを格納している物理ページがダーティ物理ページではない物理ページとして管理されていることをいう。より詳細には、ダーティ物理ページ番号303の値が、物理ページ番号302として管理されている状態をいう。また、通常の物理ページ(データブロックを格納している物理ページがダーティ物理ページではない物理ページ又は物理ページ番号302)として管理されている状態を確定状態ともいい、ダーティ物理ページ(物理ページ番号303)として管理されている状態を未確定状態という。
 図6は、キュー管理情報43によって管理される連結リストを説明するための図である。キュー管理情報43は、(A)クリーンキューの連結リストと、(B)ダーティキューの連結リストと、(C)フリーキューの連結リストと、を管理するための情報を有する。以下、(A)~(C)の連結リストについて説明する。
(A)クリーンキューの連結リスト
 クリーンキューの連結リストには、スロット属性66が「クリーン」のSGCB42が連結されている。
 クリーンキューの連結リストの先頭にはクリーンキューMRU(Most Recently Used)ポインタ10が、末尾にはクリーンキューLRU(Least Recently Used)ポインタ102が連結される。クリーンキューMRUポインタ101には、自己の後方に連結されているSGCB42を指し示すアドレスが格納される。クリーンキューLRUポインタ102には、自己の前方に連結されているSGCB42を指し示すアドレスが格納される。
 クリーンキューMRUポインタ101及びクリーンキューLRUポインタ102は、キュー管理情報43によって管理される。
 クリーンキューの連結リストは、クリーンキューMRUポインタ101に近い方がアクセス(利用)日時の新しいクリーンブロックのSGCB42であり、クリーンキューLRUポインタ102に近い方がアクセス(利用)日時の古いクリーンブロックのSGCB42である。例えば、或るクリーンブロックがアクセス(利用)されると、このクリーンブロックに対応するSGCB42が、クリーンキューの連結リストのクリーンキューMRUポインタ101の直後に連結される。SGCB42同士は、双方向ポインタ62によって双方向に連結される。
 したがって、ストレージコントローラ10は、キュー管理情報43を参照してクリーンキューMRUポインタ101(又はクリーンキューLRUポインタ102)を特定し、そこから連結リストを辿ることで、アクセス日時の新しい(又は古い)クリーンブロックのSGCB42を順に辿ることができる。
(B)ダーティキューの連結リスト
 ダーティキューの連結リストには、スロット属性66が「ダーティ」のSGCB42が連結されている。
 ダーティキューの連結リストの先頭にはダーティキューMRUポインタ111が、末尾にはダーティキューLRUポインタ112が連結される。ダーティキューMRUポインタ111には、自己の後方に連結されているSGCB42を指し示すアドレスが格納される。ダーティキューLRUポインタ112には、自己の前方に連結されているSGCB42を指し示すアドレスが格納される。
 ダーティキューMRUポインタ1111及びダーティキューLRUポインタ112は、キュー管理情報43によって管理される。
 ダーティキューの連結リストは、ダーティキューMRUポインタ111に近い方がアクセス(利用)日時の新しいダーティブロックのSGCB42であり、ダーティキューLRUポインタ112に近い方がアクセス(利用)日時の古いダーティブロックのSGCB42である。例えば、或るダーティブロックがアクセス(利用)されると、このダーティブロックに対応するSGCB42が、ダーティキューの連結リストのダーティキューMRUポインタ111の直後に連結される。SGCB42同士は、双方向ポインタ62によって双方向に連結される。
 したがって、ストレージコントローラ10は、キュー管理情報43を参照してダーティキューMRUポインタ1111(又はダーティキューLRUポインタ1112)を特定し、そこから連結リストを辿ることで、アクセス日時の新しい(又は古い)ダーティブロックのSGCB42を順に辿ることができる。
(C)フリーキューの連結リスト
 フリーキューの連結リストには、スロット属性66が「フリー」のSGCB42が連結されている。
 フリーキューの連結リストの先頭にはフリーキュー開始ポインタ121が、末尾にはNULLポインタ122が連結される。フリーキュー開始ポインタ121には、自己の後方に連結されているSGCB42を指し示すアドレスが格納される。
 フリーキュー開始ポインタ121は、キュー管理情報43によって管理される。例えば、或るデータブロックが消去されてそのセグメントがフリーになると、そのセグメントに対応するSGCGがNULLポインタ122の直前に連結される。SGCB42同士は、双方向ポインタ62によって一方向(単方向)に連結される。
 したがって、ストレージコントローラ10は、キュー管理情報43を参照してフリーキュー開始ポインタ121を特定し、そこから連結リストを辿ることで、フリーのSGCB42を順に辿ることができる。
 図7は、ドライブ構成情報44のデータ構成例を示す。ドライブ構成情報44は、ドライブエンクロージャ3の備えるドライブ(FMPK20等)関する情報を有する。ドライブ構成情報44は、項目として、ドライブ番号201と、ドライブ種別202と、ダーティライト機能203と、ドライブ状態204とを有する。
 ドライブ番号201には、ドライブエンクロージャ3内のドライブを識別し得る番号が格納される。例えば、ドライブ番号201には、ドライブに固有に付与されているIDが格納さる。
 ドライブ種別202には、ドライブの種類を識別し得る情報が格納される。例えば、ドライブの種類には、HDD、SSD、又はFMPK等の種別が格納される。
 ダーティライト機能203には、当該ドライブが、ダーティライト機能203に対応しているか否かを示す情報が格納される。例えば、当該ドライブがダーティライト機能203に対応している場合には「YES」、対応していない場合には「NO」が格納される。ダーティライト機能203に対応するドライブは、次の(A)及び(B)の機能を有している。
 (A)論理ページに対してダーティブロックが正式なデータブロックとして対応付けられるまで、それまでその論理ページに対応付けられていたデータブロック(以下「旧データブロック」という)を保持する機能。なぜなら、ストレージコントローラ10は、リードモディファイライトによってパリティブロックを生成する場合に、旧データブロックを必要とするからである。
 (B)論理ページに対して、ダーティブロックを正式なデータブロックとして対応付ける機能(つまり、確定コマンドに対応する機能)。これによって、ストレージコントローラ10は、CM13上のダーティブロックを改めてドライブにライトすることなく、ダーティブロックを正式なデータブロックとしてドライブに格納させることができるからである。
 ドライブ状態204には、ドライブが正常に稼働しているか否かを示す情報が格納される。例えば、当該ドライブが正常に稼働している場合には「OK」、何らかの異常が発生している場合には「NG」が格納される。
 図8は、FMPK20の構成を示すブロック図である。FMPK20は、FMコントローラ21と、1つ以上のFM(Flash Memory)77とを有する。
 FMコントローラ21は、ドライブI/F71と、CPU72と、論理演算回路73と、バッファメモリ74と、メインメモリ75と、FM I/F76とを有する。これらの要素71~76は何れも2つ以上であっても良い。これらの要素71~76は、双方向にデータ送受信が可能な内部バス78によって接続されている。
 ドライブI/F71は、FMコントローラ21の内部と、ストレージコントローラ10との間のデータの送受信を仲介する。ドライブI/F71は、SAS又はFibre Channelに対応するインタフェースであり、ストレージコントローラ10のドライブI/F17と接続されても良い。
 論理演算回路73は、パリティブロック又は中間パリティブロック等を計算する機能を有する。論理演算回路73は、例えば、圧縮、伸長、暗号化及び/又は復号化等を行う機能を有しても良い。
 CPU72は、所定のプログラムを実行して、FMコントローラ21の有する様々な機能を実現する。プログラムは、内部の不揮発性メモリ(不図示)に格納されていても良いし、外部の記憶装置に格納されていても良い。
 メインメモリ75は、CPU72及び/又は論理演算回路73が実行中に使用する様々なプログラム及びデータブロックを保持する。メインメモリ75は、例えば、DRAM等によって構成される。
 バッファメモリ74は、FM77にライト/リードされるデータブロック等をバッファリングする。バッファメモリ74は、例えば、DRAM等によって構成される。メインメモリ314とバッファメモリ315は、物理的に同じメモリとして構成されても良い。
 FM I/F76は、FMコントローラ21の内部と、FM77との間のデータブロックの送受信を仲介する。
 FM77は、不揮発性メモリチップであって、データブロックを保持する機能を有する。FM77は、フラッシュメモリチップであっても良いし、他の不揮発性メモリチップ、例えば、PRAM(Phase change RAM;相変化メモリ)チップ、MRAM(Magnetoresistive RAM;磁気抵抗メモリ)チップ、ReRAM(Resistance RAM;抵抗変化メモリ)チップ等であっても良い。
 図9は、FMPK20の有する情報を示す。FMPK20は、マッピング管理テーブル81と、ダーティページ管理情報82とを有する。
 マッピング管理テーブル81は、FMPK20の提供する論理的なページである論理ページと、FM77の実際の記憶領域(セグメント)を示す物理ページとの対応関係を管理する。次に、論理ページと物理ページとの関係について、図面を用いて説明する。
 図10は、論理ページと物理ページとの関係を説明するための図である。FMPK20は、FM77の記憶領域を物理ページという単位で分割して管理する。FMPK20は、所定数の物理ページをまとめて物理ブロックという単位で管理する。FMPK20は、物理ページと論理ページとを対応付けて管理する。マッピング管理テーブル81は、この物理ページと論理ページとの対応関係(マッピング)を管理する。
 NAND型フラッシュメモリの場合、通常、ライト及びリードは物理ページの単位で行えるが、消去は物理ブロックの単位でしか行えない。したがって、既にデータブロックの格納されている物理ページと対応する論理ページに、新たなデータブロックのライトが発生した場合、既にデータブロックの格納されている物理ページに新たなデータブロックをオーバーライトすることはできない。よって、FMPK20は、フリーの物理ページに新たなデータブロックを格納し、マッピング管理テーブル81において、論理ページをその新たなデータブロックを格納した物理ページに対応付ける。NAND型フラッシュメモリの場合、このようにして、論理ページに対してデータブロックをオーバーライトする。
 また、NAND型フラッシュメモリは、物理ブロックに係る記憶領域毎に書き換え回数に制限(寿命)がある。したがって、FMコントローラ21は、同じ物理ブロックが高頻度で書き換えられないように、所定の又は任意のタイミングで、或る物理ページに格納されているデータブロックを他の物理ページに移動させたりする。また、FMコントローラ21は、物理ブロックに格納されているものの不要となったデータブロックを、所定の又は任意のタイミングで消去する。このような処理を、リクラメーションという。FMPK20は、リクラメーションによるデータブロックの移動等に合わせて、マッピング管理テーブル81を更新しても良い。
 FMPK20は、論理ページとLBAとの対応関係を管理しても良い。FMPK20は、ストレージコントローラ10に対して、このLBA空間を公開しても良い。つまり、ストレージコントローラ10は、LBAを指定してデータブロックのリード及びライトを要求しても良い。
 図11は、マッピング管理テーブル81の構成例を示す。マッピング管理テーブル81は、項目として、論理ページ番号301と、物理ページ番号302と、ダーティ物理ページ番号303と、ダーティ論理ページ双方向番号304と、を有する。
 論理ページ番号301には、論理ページを識別するための番号等が格納される。物理ページ番号302には、物理ページを識別するための番号等が格納される。したがって、レコード310a等における論理ページ番号301と物理ページ番号302とが、上述の論理ページと物理ページとの対応関係を示す。
 ダーティ物理ページ番号303には、ダーティブロックを格納した物理ページ(以下「ダーティ物理ページ」という)の物理ページ番号302が格納される。つまり、ダーティ物理ページ番号303の示す物理ページには、ダーティブロックが格納されている。したがって、マッピング管理テーブル81のレコード310a等は、論理ページと、物理ページと、ダーティ物理ページとの対応関係を示す。論理ページに対応するダーティ物理ページが存在しない場合、ダーティ物理ページ番号303には「NULL」が格納される。
 つまり、1つの論理ページに、物理ページ及びダーティ物理ページの2つが対応付けられ得る。論理ページにダーティ物理ページが対応付けられている場合、このダーティ物理ページに格納されているダーティブロックは、何れこの論理ページの正式なデータブロック(つまり正式な物理ページ)に確定される。例えば、FMPK20は、ストレージコントローラ10から確定コマンドを受信した場合に、ダーティブロックを格納した一又は複数のダーティ物理ページ番号303に格納されている値を、マッピング管理テーブル81上でダーティ物理ページ番号303に対応関係を有する物理ページ番号302に移動させ、このダーティ物理ページ番号303を「NULL」にすることによって、ダーティブロックを正式なデータブロックに確定する。
 ダーティ論理ページ双方向番号304は、ダーティ論理ページの連結リストを構成する場合に用いられる。次に、ダーティ論理ページの連結リストについて、図面を用いて説明する。
 図12は、ダーティ論理ページの連結リストの構成を説明するための図である。ダーティ論理ページの連結リストには、ダーティブロックを格納する論理ページが連結されている。
 ダーティ論理ページの連結リストの先頭にはダーティ論理ページMRU番号401が、末尾にはダーティ論理ページLRU番号402が連結される。ダーティ論理ページMRU番号401には、自己の後方に連結されている論理ページの論理ページ番号301が格納される。ダーティ論理ページLRU番号402には、自己の前方に連結されている論理ページの論理ページ番号301が格納される。そして、論理ページ同士は、図11に示すマッピング管理テーブル81のダーティ論理ページ双方向番号304によって、他の論理ページと双方向に連結される。ダーティ論理ページMRU番号401及びダーティ論理ページLRU番号402は、ダーティページ管理情報82によって管理される。
 ダーティ論理ページの連結リストは、ダーティ論理ページMRU番号401に近い方がアクセス(利用)日時の新しいダーティブロックを指し示し、ダーティ論理ページLRU番号に近い方がアクセス(利用)日時の古いダーティブロックを指し示す。例えば、或る論理ページにダーティ物理ページが対応付けられると、その論理ページがダーティ論理ページMRU番号の直後に連結される。
 FMコントローラ21は、このダーティ論理ページの連結リストを参照することで、マッピング管理テーブル81のレコードを全て検索すること無く、ダーティ物理ページが対応付けられている論理ページを特定することができる。つまり、FMコントローラ21は、このダーティ論理ページの連結リストを参照することで、ダーティ物理ページを効率良く検索することができる。
 図13は、ストレージコントローラ10のライトコマンド受信処理のフローチャートを示す。なお、以降の説明では、処理の主体をストレージコントローラ10としているが、処理の主体をストレージコントローラ10の有するCPU12としても良い。
 ストレージコントローラ10は、ホスト2からライトコマンドを受信すると(S101)、以下の処理を実行する。ライトコマンドには、ライト先を指し示すLBAが含まれても良い。
 ストレージコントローラ10は、CM13上に、そのライトコマンドに係るライト用データブロックを格納するためのキャッシュセグメントを確保する(S102)。
 ストレージコントローラ10は、その確保したキャッシュセグメントに対応するSGCB42を生成し、キャッシュディレクトリ41に格納する(S103)。
 ストレージコントローラ10は、キャッシュセグメントが正常に確保でき、且つライト用データブロックの受信が可能な状態となったら、ホスト2に、ライト準備の完了応答を送信する(S104)。そして、ストレージコントローラ10は、次のライトデータ受信処理に進む。
 図14は、ストレージコントローラ10のライトデータ受信処理のフローチャートを示す。
 ストレージコントローラ10は、ホスト2からライト用データブロックを受信すると(S201)、以下の処理を実行する。
 ストレージコントローラ10は、ステップS102で確保したキャッシュセグメントにライト用データブロックを格納する(S202)。
 ストレージコントローラ10は、ドライブ構成情報44のダーティライト機能203を参照し、ライトの対象ドライブのダーティライト機能203が「YES」であるか否かを判定する(S203)。ここでは、対象ドライブはFMPK20であるとする。
 FMPK20のダーティライト機能203が「YES」である場合(S203:YES)、ストレージコントローラ10は、ドライブ構成情報44のドライブ状態204を参照し、FMPK20のドライブ状態204が「OK」であるか否かを判定する(S204)。
 FMPK20のドライブ状態204が「OK」である場合(S204:YES)、ストレージコントローラ10は、CM使用率情報45を参照し、CM使用率が所定の閾値以上であるか否かを判定する(S205)。
 CM使用率が所定の閾値以上である場合(S205:YES)、ストレージコントローラ10は、CM13とFMPK20の二箇所にライト用データブロックをキャッシュする(CM&FM二重化)と判断し、「ダーティデータCM&FM二重化処理」を実行する(S206)。「ダーティデータCM&FM二重化処理」の詳細については、後述する(図15参照)。そして、ストレージコントローラ10は、ホスト2にライトコマンドに対する完了応答を返し(S210)、当該処理を終了する。
 一方、FMPK20のダーティライト機能203が「NO」の場合(S203:NO)、FMPK20のドライブ状態204が「NO」の場合(S204:NO)、又はCM使用率が所定の閾値未満である場合(S205:NO)、ストレージコントローラ10は、自系のCM13と他系のCM13の二箇所にライト用データブロックをキャッシュする(CM二重化)と判断し、「ダーティデータCM二重化処理」を実行する(S207)。「ダーティデータCM二重化処理」の詳細については、後述する(図16参照)。そして、ストレージコントローラ10は、ホスト2にライト用データブロックのライト処理の完了応答を返し(S210)、当該処理を終了する。
 以上の処理により、ストレージシステム1は、CM13に対するデータの入出力量の負荷に基づいて、「CM二重化処理」と「CM&FM二重化処理」を適切に切り換えることができる。つまり、ストレージシステム1は、CM13に対するデータの入出力量の負荷が比較的小さい場合に「CM二重化処理」を実行すると判定し、CM13に対するデータの入出力量の負荷が比較的大きい場合に「CM&FM二重化処理」を実行すると判定する。これにより、ストレージコントローラ10は、CM13におけるデータの入出力量の負荷が比較的高い場合に発生し得る、ホスト2に対する応答遅延を低減することができる。
 図15は、ストレージコントローラ10のダーティデータCM&FM二重化処理のフローチャートを示す。
 ストレージコントローラ10は、処理対象のキャッシュセグメントに対応するSGCB42のスロット属性66を参照し、スロット属性66が「ダーティ(CM二重化)」であるか否かを判定する(S301)。スロット属性66が「ダーティ(CM二重化)」でない場合(S301:NO)、ストレージコントローラ10は、ステップS303に進む。
 スロット属性66が「ダーティ(CM二重化)」である場合(S301:YES)、ストレージコントローラ10は、他系のストレージコントローラ10のCM13にキャッシュされているダーティブロックを無効化し(S302)、ステップS303に進む。これにより、他系のストレージコントローラ10が誤ってCM13上の古いダーティブロックを参照してしまうことを防止できる。
 次に、ストレージコントローラ10は、FMPK20にダーティライトコマンドを送信して、CM13上のライト用データブロック(ダーティブロック)をダーティブロックとしてライトするように要求する(S303)。ダーティブロックをCM13とFMPK20の二箇所に格納(二重化)するためである。ダーティライトコマンドには、論理ページのアドレスとFMPK20の番号とが関連付けられても良い。ダーティライトコマンドを受信したFMPK20の処理については、後述する(図23参照)。
 ストレージコントローラ10は、FMPK20からダーティライトコマンドの完了応答を受信すると(S304)、当該SGCB42のスロット属性66を「ダーティ(CM二重化)」に変更し(S305)、図14のステップS206以降の処理に戻る。
 図16は、ストレージコントローラ10のダーティデータCM二重化処理のフローチャートを示す。
 ストレージコントローラ10は、処理対象のキャッシュセグメントに対応するSGCB42のスロット属性66を参照し、スロット属性66が「ダーティ(CM&FM二重化)」であるか否かを判定する(S401)。スロット属性66が「ダーティ(CM&FM二重化)」でない場合(S301:NO)、ストレージコントローラ10は、ステップS403に進む。
 スロット属性66が「ダーティ(CM&FM二重化)」であった場合(S401:YES)、ストレージコントローラ10は、FMPK20にダーティ破棄コマンドを送信し、そのコマンドに含まれるLBAに対応するダーティブロックの破棄を要求する(S402)。ダーティ破棄コマンドには、論理ページのアドレスとFMPK20の番号とが関連付けられても良い。ダーティ破棄コマンドを受信したFMPK20は、当該LBAに対応する論理ページと、ダーティ物理ページとの対応関係を破棄する。この処理の詳細については、後述する(図25参照)。これにより、自系又は他系のストレージコントローラ10が、誤ってFMPK20上の古いダーティブロックを参照してしまうことを防止できる。
 次に、ストレージコントローラ10は、他系のストレージコントローラ10のCM13にキャッシュセグメントを確保する(S403)。
 ストレージコントローラ10は、他系のストレージコントローラ10のキャッシュディレクトリ41を更新する(S404)。つまり、ストレージコントローラ10は、その確保したキャッシュセグメントに対応するSGCB42を生成し、そのSGCB42をキャッシュディレクトリ41に格納する。
 ストレージコントローラ10は、自系のストレージコントローラ10のCM13に格納されているダーティブロックを、他系のストレージコントローラ10のCM13に確保されたキャッシュセグメントにライトする(S405)。これにより、ダーティブロックが、自系のCM13と他系のCM13で二重化される。
 ストレージコントローラ10は、当該SGCB42のスロット属性66を「ダーティ(CM二重化)」に変更し(S406)、図14のステップS207以降の処理に戻る。
 この段階でダーティブロックは二重化されている。このダーティブロックは、最終的には、正式なデータブロックとしてFM77に格納され、RAID5等によって冗長化される。
 図17は、ストレージコントローラ10の新パリティブロック生成処理のフローチャートを示す。
 ストレージコントローラ10は、CM13にパリティサイクル分のダーティブロックが揃っているか否かを判定する(S501)。すなわち、ストレージコントローラ10は、CM13に格納されているダーティブロックでフルストライプライト処理が可能であるか否かを判定する。
 CM13にパリティサイクル分のダーティブロックが揃っている場合(S501:YES)、ストレージコントローラ10は、パリティ演算回路14を利用して、CM13上にあるダーティブロックから新たなパリティブロック(以下「新パリティブロック」という)を生成し(S502)、当該処理を終了する。
 CM13にパリティサイクル分のダーティブロックが揃っていない場合(S501:NO)、ストレージコントローラ10は、ダーティブロックに対応する既にFM17に格納されているデータブロック(以下「旧データブロック」という)及び既にFM17に格納されているパリティブロック(以下「旧パリティブロック」という)を、FM17からリードする(S503)。
 そして、ストレージコントローラ10は、パリティ演算回路14を利用して、CM13上のダーティブロック、旧データブロック及び旧パリティブロックから新パリティブロックを生成し(S504)、当該処理を終了する。つまり、ストレージコントローラ10は、フルストライプライト処理が不可能な場合は、リードモディファイライト処理を実行する。
 ストレージコントローラ10は、この新パリティブロック生成処理の後、次に示す新パリティブロック二重化処理を実行しても良い。
 図18は、ストレージコントローラ10の新パリティブロック二重化処理のフローチャートを示す。
 ストレージコントローラ10は、ドライブ構成情報44を参照して、ライト対象のFMPK20のダーティライト機能203が「YES」であるか否かを判定する(S601)。ここでは、ライト対象のドライブはFMPK20であるとする。
 ライト対象のFMPK20のダーティライト機能203が「YES」の場合(S601:YES)、ストレージコントローラ10は、ドライブ構成情報44を参照して、ライト対象のFMPK20のドライブ状態204が「OK」であるか否かを判定する(S602)。
 ライト対象のFMPK20のドライブ状態204が「OK」である場合(S602:YES)、ストレージコントローラ10は、CM使用率が所定の閾値以上であるか否かを判定する(S603)。
 CM使用率が所定の閾値以上である場合(S603:YES)、ストレージコントローラ10は、新パリティブロックをライト対象のFMPK20にライトし(S604)、当該処理を終了する。つまり、ストレージコントローラ10は、新パリティブロックを、CM13とFMPK20の二箇所に格納(二重化)する。
 一方、ライト対象のFMPK20のダーティライト機能203が「NO」の場合(S601:NO)、ライト対象のFMPK20のドライブ状態204が「NG」の場合(S602:NO)、又はCM使用率が所定の閾値未満である場合(S603:NO)、ストレージコントローラ10は、他系のCM13にキャッシュセグメントを確保する(S611)。そして、ストレージコントローラ10は、その確保したキャッシュセグメントに新パリティブロックを格納し(S612)、当該処理を終了する。つまり、ストレージコントローラ10は、新パリティブロックを、自系のCM13と他系のCM13の二箇所に格納(二重化)する。
 図19は、ストレージコントローラ10のダーティ確定処理のフローチャートを示す。ダーティ確定とは、上述のとおり、FMPK20において、ダーティブロックを正式なデータブロックに変更することをいう。
 ストレージコントローラ10は、処理対象のSGCB42のスロット属性66が「ダーティ(CM&FM二重化)」であるか否かを判定する(S701)。
 スロット属性66が「ダーティ(CM&FM二重化)」であった場合(S701:YES)、ストレージコントローラ10は、そのFMPK20に対して、ダーティブロックの確定コマンドを送信する(S702)。この確定コマンドとは、FMPK20に対して、FMPK20上で保持しているダーティブロックを正式に格納するように指示するコマンドのことである。より詳細には、FMPK20上でダーティ物理ページ(物理ページ番号303)として管理されているデータブロックを、通常の物理ページ(データブロックを格納している物理ページがダーティ物理ページではない物理ページ又は物理ページ番号302)として管理するように指示するコマンドである。そして、ストレージコントローラ10は、FMPK20から確定コマンドに対する完了応答を受信すると(S703)、ステップS721に進む。
 一方、スロット属性66が「ダーティ(CM&FM二重化)」でない場合(S701:NO)、ストレージコントローラ10は、CM13上のダーティブロックを正式なデータブロックとしてFMPK20にライトするためのライトコマンドを送信する(S711)。そして、ストレージコントローラ10は、FMPK20からライトコマンドに対する完了応答を受信すると(S712)、ステップS721に進む。
 次に、ストレージコントローラ10は、処理対象のSGCB42のスロット属性66を「クリーン」に変更する(S721)。そして、ストレージコントローラ10は、キュー(連結リスト)を更新し(S722)、当該処理を終了する。
 図20は、FMPK20のリードコマンド受信処理のフローチャートを示す。なお、以降の説明では、処理の主体をFMPK20としているが、処理の主体をFMPK20の有するFMコントローラ21又はCPU72としても良い。
 FMPK20は、ストレージコントローラ10からリードコマンドを受信すると(S801)、以下の処理を実行する。なお、リードコマンドには、リード対象のデータブロックの開始点を示すLBAと、そのLBAからリードしたいデータブロックのサイズとが含まれても良い。リードコマンドには、論理ページのアドレスとFMPK20の番号とが関連付けられても良い。
 FMPK20は、マッピング管理テーブル81を参照し、LBAに対応する論理ページを特定する(S802)。FMPK20は、その論理ページに対応する物理ページからデータブロックをリードする(S803)。FMPK20は、そのリードしたデータブロックをリードコマンドの完了応答に含めて、ストレージコントローラ10に送信し(S804)、当該処理を終了する。
 図21は、FMPK20のダーティリードコマンド受信処理のフローチャートを示す。
 FMPK20は、ストレージコントローラ10からダーティリードコマンドを受信すると(S901)、以下の処理を実行する。なお、ダーティリードコマンドには、リード対象のダーティブロックの開始点を示すLBAと、そのLBAからリードしたいダーティブロックのサイズとが含まれても良い。ダーティリードコマンドには、論理ページのアドレスとFMPK20の番号とが関連付けられても良い。
 FMPK20は、マッピング管理テーブル81を参照し、LBAに対応する論理ページを特定する(S902)。そして、FMPK20は、マッピング管理テーブル81を参照し、その論理ページに対応付けられているダーティ物理ページ番号302に値が格納されているか否かを判定する(S903)。
 ダーティ物理ページ番号302に値が格納されている場合(S903:YES)、FMPK20は、そのダーティ物理ページ番号302の値の示す物理ページからダーティブロックをリードする(S904)。そして、FMPK20は、そのリードしたダーティブロックをダーティリードコマンドの完了応答に含めてストレージコントローラ10に送信し(S905)、当該処理を終了する。
 一方、ダーティ物理ページ番号302に値が格納されていない(つまり「NULL」)の場合(S903:NO)、FMPK20は、その論理ページに対応するダーティブロックは存在しない旨をダーティリードコマンドの完了応答としてストレージコントローラ10に送信し(S910)、当該処理を終了する。
 図22は、FMPK20のライトコマンド受信処理のフローチャートを示す。
 FMPK20は、ストレージコントローラ10からライトコマンド及びライト用データブロックを受信すると(S1001)、以下の処理を実行する。なお、ライトコマンドには、ライトの開始点を示すLBAと、ライト用データブロックのサイズとが含まれても良い。ライトコマンドには、論理ページのアドレスとFMPK20の番号とが関連付けられても良い。
 FMPK20は、ライト用データブロックを格納するための「フリー」の物理ページを確保する(S1002)。FMPK20は、その確保した「フリー」の物理ページにライト用データブロックをライトする(S1003)。
 FMPK20は、マッピング管理テーブル81において、LBAに対応する論理ページ番号301を特定し、その論理ページ番号301に対応する物理ページ番号302に、ライト用データブロックをライトした物理ページを示す番号(値)を格納する(S1004)。
 FMPK20は、ライトコマンドの完了応答を、ストレージコントローラ10に送信し(S1005)、当該処理を終了する。
 図23は、FMPK20のダーティライトコマンド受信処理のフローチャートを示す。
 FMPK20は、ストレージコントローラ10からダーティライトコマンドを受信すると(S1101)、以下の処理を実行する。なお、ダーティライトコマンドには、ライトの開始点を示すLBAと、ダーティブロックのサイズが含まれても良い。ダーティライトコマンドには、論理ページのアドレスとFMPK20の番号とが関連付けられても良い。ここで、ダーティライトコマンドとは、データブロックを未確定状態としてFMPK20上に格納するコマンドであり、未確定ライトコマンドと呼ぶこともある。
 FMPK20は、マッピング管理テーブル81を参照し、LBAに対応する論理ページを特定する(S1102)。FMPK20は、その論理ページに対応するダーティ物理ページ番号302に値が格納済みであるか否かを判定する(S1103)。
 ダーティ物理ページ番号302に値が格納されていない(つまり「NULL」)の場合(S1103:NO)、FMPK20は、ステップS1105に進む。
 ダーティ物理ページ番号302に値が格納済みである場合(S1103:YES)、FMPK20は、マッピング管理テーブル81において、そのダーティ物理ページ番号302を「NULL」に変更し(S1104)、ステップS1105に進む。
 次に、FMPK20は、ダーティブロックを格納するための「フリー」のダーティ物理ページを確保する(S1105)。FMPK20は、その確保した「フリー」のダーティ物理ページにダーティブロックをライトする(S1106)。
 FMPK20は、マッピング管理テーブル81において、LBAに対応する論理ページ番号301を特定し、その論理ページ番号301に対応するダーティ物理ページ番号302に、ダーティブロックをライトしたダーティ物理ページを示す番号(値)を格納する(S1107)。
 FMPK20は、キュー(連結リスト)を更新する(S1108)。FMPK20は、ダーティライトコマンドの完了応答を、ストレージコントローラ10に送信し(S1109)。当該処理を終了する。このように、FMPK20は、ある論理ページに対してダーティライトコマンドを受信した場合に、当該論理ページに物理ページとして対応付けられていたデータブロックを保持しつつ、受信したデータブロックをダーティ物理ページとして(すなわち、未確定状態として)FMPK20上に格納する。
 図24は、FMPK20のダーティ確定コマンド受信処理のフローチャートを示す。
 FMPK20は、ストレージコントローラ10からダーティブロックの確定コマンドを受信すると(S1201)、以下の処理を実行する。なお、ダーティブロックの確定コマンドには、確定したいダーティブロックを示すLBAが含まれても良い。ダーティブロックの確定コマンドには、論理ページのアドレスとFMPK20の番号とが関連付けられても良い。
 FMPK20は、マッピング管理テーブル81を参照し、LBAに対応する論理ページを特定する(S1202)。FMPK20は、その論理ページに対応する物理ページ番号302に値が格納済みであるか否かを判定する(S1203)。
 物理ページ番号302に値が格納されていない(つまり「NULL」)の場合(S1203:NO)、FMPK20は、ステップS1205に進む。
 物理ページ番号302に値が格納済みである場合(S1203:YES)、FMPK20は、マッピング管理テーブル81において、その物理ページ番号302を「NULL」に変更し(S1204)、ステップS1205に進む。
 次に、FMPK20は、マッピング管理テーブル81において、既存のダーティ物理ページ番号302の値を、その物理ページ番号302に移動する(S1205)。FMPK20は、マッピング管理テーブル81において、そのダーティ物理ページ番号302を「NULL」に変更する(S1206)。
 FMPK20は、キュー(連結リスト)を更新する(S1207)。FMPK20は、確定コマンドに対する完了応答を、ストレージコントローラ10に送信し(S1208)。当該処理を終了する。
 図25は、FMPK20のダーティブロックの破棄コマンド受信処理のフローチャートを示す。
 FMPK20は、ストレージコントローラ10からダーティブロックの破棄コマンドを受信すると(S1301)、以下の処理を実行する。なお、ダーティブロックの破棄コマンドには、破棄したいダーティブロックを示すLBAが含まれても良い。ダーティブロックの破棄コマンドには、論理ページのアドレスとFMPK20の番号とが関連付けられても良い。
 FMPK20は、マッピング管理テーブル81を参照し、LBAに対応する論理ページを特定する(S1302)。FMPK20は、マッピング管理テーブル81において、その論理ページに対応付けられているダーティ物理ページ番号302を「NULL」に変更する(S1303)。
 FMPK20は、キュー(連結リスト)を更新する(S1304)。FMPK20は、ダーティ破棄コマンドの処理を完了した旨の応答を、ストレージコントローラ10に送信し(S1305)。当該処理を終了する。
 本実施形態に係るストレージシステム1は、「CM&FM二重化」によってダーティブロックを二重化することにより、「CM二重化」によってダーティブロックを二重化する場合と比較して、CM13に対するI/O負荷を軽減することができる。
 また、ストレージシステム1は、CM使用率に基づいて「CM&FM二重化」と「CM二重化」とを適切に切り換えることにより、ホスト2に対する応答性能を維持又は向上させることができる。なぜなら、CM使用率が高い(CM13に対するI/O負荷が高い)場合に、CM二重化を行おうとすると、CM13にダーティブロックがライトされるまでの待ち時間が発生してしまうからである。つまり、FM77のライト速度も十分に高速であるので、CM使用率の高いCM13にダーティブロックをライトするよりも、FM77にダーティブロックをライトした方がトータルのライト処理時間が短くなることがある。
 図26は、FMPK20#0に障害が発生した場合におけるダーティブロックの二重化処理を説明するための図である。
 図26において、FMPK20#0にデータブロック#0、FMPK20#1にデータブロック#1、FMPK20#2にデータブロック#2、FMPK20#3にパリティブロックが格納されている。このパリティブロックは、データブロック#0~#2から生成されたものである。ダーティブロック#0は、CM13とFMPK20#0とで二重化されている。
 ここで、FMPK20#0に障害が発生した場合、FMPK20#0に格納されていたダーティブロック#0及びデータブロック#0は失われる。しかし、ダーティブロック#0はCM13にも存在する。また、ダーティブロック#0は、データブロック#1、データブロック#2及びパリティブロックから復元できる。よって、ストレージシステム全体において、ダーティブロック#0及びデータブロック#0は失われない。
 しかし、ダーティブロック#0は、CM13の一箇所にしか存在しない状態となっているので、早急に冗長化する必要がある。この冗長化処理を以下に示す。
 ストレージコントローラ10は、FMPK20#1、#2からデータブロック#1、#2をCM13にリードする(S41)。ストレージコントローラ10は、このデータブロック#1、#2と、CM13に格納されているダーティブロック#0とから新パリティブロックを生成する(S42)。ストレージコントローラ10は、新パリティブロックを、例えば、FMPK20#3にライトする(S43)。以上の処理により、ダーティブロック#0は冗長化される。
 図27は、FMPK20#0に障害が発生した場合におけるストレージコントローラ10のリードコマンド処理を説明するための図である。
 図27において、FMPK20#0にデータブロック#0、FMPK20#1にデータブロック#1、FMPK20#2にデータブロック#2、FMPK20#3にパリティブロックが格納されている。このパリティブロックは、データブロック#0~#2から生成されたものである。また、FMPK20#1は、論理ページにおいてデータブロック#1と対応関係を有するダーティブロック#1を有する。
 ここで、FMPK20#0に障害が発生した状態で、ストレージコントローラ10が、ホスト2からデータブロック#0のリードコマンドを受信したとする。この場合、ストレージコントローラ10は、FMPK20#0からデータブロック#0をリードすることはできない。そこで、ストレージコントローラ10は、以下の処理を実行する。
 ストレージコントローラ10は、CM13に、FMPK20#1~#3からデータブロック#1、データブロック#2及びパリティブロックをリードする(S51)。このとき、FMPK20#1にはダーティブロック#1が格納されているが、ストレージコントローラ10は、FMPK20#1から、ダーティブロック#1ではなく、データブロック#1をリードする。ストレージコントローラ10は、データブロック#1、データブロック#2及びパリティブロックからデータブロック#0を復元する(S52)。ストレージコントローラ10は、その復元したデータブロック#0を、リードコマンドの応答としてホスト2に返す(S53)。以上の処理により、ストレージコントローラ10は、或るFMPK20に障害が発生した場合であっても、そのFMPK20に格納されていたデータブロックを復元することができる。
 図28は、ストレージコントローラ10#0に障害が発生した場合におけるダーティブロックの二重化処理を説明するための図である。
 図28において、FMPK20#0にデータブロック#0、FMPK20#1にデータブロック#1、FMPK20#2にデータブロック#2、FMPK20#3にパリティブロックが格納されている。このパリティブロックは、データブロック#0~#2から生成されたものである。また、ダーティブロック#0は、ストレージコントローラ10#0のCM13とストレージコントローラ10#1のCM13とで二重化されている。ダーティブロック#1は、ストレージコントローラ10#0のCM13とFMPK20#1とで二重化されている。
 ここで、ストレージコントローラ10#0に障害が発生したとする。この場合、ダーティブロック#0及び#1はそれぞれ1つしか存在しないので、早急に冗長化する必要がある。データブロック#0の冗長化処理は、図26に示した通りである。次に、このような場合に、FMPK20に格納されているダーティブロック(図28のダーティブロック#1)を冗長化する処理を説明する。
 図29は、ストレージコントローラ10に障害が発生した場合の処理のフローチャートを示す。この処理は、障害の発生していない方のストレージコントローラ10によって実行される。
 ストレージコントローラ10は、ドライブエンクロージャ3に格納されている各ドライブに対して、以下のステップS1402~S1405の処理を実行する(S1401)。以下、各ドライブは、FMPK20であるとして説明する。
 ストレージコントローラ10は、マッピング管理テーブル81を参照し、今回のループ処理の対象のFMPK20(以下「対象FMPK」という)のダーティライト機能203が「YES」であるか否かを判定する(S1402)。
 対象FMPK20のダーティライト機能203が「NO」の場合(S1402:NO)、ストレージコントローラ10は、ステップS1406に進む。なぜなら、この対象FMPK20には、ダーティブロックが存在し得ないからである。
 対象FMPK20のダーティライト機能203が「YES」の場合(S1402:YES)、ストレージコントローラ10は、対象FMPK20にダーティブロック確認コマンドを送信する(S1403)。つまり、ストレージコントローラ10は、ダーティブロック確認コマンドによって、対象FMPK20にダーティブロックが存在するか否かを確認する。このダーティブロック確認コマンドの詳細については後述するが、ストレージコントローラ10は、ダーティブロックが存在する場合にはそのダーティブロックの格納されているLBAを、ダーティブロックが存在しない場合には「NULL」の応答を受ける。
 ストレージコントローラ10は、ダーティブロック確認コマンドの応答を確認し、対象FMPK20にダーティブロックが存在するか否かを判定する(S1404)。
 対象ドライブにダーティブロックが存在しないと判定した場合(S1404:NO)、ストレージコントローラ10は、ステップS1406に進む。
 対象ドライブにダーティブロックが存在すると判定した場合(S1404:YES)、ストレージコントローラ10は、このダーティブロックを冗長化し(S1405)、ステップS1406に進む。ストレージコントローラ10は、このダーティブロックを、図26に示すように新パリティブロックを生成して冗長化しても良いし、自己のCM13にコピーして二重化しても良い。
 ストレージコントローラ10は、未処理のFMPK20が残っているか否かを判定し、残っている場合はステップS1401に戻り、残っていない場合は当該ループ処理を抜けて当該処理を終了する(S1406)。
 図30は、FMPK20のダーティブロック確認コマンド受信処理のフローチャートを示す。
 FMPK20は、ストレージコントローラ10からダーティブロック確認コマンドを受信すると(S1501)、以下の処理を実行する。
 FMPK20は、ダーティページ管理情報82を参照し、自己のFMPK20にダーティブロックが存在するか否かを判断する(S1502)。例えば、ダーティ論理ページMRU番号401が「NULL」であるか否かに基づいて判断する。
 ダーティブロックが存在しない場合(S1502:NO)、FMPK20は、ダーティブロック確認コマンドの応答として、ストレージコントローラ10に「NULL」を返し(S1604)、当該処理を終了する。
 ダーティブロックが存在する場合(S1502:YES)、FMPK20は、ダーティブロック確認コマンドの応答として、ストレージコントローラ10にダーティ論理ページMRU番号の示すLBAを返し(S1503)、当該処理を終了する。
 ダーティ論理ページMRU番号401の示すLBAを受信したストレージコントローラ10は、この連結リストを辿っていくことで、各データブロックをリードして冗長化することができる。
(第2の実施形態)
 第2の実施形態では、ストレージシステム1bがストレージコントローラ10を1つだけ備える場合の処理について説明する。
 図31は、第2の実施形態に係るストレージシステム1bの全体構成を示すブロック図である。第2の実施形態に係るストレージシステム1bは、ストレージコントローラ10を一つしか備えていないこと以外、第1の実施形態に係るストレージシステム1と同様である。以下、第2の実施形態において、ホスト2からライトコマンドを受信した場合のストレージシステム1bの処理について説明する。
 図32は、第2の実施形態に係るストレージコントローラ10bのライトデータ受信処理のフローチャートを示す。なお、ライトコマンド受信処理については、図13と同様である。
 ストレージコントローラ10bは、ホスト2からライト用データブロックを受信すると(S2001)、以下の処理を実行する。ストレージコントローラ10bは、CM13上に確保したキャッシュセグメントにライト用データブロックを格納する(S2002)。
 ストレージコントローラ10は、ドライブ構成情報44のダーティライト機能203を参照し、ライト対象のFMPK20(ドライブ)のダーティライト機能203が「YES」であるか否かを判定する(S2003)。
 対象FMPK20のダーティライト機能203が「YES」である場合(S2003:YES)、ストレージコントローラ10bは、ドライブ構成情報44のドライブ状態204を参照し、対象FMPK20のドライブ状態204が「OK」であるか否かを判定する(S2004)。
 対象FMPK20のドライブ状態204が「OK」である場合(S2004:YES)、ストレージコントローラ10は、CM13とFMPK20の二箇所にライト用データブロックをキャッシングする(CM&FM二重化)と判断し、「ダーティデータCM&FM二重化処理」を実行する(S2005)。「ダーティデータCM&FM二重化処理」は、図15と同様である。そして、ストレージコントローラ10は、ホスト2にライトコマンドの完了応答を返し(S2010)、当該処理を終了する。
 一方、対象FMPK20のダーティライト機能203が「NO」の場合(S2003:NO)、又は対象FMPK20のドライブ状態204が「NO」の場合(S2004:NO)、ストレージコントローラ10は、自系のCM13の一箇所にライト用データブロックをキャッシングする(CM一重化)と判断し、該当するSGCB42のスロット属性66を「ダーティ(CM一重化)」に変更する(S2006)。そして、ストレージコントローラ10は、ホスト2にライトコマンドに完了応答を返し(S2010)、当該処理を終了する。
 第2の実施形態によれば、CM13を1つしか有さない(ストレージコントローラを1つしか有さない)ストレージシステムにおいて、データブロックを二重化してキャッシュすることができる。つまり、第2の実施形態によれば、CM13を1つしか有さないストレージシステムにおける耐障害性を高めることができる。
 上述した実施形態は例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
 例えば、FMPK20に代えて、他種のストレージデバイスが採用されて良い。ストレージデバイスは、複数の物理領域で構成された不揮発性メモリ(ストレージメディア)と、ストレージコントローラからの要求に応じて不揮発性メモリにアクセスするメディアコントローラとを有してよい。
 メディアコントローラは、複数の論理領域をストレージコントローラのような上位のデバイスに提供してよい。メディアコントローラは、上位のデバイスから指定されたライト先の論理領域に物理領域を割り当て、割り当てた物理領域にライト対象のデータを書き込んでよい。メディアコントローラは、同一の論理領域に第1種及び第2種の物理領域を割り当ててよい。第1種の物理領域は、データの最終的な格納先(デステージ対象のデータ(クリーンのデータ)の格納先)としての記憶領域でよく、その一例が、確定状態(クリーン)の物理ページでよい。第2種の物理領域は、キャッシュデータの格納先としての記憶領域でよく、その一例が、未確定状態(ダーティ)の物理ページでよい。
 不揮発性メモリは、上書きが不可能である追記型のメモリでよい。すなわち、第1種及び第2種の物理領域のいずれにもデータを上書きすることができないでよい。
 具体的には、メディアコントローラは、デステージ先の論理領域に第1の物理領域が割り当てられている場合、空きの物理領域を割当て済の第1種の物理領域に代えてデステージ先の論理領域に割り当て、割り当てた空きの物理領域にデステージ対象のデータを書き込んでよい。この場合、割当て済の第1種の物理領域に記憶されていたデータは、有効データ(デステージ先論理領域に最近格納されたデータ)から無効データ(有効データより旧いデータ)となり、デステージ先論理領域に新たに割り当てられた物理領域に格納されたデータが、デステージ先論理領域についての有効データとなってよい。同様に、メディアコントローラは、キャッシュ先の論理領域に第2種の物理領域が割り当てられている場合、空きの物理領域を割当て済の第2種の物理領域に代えてキャッシュ先の論理領域に割り当て、割り当てた空きの物理領域にキャッシュ対象のデータを書き込んでよい。この場合、割当て済の第2種の物理領域に記憶されていたデータは、有効データ(キャッシュ先論理領域に最近格納されたデータ)から無効データ(有効データより旧いデータ)となり、キャッシュ先論理領域に新たに割り当てられた物理領域に格納されたデータが、キャッシュ先論理領域についての有効データとなってよい。
 1、1b…ストレージシステム 2…ホスト 10、10b…ストレージコントローラ 13…CM(Cache Memory) 20…FMPK(Flash Memory Package) 81…マッピング管理テーブル
 

 

Claims (13)

  1.  第1のキャッシュメモリを有しデータブロックのライトコマンドを受信するストレージコントローラと、
     複数の物理領域で構成された不揮発性メモリを有し前記ライトコマンドに従うライト先に対応する対象の論理領域を含んだ複数の論理領域を提供するストレージデバイスと
    を備え、
     前記ストレージコントローラは、
      前記受信したライトコマンドに係るデータブロックを未確定状態として第1のキャッシュメモリに格納し、
      前記対象の論理領域のアドレスを関連付けたコマンドであって、前記データブロックを未確定状態として格納することを要求する未確定ライトコマンドを、前記ストレージデバイスに送信し、
     前記ストレージデバイスは、
      前記ストレージコントローラから前記未確定ライトコマンドを受信し、前記未確定ライトコマンドに係るデータブロックを前記複数の物理領域のうちの空きの物理領域に格納し、その物理領域を、未確定状態の物理領域として、前記対象の論理領域に割り当てる、
    ストレージシステム。
     
  2.  前記ストレージコントローラは、
      未確定状態のデータブロックを確定状態に変更することを要求し前記対象の論理領域のアドレスを指定した確定コマンドを前記ストレージデバイスに送信し、
     前記ストレージデバイスは、
      前記ストレージコントローラから前記確定コマンドを受信し、前記対象の論理領域に割り当てられている前記未確定状態の物理領域を前記確定状態の物理領域に変更する、
    請求項1に記載のストレージシステム。
     
  3.  前記ストレージデバイスは、前記確定状態の物理領域が割り当てられている前記対象の論理領域のアドレスを指定した前記未確定ライトコマンドを新たに受信した場合、前記新たに受信した未確定ライトコマンドに係るデータブロックを前記複数の物理領域のうちの空きの物理領域に格納し、その物理領域を、未確定状態の物理領域として、前記確定状態の物理領域が割り当てられている前記対象の論理領域に割り当てる、
    請求項2に記載のストレージシステム。
     
  4.  前記ストレージデバイスは、論理領域と、未確定状態の物理領域と、確定状態の物理領域と、の対応関係を管理する管理情報を記憶しており、
     前記ストレージシステムは、論理領域に割り当てる未確定状態の物理領域の変更又は確定状態の物理領域の変更に応じて前記管理情報を更新する、
    請求項3に記載のストレージシステム。
     
  5.  前記ストレージコントローラは、
      前記ストレージデバイスに格納されるデータブロックの冗長性を確保するための冗長化ブロックを生成し、
      前記冗長化ブロックを前記ストレージに格納した後に、前記確定コマンドを前記ストレージデバイスに送信する
    請求項2に記載のストレージシステム。
     
  6.  前記確定コマンドは、前記冗長化ブロックを生成するために用いた未確定状態のデータブロックを確定状態に変更することを要求するコマンドである
    請求項5に記載のストレージシステム。
     
  7.  前記ストレージコントローラは、
      前記未確定状態のデータブロックをリードすることを要求し前記対象の論理領域のアドレスを指定した未確定リードコマンドを前記ストレージデバイスに送信し、
     前記ストレージデバイスは、
      前記ストレージコントローラから前記未確定リードコマンドを受信し、前記対象の論理領域に割り当てられている前記未確定状態の物理領域に格納されているデータブロックをリードする、
    請求項1に記載のストレージシステム。
     
  8.  前記ストレージコントローラは、
      前記確定状態のデータブロックをリードすることを要求し前記対象の論理領域のアドレスを指定した確定リードコマンドを前記ストレージデバイスに送信し、
     前記ストレージデバイスは、
      前記ストレージコントローラから前記確定リードコマンドを受信し、前記対象の論理領域に割り当てられている前記確定状態の物理領域に格納されているデータブロックをリードする
    請求項1に記載のストレージシステム。
     
  9.  前記ストレージコントローラは、
      或るストレージデバイスに障害が発生した場合に、前記確定リードコマンドを用いて障害の発生していないストレージデバイスから所定のデータブロック及び冗長化ブロックをリードし、障害の発生したストレージデバイスに格納されていたデータブロックを復元する
    請求項8に記載のストレージシステム。
     
  10.  前記ストレージコントローラは、
      或るストレージデバイスに障害が発生した場合に、前記確定リードコマンドを用いて障害の発生していないストレージデバイスから所定のデータブロックをリードし、当該所定のデータブロックと、前記第1のキャッシュメモリに格納されている未確定状態のデータブロックとを用いて新たな冗長化ブロックを生成する
    請求項8に記載のストレージシステム。
     
  11.  第2のキャッシュメモリをさらに備え、
     前記ストレージコントローラは、
      前記ライトコマンドを受信した場合、所定の条件に基づいて、前記ライトコマンドに係るデータブロックを、A)未確定状態として前記第1のキャッシュメモリ及び前記第2のキャッシュメモリに格納するか、若しくは、B)未確定状態として前記第1のキャッシュメモリ又は前記第2のキャッシュメモリの何れかに格納し且つ前記未確定ライトコマンドを前記ストレージデバイスに送信するか、の何れかを判定する
    請求項1に記載のストレージシステム。
     
  12.  前記所定の条件は、前記第1のキャッシュメモリ又は前記第2のキャッシュメモリに対するデータブロックの入出力の負荷に基づくものであって、前記ストレージコントローラは、当該負荷が所定の閾値未満である場合は上記A)と判定し、当該負荷が所定の閾値以上である場合は上記B)と判定する
    請求項11に記載のストレージシステム。
     
  13.  第1のキャッシュメモリを有しデータブロックのライトコマンドを受信するストレージコントローラと、複数の物理領域で構成された不揮発性メモリを有し前記ライトコマンドに従うライト先に対応する対象の論理領域を含んだ複数の論理領域を提供するストレージデバイスとの制御方法であって、
     前記ストレージコントローラにおいて、
      前記受信したライトコマンドに係るデータブロックを未確定状態として第1のキャッシュメモリに格納し、
      前記対象の論理領域のアドレスを関連付けたコマンドであって、前記データブロックを未確定状態として格納することを要求する未確定ライトコマンドを、前記ストレージデバイスに送信し、
     前記ストレージデバイスは、
      前記ストレージコントローラから前記未確定ライトコマンドを受信し、前記未確定ライトコマンドに係るデータブロックを前記複数の物理領域のうちの空きの物理領域に格納し、その物理領域を、未確定状態の物理領域として、前記対象の論理領域に割り当てる、
    制御方法。
     
     

     
PCT/JP2013/058783 2013-03-26 2013-03-26 ストレージシステム及び制御方法 WO2014155525A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/JP2013/058783 WO2014155525A1 (ja) 2013-03-26 2013-03-26 ストレージシステム及び制御方法
US14/759,989 US20150339058A1 (en) 2013-03-26 2013-03-26 Storage system and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/058783 WO2014155525A1 (ja) 2013-03-26 2013-03-26 ストレージシステム及び制御方法

Publications (1)

Publication Number Publication Date
WO2014155525A1 true WO2014155525A1 (ja) 2014-10-02

Family

ID=51622611

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/058783 WO2014155525A1 (ja) 2013-03-26 2013-03-26 ストレージシステム及び制御方法

Country Status (2)

Country Link
US (1) US20150339058A1 (ja)
WO (1) WO2014155525A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017212514A1 (ja) * 2016-06-06 2017-12-14 株式会社日立製作所 ストレージシステム及び記憶制御方法
WO2017216887A1 (ja) * 2016-06-15 2017-12-21 株式会社日立製作所 情報処理システム
JPWO2017164263A1 (ja) * 2016-03-24 2018-03-29 株式会社ジェイ・エム・ディー ファイルおよびメディア管理装置、ならびにコンピュータプログラム

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6008325B2 (ja) * 2013-05-17 2016-10-19 学校法人 中央大学 データ記憶システムおよびその制御方法
TWI539282B (zh) * 2014-10-13 2016-06-21 慧榮科技股份有限公司 非揮發性儲存裝置與控制器
CN108536619B (zh) * 2017-03-03 2021-12-14 北京忆恒创源科技股份有限公司 快速恢复ftl表的方法与装置
CN111610930B (zh) 2019-02-26 2023-05-02 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
CN111611178B (zh) 2019-02-26 2023-05-26 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
CN111610931B (zh) 2019-02-26 2023-05-02 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
CN111610929B (zh) * 2019-02-26 2023-04-14 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
CN115237667A (zh) * 2021-04-23 2022-10-25 伊姆西Ip控股有限责任公司 用于存储管理的方法、电子设备和计算机程序产品

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006134125A (ja) * 2004-11-08 2006-05-25 Ricoh Co Ltd 情報処理装置
JP2007087094A (ja) * 2005-09-22 2007-04-05 Fujitsu Ltd Raid装置におけるライトバック方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1026575A3 (en) * 1999-02-08 2006-09-06 Hitachi, Ltd. Disk array system and method of changing its configuration
JP5026102B2 (ja) * 2007-02-07 2012-09-12 株式会社日立製作所 ストレージ制御装置及びデータ管理方法
US8359431B2 (en) * 2009-08-20 2013-01-22 Hitachi, Ltd. Storage subsystem and its data processing method for reducing the amount of data to be stored in a semiconductor nonvolatile memory
WO2011070611A1 (en) * 2009-12-08 2011-06-16 Hitachi, Ltd. Storage system and storage control apparatus provided with cache memory group including volatile memory and nonvolatile memory
US9075754B1 (en) * 2011-12-31 2015-07-07 Emc Corporation Managing cache backup and restore

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006134125A (ja) * 2004-11-08 2006-05-25 Ricoh Co Ltd 情報処理装置
JP2007087094A (ja) * 2005-09-22 2007-04-05 Fujitsu Ltd Raid装置におけるライトバック方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2017164263A1 (ja) * 2016-03-24 2018-03-29 株式会社ジェイ・エム・ディー ファイルおよびメディア管理装置、ならびにコンピュータプログラム
WO2017212514A1 (ja) * 2016-06-06 2017-12-14 株式会社日立製作所 ストレージシステム及び記憶制御方法
WO2017216887A1 (ja) * 2016-06-15 2017-12-21 株式会社日立製作所 情報処理システム
JPWO2017216887A1 (ja) * 2016-06-15 2019-01-17 株式会社日立製作所 情報処理システム
US10853268B2 (en) 2016-06-15 2020-12-01 Hitachi, Ltd. Parity generating information processing system

Also Published As

Publication number Publication date
US20150339058A1 (en) 2015-11-26

Similar Documents

Publication Publication Date Title
WO2014155525A1 (ja) ストレージシステム及び制御方法
JP5937697B2 (ja) ストレージシステム
JP6073471B2 (ja) ストレージ装置
JP6007332B2 (ja) ストレージシステム及びデータライト方法
JP6750011B2 (ja) 情報処理システム
JP6017065B2 (ja) ストレージシステム及びキャッシュコントロール方法
JP6009095B2 (ja) ストレージシステム及び記憶制御方法
US20150095696A1 (en) Second-level raid cache splicing
US11086562B2 (en) Computer system having data amount reduction function and storage control method
JP2015518186A (ja) ストレージシステム及びストレージ制御装置
JP7145902B2 (ja) ストレージシステム及びその制御方法
TW201643690A (zh) 資料儲存系統及其特定指令執行方法
JP6011153B2 (ja) ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
US20180307440A1 (en) Storage control apparatus and storage control method
WO2016139787A1 (ja) ストレージシステム及びデータ書込み制御方法
US10067882B2 (en) Storage system and storage control method
KR101369408B1 (ko) 스토리지 시스템 및 이의 데이터 전송 방법
JP4245021B2 (ja) ストレージ装置、ストレージシステム、ストレージ装置の制御方法
US9864688B1 (en) Discarding cached data before cache flush
JP6817340B2 (ja) 計算機
JP6175566B2 (ja) ストレージシステム及び記憶制御方法
JP6163588B2 (ja) ストレージシステム
JP2019121129A (ja) 不揮発性メモリモジュール
JP6276208B2 (ja) メモリシステム及びプログラム
JP6805501B2 (ja) ストレージ装置

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

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 14759989

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP