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

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

Info

Publication number
WO2017212514A1
WO2017212514A1 PCT/JP2016/066712 JP2016066712W WO2017212514A1 WO 2017212514 A1 WO2017212514 A1 WO 2017212514A1 JP 2016066712 W JP2016066712 W JP 2016066712W WO 2017212514 A1 WO2017212514 A1 WO 2017212514A1
Authority
WO
WIPO (PCT)
Prior art keywords
parity
user data
new user
data
new
Prior art date
Application number
PCT/JP2016/066712
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/066712 priority Critical patent/WO2017212514A1/ja
Publication of WO2017212514A1 publication Critical patent/WO2017212514A1/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
    • 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
    • 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/16Error detection or correction of the data by redundancy in hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures

Definitions

  • the present invention generally relates to storage control, for example, a technique for calculating a redundant code stored in a storage device.
  • Patent Documents 1 and 2 are known.
  • Patent Document 1 discloses a storage system that includes a plurality of disk devices and a control device that controls them, and each disk device has a parity record creation function.
  • the control device broadcasts the logical record written from the host to all the disk devices belonging to the parity group.
  • the disk device to which the data record is to be written in the parity group that receives the logical record extracts the portion to be written by the disk device from the logical record as a data record, and records the data record on the recording medium.
  • the disk device to which the parity record is to be written creates a parity record from the logical record and records the parity record on the recording medium. Since only the logical record is transferred by the control device, the transfer overhead of the data transfer path between the control device and the disk device can be suppressed.
  • Patent Document 2 discloses a storage system having a plurality of storage media and a device controller that controls the plurality of storage media.
  • the device controller creates an intermediate value for creating parity from old data (data before update) and new data (data after update), and the old parity (parity before update) is stored in this intermediate value.
  • the storage medium creates a new parity (updated parity) from the intermediate value and the old parity.
  • a storage system has a plurality of storage devices constituting a RAID group and a storage controller connected to the RAID group, and the storage controller responds to an I / O (Input / Output) request from a host computer.
  • a cache mechanism (cache memory) is provided for the purpose of speeding up.
  • a storage system having a cache memory that is used not only as a temporary buffer area for storing data in accordance with a write request from a host computer but also as a temporary area for calculating a redundant code is known. It has been. In this type of storage system, the cache memory tends to become a bottleneck in storage performance when data is written to sequential addresses (sequential write).
  • a response to a write request is generally returned to the host computer after the data is duplicated, but the storage system in which the microprocessor (hereinafter referred to as MP) in the storage controller performs data duplication.
  • MP the storage system in which the microprocessor (hereinafter referred to as MP) in the storage controller performs data duplication.
  • data duplication is performed by the MP, so the MP tends to be a bottleneck in storage performance.
  • the MP performs the following generation and comparison in addition to data duplication.
  • the MP generates a guarantee code (for example, a CRC (Cyclic Redundancy Check) code), and generates a guarantee code and a guarantee code attached to the write data from the host (generated by the host). Make a comparison. This is to check whether data corruption has occurred in the data transfer path from the host.
  • the MP tends to become a bottleneck of storage performance.
  • Each of the plurality of stripes of the RAID group is composed of a plurality of strips provided by a plurality of storage devices.
  • the plurality of storage devices are two or more data storage devices and one or more parity storage devices.
  • Each of the two or more data storage devices is a storage device that provides a strip to which user data is written.
  • Each of the one or more parity storage devices is a storage device that provides a strip to which parity is written.
  • the storage controller receives one or more write requests for one or more new user data, and executes data duplication processing for each of the one or more new user data.
  • the storage controller returns one or more responses corresponding to one or more write requests to the host system after the duplex processing.
  • the storage controller transmits a parity generation command to each of the one or more parity storage devices for the write destination stripe that is a stripe corresponding to the one or more new user data. If the parity storage device that has received the parity generation command has new user data necessary for generating a new parity in the parity storage device, a new parity is generated using the necessary new user data in response to the parity generation command. Generate. Each of the one or more new user data is user data after updating the old user data, if there is old user data that is already existing for the logical address to which the user data is written, If there is no old user data for the logical address of the write destination, the user data is newly written for the logical address.
  • the new parity is the updated parity of the old parity if there is an old parity that already exists for the logical address to which the parity is written, while the old parity is not present for the logical address to which the write is to be written. , Parity newly written for the logical address.
  • FIG. 1 shows a configuration of a storage system according to a first embodiment.
  • the structure of FMPK144 is shown.
  • 3 shows a flow of stripe processing according to the first embodiment.
  • the data processing stage corresponding to each step is stored in the SM by the MP 121A.
  • the data storage location and the mapping table storage location in the data FMPK 144A 1 are shown.
  • the parity storage location and the mapping table storage location in the parity FMPK 144P are shown.
  • the state transition rule (for stripe write processing) which concerns on Example 1 of data FMPK144A is shown.
  • the state transition rule (for stripe write processing) which concerns on Example 1 of parity FMPK144P is shown.
  • the flow of host write request processing (A) is shown.
  • the flow of continuous write determination processing is shown.
  • the flow of media writing processing is shown.
  • the flow of data confirmation processing is shown.
  • the flow of media writing processing (B) is shown.
  • the flow of media writing processing (C) is shown.
  • 10 shows a flow of takeover write processing according to the first embodiment corresponding to an MP failure at a stage before parity generation.
  • the flow of fault processing performed in response to detection of an MP fault is shown.
  • 9 shows a flow of stripe write processing according to the second embodiment. In the stripe write process shown in FIG. 17, the data processing stage corresponding to each step is stored in the SM 123 by the MP 121A.
  • the state transition rule (for stripe write processing) which concerns on Example 2 of data FMPK144A is shown.
  • the state transition rule (for stripe write processing) which concerns on Example 2 of parity FMPK144P is shown.
  • a part of the flow of host write request processing (B) is shown.
  • the remainder of the flow of host write request processing (B) is shown.
  • the flow of continuous write determination processing (B) is shown.
  • the flow of media writing processing (D) is shown.
  • 10 shows a flow of takeover write processing according to the second embodiment in accordance with an MP failure at a stage before parity generation.
  • 10 shows a flow of takeover write processing according to the second embodiment in accordance with a parity FMPK failure at a stage before parity generation.
  • the program is executed by a processor (for example, a CPU (Central Processing Unit) or an MP (MicroProcessor)), so that a predetermined process is appropriately performed by a storage resource (for example, memory) and / or a communication interface device (for example, communication).
  • a processor for example, a CPU (Central Processing Unit) or an MP (MicroProcessor)
  • a storage resource for example, memory
  • a communication interface device for example, communication
  • the subject of processing performed by executing a program is a processor (MP or CPU in the embodiment).
  • the processing described with the program as the subject may be processing performed by a storage system, a controller included in the storage system, an MPPK described later included in the controller, or an MP (microprocessor) in the MPPK.
  • the processor may include a hardware circuit that performs part or all of the processing performed by the processor.
  • the computer program may be installed on each computer from a program source.
  • the program source may be, for example, a program distribution server or a
  • a reference code (or a common part in the reference sign) is used, and when explaining the same kind of element separately, the element ID (or Element reference signs) may be used.
  • the “host system” may be one or more physical host computers (for example, a cluster of host computers), or at least one virtual host computer (for example, VM (Virtual Machine)). ) May be included.
  • VM Virtual Machine
  • the “storage system” may be one or more physical storage devices, or at least one virtual storage device (for example, LPAR (Logical Partition) or SDS (Software Defined Storage). ) May be included.
  • LPAR Logical Partition
  • SDS Software Defined Storage
  • HW specific hardware
  • ASIC Application Specific Integrated Circuit
  • FPGA Field-Programmable
  • MP in the storage controller performs data duplication, guarantee code generation, and guarantee code comparison. For this reason, in the HW-less storage system, MP tends to be a bottleneck in storage performance compared to the HW storage system.
  • the MP in the storage controller performs data duplication, guarantee code generation, and guarantee code comparison, and therefore, the access frequency to the cache memory is higher than in the HW storage system. For this reason, in the HW-less storage system, the cache memory tends to be a bottleneck in storage performance compared to the HW storage system.
  • the present invention can be applied to both HW storage systems and HW-less storage systems, but the storage systems according to the following embodiments are HW-less storage systems.
  • FIG. 1 shows a configuration of a storage system according to the first embodiment.
  • the storage system 10 includes a storage controller (hereinafter referred to as a controller) 100 and a storage unit 200 connected to the controller 100.
  • the controller 100 and the storage unit 200 are connected via a predetermined communication network 150.
  • an instruction from the host computer 30 is referred to as “request”, and an instruction from the controller 100 to the FMPK 144 is referred to as “command”.
  • the host computer 30 is an example of a host system.
  • the storage unit 200 has a plurality of FMPKs (Flash Memory PacKage) 144.
  • the FMPK 144 is an example of a storage device, and has FM (Flash Memory).
  • the FMPK 144 is, for example, an SSD (Solid State Drive).
  • the storage unit 200 may be one or a plurality of RAID (Redundant Arrays of Inexpensive (or Independent) Disks) groups 145 configured by a plurality of FMPKs 144. In the present embodiment, it is assumed that one RAID group 145 is formed by the plurality of FMPKs 144 by the controller 100. The area of the RAID group 145 is divided into a plurality of stripes.
  • Each of the plurality of stripes is composed of a plurality of strips (an example of a storage area) that are a plurality of areas (logical address space portions that are part of the logical address space) respectively corresponding to the plurality of storage devices.
  • the RAID level of the RAID group is a RAID level (for example, RAID 5 or RAID 6) that requires one or more parities per stripe. In this embodiment, the RAID level is RAID5.
  • each FMPK 144 included in one RAID group 145 is connected to a plurality of different buses. This is because, if a RAID group 145 is configured from a plurality of FMPKs 144 connected to one bus, if a failure occurs in that bus, all the FMPKs 144 cannot be accessed and data cannot be recovered. However, the RAID group 145 may be configured by a plurality of FMPKs 144 connected to the same bus.
  • the controller 100 is connected with one or a plurality of host computers 30 and a management computer 20.
  • the controller 100 and the host computer 30 are connected via a predetermined communication network (for example, SAN (Storage Area Network)) 190, and the controller 100 and the management computer 20 are connected to a predetermined communication network (for example, a switch or LAN ( Including Local Area Network).
  • a predetermined communication network for example, SAN (Storage Area Network)
  • a predetermined communication network for example, a switch or LAN ( Including Local Area Network).
  • the controller 100 includes various packages (PK), specifically, FEPK (Front End PacKage) 110, MPPK (Micro Processor PacKage) 120, main storage area 130, and BEPK (Back End PacKage) 140.
  • PK packages
  • various packages (PK) are multiplexed and plural, but at least one of the plural types of PK may be singular.
  • the FEPK 110, the MPPK 120, the main storage area 130, and the BEPK 140 are connected via a predetermined communication network (for example, including a switch) 150.
  • the FEPK110 has one or more FE-I / F (Front End Inter / Face) 1101.
  • the FE-I / F 1101 is an interface device for communicating with a communication apparatus existing in the front end such as the host computer 30.
  • the FE-I / F 1101 receives, for example, an I / O request (write request or read request) from the host computer 30 and temporarily stores the received I / O request in the buffer area 121, so that the MPPK 120.
  • the MP 121 in the MPPK 120 for example, when sending a response message to the host computer, implements an implementation that temporarily stores the instruction content to the FE-I / F 1101 and the content of the response message in the buffer area 121. Also good.
  • the BEPK 140 has one or more BE-I / F (Back End Inter / Face) 1401.
  • the BE-I / F 1401 is an interface device for communicating with the FMPK 144.
  • the BE-I / F 1401 reads data from the FMPK 144 and temporarily stores the data in the buffer area 121. Further, for example, when the MP 121 in the MPPK 120 transfers data to the FMPK 144, the MP 121 may temporarily store an instruction to the BE-I / F 1401 in the buffer area 121.
  • the MPPK 120 includes a plurality (or one) of microprocessors (hereinafter referred to as MP) 121 and processes an I / O request from the FE-I / F 1101.
  • MP microprocessors
  • the MPPK 120 is connected to each of the FEPK 110, the main storage area 130, and the BEPK 140 via an internal network. Therefore, the MPPK 120 controls data transfer between the PKs, communication between the FEPK 110 and the host computer, communication between the BEPK 140 and the FMPK 144, and data storage / deletion in the main storage area 130. Can do.
  • MPPKs 120 there are a plurality of MPPKs 120 in the storage system, and the MPPKs 120 are connected via the internal network 170.
  • these devices When controlling the FEPK 110, the main storage area 130, and the BEPK 140 connected from one MPPK 120 to the other MPPK 120, these devices may be directly operated, or a request may be made to the other MPPK 120. .
  • the main storage area 130 includes a buffer area 121 (DXBF (Data Transfer Buffer)), an LM (Local Memory) 122, an SM (Shared Memory) 123, and a CM (Cache Memory) 124.
  • the main storage area 130 is, for example, a volatile semiconductor memory.
  • the main storage area 130 may be a nonvolatile memory.
  • the LM 122 stores a necessary part of management information stored in the SM (Shared Memory) 123 and stores a computer program executed by the MP 121.
  • the CM 124 has a storage area for temporarily storing I / O target data for the storage medium.
  • the SM 123 has a storage area for storing various management information (information used for the operation of the storage system) and computer programs. Further, the CM 124 stores data used for calculation and calculation result data when the MPPK 120 performs parity calculation.
  • Both the buffer area 121 and the CM 124 are areas where data is temporarily stored, but differ in the following points. That is, when data is read from the buffer area 121, the data is erased from the buffer area 121. That is, data read from the buffer area 121 does not remain in the buffer area 121.
  • the CM 124 is basically left on the CM 124 without being deleted as long as the capacity permits.
  • the data on the CM 124 is reused in another IO process. Data is stored in the CM 124 along with the IO processing, but the data is deleted asynchronously with the IO processing. For example, data may be deleted in order from the longest elapsed time since storage, or data may be deleted in order from the longest elapsed time since the last access time.
  • the interface type of each unit may be at least one of FC (Fibre Channel), SAS (Serial Attached SCSI), and SATA (Serial ATA).
  • FC Fibre Channel
  • SAS Serial Attached SCSI
  • SATA Serial ATA
  • the management computer 20 is a computer having a display device and an input device, for example.
  • the management computer 20 transmits an instruction to perform various settings to the storage system in accordance with an SVP (SerVice Processor) operation from the administrator.
  • SVP Session Processor
  • the SVP updates management information in the SM 123 or sets information in the SM 123.
  • the management information includes area information indicating an area for storing data in the CM 124 and process stage information indicating one of a plurality of process stages during the write process.
  • FIG. 2 shows the configuration of FMPK 144.
  • the FMPK 144 includes an FM 1443 and an FM controller 114 connected to the FM 1443.
  • the FM controller 114 includes a port 1441, an I / F 11446, a logical operation circuit 1442, a memory 1445, and a CPU 1444 connected thereto.
  • BEPK 140 is connected to port 1441.
  • the FM 1443 is connected to the I / F 11446.
  • the logic operation circuit 1442 is a circuit (for example, an XOR (exclusive or) operation circuit) that calculates parity (or intermediate parity).
  • the CPU 1444 or the logical operation circuit 1442 generates a guarantee code (for example, CRC code) from the data attached to the write command from the controller 100, compares the guarantee code with the guarantee code attached to the write command, It may have the ability to detect bit corruption during transfer.
  • a guarantee code for example, CRC code
  • FM 1443 is an example of a write-once storage medium. According to the “write-once storage medium” referred to here, data cannot be written to the same physical area of the storage medium until the data is erased from the physical area. Specifically, when data is stored in a physical area belonging to a physical address associated with a logical address, the same logical address is not stored in the physical area unless the data is erased from the physical area. New data cannot be written.
  • the FM 1443 is a non-volatile semiconductor memory (typically a NAND type FM chip), and data is written / read on a page basis and data is erased on a block basis.
  • the FM 1443 includes a plurality of blocks (physical blocks), and one block includes a plurality of pages (physical pages).
  • a logical address (logical area) to which a physical page (hereinafter referred to as a page) is assigned is a write destination
  • a new empty page is assigned to the write destination logical address instead of the assigned page and newly assigned.
  • Data is written to the page.
  • the data written on the recently allocated page that is, the latest data
  • the page on which valid data is written is “valid page”.
  • the data stored in the previous page is “invalid data”
  • the page in which invalid data is written is “invalid page”.
  • a page that can store new data without being a valid page or an invalid page is an “empty page”.
  • the FM 1443 is not limited to the flash memory, and may be a write-once memory (for example, a phase change memory). Instead of FM 1443, MRAM (Magnetoresistive Random Access Memory), ReRAM (Resistive Random Access Memory) or FeRAM (Ferroelectric Random Access Memory) may be employed.
  • the FM controller 114 is an example of a device controller.
  • the FM controller 114 provides a logical storage space (for example, a logical address space) to the controller 100 (an example of a host system).
  • the FM controller 114 manages the correspondence between logical addresses and physical addresses. For example, a mapping table (an example of address conversion information) representing the correspondence between logical addresses and physical addresses is held.
  • the mapping table is stored in the memory 1445 of the FMPK 144, for example. Further, the memory 1445 may temporarily store data from the controller 100.
  • the memory 1445 is, for example, a volatile semiconductor memory. Note that the memory 1445 may be a nonvolatile semiconductor memory.
  • the FM controller 114 specifies the physical page to which the physical address corresponding to the logical address specified by the I / O command from the controller 100 belongs, and performs I / O on the specified physical page.
  • the logical address is, for example, LBA (Logical Block Address)
  • the physical address is, for example, PBA (Physical Block Address).
  • the controller 100 creates a RAID group of RAID 5 from a plurality of FMPKs 144 (see FIG. 1).
  • the controller 100 allocates a continuous area to a plurality of logical volumes (LU: Logical Unit) from the address space of the created RAID group.
  • LU Logical Unit
  • the controller 100 allocates stripes over the address space on the plurality of FMPKs 144.
  • a plurality of strips constituting the stripe (a plurality of address spaces respectively corresponding to the plurality of FMPKs 144) include a strip for storing user data and a strip for storing parity (parity data).
  • the controller 100 assigns FMPK numbers to a plurality of FMPKs 144 and shifts the FMPK numbers of user data and parity for each stripe.
  • the controller 100 writes information on each RAID group and LU to the LM 122.
  • each FMPK 144 may be a data FMPK 144A or a parity FMPK 144P depending on the stripe.
  • the storage system 10 can perform read-modify-write processing in accordance with a write request from the host computer 30.
  • the read modify write process is a write process that updates only user data in a part of a certain stripe.
  • user data before update in the strip to which the logical address specified by the write request belongs is “old user data”
  • user data after update corresponding to the logical address is “new user data”
  • old user data The parity before updating based on the old data
  • new parity The parity after updating based on the new user data
  • old user data may be referred to as “oD”
  • new user data new user data as “nD”
  • old parity old parity
  • nP old parity
  • new parity as “nP”.
  • the XOR operator is denoted as “+”. That is, in the description of this embodiment, each of the old user data, new user data, old parity, and new parity is data for one strip.
  • New user data means user data that is newly written for the logical address when there is no user data at the logical address to which the data is written.
  • new parity means the parity that is newly written for the logical address when there is no parity in the logical address to which the parity is written.
  • the storage system 10 can also perform a write process for creating a new parity from a new user data group for one stripe sent in accordance with a write request from the host computer 30.
  • This write processing is called “striped write processing”.
  • the FMPK 144 has the logical operation circuit 1442, and the logical operation circuit 1442 performs the parity operation.
  • the MPPK 120 of the controller 100 may have a logical operation function and perform a parity operation.
  • both the parity FMPK 144 and the controller 100 have a logical operation function, which one performs the parity operation may be set based on a user operation. As a result, the user can set the availability of the XOR function of the FMPK 144 and the availability of the XOR function of the FMPK 144 for each logical volume.
  • stripe write processing is taken as an example.
  • a new user data transmission command and a new user data confirmation command are defined in addition to a normal write command and a normal read command.
  • a new user data transmission command (a command for transmitting all new user data groups constituting a stripe), and a new parity A definite command is defined. That is, in this embodiment, there are a normal write command and a new user data transmission command as write commands.
  • the new user data transmission command is an example of a special write command.
  • FIG. 3 shows a flow of stripe write processing according to the first embodiment.
  • nD 1 and oD 1 mean the first new user data and the first old user data, respectively, constituting the stripe.
  • ND 1 , nD 2, nD 3, and nP mean a new user data group and a new parity that form a stripe.
  • the new user data constituting the stripe is nD 1 ,. . .
  • nD 3 is three, the number of new user data in one stripe may be less than 3 or more than 3.
  • the write target of one write request may be new user data nD 1 , nD 2, and nD 3 , but each corresponds to a plurality of write requests (for example, a plurality of write requests in which a plurality of write destination addresses are consecutive). a plurality of write target, respectively, the new user data nD 1, was. . . nD 3 is sufficient.
  • the I / F 1101 of the FEPK 110 includes new user data nD 1 ,. . . Write nD 3 to the area reserved in CM 124A.
  • the MP 121A (arbitrary MP 121) stores the new user data nD 1 ,. . . nD 3 is read from CM 124A and its new user data nD 1 ,. . . nD writes 3 in the different CM124B.
  • This processing is called “duplication processing for new user data”. That is, the new user data nD 1 ,. . . Each of nD 3 is duplicated in CM 124A and 124B.
  • the MP 121A sends new user data nD 1 ,. . .
  • One or more guarantee codes are generated from nD 3 , and the generated one or more guarantee codes are compared with one or more guarantee codes sent accompanying one or more write requests.
  • the MP 121A transmits a response (normal end) to the write request to the host computer 30.
  • the MP 121A sends a new user data transmission command to the data FMPK 144A 1 ,. . . 144A 3 is transmitted to the transmission destination.
  • the new user data transmission command includes new user data nD 1 ,. . . A transmission target of nD 3 is attached.
  • the new user data is stored in the FM 1443 by the FM controller 114.
  • the MP 121A transmits a new user data transmission command to the parity FMPK 144P.
  • the new user data transmission command includes new user data nD 1 ,. . . nD 3 is associated.
  • the nD 3 is stored in the FM 1443P by the FM controller 114P.
  • New user data nD 1 ,. . . nD 3 is a calculation data of the new parity nP, may be stored in memory 1445P in FM controller 114P instead FM1443P.
  • the write destination eventually becomes the end strip of the stripe (for example, it can be determined by a logical address).
  • the MP 121A stores all new user data nD 1 ,. . .
  • nD 3 for example, when it is determined that data has been written from the beginning to the end of the stripe
  • a parity generation command is transmitted to the parity FMPK 144P.
  • the logical operation circuit 1442P of the parity FMPK 144P causes the new user data nD 1 ,. . . new parity nP is generated using the nD 3.
  • the MP 121A confirms the new user data confirmation command (discards the old user data oD (discards the association between the physical address and logical address of the old user data), that is, the new user data nD. Command) data FMPK 144A 1 ,. . . To send to the 144A 3.
  • FM controller 114A is to map the logical address of the physical address of the physical page that contains the old user data oD, instead of the physical address, The physical address of the physical page storing the new user data nD is validated (for example, mapped).
  • the MP 121A discards the new parity confirmation command (the old parity oP and the new user data nD 1 ,... ND 3 (corresponding to the logical address between the physical address of the old parity and the physical address of the new user data).
  • a command for discarding the attachment that is, a command for determining the new parity nP
  • the FM controller 114P causes the old parity oP and the new user data nD 1 ,. . .
  • the physical address of the physical page storing the new parity nP is validated (for example, mapped) instead of the physical address.
  • FIG. 4 shows that the data processing stage corresponding to each step in the stripe write processing shown in FIG. 3 is stored in the SM 123 by the MP 121A.
  • the processing stage is a stage before parity generation, and therefore a normal MP (not shown) )
  • the new user data nD 1 is necessary to transmit the nD 3 and perform parity generation again.
  • step (3-7) data FMPK 144A 1 ,. . . 144A 3 on the new user data nD 1 ,. . . Since nD 3 has a new parity nP on the parity FMPK 144P, processing can be resumed from transmission of a new user data confirmation command and transmission of a new parity confirmation command.
  • Figure 5 illustrates a data storage location and the mapping table storage location in the data FMPK144A 1.
  • FIG. 6 shows a parity storage location and a mapping table storage location in the parity FMPK 144P.
  • the difference between the data FMPK 144A 1 and the parity FMPK 144P is that the parity FMPK 144P stores the plurality of new user data in a different area from the new parity in order to generate a new parity nP from all the new user data constituting the stripe. This is a necessary point.
  • the additional user data is new user data sent again from the controller 100 to the FMPK 144 by new user data transmission processing described later.
  • the mapping table is stored in the memory 1445 of each FMPK 144.
  • the mapping table shows the correspondence between logical addresses and physical addresses.
  • a logical address designated by a command from the controller 100 to the FMPK 144 in the FMPK 144 is referred to as a target logical address.
  • the entry of the target logical address is called a target entry.
  • Target entry 1446a 1 data FMPK144A 1 stores the target logical address, a physical address of the physical page that contains the old user data oD 1, a physical address of the physical page which is the storage destination new user data nD 1 . Timing a new user data nD 1 is stored in FM1443 is when a new user data transmission command FM controller received.
  • the target entry 1446P parity FMPK144P includes a target logical address, a physical address of the physical page that contains the old parity oP, the physical address of the physical page as a storage destination of the new parity nP, new user data nD 1,. . .
  • the physical address of the physical page that is the storage destination of nD 3 is stored.
  • the new parity nP (and new user data nD 1 ,... ND 3 ) is stored in the FM 1443 when the FM controller 114P receives a new user data transmission command. New user data nD 1 ,. . .
  • the nD 3 may not be stored in the FM 1443P but may be held in the memory 1445 as calculation data.
  • a logical address may be called “LA”
  • a physical address of old user data may be called “oUPA”
  • a physical address of new user data may be called “nUPA” (nUPA1,... NUPA3, etc.).
  • the new user data nD 1 ,. . . Since nD 3 is stored to generate old parity or new parity, one new user data can be identified by a combination of a logical address and an identification number of new user data in the stripe. The identification number is “m” in nUPAm (m 1, 2,).
  • the physical address of the old parity may be called “oPPA” and the physical address of the new user data may be called “nPPA”.
  • the logical address value is “LBAxxx”
  • the physical address values are “p0”, “p1”, “p2”. . . Sometimes called.
  • an arrow from the physical address within the entry 1446 (1446a 1 and 1446P) to FM1443 (1443A 1 and 1443P) within represents a pointer, the physical address indicating that refer to previous physical page arrows.
  • the FM controller 114 of the FMPK 144 receives a normal read command for the target logical address from the controller 100, based on the target entry 1446 of the mapping table, the old user data from the physical page pointed to by the physical address associated with the target logical address Alternatively, the old parity is read out.
  • registering the physical address of the physical page in which the FMPK 144 stores data in the target entry 1446 is referred to as “pointer connection” to the data.
  • the FMPK 144 changes the physical address (the old user data or old parity physical address or the new user data or new parity physical address) in the target entry 1446 to the physical address of the physical page storing another data. Is called “pointer replacement” of the data.
  • the deletion of the physical address of the physical page in which data is stored by the FMPK 144 from the target entry 1446 is referred to as “pointer deletion” of the data.
  • FIG. 7 shows a state transition rule (for stripe write processing) according to the first embodiment of the data FMPK 144A.
  • “oD” means old user data
  • “nD” means new user data.
  • “0” means that the data is not present
  • “1” means that the data is present.
  • the old user data is stored in the data FMPK 144A, and the physical address of the old user data is registered in the target entry 1446A.
  • the MP 121 specifies a target logical address and sends a new user data transmission command accompanied by new user data to the data FMPK 144A.
  • the FM controller of the data FMPK 144A temporarily stores the new user data in the memory 1445, and then writes the new user data to a new physical page of the FM 1443A.
  • the data FMPK 144A makes a pointer connection to the new user data (registers the physical page of the physical page storing the new user data in the target entry 1446A).
  • the data FMPK 144A sends a normal end response to the new user data transmission command to the controller 100.
  • the state of the data FMPK 144A changes from the state 1 to the state 2.
  • the correspondence between the target logical address and the physical address of the old user data is maintained even after the writing of the new user data without invalidating the old user data.
  • the data FMPK 144A receives the new user data confirmation command, the correspondence relationship between the logical address address and the physical address of the old user data is canceled.
  • the old user data and the new user data are stored in the data FMPK 144A, and the physical address of the old user data and the physical address of the new user data are stored in the target entry 1446A. It is registered.
  • the controller 100 designates the target logical address and sends a new user data transmission command with additional user data to the data FMPK 144A.
  • the data FMPK 144A temporarily stores the additional user data in the memory 1445, and then transfers the additional user data to the additional physical page (a physical page different from the physical page of the old user data and the physical page of the new user data). Write.
  • the data FMPK 144A performs pointer replacement from the new user data to the additional user data (registers the physical address of the additional physical page as the physical address of the new user data in the target entry 1446A).
  • the data FMPK 144A sends a normal end response to the new user data transmission command to the controller 100.
  • the data FMPK 144A does not make the new user data in the FM the old user data. Since it is a stage before the new parity generation, the old user data when the old parity is generated is maintained as the old user data. Even if such processing is performed, the state 2 is maintained. That is, in both state 1 and state 2, when the FM controller of data FMPK 144A receives a new data transmission command, the state of data FMPK 144A is state 2.
  • state 1 is a state in which new user data has already been confirmed. This processing is performed when, for example, a system failure occurs before the processing stage information in the SM 123 (information indicating the current processing stage of the data FMPK 144A) is cleared after the new user data is confirmed, the state of the data FMPK 144A. Executed to confirm.
  • the data FMPK 144A when the data FMPK 144A receives the new user data confirmation command in the state 2, the new user data is confirmed, and the state transits from the state 2 to the state 1. Specifically, the data FMPK 144A replaces the pointer from the old user data to the new user data (changes the physical address of the old user data to the physical address of the new user data), and deletes the pointer of the new user data. (The physical address of the new user data is deleted from the target entry 1446A). Next, the data FMPK 144A sends a normal end response to the new user data confirmation command to the controller 100. Thereafter, when the data FMPK 144A receives a normal read command, the data FMPK 144A responds with new user data.
  • the state of the data FMPK 144A is the state 1.
  • the data FMPK 144A when the data FMPK 144A receives a normal write command with new user data in the state 1, the new user data is written to the physical page of the FM 1443. Next, the data FMPK 144A performs pointer replacement from the old user data to the new user data (registers the physical address of the new user data in the target entry as the physical address of the old user data). Next, the data FMPK 144A sends a normal end response to the normal write command to the controller 100. In this process, state 1 is maintained.
  • the data FMPK 144A when the data FMPK 144A receives a normal write command with additional user data in the state 2, the additional user data is written to the additional physical page of the FM 1443.
  • the data FMPK 144A performs pointer replacement of the old user data (registers the physical address of the additional physical page as the physical address of the old user data in the target entry).
  • the data FMPK 144A deletes the pointer of the new user data (deletes the physical address of the new user data from the target entry 1446A).
  • the data FMPK 144 sends a normal end response to the normal write command to the controller 100. In this process, the state transitions from state 2 to state 1.
  • FIG. 8 shows a state transition rule (for stripe write processing) according to the first embodiment of the parity FMPK 144P.
  • “oP” means old parity
  • “nP” means new parity.
  • “0” means that there is no parity
  • “1” means that the parity exists.
  • the old parity is stored in the parity FMPK 144P, and the physical address of the old parity is registered in the target entry 1446P.
  • the MP 121 designates the target logical address and sends a new user data transmission command accompanied by the new user data and the identification number of the new user data in the stripe to the parity FMPK 144P.
  • the parity FMPK 144P temporarily stores the new user data in the memory 1445, and then writes the new user data to a new physical page of the FM 1443.
  • the parity FMPK 144P makes a pointer connection to the new user data (registers the physical address specified by the identification number of the new user data (the physical address of the new user data) in the target entry 1446P).
  • the parity FMPK 144P sends a normal end response to the new user data transmission command to the controller 100.
  • the state of the parity FMPK 144P transitions from the state 1 to the state 2.
  • the old parity is not invalidated and the correspondence between the logical address and the physical address of the old parity is maintained even after the new user data is written.
  • the parity FMPK 144P receives the parity generation command in a state where all the new user data constituting the stripe are prepared, and generates a new parity using all the new user data in response to the parity generation command.
  • the new parity is stored in the physical page and then a new parity confirmation command is received, the correspondence between the logical address and the physical address of the old parity is canceled.
  • the old parity and the new user data are stored in the parity FMPK 144P, and the physical address of the old parity and the new user data are registered in the target entry 1446P.
  • the controller 100 designates the target logical address and sends a new user data transmission command with additional user data and an identification number of the additional user data in the stripe to the parity FMPK 144P.
  • the parity FMPK 144P temporarily stores the additional user data in the memory 1445, and then writes the additional user data to the additional physical page.
  • the parity FMPK 144P replaces the pointer from the new user data to the additional user data (the physical address of the additional physical page (physical address of the new user data) specified by the identification number of the new user data). Register in the target entry 1446P)). This is a process of updating the physical address when a new user data physical address corresponding to the designated target logical address has already been registered. If there is no new user data physical address corresponding to the designated target logical address in the target entry, a pointer connection to the new user data is performed as in the case of the state 1.
  • the parity FMPK 144P sends a normal end response to the new user data transmission command to the controller 100. In this process, old parity is not generated from new user data stored in the FM.
  • state 2 is maintained. That is, in both state 1 and state 2, when the FM controller of parity FMPK 144P receives a new user data transmission command, the state of parity FMPK 144P is state 2.
  • the old parity, the new user data, and the new parity are stored in the data FMPK 144, and the physical address of the old parity and the physical address of the new user data are stored in the target entry 1446P. , And physical addresses of new parity are registered.
  • the controller 100 sends a new user data transmission command to the parity FMPK 144 specifying the target logical address and including the additional user data and the identification number of the additional user data in the stripe.
  • the parity FMPK 144P temporarily stores the additional user data in the memory 1445, and then writes the additional user data to the additional physical page.
  • the parity FMPK 144P performs pointer replacement from the new user data to the additional user data (the physical address of the additional physical page is registered in the target entry 1446P as the new user data physical address specified by the identification number of the new user data) To do).
  • the parity FMPK 144P deletes the new parity pointer (deletes the physical address of the new parity from the target entry 1446P).
  • the parity FMPK 144P sends a normal end response to the new user data transmission command to the controller 100. In this process, old parity is not generated from new user data stored in the FM.
  • the state of the parity FMPK 144P transitions from the state 3 to the state 2. That is, in both the state 1 and the state 3, when the FM controller of the parity FMPK 144P receives a new data transmission command, the state of the parity FMPK 144P is the state 2.
  • the parity FMPK 144P when the parity FMPK 144P receives the parity generation command in the state 1, the parity FMPK 144P recognizes from the target entry 1446P that there is no new user data and that no new parity can be generated. Next, the parity FMPK 144 sends an abnormal end response to the parity generation command to the controller 100. Before and after this process, the state of the parity FMPK 144P does not change, and the state 1 is maintained.
  • the parity FMPK 144P when the parity FMPK 144P receives the parity generation command in the state 2, the parity FMPK 144 refers to the new user data physical address of the target entry 1446P and determines whether all new user data constituting the stripe exists. Determine. When all new user data exists, the parity FMPK 144P reads the new user data from the physical page pointed to by these new user data physical addresses, generates a new parity by the logical operation circuit 1442, and writes the new parity to the physical page. . Next, the parity FMPK 144P makes a pointer connection to the new parity (registers the physical address of the physical page of the new parity storage destination as the new parity physical address).
  • the parity FMPK 144P sends a normal end response to the parity generation command to the controller 100.
  • the state of the parity FMPK 144P shifts from the state 2 to the state 3. If the process ends abnormally, state 2 is maintained. If all the new user data constituting the stripe does not exist, the parity FMPK 144P cannot generate a new parity, and therefore sends an abnormal end response to the parity generation command to the controller 100.
  • the parity FMPK 144P when the parity FMPK 144P receives the parity generation command in the state 3, the parity FMPK 144 refers to the new user data physical address of the target entry 1446P and determines whether all new user data constituting the stripe exists. Determine. When all new user data exists, the parity FMPK 144P reads the new user data from the physical page pointed to by these new user data physical addresses, generates a new parity by the logical operation circuit 1442, and writes the new parity to the physical page. . Next, the parity FMPK 144P makes a pointer connection to the new parity (registers the address of the physical page where the new parity is stored in the target entry 1446P as the new parity physical address).
  • the parity FMPK 144P sends a normal end response to the parity generation command to the controller 100. If the parity can be normally generated in the state 3, the state 3 is maintained. If all the new user data constituting the parity does not exist, the parity FMPK 144P cannot generate a new parity, and therefore sends an abnormal end response to the parity generation command to the controller 100.
  • the parity FMPK 144P when the parity FMPK 144P receives a new parity confirmation command in the state 1, the parity FMPK 144 sends a normal end response to the new parity confirmation command to the controller 100. That is, state 1 is recognized as a normal state because the new parity has already been determined. This process is executed to confirm the state of the parity FMPK 144P when a system failure occurs after the new parity is confirmed and before the above-described state information in the SM 123 is cleared.
  • the parity FMPK 144P when the parity FMPK 144P receives the new parity confirmation command in the state 2, the parity FMPK 144 sends a normal end response to the new parity confirmation command to the controller 100. That is, since the new parity has already been determined, it is recognized as a normal state. This process is executed to confirm the state of the parity FMPK 144P when a system failure occurs after the new parity is confirmed and before the above-described state information in the SM 123 is cleared.
  • the parity FMPK 144P when the parity FMPK 144P receives the new parity confirmation command in the state 3, the parity FMPK 144 performs pointer replacement from the old parity to the new parity (targeting the physical address of the new parity as the physical address of the old parity). Register in entry 1446P). Next, the parity FMPK 144P deletes the new parity pointer (deletes the physical address of the new parity from the target entry 1446P). Next, the parity FMPK 144P deletes the pointer of the new user data (deletes the physical address of the new user data from the target entry 1446P). Next, the FMPK 144 sends a normal end response to the new parity confirmation command to the controller 100. Thereafter, when the FM controller of the parity FMPK 144P receives a normal read command, it responds with the old parity.
  • the parity FMPK 144P when the parity FMPK 144P designates the target logical address in the state 1 and receives a normal write command with a new parity, the parity FMPK 144P writes the new parity to the physical page.
  • the parity FMPK 144P performs pointer replacement from the old parity to the new parity (registers the physical address of the new parity in the target entry 1446P as the physical address of the old parity).
  • the parity FMPK 144P sends a normal end response to the normal write command to the controller 100. In this process, state 1 is maintained.
  • the parity FMPK 144P designates the target logical address and receives a normal write command with a new parity in the state 2
  • the parity FMPK 144P writes the new parity to the physical page.
  • the pointer replacement from the old parity to the new parity is performed (the physical address of the new parity is registered in the target entry 1446P as the physical address of the old parity).
  • the parity FMPK 144P sends a normal end response to the normal write command to the controller 100. In this process, state 2 is maintained.
  • the parity FMPK 144P when the parity FMPK 144P specifies the target logical address and receives a normal write command with additional parity in the state 3, the parity FMPK 144P writes the additional parity to the additional physical page.
  • the parity FMPK 144 performs pointer replacement of the old parity (registers the physical address of the additional physical page as the physical address of the old parity in the target entry 1446P).
  • the parity FMPK 144P deletes the new parity pointer (deletes the physical address of the new parity from the target entry 1446P).
  • the parity FMPK 144P sends a normal end response to the normal write command to the controller 100. In this process, the state of the parity FMPK 144P transitions from the state 3 to the state 2.
  • FIG. 9 shows the flow of host write request processing (A). This process is started when the MP 121 receives a write request (typically, a write request for updating old user data to new user data) from the host computer 30.
  • a write request typically, a write request for updating old user data to new user data
  • the MP 121 reserves an area for writing new user data in the two CMs 124 (124A and 124B) (S2001). At this time, one area for writing new user data is secured from each CM 124 connected to a different MP 121 in the controller 100. By controlling in this way, there is a failure in one MPPK 120 and the CM 124 connected thereto until the new user data written in the CM 124 is written in the FMPK 144 after the host write request process (A) is normally completed. Even if it happens, the other MPPK 120 can take over the processing and write new user data to the FMPK 144.
  • the MP 121 transmits a write preparation completion to the host computer 30 (S2002).
  • the I / F 1101 of the FEPK 110 writes the new user data from the host computer 30 into one reserved area on the CM 124 (one of the two reserved areas for writing new user data respectively). .
  • the I / F 1101 of the FEPK 110 After data duplication, the I / F 1101 of the FEPK 110 notifies the host of write completion (referred to as a GOOD response) (S2003).
  • the MP 121 reads the new user data written from the host computer 30 from one reserved area (area in the CM 124) and writes the new user data in the other reserved area (another area in the CM 124) (S2004). ).
  • This process is the above-described “duplication process for new user data”.
  • the MPPK 120 has a DMA (Direct Memory Access) function
  • the new user data duplexing process may be performed by the MPPK 120 DMA function in accordance with an instruction from the MP 121.
  • the MP 121 may calculate a guarantee code from the written new user data and compare the guarantee code with the guarantee code accompanying the write request.
  • the MP 121 may return an abnormal response to the host computer 30 and terminate the host write request process (A).
  • the MP 121 writes values (cache addresses) indicating two reserved areas (two new user data storage areas in the two CMs 124) in the area information in the two SMs 123 corresponding to the two CMs 124 ( S2005).
  • the area information is information including a cache address.
  • the MP 121 writes values indicating the pre-parity generation stage in the processing stage information in the two SMs 123 corresponding to the two CMs 124 (S2006).
  • the MP 121 registers information indicating the pre-parity generation stage in the pre-parity generation queue in the SM 123 (S2007).
  • the MP 121 does not refer to information in the queue before parity generation, and does not refer to the information stored in the SM 123 cache address (on the CM 124 of new user data). The parity is generated with reference to the address. For this reason, registration in the pre-parity generation queue in S2007 seems unnecessary.
  • another MPPK 120 that has taken over the process refers to the pre-parity generation queue by the media writing process (B). This is because it is expected to write new user data to the FMPK 144.
  • the MP 121 transmits a normal end to the write request to the host computer 30 (S2008).
  • a continuous write determination process is executed.
  • the continuous write determination process is executed every time the host write request process (A) is performed N times (N is a natural number).
  • the area information and process stage information on the SM 123 are updated.
  • the other MP 121 can take over the host write request processing (A) by referring to the processing stage information.
  • FIG. 10 shows the flow of the continuous write determination process (A).
  • the MP 121 is based on the address specified in the write request related to the current continuous write determination process (A) and the address specified in the write request received from the host computer 30 until the current continuous write determination process (A).
  • the plurality of write destination addresses of the plurality of new user data from the host computer 30 are continuous addresses on the logical volume
  • the new user data stored in the CM 124 is a new user data group constituting a stripe. Among these, it is determined whether or not the terminal is located at the end (S2021).
  • the MP 121 sends a media instruction (A) (media write processing (A) instruction) that clearly indicates the write destination continuous address in the MPPK 120 to which the MP 121 belongs. It transmits to arbitrary MP121 (S2022). If the determination result in S2021 is false (S2021: No), the continuous write process (A) is terminated, and the host write request process (A) is also terminated accordingly.
  • A media instruction
  • A host write request process
  • FIG. 11 shows the flow of the media writing process (A).
  • the MP 121 that has received the media instruction (A) refers to the area information in the SM 123 based on the continuous address specified in the instruction, and the new user data constituting the stripe corresponding to the continuous address is sent to the CM 124. It is determined whether or not all of them are present (that is, whether or not new user data constituting the stripe exists in the CM 124) (S2101). If the determination result in S2101 is false (S2101: No), the process ends.
  • the MP 121 sends a plurality of new user data transmission commands for writing a new user data group to the plurality of data FMPK 144A to the I / F 1401 of the BEPK 140, respectively.
  • the data is sent to a plurality of data FMPK 144A (S2102).
  • the logical address of the old user data is designated as the storage location of the new user data.
  • the CPU 1444 receives a new user data transmission command and new user data via the port 1441, writes the new user data into a physical page in the FM 1443, and responds to the controller 100 with a normal end.
  • the CPU 1444 associates the physical address of the new user data with the target logical address (logical address specified by the new user data transmission command) associated with the physical address of the old user data.
  • the new user data is held in the data FMPK 144A until at least the new user data confirmation command is received by the data FMPK 144A and the processing of the command is completed.
  • the MP 121 When the MP 121 receives the normal end of the new user data transmission command from each of all the data FMPK 144A as the transmission destination of the new user data transmission command (S2103), the MP 121 receives the new user data group in the parity FMPK 144P with respect to the I / F 1401 of the BEPK 140. Is sent to the parity FMPK 144P (S2104). In this new user data transmission command, the logical address of the old parity and each identification number of the new user data group constituting the stripe are designated.
  • the CPU 1444 receives a new data transmission command and a new user data group through the port 1441, writes the received new user data group into the FM 1443, and responds to the controller 100 with a normal end.
  • the CPU 1444 for the target logical address (logical address specified by the new user data transmission command) associated with the old parity physical address, each of the new parity physical address and the new user data group Correlate with physical address.
  • the new user data group and the new parity are held until at least the new parity confirmation command is received by the parity FMPK 144P and the processing of the command is completed.
  • the MP 121 When the MP 121 receives the normal end of the new user data transmission command from the parity FMPK 144P (S2105), the MP 121 sends a parity generation command for generating and writing a new parity from all the new user data constituting the stripe to the parity FMPK 144P ( S2106).
  • the parity generation command the logical address of the old parity is specified.
  • the CPU 1444 receives a parity generation command via the port 1441, reads the new user data group corresponding to the designated logical address, and sends it to the logical operation circuit 1442P.
  • the logical operation circuit 1442P calculates a new parity from the old parity and the new user data group.
  • the CPU 1444 writes the calculated new parity to the FM 1443 and sends a normal end response to the controller 100.
  • the MP 121 When the MP 121 receives the normal end of the parity generation command from the parity FMPK 144P (S2107), it writes values indicating the post-parity generation stage in the processing stage information in the two SMs 123 described above (S2108). At this time, the MP 121 removes the pre-parity generation stage information corresponding to all the new user data constituting the generated parity stripe from the pre-parity generation queue in the SM 123, and similarly generates the post-parity generation stage information in the parity generation in the SM 123. Register to the later queue. Thus, the SM 123 has a pre-parity generation queue and a post-parity generation queue.
  • FIG. 12 shows the flow of the data confirmation process (A).
  • the MP 121 sends a new user data confirmation command to each data FMPK 144A (data FMPK 144A storing any new user data in the new user data group) (S2110).
  • this new user data confirmation command the logical address of the old user data is designated.
  • the CPU 1444 receives the new user data confirmation command via the port 1441, confirms the new user data as the updated user data, and sends a normal end response to the controller 100.
  • the new user data can be accessed from the controller 100 by the normal write command and the normal read command.
  • the MP 121 When the MP 121 receives the normal end of the new user data confirmation command from each of all the data FMPK 144A as the transmission destination of the new user data confirmation command (S2111), the MP 121 sends the new parity confirmation command to the parity FMPK 144P (S2112).
  • this new parity confirmation command a logical address storing the old parity is designated.
  • the controller 100 can access the new parity by the normal write command and the normal read command.
  • the transmission order of the new user data confirmation command to the data FMPK 144A and the transmission of the new parity confirmation command to the parity FMPK 144P may be reversed, or they may be executed in parallel.
  • the CPU 1444 receives a new parity confirmation command via the port 1441, confirms the new parity as the updated parity, and returns a normal end response to the controller 100.
  • the MP 121 When the MP 121 receives the normal completion of the new parity confirmation command from the parity FMPK 144P (S2113), the MP 121 clears the two SM123 areas (areas storing the processing stage information) (S2114). At this time, the MP 121 removes the post-parity generation stage information corresponding to all new user data constituting the stripe corresponding to the logical address specified by the new parity confirmation command from the post-parity generation queue in the SM 123.
  • the above is the media writing process (A) according to the result of the continuous writing determination.
  • a new user data group from the host computer 30 is written to the CM 124 (once (write)).
  • the new user data group is copied to the CM 124 (twice (read and write)).
  • the new user data group is read from one CM 124 for comparison of the guarantee code (once (read)).
  • a new user data group is sent from the CM 124 to the data FMPK 144A and the parity FMPK 144P (two times (read and read)).
  • the number of CM accesses in one stripe write process (the number of accesses to the CM 124) can be six in total for one new user data group. That is, the number of CM accesses can be reduced.
  • the FMPK 144 executes the calculation of the parity, thereby reducing the load on the MP 121 and the CM 124 and improving the sequential write processing performance of the storage system.
  • the number of CM accesses in the stripe write process (RAID 5 (3D + 1P)) according to the comparative example is about 7.66 times in total for one new user data group as follows, which is larger than in this embodiment. That is, according to one comparative example, a new user data group (three new user data) from the host computer is written in an area on the CM (once (write)). In order to duplicate the new user data group, the new user data group is copied to the CM (twice (read and write)). The new user data group is read from one CM for comparison of the guarantee code (once (read)). Further, a new user data group is read from the CM to calculate a new parity (once (read)).
  • the calculated new parity is written into the CM (1/3 times (one parity write for three new user data)).
  • the new parity is copied to the CM (2/3 times (new parity read and write)).
  • the new parity is read from the CM for comparison of the new parity guarantee code (1/3 times (new parity read)).
  • a new user data group is written from the CM to the data FMPK 144A (once (read)).
  • the new parity is written from the CM 121 to the parity FMPK 144P (1/3 times (new parity read)).
  • the number of CM accesses is about 7.66 in total for one new user data group.
  • the reliability of the storage system 10 can be improved by storing the processing stage information in different SM 123.
  • CM 124 in which new user data is stored and the SM 123 in which processing stage information corresponding to the new user data is stored may be provided in different packages.
  • mapping table in the FMPK 144 is stored in the memory 1445, it may be stored in the FM 1443 instead of or in addition to the memory 1445.
  • FIG. 13 shows the flow of the media writing process (B).
  • Media write processing (B) is executed asynchronously with host write request processing.
  • the media writing process (B) may be started at a constant cycle.
  • the MP 121 When the MP 121 detects that information is registered in the pre-parity generation queue (S2201), it reserves from the CM 124 four areas for writing one old user data, one old parity, and two new parities in the CM 124 (S2202). ). In particular, the two areas to which the two new parities are written may exist on different main storage areas 130 in order to continue the processing even if the new parity is lost when the CM 124 fails.
  • the MP 121 sends a normal read command for acquiring old user data to the data FMPK 144A (S2203). In this normal read command, the logical address of the old user data is designated.
  • the CPU 1444 receives a normal read command via the port 1441, reads out the old user data, responds to the controller 100 through the port 1441, and sends the old user data to the CM 124 via the BEPK 140. .
  • the MP 121 when the MP 121 receives the normal end of the normal read command of the old user data from the data FMPK 144A (S2204), the MP 121 sends a normal read command for acquiring the old parity to the parity FMPK 144P (S2205).
  • the CPU 1444 receives a normal read command via the port 1441, reads the old parity, responds to the controller 100 via the port 1441, and sends the old parity to the CM 124 via the BEPK 140.
  • the MP 121 When the MP 121 receives the normal end of the read command of the old parity from the parity FMPK 144P (S2206), the MP 121 secures a calculation area for generating the parity from the LM 122 (S2207).
  • the MP 121 reads the old user data, old parity, and new user data from the CM 124, and calculates the parity by the XOR operation using the reserved calculation area (S2208).
  • the MP 121 writes the generated parity in one CM 124 area.
  • the MP 121 reads the parity from the CM 124 and writes the parity in the area of another CM 124 (S2209). This may be performed by the DMA function of the MPPK 120 instead of the MP 121.
  • the MP 121 releases the calculation area reserved for generating the parity from the LM 122.
  • the MP 121 removes the pre-parity generation stage information corresponding to all new user data constituting the stripe corresponding to the generated parity from the pre-parity generation queue in the SM 123, and similarly stores the post-parity generation stage information in the SM 123. Register in the queue after parity generation (S2210). This is an example of processing stage information update.
  • the MP 121 performs a media writing process (C).
  • FIG. 14 shows the flow of the media writing process (C).
  • the media writing process (C) is performed after the media writing process (B). Instead, the media writing process (B) and the media writing process (C) are performed at different timings. Also good.
  • the media writing process (B) is performed when it is detected that there is information (entry) in the queue before parity generation, but the media writing process (C) has information (entry) in the queue after parity generation. This is because it is performed when this is detected.
  • the MP 121 sends a normal write command for storing the new user data in the CM 124 in the data FMPK 144A to the data FMPK 144A (S2222).
  • the MP 121 when receiving the normal end of the normal write command for new user data from the data FMPK 144A (S2223), the MP 121 sends a normal write command for storing the new parity in the CM 124 to the parity FMPK 144P to the parity FMPK 144P (S2224). ).
  • the MP 121 receives the normal end of the normal write command of the new parity from the parity FMPK 144P (S2225), it clears the area (two SM132 areas) for storing the processing stage information (S2226). At this time, the MP 121 removes the post-parity generation stage information corresponding to all new user data constituting the stripe corresponding to the new parity written to the parity FMPK 144P from the post-parity generation queue in the SM 123.
  • the media writing process (B) ends.
  • the above is the read-modify-write process for creating new parity from new user data corresponding to the information registered in the pre-parity generation queue and writing the new user data and new parity to the data FMPK 144A and parity FMPK 144P.
  • an MP in which a failure has occurred is referred to as “abnormal MP”
  • an MPPK having an abnormal MP is referred to as “abnormal MPPK”
  • an MP without a failure is referred to as “normal MP”
  • an MPPK having a normal MP is referred to as “normal MPPK”.
  • FIG. 15 shows the flow of takeover write processing according to the first embodiment in accordance with the MP failure at the stage before parity generation.
  • FIG. 16 shows a flow of failure processing performed in response to detection of an MP failure.
  • the takeover write process is a process performed when a failure occurs in the MP 121A during the write process.
  • any normal MP 121B performs a take-over write process that takes over the write process.
  • the normal MP 121B can recognize the processing stage information and perform an appropriate takeover writing process according to the processing stage information.
  • the processing stage information is duplicated and stored in the SM 123. In order to avoid data loss when an MP failure occurs, the following takeover write process is executed.
  • the normal MP 121B of the normal MPPK detects that a failure has occurred in the MP 121A in another MPPK (not shown), searches the SM 123 (S3001), and before generating parity from the processing stage information found. It is determined whether or not a stage has been detected (S3002).
  • the normal MP 121B instructs the media writing process (A) based on the area information in the SM 123 (S3003). This means that the processing after (15-4) in FIG. 15 is performed.
  • the media writing process (A) may be performed by the normal MP 121 (that is, the instruction may be issued internally), or may be performed by another normal MP 121 in another normal MPPK 120.
  • the normal MP 121B determines whether a post-parity generation stage has been detected from the found processing stage information (S3004). If the determination result in S3004 is false (S3004: No), the process ends.
  • the normal MP 121B instructs the data confirmation process (A) based on the area information in the SM 123 (S3005). This means that the processing after (15-7) in FIG. 15 is performed.
  • the data confirmation process (A) may be performed by the normal MP 121, or may be performed by another normal MP 121 in another normal MPPK 120.
  • the normal MP 121B can take over the process of the abnormal MP 121A. Even if the failure processing shown in FIG. 16 has not been performed, the media write processing (periodically monitoring these information is still present in the two areas of SM123, the pre-parity queue and post-parity queue. B) and media writing process (3), it is possible to take over (restart) according to the processing stage. By recording the processing stage in the SM, even if a failure occurs in the MP 121A, another normal MP 121B can take over the processing. When the processing stage information at the time of MP failure indicates the stage after parity generation, the normal MP 121B can take over the write process from the stage of determining the new user data of the data FMPK 144A.
  • Example 2 will be described. At that time, differences from the first embodiment will be mainly described, and description of common points with the first embodiment will be omitted or simplified.
  • the controller writes new user data and parity according to the write data sent together with the write request from the host computer 30 to the data FMPK 144A and parity FMPK 144P via the CM 124, and then the write request is normal to the host computer. Returns a response.
  • FIG. 17 shows a flow of stripe write processing according to the second embodiment.
  • the I / F 1101 of the FEPK 110 writes the new user data from the host computer 30 to the area reserved in the CM 124A.
  • the MP 121A stores the new user data nD 1 ,. . . nD 3 is converted into data FMPK 144A 1 ,. . . To send to the 144A 3.
  • Each new user data is associated with a new user data transmission command. This is for stripe line processing. If the write process is a read-modify-write process, the new user data accompanies the normal write command (the same applies to the first embodiment).
  • the MP 121A stores the new user data nD 1 ,. . . Send nD 3 to parity FMPK 144P.
  • New user data nD 1 ,. . . nD 3 is attached to the new user data transmission command. This is for stripe line processing (the same applies to Example 1).
  • Example 2 neither the data FMPK 144A nor the parity FMPK 144P is subjected to data confirmation processing. That is, in Example 1, both of the duplicated data exist in two CM regions (typically two different CMs 124), but in Example 2, one of the duplicated data is CM and the other is FMPK 144 (data FMPK 144A or parity FMPK 144P) exists. At this time, in each of the data FMPK 144A and the parity FMPK 144P, a guarantee code is generated from the received new user data, and the guarantee code is compared with the guarantee code sent accompanying the command. The command is a new user data transmission command in the stripe write process and a normal write command in the read modify write process.
  • the MP 121A transmits a response (normal end) to the write request to the host computer 30.
  • the MP 121A sends all new user data nD 1 ,. . . If it can be determined that writing has been performed on nD 3 , a parity generation command is transmitted to the parity FMPK 144P.
  • the MP 121A sends a new user data confirmation command to the data FMPK 144A 1 ,. . . To send to the 144A 3.
  • the MP 121A transmits a new parity confirmation command to the parity FMPK 144P.
  • FIG. 18 shows that the data processing stage corresponding to each step in the stripe write processing shown in FIG. 17 is stored in the SM 123 by the MP 121A.
  • the processing stage is a stage before parity generation, so a normal MP (not shown)
  • the new user data nD 1 is necessary to redone the parity generation by sending a nD 3. That is, in the second embodiment, new user data before parity generation is not duplexed on the CM 124, but duplexed on the FMPK 144A side. Since direct transmission from the FMPK 144A to the FMPK 144P is impossible, the CM 124 is used as its transmission buffer.
  • FIG. 19 shows a state transition rule (for stripe write processing) according to the second embodiment of the data FMPK 144A.
  • a new user data reception command is defined in addition to the command defined in the first embodiment.
  • the new user data reception command is sent from the CM 124 to the FMPK other than the failed FMPK from the CM 124 when the media fails before the new user data and the new parity are fixed to the data FMPK 144A and the parity FMPK 144P.
  • This command is used to send data (the other FMPK becomes new data FMPK 144A or parity FMPK 144P) and continue the subsequent processing. That is, in this embodiment, there are a normal read command and a new user data reception command as read commands.
  • the new user data reception command is an example of a special read command.
  • the data FMPK 144A when the data FMPK 144A receives the new user data reception command specifying the target logical address in the state 1, the data FMPK 144 detects that there is no new user data corresponding to the target logical address, and ends abnormally. A response is sent to the controller 100. In this process, the state 1 is maintained.
  • the data FMPK 144A when the data FMPK 144A receives a new user data reception command specifying the target logical address in the state 2, the data FMPK 144A reads the data from the physical page pointed to by the new user data physical address corresponding to the target logical address. The data is transmitted to the controller 100. Next, the data FMPK 144A sends a normal end response to the controller 100. In this process, state 2 is maintained. That is, even if the data FMPK 144A in any of the states 1 and 2 receives the new user data transmission command, the state transition is not performed.
  • FIG. 20 shows a state transition rule (for stripe write processing) according to the second embodiment of the parity FMPK 144P.
  • a new user data reception command is defined in the same manner as the data FMPK 144A in addition to the command defined in the first embodiment.
  • the usage of the new user data reception command is the same as that for the data FMPK 144A.
  • the parity FMPK 144P when the parity FMPK 144P receives a new user data reception command specifying the target logical address and the new user data identification number in the state 1, the parity FMPK 144P does not have new user data corresponding to the target logical address. Is detected, and an abnormal end response is sent to the controller 100. In this process, state 1 is maintained.
  • the parity FMPK 144P when the parity FMPK 144P receives a new user data reception command specifying the target logical address and the new user data identification number in the state 2, the parity FMPK 144P has a new user data physical address corresponding to the target logical address. If it exists, the data is read from the physical page pointed to by the physical address, and the data is transmitted to the controller 100. Next, the parity FMPK 144P sends a normal end response to the controller 100. On the other hand, if there is no new user data physical address corresponding to the target logical address, the parity FMPK 144P sends an abnormal termination response to the controller 100. In any case, the state 2 is maintained in this process.
  • the parity FMPK 144P when the parity FMPK 144P receives the new user data reception command designating the target logical address and the new user data identification number in the state 3, the parity FMPK 144P receives the new user data physical corresponding to the target logical address. If the address exists, the data is read from the physical page pointed to by the physical address and the data is transmitted to the controller 100. Next, the parity FMPK 144 sends a normal end response to the controller 100. On the other hand, when there is no new user data physical address corresponding to the target logical address, the parity FMPK 144P sends an abnormal termination response to the controller 100. In this process, the state 3 is maintained. That is, even if the parity FMPK 144P in any of the states 1 to 3 receives the new user data transmission command, the state transition is not performed.
  • FIG. 21 and 22 show the flow of host write request processing (B). This process is started when the MP 121 receives a write request (typically, a write request for updating old user data to new user data) from the host computer 30.
  • a write request typically, a write request for updating old user data to new user data
  • the MP 121 reserves one area for writing new user data in the CM 124 (S2301).
  • the MP 121 transmits write preparation completion to the host computer 30 (S2302).
  • the I / F 1101 of the FEPK 110 writes the new user data from the host computer 30 into the area secured in the CM 124.
  • the completion of writing to the CM 124 is notified from the I / F 1101 of the FEPK 110 to the host computer 30 (S2303). Then, the MP 121 sends a new user data transmission command to the data FMPK 144A to the data FMPK 144A (S2304). In this new user data transmission command, the logical address of the old user data is designated.
  • the CPU 1444 receives a new data transmission command and new user data via the port 1441, writes the received new user data into the FM 1443, and responds to the controller 100 of normal termination.
  • the new user data physical address is associated with the target logical address associated with the old user data physical address.
  • the new user data is retained until at least the new user data confirmation command is received and the processing is completed.
  • the data FMPK 144A calculates a guarantee code from the written new user data, and compares the guarantee code with the guarantee code accompanying the new user data transmission command.
  • the data FMPK 144A detects data loss during transfer, the data FMPK 144A responds to the controller 100 with an abnormal end.
  • the MP 121 When receiving an abnormal end from the data FMPK 144A, the MP 121 calculates a guarantee code from the new user data of the CM 124, and compares the guarantee code with the guarantee code attached to the write request from the host computer 30. When detecting a data loss during transfer, the MP 121 transmits an abnormal termination of the write request to the host computer 30. If there is no data loss during transfer as a result of the guarantee code comparison by the MP 121, the data loss has occurred somewhere in the process of writing new user data from the controller 100 to the data FMPK 144A. Therefore, when there is no data loss during transfer, the MP 121 may issue a new user data transmission command again using another data FMPK 144A or another data transfer path.
  • the MP 121 when the MP 121 receives the normal end of the new user data transmission command from the data FMPK 144A (S2305), it sends the new user data transmission command to the parity FMPK 144P (S2306).
  • the logical address of the old parity and the new user data identification number are designated.
  • the CPU 1444 receives a new data transmission command and new user data via the port 1441, writes the received new user data into the FM 1443, and responds to the controller 100 with a normal end.
  • the new parity physical address and the new user data physical address are associated with the logical address address associated with the old parity physical address.
  • the new user data and the new parity are held until the processing is completed after the new parity confirmation command is received.
  • the parity FMPK 144P calculates a guarantee code from the written new user data, and compares the guarantee code with the guarantee code accompanying the new user data transmission command.
  • the parity FMPK 144P When the parity FMPK 144P detects data loss during transfer, the parity FMPK 144P responds to the controller 100 with an abnormal end.
  • the MP 121 receives an abnormal end from the parity FMPK 144P, the MP 121 calculates a guarantee code from the new user data of the CM 124, and compares the guarantee code with the guarantee code attached to the write request from the host computer 30.
  • the MP 121 detects a data loss during transfer, the MP 121 transmits an abnormal termination of the write request to the host computer 30. If there is no data loss during transfer as a result of the guarantee code comparison by the MP 121, a data loss has occurred somewhere in the process of writing new user data from the controller 100 to the parity FMPK 144P. Therefore, when there is no data loss during transfer, the MP 121 may issue a new user data transmission command again using another parity FMPK 144P or another data transfer path.
  • the process of writing new user data into the data FMPK 144A and the parity FMPK 144P is referred to as “duplication process of new user data”.
  • this new user data duplexing process may be performed by the MPPK 120 DMA function in accordance with an instruction from the MP 121.
  • the area information in the two SMs 123 corresponding to the two CMs 124 indicates the areas of the two CMs 124 in which the new user data is stored.
  • Each value (CM address) is written (S2308).
  • the MP 121 writes values indicating the pre-parity generation stage in the processing stage information in the two SMs 123 corresponding to the areas of these two CMs 124 (S2309).
  • the MP 121 registers information indicating the stage before parity generation in the pre-parity generation queue in the SM 123. (S2310).
  • the media writing process (D) is performed in the continuous writing determination process (B) described later, the CM address in the SM 123 (address on the CM 124 of the new user data) without referring to the information in the pre-parity generation queue.
  • Parity generation is performed. For this reason, registration in the pre-parity generation queue in S2007 seems unnecessary.
  • another MPPK 120 that has taken over the process refers to the pre-parity generation queue by the media writing process (B). This is because it is expected to write new user data to the FMPK.
  • the duplication of new user data is performed using two areas of the CM 124.
  • these are data FMPK 144A and parity FMPK 144P.
  • the CM 124 area is secured and a new user data reception command is sent to the data FMPK 144A or the parity FMPK 144P. The process of issuing is added.
  • the MP 121 transmits a normal end of the write request to the host computer 30 (S2311).
  • the area information and the processing stage information in the SM are updated every time new user data is written.
  • another MP can take over the write process by referring to the processing stage information.
  • FIG. 23 shows the flow of the continuous write determination process (B).
  • FIG. 24 shows the flow of the media writing process (D).
  • the MP 121 Based on the logical address (logical address range of the logical volume) designated in S2422 of FIG. 23, the MP 121 refers to the area information in the SM 123 and determines whether or not all the new user data constituting the stripe is in the CM 124. Determination is made (S2501).
  • the MP 121 sends a parity generation command (a command for generating and writing a new parity from all new user data constituting the stripe) to the parity FMPK 144P (S2502). ).
  • a parity generation command (a command for generating and writing a new parity from all new user data constituting the stripe)
  • the parity FMPK 144P (S2502). )
  • the logical address of the old parity is specified.
  • the CPU 1444 receives a parity generation command via the port 1441, reads all new user data corresponding to the designated logical address, and sends it to the logical operation circuit 1442.
  • the logical operation circuit 1442 calculates a new parity from all new user data.
  • the CPU 1444 writes the new parity to the FM 1443 and sends a normal end response to the controller 100.
  • the MP 121 When the MP 121 receives the normal end of the parity generation command from the parity FMPK 144P (S2503), it writes values indicating the post-parity generation stage in the processing stage information in the two SMs 123 described above (S2504). At this time, the MP 121 removes the pre-parity generation stage information corresponding to all the new user data constituting the stripe corresponding to the generated parity from the pre-parity generation queue in the SM 123, and the post-parity generation stage information as the SM 123. Registered in the queue after parity generation.
  • the MP 121 starts the data confirmation process (A) and sends a new user data confirmation command to the data FMPK 144A.
  • this new user data confirmation command the logical address of the old user data is designated.
  • the above is the media writing process (D) according to the result determined to be the writing to the continuous address.
  • the write process including this process new user data from the host computer 30 is written into one area in the CM 124 (once (write)), and the new user data is sent from the CM 124 to the data FMPK 144A and the parity FMPK 144P, respectively. (2 times (lead and lead)).
  • the number of CM accesses in the write processing of one new user data group is three. That is, the number of accesses to the CM 124 can be reduced.
  • the FMPK performs the parity calculation
  • the MP and CM loads in the controller 100 are further reduced as compared with the first embodiment, and the sequential write processing performance of the storage system is improved.
  • FIG. 25 shows the flow of takeover write processing according to the second embodiment in accordance with the MP failure at the stage before parity generation.
  • the operation of the MP 121 at the time of MP failure is the same as that of FIG. 16 except for the following points. That is, in the second embodiment, the media writing process (D) according to the second embodiment is performed instead of the media writing process (A) in S3003 of FIG.
  • the takeover write process according to the second embodiment is realized by the normal MP 121 performing a process according to the processing stage information as in the first embodiment.
  • the normal MP 121B searches the SM 123 and determines whether or not the pre-parity generation stage is detected from the found processing stage information.
  • step (25-4) transmission of parity generation command
  • the media writing process (D) may be performed by the MP 121B or another normal MP 121 of the MPPK 120.
  • the MP 121B determines whether or not the post-parity generation stage is detected from the found processing stage information.
  • step (25-5) transmission of new user data confirmation command
  • This data confirmation process (A) may be performed by the MP 121B or another normal MP 121 of the MPPK 120. If the post-parity generation stage is not detected, the MP 121B ends this flow.
  • the normal MP 121 can take over the process and carry out the process.
  • FIG. 26 shows the flow of the takeover write process according to the second embodiment in accordance with the parity FMPK failure at the stage before parity generation.
  • the takeover write process of the second embodiment is realized by the MP 121A recognizing the process stage information and performing an appropriate process according to the process stage information.
  • the MP 121A searches the SM 123 and determines whether or not a stage before parity generation has been detected from the found processing stage information.
  • the MP 121A when the MP 121A detects the pre-parity generation stage, the data FMPK 144A 1 ,. . . 144A 3 , new user data nD 1 ,. . . An area for storing nD 3 is secured from the CM 124.
  • the MP 121A sends a new user data reception command to the data FMPK 144A 1 ,. . . 144A 3 to send data FMPK 144A 1 ,. . . 144A 3 to the reserved area on the CM 124, the new user data nD 1 ,. . . Read nD 3 (26-1).
  • MP121A includes data FMPK 144A 1 ,. . .
  • a new user data transmission command for writing nD 3 is sent to the normal parity FMPK 144P ′ (26-2).
  • the logical address of the old parity and the identification number of the new user data to be read are specified.
  • the MP121A when the MP121A receives the normal end of the new user data transmission command, the MP121A performs the processing after step (25-4) (parity generation command transmission).
  • the media writing process (D) may be performed by the MP 121A or another normal MP 121.
  • the processing may be continued from the data confirmation processing (A), or the processing may be continued from the stage before parity generation.
  • the media writing process (D) and the data confirmation process (A) may be performed by the MP 121A or another normal MP 121.
  • the MP 121A ends the failure processing.
  • the MP 121 duplicates the new user data from the normal FMPK, and the remaining Can continue.

Abstract

RAIDグループの複数のストライプの各々の各々について、複数の記憶デバイスは、2以上のデータ記憶デバイスと、1以上のパリティ記憶デバイスである。ストレージコントローラは、1以上の新ユーザデータの1以上のライト要求を受信し、1以上の新ユーザデータの各々についてデータの二重化処理を実行し、1以上のライト要求に対応した1以上の応答を二重化処理の後にホストシステムに返す。ストレージコントローラは、1以上の新ユーザデータに対応したストライプである書込み先ストライプについて、パリティ生成コマンドを、1以上のパリティ記憶デバイスの各々に送信する。パリティ生成コマンドを受信したパリティ記憶デバイスが、新パリティの生成に必要な新ユーザデータがそのパリティ記憶デバイスにあれば、パリティ生成コマンドに応答して、その必要な新ユーザデータを用いて新パリティを生成する。

Description

ストレージシステム及び記憶制御方法
 本発明は、概して、記憶制御に関し、例えば、ストレージデバイスに格納される冗長コードを演算する技術に関する。
 この種の技術に関し、例えば、特許文献1及び2に開示の技術が知られている。
 特許文献1には、複数のディスク装置とこれらを制御する制御デバイスとを有し、各ディスク装置がパリティレコード作成機能を有するストレージシステムが開示されている。このストレージシステムにおいて、制御デバイスは、ホストから書き込まれた論理レコードをパリティグループに属する全ディスク装置にブロードキャストする。この時、論理レコードを受け取るパリティグループのうちの、データレコードを書き込むべきディスク装置は、論理レコードの中から、そのディスク装置で書き込むべき部分をデータレコードとして取りだし、データレコードを記録媒体に記録する。論理レコードを受け取るパリティグループのうちの、パリティレコードを書き込むべきディスク装置は、論理レコードからパリティレコードを作成して、パリティレコードを記録媒体に記録する。制御装置が転送するのは論理レコードのみであるため、制御装置とディスク装置の間のデータ転送路の転送オーバヘッドを抑えることができる。
 特許文献2には、複数の記憶媒体、及び複数の記憶媒体を制御するデバイスコントローラを有するストレージシステムが開示されている。デバイスコントローラは、旧データ(更新前のデータ)及び新データ(更新後のデータ)からパリティを作成するための中間値を作成し、この中間値を旧パリティ(更新前のパリティ)が格納されている記憶媒体へ転送する。その記憶媒体は、その中間値と旧パリティとから新パリティ(更新後のパリティ)を作成する。
特開平5-46324公報 国際公開第2013/160970号パンフレット
 一般に、ストレージシステムは、RAIDグループを構成する複数の記憶デバイスと、RAIDグループに接続されたストレージコントローラとを有し、ストレージコントローラは、ホスト計算機からのI/O(Input/Output)要求に対する応答を高速化する目的でキャッシュ機構(キャッシュメモリ)を備えている。ホスト計算機からのライト要求に従うデータを記憶デバイスに格納する際の一時的なバッファ領域としてだけでなく、冗長コードを計算するための一時的な領域としても使用されるキャッシュメモリを有するストレージシステムが知られている。この種のストレージシステムでは、データを連続したアドレスにライト(シーケンシャルライト)する場合等に、キャッシュメモリは、ストレージ性能のボトルネックになりがちである。
 また、冗長性の維持のために、一般に、データが二重化された後にライト要求に対する応答がホスト計算機に返されるが、データの二重化を、ストレージコントローラ内のマイクロプロセッサ(以下、MP)が行うストレージシステムがある。この種のストレージシステムでは、データの二重化がMPによって行われるため、MPが、ストレージ性能のボトルネックになりがちである。また、この種のストレージシステムには、MPが、データの二重化に加えて、次の生成及び比較を行うストレージシステムもある。このようなストレージシステムでは、MPは、保証コード(例えばCRC(Cyclic Redundancy Check)符号)を生成し、生成した保証コードと、ホストからのライトデータに付随した(ホストが生成した)保証コードとの比較を行う。ホストからのデータの転送経路中でデータ化けが起きていないかを確認するためである。このようなストレージシステムでは、一層、MPが、ストレージ性能のボトルネックになりがちである。
 RAIDグループの複数のストライプの各々は、複数の記憶デバイスがそれぞれ提供する複数のストリップで構成されている。複数のストライプの各々について、複数の記憶デバイスは、2以上のデータ記憶デバイスと、1以上のパリティ記憶デバイスである。2以上のデータ記憶デバイスの各々は、ユーザデータの書込み先となるストリップを提供する記憶デバイスである。1以上のパリティ記憶デバイスの各々は、パリティの書込み先となるストリップを提供する記憶デバイスである。ストレージコントローラは、1以上の新ユーザデータの1以上のライト要求を受信し、1以上の新ユーザデータの各々についてデータの二重化処理を実行する。ストレージコントローラは、1以上のライト要求に対応した1以上の応答を二重化処理の後にホストシステムに返す。ストレージコントローラは、1以上の新ユーザデータに対応したストライプである書込み先ストライプについて、パリティ生成コマンドを、1以上のパリティ記憶デバイスの各々に送信する。パリティ生成コマンドを受信したパリティ記憶デバイスが、新パリティの生成に必要な新ユーザデータがそのパリティ記憶デバイスにあれば、パリティ生成コマンドに応答して、その必要な新ユーザデータを用いて新パリティを生成する。1以上の新ユーザデータの各々は、そのユーザデータの書込み先の論理アドレスについて既に存在するユーザデータである旧ユーザデータがあれば、その旧ユーザデータの更新後のユーザデータであり、一方、その書込み先の論理アドレスについて旧ユーザデータがなければ、その論理アドレスについて新たに書き込まれるユーザデータである。新パリティは、そのパリティの書込み先の論理アドレスについて既に存在するパリティである旧パリティがあれば、その旧パリティの更新後のパリティであり、一方、その書込み先の論理アドレスについて旧パリティがなければ、その論理アドレスについて新たに書き込まれるパリティである。
 ストレージシステムの性能の低下を軽減できる。
実施例1に係るストレージシステムの構成を示す。 FMPK144の構成を示す。 実施例1に係るストライプ処理の流れを示す。 図3に示されたストライプライト処理のうち、各ステップに対応したデータの処理段階がMP121AによりSMに保存されていることを示す。 データFMPK144Aにおけるデータ格納場所とマッピングテーブル格納場所とを示す。 パリティFMPK144Pにおけるパリティ格納場所とマッピングテーブル格納場所とを示す。 データFMPK144Aの実施例1に係る状態遷移ルール(ストライプライト処理用)を示す。 パリティFMPK144Pの実施例1に係る状態遷移ルール(ストライプライト処理用)を示す。 ホストライト要求処理(A)の流れを示す。 連続書き込み判定処理(A)の流れを示す。 メディア書き込み処理(A)の流れを示す。 データ確定処理(A)の流れを示す。 メディア書き込み処理(B)の流れを示す。 メディア書き込み処理(C)の流れを示す。 パリティ生成前段階のMP障害に応じた実施例1に係る引継ぎライト処理の流れを示す。 MP障害の検出に応答して行われる障害処理の流れを示す。 実施例2に係るストライプライト処理の流れを示す。 図17に示されたストライプライト処理のうち、各ステップに対応したデータの処理段階がMP121AによりSM123に保存されていることを示す。 データFMPK144Aの実施例2に係る状態遷移ルール(ストライプライト処理用)を示す。 パリティFMPK144Pの実施例2に係る状態遷移ルール(ストライプライト処理用)を示す。 ホストライト要求処理(B)の流れの一部を示す。 ホストライト要求処理(B)の流れの残りを示す。 連続書き込み判定処理(B)の流れを示す。 メディア書き込み処理(D)の流れを示す。 パリティ生成前段階のMP障害に応じた実施例2に係る引継ぎライト処理の流れを示す。 パリティ生成前段階のパリティFMPK障害に応じた実施例2に係る引継ぎライト処理の流れを示す。
 以下、本発明の幾つかの実施例を説明する。
 なお、以下の説明では、「***テーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「***テーブル」を「***情報」と呼ぶことができる。
 また、プログラムは、プロセッサ(例えばCPU(Central Processing Unit)やMP(MicroProcessor))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又は通信インタフェースデバイス(例えば通信ポート)を用いながら行うため、以下の説明では、プログラムを実行することにより行われる処理の主語がプロセッサ(実施例ではMPやCPU)とされる。プログラムを主語として説明された処理は、ストレージシステム、ストレージシステムが有するコントローラ、コントローラが有する後述のMPPK、或いは、MPPK内のMP(マイクロプロセッサ)が行う処理としてもよい。また、プロセッサは、プロセッサが行う処理の一部又は全部を行うハードウェア回路を含んでもよい。コンピュータプログラムは、プログラムソースから各計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであってもよい。
 また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号(又は参照符号における共通部分)を使用し、同種の要素を区別して説明する場合は、要素のID(又は要素の参照符号)を使用することがある。
 また、以下の説明では、「ホストシステム」は、1以上の物理的なホスト計算機(例えばホスト計算機のクラスタ)であってもよいし、少なくとも1つの仮想的なホスト計算機(例えばVM(Virtual Machine))を含んでもよい。
 また、以下の説明では、「ストレージシステム」は、1以上の物理的なストレージ装置であってもよいし、少なくとも1つの仮想的なストレージ装置(例えばLPAR(Logical Partition)又はSDS(Software Defined Storage))を含んでもよい。
 また、ストレージシステムとして、データの二重化、保証コードの生成及び保証コードの比較のうちの少なくとも1つを行う特定のハードウェア(HW)(例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field-Programmable Gate Array))を有するストレージシステムであるHWストレージシステムと、そのような特定のHWを有しないストレージシステムであるHWレスストレージシステムとがある。HWレスストレージシステムでは、ストレージコントローラ内のMPが、データの二重化、保証コードの生成及び保証コードの比較を行う。このため、HWレスストレージシステムでは、HWストレージシステムに比べて、MPが、ストレージ性能のボトルネックになりがちである。また、HWレスストレージシステムでは、ストレージコントローラ内のMPが、データの二重化、保証コードの生成及び保証コードの比較を行うため、HWストレージシステムに比べて、キャッシュメモリへのアクセス頻度が高い。このため、HWレスストレージシステムでは、HWストレージシステムに比べて、キャッシュメモリも、ストレージ性能のボトルネックになりがちである。本発明は、HWストレージシステムとHWレスストレージシステムのいずれにも適用可能であるが、以下の実施例に係るストレージシステムは、HWレスストレージシステムである。
 <実施例1に係るストレージシステムの構成>
 以下、実施例1に係るストレージシステムの構成について説明する。
 図1は、実施例1に係るストレージシステムの構成を示す。
 ストレージシステム10は、ストレージコントローラ(以下、コントローラ)100、及びコントローラ100に接続された記憶部200を有する。図では、コントローラ100及び記憶部200は、所定の通信ネットワーク150を介して接続されている。以下の説明では、混同を避けるために、ホスト計算機30からの指示を「要求」と言い、コントローラ100からFMPK144への指示を「コマンド」と言う。ホスト計算機30は、ホストシステムの一例である。
 記憶部200は、複数のFMPK(Flash Memory PacKage)144を有している。FMPK144は、記憶デバイスの一例であり、FM(Flash Memory)を有する。FMPK144は、例えばSSD(Solid State Drive))である。記憶部200は、複数のFMPK144で構成された1又は複数のRAID(Redundant Arrays of Inexpensive(or Independent)Disks)グループ145でよい。本実施例では、コントローラ100により、複数のFMPK144で、1つのRAIDグループ145が形成されているものとする。RAIDグループ145の領域は、複数のストライプに分割されている。複数のストライプの各々は、複数の記憶デバイスにそれぞれ対応した複数の領域(論理アドレス空間の一部である論理アドレス空間部分)である複数のストリップ(記憶領域の一例)で構成されている。RAIDグループのRAIDレベルは、1つのストライプにつき1以上のパリティが必要なRAIDレベル(例えば、RAID5、RAID6)である。本実施例では、RAIDレベルはRAID5である。
 また、本実施例では、1つのRAIDグループ145に含まれる各FMPK144は、異なる複数のバスに接続されているものとする。もし一つのバスに接続された複数のFMPK144からRAIDグループ145を構成した場合、そのバスに障害が発生すると、すべてのFMPK144へアクセスできなくなり、データの回復ができなくなるためである。ただし、同じバスに接続された複数のFMPK144でRAIDグループ145が構成されてもよい。
 コントローラ100には、1つ又は複数のホスト計算機30、及び管理計算機20が接続される。コントローラ100とホスト計算機30とは、所定の通信ネットワーク(例えば、SAN(Storage Area Network))190を介して接続され、コントローラ100と管理計算機20とは所定の通信ネットワーク(例えば、スイッチ、或いはLAN(Local Area Network)を含む)160を介して接続される。
 コントローラ100は、各種のパッケージ(PK)、具体的には、FEPK(Front End PacKage)110、MPPK(Micro Processor PacKage)120、主記憶領域130、及びBEPK(Back End PacKage)140を含む。図に示す例では、各種のパッケージ(PK)は、多重化され、複数であるが、複数種類のPKのうちの少なくとも1種類のPKが、単数であってもよい。FEPK110、MPPK120、主記憶領域130、及びBEPK140は、所定の通信ネットワーク(例えば、スイッチを含む)150を介して接続される。
 FEPK110は、1以上のFE-I/F(Front End Inter/Face)1101を有する。FE-I/F1101は、ホスト計算機30等のフロントエンドに存在する通信装置と通信するためのインタフェースデバイスである。FE-I/F1101は、例えば、ホスト計算機30からのI/O要求(ライト要求又はリード要求)を受信し、受信したI/O要求を、バッファ領域121で一時的に格納することで、MPPK120に通知する。また、MPPK120内のMP121は、例えば、ホスト計算機に対して応答メッセージを送る場合、バッファ領域121にFE-I/F1101への指示内容や、応答メッセージの内容を一時的に格納する実装を取ってもよい。
 BEPK140は、1以上のBE-I/F(Back End Inter/Face)1401を有する。BE-I/F1401は、FMPK144と通信するためのインタフェースデバイスである。BE-I/F1401は、例えば、FMPK144からデータを読み出し、そのデータをバッファ領域121で一時的に格納する。また、MPPK120内のMP121は、例えば、FMPK144に対してデータを転送する場合、バッファ領域121にBE-I/F1401への指示を一時的に格納する実装を取ってもよい。
 MPPK120は、複数(又は1つ)のマイクロプロセッサ(以下、MP)121を有し、FE-I/F1101からのI/O要求を処理する。本実施例のシステム構成においては、MPPK120は、FEPK110、主記憶領域130、BEPK140のそれぞれと内部ネットワークを介して接続されている。このため、MPPK120は、各PK間のデータ転送や、FEPK110とホスト計算機との通信や、BEPK140とFMPK144との通信を制御したり、主記憶領域130へのデータの格納/削除等を制御することができる。
 また、ストレージシステムにMPPK120は複数存在しており、MPPK120間は内部ネットワーク170を介して接続される。一方のMPPK120から他方のMPPK120と接続されたFEPK110、主記憶領域130、BEPK140を制御する場合、直接これらのデバイスを操作してもよいし、他方のMPPK120に対して依頼する形式を取ってもよい。
 主記憶領域130は、バッファ領域121(DXBF(Data Transfer Buffer))、LM(Local Memory)122、SM(Shared Memory)123、CM(Cache Memory)124を有する。主記憶領域130は、例えば揮発性の半導体メモリである。なお、主記憶領域130は不揮発性のメモリであってもよい。
 LM122は、SM(Shared Memory)123が記憶している管理情報のうち必要部分を記憶したり、MP121で実行されるコンピュータプログラムを記憶する。
 CM124には、記憶媒体に対するI/O対象のデータが一時的に記憶される記憶領域がある。SM123には、種々の管理情報(ストレージシステムの動作に使用される情報)及びコンピュータプログラムが記憶される記憶領域がある。また、CM124は、MPPK120がパリティ演算を行う場合、演算に用いるデータや演算結果のデータを格納する。
 バッファ領域121もCM124もデータが一時的に記憶される領域であるが、次の点で異なる。すなわち、バッファ領域121からデータが読み出された場合、そのデータはバッファ領域121から消去される。つまり、バッファ領域121から読み出されたデータはバッファ領域121に残らない。それに対して、CM124は、あるIO処理が完了しても、基本的に容量が許す限り、データは削除されることなくCM124上に残される。CM124上のデータは、別のIO処理でも再利用される。CM124には、IO処理に伴ってデータが格納されるが、IO処理とは非同期にデータが削除される。例えば、格納されてからの経過時間が長いデータから順に削除されてもよいし、最終アクセス時刻からの経過時間が長いデータから順に削除されてもよい。
 各部のインタフェースの種類としては、FC(Fibre Channel)、SAS(Serial Attached SCSI)及びSATA(Serial ATA)のうちの少なくとも1つがあってよい。
 管理計算機20は、例えば、表示デバイス及び入力デバイスを有する計算機である。管理計算機20は、例えば、管理者からのSVP(SerVice Processor)の操作に従い、ストレージシステムに対して種々の設定を行うことの命令を送信する。SVPは、管理者からの命令に応答して、SM123内の管理情報を更新したりSM123に情報を設定したりする。管理情報は、CM124内のデータを格納する領域を示す領域情報と、ライト処理中の複数の処理段階の一つを示す処理段階情報とを含む。
 図2は、FMPK144の構成を示す。
 FMPK144は、FM1443と、FM1443に接続されたFMコントローラ114とを有する。FMコントローラ114は、ポート1441、I/F11446、論理演算回路1442、メモリ1445、及びそれらに接続されたCPU1444を含む。
 ポート1441に、BEPK140が接続される。I/F11446に、FM1443が接続される。
 論理演算回路1442は、パリティ(又は中間パリティ)を計算する回路(例えば、XOR(exclusive or)演算回路)である。CPU1444あるいは論理演算回路1442は、コントローラ100からのライトコマンドに付随したデータから保証コード(例えば、CRC符号)を生成し、その保証コードと、そのライトコマンドに付随した保証コードと比較して、データ転送中のビット化け等を検出する能力を有してよい。
 FM1443は、追記型の記憶媒体の一例である。ここで言う「追記型の記憶媒体」によれば、その記憶媒体における同一物理領域に対するデータの書き込みは、その物理領域からデータが消去されてからでなければ不可能である。具体的には、論理アドレスに対応付けられた物理アドレスに属する物理領域にデータが格納されている場合、その物理領域からデータが消去されてからでなければ、その物理領域に同一の論理アドレスについて新たにデータを書き込むことはできない。FM1443は、不揮発性の半導体メモリ(典型的にはNAND型のFMチップ)であり、ページ単位でデータの書き込み/読み出しが行われ、またブロック単位でデータの消去が行われる。FM1443には、複数のブロック(物理ブロック)が含まれ、一つのブロックには複数のページ(物理ページ)が含まれる。また、FM1443に格納されているデータを書き換えようとしたとき、そのデータが格納されている物理領域(物理ページ)上に、データを上書くことができない。このため、ある物理ページに格納されたデータへの更新データを受信した場合、別の物理ページに書き込まれる。この際、論理ページアドレスと物理ページアドレスのマッピングも更新される。データの書換えを行うためには、ブロック単位でその物理領域上のデータに対して消去処理(以下、ブロック消去)が実行された後、ブロック消去が実行された物理領域上にデータを書く必要がある。物理ページ(以下、ページ)が割り当てられている論理アドレス(論理領域)がライト先の場合、ライト先論理アドレスに、割当て済のページに代えて新たに空きページが割り当てられ、新たに割り当てられたページにデータが書き込まれる。各論理アドレスについて、最近割り当てられたページに書き込まれているデータ(つまり最新のデータ)は「有効データ」であり、有効データが書き込まれているページは「有効ページ」であり、過去に割り当てられていたページに格納されているデータは「無効データ」であり、無効データが書き込まれているページは「無効ページ」である。また、有効ページでも無効ページでも無く新たにデータを格納可能なページが、「空きページ」である。なお、FM1443は、フラッシュメモリに限定されず、追記型のメモリ(例えば、相変化メモリ)でもよい。また、FM1443に代えて、MRAM(Magnetoresistive Random Access Memory)、ReRAM(Resistive Random Access Memory)又はFeRAM(Ferroelectric Random Access Memory)が採用されてもよい。
 FMコントローラ114は、デバイスコントローラの一例である。FMコントローラ114は、論理記憶空間(例えば、論理アドレス空間)をコントローラ100(上位システムの一例)に提供する。FMコントローラ114は、論理アドレスと物理アドレスの対応関係を管理している。例えば論理アドレスと物理アドレスの対応関係を表すマッピングテーブル(アドレス変換情報の一例)を保持している。マッピングテーブルは、例えば、FMPK144のメモリ1445に記憶される。また、メモリ1445は、コントローラ100からのデータを一時的に格納してもよい。メモリ1445は、例えば、揮発性の半導体メモリである。なお、メモリ1445は不揮発性の半導体メモリであってもよい。FMコントローラ114は、コントローラ100からのI/Oコマンドで指定されている論理アドレスに対応した物理アドレスが属する物理ページを特定し、特定した物理ページに対してI/Oを行う。論理アドレスは、例えば、LBA(Logical Block Address)であり、物理アドレスは、例えば、PBA(Physical Block Address)である。
 次に、複数のFMPK144を用いるRAIDグループについて説明する。
 コントローラ100は、複数のFMPK144から(図1参照)、RAID5のRAIDグループを作成する。コントローラ100は、作成したRAIDグループのアドレス空間から、連続する領域を複数の論理ボリューム(LU:Logical Unit)に割り当てる。
 コントローラ100は、複数のFMPK144上のアドレス空間に亘るストライプを割り当てる。ストライプを構成する複数のストリップ(複数のFMPK144にそれぞれ対応した複数のアドレス空間)は、ユーザデータを格納するストリップと、パリティ(パリティデータ)を格納するストリップとを有する。コントローラ100は、例えば、複数のFMPK144にFMPK番号を割り当て、ストライプ毎に、ユーザデータ及びパリティのFMPK番号をシフトさせる。コントローラ100は、各RAIDグループ、及びLUに関する情報を、LM122に書き込む。
 以下、RAIDグループに割り当てられている複数のFMPK144のうち、ライトコマンドに付随するユーザデータを格納するFMPK144を“データFMPK144A”と呼び、そのユーザデータに基づくパリティを格納するFMPK144を“パリティFMPK144P”と呼ぶ(図3参照)。なお、複数のデータFMPK144Aを区別する場合、“データFMPK114A”と呼ぶ(X=1、2、…)。また、FMPK内の構成要素を指す参照符号には、適宜、FMPKの参照符号の末尾の符号“A”、“A”又は“P”を付することがある。RAID5のようにRAIDレベルによっては、各FMPK144は、ストライプによって、データFMPK144AであったりパリティFMPK144Pであったりする。
 ストレージシステム10は、ホスト計算機30からのライト要求に従ってリードモディファイライト処理を行うことができる。リードモディファイライト処理は、或るストライプのうちの一部のストリップ内のユーザデータだけを更新するライト処理である。
 以下において、ライト要求により指定された論理アドレスが属するストリップ内の更新前のユーザデータを“旧ユーザデータ”、その論理アドレスに対応した更新後のユーザデータを“新ユーザデータ”、旧ユーザデータに基づく更新前のパリティを“旧パリティ”、新ユーザデータに基づく更新後のパリティを“新パリティ”と呼ぶ。以下の説明及び図面において、旧ユーザデータを“oD”、新ユーザデータを“nD”、旧パリティを“oP”、新パリティを“nP”と呼ぶことがある。また、XOR演算子を“+”と記す。つまり、本実施例の説明では、旧ユーザデータ、新ユーザデータ、旧パリティ及び新パリティの各々は、1ストリップ分のデータである。2以上のストリップ分のデータについては、“旧ユーザデータ群”、“新ユーザデータ群”のように呼ぶことにする。なお、“新ユーザデータ”は、そのデータの書込み先論理アドレスにユーザデータが無い場合には、その論理アドレスについて新たに書き込まれるユーザデータを意味する。同様に、“新パリティ”は、そのパリティの書込み先論理アドレスにパリティが無い場合には、その論理アドレスについて新たに書き込まれるパリティを意味する。
 リードモディファイライト処理では、例えば、パリティFMPK144P内の論理演算回路1442が、旧データと新データと旧パリティのXOR演算により新パリティ(nP=nD x oD x oP)を生成する。
 また、ストレージシステム10は、ホスト計算機30からのライト要求に従って送られてきた1ストライプ分の新ユーザデータ群から新パリティを作成するライト処理を行うこともできる。このライト処理を、“ストライプライト処理”と呼ぶ。ストライプライト処理によれば、例えば7D+1Pのストライプを構成する新ユーザデータ群が全て揃っている場合は(言い換えれば、新ユーザデータ群が、7個のストリップ分のデータである場合は)、新ユーザデータnD、nD、...、nDのみから(つまり、旧データ及び旧パリティ無しに)新パリティ(nP=nD x nD x ... x nD)が生成される。
 次に、FMPK144のパリティ演算機能の設定について説明する。
 上述したように、FMPK144が論理演算回路1442を有し、論理演算回路1442が、パリティ演算を行う。コントローラ100のMPPK120が論理演算機能を有し、パリティ演算を行ってもよい。また、パリティFMPK144とコントローラ100の両方が論理演算機能を有している場合、どちらがパリティ演算を行うかについて、ユーザの操作に基づいて設定されてもよい。これにより、ユーザは、FMPK144のXOR機能の使用可否と、論理ボリューム毎のFMPK144のXOR機能の使用可否を設定することができる。
 <実施例1に係るライト処理>
 以下、正常時のライト処理について説明する。ここでは、ストライプライト処理を例に取る。
 この実施例では、コントローラ100からデータFMPK144AへのI/Oコマンドとして、通常ライトコマンド及び通常リードコマンドに加え、新ユーザデータ送信コマンド、及び新ユーザデータ確定コマンドが定義されている。また、コントローラ100からパリティFMPK144PへのI/Oコマンドとして、通常ライトコマンド及び通常リードコマンドに加え、新ユーザデータ送信コマンド(ストライプを構成する全ての新ユーザデータ群を送信するコマンド)、及び新パリティ確定コマンドが定義されている。つまり、本実施例では、ライトコマンドとして、通常ライトコマンドと新ユーザデータ送信コマンドがある。新ユーザデータ送信コマンドは、特殊ライトコマンドの一例である。
 図3は、実施例1に係るストライプライト処理の流れを示す。なお、図3において、nDとoDはそれぞれストライプを構成する1番目の新ユーザデータと1番目の旧ユーザデータとを意味する。また、nD、nD及びnDとnPは、ストライプを構成する新ユーザデータ群と新パリティを意味する。また、図3では、ストライプを構成する新ユーザデータは、nD、...nDの3つであるが、1ストライプにおける新ユーザデータの数は、3未満でも3より多くてもよい。
 図3によると、ホスト計算機30から、1ストライプ分の全ての旧ユーザデータoD、...oDを新ユーザデータnD、...nDへ更新する1以上のライト要求(例えば、いわゆるシーケンシャルライトを実現する1以上のライト要求)をコントローラ100がホスト計算機30から受信した場合、コントローラ100は、以下の(3-1)~(3-8)のフローに沿った処理を実行する。(3-1)~(3-8)の処理のうち並列に実行可能な2以上の処理(例えば(3-4)と(3-5)の処理)は並列に実行されてもよい。1つのライト要求のライト対象が、新ユーザデータnD、nD及びnDであってもよいが、複数のライト要求(例えば、複数のライト先アドレスが連続した複数のライト要求)にそれぞれ対応した複数のライト対象が、それぞれ、新ユーザデータnD、...nDでよい。
 (3-1)コントローラ100において、FEPK110のI/F1101は、ホスト計算機30からの新ユーザデータnD、...nDを、CM124Aに確保された領域へと書き込む。
 (3-2)MP121A(任意のMP121)は、新ユーザデータnD、...nDをCM124Aから読み出し、その新ユーザデータnD、...nDを異なるCM124Bに書き込む。この処理を“新ユーザデータの二重化処理”と呼ぶ。すなわち、この処理によって、新ユーザデータnD、...nDの各々が、CM124A及び124Bにおいて二重化される。この処理において、MP121Aは、ホスト計算機30から送られた新ユーザデータnD、...nDから1以上の保証コードを生成し、生成した1以上の保証コードを、1以上のライト要求に付随されて送られる1以上の保証コードと比較する。
 (3-3)MP121Aは、ホスト計算機30にライト要求に対する応答(正常終了)を送信する。
 (3-4)MP121Aは、新ユーザデータ送信コマンドをデータFMPK144A、...144Aのうちの送信先に送信する。新ユーザデータ送信コマンドには、新ユーザデータnD、...nDのうちの送信対象が付随する。新ユーザデータは、FMコントローラ114により、FM1443に格納される。
 (3-5)MP121Aは、新ユーザデータ送信コマンドをパリティFMPK144Pに送信する。その新ユーザデータ送信コマンドには、新ユーザデータnD、...nDが付随する。新ユーザデータnD、...nDは、FMコントローラ114Pにより、FM1443Pに格納される。新ユーザデータnD、...nDは、新パリティnPの計算用データであり、FM1443Pに代えてFMコントローラ114P内のメモリ1445Pに格納されてよい。
 (3-6)(3-4)(3-5)が並列に1ストリップずつ実行されると、やがて、書込み先が、ストライプの終端ストリップ(例えば論理アドレス等で判断可能)になる。MP121Aは、ストライプを構成する全ての新ユーザデータnD、...nDに対してライトが行われたと判定できた場合は(例えば、ストライプの先頭から終端までデータが書き込まれたと判断できた場合は)、パリティFMPK144Pに対してパリティ生成コマンドを送信する。そのパリティ生成コマンドに応答して、パリティFMPK144Pの論理演算回路1442Pにより、新ユーザデータnD、...nDを用いて新パリティnPが生成される。
 (3-7)MP121Aは、新ユーザデータ確定コマンド(旧ユーザデータoDを破棄する(旧ユーザデータの物理アドレスと論理アドレスとの対応付けを破棄する)コマンド、つまり、新ユーザデータnDを確定するコマンド)をデータFMPK144A、...144Aに送信する。データFMPK144A、...144Aの各々では、その新ユーザデータ確定コマンドに応答して、FMコントローラ114Aが、旧ユーザデータoDを格納した物理ページの物理アドレスのマッピング先の論理アドレスに対し、その物理アドレスに代えて、新ユーザデータnDを格納した物理ページの物理アドレスを有効とする(例えばマッピングする)。
 (3-8)MP121Aは、新パリティ確定コマンド(旧パリティoPと新ユーザデータnD、...nDを破棄する(旧パリティの物理アドレスと新ユーザデータの物理アドレスとの論理アドレスに対する対応付けを破棄する)コマンド、つまり、新パリティnPを確定するコマンド)をパリティFMPK144Pに送信する。パリティFMPK144Pでは、その新パリティ確定コマンドに応答して、FMコントローラ114Pが、旧パリティoP及び新ユーザデータnD、...nDを格納した物理ページの物理アドレスのマッピング先の論理アドレスに対し、その物理アドレスに代えて、新パリティnPを格納した物理ページの物理アドレスを有効とする(例えばマッピングする)。
 図4は、図3に示されたストライプライト処理のうち、各ステップに対応したデータの処理段階がMP121AによりSM123に保存されていることを示す。
 図3が示した処理では、ステップ(3-3)~(3-6)のいずれかでMP121Aに障害が起きた場合、処理段階が、パリティ生成前段階であるため、正常なMP(図示せず)が、パリティFMPK144Pに、CM124上にある新ユーザデータnD、...nDを送信してパリティ生成をやり直させる必要がある。ステップ(3-7)の段階では、データFMPK144A、...144A上に新ユーザデータnD、...nDが、パリティFMPK144P上に新パリティnPがあるため、新ユーザデータ確定コマンドの送信と新パリティ確定コマンドの送信から処理を再開できる。
 図5は、データFMPK144Aにおけるデータ格納場所とマッピングテーブル格納場所とを示す。図6は、パリティFMPK144Pにおけるパリティ格納場所とマッピングテーブル格納場所とを示す。
 FMPK144の以下の動作の説明において、データFMPK144Aにおける旧ユーザデータと、パリティFMPK144Pにおける旧パリティとを、異なる名称で記載する。また、同じく、データFMPK144Aにおける新ユーザデータと、パリティFMPK144Pにおける新パリティとを異なる名称で記載する。これは、説明を簡単にするために名称を分けているものであり、データFMPK144AとパリティFMPK144Pを同じハードウェアで実装する場合は、結果として、これらが同じものとなることはありうる。データFMPK144AとパリティFMPK144Pの違いは、パリティFMPK144Pが、ストライプを構成する全ての新ユーザデータから新パリティnPを生成するために、これら複数の新ユーザデータを新パリティとは別の領域に格納する必要がある点である。追加ユーザデータは、後述する新ユーザデータ送信処理により、コントローラ100からFMPK144へ再度送られてきた新ユーザデータである。
 各FMPK144のメモリ1445には、マッピングテーブルが記憶される。マッピングテーブルは、論理アドレスと物理アドレスの対応関係を示す。以下の説明において、FMPK144において、コントローラ100からFMPK144へのコマンドにより指定されている論理アドレスを対象論理アドレスと呼ぶ。また、メモリ1445内に示されているマッピングテーブルのエントリのうち、対象論理アドレスのエントリを対象エントリと呼ぶ。
 データFMPK144Aの対象エントリ1446Aは、対象論理アドレスと、旧ユーザデータoDを格納した物理ページの物理アドレスと、新ユーザデータnDの格納先とされる物理ページの物理アドレスとを格納する。新ユーザデータnDがFM1443に格納されるタイミングは、新ユーザデータ送信コマンドをFMコントローラが受信したときである。
 一方、パリティFMPK144Pの対象エントリ1446Pは、対象論理アドレスと、旧パリティoPを格納した物理ページの物理アドレスと、新パリティnPの格納先となる物理ページの物理アドレスと、新ユーザデータnD、...nDの格納先とされる物理ページの物理アドレスとを格納する。新パリティnP(及び新ユーザデータnD、...nD)がFM1443に格納されるタイミングは、新ユーザデータ送信コマンドをFMコントローラ114Pが受信したときである。新ユーザデータnD、...nDは、FM1443Pに格納されず、メモリ1445に計算用のデータとして保持されてよい。
 図面及び以下の説明において、論理アドレスを“LA”、旧ユーザデータの物理アドレスを“oUPA”、新ユーザデータの物理アドレスを“nUPA”(nUPA1、...nUPA3等)と呼ぶことがある。パリティFMPK144Pでは、新ユーザデータnD、...nDは、旧パリティあるいは新パリティを生成するために格納されるため、論理アドレスと、ストライプにおける新ユーザデータの識別番号との組合せにより、1つの新ユーザデータを識別することが可能である。なお、識別番号は、nUPAm(m=1、2、…)のうちの“m”である。
 また、旧パリティの物理アドレスを“oPPA”、新ユーザデータの物理アドレスを“nPPA”と呼ぶことがある。また、図面及び以下の説明において、論理アドレスの値を“LBAxxx”、物理アドレスの値を“p0”、“p1”、“p2”...と呼ぶことがある。
 図面において、対象エントリ1446(1446A及び1446P)内の物理アドレスからFM1443(1443A及び1443P)内への矢印は、ポインタを表し、その物理アドレスが矢印の先の物理ページを指すことを表す。
 FMPK144のFMコントローラ114は、コントローラ100から対象論理アドレスに対する通常リードコマンドを受けた場合、マッピングテーブルの対象エントリ1446に基づいて、対象論理アドレスに対応付いている物理アドレスが指す物理ページから旧ユーザデータあるいは旧パリティを読み出す。
 以下の説明において、FMPK144が、データを格納する物理ページの物理アドレスを対象エントリ1446に登録することを、そのデータへの“ポインタ接続”と呼ぶ。また、FMPK144が、対象エントリ1446における物理アドレス(旧ユーザデータあるいは旧パリティの物理アドレスや、新ユーザデータあるいは新パリティの物理アドレス)を、別のデータを格納する物理ページの物理アドレスへ変更することを、そのデータの“ポインタ張替”と呼ぶ。また、FMPK144が、データを格納する物理ページの物理アドレスを対象エントリ1446から削除することを、そのデータの“ポインタ削除”と呼ぶ。これらは、CPU1444がマッピングテーブルの対象エントリ1446を更新することを意味する。以下では、マッピングテーブルのうちの対象エントリを例に取るが、パリティ演算処理やリード/ライト処理は、複数のエントリ(論理アドレス)に対して並列に実行されてもよい。
 図7は、データFMPK144Aの実施例1に係る状態遷移ルール(ストライプライト処理用)を示す。なお、図7(及び、後の図8、図19及び図20)において、“oD”は、旧ユーザデータを意味し、“nD”は、新ユーザデータを意味する。また、“oD”及び“nD”の各々について、“0”は、そのデータが無いことを意味し、“1”は、そのデータが有ることを意味する。
 <状態1+新ユーザデータ送信コマンド>
 図7によると、データFMPK144Aの状態1では、データFMPK144Aにおいて、旧ユーザデータが格納されており、対象エントリ1446Aに、旧ユーザデータの物理アドレスが登録されている。まず、MP121は、対象論理アドレスを指定し新ユーザデータを伴う新ユーザデータ送信コマンドをデータFMPK144Aへ送る。次に、データFMPK144AのFMコントローラは、新ユーザデータをメモリ1445に一時的に格納し、その後FM1443Aの新たな物理ページへその新ユーザデータを書き込む。次に、データFMPK144Aは、新ユーザデータへのポインタ接続を行う(対象エントリ1446Aに、新ユーザデータが格納された物理ページの物理ページを登録する)。次に、データFMPK144Aは、新ユーザデータ送信コマンドに対する正常終了応答を、コントローラ100へ送る。この動作より、データFMPK144Aの状態は、状態1から状態2へ遷移する。この新ユーザデータ送信コマンドにより、旧ユーザデータが無効とされることなく、新ユーザデータの書き込み後も、対象論理アドレスと旧ユーザデータの物理アドレスとの対応関係が維持される。データFMPK144Aが、新ユーザデータ確定コマンドを受信すると、論理アドレスアドレスと旧ユーザデータの物理アドレスとの対応関係が解除される。
 <状態2+新ユーザデータ送信コマンド>
 図7によると、データFMPK144Aの状態2では、データFMPK144Aにおいて、旧ユーザデータ及び新ユーザデータが格納されており、且つ、対象エントリ1446Aにおいて、旧ユーザデータの物理アドレスと新ユーザデータの物理アドレスが登録されている。コントローラ100は、対象論理アドレスを指定し追加ユーザデータを伴う新ユーザデータ送信コマンドをデータFMPK144Aへ送る。次に、データFMPK144Aは、追加ユーザデータをメモリ1445に一時的に格納し、その後、追加ユーザデータを、追加物理ページ(旧ユーザデータの物理ページ及び新ユーザデータの物理ページと異なる物理ページ)へ書き込む。次に、データFMPK144Aは、新ユーザデータから追加ユーザデータへのポインタ張替を行う(対象エントリ1446Aに、新ユーザデータの物理アドレスとして、追加物理ページの物理アドレスを登録する)。次に、データFMPK144Aは、新ユーザデータ送信コマンドに対する正常終了応答を、コントローラ100へ送る。この処理において、データFMPK144Aは、FM内の新ユーザデータを旧ユーザデータとはしない。新パリティ生成前の段階のため、旧ユーザデータとしては、旧パリティを生成した際の旧ユーザデータが維持される。このような処理がされても、状態2は維持される。すなわち、状態1及び状態2のいずれにおいても、データFMPK144AのFMコントローラが新データ送信コマンドを受信した場合、データFMPK144Aの状態は、状態2である。
 <状態1+新ユーザデータ確定コマンド>
 図7によると、状態1においてデータFMPK144Aが新ユーザデータ確定コマンドを受信した場合、データFMPK144Aは、新ユーザデータ確定コマンドに対する正常終了応答をコントローラ100へ送る。つまり、状態1は、すでに新ユーザデータが確定している状態である。この処理は、例えば、新ユーザデータが確定してからSM123内の処理段階情報(データFMPK144Aの現在の処理段階を表す情報)がクリアされる前にシステム障害が発生した場合に、データFMPK144Aの状態を確認するために実行される。
 <状態2+新ユーザデータ確定コマンド>
 図7によると、状態2においてデータFMPK144Aが新ユーザデータ確定コマンドを受信した場合、新ユーザデータが確定し、状態が、状態2から状態1へ遷移する。具体的には、データFMPK144Aは、旧ユーザデータから新ユーザデータへのポインタ張替を行い(旧ユーザデータの物理アドレスを新ユーザデータの物理アドレスに変更し)、且つ、新ユーザデータのポインタ削除を行う(対象エントリ1446Aから新ユーザデータの物理アドレスを削除する)。次に、データFMPK144Aは、新ユーザデータ確定コマンドに対する正常終了応答をコントローラ100へ送る。これ以降、データFMPK144Aが通常リードコマンドを受けた場合、データFMPK144Aは新ユーザデータを応答する。
 このように、状態1及び状態2のいずれにおいても、データFMPK144AのFMコントローラが新ユーザデータ確定コマンドを受信した場合、データFMPK144Aの状態は、状態1である。
 <状態1+通常ライトコマンド>
 図7によると、状態1においてデータFMPK144Aが新ユーザデータを伴う通常ライトコマンドを受信した場合、新ユーザデータをFM1443の物理ページへ書き込む。次に、データFMPK144Aは、旧ユーザデータから新ユーザデータへのポインタ張替を行う(旧ユーザデータの物理アドレスとして、新ユーザデータの物理アドレスを対象エントリに登録する)。次に、データFMPK144Aは、通常ライトコマンドに対する正常終了応答をコントローラ100へ送る。この処理において、状態1は維持される。
 <状態2+通常ライトコマンド>
 図7によると、状態2においてデータFMPK144Aが追加ユーザデータを伴う通常ライトコマンドを受信した場合、追加ユーザデータをFM1443の追加物理ページへ書き込む。次に、データFMPK144Aは、旧ユーザデータのポインタ張替を行う(旧ユーザデータの物理アドレスとして追加物理ページの物理アドレスを対象エントリに登録する)。次に、データFMPK144Aは、新ユーザデータのポインタ削除を行う(対象エントリ1446Aから新ユーザデータの物理アドレスを削除する)。次に、データFMPK144は、通常ライトコマンドに対する正常終了応答をコントローラ100へ送る。この処理において、状態は、状態2から状態1へ遷移する。
 図8は、パリティFMPK144Pの実施例1に係る状態遷移ルール(ストライプライト処理用)を示す。なお、図8(及び、後の図20)において、“oP”は、旧パリティを意味し、“nP”は、新パリティを意味する。また、“oP”及び“nP”の各々について、“0”は、そのパリティが無いことを意味し、“1”は、そのパリティが有ることを意味する。
 <状態1+新ユーザデータ送信コマンド>
 図8によると、パリティFMPK144Pの状態1では、パリティFMPK144Pにおいて、旧パリティが格納されており、対象エントリ1446Pに、旧パリティの物理アドレスが登録されている。まず、MP121は、対象論理アドレスを指定し新ユーザデータとストライプにおける新ユーザデータの識別番号とを伴う新ユーザデータ送信コマンドをパリティFMPK144Pへ送る。次に、パリティFMPK144Pは、新ユーザデータをメモリ1445に一時的に格納し、その後、新ユーザデータをFM1443の新たな物理ページへ書き込む。次に、パリティFMPK144Pは、新ユーザデータへのポインタ接続を行う(新ユーザデータの識別番号で特定される物理アドレス(新ユーザデータの物理アドレス)を対象エントリ1446Pに登録する)。次に、パリティFMPK144Pは、新ユーザデータ送信コマンドに対する正常終了応答をコントローラ100へ送る。この処理より、パリティFMPK144Pの状態は、状態1から状態2へ遷移する。この新ユーザデータ送信コマンドにより、旧パリティが無効とされることなく、新ユーザデータの書き込み後も、論理アドレスと旧パリティの物理アドレスとの対応関係が維持される。パリティFMPK144Pが、ストライプを構成する全ての新ユーザデータが揃った状態でパリティ生成コマンドを受信し、そのパリティ生成コマンドに応答してそれらの全ての新ユーザデータを用いて新パリティを生成してその新パリティを物理ページに格納し、その後に新パリティ確定コマンドを受信すると、論理アドレスと旧パリティの物理アドレスとの対応関係が解除される。
 <状態2+新ユーザデータ送信コマンド>
 図8によると、パリティFMPK144Pの状態2では、パリティFMPK144Pにおいて、旧パリティ及び新ユーザデータが格納されており、且つ、対象エントリ1446Pにおいて、旧パリティの物理アドレス及び新ユーザデータの物理アドレスが登録されている。コントローラ100は、対象論理アドレスを指定し追加ユーザデータとストライプにおける追加ユーザデータの識別番号とを伴う新ユーザデータ送信コマンドをパリティFMPK144Pへ送る。次に、パリティFMPK144Pは、追加ユーザデータをメモリ1445に一時的に格納し、その後、追加ユーザデータを追加物理ページへ書き込む。次に、パリティFMPK144Pは、新ユーザデータから追加ユーザデータへのポインタ張替を行う(新ユーザデータの識別番号で特定される物理アドレス(新ユーザデータの物理アドレス)として追加物理ページの物理アドレスを対象エントリ1446Pに登録す))。これは、指定された対象論理アドレスに対応する新ユーザデータ物理アドレスが既に登録済の場合に、その物理アドレスを更新する処理である。指定された対象論理アドレスに対応する新ユーザデータ物理アドレスが対象エントリに無ければ、状態1のケースと同様に、新ユーザデータへのポインタ接続が行われる。次に、パリティFMPK144Pは、新ユーザデータ送信コマンドに対する正常終了応答をコントローラ100へ送る。この処理において、FMへ格納されている新ユーザデータから旧パリティは生成されない。新パリティ生成前の段階のため、旧パリティが維持される。この処理において、状態2が維持される。すなわち、状態1及び状態2のいずれにおいても、パリティFMPK144PのFMコントローラが新ユーザデータ送信コマンドを受信した場合、パリティFMPK144Pの状態は、状態2である。
 <状態3+新ユーザデータ送信コマンド>
 図8によると、パリティFMPK144Pの状態3では、データFMPK144において、旧パリティ、新ユーザデータ及び新パリティが格納されており、且つ、対象エントリ1446Pにおいて、旧パリティの物理アドレス、新ユーザデータの物理アドレス、及び、新パリティの物理アドレスが登録されている。まず、コントローラ100は、対象論理アドレスを指定し追加ユーザデータとストライプにおける追加ユーザデータの識別番号とを伴う新ユーザデータ送信コマンドをパリティFMPK144へ送る。次に、パリティFMPK144Pは、追加ユーザデータをメモリ1445に一時的に格納し、その後、追加ユーザデータを追加物理ページへ書き込む。次に、パリティFMPK144Pは、新ユーザデータから追加ユーザデータへのポインタ張替を行う(新ユーザデータの識別番号で特定される新ユーザデータ物理アドレスとして追加物理ページの物理アドレスを対象エントリ1446Pに登録する)。次に、パリティFMPK144Pは、新パリティのポインタ削除を行う(対象エントリ1446Pから新パリティの物理アドレスを削除する)。次に、パリティFMPK144Pは、新ユーザデータ送信コマンドに対する正常終了応答をコントローラ100へ送る。この処理において、FMへ格納されている新ユーザデータから旧パリティは生成されない。この処理において、パリティFMPK144Pの状態は、状態3から状態2に遷移する。つまり、状態1及び状態3のいずれにおいても、パリティFMPK144PのFMコントローラが新データ送信コマンドを受信した場合、パリティFMPK144Pの状態は状態2である。
 <状態1+パリティ生成コマンド>
 図8によると、状態1においてパリティFMPK144Pがパリティ生成コマンドを受信した場合、パリティFMPK144Pは、対象エントリ1446Pから、新ユーザデータが存在しないこと、及び、新パリティを生成できないことを認識する。次に、パリティFMPK144は、パリティ生成コマンドに対する異常終了応答をコントローラ100へ送る。この処理の前後で、パリティFMPK144Pの状態は遷移せず、状態1は維持される。
 <状態2+パリティ生成コマンド>
 図8によると、状態2においてパリティFMPK144Pがパリティ生成コマンドを受信した場合、パリティFMPK144は、対象エントリ1446Pの新ユーザデータ物理アドレスを参照し、ストライプを構成する全ての新ユーザデータが存在するかどうかを判定する。全ての新ユーザデータが存在する場合、パリティFMPK144Pは、これらの新ユーザデータ物理アドレスが指す物理ページから新ユーザデータを読み出し、論理演算回路1442により新パリティを生成し、新パリティを物理ページへ書き込む。次に、パリティFMPK144Pは、新パリティへのポインタ接続をする(新パリティ物理アドレスとして新パリティ格納先の物理ページの物理アドレスを登録する)。次に、パリティFMPK144Pは、パリティ生成コマンドに対する正常終了応答をコントローラ100へ送る。状態2において正常にパリティを生成することができた場合、パリティFMPK144Pの状態は、状態2から状態3に遷移する。異常終了した場合、状態2が維持される。また、ストライプを構成する全ての新ユーザデータが存在しない場合、パリティFMPK144Pは、新パリティを生成できないため、パリティ生成コマンドに対する異常終了応答をコントローラ100へ送る。
 <状態3+パリティ生成コマンド>
 図8によると、状態3においてパリティFMPK144Pがパリティ生成コマンドを受信した場合、パリティFMPK144は、対象エントリ1446Pの新ユーザデータ物理アドレスを参照し、ストライプを構成する全ての新ユーザデータが存在するかどうかを判定する。全ての新ユーザデータが存在する場合、パリティFMPK144Pは、これらの新ユーザデータ物理アドレスが指す物理ページから新ユーザデータを読み出し、論理演算回路1442により新パリティを生成し、新パリティを物理ページへ書き込む。次に、パリティFMPK144Pは、新パリティへのポインタ接続をする(新パリティ物理アドレスとして、新パリティの格納先物理ページのアドレスを対象エントリ1446Pに登録する)。次に、パリティFMPK144Pは、パリティ生成コマンドに対する正常終了応答をコントローラ100へ送る。状態3において正常にパリティを生成することができた場合、状態3が維持される。パリティを構成する全ての新ユーザデータが存在しない場合、パリティFMPK144Pは、新パリティを生成できないため、パリティ生成コマンドに対する異常終了応答をコントローラ100へ送る。
 <状態1+新パリティ確定コマンド>
 図8によると、状態1においてパリティFMPK144Pが新パリティ確定コマンドを受信した場合、パリティFMPK144は、新パリティ確定コマンドに対する正常終了応答をコントローラ100へ送る。つまり、状態1は、すでに新パリティが確定している状態のため、正常な状態と認識される。この処理は、新パリティが確定してからSM123内の上述の状態情報がクリアされる前にシステム障害が発生した場合に、パリティFMPK144Pの状態を確認するために実行される。
 <状態2+新パリティ確定コマンド>
 図8によると、状態2においてパリティFMPK144Pが新パリティ確定コマンドを受信した場合、パリティFMPK144は、新パリティ確定コマンドに対する正常終了応答をコントローラ100へ送る。つまり、すでに新パリティが確定している状態のため、正常な状態と認識される。この処理は、新パリティが確定してからSM123内の上述の状態情報がクリアされる前にシステム障害が発生した場合に、パリティFMPK144Pの状態を確認するために実行される。
 <状態3+新パリティ確定コマンド>
 図8によると、状態3においてパリティFMPK144Pが新パリティ確定コマンドを受信した場合、パリティFMPK144は、旧パリティから新パリティへのポインタ張替を行う(旧パリティの物理アドレスとして新パリティの物理アドレスを対象エントリ1446Pに登録する)。次に、パリティFMPK144Pは、新パリティのポインタ削除を行う(対象エントリ1446Pから新パリティの物理アドレスを削除する)。次に、パリティFMPK144Pは、新ユーザデータのポインタ削除を行う(対象エントリ1446Pから新ユーザデータの物理アドレスを削除する)。次に、FMPK144は、新パリティ確定コマンドに対する正常終了応答をコントローラ100へ送る。これ以降、パリティFMPK144PのFMコントローラが通常リードコマンドを受けた場合、旧パリティを応答する。
 <状態1+通常ライトコマンド>
 図8によると、状態1においてパリティFMPK144Pが対象論理アドレスを指定し新パリティを伴う通常ライトコマンドを受信した場合、パリティFMPK144Pは、新パリティを物理ページへ書き込む。次に、パリティFMPK144Pは、旧パリティから新パリティへのポインタ張替を行う(旧パリティの物理アドレスとして新パリティの物理アドレスを対象エントリ1446Pに登録する)。次に、パリティFMPK144Pは、通常ライトコマンドに対する正常終了応答をコントローラ100へ送る。この処理において、状態1が維持される。
 <状態2+通常ライトコマンド>
 図8によると、状態2においてパリティFMPK144Pが対象論理アドレスを指定し新パリティを伴う通常ライトコマンドを受信した場合、パリティFMPK144Pは、新パリティを物理ページへ書き込む。次に、旧パリティから新パリティへのポインタ張替を行う(旧パリティの物理アドレスとして新パリティの物理アドレスを対象エントリ1446Pに登録する)。次に、パリティFMPK144Pは、通常ライトコマンドに対する正常終了応答をコントローラ100へ送る。この処理において、状態2が維持される。
 <状態3+通常ライトコマンド>
 図8によると、状態3においてパリティFMPK144Pが対象論理アドレスを指定し追加パリティを伴う通常ライトコマンドを受信した場合、パリティFMPK144Pは、追加パリティを追加物理ページへ書き込む。次に、パリティFMPK144は、旧パリティのポインタ張替を行う(旧パリティの物理アドレスとして追加物理ページの物理アドレスを対象エントリ1446Pに登録する)。次に、パリティFMPK144Pは、新パリティのポインタ削除を行う(対象エントリ1446Pから新パリティの物理アドレスを削除する)。次に、パリティFMPK144Pは、通常ライトコマンドに対する正常終了応答をコントローラ100へ送る。この処理において、パリティFMPK144Pの状態は、状態3から状態2へ遷移する。
 図9は、ホストライト要求処理(A)の流れを示す。この処理は、ライト要求(典型的には、旧ユーザデータを新ユーザデータへ更新するライト要求)をMP121がホスト計算機30から受信した場合に開始される。
 MP121は、2つのCM124(124A及び124B)に、新ユーザデータを書き込むための領域を確保する(S2001)。このとき、新ユーザデータを書き込むための領域は、コントローラ100内の異なるMP121にそれぞれ接続されたCM124から1つずつ確保する。このように制御することで、ホストライト要求処理(A)が正常に完了してからCM124に書き込まれた新ユーザデータがFMPK144に書き込まれるまでに、一方のMPPK120やそれに接続されたCM124に障害が起きたとしても、他方のMPPK120が処理を引き継いで新ユーザデータをFMPK144に書き込むことができる。
 次に、MP121は、ホスト計算機30へ書き込み準備完了を送信する(S2002)。
 次に、FEPK110のI/F1101は、ホスト計算機30からの新ユーザデータを、CM124上の一方の確保領域(新ユーザデータをそれぞれ書き込むための2つの確保された領域のうちの一方)へと書き込む。
 データ二重化後、FEPK110のI/F1101から、ホストへ書き込み完了(GOOD応答と呼ばれる)が通知される(S2003)。
 次に、MP121は、ホスト計算機30から書き込まれた新ユーザデータを一方の確保領域(CM124における領域)から読み出して、その新ユーザデータを他方の確保領域(CM124における別の領域)に書き込む(S2004)。この処理は、上述した“新ユーザデータの二重化処理”である。この新ユーザデータの二重化処理は、MPPK120がDMA(Direct Memory Access)機能を有する場合、MP121の指示に応じてMPPK120のDMA機能が行ってもよい。また、このとき、MP121は、書き込まれた新ユーザデータから保証コードを算出し、その保証コードを、ライト要求に付随する保証コードと比較してもよい。MP121は、転送中のデータ欠損を検出した場合は、ホスト計算機30に対して異常応答を返してホストライト要求処理(A)を終了してよい。
 次に、MP121は、これら2つのCM124に対応する2つのSM123内の領域情報に、2つの確保領域(2つのCM124における2つの新ユーザデータ格納領域)を示す値(キャッシュアドレス)をそれぞれ書き込む(S2005)。領域情報は、キャッシュアドレスを含む情報である。
 次に、MP121は、これら2つのCM124に対応する2つのSM123内の処理段階情報に、パリティ生成前段階を示す値をそれぞれ書き込む(S2006)。
 次に、MP121は、このパリティ生成前段階を意味する情報をSM123内のパリティ生成前キューへ登録する(S2007)。後述する連続書き込み判定処理(A)において後述のメディア書き込み処理(C)を行う場合、MP121は、パリティ生成前キューにある情報を参照せずに、SM123内のキャッシュアドレス(新ユーザデータのCM124上のアドレス)を参照して、パリティ生成を行うことになる。このため、S2007においてパリティ生成前キューへの登録は不要に思えるが、例えば、MPPK120に障害が起きた場合に処理を引き継いだ他のMPPK120が、メディア書き込み処理(B)によってパリティ生成前キューを参照し、新ユーザデータをFMPK144にライトすることを期待するからである。
 次に、MP121は、ホスト計算機30へライト要求に対する正常終了を送信する(S2008)。
 S2008の後、連続書き込み判定処理が実行される。連続書き込み判定処理は、N回(Nは自然数)のホストライト要求処理(A)が行われる都度に実行される。
 新ユーザデータのホストライト要求処理(A)毎に、SM123上の領域情報及びと処理段階情報が更新される。MP121に障害が発生した場合に、他のMP121は処理段階情報を参照することで、ホストライト要求処理(A)を引き継ぐことが可能となる。
 図10は、連続書き込み判定処理(A)の流れを示す。
 MP121は、今回の連続書き込み判定処理(A)に関わるライト要求で指定されたアドレスと、今回の連続書き込み判定処理(A)までにホスト計算機30から受けたライト要求で指定されたアドレスとを基に、ホスト計算機30からの複数の新ユーザデータの複数のライト先アドレスは論理ボリューム上の連続したアドレスであり、かつ、CM124に格納されている新ユーザデータは、ストライプを構成する新ユーザデータ群のうち、終端に位置するものかどうかを判定する(S2021)。
 S2021の判定結果が真の場合(S2021:Yes)、MP121は、ライト先の連続したアドレスを明示したメディア指示(A)(メディア書き込み処理(A)の指示)を、そのMP121が属するMPPK120内の任意のMP121に対して送信する(S2022)。S2021の判定結果が偽の場合(S2021:No)、連続書き込み処理(A)が終了し、それに伴い、ホストライト要求処理(A)も終了する。
 図11は、メディア書き込み処理(A)の流れを示す。
 メディア指示(A)を受信したMP121は、その指示で明示されている連続したアドレスに基づき、SM123内の領域情報を参照して、連続したアドレスに対応したストライプを構成する新ユーザデータがCM124に全て揃っているか(つまり、ストライプを構成する新ユーザデータがCM124に存在するか)どうかを判定する(S2101)。S2101の判定結果が偽の場合(S2101:No)、処理が終了する。
 S2101の判定結果が真の場合(S2101:Yes)、MP121は、BEPK140のI/F1401に対して、複数のデータFMPK144Aに新ユーザデータ群を書き込むための複数の新ユーザデータ送信コマンドを、それぞれ、複数のデータFMPK144Aへ送る(S2102)。各新ユーザデータ送信コマンドでは、新ユーザデータの格納先として、旧ユーザデータの論理アドレスが指定される。
 1つのデータFMPK144Aを例に取る。データFMPK144Aにおいて、CPU1444は、ポート1441を介して新ユーザデータ送信コマンド及び新ユーザデータを受け、その新ユーザデータをFM1443内の物理ページに書き込み、コントローラ100へ正常終了を応答する。ここで、CPU1444は、旧ユーザデータの物理アドレスが対応付けられている対象論理アドレス(新ユーザデータ送信コマンドで指定された論理アドレス)に対して、新ユーザデータの物理アドレスを対応付ける。新ユーザデータは、少なくとも新ユーザデータ確定コマンドをデータFMPK144Aが受信しそのコマンドの処理が完了されるまで、データFMPK144Aにおいて保持される。
 MP121は、新ユーザデータ送信コマンドの送信先の全てのデータFMPK144Aの各々から新ユーザデータ送信コマンドの正常終了を受信すると(S2103)、BEPK140のI/F1401に対して、パリティFMPK144Pに新ユーザデータ群を書き込むための新ユーザデータ送信コマンドを、パリティFMPK144Pへ送る(S2104)。この新ユーザデータ送信コマンドでは、旧パリティの論理アドレスとストライプを構成する新ユーザデータ群の各々の識別番号とが指定される。
 パリティFMPK144Pにおいて、CPU1444は、ポート1441を介して新データ送信コマンド及び新ユーザデータ群を受け、受信した新ユーザデータ群をFM1443を書き込み、コントローラ100へ正常終了を応答する。ここで、CPU1444は、旧パリティの物理アドレスが対応付けられている対象論理アドレス(新ユーザデータ送信コマンドで指定された論理アドレス)に対して、新パリティの物理アドレスと新ユーザデータ群の各々の物理アドレスとを対応付ける。新ユーザデータ群及び新パリティは、少なくとも新パリティ確定コマンドをパリティFMPK144Pが受信しそのコマンドの処理が完了されるまで保持される。
 MP121は、パリティFMPK144Pから新ユーザデータ送信コマンドの正常終了を受信すると(S2105)、ストライプを構成する全ての新ユーザデータから新パリティを生成させて書き込むためのパリティ生成コマンドを、パリティFMPK144Pへ送る(S2106)。このパリティ生成コマンドでは、旧パリティの論理アドレスが指定される。
 パリティFMPK144Pにおいて、CPU1444は、ポート1441を介してパリティ生成コマンドを受け、指定された論理アドレスに対応する新ユーザデータ群を読み出し、論理演算回路1442Pへ送る。論理演算回路1442Pは、旧パリティ及び新ユーザデータ群から新パリティを算出する。CPU1444は、算出された新パリティをFM1443に書き込み、コントローラ100へ正常終了を応答する。
 MP121は、パリティFMPK144Pからパリティ生成コマンドの正常終了を受信すると(S2107)、上述の2つのSM123内の処理段階情報にパリティ生成後段階を示す値をそれぞれ書き込む(S2108)。このとき、MP121は、生成したパリティのストライプを構成する全ての新ユーザデータに対応するパリティ生成前段階情報をSM123内のパリティ生成前キューから取り除き、同じくパリティ生成後段階情報をSM123内のパリティ生成後キューへ登録する。このように、SM123には、パリティ生成前キューとパリティ生成後キューが存在する。
 S2108の後、データ確定処理(A)が開始される。
 図12は、データ確定処理(A)の流れを示す。
 MP121は、新ユーザデータ確定コマンドを各データFMPK144A(新ユーザデータ群のうちのいずれかの新ユーザデータを格納したデータFMPK144A)へ送る(S2110)。この新ユーザデータ確定コマンドでは、旧ユーザデータの論理アドレスが指定される。
 1つのデータFMPK144Aを例に取る。データFMPK144Aにおいて、CPU1444は、ポート1441を介して新ユーザデータ確定コマンドを受け、新ユーザデータを更新後のユーザデータとして確定し、コントローラ100へ正常終了を応答する。これにより、コントローラ100から通常ライトコマンド及び通常リードコマンドによる新ユーザデータへのアクセスが可能になる。
 MP121は、新ユーザデータ確定コマンドの送信先の全てのデータFMPK144Aの各々から新ユーザデータ確定コマンドの正常終了を受信すると(S2111)、新パリティ確定コマンドをパリティFMPK144Pへ送る(S2112)。この新パリティ確定コマンドでは、旧パリティを格納している論理アドレスが指定される。これにより、コントローラ100から通常ライトコマンド及び通常リードコマンドによる新パリティへのアクセスが可能になる。データFMPK144Aへの新ユーザデータ確定コマンドの送信と、パリティFMPK144Pへの新パリティ確定コマンドの送信の順序は逆でもよいしそれらが並列に実行されてもよい。
 パリティFMPK144Pにおいて、CPU1444は、ポート1441を介して新パリティ確定コマンドを受け、新パリティを更新後のパリティとして確定し、コントローラ100へ正常終了を応答する。
 MP121は、パリティFMPK144Pから新パリティ確定コマンドの正常終了を受信すると(S2113)、2つのSM123の領域(処理段階情報を格納した領域)をクリアする(S2114)。また、このとき、MP121は、新パリティ確定コマンドで指定された論理アドレスに対応したストライプを構成する全ての新ユーザデータに対応するパリティ生成後段階情報をSM123内のパリティ生成後キューから取り除く。
 以上が、連続書き込み判定の結果に従うメディア書き込み処理(A)である。
 このように処理することで、ストライプライト処理のパリティ生成に関わる処理を、パリティFMPK144Pにオフロードすることが可能となる。
 このストライプライト処理において、ホスト計算機30からの新ユーザデータ群は、CM124に書き込まれる(1回(ライト))。新ユーザデータ群の二重化のために、新ユーザデータ群はCM124にコピーされる(2回(リード且つライト))。新ユーザデータ群は、一方のCM124から保証コードの比較のために読み出される(1回(リード))。CM124からそれぞれデータFMPK144AとパリティFMPK144Pへ新ユーザデータ群が送られる(2回(リード且つリード))。これにより、一回のストライプライト処理におけるCMアクセス回数(CM124へのアクセスの回数)は、1つの新ユーザデータ群について合計6回で済む。つまり、CMアクセス回数を低減することができる。このように、FMPK144がパリティの算出を実行することによりMP121及びCM124の負荷は低減され、ストレージシステムのシーケンシャルライト処理性能が向上する。
 なお、一比較例に係るストライプライト処理(RAID5(3D+1P))でのCMアクセス回数は、次の通り、1つの新ユーザデータ群について合計約7.66回と、本実施例よりも多い。すなわち、一比較例によれば、ホスト計算機からの新ユーザデータ群(3つの新ユーザデータ)は、CM上の領域に書き込まれる(1回(ライト))。新ユーザデータ群の二重化のために、新ユーザデータ群はCMにコピーされる(2回(リード且つライト))。新ユーザデータ群は、一方のCMから保証コードの比較のために読み出される(1回(リード))。更に、新パリティ算出のためにCMから新ユーザデータ群が読み出される(1回(リード))。算出された新パリティがCMへ書き込まれる(1/3回(3つの新ユーザデータに対する1つのパリティのライト))。新パリティの二重化のために、新パリティがCMにコピーされる(2/3回(新パリティのリード且つライト))。新パリティの保証コードの比較のために新パリティがCMから読み出される(1/3回(新パリティのリード))。新ユーザデータ群がCMからデータFMPK144Aへ書き込まれる(1回(リード))。CM121から新パリティがパリティFMPK144Pへ書き込まれる(1/3回(新パリティのリード))。結果として、一比較例に係るストライプライト処理では、CMアクセス回数は、1つの新ユーザデータ群について合計約7.66回になる。
 また、この実施例によれば、処理段階情報を、異なるSM123に格納することにより、ストレージシステム10の信頼性を高めることができる。
 なお、新ユーザデータが格納されるCM124と、その新ユーザデータに対応する処理段階情報が格納されるSM123とは、互いに異なるパッケージ内に設けられていてもよい。また、FMPK144内のマッピングテーブルは、メモリ1445に格納されるとしたが、メモリ1445に代えて又は加えてFM1443に格納されてもよい。
 図13は、メディア書き込み処理(B)の流れを示す。
 メディア書き込み処理(B)はホストライト要求処理とは非同期に実行される。例えば、メディア書き込み処理(B)は、一定の周期で開始されてよい。
 MP121は、パリティ生成前キューに情報の登録があることを検出すると(S2201)、CM124に旧ユーザデータ1つと旧パリティ1つと新パリティ2つとを書き込むための4つの領域をCM124から確保する(S2202)。特に、新パリティ2つの書込み先となる2つの領域は、CM124の障害時に新パリティが失われても処理を継続するために、異なる主記憶領域130上に存在していてもよい。次に、MP121は、旧ユーザデータを取得するための通常リードコマンドを、データFMPK144Aへ送る(S2203)。この通常リードコマンドでは、旧ユーザデータの論理アドレスが指定される。
 データFMPK144Aにおいて、CPU1444は、ポート1441を介して通常リードコマンドを受け、旧ユーザデータを読み出し、ポート1441を介して、コントローラ100へ正常終了を応答し、BEPK140を介してCM124へ旧ユーザデータを送る。
 次に、MP121は、データFMPK144Aから旧ユーザデータの通常リードコマンドの正常終了を受信すると(S2204)、旧パリティを取得するための通常リードコマンドを、パリティFMPK144Pへ送る(S2205)。
 パリティFMPK144Pにおいて、CPU1444は、ポート1441を介して通常リードコマンドを受け、旧パリティを読み出し、ポート1441を介して、コントローラ100へ正常終了を応答し、BEPK140を介してCM124へ旧パリティを送る。
 MP121は、パリティFMPK144Pから旧パリティのリードコマンドの正常終了を受信すると(S2206)、パリティを生成するための計算領域をLM122から確保する(S2207)。MP121は、CM124から旧ユーザデータと旧パリティと新ユーザデータとを読み出し、確保した計算領域を使用しXOR演算によってパリティを算出する(S2208)。MP121は、生成したパリティを一つのCM124の領域に書き込む。MP121は、CM124からパリティを読み出し、そのパリティをもう一つのCM124の領域に書き込む(S2209)。これは、MP121に代えてMPPK120のDMA機能により行われてもよい。また、このとき、MP121は、パリティを生成するために確保した計算領域をLM122から解放する。
 次に、MP121は、生成したパリティに対応したストライプを構成する全ての新ユーザデータに対応するパリティ生成前段階情報をSM123内のパリティ生成前キューから取り除き、同じくパリティ生成後段階情報をSM123内のパリティ生成後キューへ登録する(S2210)。これは、処理段階情報の更新の一例である。MP121は、SM132内の処理段階情報への書き込みが完了すると、メディア書き込み処理(C)を実施する。
 図14は、メディア書き込み処理(C)の流れを示す。
 本実施例では、メディア書き込み処理(C)はメディア書き込み処理(B)に続けて実施されるが、それに代えて、メディア書き込み処理(B)及びメディア書き込み処理(C)は異なるタイミングで実施されてもよい。メディア書き込み処理(B)は、パリティ生成前キューに情報(エントリ)があることが検出された場合に実施されるが、メディア書き込み処理(C)は、パリティ生成後キューに情報(エントリ)があることが検出された場合に実施されるためである。
 MP121は、CM124内の新ユーザデータをデータFMPK144Aに格納するための通常ライトコマンドを、データFMPK144Aへ送る(S2222)。
 次に、MP121は、データFMPK144Aから新ユーザデータの通常ライトコマンドの正常終了を受信すると(S2223)、CM124内の新パリティをパリティFMPK144Pに格納するための通常ライトコマンドを、パリティFMPK144Pへ送る(S2224)。
 次に、MP121は、パリティFMPK144Pから新パリティの通常ライトコマンドの正常終了を受信すると(S2225)、処理段階情報を格納する領域(2つのSM132の領域)をクリアする(S2226)。このとき、MP121は、パリティFMPK144Pにライトした新パリティに対応したストライプを構成する全ての新ユーザーデータに対応するパリティ生成後段階情報をSM123内のパリティ生成後キューから取り除く。
 メディア書き込み処理(C)の終了を受けて、メディア書き込み処理(B)が終了する。
 以上が、パリティ生成前キューに登録された情報に対応した新ユーザデータから新パリティを作成してデータFMPK144AとパリティFMPK144Pに新ユーザデータ及び新パリティをライトするためのリードモディファイライト処理である。
 <実施例1に係る引継ぎライト処理>
 以下、MP障害に応じた引継ぎライト処理について説明する。以下の説明では、障害の発生したMPを「異常MP」、異常MPを有するMPPKを「異常MPPK」、障害のないMPを「正常MP」、正常MPを有するMPPKを「正常MPPK」と呼ぶ。
 図15は、パリティ生成前段階のMP障害に応じた実施例1に係る引継ぎライト処理の流れを示す。図16は、MP障害の検出に応答して行われる障害処理の流れを示す。
 図15によると、引継ぎライト処理は、ライト処理中のMP121Aに障害が発生した場合に行われる処理である。この場合、いずれかの正常なMP121Bは、このライト処理を引き継ぐ引継ぎライト処理を行う。ライト処理中、二つのSM123に処理段階情報を格納することにより、正常MP121Bは、処理段階情報を認識し、処理段階情報に応じた適切な引継ぎライト処理を行うことができる。処理段階情報は二重化してSM123に格納される。また、MP障害発生時のデータロストを回避するために、以下の引継ぎライト処理が実行される。
 引継ぎライト処理を説明する。正常MPPK(図示せず)の正常MP121Bは、他のMPPK(図示せず)内のMP121Aに障害が発生したことを検出し、SM123をサーチし(S3001)、見つかった処理段階情報からパリティ生成前段階を検出したか否かを判定する(S3002)。
 S3002の判定結果が真の場合(S3002:Yes)、正常MP121Bは、SM123内の領域情報に基づいて、メディア書き込み処理(A)を指示する(S3003)。これは、図15における(15-4)以降の処理を行うことを意味する。このメディア書き込み処理(A)は、当該正常MP121が行ってもよいし(つまり指示は内部的に発行されてもよいし)、他の正常MPPK120内の他の正常MP121が行ってもよい。
 一方、S3002の判定結果が偽の場合(S3002:No)、正常MP121Bは、見つかった処理段階情報からパリティ生成後段階を検出したか否かを判定する(S3004)。S3004の判定結果が偽の場合(S3004:No)、処理が終了する。
 S3004の判定結果が真の場合(S3004:Yes)、正常MP121Bは、SM123内の領域情報に基づいて、データ確定処理(A)を指示する(S3005)。これは、図15における(15-7)以降の処理が行われることを意味する。データ確定処理(A)は、当該正常MP121が行ってもよいし、他の正常MPPK120内の他の正常MP121が行ってもよい。
 以上の障害処理によって、メディア書き込み処理(A)の途中でその処理を実行するMP121Aに障害が発生した場合でも、正常MP121Bがその異常MP121Aの処理を引き継いで実施することができる。図16で示した障害処理が未実施の場合でも、SM123の2つの領域にパリティ生成前キューとパリティ生成後キューが存在しており、周期的にこれらの情報を監視しているメディア書き込み処理(B)やメディア書き込み処理(3)があるため、処理段階に応じた引継ぎ(再開)が可能である。SMに処理段階を記録することで、MP121Aに障害が発生しても、他の正常MP121Bは処理を引き継ぐことができる。MP障害時の処理段階情報がパリティ生成後段階を示す場合、正常MP121BがデータFMPK144Aの新ユーザデータを確定させる段階から、ライト処理を引き継ぐことができる。
 実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略又は簡略する。
 <実施例2に係るライト処理>
 正常時のライト処理について説明する。ストライプライト処理を例に取る。
 実施例2では、コントローラは、ホスト計算機30からのライト要求と共に送られてきたライトデータに従う新ユーザデータ及びパリティをCM124経由でデータFMPK144A及びパリティFMPK144Pに書き込んだ後にホスト計算機に対してライト要求の正常応答を返す。
 図17は、実施例2に係るストライプライト処理の流れを示す。
 図17によると、ホスト計算機30から、1ストライプ分の全ての旧ユーザデータoD、...oDを新ユーザデータnD、...nDへ更新する1以上のライト要求をコントローラ100が受信した場合、コントローラ100は、以下の(17-1)~(17-7)のフローに沿った処理を実行する。
 (17-1)コントローラ100において、FEPK110のI/F1101は、ホスト計算機30からの新ユーザデータを、CM124Aに確保された領域へ書き込む。
 (17-2)MP121Aは、新ユーザデータnD、...nDをそれぞれデータFMPK144A、...144Aに送信する。各新ユーザデータは、新ユーザデータ送信コマンドに付随する。ストライプライン処理のためである。もし、ライト処理が、リードモディファイライト処理であれば、新ユーザデータは、通常ライトコマンドに付随する(実施例1でも同様)。
 (17-3)MP121Aは、新ユーザデータnD、...nDをパリティFMPK144Pに送信する。新ユーザデータnD、...nDは、新ユーザデータ送信コマンドに付随する。ストライプライン処理のためである(実施例1でも同様)
 この時点では、データFMPK144A及びパリティFMPK144P共に、データ確定処理は行われない。すなわち、実施例1では、二重化されたデータの両方がそれぞれ2つのCM領域(典型的には2つの異なるCM124)に存在するが、実施例2では、二重化されたデータの一方はCMに他方はFMPK144(データFMPK144A又はパリティFMPK144P)に存在する。このとき、データFMPK144A及びパリティFMPK144Pの各々において、受信した新ユーザデータから保証コードが生成され、その保証コードが、コマンドに付随されて送られる保証コードと比較される。そのコマンドは、ストライプライト処理においては新ユーザデータ送信コマンドであり、リードモディファイライト処理においては通常ライトコマンドである。
 (17-4)MP121Aは、ホスト計算機30にライト要求に対する応答(正常終了)を送信する。
 (17-5)MP121Aは、ストライプを構成する全ての新ユーザデータnD、...nDに対してライトが行われたと判定できた場合は、パリティFMPK144Pに対してパリティ生成コマンドを送信する。
 (17-6)MP121Aは、新ユーザデータ確定コマンドをデータFMPK144A、...144Aに送信する。
 (17-7)MP121Aは、新パリティ確定コマンドをパリティFMPK144Pに送信する。
 図18は、図17に示されたストライプライト処理のうち、各ステップに対応したデータの処理段階がMP121AによりSM123に保存されていることを示す。
 図17が示す処理では、ステップ(17-4)及び(17-5)のいずれかでMP121Aに障害が起きた場合、処理段階が、パリティ生成前段階であるため、正常MP(図示せず)が、パリティFMPK144Pに、CM124上にある新ユーザデータnD、...nDを送信してパリティ生成をやり直させる必要がある。すなわち、実施例2では、パリティ生成前の新ユーザデータはCM124上で二重化されておらず、FMPK144A側で二重化されている。FMPK144AからFMPK144Pへの直接送信が不可のため、CM124は、その送信バッファとして利用される。ステップ(17-6)及び(17-7)のいずれかでMP障害が起きた場合は、データFMPK144A、...144A上に新ユーザデータnD、...nDが、パリティFMPK144P上に新パリティnPがあるため、新ユーザデータ確定コマンドの送信と新パリティ確定コマンドの送信から処理を再開できる。また、ステップ(17-4)~(17-7)のいずれかでデータFMPK144A、...144AのいずれかあるいはパリティFMPK144Pに障害が起きた場合、正常なFMPK114Aから新ユーザデータを読み出し、正常なデータFMPK144AあるいはパリティFMPK144Pに新ユーザデータを書き直して、以降の処理を継続することができる。
 図19は、データFMPK144Aの実施例2に係る状態遷移ルール(ストライプライト処理用)を示す。
 MP121からデータFMPK144Aへのコマンドとして、実施例1で定義されていたコマンドに加え、新ユーザデータ受信コマンドが定義されている。新ユーザデータ受信コマンドは、新ユーザデータと新パリティがデータFMPK144AとパリティFMPK144Pとに確定する前にメディアに障害が起きた場合等に、障害が起きたFMPKとは別のFMPKにCM124から新ユーザデータを送って(当該別のFMPKが新たなデータFMPK144AあるいはパリティFMPK144Pとなり)、以降の処理を継続するために用いられるコマンドである。つまり、本実施例では、リードコマンドとして、通常リードコマンドと新ユーザデータ受信コマンドがある。新ユーザデータ受信コマンドは、特殊リードコマンドの一例である。
 <状態1+新ユーザデータ受信コマンド>
 図19によると、状態1においてデータFMPK144Aが対象論理アドレスを指定した新ユーザデータ受信コマンドを受信した場合、データFMPK144は、対象論理アドレスに対応する新ユーザデータが存在しないことを検出し、異常終了応答をコントローラ100へ送る。この処理においてり、状態1は維持される。
 <状態2+新ユーザデータ受信コマンド>
 図19によると、状態2においてデータFMPK144Aが対象論理アドレスを指定した新ユーザデータ受信コマンドを受信した場合、データFMPK144Aは、対象論理アドレスに対応した新ユーザデータ物理アドレスが指す物理ページからデータを読み出し、そのデータをコントローラ100に送信する。次に、データFMPK144Aは、正常終了応答をコントローラ100へ送る。この処理において、状態2は維持される。つまり、状態1及び状態2のいずれの状態のデータFMPK144Aが新ユーザデータ送信コマンドを受信しても、状態遷移は行われない。
 図20は、パリティFMPK144Pの実施例2に係る状態遷移ルール(ストライプライト処理用)を示す。
 MP121からパリティFMPK144Pへのコマンドとして、実施例1でも定義されていたコマンドに加えて、データFMPK144Aと同様に新ユーザデータ受信コマンドが定義されている。新ユーザデータ受信コマンドの用途は、データFMPK144Aについてのそれと同様である。
 <状態1+新ユーザデータ受信コマンド>
 図20によると、状態1においてパリティFMPK144Pが対象論理アドレスと新ユーザデータ識別番号とを指定した新ユーザデータ受信コマンドを受信した場合、パリティFMPK144Pは、対象論理アドレスに対応する新ユーザデータが存在しないことを検出し、異常終了応答をコントローラ100へ送る。この処理において、状態1は維持される。
 <状態2+新ユーザデータ受信コマンド>
 図20によると、状態2においてパリティFMPK144Pが対象論理アドレスと新ユーザデータ識別番号とを指定した新ユーザデータ受信コマンドを受信した場合、パリティFMPK144Pは、対象論理アドレスに対応した新ユーザデータ物理アドレスが存在すれば、当該物理アドレスが指す物理ページからデータを読み出しそのデータをコントローラ100に送信する。次に、パリティFMPK144Pは、正常終了応答をコントローラ100へ送る。一方、対象論理アドレスに対応した新ユーザデータ物理アドレスが存在しなければ、パリティFMPK144Pは、異常終了応答をコントローラ100へ送る。いずれにしても、この処理において、状態2は維持される。
 <状態3+新ユーザデータ受信コマンド>
 図20によると、状態3においてパリティFMPK144Pが対象論理アドレスと新ユーザデータ識別番号とを指定した新ユーザデータ受信コマンドをデータを受信した場合、パリティFMPK144Pは、対象論理アドレスに対応した新ユーザデータ物理アドレスが存在すれば、当該物理アドレスが指す物理ページからデータを読み出しそのデータをコントローラ100に送信する。次に、パリティFMPK144は、正常終了応答をコントローラ100へ送る。一方、対象論理アドレスに対応した新ユーザデータ物理アドレスが存在しない場合、パリティFMPK144Pは、異常終了応答をコントローラ100へ送る。この処理において、状態3は維持される。つまり、状態1~状態3のいずれの状態のパリティFMPK144Pが新ユーザデータ送信コマンドを受信しても、状態遷移は行われない。
 図21及び図22は、ホストライト要求処理(B)の流れを示す。この処理は、ライト要求(典型的には、旧ユーザデータを新ユーザデータへ更新するライト要求)をMP121がホスト計算機30から受信した場合に開始される。
 MP121は、CM124に、新ユーザデータを書き込むための領域を1つ確保する(S2301)。
 次に、MP121は、ホスト計算機30へ書き込み準備完了を送信する(S2302)。
 次に、FEPK110のI/F1101は、ホスト計算機30からの新ユーザデータを、CM124に確保された領域へと書き込む。
 FEPK110のI/F1101から、CM124への書込みの完了がホスト計算機30へ通知される(S2303)。そして、MP121は、データFMPK144Aに新ユーザデータ送信コマンドを、データFMPK144Aへ送る(S2304)。この新ユーザデータ送信コマンドでは、旧ユーザデータの論理アドレスが指定される。
 データFMPK144Aにおいて、CPU1444は、ポート1441を介して新データ送信コマンド及び新ユーザデータを受け、受信した新ユーザデータをFM1443に書き込み、コントローラ100へ正常終了を応答する。ここで、データFMPK144A内では、旧ユーザデータ物理アドレスが対応付けられている対象論理アドレスに対して、新ユーザデータ物理アドレスが対応付けられる。新ユーザデータは、少なくとも新ユーザデータ確定コマンドを受信し、処理が完了するまで保持される。また、このときデータFMPK144Aは、書き込まれた新ユーザデータから保証コードを計算し、その保証コードを新ユーザデータ送信コマンドに付随する保証コードと比較する。データFMPK144Aは、転送中のデータ欠損を検出した場合は、コントローラ100へ異常終了を応答する。MP121は、データFMPK144Aから異常終了を受信した場合は、CM124の新ユーザデータから保証コードを算出し、その保証コードを、ホスト計算機30からのライト要求に付随された保証コードと比較する。転送中のデータ欠損を検出した場合は、MP121は、ホスト計算機30にライト要求の異常終了を送信する。なお、MP121による保証コード比較の結果として、転送中のデータ欠損がない場合、コントローラ100からデータFMPK144Aへの新ユーザデータの書き込みの過程のどこかでデータ欠損が発生したことになる。このため、MP121は、転送中のデータ欠損がない場合、他のデータFMPK144Aや他のデータ転送経路を使って再度新ユーザデータ送信コマンドを発行してもよい。
 さて、MP121は、データFMPK144Aから新ユーザデータ送信コマンドの正常終了を受信すると(S2305)、新ユーザデータ送信コマンドを、パリティFMPK144Pへ送る(S2306)。この新ユーザデータ送信コマンドでは、旧パリティの論理アドレスと新ユーザデータ識別番号とが指定される。
 パリティFMPK144Pにおいて、CPU1444は、ポート1441を介して新データ送信コマンド及び新ユーザデータを受け、受信した新ユーザデータをFM1443に書き込み、コントローラ100へ正常終了を応答する。ここで、パリティFMPK144P内では、旧パリティ物理アドレスが対応付けられた論理アドレスアドレスに対して、新パリティ物理アドレスと新ユーザデータ物理アドレスとが対応付けられる。新ユーザデータ及び新パリティは、新パリティ確定コマンドを受信して処理が完了するまで保持される。また、パリティFMPK144Pは、書き込まれた新ユーザデータから保証コードを計算し、その保証コードを、新ユーザデータ送信コマンドに付随する保証コードと比較する。パリティFMPK144Pは、転送中のデータ欠損を検出した場合は、コントローラ100へ異常終了を応答する。MP121は、パリティFMPK144Pから異常終了を受信した場合は、CM124の新ユーザデータから保証コードを算出し、その保証コードを、ホスト計算機30からのライト要求に付随された保証コードと比較する。MP121は、転送中のデータ欠損を検出した場合は、ホスト計算機30にライト要求の異常終了を送信する。なお、MP121による保証コード比較の結果として、転送中のデータ欠損がない場合、コントローラ100からパリティFMPK144Pへの新ユーザデータの書き込みの過程のどこかでデータ欠損が発生したことになる。このため、MP121は、転送中のデータ欠損がない場合、他のパリティFMPK144Pや他のデータ転送経路を使って再度新ユーザデータ送信コマンドを発行してもよい。
 実施例2では、このデータFMPK144AとパリティFMPK144Pに、新ユーザデータを書き込む処理を、“新ユーザデータの二重化処理”と呼ぶ。この新ユーザデータの二重化処理は、MPPK120がDMA機能を有する場合、MP121の指示に応じてMPPK120のDMA機能が行ってもよい。
 MP121は、パリティFMPK144Pから新ユーザデータ送信コマンドの正常終了を受信すると(S2307)、2つのCM124に対応する2つのSM123内の領域情報に、新ユーザデータが格納された2つのCM124の領域を示す値(CMアドレス)をそれぞれ書き込む(S2308)。
 次に、MP121は、これら2つのCM124の領域に対応する2つのSM123内の処理段階情報に、パリティ生成前段階を示す値をそれぞれ書き込む(S2309)。
 次に、MP121は、パリティ生成前段階を示す情報をSM123内のパリティ生成前キューへ登録する。(S2310)。後述する連続書き込み判定処理(B)で、メディア書き込み処理(D)が行われる場合、パリティ生成前キューにある情報を参照せずに、SM123内のCMアドレス(新ユーザデータのCM124上のアドレス)を参照して、パリティ生成が行われる。このため、S2007においてパリティ生成前キューへの登録は不要に思えるが、例えば、MPPKに障害が起きた場合に処理を引き継いだ他のMPPK120が、メディア書き込み処理(B)によってパリティ生成前キューを参照し、新ユーザデータをFMPKにライトすることを期待するからである。このとき、メディア書き込み処理(B)では、新ユーザデータの二重化をCM124の2つの領域を使って行っているが、これらが実施例2では、データFMPK144AとパリティFMPK144Pである点が異なっている。このため、S2207でパリティを計算するLM領域を確保する前に、新ユーザデータを一度CM124の領域にリードするために、CM124の領域を確保し、データFMPK144AあるいはパリティFMPK144Pに新ユーザデータ受信コマンドを発行するという過程が追加される。
 次に、MP121は、ホスト計算機30へライト要求の正常終了を送信する(S2311)。
 実施例2においても、実施例1と同様に、新ユーザデータのライト処理毎に、SM内の領域情報及び処理段階情報が更新される。MPに障害が発生した場合に、他のMPは処理段階情報を参照することで、ライト処理を引き継ぐことが可能となる。
 図23は、連続書き込み判定処理(B)の流れを示す。
 図23のS2421は、図10のS2021と同じである。図23のS2422は、図10のS2022と異なる。すなわち、S2422では、メディア書き込み処理(D)が指示される。
 図24は、メディア書き込み処理(D)の流れを示す。
 図23のS2422において指定された論理アドレス(論理ボリュームの論理アドレス範囲)に基づき、MP121が、SM123内の領域情報を参照して、ストライプを構成する新ユーザデータがCM124に全て揃っているかどうかを判定する(S2501)。
 S2501の判定結果が真の場合(S2501:Yes)、MP121は、パリティ生成コマンド(ストライプを構成する全ての新ユーザデータから新パリティを生成させて書き込むためのコマンド)を、パリティFMPK144Pへ送る(S2502)。このパリティ生成コマンドでは、旧パリティの論理アドレスが指定される。
 パリティFMPK144Pにおいて、CPU1444は、ポート1441を介してパリティ生成コマンドを受け、指定された論理アドレスに対応する全ての新ユーザデータを読み出し、論理演算回路1442へ送る。論理演算回路1442は、全ての新ユーザデータから新パリティを算出する。CPU1444は、新パリティをFM1443に書き込み、コントローラ100へ正常終了を応答する。
 MP121は、パリティFMPK144Pからパリティ生成コマンドの正常終了を受信すると(S2503)、上述の2つのSM123内の処理段階情報にパリティ生成後段階を示す値をそれぞれ書き込む(S2504)。このとき、MP121は、生成されたパリティに対応したストライプを構成する全ての新ユーザーデータに対応するパリティ生成前段階情報をSM123内のパリティ生成前キューから取り除き、且つ、パリティ生成後段階情報をSM123内のパリティ生成後キューへ登録する。
 次に、MP121は、データ確定処理(A)を開始し、新ユーザデータ確定コマンドをデータFMPK144Aへ送る。この新ユーザデータ確定コマンドでは、旧ユーザデータの論理アドレスが指定される。データ確定処理(A)が終了した場合、メディア書き込み処理(D)が終了する。
 以上が、連続アドレスへの書き込みであると判定された結果に従うメディア書き込み処理(D)である。この処理を含んだライト処理において、ホスト計算機30からの新ユーザデータは、CM124にある1つの領域に書き込まれ(1回(ライト))、新ユーザデータがそれぞれCM124からデータFMPK144AとパリティFMPK144Pへ送られる(2回(リード且つリード))。これにより、1つの新ユーザデータ群(ストライプを構成する全ての新ユーザデータ)のライト処理におけるCMアクセス回数は3回である。つまり、CM124へのアクセス回数を低減することができる。
 このように、FMPKがパリティの算出を実行することにより、コントローラ100におけるMP及びCMの負荷は実施例1に比べてさらに低減され、ストレージシステムのシーケンシャルライト処理性能が向上する。
 <実施例2に係る引継ぎライト処理>
 以下、MP障害時の引継ぎライト処理について説明する。
 図25は、パリティ生成前段階のMP障害に応じた実施例2に係る引継ぎライト処理の流れを示す。
 MP障害時のMP121の動作は、次の点以外は図16と同様である。すなわち、実施例2では、図16のS3003のメディア書き込み処理(A)に代えて、実施例2に係るメディア書き込み処理(D)が行われる。
 図25によると、実施例2に係る引継ぎライト処理は、実施例1と同様に、正常MP121が処理段階情報に応じた処理を行うことで実現される。
 図25によると、MP121Aに障害が発生した場合、正常MP121Bが、SM123をサーチし、見つかった処理段階情報からパリティ生成前段階を検出したか否かを判定する。
 図25によると、パリティ生成前段階が検出された場合、ステップ(25-4)(パリティ生成コマンドの送信)以降の処理が行われる。これは、図24に示したメディア書き込み処理(D)の指示を意味する。このメディア書き込み処理(D)は、当該MP121Bが行ってもよいし、MPPK120の他の正常なMP121が行ってもよい。
 一方、パリティ生成前段階が検出されなかった場合、MP121Bは、見つかった処理段階情報からパリティ生成後段階を検出したか否かを判定する。
 図25によると、このパリティ生成後段階が検出された場合、ステップ(25-5)(新ユーザデータ確定コマンドの送信)以降の処理が行われる。これは、図12に示したデータ確定処理(A)の指示を意味する。このデータ確定処理(A)は、当該MP121Bが行ってもよいし、MPPK120の他の正常なMP121が行ってもよい。パリティ生成後段階が検出されなかった場合、MP121Bは、このフローを終了させる。
 以上の障害処理によって、メディア書き込み処理(D)やデータ確定処理(A)の途中でMP121に障害が発生した場合でも、正常なMP121が処理を引き継いで実施することができる。
 図26は、パリティ生成前段階のパリティFMPK障害に応じた実施例2に係る引継ぎライト処理の流れを示す。
 図26によると、パリティFMPK障害時、実施例2の引継ぎライト処理は、MP121Aが処理段階情報を認識し、処理段階情報に応じた適切な処理を行うことで実現される。
 図26によると、パリティFMPK144Pに障害が発生した場合、MP121Aは、SM123をサーチし、見つかった処理段階情報からパリティ生成前段階を検出したか否かを判定する。
 図26によると、MP121Aは、パリティ生成前段階を検出した場合、データFMPK144A、...144Aに格納されている新ユーザデータnD、...nDを格納するための領域をCM124から確保する。次に、MP121Aは、新ユーザデータ受信コマンドをデータFMPK144A、...144Aに送信することにより、データFMPK144A、...144AからCM124上の確保領域に新ユーザデータnD、...nDを読み出す(26-1)。
 MP121Aは、データFMPK144A、...144Aから新ユーザデータ受信コマンドの正常終了を受信すると、正常なパリティFMPK144P´に新ユーザデータnD、...nDを書き込むための新ユーザデータ送信コマンドを、その正常なパリティFMPK144P´へ送る(26-2)。この新ユーザデータ送信コマンドでは、旧パリティの論理アドレスと、リード対象新ユーザデータの識別番号とが指定される。
 図26によると、MP121Aは、新ユーザデータ送信コマンドの正常終了を受信すると、ステップ(25-4)(パリティ生成コマンドの送信)以降の処理を行う。これは、図24に示したメディア書き込み処理(D)の指示を意味する。このメディア書き込み処理(D)は、当該MP121Aが行ってもよいし、他の正常なMP121が行ってもよい。
 一方、パリティ生成後段階が検出され、且つ、障害が起きたFMPK144がパリティFMPK144Pであった場合は、生成した新パリティがFMPKごと失われているため、パリティ生成前段階から処理が継続(再開)される。
 また、障害が起きたFMPKがデータFMPK144Aであり、且つ、パリティ生成後段階が検出された場合は、パリティFMPK144Pには新パリティが維持されている。このため、パリティFMPK144Pから新ユーザデータを読み出してデータFMPK144Aに新ユーザデータを書き込んだ後にデータ確定処理(A)から処理が継続されてもよいし、パリティ生成前段階から処理が継続されてもよい。これらのメディア書き込み処理(D)やデータ確定処理(A)は、当該MP121Aが行ってもよいし、他の正常なMP121が行ってもよい。
 パリティ生成前段階もパリティ生成後段階のどちらも検出されなかった場合、MP121Aは、障害処理を終了する。
 以上の障害処理によって、メディア書き込み処理(D)やデータ確定処理(A)の途中でデータFMPKあるいはパリティFMPKに障害が発生した場合でも、MP121が、正常なFMPKから新ユーザデータを二重化させ、残りの処理を継続できる。
 以上が、実施例2に係る引継ぎライト処理である。
 以上、幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
 10:ストレージシステム

