WO2016189640A1 - ストレージ装置、及び方法 - Google Patents

ストレージ装置、及び方法 Download PDF

Info

Publication number
WO2016189640A1
WO2016189640A1 PCT/JP2015/064990 JP2015064990W WO2016189640A1 WO 2016189640 A1 WO2016189640 A1 WO 2016189640A1 JP 2015064990 W JP2015064990 W JP 2015064990W WO 2016189640 A1 WO2016189640 A1 WO 2016189640A1
Authority
WO
WIPO (PCT)
Prior art keywords
write
data
area
processor
physical storage
Prior art date
Application number
PCT/JP2015/064990
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/JP2015/064990 priority Critical patent/WO2016189640A1/ja
Publication of WO2016189640A1 publication Critical patent/WO2016189640A1/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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/08Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers from or to individual record carriers, e.g. punched card, memory card, integrated circuit [IC] card or smart card

Definitions

  • the present invention relates to a storage apparatus.
  • the storage device includes a plurality of physical storage devices (recording media) and a storage controller that is connected to the plurality of physical storage devices and receives an I / O (Input or Output) request from a host computer.
  • the storage controller bundles a plurality of physical storage devices to form a RAID (Redundant Arrays of Inexpensive Disks) group, and simultaneously realizes performance and fault tolerance.
  • a physical storage device for example, an HDD (Hard Disk Drive) is known.
  • SSD Solid State Drive
  • the SSD has features such as response performance and low power consumption as compared with the conventional hard disk HDD.
  • the IO performance of SSDs is nearly 1000 times that of HDDs.
  • the controller disclosed in Patent Document 1 includes a CPU, a memory, a storage I / F, and a disk I / F, and processes IO requests from the host computer with software by the CPU.
  • Patent Document 2 discloses a method for realizing a high-performance storage controller that processes IO requests by dedicated hardware different from the CPU.
  • the CPU used in the controller as disclosed in Patent Document 1 has improved its performance according to Moore's law. However, in the change of the physical storage device as described above, a large performance gap is generated between the controller and the physical storage device, and the performance of the storage controller may become a bottleneck.
  • the storage device includes a controller connected to the host computer and a plurality of physical storage devices connected to the controller.
  • the controller is connected to the host computer and a plurality of physical storage devices, and provides a logical volume based on the plurality of physical storage devices to the host computer, a memory connected to the processor, the host computer, and the plurality of physical storages And a control device connected to the device and the processor.
  • the memory stores logical-physical conversion information that associates a logical area in a logical volume and device areas in a plurality of physical storage devices, and cache information that associates a logical area in the logical volume and a cache area in the memory.
  • the processor determines whether the processor performs a write process based on a write command from the host computer or causes the control device to perform based on the state of the processor. When it is determined that the processor performs the write process, the processor identifies the first cache area corresponding to the first logical area specified by the write command based on the cache information, and sets the write data based on the write command to the first Write to the cache area. If it is determined that the control device is to perform the write process, the processor locks data based on the cache information and prohibits data writing to the first cache area corresponding to the first logical area specified by the write command.
  • the address conversion information indicating the first device area in the first physical storage device corresponding to the first logical area is transmitted to the control device based on the logical-physical conversion information.
  • the control device receives the write data, and transmits the write data and an instruction to write the write data to the first device area to the first physical storage device based on the address conversion information.
  • the first physical storage device writes the write data to the first device area based on the write instruction.
  • the control device receives a write data write completion notification from the first physical storage device, and sends a lock release instruction to release the data lock in the first cache area to the processor.
  • the processor releases the data lock of the first cache area based on the release instruction.
  • the performance of the storage controller can be improved.
  • FIG. 1 is an example of a configuration diagram of a computer system according to Embodiment 1.
  • FIG. The structure of the memory 170 connected to MP140 is shown.
  • the structure of the memory 180 of ACC160 is shown.
  • 3 is an example of an address conversion table 303; It is a figure which shows an example of the command management table.
  • FIG. 10 is a part of a sequence diagram of a write process when the write target RAID type is RAID 5 according to the first embodiment.
  • FIG. 10 is the remaining part of the sequence diagram of the write process when the write target RAID type is RAID 5 according to the first embodiment. It is a flowchart which shows an example of offloading possibility determination.
  • FIG. 10 is a part of a sequence diagram of a write process when the write target RAID type is RAID 5 according to the first embodiment.
  • FIG. 10 is the remaining part of the sequence diagram of the write process when the write target RAID type is RAID 5 according to the first embodiment. It is a flowchart which shows an example
  • FIG. 11 is a part of a sequence diagram of a write process when the write target RAID type is RAID 1 according to the first embodiment.
  • FIG. 10 is the remaining part of the sequence diagram of the write process when the write target RAID type is RAID 1 according to the first embodiment.
  • FIG. 10 is a part of a sequence diagram of a write process when the write target RAID type is RAID 5 according to the second embodiment.
  • FIG. 10B is another part of the sequence diagram of the write process when the write target RAID type is RAID 5 according to the second embodiment.
  • FIG. 14 is a remaining part of a sequence diagram of a write process when the write target RAID type is RAID 5 according to the second embodiment.
  • FIG. 12 is a part of a sequence diagram of a write process when the write target RAID type is RAID 1 according to the second embodiment.
  • FIG. 12 is a remaining part of a sequence diagram of a write process when the write target RAID type is RAID 1 according to the second embodiment.
  • each piece of information included in the computer system of each embodiment may be described using expressions such as a table or a list.
  • the data structure of each information is not limited, and other data structures may be used. Since each piece of information does not depend on the data structure, for example, “kkk table” or “kkk list” can be called “kkk information”.
  • the processor executes a program and performs processing while using a storage resource (for example, a memory) and / or a communication interface device (for example, a communication port).
  • a storage resource for example, a memory
  • a communication interface device for example, a communication port
  • the main subject of processing may be various programs, but a processor that executes the program may be the main subject. Further, the processing mainly using the processor may be interpreted as being performed by executing one or more programs.
  • the processor is typically a microprocessor such as a CPU (Central Processing Unit), but may include a hardware circuit that executes a part of the processing (for example, encryption / decryption, compression / decompression). .
  • the storage apparatus includes one or more physical storage devices and a storage controller that controls the physical storage devices.
  • the storage controller provides a logical volume to the host computer based on one or more physical storage devices.
  • the logical volume may be a real logical volume or a virtual logical volume.
  • the real logical volume is a logical volume based on one or more physical storage devices that the storage apparatus has.
  • As the virtual logical volume for example, there may be a TP (Thin Provisioning) -logical volume and a snapshot logical volume.
  • a flash drive which is one of nonvolatile semiconductor memories, will be described as an example of a physical storage device.
  • the flash drive is, for example, an SSD (Solid State Drive).
  • the physical storage device may not be a nonvolatile semiconductor storage device as long as it is a nonvolatile physical storage device, and may be, for example, an HDD (Hard Disk Drive).
  • one or more RAID groups Redundant Array of Independent (or Inexpensive) Disks
  • RAID groups Redundant Array of Independent (or Inexpensive) Disks
  • FIG. 1 is an example of a configuration diagram of a computer system according to the first embodiment.
  • the computer system includes a host computer (host server) 10 and a storage device 100.
  • a host computer host server
  • the host computer 10 may be simply referred to as a host 10.
  • the host 10 is connected to the storage apparatus 100 via the network 30.
  • the network 30 is a communication path for exchanging commands and data between the host 10 and the storage apparatus 100, and includes, for example, a SAN (Storage Area Network).
  • SAN Storage Area Network
  • the storage apparatus 100 includes storage controllers 110 and 120 and a physical storage device (nonvolatile storage medium) 190.
  • the physical storage device 190 is a high-speed drive such as an SSD (solid state drive).
  • the storage controllers 110 and 120 may be simply referred to as controllers, and the physical storage device 190 may be referred to as SSD 190.
  • the physical storage device 190 is not limited to the SSD, and may be another medium such as an HDD (Hard Disk Drive).
  • the controllers 110 and 120 are made redundant. However, the number of controllers is not limited to two, and may be one or three or more.
  • the controller 110 and the controller 120 have basically the same configuration. For this reason, below, description of the controller 120 is abbreviate
  • the controller 110 receives an IO request (write command or read command), identifies the SSD 190 having a RAID configuration, and executes data reading and writing.
  • the controller 110 includes a host interface 130, a processor 140, an accelerator processor 160, memories 170 and 180, and a switch (SW) 150.
  • the host interface 130 may be omitted as Host I / F 130, the processor 140 as MP (Microprocessor) 140, the accelerator processor 160 as ACC 160, and the switch as SW 150.
  • the switch 150 is connected to the Host I / F 130, the MP 140, the ACC 160, and each SSD 190 via a signal line.
  • the signal line is, for example, PCI Express used as an internal data transfer path of the controller 110, but is not limited thereto.
  • the MP 140 and the ACC 160 are connected via, for example, a Non Transparent Bridge, and can communicate with each other. However, the connection between the MP 140 and the ACC 160 is not limited to the Non Transparent Bridge.
  • the switch 150 of the controller 110 and the switch 150 of the controller 120 are connected via a signal line. Thereby, communication between MP140 in the controller 110 and MP140 in the controller 120 is possible.
  • the memory 170 is connected to the MP 140.
  • the memory 170 is a main storage medium of the MP 140, an area for storing a program (storage control software 206) executed by the MP 140, management information referred to by the MP 140, and a cache area for temporarily storing read / write data. Is provided. Note that the memory 170 may be either connected to the MP or built in.
  • the memory 180 is connected to the ACC 160.
  • the memory 180 is a main storage medium of the ACC 160 and includes an area for storing information referred to by the ACC 160.
  • the control device has an ACC 160 and a memory 180.
  • the control device is realized by hardware such as ASIC (application specific integrated circuit) or FPGA (field-programmable gate array). Since the MP 140 and the ACC 160 share the write processing, it is possible to perform high performance (high speed) processing.
  • the ACC 160 may be realized by a processor such as an MP.
  • the ACC 160 and the memory 180 are built in the control device.
  • the ACC 160 may be a control device, and the memory 180 may be externally attached to the control device.
  • the Host I / F 130 is connected to the host 10 via the network 30.
  • the Host I / F 130 mutually converts the data transfer protocol between the host 10 and the controller 110 and the data transfer protocol in the controller 110.
  • the MP 140 of the controller 110 provides a logical volume (LU) to the host 10 based on one or more SSDs 190.
  • LU logical volume
  • the ACC 160 when the write data is received from the host 10, the ACC 160 does not store it in the cache area but stores it in a buffer area (to be described later) of the memory 180 and transmits it to the SSD 190.
  • the ACC 160 may transmit the write data directly to the SSD 190 without storing the write data in the buffer area.
  • Each SSD 190 includes a CPU and a memory (not shown) inside, and executes data read / write processing and control command processing. Each SSD 190 is connected to the host 10 via the switches 150 of the controllers 110 and 120.
  • the controllers 110 and 120 provide the logical volume to the host 10 as LU (Logical Unit).
  • the controllers 110 and 120 manage logical volumes as LDEVs (Logical Devices).
  • the controllers 110 and 120 divide the LDEV into a plurality of LDEV slots, divide the SSD into a plurality of SSD slots, and divide the cache area into a plurality of cache slots.
  • Each of the LDEV slot, the SSD slot, and the cache slot is an area having the same size.
  • the LDEV slot and the SSD slot are managed while being fixedly associated with each other.
  • the cache slot is assigned to the LDEV slot and the SSD slot. Note that the management units of the LDEV, SSD, and cache area are not limited to those described above.
  • the SSD 190 of this embodiment has a parity update function.
  • the parity update function is a function for generating / updating parity data of a data set including write data from received write data. Specifically, for example, an intermediate parity is generated from the old data stored in the SSD 190 and the write data for updating the old data, and the parity data is generated from the old parity data and the intermediate parity of the data set including the old data. This is a function for generating and updating old parity data to new parity data.
  • FIG. 2 shows the configuration of the memory 170 connected to the MP 140.
  • the memory 170 includes a cache directory 205, storage control software 206, cache data 209, a command management table 211, management information 212, and a logical-physical conversion table 203.
  • Storage control software 206 is software that executes IO processing (write processing / read processing).
  • the cache data 209 is data stored in a cache area in the memory 170.
  • the management information 212 is information indicating the presence / absence of various storage-specific functions (functions such as remote copy function, snapshot, deduplication, and thin provisioning) for each LDEV.
  • the command management table 211 is the same table as the command management table 311 included in the memory 180.
  • the cache directory 305 is information for managing a cache area in the memory 170.
  • the cache directory 305 stores the LDEV slot number assigned to the cache slot number.
  • the MP 140 can search the cache directory 305 to search whether the data of the LDEV slot is stored in the cache area, and the cache slot number when the data is stored in the cache slot.
  • the logical-physical conversion table 203 is a table that associates a pair of LDEV and LDEV slots with a pair of SSD 190 and SSD slots.
  • FIG. 3 shows the configuration of the memory 180 of the ACC 160.
  • the memory 180 includes a command management table 311, an address conversion table 303, a processing parity number table 304, accelerator firmware 307, and buffer data 308.
  • the command management table 311 is a table for storing command information being processed by the ACC 160. Synchronization with the command management table 211 of the MP 160 is established.
  • the address conversion table 303 is a table that stores a correspondence relationship between an LDEV slot and one or more SSD slots associated with the LDEV. Details will be described later.
  • the in-process parity number table 304 is a table that stores the SSD ID and SSD slot number of the parity data storage destination during the write process.
  • the accelerator firmware 307 is software for IO processing that operates in the ACC 160.
  • the buffer data 308 is data temporarily buffered in the memory 180.
  • the in-process parity number table 304 also has a memory 170 on the MP 140 side, and these in-process parity tables 204 are synchronized.
  • the address conversion table 303 may be stored in each memory. In this case, when an operation such as entry registration / deletion is performed on one address conversion table 303, synchronization with other address conversion tables 303 is achieved.
  • each of the memories 170 and 180 need not be physically stored in one memory, but one or more memories 170 connected to the MP 14 and one connected to the ACC 160. It may be distributed and stored in the above memories.
  • FIG. 4 is an example of the address conversion table 303.
  • the address conversion table 303 is a table that the storage control software 206 registers in the memory 180 of the ACC 160 in a write process described later.
  • the storage control software 206 converts the logical volume number (LUN (Logical Unit Number)) and LBA (Logical Block Address) specified by the host 10 into logical addresses (LDEV number and LDEV slot number) managed by the controllers 110 and 120. And register.
  • the LDEV slot number is a number obtained by extracting the upper bits of the LBA.
  • the storage control software 206 may convert the LUN, LBA, and S ID (Source ID) into an LDEV number and an LDEV slot number.
  • the storage control software 206 may also register the address conversion table 303 in its own memory 170.
  • the address conversion table 303 has an entry for each LDEV slot. Each entry includes a Valid 401 indicating whether or not the ACC 160 can IO access the LDEV slot, an LDEV 402 that is an identifier of the LDEV to which the LDEV slot belongs, a slot (SLOT) 403 that is an identifier of the LDEV slot, and the LDEV.
  • a Valid 401 indicating whether or not the ACC 160 can IO access the LDEV slot
  • an LDEV 402 that is an identifier of the LDEV to which the LDEV slot belongs
  • a slot (SLOT) 403 that is an identifier of the LDEV slot
  • the SSD_ID 404 that is the identification number of the SSD corresponding to the slot
  • the SSD slot (SLOT) 405 that is the slot number in the SSD corresponding to the LDEV slot
  • the RAID_TYPE 406 of the RAID group that includes the SSD
  • the LDEV of the RAID group SECOND_SD_ID 407 which is an identifier of an SSD including another LDEV slot in the stripe including the slot, and N indicating a pointer when an entry of the same LDEV slot exists Has a XT_ENTRY_PTR408, the.
  • Valid 401 is represented by 2 bits. The upper 1 bit indicates whether or not the ACC 160 can perform read access, and the lower 1 bit indicates whether or not the ACC 160 can perform write access. For example, when the valid 401 is “00”, the ACC 160 cannot perform read access and write access to the data in the LDEV slot. When the valid 401 is “01”, the ACC 160 cannot perform read access and write access. "" Indicates that read access is possible and write access is impossible, and "11" indicates that both read and write access are possible.
  • the identifier of the SSD having the SSD slot for storing the parity data of the data set including the data in the SSD slot is set in the SECOND SSD ID 407.
  • the identifier of the SSD for storing the mirror data of the SSD is set to SECOND SSD ID407.
  • one or more SSDs to which one or more other SSD slots that are updated when the SSD slot is updated with write data belong are set in the SECOND SSD ID 407.
  • entry 409 has LDEV “0x000123”, slot “0x000000”), and read access is permitted, and no other entry exists.
  • the SSD that stores data in LDEV “0x000123” and slot “0x000000” constitutes RAID5, and parity data corresponding to the data set of data in SSD slot “0x000abc” Is stored in the SSD “0x0000004”.
  • the address conversion table 303 is not limited to the above mode.
  • the storage control software 206 may calculate these hash values instead of the LDEV 402 and the slot 403 and register them in the address conversion table using the hash values as keys. In this case, if there are entries having the same hash value, the storage control software 206 sets another empty entry, stores pointer information to the entry in the next entry NEXT_ENTRY_PTR 508, and manages the entry in a list structure. It may be.
  • the storage control software 206 calculates the hash value of the LDEV 402 and the slot 403, refers to the entry in the address conversion table 303 using the hash value as a key, and if the hash values match, it becomes a hit. If the hash values do not match, the process proceeds to the next entry, and if there is no entry with the matching hash value, it is determined that there is no hit. Further, each entry of the address conversion table 303 may be stored in a conventionally known associative memory (CAM; Content Addressable Memory).
  • CAM Content Addressable Memory
  • FIG. 5 is a diagram illustrating an example of the command management tables 211 and 311.
  • the command management tables 211 and 311 are a list of write commands that are offloaded to the ACC 160.
  • Each entry includes a command tag (CMD Tag) 1301 that uniquely identifies a write command, an FC command number (FC CMD) 1302 of the command, and a write destination SSD ID 1303 and SSD slot 1304 specified by the command.
  • CMD Tag command tag
  • FC CMD FC command number
  • RAID TYPE 1305 of the RAID group including the SSD and SECOND SSD ID 1206 indicating another SSD of the RAID group.
  • the storage control software 206 performs offload permission determination and registration of information in the address conversion table 303 for each write command.
  • the storage control software 206 stores information registered in the address conversion table 303 in the command management tables 211 and 311 in the memories 170 and 180 in association with the command tag.
  • the command management table 311 eliminates the need for the ACC 160 managing multiple commands to search the address conversion table 303 when receiving write data (FC_DATA), and obtains the SSDID, SSD slot, and SECOND SSD ID of the data storage destination directly from the command.
  • FC_DATA write data
  • the storage control software 206 can obtain the SSDID, the SSD slot, and the SECOND SSD ID directly from the command.
  • FIGS. 6 and 7 are sequence diagrams of write processing when the write target RAID type is RAID 5 according to the first embodiment.
  • FIG. 6 shows a part
  • FIG. 7 shows the remaining part.
  • SSD # 1 storing write data among a plurality of SSDs 190 constituting a RAID group
  • SSD # 2 storing parity data of a data set including the write data
  • FC_CMD Fibre Channel
  • S Source ID indicating the transmission source I / F on the host 10 side
  • D Detination ID indicating the transmission destination I / F
  • ExchangeID indicating the transmission destination I / F
  • RX Response Exchange
  • sequence number LUN
  • SCSI Serial Bus Interface
  • the SCSI command includes information such as an operation code (write / read type, etc.), an LBA (Logical Block Address), a transfer length, and the like.
  • the ExchangeID is an ID that uniquely identifies this command.
  • the host I / F 130 enqueues the FC command from the host 10 into a command queue (not shown) in the ACC 160 (FC CMD 607).
  • the ACC 160 dequeues the FC command, analyzes the syntax of the FC command, and converts it into a command handled in the controllers 110 and 120 (CMD analysis 608).
  • the ACC 160 transfers the command to the memory 170 (CMD transfer 609).
  • the storage control software 206 of the MP 140 acquires a command in the memory 170 (CMD 610).
  • CMD 610 the storage control software 206 refers to the operation code of the command and determines that it is a write command
  • the storage control software 206 executes the following steps.
  • the storage control software 206 acquires a set of write data storage destination LDEV ID and LDEV slot number from the write command LU, LBA, and the like. Then, based on the logical / physical conversion table 203 and RAID configuration information (not shown), the storage control software 206 obtains the SSD ID corresponding to the LDEV ID and LDEV slot number pair, the SSD slot pair, and the correspondence information such as RAID information. Acquire and register the correspondence information in its own memory 170.
  • the RAID information includes, for example, SECOND SSD ID, SECOND SSD slot number in the SECOND SSD corresponding to the SSD slot, and RAID type.
  • the correspondence information may be registered in the memory 170 as an address conversion table.
  • the storage control software 206 calculates a command tag that uniquely identifies the command based on the ExchangeID or RXID, and stores information on the command using the command tag as a key in the command management table 211 in the memory 170.
  • the storage control software 206 transmits information in the command management table 211 to the ACC 160 and synchronizes with the command management table 311 in the memory 180.
  • the ACC 160 refers to / edits / deletes the command management table 311 on the memory 180 having a small access latency
  • the MP 140 refers to / edits / deletes the command management table 211 on the memory 170.
  • the storage control software 206 may store information using the Exchange ID as a key instead of the command tag in the command management table 202.
  • the storage control software 206 determines whether or not to be offloaded, which will be described later (offload availability determination 611). When it is determined that offloading is possible, the storage control software 206 identifies the target cache slot assigned to the target LDEV slot based on the cache directory 205, and prohibits writing of MP140 data to the target cache slot.
  • the lock is executed (slot lock 612).
  • the slot lock is an operation of turning on the lock flag of the target cache slot of the cache directory information managed by the storage control software 206. By applying the slot lock to the target cache slot, the MP 140 is prohibited from writing data to the target cache slot.
  • the storage control software 206 registers the correspondence information in the memory 170 in the memory 180 of the ACC 160 (address conversion table registration 613). Specifically, the storage control software 206 transmits the correspondence information to the ACC 160, and the ACC 202 registers the correspondence information in the address conversion table 303 in the memory 180.
  • the storage control software 206 transmits a notification (XFER RDY) indicating completion of write data reception preparation based on the write command to the ACC 160 together with the Exchange ID (XFER RDY issue 614).
  • the ExchangeID is set to RX_ID of XFER RDY.
  • the ACC 160 transfers XFER RDY to the host I / F 130 (XFER RDY 615), and the host I / F 130 transfers XFER RDY to the host 10.
  • the host 10 transmits write data (FC data) based on the FC protocol to the storage apparatus 100 based on XFER RDY.
  • the host I / F 130 receives the write data and transfers it to the ACC 160 (FC DATA 616).
  • the ACC 160 stores the write data as buffer data 308 in the buffer area.
  • the ACC 160 analyzes the write data (analysis 617). Specifically, the ACC 160 acquires a command tag based on the Exchange ID included in the write data, and acquires the SSD ID, SSD slot number, and RAID information of the write data storage destination with reference to the command management table 311. Further, the ACC 160 specifies an identifier of an SSD slot (target parity slot) that is a parity data storage destination included in the stripe including the SSD slot.
  • an SSD slot target parity slot
  • the ACC 160 searches whether the acquired SSDID and SSD slot number have been registered in the address conversion table 303 (address search 618).
  • ACC 160 checks DIF (Data Integrity field) and confirms data validity (DIF check 619).
  • the DIF is data protection information including a CRC (Cyclic Redundancy Check), an LBA, and an application tag.
  • the ACC 160 searches whether or not the identified target parity slot has been registered in the in-process parity number table 304 (not shown). When the target parity slot is not registered, it means that the update process of the old parity data in the target parity slot is not executed. At this time, the ACC 160 registers the target parity slot in the processing parity number table 304 (processing parity SLOT number registration 620). As a result, for the subsequent write commands, the target parity slot is locked, and transmission of an instruction for updating the old parity data can be prohibited. If the target parity slot is registered in the currently processed parity number table 304, it means that the update process of the old parity data in the target parity slot is being executed by another write process. In this case, the ACC 160 waits for the target parity slot to be unlocked, and after releasing the lock, registers the target parity slot in the in-process parity number table 304 and transmits an instruction to update the old parity data.
  • the ACC 160 instructs the write data storage destination SSD (SSD # 1) to update the write data and update the old parity data accompanying the update of the write data (parity offload instruction 621).
  • the SSD # 1 acquires write data from the ACC 160 based on the parity offload instruction (new data 707).
  • the SSD # 1 calculates intermediate parity data from the acquired write data (new data) and data (old data) in the SSD slot that is the storage destination of the write data (intermediate parity generation 708).
  • the intermediate parity data is a value obtained by exclusive ORing the write data and the old data.
  • the SSD # 1 transmits the generated intermediate parity data and a parity generation instruction to the parity data storage destination SSD # 2 (intermediate parity data 709).
  • the SSD # 2 receives the parity generation instruction and the intermediate parity data, and calculates new parity data from the intermediate parity data and the old parity data in the target parity slot corresponding to the data set including the write data.
  • the new parity data is a value obtained by exclusive ORing the intermediate parity data and the old parity data.
  • the SSD # 2 transmits a report indicating that the calculation of the new parity data is completed to the ACC 160 (completion report 711).
  • the ACC 160 transmits a commit instruction having the write data and the new parity data as final data to the SSDs # 1 and # 2 (commit instructions 712 and 713).
  • SSD # 1 updates the old data to the write data based on the commit instruction 712. Further, SSD # 1 switches the allocation of the FTL (Flash Translation Layer) address translation map (not shown) from the storage location of the old data to the storage location of the write data (map switching 714), and notifies the ACC 160 of the completion (switching complete) Response 715).
  • FTL Flash Translation Layer
  • the SSD # 2 updates the old parity data to the new parity data based on the commit instruction 713. Further, the SSD # 2 switches the allocation of the FTL address conversion map (not shown) from the storage location of the old parity data to the storage location of the new parity data (map switching 716), and notifies the ACC 160 of the completion (switching completion response 717). .
  • the ACC 160 receives the switching completion responses 716 and 717, and stores the target cache slot lock release instruction for the MP 140 in the memory 170 (slot release instruction 718).
  • the storage control software 206 acquires a release instruction (slot release instruction 719) and releases the lock of the target cache slot (slot release 720). Further, the storage control software 206 deletes the target command from the command management table 211.
  • the ACC 160 deletes the target parity slot number from the processing parity number table 304 and deletes the target command from the command management table 311 (processing parity SLOT number deletion 721). Further, the ACC 160 deletes the entry in the address conversion table 303.
  • the ACC 160 transmits a response indicating the success of the write process to the Host I / F 130 (Good RSP response 722), the host I / F 130 transfers the response to the host 10, and the write process is completed.
  • the MP140 executes the storage control software 206 to perform offload permission determination and slot lock that require complex control, while the ACC 160 targets the LDEV slot determined to be offloadable.
  • the MP140 executes the storage control software 206 to perform offload permission determination and slot lock that require complex control, while the ACC 160 targets the LDEV slot determined to be offloadable.
  • the load on the write processing is distributed and IO acceleration is enabled.
  • the slot lock is applied to the cache slot corresponding to the LDEV slot based on the write command, and the MP140 receives another IO command. Accordingly, access to the cache slot can be prevented. Thereby, it is possible to ensure the consistency of data in the SSD slot corresponding to the cache slot to which the slot lock is applied.
  • the parity data of the data set including the write data can be generated based on the instruction from the ACC 160 by other write processing. It can also be prevented from being updated.
  • the memory 170 on the MP 140 side also has the parity number table 304 being processed, so that access to the target parity data from the MP 140 side during the write process can be prohibited. For example, when the MP 140 performs another normal write process on other data in the data set to which the write data belongs during the execution of the write process, the normal update process is completed until the parity update based on the write process is completed. It is possible to wait for the MP 140 to transmit a parity update instruction based on the write process, and to ensure the consistency of the target parity data.
  • FIG. 8 is a flowchart illustrating an example of offload availability determination.
  • the offload availability determination is a determination as to whether the storage control software 206 performs the write process by itself or causes the ACC 160 to perform it instead (see 611 in FIG. 6).
  • step S801 the storage control software 206 determines whether or not the load of the MP 140 is higher than a threshold value.
  • the storage control software 206 advances the process to step S808.
  • the storage control software 206 advances the process to step S802.
  • step S802 the storage control software 206 determines whether the write command has a cache hit. If there is a cache hit (S802; Yes), it means that the cache slot is assigned to the target LDEVS lot and the old data of the write data is stored in the cache slot, so the storage control software 206 proceeds to step S808. To proceed. On the other hand, in the case of a cache miss (S802; No), it means that no cache slot is assigned to the target LDEV slot and no old data is stored in the cache slot, so the storage control software 206 proceeds to step S803. To proceed.
  • step S803 based on the management information 312, the storage control software 206 enables various functions (functions such as remote copy function, snapshot, deduplication, and thin provisioning) in the target LDEV slot, or performs write processing on the ACC 160. It is determined whether or not a specific condition for offloading is satisfied. If any of the functions is valid and does not meet the specific condition (S803; Yes), the storage control software 206 advances the process to step S808. On the other hand, if any of the functions is invalid or the specific condition is met (S803; No), the storage control software 206 advances the process to step S804.
  • functions functions such as remote copy function, snapshot, deduplication, and thin provisioning
  • the storage control software 206 specifically performs the determination in S803 as follows.
  • the deduplication function is a function that analyzes data stored in the storage, detects duplicate data, and eliminates it for capacity reduction. Therefore, it is necessary to analyze the write data, and when the storage control software receives the FCP_CMD, the address conversion information cannot be determined, so it is determined that the accelerator offload is not possible.
  • step S804 the storage control software 206 determines the locality of the write access from the host.
  • locality means that write accesses are concentrated in a local address range.
  • the storage control software 206 monitors the write access destination address for a certain period of time, and determines that there is locality when there are a certain number of write accesses within a certain address range (for example, the same stripe). If the write access being processed has locality (S804; Yes), the storage control software 206 advances the process to step S808. On the other hand, if the access has no locality (S804; No), the storage control software 206 advances the process to step S805.
  • step S805 the storage control software 206 determines whether the write access from the host is sequential. For example, the storage control software 206 determines that the sequential access occurs when a write access occurs a predetermined number of times in a continuous area. If it is not sequential (S805; No), the storage control software 206 returns to the write processing of this embodiment (S806) and ends the processing. On the other hand, in the case of sequential (S805; Yes), the storage control software 206 ends the write process of this embodiment, returns to the normal storage control process (S808), and ends the process.
  • the process when the predetermined condition is not met, the process returns to the write process of this embodiment, and exclusive control is performed on the target slot and the target parity slot so that the MP140 does not perform write access.
  • the ACC 160 can perform write access.
  • the ACC 160 performs write access without complicated processing, so that the load on the MP 140 can be distributed.
  • the MP140 executes write access for the following reasons.
  • IOPS When there is no locality of write access from the host in the target slot, IOPS can be improved by offloading the write processing to the ACC 160 and the load on the MP 140 can be distributed.
  • the ACC 160 performs the exclusive control of the parity slot, if the parity slot needs to be updated due to the update of other write data, the write access waiting for the exclusive release increases and the processing efficiency may decrease. There is. For this reason, when there is locality, the storage control software 206 of the MP 140 can appropriately perform these processes that occur along with the write process.
  • FIGS. 9 and 10 are sequence diagrams of the write process when the write target RAID type is RAID 1 according to the first embodiment.
  • FIG. 9 shows a part
  • FIG. 10 shows the remaining part.
  • SSD # 1 for storing write data among a plurality of SSDs 190 constituting a RAID group, and that the mirror disk of SSD # 1 is SSD # 2. Further, the same steps as the write processing in the case of RAID 5 described with reference to FIGS. 6 and 7 are simplified or omitted by using the same reference numerals.
  • step 611 If it is determined in step 611 that offload is possible, the storage control software 206 executes slot lock for the cache slot in the cache area corresponding to the target LDEV slot and the LDEV slot storing the mirror data of the write data. (Slot lock 1012).
  • the ACC 160 transmits the write data to the SSDs # 1 and # 2 (new data 1007 and 1008).
  • the SSDs # 1 and # 2 respectively notify the ACC 160 that the reception of the write data has been completed (completion reports 1009 and 1010).
  • the ACC 160 transmits a commit instruction with the write data as the final data to the SSDs # 1 and # 2 (commit instructions 1012, 1013).
  • SSD # 1 and # 2 update old data to write data based on commit instructions 1012, 1013, respectively. Further, the SSDs # 1 and # 2 respectively switch the assignment of the FTL address conversion map (not shown) from the storage location of the old data to the storage location of the write data (map switching 714 and 1016), and notify the ACC 160 of the completion ( Switching completion response 715, 1017).
  • the following processing is the same as the example of FIG. 7 except that the processing parity SLOT number deletion 721 is not performed.
  • the MP 140 executes the storage control software 206 to perform offload permission determination and slot lock requiring complicated control.
  • the ACC 160 distributes the load required for write processing by taking on routine processing among IO processing such as analysis and address conversion processing for slots determined to be offloadable, and enables IO acceleration. .
  • FIGS. 11 to 13 are sequence diagrams of the write processing when the write target RAID type is RAID 5 according to the second embodiment. A part is shown in FIGS.
  • the second embodiment describes a case of a storage apparatus having a physical storage device (SSD 290) that does not have a parity update function.
  • the ACC 160 performs parity calculation.
  • the SSD that stores the write data among the plurality of SSDs 290 constituting the RAID group is described as SSD # 1
  • the SSD that stores the parity data of the data set including the write data is described as SSD # 2.
  • the host I / F 130 transmits the FC command from the storage apparatus 100 to the memory 170 (FC CMD1106).
  • the ACC 160 acquires the FC command from the memory 170 (FC CMD 1107).
  • FC CMD 1107 The processes from CMD analysis 608 to slot lock 612 are the same as in the first embodiment.
  • the storage control software 206 stores the correspondence information as an address conversion table in the memory 170 (address conversion table registration 1114).
  • the storage control software 206 enqueues a notification (XFER RDY) indicating the completion of write data reception preparation based on the write command into the queue of the ACC 160 on the memory 170 together with the Exchange ID (XFER RDY 1115).
  • the ExchangeID is set to RX_ID of XFER RDY.
  • ACC160 acquires XFER RDY from the memory 170 (XFER RDY1116), and enqueues it in the queue of the host I / F130 on the memory 170 (XFER RDY1117).
  • the host I / F 130 acquires the XFER RDY from the memory 170 (XFER RDY 1118) and transfers it to the host 10.
  • the host 10 transmits write data (FC data) based on the FC protocol to the storage apparatus 100 based on XFER RDY.
  • the host I / F 130 receives the write data and transfers it to the memory 170 (FC DATA 1119).
  • the ACC 160 acquires the FC header of the write data from the memory 170 (FC header 1220), and analyzes the FC header. These processes are the same as 617 to 620 in FIG.
  • the ACC 160 transmits an instruction to read old data specifying the write data storage destination SSD # 1 and the target SSD slot to the memory 170 (old data read instruction 1207).
  • the storage control software 206 acquires an old data read instruction from the memory 170 and transmits it to the SSD # 1 (old data read instruction 1208).
  • the ACC 160 transmits an instruction to read the old parity data specifying the parity data storage destination SSD # 2 and the target parity slot to the memory 170 (old parity read instruction 1209).
  • the storage control software 206 acquires the old parity read instruction from the memory 170 and transfers it to the SSD # 2 (old parity read instruction 1210).
  • the SSD # 1 transmits old data to the memory 170 (old data 1211), and transmits an old data read completion notification to the memory 170.
  • the storage control software 206 transfers the old data read completion notification to the ACC 160.
  • the SSD # 2 transmits old parity data to the memory 170 (old parity 1212), and transmits a read completion notification of the old parity data to the memory 170.
  • the storage control software 206 transfers the old parity data read completion notification to the ACC 160.
  • the ACC 160 acquires old data and old parity data from the memory 170 based on the read completion notification of old data and old parity data (old data, old parity read completion detection 1313).
  • the ACC 160 calculates intermediate parity data from the write data and the old data, and calculates new parity data from the intermediate parity data and the old parity data (parity calculation 1314).
  • the ACC 160 transmits the write data designating the target SSD slot of the SSD # 1 and its write instruction to the memory 170 (new data write instruction 1315). Based on the write data write instruction, the storage control software 206 transmits the write data in the memory 170 to the SSD # 1 (new data 1316). The SSD # 1 stores the write data in the target SSD slot and updates the old data. The SSD # 1 transmits a write data write completion notification to the memory 170, and the storage control software 206 transfers the write completion notification to the ACC 160.
  • the ACC 160 receives the write completion notification of the write data (new data write completion detection 1317), and transmits the new parity data designating the target SSD slot of the SSD # 2 and the write instruction to the memory 170 based on the address conversion table 303. (New parity write instruction 1318).
  • the storage control software 206 transmits the new parity data in the memory 170 to the SSD # 2 based on the new parity data write instruction (new parity 1319).
  • the SSD # 2 stores the new parity data in the target parity slot and updates the old parity data.
  • the SSD # 2 transmits a new parity data write completion notification to the memory 170, and the storage control software 206 transfers the write completion notification to the ACC 160.
  • the ACC 160 receives the new parity data write completion notification (new parity write completion detection 1320), and stores the target cache slot lock release instruction for the MP 140 in the memory 170 (slot release instruction 718).
  • the subsequent processing (719 to 722) is the same as that in the first embodiment (see FIG. 7).
  • FIG. 14 and 15 are sequence diagrams of the write process when the write target RAID type is RAID 1 according to the second embodiment.
  • FIG. 14 shows a part
  • FIG. 15 shows the remaining part.
  • the SSD that stores the write data among the plurality of SSDs 290 constituting the RAID group is described as SSD # 1
  • the mirror disk of SSD # 1 is described as SSD # 2. Also, the same steps as those of the write processing described in FIGS. 6 to 10 of the first embodiment and FIGS.
  • step 611 If it is determined in step 611 that offload is possible, the storage control software 206 executes slot lock for the cache slot in the cache area corresponding to the target LDEV slot and the LDEV slot storing the mirror data of the write data. (Slot lock 1412).
  • the ACC 160 transmits write data designating the target SSD slot of SSD # 1 and its write instruction to the memory 170 (new data write instruction 1507).
  • the storage control software 206 transmits the write data write instruction and write data in the memory 170 to the SSD # 1 (new data write instruction 1508, new data 1509).
  • the SSD # 1 stores the write data in the target SSD slot and updates the old data.
  • the SSD # 1 transmits a write completion notification of write data to the memory 170 (write completion report 1510).
  • the storage control software 206 transfers the write completion notification in the memory 170 to the ACC 160 (write completion report 1511).
  • the ACC 160 receives the write completion notification of the write data, and based on the address conversion table 303, transmits the write data specifying the target SSD slot of the SSD # 2 and its write instruction to the memory 170 (new data write instruction 1512).
  • the storage control software 206 transmits the write data write instruction and write data in the memory 170 to the SSD # 2 (new data write instruction 1513, new data 1514).
  • the SSD # 2 stores the write data in the target SSD slot and updates the old data.
  • the SSD # 2 transmits a write data write completion notification to the memory 170 (write completion report 1515).
  • the storage control software 206 transfers the write completion notification in the memory 170 to the ACC 160 (write completion report 1516).
  • the ACC 160 receives the write completion notification of the write data, and stores the slot lock release instruction of the target cache slot for the MP 140 in the memory 170 (slot release instruction 718).
  • the subsequent processing (719 to 722) is the same as that in the first embodiment (see FIG. 7).
  • the write processing can be performed even when the ACC 160 does not use an SSD having a parity update function by performing parity calculation.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

プロセッサは、自身の状態に基づいて、ホスト計算機からのライトコマンドに基づくライト処理を自身が行うか又は制御デバイスに行わせるかを判定する。制御デバイスに行わせると判定した場合、プロセッサは、キャッシュ情報に基づいて、ライトコマンドで指定された第1論理領域に対応する第1キャッシュ領域に対し、データの書込みを禁止するデータロックを設定し、論物変換情報に基づいて、第1論理領域に対応する第1物理記憶デバイス内の第1デバイス領域を示すアドレス変換情報を制御デバイスに送信する。制御デバイスは、ライトデータを受信し、アドレス変換情報に基づいて、第1物理記憶デバイスに対してライトデータと、第1デバイス領域へのライトデータの書込み指示と、を送信する。制御デバイスは、第1物理記憶デバイスからライトデータの書込み完了通知を受信し、第1キャッシュ領域のデータロックを解放するロック解放指示をプロセッサに送信する。

Description

ストレージ装置、及び方法
 本発明は、ストレージ装置に関する。
 ストレージ装置は、複数の物理記憶デバイス(記録メディア)と、複数の物理記憶デバイスに接続され、ホストコンピュータからI/O(Input or /Output)要求を受け付けるストレージコントローラとを備える。ストレージコントローラは、複数の物理記憶デバイスを束ねてRAID(Redundant Arrays of Inexpensive Disks)グループを構成し、性能と耐障害性を同時に実現する。物理記憶デバイスとしては、例えばHDD(Hard Disk Drive)が知られている。
 また、近年、ストレージ装置の物理記憶デバイスとして、フラッシュメモリで実現されるSSD(Solid State Drive)が広く利用され始めている。SSDは、従来のハードディスクHDDに比較して、レスポンス性能、低消費電力などの特長を持つ。特に、SSDのIO性能は、HDDの1000倍近いものもある。
 一方で、ストレージコントローラの性能がSSDの性能に追いついておらず、ボトルネックとなってしまう問題がある。例えば、フラッシュドライブ(SSD)を高々十数台搭載した場合でも、ストレージコントローラの性能がボトルネックとなり、フラッシュドライブの性能を十分に引き出すことができない場合がある。
 例えば、特許文献1に開示のコントローラは、CPUとメモリとストレージI/FとディスクI/Fを有し、ホスト計算機からのIO要求をCPUによるソフトウェアで処理する。また例えば、特許文献2では、IO要求をCPUとは別の専用ハードウェアによって処理する高性能なストレージコントローラの実現方法を開示している。
特開2014-41646 米国特許出願公開第2013/0145088号明細書
 特許文献1で開示されるようなコントローラで利用されるCPUは、ムーアの法則にしたがって性能向上を遂げてきた。しかしながら、前述したような物理記憶デバイスの変化の中で、コントローラと物理記憶デバイスの間に大きな性能ギャップが生じており、ストレージコントローラの性能がボトルネックとなる場合がある。
 また、特許文献2による技術では、ストレージコントローラの高性能化を実現することは可能である。しかし、専用ハードウェアで処理を行うため、ストレージ装置特有の機能が提供できないという問題がある。例えば、ストレージ装置特有の機能として、例えばThin Provisioning、ボリュームのレプリケーション、スナップショット、重複排除、データ圧縮などが挙げられる。これらの機能を提供するためには、これらの機能を有するプログラムをプロセッサ上で実行する必要がある。加えて、ホスト計算機からのライト要求に基づくライト処理においては、複数のプロセッサ(つまり、プロセッサ及び制御デバイス)を使用することによりデータの整合性が担保されないという課題がある。
 ストレージ装置は、ホスト計算機に接続されたコントローラと、コントローラに接続された複数の物理記憶デバイスと、を備える。コントローラは、ホスト計算機及び複数の物理記憶デバイスに接続され、かつ、複数の物理記憶デバイスに基づく論理ボリュームをホスト計算機に提供するプロセッサと、プロセッサに接続されたメモリと、ホスト計算機、複数の物理記憶デバイス及びプロセッサに接続された制御デバイスと、を有する。メモリは、論理ボリューム内の論理領域及び複数の物理記憶デバイス内のデバイス領域を対応づける論物変換情報と、論理ボリューム内の論理領域及びメモリ内のキャッシュ領域を対応付けるキャッシュ情報とを記憶する。プロセッサは、プロセッサの状態に基づいて、ホスト計算機からのライトコマンドに基づくライト処理をプロセッサが行うか又は制御デバイスに行わせるかを判定する。プロセッサがライト処理を行うと判定した場合、プロセッサは、キャッシュ情報に基づいて、ライトコマンドで指定された第1論理領域に対応する第1キャッシュ領域を特定し、ライトコマンドに基づくライトデータを第1キャッシュ領域へ書き込む。ライト処理を制御デバイスに行わせると判定した場合、プロセッサは、キャッシュ情報に基づいて、ライトコマンドで指定された第1論理領域に対応する第1キャッシュ領域に対し、データの書込みを禁止するデータロックを設定し、論物変換情報に基づいて、第1論理領域に対応する第1物理記憶デバイス内の第1デバイス領域を示すアドレス変換情報を制御デバイスに送信する。制御デバイスは、ライトデータを受信し、アドレス変換情報に基づいて、第1物理記憶デバイスに対してライトデータと、第1デバイス領域へのライトデータの書込み指示と、を送信する。第1物理記憶デバイスは、書込み指示に基づき、第1デバイス領域にライトデータを書き込む。制御デバイスは、第1物理記憶デバイスからライトデータの書込み完了通知を受信し、第1キャッシュ領域のデータロックを解放するロック解放指示を前記プロセッサに送信する。プロセッサは、解放指示に基づき第1キャッシュ領域のデータロックを解放する。
 ライト処理について、ストレージコントローラの性能を向上させることができる。
実施例1に係る計算機システムの構成図の一例である。 MP140に接続されたメモリ170の構成を示す。 ACC160のメモリ180の構成を示す。 アドレス変換テーブル303の一例である。 コマンド管理テーブル302の一例を示す図である。 実施例1に係るライト対象のRAIDタイプがRAID5の場合のライト処理のシーケンス図の一部である。 実施例1に係るライト対象のRAIDタイプがRAID5の場合のライト処理のシーケンス図の残りの一部である。 オフロード可否判定の一例を示すフローチャートである。 実施例1に係るライト対象のRAIDタイプがRAID1の場合のライト処理のシーケンス図の一部である。 実施例1に係るライト対象のRAIDタイプがRAID1の場合のライト処理のシーケンス図の残りの一部である。 実施例2に係るライト対象のRAIDタイプがRAID5の場合のライト処理のシーケンス図の一部である。 実施例2に係るライト対象のRAIDタイプがRAID5の場合のライト処理のシーケンス図の他の一部である。 実施例2に係るライト対象のRAIDタイプがRAID5の場合のライト処理のシーケンス図の残りの一部である。 実施例2に係るライト対象のRAIDタイプがRAID1の場合のライト処理のシーケンス図の一部である。 実施例2に係るライト対象のRAIDタイプがRAID1の場合のライト処理のシーケンス図の残りの一部である。
 以下の説明では、各実施例の計算機システムが有する各情報について、テーブルやリストなどの表現で説明することがある。しかし、各情報のデータ構造は限定されず、他のデータ構造であってもよい。各情報はデータ構造に依存しないため、例えば、「kkkテーブル」または「kkkリスト」を「kkk情報」と呼ぶことができる。
 また、以下の説明において、プロセッサは、プログラムを実行し、記憶資源(例えば、メモリ)及び/又は通信インターフェイスデバイス(例えば、通信ポート)等を用いながら処理を行う。処理の主体について、以下の説明では各種のプログラムを主体とする場合があるが、プログラムを実行するプロセッサを主体としてもよい。また、プロセッサを主体とする処理は、1以上のプログラムを実行する事によりおこなわれると解釈されてもよい。プロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサであるが、処理の一部(例えば、暗号化/復号化、圧縮/伸張)を実行するハードウェア回路を含んでもよい。
 また、以下の説明において、ストレージ装置は、1つ以上の物理記憶デバイスと、物理記憶デバイスを制御するストレージコントローラとを有する。ストレージコントローラは、1つ以上の物理記憶デバイスに基づきホストコンピュータに論理ボリュームを提供する。論理ボリュームは、実論理ボリュームであっても良いし、仮想論理ボリュームであっても良い。実論理ボリュームは、ストレージ装置が有する1以上の物理的な記憶デバイスに基づく論理ボリュームである。仮想論理ボリュームとしては、例えば、TP(Thin Provisioning)-論理ボリュームと、スナップショット論理ボリュームとがあってよい。
 以下の説明では、物理記憶デバイスとして、不揮発性半導体メモリの1つであるフラッシュドライブを例にとって説明する。フラッシュドライブは、例えばSSD(Solid State Drive)である。なお、物理的な記憶デバイスは、不揮発性の物理的な記憶デバイスであれば、不揮発性半導体の記憶デバイスでなくてもよく、例えば、HDD(Hard Disk Drive)であってよい。また、複数の物理的な記憶デバイスにより1以上のRAIDグループ(Redundant Array of Independent (or Inexpensive) Disks)が構成されてよい(RAIDグループはパリティグループと呼ばれてもよい)。
 また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号を使用し、同種の要素を区別して説明する場合には、その要素の参照符号に代えて、その要素に割り振られた識別子(例えば番号及び符号のうちの少なくとも1つ)を使用することがある。
 以下、幾つかの実施例を説明する。
 図1は、実施例1に係る計算機システムの構成図の一例である。
 計算機システムは、ホスト計算機(ホストサーバ)10と、ストレージ装置100とを有する。ホスト計算機10を、以下、単にホスト10という場合がある。
 ホスト10は、ネットワーク30を介してストレージ装置100に接続されている。ネットワーク30は、ホスト10とストレージ装置100との間でコマンドやデータをやり取りするための通信路であり、例えば、SAN(Storage Area Network)等から構成される。
 ストレージ装置100は、ストレージコントローラ110、120と、物理記憶デバイス(不揮発性記憶媒体)190とを有する。物理記憶デバイス190は、例えばSSD(solid state drive)等の高速なドライブである。以下の説明及び図面では、ストレージコントローラ110、120を、単にコントローラ、物理記憶デバイス190をSSD190という場合がある。なお、本実施例では物理記憶デバイス190は、SSDに限定されるものではなく、例えばHDD(Hard Disk Drive)等他の媒体であってもよい。
 図1では、コントローラ110、120が冗長化されている。しかし、コントローラは、2つに限られず、1つであってもよいし3つ以上であってもよい。なお、コントローラ110と、コントローラ120とは、基本的に同じ構成である。このため、以下では、必要のない限り、コントローラ120の説明を省略する。
 コントローラ110は、IO要求(ライトコマンド又はリードコマンド)を受信し、RAID構成のSSD190を特定して、データのリードやライトを実行する。コントローラ110は、ホストインターフェース130、プロセッサ140、アクセラレータプロセッサ160、メモリ170、180、及びスイッチ(SW)150を備える。以下の説明及び図面では、ホストインターフェース130をHostI/F130、プロセッサ140をMP(Microprocessor)140、アクセラレータプロセッサ160をACC160、スイッチをSW150と省略する場合がある。
 スイッチ150は、信号線を介してHostI/F130、MP140、ACC160、及び、各SSD190に接続される。信号線は、例えば、コントローラ110の内部データ転送パスとして使われるPCI Expressであるが、これに限られない。また、MP140とACC160とは、例えば、Non Transparent Bridgeを介して接続されており、相互に通信することが可能である。しかし、MP140とACC160との間の接続は、Non Transparent Bridgeに限られない。
 コントローラ110のスイッチ150と、コントローラ120のスイッチ150が、信号線を介して接続される。これにより、コントローラ110内のMP140とコントローラ120内のMP140との間の通信が可能である。
 メモリ170は、MP140に接続される。メモリ170は、MP140の主記憶媒体であり、MP140が実行するプログラム(ストレージ制御ソフトウェア206)及びMP140が参照する管理情報等を格納する領域と、一時的にリード/ライトデータを格納するキャッシュ領域とを備える。なお、メモリ170は、MPに接続されていても内蔵されていてもどちらでもよい。
 メモリ180は、ACC160に接続される。メモリ180は、ACC160の主記憶媒体であり、ACC160が参照する情報などが格納される領域を備える。制御デバイスがACC160及びメモリ180を有する。本実施例では、制御デバイスは、ASIC(application specific integrated circuit)やFPGA(field-programmable gate array)等のハードウェアで実現される。MP140とACC160がライト処理を分担することにより、高性能(高速)に処理可能となる。なお、ACC160は、MP等のプロセッサによって実現されてもよい。
 なお、以下では、制御デバイス内にACC160及びメモリ180を内蔵した例を説明するが、ACC160が制御デバイスであり、メモリ180は制御デバイスに外付けされていてもよい。
 HostI/F130は、ネットワーク30を介してホスト10に接続される。HostI/F130は、ホスト10とコントローラ110との間のデータ転送プロトコルと、コントローラ110内のデータ転送プロトコルとを相互に変換する。
 コントローラ110のMP140が、1つまたは複数のSSD190に基づき、ホスト10に論理ボリューム(LU)を提供する。なお、MP140は、ホスト10からライトデータを受信した場合、そのライトデータを一旦メモリ170のキャッシュ領域に格納し、その後、ライトデータをSSD190に送信する。
 一方、ACC160は、ホスト10からライトデータを受信した場合、当該キャッシュ領域には格納せず、メモリ180の後述するバッファ領域に格納した後、SSD190に送信する。なお、ACC160は、ライトデータをバッファ領域に格納せず、直接、SSD190へ送信してもよい。
 各SSD190は、内部に図示しないCPU及びメモリ等を備え、データのリード及びライト処理や、制御コマンドの処理を実行する。各SSD190は、コントローラ110及び120のスイッチ150を介してホスト10に接続されている。
 コントローラ110、120は、ホスト10に論理ボリュームをLU(Logical Unit)として提供する。コントローラ110、120は、論理ボリュームをLDEV(Logical Device)として管理する。
 本実施例では、コントローラ110、120は、LDEVを複数のLDEVスロットに分割し、SSDを複数のSSDスロットに分割し、キャッシュ領域を複数のキャッシュスロットに分割する。LDEVスロット、SSDスロット、キャッシュスロットのそれぞれは、同じ大きさの領域である。LDEVスロットとSSDスロットは、固定的に対応づけられて管理される。また、キャッシュスロットにデータが格納された場合には、LDEVスロット及びSSDスロットにキャッシュスロットが割り当てられることとなる。なお、LDEV、SSD、キャッシュ領域のそれぞれの管理単位は上述のものに限られない。
 本実施例のSSD190は、パリティ更新機能を有する。パリティ更新機能とは、受信したライトデータから、ライトデータを含むデータセットのパリティデータを生成・更新する機能である。具体的には、例えば、SSD190に格納された旧データと、その旧データを更新するライトデータとから中間パリティを生成し、旧データを含むデータセットの旧パリティデータと中間パリティとからパリティデータを生成し、旧パリティデータを新パリティデータに更新する機能である。
 図2は、MP140に接続されたメモリ170の構成を示す。
 メモリ170は、キャッシュディレクトリ205と、ストレージ制御ソフトウェア206と、キャッシュデータ209と、コマンド管理テーブル211と、管理情報212と、論物変換テーブル203とを有する。
 ストレージ制御ソフトウェア206はIO処理(ライト処理/リード処理)を実行するソフトウェアである。キャッシュデータ209は、メモリ170内のキャッシュ領域に格納されたデータである。管理情報212はLDEV毎にストレージ特有の各種機能(リモートコピー機能、スナップショット、重複排除、シンプロビジョニングなどの機能)のあり/なしなどを示す情報である。コマンド管理テーブル211は、メモリ180が有するコマンド管理テーブル311と同じテーブルである。キャッシュディレクトリ305は、メモリ170内のキャッシュ領域を管理するための情報である。
 キャッシュディレクトリ305は、キャッシュスロット番号に割当てられたLDEVスロット番号を記憶する。つまり、MP140は、キャッシュディレクトリ305を検索することで、LDEVスロットのデータがキャッシュ領域に記憶されているか、及び、当該データがキャッシュスロットに記憶されている場合にはそのキャッシュスロット番号を検索できる。
 論物変換テーブル203は、LDEV及びLDEVスロットの組と、SSD190及びSSDスロットの組を対応づけるテーブルである。
 図3は、ACC160のメモリ180の構成を示す。
 メモリ180は、コマンド管理テーブル311と、アドレス変換テーブル303と、処理中パリティ番号テーブル304と、アクセラレータファームウェア307と、バッファデータ308と、を有する。
 コマンド管理テーブル311は、ACC160が処理中のコマンド情報を記憶するためのテーブルである。MP160が有するコマンド管理テーブル211との間で同期がとられている。アドレス変換テーブル303は、LDEVスロットと、当該LDEVに対応付けられた1つ以上のSSDスロットとの対応関係を記憶するテーブルである。詳細は後述する。処理中パリティ番号テーブル304は、ライト処理中のパリティデータ格納先のSSDID及びSSDスロット番号を記憶するテーブルである。アクセラレータファームウェア307は、ACC160で動作するIO処理のためのソフトウェアである。バッファデータ308は、メモリ180内に一時的にバッファリングされたデータである。なお、本実施例では、処理中パリティ番号テーブル304は、MP140側のメモリ170も有しており、これらの処理中パリティテーブル204は同期がとられている。
 例えば、ACC160のメモリ180(内蔵メモリ及び外付けメモリのいずれでも可)が複数存在する場合、アドレス変換テーブル303は、各メモリ内にそれぞれ格納されてよい。この場合、1つのアドレス変換テーブル303に対してエントリ登録・削除などの操作した場合、他のアドレス変換テーブル303との同期がとられる。
 なお、各メモリ170、180内のテーブル及びソフトウェア及びデータは、物理的に1つのメモリに格納されている必要はなく、MP14に接続された1つ以上のメモリ170、ACC160に接続された1つ以上のメモリに分散して格納されていてもよい。
 図4は、アドレス変換テーブル303の一例である。
 アドレス変換テーブル303は、後述のライト処理においてストレージ制御ソフトウェア206がACC160のメモリ180に登録するテーブルである。ストレージ制御ソフトウェア206は、ホスト10が指定する論理ボリューム番号(LUN(Logical Unit Number))及びLBA(Logical Block  Address)を、コントローラ110、120が管理する論理アドレス(LDEV番号及びLDEVスロット番号)に変換し登録する。LDEVスロット番号はLBAの上位ビットを抽出した番号である。なお、ストレージ制御ソフトウェア206は、LUN、LBA、及びS ID(Source ID)を、LDEV番号及びLDEVスロット番号に変換してもよい。また、ストレージ制御ソフトウェア206は、アドレス変換テーブル303を自身のメモリ170にも登録してよい。
 アドレス変換テーブル303は、LDEVスロット毎のエントリを有する。各エントリは、ACC160が当該LDEVスロットにIOアクセスできるか否かを示すValid401と、当該LDEVスロットが属するLDEVの識別子であるLDEV402と、当該LDEVスロットの識別子であるスロット(SLOT)403と、当該LDEVスロットに対応するSSDの識別番号であるSSD_ID404と、当該LDEVスロットに対応するSSD内のスロット番号であるSSDスロット(SLOT)405と、当該SSDを含むRAIDグループのRAID_TYPE406と、当該RAIDグループの当該LDEVスロットを含むストライプ内の他のLDEVスロットを含むSSDの識別子であるSECOND_SD_ID407と、同じLDEVスロットのエントリが存在する場合のポインタを示すNEXT_ENTRY_PTR408と、を有する。
 valid401は2ビットで表される。上位の1ビットは、ACC160が、リードアクセス可能か否かを示し、下位の1ビットは、ACC160がライトアクセス可能か否かを示す。例えば、valid401が”00”の場合、ACC160は当該LDEVスロット内のデータに対し、リードアクセス及びライトアクセスが不可能であり、”01”の場合はリード不可能かつライトアクセス可能であり、”10”の場合はリードアクセス可能かつライトアクセス不可能であり、”11”の場合はリード及びライトアクセス共に可能であることを示す。
 RAIDタイプ406が「RAID5」の場合、当該SSDスロット内のデータを含むデータセットのパリティデータを格納するSSDスロットを有するSSDの識別子がSECOND SSD ID407に設定される。また、RAIDタイプ406が「RAID1」の場合、当該SSDのミラーデータを格納するためのSSDの識別子がSECOND SSD ID407に設定される。なお、他のRAIDタイプにおいても、SECOND SSD ID407には、ライトデータでSSDスロットが更新されることに伴い更新される他の1つ以上のSSDスロットが属する1つ以上のSSDが設定される。
 例えば、エントリ409は、LDEV「0x000123」、スロット「0x000000」)はリードアクセスが許可され、他のエントリが存在しない。また、LDEV「0x000123」、スロット「0x000000」内のデータを格納するSSD(SSD ID「0x000000」)は、RAID5を構成しており、SSD スロット「0x000abc」内のデータのデータセットに対応するパリティデータはSSD「0x0000004」に格納されている。
 なお、アドレス変換テーブル303は、上記の態様に限られない。例えば、ストレージ制御ソフトウェア206は、LDEV402及びスロット403に代えてこれらのハッシュ値を算出し、当該ハッシュ値をキーとしてアドレス変換テーブルに登録してもよい。この場合、ストレージ制御ソフトウェア206は、ハッシュ値が同じエントリがあれば、別の空きエントリを設定し、最初のエントリのNEXT_ENTRY_PTR508に当該エントリへのポインタ情報を格納し、リスト構造でエントリを管理するようにしてもよい。
 この場合、検索時には、ストレージ制御ソフトウェア206は、LDEV402及びスロット403のハッシュ値を算出して、当該ハッシュ値をキーとしてアドレス変換テーブル303内のエントリを参照し、ハッシュ値が一致すればヒットとし、ハッシュ値が一致しなければ次のエントリへ進み、ハッシュ値の一致するエントリがなければヒットなしと判定する。また、アドレス変換テーブル303の各エントリが、従来周知の連想メモリ(CAM;Content Addressable Memory)に格納される等でもよい。
 図5は、コマンド管理テーブル211、311の一例を示す図である。
 コマンド管理テーブル211、311は、ACC160にオフロードされたライトコマンドの一覧である。各エントリは、ライトコマンドを一意に識別するコマンドタグ(CMD Tag)1301と、当該コマンドのFCコマンド番号(FC CMD)1302と、当該コマンドで指定されたライト先のSSD ID1303及びSSDスロット1304の組と、当該SSDを含むRAIDグループのRAID TYPE1305と、当該RAIDグループの他のSSDを示すSECOND SSD ID1206と、を有する。
 後述のライト処理では、ストレージ制御ソフトウェア206が、ライトコマンドごとにオフロード可否判定とアドレス変換テーブル303への情報の登録を実施する。これに合わせて、ストレージ制御ソフトウェア206が、アドレス変換テーブル303に登録する情報をコマンドタグと関連付けてメモリ170、180内のコマンド管理テーブル211、311に記憶する。コマンド管理テーブル311により、コマンドを多重管理するACC160は、ライトデータ(FC_DATA)受信時に、アドレス変換テーブル303を検索する必要がなくなり、コマンドから直接データ格納先のSSDID、SSDスロット及びSECOND SSD IDを得ることが可能となり、アドレス変換のためのオーバーヘッドを削減できる効果がある。また、ストレージ制御ソフトウェア206も、同様に、コマンドから直接SSDID、SSDスロット及びSECOND SSD IDを得ることが可能になる。
 図6、7は、実施例1に係るライト対象のRAIDタイプがRAID5の場合のライト処理のシーケンス図である。図6に一部を示し、図7に残りの一部を示す。
 この具体例では、RAIDグループを構成する複数のSSD190のうちライトデータを格納するSSD#1とし、ライトデータを含むデータセットのパリティデータを格納するSSD#2として説明する。
 この処理は、ストレージ装置100のホストI/F130が、ホスト10からコマンドを受信したことを契機に行われる。なお、コマンドの受信前に、ホスト10とストレージ装置100との間のログインプロセス等の初期化処理は、完了しているものとする。コマンドは、例えば、FC(Fibre Channel)コマンド(FC_CMD)である。例えば、FCコマンドには、ホスト10側の送信元I/Fを示すS(Source)ID、送信先I/Fを示すD(Detination)ID、ExchangeID、RX(Response Exchange)_ID、シーケンス番号、LUN(Logical Unit Number)、SCSI(Small Computer System Interface)コマンドなどの情報から構成される。SCSIコマンドは、オペレーションコード(ライト/リード種別等)、LBA(Logical Block  Address)、転送長などの情報から構成される。ExchangeIDは、このコマンドを一意に識別するIDである。
 ホストI/F130は、ホスト10からのFCコマンドをACC160内の図示しないコマンドキューにエンキューする(FC CMD607)。
 ACC160は、FCコマンドをデキューし、FCコマンドの構文を解析しコントローラ110、120内部で扱われるコマンドに変換する(CMD解析608)。ACC160は、そのコマンドをメモリ170に転送する(CMD転送609)。
 MP140のストレージ制御ソフトウェア206は、メモリ170内のコマンドを取得する(CMD610)。ストレージ制御ソフトウェア206は、当該コマンドのオペレーションコードを参照しライトコマンドと判定すると、続くステップを実行する。
 ストレージ制御ソフトウェア206は、ライトコマンドのLU、LBA等からライトデータの格納先のLDEV ID及びLDEVスロット番号の組を取得する。そして、ストレージ制御ソフトウェア206は、論物変換テーブル203及び図示しないRAID構成情報などに基づき、LDEV ID及びLDEVスロット番号の組に対応するSSD ID、SSDスロットの組と、RAID情報等の対応情報を取得し、対応情報を自身のメモリ170に登録する。RAID情報は、例えば、SECOND SSD ID、SSDスロットに対応するSECOND SSD内のSECOND SSD スロット番号、及び、RAIDタイプ等の情報である。なお、対応情報はアドレス変換テーブルとしてメモリ170に登録されてもよい。
 また、ストレージ制御ソフトウェア206は、ExchangeID又はRXIDに基づき、当該コマンドを一意に識別するコマンドタグを算出し、コマンドタグをキーにした当該コマンドの情報をメモリ170内のコマンド管理テーブル211に記憶する。なお、ストレージ制御ソフトウェア206は、ACC160にコマンド管理テーブル211内の情報を送信し、メモリ180内のコマンド管理テーブル311との同期をとる。以後の処理において、ACC160は、アクセスレイテンシの小さいメモリ180上のコマンド管理テーブル311を参照・編集・削除し、MP140は、メモリ170上のコマンド管理テーブル211を参照・編集・削除する。なお、ストレージ制御ソフトウェア206は、コマンドタグに代えてExchangeIDをキーにした情報をコマンド管理テーブル202に記憶してもよい。
 ストレージ制御ソフトウェア206は、後述するオフロード可否判定を行う(オフロード可否判定611)。オフロード可と判定された場合、ストレージ制御ソフトウェア206は、キャッシュディレクトリ205に基づき、対象のLDEVスロットに割り当てられた対象キャッシスロットを特定し、対象キャッシュスロットへのMP140のデータの書込みを禁止するスロットロックを実行する(スロットロック612)。スロットロックは、例えば、ストレージ制御ソフトウェア206が管理するキャッシュディレクトリ情報の対象キャッシュスロットのロックフラグをONにする操作である。対象キャッシュスロットにスロットロックを掛けることにより、MP140は、対象キャッシュスロットへのデータの書込みが禁止される。
 ストレージ制御ソフトウェア206は、メモリ170内の対応情報をACC160のメモリ180に登録する(アドレス変換テーブル登録613)。具体的には、ストレージ制御ソフトウェア206は、対応情報をACC160に送信し、ACC202がメモリ180内のアドレス変換テーブル303に対応情報を登録する。
 ストレージ制御ソフトウェア206は、ライトコマンドに基づくライトデータの受信準備完了を示す通知(XFER RDY)を、ExchangeIDとともにACC160に送信する(XFER RDY発行614)。なお、ExchangeIDは、XFER RDYのRX_IDに設定される。
 ACC160は、XFER RDYをホストI/F130に転送し(XFER RDY615)、ホストI/F130は、XFER RDYをホスト10に転送する。
 ホスト10は、XFER RDYに基づき、FCプロトコルに基づくライトデータ(FCデータ)をストレージ装置100に送信する。ホストI/F130は、ライトデータを受信し、ACC160に転送する(FC DATA616)。ACC160は、ライトデータをバッファデータ308としてバッファ領域に格納する。
 ACC160は、ライトデータを解析する(解析617)。具体的には、ACC160は、ライトデータに含まれるExchangeIDに基づくコマンドタグを取得し、コマンド管理テーブル311を参照してライトデータの格納先のSSDID、SSDスロット番号及びRAID情報を取得する。また、ACC160は、当該SSDスロットを含むストライプに含まれるパリティデータ格納先となるSSDスロット(対象パリティスロット)の識別子を特定する。
 ACC160は、取得したSSDID、SSDスロット番号がアドレス変換テーブル303に登録済みか否かを検索する(アドレス検索618)。
 ACC160は、DIF(Data Integrity Field)をチェックし、データ正当性を確認する(DIFチェック619)。DIFとは、CRC(Cyclic Redundancy Check)、LBA、アプリケーションタグから構成されるデータ保護情報である。
 ACC160は、特定した対象パリティスロットが、図示しない処理中パリティ番号テーブル304に登録済みか否かを検索する。対象パリティスロットが登録されていなかった場合、対象パリティスロット内の旧パリティデータの更新処理が実行されていないことを意味する。このとき、ACC160は、対象パリティスロットを処理中パリティ番号テーブル304に登録する(処理中パリティSLOT番号登録620)、。これにより、以降のライトコマンドに対し、対象パリティスロットにロックがかけられ旧パリティデータの更新処理の指示の送信を禁止できる。なお、処理中パリティ番号テーブル304に対象パリティスロットが登録されていた場合は、他のライト処理により対象パリティスロット内の旧パリティデータの更新処理が実行中であることを意味する。この場合、ACC160は、対象パリティスロットのロック解放を待ち、ロック解放後に、対象パリティスロットを処理中パリティ番号テーブル304に登録し、旧パリティデータの更新処理の指示を送信する。
 ACC160は、ライトデータの格納先のSSD(SSD#1)に対し、ライトデータの更新、及び、ライトデータの更新に伴う旧パリティデータの更新処理を指示する(パリティオフロード指示621)。
 図7に続く。SSD#1は、パリティオフロード指示に基づき、ライトデータをACC160から取得する(新データ707)。
 SSD#1は、取得したライトデータ(新データ)と、ライトデータの格納先となるSSDスロット内のデータ(旧データ)とから中間パリティデータを算出する(中間パリティ生成708)。中間パリティデータは、ライトデータと旧データとの排他的論理和をとった値である。
 SSD#1は、生成した中間パリティデータ及びパリティ生成指示を、パリティデータの格納先のSSD#2に送信する(中間パリティデータ709)。
 SSD#2は、パリティ生成指示及び中間パリティデータを受信し、中間パリティデータと、ライトデータを含むデータセットに対応する対象パリティスロット内の旧パリティデータとから、新パリティデータを算出する。新パリティデータは、中間パリティデータと旧パリティデータとの排他的論理和をとった値である。
 SSD#2は、新パリティデータの算出が完了した旨の報告をACC160に送信する(完了報告711)。
 ACC160は、ライトデータ及び新パリティデータを最終データとするコミット指示を、SSD#1及び#2に送信する(commit指示712、713)。
 SSD#1は、コミット指示712に基づき、旧データをライトデータに更新する。また、SSD#1は、図示しないFTL (Flash Translation Layer)アドレス変換マップの割当を旧データの格納位置からライトデータの格納位置に切り替え(map切り替え714)、その完了をACC160に通知する(切り替え完了応答715)。
 SSD#2は、コミット指示713に基づき、旧パリティデータを新パリティデータに更新する。また、SSD#2は、図示しないFTLアドレス変換マップの割当を旧パリティデータの格納位置から新パリティデータの格納位置に切り替え(map切り替え716)、その完了をACC160に通知する(切り替え完了応答717)。
 ACC160は、切り替え完了応答716、717を受信し、MP140に対する対象キャッシュスロットのロックの解放指示をメモリ170に記憶する(スロット解放指示718)。ストレージ制御ソフトウェア206は、解放指示を取得し(スロット解放指示719)、対象キャッシュスロットのロックを解放する(スロット解放720)。また、ストレージ制御ソフトウェア206は、対象のコマンドをコマンド管理テーブル211から削除する。
 ACC160は、切り替え完了応答717に基づき、処理中パリティ番号テーブル304から対象パリティスロット番号を削除し、対象のコマンドをコマンド管理テーブル311から削除する(処理中パリティSLOT番号削除721)。また、ACC160は、アドレス変換テーブル303の当該エントリを削除する。
 ACC160は、ライト処理の成功を示す応答をHostI/F130に送信し(Good RSP応答722)、ホストI/F130がその応答をホスト10に転送し、ライト処理が終了する。
 上記の処理によれば、複雑な制御を要するオフロード可否判定やスロットロックをMP140がストレージ制御ソフトウェア206を実行することで行い、一方でACC160はオフロード可と判定されたLDEVスロットを対象に、解析やアドレス変換処理などのIO処理のうち定型的な処理を担うことでライト処理にかかる負荷を分散し、IOのアクセラレーションを可能とする。
 また、ライトコマンドを一旦MP140が受付け、ライトコマンドに基づくライト処理をACC160にオフロード可能な場合には、ライトコマンドに基づくLDEVスロットに対応するキャッシュスロットにスロットロックをかけ、MP140が他のIOコマンドに応じてそのキャッシュスロットにアクセスすることを防止することができる。これにより、スロットロックをかけたキャッシュスロットに対応するSSDスロット内のデータの整合性を確保できる。
 また、処理中パリティ番号テーブル304によりライトデータに対応するパリティスロットに対するACC160からのアクセスを禁止することで、他のライト処理により、ACC160からの指示に基づきライトデータを含めたデータセットのパリティデータが更新されることも防止できる。
 さらに、MP140側のメモリ170も処理中パリティ番号テーブル304を有することにより、上記ライト処理中のMP140側から対象パリティデータへのアクセスを禁止できる。例えば、上記ライト処理の実行中に、ライトデータの属するデータセットの他のデータに対して、MP140が別の通常のライト処理を行う場合に、上記ライト処理に基づくパリティ更新が完了するまで、通常ライト処理に基づくパリティ更新指示をMP140が送信するのを待たせることができ、対象パリティデータの整合性を確保することができる。
 このようにすることで、複数のライト処理を並行して行うストレージ装置100において、スロットロック中のSSDスロット内のデータの更新を防止し、ストレージ装置100内のデータの不整合を回避できる。
 図8は、オフロード可否判定の一例を示すフローチャートである。
 オフロード可否判定は、ストレージ制御ソフトウェア206が当該ライト処理を自身が行うか、自身に代えてACC160に行わせるかの判定である(図6の611参照)。
 ステップS801で、ストレージ制御ソフトウェア206は、MP140の負荷が閾値より高いか否かを判定する。MP140の負荷が閾値以下の場合(S801;No)、ストレージ制御ソフトウェア206はステップS808に処理を進める。一方、MP140の負荷が閾値よりも高い場合(S801;Yes)、ストレージ制御ソフトウェア206はステップS802に処理を進める。
 ステップS802で、ストレージ制御ソフトウェア206は当該ライトコマンドがキャッシュヒットしたか否かを判定する。キャッシュヒットした場合(S802;Yes)、対象LDEVSロットにキャッシュスロットが割り当てられており、ライトデータの旧データがキャッシュスロットに記憶されていることを意味するので、ストレージ制御ソフトウェア206はステップS808に処理を進める。一方、キャッシュミスの場合(S802;No)、対象LDEVスロットにキャッシュスロットが割り当てられておらず、旧データがキャッシュスロットに記憶されていないことを意味するので、ストレージ制御ソフトウェア206はステップS803に処理を進める。
 ステップS803で、ストレージ制御ソフトウェア206は、管理情報312に基づき、対象LDEVスロットにおいて、各種機能(リモートコピー機能、スナップショット、重複排除、シンプロビジョニングなどの機能)が有効か、又は、ACC160にライト処理をオフロードするための特定条件に該当するか否かを判定する。いずれかの機能が有効でありかつ特定条件に該当しない場合(S803;Yes)、ストレージ制御ソフトウェア206は、ステップS808に処理を進める。一方、いずれの機能も無効であるか又は特定条件に該当する場合(S803;No)、ストレージ制御ソフトウェア206はステップS804に処理を進める。
 ストレージ制御ソフトウェア206は、S803の判定を具体的には以下のように行う。
 (a)リモートコピー機能が有効の場合はNOと判定する。リモートサイトへのライトデータのコピー処理は、ストレージ制御ソフトウェア206が実行し、ACC160へライト処理のオフロードはしない。
 (b)スナップショット機能が有効の場合は特定条件としてスナップショット取得以降の初回のライトでなければNOと判定する。スナップショット取得以後の初回のライトの場合、対象LDEVの差分データを格納するセカンダリボリュームのアドレスを変更しなければならない。この処理はストレージ制御ソフトウェア206が実行するため、ACC160へライト処理のオフロードはしない。なお、スナップショット取得以降の2回目意向のライト処理の場合は、アドレス変更は不要のため、ACC160へのオフロード可能と判定する。
 (c)重複排除機能が有効の場合はNOと判定する。重複排除機能は、ストレージに格納するデータを解析し、重複しているデータを検出して容量削減のために排除する機能である。したがってライトデータを解析する必要があり、ストレージ制御ソフトウェアがFCP_CMDを受領した時点では、アドレス変換情報を決定できないため、アクセラレータオフロード不可と判定する。
 (d)シンプロビジョニング機能が有効の場合は特定条件として対象のLDEVスロットにプール内のページが割り当てられていなければNOと判定する。シンプロビジョニング機能が有効の場合、対象のLDEVスロットにページが割り当てられていなければ、プール内の未割当のページを割り当てる処理行わなければならない。この処理はストレージ制御ソフトウェア206が実行するため、ACC160へライト処理のオフロードはしない。なお、対象のLDEVスロットにページが割り当て済みの場合は、割当処理は不要のため、ACC160へのオフロード可能と判定する。
 ステップS804で、ストレージ制御ソフトウェア206は、ホストからのライトアクセスのローカリティを判定する。ここで、ローカリティとは、ライトアクセスが局所的なアドレス範囲に集中することをいう。例えば、ストレージ制御ソフトウェア206は、ライトアクセス先アドレスを一定時間監視して、一定のアドレス範囲(例えば、同一ストライプ)内に一定の回数以上のライトアクセスがある場合にローカリティ有りと判定する。処理中のライトアクセスにローカリティがある場合(S804;Yes)、ストレージ制御ソフトウェア206はステップS808に処理を進める。一方、アクセスにローカリティがない場合(S804;No)、ストレージ制御ソフトウェア206はステップS805に処理を進める。
 ステップS805で、ストレージ制御ソフトウェア206は、ホストからのライトアクセスがシーケンシャルであるか否かを判定する。例えば、ストレージ制御ソフトウェア206は、連続する領域に所定回数以上ライトアクセスが発生する場合をシーケンシャルであると判定する。シーケンシャルでない場合(S805;No)ストレージ制御ソフトウェア206は、本実施例のライト処理に戻り(S806)処理を終了する。一方、シーケンシャルの場合(S805;Yes)、ストレージ制御ソフトウェア206は、本実施例のライト処理を終了し、通常のストレージ制御処理に戻り(S808)、処理を終了する。
 上記オフロード可否判定フローによれば、一定の条件に該当しない場合に本実施例のライト処理へ戻り、MP140からライトアクセスが行われないように対象スロット及び対象パリティスロットに排他制御を行った上で、ACC160がライトアクセスを行うようにできる。これにより、複雑な処理を伴わないライトアクセスについてはACC160が行うことで、MP140の負荷を分散することができる。
 一定の条件に該当した場合は、以下の理由でライトアクセスはMP140が実行する。
 (1)MP140の負荷が閾値以下の場合(S801)、従来のストレージ制御処理では、ライトデータをキャッシュ領域に格納した後にホスト10へレスポンスを返し、その後非同期でキャッシュ領域のライトデータをSSDの対象SSDスロットに格納する。一方、ACC140は、直接SSDの対象スロットにライトデータを書き込んだ後、ホスト10へレスポンスを返す。このため、MP140の負荷が閾値よりも低い場合は、MP140がライト処理を行うことで、ホスト10からみたレスポンス時間を短くできる。一方、MP140の負荷が閾値よりも高い場合は、ACC160にライト処理をオフロードすることで単位時間あたりのIO処理性能(IOPS(IO Per Second))を向上させることができるとともにMPの負荷を分散することができる。
 (2)対象スロットの旧データがキャッシュヒットした場合(S802)、キャッシュ領域の旧データをSSDの対象SSDスロットに反映していない可能性がある。この状態でACC160がSSD内のデータをライトデータで更新してしまえば、キャッシュ領域内の旧データとの不整合生じてしまう。このため、キャッシュヒットした場合には、MP140がライト処理を行うことでデータの不整合を防止することができる。また、キャッシュヒットしない場合には、ACC160にライト処理をオフロードすることで、IOPSを向上させることができるとともにMP140にかかる負荷を分散させることができる。
 (3)対象スロットについて各種機能が無効な場合、ライト処理に伴うストレージ装置特有の複雑な処理が発生しないため、ACC160にライト処理をオフロードすることでIOPSを向上させることができるとともにMP140にかかる負荷を分散させることができる。一方、リモートコピー機能が有効な場合、スナップショット機能が有効でありかつスナップショット取得以後の初回のライトの場合、重複排除機能が有効な場合、シンプロビジョニング機能が有効でありかつ対象LDEVスロットにページが割り当てられていない場合等は、ライト処理に伴って各種処理も発生し処理が複雑になるため、MP140のストレージ制御ソフトウェア206が行うことでライト処理に伴い発生する各種処理を適切に行うことができる。
 (4)対象スロットにホストからのライトアクセスのローカリティがない場合、ACC160にライト処理をオフロードすることでIOPSを向上させることができるとともにMP140にかかる負荷を分散させることができる。一方、ローカリティがある場合は、複数のライトデータを纏めてパリティを計算し、その後SSDに書き込むほうが処理効率がよい。また、ACC160は、パリティスロットの排他制御を行うため、他のライトデータの更新に伴うパリティスロットの更新の必要が生じた場合、排他解放待ちのライトアクセスが増加し、処理効率が落ちてしまう恐れがある。このため、ローカリティがある場合は、MP140のストレージ制御ソフトウェア206がライト処理を行うことでライト処理に伴い発生するこれらの処理を適切に行うことができる。
 (5)対象スロットへのライトアクセスがシーケンシャルでない場合、ACC160にライト処理をオフロードすることでIOPSを向上させることができるとともにMP140にかかる負荷を分散させることができる。一方、シーケンシャルの場合、キャッシュメモリに連続する複数のライトデータを受けてから、まとめてMP140がパリティを計算し、その後SSDへ書き込むことで処理効率を上げることができる。このため、シーケンシャルの場合は、MP140のストレージ制御ソフトウェア206がライト処理を行うことでライト処理に伴い発生するこれらの処理を適切に行うことができる。
 図9、10は、実施例1に係るライト対象のRAIDタイプがRAID1の場合のライト処理のシーケンス図である。図9に一部を示し、図10に残りの一部を示す。
 この具体例では、RAIDグループを構成する複数のSSD190のうちライトデータを格納するSSD#1とし、SSD#1のミラーディスクをSSD#2として説明する。また、図6、7で説明したRAID5の場合のライト処理と同じステップについては、同じ符号を用いて説明を簡略又は省略する。
 ステップ611でオフロード可と判定された場合、ストレージ制御ソフトウェア206は、対象のLDEVスロット及びライトデータのミラーデータを格納するLDEVスロットにそれぞれ対応するキャッシュ領域内のキャッシュスロットに対してスロットロックを実行する(スロットロック1012)。
 ステップ619のDIFチェックの後、ACC160は、ライトデータをSSD#1及び#2に送信する(新データ1007、1008)。SSD#1及び#2は、ライトデータを受信完了した旨の報告をそれぞれACC160に通知する(完了報告1009、1010)。ACC160は、ライトデータを最終データとするコミット指示を、SSD#1及び#2に送信する(commit指示1012、1013)。
 SSD#1、#2は、コミット指示1012、1013に基づき、旧データをライトデータにそれぞれ更新する。また、SSD#1、#2は、図示しないFTLアドレス変換マップの割当を旧データの格納位置からライトデータの格納位置にそれぞれ切り替え(map切り替え714、1016)、その完了をACC160にそれぞれ通知する(切り替え完了応答715、1017)。以下は、処理中パリティSLOT番号削除721を行わない以外は図7の例と同様である。
 上記の処理によれば、RAID1のRAIDグループに対してライトデータを送信する場合でも、複雑な制御を要するオフロード可否判定やスロットロックをMP140がストレージ制御ソフトウェア206を実行することで行い、一方でACC160はオフロード可と判定されたスロットを対象に、解析やアドレス変換処理などのIO処理のうち定型的な処理を担うことでライト処理にかかる負荷を分散し、IOのアクセラレーションを可能とする。
 以下、実施例2を説明する。
 図11~13は、実施例2に係るライト対象のRAIDタイプがRAID5の場合のライト処理のシーケンス図である。図11~13にそれぞれ一部を示す。
 実施例2は、実施例1とは異なり、パリティ更新機能を有さない物理記憶デバイス(SSD290)を有するストレージ装置の場合を説明する。この場合、パリティオフロード指示に基づき、SSD290がパリティ計算を行う実施例1とは異なり、ACC160がパリティ計算を行う。この具体例では、RAIDグループを構成する複数のSSD290のうちライトデータを格納するSSDをSSD#1とし、ライトデータを含むデータセットのパリティデータを格納するSSDをSSD#2として説明する。
 ホストI/F130は、ストレージ装置100からのFCコマンドをメモリ170に送信する(FC CMD1106)。
 ACC160は、メモリ170からFCコマンドを取得し(FC CMD1107)する。CMD解析608~スロットロック612までは実施例1と同様である。
 ストレージ制御ソフトウェア206は、対応情報をアドレス変換テーブルとしてメモリ170に格納する(アドレス変換テーブル登録1114)。 ストレージ制御ソフトウェア206は、ライトコマンドに基づくライトデータの受信準備完了を示す通知(XFER RDY)を、ExchangeIDとともにメモリ170上のACC160のキューにエンキューする(XFER RDY1115)。なお、ExchangeIDは、XFER RDYのRX_IDに設定される。
 ACC160は、XFER RDYをメモリ170から取得し(XFER RDY1116)、メモリ170上のホストI/F130のキューにエンキューする(XFER RDY1117)。
 ホストI/F130は、XFER RDYをメモリ170から取得し(XFER RDY1118)、ホスト10に転送する。
 ホスト10は、XFER RDYに基づき、FCプロトコルに基づくライトデータ(FCデータ)をストレージ装置100に送信する。ホストI/F130は、ライトデータを受信し、メモリ170に転送する(FC DATA1119)。
 図12に続く。ACC160は、ライトデータのFCヘッダをメモリ170から取得し(FCヘッダ1220)そのFCヘッダの解析等を行う。これらの処理は、図6の617~620と同様である。
 ACC160は、アドレス変換テーブル303に基づき、ライトデータの格納先のSSD#1及び対象SSDスロットを指定した旧データの読み出し指示をメモリ170に送信する(旧データ読み出し指示1207)。ストレージ制御ソフトウェア206は、メモリ170から旧データ読み出し指示を取得し、SSD#1に送信する(旧データ読み出し指示1208)。
 ACC160は、アドレス変換テーブル303に基づき、パリティデータの格納先のSSD#2及び対象パリティスロットを指定した旧パリティデータの読み出し指示をメモリ170に送信する(旧パリティ読み出し指示1209)。ストレージ制御ソフトウェア206は、メモリ170から旧パリティ読み出し指示を取得し、SSD#2に転送する(旧パリティ読み出し指示1210)。
 SSD#1は、旧データをメモリ170に送信し(旧データ1211)、旧データの読み出し完了通知をメモリ170に送信する。ストレージ制御ソフトウェア206は、旧データの読み出し完了通知をACC160に転送する。
 SSD#2は、旧パリティデータをメモリ170に送信し(旧パリティ1212)、旧パリティデータの読み出し完了通知をメモリ170に送信する。ストレージ制御ソフトウェア206は、旧パリティデータの読み出し完了通知をACC160に転送する。
 図13に続く。ACC160は、旧データ及び旧パリティデータの読み出し完了通知に基づき、旧データ及び旧パリティデータをメモリ170から取得する(旧データ、旧パリティ読み出し完了検出1313)。ACC160は、ライトデータと旧データとから中間パリティデータを算出し、中間パリティデータと旧パリティデータとから新パリティデータを算出する(パリティ算出1314)。
 ACC160は、SSD#1の対象SSDスロットを指定したライトデータ及びその書込み指示をメモリ170に送信する(新データ書込み指示1315)。ストレージ制御ソフトウェア206は、ライトデータ書込み指示に基づき、メモリ170内のライトデータをSSD#1に送信する(新データ1316)。SSD#1は、対象SSDスロットにライトデータを格納して旧データを更新する。SSD#1は、ライトデータの書込み完了通知をメモリ170に送信し、ストレージ制御ソフトウェア206は、その書込み完了通知をACC160に転送する。
 ACC160は、ライトデータの書込み完了通知を受信し(新データ書込み完了検出1317)、アドレス変換テーブル303に基づき、SSD#2の対象SSDスロットを指定した新パリティデータ及びその書込み指示をメモリ170に送信する(新パリティ書込み指示1318)。ストレージ制御ソフトウェア206は、新パリティデータの書込み指示に基づき、メモリ170内の新パリティデータをSSD#2に送信する(新パリティ1319)。SSD#2は、対象パリティスロットに新パリティデータを格納して旧パリティデータを更新する。SSD#2は、新パリティデータの書込み完了通知をメモリ170に送信し、ストレージ制御ソフトウェア206は、その書込み完了通知をACC160に転送する。
 ACC160は、新パリティデータの書込み完了通知を受信し(新パリティ書込み完了検出1320)、MP140に対する対象キャッシュスロットのロックの解放指示をメモリ170に記憶する(スロット解放指示718)。その後の処理(719~722)は、実施例1と同様である(図7参照)。
 上記の処理により、ACCがパリティ計算を行う場合であっても、実施例1と同様の効果を得られる。
 図14、15は、実施例2に係るライト対象のRAIDタイプがRAID1の場合のライト処理のシーケンス図である。図14に一部を示し、図15に残りの一部を示す。
 この具体例では、RAIDグループを構成する複数のSSD290のうちライトデータを格納するSSDをSSD#1とし、SSD#1のミラーディスクをSSD#2として説明する。また、実施例1の図6~10及び実施例2の図11~13で説明したライト処理と同じステップについては、同じ符号を用いて説明を簡略又は省略する。
 ステップ611でオフロード可と判定された場合、ストレージ制御ソフトウェア206は、対象のLDEVスロット及びライトデータのミラーデータを格納するLDEVスロットにそれぞれ対応するキャッシュ領域内のキャッシュスロットに対してスロットロックを実行する(スロットロック1412)。
 ステップ619のDIFチェックの後、図15に続く。ACC160は、アドレス変換テーブル303に基づき、SSD#1の対象SSDスロットを指定したライトデータ及びその書込み指示をメモリ170に送信する(新データ書込み指示1507)。ストレージ制御ソフトウェア206は、メモリ170内のライトデータ書込み指示及びライトデータをSSD#1に送信する(新データ書込み指示1508、新データ1509)。SSD#1は、対象SSDスロットにライトデータを格納して旧データを更新する。SSD#1は、ライトデータの書込み完了通知をメモリ170に送信する(書込み完了報告1510)。ストレージ制御ソフトウェア206は、メモリ170内の書込み完了通知をACC160に転送する(書込み完了報告1511)。
 ACC160は、ライトデータの書込み完了通知を受信し、アドレス変換テーブル303に基づき、SSD#2の対象SSDスロットを指定したライトデータ及びその書込み指示をメモリ170に送信する(新データ書込み指示1512)。ストレージ制御ソフトウェア206は、メモリ170内のライトデータ書込み指示及びライトデータをSSD#2に送信する(新データ書込み指示1513、新データ1514)。SSD#2は、対象SSDスロットにライトデータを格納して旧データを更新する。SSD#2は、ライトデータの書込み完了通知をメモリ170に送信する(書込み完了報告1515)。ストレージ制御ソフトウェア206は、メモリ170内の書込み完了通知をACC160に転送する(書込み完了報告1516)。
 ACC160は、ライトデータの書込み完了通知を受信し、MP140に対する対象キャッシュスロットのスロットロックの解放指示をメモリ170に記憶する(スロット解放指示718)。その後の処理(719~722)は、実施例1と同様である(図7参照)。
 上記の処理により、ACCがライトデータの書込み指示を行う場合であっても、実施例1と同様の効果を得られる。また、大容量なMP140側のメモリ170を制御データやキャッシュ領域として活用可能となる。また、実施例2では、ACC160がパリティ計算することで、パリティ更新機能を有するSSDでなくても上記のライト処理を行うことができる。
 以上、幾つかの実施例を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
 本実施例では、RAID構成された物理記憶デバイスに対しライトデータ書込する場合を説明したがこれに限られない。
10…ホストサーバ 30…ネットワーク 100…ストレージ装置 110、120…ストレージコントローラ 130…Host I/F140…MP 150…スイッチ 160…ACC 170…メモリ 180…メモリ 190…SSD

Claims (12)

  1.  ホスト計算機に接続されたコントローラと、
     前記コントローラに接続された複数の物理記憶デバイスと、
    を備え、
     前記コントローラは、
      前記ホスト計算機及び前記複数の物理記憶デバイスに接続され、かつ、前記複数の物理記憶デバイスに基づく論理ボリュームを前記ホスト計算機に提供するプロセッサと、
      前記プロセッサに接続されたメモリと、
      前記ホスト計算機、前記複数の物理記憶デバイス及び前記プロセッサに接続された制御デバイスと、
    を有し、
     前記メモリは、前記論理ボリューム内の論理領域及び前記複数の物理記憶デバイス内のデバイス領域を対応づける論物変換情報と、前記論理ボリューム内の論理領域及び前記メモリ内のキャッシュ領域を対応付けるキャッシュ情報とを記憶し、
     前記プロセッサは、前記プロセッサの状態に基づいて、前記ホスト計算機からのライトコマンドに基づくライト処理を前記プロセッサが行うか又は前記制御デバイスに行わせるかを判定し、
     前記プロセッサが前記ライト処理を行うと判定した場合、前記プロセッサは、前記キャッシュ情報に基づいて、前記ライトコマンドで指定された第1論理領域に対応する第1キャッシュ領域を特定し、前記ライトコマンドに基づくライトデータを前記第1キャッシュ領域へ書き込み、
     前記ライト処理を前記制御デバイスに行わせると判定した場合、前記プロセッサは、前記キャッシュ情報に基づいて、前記ライトコマンドで指定された第1論理領域に対応する第1キャッシュ領域に対し、データの書込みを禁止するデータロックを設定し、前記論物変換情報に基づいて、前記第1論理領域に対応する前記第1物理記憶デバイス内の第1デバイス領域を示すアドレス変換情報を前記制御デバイスに送信し、
     前記制御デバイスは、前記ライトデータを受信し、前記アドレス変換情報に基づいて、前記第1物理記憶デバイスに対して前記ライトデータと、前記第1デバイス領域への前記ライトデータの書込み指示と、を送信し、
     前記第1物理記憶デバイスは、前記書込み指示に基づき、前記第1デバイス領域に前記ライトデータを書き込み、
     前記制御デバイスは、前記第1物理記憶デバイスから前記ライトデータの書込み完了通知を受信し、前記第1キャッシュ領域の前記データロックを解放するロック解放指示を前記プロセッサに送信し、
     前記プロセッサは、前記解放指示に基づき前記第1キャッシュ領域の前記データロックを解放する、
    ストレージ装置。
  2.  前記複数の物理記憶デバイスによってRAIDグループが構成されており、
     前記プロセッサは、前記RAIDグループにおける第2物理記憶デバイスから、前記第1デバイス領域を含むストライプ内の第2デバイス領域を特定し、
     前記プロセッサは、前記第2デバイス領域を前記アドレス変換情報に含めて前記制御デバイスに送信し、
     前記制御デバイスは、前記アドレス変換情報に基づき、前記第1物理記憶デバイス又は前記第2物理記憶デバイスに対して、前記第2デバイス領域の識別子を送信し、
     前記第2物理記憶デバイスは、前記第2デバイス領域に前記ライトデータに基づくサブデータを書き込む、
    請求項1に記載のストレージ装置。
  3.  前記プロセッサは、前記プロセッサの負荷状態が閾値を超えているか否かを判定し、前記プロセッサの負荷状態が閾値以下の場合、前記ライト処理を前記プロセッサが行うと判定し、前記プロセッサの負荷状態が閾値を超えた場合、前記ライト処理を前記制御デバイスに行わせると判定する、
    請求項2に記載のストレージ装置。
  4.  前記プロセッサは、前記第1デバイス領域内に格納されているデータである旧データが前記第1キャッシュ領域に存在するか否かを判定し、前記旧データが前記第1キャッシュ領域に存在する場合に、前記ライト処理を前記プロセッサが行うと判定し、前記旧データが前記第1キャッシュ領域に存在しない場合に、前記ライト処理を前記制御デバイスに行わせると判定する、
    請求項3に記載のストレージ装置。
  5.  前記プロセッサは、前記第1デバイス領域において、前記コンローラの所定の機能が有効か否かを判定し、前記所定の機能が有効な場合に、前記ライト処理を前記プロセッサが行うと判定し、前記所定の機能が無効な場合に、前記ライト処理を制御デバイスに行わせると判定する、
    請求項4に記載のストレージ装置。
  6.  前記所定の機能は、リモートコピー機能、スナップショット機能、重複排除機能及びシンプロビジョニング機能のうちのいずれか1つ以上の機能である、
    請求項5に記載のストレージ装置。
  7.  前記プロセッサは、複数のライトコマンドにより前記ストライプ内の論理領域のうちの所定数以上の論理領域が指定される場合、前記ライト処理を前記プロセッサが行うと判定し、複数のライトコマンドにより前記ストライプ内の論理領域のうちの所定数未満の論理領域が指定される場合、前記ライト処理を前記制御デバイスに行わせると判定する、
    請求項6に記載のストレージ装置。
  8.  前記プロセッサは、複数のライトコマンドにより連続する所定数以上の論理領域が指定される場合に、前記ライト処理を前記プロセッサが行うと判定し、複数のライトコマンドにより指定される連続する論理領域が所定数未満の場合、前記ライト処理を前記制御デバイスが行うと判定する、
    請求項7に記載のストレージ装置。
  9.  前記サブデータは、前記ライトデータに対応するパリティデータであり、
     前記制御デバイスは、前記アドレス変換情報に基づき、前記ライトコマンド以外のライトコマンドに基づく前記第2デバイス領域へのアクセスを禁止し、前記第1物理記憶デバイスに対して、前記第2デバイス領域の識別子を送信し、
     前記第1物理記憶デバイスは、前記ライトデータと前記第1デバイス領域に格納されているデータである旧データとに基づき中間パリティデータを算出し、前記中間パリティデータを前記第2物理記憶デバイスに送信し、
     前記第2物理記憶デバイスは、前記中間パリティデータと前記第2デバイス領域に格納されている旧パリティデータとに基づき前記パリティデータを算出し、前記第2デバイス領域に前記パリティデータを書き込み、
     前記サブデータの書込み完了通知を前記第2記憶デバイスから受信した後に、前記第2デバイス領域へのアクセスの禁止を解除する、
    請求項2に記載のストレージ装置。
  10.  前記サブデータは、前記ライトデータのミラーデータであり、
     前記制御デバイスは、前記アドレス変換情報に基づき、前記ライトコマンド以外のライトコマンドに基づく前記第2デバイス領域へのアクセスを禁止し、前記第2物理記憶デバイスに対して、前記第2デバイス領域の識別子及び前記ミラーデータを送信し、
     前記第2記憶デバイスは、前記第2デバイス領域に前記ミラーデータを書き込み、
     前記ミラーデータの書込み完了通知を前記第2記憶デバイスから受信した後に、前記第2デバイス領域へのアクセスの禁止を解除する、
    請求項2に記載のストレージ装置。
  11.  前記サブデータは、前記ライトデータに対応するパリティデータであり、
     前記制御デバイスは、前記アドレス変換情報に基づき、前記第1物理記憶デバイスから、前記第1デバイス領域に格納されているデータである旧データを取得し、
     前記制御デバイスは、前記アドレス変換情報に基づき、前記ライトコマンド以外のライトコマンドに基づく前記第2デバイス領域へのアクセスを禁止し、前記第2物理記憶デバイスから、前記第2デバイス領域に格納されている旧パリティデータを取得し、
     前記制御デバイスは、前記ライトデータと前記旧データと旧パリティデータとに基づき前記パリティデータを算出し、前記第2物理記憶デバイスに対して、前記第2デバイス領域への前記パリティデータのパリティ書込み指示を送信し、
     前記第2物理記憶デバイスは、前記パリティ書込み指示に基づき、前記第2デバイス領域に前記パリティデータを書き込み、
     前記サブデータの書込み完了通知を前記第2記憶デバイスから受信した後に、前記第2デバイス領域へのアクセスの禁止を解除する、
    請求項2に記載のストレージ装置。
  12.  前記ホスト計算機及び複数の物理記憶デバイスに接続されたコントローラが実行するストレージ装置のライト制御の方法であって、
     前記コントローラは、
      前記ホスト計算機及び前記複数の物理記憶デバイスに接続され、かつ、前記複数の物理記憶デバイスに基づく論理ボリュームを前記ホスト計算機に提供するプロセッサと、
      前記プロセッサに接続されたメモリと、
      前記ホスト計算機、前記複数の物理記憶デバイス及び前記プロセッサに接続された制御デバイスと、
    を有し、
     前記プロセッサは、前記論理ボリューム内の論理領域及び前記複数の物理記憶デバイス内のデバイス領域を対応づける論物変換情報と、前記論理ボリューム内の論理領域及び前記メモリ内のキャッシュ領域を対応付けるキャッシュ情報とを前記メモリに記憶し、
     前記プロセッサは、前記プロセッサの状態に基づいて、前記ホスト計算機からのライトコマンドに基づくライト処理を前記プロセッサが行うか又は前記制御デバイスに行わせるかを判定し、
     前記プロセッサが前記ライト処理を行うと判定された場合、前記プロセッサは、前記キャッシュ情報に基づいて、前記ライトコマンドで指定された第1論理領域に対応する第1キャッシュ領域を特定し、前記ライトコマンドに基づくライトデータを前記第1キャッシュ領域へ書き込み、
     前記ライト処理を前記制御デバイスに行わせると判定した場合、前記プロセッサは、前記キャッシュ情報に基づいて、前記ライトコマンドで指定された第1論理領域に対応する第1キャッシュ領域に対し、データの書込みを禁止するデータロックを設定し、前記論物変換情報に基づいて、前記第1論理領域に対応する前記第1物理記憶デバイス内の第1デバイス領域を示すアドレス変換情報を前記制御デバイスに送信し、
     前記制御デバイスは、前記ライトデータを受信し、前記アドレス変換情報に基づいて、前記第1物理記憶デバイスに対して前記ライトデータと、前記第1デバイス領域への前記ライトデータの書込み指示と、を送信し、
     前記第1物理記憶デバイスは、前記書込み指示に基づき、前記第1デバイス領域に前記ライトデータを書き込み、
     前記制御デバイスは、前記第1物理記憶デバイスから前記ライトデータの書込み完了通知を受信し、前記第1キャッシュ領域の前記データロックを解放するロック解放指示を前記プロセッサに送信し、
     前記プロセッサは、前記解放指示に基づき前記第1キャッシュ領域の前記データロックを解放する、
    方法。
PCT/JP2015/064990 2015-05-26 2015-05-26 ストレージ装置、及び方法 WO2016189640A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/064990 WO2016189640A1 (ja) 2015-05-26 2015-05-26 ストレージ装置、及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/064990 WO2016189640A1 (ja) 2015-05-26 2015-05-26 ストレージ装置、及び方法

Publications (1)

Publication Number Publication Date
WO2016189640A1 true WO2016189640A1 (ja) 2016-12-01

Family

ID=57393844

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/064990 WO2016189640A1 (ja) 2015-05-26 2015-05-26 ストレージ装置、及び方法

Country Status (1)

Country Link
WO (1) WO2016189640A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109614048A (zh) * 2018-12-10 2019-04-12 深圳市硅格半导体有限公司 基于闪存的数据读写方法、装置及计算机可读存储介质
CN111722791A (zh) * 2019-03-22 2020-09-29 株式会社日立制作所 信息处理系统、存储系统和数据传输方法
CN112346653A (zh) * 2019-08-06 2021-02-09 株式会社日立制作所 驱动器箱、存储系统和数据传送方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007128175A (ja) * 2005-11-01 2007-05-24 Hitachi Ltd ストレージシステム
JP2013524334A (ja) * 2010-09-09 2013-06-17 株式会社日立製作所 コマンドの起動を制御するストレージ装置及びその方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007128175A (ja) * 2005-11-01 2007-05-24 Hitachi Ltd ストレージシステム
JP2013524334A (ja) * 2010-09-09 2013-06-17 株式会社日立製作所 コマンドの起動を制御するストレージ装置及びその方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109614048A (zh) * 2018-12-10 2019-04-12 深圳市硅格半导体有限公司 基于闪存的数据读写方法、装置及计算机可读存储介质
CN111722791A (zh) * 2019-03-22 2020-09-29 株式会社日立制作所 信息处理系统、存储系统和数据传输方法
CN111722791B (zh) * 2019-03-22 2024-02-27 株式会社日立制作所 信息处理系统、存储系统和数据传输方法
CN112346653A (zh) * 2019-08-06 2021-02-09 株式会社日立制作所 驱动器箱、存储系统和数据传送方法
CN112346653B (zh) * 2019-08-06 2024-02-27 株式会社日立制作所 驱动器箱、存储系统和数据传送方法

Similar Documents

Publication Publication Date Title
US9823866B1 (en) Scalable data storage architecture and methods of eliminating I/O traffic bottlenecks
US9720601B2 (en) Load balancing technique for a storage array
US9195603B2 (en) Storage caching
US11928005B2 (en) Techniques for performing resynchronization on a clustered system
JP7135162B2 (ja) 情報処理システム、ストレージシステム及びデータ転送方法
JP5806776B2 (ja) ストレージシステム
WO2017216887A1 (ja) 情報処理システム
US10372345B1 (en) High performance logical device
US11157184B2 (en) Host access to storage system metadata
US11461303B2 (en) IO metadata management for directly connected host
US11327653B2 (en) Drive box, storage system and data transfer method
US20210216661A1 (en) Data encryption for directly connected host
WO2016121026A1 (ja) ストレージ装置、計算機システム、及び、方法
US10761764B1 (en) Storage system and data transfer method
WO2016189640A1 (ja) ストレージ装置、及び方法
US11100008B2 (en) Efficient memory usage for snapshots
US10884924B2 (en) Storage system and data writing control method
US11416157B2 (en) Storage device and data migration method
WO2017072868A1 (ja) ストレージ装置
US11163496B1 (en) Systems and methods of updating persistent statistics on a multi-transactional and multi-node storage system
US10678701B2 (en) Direct read control in a data storage system
WO2017168690A1 (ja) ストレージ装置、及び方法
US11907541B2 (en) Adaptive read prefetch to reduce host latency and increase bandwidth for sequential read streams
US11822808B2 (en) Remotely replicating duplicated data
US11294570B2 (en) Data compression for having one direct connection between host and port of storage system via internal fabric interface

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

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP