(57)【特許請求の範囲】
【請求項１】
入出力装置が接続されるホットプラグに対応した第１のスイッチのコンフィグレーションレジスタに対するホストコンピュータからの書き込み要求を監視する監視部と、
前記監視部によって監視される前記書き込み要求から、前記ホストコンピュータが前記第１のスイッチで使用する入出力空間に関する設定情報を抽出して記憶部に記憶させる記憶制御部と、
入出力装置が接続される前記ホットプラグに対応した第２のスイッチに、前記記憶部に記憶される設定情報を設定する設定制御部と、
前記第１のスイッチに障害が発生した場合に、前記第１のスイッチに対して前記ホットプラグのホットリムーブを実行して前記第１のスイッチを無効化し、前記第２のスイッチに対して前記ホットプラグのホットアドを実行して前記第２のスイッチを有効化して、前記ホストコンピュータの書き込み要求先を前記第１のスイッチから前記第２のスイッチに切り替える切替制御部と
を有することを特徴とする切替制御装置。
【請求項２】
前記第１のスイッチに障害が発生した場合に、前記第１のスイッチが前記入出力装置を設置する複数のスロットのうち、障害が発生したスロットを検出するスロット検出部をさらに有し、
前記切替制御部は、前記スロット検出部が特定したスロットに対する前記コンフィグレーションレジスタへの書き込み要求を、前記第２のスイッチが有するスロットのうち、前記スロット検出部が特定した第１のスイッチのスロットに対応するスロットに切り替えることを特徴とする請求項１に記載の切替制御装置。
【請求項３】
入出力装置が接続されるホットプラグに対応した第１のスイッチのコンフィグレーションレジスタに対する書き込み要求を監視する監視部と、
前記監視部によって監視される前記書き込み要求から、前記第１のスイッチで使用される入出力空間に関する設定情報を抽出して記憶部に記憶させる記憶制御部と、
入出力装置が接続される前記ホットプラグに対応した第２のスイッチに、前記記憶部に記憶される設定情報を設定する設定制御部と、
前記第１のスイッチに障害が発生した場合に、前記第１のスイッチに対して前記ホットプラグのホットリムーブを実行して前記第１のスイッチを無効化し、前記第２のスイッチに対して前記ホットプラグのホットアドを実行して前記第２のスイッチを有効化して、前記第１のスイッチから前記第２のスイッチに書き込み要求先を切り替える切替制御部と
を有することを特徴とする情報処理装置。
【請求項４】
コンピュータが、
入出力装置が接続されるホットプラグに対応した第１のスイッチのコンフィグレーションレジスタに対するホストコンピュータからの書き込み要求を監視し、
監視する前記書き込み要求から、前記ホストコンピュータが前記第１のスイッチで使用する入出力空間に関する設定情報を抽出して記憶部に記憶させ、
入出力装置が接続される前記ホットプラグに対応した第２のスイッチに、前記記憶部に記憶される設定情報を設定し、
前記第１のスイッチに障害が発生した場合に、前記第１のスイッチに対して前記ホットプラグのホットリムーブを実行して前記第１のスイッチを無効化し、前記第２のスイッチに対して前記ホットプラグのホットアドを実行して前記第２のスイッチを有効化して、前記ホストコンピュータの書き込み要求先を前記第１のスイッチから前記第２のスイッチに切り替える
処理を含んだことを特徴とする切替制御方法。
【請求項５】
コンピュータに、
入出力装置が接続されるホットプラグに対応した第１のスイッチのコンフィグレーションレジスタに対するホストコンピュータからの書き込み要求を監視し、
監視する前記書き込み要求から、前記ホストコンピュータが前記第１のスイッチで使用する入出力空間に関する設定情報を抽出して記憶部に記憶させ、
入出力装置が接続される前記ホットプラグに対応した第２のスイッチに、前記記憶部に記憶される設定情報を設定し、
前記第１のスイッチに障害が発生した場合に、前記第１のスイッチに対して前記ホットプラグのホットリムーブを実行して前記第１のスイッチを無効化し、前記第２のスイッチに対して前記ホットプラグのホットアドを実行して前記第２のスイッチを有効化して、前記ホストコンピュータの書き込み要求先を前記第１のスイッチから前記第２のスイッチに切り替える
処理を実行させることを特徴とする切替制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、切替制御装置、切替制御方法、情報処理装置および切替制御プログラムに関する。
【背景技術】
【０００２】
コンピュータの高性能化等に伴って入出力の高性能化に対する需要も増大し、PCI（Peripheral  Component  Interconnect）  Expressなどの高速な入出力インタフェースが利用されている。
【０００３】
一般にPCI  Expressは、コンピュータ内部でCPU（Central  Processing  Unit）と周辺機器とを接続するインタフェースの規格であるが、近年では、コンピュータの外部まで延長する方式も利用されている。PCI  Expressは、Point-to-Pointで入出力装置と接続するので、PCIバスのように単一バスを延長して複数の入出力装置を接続することができない。このため、コンピュータ本体から延長された単一のPCI  ExpressリンクにPCI  Expressスイッチを接続し、このPCI  Expressスイッチに複数の入出力装置を接続することが行われている。
【０００４】
PCI  Expressは、もともとコンピュータ内部で使用されるインタフェースの規格であることから、PCI  Expressで接続される機器は同一の電源を使用することが多い。したがって、コンピュータの外部に設定したPCI  Expressスイッチや入出力装置を交換する場合には、コンピュータ自体の電源を停止する場合が多くなる。電源再投入というのは、システムやサービスに対する影響は大きいので、現状では電源再投入を伴う拡張I/Oボックスの交換は難しい。
【０００５】
このため、複数のホストコンピュータと入出力装置を設置するPCI  Expressスロットとの間を接続するスイッチを冗長化し、スイッチの故障時に、システムやサービスが停止することを抑制する技術が知られている。また、電源を投入したままで入出力装置を抜き差しすることができるHotPlug（ホットプラグ）が知られている。HotPlugは、HotRemoveとHotAddという処理を含む。HotRemoveは、対象の入出力装置を使用不可の状態にして、対象の入出力装置が接続されるPCI  Expressスロットの電源をオフにする。HotAddは、新たな入出力装置がPCI  Expressスロットに挿入された場合に、対象スロットの電源をオンにして入出力装置の初期化を実行する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−２８０２３７号公報
【特許文献２】特開２００８−４６７２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、PCI  Expressスイッチを交換する際にHotPlug等を使用することは、メモリ空間の関係で適用しづらいこともあり、ホストコンピュータの電源停止を抑制するのは難しいという問題がある。なお、この課題は、PCI  Expressスイッチに限ったものではなく、ホストコンピュータと入出力装置とを接続する他のスイッチについても同様の課題がある。
【０００８】
例えば、PCI  ExpressスイッチにHotPlugを適用することを考える。ホストコンピュータは、HotPlugのHotAddによって、入出力装置にアクセスしてコンフィグレーションレジスタに格納される情報を読み出し、入出力装置が使用するI/O領域を抽出する。そして、ホストコンピュータは、HotAddによって、ホストコンピュータのメモリ空間に、抽出した入出力装置のI/O領域を確保する。また、ホストコンピュータは、HotAddによって、メモリ空間上で確保されたI/O領域をコンフィグレーションレジスタに書き込む。このようにして、ホストコンピュータは、確保したI/O領域経由で入出力装置にアクセスする。
【０００９】
この手法をPCI  Expressスイッチに適用した場合、ホストコンピュータは、PCI  Expressスイッチに接続される入出力装置各々のI/O領域を抽出して、抽出したI/O領域の合計以上の連続した領域を自装置のメモリ空間に確保することとなる。したがって、PCI  Expressスイッチが必要とするI/O空間は広大なものとなり、しかも連続した領域を割り当てなくてはならない。そのため、HotAdd時に動的にPCI  ExpressスイッチのためのI/O空間を確保するのは難しい。このため、PCI  ExpressスイッチをHotPlugで制御することは現実的ではない。
【００１０】
１つの側面として、ホストコンピュータと入出力装置とを接続するスイッチの交換に際して、ホストコンピュータの電源停止を抑制することを目的とする。
【課題を解決するための手段】
【００１１】
第１の案では、切替制御装置は、入出力装置が接続される第１のスイッチに対してホストコンピュータが実行したアクセスを監視する監視部を有する。切替制御装置は、前記監視部によって監視されるアクセスから、前記ホストコンピュータが前記第１のスイッチに設定した、前記ホストコンピュータと前記入出力装置とを接続する情報を示す設定情報を抽出して記憶部に記憶させる記憶制御部を有する。切替制御装置は、入出力装置が接続される第２のスイッチに、前記記憶部に記憶される設定情報を設定する設定制御部を有する。切替制御装置は、前記第１のスイッチに障害が発生した場合に、前記ホストコンピュータのアクセス先を前記第１のスイッチから前記第２のスイッチに切り替える切替制御部を有する。
【発明の効果】
【００１２】
ホストコンピュータと入出力装置とを接続するスイッチの交換に際して、ホストコンピュータの電源停止を抑制することができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施例１に係る切替制御装置を含むシステムの全体構成例を示す図である。
【図２】図２は、実施例１に係る切替制御装置の構成を示す機能ブロック図である。
【図３】図３は、実施例１に係る切替制御装置が実行する処理の流れを示すフローチャートである。
【図４】図４は、実施例１に係る切替制御装置が実行する設定処理を説明する図である。
【図５】図５は、実施例２に係る切替制御装置を説明する図である。
【図６】図６は、実施例２に係る切替制御装置の構成を示す機能ブロック図である。
【図７】図７は、実施例２に係る切替制御装置が実行する処理の流れを示すフローチャートである。
【図８】図８は、実施例２に係る切替制御装置が実行する設定処理を説明する図である。
【図９】図９は、スイッチ切替プログラムを実行するコンピュータのハードウェア構成の例を示す図である。
【発明を実施するための形態】
【００１４】
以下に、本願の開示する切替制御装置、切替制御方法、情報処理装置および切替制御プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１５】
［全体構成］
図１は、実施例１に係る切替制御装置を含むシステムの全体構成例を示す図である。図１に示すように、システムは、サーバ１と、切替制御装置１０と、運用系拡張I/Oボックス２０と、待機系拡張I/Oボックス３０とを有する。切替制御装置１０は、例えばサーバ１のアダプタとして実装することができるが、他にもサーバ１と切替制御装置１０とを別々の筐体で実装してもよく、切替制御装置１０の全部または一部がサーバ１に組み込まれていてもよい。また、サーバの台数や切替制御装置の台数等についても任意に設定することができる。
【００１６】
サーバ１と切替制御装置１０とはPCI  Expressで接続される。同様に、切替制御装置１０と運用系拡張I/Oボックス２０のPCI  Expressスイッチ（以下、PCIeスイッチと表記する）２１とはPCI  Expressで接続され、切替制御装置１０と待機系拡張I/Oボックス３０のPCIeスイッチ３１とはPCI  Expressで接続される。すなわち、サーバ１内部のPCIバスを延長させたPCI  Express延長ケーブルで、サーバ１と切替制御装置１０、運用系拡張I/Oボックス２０、待機系拡張I/Oボックス３０各々が接続される。
【００１７】
サーバ１は、切替制御装置１０を介して、運用系拡張I/Oボックス２０または待機系拡張I/Oボックス３０に接続されるI/Oデバイスとデータのやり取りを実行するホストコンピュータである。例えば、サーバ１は、運用系拡張I/Oボックス２０のデバイスＡ２２からデータを受信したり、運用系拡張I/Oボックス２０のデバイスＢ２３にデータを書き込んだりする。なお、サーバ１の一例としては、ラックマウントサーバやブレードサーバなどがある。
【００１８】
運用系拡張I/Oボックス２０は、サーバ１が現時点で使用する入出力デバイスを管理する管理形態であり、PCIeスイッチ２１とデバイスＡ２２とデバイスＢ２３とを有する。なお、PCIeスイッチの数やデバイスの数は、図示したものに限定されず任意に設定でき、PCIeスイッチ２１が有するスロットの数も図示したものに限定されず任意に設定できる。
【００１９】
PCIeスイッチ２１は、スロット２１ａにデバイスＡ２２を接続し、スロット２１ｂにデバイスＢ２３を接続するPCI  Expressスイッチである。例えば、PCIeスイッチ２１は、切替制御装置１０を介してサーバ１からデバイスＡ２２へのアクセスを受信し、受信したアクセスをデバイスＡ２２に出力する。また、このPCIeスイッチ２１は、HotPlugに対応しており、電源を投入した状態でスロットにデバイスを抜き差しすることができる。
【００２０】
デバイスＡ２２とデバイスＢ２３は、サーバ１が現時点で使用する入出力デバイスであり、一例としては、ハードディスク  コントローラ、ネットワーク  インタフェース  カード（ＮＩＣ）、グラフィックスアクセラレータなどがある。
【００２１】
待機系拡張I/Oボックス３０は、運用系拡張I/Oボックス２０の待機系として動作する入出力デバイスを管理する管理形態であり、PCIeスイッチ３１とデバイスＣ３２とデバイスＤ３３とを有する。なお、PCIeスイッチの数やデバイスの数は、図示したものに限定されず任意に設定でき、PCIeスイッチ３１が有するスロットの数も図示したものに限定されず任意に設定できる。
【００２２】
PCIeスイッチ３１は、スロット３１ａにデバイスＣ３２を接続し、スロット３１ｂにデバイスＤ３３を接続するPCI  Expressスイッチである。例えば、PCIeスイッチ３１は、切替制御装置１０を介してサーバ１からデバイスＤ３３へのアクセスを受信し、受信したアクセスをデバイスＤ３３に出力する。また、このPCIeスイッチ３１は、HotPlugに対応しており、電源を投入した状態でスロットにデバイスを抜き差しすることができる。
【００２３】
デバイスＣ３２は、サーバ１が使用する入出力デバイスであり、デバイスＡ２２の待機系として動作している。デバイスＤ３３は、サーバ１が使用する入出力デバイスであり、デバイスＢ２３の待機系として動作している。なお、デバイスＣ３２とデバイスＤ３３の一例は、デバイスＡ２２やデバイスＢ２３などと同様のデバイスを用いることができる。
【００２４】
切替制御装置１０は、記憶部１０ａと監視部１０ｂと記憶制御部１０ｃと設定制御部１０ｄと切替制御部１０ｅとを有し、サーバ１からデバイスに出力されたアクセスを中継する装置であり、運用系が故障した場合には、運用系から待機系への切替を実行する。
【００２５】
監視部１０ｂは、入出力デバイスが接続される運用系拡張I/Oボックス２０のPCIeスイッチ２１に対してサーバ１から実行されたアクセスを監視する。記憶制御部１０ｃは、監視されるアクセスから、サーバ１がPCIeスイッチ２１に設定した、サーバ１と入出力デバイスとを接続する情報を示す設定情報を抽出して記憶部１０ａに記憶させる。設定制御部１０ｄは、入出力デバイスが接続される待機系拡張I/Oボックス３０のPCIeスイッチ３１に、記憶部１０ａに記憶される設定情報を設定する。切替制御部１０ｅは、運用系のPCIeスイッチ２１に障害が発生した場合に、サーバのアクセス先を運用系のPCIeスイッチ２１から待機系のPCIeスイッチ３１に切り替える。
【００２６】
このように、切替制御装置１０は、運用系として使用されるPCIeスイッチ２１に対してサーバ１が実行したアクセスから、PCIeスイッチ２１に設定された設定情報を抽出して保持することができる。そして、切替制御装置１０は、デバイスとの接続等が未設定のPCIeスイッチに対して、運用系のPCIeスイッチと同じ設定を実行することができる。したがって、切替制御装置１０は、運用系のPCIeスイッチが故障した場合でも、サーバ１の設定や再起動を実行することなく、待機系のPCIeスイッチに切り替えることができる。この結果、サーバ１と入出力デバイスとを接続するPCIeスイッチの交換に際して、サーバ１の電源停止を抑制することができる。
【００２７】
［切替制御装置の構成］
図２は、実施例１に係る切替制御装置の構成を示す機能ブロック図である。図２に示すように、切替制御装置１０は、通信中継部１１と監視部１２と抽出部１３と記憶部１４とバックアップコントローラ部１５と状態管理部１６と切替制御部１７とを有する。通信中継部１１と監視部１２と抽出部１３とバックアップコントローラ部１５と状態管理部１６と切替制御部１７とは、例えばＣＰＵ（Central  Processing  Unit）などの電子回路やＦＰＧＡ（Field-Programmable  Gate  Array）などの集積回路である。記憶部１４は、例えば半導体メモリ素子などの記憶装置である。
【００２８】
通信中継部１１は、サーバ１から受信したアクセスを入出力デバイスが接続されるPCIeスイッチに中継する処理部である。例えば、通信中継部１１は、サーバ１からデータ書き込みやデータ読み出しなどのアクセスを受け付けた場合に、切替制御部１７によって指定されたPCIeスイッチに、受け付けたアクセスを出力する。図１の状態で、通信中継部１１は、サーバ１からデバイスＡ２２へのアクセスを受け付けた場合、受け付けたアクセスをPCIeスイッチ２１に出力する。また、通信中継部１１は、アクセスに対する応答をPCIeスイッチ２１から受け付けてサーバ１に出力する。
【００２９】
監視部１２は、入出力デバイスが接続されるPCIeスイッチ２１に対してサーバ１から実行されたアクセスを監視する処理部である。例えば、監視部１２は、通信中継部１１がサーバ１からPCIeスイッチ２１に中継するアクセスを監視する。そして、監視部１２は、PCIeスイッチ２１のコンフィグレーション空間に配置されているレジスタ、言い換えるとPCIeスイッチ２１のコンフィグレーションレジスタへの書き込み要求を抽出して、抽出部１３に出力する。監視部１２は、アクセスの中で指定される書き込み先やコマンド種別等によって、コンフィグレーションレジスタへの書き込み要求を特定する。
【００３０】
また、監視部１２は、コンフィグレーションレジスタへの書き込み要求を抽出するたびに、抽出した書き込み要求を抽出部１３に出力する。すなわち、監視部１２は、現在運用系として動作するPCIeスイッチ２１への初期設定や設定変更を検出して、抽出部１３に抽出することができる。
【００３１】
抽出部１３は、サーバがPCIeスイッチ２１に設定した、サーバ１と入出力デバイスとを接続する情報を示す設定情報を抽出して記憶部１４に記憶させる処理部である。例えば、抽出部１３は、監視部１２から入力されたコンフィグレーションレジスタへの書き込み要求から、PCIeスイッチ２１が使用するI/O領域を抽出して、記憶部１４に格納する。すなわち、抽出部１３は、PCIeスイッチ２１が使用するI/O空間の設定、言い換えるとPCIブリッジ設定を抽出する。
【００３２】
一例を挙げると、サーバ１は、デバイスＡ２２とデバイスＢ２３各々のI/O領域をメモリ空間上に確保し、この確保したI/O領域を含むよう、ブリッジの使用I/O領域とリンクする領域をPCIeスイッチ２１のコンフィグレーションレジスタに書き込む。こうすることで、サーバ１は、メモリ空間上に確保したI/O領域経由でデバイスＡ２２やデバイスＢ２３にアクセスする。ここで、抽出部１３は、サーバ１がPCIeスイッチ２１のコンフィグレーションレジスタに書き込むI/O領域の先頭アドレスとサイズを抽出する。つまり、抽出部１３は、サーバ１がPCIeスイッチ２１に書き込むアドレスマップを抽出する。
【００３３】
また、抽出部１３は、監視部１２から書き込み要求を受信するたびに、受信した書き込み要求からアドレスマップ等を抽出して記憶部１４に書き込む。つまり、抽出部１３は、運用系のPCIeスイッチの設定が変更されるたびに、新たな設定情報を抽出して記憶部１４に書き込むことができ、設定変更を追従することができる。
【００３４】
記憶部１４は、抽出部１３によって書き込まれた設定情報を記憶する記憶装置である。例えば、記憶部１４は、サーバ１がPCIeスイッチ２１に対して設定したアドレスマップを記憶する。なお、記憶部１４が記憶する情報は、抽出部１３によって更新される。
【００３５】
バックアップコントローラ部１５は、入出力デバイスが接続されるPCIeスイッチ３１が接続された場合に、記憶部１４に記憶される設定情報をPCIeスイッチ３１に設定する処理部である。具体的には、バックアップコントローラ部１５は、サーバ１が運用系のPCIeスイッチ２１に対して実行した書き込みアクセスを、サーバ１の指示操作なしに待機系のPCIeスイッチ３１にも発生させる。そして、バックアップコントローラ部１５は、運用系のPCIeスイッチ２１に設定されたアドレスマップ等の設定を、待機系のPCIeスイッチ３１にも実行する。
【００３６】
また、バックアップコントローラ部１５は、記憶部１４に記憶される設定情報が更新されるたびに、待機系のPCIeスイッチ３１への設定を実行する。こうすることで、運用系の設定変更を追従することができる。また、バックアップコントローラ部１５は、切替制御装置１０に新たに接続されたPCIeスイッチに対して、記憶部１４に記憶される設定情報を設定する。したがって、バックアップコントローラ部１５は、運用系が故障して待機系に切り替わった後、旧運用系の代替として新たに新待機系のPCIeスイッチが切替制御装置１０に接続された場合に、記憶部１４に記憶される設定情報を新待機系のPCIeスイッチに設定する。
【００３７】
状態管理部１６は、現在いずれのPCIeスイッチが運用系として動作しているかを保持する処理部である。図１の場合、状態管理部１６は、PCIeスイッチ２１が運用系であることを保持する。状態管理部１６は、切替制御部１７からPCIeスイッチの切替が実行されたことが通知されると、保持する情報を更新する。
【００３８】
切替制御部１７は、運用系のPCIeスイッチを待機系に、待機系のPCIeスイッチを運用系に切り替える制御部である。例えば、切替制御部１７は、PCIeスイッチ２１の故障を検出した場合、状態管理部１６を参照して、故障したPCIeスイッチ２１が運用系であるか否かを判定する。そして、切替制御部１７は、PCIeスイッチ２１が運用系である場合、サーバ１へのアクセス先を待機系のPCIeスイッチ３１に切り替える指示を通信中継部１１に出力する。また、切替制御部１７は、運用系のPCIeスイッチが切り替わったことを状態管理部１６に通知する。
【００３９】
切替制御部１７が切り替える契機としては、運用系のPCIeスイッチに故障が発生した場合、運用系のPCIeスイッチに接続されるPCI  Express延長ケーブルに断線が発生した場合、管理者やサーバ１等から切替指示を受信した場合などがある。また、切替制御部１７が故障を検出する手法としては、管理者から直接指示を受け付けてもよく、サーバ１から受け付けてもよく、定期的な疎通確認やアクセスエラーなどの一般的な手法を用いて検出してもよい。
【００４０】
［処理の流れ］
図３は、実施例１に係る切替制御装置が実行する処理の流れを示すフローチャートである。図３に示すように、切替制御装置１０の監視部１２は、電源が投入されると、通信中継部１１がサーバ１から運用系拡張I/Oボックス２０へ中継するアクセスを監視し、サーバから運用系への設定を監視する（Ｓ１０１）。すなわち、監視部１２は、サーバ１が運用系のPCIeスイッチ２１に実行した初期化処理を監視する。
【００４１】
抽出部１３は、監視部１２によって取得されたアクセスから運用系のPCIeスイッチ２１内のPCIブリッジ設定を抽出する（Ｓ１０２）。続いて、抽出部１３は、抽出したPCIブリッジ設定の情報を記憶部１４に格納する（Ｓ１０３）。
【００４２】
そして、バックアップコントローラ部１５は、切替制御装置１０の通信中継部１１に待機系拡張I/Oボックス３０が接続されている場合（Ｓ１０４肯定）、待機系拡張I/Oボックス３０のPCIeスイッチ３１に、運用系と同様の初期化処理を実行する（Ｓ１０５）。つまり、バックアップコントローラ部１５は、待機系拡張I/Oボックス３０のPCIeスイッチ３１に、記憶部１４に記憶される設定情報を設定する。なお、バックアップコントローラ部１５は、待機系拡張I/Oボックス３０がまだ接続されていない場合（Ｓ１０４否定）、Ｓ１０６を実行する。
【００４３】
その後、バックアップコントローラ部１５は、新たな待機系拡張I/Oボックスが接続された場合（Ｓ１０６肯定）、新たな待機系拡張I/OボックスのPCIeスイッチに対して、記憶部１４に記憶される設定情報を設定する（Ｓ１０７）。一方、バックアップコントローラ部１５は、新たな待機系拡張I/Oボックスがまだ接続されていない場合（Ｓ１０６否定）、Ｓ１０８を実行する。
【００４４】
そして、切替制御部１７は、運用系のPCIeスイッチ等で故障を検出すると（Ｓ１０８肯定）、通信中継部１１を介して、待機系拡張I/Oボックス３０が接続されているか否かを判定する（Ｓ１０９）。
【００４５】
続いて、切替制御部１７は、待機系拡張I/Oボックス３０が接続されていると判定した場合（Ｓ１０９肯定）、運用系拡張I/Oボックス２０に入出力デバイスが接続されているか否かを判定する（Ｓ１１０）。なお、切替制御部１７は、待機系拡張I/Oボックス３０が接続されていないと判定した場合（Ｓ１０９否定）、システム故障と判断してアラーム等をディスプレイに出力したり、サーバ１に通知したりする。
【００４６】
そして、切替制御部１７は、運用系拡張I/Oボックス２０に入出力デバイスが接続されていると判定した場合（Ｓ１１０肯定）、運用系拡張I/Oボックス２０に接続される入出力デバイスにHotRemoveを実行する（Ｓ１１１）。その後、切替制御部１７は、サーバ１からのアクセスを待機系拡張I/Oボックス３０に出力するように指示を通信中継部１１に対して送信して、運用系と待機系とを切り替える（Ｓ１１２）。なお、Ｓ１１０において、切替制御部１７は、運用系拡張I/Oボックス２０に入出力デバイスが接続されていないと判定した場合（Ｓ１１０否定）、Ｓ１１１を実行することなく、Ｓ１１２を実行する。
【００４７】
続いて、切替制御部１７は、新しい運用系拡張I/Oボックス３０に入出力デバイスが接続されている場合（Ｓ１１３肯定）、新しい運用系拡張I/Oボックス３０に接続される全デバイスにHotAddを実行する（Ｓ１１４）。
【００４８】
その後、切替制御装置１０は、Ｓ１０６以降の処理を繰り返す。同様に、Ｓ１１３において、切替制御部１７が新しい運用系拡張I/Oボックス３０に入出力デバイスが接続されていないと判定した場合（Ｓ１１３否定）、切替制御装置１０は、Ｓ１０６以降の処理を繰り返す。また、Ｓ１０８において、切替制御部１７が運用系のPCIeスイッチ等で故障を検出しない間は（Ｓ１０８否定）、切替制御装置１０は、Ｓ１０６以降の処理を繰り返す。
【００４９】
［設定処理の説明］
図４は、実施例１に係る切替制御装置が実行する設定処理を説明する図である。図４の上図に示すように、サーバ１は、運用系拡張I/Oボックス２０の入出力デバイスが使用するI/O領域を抽出し、抽出した入出力デバイスのI/O領域をメモリ空間に確保する。そして、サーバ１は、メモリ空間上で確保されたI/O領域をPCIeスイッチ２１のコンフィグレーションレジスタに書き込む。このようにすることで、サーバ１のメモリ空間に確保された入出力デバイスのI/O空間（アドレス空間）と、運用系拡張I/Oボックス２０のPCIeスイッチ２１のコンフィグレーションレジスタに書き込まれた入出力デバイスのI/O空間とを対応させることができる。
【００５０】
そして、切替制御装置１０は、運用系拡張I/Oボックス２０のPCIeスイッチ２１のコンフィグレーションレジスタに書き込まれた入出力デバイスの領域を抽出し、待機系拡張I/Oボックス３０のPCIeスイッチ３１のコンフィグレーションレジスタに書き込む。つまり、切替制御装置１０は、サーバ１のメモリ空間に確保された入出力デバイスのアドレス空間に、PCIeスイッチ３１のコンフィグレーションレジスタに書き込まれた入出力デバイスのアドレス空間をさらに対応付ける。
【００５１】
このようにすることで、サーバ１から見たI/O空間には、運用系のPCIeスイッチ２１が有する各スロットのI/O空間が対応付けられているように見える。しかし、実際には、サーバ１のメモリ空間に確保されたI/O空間に、運用系のPCIeスイッチ２１が有する各スロットのI/O空間と、待機系のPCIeスイッチ３１が有する各スロットのI/O空間とが対応付けられている。
【００５２】
このような状態で、サーバ１のアクセス先が運用系のPCIeスイッチ２１から待機系のPCIeスイッチ３１に切り替わったとする。この場合でも、図４の下図に示すように、すでに待機系のPCIeスイッチ３１が有する各スロットのI/O空間が、サーバ１のメモリ空間に確保されたI/O空間に対応付けられている。したがって、サーバ１は、アクセス先のPCIeスイッチが切り替わったことに気付かずに、メモリ空間の内のI/O空間を経由して、PCIeスイッチ３１に接続される入出力デバイスにアクセスすることができる。
【００５３】
その後、切替制御装置１０は、故障した旧運用系I/Oボックスに代わって新たな待機系I/Oボックスが接続されたことを検出すると、旧運用系I/OボックスのPCIeスイッチに設定したI/O空間を新たな待機系I/OボックスのPCIeスイッチに設定する。こうすることで、サーバ１の停止や再起動を実行することなく、待機系のPCIeスイッチを増設することもできる。
【００５４】
このように、切替制御装置１０は、サーバ１の指示等に関係なく、運用系として使用されるPCIeスイッチ２１に設定された設定情報を抽出して、未設定のPCIeスイッチに対しても運用系のPCIeスイッチと同じ設定を実行することができる。したがって、切替制御装置１０は、運用系のPCIeスイッチが故障した場合でも、サーバ１の設定や再起動を実行することなく、待機系のPCIeスイッチに切り替えることができる。
【００５５】
また、切替制御装置１０は、故障した運用系のスロットにHotRemoveを実行して、各スロットを無効化して、スロットの電源をオフにした後に、待機系のスロットにHotAddを実行して、運用系と待機系とを切り替える。このため、切替制御装置１０は、運用系のスロットに関する情報をリセットすることができ、待機系のスロットを有効にした場合の不具合を減少させることができる。
【００５６】
また、切替制御装置１０は、運用系のPCIeスイッチ２１の設定変更に追従することができるので、待機系のPCIeスイッチ３１にも最新の情報を設定することができる。また、切替制御装置１０は、待機系のPCIeスイッチが接続されるたびに、運用系のPCIeスイッチに設定した情報を設定することができるので、待機系を容易に増設することができる。また、サーバ１は、１台のPCIeスイッチに対して設定すればよいので、設定にかかる管理者等の負担を軽減することもできる。
【実施例２】
【００５７】
ところで、実施例１では、運用系のPCIeスイッチが故障した場合に、待機系のPCIeスイッチに切り替える場合を説明したが、実施例２では、故障したスロットだけを待機系に切り替える例について説明する。
【００５８】
［全体構成］
図５は、実施例２に係る切替制御装置を説明する図である。図５に示すシステムは、実施例１と同様に、サーバ１と切替制御装置１０と運用系拡張I/Oボックス２０と待機系拡張I/Oボックス３０とを有する。なお、各装置の説明は、実施例１と同様なので省略する。
【００５９】
実施例２では、切替制御装置１０は、疎通確認やアクセスエラー等によって、運用系のPCIeスイッチ２１が有するスロット２１ｂに接続されるデバイスＢ２３について障害を検出する。すると、切替制御装置１０は、障害を検出したスロット２１ｂに対応するスロットとして、待機系のPCIeスイッチ３１が有するスロット３１ｂを特定する。一例を挙げると、切替制御装置１０は、PCIeスイッチ２１のコンフィグレーションレジスタに設定されたスロットごとのI/O空間と、PCIeスイッチ３１のコンフィグレーションレジスタに設定されたスロットごとのI/O空間とを比較して特定する。
【００６０】
そして、切替制御装置１０は、運用系のPCIeスイッチ２１のスロット２１ｂに接続されるデバイスＢ２３を、待機系のPCIeスイッチ３１のスロット３１ｂに接続されるデバイスＤ３３に切り替える。つまり、切替制御装置１０は、サーバ１からデバイスＢ２３へのアクセスを受信した場合には、当該アクセスをデバイスＤ３３へ送信する。具体的には、切替制御装置１０は、PCIeスイッチ３１に設定されるデバイスＢ２３のI/O領域へのアクセスをデバイスＤ３３に送信する。
【００６１】
［切替制御装置の構成］
図６は、実施例２に係る切替制御装置の構成を示す機能ブロック図である。図６に示すように、実施例２に係る切替制御装置１０は、通信中継部１１と監視部１２と抽出部１３と記憶部１４とバックアップコントローラ部１５と状態管理部１６と切替制御部１７とスロット検出部１８とを有する。
【００６２】
通信中継部１１と監視部１２と抽出部１３とバックアップコントローラ部１５と状態管理部１６と切替制御部１７とスロット検出部１８とは、例えばＣＰＵなどの電子回路やＦＰＧＡなどの集積回路である。記憶部１４は、例えば半導体メモリ素子などの記憶装置である。
【００６３】
また、通信中継部１１と監視部１２と抽出部１３と記憶部１４とバックアップコントローラ部１５と状態管理部１６と切替制御部１７とは、実施例１と同様の機能を有するので、詳細な説明は省略する。ここでは、実施例１とは異なる機能であるスロット検出部１８について説明する。
【００６４】
なお、状態管理部１６は、スロットごとに運用系と待機系とを関連付けて保持する。例えば、状態管理部１６は、各スイッチの各スロットごとに、当該スロットが運用系であるか待機系であるかを示す情報を記憶する。また、抽出部１３やバックアップコントローラ部１５等は、PCIeスイッチ２１に設定されたスロットごとのI/O領域と、PCIeスイッチ３１に設定されたスロットごとのI/O領域との対応を生成して記憶部１４に格納する。
【００６５】
スロット検出部１８は、サーバ１からのアクセスがどのスロットへのアクセスかを検出する処理部である。例えば、スロット検出部１８は、サーバ１のアクセスに含まれるデバイス名からアクセス先のスロットを特定することができる。また、スロット検出部１８は、サーバ１がアクセスしたI/O領域と記憶部１４に記憶されるアドレスマップ等を比較して、アクセス対象のI/O領域を特定することで、アクセス先のスロットを特定することもできる。
【００６６】
例えば、スロット検出部１８がアクセス先のスロット２１ｂを検出し、切替制御部１７がアクセス先から応答がない場合に、アクセス先のスロット２１ｂで障害が発生したことを検出する。そして、切替制御部１７は、障害を検出した運用系のPCIeスイッチ２１が有するスロット２１ｂへのアクセスを、待機系のPCIeスイッチ３１が有するスロット３１ｂへ切り替える指示を通信中継部１１に出力する。その後、通信中継部１１は、サーバ１がデバイスＢ２３にアクセスした場合、当該アクセスをデバイスＤ３３に送信する。
【００６７】
［処理の流れ］
図７は、実施例２に係る切替制御装置が実行する処理の流れを示すフローチャートである。図７に示すＳ２０１からＳ２０７までの処理は、実施例１で説明した図３のＳ１０１からＳ１０７と同様の処理なので、ここでは説明を省略する。
【００６８】
そして、通信中継部１１がアクセスを検出した場合（Ｓ２０８肯定）、スロット検出部１８は、検出されたアクセスのアクセス先がどのスロットかを検出する（Ｓ２０９）。続いて、切替制御部１７は、検出されたスロットの運用系を状態管理部１６に保持される情報から特定する（Ｓ２１０）。そして、通信中継部１１は、特定されたスロットを有する運用系拡張I/Oボックスに、受信されたアクセスを送信する（Ｓ２１１）。
【００６９】
具体的な例を説明すると、スロット検出部１８は、サーバ１がメモリ空間における所定のI/O領域経由でアクセスした場合に、当該I/O領域に該当するスロットを記憶部１４等から特定する。そして、切替制御部１７は、状態管理部１６が保持する情報を参照し、スロット検出部１８が検出したスロットすなわちスロット検出部１８が検出したI/O領域において、現在運用系であるスロット２１ｂを特定する。その後、通信中継部１１は、切替制御部１７が特定したスロット２１ｂを有するPCIeスイッチ２１に対して、サーバ１から受信したアクセスを送信する。
【００７０】
図７に戻り、切替制御部１７は、通信中継部１１から中継したアクセス先で故障を検出した場合（Ｓ２１２肯定）、待機系拡張I/Oボックスが接続されているか否かを判定する（Ｓ２１３）。なお、通信中継部１１から中継したアクセス先で故障を検出しない場合（Ｓ２１２否定）、切替制御装置１０は、Ｓ２０６以降を繰り返す。
【００７１】
切替制御部１７は、運用系拡張I/Oボックスが接続されていると判定した場合（Ｓ２１３肯定）、運用系拡張I/Oボックスが有するＳ２０９やＳ２１０で特定されたスロットにHotRemoveを実行する（Ｓ２１４）。その後、切替制御部１７は、サーバ１からＳ２０９やＳ２１０で特定されたスロットに対するアクセス先、運用系から待機系に切り替える（Ｓ２１５）。
【００７２】
続いて、切替制御部１７は、新しい運用系拡張I/Oボックスの該当スロットに入出力デバイスが接続されている場合（Ｓ２１６肯定）、新しい運用系拡張I/Oボックスの該当スロットにHotAddを実行する（Ｓ２１７）。
【００７３】
その後、切替制御装置１０は、Ｓ２０６以降の処理を繰り返す。同様に、Ｓ２１６において、切替制御部１７が新しい運用系拡張I/Oボックスの該当スロットに入出力デバイスが接続されていないと判定した場合（Ｓ２１６否定）、切替制御装置１０は、Ｓ２０６以降の処理を繰り返す。
【００７４】
なお、Ｓ２１３において、切替制御部１７は、待機系拡張I/Oボックスが接続されていないと判定した場合（Ｓ２１３否定）、システム故障と判断してアラーム等をディスプレイに出力したり、サーバ１に通知したりする。
【００７５】
［設定処理の説明］
図８は、実施例２に係る切替制御装置が実行する設定処理を説明する図である。図８の上図は、図４の上図と同様なので、詳細な説明は省略する。具体的には、サーバ１から見たI/O空間には、運用系のPCIeスイッチが有する各スロットのI/O空間が対応付けられているように見える。実際には、サーバ１のメモリ空間に確保されたI/O空間に、運用系のPCIeスイッチが有する各スロットのI/O空間と、待機系のPCIeスイッチが有する各スロットのI/O空間とが対応付けられている。
【００７６】
このような状態で、サーバ１のアクセス先である運用系のスロット２に障害が発生したとする。この場合、切替制御装置１０は、サーバから見たスロット２のI/O空間に、待機系のスロット２のI/O空間を対応付けることで、障害が発生したスロット２を待機系に切り替える。具体的には、図８の下図に示すように、すでに待機系のPCIeスイッチが有する各スロットのI/O空間が、サーバ１のメモリ空間に確保されたI/O空間に対応付けられている。したがって、切替制御装置１０内部で対応付けを制御することで切り替えることができる。このため、サーバ１は、アクセス先のスロット２が運用系から待機系に切り替わったことに気付かずに、メモリ空間の内のI/O空間を経由して、該当スロットに接続される入出力デバイスにアクセスすることができる。
【００７７】
このようにすることで、運用系の入出力デバイスが故障した場合でも、故障した入出力デバイスについてのみ待機系に切り替えることができるので、システムを停止させることなく、サーバ１のアクセスを処理することができる。また、故障した入出力デバイスが新しい入出力デバイスに交換されるまでの間も、サーバ１のアクセスを正常に処理することができる。また、PCIeスイッチ自体を切り替えることに比べて、スロット単位で切り替えるので、切替時のリスクを軽減することもできる。
【実施例３】
【００７８】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。
【００７９】
（対象スイッチ）
上記実施例では、PCIeスイッチを例にして説明したが、これに限定されるものではなく、例えば、ホストコンピュータと、ホストコンピュータからケーブルを延長して接続される外部の入出力装置との間を接続する中継装置に適用することができる。また、入出力装置へのスイッチングを行うスイッチであって、ホストコンピュータから設定を実行するブリッジやスイッチにも適用することができる。
【００８０】
（切替先）
また、切替制御装置は、複数の待機系を接続することができる。したがって、切替制御装置は、複数のPCIeスイッチが待機系として接続されている状況で、運用系に障害が発生した場合には、運用系と同様の初期化処理が実行されたPCIeスイッチの中から任意のスイッチを切替先として選択することができる。また、切替制御装置が切替先を選択する基準は任意に設定することができる。例えば、切替制御装置は、初期化処理にかかった時間が最も少なかったスイッチ、初期化処理でエラーが発生しなかったスイッチ等を切替先として選択することもできる。
【００８１】
（システム）
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００８２】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００８３】
（ハードウェア構成）
ところで、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することができる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータシステムの一例を説明する。
【００８４】
図９は、スイッチ切替プログラムを実行するコンピュータのハードウェア構成の例を示す図である。図９に示すように、コンピュータ１００は、ＣＰＵ１０２、入力装置１０３、出力装置１０４、通信インタフェース１０５、媒体読取装置１０６、ＨＤＤ（Hard  Disk  Drive）１０７、ＲＡＭ（Random  Access  Memory）１０８を有する。また、図９に示した各部は、バス１０１で相互に接続される。
【００８５】
入力装置１０３は、マウスやキーボードであり、出力装置１０４は、ディスプレイなどであり、通信インタフェース１０５は、ＮＩＣ（Network  Interface  Card）などのインタフェースである。ＨＤＤ１０７は、スイッチ切替プログラム１０７ａとともに、図２に示した記憶部に記憶される情報を記憶する。記録媒体の例としてＨＤＤ１０７を例に挙げたが、ＲＯＭ（Read  Only  Memory）、ＲＡＭ、ＣＤ−ＲＯＭ等の他のコンピュータ読み取り可能な記録媒体に各種プログラムを格納しておき、コンピュータに読み取らせることとしてもよい。なお、記録媒体を遠隔地に配置し、コンピュータが、その記憶媒体にアクセスすることでプログラムを取得して利用してもよい。また、その際、取得したプログラムをそのコンピュータ自身の記録媒体に格納して用いてもよい。
【００８６】
ＣＰＵ１０２は、スイッチ切替プログラム１０７ａを読み出してＲＡＭ１０８に展開することで、図２や図６等で説明した各機能を実行するスイッチ切替プロセス１０８ａを動作させる。すなわち、スイッチ切替プロセス１０８ａは、図２に記載した通信中継部１１と監視部１２と抽出部１３とバックアップコントローラ部１５と状態管理部１６と切替制御部１７と同様の機能を実行する。また、スイッチ切替プロセス１０８ａは、図６に記載したスロット検出部１８と同様の機能を実行する。このようにコンピュータ１００は、プログラムを読み出して実行することでスイッチ切替方法を実行する情報処理装置として動作する。
【００８７】
また、コンピュータ１００は、媒体読取装置１０６によって記録媒体からスイッチ切替プログラムを読み出し、読み出されたスイッチ切替プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、コンピュータ１００によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【符号の説明】
【００８８】
１  サーバ
１０  切替制御装置
１０ａ、１４  記憶部
１０ｂ、１２  監視部
１０ｃ  記憶制御部
１０ｄ  設定制御部
１０ｅ  切替制御部
１１  通信中継部
１３  抽出部
１５  バックアップコントローラ部
１６  状態管理部
１７  切替制御部
１８  スロット検出部
２０  運用系拡張I/Oボックス
２１  PCIeスイッチ
２１ａ  スロット
２１ｂ  スロット
２２  デバイスＡ
２３  デバイスＢ
３０  待機系拡張I/Oボックス
３１  PCIeスイッチ
３１ａ  スロット
３１ｂ  スロット
３２  デバイスＣ
３３  デバイスＤ
【図１】
0005915086.tif 000002
【図２】
0005915086.tif 000003
【図３】
0005915086.tif 000004
【図４】
0005915086.tif 000005
【図５】
0005915086.tif 000006
【図６】
0005915086.tif 000007
【図７】
0005915086.tif 000008
【図８】
0005915086.tif 000009
【図９】
0005915086.tif 000010