Claims (15)

  1.  ホストシステムに接続されるストレージシステムであって、
     RAIDグループを構成する複数の記憶デバイスと、
     前記ホストシステムと前記RAIDグループとに接続され複数のマイクロプロセッサと複数のキャッシュメモリを有するストレージコントローラと
    を有し、
     前記複数の記憶デバイスの各々は、追記型の記憶媒体を有し、論理アドレス空間を提供し、
     前記RAIDグループは、複数のストライプを提供し、
     前記複数のストライプの各々は、前記複数の記憶デバイスがそれぞれ提供する複数の論理アドレス空間部分である複数のストリップで構成されており、
     前記複数のストライプの各々について、前記複数の記憶デバイスは、2以上のデータ記憶デバイスと、1以上のパリティ記憶デバイスであり、
     前記2以上のデータ記憶デバイスの各々は、ユーザデータの書込み先となるストリップを提供する記憶デバイスであり、
     前記1以上のパリティ記憶デバイスの各々は、パリティの書込み先となるストリップを提供する記憶デバイスであり、
     前記ストレージコントローラは、
      (A)1以上の新ユーザデータの1以上のライト要求を受信し、
      (B)前記1以上の新ユーザデータの各々についてデータの二重化処理を実行し、
      (C)前記1以上のライト要求に対応した1以上の応答を前記二重化処理の後に前記ホストシステムに返し、
      (D)前記1以上の新ユーザデータに対応したストライプである書込み先ストライプについて、パリティ生成コマンドを、1以上のパリティ記憶デバイスの各々に送信し、
     前記パリティ生成コマンドを受信したパリティ記憶デバイスが、新パリティの生成に必要な新ユーザデータがそのパリティ記憶デバイスにあれば、その受信したパリティ生成コマンドに応答して、その必要な新ユーザデータを用いて新パリティを生成し、
     前記1以上の新ユーザデータの各々は、そのユーザデータの書込み先の論理アドレスについて既に存在するユーザデータである旧ユーザデータがあれば、その旧ユーザデータの更新後のユーザデータであり、一方、その書込み先の論理アドレスについて旧ユーザデータがなければ、その論理アドレスについて新たに書き込まれるユーザデータであり、
     前記新パリティは、そのパリティの書込み先の論理アドレスについて既に存在するパリティである旧パリティがあれば、その旧パリティの更新後のパリティであり、一方、その書込み先の論理アドレスについて旧パリティがなければ、その論理アドレスについて新たに書き込まれるパリティである、
    ストレージシステム。
  2.  前記必要な新ユーザデータは、前記書込み先ストライプにおける全ての新ユーザデータである、
    請求項1記載のストレージシステム。
  3.  前記書込み先ストライプに対応した前記1以上のパリティ記憶デバイスの各々に対する前記ストレージコントローラからのライトコマンドとして、対象論理アドレスに旧パリティに代えて新パリティが関連付けられるライトコマンドである通常パリティライトコマンドの他に、前記対象論理アドレスに旧パリティに加えて新パリティ及び新ユーザデータが関連付けられるライトコマンドである特殊パリティライトコマンドが定義されており、
     前記書込み先ストライプに対応した前記1以上のパリティ記憶デバイスの各々について、前記全ての新ユーザデータは、前記ストレージコントローラからそのパリティ記憶デバイスへの1以上の特殊パリティライトコマンドに付随してそのパリティ記憶デバイスに格納された新ユーザデータである、
    請求項2記載のストレージシステム。
  4.  前記全ての新ユーザデータの各々について、前記二重化処理は、新ユーザデータを前記複数のキャッシュメモリのうちのいずれかとそれとは別のキャッシュメモリとに書き込むことであり、
     前記全ての新ユーザデータは、1つの特殊パリティライトコマンドに付随する、
    請求項3記載のストレージシステム。
  5.  前記全ての新ユーザデータの各々について、前記二重化処理は、新ユーザデータを前記複数のキャッシュメモリのうちのいずれかと書込み先のストリップを提供する記憶デバイスとに書き込むことであり、
     前記全ての新ユーザデータの各々が、新ユーザデータの識別番号が指定された特殊パリティライトコマンドに付随する、
    請求項3記載のストレージシステム。
  6.  前記複数の記憶デバイスの各々に対する前記ストレージコントローラからのリードコマンドとして、対象論理アドレスに関連付けられているユーザデータ又はパリティのリードコマンドである通常リードコマンドの他に、前記対象論理アドレスに関連付けられている新ユーザデータのリードコマンドである特殊リードコマンドが定義されており、
     前記ストレージコントローラが、
      前記書込み先ストライプについて、(D)の前に前記1以上のパリティ記憶デバイスに障害が発生した場合、前記2以上のデータ記憶デバイスのうちの少なくとも1つに特殊リードコマンドを送信する、
    請求項5記載のストレージシステム。
  7.  前記ストレージコントローラが、
      (D)の後に、前記新パリティの書込み先論理アドレスに対する旧パリティ及び新ユーザデータの関連付けを破棄するコマンドである新パリティ確定コマンドを1以上のパリティ記憶デバイスの各々に送信する、
    請求項3記載のストレージシステム。
  8.  前記書込み先ストライプに対応した2以上のデータ記憶デバイスの各々に対する前記ストレージコントローラからのライトコマンドとして、対象論理アドレスに旧ユーザデータに代えて新ユーザデータが関連付けられるライトコマンドである通常データライトコマンドの他に、前記対象論理アドレスに旧ユーザデータに加えて新ユーザデータが関連付けられるライトコマンドである特殊データライトコマンドが定義されており、
     前記ストレージコントローラが、
      前記全ての新ユーザデータの各々について、その新ユーザデータが付随する前記特殊データライトコマンド、その新ユーザデータの書込み先のデータ記憶デバイスに送信する、
    請求項3記載のストレージシステム。
  9.  前記ストレージコントローラが、
      前記全ての新ユーザデータの各々について、(D)の後に、その新ユーザデータの書込み先論理アドレスに対する旧ユーザデータの関連付けを破棄するコマンドである新ユーザデータ確定コマンドを、その新ユーザデータの書込み先のデータ記憶デバイスに送信する、
    請求項8記載のストレージシステム。
  10.  前記ストレージコントローラは、
      前記全ての新ユーザデータが前記複数のキャッシュメモリの少なくとも1つに存在するか否かを判定し、
      その判定の結果が真の場合、(D)を実行する、
    請求項2記載のストレージシステム。
  11.  前記ストレージコントローラは、複数のマイクロプロセッサに共有のメモリである共有メモリを有し、
     第1のマイクロプロセッサが、前記共有メモリに、(D)の前であるパリティ生成前段階であるか(D)の後であるパリティ生成後段階であるかを、前記共有メモリに書き込み、
     前記第1のマイクロプロセッサに障害が発生した場合、第2のマイクロプロセッサが、前記共有メモリから、前記書込み先ストライプについてパリティ生成前段階であるかパリティ生成後段階であるかを判定し、その判定の結果に応じて処理を再開し、
     前記第1のマイクロプロセッサは、前記複数のマイクロプロセッサのうちのいずれかのマイクロプロセッサであり、
     前記第2のマイクロプロセサは、前記複数のマイクロプロセッサのうちの前記第1のマイクロプロセッサ以外のいずれかの正常なマイクロプロセッサである、
    請求項1記載のストレージシステム。
  12.  前記二重化処理は、前記複数のマイクロプロセッサのうちのいずれかにより実行される、
    請求項1記載のストレージシステム。
  13.  前記書込み先ストライプについて、前記複数の記憶デバイスの各々が、
      前記ストレージコントローラから受信したライトコマンドに付随するユーザデータ又はパリティから保証コードを算出し、
      その算出された保証コードと、その受信したライトコマンドに付随する保証コードとを比較する、
    請求項1記載のストレージシステム。
  14.  前記追記型の記憶媒体は、フラッシュメモリである、
    請求項1記載のストレージシステム。
  15.  ホストシステムに接続されるストレージシステムの記憶制御方法であって、
        前記ストレージシステムが、RAIDグループを構成する複数の記憶デバイスを有し、
        前記複数の記憶デバイスの各々は、追記型の記憶媒体を有し、論理アドレス空間を提供し、
        前記RAIDグループは、複数のストライプを提供し、
        前記複数のストライプの各々は、前記複数の記憶デバイスがそれぞれ提供する複数の論理アドレス空間部分である複数のストリップで構成されており、
        前記複数のストライプの各々について、前記複数の記憶デバイスは、2以上のデータ記憶デバイスと、1以上のパリティ記憶デバイスであり、
        前記2以上のデータ記憶デバイスの各々は、ユーザデータの書込み先となるストリップを提供する記憶デバイスであり、
        前記1以上のパリティ記憶デバイスの各々は、パリティの書込み先となるストリップを提供する記憶デバイスであり、
     前記記憶制御方法は、
     (A)1以上の新ユーザデータの1以上のライト要求を受信し、
     (B)前記1以上の新ユーザデータの各々についてデータの二重化処理を実行し、
     (C)前記1以上のライト要求に対応した1以上の応答を前記二重化処理の後に前記ホストシステムに返し、
     (D)前記1以上の新ユーザデータに対応したストライプである書込み先ストライプについて、パリティ生成コマンドを、1以上のパリティ記憶デバイスの各々に送信し、
        前記パリティ生成コマンドを受信したパリティ記憶デバイスが、新パリティの生成に必要な新ユーザデータがそのパリティ記憶デバイスにあれば、その受信したパリティ生成コマンドに応答して、その必要な新ユーザデータを用いて新パリティを生成し、
        前記1以上の新ユーザデータの各々は、そのユーザデータの書込み先の論理アドレスについて既に存在するユーザデータである旧ユーザデータがあれば、その旧ユーザデータの更新後のユーザデータであり、一方、その書込み先の論理アドレスについて旧ユーザデータがなければ、その論理アドレスについて新たに書き込まれるユーザデータであり、
        前記新パリティは、そのパリティの書込み先の論理アドレスについて既に存在するパリティである旧パリティがあれば、その旧パリティの更新後のパリティであり、一方、その書込み先の論理アドレスについて旧パリティがなければ、その論理アドレスについて新たに書き込まれるパリティである、
    記憶制御方法。
