[go: up one dir, main page]

WO2018051505A1 - ストレージシステム - Google Patents

ストレージシステム Download PDF

Info

Publication number
WO2018051505A1
WO2018051505A1 PCT/JP2016/077533 JP2016077533W WO2018051505A1 WO 2018051505 A1 WO2018051505 A1 WO 2018051505A1 JP 2016077533 W JP2016077533 W JP 2016077533W WO 2018051505 A1 WO2018051505 A1 WO 2018051505A1
Authority
WO
WIPO (PCT)
Prior art keywords
address
parity
data
storage device
new
Prior art date
Application number
PCT/JP2016/077533
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/JP2016/077533 priority Critical patent/WO2018051505A1/ja
Priority to JP2018539482A priority patent/JP6652647B2/ja
Priority to US16/084,916 priority patent/US10664193B2/en
Priority to CN201680086779.0A priority patent/CN109313593B/zh
Publication of WO2018051505A1 publication Critical patent/WO2018051505A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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
    • G06F11/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • 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
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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

Definitions

  • the present invention relates to a storage system.
  • the storage system When the storage system stores write data for a plurality of discontinuous areas in a stripe of the storage device, the storage system transmits a new data transmission command and write data including information for specifying the plurality of discontinuous regions to the storage device. Thereafter, the intermediate parity generated from the plurality of write data and the pre-update data of the plurality of write data is received from the storage device, and the intermediate parity transmission command and the intermediate parity are transmitted to the storage device that stores the parity.
  • the storage device storing the parity reads the received intermediate parity, the pre-update parity corresponding to the intermediate parity, After updating, the updated parity is generated, and the updated parity is stored in the storage medium.
  • the storage controller and the plurality of storage devices are connected by, for example, the SCSI standard, and the following steps are executed when updating the parity.
  • a new data transmission command is issued from the controller to the storage device 1 (new data is transmitted from the controller to the storage device 1).
  • the storage device 1 issues a completion response (completion command) to the new data transmission command.
  • An intermediate parity transmission command is issued from the storage device 1 to the controller (the intermediate parity is transmitted from the storage device 1 to the controller).
  • the controller issues a completion response (completion command) to the intermediate parity transmission command.
  • An intermediate parity transmission command is issued from the controller to the storage device 2.
  • the storage device 2 issues a completion response (completion command) to the intermediate parity transmission command.
  • a new parity generation completion response (completion command) is issued from the storage device 2 to the controller.
  • the above storage system issues the commands of steps (1) to (7) every time the parity is updated due to data write from the host. If the number of commands issued is large, it becomes a processor load. Therefore, it is desired to reduce the number of issued commands in order to suppress the processor load during parity update and improve the processing performance of the storage system.
  • a typical example of the present invention is a storage system including a controller including a memory area and a plurality of storage devices each including a storage medium, wherein the controller receives a write request from a host, and An intermediate parity generation command corresponding to the designated address indicated by the write request is transmitted to the first storage device in the plurality of storage devices, and the intermediate parity generation command is updated to the new data and the new data at the designated address.
  • Intermediate parity is generated from the previous data, and the intermediate parity generation command is used to generate a first address of the cache area storing the new data and the cache for storing the intermediate parity.
  • a second address of the area wherein the first storage device generates the intermediate parity Receive the command, obtain the new data from the first address, generate the intermediate parity from the new data and the previous data stored in the first storage device, the intermediate parity, Store in the second address.
  • the structural example of a computer system is shown.
  • the structural example of a flash package is shown.
  • the normal sequence example of the data update according to the write request from a host computer is shown.
  • the normal sequence example of the data update according to the write request from a host computer is shown.
  • 4 shows an example of the configuration of write request management information.
  • the structural example of an intermediate parity generation command is shown.
  • the structural example of a new parity generation command is shown.
  • An example of a sequence when a failure has occurred in data update in response to a write request from a host computer is shown.
  • the structural example of a reset command is shown.
  • the structural example of a reset command is shown.
  • Another sequence example when a failure occurs in data update in response to a write request from the host computer will be shown.
  • FIG. 15 shows a sequence example when a failure occurs in the normal sequence shown in FIGS. 13 and 14.
  • the information of the present invention will be described using the expression “table”.
  • the information does not necessarily have to be expressed by a data structure of a table, and “list”, “DB (database)”, It may be expressed by a data structure such as “queue” or the like. Therefore, “table”, “list”, “DB”, “queue”, and the like can be simply referred to as “information” in order to indicate that they do not depend on the data structure.
  • the expressions “identification information”, “identifier”, “name”, “name”, “ID” can be used, and these can be replaced with each other. It is.
  • program may be used as the subject, but the program is executed by the processor, and the processing determined by using the memory and the communication port (communication control device). It is also possible to use a controller as the subject. Further, the processing disclosed with the program as the subject may be processing performed by a computer such as a management device or an information processing device. Part or all of the program may be realized by dedicated hardware or may be modularized. Various programs may be installed in each computer by a program distribution server or a storage medium.
  • SSDs Solid State Drive
  • SATA Serial ATA
  • SAS Serial Attached SCSI
  • This embodiment uses, for example, an NVMe command that enables direct access to the memory on the controller from the storage device in parity generation.
  • NVMe the supported I / O commands for data transmission / reception are very simple, and there are only three commands requiring support, Write, Read, and Flush.
  • the host is the main body and sends commands and data to the device side, whereas in NVMe, only the command is created from the drought. The notification is sent to the device, the command itself is acquired, the data is transferred, and the device side is the main body.
  • the action is replaced with an action from the device side.
  • the host transmits Write data to the device in the past, but in NVMe, this is realized by an operation in which the device reads host data.
  • the Read command processing is realized by an operation in which the apparatus writes data to the host memory.
  • the device triggers the operation trigger for both command reception and data read / write transfer, so that it is not necessary to secure extra resources to accept requests from the host at any time.
  • the parity generation is made efficient and the processor load is suppressed, thereby improving the processing performance of the storage system.
  • FIG. 1 shows a configuration example of a computer system 100 according to the embodiment.
  • the computer system 100 includes a host computer 101, a management apparatus 102, and a storage system 104.
  • the host computer 101, the management apparatus 102, and the storage system 104 are connected to each other via a network 103.
  • the network 103 is, for example, Storage Area Network (SAN).
  • the management device 102 may be connected to another device via a management network different from the network 103.
  • SAN Storage Area Network
  • the host computer 101 is a computer that executes an application program, and accesses a logical storage area of the storage system 104 via the network 103.
  • the host computer 101 includes, for example, an input device, an output device, a CPU (Central Processing Unit), a memory, a disk adapter, a network adapter, and a secondary storage device (not shown).
  • a CPU Central Processing Unit
  • the host computer 101 includes, for example, an input device, an output device, a CPU (Central Processing Unit), a memory, a disk adapter, a network adapter, and a secondary storage device (not shown).
  • the host computer 101 executes an application program used by the user and a storage system control program for performing interface control with the storage system 104.
  • the host computer 101 uses a volume provided by the storage system 104.
  • the host computer 101 accesses the data stored in the volume by issuing a read command or a write request to the provided volume.
  • the management device 102 manages the storage system 104 and configures a storage area of the storage system 104, for example.
  • the management apparatus 102 executes a management program for managing the storage system 104. Similar to a general-purpose computer, the management apparatus 102 includes input / output devices such as a keyboard and a display, a CPU, a memory, a network adapter, and a secondary storage device.
  • the storage system 104 includes a system controller 105 and a plurality of flash packages 113.
  • the storage system 104 stores data in the storage area of the flash package 113.
  • the storage system 104 provides one or more volumes to the host computer 101.
  • the system controller 105 includes a host interface (I / F) 106, a maintenance I / F, a drive I / F 108, an MP (Micro Processor) 109, a memory unit 119, and a plurality of flash packages 113. These components are interconnected by a bus 112.
  • the host I / F 106 is an interface device used for the storage system 104 to communicate with the initiator of the host computer 101.
  • a request (read request, write request, etc.) issued for the host computer 101 to access the volume arrives at the host I / F 106.
  • the storage system 104 returns information (for example, read data) from the host I / F 106 to the host computer 101.
  • the maintenance I / F 107 is an interface device for the storage system 104 to communicate with the management apparatus 102.
  • a command from the management apparatus 102 arrives at the maintenance I / F 107.
  • the storage system 104 returns information from the maintenance I / F 107 to the management apparatus 102.
  • FIG. 1 shows a configuration in which the host I / F 106 and the maintenance I / F 107 are both connected to the network 103, but the network to which the host I / F 106 is connected and the network to which the maintenance I / F 107 is connected are different. It may be a network.
  • the memory unit 119 includes a cache memory 110, a shared memory 111, and a local memory 118.
  • the cache memory 110, the shared memory 111, and the local memory 118 may be used by physically dividing an area in one memory, or each may be configured by a physically separate memory.
  • the cache memory 110 provides a cache area.
  • the cache memory 110 is composed of, for example, a RAM (Random Access Memory), and temporarily stores data to be read from and written to the flash package 113.
  • the shared memory 111 is configured with a hard disk, a flash memory, a RAM, and the like, and stores a program operating on the storage controller, configuration information, and the like.
  • the local memory 118 is used for temporarily storing programs executed by the MP 109 and information used by the MP 109.
  • the cache memory 110 is used as a temporary storage area for temporarily storing write data for the volume (storage device) or data (read data) read from the volume (storage device).
  • the read data stored in the cache memory 110 may be stored in the cache memory 110 without being erased.
  • the read data may be deleted from the cache memory 110.
  • a volatile storage medium such as DRAM (Dynamic Random Access Memory), SRAM (Static Random Access Memory), or the like is used.
  • a non-volatile memory may be used as the cache memory 110.
  • the shared memory 111 provides a shared storage area for storing management information used by the MP 109. Similar to the cache memory 110, the shared memory 111 is a volatile storage medium such as DRAM or SRAM, but a non-volatile storage medium may also be used.
  • the flash package 113 is a storage device having a nonvolatile storage medium for storing write data from the host computer 101.
  • the flash package 113 uses a nonvolatile semiconductor memory such as a flash memory or another storage medium as a storage medium.
  • An example of the flash package 113 is an SSD.
  • a plurality of flash packages 113 constitute a RAID (Redundant Array of Independent Disks) group 115.
  • the MP 109 has a RAID function that can recover the data of the flash package 113 even if one flash package 113 fails.
  • one or more logical volumes are created.
  • One logical volume is associated with a physical storage area included in the flash package 113 constituting the RAID group 115.
  • the RAID function stores a set of write data and redundant data received from the host computer 101 in a distributed manner in the flash package 113 of the RAID group 115.
  • Multiple RAID levels are known. For example, RAID 1 stores write data and a copy thereof in different flash packages 113.
  • RAID5 distributes and stores redundant data sets composed of write data and one parity in different flash packages 113, and RAID5 distributes write data and redundant data composed of two parities in different flash packages 113. Store.
  • the host computer 101 is connected to the system controller 12 via a network, but the hardware configuration of the storage system 42 may be the same as that of the server.
  • a plurality of flash packages 113 are mounted (or connected) on a general-purpose computer such as a personal computer (hereinafter simply referred to as “computer”), The program may be executed.
  • the computer receives an I / O request from the server and stores data in the flash package 113 or reads data from the flash package 113.
  • the various programs executed on the storage system and the program executed on the server may be configured to be executed on the same computer.
  • a hypervisor program that forms a virtual machine on the computer
  • a server virtual machine that executes at least the program executed on the server on the computer
  • a storage that executes various programs on the storage system
  • a read request or a write request is issued from the server virtual machine. Therefore, the subsequent host computer 101 may be replaced with a “server virtual machine”.
  • FIG. 2 shows a configuration example of the flash package 113.
  • the flash package 113 includes a device controller 210 and a flash memory 280 that is a storage medium for storing write data from the host computer 101.
  • the device controller 210 includes a drive I / F 211, a device processor 213, a memory 214, a flash I / F 215, and a logic circuit 216, which are interconnected via an internal network 212.
  • the logic circuit 216 performs, for example, parity calculation, encryption processing, and compression processing.
  • the drive I / F 211 is an interface device for communicating with the system controller 105.
  • the flash I / F 215 is an interface device for the device controller 210 to communicate with the flash memory 280.
  • the device processor 213 executes a program for controlling the flash package 113.
  • processing performed by the flash package 113 described below is performed by the device processor 213 executing a program.
  • the memory 214 is for storing programs executed by the device processor 213, control information used by the device processor 213, and the like.
  • a temporary storage area for temporarily storing data to be read from and written to the flash memory 280 is also provided.
  • the device processor 213 receives a request from the MP 109 and executes processing according to the received command. For example, the device processor 213 receives the write command from the MP 109 and writes the write command data to the flash memory 280. The device processor 213 writes data to the temporary storage area in the memory 214 or the flash memory 280, and then returns a write command completion response (response command) to the MP 109.
  • the device processor 213 receives the write command from the MP 109 and writes the write command data to the flash memory 280.
  • the device processor 213 writes data to the temporary storage area in the memory 214 or the flash memory 280, and then returns a write command completion response (response command) to the MP 109.
  • the device processor 213 receives a read command from the MP 109, reads the read command data from the temporary storage area in the memory 214 or the flash memory 280, and returns it to the MP package 109. Details of the command from the MP 109 to the flash package 113 and the processing of the flash package 113 in response to the command will be described later.
  • the storage system 104 adds new data to the flash memory 280 in the flash package 113 as a storage medium, for example, like a log structure file system.
  • the storage system 104 does not overwrite the update data with the previous data and stores it in a storage area different from the previous data in the flash memory 280.
  • Append. The flash memory 280 holds past data and current data of a logical address indicated by a request from the host computer 101.
  • the storage system 104 has mapping information in the memory 214 of the flash package 113, for example.
  • the mapping information is information that manages logical addresses and physical addresses in association with each other.
  • the logical address is an address in an address space for the host computer 101 to access, and is an I / O address (volume identifier and in-volume address) to the volume.
  • the physical address is an address where data is actually stored in the flash memory 280.
  • the storage system 104 When there is a data update request from the host computer 101, the storage system 104 changes from the physical address where the previous data associated with the logical address indicated by the update request is stored to the physical address where the update data is stored.
  • the mapping information is updated by changing the association.
  • the mapping information may hold only the physical address of the update data, or may hold both the physical address of the update data and the physical address of the previous data.
  • mapping information holds only the physical address of the update data
  • the storage system 104 cancels the association between the physical address of the previous data and the logical address when the update data is stored in the flash memory 280, that is, the previous data
  • the mapping information may be updated by deleting the physical address and associating the physical address of the update data with the logical address.
  • the storage system 104 stores the physical address of the update data and the physical address of the previous data for a predetermined period after storing the update data in the flash memory 280. Both addresses may be associated with logical addresses. Further, after the elapse of a predetermined period, the storage system 104 may cancel the association between the logical address and the physical address of the previous data, that is, delete the physical address of the previous data.
  • the trigger for releasing the association is not limited to the passage of time but may be after receiving a predetermined command or a predetermined completion response.
  • the writing speed in particular, the writing speed in the flash package 113 using the NAND flash is improved.
  • the flash package 113 or the MP 109 performs address management for additional writing.
  • FIG. 3 and 4 show an example of a normal sequence of data update in response to a write request from the host computer 101.
  • FIG. A system controller (CTL in the figure) 105 receives a write request and new data 301 from the host computer 101.
  • the MP 109 for processing the write request is determined in advance according to the address of the write request.
  • MP_A 109A is a predetermined process MP.
  • the MP_A 109A registers information about the received write request in the write request management information 331 (S11).
  • FIG. 5 shows a configuration example of the write request management information 331.
  • the write request management information 331 is stored in the shared memory 111 and indicates a write request, an MP that processes the write request, and a phase in the processing of the write request.
  • the write request management information 331 includes columns for request ID, process MP, phase, and logical address.
  • the request ID column indicates the identifier of the write request. A unique value is assigned to a new write request.
  • the processing MP column indicates an identifier of an MP that processes the write request.
  • the phase column indicates a phase in the processing of the write request. Specifically, the phase indicates “before parity generation” or “after parity generation”. When a new write request is received, it is registered “before parity generation”.
  • the logical address column indicates a logical address that is a write destination indicated by the write request.
  • Data related to a write request from the host computer 101 (new data) is stored in the cache memory 110.
  • the MP_A 109A generates an intermediate parity generation command from the write request received from the host computer 101.
  • the MP_A 109A transmits an intermediate parity generation command to the flash package (data node) 113A that stores the previous data 302.
  • the intermediate parity generation command stores new data 301, and further instructs to generate intermediate parity 303 from new data 301 and previous data 302.
  • FIG. 6 shows a configuration example of the intermediate parity generation command 341.
  • the intermediate parity generation command 341 has an OPECODE field, an address information 1 field, an address information 2 field, a command detail field, and an address information 3 field.
  • the OPECODE field indicates the type of operation, and in this example, indicates the processing of a write request from the host computer 101.
  • the address information 1 field indicates an address at which the new data 301 is stored in the cache memory 110.
  • the address information 2 field indicates an address for storing the newly generated intermediate parity 303 in the cache memory 110.
  • the command detail field indicates that this command is an intermediate parity generation command.
  • the address information 3 field indicates the logical address of the new data 301. The logical address is also the logical address of the previous data 302.
  • the MP_A 109A refers to the mapping information and identifies the physical address in the data node 113A storing the pre-write request data 302 from the logical address indicated by the write request.
  • the address for storing the intermediate parity newly generated in the cache memory 110 indicates a free area in the cache memory 110.
  • the data node 113A refers to the received intermediate parity generation command 341, reads the new data 301 stored at the address specified by the address information 1 from the cache memory 110, and stores it in the temporary storage area of the memory 214. (S12).
  • the data node 113A stores the new data 301 in the free area of the flash memory 280, updates the mapping information stored in the memory 214, that is, associates the logical address with the physical address in which the new data 301 is stored.
  • the process of storing the new data 301 in the flash memory 280 and the update of the mapping information need not be performed at the timing of this S12. For example, it may be performed periodically at a predetermined timing without being synchronized with the reception of the intermediate parity generation command 341, or may be performed at a timing when there is a margin in the processing performance of the device processor 213.
  • the present embodiment does not take the opportunity to receive the intermediate parity generation command, that is, the process of storing the new data 301 in the flash memory 280 and the process of generating the intermediate parity asynchronously with the reception of the intermediate parity generation command.
  • the device processor 213 receives the intermediate parity generation command, writes data in the temporary storage area of the memory 214, and then returns a write command completion response (response command) to the MP 109.
  • the device processor 213 upon receipt of the intermediate parity generation command, that is, in synchronization with the reception of the intermediate parity generation command, the process of storing the new data 301 in the flash memory 280 and the process of generating the intermediate parity may be started.
  • the device processor 213 returns a write command completion response (response command) to the MP 109 after the new parity generation is completed.
  • the data node 113A stores, in the memory 214, the previous data address 321 that is the physical address of the previous data 302 corresponding to the logical address of the new data indicated by the write request with the update of the mapping information (S13).
  • the previous data address 321 only needs to be stored so that the correspondence with the logical address indicated by the write request can be understood.
  • the previous data address 321 may be included in the mapping information or may be stored in a form different from the mapping information.
  • the previous data address 321 stored in the memory 214 may be erased asynchronously with the processing related to the write request, or may be erased after a predetermined time has elapsed since the data was stored.
  • the previous data address 321 is referred to when a failure occurs. Details will be described later.
  • the flash package 113 of this example appends new data to a different physical address without overwriting the previous data with the new data.
  • the data node 113A refers to the mapping information and identifies the physical address in the flash memory 280 of the data node 113A storing the previous data 302 from the logical address specified by the address information 3.
  • the data node 113A reads the previous data 302 and stores it in the memory 214.
  • the data node 113A generates the intermediate parity 303 from the new data 301 and the previous data 302 stored in the memory 214 (S14).
  • the data node 113A refers to the intermediate parity generation command 341, and stores the intermediate parity 303 at the address of the cache memory 110 specified by the address information 2 (S15).
  • the address at which the new data 301 is stored in the cache memory 110 and the address for storing the newly generated intermediate parity 303 in the cache memory 110 are also the intermediate parity generation command.
  • the intermediate parity generation command By including it in 341, it is possible to read new data 301 from the system controller 105 to the flash package 113 and generate the intermediate parity 303 and write from the flash package 113 to the system controller 105 by issuing one intermediate parity generation command. Is done.
  • the intermediate parity 303 can be efficiently generated with a small number of commands and steps.
  • the MP_A 109A generates a new parity generation command from the write request received from the host computer 101.
  • the MP_A 109A transmits a new parity generation command to the flash package (parity node) 113B that stores the previous parity 304.
  • this example shows one parity node, when there are a plurality of parity nodes, the process MP 109 transmits a new parity generation command to each parity node that stores the previous parity.
  • the intermediate parity generation command instructs generation of a new parity 305 from the intermediate parity 303 and the previous parity 304.
  • FIG. 7 shows a configuration example of the new parity generation command 342.
  • the new parity generation command 342 has an OPECODE field, an address information 1 field, a command details field, and an address information 3 field.
  • the OPECODE field indicates the type of operation, and in this example, indicates the processing of a write request from the host computer 101.
  • the address information 1 field indicates an address at which the intermediate parity 303 is stored in the cache memory 110.
  • the command detail field indicates that this command is a new parity generation command.
  • the address information 3 field indicates the logical address of the new parity related to the data requested to be written.
  • the logical address is also the logical address of the previous parity 304.
  • MP_A 109A refers to the mapping information and identifies the physical address in the parity node 113B storing the pre-parity 304 of the write request from the logical address indicated by the write request.
  • the parity node 113B refers to the received new parity generation command 342, reads the intermediate parity 303 stored at the address specified by the address information 1 from the cache memory 110, and stores it in the memory 214 (S16). .
  • the parity node 113B refers to the mapping information and identifies the physical address in the flash memory 280 of the parity node 113B that stores the previous parity 304, from the logical address specified by the address information 3.
  • the parity node 113B reads the previous parity 304 and stores it in the memory 214.
  • the parity node 113B generates a new parity 305 from the intermediate parity 303 and the previous parity 304 stored in the memory 214 (S17).
  • the parity node 113B stores the new parity 305 in the free area of the flash memory 280, and updates the mapping information stored in the memory 214.
  • the parity node 113B stores the previous parity address 322 corresponding to the logical address in the memory 214 with the update of the mapping information (S18).
  • the previous parity address 322 is referred to when a failure occurs. Details will be described later.
  • parity node 113B returns a completion response 311 to the system controller 105 (S19).
  • the MP_A 109A When the MP_A 109A receives the completion response 311, the MP_A 109A updates the write request management information 331 (S20). Specifically, the MP_A 109A changes “before parity generation” in the phase column to “after parity generation” in the entry of the processed write request.
  • the read of the intermediate parity 303 from the system controller 105 to the flash package 113 and the generation of the intermediate new parity 305 are realized by the new parity generation command 342.
  • the new parity 305 can be efficiently generated with a small number of commands and steps.
  • the flash package 113 manages the address of data to be added.
  • the system controller 105 (MP 109) may manage the address of data to be added.
  • the system controller 105 manages the previous data address and the previous parity address.
  • the intermediate parity generation command issued by the system controller 105 includes an address for storing new data in the cache memory 110 and an address for storing the intermediate parity. Furthermore, the storage address of the new data and the storage address of the previous data in the flash package 113 are included. The flash package 113 reads the previous data from the designated address of the flash memory 280, and further stores new data at the designated address.
  • the new parity generation command issued by the system controller 105 includes an address for storing the intermediate parity in the cache memory 110, and a new parity storage address and a previous parity storage address in the flash package 113.
  • the flash package 113 reads the previous parity from the specified address of the flash memory 280, and further stores the new parity at the specified address.
  • FIG. 8 shows a sequence example when a failure occurs in data update in response to a write request from the host computer 101.
  • a failure occurs in MP_A 109A.
  • differences from the sequence example shown in FIG. 4 will be mainly described.
  • MP_B 109B interrupts the sequence shown in FIG. 4 and then re-executes from the transfer of new data 301 (S12).
  • the MP_B 109B refers to the write request management information 331, and acquires information on the processing taken over from the MP_A 109A (S31).
  • the process MP acquires an entry indicating MP_A 109A.
  • the write request management information 331 indicates that the phase of processing taken over from MP_A 109A is “before parity generation”.
  • the MP_B 109B notifies the data node 113A and the parity node 113B of interruption of this processing. Specifically, the MP_B 109B transmits a reset command to each of the data node 113A and the parity node 113B (S31).
  • FIG. 9A and 9B show a configuration example of the reset command.
  • FIG. 9A shows a configuration example 351 of the reset command transmitted to the data node
  • FIG. 9A shows a configuration example 352 of the reset command transmitted to the parity node.
  • the reset command indicates an address information field and a command detail field.
  • the address information field indicates a logical address for storing new data in the data node, similarly to the address information 3 in the intermediate parity generation command 341.
  • the command details indicate resetting of intermediate parity generation.
  • the address information field indicates a logical address for storing the new parity, similarly to the address information 3 in the new parity generation command 342.
  • the command details indicate the reset of new parity generation.
  • the data node 113A and the parity node 113B that have received the reset command interrupt the intermediate parity generation process and the new parity generation process.
  • the data node 113A has not started the intermediate parity generation process
  • the parity node 113B has not started the new parity generation process.
  • Each of the data node 113A and the parity node 113B returns a completion response to the reset command to the MP_B 109B (S32 and S33).
  • the MP_B 109B When receiving the completion response from the data node 113A and the parity node 113B, the MP_B 109B updates the write request management information 331 (S34). Specifically, the MP_B 109B changes the processing MP from MP_A to MP_B in the entry of the write request management information 331. The subsequent steps in the sequence are the same as those in FIG. 4 except that the processing MP is changed from MP_A 109A to MP_B 109B.
  • FIG. 10 shows another sequence example when a failure occurs in the data update in response to the write request from the host computer 101.
  • a failure occurs in MP_A 109A.
  • differences from the sequence example shown in FIG. 8 will be mainly described.
  • the data node 113A and the parity node 113B receive the reset command from the MP_B 109B (S31). For the mapping information, the data node 113A returns the physical address corresponding to the logical address of the reset command 351 to the previous data address 321 stored in the memory 214 in S13, and then returns a completion response (S41). Thereby, the correct intermediate parity can be generated in the subsequent steps.
  • FIG. 11 shows a sequence example of data update in response to a write request from the host computer 101.
  • the data node 113A transmits the intermediate parity to the system controller 105 (S15), before the system controller 105 transfers the intermediate parity to the parity node 113B, a failure has occurred in the preset process MP_A 109A.
  • the process MP is taken over from MP_A 109A to MP_B 109B.
  • Other points are the same as the sequence of FIG.
  • FIG. 12 shows another sequence example when a failure occurs in the data update in response to the write request from the host computer 101.
  • a failure has occurred in MP_A 109A.
  • the process MP is taken over from MP_A 109A to MP_B 109B.
  • the data node 113A and the parity node 113B receive the reset command from the MP_B 109B (S31).
  • the data node 113A returns the physical address corresponding to the logical address of the mapping information to the previous data address 321 stored in the memory 214 in S13, and then returns a completion response (S41).
  • the parity node 113B returns the physical address corresponding to the logical address of the reset command 352 to the previous parity address 322 stored in the memory 214 in S18, and then returns a completion response (S42).
  • the MP_B 109B determines that the parity update for the write request has been completed. In this way, the processing at the time of failure can be appropriately controlled by the write request management information 331.
  • system controller 105 can be efficiently configured by starting the transfer of new data by the MP that has taken over the process in any step of the MP failure in the process of the write request.
  • the write request management information 331 since the write request management information 331 manages only “before parity generation” and “after parity generation”, the system configuration can be simplified.
  • the write request management information 331 may indicate another phase.
  • the write / write request management information 331 may indicate the phases “before intermediate parity generation” and “after intermediate parity generation”.
  • the MP_B 109B that has taken over the processing performs processing according to the phase.
  • FIGS. 3 and 4 show another normal sequence example of data update in response to a write request from the host computer 101 in this embodiment.
  • differences from the sequence examples shown in FIGS. 3 and 4 will be mainly described.
  • the previous data address 321 and the previous parity address 322 and their storage steps S13 and S18 in the sequence example shown in FIGS. 3 and 4 are omitted in the sequences of FIGS.
  • Other points are the same between the sequence shown in FIGS. 3 and 4 and the sequence shown in FIGS. 13 and 14.
  • the MP_B 109B refers to the write request management information 331, and acquires information on the processing taken over from the MP_A 109A (S51).
  • the write request management information 331 indicates that the phase of processing taken over from MP_A 109A is “before parity generation”.
  • the difference between this sequence and FIG. 11 is that the previous data address 321 and the previous parity address 322 are not used, and therefore there is no step of storing and writing back.
  • there is no reset instruction for the write request management information 331 and the write request management information 331 is not updated, that is, without S31 to 34 in FIG.
  • This parity update processing (S12 to S19) is performed because the phase of the write request management information 331 is “before parity generation”.
  • the MP_B 109B Upon receiving a new parity generation completion response from the parity node 113B (S19), the MP_B 109B refers to update the write request management information 331, but the process MP stored in the write request management information 331 is different from the MP_B 109B. Is determined, it is determined that a parity mismatch has occurred. Therefore, the process MP of the write request management information 331 is updated to MP_B 109B (S52), and the parity is generated again (S53).
  • the parity regeneration in S53 does not store the previous data address 321 and the previous parity address 322 in the memory 214 in this embodiment, so that the new data, the previous data, and the previous parity as described so far are stored.
  • a so-called sequential write parity generation method is employed. Specifically, the MP_B 109B receives the data blocks of the stripe column in which new data is stored and new parity is generated in this sequence from a plurality of data nodes including the data node 113A. The MP_B 109B generates a parity from the data block of the received stripe column.
  • This example does not refer to the previous data address and the previous parity address, and since the processing MP has been changed, the parity node 113B may generate a new parity that is not correct. Therefore, by regenerating the parity from the new data in the MP_B 109B that has taken over the processing, it is possible to reliably hold the correct parity.
  • the storage system 104 may generate a new parity without using a new parity generation command.
  • the system controller 105 may read the previous parity from the parity node, generate a new parity, and store it in the parity node.
  • an intermediate parity transmission command may be transmitted from the system controller 105 to the parity node, and a completion response and a new parity generation completion response may be received.
  • this invention is not limited to the above-mentioned Example, Various modifications are included.
  • the above-described embodiments have been described in detail for easy understanding of the present invention, and are not necessarily limited to those having all the configurations described.
  • a part of the configuration of one embodiment can be replaced with the configuration of another embodiment, and the configuration of another embodiment can be added to the configuration of one embodiment.
  • each of the above-described configurations, functions, processing units, and the like may be realized by hardware by designing a part or all of them with, for example, an integrated circuit.
  • Each of the above-described configurations, functions, and the like may be realized by software by interpreting and executing a program that realizes each function by the processor.
  • Information such as programs, tables, and files for realizing each function can be stored in a recording device such as a memory, a hard disk, or an SSD, or a recording medium such as an IC card or an SD card.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

コントローラは、ホストからライト要求を受信し、ライト要求が示す指定アドレスに対応する中間パリティ生成コマンドを、複数の記憶デバイスにおける第1記憶デバイスに、送信する。中間パリティ生成コマンドは、上記指定アドレスの新データと前記新データに更新される前データとから、中間パリティを生成することを指示する。中間パリティ生成コマンドは、新データを格納しているメモリ領域の第1アドレスと、中間パリティを格納するためのメモリ領域の第2アドレスとを含む。第1記憶デバイスは、中間パリティ生成コマンドを受信し、第1アドレスから新データを取得し、新データと、第1記憶デバイスに記憶されている前データと、から中間パリティを生成し、中間パリティを第2アドレスに格納する。

Description

ストレージシステム
 本発明は、ストレージシステムに関する。
 本開示の背景技術として、例えば、国際公開第2015/145724号が知られている。国際公開第2015/145724号は、例えば要約において、以下の構成を開示している。
 ストレージシステムは記憶装置のストライプ内の複数の不連続領域に対してライトデータを格納する時、当該複数の不連続領域を特定する情報を含んだ新データ送信コマンドとライトデータを記憶装置に送信した後、記憶装置から複数のライトデータと当該複数のライトデータの更新前データから生成される、中間パリティを受信し、パリティを格納する記憶装置に中間パリティ送信コマンドと中間パリティとを送信する。その後複数の記憶装置に、複数の不連続領域を特定する情報を含んだデータ確定コマンドを送信すると、パリティを格納する記憶装置は、受信した中間パリティと、当該中間パリティに対応する更新前パリティとから更新後パリティを生成して、更新後パリティを記憶媒体に格納する。
国際公開第2015/145724号
 上記ストレージシステムにおいて、ストレージコントローラと複数記憶装置とは、例えばSCSI規格で接続され、パリティ更新の際に以下のステップが実行される。(1)コントローラから記憶装置1へ新データ送信コマンドを発行(新データはコントローラから記憶装置1へ送信される)。(2)記憶装置1から新データ送信コマンドに対する完了応答(完了コマンド)を発行。(3)記憶装置1からコントローラへ中間パリティ送信コマンドを発行(中間パリティは記憶装置1からコントローラへ送信される)。
 (4)コントローラから中間パリティ送信コマンドに対する完了応答(完了コマンド)を発行。(5)コントローラから記憶装置2へ中間パリティ送信コマンドを発行。(6)記憶装置2から中間パリティ送信コマンドに対する完了応答(完了コマンド)を発行。(7)記憶装置2からコントローラへの新パリティ生成完了応答(完了コマンド)を発行。
 上記ストレージシステムは、ホストからのデータライトに伴うパリティ更新の度に、ステップ(1)~(7)のコマンドを発行する。コマンド発行数が多いと、プロセッサの負荷となる。したがって、パリティ更新の際のプロセッサの負荷を抑制し、ストレージシステムの処理性能を向上するために、発行コマンド数の削減が望まれる。
 本発明の代表的な一例は、メモリ領域を含む、コントローラと、それぞれが記憶媒体を含む複数の記憶デバイスと、を含むストレージシステムであって、前記コントローラは、ホストからライト要求を受信し、前記ライト要求が示す指定アドレスに対応する中間パリティ生成コマンドを、前記複数の記憶デバイスにおける第1記憶デバイスに、送信し、前記中間パリティ生成コマンドは、前記指定アドレスの新データと前記新データに更新される前データとから、中間パリティを生成することを指示し、前記中間パリティ生成コマンドは、前記新データを格納している前記キャッシュ領域の第1アドレスと、前記中間パリティを格納するための前記キャッシュ領域の第2アドレスとを含み、前記第1記憶デバイスは、前記中間パリティ生成コマンドを受信し、前記第1アドレスから前記新データを取得し、前記新データと、前記第1記憶デバイスに記憶されている前記前データと、から前記中間パリティを生成し、前記中間パリティを、前記第2アドレスに格納する。
 本発明によれば、パリティ生成を効率化しプロセッサの負荷を抑制することで、ストレージシステムの性能向上を実現できる。
計算機システムの構成例を示す。 フラッシュパッケージの構成例を示す。 ホスト計算機からのライト要求に応じたデータ更新の正常シーケンス例を示す。 ホスト計算機からのライト要求に応じたデータ更新の正常シーケンス例を示す。 ライト要求管理情報の構成例を示す。 中間パリティ生成コマンドの構成例を示す。 新パリティ生成コマンドの構成例を示す。 ホスト計算機からのライト要求に応じたデータ更新において、障害が発生した場合の、シーケンス例を示す。 リセットコマンドの構成例を示す。 リセットコマンドの構成例を示す。 ホスト計算機からのライト要求に応じたデータ更新において、障害が発生した場合の他のシーケンス例を示す。 ホスト計算機からのライト要求に応じたデータ更新のシーケンス例を示す。 ホスト計算機からのライト要求に応じたデータ更新において、障害が発生した場合の他のシーケンス例を示す。 ホスト計算機からのライト要求に応じたデータ更新の他の正常シーケンス例を示す。 ホスト計算機からのライト要求に応じたデータ更新の他の正常シーケンス例を示す。 図13及び図14に示す正常シーケンスにおいて障害が発生した場合のシーケンス例を示す。
 以下、図面を参照しながら実施例を説明する。ただし、本実施例は、発明を実現するための一例に過ぎず、発明の技術的範囲を限定するものではない。また、各図において共通の構成については、同一の参照番号が付されている。
 なお、以後の説明では「テーブル」という表現にて本発明の情報を説明するが、これら情報は必ずしもテーブルによるデータ構造で表現されていなくても良く、「リスト」、「DB(データベース)」、「キュー」等のデータ構造やそれ以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために「テーブル」、「リスト」、「DB」、「キュー」等については、単に「情報」と呼ぶこともできる。また、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ID」という表現を用いることが可能であり、これらについてはお互いに置換が可能である。
 以後の説明では「プログラム」を主語として説明を行うことがあるが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート(通信制御装置)を用いながら行うため、プロセッサを主語とした説明としてもよく、コントローラを主語とした説明としてもよい。また、プログラムを主語として開示された処理は管理装置や情報処理装置等の計算機が行う処理としてもよい。プログラムの一部または全ては専用ハードウェアで実現してもよく、また、モジュール化されていてもよい。各種プログラムはプログラム配布サーバや記憶メディアによって各計算機にインストールされてもよい。
 また、近年、計算機やストレージシステムでは、大量データの高速解析や高速I/O処理のために、大容量のメモリ領域を必要としている。例えば計算機ではインメモリDBのようなアプリケーションである。しかしながら、装置に搭載可能なDRAM容量は、コスト上の理由や電気的な実装制約によって限られていた。このため、緩和手段として、DRAMよりは遅いもののHDDに比べれば高速なNANDフラッシュメモリといった半導体記憶媒体を利用する動きが出てきている。
 これらの半導体記憶媒体はSSD(Solide State Drive)という名前で呼ばれており、SATA(Seiral ATA)やSAS(Serial Attached SCSI)といったディスクI/Oインターフェイス接続とそのプロトコルを介して計算機やストレージコントローラに接続され、利用されてきた。
 しかし、計算機の性能向上に対し、これらのディスクI/Oインターフェイスとプロトコルを介してのアクセスは、オーバヘッドが大きくレイテンシが大きい。そこで、より近年ではプロセッサに直結できる汎用バスであるPCI-Express(PCIe)上に搭載でき、かつ、その高速性を活かすために新たに策定されたNVMe(Non Volatile Memory Express)プロトコルを用いて、低レイテンシでアクセス可能なPCIe接続型SSD(PCIe-SSD又はPCIe-Flash)が登場してきている。
 本実施形態は、例えば、パリティ生成において、記憶デバイスからコントローラ上のメモリに直接アクセス可能とするNVMeコマンドを使用する。NVMeでは、データ送受信のためのサポートするI/Oコマンドは非常に簡素であり、サポート必須コマンドは、Write、Read、Flushの3つのみである。また、SASなどの従来ディスクI/Oプロトコルでは、ホストが主体となって、コマンドやデータを装置側へ送信していたのに対し、NVMeでは、干すトからはコマンドが作成されたことのみを装置に通知し、コマンドそのものの取得やデータの転送、装置側が主体となって実施される。
 すなわち装置側からのアクションに置き換えられて実施される。例えば装置が取得したコマンドの内容がWriteだった場合、従来であればホストが装置に向けてWriteデータを送信するが、NVMeでは、装置がホストのデータをReadする動作によって実現される。逆に、コマンドの内容がReadだった場合、Readコマンドの処理は、装置がホストのメモリへデータをWriteする動作によって実現される。
 すなわち、NVMeでは、コマンドの受領、データのリード・ライト転送共に、動作契機は装置側が握っているので、ホストからの要求をいつでも受け付けるための余計なリソース確保が不要となる。
 よって、本実施例では、発行コマンドにコントローラのアドレス情報、ストレージデバイスのアドレス情報を含めることで、パリティ生成を効率化し、プロセッサの負荷を抑制することで、ストレージシステムの処理性能を向上させる。
 図1は、実施形態に係る計算機システム100の構成例を示す。計算機システム100は、ホスト計算機101、管理装置102、ストレージシステム104、を含む。ホスト計算機101、管理装置102、ストレージシステム104は、ネットワーク103で互いに接続される。ネットワーク103は、例えば、Storage Area Network(SAN)である。管理装置102はネットワーク103とは別の管理ネットワークを介し他の装置と接続されてもよい。
 ホスト計算機101は、アプリケーションプログラムを実行する計算機であり、ストレージシステム104の論理的な記憶領域にネットワーク103経由でアクセスする。ホスト計算機101は、例えば、入力デバイス、出力デバイス、CPU(CentralProcessing Unit)、メモリ、ディスクアダプタ、ネットワークアダプタ、及び、二次記憶デバイスを含む(不図示)。
 ホスト計算機101は、ユーザが使用するアプリケーションプログラム、ストレージシステム104とのインターフェイス制御をおこなうストレージシステム制御プログラムを実行する。ホスト計算機101は、ストレージシステム104が提供するボリュームを使用する。ホスト計算機101は提供されたボリュームに対して、リードコマンドやライト要求を発行することで、ボリュームに格納されたデータにアクセスする。
 管理装置102は、ストレージシステム104を管理し、例えばストレージシステム104の記憶領域の構成を行う。管理装置102は、ストレージシステム104の管理を行うための管理プログラムを実行する。管理装置102は、汎用のコンピュータと同様に、キーボードやディスプレイ等の入出力デバイス、CPU、メモリ、ネットワークアダプタ、及び、二次記憶デバイスを有する。
 ストレージシステム104は、システムコントローラ105と複数のフラッシュパッケージ113を含む。ストレージシステム104は、フラッシュパッケージ113の記憶領域にデータを格納する。ストレージシステム104は、ホスト計算機101に対して1以上のボリュームを提供する。
 システムコントローラ105は、ホストインターフェイス(I/F)106、保守I/F、ドライブI/F108、MP(Micro Processor)109、メモリユニット119、複数のフラッシュパッケージ113を含む。これら構成要素は、バス112によって相互接続されている。
 ホストI/F106は、ストレージシステム104がホスト計算機101のイニシエータと通信するために用いられる、インターフェイスデバイスである。ホスト計算機101がボリュームにアクセスするために発行する要求(リード要求、ライト要求等)は、ホストI/F106に到来する。ストレージシステム104は、ホスト計算機101に、ホストI/F106から情報(例えばリードデータ)を返却する。
 保守I/F107は、ストレージシステム104が管理装置102と通信するためのインターフェイスデバイスである。管理装置102からのコマンドは保守I/F107に到来する。ストレージシステム104は、管理装置102に、保守I/F107から情報を返す。
 図1は、ホストI/F106と保守I/F107がいずれもネットワーク103に接続された構成を示すが、ホストI/F106が接続されるネットワークと、保守I/F107が接続されるネットワークが、異なるネットワークであってもよい。
 MP109は、システムコントローラ105内に1又は複数含まれ、ストレージシステム104の各種制御を行うためのプログラムを実行する。メモリユニット119は、キャッシュメモリ110、共有メモリ111、ローカルメモリ118で構成される。キャッシュメモリ110、共有メモリ111、ローカルメモリ118は、物理的に一つのメモリ内で領域を分割して使用されてもよいし、それぞれが物理的に別個のメモリで構成されてもよい。
 キャッシュメモリ110は、キャッシュ領域を提供する。キャッシュメモリ110は、例えばRAM(Random Access Memory)で構成され、フラッシュパッケージ113に読み書きされるデータを一時的に格納する。共有メモリ111は、ハードディスクやフラッシュメモリ、RAM等で構成され、ストレージコントローラで動作するプログラムや構成情報等を格納する。ローカルメモリ118は、MP109が実行するプログラムや、MP109が使用する情報を一時的に保存するために用いられる。
 キャッシュメモリ110は、ボリューム(記憶デバイス)に対するライトデータ、またはボリューム(記憶デバイス)から読み出されたデータ(リードデータ)を一時的に記憶する一時記憶領域として用いられる。
 具体的には、例えば、キャッシュメモリ110に記憶されたリードデータがホスト計算機101に返却された後も、当該リードデータは消去せずにキャッシュメモリ110に記憶されたままでもよい。
 また、例えば、リードデータがホスト計算機101に返却された後は、当該リードデータがキャッシュメモリ110から削除されてもよい。キャッシュメモリ110には、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)等の揮発性記憶媒体が用いられるが、キャッシュメモリ110に不揮発性メモリが用いられてもよい。
 共有メモリ111は、MP109が使用する管理情報を格納するための共有記憶領域を提供する。キャッシュメモリ110と同様、共有メモリ111には、DRAM、SRAM等の揮発性記憶媒体が用いられるが、不揮発性記憶媒体が用いられてもよい。
 フラッシュパッケージ113は、ホスト計算機101からのライトデータを記憶するための不揮発性記憶媒体を有する記憶デバイスである。フラッシュパッケージ113は記憶媒体として、フラッシュメモリ等の不揮発性半導体メモリ又は他の記憶媒体を用いる。フラッシュパッケージ113の一例は、SSDである。
 高信頼化のため、複数のフラッシュパッケージ113が、RAID(Redundant Array of Independent Disks)グループ115を構成する。MP109は、一台のフラッシュパッケージ113が故障しても、そのフラッシュパッケージ113のデータを回復できるRAID機能を有する。
 RAIDグループ115において、一つ以上の論理ボリュームが作成される。一つの論理ボリュームは、RAIDグループ115を構成するフラッシュパッケージ113が有する物理的な記憶領域と関連付けられる。
 RAID機能は、ホスト計算機101から受信したライトデータと冗長データのセットを、RAIDグループ115のフラッシュパッケージ113に分散して格納する。複数のRAIDレベルが知られている。例えば、RAID1は、ライトデータ及びそのコピーを、異なるフラッシュパッケージ113に格納する。
 その他、RAID5は、ライトデータ及び一つのパリティからなる冗長データセットを異なるフラッシュパッケージ113に分散して格納し、RAID5は、ライトデータ及び二つのパリティからなる冗長データを異なるフラッシュパッケージ113に分散して格納する。
 なお、本実施例ではホスト計算機101がネットワークを介してシステムコントローラ12に接続されている例を示すが、ストレージシステム42のハードウェア構成は、サーバと同様の構成であってもよい。たとえば本実施例のストレージシステム104に代えて、パーソナルコンピュータ等の汎用のコンピュータ(以下、これを単に「コンピュータ」と呼ぶ)に複数のフラッシュパッケージ113を搭載(または接続)し、コンピュータ上で、各種プログラムを実行させてもよい。この場合、コンピュータがサーバからI/O要求を受け付けて、フラッシュパッケージ113へのデータの格納、またはフラッシュパッケージ113からのデータの読み出しを行う。
 また、コンピュータ上で各種プログラムを実行させる構成の場合、ストレージシステム上で実行される各種プログラムとサーバで実行されるプログラムがいずれも、同一コンピュータ上で実行されるように構成されていてもよい。この場合、たとえば仮想マシンを形成するハイパーバイザプログラムをコンピュータ上で実行することで、コンピュータ上に少なくとも、サーバで実行されるプログラムを実行するサーバ仮想マシンと、ストレージシステム上で各種プログラムを実行するストレージ仮想マシンとを形成すればよく、リード要求またはライト要求は、サーバ仮想マシンから発行される。よって、以降のホスト計算機101は「サーバ仮想マシン」と置き換えてもよい。
 図2は、フラッシュパッケージ113の構成例を示す。フラッシュパッケージ113は、デバイスコントローラ210と、ホスト計算機101からのライトデータを記憶するための記憶媒体であるフラッシュメモリ280を有する。デバイスコントローラ210は、ドライブI/F211、デバイスプロセッサ213、メモリ214、フラッシュI/F215、ロジック回路216を有し、これらは内部ネットワーク212を介して相互接続されている。ロジック回路216は、例えば、パリティ演算や、暗号処理や圧縮処理を行う。
 ドライブI/F211は、システムコントローラ105と通信するためのインターフェイスデバイスである。フラッシュI/F215は、デバイスコントローラ210がフラッシュメモリ280と通信するためのインターフェイスデバイスである。
 デバイスプロセッサ213は、フラッシュパッケージ113の制御を行うためのプログラムを実行する。本例では、以下で説明するフラッシュパッケージ113が行う処理は、デバイスプロセッサ213がプログラムを実行することにより行われる。
 メモリ214は、デバイスプロセッサ213が実行するプログラムや、デバイスプロセッサ213が使用する制御情報等を格納するためのものである。フラッシュメモリ280に読み書きされるデータを一時的に格納する一時格納領域も備える。
 デバイスプロセッサ213は、MP109から要求を受け付け、受けたコマンドに従う処理を実行する。例えば、デバイスプロセッサ213デバイスデバイスプロセッサ213は、MP109からライトコマンドを受信し、そのライトコマンドのデータをフラッシュメモリ280に書き込む。デバイスプロセッサ213は、メモリ214内の一時格納領域又はフラッシュメモリ280にデータを書込んだ後、ライトコマンドの完了応答(応答コマンド)をMP109に返す。
 デバイスプロセッサ213は、MP109からリードコマンドを受信し、そのリードコマンドのデータをメモリ214内の一時格納領域又はフラッシュメモリ280から読み出して、MPパッケージ109に返す。MP109からフラッシュパッケージ113へのコマンド及びコマンドに対するフラッシュパッケージ113の処理の詳細は後述する。
 ストレージシステム104は、例えば、ログ構造ファイルシステムのように、新データを記憶媒体であるフラッシュパッケージ113内のフラッシュメモリ280に追記する。ストレージシステム104は、ホスト計算機101からの要求が示す論理アドレスで特定されるデータに更新要求があると、更新データを前データに上書きすることなく、フラッシュメモリ280において、前データと異なる記憶領域に追記する。フラッシュメモリ280は、ホスト計算機101からの要求が示す論理アドレスの過去データと現在データと、を保持する。
 また、ストレージシステム104は、例えばフラッシュパッケージ113のメモリ214にマッピング情報を有する。マッピング情報とは、論理アドレスと物理アドレスを対応づけて管理する情報である。論理アドレスとは、ホスト計算機101がアクセスするためのアドレス空間におけるアドレスであり、ボリュームへのI/Oアドレス(ボリューム識別子とボリューム内アドレス)である。物理アドレスとは、フラッシュメモリ280内でデータが実際に格納されるアドレスである。
 ホスト計算機101からデータの更新要求があった場合、ストレージシステム104は、更新要求が示す論理アドレスに対応付けられていた前データが格納されていた物理アドレスから、更新データが格納された物理アドレスに対応付けを変更することでマッピング情報の更新を行う。マッピング情報は、更新データの物理アドレスのみを保持しておく構成でも、更新データの物理アドレスおよび前データの物理アドレスの双方を保持してもよい。
 マッピング情報が更新データの物理アドレスのみを保持する場合は、ストレージシステム104は、更新データをフラッシュメモリ280に格納した際に前データの物理アドレスと論理アドレスの対応付けを解除、すなわち、前データの物理アドレスを削除して更新データの物理アドレスを論理アドレスに対応づけることで、マッピング情報の更新を行ってもよい。
 マッピング情報が、更新データと前データの物理アドレスを両方保持する場合は、ストレージシステム104は、更新データをフラッシュメモリ280に格納した後の所定の期間は、更新データの物理アドレス及び前データの物理アドレスの両方を、論理アドレスに対応付けておいてもよい。さらに、所定の期間の経過後、ストレージシステム104は、論理アドレスと前データの物理アドレスとの対応付けを解除する、すなわち、前データの物理アドレスを削除してもよい。対応付け解除の契機は、時間の経過に限らず、所定のコマンドまたは所定の完了応答を受領した後でもよい。
 データの追記により、書き込み速度、特に、NANDフラッシュを使用するフラッシュパッケージ113における書き込み速度を向上する。フラッシュパッケージ113又はMP109が、追記のためのアドレス管理を行う。
 図3及び図4は、ホスト計算機101からのライト要求に応じたデータ更新の正常シーケンス例を示す。システムコントローラ(図中、CTL)105は、ライト要求及び新データ301をホスト計算機101から受信する。本実施例では、ライト要求のアドレスに応じて当該ライト要求を処理するMP109が予め定められている。本例において、MP_A109Aが、予め定められた処理MPである。
 MP_A109Aは、ライト要求管理情報331に、受信したライト要求についての情報を登録する(S11)。図5は、ライト要求管理情報331の構成例を示す。ライト要求管理情報331は、共有メモリ111に格納され、ライト要求、当該ライト要求を処理するMP及び当該ライト要求の処理におけるフェーズを示す。具体的には、ライト要求管理情報331は、要求ID、処理MP、フェーズ、及び論理アドレスの欄を有する。
 要求ID欄は、ライト要求の識別子を示す。新たなライト要求に対して一意の値が付与される。処理MP欄は、当該ライト要求を処理するMPの識別子を示す。フェーズ欄は、当該ライト要求の処理におけるフェーズを示す。具体的には、「パリティ生成前」又は「パリティ生成後」のいずれかのフェーズを示す。新たなライト要求を受けた場合は、「パリティ生成前」で登録される。論理アドレス欄は、ライト要求が示すライト先である論理アドレスを示す。
 ホスト計算機101からのライト要求に係るデータ(新データ)は、キャッシュメモリ110に格納される。MP_A109Aは、ホスト計算機101から受信したライト要求から、中間パリティ生成コマンドを生成する。MP_A109Aは、中間パリティ生成コマンドを、前データ302を格納するフラッシュパッケージ(データノード)113Aに送信する。
 中間パリティ生成コマンドは、新データ301を格納し、さらに、新データ301と前データ302とから、中間パリティ303を生成することを指示する。図6は、中間パリティ生成コマンド341の構成例を示す。中間パリティ生成コマンド341は、OPECODEフィールド、アドレス情報1フィールド、アドレス情報2フィールド、コマンド詳細フィールド、及び、アドレス情報3フィールドを有する。
 OPECODEフィールドはオペレーションの種類を示し、本例において、ホスト計算機101からのライト要求の処理を示す。アドレス情報1フィールドは、キャッシュメモリ110において新データ301を格納しているアドレスを示す。アドレス情報2フィールドは、キャッシュメモリ110において、新たに生成される中間パリティ303を格納するためのアドレスを示す。
 コマンド詳細フィールドは、本コマンドが中間パリティ生成コマンドであることを示す。アドレス情報3フィールドは、新データ301の論理アドレスを示す。当該論理アドレスは、前データ302の論理アドレスでもある。
 MP_A109Aは、マッピング情報を参照して、ライト要求が示す論理アドレスから、ライト要求の前データ302を格納しているデータノード113Aにおける物理アドレスを同定する。キャッシュメモリ110において新たに生成される中間パリティを格納するためのアドレスは、キャッシュメモリ110における空き領域を示す。
 データノード113Aは、受信した中間パリティ生成コマンド341を参照し、キャッシュメモリ110から、アドレス情報1で指定されているアドレスに格納されている新データ301をリードし、メモリ214の一時格納領域に格納する(S12)。データノード113Aは、新データ301をフラッシュメモリ280の空き領域に格納し、メモリ214に格納されているマッピング情報を更新、すなわち、論理アドレスと新データ301が格納された物理アドレスを対応付けする。
 なお、新データ301をフラッシュメモリ280に格納する処理およびマッピング情報の更新は、このS12のタイミングで行わなくてもよい。例えば、中間パリティ生成コマンド341の受領に同期せず、所定のタイミングで周期的に行うでもよいし、デバイスプロセッサ213の処理性能に余裕が有るタイミングで行うでもよい。
 また、本実施例は、中間パリティ生成コマンドの受領を契機とせず、すなわち、中間パリティ生成コマンドの受領とは非同期で、新データ301をフラッシュメモリ280に格納する処理と中間パリティを生成する処理を開始する。デバイスプロセッサ213は、中間パリティ生成コマンドを受領し、メモリ214の一時格納領域にデータを書込んだ後、ライトコマンドの完了応答(応答コマンド)をMP109に返す。
 なお、中間パリティ生成コマンドの受領を契機として、すなわち、中間パリティ生成コマンドの受領と同期して、新データ301をフラッシュメモリ280に格納する処理と中間パリティを生成する処理を始めてもよい。この場合、デバイスプロセッサ213は、新パリティ生成が完了した後にライトコマンドの完了応答(応答コマンド)をMP109に返す。
 データノード113Aは、マッピング情報の更新に伴い、ライト要求が示す新データの論理アドレスに対応する前データ302の物理アドレスである前データアドレス321を、メモリ214に格納する(S13)。前データアドレス321は、ライト要求が示す論理アドレスとの対応が分かるように記憶されていればよい。例えば、前データアドレス321は、マッピング情報に含まれてもよく、マッピング情報とは別の形態で格納されてもよい。なお、メモリ214に格納された前データアドレス321は、当該ライト要求に関する処理とは非同期で消去されても、格納されてから所定の時間経過後に消去されてもよい。前データアドレス321は、障害発生時に参照される。詳細は後述する。
 上述のように、本例のフラッシュパッケージ113は、前データに新データを上書きせず、異なる物理アドレスに新データを追記する。
 データノード113Aは、マッピング情報を参照し、アドレス情報3が指定する論理アドレスから、前データ302を格納するデータノード113Aのフラッシュメモリ280における物理アドレスを同定する。データノード113Aは、前データ302を読み出し、メモリ214に格納する。データノード113Aは、メモリ214に格納された新データ301と前データ302とから、中間パリティ303を生成する(S14)。
 データノード113Aは、中間パリティ生成コマンド341を参照し、アドレス情報2で指定されているキャッシュメモリ110のアドレスに、中間パリティ303を格納する(S15)。
 上述のように、本実施例のように、キャッシュメモリ110において新データ301を格納しているアドレス、キャッシュメモリ110において、新たに生成される中間パリティ303を格納するためのアドレスも中間パリティ生成コマンド341に含めることにより、中間パリティ生成コマンド1つの発行で、システムコントローラ105からフラッシュパッケージ113への新データ301のリード、並びに、中間パリティ303の生成及びフラッシュパッケージ113からシステムコントローラ105へのライトが実現される。これにより、少ないコマンド及びステップによって効率的に中間パリティ303を生成できる。
 次に、MP_A109Aは、ホスト計算機101から受信したライト要求から、新パリティ生成コマンドを生成する。MP_A109Aは、新パリティ生成コマンドを、前パリティ304を格納するフラッシュパッケージ(パリティノード)113Bに送信する。本例は一つのパリティノードを示すが、複数のパリティノードが存在する場合、処理MP109は、新パリティ生成コマンドを、前パリティを格納するパリティノードそれぞれに送信する。
 中間パリティ生成コマンドは、中間パリティ303と前パリティ304とから、新パリティ305を生成することを指示する。図7は、新パリティ生成コマンド342の構成例を示す。新パリティ生成コマンド342は、OPECODEフィールド、アドレス情報1フィールド、コマンド詳細フィールド、及び、アドレス情報3フィールドを有する。
 OPECODEフィールドはオペレーションの種類を示し、本例において、ホスト計算機101からのライト要求の処理を示す。アドレス情報1フィールドは、キャッシュメモリ110において中間パリティ303を格納しているアドレスを示す。コマンド詳細フィールドは、本コマンドが新パリティ生成コマンドであることを示す。
 アドレス情報3フィールドは、ライト要求があったデータに関する新パリティの論理アドレスを示す。当該論理アドレスは、前パリティ304の論理アドレスでもある。
 MP_A109Aは、マッピング情報を参照して、ライト要求が示す論理アドレスから、ライト要求の前パリティ304を格納しているパリティノード113Bにおける物理アドレスを同定する。
 パリティノード113Bは、受信した新パリティ生成コマンド342を参照し、キャッシュメモリ110から、アドレス情報1で指定されているアドレスに格納されている中間パリティ303をリードし、メモリ214に格納する(S16)。
 パリティノード113Bは、マッピング情報を参照し、アドレス情報3が指定する論理アドレスから、前パリティ304を格納するパリティノード113Bのフラッシュメモリ280における物理アドレスを同定する。パリティノード113Bは、前パリティ304を読み出し、メモリ214に格納する。
 パリティノード113Bは、メモリ214に格納された中間パリティ303と前パリティ304とから、新パリティ305を生成する(S17)。パリティノード113Bは、新パリティ305を、フラッシュメモリ280の空き領域に格納し、メモリ214に格納されているマッピング情報を更新する。
 パリティノード113Bは、マッピング情報の更新に伴い、当該論理アドレスに対応する前パリティアドレス322を、メモリ214に格納する(S18)。前パリティアドレス322は、障害発生時に参照される。詳細は後述する。
 最後に、パリティノード113Bは、完了応答311をシステムコントローラ105に返す(S19)。
 MP_A109Aは、完了応答311を受信すると、ライト要求管理情報331を更新する(S20)。具体的には、MP_A109Aは、処理したライト要求のエントリにおいて、フェーズ欄の「パリティ生成前」を「パリティ生成後」に変更する。
 上述のように、新パリティ生成コマンド342により、システムコントローラ105からフラッシュパッケージ113への中間パリティ303のリード、並びに、中間新パリティ305の生成が実現される。これにより、少ないコマンド及びステップによって効率的に新パリティ305を生成できる。
 上記例は、フラッシュパッケージ113が、追記されるデータのアドレスを管理する。他の例において、システムコントローラ105(MP109)が追記されるデータのアドレスを管理してもよい。システムコントローラ105は、前データアドレス及び前パリティアドレスを管理する。
 システムコントローラ105により発行される中間パリティ生成コマンドは、キャッシュメモリ110において新データを格納するアドレス及び中間パリティを格納するアドレスを含む。さらに、フラッシュパッケージ113における新データの格納アドレスと前データの格納アドレスを含む。フラッシュパッケージ113は、フラッシュメモリ280の指定されたアドレスから前データを読み出し、さらに、指定されたアドレスに新データを格納する。
 システムコントローラ105により発行される新パリティ生成コマンドは、キャッシュメモリ110において中間パリティを格納するアドレス、並びに、フラッシュパッケージ113における新パリティの格納アドレス及び前パリティの格納アドレスを含む。フラッシュパッケージ113は、フラッシュメモリ280の指定されたアドレスから前パリティを読み出し、さらに、指定されたアドレスに新パリティを格納する。
 図8は、ホスト計算機101からのライト要求に応じたデータ更新において、障害が発生した場合の、シーケンス例を示す。本例において、MP_A109Aにおいて障害が発生する。以下においては、図4に示すシーケンス例との差異を主に説明する。
 図8において、新データ301がシステムコントローラ105のキャッシュメモリ110からデータノード113Aに転送された(S12)直後に、予め設定されていた処理MP_A109Aにおいて障害が発生している。処理MPは、MP_A109AからMP_B109Bに引き継がれる。
 MP_B109Bは、図4に示すシーケンスを中断した後、新データ301の転送(S12)から再実行する。具体的には、MP_B109Bは、ライト要求管理情報331を参照し、MP_A109Aから引き継いだ処理の情報を取得する(S31)。具体的には、処理MPが、MP_A109Aを示すエントリを取得する。本例において、ライト要求管理情報331は、MP_A109Aから引き継いだ処理のフェーズは、「パリティ生成前」であることを示す。
 MP_B109Bは、本処理の中断をデータノード113A及びパリティノード113Bに通知する。具体的には、MP_B109Bはデータノード113A及びパリティノード113Bそれぞれに、リセットコマンドを送信する(S31)。
 図9A及び図9Bはリセットコマンドの構成例を示す。図9Aは、データノードに送信されるリセットコマンドの構成例351を示し、図9Aは、パリティノードに送信されるリセットコマンドの構成例352を示す。リセットコマンドは、アドレス情報フィールドとコマンド詳細フィールドを示す。
 データノードへのリセットコマンド351において、アドレス情報フィールドは、中間パリティ生成コマンド341におけるアドレス情報3と同様に、データノードにおいて新データを格納する論理アドレスを示す。コマンド詳細は、中間パリティ生成のリセットを示す。
 パリティノードへのリセットコマンド352において、アドレス情報フィールドは、新パリティ生成コマンド342におけるアドレス情報3と同様に、新パリティを格納する論理アドレスを示す。コマンド詳細は、新パリティ生成のリセットを示す。
 リセットコマンドを受信したデータノード113A及びパリティノード113Bは、中間パリティ生成処理及び新パリティ生成処理を中断する。図8の例において、データノード113Aは、中間パリティ生成処理を開始しておらず、パリティノード113Bは、新パリティ生成処理を開始していない。データノード113A及びパリティノード113Bは、それぞれ、リセットコマンドへの完了応答を、MP_B109Bに返す(S32及びS33)。
 データノード113A及びパリティノード113Bから完了応答を受信すると、MP_B109Bは、ライト要求管理情報331を更新する(S34)。具体的には、MP_B109Bは、ライト要求管理情報331の当該エントリにおいて、処理MPをMP_AからMP_Bに変更する。シーケンスの以降のステップは、処理MPがMP_A109AからMP_B109Bに変わっている点を除き、図4と同様である。
 図10は、ホスト計算機101からのライト要求に応じたデータ更新において、障害が発生した場合の他のシーケンス例を示す。本例において、MP_A109Aにおいて障害が発生する。以下においては、図8に示すシーケンス例との差異を主に説明する。
 図10において、データノード113Aが中間パリティを生成した(S14)後、システムコントローラ105に転送する前に、予め設定されていた処理MP_A109Aにおいて障害が発生している。処理MPは、MP_A109AからMP_B109Bに引き継がれる。
 データノード113A及びパリティノード113Bは、MP_B109Bからリセットコマンドを受信する(S31)。データノード113Aは、マッピング情報について、リセットコマンド351の論理アドレスに対応する物理アドレスを、S13でメモリ214に格納した前データアドレス321に戻してから、完了応答を返す(S41)。これにより、その後のステップにおいて、正しい中間パリティを生成することができる。
 図11は、ホスト計算機101からのライト要求に応じたデータ更新のシーケンス例を示す。データノード113Aが中間パリティをシステムコントローラ105に送信した(S15)後、システムコントローラ105が中間パリティをパリティノード113Bに転送する前に、予め設定されていた処理MP_A109Aにおいて障害が発生している。処理MPは、MP_A109AからMP_B109Bに引き継がれる。その他の点は、図10のシーケンスと同様である。
 図12は、ホスト計算機101からのライト要求に応じたデータ更新において、障害が発生した場合の他のシーケンス例を示す。パリティノード113Bが新パリティを生成して(S17)前パリティの物理アドレスをメモリ214に格納した(S18)後、完了応答をシステムコントローラ105に送信する(S19)前に、予め設定されていた処理MP_A109Aにおいて障害が発生している。処理MPは、MP_A109AからMP_B109Bに引き継がれる。
 データノード113A及びパリティノード113Bは、MP_B109Bからリセットコマンドを受信する(S31)。
 データノード113Aは、マッピング情報の論理アドレスに対応する物理アドレスを、S13でメモリ214に格納した前データアドレス321に戻してから、完了応答を返す(S41)。同様に、パリティノード113Bは、マッピング情報について、リセットコマンド352の論理アドレスに対応する物理アドレスを、S18でメモリ214に格納した前パリティアドレス322に戻してから、完了応答を返す(S42)。これにより、その後のステップにおいて、正しい中間パリティ及び新パリティを生成することができる。他の点は、図11のシーケンスと同様である。
 上記いずれの場合とも異なり、処理を引き継いだMP_B109Bが参照したライトライト要求管理情報331が、「パリティ生成後」を示す場合、MP_B109Bは、ライト要求に対するパリティ更新は完了していると判定する。このように、ライト要求管理情報331により、障害発生時の処理を適切に制御できる。
 また、上述のように、ライト要求の処理途中のいずれのステップにおけるMP障害においても、処理を引き継いだMPが新データの転送から開始することで、効率的にシステムコントローラ105を構成できる。
 上記例においてライト要求管理情報331は、「パリティ生成前」、「パリティ生成後」のみを管理するため、システム構成を簡便にできる。ライト要求管理情報331は、他のフェーズを示してもよい。例えば、ライトライト要求管理情報331は、「中間パリティ生成前」、「中間パリティ生成後」のフェーズを示してもよい。処理を引き継いだMP_B109Bは、フェーズに応じた処理を行う。
 実施例1とは異なる実施例について、図13~15を用いて説明する。本実施例では、前データアドレス321及び前パリティアドレス322をメモリ214に格納しない場合についての処理について説明する。
 図13及び図14は、本実施例におけるホスト計算機101からのライト要求に応じたデータ更新の他の正常シーケンス例を示す。以下においては、図3及び4に示すシーケンス例との違いを主に説明する。図3及び4に示すシーケンス例における前データアドレス321及び前パリティアドレス322並びにそれらの格納ステップS13、S18が、図13及び図14のシーケンスにおいて省略されている。他の点は、図3及び4に示すシーケンスと図13及び図14に示すシーケンスとで同様である。
 次に、図13及び図14に示す正常シーケンスにおいて障害が発生した場合のシーケンス例を説明する。図15のシーケンス例において、データノード113Aが中間パリティをシステムコントローラ105に送信した(S15)後、システムコントローラ105が中間パリティをパリティノード113Bに転送する(S16)前に、MP_A109Aにおいて障害が発生している。
 以下においては、実施例1における図11および図15に示すシーケンス例との差異を主に説明する。予め設定されていた処理MP_A109Aにおいて障害が発生し、処理MPは、MP_A109AからMP_B109Bに引き継がれる。
 MP_B109Bは、ライト要求管理情報331を参照し、MP_A109Aから引き継いだ処理の情報を取得する(S51)。本例において、ライト要求管理情報331は、MP_A109Aから引き継いだ処理のフェーズは、「パリティ生成前」であることを示す。
 図15の例において、本シーケンスの図11との違いは、前データアドレス321及び前パリティアドレス322を使用しないため、その格納及び書き戻しのステップは存在しない。また、ライト要求管理情報331のリセット指示がなく、ライト要求管理情報331が更新されないまま、すなわち図11のS31~34が無いまま、パリティ更新処理(S12~S19)に進む。このパリティ更新処理(S12~S19)は、ライト要求管理情報331のフェーズが「パリティ生成前」であるために行われる。
 パリティノード113Bから新パリティ生成の完了応答を受信すると(S19)、MP_B109Bは、ライト要求管理情報331を更新しようと参照するが、ライト要求管理情報331に記憶されている処理MPがMP_B109Bとは異なると判定すると、パリティ不整合が起きていると判定する。そこで、ライト要求管理情報331の処理MPをMP_B109Bに更新(S52)し、パリティを再度生成する(S53)。
 なお、S53のパリティ再生成は、本実施例では、前データアドレス321及び前パリティアドレス322をメモリ214に格納していないため、今まで説明してきたような、新データ、前データおよび前パリティを用いて新パリティを生成する方法ではなく、いわゆるシーケンシャルライトのパリティ生成方法をとる。具体的には、MP_B109Bは、本シーケンスにおいて新データを格納し新パリティを生成したストライプ列のデータブロックを、データノード113Aを含む複数のデータノードから受信する。MP_B109Bは、受信したストライプ列のデータブロックからパリティを生成する。
 本例は前回データアドレス及び前回パリティアドレスを参照せず、また、処理MPが変更されているため、パリティノード113Bが正しくない新パリティを生成する可能性がある。よって、処理を引き継いだMP_B109Bにて、新データからパリティを再生成することで、正確なパリティを確実に保持することができる。
 上記構成において、一部を省略することができる。例えば、ストレージシステム104は、新パリティ生成コマンドを使用することなく、新パリティを生成してもよい。例えばシステムコントローラ105が前パリティをパリティノードから読み出し、新パリティを生成して、パリティノードに格納してもよい。または、システムコントローラ105からパリティノードに中間パリティ送信コマンドを送信し、その完了応答及び新パリティ生成完了応答を受信してもよい。
 なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
 また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD等の記録装置、または、ICカード、SDカード等の記録媒体に置くことができる。

Claims (12)

  1.  メモリ領域を含む、コントローラと、
     それぞれが記憶媒体を含む複数の記憶デバイスと、を含み、
     前記コントローラは、
     ホストからライト要求を受信し、
     前記ライト要求が示す指定アドレスに対応する中間パリティ生成コマンドを、前記複数の記憶デバイスにおける第1記憶デバイスに、送信し、
     前記中間パリティ生成コマンドは、前記指定アドレスの新データと前記新データに更新される前データとから、中間パリティを生成することを指示し、
     前記中間パリティ生成コマンドは、前記新データを格納している前記メモリ領域の第1アドレスと、前記中間パリティを格納するための前記メモリ領域の第2アドレスとを含み、
     前記第1記憶デバイスは、
     前記中間パリティ生成コマンドを受信し、
     前記第1アドレスから前記新データを取得し、
     前記新データと、前記第1記憶デバイスに記憶されている前記前データと、から前記中間パリティを生成し、
     前記中間パリティを、前記第2アドレスに格納する、ストレージシステム。
  2.  請求項1に記載のストレージシステムであって、
     前記コントローラは、前記複数の記憶デバイスにおける第2記憶デバイスに、新パリティ生成コマンドを送信し、
     前記新パリティ生成コマンドは、前記中間パリティと、前記指定アドレスの前データに関する前パリティとから、新パリティを生成することを指示し、
     前記新パリティ生成コマンドは、前記第2アドレスを含み、
     前記第2記憶デバイスは、
     前記新パリティ生成コマンドを受信し、
     前記第2アドレスから前記中間パリティを読み出し、
     前記中間パリティと、前記第2記憶デバイスに記憶されている前記前パリティとから、前記新パリティを生成する、ストレージシステム。
  3.  請求項2に記載のストレージシステムであって、
     前記コントローラは、複数のプロセッサを含み、
     前記複数のプロセッサにおける第1プロセッサは、前記ライト要求の処理を開始し、
     前記第1プロセッサは、前記複数のプロセッサにより共有された共有記憶領域に、前記ライト要求の処理フェーズを示すライト要求管理情報を格納し、
     前記複数のプロセッサにおける第2プロセッサは、
     前記第1プロセッサの障害に応答して前記ライト要求の処理を引き継ぎ、
     前記共有記憶領域の前記ライト要求管理情報を参照して、前記ライト要求の処理におけるフェーズを特定する、ストレージシステム。
  4.  請求項3に記載のストレージシステムであって、
     前記ライト要求管理情報が前記新パリティの生成前であることを示す場合、前記第2プロセッサは、前記第1記憶デバイス及び前記第2記憶デバイスに、前記中間パリティ生成コマンド及び前記新パリティ生成コマンドの処理を中止することを指示する、リセットコマンドをそれぞれ送信する、ストレージシステム。
  5.  請求項4に記載のストレージシステムであって、
     前記第1記憶デバイスは、
     前記指定アドレスと、前記指定アドレスに関するデータを格納している前記第1記憶デバイスの記憶媒体のアドレスとの対応関係を示すマッピング情報と、前記前データを格納している前記第1記憶デバイスの記憶媒体のアドレスと、を管理し、
     前記第1記憶デバイスの記憶媒体において、前記新データを前記前データと異なるアドレスに格納し、
     前記マッピング情報において、前記指定アドレスに対応するアドレスを、前記新データのアドレスに更新し、
     前記リセットコマンドに応答して、前記マッピング情報において、前記指定アドレスに対応するアドレスを、前データのアドレスを書き戻す、ストレージシステム。
  6.  請求項3に記載のストレージシステムであって、
     前記第1記憶デバイスは、前記第1記憶デバイスの記憶媒体において、前記新データを前記前データと異なるアドレスに格納し、
     前記第2記憶デバイスは、前記第2記憶デバイスの記憶媒体において、前記新パリティを前記前パリティと異なるアドレスに格納し、
     前記ライト要求管理情報が前記新パリティの生成前であることを示す場合、前記第2プロセッサは、前記新データを含むストライプ列のデータを、前記複数の記憶デバイスから取得し、取使した前記ストライプ列のデータからパリティを生成して前記第2記憶デバイスに格納する、ストレージシステム。
  7.  メモリ領域を含む、コントローラと、それぞれが記憶媒体を含む複数の記憶デバイスと、を含むストレージシステムにおける、データ格納の方法であって、
     前記コントローラが、ホストからライト要求を受信し、
     前記コントローラが、前記ライト要求が示す指定アドレスに対応する中間パリティ生成コマンドを、前記複数の記憶デバイスにおける第1記憶デバイスに、送信し、
     前記中間パリティ生成コマンドは、前記指定アドレスの新データと前記新データに更新される前データとから、中間パリティを生成することを指示し、
     前記中間パリティ生成コマンドは、前記新データを格納している前記メモリ領域の第1アドレスと、前記中間パリティを格納するための前記メモリ領域の第2アドレスとを含み、
     前記第1記憶デバイスが、前記中間パリティ生成コマンドを受信し、
     前記第1記憶デバイスが、前記第1アドレスから前記新データを取得し、
     前記第1記憶デバイスが、前記新データと、前記第1記憶デバイスに記憶されている前記前データと、から前記中間パリティを生成し、
     前記第1記憶デバイスが、前記中間パリティを、前記第2アドレスに格納する、方法。
  8.  請求項7に記載の方法であって、
     前記コントローラが、前記複数の記憶デバイスにおける第2記憶デバイスに、新パリティ生成コマンドを送信し、
     前記新パリティ生成コマンドは、前記中間パリティと、前記指定アドレスの前データに関する前パリティとから、新パリティを生成することを指示し、
     前記新パリティ生成コマンドは、前記第2アドレスを含み、
     前記第2記憶デバイスが、前記新パリティ生成コマンドを受信し、
     前記第2記憶デバイスが、前記第2アドレスから前記中間パリティを読み出し、
     前記第2記憶デバイスが、前記中間パリティと、前記第2記憶デバイスに記憶されている前記前パリティとから、前記新パリティを生成する、方法。
  9.  請求項8に記載の方法であって、
     前記コントローラは、複数のプロセッサを含み、
     前記複数のプロセッサにおける第1プロセッサが、前記ライト要求の処理を開始し、
     前記第1プロセッサが、前記複数のプロセッサにより共有された共有記憶領域に、前記ライト要求の処理フェーズを示すライト要求管理情報を格納し、
     前記複数のプロセッサにおける第2プロセッサが、前記第1プロセッサの障害に応答して前記ライト要求の処理を引き継ぎ、
     前記第2プロセッサが、前記共有記憶領域の前記ライト要求管理情報を参照して、前記ライト要求の処理におけるフェーズを特定する、方法。
  10.  請求項9に記載の方法であって、
     前記ライト要求管理情報が前記新パリティの生成前であることを示す場合、前記コントローラが、前記第1記憶デバイス及び前記第2記憶デバイスに、前記中間パリティ生成コマンド及び前記新パリティ生成コマンドの処理を中止することを指示する、リセットコマンドをそれぞれ送信する、方法。
  11.  請求項10に記載の方法であって、
     前記第1記憶デバイスが、前記指定アドレスと、前記指定アドレスに関するデータを格納している前記第1記憶デバイスの記憶媒体のアドレスとの対応関係を示すマッピング情報と、前記前データを格納している前記第1記憶デバイスの記憶媒体のアドレスと、を管理し、
     前記第1記憶デバイスが、前記第1記憶デバイスの記憶媒体において、前記新データを前記前データと異なるアドレスに格納し、
     前記第1記憶デバイスが、前記マッピング情報において、前記指定アドレスに対応するアドレスを、前記新データのアドレスに更新し、
     前記第1記憶デバイスが、前記リセットコマンドに応答して、前記マッピング情報において、前記指定アドレスに対応するアドレスを、前データのアドレスを書き戻す、方法。
  12.  請求項9に記載の方法であって、
     前記第1記憶デバイスが、前記第1記憶デバイスの記憶媒体において、前記新データを前記前データと異なるアドレスに格納し、
     前記第2記憶デバイスが、前記第2記憶デバイスの記憶媒体において、前記新パリティを前記前パリティと異なるアドレスに格納し、
     前記ライト要求管理情報が前記新パリティの生成前であることを示す場合、前記第2プロセッサが、前記新データを含むストライプ列のデータを、前記複数の記憶デバイスから取得し、取使した前記ストライプ列のデータからパリティを生成して前記第2記憶デバイスに格納する、方法。
PCT/JP2016/077533 2016-09-16 2016-09-16 ストレージシステム WO2018051505A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
PCT/JP2016/077533 WO2018051505A1 (ja) 2016-09-16 2016-09-16 ストレージシステム
JP2018539482A JP6652647B2 (ja) 2016-09-16 2016-09-16 ストレージシステム
US16/084,916 US10664193B2 (en) 2016-09-16 2016-09-16 Storage system for improved efficiency of parity generation and minimized processor load
CN201680086779.0A CN109313593B (zh) 2016-09-16 2016-09-16 存储系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/077533 WO2018051505A1 (ja) 2016-09-16 2016-09-16 ストレージシステム

Publications (1)

Publication Number Publication Date
WO2018051505A1 true WO2018051505A1 (ja) 2018-03-22

Family

ID=61618717

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2016/077533 WO2018051505A1 (ja) 2016-09-16 2016-09-16 ストレージシステム

Country Status (4)

Country Link
US (1) US10664193B2 (ja)
JP (1) JP6652647B2 (ja)
CN (1) CN109313593B (ja)
WO (1) WO2018051505A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110941567A (zh) * 2018-09-21 2020-03-31 爱思开海力士有限公司 用于存储装置中数据模式的数据路径保护奇偶校验值确定
CN111831217A (zh) * 2019-04-19 2020-10-27 株式会社日立制作所 存储系统、其驱动器框体、以及奇偶校验计算方法
US11971782B2 (en) 2020-02-20 2024-04-30 Sk Hynix Nand Product Solutions Corp. On-SSD erasure coding with uni-directional commands

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111752487B (zh) * 2020-06-18 2024-01-12 深圳大普微电子科技有限公司 一种数据恢复方法、装置及固态硬盘
CN115206406A (zh) * 2021-04-12 2022-10-18 伊姆西Ip控股有限责任公司 管理独立磁盘冗余阵列的方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015518186A (ja) * 2012-04-27 2015-06-25 株式会社日立製作所 ストレージシステム及びストレージ制御装置
WO2015121912A1 (ja) * 2014-02-12 2015-08-20 株式会社日立製作所 データ記憶装置
US9384093B1 (en) * 2014-05-28 2016-07-05 Microsemi Storage Solutions (U.S.), Inc. Raid enabled NVME device

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5533190A (en) * 1994-12-21 1996-07-02 At&T Global Information Solutions Company Method for maintaining parity-data consistency in a disk array
US6112255A (en) * 1997-11-13 2000-08-29 International Business Machines Corporation Method and means for managing disk drive level logic and buffer modified access paths for enhanced raid array data rebuild and write update operations
US8239624B2 (en) * 2008-06-06 2012-08-07 Pivot3, Inc. Method and system for data migration in a distributed RAID implementation
WO2010116536A1 (en) * 2009-04-06 2010-10-14 Hitachi, Ltd. Storage subsystem and its control method
JP5404804B2 (ja) * 2009-05-25 2014-02-05 株式会社日立製作所 ストレージサブシステム
US8132044B1 (en) * 2010-02-05 2012-03-06 Symantec Corporation Concurrent and incremental repair of a failed component in an object based storage system for high availability
CN104246707B (zh) * 2012-04-27 2018-03-27 株式会社日立制作所 存储系统和存储装置
US9122399B2 (en) * 2013-04-18 2015-09-01 Hitachi, Ltd. Storage system and storage control method
US9424126B2 (en) * 2013-09-03 2016-08-23 Kabushiki Kaisha Toshiba Memory controller
CN104956312B (zh) * 2013-12-12 2018-02-13 株式会社日立制作所 存储装置及存储装置的控制方法
WO2015145724A1 (ja) * 2014-03-28 2015-10-01 株式会社日立製作所 ストレージシステム
WO2016194095A1 (ja) * 2015-06-01 2016-12-08 株式会社日立製作所 情報処理システム、ストレージ装置及び記憶デバイス
US10585749B2 (en) * 2017-08-10 2020-03-10 Samsung Electronics Co., Ltd. System and method for distributed erasure coding

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015518186A (ja) * 2012-04-27 2015-06-25 株式会社日立製作所 ストレージシステム及びストレージ制御装置
WO2015121912A1 (ja) * 2014-02-12 2015-08-20 株式会社日立製作所 データ記憶装置
US9384093B1 (en) * 2014-05-28 2016-07-05 Microsemi Storage Solutions (U.S.), Inc. Raid enabled NVME device

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110941567A (zh) * 2018-09-21 2020-03-31 爱思开海力士有限公司 用于存储装置中数据模式的数据路径保护奇偶校验值确定
CN111831217A (zh) * 2019-04-19 2020-10-27 株式会社日立制作所 存储系统、其驱动器框体、以及奇偶校验计算方法
US11971782B2 (en) 2020-02-20 2024-04-30 Sk Hynix Nand Product Solutions Corp. On-SSD erasure coding with uni-directional commands
JP7529947B2 (ja) 2020-02-20 2024-08-07 エスケイ ハイニックス ナンド プロダクト ソリューションズ コーポレーション 単方向コマンドによるオン-ssdの消失訂正符号化

Also Published As

Publication number Publication date
CN109313593B (zh) 2022-03-01
JPWO2018051505A1 (ja) 2018-11-29
US20190087122A1 (en) 2019-03-21
US10664193B2 (en) 2020-05-26
JP6652647B2 (ja) 2020-02-26
CN109313593A (zh) 2019-02-05

Similar Documents

Publication Publication Date Title
US10698818B2 (en) Storage controller caching using symmetric storage class memory devices
US9304901B2 (en) System and method for handling I/O write requests
US8839030B2 (en) Methods and structure for resuming background tasks in a clustered storage environment
US10102070B2 (en) Information processing system, storage apparatus and storage device
US8392670B2 (en) Performance management of access to flash memory in a storage device
US20220137835A1 (en) Systems and methods for parity-based failure protection for storage devices
JP6652647B2 (ja) ストレージシステム
US9836223B2 (en) Changing storage volume ownership using cache memory
JPWO2018029820A1 (ja) 計算機システム
US20180267713A1 (en) Method and apparatus for defining storage infrastructure
US11327895B1 (en) Protocol for processing requests that assigns each request received by a node a sequence identifier, stores data written by the request in a cache page block, stores a descriptor for the request in a cache page descriptor, and returns a completion acknowledgement of the request
US10191690B2 (en) Storage system, control device, memory device, data access method, and program recording medium
US11416403B2 (en) Method and apparatus for performing pipeline-based accessing management in storage server with aid of caching metadata with hardware pipeline module during processing object write command
US11315028B2 (en) Method and apparatus for increasing the accuracy of predicting future IO operations on a storage system
US20180307427A1 (en) Storage control apparatus and storage control method
JP2012212192A (ja) 仮想マシンのための仮想ストレージを有するホストサーバ
US10210060B2 (en) Online NVM format upgrade in a data storage system operating with active and standby memory controllers
US20130159765A1 (en) Storage subsystem and method for recovering data in storage subsystem
WO2016194162A1 (ja) 計算機システム
WO2018055686A1 (ja) 情報処理システム
US11709614B2 (en) Reducing write delays while taking snapshots
US20240427666A1 (en) Storage system and management method for storage system
JP2015043226A (ja) ストレージシステム及びストレージシステムのデータ転送方法

Legal Events

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

Ref document number: 2018539482

Country of ref document: JP

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

Ref document number: 16916286

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16916286

Country of ref document: EP

Kind code of ref document: A1