Abstract:
A computer system includes: a first HBA that constitutes an operational path and on which a first PCI/PCIe-bus expansion card having a PCI PM function, which is a power saving function, is mounted; and a second HBA that constitutes a standby path and on which a second PCI/PCIe-bus expansion card having the PCI PM function is mounted; and a control section that controls the first HBA and the second HBA. The control section first uses the operational path by setting the first PCI/PCIe-bus expansion card to an active state. When a failure occurs in the operational path, the control section performs control such that communication recovery processing for the operational path is applied to the first HBA and further the second PCI/PCIe-bus expansion card of the second HBA is changed from a power saving state to which the second PCI/PCIe-bus expansion card has been first set, to an active state. When the communication recovery processing ends unsuccessfully, the control section performs communication with the I/O device by using the second PCI/PCIe-bus expansion card of the second HBA.

Description:
CLAIM OF PRIORITY 
     The present application claims priority from Japanese application JP 2011-140897 filed on Jun. 24, 2011, the content of which is hereby incorporated by reference into this application. 
     FIELD OF THE INVENTION 
     The present invention relates to a computer system, a host-bus-adaptor control method, and a program thereof. In particular, the present invention relates to, in a computer system in which a host computer and an I/O device are connected via redundant paths by using host bus adaptors on which PCI/PCIe-bus expansion cards are mounted, power saving control for the PCI/PCIe-bus expansion card mounted on the host bus adaptor that is provided in a standby path. 
     BACKGROUND OF THE INVENTION 
     In mission-critical computer systems, multiplexed (redundant) I/O paths to an I/O device, such as a storage system, are used in order to improve the reliability. Furthermore, among recent computer systems, a system in which a host computer and an I/O device are connected by using a PCI/PCIe-bus expansion card has been put into practical use. Regarding the multiplexing of an I/O path, for example, Japanese Unexamined Patent Application Publication Nos. 2004-185093 and 2007-265243 disclose technologies in which multiplexing an I/O path to a storage system improves the input-output performance, and, when a failure occurs, a normal logical path is selected to access a logical unit in the storage system. 
     Furthermore, in recent years, the speed of host bus adaptors (hereinafter, referred to as HBAs) in I/O paths in computer systems has been increased. This increase in speed can be realized by making the I/O paths redundant, but the redundant I/O paths may implement a higher performance than the required input-output performance. In such a case, it is desirable from the standpoint of power saving that only the devices in the minimum necessary I/O path (operational path) be operated in order to attain the required input-output performance, and the devices in the spare I/O path (standby path) be stopped. 
     However, to activate a device that has been stopped, for example, a host bus adaptor, a start time of several seconds to several tens of seconds is required to switch from the stopped state to a state in which communication can be performed. Thus, in the mission-critical computer systems, the technique in which the devices in the standby path are stopped cannot be used. In the mission-critical computer systems, if communication via the operational path cannot be performed, it is required that the communication be immediately continued via the standby path, and thus, a start time of several seconds to several tens of seconds is unacceptable. 
     Regarding power saving control for the standby path, Japanese Unexamined Patent Application Publication No. 2010-198353 discloses a computer system that includes a power supply control section for controlling power supply to HBAs connected to a plurality of paths. In the computer system, when the occurrence of an error with respect to a reissued I/O is detected, the standby path and the currently-being-used path are switched, and when a notification of time-out is received, the power supply control section stops power supply to the HBA in the standby path. 
     Furthermore, Japanese Unexamined Patent Application Publication No. 2009-289193 discloses a technology of reducing the power consumption of a device connected to a PCI/PCIe bus, by using the PCI PM (power management) function. 
     Furthermore, PCI Bus Power Management Interface Specification Rev. 1.2 Mar. 3, 2004 prescribes a PM function (power management function) serving as a power saving function for PCI/PCIe-bus expansion cards. 
     In the technology of Japanese Unexamined Patent Application Publication No. 2010-198353, the power supply control section, which controls power supply to the HBAs, performs power saving control for the standby path. However, many of computer systems that have been put into practical use do not include this type of power supply control section, so that it is difficult to immediately apply this technology thereto. In particular, Japanese Unexamined Patent Application Publication No. 2010-198353 does not suggest how power saving control for the standby path in a computer system that uses PCI/PCIe-bus expansion cards having the PCI PM function is performed. 
     Furthermore, Japanese Unexamined Patent Application Publication No. 2009-289193 proposes the technology of reducing the power consumption of a device connected to the PCI/PCIe bus, by using the PCI PM function. However, it does not suggest how the technology is applied to a computer system in which an HBA connected to the PCI/PCIe bus is used made redundant. 
     SUMMARY OF THE INVENTION 
     An object of the present invention is to achieve power saving for a standby path in a computer system in which multiplexed I/O paths are made for an I/O device by using PCI/PCIe-bus expansion cards having the PCI PM function. 
     More specifically, the object thereof is to perform control such that SCSI communication is immediately started by using the standby path that has been in a power saving state when a failure occurs in the operational path. 
     According to a first aspect, the present invention provides a computer system that performs data communication with an I/O device via host bus adaptors (HBAs) connected to the I/O device, the computer system including: as the HBAs, a first HBA that constitutes an operational path and on which a first PCI/PCIe-bus expansion card having a PCI PM function serving as a power saving function is mounted, and a second HBA that constitutes a standby path and on which a second PCI/PCIe-bus expansion card having the PCI PM function is mounted; and a control section that controls the first HBA and the second HBA, in which the control section first performs control such that the first PCI/PCIe-bus expansion card of the first HBA is set to an active state and the second PCI/PCIe-bus expansion card of the second HBA is set to a power saving state; when a failure occurs in the operational path, the control section performs control such that communication recovery processing for the operational path is applied to the first HBA and further the second PCI/PCIe-bus expansion card of the second HBA is changed from the power saving state to an active state; and, when the communication recovery processing ends unsuccessfully, the control section performs control such that communication is made with the I/O device by using the second PCI/PCIe-bus expansion card of the second HBA. 
     In the above-described computer system, it is preferred that a host computer that performs data communication with the I/O device by using a SCSI command be further included, and the control section concurrently perform the control of the communication recovery processing for the operational path and the control for changing the state of the standby path from the power saving state to the active state. 
     Furthermore, in the above-described computer system, it is preferred that, when a failure in the operational path is detected, the control section issue a task management request in the communication recovery processing for the operational path and activate the second HBA in the standby path, concurrently; and, when the task management request with respect to the operational path ends unsuccessfully, the control section perform communication with the I/O device via the second HBA by using a SCSI command. 
     Furthermore, in the above-described computer system, it is preferred that the control section set a PM state of the first PCI/PCIe-bus expansion card of the first HBA in the operational path to D 0 _Active; the control section set a PM state of the second PCI/PCIe-bus expansion card of the second HBA in the standby path to D 3 _hot; the control section perform communication with the I/O device via the first PCI/PCIe-bus expansion card of the first HBA in the operational path; when a problem occurs in the communication using the SCSI command via the operational path, the control section concurrently perform the control of the communication recovery processing for the operational path and the control for changing the PM state of the second HBA in the standby path to D 0 _Active; and, when the communication recovery processing for the operational path ends unsuccessfully, the control section perform communication with the I/O device by using the second PCI/PCIe-bus expansion card of the second HBA. 
     Furthermore, in the above-described computer system, it is preferred that, when a problem occurs in the communication using the SCSI command via the operational path, the control section concurrently perform the control of the communication recovery processing for the operational path and the control for changing the PM state of the second HBA in the standby path to D 0 _Active; when the communication recovery processing for the operational path ends successfully, the control section change the PM state of the second PCI/PCIe-bus expansion card of the second HBA from D 0 _Active to D 3 _hot; and the control section further perform communication with I/O device with a SCSI command by using the first PCI/PCIe-bus expansion card of the first HBA. 
     According to a second aspect, the present invention provides a host bus adaptor (HBA) control method used in a host computer that performs data communication with an I/O device by using a SCSI command via host bus adaptors (HBAs) connected to the I/O device, the host computer including: as the HBAs, a first HBA that constitutes an operational path and on which a first PCI/PCIe-bus expansion card having a PCI PM function serving as a power saving function is mounted, and a second HBA that constitutes a standby path and on which a second PCI/PCIe-bus expansion card having the PCI PM function is mounted; and a control section that controls the first HBA and the second HBA, the method including the steps of: first performing control, with the control section, such that the first PCI/PCIe-bus expansion card of the first HBA is set to an active state and the second PCI/PCIe-bus expansion card of the second HBA is set to a power saving state; when a failure occurs in the operational path, performing control, with the control section, such that communication recovery processing for the operational path is applied to the first HBA and further the second PCI/PCIe-bus expansion card of the second HBA is changed from the power saving state to an active state; and when the communication recovery processing ends unsuccessfully, performing control, with the control section, such that communication is made with the I/O device by using the second PCI/PCIe-bus expansion card of the second HBA. 
     In the above-described host bus adaptor (HBA) control method, it is preferred that, when a failure in the operational path is detected, the control section issue a task management request in the communication recovery processing for the operational path and activate the second HBA in the standby path, concurrently; and, when the task management request with respect to the operational path ends unsuccessfully, the control section perform communication with the I/O device via the second HBA by using a SCSI command. 
     Furthermore, in the above-described host bus adaptor (HBA) control method, it is preferred that the control section set a PM state of the first PCI/PCIe-bus expansion card of the first HBA in the operational path to D 0 _Active; the control section set a PM state of the second PCI/PCIe-bus expansion card of the second HBA in the standby path to D 3 _hot; the control section perform communication with the I/O device via the first PCI/PCIe-bus expansion card of the first HBA in the operational path; when a problem occurs in the communication using the SCSI command via the operational path, the control section concurrently perform the control of the communication recovery processing for the operational path and the control for changing the PM state of the second HBA in the standby path to D 0 _Active; and, when the communication recovery processing for the operational path ends unsuccessfully, the control section perform communication with the I/O device by using the second PCI/PCIe-bus expansion card of the second HBA. 
     Furthermore, in the above-described host bus adaptor (HBA) control method, it is preferred that, when a problem occurs in the communication using the SCSI command via the operational path, the control section concurrently perform the control of the communication recovery processing for the operational path and the control for changing the PM state of the second HBA in the standby path to D 0 _Active; when the communication recovery processing for the operational path ends successfully, the control section change the PM state of the second PCI/PCIe-bus expansion card of the second HBA from D 0 _Active to D 3 _hot; and the control section further perform communication with I/O device with a SCSI command by using the first PCI/PCIe-bus expansion card of the first HBA. 
     Furthermore, in the above-described host bus adaptor (HBA) control method, it is preferred that the PM states of the first and second HBAs be changed by rewriting registers (PMCSRs) in PCI CFG spaces generated on memories mounted on the first and second PCI/PCIe-bus expansion cards. 
     According to a third aspect, the present invention provides a program functioning as a host-bus-adaptor driver, executed on a host computer and controlling a first host bus adaptor (HBA) and a second HBA that are connected to an I/O device, the host computer including the first HBA that constitutes an operational path and on which a first PCI/PCIe-bus expansion card having a PCI PM function serving as a power saving function is mounted, and the second HBA that constitutes a standby path and on which a second PCI/PCIe-bus expansion card having the PCI PM function is mounted, and the host computer performing data communication with the I/O device using a SCSI command via the first HBA or the second HBA, in which the host-bus-adaptor driver first performs control such that the first PCI/PCIe-bus expansion card of the first HBA is set to an active state and the second PCI/PCIe-bus expansion card of the second HBA is set to a power saving state; when a failure occurs in the operational path, the host-bus-adaptor driver performs control such that communication recovery processing for the operational path is applied to the first HBA and further the second PCI/PCIe-bus expansion card of the second HBA is changed from the power saving state to an active state; and when the communication recovery processing ends unsuccessfully, the host-bus-adaptor driver performs control such that communication is made with the I/O device by using the second PCI/PCIe-bus expansion card of the second HBA. 
     According to the present invention, it is possible to realize power saving for the standby path by using the PCI PM function, in the computer system in which the multiplexed I/O paths are made for the I/O device by using PCI/PCIe-bus expansion cards having the PCI PM function. More specifically, it is possible to perform control such that SCSI communication is immediately started by using the standby path that has been in the power saving state when a failure occurs in the operational path. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a diagram showing an example configuration of a computer system according to one embodiment; 
         FIG. 2  is a diagram showing PCI function power management state transitions; 
         FIG. 3  is a diagram showing, in outline, a PCI CFG space; 
         FIG. 4  is a sequence diagram showing command processing for HBAs and a power control action (control action  1 ), performed by an HBA driver according to the embodiment; and 
         FIG. 5  is a sequence diagram showing command processing for the HBAs and a power control action (control action  2 ), performed by the HBA driver according to the embodiment. 
     
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     A preferred embodiment of the present invention will be described below with reference to the drawings. 
       FIG. 1  shows an example configuration of a computer system according to the embodiment. 
     A host computer  10  is connected to ports  111  and  112  of a storage system  11  that serves as an I/O device by a plurality of host bus adaptors (referred to as HBAs)  106  and  107  via multiplexed (redundant) I/O paths  113  and  114 . The I/O path  113  serves as an operational path, and the I/O path  114  serves as a standby path. The host computer  10  can usually use the HBA  106  (operational path) to access a logical unit  115  generated in the storage system  11 . If a failure occurs in the operational path, the host computer  10  can use the HBA  107  (standby path) to access the logical unit  115  in the storage system  11  via the standby I/O path  114  and the port  112 . In this embodiment, each of the two HBAs  106  and  107  is formed of a PCI/PCIe-bus expansion card with a PCI PM capability. On each of the HBAs  106  and  107 , the following units (not shown) are mainly mounted: a processor that executes a program to perform data transfer control; an LSI having a memory for storing various data and the program for the control; firmware that performs the entire control of the corresponding HBA; and an optical module that transmits and receives data to and from the corresponding port. In the figure, reference numerals  108  and  109  denote PM states. 
     Although a hardware configuration of the host computer  10  is not shown in the figure, the host computer  10  includes a processor that activates an OS (operating system) and also executes an application program  101 , and a memory that stores various programs and data. The host computer  10  uses a host bus adaptor (HBA) driver  102 . 
     The HBA driver  102  is a program executed by the processor to realize functions and has, as its inner functions, an adaptor driver common section  103 , an adaptor control instance  104 , and an adaptor control instance  105 . The adaptor control instance  104  controls the HBA  106 , and the adaptor control instance  105  controls the HBA  107 . The adaptor driver common section  103  controls each of the adaptor control instances  104  and  105  independently to control data communication and also performs control such that the adaptor control instance  104  in the operational path is switched to the adaptor control instance  105  in the standby path. 
     In this embodiment, data communication is performed between the host computer  10  and the I/O device according to a SCSI standard, for example, based on a SCSI architecture model 4 described in Working Draft American National Standard Project T10/1683-D Rev. 6, 23 May 2006. When the application program  101  performs SCSI data communication with the logical unit  115  of the storage system  11 , the adaptor driver common section  103  in the HBA driver  102  transmits a SCSI command via the I/O path  113 , which passes through the HBA  106 . Unless no response (that is, a data communication failure) occurs in the HBA  106  in the operational path, SCSI communication through the HBA  107  in the standby path is not performed. 
       FIG. 2  shows PCI function power management state transitions according to page 45 in PCI Bus Power Management Interface Specification Rev. 1.2 Mar. 3, 2004. 
     In the embodiment of the present invention, power saving control for the standby path is performed while transition occurs among three states, i.e., DO Unitialized, DO Active, and D 3 _hot, shown in this transition diagram. In the D 3 -hot state, power is supplied, for example, to a connection bus circuit and a power management circuit in the HBA, a microprocessor and the LSI having the memory are in the stopped state, and power can be stopped thereto. 
       FIG. 3  is a diagram showing, in outline, a PCI CFG space. Note that this is described in pages 21 to 24 in PCI Bus Power Management Interface Specification Rev. 1.2 Mar. 3, 2004. 
     The PCI CFG space is generated in the memory of each of the HBAs  106  and  107 . A PCI CFG space  300  of each of the HBAs  106  and  107  includes a power management capability ID  301  and a power management control/status register (PMCSR)  302 . The PMCSR  302  stores power-status bit information, and one of the three states, i.e., DO Unitialized, DO Active, and D 3 _hot, can be selected by rewriting the power-status bit information. Specifically, the adaptor control instance  104  rewrites the PMCSR  302  of the HBA  106  to switch the PCI PM state  108  of the HBA  106 . Similarly, the adaptor control instance  105  rewrites the PMCSR  302  of the HBA  107  to switch the PCI PM state  109  thereof. The PCI PM state transitions in this embodiment are shown in  FIG. 2 . 
     When the host computer  10  is activated, control is performed such that the adaptor control instance  104  sets the PCI PM state  108  of the HBA  106  to “D 0 _Active”, and the adaptor control instance  105  sets the PCI PM state  109  of the HBA  107  to “D 3 _hot”. Specifically, “b 11 ” is written in the PMCSR  302  of the HBA  107  to set the PCI PM state  109  to “D 3 _hot”, thus causing the HBA  107  to enter a warm standby state. At this time, some of the functions are stopped in the HBA  107 , thus reducing the power consumption, compared with the HBA  106  set in the “D 0 _Active” state. Specifically, in the HBAs  106  and  107  of this embodiment, when the PCI PM state  109  is set to “D 3 _hot”, the function is stopped, the optical module for communication is turned off, a DMA transfer function is stopped, and a frame transmission and reception function is stopped. Thus, power saving can be achieved. 
     Next, command processing for the HBAs and power control actions performed by the HBA driver will be described with reference to  FIGS. 4 and 5 . 
     In the initial state, the PM state  108  of the HBA  106  is set to “DO Active”, and the PM state  109  of the HBA  107  is set to “D 3  hot”. It is assumed that the corresponding power-status bit information is registered in that way in the PMCSR  302  of the PCI CFG space  300 . Furthermore, it is assumed that the adaptor control instance  104  for the operational path has a software timer used to monitor the time (time-out) of a response to a command or a request issued to the HBA  106 . 
     In  FIG. 4 , it is assumed that SCSI communication is attempted from the application program  101  to the logical unit  115  of the storage system  11 . At this time, the adaptor driver common section  103  of the HBA driver  102  issues a SCSI command transmission request to the adaptor control instance  104  (S 400 ). 
     When the SCSI command transmission request is received, the adaptor control instance  104  transmits a SCSI command to the HBA  106  (S 401 ). It is assumed that, after the SCSI command is transmitted, no response is received from the HBA  106  (that is, a failure occurs therein) (S 402 ). In this case, the adaptor control instance  104  detects the time-out of a SCSI-command response waiting timer (S 403 ) and notifies the fact to the adaptor driver common section  103 . 
     When the time-out of the SCSI-command response waiting timer is detected (S 403 ), the adaptor control instance  104  issues a task management request to the HBA  106  in order to recover communication between the HBA  106  and the logical unit  115  (S 407 ). Note that a task management request and processing related thereto in the SCSI architecture are described in SCSI Architecture Model 4 (pages 24 to 25 and 94 in Working Draft American National Standard Project T10/1683-D Rev. 6, 23 May 2006). 
     After the task management request is issued, if no response is received from the HBA  106  (S 408 ), the adaptor control instance  104  detects the time-out of a task-management response waiting timer and notifies the fact to the adaptor driver common section  103  (S 410 ). 
     When the adaptor driver common section  103  receives the notification of the time-out of the SCSI-command response waiting timer from the adaptor control instance  104  (S 403 ), the adaptor driver common section  103  issues an adaptor initializing request to the adaptor control instance  105  (S 404 ). When the adaptor initializing request is received, the adaptor control instance  105  writes power-status bit information “b 00 ” in the PMCSR  302  of the HBA  107  in order to prepare for SCSI communication via the HBA  107 . Then, the adaptor control instance  105  issues a PM state change to the HBA  107  (S 406 ) to change the PCI PM state  109  of the HBA  107  to “D 0 _Uninitialized” (S 421 ). Then, the adaptor control instance  105  initializes the HBA  107  (S 411 ), and the HBA  107  enters the “D 0 _Active” state (S 422 ). In this way, after those preparation processes (S 406  and S 411 ), the HBA  107  is capable of performing SCSI communication with the logical unit  115 . 
     When the notification of the time-out of the task-management response waiting timer is received from the adaptor control instance  104  (S 410 ) (that is, when the operational path, which includes the HBA  106 , goes down), the adaptor driver common section  103  issues a SCSI command transmission request to the adaptor control instance  105  (S 412 ). When the SCSI command transmission request is received (S 412 ), the adaptor control instance  105  transmits a SCSI command to the HBA  107  (S 413 ). Specifically, the SCSI command causes the HBA  107  in the standby path to access the logical unit  115  of the storage system  11 . 
     According to this embodiment, if a response to the SCSI command (S 401 ) issued by the adaptor control instance  104  is not returned from the HBA  106  (S 403 ), the adaptor driver common section  103  immediately issues the adaptor initializing request to the adaptor control instance  105  (S 404 ) to instruct it to change the PCI PM state of the HBA  107  to “D 0 _Uninitialized” (S 421 ). Furthermore, the task-management-related processes (S 407  and S 410 ) performed by the adaptor control instance  104  and the preparations (S 406  and S 411 ) performed by the adaptor control instance  105  are concurrently carried out (during the period of S 405  surrounded by a dotted line), thereby enabling the HBA  107  to perform SCSI communication (S 412  and S 413 ) with the storage system  11  immediately after the adaptor control instance  104  detects the time-out of the task-management response waiting timer (S 410 ). Through this control action, SCSI communication via the standby path, which includes the HBA  107 , can be immediately started. 
     The above-described example shown in  FIG. 4  is a control action carried out when a task-management time-out response to the task management request issued by the adaptor control instance  104  is returned (S 410 ) because a failure occurs in the HBA  106  (S 408 ). 
     In contrast, an example shown in  FIG. 5  is a control action carried out when a failure in the HBA  106  is not detected, and the task management with respect to the task management request issued by the adaptor control instance  104  ends successfully. 
     In  FIG. 5 , when a task management response to the task management request is received (S 510 ), the adaptor control instance  104  notifies a task management success to the adaptor driver common section  103  (S 511 ). 
     When the task management success is received, the adaptor driver common section  103  issues an adaptor standby request to the adaptor control instance  105  (S 512 ). Then, the adaptor driver common section  103  attempts SCSI communication with the HBA  106  set in the normal state. Specifically, the adaptor driver common section  103  issues a SCSI command transmission request to the adaptor control instance  104  (S 514 ), and the adaptor control instance  104  transmits a SCSI command to the HBA  106  (S 515 ). 
     When the adaptor standby request is received, the adaptor control instance  105  changes the PM state of the HBA  107  (S 513 ). Specifically, the adaptor control instance  105  writes “b 11 ” in the PMCSR  302  of the HBA  107  to set the PCI PM state to “D 3 _hot” ( 109 ) (S 423 ), thereby making the HBA  107  enter the standby state. 
     As described above, according to this embodiment, when the adaptor control instance  104  receives the task management response to the task management request, the HBA  107  can be set in the warm standby state again. Thus, power saving can be continued.