PCT/JP2016/066712 2016-06-06 2016-06-06 ストレージシステム及び記憶制御方法 WO2017212514A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/066712 WO2017212514A1 (ja) 2016-06-06 2016-06-06 ストレージシステム及び記憶制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/066712 WO2017212514A1 (ja) 2016-06-06 2016-06-06 ストレージシステム及び記憶制御方法

Publications (1)

Publication Number Publication Date
WO2017212514A1 true WO2017212514A1 (ja) 2017-12-14

Family

ID=60578610

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2016/066712 WO2017212514A1 (ja) 2016-06-06 2016-06-06 ストレージシステム及び記憶制御方法

Country Status (1)

Country Link
WO (1) WO2017212514A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109933291A (zh) * 2019-03-20 2019-06-25 浪潮商用机器有限公司 一种sram数据的处理方法、装置、设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005326935A (ja) * 2004-05-12 2005-11-24 Hitachi Ltd 仮想化ストレージを備える計算機システムの管理サーバおよび障害回避復旧方法
JP2013101665A (ja) * 2013-01-15 2013-05-23 Hitachi Ltd ストレージシステム
WO2014155525A1 (ja) * 2013-03-26 2014-10-02 株式会社日立製作所 ストレージシステム及び制御方法
JP2015515033A (ja) * 2012-04-27 2015-05-21 株式会社日立製作所 ストレージシステム
JP2015518186A (ja) * 2012-04-27 2015-06-25 株式会社日立製作所 ストレージシステム及びストレージ制御装置
WO2016017002A1 (ja) * 2014-07-31 2016-02-04 株式会社日立製作所 ストレージシステム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005326935A (ja) * 2004-05-12 2005-11-24 Hitachi Ltd 仮想化ストレージを備える計算機システムの管理サーバおよび障害回避復旧方法
JP2015515033A (ja) * 2012-04-27 2015-05-21 株式会社日立製作所 ストレージシステム
JP2015518186A (ja) * 2012-04-27 2015-06-25 株式会社日立製作所 ストレージシステム及びストレージ制御装置
JP2013101665A (ja) * 2013-01-15 2013-05-23 Hitachi Ltd ストレージシステム
WO2014155525A1 (ja) * 2013-03-26 2014-10-02 株式会社日立製作所 ストレージシステム及び制御方法
WO2016017002A1 (ja) * 2014-07-31 2016-02-04 株式会社日立製作所 ストレージシステム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109933291A (zh) * 2019-03-20 2019-06-25 浪潮商用机器有限公司 一种sram数据的处理方法、装置、设备及存储介质
CN109933291B (zh) * 2019-03-20 2022-05-06 浪潮商用机器有限公司 一种sram数据的处理方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
JP6009095B2 (ja) ストレージシステム及び記憶制御方法
US9996435B2 (en) Reliability scheme using hybrid SSD/HDD replication with log structured management
US8392678B2 (en) Storage system and data management method
US7975168B2 (en) Storage system executing parallel correction write
KR101758544B1 (ko) 비휘발성 메모리 시스템에서의 동기 미러링
US8719520B1 (en) System and method for data migration between high-performance computing architectures and data storage devices with increased data reliability and integrity
JP5971354B2 (ja) ストレージシステム
US8037244B2 (en) Storage apparatus and data storage method using the same
US7966471B2 (en) Storage controller and method for control of a data storage device
US10459638B2 (en) Computer system that generates group information and redundant code based on user data and changes the group information and redundant code based on transmission data, control method for computer system, and recording medium
JP6677740B2 (ja) ストレージシステム
US20080201392A1 (en) Storage system having plural flash memory drives and method for controlling data storage
US20150095696A1 (en) Second-level raid cache splicing
US10303362B2 (en) Methods for reducing initialization duration and performance impact during configuration of storage drives
JP2007156597A (ja) ストレージ装置
CN112513804B (zh) 一种数据处理方法及装置
US20170017550A1 (en) Storage system
US10884924B2 (en) Storage system and data writing control method
WO2014188479A1 (ja) ストレージ装置及びストレージ装置の制御方法
US8880939B2 (en) Storage subsystem and method for recovering data in storage subsystem
CN110737395B (zh) I/o管理方法、电子设备和计算机可读存储介质
WO2017212514A1 (ja) ストレージシステム及び記憶制御方法
WO2018055686A1 (ja) 情報処理システム
US8935488B2 (en) Storage system and storage control method
JP7443404B2 (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: 16904550

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP