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

ストレージ装置 Download PDF

Info

Publication number
WO2016135919A1
WO2016135919A1 PCT/JP2015/055605 JP2015055605W WO2016135919A1 WO 2016135919 A1 WO2016135919 A1 WO 2016135919A1 JP 2015055605 W JP2015055605 W JP 2015055605W WO 2016135919 A1 WO2016135919 A1 WO 2016135919A1
Authority
WO
WIPO (PCT)
Prior art keywords
logical port
data communication
storage
state
storage node
Prior art date
Application number
PCT/JP2015/055605
Other languages
English (en)
French (fr)
Inventor
田中 勝也
真喜夫 水野
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to US15/545,451 priority Critical patent/US10459791B2/en
Priority to PCT/JP2015/055605 priority patent/WO2016135919A1/ja
Publication of WO2016135919A1 publication Critical patent/WO2016135919A1/ja

Links

Images

Classifications

    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/1827Management specifically adapted to NAS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration

Definitions

  • the present invention relates to a storage apparatus configured by mutually connecting a plurality of processing nodes via a network.
  • Patent Document 1 discloses that a large-scale storage device is configured by interconnecting a plurality of storage nodes via a network.
  • a storage internal network An internal network of a storage apparatus connected to a plurality of storage nodes is referred to as a storage internal network.
  • a storage node may be simply called a node.
  • the storage node generally has a storage controller and a random access nonvolatile recording medium.
  • This recording medium is, for example, a disk array including a large number of hard disk drives and nonvolatile semiconductor memory drives.
  • the storage controller temporarily stores the front-end interface for connecting the host device (host system, etc.), the back-end interface for connecting the disk array, and user data that the host device reads and writes to the disk array.
  • a cache memory The storage controller has a control memory for storing control data handled in the storage controller, and a processor for controlling data transfer of user data and control data.
  • the plurality of storage nodes transmit and receive user data and control data between the nodes via the storage internal network.
  • “InfiniBand” of Non-Patent Document 1 is known as a network standard suitable for connection between computer nodes including storage nodes. Further, an improved technique related to InfiniBand in Patent Document 2 is known.
  • IB In InfiniBand
  • QP Queue Pair
  • IB InfiniBand
  • QP Queue Pair
  • IB InfiniBand
  • QP Queue Pair
  • IB InfiniBand
  • QP Queue Pair
  • IB InfiniBand
  • QP Queue Pair
  • Reset Init
  • RTR Ready To Receive
  • RTS Ready To Send
  • Error Error If an error occurs in the content of a request sent and received between QPs due to a software bug in the data transfer control program, QP may transition to an error state.
  • the receiving side QP When the receiving side QP detects a request error, the receiving side QP returns NAK (Negative Acknowledge) to the transmitting side QP, and the QPs on both the sending and receiving sides transition to the error state.
  • NAK Negative Acknowledge
  • the transmission side QP may transit to the error state without notification to the reception side QP.
  • a QP that has transitioned to an error state does not perform any transmission / reception including a response such as ACK / NAK.
  • the QP in the normal state detects a QP error of the communication partner with a timeout (Local ACK Timeout).
  • the timeout value that can be set is about 0.14 to 0.5 seconds, so about 0.14 to 0 at the shortest for timeout detection. . It takes 5 seconds, and the problem arises that the requirements of the storage internal network cannot be met.
  • the present invention has been made in view of the above problems, and its main purpose is to set a timeout value that can be set in the HCA for an error of a communication partner QP in a storage device that applies IB to a storage internal network. Independently, it is to provide a method for detection.
  • a storage apparatus includes a plurality of storage nodes having a plurality of logical ports having communication request transmission / reception queues and identification numbers, and an internal network interconnecting the plurality of storage nodes.
  • Each storage node has, as the logical port, a data communication logical port used for data communication with other storage nodes, and an error communication logical port used for notifying other storage nodes of the state of this data communication logical port. Have.
  • the storage node detects that the data communication logical port has transitioned to the error state, the storage node notifies the other storage node of the identification number and state of the data communication logical port using the error communication logical port.
  • the storage apparatus can detect an error in the logical port of the communication partner in a shorter time than the timeout time that can be detected by the HCA.
  • FIG. 1 is a diagram illustrating the storage apparatus according to the first embodiment.
  • FIG. 2 is a diagram for explaining a storage node.
  • FIG. 3 is a diagram for explaining logical connections between storage nodes.
  • FIG. 4 is a diagram for explaining the read operation of the storage apparatus.
  • FIG. 5 is a diagram for explaining the write operation of the storage apparatus.
  • FIG. 6 is a diagram for explaining an example of occurrence of Local ACK Timeout.
  • FIG. 7 is a diagram illustrating a QP error detection method according to the first embodiment.
  • FIG. 8 is a diagram for explaining the correspondence between SL and VL in the first embodiment.
  • FIG. 9 is a diagram illustrating a management table related to QP information.
  • FIG. 10 is a diagram for explaining data transmitted and received by the error notification QP.
  • FIG. 10 is a diagram for explaining data transmitted and received by the error notification QP.
  • FIG. 11 is a diagram illustrating processing related to the failure QP in the first embodiment.
  • FIG. 12 is a diagram for explaining processing related to continuous QP in the first embodiment.
  • FIG. 13 is a diagram illustrating communication between error notification QPs according to the first embodiment.
  • FIG. 14 is a diagram for explaining the type of failure in the storage internal network, and the detection and notification method for the failure.
  • FIG. 15 is a diagram illustrating processing for the failure QP in the second embodiment.
  • FIG. 16 is a diagram illustrating processing for continuous accumulation QP in the second embodiment.
  • FIG. 17 is a diagram illustrating communication between error notification QPs according to the second embodiment.
  • FIG. 18 is a diagram illustrating communication between error notification QPs according to the third embodiment.
  • FIG. 19 is a diagram illustrating communication between error notification QPs according to the third embodiment.
  • FIG. 20 is a diagram illustrating logical connections between storage nodes in the fourth embodiment.
  • FIG. 21 is a diagram for explaining a QP error detection method according to the fourth embodiment.
  • FIG. 22 is a diagram for explaining a QP error detection method according to the fifth embodiment.
  • FIG. 23 is a diagram for explaining a QP error detection method according to the sixth embodiment.
  • the process may be described with “program” as the subject.
  • the program is executed by a processor, for example, a CPU (Central Processing Unit), and performs a predetermined process.
  • a processor for example, a CPU (Central Processing Unit)
  • the processing executed by the processor is appropriately performed using a storage resource (for example, a memory) and a communication interface device (for example, a communication port), so the subject of the processing may be a processor.
  • the processor may have dedicated hardware in addition to the CPU.
  • Each storage node included in the storage apparatus uses QP which is a logical communication port (logical port) for data transmission / reception between the storage nodes.
  • the storage node includes a QP dedicated to error notification, in addition to the data transfer QP for transferring user data or control data.
  • the failure monitoring program notifies the storage node that is the communication partner of the data transfer QP of the occurrence of the QP error via the error notification QP.
  • the storage node notified of the QP error destroys the QP corresponding to the error notification content, and then recreates the QP.
  • FIG. 1 is a diagram illustrating the hardware configuration of the storage apparatus according to the first embodiment.
  • the storage apparatus 100 includes a plurality of storage nodes 101 (indicated as “Storage Node” in the drawing) interconnected by an internal network.
  • This internal network is referred to herein as a storage internal network.
  • a network constructed by, for example, InfiniBand standard switches and links is used as the storage internal network.
  • Each storage node 101 is interconnected via InfiniBand Switch (IB switch) 110, 111.
  • IB switch InfiniBand Switch
  • the storage node 101 and the IB switches 110 and 111 are connected by IB links 120 and 121, respectively.
  • the storage node 101 and the IB switches 110 and 111 are connected to the management terminal 102 via the management networks 130 and 131.
  • An administrator of the storage apparatus 100 can perform setting, failure monitoring, and maintenance work of the storage apparatus 100 via the management terminal 102.
  • the storage node 101 can also exchange information necessary for starting data transfer over the IB network with each other via the management networks 130 and 131.
  • the information exchanged here is, for example, the IB port LID (Local Identifier) or QP number.
  • FIG. 2 is a diagram illustrating the hardware configuration of the storage node in the first embodiment.
  • the storage node 101 includes a storage controller 240 and a disk array 230 having a plurality of hard disk drives (HDD) or a plurality of solid state drives (SSD).
  • HDD hard disk drives
  • SSD solid state drives
  • the storage controller 240 includes processors (MP) 200 and 210, memories 202 and 212, front end interfaces (FE) 204 and 214, back end interfaces (BE) 205 and 215, a management network interface (LANC) 208, 218.
  • the processors 200 and 210 have a plurality of processor cores 201 and 211, respectively.
  • a host system (not shown) that accesses the storage apparatus 100 is connected to the storage apparatus 100 via the front-end interfaces 204 and 214.
  • the host system and the front end interfaces 204 and 214 are connected by a transmission line such as a fiber channel cable.
  • the host system and the front end interfaces 204 and 214 may be connected via a storage area network including a plurality of transmission lines and a plurality of switches.
  • the front-end interfaces 204 and 214 convert the data transfer protocol between the host system and the storage node 101 and the data transfer protocol in the storage controller 240.
  • the disk array 230 is connected to the storage controller 240 via the back-end interfaces 205 and 215.
  • the back-end interfaces 205 and 215 convert the data transfer protocol in the storage controller 240 and the data transfer protocol between the storage controller 240 and the disk array 230.
  • Management network interfaces 208 and 218 connect the storage node 101 to the management terminal 102 via the management networks 130 and 131.
  • the processors 200 and 210 control data transfer between the host system connected via the front-end interfaces 204 and 214 and the disk array 230 connected via the back-end interfaces 205 and 215 and between the storage nodes.
  • the memories 202 and 212 are main memories of the processors 200 and 210, respectively, and store a program (storage control program and the like) executed by the processors 200 and 210, a management table referred to by the processors 200 and 210, and the like.
  • the memories 202 and 212 are also used as a cache memory of the storage node 101.
  • the storage controller 240 includes PCIe switches (PCIe SW) 203 and 213 and HCAs 206 and 216.
  • the PCIe switch 203 and the PCIe switch 213 are connected by a non-transparent link 220.
  • the processors 200 and 210 can communicate via a non-transparent link 220.
  • HCA 206 and 216 each have one or more physical ports for connecting IB links. This physical port is called an IB port.
  • the HCA 206 has at least an IB port 207
  • the HCA 216 has at least an IB port 217.
  • the HCAs 206 and 216 are connected to the processors 200 and 210 via PCIe switches 203 and 213, respectively.
  • the processors 200 and 210 are connected to IB switches 110 and 111 via IB ports 207 and 217 and IB links 120 and 121, respectively.
  • the storage nodes 101 can communicate with each other.
  • FIG. 3 is a diagram for explaining logical connection between the storage nodes in the first embodiment through the IB network.
  • the memory (memory 202 and memory 212) in each storage node has a user data memory area for storing user data received from the host system and a control memory area for storing control data in the storage apparatus.
  • the user data memory area is allocated a cache memory of the storage node and a buffer area used by the front-end interface or the back-end interface.
  • the storage node 1 (101) has a user data memory area 301 and a control memory area 302.
  • the storage node 2 (320) has a user data memory area 321 and a control memory area 322
  • the storage node n (330) has a user data memory area 331 and a control memory area 332.
  • IB uses Queue Pair (QP), which is a logical communication port (logical port) when each node process communicates.
  • QP Queue Pair
  • Each QP is at least a transmission queue that stores transmission requests (Send Queue, sometimes referred to as SQ), and a reception queue that stores requests received from other nodes (Receive Queue, sometimes referred to as RQ). ).
  • SQ and RQ are associated with a completion queue (Completion Queue; sometimes referred to as CQ) for storing processed requests.
  • CQ completion queue
  • CQE completion Queue Entry. Indicated as CQE
  • Each QP has a QP number that is a unique identification number. The QP number is a value automatically assigned by the HCA when the QP is created.
  • QP is a logical communication port, it is possible to freely create or discard QP by executing a program on the node processor (MP 200, 210).
  • the QP is created when the storage node executes ibv_create_qp () of the IB Verbs API, and the QP can be destroyed (destroyed) by executing ibv_destroy_qp ().
  • memory resources are consumed for SQ, RQ, etc., which the QP has, so it is not possible to create an QP without limitation.
  • Each QP has states such as Reset, Init (Initialized), RTR (Ready To Receive), RTS (Ready To Send), and Error.
  • the state of the QP is the Reset state.
  • the storage node can change the QP state from Reset to Init (transition) by executing ibv_modify_qp () of IB Verbs API.
  • the QP state is Init, request transmission / reception using this QP cannot be performed. In order to be able to send and receive requests, it is necessary to transition the QP state to RTS. However, in order to transition the QP in the Init state to the RTS state, it is necessary to transition to the RTR state once.
  • the QP state can be changed to RTR.
  • QP in the RTR state can receive requests but cannot send requests. By changing the QP state from RTR to RTS, QP can send and receive requests.
  • the QP QP number that is the QP communication partner (communication destination).
  • the QP QP number is required, it is necessary to acquire the QP QP number of the communication partner in order to make the QP (Reset state) newly created at the node and the QP in the Init state ready for request transmission / reception. .
  • the QP state may change to Error. If the QP state is Error, data communication in that QP is not possible. In order to make the Error state QP usable again, it is necessary to transition the QP to the Reset state and then to the Init, RTR, and RTS states.
  • each storage node includes an individual QP at least for each storage node connected to each memory area.
  • the storage node 1 (101) has a QP 303 for transferring data in the user data memory area 301 to the user data memory area 321 of the storage note 2 (320).
  • the storage node 1 (101) has a QP 304 for transferring data in the user data memory area 301 to the user data memory area 331 of the storage note n (330).
  • the storage node 1 (101) has a QP 305 for transferring data in the control memory area 302 to the control memory area 322 of the storage note 2 (320). Furthermore, the storage node 1 (101) has a QP 306 for transferring data in the control memory area 302 to the control memory area 332 of the storage note n (330).
  • the storage node 2 (320) has a QP 323 for transferring data in the user data memory area 321 to the user data memory area 301 of the storage note 1 (101).
  • the storage node 2 (320) has a QP 324 for transferring the data in the user data memory area 321 to the user data memory area 331 of the storage note n (330).
  • the storage node 2 (320) has a QP 325 for transferring the data in the control memory area 322 to the control memory area 302 of the storage note 1 (101).
  • the storage node 2 (320) has a QP 326 for transferring the data in the control memory area 322 to the control memory area 332 of the storage note n (330).
  • the storage node n (330) has a QP 333 for transferring data in the user data memory area 331 to the user data memory area 301 of the storage note 1 (101).
  • the storage node n (330) has a QP 334 for transferring data in the user data memory area 331 to the user data memory area 321 of the storage note 2 (320).
  • the storage node n (330) has a QP 335 for transferring the data in the control memory area 332 to the control memory area 302 of the storage note 1 (101).
  • the storage node n (330) has a QP 336 for transferring the data in the control memory area 332 to the control memory area 322 of the storage note 2 (320).
  • each storage node has a QP corresponding to the product of the number of types of memory areas of the node that performs data transfer by QP, the number n of connected nodes, and the number of processes that operate QP in each node.
  • QP the number of types of memory areas of the node that performs data transfer by QP
  • n of connected nodes the number of connected nodes
  • processes that operate QP in each node the number of processes that operate QP in each node.
  • two-way communication is possible between two QPs.
  • each storage node should have an alternative QP in case a failure occurs in QP (QP transitions to Error state) and communication becomes impossible.
  • FIG. 4 is a diagram for explaining the operation of the storage apparatus 100 according to the first embodiment when a read request is received from the host system.
  • the PCIe switch that connects the processors (200, 422) and the HCA (206, 423) is omitted.
  • the host system 400 is connected to the front end interface 204 of the storage node 1 (101). Assume that the front-end interface 204 receives a read request from the host system 400. It is assumed that the data requested to the host system 400 is stored in the cache memory 421 of the storage node 2 (320).
  • the processor 200 of the storage node 1 (101) transmits a data read request in the cache memory 421 from the HCA 206 to the HCA 423. Specifically, when the data transfer control program is executed by the processor 200, the processor 200 is used for communication with the storage node 2 (320) among a plurality of QPs prepared in the storage node 1 (101). Post a data read request (for example, RDMA Read request) to QP. Post means an operation of storing a request in the QP transmission queue. As a result, the request is transmitted to the HCA 423.
  • RDMA Read request for example, RDMA Read request
  • the storage node 2 (320) transfers the read data in the cache memory 421 to the buffer area 401 in the memory 202 via the path 402 via the processor 422, HCA 423, IB switch 110, HCA 206, and processor 200. Forward.
  • the front end interface 204 transfers the read data stored in the buffer area 401 to the host system 400 (403).
  • the data in the cache memory 421 may be controlled to be transmitted from the storage node 2 (320) to the storage node 1 (101) using an RDMA Write request.
  • the processor 200 posts a request (for example, an RDMA Write request) for transferring a message for requesting the processor 422 to transmit read data to the QP for communication with the storage node 2 (320).
  • the processor 422 that has received the message posts an RDMA Write request for transferring read data to the QP for communication with the storage node 1 (101).
  • FIG. 5 is a diagram for explaining the operation of the storage apparatus 100 according to the first embodiment when a write request is received from the host system.
  • the PCIe switch that connects the processors (200, 422, 532) and the HCA (206, 423, 533) is omitted.
  • the write data received from the host system 400 is stored in the buffer area 401 in the memory 202 (501). Assume that the storage area of the storage node 2 (320) is instructed by the storage control program as the write destination of the write data received from the host system 400.
  • the processor 200 transfers the write data in the buffer 401 to the cache memory 421 of the storage node 2 (320) via the HCA 206, the IB switch 110, the HCA 423, and the processor 422 (502). Further, in order to make the write data redundant, the processor 200 transfers the write data to the cache memory 531 of the storage node 3 (530) via the HCA 206, the IB switch 110, the HCA 533, and the processor 532 (503). After the writing to the two storage node cache memories is completed, the front-end interface 204 notifies the host system 400 of the completion of the writing.
  • the processor 200 selects the QP for communication with the storage node 2 (320) among the plurality of QPs prepared in the storage node 1 (101). Data is transferred by posting a data write request (for example, an RDMA Write request). Further, the processor 200 performs data transfer by posting a data write request to the QP for communication with the storage node 3 (530).
  • a data write request for example, an RDMA Write request
  • FIG. 6 is a diagram for explaining an example in which a local ACK timeout occurs in a standard IB network. As an example, it is assumed that QP0 (600) and QP3 (601) perform data transfer in both directions.
  • the data transfer control program operating on the node 1 posts the request to QP0 (600) (602). For example, if the content of the request is an RDMA Write operation, QP0 (600) transmits an RDMA Write request packet to QP3 (601) (603). QP3 (601) that has received the RDMA Write performs writing to the memory of the node 2 according to the request content, and then returns ACK to QP0 (600) (604). The data transfer control program operating on the node 1 acquires the completion from the completion queue connected to QP0 (600), and confirms that the request has been completed normally (605).
  • QP3 (601) transitions to the error state.
  • the data transfer control program operating at node 2 posts a request to QP3 (601).
  • QP3 (601) sends an error occurrence in QP3 (601) to the completion queue connected to QP3 (601) without notifying the communication partner QP0 (600) of an error (607).
  • the indicated completion is output (608).
  • QP3 (601) transitions to an error state.
  • a QP that has transitioned to an error state does not perform any transmission / reception.
  • FIG. 7 is a diagram for explaining a QP error detection method according to the first embodiment.
  • FIG. 7A shows a case where data is transferred from the node 1 to the node 2
  • FIG. 7B shows a case where data is transferred from the node 2 to the node 1.
  • the IB switch for connecting the storage node 1 (700) and the storage node 2 (701) is omitted.
  • the node 1 has a user data transfer QP0 (710), a control data transfer QP1 (711), and an error notification QP2 (712).
  • the node 2 has a user data transfer QP3 (713), a control data transfer QP4 (714), and an error notification QP5 (715).
  • Node 1 and node 2 are connected by an IB link 730 having three virtual lanes 720, 721, and 722.
  • the user data transfer QP and the control data transfer QP are collectively referred to as “data transfer QP”.
  • FIG. 8 is a diagram for explaining the correspondence between the service level and the virtual lane according to the first embodiment.
  • Correspondence with (VL) 803 is shown.
  • the storage apparatus 100 according to the first embodiment sets a service level 0 to a QP for performing user data transfer (for example, QP0 (710 for user data transfer in FIG. 7)) and assigns a virtual lane 0.
  • the storage apparatus 100 sets service level 1 to QP (for example, control data transfer QP1 (711) in FIG. 7) for performing control data transfer, and allocates virtual lane 1.
  • the storage apparatus 100 sets a service level 2 to QP (for example, QP2 for error notification (712) in FIG. 7) for performing error notification, and allocates virtual lane 2.
  • QP0 (710), QP1 (711), and QP2 (712) are requesters, and QP3 (713), QP4 (714), and QP5 (715) are operating as responders.
  • the data transfer control program 702 operating at the node 1 transfers user data from QP0 (710) set at the service level 0 to QP3 (713) at the node 2, and transfers the control data to the service level 1 QP1 (711) set to QP4 (714) of node 2 is transferred.
  • the fault monitoring program 703 operating on the node 1 checks the states of QP0 (710) and QP1 (711). When an error of QP0 (710) or QP1 (711) is detected, the failure monitoring program 703 transmits an error notification from QP2 (712) set to service level 2 to QP5 (715) of the node 2. The data transfer control program 705 operating on the node 2 acquires the error notification from the completion queue connected to the QP5 (715).
  • Fig. 7 (b) shows an example in which the role of the requester and responder is the reverse of Fig. 7 (a).
  • the data transfer control program 704 operating at the node 2 transfers the user data from QP3 (713) set to the service level 0 to QP0 (710) of the node 1 and transfers the control data to the service level 1 QP4 (714) set to QP1 (711) of node 1 is transferred.
  • the fault monitoring program 705 operating on the node 2 checks the states of QP3 (713) and QP4 (714). When an error of QP3 (713) or QP4 (714) is detected, the failure monitoring program 704 transmits an error notification from QP5 (715) set to service level 2 to QP2 (712) of node 1. The data transfer control program 702 acquires the error notification from the completion queue connected to QP2 (712).
  • one error notification QP is assigned to one user data transfer QP and one control data transfer QP.
  • one error notification QP may be allocated.
  • the data transfer control program 702 and the failure monitoring program 703 operate as part of a storage control program that operates as one process on the node 1 (700).
  • the data transfer control program 704 and the failure monitoring program 705 of the node 2 (701) also operate as part of the storage control program that operates as one process on the node 2 (701).
  • the storage control program may be operated as a plurality of processes, and a different QP may be operated for each process.
  • FIG. 9 is a diagram illustrating a management table related to QP information in the first embodiment.
  • Each storage node has a QP information management table 900.
  • the data transfer control program that has received the error notification from the communication partner node refers to the QP information management table 900 and executes failure processing.
  • the QP information management table 900 stores QP identification information 901 for error notification and QP identification information 902 for user data and control data transfer in a node (Local node) in which the management table 900 is stored. Further, the QP information management table 900 stores the IB port LID 903 and QP identification information 904 of the connection destination node (Remote node), and the service level (SL) 905 used for data transfer.
  • the QP identification information is, for example, a QP number.
  • the data transfer control program that has received the error notification compares which QP identification information included in the error notification with the QP identification information 904 of the connection destination node in the QP information management table 900 to determine which QP of which node. You can check whether an error has occurred. Further, the QP of the Local node to be destroyed and recreated or reset can be specified from the identification information 902 of the QP information management table 900. Furthermore, the data transfer control program can set the service level specified by the service level 905 for the re-created or reset QP.
  • FIG. 10 is a diagram for explaining data to be transmitted and received between error notification QPs.
  • the fault monitoring program uses QP for error notification to create a request that stores 32-bit length data (1001) in the immediate value (Immediate Data) of the IB RDMA Write with Immediate operation. By posting, it transmits to the communication partner node (QP).
  • a program data transfer control program executed at the node that received the request can obtain an immediate value from the completion queue associated with the RQ of the error notification QP.
  • the immediate value (1001) stores a QP number (1002) of the QP in which an error has occurred and information (1003) for identifying the state.
  • the RDMA Write with Immediate operation request sent by the fault monitoring program does not transfer data other than immediate data, set the data transfer length other than immediate data to 0 and the number of Scatter Gatger lists to 0 as the request parameter. .
  • the error notification QP is not used only when sending information about the QP in which an error has occurred (in the Error state), but when sending information about the QP in other states. Is also used. For this reason, the state identification information (1003) can also store states other than the Error state (Init, RTS, etc.).
  • the data transfer control program uses the error notification QP to create and transmit data (1001) according to the format shown in FIG.
  • the error notification QP is used only for the processes related to the error notification shown in FIGS. 11 and 12, thereby avoiding an error due to a software bug with respect to the error notification QP.
  • a QP that has transitioned to an error state without the communication partner is referred to as a failure QP.
  • a QP that is a communication partner of the fault QP and has to execute fault processing together with the fault QP is referred to as a continuous QP.
  • FIG. 11 is a diagram for explaining processing relating to the failure QP in the first embodiment. This flow is executed by a failure monitoring program that operates on the node to which the failure QP belongs.
  • FIG. 12 is a flow of processing performed by the data transfer control program operating at the node to which the continuous QP belongs.
  • the fault monitoring program waits until it detects an error in the QP for user data transfer or the QP for control data transfer (1101).
  • the QP error may be detected as an IB completion error or may be notified as an asynchronous error.
  • the fault monitoring program that detected the error notifies the storage control program to change the data transfer that the fault QP was in charge of to the data transfer based on the previously assigned alternative QP.
  • the alternative QP may be a QP associated with an IB port possessed by the same HCA as the HCA to which the IB port associated with the failure QP belongs, or a QP associated with an IB port possessed by another HCA.
  • the storage control program Upon receipt of this notification, the storage control program performs data transfer using the alternative QP.
  • the fault monitoring program that detects the error displays fault QP information (LID, QP number, etc.) on the management terminal 102 and notifies the storage administrator.
  • fault QP information LID, QP number, etc.
  • the fault monitoring program that detected the error sets the information that stores the QP number and error status of the fault QP in the format shown in FIG. 10 to the immediate value in the RDMA Write with Immediate operation, and starts from the error notification QP. It transmits to the other node (that is, the node to which the continuous QP belongs) (1102).
  • the failure monitoring program extracts a completion queue entry (CQE) related to the failure QP from the completion queue connected to the failure QP (1103).
  • CQE completion queue entry
  • the completion queue entry may not be acquired depending on the cause of the error. In that case, step 1103 is skipped.
  • the failure monitoring program destroys the failure QP and creates a new QP (1104).
  • the state of the QP recreated at this time is the Reset state.
  • the failure monitoring program may subsequently transition the failure QP to the Init state.
  • the fault monitoring program creates a request in which information that can identify the re-created QP QP number and state is set to an immediate value in RDMA Write with Immediate operation, and sends the request from the error notification QP to the partner node ( 1105).
  • the data transfer control program recreates the continuous QP in response to the reception of the notification transmitted by the failure monitoring program of the node to which the failure QP belongs in step 1102.
  • the failure monitoring program waits for the QP QP number recreated by the data transfer control program of the communication partner node to be sent to the error notification QP (1106).
  • the fault monitoring program uses the received QP number to transition the recreated QP to the RTR state. For transition from the Init state to the RTR state, it is necessary to specify the QP number of the communication partner. In addition, the communication partner's LID and PSN (Packet Sequence Number) are also required. Since LID does not change when QP is recreated, the previous value is reset, and PSN sets a predetermined initial value. Subsequently, the failure monitoring program causes the re-created QP to transition to the RTS state (1107).
  • the failure monitoring program creates a request in which the re-created QP QP number and state are set to the immediate values in the RDMA Write with Immediate operation, and transmits the request from the error notification QP to the partner node (1108).
  • the data transfer control program of the communication partner node performs processing to transition the continuous QP to the RTS state.
  • the failure monitoring program waits for the QP (continuous QP) QP number and state that the data transfer control program of the communication partner node has changed to the RTS state to be sent to the error notification QP (1109).
  • the fault monitoring program When the fault monitoring program receives the QP number and state of the continuous QP and confirms that the continuous QP has transitioned to the RTS state, it displays this QP information (LID, QP number, etc.) on the management terminal 102 for storage management. The person in charge. Also, the failure monitoring program notifies the data transfer control program of its own node that data transfer using the re-created QP is possible, and ends the processing. Upon receiving this notification, the data transfer control program of the own node determines that data transfer using the re-created QP is possible.
  • FIG. 12 is a diagram illustrating processing related to continuous QP in the first embodiment. This flow is executed by a data transfer control program that operates at the node to which the continuous QP belongs.
  • the data transfer control program waits for an error notification from the communication partner node (1201).
  • the data transfer control program that has received the error notification refers to the QP information included in the immediate value and the QP information management table 900 to identify the continuous QP (1202).
  • the QP information included in the immediate value includes the QP number of the failure QP.
  • the data transfer control program that has received the error notification refers to each row in the QP information management table 900 and identifies the row in which the QP identification information 904 of the connection destination node matches the QP number of the failure QP. Then, by specifying the QP identification information 902 in the row, the continuous QP can be specified.
  • the data transfer program notifies the storage control program to change the data transfer that the consecutive QP is in charge of to the data transfer by the alternative QP allocated in advance.
  • the alternative QP may be a QP associated with an IB port included in the same HCA as an HCA to which an IB port associated with a continuous QP belongs, or a QP associated with an IB port of another HCA.
  • the storage control program performs data transfer using the alternative QP.
  • the data transfer control program checks whether the continuous QP is already in an error state (1203). If the continuous QP is not in the error state, the data transfer control program changes the continuous QP to the error state (1204).
  • the data transfer control program changes the continuous QP to the error state (1204).
  • requests stored in Send Queue and Receive Queue of Queue Pair are output to the completion queue.
  • the NAK is returned from the responder to the requester, and the requester side QP that received the NAK may transit to the error state. In that case, step 1204 is skipped.
  • the data transfer control program displays information on the continuous QP (LID, QP number, etc.) transitioned to the error state on the management terminal 102 and notifies the storage administrator.
  • the data transfer control program retrieves a completion queue entry (CQE) related to the continuous QP from the completion queue connected to the continuous QP (1205).
  • CQE completion queue entry
  • the completion queue entry may not be acquired depending on the cause of the error. In that case, step 1205 is skipped.
  • the data transfer control program destroys the continuous QP and creates a new QP (1206).
  • the state of the QP recreated at this time is the Reset state.
  • the data transfer control program may subsequently transition the continuous QP to the Init state.
  • the data transfer control program creates a request in which the re-created QP QP number and information that can identify the state are set to immediate values in the RDMA Write with Immediate operation, and sends the request from the error notification QP to the other node. (1207).
  • the failure monitoring program recreates the failure QP at the communication partner node (the node to which the failure QP belongs).
  • the data transfer control program waits for the QP QP number recreated by the failure monitoring program of the communication partner node to be sent to the error notification QP (1208).
  • the data transfer control program uses the received QP number to transition the recreated QP to the RTR state.
  • the transition from the Init state to the RTR state requires the communication partner's LID and PSN (Packet Sequence Number) in addition to the communication partner's QP number. Since LID does not change when QP is recreated, the previous value is reset, and PSN sets a predetermined initial value.
  • the data transfer control program causes the re-created QP to transition to the RTS state (1209).
  • the data transfer control program sets the QP number and state of the re-created QP to an immediate value in the RDMA Write with Immediate operation, and transmits a request from the error notification QP to the partner node (1210).
  • the failure monitoring program performs processing for transitioning the failure QP to the RTS state at the communication partner node.
  • the data transfer control program waits for the QP QP number and state that the fault monitoring program of the communication partner node has changed to the RTS state to be sent to the error notification QP (1211).
  • the data transfer control program receives the re-created QP QP number and state from the correspondent node, confirms that this QP has transitioned to the RTS state, and enables data transfer using the re-created QP. to decide. Then, the data transfer control program displays on the management terminal 102 the QP information (LID, QP number, etc.) that has been transferred to the RTS state and is ready for data transfer, notifies the storage administrator, and ends the processing.
  • the QP information LID, QP number, etc.
  • FIG. 13 is a diagram illustrating communication between error notification QPs according to the first embodiment.
  • the failure monitoring program operating on the node 2 detects an error in the data transfer QP for user data transfer or control data transfer (1301).
  • the fault monitoring program running on node 2 sends an RDMA Write with Immediate request that stores the QP number of the QP in which the error occurred and its state identification information as immediate values from QP5 (715) for error notification.
  • the failure monitoring program operating on the node 2 that has transmitted the error notification destroys and re-creates the QP in which the error has occurred, that is, the failure QP (1303). These processes correspond to steps 1103 and 1104 in FIG.
  • the data transfer control program that operates on the node 1 that has received the error notification identifies, destroys, and recreates the QP corresponding to the failure QP, that is, the continuous QP, from the immediate value notified in 1302 (1304). These processes correspond to steps 1201 to 1206 in FIG.
  • the failure monitoring program of node 2 and the data transfer control program of node 1 transmit and receive an RDMA Write with Immediate request storing the re-created QP QP number and its state identification information as immediate values (1305, 1306). These processes correspond to step 1105 in FIG. 11 and step 1207 in FIG.
  • the failure monitoring program of node 2 and the data transfer control program of node 1 cause the re-created QP to transition to the RTS state in the order of the Reset state, Init state, and RTR state (1307, 1308).
  • These processes correspond to steps 1106 to 1107 in FIG. 11 and steps 1208 to 1209 in FIG.
  • the failure monitoring program of node 2 and the data transfer control program of node 1 send and receive RDMA Write with Immediate requests that store the QP QP number and state identification information of the QP that has completed the transition to the RTS state as immediate values. (1309, 1310).
  • These processes correspond to steps 1108 to 1109 in FIG. 11 and steps 1210 to 1211 in FIG.
  • data transfer can be resumed between the node 1 and the node 2 using the re-created QP.
  • data transfer using the re-created QP may be performed immediately.
  • the data transfer using the alternative QP may be continued (In other words, it is not necessary to immediately transfer data using the re-created QP).
  • data transfer using the re-created QP may be performed.
  • FIG. 14 is a diagram comparing the type of failure and the detection and notification method for the failure in the storage internal network of the first embodiment with those in the standard IB standard.
  • the types of failure assumed in the storage internal network to which the IB is applied include a port physical error, an intermittent error, and an error due to a software bug (1401).
  • a port physical error is, for example, a failure in which an IB link goes down and communication between physical ports becomes impossible.
  • the failure is detected by the Subnet Manager Agent and notified to the Subnet Manager or detected by an asynchronous event generated by the HCA.
  • the failure is notified to the Subnet Manager according to the IB standard.
  • the storage control program that has received the failure notification from the Subnet Manager performs a data transfer path failover process.
  • the storage control program that detects the asynchronous event generated by the HCA performs a failover process for the data transfer path.
  • Intermittent errors are failures such as intermittent packet loss.
  • the receiving side QP detects the discontinuity of the sequence number added for each packet, and requests retransmission to the transmitting side QP. Also in this embodiment, regarding the intermittent error, processing according to the IB standard is performed.
  • the source QP When the QP transitions to the error state without permission from the communication partner due to a software bug, etc., as explained with reference to FIG. 6 above, the source QP outputs a Local ACK Timeout error in the IB standard. A destination QP error will be detected. Since it takes time before the Local ACK Timeout error is output, this method takes a long time to detect a QP error.
  • the failure monitoring program when an error occurs in the data transfer QP, the failure monitoring program notifies the communication partner via the error notification QP. As a result, the storage apparatus 100 can execute the failure processing before the Local ACK Timeout is reached.
  • an error of a communication partner logical port due to a software bug is caused by a timeout of a request source logical port. It is possible to provide a method for detecting without a failure. As a result, even if a logical port error occurs due to a software bug, the storage node can be switched to perform data transfer using an alternative logical port (alternative QP) immediately, avoiding timeouts in the host system. .
  • Example 2 will be described with reference to FIGS. 15 to 17. First, an outline of the second embodiment will be described.
  • the storage device according to the second embodiment is different from the storage device according to the first embodiment in the processing related to the failure QP and the processing related to continuous QP. Other configurations and operations of the storage apparatus are the same.
  • the failure QP and the continuous QP are not destroyed, but are reset and reused.
  • a QP error notification using the error notification QP in the storage apparatus of the second embodiment and a failure processing method for the QP error will be described.
  • the QP that has transitioned to the error state without permission from the communication partner is called a failure QP.
  • a QP that is a communication partner of the fault QP and has to execute fault processing together with the fault QP is referred to as a continuous QP.
  • FIG. 15 is a diagram for explaining processing for the failure QP in the second embodiment. This flow is executed by a failure monitoring program that operates on the node to which the failure QP belongs.
  • step 1501 to step 1503 Since the processing from step 1501 to step 1503 is the same as the processing from step 1101 to 1103 in FIG.
  • step 1503 the failure monitoring program that has fetched the completion queue entry (CQE) from the completion queue causes the failure QP to transition to the reset state (1504).
  • CQE completion queue entry
  • the processing in step 1105 in FIG. 11 for notifying the QP number in the first embodiment is not necessary in the second embodiment.
  • the failure monitoring program may subsequently transition the failure QP to the Init state.
  • step 1505 to step 1507 has the same contents as the processing from step 1107 to 1109 in FIG.
  • FIG. 16 is a diagram for explaining processing for continuous QP in the second embodiment. As in the first embodiment, this flow is executed by a data transfer control program that operates on the node to which the continuous QP belongs.
  • step 1601 to step 1605 Since the processing from step 1601 to step 1605 has the same contents as the processing from step 1201 to 1205 in FIG.
  • step 1605 the data transfer control program that has fetched the completion queue entry (CQE) from the completion queue changes the continuous QP to the reset state (1606).
  • CQE completion queue entry
  • the processing in step 1207 in FIG. 12 for notifying the QP number in the first embodiment is not necessary in the second embodiment.
  • the data transfer control program may subsequently transition the continuous QP to the Init state.
  • Step 1607 to Step 1609 is the same as the processing from Step 1209 to Step 1211 in FIG.
  • FIG. 17 is a diagram for explaining communication between error notification QPs according to the second embodiment.
  • the failure monitoring program operating on the node 2 detects an error in the data transfer QP (1701).
  • the failure monitoring program operating on node 2 sends an RDMA Write with Immediate request that stores the QP number of the QP in which the error occurred and its state identification information as immediate values from QP5 (715) for error notification.
  • the failure monitoring program that operates in the node 2 that has transmitted the error notification shifts the QP in which an error has occurred, that is, the failure QP, in the order of error state, reset state, init state, RTR state, and RTS state (1703).
  • the data transfer control program that operates in the node 1 that has received the error notification specifies the QP corresponding to the failure QP, that is, the continuous QP, from the immediate value notified in 1702. Then, the continuous QP is shifted in the order of error state, reset state, init state, RTR state, and RTS state (1704). Finally, the failure monitoring program of node 2 and the data transfer control program of node 1 send and receive RDMA Write with Immediate requests that store the QP QP number and state identification information of the QP that has completed the transition to the RTS state as immediate values. (1705, 1706). As described above, data transfer can be resumed between the node 1 and the node 2. Since the storage apparatus according to the second embodiment does not recreate the QP, the notification of the QP number (1305, 1306 in FIG. 13) performed in the first embodiment is unnecessary. Therefore, it is possible to shorten the time until resumption of data transfer.
  • the QP error detection method is different from that of the storage apparatus according to the first or second embodiment.
  • the error monitoring program detects a data transfer QP error by acquiring a completion indicating an error or receiving an asynchronous error.
  • heartbeat communication is performed using the error notification QP.
  • FIG. 18 is a diagram illustrating a transmission process of heartbeat communication according to the third embodiment.
  • each storage node acquires the state of the data transfer QP and transmits it from the error notification QP.
  • the transmission data format is as shown in FIG. 10 and is transmitted as an immediate value of the RDMA Write with Immediate operation as in the first or second embodiment.
  • the storage node executes a heartbeat transmission program for each data transfer QP.
  • the heartbeat transmission program operates as a part of the storage control program that operates as one process on each node, like the data transfer control program and the failure monitoring program.
  • QP_i a specific QP among N data transfer QPs
  • the heartbeat transmission program operating in each storage node acquires the state of QP_i for data transfer (1801).
  • the state of QP_i can be obtained by using, for example, ibv_query_qp () of Verbs API.
  • the heartbeat transmission program proceeds to step 1803 if the data transfer QP that acquired the state is an error, and proceeds to step 1804 otherwise.
  • the heartbeat transmission program starts failure processing for QP_i that is an error state (1803).
  • the failure processing activated here is the same as the processing in FIG. 11 or FIG. Thereafter, the heartbeat transmission program advances the processing to step 1804.
  • the heartbeat transmission program transmits the acquired state from the QP for error notification as an immediate value of RDMA Write with Immediate operation (1804).
  • the heartbeat transmission program waits for a predetermined time (1806). This time is set so that the influence of the heartbeat transmission / reception process on the storage apparatus is sufficiently small, and the time from the occurrence of the failure to the detection is also sufficiently small.
  • the heartbeat transmission program repeats the processing from step 1801 to step 1806.
  • FIG. 19 is a diagram for explaining heartbeat communication reception processing according to the third embodiment.
  • the heartbeat communication reception process is executed by a heartbeat reception program.
  • each storage node receives the data transfer QP state of the communication partner, and determines whether or not it is necessary to start failure processing for the continuous QP according to the contents. Similar to the heartbeat transmission program, when the node has N data transfer QPs, the storage node executes the heartbeat reception program for each data transfer QP. Similarly to the heartbeat transmission program, the heartbeat reception program also operates as part of a storage control program that operates as one process on each node.
  • the heartbeat reception program operating on each storage node receives the data transfer QP_i state of the communication partner node transmitted by the heartbeat transmission program operating on the communication partner node via the error notification QP. Wait for it to come (1901).
  • the heartbeat reception program advances the process to step 1903. In other cases, the processing is repeated from step 1901.
  • step 1903 the heartbeat receiving program identifies the continuous QP_i and starts fault processing for the continuous QP_i.
  • the failure processing activated here is the same as the processing in FIG. 12 or FIG.
  • the heartbeat reception program repeats the processing from step 1901 to step 1903.
  • a storage apparatus will be described with reference to FIGS.
  • IB reliable data transfer service RC service
  • DC Dynamically Connected Transport
  • one-to-many QP connection is possible even in the RC service. Details of DC are disclosed in Patent Document 2, for example.
  • the DC compatible QP as a requester is referred to as a DC initiator
  • the DC compatible QP as a responder is referred to as a DC target.
  • Normal (not DC-compatible) QP can send data between two QPs in both directions to transfer data, but with DC-compatible QP, requests can be made only in the direction from the DC initiator to the DC target. Can be sent.
  • the service level is set in the QP when the state transitions from the Init state to the RTR state.
  • DC when posting a request to a DC initiator, a service level used for each request is set.
  • QP resources necessary for error notification are reduced. As a result, when the number of nodes is n, the memory resources necessary for error notification QP can be reduced to 2 / n, compared to the case where all QPs are used.
  • FIG. 20 is a diagram for explaining logical connections between storage nodes in the fourth embodiment.
  • DCI_1 (2004), DCI_i (2014) and DCI_n (2024) are DC initiators.
  • DCT_1 (2005), DCT_i (2015), and DCT_n (2025) are DC targets.
  • Node 1 (2000) includes n QPs including QP_U_1_i (2006) and QP_U_1_n (2008) in order to transmit and receive data in the user data area 2001.
  • the node 1 (2000) includes n QPs including QP_S_1_i (2007) and QP_S_1_n (2009) in order to transmit and receive data in the control memory area 2002.
  • the node 1 includes DCI_1 (2004) for error notification transmission and DCT_1 (2005) for error notification reception.
  • FIG. 20 shows the connection relationship between node 1 and node i and between node 1 and node n among the interconnections of n storage nodes. The same applies to connection relationships between other nodes not shown.
  • Node i (2010) includes n QPs including QP_U_i_1 (2016) in order to transmit and receive data in the user data area 2011. Further, the node i (2010) includes n QPs including QP_S_i_1 (2017) in order to transmit and receive data in the control memory area 2012. Further, the node i includes DCI_i (2014) for error notification transmission and DCT_i (2015) for error notification reception.
  • Node n (2020) includes n QPs including QP_U_n_1 (2026) in order to transmit and receive data in the user data area 2021.
  • the node n (2020) includes n QPs including QP_S_n_1 (2027) in order to transmit and receive data in the control memory area 2022.
  • the node n includes DCI_n (2024) for error notification transmission and DCT_n (2025) for error notification reception.
  • QP_U_1_i (2006) of node 1 (2000) and QP_U_i_1 (2016) of node i (2010) transmit and receive user data via the virtual lane 2030.
  • QP_S_1_i (2007) of the node 1 (2000) and QP_S_i_1 (2017) of the node i (2010) transmit and receive control data via the virtual lane 2031.
  • QP_U_1_n (2008) of node 1 (2000) and QP_U_n_1 (2026) of node n (2020) transmit and receive user data via the virtual lane 2033.
  • the node 1 (2000) QP_S_1_n (2009) and the node n (2020) QP_S_n_1 (2027) transmit and receive control data via the virtual lane 2034.
  • the DCI_1 (2004) of the node 1 (2000) notifies the DCT_i (2015) of the node i (2010) via the virtual lane 2032 and the DCT_n (2025) of the node n (2020) via the virtual lane 2035. Can be sent.
  • the DCT_1 (2005) of the node 1 (2000) receives an error from the DCI_i (2014) of the node i (2010) via the virtual lane 2032 and from the DCI_n (2024) of the node n (2020) via the virtual lane 2035. Notifications can be received.
  • FIG. 21 is a diagram for explaining a QP error detection method according to the fourth embodiment.
  • 21A shows a case where data is transferred from the node 1 (2000) to the node i (2010)
  • FIG. 21B shows a case where data is transferred from the node i (2010) to the node 1 (2000).
  • the node 1 (2000) includes a user data transfer QP_U_1_i (2006), a control data transfer QP_S_1_i (2007), an error notification transmission DCI_1 (2005), and an error. It has a notification receiving DCT_1 (2004).
  • the node i (2010) includes user data transfer QP_U_i_1 (2016), control data transfer QP_S_i_1 (2017), error notification transmission DCI_i (2015), and error notification reception DCT_i (2014).
  • Node 1 (2000) and node i (2010) are connected by an IB link 2101 having three virtual lanes 2030, 2031 and 2032.
  • QP_U_1_i (2006), QP_S_1_i (2007) and DCI_1 (2005) are requesters, and QP_U_i_1 (2016), QP_S_i_1 (2017) and DCT_i (2014) are responders.
  • the data transfer control program 2102 operating on the node 1 (2000) transfers user data from QP_U_1_i (2006) set to service level 0 to QP_U_i_1 (2016) of the node i (2010).
  • Control data is transferred from QP_S_1_i (2007) set to service level 1 to QP_S_i_1 (2017) of node i (2010).
  • the fault monitoring program 2103 operating on the node 1 (2000) checks the states of QP_U_1_i (2006) and QP_S_1_i (2007).
  • the failure monitoring program 2103 transmits a request set to service level 2 from DCI_1 (2005) to DCT_i (2014) of node i (2010). And send an error notification.
  • the data transfer control program 2105 obtains the error notification from the completion queue connected to DCT_i (2014).
  • QP_U_i_1 (2016), QP_S_i_1 (2017) and DCI_i (2015) are requesters, and QP_U_1_i (2006), QP_S_1_i (2007) and DCT_1 (2004) are responders.
  • the data transfer control program 2105 operating at the node i (2010) transfers the user data from QP_U_i_1 (2016) set to service level 0 to QP_U_1_i (2006) of the node 1 (2000).
  • the control data is transferred from QP_S_i_1 (2017) set to service level 1 to QP_S_1_i (2007) of node 1 (2000).
  • the fault monitoring program 2104 operating on the node i (2010) checks the states of QP_U_i_1 (2016) and QP_S_i_1 (2017). When an error of QP_U_i_1 (2016) or QP_S_i_1 (2017) is detected, the failure monitoring program 2104 transmits a request set to service level 2 from DCI_i (2015) to DCT_1 (2004) of node 1 (2000). And send an error notification. The data transfer control program 2102 obtains the error notification from the completion queue connected to DCT_1 (2004).
  • the processing executed by the failure monitoring program and the data transfer control program is the same as that described in the first to third embodiments. That is, the processing described with reference to FIGS. 11 and 12 or the processing described with reference to FIGS. 15 and 16 is performed.
  • the storage apparatus according to the fifth embodiment also uses DC-compatible QP for data transfer.
  • the number of nodes is n
  • the memory resources necessary for QP can be reduced to 2 / n, compared to the case where normal QP is used.
  • the storage apparatus uses the error notification QP to notify an error to the node to which all DC targets to which the DC initiator communicated belong.
  • One DC target can receive requests from multiple DC initiators. If an error is included in a request received from a DC initiator, the DC target transitions to an error state. When another DC initiator sends a request to a DC target that has transitioned to the error state, the QP error occurs without permission from the communication partner, as in the case of FIG. 6. ACK Timeout occurs. Therefore, when the DC target transitions to the error state, the storage apparatus according to the fifth embodiment uses the error notification QP to notify the node to which all DC initiators communicating with the DC target in error belong. .
  • FIG. 22 is a diagram for explaining a QP error detection method according to the fifth embodiment.
  • the node 1 (2000) includes user data transmission DCI_U_1 (2201), control data transmission DCI_S_1 (2202), error notification reception DCT_1 (2005), user data reception DCT_U_1 (2203), and control data reception DCT_S_1 (2204). ), And DCI_1 (2004) for error notification transmission.
  • the node i (2010) includes user data reception DCT_U_i (2211), control data reception DCT_S_i (2212), error notification transmission DCI_i (2014), user data transmission DCI_U_i (2213), and control data transmission.
  • DCI_S_i (2214) and error notification receiving DCT_i (2015).
  • DCI_U_1 (2201), DCI_S_1 (2202), DCI_1 (2004), DCI_i (2014), DCI_U_i (2213), and DCI_S_i (2214) are DC initiators.
  • DCT_1 (2005), DCT_U_1 (2203), DCT_S_1 (2204), DCT_U_i (2211), DCT_S_i (2212), and DCT_i (2015) are DC targets.
  • Node 1 (2000) and node i (2010) are connected by an IB link 2101 having three virtual lanes 2030, 2031 and 2032.
  • the data transfer control program 2102 operating on the node 1 (2000) transfers the user data by transmitting the request set to the service level 0 from the DCI_U_1 (2201) to the DCT_U_i (2211) of the node i (2010). Further, the data transfer control program 2102 transfers the control data by transmitting the request set to the service level 1 from the DCI_S_1 (2202) to the DCT_S_i (2212) of the node i (2010).
  • the fault monitoring program 2103 operating on the node i (2010) checks the states of DCT_U_i (2211), DCT_S_i (2212), DCI_U_i (2213), and DCI_S_i (2214).
  • the fault monitoring program 2103 sends a request set to service level 2 from DCI_i (2014) to node 1 (2000). ) To DCT_1 (2005) to transmit an error notification.
  • the data transfer control program 2102 obtains the error notification from the completion queue connected to DCT_1 (2005).
  • the data transfer control program 2105 operating on the node i (2010) transfers the user data by transmitting the request set to the service level 0 from the DCI_U_i (2213) to the DCT_U_1 (2203) of the node 1 (2000). Further, the data transfer control program 2105 transfers the control data by transmitting the request set to the service level 1 from the DCI_S_i (2214) to the DCT_S_1 (2204) of the node 1 (2000).
  • the fault monitoring program 2104 operating on the node 1 (2000) checks the states of DCI_U_1 (2201), DCI_S_1 (2202), DCT_U_1 (2203), and DCT_S_1 (2204).
  • the fault monitoring program 2104 sends a request set to service level 2 from DCI_1 (2004) to node i (2010). ) To DCT_i (2015) to transmit an error notification.
  • the data transfer control program 2105 obtains the error notification from the completion queue connected to DCT_i (2015).
  • the processing related to the failure QP and the continuous QP is the same as that in the first to third embodiments. However, when an error of the DC initiator or DC target of the node 1 (2000) is detected, the failure monitoring program 2104 transmits an error notification to nodes other than the node i (2010) (nodes 2 to n).
  • FIG. 23 a storage apparatus according to Embodiment 6 of the present invention will be described.
  • the storage apparatus according to the sixth embodiment is configured to use the DC-compatible QP for both control data transfer and error notification.
  • DC-compatible QP may be used for both user data transfer and error notification.
  • FIG. 23 shows a configuration in which DC-compatible QP is used for both control data transfer and error notification.
  • DC compatible QP for both control data transfer (or user data transfer) and error notification
  • the memory resources required for error notification QP can be reduced. Since DC-compatible QP is limited to request transmission from the DC initiator to the DC target, even if both the error notification and control data transmission DC initiator are combined, the error detection of the DC target that is also used for control data transfer and error notification Notification is possible.
  • the data transfer control program 2102 operating on the node 1 (2000) transfers the user data by transmitting the request set to the service level 0 from the DCI_U_1 (2201) to the DCT_U_i (2211) of the node i (2010). Further, the data transfer control program 2102 transfers the control data by transmitting the request set to the service level 1 from the DCI_S_1 (2202) to the DCT_S_i (2212) of the node i (2010).
  • the fault monitoring program 2104 operating on the node 1 (2000) checks the states of DCI_U_1 (2201) and DCI_S_1 (2202).
  • the failure monitoring program 2104 sends an error notification set to the service level 2 to the request from the DCI_S_1 (2202) (or DCI_U_1 (2201)) to the node i (2010).
  • DCT_S_i (2212) (or DCT_U_i (2211)).
  • the data transfer control program 2105 operating on the node i (2010) acquires the error notification from the completion queue connected to the DCT_S_i (2212) (or DCT_U_i (2211)).
  • the data transfer control program 2105 operating on the node i (2010) transfers the user data by transmitting the request set to the service level 0 from the DCI_U_i (2213) to the DCT_U_1 (2203) of the node 1 (2000). Further, the data transfer control program 2105 transfers the control data by transmitting the request set to the service level 1 from the DCI_S_i (2214) to the DCT_S_1 (2204) of the node 1 (2000).
  • the fault monitoring program 2103 operating on the node i (2010) checks the states of DCI_U_i (2213) and DCI_S_i (2214).
  • the failure monitoring program 2103 sends an error notification set to service level 2 to the request from DCI_S_i (2214) (or DCI_U_i (2213)) to node 1 (2000).
  • DCT_S_1 (2204) or DCT_U_1 (2203)
  • the data transfer control program 2102 operating on the node 1 (2000) obtains the error notification from the completion queue connected to the DCT_S_1 (2204) (or DCT_U_1 (2203)).
  • the fault monitoring program 2104 operating on the node 1 (2000) checks the states of DCT_U_1 (2203) and DCT_S_1 (2204). When an error of DCT_U_1 (2203) or DCT_S_1 (2204) is detected, the failure monitoring program 2104 sends an error notification set to service level 2 to the request from DCI_S_1 (2202) to DCT_S_i (2212) of node i (2010). Send.
  • the data transfer control program 2105 operating on the node i (2010) acquires the error notification from the completion queue connected to the DCT_S_i (2212).
  • the fault monitoring program 2103 operating on the node i (2010) checks the states of DCT_U_i (2211) and DCT_S_i (2212). When an error of DCT_U_i (2211) or DCT_S_i (2212) is detected, the failure monitoring program 2103 sends an error notification set to service level 2 to the request from DCI_S_i (2214) to DCT_S_1 (2204) of node 1 (2000). Send.
  • the data transfer control program 2102 operating on the node 1 (2000) obtains an error notification from the completion queue connected to the DCT_S_1 (2204).
  • the processing related to the failure QP and the continuous QP is the same as that in the first to third embodiments.
  • the fault monitoring program or data transfer control program sends the RDMA Write with Immediate request destination. Set the address, data transfer length, and number of Scatter Gatger lists as necessary, and send the necessary information.
  • the failure monitoring program or the data transfer control program that has received the error notification reads information other than that stored in the immediate value from a predetermined address.
  • the failure monitoring program 2104 when an error of the DC initiator or the DC target of the node 1 (2000) is detected, the failure monitoring program 2104 also applies to nodes other than the node i (2010) (nodes 2 to n). Send error notification.
  • the present invention can be widely applied not only to a storage apparatus in which InfiniBand is applied to an internal network but also to various information processing systems such as a server apparatus.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer And Data Communications (AREA)
  • Debugging And Monitoring (AREA)

Abstract

 本発明の一実施形態に係るストレージ装置は、通信リクエストの送受信用キューと識別番号を有する論理ポートを複数有する複数のストレージノードと、複数のストレージノードを相互接続する内部ネットワークを有する。各ストレージノードは前記論理ポートとして、他のストレージノードとのデータ通信に用いられるデータ通信論理ポートと、このデータ通信論理ポートの状態を他のストレージノードに通知するために用いられるエラー通信論理ポートを有する。ストレージノードは、データ通信論理ポートがエラー状態に遷移したことを検知すると、エラー通信論理ポートを用いて、他のストレージノードに対して、データ通信論理ポートの識別番号と状態を通知する。

Description

ストレージ装置
 本発明は、複数の処理ノードをネットワークで相互結合して構成されるストレージ装置に関する。
 複数のストレージノードを集めたクラスタ構成のストレージ装置は、各ストレージノードを並列に稼働させることにより、並列アクセスによる高いデータアクセス性能を実現すると共に、データの冗長化による高可用を実現できる。たとえば特許文献1では、複数のストレージノードをネットワークで相互接続することで大規模なストレージ装置を構成することが開示されている。以下の説明及び図面において、複数のストレージノードを接続したストレージ装置の内部ネットワークを、ストレージ内部ネットワークと呼ぶことにする。また、ストレージノードを単にノードと呼ぶことがある。
 ストレージノードは、一般的に、ストレージコントローラと、ランダムアクセス可能な不揮発性記録媒体とを有する。この記録媒体は、例えば、ハードディスクドライブや不揮発性半導体メモリドライブを多数備えたディスクアレイである。ストレージコントローラは、上位装置(ホストシステム等)を接続するためのフロントエンドインターフェースと、ディスクアレイを接続するためのバックエンドインターフェースと、上位装置がディスクアレイに対して読み書きするユーザデータを一時的に保存するキャッシュメモリを有する。更に、ストレージコントローラは、ストレージコントローラ内で扱う制御データを格納する制御メモリと、ユーザデータ及び制御データのデータ転送を制御するためのプロセッサを有する。複数のストレージノードを接続したストレージ装置においては、複数のストレージノードがストレージ内部ネットワークを介して、ユーザデータや制御データをノード間で送受信する。
 また、ストレージノードをはじめとする、計算機ノード間の接続に好適なネットワークの標準規格としては、非特許文献1の「InfiniBand」が知られている。また、特許文献2のInfiniBandに関する改良技術が知られている。
国際公開第2014/162586号 特表2013-511884号公報
「InfiniBand Arhitecture Specification Volume 1 Release 1.2.1」、2007年発行、著者InfiniBand Trade Association、第465頁~466頁及び第685頁
 InfiniBand(以下IBと略す)では、論理的なポートをQueue Pair(以下QPと略す)と呼ぶ。IBを適用したストレージ内部ネットワークでは、複数のストレージノードに備えられたQP間でユーザデータ及び制御データを送受信する。QPには、Reset、Init、RTR (Ready To Receive)、RTS (Ready To Send)、Error等のステートが存在する。データ転送制御プログラムのソフトウェアバグ等により、QP間で送受信するリクエストの内容に誤りが生ずると、QPがエラーステートに遷移する場合がある。受信側のQPがリクエストの誤りを検出した場合は、受信側QPが送信側QPにNAK (Negative Acknowledge)を返送し、送受両側のQPがエラーステートに遷移する。ところが、データ転送制御プログラムが送信側QPへポストするリクエストの内容に誤りがある場合は、受信側QPへの通知無しに、送信側QPのみがエラーステートに遷移する場合がある。IB規格では、エラーステートに遷移したQPは、ACK/NAK等の応答を含めて送受信を一切行わなくなる。その結果、片方のQPのみがエラーステートに遷移した場合は、正常状態のQPがタイムアウト(Local ACK Timeout)で通信相手のQPエラーを検出することになる。
 高信頼性が求められるストレージ内部ネットワークでは、障害が発生した場合でも速やかに代替経路を用いてデータ転送を継続することにより、ホストタイムアウトが起こらないようにすることが要件となる。例えば、100ミリ秒以内に障害を検出することが求められる。しかし、現在入手可能なIBのHost Channel Adapter (以下HCAと略す)では、設定可能なタイムアウト値が約0.14~0.5秒であるので、タイムアウト検出に短くても約0.14~0.5秒かかってしまい、ストレージ内部ネットワークの要件を満たせない、という課題が生じる。
 本発明は以上のような問題に鑑みてなされたものであり、その主な目的は、ストレージ内部ネットワークにIBを適用したストレージ装置において、通信相手QPのエラーを、HCAに設定可能なタイムアウト値に因らずに検出する方法を提供することである。
 本発明の一実施形態に係るストレージ装置は、通信リクエストの送受信用キューと識別番号を有する論理ポートを複数有する複数のストレージノードと、複数のストレージノードを相互接続する内部ネットワークを有する。各ストレージノードは前記論理ポートとして、他のストレージノードとのデータ通信に用いられるデータ通信論理ポートと、このデータ通信論理ポートの状態を他のストレージノードに通知するために用いられるエラー通信論理ポートを有する。ストレージノードは、データ通信論理ポートがエラー状態に遷移したことを検知すると、エラー通信論理ポートを用いて、他のストレージノードに対して、データ通信論理ポートの識別番号と状態を通知する。
 本発明の一実施形態に係るストレージ装置によれば、HCAで検出可能なタイムアウト時間よりも短時間で、通信相手の論理ポートのエラーを検出することができる。
図1は、実施例1のストレージ装置を説明する図である。 図2は、ストレージノードを説明する図である。 図3は、ストレージノード間の論理的な接続を説明する図である。 図4は、ストレージ装置のRead動作を説明する図である。 図5は、ストレージ装置のWrite動作を説明する図である。 図6は、Local ACK Timeoutの発生例を説明する図である。 図7は、実施例1におけるQPエラー検出方法を説明する図である。 図8は、実施例1におけるSLとVLの対応を説明する図である。 図9は、QP情報に関する管理テーブルを説明する図である。 図10は、エラー通知用QPが送受信するデータを説明する図である。 図11は、実施例1における障害QPに関する処理を説明する図である。 図12は、実施例1における連累QPに関する処理を説明する図である。 図13は、実施例1におけるエラー通知用QP間の通信を説明する図である。 図14は、ストレージ内部ネットワークの障害の種類と、それに対する検出と通知方法を説明する図である。 図15は、実施例2における障害QPに対する処理を説明する図である。 図16は、実施例2における連累QPに対する処理を説明する図である。 図17は、実施例2におけるエラー通知用QP間の通信を説明する図である。 図18は、実施例3におけるエラー通知用QP間の通信を説明する図である。 図19は、実施例3におけるエラー通知用QP間の通信を説明する図である。 図20は、実施例4におけるストレージノード間の論理的な接続を説明する図である。 図21は、実施例4におけるQPエラー検出方法を説明する図である。 図22は、実施例5におけるQPエラー検出方法を説明する図である。 図23は、実施例6におけるQPエラー検出方法を説明する図である。
 以下、図面を参照しながら、本発明の幾つかの実施例を説明する。なお、全ての実施例を通して、同一符号が付されている構成要素は、実質的に同じものであるとする。また、「プログラム」を主語として処理を説明する場合がある。そのプログラムは、プロセッサ、例えば、CPU (Central Processing Unit)によって実行されるもので、定められた処理をするものである。なお、プロセッサが実行する処理は、適宜に記憶資源(例えばメモリ)及び通信インターフェース装置(例えば、通信ポート)を用いながら行うため、処理の主語がプロセッサとされてもよい。プロセッサは、CPUの他に専用ハードウェアを有していても良い。
 図1から図14を参照して、実施例1に係るストレージ装置の説明を行う。先ず、実施例1の概要を説明する。ストレージ装置が有する各ストレージノードは、ストレージノード間でのデータ送受信のために、論理的な通信ポート(論理ポート)であるQPを用いる。ストレージノードは、ユーザデータまたは制御データを転送するデータ転送用QPとは別にエラー通知専用のQPを備える。データ転送用QPがエラーステートに遷移すると、障害監視プログラムがエラー通知用QPを介して、データ転送用QPの通信相手であるストレージノードへ、QPエラー発生を通知する。QPエラーを通知されたストレージノードは、エラー通知内容に対応するQPを破壊した後、QPを再作成する。
 図1は、実施例1におけるストレージ装置のハードウェア構成を説明する図である。
 実施例1のストレージ装置100は、内部ネットワークにより相互接続された複数のストレージノード101(図中では“Storage Node”と表記)を有する。この内部ネットワークを、本明細書ではストレージ内部ネットワークと呼ぶ。実施例1に係るストレージ装置100では、ストレージ内部ネットワークに、たとえばInfiniBand規格のスイッチやリンクで構築されたネットワークが用いられる。各ストレージノード101は、InfiniBand Switch(IBスイッチ)110、111を介して相互接続される。
 ストレージノード101とIBスイッチ110、111間は、それぞれIBリンク120、121で接続されている。また、ストレージノード101と、IBスイッチ110、111は、管理ネットワーク130、131を介して管理端末102に接続されている。ストレージ装置100の管理者は、管理端末102を介して、ストレージ装置100の設定、障害監視、保守作業を行うことができる。また、ストレージノード101は、IBネットワーク上でデータ転送を開始するために必要な情報を、管理ネットワーク130、131を介して相互に交換することもできる。ここで交換される情報は、例えばIBポートのLID (Local Identifier)やQP番号等である。
 図2は、実施例1におけるストレージノードのハードウェア構成を説明する図である。
 ストレージノード101は、ストレージコントローラ240と、複数のハードディスクドライブ(HDD)または複数のソリッドステートドライブ(SSD)を有するディスクアレイ230からなる。
 ストレージコントローラ240は、プロセッサ(MP)200、210と、メモリ202、212と、フロントエンドインターフェース(FE)204、214と、バックエンドインターフェース(BE)205、215と、管理ネットワークインターフェース(LANC)208、218を有する。プロセッサ200、210は、それぞれ複数のプロセッサコア201、211を有する。
 ストレージ装置100にアクセスするホストシステム(非図示)は、フロントエンドインターフェース204、214を介して、ストレージ装置100に接続される。ホストシステムとフロントエンドインターフェース204、214の間は、ファイバチャネルケーブル等の伝送線で接続される。あるいはホストシステムとフロントエンドインターフェース204、214が、複数の伝送線と複数のスイッチで構成されたストレージエリアネットワークを介して接続される構成でも良い。フロントエンドインターフェース204、214は、ホストシステムとストレージノード101間のデータ転送プロトコルと、ストレージコントローラ240内のデータ転送プロトコルを変換する。
 ディスクアレイ230は、バックエンドインターフェース205、215を介して、ストレージコントローラ240に接続される。バックエンドインターフェース205、215は、ストレージコントローラ240内のデータ転送プロトコルと、ストレージコントローラ240とディスクアレイ230間のデータ転送プロトコルを変換する。
 管理ネットワークインターフェース208、218は、管理ネットワーク130、131を介してストレージノード101を管理端末102に接続する。プロセッサ200、210は、フロントエンドインターフェース204、214を介して接続したホストシステムと、バックエンドインターフェース205、215を介して接続したディスクアレイ230との間と、ストレージノード間のデータ転送を制御する。メモリ202、212は、それぞれ、プロセッサ200、210の主記憶であり、プロセッサ200、210が実行するプログラム(ストレージ制御プログラム等)や、プロセッサ200、210が参照する管理テーブル等が格納される。また、メモリ202、212は、ストレージノード101のキャッシュメモリとしても使用される。
 さらに、ストレージコントローラ240は、PCIeスイッチ(PCIe SW)203、213と、HCA206、216を有する。PCIeスイッチ203とPCIeスイッチ213はNon-Transparentリンク220で接続されている。プロセッサ200と210は、Non-Transparentリンク220を介して通信可能である。
 HCA206、216はそれぞれ、IBリンクを接続するための物理ポートを1以上有する。この物理ポートのことをIBポートと呼ぶ。本実施例に係るストレージ装置100では、HCA206は少なくともIBポート207を有し、HCA216は少なくともIBポート217を有する。HCA206、216は、それぞれPCIeスイッチ203、213を介してプロセッサ200、210に接続されている。プロセッサ200、210は、それぞれIBポート207、217とIBリンク120、121を介して、IBスイッチ110、111に接続している。その結果、各ストレージノード101は相互に通信可能になっている。
 図3は、実施例1におけるストレージノード間のIBネットワークによる論理的な接続を説明する図である。
 各ストレージノード内のメモリ(メモリ202及びメモリ212)は、ホストシステムから受信したユーザデータを格納するユーザデータメモリ領域と、ストレージ装置内の制御データを格納する制御メモリ領域を有する。ユーザデータメモリ領域には、ストレージノードのキャッシュメモリや、フロントエンドインターフェースまたはバックエンドインターフェースが使用するバッファ領域が割り当てられる。ストレージノード1(101)は、ユーザデータメモリ領域301と制御メモリ領域302を有する。同様に、ストレージノード2(320)はユーザデータメモリ領域321と制御メモリ領域322を、ストレージノードn(330)はユーザデータメモリ領域331と制御メモリ領域332を有する。
 IBでは、各ノードのプロセスが通信を行う際、論理的な通信ポート(論理ポート)であるQueue Pair(QP)を用いる。IB規格の詳細は、例えば非特許文献1に記載されているので、ここでは本実施例の説明上必要な事項のみ説明する。
 各QPは少なくとも、送信リクエストを格納する送信キュー(Send Queue。SQと表記されることもある)、他のノードから受信したリクエストを格納する受信キュー(Receive Queue。RQと表記されることもある)を有する。SQとRQは、処理の完了したリクエストを格納するためのコンプリーションキュー(Completion Queue。CQと表記されることもある)に関連付けがされている。SQやRQに格納されたリクエストが処理されると、処理完了(Completion Queue Entry。CQEと表記される)がSQまたはRQに関連付けられたCQに格納される。また各QPはユニークな識別番号であるQP番号を有する。QP番号はQPが作成される時にHCAによって自動的に割り当てられる値である。
 QPは論理的な通信ポートであるので、ノードのプロセッサ(MP200,210)でプログラムを実行することで、QPの作成または破棄を自由に行うことができる。QPは、ストレージノードがIB Verbs APIのibv_create_qp()を実行することで作成され、またibv_destroy_qp()を実行することでQPを破棄(破壊)することができる。ただしQPの作成にあたっては、QPが有するSQやRQ等のためにメモリ資源を消費するため、無制限にQPを作成することはできない。
 各QPは、Reset、Init(Initialized)、RTR (Ready To Receive)、RTS (Ready To Send)、Error等のステート(状態)を有する。QPが作成された直後は、そのQPの状態は、Resetステートである。ストレージノードは、IB Verbs APIのibv_modify_qp()を実行することで、QPのステートをResetからInitに変更できる(遷移させることができる)。
 QPのステートがInitの場合、このQPを用いたリクエスト送受信はできない。リクエスト送受信可能にするためには、QPのステートをRTSに遷移させる必要がある。ただしInitステートのQPをRTSステートに遷移させるためには、一旦RTRステートへ遷移させる必要がある。InitステートのQPに対してibv_modify_qp()を実行することで、QPのステートをRTRに変更できる。RTRステートのQPは、リクエストの受信は可能だが、リクエストの送信はできない状態にある。QPのステートをRTRからRTSに変更することで、QPはリクエストの送受信が可能な状態になる。
 また、QPのステートをRTRステートに遷移させる時、QPの通信相手(通信先)となるQPのQP番号を指定する必要がある。つまり、QPをリクエスト送受信が可能な状態にする(RTSステートにする)には、QPのステートをRTRに遷移させる必要があり、かつQPのステートをRTRステートに遷移させるには、通信相手となるQPのQP番号が必要なので、ノードで新規作成されたQP(Resetステート)やInitステートのQPをリクエスト送受信可能な状態にするためには、通信相手先のQPのQP番号を取得する必要がある。
 また、リクエストの処理過程でエラーが発生すると、QPのステートがErrorに遷移することがある。QPのステートがErrorの場合、そのQPにおけるデータ通信ができなくなる。ErrorステートのQPを再び使用可能な状態にするためには、QPを一旦Resetステートに遷移させ、そこからInit、RTR、RTSステートへと遷移させる必要がある。
 IBのRC (Reliable Connection)サービスでは、通信相手となるノード毎と、QPを操作するプロセス毎にQPが必要となる。さらに、ユーザデータと制御データを異なるサービスレベル(データ転送の優先度)で転送するため、データ転送メモリ領域毎にQPが必要となる。従って、各ストレージノードは、少なくともメモリ領域毎と接続するストレージノード毎に、個別のQPを備える。例えば、ストレージノード1(101)は、ユーザデータメモリ領域301のデータをストレージノート2(320)のユーザデータメモリ領域321へ転送するためのQP303を有する。また、ストレージノード1(101)は、ユーザデータメモリ領域301のデータをストレージノートn(330)のユーザデータメモリ領域331へ転送するためのQP304を有する。さらに、ストレージノード1(101)は、制御メモリ領域302のデータをストレージノート2(320)の制御メモリ領域322へ転送するためのQP305を有する。さらにまた、ストレージノード1(101)は、制御メモリ領域302のデータをストレージノートn(330)の制御メモリ領域332へ転送するためのQP306を有する。
 同様に、ストレージノード2(320)は、ユーザデータメモリ領域321のデータをストレージノート1(101)のユーザデータメモリ領域301へ転送するためのQP323を有する。また、ストレージノード2(320)は、ユーザデータメモリ領域321のデータをストレージノートn(330)のユーザデータメモリ領域331へ転送するためのQP324を有する。さらに、ストレージノード2(320)は、制御メモリ領域322のデータをストレージノート1(101)の制御メモリ領域302へ転送するためのQP325を有する。さらにまた、ストレージノード2(320)は、制御メモリ領域322のデータをストレージノートn(330)の制御メモリ領域332へ転送するためのQP326を有する。
 同様に、ストレージノードn(330)は、ユーザデータメモリ領域331のデータをストレージノート1(101)のユーザデータメモリ領域301へ転送するためのQP333を有する。また、ストレージノードn(330)は、ユーザデータメモリ領域331のデータをストレージノート2(320)のユーザデータメモリ領域321へ転送するためのQP334を有する。さらに、ストレージノードn(330)は、制御メモリ領域332のデータをストレージノート1(101)の制御メモリ領域302へ転送するためのQP335を有する。さらにまた、ストレージノードn(330)は、制御メモリ領域332のデータをストレージノート2(320)の制御メモリ領域322へ転送するためのQP336を有する。
 つまり、各ストレージノードは、QPでデータ転送を行うノードのメモリ領域の種類の数と、接続ノード数nと、各ノードにおけるQPを操作するプロセス数、の積に応じたQPを備える。なお、原則として、2個のQP間で双方向通信が可能である。
 さらに、各ストレージノードは、QPに障害が発生し(QPがErrorステートに遷移し)、通信ができなくなった場合に備えて、代替QPを設けておくとよい。
 図4は、実施例1のストレージ装置100における、ホストシステムからRead要求を受信した場合の動作を説明する図である。図4では、プロセッサ(200、422)とHCA(206,423)を接続するPCIeスイッチは省略している。
 ホストシステム400は、ストレージノード1(101)のフロントエンドインターフェース204に接続している。フロントエンドインターフェース204がホストシステム400からのRead要求を受信したとする。そして、ホストシステム400に要求されたデータは、ストレージノード2(320)のキャッシュメモリ421に格納されているとする。
 ストレージノード1(101)のプロセッサ200は、HCA206からHCA423に対して、キャッシュメモリ421内のデータ読み出し要求を送信する。具体的には、データ転送制御プログラムがプロセッサ200で実行されることにより、プロセッサ200はストレージノード1(101)内に用意されている複数のQPのうち、ストレージノード2(320)との通信用のQPに対してデータ読み出し用のリクエスト(たとえばRDMA Readリクエスト)をポストする。ポストとは、QPの送信キューにリクエストを格納する動作を意味する。これによりリクエストがHCA423に送信される。
 このリクエストを受信したストレージノード2(320)は、キャッシュメモリ421内の読み出しデータを、プロセッサ422、HCA423、IBスイッチ110、HCA206、プロセッサ200を経由する経路402で、メモリ202内のバッファ領域401に転送する。フロントエンドインターフェース204は、バッファ領域401に格納された読み出しデータを、ホストシステム400に転送する(403)。
 あるいは、キャッシュメモリ421内のデータを、ストレージノード2(320)からストレージノード1(101)へRDMA Writeリクエストを使って送信するように制御してもよい。その場合、先ず、プロセッサ200が、ストレージノード2(320)との通信用のQPに対して、読み出しデータ送信をプロセッサ422に依頼するメッセージを転送するリクエスト(例えばRDMA Writeリクエスト)をポストする。メッセージを受信したプロセッサ422は、ストレージノード1(101)との通信用のQPに対して、読み出しデータを転送するRDMA Writeリクエストをポストする。
 図5は、実施例1のストレージ装置100における、ホストシステムからのWrite要求を受信した場合の動作を説明する図である。プロセッサ(200、422、532)とHCA(206,423、533)を接続するPCIeスイッチは省略している。
 ホストシステム400から受信した書き込みデータは、メモリ202内のバッファ領域401に格納される(501)。ホストシステム400から受信した書き込みデータの書き込み先として、ストレージノード2(320)の記憶領域が、ストレージ制御プログラムにより指示されたとする。
 プロセッサ200は、バッファ401内の書き込みデータを、HCA206、IBスイッチ110、HCA423、プロセッサ422を介して、ストレージノード2(320)のキャッシュメモリ421へ転送する(502)。さらに書き込みデータを冗長化するため、プロセッサ200は、書き込みデータを、HCA206、IBスイッチ110、HCA533、プロセッサ532を介して、ストレージノード3(530)のキャッシュメモリ531へ転送する(503)。2個のストレージノード内キャッシュメモリへの書き込みが完了した後、フロントエンドインターフェース204は、ホストシステム400に対して、書き込みが完了を通知する。この場合も、Read要求を受信した場合の処理と同様、プロセッサ200は、ストレージノード1(101)内に用意されている複数のQPのうち、ストレージノード2(320)との通信用のQPに対してデータ書き込み用のリクエスト(たとえばRDMA Writeリクエスト)をポストすることで、データ転送を行う。またプロセッサ200は、ストレージノード3(530)との通信用のQPに対しても、データ書き込み用のリクエストをポストすることで、データ転送を行う。
 図6は、標準的なIBネットワークにおいて、Local ACK Timeoutが発生する例を説明する図である。例として、QP0(600)とQP3(601)は、双方向にデータ転送を行っている場合を仮定する。
 先ず、QP0(600)とQP3(601)が共に正常な場合の動作を説明する。ノード1で動作するデータ転送制御プログラムは、リクエストをQP0(600)にポストする(602)。例えばリクエストの内容がRDMA Writeオペレーションであった場合、QP0(600)はQP3(601)へRDMA Writeリクエストパケットを送信する(603)。RDMA Writeを受信したQP3(601)は、リクエスト内容に従いノード2のメモリに書き込みを行った後、ACKをQP0(600)に返信する(604)。ノード1で動作するデータ転送制御プログラムは、QP0(600)に接続されたコンプリーションキューから、コンプリーションを取得し、リクエストが正常に完了したことを確認する(605)。
 次ぎに、QP3(601)がエラーステートに遷移する場合の動作を説明する。前述とは逆に、QP3(601)からQP0(600)へデータ転送するために、ノード2で動作するデータ転送制御プログラムが、リクエストをQP3(601)にポストする。この時、データ転送制御プログラムのバグ等により、そのリクエストの内容にパラメータ誤りが含まれていたとする(606)。するとQP3(601)は、通信相手であるQP0(600)に対してエラー通知をすること無しに(607)、QP3(601)に接続されたコンプリーションキューに、QP3(601)におけるエラー発生を示すコンプリーションを出力する(608)。そして、QP3(601)はエラーステートに遷移する。IB規格によると、エラーステートに遷移したQPは、送受信を一切行わなくなる。
 また、このように通信相手に無断でQPがエラーステートに遷移する他の例としては、QPの送信キュー、受信キューやコンプリーションキューにオーバーフロー等のエラーを生じた場合がある。
 その後、ノード1で動作するデータ転送制御プログラムが、RDMA WriteリクエストをQP0(600)にポストしたとする(610)。QP0(600)はQP3(601)へRDMA Writeリクエストパケットを送信する(611)。しかし、QP3(601)はエラーステートに遷移しているので、ACK/NAKを返送しない(612)。QP0(600)は、所定のタイムアウト時間が経過する待って、コンプリーションキューにLocal ACK Timeoutエラーを出力する(613)。このタイムアウト値は、現在入手可能なHCAにおいて、約0.14~0.5秒程度である。従って、ノード1で動作するデータ転送制御プログラムが通信相手のQPエラーを検出するのに、短くても約0.14~0.5秒程度かかることになる。このような長い時間のタイムアウトが図4または図5の動作で起こると、ホストシステム400がストレージ装置100に障害が発生したと判断してしまう可能性がある。
 図7は、実施例1におけるQPエラー検出方法を説明する図である。図7(a)は、ノード1からノード2へデータを転送する場合、図7(b)は、ノード2からノード1へデータ転送する場合を示す。図7では説明を容易にするため、ストレージノード1(700)とストレージノード2(701)を接続するIBスイッチを省略している。図7(a)及び図7(b)において、ノード1は、ユーザデータ転送用QP0(710)、制御データ転送用QP1(711)と、エラー通知用QP2(712)を有する。同様に、ノード2は、ユーザデータ転送用QP3(713)、制御データ転送用QP4(714)と、エラー通知用QP5(715)を有する。ノード1とノード2は、3本の仮想レーン720、721、722を有するIBリンク730で接続している。なお、ユーザデータ転送用QPと制御データ転送用QPのことを総称して、「データ転送用QP」と呼ぶ。
 ここで、実施例1におけるサービスレベルと仮想レーンの対応について説明した後、再び図7の説明に戻る。
 図8は、実施例1におけるサービスレベルと仮想レーンとの対応を説明する図であり、データ転送の用途801と、使用するサービスレベル(SL)802と、そのサービスレベルに対応付けされた仮想レーン(VL)803との対応を示す。実施例1のストレージ装置100は、ユーザデータ転送を行うためのQP(たとえば図7における、ユーザデータ転送用QP0(710))にサービスレベル0を設定し、仮想レーン0を割り当てる。また、ストレージ装置100は、制御データ転送を行うためのQP(たとえば図7における、制御データ転送用QP1(711))にサービスレベル1を設定し、仮想レーン1を割り当てる。さらに、ストレージ装置100は、エラー通知を行うためにのQP(たとえば図7における、エラー通知用QP2(712))にサービスレベル2を設定し、仮想レーン2を割り当てる。
 サービスレベルが高いほどデータ転送の優先度が高くなる。また、データ転送の用途別に独立した仮想レーンを割り当てているので、たとえIBリンク上でユーザデータ転送による混雑が生じていても、エラー通知のためのデータは優先して転送されることになる。もし、IBリンクに割当可能な仮想レーン数が少ない場合は、制御データとエラー通知に同じ仮想レーンを共有させて、少なくともユーザデータ転送に対してエラー通知のサービスレベルを高く設定する。また、少なくともユーザデータ転送とエラー通知には、別々の仮想レーンを割り当てることにする。
 図7の説明に戻る。図7(a)では、QP0(710)、QP1(711)とQP2(712)がリクエスタであり、QP3(713)、QP4(714)とQP5(715)がレスポンダとして動作している場合の例を表している。図7(a)において、ノード1で動作するデータ転送制御プログラム702は、ユーザデータをサービスレベル0に設定したQP0(710)からノード2のQP3(713)へ転送し、制御データをサービスレベル1に設定したQP1(711)からノード2のQP4(714)へ転送する。
 ノード1で動作する障害監視プログラム703は、QP0(710)とQP1(711)のステートをチェックする。QP0(710)またはQP1(711)のエラーを検出した場合、障害監視プログラム703は、エラー通知をサービスレベル2に設定したQP2(712)からノード2のQP5(715)へ送信する。ノード2で動作するデータ転送制御プログラム705は、エラー通知をQP5(715)に接続されたコンプリーションキューから取得する。
 図7(b)では、リクエスタとレスポンダの役割が図7(a)とは逆の例が示されている。図7(b)において、ノード2で動作するデータ転送制御プログラム704は、ユーザデータをサービスレベル0に設定したQP3(713)からノード1のQP0(710)へ転送し、制御データをサービスレベル1に設定したQP4(714)からノード1のQP1(711)へ転送する。
 ノード2で動作する障害監視プログラム705は、QP3(713)とQP4(714)のステートをチェックする。QP3(713)またはQP4(714)のエラーを検出した場合、障害監視プログラム704は、エラー通知をサービスレベル2に設定したQP5(715)からノード1のQP2(712)へ送信する。データ転送制御プログラム702は、エラー通知をQP2(712)に接続されたコンプリーションキューから取得する。
 図7では、ユーザデータ転送用QP1個と、制御データ転送用QP1個に対して、エラー通知用QP1個を割り当てているが、複数のユーザデータ転送用QPまたは複数の制御データ転送用QPに対して、1個のエラー通知用QPを割り当ててもよい。また、IB規格の制限により、異なるプロセスは同じQPを操作できない。従って、データ転送制御プログラム702と障害監視プログラム703は、ノード1(700)上で一つのプロセスとして動作するストレージ制御プログラムの一部として動作することにする。ノード2(701)のデータ転送制御プログラム704と障害監視プログラム705も、ノード2(701)上で一つのプロセスとして動作するストレージ制御プログラムの一部として動作することにする。なお、各ノードにおいて、ストレージ制御プログラムを複数のプロセスとして動作させて、各プロセス毎に異なるQPを操作するようにしてもよい。
 図9は、実施例1におけるQP情報に関する管理テーブルを説明する図である。各ストレージノードがQP情報管理テーブル900を有する。通信相手のノードからエラー通知を受信したデータ転送制御プログラムは、このQP情報管理テーブル900を参照し、障害処理を実行する。
 QP情報管理テーブル900は、エラー通知用QPの識別情報901と、この管理テーブル900が格納されているノード(Localノード)におけるユーザデータ及び制御データ転送用QPの識別情報902を格納する。さらに、QP情報管理テーブル900は、接続先ノード(Remoteノード)のIBポートのLID903とQPの識別情報904と、データ転送に使用するサービスレベル(SL)905を格納する。ここで、QPの識別情報とは、例えばQP番号である。
 エラー通知を受信したデータ転送制御プログラムは、エラー通知に含まれるQP識別情報を、QP情報管理テーブル900内の、接続先ノードのQPの識別情報904と比較することにより、どのノードのどのQPがエラーになったかを調べることができる。また、破壊と再作成、またはリセットすべきLocalノードのQPを、QP情報管理テーブル900の識別情報902から特定することもできる。さらにデータ転送制御プログラムは、再作成またはリセットしたQPに対して、サービスレベル905で指定されたサービスレベルを設定することができる。
 図10は、エラー通知用QP間で送受信するデータを説明する図である。障害監視プログラムがエラー通知用QPを用いて、32bit長のデータ(1001)を、IBのRDMA Write with Immediateオペレーションにおける即値(Immediate Data)に格納したリクエストを作成し、このリクエストをエラー通知用QPにポストすることで、通信相手のノード(のQP)に送信する。リクエストを受信したノードで実行されるプログラム(データ転送制御プログラム)は、エラー通知用QPのRQに関連付けられたコンプリーションキューから即値を取得することができる。
 即値(1001)には、エラーが発生したQPのQP番号(1002)とそのステートを識別する情報(1003)が格納されている。なお、障害監視プログラムが送信するRDMA Write with Immediateオペレーションのリクエストは、即値以外のデータ転送は行わないので、即値以外のデータ転送長を0、Scatter Gatgerリスト数も0として、リクエストのパラメータに設定する。
 また、詳細は後述するが、エラー通知用QPは、エラーが発生した(Errorステートの)QPについての情報を送る時にのみ用いられるわけではなく、その他の状態にあるQPについての情報を送る際にも用いられる。そのため、ステートを識別する情報(1003)には、Errorステート以外の状態(InitやRTSなど)も格納され得る。また障害監視プログラムだけでなく、データ転送制御プログラムもエラー通知用QPを用いて、図10に記載の形式に従ったデータ(1001)を作成し送信する。
 図11と図12で、エラー通知QPを使ったQPエラーの通知と、それに対する障害処理方法を説明する。実施例1では、エラー通知用QPを図11と図12に示すエラー通知に関連する処理のみに限定して使用することで、エラー通知用QPに関してソフトウェアバグによるエラーが発生することを回避する。以下、通信相手に無断でエラーステートに遷移したQPを障害QPと呼ぶ。また、障害QPの通信相手であり、障害QPとともに障害処理を実行しなければならなくなったQPを連累QPと呼ぶことにする。
 図11は、実施例1における障害QPに関する処理を説明する図である。このフローは、障害QPが属するノードで動作する障害監視プログラムが実行する。一方図12は、連累QPが属するノードで動作するデータ転送制御プログラムで行われる処理のフローである。
 障害監視プログラムは、ユーザデータ転送用QPまたは制御データ転送用QPのエラーを検出するまで待機する(1101)。QPエラーは、IBのコンプリーションエラーとして検出される場合と、非同期エラーとして通知される場合がある。
 エラーを検出した障害監視プログラムは、障害QPが担当していたデータ転送を、予め割り当てておいた代替QPによるデータ転送に変更するように、ストレージ制御プログラムに通知する。代替QPは、障害QPが関連付けられているIBポートが属するHCAと同一のHCAが有するIBポートに関連付けられているQPでも、他のHCAが有するIBポートに関連付けられているQPでもよい。ストレージ制御プログラムはこの通知を受けて、代替QPによるデータ転送を行うようになる。
 また、エラーを検出した障害監視プログラムは、障害QPの情報(LIDやQP番号等)を管理端末102に表示し、ストレージ管理者に通知する。
 次ぎに、エラーを検出した障害監視プログラムは、図10に示された形式で障害QPのQP番号とエラー状態を格納した情報を、RDMA Write with Immediateオペレーションにおける即値に設定し、エラー通知用QPから相手ノード(つまり連累QPの属するノード)へ送信する(1102)。
 次ぎに、障害監視プログラムは、障害QPに接続したコンプリーションキューから、障害QPに関連するコンプリーションキューエントリ (CQE)を取り出す(1103)。ただし、エラー原因によっては、コンプリーションキューエントリを取得できない場合がある。その場合、このステップ1103はスキップされる。
 次ぎに、障害監視プログラムは、障害QPを破壊し、新しいQPを作成する(1104)。この時再作成したQPの状態は、Resetステートである。障害監視プログラムは、続けて障害QPをInitステートに遷移させてもよい。
 次ぎに、障害監視プログラムは、再作成したQPのQP番号とステートを識別できる情報をRDMA Write with Immediateオペレーションにおける即値に設定したリクエストを作成し、エラー通知用QPから相手ノードへリクエストを送信する(1105)。
 一方、通信相手のノードでは、障害QPの属するノードの障害監視プログラムがステップ1102で送信した通知を受領したことに応じて、データ転送制御プログラムが連累QPを作り直している。障害監視プログラムは、通信相手のノードのデータ転送制御プログラムが再作成したQPのQP番号が、エラー通知用QPに送られてくるのを待つ(1106)。
 次ぎに、障害監視プログラムは、受信したQP番号を使って、再作成したQPをRTRステートへ遷移させる。InitステートからRTRステートへの遷移には、通信相手のQP番号を指定する必要がある。またこの他に、通信相手のLIDとPSN (Packet Sequence Number)も必要となる。LIDはQPの再作成では変わらないのでそれまでの値を再設定し、PSNは所定の初期値を設定する。続けて、障害監視プログラムは、再作成したQPをRTSステートへ遷移させる(1107)。そして、障害監視プログラムは、再作成したQPのQP番号とステートをRDMA Write with Immediateオペレーションにおける即値に設定したリクエストを作成し、エラー通知用QPから相手ノードへリクエストを送信する(1108)。
 ここまでの処理に平行して、通信相手のノードでは、通信相手のノードのデータ転送制御プログラムが連累QPをRTSステートへ遷移させる処理を行っている。障害監視プログラムは、通信相手のノードのデータ転送制御プログラムがRTSステートへ遷移させたQP(連累QP)のQP番号とステートが、エラー通知用QPに送られてくるのを待つ(1109)。
 障害監視プログラムは、連累QPのQP番号とステートを受領し、連累QPがRTSステートに遷移したことを確認すると、このQPの情報(LIDやQP番号等)を管理端末102に表示し、ストレージ管理者に通知する。また障害監視プログラムは、自ノードのデータ転送制御プログラムに対し、再作成されたQPを用いたデータ転送が可能になったことを通知して、処理を終了する。自ノードのデータ転送制御プログラムはこの通知を受けることで、再作成されたQPを用いたデータ転送が可能になったと判断する。
 図12は、実施例1における連累QPに関する処理を説明する図である。このフローは、連累QPが属するノードで動作するデータ転送制御プログラムが実行する。
 データ転送制御プログラムは、通信相手のノードからエラーが通知されるのを待つ(1201)。
 エラー通知を受信したデータ転送制御プログラムは、即値に含まれるQP情報と、QP情報管理テーブル900を参照し、連累QPを特定する(1202)。先に述べたとおり、即値に含まれるQP情報には、障害QPのQP番号が含まれている。エラー通知を受信したデータ転送制御プログラムは、QP情報管理テーブル900内の各行を参照し、接続先ノードのQPの識別情報904が、障害QPのQP番号と一致する行を特定する。そしてその行の、QPの識別情報902を特定することで、連累QPが特定できる。
 そして、データ転送プログラムは、連累QPが担当していたデータ転送を、予め割り当てておいた代替QPによるデータ転送に変更するように、ストレージ制御プログラムに通知する。代替QPは、連累QPが関連付けられているIBポートが属するHCAと同一のHCAが有するIBポートに関連付けられているQPでも、他のHCAのIBポートに関連づけられているQPでもよい。ストレージ制御プログラムはこの通知を受けて、代替QPを用いたデータ転送を行うようになる。
 次ぎに、データ転送制御プログラムは、連累QPが既にエラーステートか否かをチェックする(1203)。連累QPがエラーステートでない場合、データ転送制御プログラムは、連累QPをエラーステートに遷移させる(1204)。Queue Pairがエラーステートに遷移すると、Queue PairのSend Queue及びReceive Queueに格納していたリクエストがコンプリーションキューに出力される。エラー原因によっては、レスポンダからリクエスタへNAKが返送され、NAKを受信したリクエスタ側QPがエラーステートに遷移する場合がある。その場合、ステップ1204はスキップされる。
 また、データ転送制御プログラムは、エラーステートに遷移した連累QPの情報(LIDやQP番号等)を管理端末102に表示し、ストレージ管理者に通知する。
 次ぎに、データ転送制御プログラムは、連累QPに接続したコンプリーションキューから、連累QPに関連するコンプリーションキューエントリ (CQE)を取り出す(1205)。ただし、エラー原因によっては、コンプリーションキューエントリを取得できない場合がある。その場合、このステップ1205はスキップされる。
 次ぎに、データ転送制御プログラムは、連累QPを破壊し、新しいQPを作成する(1206)。この時再作成したQPの状態は、Resetステートである。データ転送制御プログラムは、続けて連累QPをInitステートに遷移させてもよい。
 次ぎに、データ転送制御プログラムは、再作成したQPのQP番号とステートを識別できる情報をRDMA Write with Immediateオペレーションにおける即値に設定したリクエストを作成し、エラー通知用QPから相手ノードへリクエストを送信する(1207)。
 ここまでの処理に平行して、通信相手のノード(障害QPの属するノード)では、障害監視プログラムが障害QPを作り直している。データ転送制御プログラムは、通信相手のノードの障害監視プログラムが再作成したQPのQP番号が、エラー通知用QPに送られてくるのを待つ(1208)。
 次ぎに、データ転送制御プログラムは、受信したQP番号を使って、再作成したQPをRTRステートへ遷移させる。InitステートからRTRステートへの遷移には、通信相手のQP番号の他に、通信相手のLIDとPSN (Packet Sequence Number)も必要となる。LIDはQPの再作成では変わらないのでそれまでの値を再設定し、PSNは所定の初期値を設定する。続けて、データ転送制御プログラムは、再作成したQPをRTSステートへ遷移させる(1209)。そして、データ転送制御プログラムは、再作成したQPのQP番号とステートをRDMA Write with Immediateオペレーションにおける即値に設定し、エラー通知用QPから相手ノードへリクエストを送信する(1210)。
 ここまでの処理に平行して、通信相手のノードでは、障害監視プログラムが障害QPをRTSステートへ遷移させる処理を行っている。データ転送制御プログラムは、通信相手のノードの障害監視プログラムがRTSステートへ遷移させたQPのQP番号とステートが、エラー通知用QPに送られてくるのを待つ(1211)。
 データ転送制御プログラムは、通信相手のノードが再作成したQPのQP番号とステートを受領し、このQPがRTSステートに遷移したことを確認すると、再作成されたQPを用いたデータ転送が可能と判断する。そしてデータ転送制御プログラムは、RTSステートに遷移してデータ転送可能になったQPの情報(LIDやQP番号等)を管理端末102に表示し、ストレージ管理者に通知し、処理を終了する。図11と図12の処理が完了すると、両端ノードのQPが共にRTSステートとなり、データ転送を再開することができる。
 図13は、実施例1におけるエラー通知用QP間の通信を説明する図である。先ず、ノード2で動作する障害監視プログラムが、ユーザデータ転送用または制御データ転送用のデータ転送用QPのエラーを検出する(1301)。次ぎに、ノード2で動作する障害監視プログラムが、エラー通知用QP5(715)から、エラーが発生したQPのQP番号と、そのステート識別情報を即値に格納したRDMA Write with Immediateリクエストを、ノード1のエラー通知用QP2(712)へ送信する(1302)。これらの処理は、図11のステップ1101、1102に相当する処理である。
 エラー通知を送信したノード2で動作する障害監視プログラムは、エラーが発生したQP、つまり障害QPを破壊し、再作成する(1303)。これらの処理は、図11のステップ1103、1104に相当する処理である。
 エラー通知を受信したノード1で動作するデータ転送制御プログラムは、1302で通知された即値の内容から障害QPに対応するQP、つまり連累QPを特定、破壊し、再作成する(1304)。これらの処理は、図12のステップ1201~1206に相当する処理である。
 そして、ノード2の障害監視プログラムとノード1のデータ転送制御プログラムは、再作成したQPのQP番号とそのステート識別情報を即値に格納したRDMA Write with Immediateリクエストを送受信する(1305、1306)。これらの処理は、図11のステップ1105、図12のステップ1207に相当する処理である。
 次ぎに、ノード2の障害監視プログラムとノード1のデータ転送制御プログラムは、再作成したQPをResetステート、Initステート、RTRステートの順に、RTSステートまで遷移させる(1307、1308)。これらの処理は、図11のステップ1106~1107、図12のステップ1208~1209に相当する処理である。
 最後に、ノード2の障害監視プログラムとノード1のデータ転送制御プログラムは、RTSステートへの状態遷移が完了したQPのQP番号とそのステート識別情報を即値に格納したRDMA Write with Immediateリクエストを送受信する(1309、1310)。これらの処理は、図11のステップ1108~1109、図12のステップ1210~1211に相当する処理である。以上の処理が完了すると、ノード1とノード2の間で、再作成されたQPを用いてデータ転送を再開できる。なお、即座に再作成されたQPを用いたデータ転送を行うようにしてもよいが、代替QPによるデータ転送が行われている場合には、代替QPによるデータ転送を継続実施してもよい(つまり、再作成されたQPを用いたデータ転送をすぐに行う必要はない)。代替QPがエラーステートに遷移した時に、再作成されたQPを用いたデータ転送を行うようにしてもよい。
 図14は、実施例1のストレージ内部ネットワークにおける、障害の種類とそれに対する検出と通知の方法を、標準的なIB規格におけるものと比較した図である。IBを適用したストレージ内部ネットワークにおいて想定される障害の種類は、ポートの物理的なエラーと、インターミッテントエラーと、ソフトウェアバグによるエラーがある(1401)。
 ポートの物理的なエラーとは、例えばIBリンクがダウンして物理ポート間が通信不能に陥る障害である。この障害の場合、IB規格では、Subnet Manager Agentにより障害が検出され、Subnet Managerへ通知されるか、HCAが発生させる非同期イベントで検出されることになっている。本実施例でも、ポート物理エラーに関しては、IB規格に従いSubnet Managerに障害が通知される。そして、Subnet Managerからの障害発生通知を受信したストレージ制御プログラムが、データ転送経路のフェイルオーバー処理を行う。あるいは、HCAが発生させる非同期イベントを検出したストレージ制御プログラムが、データ転送経路のフェイルオーバー処理を行う。
 インターミッテントエラーは、間欠的なパケット損失等の障害である。この障害の場合、IB規格では、受信側QPが、パケット毎に付加したシーケンス番号の不連続を検出し、送信側QPに再送を要求する。本実施例でも、インターミッテントエラーに関しては、IB規格に従った処理を行う。
 ソフトウェアバグ等によりQPが通信相手に無断でエラーステートに遷移した場合、IB規格では、上で図6を用いて説明したように、送信元QPがLocal ACK Timeoutエラーを出力することにより、ノードが送信先QPエラーを検出することになる。Local ACK Timeoutエラーが出力されるまでには、時間がかかるため、この方法では、QPのエラーを検出するまでに、長時間を要する。
 それに対して、実施例1のストレージ装置100では、データ転送用QPにエラーが生じた場合、障害監視プログラムがエラー通知用QPを介して通信相手に通知する。これにより、ストレージ装置100は、Local ACK Timeoutになる前に障害処理を実行することができる。以上説明した通り、本発明によると、ストレージ内部ネットワークで相互接続された複数のストレージノードを有するストレージ装置において、ソフトウェアバグによる通信相手の論理ポートのエラーを、リクエスト送信元論理ポートのタイムアウトに因らずに検出する方法を提供できる。その結果、ソフトウェアバグによる論理ポートのエラーが発生した場合でも、ストレージノードは即座に代替論理ポート(代替QP)を用いたデータ転送を行うように切り替えることができ、ホストシステムにおけるタイムアウト発生を回避できる。
 図15から図17を参照して、実施例2の説明を行う。先ず、実施例2の概要を述べる。実施例2のストレージ装置は、障害QPに関する処理と連累QPに関する処理が、実施例1のストレージ装置とは異なる。ストレージ装置のその他の構成や動作は同じである。実施例2のストレージ装置では、障害QP及び連累QPを破壊せず、リセットして再利用する。
 図15と図16で、実施例2のストレージ装置におけるエラー通知QPを使ったQPエラーの通知と、それに対する障害処理方法を説明する。実施例1と同様に、通信相手に無断でエラーステートに遷移したQPを障害QPと呼ぶ。また、障害QPの通信相手であり、障害QPとともに障害処理を実行しなければならなくなったQPを連累QPと呼ぶことにする。
 図15は、実施例2における障害QPに対する処理を説明する図である。このフローは、障害QPが属するノードで動作する障害監視プログラムが実行する。
 ステップ1501からステップ1503の処理は、実施例1における図11のステップ1101から1103の処理と同内容であるので、説明を省略する。
 ステップ1503においてコンプリーションキューからコンプリーションキューエントリ (CQE)を取り出した障害監視プログラムは、障害QPをResetステートへ遷移させる(1504)。実施例2では障害QPを破壊しないので、障害QPのQP番号は変わらない。従って、実施例1のQP番号を通知する図11のステップ1105の処理は、実施例2では不要である。障害監視プログラムは、続けて障害QPをInitステートに遷移させてもよい。
 ステップ1505からステップ1507の処理は、実施例1における図11のステップ1107から1109の処理と同内容であるので、説明を省略する。
 図16は、実施例2における連累QPに対する処理を説明する図である。このフローは、実施例1と同様に、連累QPが属するノードで動作するデータ転送制御プログラムが実行する。
 ステップ1601からステップ1605の処理は、実施例1における図12のステップ1201から1205の処理と同内容であるので、説明を省略する。
 ステップ1605においてコンプリーションキューからコンプリーションキューエントリ (CQE)を取り出したデータ転送制御プログラムは、連累QPをResetステートへ遷移させる(1606)。実施例2では連累QPを破壊しないので、連累QPのQP番号は変わらない。従って、実施例1のQP番号を通知する図12のステップ1207の処理は、実施例2では不要である。データ転送制御プログラムは、続けて連累QPをInitステートに遷移させてもよい。
 ステップ1607からステップ1609の処理は、実施例1における図12のステップ1209から1211の処理と同内容であるので、説明を省略する。
 図15と図16の処理が完了すると、両端ノードのQPが共にRTSステートとなり、データ転送を再開することができる。
 図17は、実施例2におけるエラー通知用QP間の通信を説明する図である。先ず、ノード2で動作する障害監視プログラムが、データ転送用QPにエラーを検出する(1701)。次ぎに、ノード2で動作する障害監視プログラムが、エラー通知用QP5(715)から、エラーが発生したQPのQP番号と、そのステート識別情報を即値に格納したRDMA Write with Immediateリクエストを、ノード1のエラー通知用QP2(712)へ送信する(1702)。エラー通知を送信したノード2で動作する障害監視プログラムは、エラーが発生したQP、つまり障害QPをエラーステート、Resetステート、Initステート、RTRステート、RTSステートの順に遷移させる(1703)。
 エラー通知を受信したノード1で動作するデータ転送制御プログラムは、1702で通知された即値の内容から、障害QPに対応するQP、つまり連累QPを特定する。そして、連累QPをエラーステート、Resetステート、Initステート、RTRステート、RTSステートの順に遷移させる(1704)。最後に、ノード2の障害監視プログラムとノード1のデータ転送制御プログラムは、RTSステートへの状態遷移が完了したQPのQP番号とそのステート識別情報を即値に格納したRDMA Write with Immediateリクエストを送受信する(1705、1706)。以上で、ノード1とノード2の間でデータ転送を再開できる。実施例2に係るストレージ装置では、QPの再作成を行わないので、実施例1で行われていたQP番号の通知(図13の1305、1306)が不要である。そのため、データ転送の再開までの時間を短縮できる。
 図18と図19を参照して、本発明の実施例3のストレージ装置を説明する。先ず、実施例3の概要を述べる。実施例3のストレージ装置では、QPエラーの検出方法が、実施例1または実施例2のストレージ装置とは異なる。実施例1または実施例2のストレージ装置では、障害監視プログラムがエラーを示すコンプリーションを取得するか、非同期エラーを受信することにより、データ転送用QPのエラーを検出していた。それに対して、実施例3のストレージ装置では、データ転送用QPのエラーを検出するために、エラー通知用QPでハートビート通信を行う。
 図18は、実施例3におけるハートビート通信の送信処理を説明する図である。このフローにより、各ストレージノードは、データ転送用QPのステートを取得し、それをエラー通知用QPから送信する。送信データ形式は図10に示す通りで、実施例1または実施例2と同様に、RDMA Write with Immediateオペレーションの即値として送信する。
 ストレージノードは、ノードにデータ転送用QPがN個ある場合、データ転送用QPごとにハートビート送信プログラムを実行する。ハートビート送信プログラムは、データ転送制御プログラムや障害監視プログラムと同様に、各ノード上で一つのプロセスとして動作するストレージ制御プログラムの一部として動作する。以下では、ハートビート送信プログラムが、N個のデータ転送用QPのうち特定のQP(これをQP_iと呼ぶ)に対するハートビート送信を行う場合の例を説明する。
 先ず、各ストレージノードで動作するハートビート送信プログラムは、データ転送用QP_iのステートを取得する(1801)。QP_iのステートは、たとえばVerbs APIのibv_query_qp()を使用することで取得できる。
 次ぎに、ハートビート送信プログラムは、ステートを取得したデータ転送用QPがエラーの場合はステップ1803へ、それ以外の場合はステップ1804へ進める。
 次ぎに、ハートビート送信プログラムは、エラーステートであるQP_iに対する障害処理を起動する(1803)。ここで起動される障害処理は、図11または図15の処理と同様である。その後、ハートビート送信プログラムは、ステップ1804へ処理を進める。
 次ぎに、ハートビート送信プログラムは、取得したステートをRDMA Write with Immediateオペレーションの即値として、エラー通知用QPから送信する(1804)。
 その後、ハートビート送信プログラムは、所定時間待機する(1806)。この時間は、ハートビート送受信処理がストレージ装置に与える影響が十分小さく、且つ障害発生から検出までの時間がストレージ装置動作にあたえる影響も十分小さくなるように設定する。
 ハートビート送信プログラムは、ステップ1801からステップ1806の処理を繰り返す。
 図19は、実施例3におけるハートビート通信の受信処理を説明する図である。ハートビート通信の受信処理は、ハートビート受信プログラムにより実行される。このフローにより、各ストレージノードは、通信相手のデータ転送用QPのステートを受信し、その内容に従って、連累QPに対する障害処理の起動要否を判断する。ハートビート送信プログラムと同様、ノードにデータ転送用QPがN個ある場合、ストレージノードは、データ転送用QPごとにハートビート受信プログラムを実行する。ハートビート受信プログラムも、ハートビート送信プログラムと同様に、各ノード上で一つのプロセスとして動作するストレージ制御プログラムの一部として動作する。
 以下、図18の説明と同様に、通信相手のノードの複数のデータ転送用QPのうち、特定のQP(これをQP_iと呼ぶ)のステートを受信するハートビート受信プログラムについて、処理の流れを説明する。先ず、各ストレージノードで動作するハートビート受信プログラムは、通信相手のノードで動作するハートビート送信プログラムがエラー通知用QPを介して送信する、通信相手のノードのデータ転送用QP_iのステートが受信されて来るのを待つ(1901)。
 受信した通信相手のノードのデータ転送用QP_iのステートがエラーか、または所定時間内にステートを受信できなかった場合は、ハートビート受信プログラムは処理をステップ1903へ進める。それ以外の場合は、ステップ1901から処理を繰り返す。
 ステップ1903では、ハートビート受信プログラムは、連累QP_iを特定し、連累QP_iに対する障害処理を起動する。ここで起動される障害処理は、図12または図16の処理と同様である。
 ハートビート受信プログラムは、ステップ1901からステップ1903の処理を繰り返す。
 以上のように、各ノードのエラー通知用QP間でハートビート通信を行っても、通信相手のノードのデータ転送用QPに発生したQPエラーを検出し、障害QP及び連累QPに関する障害処理を起動することができる。
 図20と図21を参照して、本発明の実施例4のストレージ装置を説明する。IBの信頼性があるデータ転送サービス (RCサービス)では、QPを使うプロセス毎と、通信相手となるノード毎に、QPを一対一で接続する必要がある。つまり、接続ノード数が多いほど、多くのQPを作成する必要があるので、QPによって消費されるリソース(メモリ消費量等)が大きくなる。最新のHCAがサポートするDynamically Connected Transport(以下DCと略す)によると、RCサービスにおいても、一対多のQP接続が可能となる。DCの詳細については、たとえば特許文献2に開示されている。以下、リクエスタとなるDC対応QPをDCイニシエータ、レスポンダとなるDC対応QPをDCターゲットと呼ぶ。
 通常の(DC対応ではない)QPは、2個のQP間で双方向にリクエストを送信してデータ転送が可能であるが、DC対応QPでは、DCイニシエータからDCターゲットへの方向にのみ、リクエストを送信可能である。また、通常のQPでは、InitステートからRTRステートへ状態遷移する時に、QPにサービスレベルが設定される。それに対してDCでは、DCイニシエータにリクエストをポストするときに、リクエスト毎に使用するサービスレベルを設定する。実施例4ではエラー通知用QPにDCを適用することにより、エラー通知に必要なQPリソースを削減する。その結果、ノード数がnの場合に全て通常のQPを利用した場合と比べて、エラー通知用QPに必要なメモリリソースを2/nにすることができる。
 図20は、実施例4におけるストレージノード間の論理的な接続を説明する図である。
 図20において、DCI_1(2004)、DCI_i(2014)とDCI_n(2024)は、DCイニシエータである。DCT_1(2005)、DCT_i(2015)とDCT_n(2025)は、DCターゲットである。
 ノード1(2000)は、ユーザデータ領域2001のデータを送受信するために、QP_U_1_i(2006)とQP_U_1_n(2008)を含むn個のQPを備える。また、ノード1(2000)は、制御メモリ領域2002のデータを送受信するために、QP_S_1_i(2007)とQP_S_1_n(2009)を含むn個のQPを備える。さらに、ノード1は、エラー通知送信用にDCI_1(2004)とエラー通知受信用にDCT_1(2005)を備える。
 図20は、n個のストレージノードの相互接続のうち、ノード1とノードi間とノード1とノードn間の接続関係を示している。図示していない他のノード間の接続関係も同様である。
 ノードi(2010)は、ユーザデータ領域2011のデータを送受信するために、QP_U_i_1(2016)を含むn個のQPを備える。また、ノードi(2010)は、制御メモリ領域2012のデータを送受信するために、QP_S_i_1(2017)を含むn個のQPを備える。さらに、ノードiは、エラー通知送信用にDCI_i(2014)とエラー通知受信用にDCT_i(2015)を備える。
 ノードn(2020)は、ユーザデータ領域2021のデータを送受信するために、QP_U_n_1(2026)を含むn個のQPを備える。また、ノードn(2020)は、制御メモリ領域2022のデータを送受信するために、QP_S_n_1(2027)を含むn個のQPを備える。さらに、ノードnは、エラー通知送信用にDCI_n(2024)とエラー通知受信用にDCT_n(2025)を備える。
 ノード1(2000)のQP_U_1_i(2006)とノードi(2010)のQP_U_i_1(2016)は、仮想レーン2030を介してユーザデータを送受信する。ノード1(2000)のQP_S_1_i(2007)とノードi(2010)のQP_S_i_1(2017)は、仮想レーン2031を介して制御データを送受信する。
 ノード1(2000)のQP_U_1_n(2008)とノードn(2020)のQP_U_n_1(2026)は、仮想レーン2033を介してユーザデータを送受信する。ノード1(2000)のQP_S_1_n(2009)とノードn(2020)のQP_S_n_1(2027)は、仮想レーン2034を介して制御データを送受信する。
 ノード1(2000)のDCI_1(2004)は、仮想レーン2032を介してノードi(2010)のDCT_i(2015)と、仮想レーン2035を介してノードn(2020)のDCT_n(2025)に、エラー通知を送信することができる。ノード1(2000)のDCT_1(2005)は、仮想レーン2032を介してノードi(2010)のDCI_i(2014)から、そして仮想レーン2035を介してノードn(2020)のDCI_n(2024)から、エラー通知を受信することができる。
 図21は、実施例4におけるQPエラー検出方法を説明する図である。図21(a)は、ノード1(2000)からノードi(2010)へデータを転送する場合、図21(b)は、ノードi(2010)からノード1(2000)へデータ転送する場合を示す。図21(a)及び図21(b)において、ノード1(2000)は、ユーザデータ転送用QP_U_1_i(2006)、制御データ転送用QP_S_1_i(2007)と、エラー通知送信用DCI_1(2005)と、エラー通知受信用DCT_1(2004)を有する。同様に、ノードi(2010)は、ユーザデータ転送用QP_U_i_1(2016)、制御データ転送用QP_S_i_1(2017)と、エラー通知送信用DCI_i(2015)と、エラー通知受信用DCT_i(2014)を有する。ノード1(2000)とノードi(2010)は、3本の仮想レーン2030、2031、2032を有するIBリンク2101で接続されている。
 図21(a)では、QP_U_1_i(2006)、QP_S_1_i(2007)とDCI_1(2005)がリクエスタであり、QP_U_i_1(2016)、QP_S_i_1(2017)とDCT_i(2014)がレスポンダである。図21(a)において、ノード1(2000)で動作するデータ転送制御プログラム2102は、ユーザデータをサービスレベル0に設定したQP_U_1_i(2006)からノードi(2010)のQP_U_i_1(2016)へ転送し、制御データをサービスレベル1に設定したQP_S_1_i(2007)からノードi(2010)のQP_S_i_1(2017)へ転送する。ノード1(2000)で動作する障害監視プログラム2103は、QP_U_1_i(2006)とQP_S_1_i(2007)のステートをチェックする。QP_U_1_i(2006)またはQP_S_1_i(2007)のエラーを検出した場合、障害監視プログラム2103は、サービスレベル2に設定したリクエストを、DCI_1(2005)からノードi(2010)のDCT_i(2014)へ送信することで、エラー通知を送信する。データ転送制御プログラム2105は、エラー通知をDCT_i(2014)に接続されたコンプリーションキューから取得する。
 図21(b)では、QP_U_i_1(2016)、QP_S_i_1(2017)とDCI_i(2015)がリクエスタであり、QP_U_1_i(2006)、QP_S_1_i(2007)とDCT_1(2004)がレスポンダである。図21(b)において、ノードi(2010)で動作するデータ転送制御プログラム2105は、ユーザデータをサービスレベル0に設定したQP_U_i_1(2016)からノード1(2000)のQP_U_1_i(2006)へ転送し、制御データをサービスレベル1に設定したQP_S_i_1(2017)からノード1(2000)のQP_S_1_i(2007)へ転送する。ノードi(2010)で動作する障害監視プログラム2104は、QP_U_i_1(2016)とQP_S_i_1(2017)のステートをチェックする。QP_U_i_1(2016)またはQP_S_i_1(2017)のエラーを検出した場合、障害監視プログラム2104は、サービスレベル2に設定したリクエストを、DCI_i(2015)からノード1(2000)のDCT_1(2004)へ送信することで、エラー通知を送信する。データ転送制御プログラム2102は、エラー通知をDCT_1(2004)に接続されたコンプリーションキューから取得する。
 障害QP及び連累QPに関して、障害監視プログラムやデータ転送制御プログラムが実施する処理は、実施例1から実施例3で説明したものと同様である。つまり、図11や図12で説明した処理、あるいは図15や図16で説明した処理等が行われる。
 図22を参照して、本発明の実施例5のストレージ装置を説明する。実施例5のストレージ装置は、データ転送用にもDC対応QPを利用する。その結果、ノード数がnの場合に全て通常のQPを利用した場合と比べて、QPに必要なメモリリソースを2/nにすることができる。
 DC対応QPでは、DCイニシエータからDCターゲットへのみリクエストを送信するという非対称性があるので、DCターゲットがエラーになる場合とDCイニシエータがエラーになる場合とでは、エラーの影響が異なる。
 先ず、DCイニシエータがエラーになる場合を説明する。一つのDCイニシエータは複数のDCターゲットにリクエストを送信できる。あるDCイニシエータがエラーステートに遷移した場合、そのDCイニシエータはリクエストを送信しなくなるので、図6のようなLocal ACK Timeoutは発生しない。ただし、DCイニシエータとそれが通信していた全DCターゲットを再作成またはリセットする必要がある。そこで、実施例5のストレージ装置は、エラー通知用QPを使って、そのDCイニシエータが通信していた全DCターゲットが属するノードにエラーを通知する。
 次ぎに、DCターゲットがエラーになる場合を説明する。一つのDCターゲットは、複数のDCイニシエータからリクエストを受信することができる。あるDCイニシエータから受信したリクエストにエラーが含まれていた場合、DCターゲットはエラーステートに遷移する。エラーステートに遷移したDCターゲットに対して、別のDCイニシエータがリクエストを送信した場合、通信相手に無断でQPがエラーになる図6の場合と同様に、後からリクエストを送信したDCイニシエータにおいてLocal ACK Timeoutが発生してしまう。そこで、実施例5のストレージ装置は、DCターゲットがエラーステートに遷移した場合、エラー通知用QPを使って、エラーになったDCターゲットと通信していた全DCイニシエータが属するノードにエラーを通知する。
 図22は、実施例5におけるQPエラー検出方法を説明する図である。
 ノード1(2000)は、ユーザデータ送信用DCI_U_1(2201)、制御データ送信用DCI_S_1(2202)、エラー通知受信用DCT_1(2005)、ユーザデータ受信用DCT_U_1(2203)、制御データ受信用DCT_S_1(2204)と、及びエラー通知送信用DCI_1(2004)を有する。同様に、ノードi(2010)は、ユーザデータ受信用DCT_U_i(2211)、制御データ受信用DCT_S_i(2212)、エラー通知送信用DCI_i(2014)、ユーザデータ送信用DCI_U_i(2213)、制御データ送信用DCI_S_i(2214)と、及びエラー通知受信用DCT_i(2015)を有する。
 DCI_U_1(2201)、DCI_S_1(2202)、DCI_1(2004)、DCI_i(2014)、DCI_U_i(2213)、及びDCI_S_i(2214)は、DCイニシエータである。また、DCT_1(2005)、DCT_U_1(2203)、DCT_S_1(2204)、DCT_U_i(2211)、DCT_S_i(2212)、及びDCT_i(2015)は、DCターゲットである。ノード1(2000)とノードi(2010)は、3本の仮想レーン2030、2031、2032を有するIBリンク2101で接続されている。
 ノード1(2000)で動作するデータ転送制御プログラム2102は、サービスレベル0に設定したリクエストをDCI_U_1(2201)からノードi(2010)のDCT_U_i(2211)へ送信することにより、ユーザデータを転送する。また、データ転送制御プログラム2102は、サービスレベル1に設定したリクエストをDCI_S_1(2202)からノードi(2010)のDCT_S_i(2212)へ送信することにより、制御データを転送する。ノードi(2010)で動作する障害監視プログラム2103は、DCT_U_i(2211)とDCT_S_i(2212)とDCI_U_i(2213)とDCI_S_i(2214)のステートをチェックする。DCT_U_i(2211)またはDCT_S_i(2212)またはDCI_U_i(2213)またはDCI_S_i(2214)のエラーを検出した場合、障害監視プログラム2103は、サービスレベル2に設定したリクエストを、DCI_i(2014)からノード1(2000)のDCT_1(2005)へ送信することで、エラー通知を送信する。データ転送制御プログラム2102は、エラー通知をDCT_1(2005)に接続されたコンプリーションキューから取得する。
 ノードi(2010)で動作するデータ転送制御プログラム2105は、サービスレベル0に設定したリクエストをDCI_U_i(2213)からノード1(2000)のDCT_U_1(2203)へ送信することにより、ユーザデータを転送する。また、データ転送制御プログラム2105は、サービスレベル1に設定したリクエストをDCI_S_i(2214)からノード1(2000)のDCT_S_1(2204)へ送信することにより、制御データを転送する。ノード1(2000)で動作する障害監視プログラム2104は、DCI_U_1(2201)とDCI_S_1(2202)とDCT_U_1(2203)とDCT_S_1(2204)のステートをチェックする。DCI_U_1(2201)またはDCI_S_1(2202)またはDCT_U_1(2203)またはDCT_S_1(2204)のエラーを検出した場合、障害監視プログラム2104は、サービスレベル2に設定したリクエストを、DCI_1(2004)からノードi(2010)のDCT_i(2015)へ送信することで、エラー通知を送信する。データ転送制御プログラム2105は、エラー通知をDCT_i(2015)に接続されたコンプリーションキューから取得する。
 障害QP及び連累QPに関する処理は、実施例1から実施例3と同様である。ただし、ノード1(2000)のDCイニシエータまたはDCターゲットのエラーを検出した場合、障害監視プログラム2104は、ノードi(2010)以外のノード(ノード2~ノードn)にもエラー通知を送信する。
 図23を参照して、本発明の実施例6のストレージ装置を説明する。実施例6のストレージ装置は、DC対応QPを制御データ転送用とエラー通知用で兼用にするよう構成される。あるいは、DC対応QPをユーザデータ転送用とエラー通知用で兼用にするように構成されてもよい。図23では、DC対応QPを制御データ転送用とエラー通知用で兼用にした構成が示されている。
 DC対応QPを制御データ転送用(またはユーザデータ転送用)とエラー通知用で兼用にすることで、エラー通知用QPに必要なメモリリソースを減らすことができる。DC対応QPでは、DCイニシエータからDCターゲットへのリクエスト送信に限られるので、エラー通知と制御データ送信のDCイニシエータを兼用にしても、制御データ転送とエラー通知に兼用にしたDCターゲットのエラー検出と通知は可能である。
 先ず、DCイニシエータのエラーを通知する場合の動作を説明する。ユーザデータ送信用DCイニシエータがエラーになった場合は、制御データ送信用DCイニシエータからエラー通知を送信する。制御データ送信用DCイニシエータがエラーになった場合は、ユーザデータ送信用DCイニシエータからエラー通知を送信する。
 ノード1(2000)で動作するデータ転送制御プログラム2102は、サービスレベル0に設定したリクエストをDCI_U_1(2201)からノードi(2010)のDCT_U_i(2211)へ送信することにより、ユーザデータを転送する。また、データ転送制御プログラム2102は、サービスレベル1に設定したリクエストをDCI_S_1(2202)からノードi(2010)のDCT_S_i(2212)へ送信することにより、制御データを転送する。ノード1(2000)で動作する障害監視プログラム2104は、DCI_U_1(2201)とDCI_S_1(2202)のステートをチェックする。DCI_U_1(2201)またはDCI_S_1(2202)のエラーを検出した場合、障害監視プログラム2104は、リクエストにサービスレベル2に設定したエラー通知を、DCI_S_1(2202)(またはDCI_U_1(2201))からノードi(2010)のDCT_S_i(2212)(またはDCT_U_i(2211))へ送信する。ノードi(2010)で動作するデータ転送制御プログラム2105は、エラー通知をDCT_S_i(2212)(またはDCT_U_i(2211))に接続されたコンプリーションキューから取得する。
 ノードi(2010)で動作するデータ転送制御プログラム2105は、サービスレベル0に設定したリクエストをDCI_U_i(2213)からノード1(2000)のDCT_U_1(2203)へ送信することにより、ユーザデータを転送する。また、データ転送制御プログラム2105は、サービスレベル1に設定したリクエストをDCI_S_i(2214)からノード1(2000)のDCT_S_1(2204)へ送信することにより、制御データを転送する。ノードi(2010)で動作する障害監視プログラム2103は、DCI_U_i(2213)とDCI_S_i(2214)のステートをチェックする。DCI_U_i(2213)またはDCI_S_i(2214)のエラーを検出した場合、障害監視プログラム2103は、リクエストにサービスレベル2に設定したエラー通知を、DCI_S_i(2214)(またはDCI_U_i(2213))からノード1(2000)のDCT_S_1(2204)(またはDCT_U_1(2203))へ送信する。ノード1(2000)で動作するデータ転送制御プログラム2102は、エラー通知をDCT_S_1(2204)(またはDCT_U_1(2203))に接続されたコンプリーションキューから取得する。
 次ぎに、DCターゲットのエラーを通知する場合の動作を説明する。ユーザデータ受信用DCターゲット及び制御データ受信用DCターゲットがエラーになった場合は、制御データ送信用DCイニシエータからエラー通知を送信する。
 ノード1(2000)で動作する障害監視プログラム2104は、DCT_U_1(2203)とDCT_S_1(2204)のステートをチェックする。DCT_U_1(2203)またはDCT_S_1(2204)のエラーを検出した場合、障害監視プログラム2104は、リクエストにサービスレベル2に設定したエラー通知を、DCI_S_1(2202)からノードi(2010)のDCT_S_i(2212)へ送信する。ノードi(2010)で動作するデータ転送制御プログラム2105は、エラー通知をDCT_S_i(2212)に接続されたコンプリーションキューから取得する。
 ノードi(2010)で動作する障害監視プログラム2103は、DCT_U_i(2211)とDCT_S_i(2212)のステートをチェックする。DCT_U_i(2211)またはDCT_S_i(2212)のエラーを検出した場合、障害監視プログラム2103は、リクエストにサービスレベル2に設定したエラー通知を、DCI_S_i(2214)からノード1(2000)のDCT_S_1(2204)へ送信する。ノード1(2000)で動作するデータ転送制御プログラム2102は、エラー通知をDCT_S_1(2204)に接続されたコンプリーションキューから取得する。
 障害QP及び連累QPに関する処理は、実施例1から実施例3と同様である。ただし、DC対応Queue Pairの作成及びデータ転送可能なステートへの遷移に必要な情報が32bitより大きく即値に格納できない場合は、障害監視プログラムまたはデータ転送制御プログラムが、RDMA Write with Immediateリクエストの送信先アドレスと、データ転送長とScatter Gatgerリスト数を必要に応じて設定し、必要な情報を送信する。この場合、エラー通知を受信した障害監視プログラムまたはデータ転送制御プログラムは、即値に格納された以外の情報を、所定のアドレスから読み出す。また、実施例5と同様に、ノード1(2000)のDCイニシエータまたはDCターゲットのエラーを検出した場合、障害監視プログラム2104は、ノードi(2010)以外のノード(ノード2~ノードn)にもエラー通知を送信する。
 以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
 たとえば本発明は、内部ネットワークにInfiniBandを適用したストレージ装置のみならず、サーバ装置など、各種情報処理システムに対しても広く適用が可能である。
700、701…ストレージノード、702、705・・・データ転送制御プログラム、703、704・・・障害監視プログラム、710~715・・・QP、720~722・・・仮想レーン、730・・・IBリンク
 

Claims (15)

  1.  通信リクエストの送受信用キューと識別番号を有する論理ポートを複数有する複数のストレージノードと、前記複数のストレージノードを相互接続する内部ネットワークを有するストレージ装置において、
     前記複数のストレージノードのうち前記第1ストレージノードは、前記論理ポートとして、前記第2ストレージノードとのデータ通信に用いられる第1データ通信論理ポートと、前記第1データ通信論理ポートの状態を前記第2ストレージノードに通知するために用いられる第1エラー通信論理ポートを有し、
     前記複数のストレージノードのうち前記第2ストレージノードは、前記論理ポートとして、第1データ通信論理ポートの通信先となる前記論理ポートで、前記第1ストレージノードとのデータ通信に用いられる第2データ通信論理ポートと、前記第2データ通信論理ポートの状態を前記第1ストレージノードに通知するために用いられる第2エラー通信論理ポートを有し、
     前記第1ストレージノードは、前記第1データ通信論理ポートがエラー状態に遷移したことを検知した時、
     前記第1エラー通信論理ポートを用いて、前記第2ストレージノードに対して、前記第1データ通信論理ポートの識別番号と状態を通知する、
    ことを特徴とするストレージ装置。
  2.  前記第1エラー通信論理ポートを用いた情報転送は、前記第1データ通信論理ポートを用いた情報転送よりも高い優先度で実施される
    ことを特徴とする、請求項1に記載のストレージ装置。
  3.  前記第1ストレージノードは、前記第1データ通信論理ポートがエラー状態に遷移したことを検知した時、
     前記第1データ通信論理ポートを破棄し、
     前記第2ストレージノードとのデータ通信に用いられる第3データ通信論理ポートを作成し、
     前記第1エラー通信論理ポートを用いて、前記作成された第3データ通信論理ポートの識別番号を前記第2ストレージノードに通知する、
    ことを特徴とする、請求項1に記載のストレージ装置。
  4.  前記第2ストレージノードは、前記第1データ通信論理ポートの識別番号と前記エラー状態を含む通知を受信すると、
     前記第2データ通信論理ポートを破棄し、
     前記第1ストレージノードとのデータ通信に用いられる第4データ通信論理ポートを作成し、
     前記第2エラー通信論理ポートを用いて、前記作成された第4データ通信論理ポートの識別番号を前記第1ストレージノードに通知する、
    ことを特徴とする、請求項3に記載のストレージ装置。
  5.  前記第1ストレージノードは、前記第3データ通信論理ポートの状態をリクエスト送受信可能な状態に遷移させた後、前記第2ストレージノードに、前記第3データ通信論理ポートの識別番号と状態を通知し、
     前記第2ストレージノードは、前記第4データ通信論理ポートの状態をリクエスト送受信可能な状態に遷移させた後、前記第1ストレージノードに、前記第4データ通信論理ポートの識別番号と状態を通知する、
    ことを特徴とする、請求項4に記載のストレージ装置。
  6.  前記第2エラー通信論理ポートを用いた情報転送は、前記第2データ通信論理ポートを用いた情報転送よりも高い優先度で実施される
    ことを特徴とする、請求項4に記載のストレージ装置。
  7.  前記第1ストレージノードは、前記第1データ通信論理ポートの状態を定期的に取得することで、前記第1データ通信論理ポートがエラー状態に遷移したことを検知する、
    ことを特徴とする、請求項1に記載のストレージ装置。
  8.  前記第1ストレージノードは、前記第1データ通信論理ポートがエラー状態に遷移したことを検知した時、
     前記第1データ通信論理ポートの状態を、リセット状態に遷移させた後、リクエスト送受信可能な状態に遷移させ、
     前記第1データ通信論理ポートの状態がリクエスト送受信可能な状態に遷移した後、前記第2ストレージノードに、前記第1データ通信論理ポートの識別番号と状態を通知する、
    ことを特徴とする、請求項1に記載のストレージ装置。
  9.  前記第1データ通信論理ポートは、前記第2ストレージノード以外の前記ストレージノードとのデータ通信にも用いられる前記論理ポートであって、
     前記第1ストレージノードは、前記第1データ通信論理ポートの状態を前記第2ストレージノード以外の前記ストレージノードにも通知する
    ことを特徴とする、請求項1に記載のストレージ装置。
  10.  前記第1ストレージノードは、前記第1データ通信論理ポートに加え、前記第2ストレージノードとのデータ通信に用いられる制御データ通信論理ポートを有し、
     前記第1ストレージノードは、前記第1データ通信論理ポートがエラー状態に遷移したことを検知した時、
     前記制御データ通信論理ポートを用いて、前記第2ストレージノードに前記第1データ通信論理ポートの識別番号と状態を通知する、
    ことを特徴とする、請求項9に記載のストレージ装置。
  11.  前記第1ストレージノードはさらに、前記複数のストレージノードの1つである第3ストレージノードとのデータ通信に用いられる第5データ通信論理ポートを有し、
     前記第1エラー通信論理ポートは、第1データ通信論理ポートの状態を前記第2ストレージノードに通知することに加え、前記第5データ通信論理ポートの状態を前記第3ストレージノードに通知するために用いられる、
    ことを特徴とする、請求項1に記載のストレージ装置。
  12.  前記内部ネットワークは、Infiniband規格のネットワークであり、
     前記論理ポートはQueue Pairである、
    ことを特徴とする、請求項1に記載のストレージ装置。
  13.  前記ストレージノードは、前記第1データ通信論理ポートまたは前記第2データ通信論理ポートの識別番号と状態を通知する際、前記識別番号と前記状態がRDMA Write with Immediateオペレーションの即値に設定されたリクエストを作成し、前記リクエストをQueue Pairにポストすることで通知を行う、
    ことを特徴とする、請求項12に記載のストレージ装置。
  14.  通信リクエストの送受信用キューと識別番号を有する論理ポートを複数有する複数のストレージノードと、前記複数のストレージノードを相互接続する内部ネットワークを有し、
     前記複数のストレージノードのうち前記第1ストレージノードは、前記論理ポートとして、前記第2ストレージノードとのデータ通信に用いられる第1データ通信論理ポートと、前記第1データ通信論理ポートの状態を前記第2ストレージノードに通知するために用いられる第1エラー通信論理ポートを有し、
     前記複数のストレージノードのうち前記第2ストレージノードは、前記論理ポートとして、第1データ通信論理ポートの通信先となる前記論理ポートで、前記第1ストレージノードとのデータ通信に用いられる第2データ通信論理ポートと、前記第2データ通信論理ポートの状態を前記第1ストレージノードに通知するために用いられる第2エラー通信論理ポートを有するストレージ装置の制御方法であって、
     前記第1ストレージノードは、前記第1データ通信論理ポートがエラー状態に遷移したことを検知した時、
     前記第1エラー通信論理ポートを用いて、前記第2ストレージノードに対して、前記第1データ通信論理ポートの識別番号と状態を通知する、
    ことを特徴とするストレージ装置の制御方法。
  15.  前記第1ストレージノードは、前記第1データ通信論理ポートがエラー状態に遷移したことを検知した時、
     前記第1データ通信論理ポートを破棄し、
     前記第2ストレージノードとのデータ通信に用いられる第3データ通信論理ポートを作成し、
     前記第1エラー通信論理ポートを用いて、前記作成された第3データ通信論理ポートの識別番号を前記第2ストレージノードに通知する、
    ことを特徴とする、請求項14に記載のストレージ装置の制御方法。
PCT/JP2015/055605 2015-02-26 2015-02-26 ストレージ装置 WO2016135919A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US15/545,451 US10459791B2 (en) 2015-02-26 2015-02-26 Storage device having error communication logical ports
PCT/JP2015/055605 WO2016135919A1 (ja) 2015-02-26 2015-02-26 ストレージ装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/055605 WO2016135919A1 (ja) 2015-02-26 2015-02-26 ストレージ装置

Publications (1)

Publication Number Publication Date
WO2016135919A1 true WO2016135919A1 (ja) 2016-09-01

Family

ID=56789160

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/055605 WO2016135919A1 (ja) 2015-02-26 2015-02-26 ストレージ装置

Country Status (2)

Country Link
US (1) US10459791B2 (ja)
WO (1) WO2016135919A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10574755B2 (en) * 2018-03-28 2020-02-25 Wipro Limited Method and high performance computing (HPC) switch for optimizing distribution of data packets
US11556407B2 (en) * 2019-09-15 2023-01-17 Oracle International Corporation Fast node death detection
JP2021189462A (ja) 2020-05-25 2021-12-13 株式会社日立製作所 ストレージ装置
US11500717B2 (en) * 2020-07-23 2022-11-15 EMC IP Holding Company LLC Method for detecting data storage system, device and data storage system
CN114520711B (zh) * 2020-11-19 2024-05-03 迈络思科技有限公司 数据包的选择性重传

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001168949A (ja) * 1999-12-09 2001-06-22 Nec Corp ファブリック障害検知方法ならびに装置
JP2013511884A (ja) * 2009-11-19 2013-04-04 メラノックス テクノロジーズ リミテッド 動的接続された移送サービス
JP2014182739A (ja) * 2013-03-21 2014-09-29 Nec Corp 通信制御システム、通信制御装置、通信制御方法、及びそのためのプログラム
JP2014197266A (ja) * 2013-03-29 2014-10-16 富士通株式会社 情報処理システム,情報処理装置,情報処理装置の制御プログラム,及び情報処理システムの制御方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7010607B1 (en) * 1999-09-15 2006-03-07 Hewlett-Packard Development Company, L.P. Method for training a communication link between ports to correct for errors
KR100507806B1 (ko) * 2003-01-29 2005-08-17 삼성전자주식회사 링구조 비동기전송 모드방식의 시스템에 있어서 노드그룹을 이용한 보호 절체 장치 및 그 방법
US20040165525A1 (en) * 2003-02-10 2004-08-26 Invensys Systems, Inc. System and method for network redundancy
US7839765B2 (en) * 2004-10-05 2010-11-23 Hewlett-Packard Development Company, L.P. Advertising port state changes in a network
US7448044B1 (en) * 2005-02-02 2008-11-04 Sun Microsystems, Inc. Systems and methods for efficient queue pair number re-use
US7793158B2 (en) * 2007-08-27 2010-09-07 International Business Machines Corporation Providing reliability of communication between supernodes of a multi-tiered full-graph interconnect architecture
WO2011102512A1 (ja) * 2010-02-22 2011-08-25 日本電気株式会社 通信システム、通信方法、サーバ装置及び、通信装置
US9015111B2 (en) 2013-04-05 2015-04-21 Hitachi, Ltd. Storage system and storage system control method
JP2017028539A (ja) * 2015-07-23 2017-02-02 日立金属株式会社 通信装置、制御装置、及び通信システム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001168949A (ja) * 1999-12-09 2001-06-22 Nec Corp ファブリック障害検知方法ならびに装置
JP2013511884A (ja) * 2009-11-19 2013-04-04 メラノックス テクノロジーズ リミテッド 動的接続された移送サービス
JP2014182739A (ja) * 2013-03-21 2014-09-29 Nec Corp 通信制御システム、通信制御装置、通信制御方法、及びそのためのプログラム
JP2014197266A (ja) * 2013-03-29 2014-10-16 富士通株式会社 情報処理システム,情報処理装置,情報処理装置の制御プログラム,及び情報処理システムの制御方法

Also Published As

Publication number Publication date
US20180011763A1 (en) 2018-01-11
US10459791B2 (en) 2019-10-29

Similar Documents

Publication Publication Date Title
KR102457091B1 (ko) Nvme-of 이더넷 ssd에서 데이터 복제를 제공하기 위한 시스템 및 방법
US7493424B1 (en) Network storage system with shared software stack for LDMA and RDMA
US8244825B2 (en) Remote direct memory access (RDMA) completion
US9134913B2 (en) Methods and structure for improved processing of I/O requests in fast path circuits of a storage controller in a clustered storage system
JP4543051B2 (ja) Ipネットワーク上の遠隔データファシリティ
US8677023B2 (en) High availability and I/O aggregation for server environments
US8880935B2 (en) Redundancy and load balancing in remote direct memory access communications
US9852096B2 (en) High speed serial link in-band lane fail over for RAS and power management
JP4658122B2 (ja) Dmaコントローラ、ノード、データ転送制御方法、及びプログラム
WO2016135919A1 (ja) ストレージ装置
US20030035433A1 (en) Apparatus and method for virtualizing a queue pair space to minimize time-wait impacts
US20080046612A1 (en) Method, apparatus and program storage device for providing asynchronous status messaging in a data storage system
MXPA04010437A (es) Sistema, metodo y producto para administrar transferencias de datos en una red.
JP2012048712A (ja) ローカル・アダプタの読み取り操作により操作の完了が確認されるまで操作の肯定応答を遅延させる方法
WO2021063160A1 (zh) 访问固态硬盘的方法及存储设备
US20230421451A1 (en) Method and system for facilitating high availability in a multi-fabric system
WO2021012169A1 (zh) 一种提高存储系统可靠性的方法和相关装置
JP2002305535A (ja) データを転送する信頼できるプロトコルを提供する方法および装置
JP5477112B2 (ja) ネットワークシステムの試験方法
WO2022160308A1 (zh) 数据存取方法、装置和存储介质
US8874984B2 (en) High performance virtual converged enhanced ethernet with persistent state flow control
US10223323B2 (en) Apparatus and method for controlling the number of lanes used for transferring data between information processing apparatuses
US7962562B1 (en) Multicasting message in a network storage system to local NVRAM and remote cluster partner
US7539781B1 (en) Use of queue pairs for local communication in a network storage system
US7769913B1 (en) Method and apparatus for assigning a local identifier to a cluster interconnect port in a network storage system

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

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 15545451

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15883213

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP