WO2016189636A1 - 計算機システム - Google Patents

計算機システム Download PDF

Info

Publication number
WO2016189636A1
WO2016189636A1 PCT/JP2015/064971 JP2015064971W WO2016189636A1 WO 2016189636 A1 WO2016189636 A1 WO 2016189636A1 JP 2015064971 W JP2015064971 W JP 2015064971W WO 2016189636 A1 WO2016189636 A1 WO 2016189636A1
Authority
WO
WIPO (PCT)
Prior art keywords
server
interface device
processor
command
protocol
Prior art date
Application number
PCT/JP2015/064971
Other languages
English (en)
French (fr)
Inventor
津野田 賢伸
功人 佐藤
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2015/064971 priority Critical patent/WO2016189636A1/ja
Publication of WO2016189636A1 publication Critical patent/WO2016189636A1/ja

Links

Images

Classifications

    • 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

Definitions

  • the present invention relates to a computer system.
  • a plurality of server devices and a plurality of storage devices in a computer system are connected via a protocol processing device such as a host bus adapter (HBA) in order to realize an appropriate network configuration according to the performance and function required for each device.
  • HBA host bus adapter
  • the protocol processing device includes one interface device on the server device or storage device side and one or more communication ports on the network side.
  • the protocol processing device performs mutual conversion between, for example, a SCSI command and a FiberChannel frame.
  • Protocol processing devices are further classified into those that process only a specific protocol set before shipment, and those that process an arbitrary protocol by updating firmware stored in the protocol processing device.
  • the former is relatively low cost.
  • the latter enables defect correction and function expansion after shipment.
  • protocol processing firmware operates independently for each protocol in the protocol processing device, and the server device communicates with the firmware under the OS and functions required
  • the protocol processing driver that provides the application to the application operates. Therefore, the protocol processing firmware and the protocol processing driver must be updated appropriately for each protocol according to the function and added value.
  • the protocol processing driver of any one of a plurality of protocols cannot be properly updated due to lack of development man-hours or difficulty in modification.
  • Patent Document 1 describes an NVM Express (NVMe) protocol.
  • Patent Document 2 describes that there is a SCSI command that cannot be mapped to an NVMe command due to a difference in functions between the SCSI protocol and the NVMe protocol.
  • NVM Express revision 1.2 specification http://nvmexpress.org/wp-content/uploads/NVM_Express_1_2_Gold_20141209.pdf
  • NVM Express: SCSI Translation Reference http://www.nvmexpress.org/wp-content/uploads/NVM-Express-SCSI-Translation-Reference-1_1-Gold.pdf
  • the function of the second protocol may be insufficient compared to the function of the first protocol due to difficulty in updating the driver or differences in standards.
  • a computer system includes a storage device, a storage controller connected to the storage device, and an interface device connected to the storage controller via a storage-side bus. And a server computer connected to the interface device via a server-side bus.
  • the server computer includes a server memory and a server processor connected to the server memory.
  • the server memory stores a first driver based on the first protocol and a second driver based on the second protocol.
  • the server processor transmits a first I / O command based on the first protocol to the interface device according to the first driver, and receives a response of the first I / O command from the interface device And a process of receiving a notification from the interface device, wherein the server processor transmits a second I / O command based on the second protocol to the interface device according to the second driver, and the interface device
  • the interface device receives a response of the second I / O command from the first I / O command, and the interface device executes I / O according to the first I / O command as a first I / O process.
  • I / O is executed in response to the second I / O command
  • a response of the second I / O command is transmitted to the server processor
  • the interface device performs the first I / O processing.
  • a first notification indicating the first abnormal state is transmitted to the server processor using the first protocol as a first notification process
  • the server When the processor receives the first notification according to the first driver and the interface device detects a second abnormal state that is an abnormality of a path used for the second I / O processing, a second notification processing is performed.
  • the server processor uses the first protocol to send a second notification indicating the second abnormal state to the server processor, the server processor according to the first driver Receiving the second notification.
  • FIG. 1 shows a hardware configuration of a computer system according to an embodiment.
  • 2 shows a hardware configuration of the interface device 200.
  • 2 shows a software configuration of the server apparatus 100.
  • Fig. 5 illustrates NVMe event processing. SCSI event processing is shown. The first part of the I / O process is shown. The second part following the first part of the I / O process is shown. The modification of the software configuration of the server apparatus 100 is shown.
  • xxx table information may be described using the expression “xxx table”, but the information may be expressed in any data structure. That is, “xxx table” can be referred to as “xxx information” to indicate that the information does not depend on the data structure.
  • xxx information information may be described using the expression “xxx table”, but the information may be expressed in any data structure. That is, “xxx table” can be referred to as “xxx information” to indicate that the information does not depend on the data structure.
  • the configuration of each table is an example, and one table may be divided into two or more tables, or all or part of the two or more tables may be a single table. Good.
  • an ID is used as element identification information, but other types of identification information may be used instead of or in addition thereto.
  • a reference number or a common number in the reference number is used, and when a description is made by distinguishing the same type of element, the reference number of the element is used.
  • an ID assigned to the element may be used instead of the reference code.
  • an I / O (Input / Output) request is a write request or a read request, and may be referred to as an access request.
  • the process may be described using “program” as a subject, but the program is executed by a processor (for example, a CPU (Central Processing Unit)), so that a predetermined process and function can be performed. Since the processing is appropriately performed using a storage resource (for example, a memory) and / or an interface device (for example, a communication port), the processing subject may be a processor.
  • the process described with the program as the subject may be a process or system performed by a processor or an apparatus having the processor.
  • the processor may include a hardware circuit that performs a part or all of the processing.
  • the program may be installed in a computer-like device from a program source.
  • the program source may be, for example, a storage medium that can be read by a program distribution server or a computer.
  • the program distribution server may include a processor (for example, a CPU) and a storage resource, and the storage resource may further store a distribution program and a program to be distributed. Then, the processor of the program distribution server executes the distribution program, so that the processor of the program distribution server may distribute the distribution target program to other computers.
  • two or more programs may be realized as one program, or one program may be realized as two or more programs.
  • the management system may be composed of one or more computers.
  • the management computer displays information (specifically, for example, the management computer displays information on its own display device, or the management computer displays display information in a remote display computer)
  • Management computer is the management system.
  • the plurality of computers may include a display computer when the display computer performs display
  • the management computer (eg, management system) may include an interface device connected to the I / O system including the display system, a storage resource (eg, memory), and a processor connected to the interface device and the storage resource.
  • the display system may be a display device included in the management computer or a display computer connected to the management computer.
  • the I / O system may be an I / O device (for example, a keyboard and a pointing device or a touch panel) included in the management computer, a display computer connected to the management computer, or another computer.
  • “Displaying display information” by the management computer means displaying the display information on the display system, which may be displaying the display information on a display device included in the management computer.
  • the management computer may transmit display information to the display computer (in the latter case, the display information is displayed by the display computer).
  • the management computer inputting / outputting information may be inputting / outputting information to / from an I / O device of the management computer, or a remote computer connected to the management computer (for example, a display) Information may be input / output to / from the computer.
  • the information output may be a display of information.
  • FIG. 1 shows the hardware configuration of the computer system of the embodiment.
  • the computer system includes a server device 100 and a storage device 300.
  • the server apparatus 100 includes a server unit (server computer) 130 and an interface device 200.
  • the server unit 130 includes a memory 110 and a CPU 120.
  • the storage apparatus 300 includes a plurality of controllers (CTL) 400 and a plurality of storage devices 320.
  • the plurality of storage devices 320 include flash memory.
  • the plurality of storage devices may include an HDD.
  • the storage apparatus 300 of this embodiment includes two controllers 400, which are called controllers # 0 and # 1, respectively.
  • the memory 110 stores a program and data for processing of the server unit 130.
  • the CPU 120 is connected to the memory 110 via an internal bus, and executes processing of the server unit 130 according to a program stored in the memory 110.
  • the controller 400 is connected to the interface device 200 and performs processing in response to an I / O request from the interface device 200.
  • the controller 400 includes a memory 410, a CPU 420, and a drive interface (I / F) 430.
  • the memory 410 stores a program and data for processing of the controller 400.
  • the CPU 420 is connected to the memory 410 via an internal bus, and executes the process of the controller 400 according to a program stored in the memory 410.
  • the drive interface 430 is connected to the CPU 420 and the storage device 320 and controls communication between the controller 400 and the storage device 320.
  • the storage device 320 stores data, is connected to the controller 400, and is accessed from the controller 400.
  • the interface device 200 is connected to the CPU 120 via the server-side bus and is connected to the storage device 300 via the storage-side bus, and controls communication between the server unit 130 and the storage device 300.
  • the server side bus and the storage side bus in this embodiment are PCIe buses.
  • the interface device 200 in this embodiment is connected to two controllers 400 via two storage-side buses.
  • the memory 110 and the CPU 120 are arranged on the motherboard (server blade) of the server unit 130, and the interface device 200 is a board (mezzanine card, add-on card) inserted into a PCIe bus slot on the server unit 130. .
  • the storage-side bus may be a PCIe bus cable or a substrate.
  • the interface device 200 may be located outside the server apparatus 100 and connected via a PCIe bus cable connected to the PCIe bus slot of the server unit 130.
  • the computer system may include a plurality of server units 130.
  • the plurality of server units 130 may share the storage device 320 of the storage apparatus 300.
  • the storage apparatus 300 may include one controller 400 or may include three or more controllers 400.
  • the computer system may also include a display device 140.
  • the display device 140 may be a management computer connected to the server device 100 via a communication network.
  • the server-side bus performs server protocol communications.
  • the server protocol includes a first protocol (first interface standard) and a second protocol (second interface standard).
  • the server unit 130 executes a first driver that is a driver of the first protocol and a second driver that is a driver of the second protocol.
  • the second driver does not include a part of the function of the first driver.
  • the first protocol is, for example, the SCSI protocol
  • the second protocol is, for example, the NVMe protocol.
  • the storage-side bus performs storage protocol communication.
  • the storage protocol is, for example, the SCSI protocol.
  • Each of the internal bus, the server side bus, and the storage side bus is, for example, a PCIe bus.
  • the server unit 130 and the interface device 200 may be connected via a plurality of server-side buses.
  • the storage-side bus may be connected to a plurality of controllers 400 via a PCIe switch or the like.
  • FIG. 2 shows a hardware configuration of the interface device 200.
  • the interface device 200 includes an I / O processor 230, a DMA (Direct Memory Access) controller 240, a memory 270, bus control circuits 250 and 260, an abnormality detection circuit 290, and a management processor 510. These elements are connected via an internal bus.
  • the interface device 200 further includes one server-side port connected to one server-side bus and two storage-side ports connected to two storage-side buses, respectively.
  • the memory 270 stores data used by the I / O processor 230 and the management processor 510.
  • the memory 270 further includes an internal communication buffer used for communication inside the interface device 200. Events generated in the interface device 200 are written in the internal communication buffer.
  • the I / O processor 230 includes a plurality of processors (LRP # 0 to # 3).
  • the processor may be a processor core.
  • the memory 270 stores firmware and data for processing of the interface device 200.
  • the I / O processor 230 is connected to the memory 270 via the internal bus, and executes processing of the interface device 200 according to the firmware stored in the memory 270.
  • Each LRP is connected to an LRP memory.
  • the LRP memory stores the corresponding LRP firmware, events addressed to the LRP, events indicating an abnormal state of the LRP, and the like. When the LRP detects an internal abnormal state, the LRP writes an event indicating the abnormal state to the LRP memory. This event may be written to a register in the LRP instead of the LRP memory.
  • the bus control circuit 250 is connected to the server unit 130 via a server-side bus.
  • the bus control circuit 250 includes a server side register that is accessed by the server unit 130 and a control circuit that controls the server side register and the memory 270.
  • the server-side register is assigned to the Memory Mapped Input / Output (MMIO) space in the address space used by the CPU 120.
  • MMIO Memory Mapped Input / Output
  • the server unit 130 writes a command to the memory 110 in the server unit 130, and writes an event including identification information of the command to the server side register.
  • the bus control circuit 260 is connected to the MP 420 of the controller 400 of the storage apparatus 300 via the storage side bus.
  • the bus control circuit 260 includes a storage-side register that is accessed by the controller 400 and a control circuit that controls the storage-side register and the memory 270.
  • the controller 400 writes a request for the interface device 200 to the memory 410 and writes an event including identification information of the request to the storage side register.
  • the abnormality detection circuit 290 detects an abnormality such as that an address outside the pre-permitted range has been accessed, an unsupported command has been received, a failure in the interface device 200, or a storage-side bus link has been disconnected. Detect state. The abnormality detection circuit 290 writes an event indicating the detected abnormal state to the internal communication buffer in the memory 270.
  • the management processor 510 periodically monitors the internal communication buffer, the LRP memory, and the like by polling, and when an event indicating an abnormal state is detected, writes a log (abnormal information) indicating the abnormal event to the memory 270, An event indicating the status is written to the LRP memory of the associated LRP. Further, when the management processor 510 detects an event from the server unit 130, it writes a log indicating the event in the memory 270. When the management processor 510 generates a log indicating these events, the server unit 130 can acquire information on the abnormal state.
  • management processor 510 may include a plurality of processors or processor cores.
  • a plurality of processor cores in one processor may be the I / O processor 230 and the management processor 510.
  • the LRP performs processing according to events. For example, the LRP executes I / O processing based on an event written in the server side register. Here, the LRP issues an I / O request based on the I / O command stored in the memory 270 to the storage apparatus 300. Further, the LRP acquires information for DMA from the server unit 130 and the storage apparatus 300, and issues a DMA instruction to the DMA controller 240 based on the acquired information.
  • the DMA controller 240 performs burst transfer between the memory 110 in the server unit 130 and the memory 410 in the storage apparatus 300 based on an instruction from the LRP. For example, the DMA controller 240 transfers write data from the server unit 130 to the storage apparatus 300, and transfers read data from the storage apparatus 300 to the server unit 130.
  • the DMA controller 240 includes a plurality of DMA cores.
  • the server unit 130 is a root complex (RC), and the interface device 200 is an endpoint (EP).
  • the controller 400 is RC and the interface device 200 is EP.
  • a plurality of functions for the PCIe device are set in the interface device 200.
  • One PCIe device can operate as a plurality of PCIe devices by having a plurality of functions.
  • Each of the four LRPs is assigned to any function.
  • the function of this embodiment is either a SCSI function according to the SCSI protocol or an NVMe function according to the NVMe protocol.
  • the LRP assigned to the SCSI function executes processing according to the SCSI firmware 510.
  • the LRP assigned to the NVMe function executes processing according to the NVMe firmware 520. Note that any of a plurality of LRPs assigned to one function may process an I / O command.
  • the LRP that executes the NVMe firmware 520 is called the NVMe processor, and is called the SCSI processor that executes the SCSI firmware 510.
  • the SCSI processor executes the I / O processing based on the SCSI command
  • the NVMe processor executes the I / O processing based on the NVMe command, so that the performance of the I / O processing can be improved.
  • LRP converts server protocol and storage protocol in I / O processing.
  • the NVMe processor converts an NVMe protocol command, which is a server protocol, into a SCSI protocol, which is a storage protocol, and transmits the command to the storage apparatus 300, and converts a response received from the storage apparatus 300 into an NVMe protocol response. Transmit to unit 130.
  • the NVMe processor converts the NVMe command from the server unit 130 into one or more SCSI commands. When the NVMe command is converted into a plurality of SCSI commands and a plurality of responses corresponding to the plurality of SCSI commands are received from the storage apparatus 300, the NVMe processor transmits a response to the NVMe command to the server unit 130.
  • the server unit 130 can access data in the storage apparatus 300 using a plurality of protocols.
  • the interface device 200 is shared by a plurality of protocols, so that the memory 270, the I / O processor 230, the serial parallel conversion circuit (SerDes), etc. are shared by the plurality of protocols. Development costs and costs can be reduced.
  • the computer system of this embodiment uses the NVMe protocol in addition to the conventional SCSI protocol. Since the NVMe protocol has a plurality of queues, the number of commands that can be issued simultaneously can be increased. The storage apparatus can widen the bandwidth by processing these commands in parallel. In addition, when the NVMe command is converted into a SCSI command, the affinity with the SCSI protocol is high. This makes it easy to replace the SCSI protocol with NVMe and improve the IO performance.
  • the CPU 120 in the server unit 130 is called a server processor, and the controller 400 of the storage apparatus 300 is called a storage controller.
  • the server memory in the server unit 130 is called, the memory 410 in the storage controller is called a storage memory, and the memory 270 in the interface device 200 is called an I / F memory.
  • the bus control circuit 250 connected to the server side bus is called a server side bus control circuit, and the bus control circuit 260 connected to the storage side bus is called a storage side bus control circuit.
  • each part in the computer system and each part in the interface device 200 is not limited to the number in this embodiment.
  • FIG. 3 shows a software configuration of the server apparatus 100.
  • the server memory stores an OS 112, an application 113, and a plurality of drivers 114 (device drivers) as programs.
  • the application 113 issues an I / O request for the storage apparatus 300 to the driver 114.
  • the OS 112 provides basic functions of the server unit 130.
  • the plurality of drivers 114 include a SCSI driver 114a that performs communication with the interface device 200 according to the SCSI protocol, and an NVMe driver 114b that performs communication with the interface device 200 according to the NVMe standard.
  • the SCSI driver 114a can include an extended function related to the NVMe protocol.
  • the server unit 130 can use the standard driver included in the OS 112 as the NVMe driver 114b.
  • the driver 114 issues a command using a corresponding protocol to the interface device 200 as a PCIe bus packet.
  • the SCSI driver 114a regards the interface device 200 as a SCSI device.
  • the NVMe driver 114b regards the interface device 200 as an NVMe device.
  • the I / F memory stores SCSI firmware 510, NVMe firmware 520, and monitoring firmware 530.
  • the SCSI firmware 510 is executed by at least one processor (SCSI processor).
  • the NVMe firmware 520 is executed by at least one processor (NVMe processor).
  • the monitoring firmware 530 is executed by at least one processor (management processor 510).
  • the SCSI firmware 510 includes a SCSI core function 511 and a SCSI extension function 512.
  • the NVMe firmware 520 includes an NVMe core function 521 and an NVMe extension function 522.
  • the monitoring firmware 530 includes a monitoring function 531.
  • the LRP performs processing according to events.
  • the event indicates an event factor.
  • the event factor indicates any of an internal event notified from the interface device 200 to the LRP, a storage event from the storage controller, and a server event notified from the server processor to the LRP in descending order of priority.
  • the internal event indicates, for example, an abnormal state such as a hardware failure in the interface device 200 or a storage-side bus disconnection.
  • the hardware failure is, for example, an LRP failure.
  • the internal event indicates a request or response from another LRP, for example.
  • the server event indicates, for example, the issue of an I / O command.
  • the server event is, for example, a SCSI event indicating the issue of a SCSI command.
  • the server event is, for example, an NVMe event indicating the issue of an NVMe command.
  • the storage event indicates, for example, a DMA request in I / O processing.
  • the management processor 510 writes the internal event to the LRP memory of the LRP that is the notification destination. For example, when the abnormal state is an abnormality of a path used for I / O processing of a SCSI command, the management processor 510 writes an internal event to the LRP memory of the SCSI processor. For example, when the abnormal state is an abnormality of a path used for the I / O processing of the NVMe command, the management processor 510 writes an internal event to the LRP memory of the NVMe processor.
  • the LRP writes an event of notification to other LRPs into the LRP memory of the LRP that is the notification destination.
  • the SCSI driver 114a When the SCSI driver 114a issues a SCSI command, the SCSI driver 114a writes the SCSI command to the server memory, and writes an event indicating the SCSI command to the server side register corresponding to the SCSI processor.
  • the NVMe driver 114b issues a SCSI command, the NVMe command is written to the server memory, and an event indicating the NVMe command is written to the server side register corresponding to the NVMe processor.
  • the SCSI processor repeatedly executes SCSI event processing for processing SCSI events.
  • the NVMe processor repeatedly executes NVMe event processing for processing NVMe events.
  • operations of the SCSI processor or the NVMe processor will be described as operations of the SCSI core function 511, the SCSI extended function 512, the NVMe core function 521, and the NVMe extended function 522.
  • the SCSI core function 511 executes an I / O process based on an SCSI protocol I / O command from the SCSI driver 114a. For example, the SCSI core function 511 converts the I / O command from the SCSI driver 114a into the protocol of the storage apparatus 300 and issues it to the storage apparatus 300 as a PCIe bus packet. Also, the SCSI core function 511 converts the response from the storage apparatus 300 into a SCSI protocol, and transmits it as a PCIe bus packet to the SCSI driver 114a.
  • the SCSI extension function 512 executes processing other than SCSI I / O processing, such as SCSI path failure processing.
  • the NVMe core function 521 executes an I / O process based on an NVMe protocol I / O command from the NVMe driver 114b. For example, the NVMe core function 521 converts the I / O command from the NVMe driver 114b into the protocol of the storage device 300 and issues it to the storage device 300 as a PCIe bus packet. Further, the NVMe core function 521 converts the response from the storage apparatus 300 into the NVMe protocol and transmits it as a PCIe bus packet to the NVMe driver 114b.
  • the NVMe extended function 522 executes processing other than NVMe I / O processing, such as NVMe path failure processing.
  • the monitoring function 531 monitors an abnormal state detected outside the I / O processing. For example, when an abnormal state is detected by the abnormality detection circuit 290, the monitoring function 531 issues an event to the LRP corresponding to the abnormal state. Depending on the event, either the SCSI extension function 512 or the NVMe extension function 522 executes the failure process.
  • the SCSI core function 511 executes failure processing.
  • the NVMe core function 521 executes failure processing.
  • the storage apparatus 300 extracts a SCSI command from the PCIe packet from the storage-side bus and executes processing according to the command.
  • the NVMe core function 521 converts one NVMe command into one SCSI command or a plurality of SCSI commands based on conversion information set in advance when converting an NVMe command into a SCSI command of a storage protocol.
  • the storage protocol may be the NVMe protocol.
  • the NVMe core function 521 transmits the NVMe command to the storage apparatus 300 as it is. Further, the NVMe protocol may be used as the storage protocol.
  • the SCSI driver 114a has a failure processing function.
  • the computer system uses a proprietary NVMe driver, it can define an NVMe command for RAS.
  • the NVMe driver 114b is a driver that complies with the NVMe standard (OS standard)
  • the NVMe driver 114b has a minimum function and receives information on a hardware failure detected by the monitoring function 531. It does not include the function to do.
  • the NVMe driver 114b supports only the NVMe core function 521, and the application 113 requests only the NVMe core function 521 from the NVMe driver 114b.
  • the NVMe extended function 522 cannot directly notify the hardware failure information to the NVMe driver 114 b. Therefore, the NVMe extended function 522 requests the SCSI extended function 512 to perform proxy for notification.
  • the server unit 130 can receive hardware failure information related to NVMe from the interface device 200.
  • the application 113 can execute a preset process such as resetting the NVMe function in accordance with this information to improve the reliability of the NVMe path.
  • the NVMe driver 114b uses an OS standard driver, it is not necessary to develop and provide a driver. Further, since the server unit 130 does not use the proprietary NVMe driver, the OS can reliably use the NVMe driver 114b, and can prevent confusion due to driver selection.
  • FIG. 4 shows NVMe event processing
  • the NVMe core function 521 determines whether there is an event waiting for processing addressed to the NVMe processor.
  • the NVMe core function 521 monitors the LRP memory, the server side register, and the storage side register of the NVMe processor.
  • the NVMe core function 521 acquires an event of the highest priority event factor set in advance.
  • the NVMe core function 521 determines whether or not the acquired event factor is the NVMe core function.
  • the NVMe core function 521 executes processing of the event. Thereafter, in S1110, the NVMe core function 521 determines whether or not the processing of the event has been completed. When it is determined in S1110 that the processing of the event has not been completed (NO), the NVMe core function 521 repeats S1110. When it is determined in S1110 that the processing of the event has been completed (YES), the NVMe core function 521 ends this flow.
  • the NVMe extended function 522 When it is determined in S1030 that the event factor is not the NVMe core function (NO), that is, when it is determined that the event factor is the NVMe extended function, in S1200, the NVMe extended function 522 performs alternative processing for the event in the SCSI extended function. Request to 512.
  • the NVMe processor writes an alternative process request event indicating an alternative process request to the LRP memory of the SCSI processor.
  • the NVMe extended function 522 determines whether or not there is a notification event of completion of the alternative process in the LRP memory of the NVMe processor. When it is determined in S1210 that there is no completion notification event (NO), the NVMe extended function 522 repeats S1210. If it is determined in S1210 that there is a completion notification event (YES), the NVMe extended function 522 ends this flow.
  • NVMe event processing may be performed by collecting accumulated events.
  • NVMe event processing events that cannot be processed by the NVMe driver 114b can be processed by the SCSI driver 114a. For example, information that cannot be notified from the interface device 200 to the NVMe driver 114b can be notified from the interface device 200 to the SCSI driver 114a.
  • the NVMe core function 521 can execute the processes of the NVMe core function 521 and the NVMe extended function 522 in descending order of priority.
  • the NVMe core function 521 can notify the NVMe driver 114b of an abnormality that has occurred in the I / O processing based on the NVMe command. Thereby, the NVMe driver 114b may cause the display device 140 to display information indicating abnormality. However, it is not possible to notify the NVMe driver 114b of hardware failure such as LRP failure or storage-side bus link disconnection (cable disconnection or disconnection) other than I / O processing.
  • the SCSI extended function 512 is substituted.
  • FIG. 5 shows SCSI event processing
  • the SCSI core function 511 determines whether there is an event waiting for processing directed to the SCSI processor.
  • the SCSI core function 511 monitors the LRP memory, server side register, and storage side register of the SCSI processor.
  • the SCSI core function 511 acquires the event of the highest priority event factor.
  • the SCSI core function 511 determines whether or not the acquired event factor is the SCSI core function.
  • the SCSI core function 511 executes processing of the event of the SCSI core function. Thereafter, in S2110, the SCSI core function 511 determines whether or not the processing of the event has been completed. If it is determined in S2110 that the processing of the event has not been completed (NO), the SCSI core function 511 repeats S2110. If it is determined in S2110 that the processing of the event has been completed (YES), the SCSI core function 511 ends this flow.
  • the SCSI extension function 512 determines whether or not the acquired event factor is the SCSI extension function.
  • the SCSI extended function 512 executes the event processing (first notification process) of the SCSI extended function. Thereafter, in S2210, the SCSI extended function 512 determines whether or not the processing of the event has been completed. If it is determined in S2210 that the processing of the event has not been completed (NO), the SCSI extension function 512 repeats S2210. If it is determined in S2210 that the processing of the event has been completed (YES), the SCSI extended function 512 ends this flow.
  • the SCSI extension function 512 determines that the event of the SCSI extension function in S2300.
  • the alternative process (second notification process) is executed.
  • the SCSI extension function 512 notifies the NVMe extension function 522 of a completion notification event indicating the completion of the substitute process in S2310, and ends this flow.
  • the SCSI processor writes a completion notification event to the LRP memory of the NVMe processor.
  • the SCSI event processing may be performed by collecting accumulated events.
  • the SCSI extension function 512 can cause the SCSI driver 114a to process an event that cannot be processed by the NVMe driver 114b by executing the alternative process requested by the NVMe extension function 522. For example, information that cannot be notified from the interface device 200 to the NVMe driver 114b can be notified from the interface device 200 to the SCSI driver 114a. Further, the SCSI core function 511 can execute processing of the SCSI core function 511, the SCSI extended function 512, and the NVMe extended function 522 in descending order of priority. Further, when a failure occurs in either the SCSI path or the NVMe path, the SCSI driver 114a can collectively process.
  • the SCSI driver 114a may stop both paths. Further, when a serious failure occurs in the NVMe path, the SCSI driver 114a may reset the NVMe path.
  • the SCSI core function 511 can notify the SCSI driver 114a of an abnormality that has occurred in the I / O processing based on the SCSI command.
  • the SCSI extension function 512 can notify the SCSI driver 114a of other hardware failures in the SCSI path and the NVMe path.
  • the SCSI core function 511 or the SCSI extension function 512 may notify the SCSI driver 114a of the address offset of the log stored in the I / F memory.
  • the SCSI driver 114a may acquire a log by issuing a SCSI command for requesting reading of the log from the I / F memory, and cause the display device 140 to display display information based on the log. Thereby, even when an abnormal state of the NVMe path occurs, the administrator can know information on the abnormal state and can know the cause.
  • the SCSI driver 114a calculates the log address by adding the reported address offset to the base address of the memory space allocated to the PCT function of the SCSI core function 511, and reads the log from the calculated address. May be.
  • the NVMe extension function 522 may process a unique function that is not supported by the NVMe core function 521 regarding the NVMe.
  • the server unit 130 may transmit setting information related to NVMe to the interface device 200 using the SCSI driver 114a.
  • the NVMe extended function 522 may request different alternative processing depending on whether a specific abnormality has occurred or when the number of occurrences of the specific abnormality is equal to or greater than the occurrence frequency threshold.
  • the substitution process transmits an error to the SCSI driver 114a when the occurrence count is less than the occurrence count threshold, and transmits a fatal error to the SCSI driver 114a when the occurrence count is equal to or greater than the occurrence count threshold.
  • the SCSI driver 114a issues a SCSI command including the occurrence frequency threshold as setting information to the interface device 200.
  • the NVMe processor needs the related information indicating the association between the NSID and the WWN in order to convert the NSID of the NVMe protocol and the WWN of the SCSI protocol.
  • the SCSI driver 114a issues a SCSI command including related information as setting information to the interface device 200.
  • the SCSI extension function 512 writes related information in the I / F memory.
  • the NVMe processor converts the NSID and the SCSI protocol WWN using the related information.
  • the SCSI core function 511 executes an I / O process (first I / O process) in S2100 of the SCSI event process described above.
  • the NVMe core function 521 executes I / O processing (second I / O processing) in S1100 of the above-described NVMe event processing.
  • FIG. 6 shows the first part of the I / O processing.
  • FIG. 7 shows the second part following the first part of the I / O process.
  • This sequence includes a server unit 130, a server-side bus control circuit (bus control circuit 250), an LRP in the interface device 200, a DMA core (XDMA) in the DMA controller 240 in the interface device 200, and a storage-side bus.
  • the operations of the control circuit (bus control circuit 260) and the controller 400 in the storage apparatus 300 are shown.
  • the driver 144 writes an I / O command on the server memory in response to a request from the application 113 of the server unit 130, so that the I / O processing is started.
  • the driver 144 secures a storage area in the server memory necessary for data transfer as a server-side storage area, creates a Scatter / Gather List (SGL) indicating the address of the server-side storage area, and stores the SGL in the server memory.
  • SGL Scatter / Gather List
  • the driver 144 further writes the write data to the server-side storage area.
  • the computer system When the application 113 issues a SCSI I / O command to the SCSI driver 114a, the computer system performs the following processes of S210 to S250.
  • the operation of the server unit 130 is the operation of the SCSI driver 114a
  • LRP is the SCSI processor.
  • the SCSI driver 114a writes an event including identification information of the I / O command to the server side register.
  • the server side bus control circuit notifies the SCSI processor of the event.
  • the SCSI processor detects an event of the SCSI core function 511 by SCSI event processing, and issues a command read request to the server-side bus control circuit based on the event.
  • the server-side bus control circuit reads the I / O command stored in the server memory based on the command read request and writes the I / O command to the I / F memory.
  • the server-side bus control circuit notifies the SCSI processor that the I / O command has been read.
  • the computer system When the application 113 issues an NVMe I / O command to the NVMe driver 114b, the computer system performs the following processes of S310 to S360.
  • the operation of the server unit 130 is the operation of the NVMe driver 114b
  • the LRP is the operation of the NVMe processor.
  • the NVMe processor executes the NVMe event process to refer to the server side register by polling and determine whether or not the identification information of the I / O command is written in the server side register. If it is determined that the I / O command identification information is not written in the server-side register, the NVMe processor waits.
  • the NVMe driver 114b writes the identification information of the I / O command to the server side register.
  • the server-side bus control circuit that detected the notification in S330 reads the I / O command stored in the server memory and writes the I / O command to the I / F memory.
  • the NVMe processor periodically refers to the server side register by polling to determine whether or not the identification information of the I / O command has been written. If it is determined that I / O command identification information has been written to the server-side register, the NVMe processor issues a command read request to the server-side bus control circuit in S350. When a plurality of NVMe processors are assigned to the NVMe function, the NVMe processor that detects the identification information of the I / O command by polling is in charge of the subsequent processing. In S360, the server-side bus control circuit notifies the NVMe processor that the I / O command has been read. In addition, notification like S220 may be performed instead of polling of S340, and polling and notification may be used together.
  • the LRP converts the read I / O command into an I / O request using a storage protocol, and writes the I / O request to the I / F memory.
  • the storage protocol may be a standardized predetermined protocol such as SCSI or NVMe, or may be a proprietary protocol.
  • the storage-side bus control circuit writes the I / O request to the storage memory.
  • the controller 400 reads and analyzes the I / O request in the storage memory, and secures a storage area in the storage memory necessary for data transfer as a storage-side storage area.
  • the controller 400 creates an SGL indicating the address of the storage-side storage area, and writes the SGL into the storage memory.
  • the controller 400 reads the read data from the storage device 320 and writes the read data to the storage side storage area.
  • the controller 400 In S520, the controller 400 generates a DMA request for requesting data transfer between the server memory and the storage memory, and writes the DMA request to the storage memory. In S530, the controller 400 writes the identification information of the DMA request to the storage-side register in the storage-side bus control circuit in the interface device 200. In S540, the storage-side bus control circuit reads the DMA request stored in the storage memory based on the identification information, and writes the DMA request to the I / F memory. In S550, the storage-side bus control circuit notifies the LRP of the DMA request.
  • the LRP writes an SGL read request for requesting reading of the SGL in the server memory to the I / F memory.
  • the LRP writes an SGL read request for requesting reading of the SGL in the storage memory to the I / F memory.
  • the server-side bus control circuit reads the SGL stored in the server memory, and writes the read SGL into the I / F memory. In S640, the server-side bus control circuit notifies the LRP that the SGL has been read from the server memory. In S650, the storage-side bus control circuit reads the SGL stored in the storage memory and writes the read SGL to the I / F memory. In S660, the storage-side bus control circuit notifies the LRP that the SGL has been read from the storage memory.
  • the LRP In S670, the LRP generates a request parameter for requesting DMA between the server-side storage area and the storage-side storage area based on the SGL read from the server memory and the SGL read from the storage memory. In S680, the LRP instructs the DMA controller 240 using the generated request parameter.
  • the DMA controller 240 executes DMA based on the request parameter.
  • the DMA controller 240 transfers the write data stored in the server-side storage area to the storage-side storage area.
  • the DMA controller 240 transfers the read data stored in the storage side storage area to the server side storage area.
  • the DMA controller 240 when the DMA controller 240 completes the DMA, it notifies the LRP of the completion of the DMA.
  • the LRP writes a DMA completion notification to the I / F memory as a response to the DMA request.
  • the storage-side bus control circuit writes the notification to the storage memory.
  • the controller 400 reads the notification stored in the storage memory, writes information indicating completion to the storage memory as a response to the I / O request, and writes identification information of the response to the storage-side register in the interface device 200. .
  • the storage-side bus control circuit reads the response stored in the storage memory based on the identification information and writes the response to the I / F memory.
  • the storage-side bus control circuit notifies the LRP of the response.
  • the LRP creates response parameters for the server unit 130 and the storage apparatus 300, and writes the response parameters to the I / F memory.
  • the LRP requests the server-side bus control circuit to notify the completion of response parameter creation.
  • the server-side bus control circuit writes the response parameter stored in the I / F memory to the server memory.
  • the server-side bus control circuit issues a PCIe interrupt to the server unit 130.
  • the driver 114 in the server unit 130 reads the response parameter stored in the server memory in response to the interrupt, and writes a notification of the reception of the response parameter in the server side register.
  • the LRP requests the storage side bus control circuit to notify the completion of response parameter creation.
  • the storage-side bus control circuit writes the response parameter stored in the I / F memory to the storage memory.
  • the storage-side bus control circuit writes a response parameter notification to the storage memory.
  • the controller 400 reads the response parameter stored in the storage memory, writes the reception of the response parameter to the storage side register, and ends this sequence.
  • the SCSI core function 511 can execute I / O processing based on the SCSI event processing, and the NVMe core function 521 executes I / O processing based on the NVMe event processing. be able to.
  • the interface device 200 converts the I / O command from the server unit 130 into an I / O request of the storage protocol, and issues the I / O request to the storage apparatus 300, so that the application 113 has two protocols. Can be used.
  • the server unit 130 and the storage apparatus 300 create SGL indicating the storage areas of the DMA transfer source and transfer destination, the interface device 200 can perform DMA between the server memory and the storage memory. .
  • the interface device 200 When the interface device 200 performs DMA, data can be transferred regardless of the protocol of the server unit 130 and the protocol of the storage apparatus 300. Further, the SCSI I / O processing and the NVMe I / O processing share the storage side bus, so that the bandwidth of the storage side bus can be used effectively.
  • the SCSI extension function 512 notifies the SCSI driver 114a of an abnormal state, a log address, and the like in the same manner as in S810 to S850.
  • FIG. 8 shows a modification of the software configuration of the server device 100.
  • the memory 270 stores the SCSI firmware 510 b instead of the SCSI firmware 510, stores the NVMe firmware 520 b instead of the NVMe firmware 520, and the monitoring firmware 530 b instead of the monitoring firmware 530.
  • the SCSI firmware 510b includes a SCSI core function 511 and does not include a SCSI extended function 512.
  • the NVMe firmware 520b includes the NVMe core function 521 and does not include the NVMe extension function 522.
  • the monitoring firmware 530b includes the monitoring function 531, the SCSI extension function 512, and the NVMe extension function 522.
  • the SCSI firmware 510b is executed by at least one processor (SCSI processor).
  • the NVMe firmware 520b is executed by at least one processor (NVMe processor).
  • the monitoring firmware 530b is executed by at least one processor (LRP or management processor).
  • the SCSI core function 511, the SCSI extended function 512, the NVMe core function 521, the NVMe extended function 522, and the monitoring function 531 are the same as those in the above-described embodiment.
  • a processor different from the SCSI processor and the NVMe processor executes the SCSI extended function 512 and the NVMe extended function 522, thereby reducing the performance of the I / O processing by the SCSI extended function 512 and the NVMe extended function 522. Can be prevented.
  • the SCSI protocol function for RAS is not standardized by the NVMe protocol.
  • the computer system of the embodiment provides a specific function of the second protocol.
  • the user can use a function equivalent to the first protocol using the second protocol.
  • the user can easily shift from the first protocol to the second protocol.
  • the storage device need not be changed by processing the specific function of the second protocol by the interface device, the cost of adding the specific function to the second protocol can be suppressed.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

第一プロトコルの機能に対する第二プロトコルの機能の不足を補う。 インタフェースデバイスは、第一I/O処理に用いられるパスの異常である第一異常状態を検出した場合、第一通知処理として、第一プロトコルを用いて、第一異常状態を示す第一通知をサーバプロセッサへ送信し、サーバプロセッサは、第一ドライバに従って、第一通知を受信する。インタフェースデバイスは、第二I/O処理に用いられるパスの異常である第二異常状態を検出した場合、第二通知処理として、第一プロトコルを用いて、第二異常状態を示す第二通知をサーバプロセッサへ送信し、サーバプロセッサは、第一ドライバに従って、第二通知を受信する。

Description

計算機システム
 本発明は、計算機システムに関する。
 計算機システムにおける複数のサーバ装置および複数のストレージ装置は、各装置に要求される性能や機能に応じて適切なネットワーク構成を実現するために、ホストバスアダプタ(HBA)等のプロトコル処理装置を介してネットワーク接続される。プロトコル処理装置は、サーバ装置又はストレージ装置側に1つのインタフェースデバイスと、ネットワーク側に1つ以上の通信ポートとを含む。プロトコル処理装置は、例えばSCSIコマンドとFibreChannelフレームとの間の相互変換を行う。
 プロトコル処理装置はさらに、出荷前に設定された特定のプロトコルのみ処理するものと、プロトコル処理装置に格納されたファームウェアを更新することで任意のプロトコルを処理するものとに分類される。前者は、相対的に低コストである。後者は、出荷後の不具合修正や機能拡張を可能にする。
 単一のプロトコル処理装置が複数のプロトコルを同時に処理する場合、プロトコル処理装置では、プロトコルごとに互いに独立したプロトコル処理ファームウェアが動作し、サーバ装置では、OS配下で当該ファームウェアと通信すると共に必要な機能をアプリケーションに対して提供するプロトコル処理ドライバが動作する。そのため、プロトコル処理ファームウェアとプロトコル処理ドライバは、機能や付加価値に応じてプロトコルごとに適切に更新されなければならない。しかし、開発工数不足や改変困難などの理由により、複数のプロトコルの何れかのプロトコルのプロトコル処理ドライバを適切に更新できない場合がある。
 また、プロトコル処理装置により処理される複数のプロトコルのうち、第一プロトコルの規格に定められている一部の機能が、第二プロトコルの規格に含まれない場合がある。例えば、特許文献1には、NVM Express(NVMe)プロトコルが記載されている。また、例えば、特許文献2には、SCSIプロトコルとNVMeプロトコルの機能の差異により、NVMeコマンドにマッピングできないSCSIコマンドが存在することが記載されている。
"NVM Express revision 1.2 specification," http://nvmexpress.org/wp-content/uploads/NVM_Express_1_2_Gold_20141209.pdf "NVM Express: SCSI Translation Reference," http://www.nvmexpress.org/wp-content/uploads/NVM-Express-SCSI-Translation-Reference-1_1-Gold.pdf
 ドライバの更新の困難、規格の違い等により、複数のプロトコルのうち、第一プロトコルの機能に比べて第二プロトコルの機能が不足する場合がある。
 上記課題を解決するために、本発明の一態様である計算機システムは、記憶デバイスと、前記記憶デバイスに接続されるストレージコントローラと、ストレージ側バスを介して前記ストレージコントローラに接続されるインタフェースデバイスと、サーバ側バスを介して前記インタフェースデバイスに接続されるサーバ計算機と、を備える。前記サーバ計算機は、サーバメモリと、サーバメモリに接続されるサーバプロセッサと、を含む。前記サーバメモリは、第一プロトコルに基づく第一ドライバと、第二プロトコルに基づく第二ドライバとを記憶する。前記サーバプロセッサは、前記第一ドライバに従って、前記第一プロトコルに基づく第一I/Oコマンドを前記インタフェースデバイスへ送信する処理と、前記インタフェースデバイスから前記第一I/Oコマンドの応答を受信する処理と、前記インタフェースデバイスから通知を受信する処理とを実行し、前記サーバプロセッサは、前記第二ドライバに従って、前記第二プロトコルに基づく第二I/Oコマンドを前記インタフェースデバイスへ送信し、前記インタフェースデバイスから前記第二I/Oコマンドの応答を受信し、前記インタフェースデバイスは、第一I/O処理として、前記第一I/Oコマンドに応じてI/Oを実行し、第一I/Oコマンドの応答を前記サーバプロセッサへ送信し、前記インタフェースデバイスは、第二I/O処理として、前記第二I/Oコマンドに応じてI/Oを実行し、第二I/Oコマンドの応答を前記サーバプロセッサへ送信し、前記インタフェースデバイスは、前記第一I/O処理に用いられるパスの異常である第一異常状態を検出した場合、第一通知処理として、前記第一プロトコルを用いて、前記第一異常状態を示す第一通知を前記サーバプロセッサへ送信し、前記サーバプロセッサは、前記第一ドライバに従って、前記第一通知を受信し、前記インタフェースデバイスは、前記第二I/O処理に用いられるパスの異常である第二異常状態を検出した場合、第二通知処理として、前記第一プロトコルを用いて、前記第二異常状態を示す第二通知を前記サーバプロセッサへ送信し、前記サーバプロセッサは、前記第一ドライバに従って、前記第二通知を受信する。
 第一プロトコルの機能に対する第二プロトコルの機能の不足を補うことができる。
実施例の計算機システムのハードウェア構成を示す。 インタフェースデバイス200のハードウェア構成を示す。 サーバ装置100のソフトウェア構成を示す。 NVMeイベント処理を示す。 SCSIイベント処理を示す。 I/O処理の第一部分を示す。 I/O処理の第一部分に続く第二部分を示す。 サーバ装置100のソフトウェア構成の変形例を示す。
 以下、図面を参照して本発明の実施形態を説明する。
 以下の説明では、「×××テーブル」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「×××テーブル」を「×××情報」と呼ぶことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
 また、以下の説明では、要素の識別情報として、IDが使用されるが、それに代えて又は加えて他種の識別情報が使用されてもよい。
 また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号又は参照符号における共通番号を使用し、同種の要素を区別して説明する場合は、その要素の参照符号を使用又は参照符号に代えてその要素に割り振られたIDを使用することがある。
 また、以下の説明では、I/O(Input/Output)要求は、ライト要求又はリード要求であり、アクセス要求と呼ばれてもよい。
 また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理及び機能を、適宜に記憶資源(例えばメモリ)及び/又はインターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理又はシステムとしてもよい。また、プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサ(例えばCPU)と記憶資源を含み、記憶資源はさらに配布プログラムと配布対象であるプログラムとを記憶してよい。そして、プログラム配布サーバのプロセッサが配布プログラムを実行することで、プログラム配布サーバのプロセッサは配布対象のプログラムを他の計算機に配布してよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
 また、以下の説明では、管理システムは、一以上の計算機で構成されてよい。具体的には、例えば、管理計算機が情報を表示する場合(具体的には、例えば、管理計算機が自分の表示デバイスに情報を表示する、或いは、管理計算機が表示用情報を遠隔の表示用計算機に送信する場合)、管理計算機が管理システムである。また、例えば、複数の計算機で管理計算機と同等の機能が実現されている場合は、当該複数の計算機(表示を表示用計算機が行う場合は表示用計算機を含んでよい)が、管理システムである。管理計算機(例えば管理システム)は、表示システムを含むI/Oシステムに接続されたインタフェースデバイスと、記憶資源(例えばメモリ)と、インタフェースデバイス及び記憶資源に接続されたプロセッサとを有してよい。表示システムは、管理計算機が有する表示デバイスでもよいし、管理計算機に接続された表示用計算機でもよい。I/Oシステムは、管理計算機が有するI/Oデバイス(例えばキーボード及びポインティングデバイス、タッチパネル)でもよいし、管理計算機に接続された表示用計算機又は別の計算機でもよい。管理計算機が「表示用情報を表示する」ことは、表示システムに表示用情報を表示することであり、これは、管理計算機が有する表示デバイスに表示用情報を表示することであってもよいし、管理計算機が表示用計算機に表示用情報を送信することであってもよい(後者の場合は表示用計算機によって表示用情報が表示される)。また、管理計算機が情報を入出力するとは、管理計算機が有するI/Oデバイスとの間で情報の入出力を行うことであってもよいし、管理計算機に接続された遠隔の計算機(例えば表示用計算機)との間で情報の入出力を行うことであってもよい。情報の出力は、情報の表示であってもよい。
 以下、実施例の計算機システムの構成について説明する。
 図1は、実施例の計算機システムのハードウェア構成を示す。
 計算機システムは、サーバ装置100と、ストレージ装置300とを含む。サーバ装置100は、サーバユニット(サーバ計算機)130と、インタフェースデバイス200とを含む。サーバユニット130は、メモリ110と、CPU120とを含む。ストレージ装置300は、複数のコントローラ(CTL)400と、複数の記憶デバイス320とを含む。複数の記憶デバイス320は、フラッシュメモリを含む。なお、複数の記憶デバイスは、HDDを含んでもよい。本実施例のストレージ装置300には、2個のコントローラ400が含まれ、夫々コントローラ#0、#1と呼ばれる。
 サーバユニット130において、メモリ110は、サーバユニット130の処理のためのプログラム及びデータを格納する。CPU120は、内部バスを介してメモリ110に接続され、メモリ110に格納されたプログラムに従ってサーバユニット130の処理を実行する。
 ストレージ装置300において、コントローラ400は、インタフェースデバイス200に接続され、インタフェースデバイス200からのI/Oリクエストに応じて処理を行う。コントローラ400は、メモリ410と、CPU420と、ドライブインタフェース(I/F)430とを含む。メモリ410は、コントローラ400の処理のためのプログラム及びデータを格納する。CPU420は、内部バスを介してメモリ410に接続され、メモリ410に格納されたプログラムに従ってコントローラ400の処理を実行する。ドライブインタフェース430は、CPU420及び記憶デバイス320に接続され、コントローラ400と記憶デバイス320の間の通信を制御する。記憶デバイス320は、データを格納し、コントローラ400に接続され、コントローラ400からアクセスされる。
 インタフェースデバイス200は、サーバ側バスを介してCPU120に接続され、ストレージ側バスを介してストレージ装置300に接続され、サーバユニット130及びストレージ装置300の間の通信を制御する。本実施例におけるサーバ側バス及びストレージ側バスは、PCIeバスである。本実施例におけるインタフェースデバイス200は、2本のストレージ側バスを介して2個のコントローラ400に夫々接続されている。
 例えば、メモリ110及びCPU120は、サーバユニット130のマザーボード(サーバブレード)上に配置され、インタフェースデバイス200は、サーバユニット130上のPCIeバス・スロットへ挿入される基板(メザニンカード、アドオンカード)である。これにより、サーバ側バスの切断の恐れを少なくすることができると共に、インタフェースデバイス200の障害時の交換を容易にする。ストレージ側バスは、PCIeバス・ケーブルであってもよいし、基板であってもよい。また、インタフェースデバイス200は、サーバ装置100の外部に位置し、サーバユニット130のPCIeバス・スロットに接続されたPCIeバス・ケーブルを介して接続されてもよい。
 なお、計算機システムは、複数のサーバユニット130を含んでもよい。この場合、複数のサーバユニット130は、ストレージ装置300の記憶デバイス320を共有してもよい。また、ストレージ装置300は、一つのコントローラ400を含んでもよいし、三つ以上のコントローラ400を含んでもよい。また、計算機システムは、表示装置140を含んでもよい。表示装置140は、サーバ装置100に通信ネットワークを介して接続される管理計算機であってもよい。
 サーバ側バスは、サーバプロトコルの通信を行う。サーバプロトコルは、第一プロトコル(第一インタフェース規格)と第二プロトコル(第二インタフェース規格)を含む。サーバユニット130は、第一プロトコルのドライバである第一ドライバと、第二プロトコルのドライバである第二ドライバとを実行する。第二ドライバは、第一ドライバの機能の一部を含んでいない。第一プロトコルは例えばSCSIプロトコルであり、第二プロトコルは例えばNVMeプロトコルである。
 ストレージ側バスは、ストレージプロトコルの通信を行う。ストレージプロトコルは例えば、SCSIプロトコルである。
 内部バス、サーバ側バス、ストレージ側バスの夫々は、例えば、PCIeバスである。サーバユニット130とインタフェースデバイス200は、複数のサーバ側バスを介して接続されていてもよい。ストレージ側バスは、PCIeスイッチ等を介して複数のコントローラ400に接続されていてもよい。
 図2は、インタフェースデバイス200のハードウェア構成を示す。
 インタフェースデバイス200は、I/Oプロセッサ230と、DMA(Direct Memory Access)コントローラ240と、メモリ270と、バス制御回路250、260と、異常検知回路290と、管理プロセッサ510とを含む。これらの要素は、内部バスを介して接続されている。インタフェースデバイス200は更に、1本のサーバ側バスに接続される1個のサーバ側ポートと、2本のストレージ側バスに夫々接続される2個のストレージ側ポートとを含む。
 メモリ270は、I/Oプロセッサ230及び管理プロセッサ510により用いられるデータを格納する。メモリ270は更に、インタフェースデバイス200内部の通信に用いられる内部通信用バッファを含む。内部通信用バッファには、インタフェースデバイス200内部で発生したイベント等が書き込まれる。
 I/Oプロセッサ230は、複数のプロセッサ(LRP#0~#3)を含む。なお、プロセッサは、プロセッサコアであってもよい。メモリ270は、インタフェースデバイス200の処理のためのファームウェア及びデータを格納する。I/Oプロセッサ230は、内部バスを介してメモリ270に接続され、メモリ270に格納されたファームウェアに従ってインタフェースデバイス200の処理を実行する。各LRPには、LRPメモリが接続されている。LRPメモリは、対応するLRPのファームウェアや、そのLRP宛のイベントや、そのLRPの異常状態を示すイベント等を格納する。LRPは、内部の異常状態を検知すると、その異常状態を示すイベントをLRPメモリへ書き込む。なお、このイベントは、LRPメモリの代わりにLRP内のレジスタへ書き込まれてもよい。
 バス制御回路250は、サーバ側バスを介してサーバユニット130に接続されている。バス制御回路250は、サーバユニット130によりアクセスされるサーバ側レジスタと、サーバ側レジスタ及びメモリ270を制御する制御回路とを含む。サーバ側レジスタは、CPU120により用いられるアドレス空間におけるMemory Mapped Input/Output(MMIO)空間に割り当てられている。例えば、サーバユニット130は、サーバユニット130内のメモリ110へコマンドを書き込み、そのコマンドの識別情報を含むイベントをサーバ側レジスタへ書き込む。
 バス制御回路260は、ストレージ側バスを介してストレージ装置300のコントローラ400のMP420に接続される。バス制御回路260は、コントローラ400によりアクセスされるストレージ側レジスタと、ストレージ側レジスタ及びメモリ270を制御する制御回路とを含む。例えば、コントローラ400は、インタフェースデバイス200への要求をメモリ410へ書き込み、その要求の識別情報を含むイベントをストレージ側レジスタへ書き込む。
 異常検知回路290は、予め許可された範囲外のアドレスがアクセスされたことや、サポートされていないコマンドを受信したこと、インタフェースデバイス200内の故障や、ストレージ側バスのリンクの切断等の、異常状態を検出する。異常検知回路290は、検知された異常状態を示すイベントを、メモリ270内の内部通信用バッファへ書き込む。
 管理プロセッサ510は、内部通信用バッファやLRPメモリ等を、ポーリングにより定期的に監視し、異常状態を示すイベントが検出された場合、異常イベントを示すログ(異常情報)をメモリ270へ書き込み、異常状態を示すイベントを、関連するLRPのLRPメモリへ書き込む。管理プロセッサ510は更に、サーバユニット130からのイベントを検出した場合、そのイベントを示すログをメモリ270へ書き込む。管理プロセッサ510がそれらのイベントを示すログを生成することにより、サーバユニット130は、異常状態の情報を取得することができる。
 なお、管理プロセッサ510が複数のプロセッサ又はプロセッサコアを含んでもよい。また、一つのプロセッサ内の複数のプロセッサコアがI/Oプロセッサ230と管理プロセッサ510であってもよい。
 LRPは、イベントに応じて処理を実行する。例えば、LRPは、サーバ側レジスタに書き込まれたイベントに基づいてI/O処理を実行する。ここで、LRPは、メモリ270に格納されたI/Oコマンドに基づくI/Oリクエストをストレージ装置300へ発行する。更にLRPは、サーバユニット130及びストレージ装置300からDMAのための情報を取得し、取得した情報に基づいてDMAの指示をDMAコントローラ240へ発行する。
 DMAコントローラ240は、LRPからの指示に基づいて、サーバユニット130内のメモリ110とストレージ装置300内のメモリ410との間でバースト転送を行う。例えば、DMAコントローラ240は、サーバユニット130からストレージ装置300へ、ライトデータを転送し、ストレージ装置300からサーバユニット130へ、リードデータを転送する。DMAコントローラ240は、複数のDMAコアを含む。
 サーバ側バスにおいては、サーバユニット130がRoot Complex(RC)であり、インタフェースデバイス200がEndpoint(EP)である。ストレージ側バスにおいては、コントローラ400がRCであり、インタフェースデバイス200がEPである。
 PCIeデバイスのための複数のファンクションが、インタフェースデバイス200に設定される。一つのPCIeデバイスは、複数のファンクションを持つことにより、複数のPCIeデバイスとして動作することができる。4個のLRPの夫々は、何れかのファンクションに割り当てられる。本実施例のファンクションは、SCSIプロトコルに従うSCSIファンクションと、NVMeプロトコルに従うNVMeファンクションとの何れかである。SCSIファンクションに割り当てられたLRPは、SCSIファームウェア510に従って処理を実行する。NVMeファンクションに割り当てられたLRPは、NVMeファームウェア520に従って処理を実行する。なお、一つのファンクションに割り当てられた複数のLRPの何れかが、I/Oコマンドを処理してもよい。以後、SCSIファームウェア510を実行するSCSIプロセッサと呼び、NVMeファームウェア520を実行するLRPをNVMeプロセッサと呼ぶ。SCSIプロセッサがSCSIコマンドに基づくI/O処理を実行し、NVMeプロセッサがNVMeコマンドに基づくI/O処理を実行することにより、I/O処理の性能を向上させることができる。
 LRPは、I/O処理においてサーバプロトコルとストレージプロトコルの変換を行う。例えば、NVMeプロセッサは、サーバプロトコルであるNVMeプロトコルのコマンドを、ストレージプロトコルであるSCSIプロトコルに変換してストレージ装置300へ送信し、ストレージ装置300から受信した応答をNVMeプロトコルの応答に変換してサーバユニット130へ送信する。NVMeプロセッサは、サーバユニット130からのNVMeコマンドを、1個又は複数のSCSIコマンドへ変換する。NVMeコマンドが複数のSCSIコマンドへ変換され、ストレージ装置300から当該複数のSCSIコマンドに夫々対応する複数の応答を受信した場合、NVMeプロセッサは、当該NVMeコマンドに対する応答をサーバユニット130へ送信する。
 この構成によれば、サーバユニット130は、複数のプロトコルを用いてストレージ装置300内のデータにアクセスすることができる。また、プロトコル毎のインタフェースデバイスを用いる場合に比べ、インタフェースデバイス200を複数のプロトコルで共用することにより、メモリ270、I/Oプロセッサ230、シリアルパラレル変換回路(SerDes)等を、複数のプロトコルで共用することができ、開発費や原価を低減することができる。
 本実施例の計算機システムは、従来のSCSIプロトコルに加えて、NVMeプロトコルを用いる。NVMeプロトコルは、複数のキューを持つため、同時に発行できるコマンド数を多くすることができる。ストレージ装置は、それらのコマンドを並列に処理することにより、帯域が広くすることができる。また、NVMeコマンドをSCSIコマンドに変換する場合、SCSIプロトコルとの親和性が高い。これにより、SCSIプロトコルをNVMeへ置き換えることが容易であると共に、IO性能を向上させることができる。
 以後、サーバユニット130内のCPU120をサーバプロセッサと呼び、ストレージ装置300のコントローラ400をストレージコントローラと呼ぶ。また、サーバユニット130内のサーバメモリと呼び、ストレージコントローラ内のメモリ410をストレージメモリと呼び、インタフェースデバイス200内のメモリ270をI/Fメモリと呼ぶ。また、サーバ側バスに接続されるバス制御回路250をサーバ側バス制御回路と呼び、ストレージ側バスに接続されるバス制御回路260をストレージ側バス制御回路と呼ぶ。
 なお、計算機システム内の各部やインタフェースデバイス200内の各部の数は、本実施例における数に限られない。
 図3は、サーバ装置100のソフトウェア構成を示す。
 サーバメモリは、プログラムとして、OS112と、アプリケーション113と、複数のドライバ114(デバイスドライバ)とを格納する。
 アプリケーション113は、ストレージ装置300のI/Oの要求をドライバ114へ発行する。OS112は、サーバユニット130の基本的な機能を提供する。
 複数のドライバ114は、SCSIプロトコルに従ってインタフェースデバイス200に対する通信を行うSCSIドライバ114aと、NVMe規格に従ってインタフェースデバイス200に対する通信を行うNVMeドライバ114bとを含む。例えば、SCSIドライバ114aとして、OS112に含まれないプロプライエタリ・ソフトウェアを用いることにより、SCSIドライバ114aは、NVMeプロトコルに関する拡張機能を含むことができる。これにより、サーバユニット130は、NVMeドライバ114bとして、OS112に含まれる標準ドライバを用いることができる。ドライバ114は、アプリケーション113からの要求に基づいて、対応するプロトコルを用いるコマンドをPCIeバスのパケットとしてインタフェースデバイス200へ発行する。
 SCSIドライバ114aは、インタフェースデバイス200をSCSIデバイスと見なす。NVMeドライバ114bは、インタフェースデバイス200をNVMeデバイスと見なす。
 I/Fメモリは、SCSIファームウェア510と、NVMeファームウェア520と、監視ファームウェア530とを格納する。SCSIファームウェア510は、少なくとも一つのプロセッサ(SCSIプロセッサ)により実行される。NVMeファームウェア520は、少なくとも一つのプロセッサ(NVMeプロセッサ)により実行される。監視ファームウェア530は、少なくとも一つのプロセッサ(管理プロセッサ510)により実行される。SCSIファームウェア510は、SCSIコア機能511と、SCSI拡張機能512とを含む。NVMeファームウェア520は、NVMeコア機能521と、NVMe拡張機能522とを含む。監視ファームウェア530は、監視機能531を含む。
 LRPは、イベントに応じて処理を実行する。イベントは、イベント要因を示す。イベント要因は、優先順位が高い順に、インタフェースデバイス200内部からLRPへ通知される内部イベントと、ストレージコントローラからのストレージイベントと、サーバプロセッサからLRPへ通知されるサーバイベントとの何れかを示す。内部イベントは例えば、インタフェースデバイス200内のハードウェア障害やストレージ側バスの切断等の異常状態を示す。ハードウェア障害は例えば、LRPの故障である。また、内部イベントは例えば、他のLRPからの要求又は応答を示す。サーバイベントは例えば、I/Oコマンドの発行を示す。サーバイベントは例えば、SCSIコマンドの発行を示すSCSIイベントである。また、サーバイベントは例えば、NVMeコマンドの発行を示すNVMeイベントである。ストレージイベントは例えば、I/O処理におけるDMAリクエストを示す。
 管理プロセッサ510は、内部イベントを、通知先のLRPのLRPメモリへ書き込む。例えば、異常状態がSCSIコマンドのI/O処理に用いられるパスの異常である場合、管理プロセッサ510は、内部イベントをSCSIプロセッサのLRPメモリへ書き込む。また、例えば、異常状態がNVMeコマンドのI/O処理に用いられるパスの異常である場合、管理プロセッサ510は、内部イベントをNVMeプロセッサのLRPメモリへ書き込む。
 LRPは、他のLRPへの通知のイベントを通知先のLRPのLRPメモリへ書き込む。
 SCSIドライバ114aは、SCSIコマンドを発行すると、そのSCSIコマンドをサーバメモリへ書き込み、そのSCSIコマンドを示すイベントを、SCSIプロセッサに対応するサーバ側レジスタへ書き込む。NVMeドライバ114bは、SCSIコマンドを発行すると、そのNVMeコマンドをサーバメモリへ書き込み、そのNVMeコマンドを示すイベントを、NVMeプロセッサに対応するサーバ側レジスタへ書き込む。
 SCSIプロセッサは、SCSIイベントを処理するSCSIイベント処理を、繰り返し実行する。NVMeプロセッサは、NVMeイベントを処理するNVMeイベント処理を、繰り返し実行する。以後、SCSIプロセッサ又はNVMeプロセッサの動作を、SCSIコア機能511、SCSI拡張機能512、NVMeコア機能521、NVMe拡張機能522の動作として説明する。
 SCSIコア機能511は、SCSIドライバ114aからのSCSIプロトコルのI/Oコマンドに基づくI/O処理を実行する。例えば、SCSIコア機能511は、SCSIドライバ114aからのI/Oコマンドを、ストレージ装置300のプロトコルに変換し、PCIeバスのパケットとしてストレージ装置300へ発行する。また、SCSIコア機能511は、ストレージ装置300からの応答を、SCSIプロトコルに変換し、PCIeバスのパケットとしてSCSIドライバ114aへ送信する。
 SCSI拡張機能512は、SCSIパスの障害処理等、SCSIに関するI/O処理以外の処理を実行する。
 NVMeコア機能521は、NVMeドライバ114bからのNVMeプロトコルのI/Oコマンドに基づくI/O処理を実行する。例えば、NVMeコア機能521は、NVMeドライバ114bからのI/Oコマンドを、ストレージ装置300のプロトコルに変換し、PCIeバスのパケットとしてストレージ装置300へ発行する。また、NVMeコア機能521は、ストレージ装置300からの応答を、NVMeプロトコルに変換し、PCIeバスのパケットとしてNVMeドライバ114bへ送信する。
 NVMe拡張機能522は、NVMeパスの障害処理等、NVMeに関するI/O処理以外の処理を実行する。
 監視機能531は、I/O処理外で検出された異常状態を監視する。例えば、監視機能531は、異常検知回路290により異常状態が検出された場合、異常状態に対応するLRPに対してイベントを発行する。イベントに応じて、SCSI拡張機能512及びNVMe拡張機能522の何れかが障害処理を実行する。
 SCSIコマンドに基づくI/O処理で例外が発生した場合、SCSIコア機能511が障害処理を実行する。NVMeコマンドに基づくI/O処理で例外が発生した場合、NVMeコア機能521が障害処理を実行する。
 本実施例において、ストレージ装置300は、ストレージ側バスからのPCIeのパケットからSCSIコマンドを取り出し、そのコマンドに応じた処理を実行する。NVMeコア機能521は、NVMeコマンドをストレージプロトコルのSCSIコマンドへ変換する場合、予め設定された変換情報に基づいて、一つのNVMeコマンドを、一つのSCSIコマンド又は複数のSCSIコマンドへ変換する。なお、ストレージプロトコルがNVMeプロトコルであってもよい。この場合、NVMeコア機能521は、NVMeコマンドのままストレージ装置300へ送信する。また、ストレージプロトコルとしてNVMeプロトコルが用いられてもよい。
 計算機システムのRAS(Reliability Availability and Serviceability)のために、障害処理は、ハードウェア障害やストレージ側バスの切断等が発生し、信頼性が低下した状態をサーバユニット130へ通知し、回復させる必要がある。SCSIドライバ114aは、障害処理の機能を有する。計算機システムは、プロプライエタリのNVMeドライバを用いる場合、RASのためのNVMeコマンドを定義することができる。しかし、NVMeドライバ114bがNVMe規格に準拠した(OS標準の)ドライバである場合、NVMeドライバ114bは、最低限の機能を有しており、監視機能531により検出されたハードウェア障害の情報を受信する機能を含まない。この場合、NVMeドライバ114bは、NVMeコア機能521だけをサポートし、アプリケーション113は、NVMeドライバ114bに対して、NVMeコア機能521だけを要求する。例えば、監視機能531によりNVMeに関するハードウェア障害が検出された場合、NVMe拡張機能522は、ハードウェア障害の情報を直接、NVMeドライバ114bへ通知することができない。そこで、NVMe拡張機能522は、通知の代行をSCSI拡張機能512に依頼する。これにより、サーバユニット130は、NVMeに関するハードウェア障害の情報をインタフェースデバイス200から受信することができる。例えば、アプリケーション113は、この情報に応じて、NVMeファンクションのリセット等、予め設定された処理を実行し、NVMeパスの信頼性を向上させることができる。また、NVMeドライバ114bがOS標準のドライバを用いることにより、ドライバの開発及び提供の必要がない。また、サーバユニット130がプロプライエタリのNVMeドライバを用いないことにより、OSは、確実にNVMeドライバ114bを用いることができ、ドライバ選択による混乱を防ぐことができる。
 以下、計算機システムの動作について説明する。
 図4は、NVMeイベント処理を示す。
 S1010においてNVMeコア機能521は、NVMeプロセッサ宛の、処理待ちのイベントがあるか否かを判定する。ここで、NVMeコア機能521は、NVMeプロセッサのLRPメモリ、サーバ側レジスタ、ストレージ側レジスタを監視する。
 S1010において処理待ちのイベントがないと判定された場合(NO)、NVMeコア機能521は、このフローを終了する。
 S1010において処理待ちのイベントがあると判定された場合(YES)、S1020においてNVMeコア機能521は、予め設定された最優先のイベント要因のイベントを取得する。
 S1030においてNVMeコア機能521は、取得されたイベント要因がNVMeコア機能であるか否かを判定する。
 S1030においてイベント要因がNVMeコア機能であると判定された場合(YES)、S1100においてNVMeコア機能521は、当該イベントの処理を実行する。その後、S1110においてNVMeコア機能521は、当該イベントの処理が完了したか否かを判定する。S1110において当該イベントの処理が完了していないと判定された場合(NO)、NVMeコア機能521は、S1110を繰り返す。S1110において当該イベントの処理が完了したと判定された場合(YES)、NVMeコア機能521は、このフローを終了する。
 S1030においてイベント要因がNVMeコア機能でないと判定された場合(NO)、即ちイベント要因がNVMe拡張機能であると判定された場合、S1200においてNVMe拡張機能522は、当該イベントの代替処理をSCSI拡張機能512へ要求する。ここで、NVMeプロセッサは、代替処理要求を示す代替処理要求イベントを、SCSIプロセッサのLRPメモリへ書き込む。その後、S1210においてNVMe拡張機能522は、NVMeプロセッサのLRPメモリに当該代替処理の完了通知イベントがあるか否かを判定する。S1210において完了通知イベントがないと判定された場合(NO)、NVMe拡張機能522は、S1210を繰り返す。S1210において完了通知イベントがあると判定された場合(YES)、NVMe拡張機能522は、このフローを終了する。
 なお、NVMeイベント処理は、たまったイベントをまとめて処理してもよい。
 以上のNVMeイベント処理によれば、NVMeドライバ114bにより処理できないイベントを、SCSIドライバ114aに処理させることができる。例えば、インタフェースデバイス200からNVMeドライバ114bへ通知できない情報を、インタフェースデバイス200からSCSIドライバ114aへ通知することができる。また、NVMeコア機能521は、優先順位が高い順に、NVMeコア機能521、NVMe拡張機能522の処理を実行することができる。
 また、NVMeコア機能521は、NVMeコマンドに基づくI/O処理で発生した異常を、NVMeドライバ114bへ通知することができる。これにより、NVMeドライバ114bは、異常を示す情報を、表示装置140に表示させてもよい。しかし、I/O処理以外の、LRPの故障や、ストレージ側バスのリンクの切断(ケーブルが抜ける、断線する)等のハードウェア障害は、NVMeドライバ114bへ通知することができないため、その通知をSCSI拡張機能512に代行させる。
 図5は、SCSIイベント処理を示す。
 S2010においてSCSIコア機能511は、SCSIプロセッサ宛の、処理待ちのイベントがあるか否かを判定する。ここで、SCSIコア機能511は、SCSIプロセッサのLRPメモリ、サーバ側レジスタ、ストレージ側レジスタを監視する。
 S2010において処理待ちのイベントがない場合(NO)、SCSIコア機能511は、このフローを終了する。
 S2010において処理待ちのイベントがある場合(YES)、S2020においてSCSIコア機能511は、最優先のイベント要因のイベントを取得する。
 S2030においてSCSIコア機能511は、取得されたイベント要因がSCSIコア機能であるか否かを判定する。
 S2030においてイベント要因がSCSIコア機能であると判定された場合(YES)、S2100においてSCSIコア機能511は、SCSIコア機能の当該イベントの処理を実行する。その後、S2110においてSCSIコア機能511は、当該イベントの処理が完了したか否かを判定する。S2110において当該イベントの処理が完了していないと判定された場合(NO)、SCSIコア機能511は、S2110を繰り返す。S2110において当該イベントの処理が完了したと判定された場合(YES)、SCSIコア機能511は、このフローを終了する。
 S2030においてイベント要因がSCSIコア機能でないと判定された場合(NO)、S2040においてSCSI拡張機能512は、取得されたイベント要因がSCSI拡張機能であるか否かを判定する。
 S2040においてイベント要因がSCSI拡張機能であると判定された場合(NO)、S2200においてSCSI拡張機能512は、SCSI拡張機能の当該イベントの処理(第一通知処理)を実行する。その後、S2210においてSCSI拡張機能512は、当該イベントの処理が完了したか否かを判定する。S2210において当該イベントの処理が完了していないと判定された場合(NO)、SCSI拡張機能512は、S2210を繰り返す。S2210において当該イベントの処理が完了したと判定された場合(YES)、SCSI拡張機能512は、このフローを終了する。
 S2040においてイベント要因がSCSI拡張機能でないと判定された場合(NO)、即ちイベント要因がNVMe拡張機能522からの代替処理の要求である場合、S2300においてSCSI拡張機能512は、SCSI拡張機能の当該イベントの代替処理(第二通知処理)を実行する。代替処理の完了後、S2310においてSCSI拡張機能512は、代替処理の完了を示す完了通知イベントをNVMe拡張機能522へ通知し、このフローを終了する。ここで、SCSIプロセッサは、完了通知イベントを、NVMeプロセッサのLRPメモリへ書き込む。
 なお、SCSIイベント処理は、たまったイベントをまとめて処理してもよい。
 以上のSCSIイベント処理によれば、SCSI拡張機能512は、NVMe拡張機能522から要求された代替処理を実行することにより、NVMeドライバ114bにより処理できないイベントを、SCSIドライバ114aに処理させることができる。例えば、インタフェースデバイス200からNVMeドライバ114bへ通知できない情報を、インタフェースデバイス200からSCSIドライバ114aへ通知することができる。また、SCSIコア機能511は、優先順位が高い順に、SCSIコア機能511、SCSI拡張機能512、NVMe拡張機能522の処理を実行することができる。また、SCSIのパスとNVMeのパスの何れかで障害が起きた場合に、SCSIドライバ114aがまとめて処理することができる。
 例えば、SCSIのパスとNVMeのパスの何れかで重大な障害が起きた場合、SCSIドライバ114aは、両方のパスを止めてもよい。また、NVMeのパスで重大な障害が起きた場合、SCSIドライバ114aは、NVMeのパスのリセットを実行してもよい。
 また、SCSIコア機能511は、SCSIコマンドに基づくI/O処理で発生した異常を、SCSIドライバ114aへ通知することができる。SCSI拡張機能512は、それ以外の、SCSIパスやNVMeパスでのハードウェア障害を、SCSIドライバ114aへ通知することができる。
 また、SCSIコア機能511又はSCSI拡張機能512が、I/Fメモリ内に格納されたログのアドレスオフセットを、SCSIドライバ114aへ通知してもよい。この場合、SCSIドライバ114aは、I/Fメモリからログを読み出すことを要求するSCSIコマンドを発行することで、ログを取得し、ログに基づく表示情報を、表示装置140に表示させてもよい。これにより、NVMeパスの異常状態が発生した場合でも、管理者は、その異常状態の情報を知ることができ、原因を知ることができる。また、SCSIドライバ114aは、SCSIコア機能511のPCTファンクションに割り当てられたメモリ空間のベースアドレスに、通知されたアドレスオフセットに加えることにより、ログのアドレスを算出し、算出されたアドレスからログを読み出してもよい。
 NVMe拡張機能522は、NVMeに関して、NVMeコア機能521でサポートされていない独自の機能を処理してもよい。例えば、サーバユニット130は、SCSIドライバ114aを用いて、NVMeに関する設定情報をインタフェースデバイス200へ送信してもよい。例えば、NVMe拡張機能522は、特定の異常が発生した場合と、特定の異常の発生回数が発生回数閾値以上になった場合とで、異なる代替処理を要求してもよい。例えば、代替処理は、発生回数が発生回数閾値未満である場合、エラーをSCSIドライバ114aへ送信し、発生回数が発生回数閾値以上である場合、fatalエラーをSCSIドライバ114aへ送信する。この場合、SCSIドライバ114aは、設定情報として発生回数閾値を含むSCSIコマンドをインタフェースデバイス200へ発行する。また、例えば、NVMeプロセッサは、NVMeプロトコルのNSIDと、SCSIプロトコルのWWNの変換を行うため、NSIDとWWNの関連付けを示す関連情報を必要とする。この場合、SCSIドライバ114aは、設定情報として関連情報を含むSCSIコマンドをインタフェースデバイス200へ発行する。SCSI拡張機能512は、I/Fメモリに関連情報を書き込む。NVMeプロセッサは、関連情報を用いてNSIDと、SCSIプロトコルのWWNの変換を行う。
 次に、I/O処理について説明する。
 SCSIコア機能511は、前述のSCSIイベント処理のS2100によりI/O処理(第一I/O処理)を実行する。NVMeコア機能521は、前述のNVMeイベント処理のS1100によりI/O処理(第二I/O処理)を実行する。
 図6は、I/O処理の第一部分を示す。図7は、I/O処理の第一部分に続く第二部分を示す。
 このシーケンスは、サーバユニット130と、サーバ側バス制御回路(バス制御回路250)と、インタフェースデバイス200内のLRPと、インタフェースデバイス200内のDMAコントローラ240内のDMAコア(XDMA)と、ストレージ側バス制御回路(バス制御回路260)と、ストレージ装置300内のコントローラ400との動作を示す。
 S110においてサーバユニット130のアプリケーション113からの要求に応じてドライバ144がサーバメモリ上にI/Oコマンドを書き込むことにより、I/O処理が開始される。ここでドライバ144は、データ転送に必要なサーバメモリ内の記憶領域をサーバ側記憶領域として確保し、サーバ側記憶領域のアドレスを示すScatter/Gather List(SGL)を作成し、そのSGLをサーバメモリへ書き込む。I/Oコマンドがライトを要求する場合、ドライバ144は更に、ライトデータをサーバ側記憶領域に書き込む。
 その後の処理について、アプリケーション113がSCSIのI/Oコマンドを発行する場合と、NVMeのI/Oコマンドを発行する場合とに分けて説明する。
 アプリケーション113がSCSIドライバ114aに対してSCSIのI/Oコマンドを発行した場合、計算機システムは、以下のS210~S250の処理を行う。この場合のシーケンスにおいて、サーバユニット130の動作はSCSIドライバ114aの動作であり、LRPはSCSIプロセッサである。
 S210においてSCSIドライバ114aは、I/Oコマンドの識別情報を含むイベントを、サーバ側レジスタへ書き込む。S220においてサーバ側バス制御回路は、SCSIプロセッサへ、そのイベントを通知する。S230においてSCSIプロセッサは、SCSIイベント処理によりSCSIコア機能511のイベントを検出し、そのイベントに基づいて、コマンドリード要求をサーバ側バス制御回路へ発行する。S240においてサーバ側バス制御回路は、そのコマンドリード要求に基づいて、サーバメモリに格納されたI/Oコマンドを読み出し、そのI/OコマンドをI/Fメモリへ書き込む。S250においてサーバ側バス制御回路は、I/Oコマンドを読み出したことをSCSIプロセッサへ通知する。
 アプリケーション113がNVMeドライバ114bに対してNVMeのI/Oコマンドを発行した場合、計算機システムは、以下のS310~S360の処理を行う。この場合のシーケンスにおいて、サーバユニット130の動作はNVMeドライバ114bの動作であり、LRPはNVMeプロセッサの動作である。
 S310においてNVMeプロセッサは、NVMeイベント処理を実行することで、ポーリングによりサーバ側レジスタを参照し、サーバ側レジスタにI/Oコマンドの識別情報が書き込まれたか否かを判定している。サーバ側レジスタにI/Oコマンドの識別情報が書き込まれていないと判定された場合、NVMeプロセッサは、待機する。
 S320においてNVMeドライバ114bは、I/Oコマンドの識別情報をサーバ側レジスタへ書き込む。S330において通知を検出したサーバ側バス制御回路は、サーバメモリに格納されたI/Oコマンドを読み出し、そのI/OコマンドをI/Fメモリへ書き込む。
 S340においてNVMeプロセッサは、ポーリングにより定期的にサーバ側レジスタを参照し、I/Oコマンドの識別情報が書き込まれたか否かを判定する。サーバ側レジスタにI/Oコマンドの識別情報が書き込まれたと判定された場合、S350においてNVMeプロセッサは、コマンドリード要求をサーバ側バス制御回路へ発行する。NVMeファンクションに複数のNVMeプロセッサが割り当てられている場合、ポーリングによりI/Oコマンドの識別情報を検出したNVMeプロセッサが、以後の処理を担当する。S360においてサーバ側バス制御回路は、I/Oコマンドを読み出したことをNVMeプロセッサへ通知する。なお、S340のポーリングの代わりにS220のような通知が行われてもよく、ポーリングと通知が併用されてもよい。
 S250又はS360の後、S410においてLRPは、読み出されたI/Oコマンドを、ストレージプロトコルを用いたI/Oリクエストに変換し、そのI/OリクエストをI/Fメモリへ書き込む。ストレージプロトコルは、SCSIやNVMe等、規格化された所定のプロトコルであってもよいし、プロプライエタリのプロトコルであってもよい。S420においてストレージ側バス制御回路は、そのI/Oリクエストをストレージメモリへ書き込む。
 S510においてコントローラ400は、ストレージメモリ内のI/Oリクエストを読み出して解析し、データ転送に必要なストレージメモリ内の記憶領域をストレージ側記憶領域として確保する。ここでコントローラ400は、ストレージ側記憶領域のアドレスを示すSGLを作成し、そのSGLをストレージメモリへ書き込む。I/Oリクエストがリードを要求する場合、コントローラ400は、記憶デバイス320からリードデータを読み出し、ストレージ側記憶領域へリードデータを書き込む。
 S520においてコントローラ400は、サーバメモリとストレージメモリとの間のデータ転送を要求するDMAリクエストを生成し、そのDMAリクエストをストレージメモリへ書き込む。S530においてコントローラ400は、そのDMAリクエストの識別情報を、インタフェースデバイス200内のストレージ側バス制御回路内のストレージ側レジスタへ書き込む。S540においてストレージ側バス制御回路は、その識別情報に基づいて、ストレージメモリに格納されたDMAリクエストを読み出し、そのDMAリクエストをI/Fメモリへ書き込む。S550においてストレージ側バス制御回路は、そのDMAリクエストをLRPへ通知する。
 S610においてLRPは、サーバメモリ内のSGLを読み出すことを要求するSGLリード要求をI/Fメモリへ書き込む。S620においてLRPは、ストレージメモリ内のSGLを読み出すことを要求するSGLリード要求をI/Fメモリへ書き込む。
 S630においてサーバ側バス制御回路は、サーバメモリに格納されたSGLを読み出し、読み出されたSGLをI/Fメモリへ書き込む。S640においてサーバ側バス制御回路は、サーバメモリからSGLを読み出したことをLRPへ通知する。S650においてストレージ側バス制御回路は、ストレージメモリに格納されたSGLを読み出し、読み出されたSGLをI/Fメモリへ書き込む。S660においてストレージ側バス制御回路は、ストレージメモリからSGLを読み出したことをLRPへ通知する。
 S670においてLRPは、サーバメモリから読み出されたSGLと、ストレージメモリから読み出されたSGLとに基づいて、サーバ側記憶領域とストレージ側記憶領域の間のDMAを要求する要求パラメータを生成する。S680においてLRPは、生成された要求パラメータを用いてDMAコントローラ240へDMAを指示する。
 S710においてDMAコントローラ240は、要求パラメータに基づいてDMAを実行する。I/Oコマンドがライトを要求する場合、DMAコントローラ240は、サーバ側記憶領域に格納されたライトデータを、ストレージ側記憶領域へ転送する。I/Oコマンドがリードを要求する場合、DMAコントローラ240は、ストレージ側記憶領域に格納されたリードデータを、サーバ側記憶領域へ転送する。
 S720においてDMAコントローラ240は、DMAを完了すると、DMAの完了をLRPへ通知する。S730においてLRPは、DMAリクエストの応答としてDMAの完了の通知をI/Fメモリへ書き込む。S740においてストレージ側バス制御回路は、その通知をストレージメモリへ書き込む。S750においてコントローラ400は、ストレージメモリに格納された通知を読み出し、完了を示す情報をI/Oリクエストに対する応答としてストレージメモリへ書き込み、その応答の識別情報を、インタフェースデバイス200内のストレージ側レジスタへ書き込む。S760においてストレージ側バス制御回路は、その識別情報に基づいて、ストレージメモリに格納された応答を読み出し、その応答をI/Fメモリへ書き込む。S770においてストレージ側バス制御回路は、その応答をLRPへ通知する。
 S810においてLRPは、サーバユニット130及びストレージ装置300への応答パラメータを作成し、応答パラメータをI/Fメモリへ書き込む。
 S820においてLRPは、応答パラメータの作成の完了の通知をサーバ側バス制御回路へ要求する。S830においてサーバ側バス制御回路は、I/Fメモリに格納された応答パラメータをサーバメモリへ書き込む。S840においてサーバ側バス制御回路は、サーバユニット130へPCIeの割込みを発行する。S850においてサーバユニット130内のドライバ114は、その割込みに応じて、サーバメモリに格納された応答パラメータを読み出し、応答パラメータの受信の通知をサーバ側レジスタへ書き込む。
 S920においてLRPは、応答パラメータの作成の完了の通知をストレージ側バス制御回路へ要求する。S930においてストレージ側バス制御回路は、I/Fメモリに格納された応答パラメータをストレージメモリへ書き込む。S940においてストレージ側バス制御回路は、ストレージメモリへ応答パラメータの通知を書き込む。S950においてコントローラ400は、その通知に応じて、ストレージメモリに格納された応答パラメータを読み出し、応答パラメータの受信をストレージ側レジスタへ書き込み、このシーケンスを終了する。
 以上のI/O処理によれば、SCSIイベント処理に基づいてSCSIコア機能511がI/O処理を実行することができ、NVMeイベント処理に基づいてNVMeコア機能521がI/O処理を実行することができる。また、インタフェースデバイス200がサーバユニット130からのI/OコマンドをストレージプロトコルのI/Oリクエストに変換し、そのI/Oリクエストをストレージ装置300へ発行することにより、アプリケーション113は、二つのプロトコルを用いることができる。また、サーバユニット130及びストレージ装置300が、DMAの転送元及び転送先の記憶領域を示すSGLを作成することにより、インタフェースデバイス200は、サーバメモリとストレージメモリとの間でDMAを行うことができる。インタフェースデバイス200がDMAを行うことにより、サーバユニット130のプロトコル及びストレージ装置300のプロトコルによらず、データを転送することができる。また、SCSIのI/O処理とNVMeのI/O処理がストレージ側バスを共用することにより、ストレージ側バスの帯域を有効に利用することができる。
 なお、前述のSCSIイベント処理のS2200とS2300の夫々においてSCSI拡張機能512は、S810~S850と同様にして、SCSIドライバ114aへ異常状態やログのアドレス等の通知を行う。
 図8は、サーバ装置100のソフトウェア構成の変形例を示す。
 前述の実施例のソフトウェア構成と比較すると、メモリ270は、SCSIファームウェア510の代わりにSCSIファームウェア510bを格納し、NVMeファームウェア520の代わりにNVMeファームウェア520bを格納し、監視ファームウェア530の代わりに監視ファームウェア530bを格納する。SCSIファームウェア510bは、SCSIコア機能511を含み、SCSI拡張機能512を含まない。NVMeファームウェア520bは、NVMeコア機能521を含み、NVMe拡張機能522を含まない、監視ファームウェア530bは、監視機能531とSCSI拡張機能512とNVMe拡張機能522とを含む。
 SCSIファームウェア510bは、少なくとも一つのプロセッサ(SCSIプロセッサ)により実行される。NVMeファームウェア520bは、少なくとも一つのプロセッサ(NVMeプロセッサ)により実行される。監視ファームウェア530bは、少なくとも一つのプロセッサ(LRP又は管理プロセッサ)により実行される。SCSIコア機能511、SCSI拡張機能512、NVMeコア機能521、NVMe拡張機能522、監視機能531は、前述の実施例と同様である。
 この変形例によれば、SCSIプロセッサ及びNVMeプロセッサと異なるプロセッサが、SCSI拡張機能512及びNVMe拡張機能522を実行することにより、SCSI拡張機能512及びNVMe拡張機能522によるI/O処理の性能低下を防ぐことができる。
 前述したように、RASのためのSCSIプロトコルの機能は、NVMeプロトコルで規格化されていない。このように第一プロトコルに含まれる特定機能が、第二プロトコルに含まれていない場合、計算機システムが第二プロトコルだけをサポートすると、ユーザは、特定機能を使うことができないため、計算機システムを使いにくい。一方、実施例の計算機システムは、第二プロトコルの特定機能を提供する。これにより、ユーザは、第二プロトコルを用いて第一プロトコルと同等の機能を用いることができる。また、ユーザは、第一プロトコルから第二プロトコルへ容易に移行できる。また、第二プロトコルの特定機能をインタフェースデバイスで処理することにより、ストレージ装置を変更する必要がないため、第二プロトコルに特定機能を追加するコストを抑えることができる。
 以上、本発明の実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲を上記構成に限定する趣旨ではない。本発明は、他の種々の形態でも実施する事が可能である。
 100…サーバ装置、 110…メモリ、 130…サーバユニット、 140…表示装置、 200…インタフェースデバイス、 230…I/Oプロセッサ、 240…DMAコントローラ、 250…バス制御回路、 260…バス制御回路、 270…メモリ、 290…異常検知回路、 300…ストレージ装置、 510…管理プロセッサ

Claims (12)

  1.  記憶デバイスと、
     前記記憶デバイスに接続されるストレージコントローラと、
     ストレージ側バスを介して前記ストレージコントローラに接続されるインタフェースデバイスと、
     サーバ側バスを介して前記インタフェースデバイスに接続されるサーバ計算機と、
    を備え、
     前記サーバ計算機は、
      サーバメモリと、
      サーバメモリに接続されるサーバプロセッサと、
    を含み、
     前記サーバメモリは、第一プロトコルに基づく第一ドライバと、第二プロトコルに基づく第二ドライバとを記憶し、
     前記サーバプロセッサは、前記第一ドライバに従って、前記第一プロトコルに基づく第一I/Oコマンドを前記インタフェースデバイスへ送信する処理と、前記インタフェースデバイスから前記第一I/Oコマンドの応答を受信する処理と、前記インタフェースデバイスから通知を受信する処理とを実行し、
     前記サーバプロセッサは、前記第二ドライバに従って、前記第二プロトコルに基づく第二I/Oコマンドを前記インタフェースデバイスへ送信し、前記インタフェースデバイスから前記第二I/Oコマンドの応答を受信し、
     前記インタフェースデバイスは、第一I/O処理として、前記第一I/Oコマンドに応じてI/Oを実行し、第一I/Oコマンドの応答を前記サーバプロセッサへ送信し、
     前記インタフェースデバイスは、第二I/O処理として、前記第二I/Oコマンドに応じてI/Oを実行し、第二I/Oコマンドの応答を前記サーバプロセッサへ送信し、
     前記インタフェースデバイスは、前記第一I/O処理に用いられるパスの異常である第一異常状態を検出した場合、第一通知処理として、前記第一プロトコルを用いて、前記第一異常状態を示す第一通知を前記サーバプロセッサへ送信し、
     前記サーバプロセッサは、前記第一ドライバに従って、前記第一通知を受信し、
     前記インタフェースデバイスは、前記第二I/O処理に用いられるパスの異常である第二異常状態を検出した場合、第二通知処理として、前記第一プロトコルを用いて、前記第二異常状態を示す第二通知を前記サーバプロセッサへ送信し、
     前記サーバプロセッサは、前記第一ドライバに従って、前記第二通知を受信する、
    計算機システム。
  2.  前記第一異常状態は、前記インタフェースデバイスのうち前記第一I/O処理のパスのハードウェアの障害と、前記ストレージ側バスの切断との何れかを含み、
     前記第二異常状態は、前記インタフェースデバイスのうち前記第二I/O処理のパスのハードウェアの障害と、前記ストレージ側バスの切断との何れかを含む、
    請求項1に記載の計算機システム。
  3.  前記インタフェースデバイスは、
      前記第一I/O処理を実行する第一プロセッサと
      前記第二I/O処理を実行する第二プロセッサと、
    を含む、
    請求項2に記載の計算機システム。
  4.  前記インタフェースデバイスは、デバイスメモリを含み、
     前記第二異常状態を検出した場合、前記第二異常状態を示す異常情報を前記デバイスメモリへ書き込み、
     前記サーバプロセッサは、前記第一ドライバに従って、前記第二通知を受信した場合、前記異常情報を読み出すコマンドを発行することで、前記インタフェースデバイスから前記異常情報を読み出す、
    請求項3に記載の計算機システム。
  5.  前記サーバプロセッサは、表示装置に接続され、
     前記サーバプロセッサは、前記異常情報を読み出した場合、前記異常情報に基づく情報を前記表示装置に表示させる、
    請求項4に記載の計算機システム。
  6.  前記第一プロセッサは、前記第一通知処理及び前記第二通知処理を実行する、
    請求項5に記載の計算機システム。
  7.  前記第一プロセッサは、前記第一異常状態の検出に応じて、前記第一通知処理を実行し、
     前記第二プロセッサは、前記第二異常状態の検出に応じて、前記第一プロセッサに対して前記第二通知処理を要求し、
     前記第一プロセッサは、前記第二プロセッサからの前記第二通知処理の要求に応じて、前記第二通知処理を実行する、
    請求項6に記載の計算機システム。
  8.  前記インタフェースデバイスは、前記第一異常状態及び前記第二異常状態を監視する第三プロセッサを含み、
     前記第一異常状態を検出した場合、前記第一異常状態を示すログを前記デバイスメモリへ書き込み、前記第一異常状態を前記第一プロセッサへ通知し、
     前記第二異常状態を検出した場合、前記第二異常状態を示すログを前記デバイスメモリへ書き込み、前記第二異常状態を前記第二プロセッサへ通知する
    請求項7に記載の計算機システム。
  9.  前記インタフェースデバイスは、前記第一異常状態及び前記第二異常状態を監視する第四プロセッサを含み、
     前記第四プロセッサは、前記第一異常状態の検出に応じて、前記第一通知処理を実行し、
     前記第四プロセッサは、前記第二異常状態の検出に応じて、前記第二通知処理を実行する、
    請求項5に記載の計算機システム。
  10.  前記サーバプロセッサは、前記第一ドライバに従って、前記第二I/O処理又は前記第二通知処理のための設定情報を、前記インタフェースデバイスへ送信する、
    請求項1に記載の計算機システム。
  11.  前記第二ドライバは、前記第二プロトコルの標準ドライバである、
    請求項1に記載の計算機システム。
  12.  記憶デバイスと、
     前記記憶デバイスに接続されるストレージコントローラと、
     PCI Expressに基づくストレージ側バスを介して前記ストレージコントローラに接続されるインタフェースデバイスと、
     PCI Expressに基づくサーバ側バスを介して前記インタフェースデバイスに接続されるサーバ計算機と、
    を備え、
     前記サーバ計算機は、
      サーバメモリと、
      サーバメモリに接続されるサーバプロセッサと、
    を含み、
     前記サーバメモリは、第一プロトコルに基づく第一ドライバと、NVM Expressプロトコルに基づくNVM Expressドライバとを記憶し、
     前記サーバプロセッサは、前記第一ドライバに従って、前記第一プロトコルに基づく第一I/Oコマンドを前記インタフェースデバイスへ送信する処理と、前記インタフェースデバイスから前記第一I/Oコマンドの応答を受信する処理と、前記インタフェースデバイスから通知を受信する処理とを実行し、
     前記サーバプロセッサは、前記NVM Expressドライバに従って、前記NVM Expressプロトコルに基づく第二I/Oコマンドを前記インタフェースデバイスへ送信し、前記インタフェースデバイスから前記第二I/Oコマンドの応答を受信し、
     前記インタフェースデバイスは、第一I/O処理として、前記第一I/Oコマンドに応じてI/Oを実行し、第一I/Oコマンドの応答を前記サーバプロセッサへ送信し、
     前記インタフェースデバイスは、第二I/O処理として、前記第二I/Oコマンドに応じてI/Oを実行し、第二I/Oコマンドの応答を前記サーバプロセッサへ送信し、
     前記インタフェースデバイスは、前記第一I/O処理に用いられるパスの異常である第一異常状態を検出した場合、第一通知処理として、前記第一プロトコルを用いて、前記第一異常状態を示す第一通知を前記サーバプロセッサへ送信し、
     前記サーバプロセッサは、前記第一ドライバに従って、前記第一通知を受信し、
     前記インタフェースデバイスは、前記第二I/O処理に用いられるパスの異常である第二異常状態を検出した場合、第二通知処理として、前記第一プロトコルを用いて、前記第二異常状態を示す第二通知を前記サーバプロセッサへ送信し、
     前記サーバプロセッサは、前記第一ドライバに従って、前記第二通知を受信する、
    計算機システム。
PCT/JP2015/064971 2015-05-25 2015-05-25 計算機システム WO2016189636A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/064971 WO2016189636A1 (ja) 2015-05-25 2015-05-25 計算機システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/064971 WO2016189636A1 (ja) 2015-05-25 2015-05-25 計算機システム

Publications (1)

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

Family

ID=57393075

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/064971 WO2016189636A1 (ja) 2015-05-25 2015-05-25 計算機システム

Country Status (1)

Country Link
WO (1) WO2016189636A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008075425A1 (ja) * 2006-12-20 2008-06-26 Fujitsu Limited 通信処理プログラム、通信処理方法および通信処理装置
US20130191590A1 (en) * 2011-11-15 2013-07-25 Kiron Balkrishna Malwankar Processor agnostic data storage in a pcie based shared storage environment
WO2015029230A1 (ja) * 2013-08-30 2015-03-05 株式会社日立製作所 記憶装置及びデータ制御方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008075425A1 (ja) * 2006-12-20 2008-06-26 Fujitsu Limited 通信処理プログラム、通信処理方法および通信処理装置
US20130191590A1 (en) * 2011-11-15 2013-07-25 Kiron Balkrishna Malwankar Processor agnostic data storage in a pcie based shared storage environment
WO2015029230A1 (ja) * 2013-08-30 2015-03-05 株式会社日立製作所 記憶装置及びデータ制御方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
AMBER HUFFMAN ET AL.: "The Nonvolatile Memory Transformation of Client Storage", COMPUTER, vol. 46, no. Issue:8, 13 June 2013 (2013-06-13), pages 38 - 44, XP011524379 *
NVM EXPRESS WORKGROUP, NVM EXPRESS: SCSI TRANSLATION REFERENCE, 16 January 2015 (2015-01-16), pages 1 - 78 *

Similar Documents

Publication Publication Date Title
US9990313B2 (en) Storage apparatus and interface apparatus
US9471234B2 (en) Systems and methods for mirroring virtual functions in a chassis configured to receive a plurality of modular information handling systems and a plurality of modular information handling resources
US8312312B2 (en) Data storage system using multiple communication protocols
US11086813B1 (en) Modular non-volatile memory express storage appliance and method therefor
US10331520B2 (en) Raid hot spare disk drive using inter-storage controller communication
US20110113159A1 (en) Communication with input/output system devices
JP5695126B2 (ja) 計算機システム、サーバモジュール及びストレージモジュール
US8533300B2 (en) Storage device, controller, and address management method
US9864719B2 (en) Systems and methods for power optimization at input/output nodes of an information handling system
WO2016082522A1 (zh) 管理路径确定方法及装置
US20140149658A1 (en) Systems and methods for multipath input/output configuration
WO2017056220A1 (ja) 計算機システム、コマンド転送方法、及び、転送デバイス
US20080276009A1 (en) Enabling Efficient Communication Between a Host and Multiple USB Devices
US10579275B2 (en) Storage system and storage control method
WO2016189636A1 (ja) 計算機システム
JP6241323B2 (ja) スイッチ装置、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
US10565147B2 (en) Information processing apparatus for data transfer between a system host and a local device
US10509751B2 (en) Information processing apparatus that converts an address and requester ID on a local host to an address and requester ID on a system host
US8832341B2 (en) Dynamically determining a primary or slave assignment based on receiving a power signal from the cable at the port of a device
KR102518287B1 (ko) PCIe 인터페이스 장치 및 그 동작 방법
US20230350824A1 (en) Peripheral component interconnect express device and operating method thereof
JP6035961B2 (ja) 情報処理装置、管理プログラムおよび管理方法
WO2014006731A1 (ja) データバックアップ方法、及びインタフェースカード
JP2016151895A (ja) 通信処理装置、データ転送方法およびそのためのプログラム

Legal Events

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

Ref document number: 15893271

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15893271

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP