(57)【特許請求の範囲】
【請求項１】
プロセッサとメモリとインターフェースとを有する複数の計算機と、
前記複数の計算機を前記インターフェース経由で接続されたＰＣＩスイッチと、
前記ＰＣＩスイッチに接続されたＩ／Ｏデバイスと、
前記ＰＣＩスイッチの構成を管理する管理部と、を備えた計算機システムにおいて、
前記管理部は、
前記複数の計算機のうちの現用系計算機と、前記Ｉ／Ｏデバイスとを接続する第１の通信経路を設定するスイッチ管理部と、
前記複数の計算機のうちの前記現用系計算機を引き継ぐ待機系計算機に対して、前記現用系計算機が利用するＩ／Ｏデバイスまでのアクセスを指令するホスト管理部と、を有し、
前記スイッチ管理部は、
前記現用系計算機の前記インターフェースと第１の仮想スイッチを接続する第１の仮想ブリッジと、前記現用系計算機が利用するＩ／Ｏデバイスと前記第１の仮想スイッチとを接続する第２の仮想ブリッジから前記第１の通信経路を前記ＰＣＩスイッチに設定し、
前記待機系計算機の前記インターフェースと第２の仮想スイッチを接続する第３の仮想ブリッジと、前記待機系計算機が引き継ぐ現用系計算機が利用するＩ／Ｏデバイスと前記第２の仮想スイッチとを接続する第４の仮想ブリッジとから第２の通信経路を前記ＰＣＩスイッチに設定し、当該第２の通信経路のうち前記待機系計算機が引き継ぐ現用系計算機が利用するＩ／Ｏデバイスと第４の仮想ブリッジ間の通信を無効化し、
前記ホスト管理部は、
前記第２の通信経路が設定された後に、前記待機系計算機に対して前記待機系計算機が引き継ぐ現用系計算機が利用するＩ／Ｏデバイスに接続された第４の仮想ブリッジまでのアクセスを指令し、
前記待機系計算機は、
前記ホスト管理部からのアクセスを指令に従って、前記待機系計算機が引き継ぐ現用系計算機が利用するＩ／Ｏデバイスに接続された前記第４の仮想ブリッジまでアクセスし、
前記ホスト管理部は、
前記待機系計算機からのアクセス結果をそれぞれ受信して、これらのアクセス結果のうちのひとつに障害があれば、当該待機系計算機での前記現用系計算機の引き継ぎが不能であると判定することを特徴とすることを特徴とする計算機システム。
【請求項２】
前記スイッチ管理部は、
前記第２の通信経路のパスツリーを、前記第１の通信経路のパスツリーと同型とすることを特徴とする請求項１に記載の計算機システム。
【請求項３】
前記ホスト管理部は、
前記第２の計算機から前記第２の通信経路のアクセス結果を受信して、当該第２の通信経路がアクセス可能か否かを示す情報を保持することを特徴とする請求項１に記載の計算機システム。
【請求項４】
前記現用計算機の稼動状態を監視して、現用系計算機に障害が発生したときには、前記現用系計算機の処理を複数の待機系計算機のうちにひとつに引き継がせる引き継ぎ制御部をさらに備え、
前記ホスト管理部は、
前記待機系計算機から前記第２の通信経路のアクセス結果を受信して、当該待機系計算機で現用系計算機を引き継ぐことが可能か否かを示す情報を前記待機系計算機毎に保持し、
前記引き継ぎ制御部は、
前記現用系計算機に障害が発生したときには、前記ホスト管理部から前記待機系計算機で現用系計算機を引き継ぐことが可能か否かを示す情報を参照して現用系計算機を引き継ぐ計算機を決定することを特徴とする請求項１に記載の計算機システム。
【請求項５】
前記第１の計算機は、仮想計算機を実行する現用系計算機で構成され、
前記第２の計算機は、前記仮想計算機を引き継ぐ待機系計算機で構成され、
前記スイッチ管理部は、
前記現用系計算機で実行される仮想計算機が使用する前記インターフェースと第１の仮想スイッチを接続する第１の仮想ブリッジと、前記Ｉ／Ｏデバイスと前記第１の仮想スイッチとを接続する第２の仮想ブリッジからなる前記第１の通信経路を前記ＰＣＩスイッチに設定し、
前記待機系計算機の前記インターフェースと第２の仮想スイッチを接続する第３の仮想ブリッジと、前記Ｉ／Ｏデバイスと前記第２の仮想スイッチとを接続する第４の仮想ブリッジとからなる第２の通信経路を前記ＰＣＩスイッチに設定し、当該第２の通信経路のうち前記Ｉ／Ｏデバイスと第４の仮想ブリッジ間の通信を無効化し、
前記ホスト管理部は、
前記第２の通信経路が設定された後に、前記待機系計算機に対して前記Ｉ／Ｏデバイスに接続された第４の仮想ブリッジまでのアクセスを指令することを特徴とする請求項１に記載の計算機システム。
【請求項６】
前記第１の計算機と第２の計算機を管理する引き継ぎ制御部をさらに有し、
前記ホスト管理部は、
前記第２の計算機から前記第２の通信経路で前記第４の仮想ブリッジまでアクセスした結果を受信し、当該アクセス結果に異常がある場合には、前記引き継ぎ制御部に前記異常を通知することを特徴とする請求項１に記載の計算機システム。
【請求項７】
前記ホスト管理部は、
前記第２の計算機から受信したアクセス結果を、前記第２の計算機から前記Ｉ／Ｏデバイスまでのアクセスパスの状態として取得することを特徴とする請求項１に記載の計算機システム。
【請求項８】
前記ＰＣＩスイッチには複数のＩ／Ｏデバイスが接続され、
前記スイッチ管理部は、
前記現用系計算機が利用する複数のＩ／Ｏデバイスについて、前記第２の通信経路をそれぞれ設定し、
前記ホスト管理部は、
前記待機系計算機に対して前記各Ｉ／Ｏデバイスに接続された前記第４の仮想ブリッジまでのアクセスを順次指令し、
前記待機系計算機からのアクセス結果をそれぞれ受信して、これらのアクセス結果のうちのひとつに障害があれば、当該待機系計算機での前記現用系計算機の引き継ぎが不能であると判定することを特徴とする請求項１に記載の計算機システム。
【請求項９】
プロセッサとメモリとインターフェースとを有する複数の計算機と、
前記複数の計算機を前記インターフェース経由で接続されたＰＣＩスイッチと、
前記ＰＣＩスイッチに接続されたＩ／Ｏデバイスと、
前記ＰＣＩスイッチの構成を管理する管理部と、を備えて、前記計算機からＩ／Ｏデバイスまでの通信経路を監視する通信経路の監視方法であって、
前記管理部が、前記複数の計算機のうちの現用系計算機の前記インターフェースと第１の仮想スイッチを接続する第１の仮想ブリッジと、前記現用系計算機が利用するＩ／Ｏデバイスと第１の仮想スイッチとを接続する第２の仮想ブリッジから第１の通信経路を前記ＰＣＩスイッチに設定するステップと、
前記管理部が、前記複数の計算機のうちの待機系計算機の前記インターフェースと第２の仮想スイッチを接続する第３の仮想ブリッジと、前記待機系計算機が引き継ぐ現用系計算機が利用する前記Ｉ／Ｏデバイスと前記第２の仮想スイッチとを接続する第４の仮想ブリッジから第２の通信経路を前記ＰＣＩスイッチに設定し、当該第２の通信経路のうち前記待機系計算機が引き継ぐ現用系計算機が利用するＩ／Ｏデバイスと第４の仮想ブリッジ間の通信を無効化するステップと、
前記管理部が、前記第２の通信経路が設定された後に、前記待機系計算機に対して前記待機系計算機が引き継ぐ現用系計算機が利用するＩ／Ｏデバイスに接続された第４の仮想ブリッジまでのアクセスを指令するステップと、
前記待機系計算機が、前記ホスト管理部からのアクセスを指令に従って、前記待機系計算機が引き継ぐ現用系計算機が利用するＩ／Ｏデバイスに接続された前記第４の仮想ブリッジまでアクセスするステップと、
前記ホスト管理部が、前記待機系計算機からのアクセス結果をそれぞれ受信して、これらのアクセス結果のうちのひとつに障害があれば、当該待機系計算機での前記現用系計算機の引き継ぎが不能であると判定するステップと、を含むことを特徴とする通信経路の監視方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の計算機と複数のＰＣＩデバイスをＰＣＩスイッチで接続した複合型計算機システムに関し、特に、現用系と待機系の計算機を備えて、現用系に障害が発生したときに、待機系を稼動させてＰＣＩデバイスを引き継ぐ制御技術に関するものである。
【背景技術】
【０００２】
近年、サーバの管理を容易にするために１つの装置に複数の計算機を搭載したブレードサーバが用いられるようになっている（例えば、特許文献１）。またＣＰＵに複数のプロセッサコアを持つマルチコア化によりＣＰＵの処理性能が向上し、それに伴い効率的にＣＰＵを使用するため１つの計算機に複数の仮想的なサーバを稼動させる仮想サーバ技術が用いられるようになっている。
【０００３】
計算機では他の計算機とのネットワーク通信やストレージ装置の接続にＮＩＣ（Network Interface Card）やＦＣ−ＨＢＡ（Fiber Channel-Host Bus Adapter）等のＩ／Ｏデバイスが用いられるが、上記のように１つの計算機に複数のサーバを稼動させる場合は相対的に計算機当りのＩ／Ｏデバイス数が不足する。このような問題を補う技術として、複数の計算機と複数のＩ／ＯデバイスであるＰＣＩ（Peripheral Component Interconnect）デバイス（またはＰＣＩｅｘｐｒｅｓｓデバイス）とを接続可能とするマルチルートＰＣＩスイッチ技術が知られている。マルチルートＰＣＩスイッチ技術では、１つの計算機に接続可能なＰＣＩデバイスの個数をスケーラブルに変えることが可能である（例えば、特許文献１、特許文献２等）。後者のマルチルートＩ／Ｏ仮想化技術では、１つのＰＣＩデバイスを共有することで仮想的にＰＣＩデバイスの数を増やすことが可能である。これらの技術を用いることで、仮想サーバを用いた場合のＩ／Ｏデバイス数の不足を解消することができる。
【０００４】
また、複数の計算機を、業務で利用する現用系と、現用系に障害が発生したときに稼動させる待機系とに分けて運用を行うクラスタシステムが広く知られている。
【特許文献１】米国特許第７０５８７３８号
【特許文献２】米国特許出願公開第２００６／２４２３５３号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記従来のクラスタシステムでは、現用系に障害が発生して待機系に切り替える場合、現用系の計算機と待機系の計算機にそれぞれＩ／Ｏアダプタ（Ｉ／Ｏデバイス）を備えるため、現用系から待機系に切り替える際には、待機系のＩ／Ｏアダプタの識別子を現用系のＩ／Ｏアダプタの識別子に変更しなければ、現用系と同じ環境でＩ／Ｏデバイスを利用できない、という問題があった。
【０００６】
すなわち、上記従来のクラスタシステムでは計算機とＩ／Ｏアダプタの関係が固定されているため、計算機を現用系から待機系に切り替える際には、同時にＩ／Ｏアダプタも切り替える必要があった。Ｉ／Ｏアダプタとして、例えば、ＳＡＮ（Storage Area network）に接続するためのファイバチャネルのホストバスアダプタ（ＨＢＡ）では、ＨＢＡに固有のＷＷＮ(World Wide Name)を有し、Ｉ／Ｏアダプタに接続されたストレージ装置は、ＷＷＮを使ってアクセス元の計算機を判別しているため、Ｉ／Ｏアダプタを切り替える際にはＷＷＮを現用系のＩ／Ｏアダプタの値に書き換える必要がある。このため、上記従来のクラスタシステムでは、ＷＷＮを変更できないＨＢＡは利用できないという、制限があった。
【０００７】
この制限を解決するために、上記のようなマルチルートＰＣＩスイッチを利用し、マルチルートＰＣＩスイッチに現用系と待機系の計算機とＩ／Ｏアダプタを接続し、現用系から待機系に切り替える際には、現用系の計算機からＩ／Ｏアダプタの経路（パス）を、待機系の計算機からＩ／Ｏアダプタまでの経路に切り替えることが考えられる。
【０００８】
この場合、待機系の計算機から現用系の計算機で利用しているＩ／Ｏアダプタまでの経路に障害が発生していると、さらに他の計算機で現用系の計算機を引き継ぐ必要があるため、現用系の計算機で提供していた業務の停止時間が増大する、という問題があった。
【０００９】
さらに、現用系の計算機はＩ／Ｏアダプタを使用中であるため、待機系の計算機からこのＩ／Ｏアダプタまでの経路に障害が発生しているか否かを検出することはできないという問題があった。
【００１０】
そこで本発明は、上記問題点に鑑みてなされたもので、現用系の計算機から待機系の計算機へＩ／Ｏデバイスを継承する計算機システムにおいて、待機系の計算機から現用系の計算機で利用しているＩ／Ｏデバイスまでの経路に障害が発生しているか否かを検出することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、プロセッサとメモリとインターフェースとを有する複数の計算機と、前記複数の計算機を前記インターフェース経由で接続されたＰＣＩスイッチと、前記ＰＣＩスイッチに接続されたＩ／Ｏデバイスと、前記ＰＣＩスイッチの構成を管理する管理部と、を備えた計算機システムにおいて、前記管理部は、前記複数の計算機のうちの現用系計算機と、前記Ｉ／Ｏデバイスとを接続する第１の通信経路を設定するスイッチ管理部と、前記複数の計算機のうちの前記現用系計算機を引き継ぐ待機系計算機に対して、前記現用系計算機が利用するＩ／Ｏデバイスまでのアクセスを指令するホスト管理部と、を有し、前記スイッチ管理部は、前記現用系計算機の前記インターフェースと第１の仮想スイッチを接続する第１の仮想ブリッジと、前記現用系計算機が利用するＩ／Ｏデバイスと前記第１の仮想スイッチとを接続する第２の仮想ブリッジから前記第１の通信経路を前記ＰＣＩスイッチに設定し、前記待機系計算機の前記インターフェースと第２の仮想スイッチを接続する第３の仮想ブリッジと、前記待機系計算機が引き継ぐ現用系計算機が利用するＩ／Ｏデバイスと前記第２の仮想スイッチとを接続する第４の仮想ブリッジとから第２の通信経路を前記ＰＣＩスイッチに設定し、当該第２の通信経路のうち前記待機系計算機が引き継ぐ現用系計算機が利用するＩ／Ｏデバイスと第４の仮想ブリッジ間の通信を無効化し、前記ホスト管理部は、前記第２の通信経路が設定された後に、前記待機系計算機に対して前記待機系計算機が引き継ぐ現用系計算機が利用するＩ／Ｏデバイスに接続された第４の仮想ブリッジまでのアクセスを指令し、前記待機系計算機は、前記ホスト管理部からのアクセスを指令に従って、前記待機系計算機が引き継ぐ現用系計算機が利用するＩ／Ｏデバイスに接続された前記第４の仮想ブリッジまでアクセスし、前記ホスト管理部は、前記待機系計算機からのアクセス結果をそれぞれ受信して、これらのアクセス結果のうちのひとつに障害があれば、当該待機系計算機での前記現用系計算機の引き継ぎが不能であると判定することを特徴とすることを特徴とする。
【００１２】
また、前記ホスト管理部は、前記第２の計算機から前記第２の通信経路のアクセス結果を受信して、当該第２の通信経路がアクセス可能か否かを示す情報を保持する。
【発明の効果】
【００１３】
したがって、本発明によれば、第１の計算機で利用中のＩ／Ｏデバイスに対して、第２の計算機からｉ／Ｏデバイスの直前の仮想ブリッジまでの通信経路について障害の有無を把握することができる。第２の計算機で第１の計算機を引き継ぐ際には、第２の計算機側の通信経路の異常を予め検出でき、第２の計算機側で引き継ぎ時の障害発生を防いで計算機システムの信頼性を向上させることができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の一実施形態を添付図面に基づいて説明する。
【００１５】
図１は、第１の実施形態を示し、本発明を適用する計算機システムのブロック図である。計算機システムは、業務を実行する現用系計算機１００ａ〜１００ｄと、現用系計算機１００ａ〜１００ｄのいずれかに障害が発生したときに業務を引き継ぐ待機系計算機１１０ｅ、１１０ｆと、各計算機が利用するＩ／Ｏデバイス２２０ａ−１〜２２０ａ−８及び２２０ｂ−２〜２２０ｂ−７と、各現用系及び待機系計算機と各Ｉ／Ｏデバイスを接続するＰＣＩスイッチ３００ａ、３００ｂと、ＰＣＩスイッチ３００ａ、３００ｂを管理するＰＣＩマネージャ４００と、現用系計算機と待機系計算機を管理するサービスプロセッサ１５０と、を備える。
【００１６】
現用系計算機１００ａ〜１００ｄと待機系計算機１１０ｅ、１１０ｆは、同一の構成であり、以下、現用系計算機１００ａの構成について説明し、他の計算機に関する説明を省略する。
【００１７】
現用系計算機１００ａは、演算処理を行うプロセッサ１０１ａ−１、１０１ａ−２と、データや命令を格納するメモリ１０５ａと、ＰＣＩスイッチ３００ａ、３００ｂと通信を行うインターフェースとしてのルートコンプレックス１０３ａと、プロセッサ１０１ａ−１、１０１ａ−２とメモリ１０５ａ及びルートコンプレックス１０３ａを接続するチップセット１０２ａと、サービスプロセッサ１５０に接続するインターフェースとしての計算機管理用ポート１０６ａと、を備える。
【００１８】
ルートコンプレックス１０３ａは、ＰＣＩスイッチ３００ａ、３００ｂと接続するためのインタフェースとしてルートポート１０４ａ−ａと１０４ａ−ｂを備えており、現用系計算機１００ａは、これらのルートポート１０４ａ−ａ、１０４ａ−ｂを介してＰＣＩスイッチ３００ａ、３００ｂに接続されたＩ／Ｏデバイス２２０ａ−１〜２２０ａ−８、２２０ｂ−２〜２２０ｂ−７にアクセスする。なお、Ｉ／Ｏデバイスとしては、例えば、前記従来例のようなＨＢＡやネットワークインターフェースカードなどで構成することができる。
【００１９】
なお、以下では、現用系計算機１００ａ〜１００ｄの総称を現用系計算機１００とし、待機系計算機１１０ｅ、１１０ｆの総称を待機系計算機１１０として説明する。また、待機系計算機１１０は、コールドスタンバイとする。
【００２０】
＜サービスプロセッサ＞
サービスプロセッサ１５０は、現用系計算機１００と待機系計算機１１０の稼動状態及び業務の割り当てと、現用系計算機１００と待機系計算機１１０の業務の引き継ぎを管理する計算機であり、情報の入出力を行う管理コンソール１８０を備える。本発明の計算機システムは、現用系計算機１００と待機系計算機１１０で障害による業務の停止を回避するクラスタシステムを構成する。サービスプロセッサ１５０は、図示しないプロセッサとメモリを備え、ホスト制御パス（ネットワーク）１６０を介して現用系計算機１００及び待機系計算機１１０に接続される。また、サービスプロセッサ１５０は、ホスト管理パス１７０（第２ネットワーク）を介してＰＣＩマネージャ４００に接続される。
【００２１】
サービスプロセッサ１５０は、現用系計算機１００の稼動状態を監視し、現用系計算機１００に障害が発生すると、待機系計算機１１０ｅまたは１１０ｆに業務の引き継ぎ（フェイルオーバ）を指令する。この引き継ぎの際に、サービスプロセッサ１５０は、後述するように、障害が発生した現用系計算機１００を引き継ぐことが可能な待機系計算機１１０をＰＣＩマネージャ４００に問い合わせる。そして、サービスプロセッサ１５０は、ＰＣＩマネージャ４００から得た応答に基づいて現用系計算機１００の業務を引き継ぐ待機系計算機１１０を決定して、待機系計算機１１０に引き継ぎを指令する。なお、障害の検知及び引き継ぎの処理については、公知または周知の手法を適用すればよいので、ここでは詳述しない。
【００２２】
＜ＰＣＩスイッチ＞
ＰＣＩスイッチ３００ａ、３００ｂは、ＰＣＩｅｘｐｒｅｓｓの規格に準拠した前記従来例と同様のマルチルートＰＣＩスイッチで構成され、複数の現用系計算機１００及び待機系計算機１１０と複数のＩ／Ｏデバイス２２０ａ−１〜２２０ａ−８及び２２０ｂ−２〜２２０ｂ−７を接続する。なお、以下では、Ｉ／Ｏデバイス２２０ａ−１〜２２０ａ−８及び２２０ｂ−２〜２２０ｂ−７の総称をＩ／Ｏデバイス２２０とする。ＰＣＩスイッチ３００ａと３００ｂは同一の構成であるので、以下ではＰＣＩスイッチ３００ａのみについて説明を行い、ＰＣＩスイッチ３００ｂの説明を省略する。本実施形態では、現用系計算機１００と待機系計算機１１０のルートポートがそれぞれ２つのＰＣＩスイッチ３００ａ、３００ｂに接続されている例を示す。
【００２３】
ＰＣＩスイッチ３００ａは、現用系計算機１００及び待機系計算機１１０のルートポートに接続される上流ポート３０１ａ−〜３０１ａ−６と、Ｉ／Ｏデバイス２２０に接続される下流ポート３０２ａ−１〜３０２ａ−６と、上流ポート３０１ａ−１〜３０１ａ−６と下流ポート３０２ａ−１〜３０２ａ−６の通信経路を設定する仮想スイッチ生成機構３１０ａを備える。なお、以下では、上流ポート３０１ａ〜３０１ａ−６の総称を上流ポート３０１とし、下流ポート３０２ａ−１〜３０２ａ−６の総称を下流ポート３０２とする。
【００２４】
仮想スイッチ生成機構３１０ａは、後述するように、ＰＣＩマネージャ４００からの指令に応じて上流ポート３０１と下流ポート３０２の通信経路（仮想パス）を設定する。このため、仮想スイッチ生成機構３１０ａは、後述する管理テーブルを備えたコントローラを含む。
【００２５】
ＰＣＩスイッチ３００ａ、３００ｂは、ＰＣＩマネージャ４００に接続するためのスイッチ管理用ポート３９９ａ−１、３９９ａ−２、３９９ｂ−１、３９９ｂ−２を備え、ＰＣＩスイッチ３００ａ、３００ｂの内部では、一対のスイッチ管理用ポート３９９ａ−１と３９９ａ−２及び３９９ｂ−１と３９９ｂ−２が接続されており、これらのスイッチ管理用ポートをＰＣＩスイッチ３００ａ、３００ｂ同士で接続することで、複数のＰＣＩスイッチをデイジーチェーンで接続することができる。図１においては、スイッチ管理パス４１０によってＰＣＩスイッチ３００ｂのスイッチ管理用ポート３９９ｂ−２をＰＣＩマネージャ４００に接続し、ＰＣＩスイッチ３００ｂと３００ａを、スイッチ管理用ポート３９９ｂ−１と３９９ａ−２で接続し、ＰＣＩスイッチ３００ａはＰＣＩスイッチ３００ｂを介してＰＣＩマネージャ４００と通信可能に構成される。
【００２６】
ＰＣＩスイッチ３００ａは、上流ポート３０１と下流ポート３０２の間を、仮想スイッチと仮想ブリッジで接続した仮想パスによって接続し、通信を行う。仮想ブリッジは、物理的な上流ポート３０１または下流ポート３０２を仮想スイッチＶＳに接続し、あるいは仮想スイッチ同士を接続することが可能である。この仮想パスは、仮想スイッチ生成機構３１０によって動的に変更可能であり、ＰＣＩマネージャ４００がＰＣＩスイッチ３００ａに仮想スイッチの設定を指令することで、上流ポート３０１と下流ポート３０２の通信経路である仮想スイッチを任意に設定することができる。なお、仮想スイッチ生成機構３１０の詳細については、後述する。
【００２７】
＜ＰＣＩマネージャ＞
ＰＣＩマネージャ４００は、図示しないプロセッサとメモリを備えた計算機で構成され、ＰＣＩスイッチ３００ａ、３００ｂの構成を管理するスイッチ管理計算機として機能する。ＰＣＩマネージャ４００は、ホスト管理パス１７０を介してサービスプロセッサ１５０の管理コンソール１８０から受け付けた指令に応じて、ＰＣＩスイッチ３００ａ、３００ｂの上流ポートと下流ポートの通信経路（仮想パス）を管理するスイッチ管理部４１１と、サービスプロセッサ１５０から現用系計算機１００と待機系計算機１１０の情報を取得して、現用系計算機と待機系計算機の稼動状態を管理し、待機系計算機が引き継ぐＩ／Ｏデバイス２２０までの通信経路の状態を監視するホスト管理部４１２とを備える。
【００２８】
ＰＣＩマネージャ４００は、後述するテーブルによって、現用系の計算機と待機系の計算機を識別し、また、現用系計算機１００が使用中のＩ／Ｏデバイス２２０を識別する。なお、現用系計算機１００に対するＩ／Ｏデバイス２２０の割り当ては、サービスプロセッサ１５０に接続されたコンソール１８０から管理者等が予め指定したものである。
【００２９】
ここで、本発明のＰＣＩマネージャ４００は、所定のタイミング（例えば、２４時間周期）になると、現用系計算機が使用中のＩ／Ｏデバイス２２０について、障害が発生したときに待機系計算機でＩ／Ｏデバイス２２０を引き継ぐ場合の通信経路としての仮想パス（仮想スイッチ）を設定し、待機系計算機１１０ｅまたは１１０ｆに待機系パスチェックプログラム１２０を実行させて、待機系計算機から当該Ｉ／Ｏデバイス２２０に接続する直前（手前）の仮想パスについて障害の有無を検出する。そして、ＰＣＩマネージャ４００は、各待機系計算機１１０ｅまたは１１０ｆが実行した待機系パスチェックプログラム１２０の実行結果を、後述するテーブルに格納して障害を検知した仮想パスを利用する待機系計算機で、現用系計算機の引き継ぎを禁止する。また、待機系パスチェックプログラム１２０で障害が検出された仮想パスまたは仮想スイッチがあれば、ＰＣＩマネージャ４００はサービスプロセッサ１５０に対して待機系パスの障害をサービスプロセッサ１５０の管理コンソール１８０に通知する。以下、ＰＣＩマネージャ４００の詳細について説明する。
【００３０】
図２は、ＰＣＩマネージャ４００の機能要素を示すブロック図である。
【００３１】
ＰＣＩマネージャ４００は、スイッチ管理パス４１０を介してＰＣＩスイッチ３００ａ、３００ｂの上流ポートと下流ポートの通信経路を管理するスイッチ管理部４１１と、ホスト管理パス１７０を介して現用系計算機１００と待機系計算機１１０の稼動状態をサービスプロセッサ１５０から取得して、待機系計算機１１０が引き継ぐＩ／Ｏデバイス２２０に障害が発生しているか否かを監視するホスト管理部４１２と、を備える。
【００３２】
まず、スイッチ管理部４１１は、サービスプロセッサ１５０を介して管理コンソール１８０からリソースの割り当てを受け付けるリソース設定インターフェース４０６を備える。リソース設定インターフェース４０６は、サービスプロセッサ１５０を介して管理コンソール１８０から現用系計算機１００（または待機系計算機１１０）に割り当てられたＩ／Ｏデバイス２２０の関係を受け付ける。スイッチ管理部４１１は、サービスプロセッサ１５０から受け付けた計算機とＩ／Ｏデバイス２２０の割り当てを、図４に示すリソース割り当てテーブル４３０に格納する。
【００３３】
図４は、ＰＣＩマネージャ４００のリソース割り当てテーブル４３０の一例を示す説明図である。スイッチ管理部４１１は、ＰＣＩスイッチ３００ａの識別子４３１毎に、Ｉ／Ｏデバイス２２０の識別子４３２と、計算機（ホスト）の識別子４２３を１エントリとしてリソース割り当てテーブル４３０に格納する。
【００３４】
スイッチ管理部４１１は、リソース設定インターフェース４０６で新たな計算機とＩ／Ｏデバイス２２０の割り当てを受け付けると、リソース割り当てテーブル４３０を更新してから、ポート管理テーブル４２０を更新し、更新した通信経路の設定をＰＣＩスイッチ３００ａまたは３００ｂに指令する。なお、リソース割り当てテーブル４３０とポート管理テーブル４２０の更新は、リソース設定インターフェース４０６が所定のタイミングでサービスプロセッサ１５０から取得するようにしても良い。
【００３５】
ポート管理テーブル４２０は、各ＰＣＩスイッチ３００ａ、３００ｂの上流ポート３０１に接続された計算機の識別子と、下流ポート３０２に接続されたＩ／Ｏデバイスの識別子及び接続先の種別（ホスト、デバイス、ＰＣＩスイッチ）を管理する。
【００３６】
図３は、ＰＣＩマネージャ４００のポート管理テーブル４２０の一例を示す説明図である。図３において、スイッチ４２３にはＰＣＩスイッチ３００ａまたは３００ｂの識別子が格納され、ポート＃４２２には、上流ポート３０１と下流ポート３０２の識別子が格納され、方向４２３には現用系計算機１００または待機系計算機１１０と接続する上流ポート３０１であれば「ｕｐ」が設定され、下流ポート３０２であれば「ｄｏｗｎ」が設定され、種別４２４には接続先が計算機であれば「ホスト」が設定され、Ｉ／Ｏデバイス２２０であれば「デバイス」が設定され、ＰＣＩスイッチであれば「スイッチ」が設定され、リンク先４２５には、接続先の識別子が格納される。
【００３７】
ポート管理テーブル４２０は、サービスプロセッサ１５０の管理コンソール１８０から管理者などがスイッチ４２１のポート＃４２２毎に接続されているデバイスの種別と識別子等を設定することができる。あるいは、ＰＣＩスイッチ３００ａ、３００ｂが各ポート毎に接続先を監視した結果をスイッチ管理部４１１が取得してポート管理テーブル４２０に反映させるようにしても良い。
【００３８】
スイッチ管理部４１１は、ポート管理テーブル４２０に設定された上流ポート３０１と下流ポート３０２接続先について、リソース割り当てテーブル４３０で設定されたホスト４３３とＩ／Ｏデバイス４３２の関係を満たすように仮想スイッチＶＳと仮想ブリッジＶＢを設定し、図２のスイッチ設定インターフェース４０３からＰＣＩスイッチ３００ａまたは３００ｂに仮想スイッチＶＳと仮想ブリッジＶＢの設定指令する。このとき、スイッチ管理部４１１は、図６で示すように、仮想スイッチ管理テーブル４５０と仮想ブリッジ管理テーブル４６０を更新する。
【００３９】
図６は仮想スイッチ管理テーブル４５０及び仮想ブリッジ管理テーブル４６０の一例を示す説明図である。図６では、ＰＣＩスイッチ３００ａ、３００ｂがそれぞれ５つの仮想スイッチＶＳと、１２の仮想ブリッジを備える例を示し、ＰＣＩスイッチ３００ａ、３００ｂは、ＰＣＩマネージャ４００から指示された仮想スイッチＶＳに割り当てられた仮想ブリッジ間でデータの転送を行う。
【００４０】
図６の仮想スイッチ管理テーブル４５０は、ＰＣＩスイッチ３００ａ、３００ｂの仮想スイッチＶＳ毎に、仮想ブリッジ管理テーブル４６０のどのエントリが割り当てられて、データの転送が有効か否かを設定するもので、各ＰＣＩスイッチ３００ａ、３００ｂの仮想スイッチＶＳ毎にエントリが設定される。
【００４１】
ここで、仮想スイッチＶＳと仮想ブリッジＶＢの関係は、図７で示すようなる。図７は、ＰＣＩスイッチ３００ａの仮想スイッチＶＳ＃１の一部を示すブロック図である。ＰＣＩスイッチ３００ａの上流ポート３０１ａ−１には、仮想ブリッジＶＢ＃１が割り当てられ、下流ポート３０２ａ−１には仮想ブリッジＶＢ＃２が割り当てられ、下流ポート３０２ａ−３には仮想ブリッジＶＢ＃３が割り当てられている。そして、仮想ブリッジＶＢ＃１、ＶＢ＃２、ＶＢ＃３は仮想スイッチＶＳ＃１に割り当てられている。仮想スイッチＶＳ＃１は、仮想ブリッジＶＢ＃１から受信したデータ（パケット）をＰＣＩｅｘｐｒｅｓｓのマルチルートスイッチの規格に従って仮想ブリッジＶＢ＃２またはＶＢ＃３に転送し、仮想ブリッジＶＢ＃２またはＶＢ＃３から受信したデータを仮想ブリッジＶＢ＃１に転送する。
【００４２】
つまり、仮想スイッチＶＳ＃１で接続された上流ポート３０１ａ−１と下流ポート３０２ａ−１と下流ポート３０２ａ−３の間には、仮想ブリッジＶＢ＃２を通る仮想パスと、仮想ブリッジＶＢ＃３を通る仮想パスが生成され、仮想スイッチＶＳ＃１は、受信したパケットの宛先に応じてこれらの仮想パスを切り替えることになる。なお、仮想スイッチＶＳ＃１のスイッチ動作についてはＰＣＩｅｘｐｒｅｓｓのマルチルートスイッチの規格に準拠すればよいので、ここでは詳述しない。
【００４３】
スイッチ管理部４１１は、ポート管理テーブル４２０とリソース割り当てテーブル４３０に基づいて仮想スイッチ管理テーブル４５０と仮想ブリッジ管理テーブル４６０を生成し、これらのテーブルに基づいて仮想スイッチＶＳで構成された仮想パスを生成する。図６の仮想スイッチ管理テーブル４５０は、ＰＣＩスイッチの識別子を格納するスイッチ４５１と、仮想スイッチの識別子を格納するＶＳ＃４５２と、仮想スイッチのデータ転送が有効か無効かを示す有効フラグ４５３と、仮想ブリッジ管理テーブル４６０上で当該仮想スイッチに割り当てられた仮想ブリッジの開始位置を格納する開始ＶＢ＃４５４と、仮想ブリッジ管理テーブル４６０上で当該仮想スイッチに割り当てられた仮想ブリッジの数を示すエントリ数４５５から構成される。
【００４４】
仮想スイッチの識別子であるＶＳ＃４５２は、スイッチ管理部４１１が管理するＰＣＩスイッチ３００ａ、３００ｂの全ての仮想スイッチに対して重複しない値が割り当てられる。
【００４５】
次に、仮想ブリッジ管理テーブル４６０は、ＰＣＩスイッチの識別子を格納するスイッチ４６１と、仮想ブリッジの識別子を格納するＶＢ＃４６２と、仮想ブリッジのデータ転送が有効か無効かを示す有効フラグ４６３と、当該仮想ブリッジが上流ポート３０１側か下流ポート３０２側かを示す方向４６４と、当該仮想ブリッジからポートへの通信を許可するか否かを設定するマップ４６５と、当該仮想ブリッジに割り当てられた上流ポート３０１または下流ポート３０２の識別子を格納するポート＃４６６と、を備える。
【００４６】
仮想ブリッジの識別子であるＶＢ＃４６２は、スイッチ管理部４１１が管理するＰＣＩスイッチ３００ａ、３００ｂの全ての仮想ブリッジに対して重複しない値が割り当てられる。
【００４７】
例えば、図６に示す仮想スイッチ管理テーブル４５０の仮想スイッチＶＳ＃＝１は、仮想ブリッジ管理テーブル４６０の仮想ブリッジ＃が「１」からエントリ数４５５＝３の仮想ブリッジ＃３までが割り当てられていることを示す。そして、仮想ブリッジ管理テーブル４６０では、仮想ブリッジ＃ＶＢ＝１は、ＰＣＩスイッチ３００ａの上流ポート３０１ａ−１に割り当てられており、仮想ブリッジ＃ＶＢ＝２は、ＰＣＩスイッチ３００ａの下流ポート３０２ａ−１に割り当てられ、仮想ブリッジ＃ＶＢ＝３は、ＰＣＩスイッチ３００ａの下流ポート３０２ａ−３に割り当てられて、それぞれ有効となっていることを示す。これら設定は、図７に示した仮想スイッチＶＳ＃＝１と仮想ブリッジ＃ＶＢ＝１〜３の関係を示す。なお、図示はしないが、仮想スイッチＶＳ＃＝２以降と、仮想ブリッジ＃ＶＢ＝４以降も、図６の仮想スイッチ管理テーブル４５０と仮想ブリッジ管理テーブル４６０に示すとおり、図７のような関係を構成する。
【００４８】
マップ４６５は、有効フラグ４６３が「Ｙｅｓ」で当該仮想ブリッジで通信可能なときに、ポート＃４６６で割り当てられた上流ポート３０１または下流ポート３０２との通信を許可する場合には「Ｙｅｓ」を設定し、通信を禁止（または無効化）する場合には「Ｎｏ」を設定する。マップ４６５を「Ｎｏ」に設定した場合は、当該仮想ブリッジのレジスタ（図示省略）の値を読み出すことができる。すなわち、当該ブリッジのポート＃４６６にＩ／Ｏデバイス２２０を接続した下流ポート３０２を割り当てて、マップ４６５を「Ｎｏ」に設定し、有効フラグ４６３を「Ｙｅｓ」に設定すれば、Ｉ／Ｏデバイス２２０にアクセスすることなく、Ｉ／Ｏデバイス２２０の直前の通信経路の状態を検出することができる。
【００４９】
スイッチ管理部４１１は、上記のように仮想スイッチ管理テーブル４５０と仮想ブリッジ管理テーブル４６０を生成して、ＰＣＩスイッチ３００ａ、３００ｂの仮想スイッチＶＳに仮想ブリッジＶＢを割り当てて、現用系計算機１００（または待機系計算機１１０）とＩ／Ｏデバイス２２０の通信経路を決定する。そして、スイッチ管理部４１１はスイッチ設定インターフェース４０３を介して、決定した通信経路をＰＣＩスイッチ３００ａ、３００ｂに指令する。この指令は、ポート管理テーブル４２０と、仮想ブリッジ管理テーブル４６０と、仮想スイッチ管理テーブル４５０を、各スイッチの識別子毎に送信する。
【００５０】
スイッチ管理部４１１は、ＰＣＩスイッチ３００ａ、３００ｂに仮想スイッチＶＳと仮想ブリッジＶＢの設定を指令するスイッチ設定インターフェース４０３に加えて、ＰＣＩスイッチ３００ａ、３００ｂから割込信号を受信して所定の処理を実行する割り込みインターフェース４０４を備える。
【００５１】
次に、ＰＣＩマネージャ４００のホスト管理部４１２について説明する。ホスト管理部４１２は、所定のタイミングになると待機系計算機が引き継ぐＩ／Ｏデバイス２２０までの通信経路の状態を監視し、通信経路に異常が発生したときにはサービスプロセッサ１５０に異常の発生を通知し、管理コンソール１８０に異常の発生を出力させる。
【００５２】
ホスト管理部４１２は、ホスト管理パス１７０を介してサービスプロセッサ１５０から現用系計算機１００及び待機系計算機１１０の情報や、通信経路のチェック結果を取得するホスト通知インターフェース４０２と、所定のタイミングになると待機系計算機１１０に現用系計算機１００で使用中のＩ／Ｏデバイス２２０までの通信経路のチェックの実行を指令するホスト制御インターフェース４０１と、サービスプロセッサ１５０から取得した現用系計算機１００と待機系計算機１１０の状態を保持するホスト管理テーブル４４０と、通信経路の監視対象とチェック結果を保持する待機系ホストアクセスチェックテーブル４７０と、待機系計算機１１０で引き継ぎ可能な現用系計算機１００のリストを保持する待機系ホスト星取り表４８０と、所定のタイミングを通知するインターバルタイマ４０５と、を含む。
【００５３】
ホスト管理部４１２は、サービスプロセッサ１５０から取得したホスト計算機（現用系計算機１００及び待機系計算機１１０）の種別をホスト管理テーブル４４０に格納し、現用系計算機１００に割り当てられたＩ／Ｏデバイス２２０を取得してリソース割り当てテーブル４３０に格納する。ホスト管理テーブル４４０とリソース割り当てテーブル４３０を更新するタイミングは、予め設定した周期でサービスプロセッサ１５０からホスト計算機に関する情報を取得する。あるいは、サービスプロセッサ１５０からの通知に基づいてホスト管理部４１２がホスト管理テーブル４４０を更新するようにしても良い。
【００５４】
また、ホスト管理テーブル４４０とリソース割り当てテーブル４３０の更新は、ＰＣＩマネージャ４００のスイッチ管理部４１１が、リソース割り当てテーブル４３０とポート管理テーブル４２０を更新するときに実施しても良い。
【００５５】
図５は、ホスト管理部４１２が管理するホスト管理テーブル４４０の一例を示す説明図である。ホスト管理テーブル４４０は、ホスト計算機の識別を格納するホスト４４１と、ホスト計算機の種別が現用系と待機系の何れであるかを格納する現用系／待機系種別４４２とを含む。図５の例では、図１の構成に対応して、現用系計算機１００ａ〜１００ｄと、待機系計算機１１０ｅ、１１０ｆの情報をサービスプロセッサ１５０から受け付けた例を示す。
【００５６】
図１３は、ホスト管理部４１２がサービスプロセッサ１５０に発行するＩ／Ｏデバイスリスト４９０の一例を示す説明図である。Ｉ／Ｏデバイスリスト４９０は、現用系計算機１００の識別子を格納する現用系ホスト４９１と、現用系計算機１００が接続されたＰＣＩスイッチ３００の識別子を格納するスイッチ４９２と、このＰＣＩスイッチ３００を介して接続されたＩ／Ｏデバイス２２０の識別子を格納するＩ／Ｏデバイス４９３と、現用系計算機１００からこのＩ／Ｏデバイス２２０までの通信経路の識別子を格納する仮想ブリッジＩＤ４９４とをひとつのエントリに含む。なお、図１３では、現用系計算機１００ｃのＩ／Ｏデバイス２２０について図示したが、他の現用系計算機１００ａ、１００ｂ、１００ｄについても、待機系計算機１１０から仮想パスのチェック処理を行うときにはそれぞれのＩ／Ｏデバイスリスト４９０がホスト管理部４１２にて生成され、サービスプロセッサ１５０に送信される。なお、仮想ブリッジＩＤ４９４は、現用系計算機１００からＩ／Ｏデバイス２２０までの通信経路について、ＰＣＩマネージャ４００が、図６に示した仮想ブリッジＶＢと仮想スイッチＶＳの組合せに対して付与した一意の識別子である。
【００５７】
ホスト管理部４１２は、インターバルタイマ４０５から所定のタイミングになったことを示す通知を受け付けると、後述するように、現用系計算機１００が使用中のＩ／Ｏデバイス２２０について、待機系計算機１１０から当該Ｉ／Ｏデバイス２２０までの仮想の通信経路（仮想パス）を設定し、仮想パスの終端となるＩ／Ｏデバイス２２０の手前まで接続する。そして、ホスト管理部４１２は、待機系計算機１１０からＩ／Ｏデバイス２２０の手前までの仮想パスについて障害の有無を検知するようサービスプロセッサ１５０を介して待機系計算機１１０に指令する。次に、待機系計算機１１０はＩ／Ｏデバイス２２０の手前までの仮想パスのチェック結果としてのアクセス結果リスト５００をサービスプロセッサ１５０を介してホスト管理部４１２へ送信する。ホスト管理部４１２は、受信したアクセス結果リスト５００から、待機系ホストアクセスチェックテーブル４７０を更新し、待機系計算機１１０で引き継ぎ可能な現用系計算機１００を示す待機系ホスト星取り表４８０を更新する。このとき、待機系計算機１１０から、チェック対象のＩ／Ｏデバイス２２０までの通信経路で障害を検知した場合には、ホスト管理部４１２はサービスプロセッサ１５０を介して管理コンソール１８０に障害の発生を通知する。なお、待機系計算機１１０が実行する仮想パスのチェック処理は、各待機系計算機１１０が全ての現用系計算機１００についてそれぞれ実行する。
【００５８】
図１４は、待機系パスチェックプログラム１２０の実行結果として待機系計算機１１０が生成するアクセス結果リスト５００の一例を示す説明図である。アクセス結果リスト５００は、現用系計算機１００の識別子を格納する現用系ホスト５０１と、現用系計算機１００が接続されたＰＣＩスイッチ３００の識別子を格納するスイッチ５０２と、このＰＣＩスイッチ３００を介して接続されたＩ／Ｏデバイス２２０の識別子を格納するＩ／Ｏデバイス５０３と、待機系計算機１１０からこのＩ／Ｏデバイス２２０までの通信経路のチェック結果を格納するアクセス結果５０４とをひとつのエントリに含む。なお、図１４では、現用系計算機１００ｃのＩ／Ｏデバイス２２０について図示したが、他の現用系計算機１００ａ、１００ｂ、１００ｄについても、仮想パスのチェック処理を行った後にそれぞれアクセス結果リスト５００が待機系計算機１１０で生成される。
【００５９】
図１５は、ホスト管理部４１２が管理する待機系ホストアクセスチェックテーブル４７０の一例を示す説明図である。待機系ホストアクセスチェックテーブル４７０は、ホスト管理テーブル４４０の待機系計算機１１０が各現用系計算機１００を引き継いだ場合に、各現用系計算機１００のＩ／Ｏデバイス２２０までの通信経路に障害があるか否かを格納するものである。つまり、待機系ホストアクセスチェックテーブル４７０には、ホスト管理部４１２が、各待機系計算機１１０に指令したＩ／Ｏデバイス２２０までの通信経路の監視結果を格納する。
【００６０】
図１５において、待機系ホストアクセスチェックテーブル４７０は、待機系計算機１１０の識別子を格納する待機系ホスト４７１と、仮想パスのチェックを行う現用系計算機１００の識別子を格納する現用系ホスト４７２と、当該現用系ホストが接続されたＰＣＩスイッチ３００の識別子を格納するスイッチ４７４と、仮想パスの接続対象となるＩ／Ｏデバイス２２０の識別子を格納するＩ／Ｏデバイス４７４と、当該Ｉ／Ｏデバイス２２０の手前までの仮想パスのチェック結果を格納するアクセス結果４７５と、を一つのエントリに含む。
【００６１】
図１５の現用系ホスト４７２とスイッチ４７３及びＩ／Ｏデバイス４７４は、図１に示した現用系計算機１００とＩ／Ｏデバイス２２０の関係を示しており、例えば、現用系計算機１００ａは、ルートポート１０４ａ−ａに接続されたＰＣＩスイッチ３００ａのＩ／Ｏデバイス２２０ａ−１とＩ／Ｏデバイス２２０ａ−３を利用していることを示す。
【００６２】
図１６は、ＰＣＩマネージャ４００のホスト管理部４１２が管理する待機系ホスト星取り表４８０の一例を示す説明図である。ホスト管理部４１２は、各待機系計算機１１０で行ったＩ／Ｏデバイス２２０までの仮想パスのチェック結果を受信すると、上記待機系ホストアクセスチェックテーブル４７０を更新してから、待機系ホスト星取り表４８０を更新する。
【００６３】
待機系ホスト星取り表４８０は、待機系計算機１１０の識別子を格納する待機系ホスト４８１に対して、全ての現用系計算機１００の識別子を格納する現用系ホスト４８２と、各現用系計算機１００を待機系ホストで引き継ぐことが可能か否かを示すチェック結果４８３をひとつのエントリに備える。
【００６４】
ホスト管理部４１２は、待機系ホストアクセスチェックテーブル４７０を参照して、現用系ホスト４７２が使用する全てのＩ／Ｏデバイス４７４のアクセス結果４７５が「ＯＫ」であれば、待機系ホスト星取り表４８０のチェック結果を「ＯＫ」に設定し、現用系ホスト４７２が使用する全てのＩ／Ｏデバイス４７４のアクセス結果４７５に「ＮＧ」の値があれば、チェック結果４８３に「ＮＧ」を設定して、この待機系ホスト４８１で現用系ホスト４８２を引き継げないことを示す。
【００６５】
例えば、図１５において、待機系ホスト４７１が「１１０ｅ」で、現用系ホスト４７２が「１００ｂ」では、Ｉ／Ｏデバイス４７４が「２２０ｂ−４」の仮想パスのアクセス結果４７５が「ＮＧ」であるため、待機系ホスト星取り表４８０において待機系ホスト４８１が「１１０ｅ」と現用系ホスト４８２が「１００ｂ」のチェック結果４８３は「ＮＧ」となり、Ｉ／Ｏデバイス２２０ｂ−４の仮想パスに障害があるため、待機系計算機１１０ｅで現用系計算機１００ｂを引き継ぐことができないことを示す。
【００６６】
サービスプロセッサ１５０は、現用系計算機１００に障害が発生すると、ＰＣＩマネージャ４００のホスト管理部４１２に引き継ぎ可能な待機系計算機１１０を問い合わせると、ホスト管理部４１２は、現用系ホスト４８２のチェック結果４８３が「ＯＫ」となっている待機系ホスト４８１をサービスプロセッサ１５０に応答する。これにより、現用系計算機１００に障害が発生したときに、引き継ぎ先の待機系計算機１１０で障害が発生するのを防いで、業務の停止期間を短縮することができる。
【００６７】
＜ＰＣＩスイッチの仮想スイッチ生成機構＞
ＰＣＩマネージャ４００のスイッチ管理部４１１からポートと仮想スイッチＶＳ及び仮想ブリッジＶＢの設定を受信したＰＣＩスイッチ３００ａ、３００ｂは、仮想スイッチ生成機構３１０ａ、３１０ｂの各テーブルをそれぞれ更新し、仮想スイッチと仮想ブリッジの設定をそれぞれ更新して仮想パスを生成する。なお、以下では、仮想スイッチ生成機構３１０ａ、３１０ｂの総称を仮想スイッチ生成機構３１０とする。また、ＰＣＩスイッチ３００ａ、３００ｂの総称をＰＣＩスイッチ３００とする。
【００６８】
仮想スイッチ生成機構３１０は、各ＰＣＩスイッチ３００がそれぞれ備える制御部であり、仮想スイッチ生成機構３１０が管理するテーブルを、図８に示す。図８は、仮想スイッチ生成機構３１０が管理するテーブルの一例を示すブロック図である。
【００６９】
ＰＣＩスイッチ３００の仮想スイッチ生成機構３１０は、上記ＰＣＩマネージャ４００のスイッチ管理部４１１が管理するテーブルと同様に、ポート管理テーブル３２０と、仮想ブリッジ管理テーブル３４０と、仮想ブリッジ管理テーブル３２０とを備える。なお、以下では、ＰＣＩスイッチ３００ａのテーブルには「ａ」の添え字を付し、ＰＣＩスイッチ３００ｂのテーブルには「ｂ」の添え字を付す。
【００７０】
図９はＰＣＩスイッチ３００ａのポート管理テーブル３２０ａを示す。ポート管理テーブル３２０ａは、図３に示したＰＣＩマネージャ４００のポート管理テーブル４２０のうち、スイッチ４２１の識別子が「３００ａ」の部分に相当するもので、ポート＃３２２と、方向３２３と、種別３２４とリンク先３２５のエントリから構成される。
【００７１】
図１０はＰＣＩスイッチ３００ｂのポート管理テーブル３２０ｂを示す。ポート管理テーブル３２０ｂは、図３に示したＰＣＩマネージャ４００のポート管理テーブル４２０のうち、スイッチ４２１の識別子が「３００ｂ」の部分に相当するもので、ポート＃３２２と、方向３２３と、種別３２４とリンク先３２５のエントリから構成される。
【００７２】
図１１はＰＣＩスイッチ３００ａの仮想スイッチ管理テーブル３３０ａと仮想ブリッジ管理テーブル３４０ａを示す。仮想スイッチ管理テーブル３３０ａは、図６に示したＰＣＩマネージャ４００の仮想スイッチ管理テーブル４５０のうち、スイッチ４５１の識別子が「３００ａ」の部分に相当するもので、ＶＳ＃３３２と、有効フラグ３３３と、開始ＶＢ＃３３４とエントリ数３３５のエントリから構成される。仮想ブリッジ管理テーブル３４０ａは、図６に示したＰＣＩマネージャ４００の仮想ブリッジ管理テーブル４６０のうち、スイッチ４６１の識別子が「３００ａ」の部分に相当するもので、ＶＳ＃３４２と、有効フラグ３４３と、方向３４４と、マップ３４５と、ポート＃３４６と、ＶＨ＃３４７のエントリから構成される。
【００７３】
図１２はＰＣＩスイッチ３００ｂの仮想スイッチ管理テーブル３３０ｂと仮想ブリッジ管理テーブル３４０ｂを示す。仮想スイッチ管理テーブル３３０ｂは、図６に示したＰＣＩマネージャ４００の仮想スイッチ管理テーブル４５０のうち、スイッチ４５１の識別子が「３００ｂ」の部分に相当するもので、ＶＳ＃３３２と、有効フラグ３３３と、開始ＶＢ＃３３４とエントリ数３３５のエントリから構成される。仮想ブリッジ管理テーブル３４０ｂは、図６に示したＰＣＩマネージャ４００の仮想ブリッジ管理テーブル４６０のうち、スイッチ４６１の識別子が「３００ｂ」の部分に相当するもので、ＶＳ＃３４２と、有効フラグ３４３と、方向３４４と、マップ３４５と、ポート＃３４６と、ＶＨ＃３４７のエントリから構成される。
【００７４】
図９〜図１２に示す各ＰＣＩスイッチ３００ａ、３００ｂの仮想スイッチ生成機構３１０が管理するテーブルは、図３、図６に示したＰＣＩマネージャ４００のスイッチ管理部４１１が管理する各テーブルの内容に一致する。
【００７５】
図１７は、図３に示したポート管理テーブル４２０と図６に示した仮想スイッチ管理テーブル４５０と仮想ブリッジ管理テーブル４６０に基づいて、ＰＣＩマネージャ４００がＰＣＩスイッチ３００ａ、３００ｂに指令した結果、ＰＣＩスイッチ３００ａ、３００ｂに設定された仮想スイッチの一例を示すブロック図である。
【００７６】
図１７において、仮想スイッチ３５０−１は、上流ポート３０１ａ−１に割り当てられた仮想ブリッジ３６０−１と、下流ポート３０２ａ−１に割り当てられた仮想ブリッジ３６０−２と、下流ポート３０２ａ−３に割り当てられた仮想ブリッジ３６０−３から構成される。仮想スイッチ３５０−１は、上流ポート３０１ａ−１に接続された現用系計算機１００ａを、下流ポート３０２ａ−１のＩ／Ｏデバイス２２０ａ−１または下流ポート３０２ａ−３のＩ／Ｏデバイス２２０ａ−３に接続する仮想パスを切り替える。すなわち、図３に示したポート管理テーブル４２０と、図４に示したリソース割り当てテーブル４３０に基づいて、ＰＣＩマネージャ４００が現用系計算機１００ａが使用するＩ／Ｏデバイス２２０ａ−１、２２０ａ−３の仮想パスを、図６の仮想スイッチ管理テーブル４５０と仮想ブリッジ管理テーブル４６０で示すように設定したものである。
【００７７】
図１７に示す仮想スイッチ３５０−ＸのＸは、図６に示した仮想スイッチ管理テーブル４５０のＶＳ＃４５２の仮想スイッチの識別子を示し、仮想ブリッジ３６０−ＹのＹは、図６に示した仮想ブリッジ管理テーブル４６０のＶＢ＃４６２の仮想ブリッジの識別子を示す。
【００７８】
図１７では、ＰＣＩマネージャ４００からの指令によって、ＰＣＩスイッチ３００ａ、３００ｂの仮想スイッチ生成機構３１０が、それぞれ仮想スイッチ３５０−１〜３５０−９を生成した状態を示す。仮想ブリッジ３６０−Ｙは、例えば、レジスタで構成され、仮想スイッチ３５０−Ｘは、割り当てられた仮想ブリッジ３６０−Ｘを切り替えて、パケットを転送する。仮想スイッチ３５０−Ｘに割り当てられた仮想ブリッジ３６０−Ｘが２つの場合には、２つの仮想ブリッジ３６０−Ｙの間でパケットを転送することになる。
【００７９】
＜待機系計算機からの仮想パスのチェック処理＞
次に、ＰＣＩマネージャ４００のホスト管理部４１２で行われる待機系計算機１１０からＩ／Ｏデバイス２２０までの仮想パスのチェック処理について、図１８を参照しながら以下に説明する。図１８は、ＰＣＩマネージャ４００のホスト管理部４１２で実行される待機系計算機１１０からの仮想パスのチェック処理の一例を示すフローチャートである。
【００８０】
ホスト管理部４１２は、まずステップ６００でインターバルタイマ４０５に所定の時間または周期を設定する。なお、インターバルタイマ４０５に設定する時間は、例えば、２４時間など現用系計算機１００の稼動状態や負荷に応じて適宜設定すればよい。ホスト管理部４１２は、ステップ６０１でインターバルタイマ４０５が上記時間を経過したか否かを判定し、インターバルタイマ４０５が所定の時間をカウントするまで待機する。インターバルタイマ４０５が所定時間までカウントした場合にはステップ６０２に進んで、待機系計算機１１０が現用系計算機１００を引き継ぐときのＩ／Ｏデバイス２２０の直前までの仮想パスについて障害の検知を実行する。ここで、Ｉ／Ｏデバイス２２０の直前までの仮想パスは、図１７において、待機系計算機１１０から、Ｉ／Ｏデバイス２２０に接続された下流ポート３０２に割り当てられた仮想ブリッジ３６０−Ｙまでの通信経路となる。
【００８１】
ステップ６０２では、ホスト管理部４１２が待機系ホスト星取り表４８０を初期化する。この初期化は、ホスト管理テーブル４４０から現用系と待機系の識別子をホスト４４１から取得して、種別４４２に応じて待機系ホスト星取り表４８０の待機系ホスト４８１と、現用系ホスト４８２に識別子を設定し、チェック結果４８３をクリアする。また、待機系ホストアクセスチェックテーブル４７０も、現在のホスト管理テーブル４４０とリソース割り当てテーブル４３０とポート管理テーブル４２０の内容に基づいて更新し、アクセス結果４７５をクリアする。
【００８２】
次に、ステップ６０３では、ホスト管理部４１２が待機系ホスト星取り表４８０の待機系ホスト４８１から待機系計算機１１０を一つ選択し、ステップ６０４では、待機系ホスト星取り表４８０の現用系ホスト４８２から現用系計算機１００を一つ選択する。
【００８３】
ステップ６０５では、上記ステップ６０３と６０４で選択した待機系計算機１１０と現用系計算機１００について、ホスト管理部４１２がリソース割り当てテーブル４３０を参照して、現用系計算機１００が使用中のＩ／Ｏデバイス２２０について選択した待機系計算機１１０からの仮想パスを設定するようスイッチ管理部４１１に指令する。待機系計算機１１０から使用中のＩ／Ｏデバイスまでの仮想パスは、現用系計算機１００からＩ／Ｏデバイス２２０までのパスツリーと同型となるように設定される。
【００８４】
また、ホスト管理部４１２は、待機系計算機１１０に仮想パスのチェックを指示するＩ／Ｏデバイス２２０を指定するため、上記選択した現用系計算機１００に関するＩ／Ｏデバイスリスト４９０を生成する。
【００８５】
スイッチ管理部４１１は、図６に示した仮想スイッチ管理テーブル４５０と仮想ブリッジ管理テーブル４６０に、待機系計算機１１０からＩ／Ｏデバイス２２０までの仮想パスを生成するために仮想スイッチと仮想ブリッジを上述したように設定し、Ｉ／Ｏデバイス２２０を接続したポートのＰＣＩスイッチ３００に仮想スイッチの生成を指令する。
【００８６】
このとき、スイッチ管理部４１１は、図６に示した仮想ブリッジ管理テーブル４６０において、上述したように待機系計算機１１０からＩ／Ｏデバイス２２０の仮想パスのうち、Ｉ／Ｏデバイス２２０と接続する下流ポート３０２に割り当てる仮想ブリッジについて、マップ４６５を「Ｎｏ」に設定して、仮想ブリッジとＩ／Ｏデバイス２２０の通信を禁止（無効化）する。これによって、仮想パスは待機系計算機１１０からＩ／Ｏデバイス２２０の直前までとなる。
【００８７】
次に、ステップ６０６では、ホスト管理部４１２が上記選択した待機系計算機１１０に現用系計算機１００で使用中のＩ／Ｏデバイス２２０の直前までの仮想パスの状態をチェックする待機系パスチェックプログラム１２０を実行するようサービスプロセッサ１５０に指令し、チェック対象の現用系計算機１００を示すＩ／Ｏデバイスリスト４９０を送信する。サービスプロセッサ１５０は後述するように、Ｉ／Ｏデバイスリスト４９０に基づいて、ＰＣＩマネージャ４００が設定したＰＣＩスイッチ３００の仮想パスについて待機系計算機１１０で待機系パスチェックプログラム１２０を実行させる。待機系計算機１１０は、後述するようにチェックの結果をアクセス結果リスト５００としてサービスプロセッサ１５０に応答する。サービスプロセッサ１５０は、アクセス結果リスト５００をホスト管理部４１２に応答する。
【００８８】
ここで、本実施形態の待機系計算機１１０は、コールドスタンバイであるので、サービスプロセッサ１５０はホスト管理部４１２から仮想パスのチェックの指令を受信すると、該当する待機系計算機１１０を起動させる。待機系計算機１１０が起動すると、サービスプロセッサ１５０は、Ｉ／Ｏデバイスリスト４９０を送信し、待機系計算機１１０にチェックの開始を指令して待機系パスチェックプログラム１２０を実行させる。待機系計算機１１０は、待機系パスチェックプログラム１２０によって、ＰＣＩスイッチ３００に設定されたＩ／Ｏデバイス２２０の直前までの仮想パスについて障害の有無を検出し、サービスプロセッサ１５０へ結果を送信する。なお、待機系パスチェックプログラム１２０は、各待機系計算機１１０に予め格納させておいても良いし、サービスプロセッサ１５０やＰＣＩマネージャ４００からロードするようにしてもよい。
【００８９】
ステップ６０７では、ホスト管理部４１２がサービスプロセッサ１５０を介して待機系計算機１１０から取得したアクセス結果リスト５００の内容を、待機系ホストアクセスチェックテーブル４７０に格納し、待機系ホスト星取り表４８０を更新する。そして、ホスト管理部４１２は、仮想パスのチェックが完了した待機系計算機１１０とＩ／Ｏデバイス２２０の直前までの仮想パスを削除するようスイッチ管理部４１１に指令する。スイッチ管理部４１１は、ホスト管理部４１２から指令された仮想パスについて、仮想スイッチ管理テーブル４５０と仮想ブリッジ管理テーブル４６０から該当する仮想パスの設定を削除し、待機系計算機１１０からの仮想パスを設定したＰＣＩスイッチ３００に仮想スイッチを削除するよう指令する。
【００９０】
ステップ６０８では、ホスト管理部４１２が待機系ホスト星取り表４８０でまだ選択していない現用系ホスト４８２があるか否かを判定する。まだ、選択していない現用系ホストがあれば、ステップ６０４に戻って次の現用系ホスト４８２について上記仮想パスのチェック処理を実行する。一方、現在選択している待機系計算機１１０で全ての現用系計算機１００について仮想パスのチェックが完了していればステップ６０９へ進む。
【００９１】
ひとつの待機系計算機１１０について仮想パスのチェックが完了すると、ステップ６０９で、ホスト管理部４１２は待機系ホスト星取り表４８０でまだ選択していない待機系ホスト４８１があるか否かを判定する。まだ、選択していない待機系ホストがあれば、ステップ６０３に戻って次の待機系ホスト４８１について上記仮想パスのチェック処理を実行する。一方、すべての待機系計算機１１０で全ての現用系計算機１００について仮想パスのチェックが完了していればステップ６００へ戻って、次回の処理まで待機する。このとき、ホスト管理部４１２は、サービスプロセッサ１５０に対して待機系計算機１１０をコールドスタンバイの状態へ移行するように指令しても良い。
【００９２】
以上の処理によって、ＰＣＩマネージャ４００は、現在、現用系計算機１００で使用中のＩ／Ｏデバイス２２０の直前までの通信経路について待機系計算機１１０から障害の有無を検出する。このとき、待機系計算機１１０は、Ｉ／Ｏデバイス２２０の直前の仮想ブリッジ３６０−Ｙまでの仮想パスについてアクセスを行うため、現在、当該Ｉ／Ｏデバイス２２０を使用している現用系計算機１００に影響を与えることはない。そして、ＰＣＩマネージャ４００は、全ての待機系計算機１１０について、各現用系計算機１００を引き継いだときの仮想パスの障害の有無を取得し、待機系ホスト星取り表４８０を更新する。これにより、現用系計算機１００に障害が発生する以前に、待機系計算機１１０からＩ／Ｏデバイス２２０の直前までの通信経路の異常を把握することができ、現用系計算機１００から待機系計算機１１０へ切り替えたときにＩ／Ｏデバイス２２０にアクセスできずにさらなる障害が発生するのを確実に防止できる。
【００９３】
次に、上記図１８のステップ６０６の処理の詳細について、以下に説明する。図１９は、上記ステップ６０６のサブルーチンを示すフローチャートで、サービスプロセッサ１５０で行われる処理を示す。
【００９４】
このフローチャートは、サービスプロセッサ１５０がＰＣＩマネージャ４００のホスト管理部４１２から待機系計算機１１０と仮想パスのチェック開始指令を受信したときに実行される。
【００９５】
ステップ６１０では、サービスプロセッサ１５０がＰＣＩマネージャ４００のホスト管理部４１２から、仮想パスのチェック処理を指示された待機系計算機１１０の識別子と、この識別子に対応する待機系計算機１１０が処理を引き継ぐ現用系計算機１００のＩ／Ｏデバイスリスト４９０を受信する。
【００９６】
ステップ６１１では、識別子で指定された待機系計算機１１０が起動しているか否かを判定し、起動済みであればステップ６１３に進み、起動していなければステップ６１２で対象となる待機系計算機１１０を起動させる。
【００９７】
ステップ６１３では、サービスプロセッサ１５０はＰＣＩマネージャ４００から受信したＩ／Ｏデバイスリスト４９０を起動した待機系計算機１１０に送信し、待機系パスチェックプログラム１２０を実行させる。待機系計算機１１０は、後述するように、現用系計算機１００から引き継いだ場合のＩ／Ｏデバイス２２０のそれぞれについて、待機系パスチェックプログラム１２０で仮想パスにアクセスして障害があるか否かのチェックを行い、アクセス結果をアクセス結果リスト５００として生成し、サービスプロセッサ１５０に送信する。
【００９８】
ステップ６１４では、サービスプロセッサ１５０は待機系計算機１１０からアクセス結果リスト５００を受信してＰＣＩマネージャ４００に転送する。
【００９９】
以上の処理により、サービスプロセッサ１５０は、待機系計算機１１０を起動させた後に、ホスト管理部４１２から受信したＩ／Ｏデバイスリスト４９０を待機系計算機１１０に送信して、待機系パスチェックプログラム１２０をＩ／Ｏデバイスリスト４９０のＩ／Ｏデバイス２２０についてチェックさせる。そして、待機系計算機１１０から受信したアクセス結果リスト５００をＰＣＩマネージャ４００のホスト管理部４１２に返信する。
【０１００】
次に、上記図１９のステップ６１３で待機系計算機１１０が実行する待機系パスチェックプログラム１２０の処理の一例について、図２０のフローチャートを参照ながら説明する。このフローチャートは、待機系計算機１１０がサービスプロセッサ１５０からの指令を受信したときに実行する。
【０１０１】
サービスプロセッサ１５０によって起動した待機系計算機１１０は、待機系パスチェックプログラム１２０を実行する。なお、コールドスタンバイの待機系計算機１１０を起動する手法は、Wake on LANやＢＭＣ（Baseboard Management Controller）等を用いることができる。
【０１０２】
ステップ６２０では、待機系計算機１１０がサービスプロセッサ１５０からＩ／Ｏデバイスリスト４９０を受信し、ステップ６２１では図１３で示したＩ／Ｏデバイスリスト４９０のＩ／Ｏデバイス４９３からひとつのＩ／Ｏデバイス２２０を選択する。
【０１０３】
次に、ステップ６２２では、選択したＩ／Ｏデバイス２２０に対して待機系計算機１１０がアクセス（例えば、読み込み）を実施する。このとき、ＰＣＩマネージャ４００は、既に待機系計算機１１０からＩ／Ｏデバイス２２０の直前までの仮想パスをＰＣＩスイッチ３００に設定してあるため、待機系計算機１１０はＩ／Ｏデバイス２２０の直前となる仮想ブリッジ３６０のレジスタの値を読むことになる。
【０１０４】
ステップ６２３では、待機系計算機１１０が仮想ブリッジ３６０のレジスタの値を読み込めたか否かを判定し、読み込めた場合にはステップ６２４へ進み、読み込みの際にエラーが発生した場合には、ステップ６２５へ進む。ステップ６２４では、当該Ｉ／Ｏデバイス２２０のアクセス結果を示すアクセス結果リスト５００のアクセス結果５０４に、仮想パスが正常であることを示す「ＯＫ」を設定する。一方、ステップ６２５では、当該Ｉ／Ｏデバイス２２０のアクセス結果リスト５００のアクセス結果５０４に異常があることを示す「ＮＧ」を設定する。
【０１０５】
ステップ６２４またはステップ６２５の何れか一方で、待機系計算機１１０はＩ／Ｏデバイス２２０毎にアクセス結果リスト５００を生成する。
【０１０６】
そして、ステップ６２６で、待機系計算機１１０はＩ／Ｏデバイスリスト４９０中でまだアクセスを実行していないＩ／Ｏデバイス２２０の有無を判定する。Ｉ／Ｏデバイスリスト４９０にアクセスを実行していないＩ／Ｏデバイス２２０があれば、ステップ６２１へ戻って次のＩ／Ｏデバイス２２０を選択し、上記処理を繰り返す。一方、Ｉ／Ｏデバイスリスト４９０の全てのＩ／Ｏデバイス２２０にアクセスが完了していればステップ６２７に進む。
【０１０７】
ステップ６２７では、待機系計算機１１０が生成したアクセス結果リスト５００をサービスプロセッサ１５０に送信し、処理を終了する。
【０１０８】
上記処理によって、サービスプロセッサ１５０はＰＣＩマネージャ４００から仮想パスのチェック処理の開始指令と、Ｉ／Ｏデバイスリスト４９０を受け付けると、指定された待機系計算機１１０を起動する。そして、サービスプロセッサ１５０は、待機系計算機１１０に対して、待機系パスチェックプログラム１２０の実行指令とＩ／Ｏデバイスリスト４９０を送信する。待機系計算機１１０は、Ｉ／Ｏデバイスリスト４９０のＩ／Ｏデバイス２２０毎に、直前の仮想ブリッジまでの通信経路にアクセスする待機系パスチェックプログラム１２０を実行する。待機系計算機１１０の待機系パスチェックプログラム１２０は、Ｉ／Ｏデバイスリスト４９０のＩ／Ｏデバイス２２０について、Ｉ／Ｏデバイス２２０の直前の仮想ブリッジまでの通信経路にアクセスして、ＰＣＩスイッチ３００の仮想ブリッジのレジスタの値を読み込むことができれば、当該仮想パスのアクセス結果は「ＯＫ」であると判定し、レジスタの値を読み込むことができなければ、当該仮想パスのアクセス結果は「ＮＧ」であると判定する。待機系パスチェックプログラム１２０は、Ｉ／Ｏデバイスリスト４９０の全てのＩ／Ｏデバイス２２０について仮想ブリッジまでアクセスを行った結果をアクセス結果リスト５００として生成し、サービスプロセッサ１５０に通知する。サービスプロセッサ１５０はこのように、待機系計算機１１０にチェック処理を実行させて、各Ｉ／Ｏデバイス２２０毎のアクセス結果を示すアクセス結果リスト５００をＰＣＩマネージャ４００に通知する。ＰＣＩマネージャ４００のホスト管理部４１２は、受信したアクセス結果リスト５００から、待機系ホストアクセスチェックテーブル４７０と、待機系星取り表４８０を更新して、現用系計算機１００の引き継ぎに備えることができる。
【０１０９】
＜待機系パスチェックの一例＞
図２１、図２２に、現用系計算機１００でＩ／Ｏデバイス２２０を使用中に、待機系計算機１１０がＩ／Ｏデバイス２２０の直前までの仮想パスに対してチェック処理を行う例を示す。図２１は、待機系計算機１１０ｅで現用系計算機１００ａを引き継ぐ場合を想定して、Ｉ／Ｏデバイス２２０ａ−１、２２０ａ−３までの仮想パスのチェック処理を実施するときの仮想スイッチ３５０−Ｘと仮想ブリッジ３６０−Ｙの一例を示すブロック図である。図２２は、上記図２１の仮想パスを上記図６に加えた場合の仮想スイッチ管理テーブル４５０−１と仮想ブリッジ管理テーブル４６０−１の例を示し、待機系計算機１１０ｅからＩ／Ｏデバイス２２０ａ−１、２２０ａ−３までの新たな仮想パスを図中太字にて示す。
【０１１０】
図２１の計算機システムの構成は、図１と同様であり、図３のポート管理テーブル４２０と図４のリソース割り当てテーブル４３０及び図６のホスト管理テーブル４４０に示す構成を備える。図４のリソース割り当てテーブル４３０で示すように、現用系計算機１００ａは、ＰＣＩスイッチ３００ａに接続されたＩ／Ｏデバイス２２０ａ−１、２２０ａ−３を使用している。そして、ＰＣＩスイッチ３００ａには、現用系計算機１００ａとＩ／Ｏデバイス２２０ａ−１またはＩ／Ｏデバイス２２０ａ−３を選択的に接続する仮想スイッチ３５０−１及び仮想ブリッジ３６０−１、３６０−２、３６０−３が設定されている。
【０１１１】
現用系計算機１００ａが使用中のＩ／Ｏデバイス２２０までの通信経路をチェックする待機系計算機１１０ｅは、ＰＣＩマネージャ４００がＰＣＩスイッチ３００ａに設定した仮想スイッチ３５０−５を仮想パスとして使用する。ここで、ＰＣＩマネージャ４００のスイッチ管理部４１１は、待機系計算機１１０ｅからＩ／Ｏデバイス２２０までのパスツリーが、現用系計算機１００ａからＩ／Ｏデバイス２２０までのパスツリーと同型となる仮想パスを生成する。
【０１１２】
スイッチ管理部４１１は、仮想スイッチ３５０−５を、上流ポート３０１ａ−５に割り当てられた仮想ブリッジ３６０−１０と、下流ポート３０２ａ−１に割り当てられた仮想ブリッジ３６０−１１と、下流ポート３０２ａ−３に割り当てられた仮想ブリッジ３６０−１２とで構成する。つまり、現用系計算機１００ａからＩ／Ｏデバイス２２０ａ−１、２２０ａ−３までのパスツリーと同型の仮想パスを同一のＰＣＩスイッチ３００ａに設定する。
【０１１３】
ここで、Ｉ／Ｏデバイス２２０ａ−１に接続された下流ポート３０２ａ−１は、現用系計算機１００ａが使用中の仮想スイッチ３５０−１の仮想ブリッジ３６０−２と、待機系計算機１１０ｅが使用する仮想スイッチ３５０−５の仮想ブリッジ３６０−１１に割り当てられることになる。そこで、図２２の仮想ブリッジ管理テーブル４６０−１で示すように、現用系計算機１００ａで使用する仮想ブリッジ３６０−２は、マップ４６５を「Ｙｅｓ」に設定して下流ポート３０２ａ−１との通信を許容する一方、待機系計算機１１０ｅが使用する仮想ブリッジ３６０−１１は、マップ４６５を「Ｎｏ」に設定して下流ポート３０２ａ−５との通信を禁止する。
【０１１４】
同様に、図２２の仮想ブリッジ管理テーブル４６０−１で示すように、現用系計算機１００ａで使用する仮想ブリッジ３６０−３は、マップ４６５を「Ｙｅｓ」に設定して下流ポート３０２ａ−３との通信を許容する一方、待機系計算機１１０ｅが使用する仮想ブリッジ３６０−１２は、マップ４６５を「Ｎｏ」に設定して下流ポート３０２ａ−３との通信を禁止する。
【０１１５】
したがって、待機系計算機１１０ｅが待機系パスチェックプログラム１２０でＩ／Ｏデバイス２２０ａ−１または２２０ａ−３にアクセスを行うと、ＰＣＩスイッチ３００ａの上流ポート３０１ａ−６から仮想スイッチ３５０−５を経て仮想ブリッジ３６０−１１または３６０−１２までの仮想パスをアクセスすることになる。
【０１１６】
待機系計算機１１０ｅが待機系パスチェックプログラム１２０でＩ／Ｏデバイス２２０ａ−１またはＩ／Ｏデバイス２２０ａ−３にアクセスを行うと、これらのＩ／Ｏデバイス２２０ａ−１、２２０ａ−３の直前の仮想パスについて障害を検知することができる。
【０１１７】
このように、現用系計算機１００ａがＩ／Ｏデバイス２２０ａ−１と２００ａ−３を使用している最中に、待機系計算機１１０ｅからＩ／Ｏデバイス２２０ａ−１の直前までの仮想パスとＩ／Ｏデバイス２２０ａ−３の直前までの仮想パスについて障害の有無を検知できる。障害を検知したときには、ＰＣＩマネージャ４００は、待機系計算機１１０ｅで現用系計算機１００ａを引き継ぐことを禁止するので、実際に現用系計算機１００ａで障害が発生して待機系計算機１１０で引き継ぐときに、更なる障害が発生するのを防いで、仮想パスに障害のない待機系計算機１１０で業務の引き継ぎを行うことができる。
【０１１８】
すなわち、現用系計算機１００を監視するサービスプロセッサ１５０は、現用系計算機１００に障害が発生すると、ＰＣＩマネージャ４００のホスト管理部４１２に、障害が発生した現用系計算機１００ｅを引き継ぐことが可能な待機系計算機を問い合わせる。ホスト管理部４１２は、図１６に示した待機系星取り表４８０を参照して、引き継ぎ可能な待機系計算機１１０を応答する。サービスプロセッサ１５０は、ホスト管理部４１２から受信した待機系計算機１１０で現用系計算機１００を引き継ぐことを決定することができる。例えば、図１６において、現用系計算機１００ｂに障害が発生した場合、待機系計算機１１０ｅでは、現用系計算機１００ｂが利用するＩ／Ｏデバイスの仮想パスに障害があるため「ＮＧ」となっている。したがって、ホスト管理部４１２は、現用系計算機１００ｂを引き継ぎ可能な待機系計算機１１０ｅをサービスプロセッサ１５０に応答することで、障害が発生したときの待機系計算機１１０への引き継ぎ時に、更なる障害が発生するのを防止できるのである。
【０１１９】
また、障害の発生時には、サービスプロセッサ１５０の管理コンソール１８０に待機系計算機１１０からの仮想パス上に障害があることを通知することで、管理者などは現用系計算機１００に障害が発生する以前に、待機系計算機１１０からの仮想パス上の障害を知ることができ、事前に対処することが可能となる。
【０１２０】
このように、ホスト管理部４１２が管理する待機系ホスト星取り表４８０及び待機系ホストアクセスチェックテーブル４７０は、待機系計算機１１０からＩ／Ｏデバイス２２０の直前の仮想ブリッジ３６０−Ｙまでの障害を把握することで、待機系計算機１１０からＩ／Ｏデバイス２２０までの仮想パス（アクセスパス）の障害検知の代用とすることができるのである。
【０１２１】
図２３、図２４に、現用系計算機１００が２つのＰＣＩスイッチ３００ａ、３００ｂにまたがってＩ／Ｏデバイス２２０を使用している最中に、待機系計算機１１０がＩ／Ｏデバイス２２０の直前までの仮想パスに対してチェック処理を行う例を示す。図２３は、待機系計算機１１０ｆで現用系計算機１００ｃを引き継ぐ場合を想定して、Ｉ／Ｏデバイス２２０ａ−５、２２０ｂ−７までの仮想パスのチェック処理を実施するときの仮想スイッチ３５０−Ｘと仮想ブリッジ３６０−Ｙの一例を示すブロック図である。図２４は、上記図２３の仮想パスを上記図６に加えた場合の仮想スイッチ管理テーブル４５０−２と仮想ブリッジ管理テーブル４６０−２の例を示し、待機系計算機１１０ｆからＩ／Ｏデバイス２２０ａ−５、２２０ｂ−７までの新たな仮想パスを図中太字にて示す。
【０１２２】
図２３の計算機システムの構成は、図１と同様であり、図３のポート管理テーブル４２０と図４のリソース割り当てテーブル４３０及び図６のホスト管理テーブル４４０に示す構成を備える。図４のリソース割り当てテーブル４３０で示すように、現用系計算機１００ｃは、ＰＣＩスイッチ３００ａに接続されたＩ／Ｏデバイス２２０ａ−５と、ＰＣＩスイッチ３００ｂに接続されたＩ／Ｏデバイス２２０ｂ−７を使用している。そして、ＰＣＩスイッチ３００ａには、現用系計算機１００ｃとＩ／Ｏデバイス２２０ａ−５を接続する仮想スイッチ３５０−３及び仮想ブリッジ３６０−６、３６０−７が設定され、ＰＣＩスイッチ３００ｂには、現用系計算機１００ｃとＩ／Ｏデバイス２２０ｂ−７を接続する仮想スイッチ３５０−８及び仮想ブリッジ３６０−１８、３６０−１９が設定されている。
【０１２３】
現用系計算機１００ｃとＩ／Ｏデバイス２２０ａ−５は、仮想ブリッジ３６０−６、３６０−７を含む仮想スイッチ３５０−３で接続され、現用系計算機１００ｃとＩ／Ｏデバイス２２０ｂ−７は、仮想ブリッジ３６０−１８、３６０−１９を含む仮想スイッチ３５０−３で接続されている。
【０１２４】
現用系計算機１００ｃが使用中のＩ／Ｏデバイス２２０までの通信経路をチェックする待機系計算機１１０ｆは、ＰＣＩマネージャ４００がＰＣＩスイッチ３００ａに設定した仮想スイッチ３５０−５と、ＰＣＩスイッチ３００ｂに設定した仮想スイッチ３５０−１０を仮想パスとして使用する。スイッチ管理部４１１は、待機系計算機１１０ｆからＩ／Ｏデバイス２２０までのパスツリーが、現用系計算機１００ｃからＩ／Ｏデバイス２２０までのパスツリーと同型となる仮想パスを生成する。
【０１２５】
スイッチ管理部４１１は、仮想スイッチ３５０−５を、上流ポート３０１ａ−６に割り当てられた仮想ブリッジ３６０−１０と、下流ポート３０２ａ−５に割り当てられた仮想ブリッジ３６０−１１で構成する。ここで、Ｉ／Ｏデバイス２２０ａ−５に接続された下流ポート３０２ａ−５は、現用系計算機１００ｃが使用中の仮想スイッチ３５０−３の仮想ブリッジ３６０−７と、待機系計算機１１０ｆが使用する仮想スイッチ３５０−５の仮想ブリッジ３６０−１１に割り当てられることになる。そこで、図２４の仮想ブリッジ管理テーブル４６０−２で示すように、現用系計算機１００ｃで使用する仮想ブリッジ３６０−７は、マップ４６５を「Ｙｅｓ」に設定して下流ポート３０２との通信を許容する一方、待機系計算機１１０ｆが使用する仮想ブリッジ３６０−１１は、マップ４６５を「Ｎｏ」に設定して下流ポート３０２ａ−５との通信を禁止（無効化）する。
【０１２６】
したがって、待機系計算機１１０ｆが待機系パスチェックプログラム１２０でＩ／Ｏデバイス２２０ａ−５にアクセスを行うと、ＰＣＩスイッチ３００ａの上流ポート３０１ａ−６から仮想スイッチ３５０−５を経て仮想ブリッジ３６０−１１までの仮想パスをアクセスすることになる。
【０１２７】
したがって、待機系計算機１１０ｆが待機系パスチェックプログラム１２０でＩ／Ｏデバイス２２０ａ−５にアクセスを行うと、ＰＣＩスイッチ３００ａの上流ポート３０１ａ−６から仮想スイッチ３５０−５を経て仮想ブリッジ３６０−１１までの仮想パスをアクセスすることになる。これにより、待機系計算機１１０からＩ／Ｏデバイス２２０ａ−５の直前の仮想パスについて障害の有無を検知できる。
【０１２８】
次に、仮想スイッチ３５０−１０は、上流ポート３０１ｂ−６に割り当てられた仮想ブリッジ３６０−２２と、下流ポート３０２ｂ−７に割り当てられた仮想ブリッジ３６０−２３で構成される。ここで、Ｉ／Ｏデバイス２２０ｂ−７に接続された下流ポート３０２ｂ−７は、現用系計算機１００ｃが使用中の仮想スイッチ３５０−８の仮想ブリッジ３６０−１９と、待機系計算機１１０ｆが使用する仮想スイッチ３５０−１０の仮想ブリッジ３６０−２３に割り当てられることになる。そこで、図２４の仮想ブリッジ管理テーブル４６０−２で示すように、現用系計算機１００ｃで使用する仮想ブリッジ３６０−１９は、マップ４６５を「Ｙｅｓ」に設定して下流ポート３０２ｂ−７との通信を許容する一方、待機系計算機１１０ｆが使用する仮想ブリッジ３６０−２３は、マップ４６５を「Ｎｏ」に設定して下流ポート３０２ｂ−７との通信を禁止する。
【０１２９】
したがって、待機系計算機１１０ｆが待機系パスチェックプログラム１２０でＩ／Ｏデバイス２２０ｂ−７にアクセスを行うと、ＰＣＩスイッチ３００ｂの上流ポート３０１ｂ−６から仮想スイッチ３５０−１０を経て仮想ブリッジ３６０−２３までの仮想パスをアクセスすることになる。これにより、待機系計算機１１０からＩ／Ｏデバイス２２０ｂ−７の直前の仮想パスについて障害の有無を検知できる。
【０１３０】
このように、現用系計算機１００ｃがＩ／Ｏデバイス２２０ａ−５と２００ｂ−７を使用している最中に、待機系計算機１１０ｆからＩ／Ｏデバイス２２０ａ−５の直前までの仮想パスとＩ／Ｏデバイス２２０ｂ−７の直前の仮想パスについて障害の有無を検知できる。障害を検知したときには、ＰＣＩマネージャ４００は、待機系計算機１１０ｆで現用系計算機１００ｃを引き継ぐことを禁止するので、実際に現用系計算機１００ｃで障害が発生して待機系計算機１１０で引き継ぐときに、更なる障害が発生するのを防いで、仮想パスに障害のない待機系計算機１１０で業務の引き継ぎを行うことができる。また、障害の発生時には、サービスプロセッサ１５０の管理コンソール１８０に待機系計算機１１０からの仮想パス上に障害があることを通知することで、管理者などは現用系計算機１００に障害が発生する以前に、待機系計算機１１０からの仮想パス上の障害を知ることができ、事前に対処することが可能となる。
【０１３１】
＜第２実施形態＞
図２５は、第２の実施形態を示し、前記第１実施形態のＰＣＩスイッチ３００を多段構成にしたもので、その他の構成は前記第１実施形態と同様である。なお、サービスプロセッサ１５０と管理コンソール１８０及び管理用のパスは図示を省略した。
【０１３２】
ＰＣＩスイッチ３００ｃ、３００ｄ、３００ｅ、３００ｆは相互に接続されており、ＰＣＩスイッチ３００ｃ、３００ｄが現用系計算機１００と待機系計算機１１０に接続され、ＰＣＩスイッチ３００ｅ、３００ｆがＩ／Ｏデバイス２２０に接続される。
【０１３３】
ＰＣＩマネージャ４００の各テーブルは、ＰＣＩスイッチ３００ｃ〜３００ｆのポートと仮想スイッチ及び仮想ブリッジを管理することになる。この場合も、前記第１実施形態と同様に、現用系計算機１００の稼働中に、待機系計算機１１０からＩ／Ｏデバイス２２０の直前のＰＣＩスイッチ３００ｅ、３００ｆに設定された仮想ブリッジまでの仮想パスについて障害の有無を検出することができる。
【０１３４】
＜第３実施形態＞
図２６は、第３の実施形態を示し、前記第１実施形態の現用系計算機１００と待機系計算機１１０からなる物理計算機でハイパバイザ１３０ａ〜１３０ｆを稼動させて、ハイパバイザ１３０ａ〜１３０ｆ上で仮想計算機１４０ａ−１〜１４０−ｆ１を実行するもので、その他の構成は前記第１実施形態と同様である。
【０１３５】
現用系計算機１００に障害が発生すると、待機系計算機１１０では、現用系計算機１００で稼動していた仮想計算機を引き継ぐ。
【０１３６】
ＰＣＩマネージャ４００が行うＩ／Ｏデバイス２２０の割り当ては、仮想計算機１４０ａ−１〜１４０−ｆ１に対して行われる点が前記第１実施形態と相違する。このため、リソース割り当てテーブル４３０は、物理計算機の識別子（ホスト４３３）に加えて仮想計算機の識別子を格納すればよい。
【０１３７】
この場合も前記第１実施形態と同様に、現用系計算機１００上の仮想計算機の稼働中に、待機系計算機１１０の仮想計算機からＩ／Ｏデバイス２２０の直前のＰＣＩスイッチ３００に設定された仮想ブリッジまでの仮想パスについて障害の有無を検出することができる。
【０１３８】
なお、上記各実施形態で、待機系計算機をコールドスタンバイとしたが、ホットスタンバイとしてもよい。
【０１３９】
また、上規格実施形態では、サービスプロセッサ１５０を独立した計算機としたが、現用系計算機１００をサービスプロセッサ１５０としても良く、あるいは、サービスプロセッサ１５０とＰＣＩマネージャ４００を同一の計算機で実行しても良い。また、サービスプロセッサ１５０やＰＣＩマネージャ４００を仮想計算機上で実行させても良い。
【産業上の利用可能性】
【０１４０】
以上のように、本発明では、マルチルートＰＣＩスイッチを備えた計算機システムに適用することができ、特に、クラスタ構成の計算機システムに好適である。
【図面の簡単な説明】
【０１４１】
【図１】第１の実施形態を示し、本発明を適用する計算機システムのブロック図である。
【図２】ＰＣＩマネージャの機能要素を示すブロック図である。
【図３】ＰＣＩマネージャが管理するポート管理テーブルの一例を示す説明図である。
【図４】ＰＣＩマネージャが管理するリソース割り当てテーブルの一例を示す説明図である。
【図５】ＰＣＩマネージャが管理するホスト管理テーブルの一例を示す説明図である。
【図６】ＰＣＩマネージャが管理する仮想スイッチ管理テーブルと仮想ブリッジ管理テーブルの関係を示す説明図である。
【図７】仮想スイッチと仮想ブリッジの関係を示すブロック図である。
【図８】ＰＣＩスイッチの仮想スイッチ生成機構の構成を示すブロック図である。
【図９】ＰＣＩスイッチ３００ａの仮想スイッチ生成機構が管理するポート管理テーブルの一例を示す説明図である。
【図１０】ＰＣＩスイッチ３００ｂの仮想スイッチ生成機構が管理するポート管理テーブルの一例を示す説明図である。
【図１１】ＰＣＩスイッチ３００ａの仮想スイッチ生成機構が管理する仮想スイッチ管理テーブルと仮想ブリッジ管理テーブルの関係を示す説明図である。
【図１２】ＰＣＩスイッチ３００ｂの仮想スイッチ生成機構が管理する仮想スイッチ管理テーブルと仮想ブリッジ管理テーブルの関係を示す説明図である。
【図１３】ＰＣＩマネージャが発行するＩ／Ｏデバイスリストの一例を示す説明図である。
【図１４】待機系計算機が発行するアクセス結果リストの一例を示す説明図である。
【図１５】ＰＣＩマネージャが管理する待機系ホストチェックテーブルの一例を示す説明図である。
【図１６】ＰＣＩマネージャが管理する待機系ホスト星取り表の一例を示す説明図である。
【図１７】ＰＣＩスイッチに設定された仮想スイッチと仮想ブリッジの関係を示すブロック図である。
【図１８】ＰＣＩマネージャで行われる処理の一例を示すフローチャートである。
【図１９】サービスプロセッサで行われる処理の一例を示すフローチャートである。
【図２０】待機系計算機行われる処理の一例を示すフローチャートである。
【図２１】待機系計算機からＩ／Ｏデバイスの直前までに設定された仮想パスの一例を示すブロック図である。
【図２２】ＰＣＩマネージャが管理する仮想スイッチ管理テーブルと仮想ブリッジ管理テーブルの関係を示す説明図で、待機系計算機からＩ／Ｏデバイスの直前までの仮想パスを示す。
【図２３】待機系計算機からＩ／Ｏデバイスの直前までに設定された仮想パスの他の例を示すブロック図である。
【図２４】ＰＣＩマネージャが管理する仮想スイッチ管理テーブルと仮想ブリッジ管理テーブルの関係の他の例を示す説明図で、待機系計算機からＩ／Ｏデバイスの直前までの仮想パスを示す。
【図２５】第２の実施形態を示し、ＰＣＩスイッチ３００を多段構成にした場合の計算機システムのブロック図である。
【図２６】第３の実施形態を示し、現用系計算機と待機系計算機でハイパバイザを稼動させて仮想計算機を実行する場合の計算機システムのブロック図である。
【符号の説明】
【０１４２】
１００  現用系計算機
１１０  待機系計算機
１５０  サービスプロセッサ
３００  ＰＣＩスイッチ
３１０  仮想スイッチ生成機構
４００  ＰＣＩマネージャ
４１１  スイッチ管理部
４１２  ホスト管理部
４５０  仮想スイッチ管理テーブル
４６０  仮想スイッチ管理テーブル
【図１】
0005074274.tif 000002
【図２】
0005074274.tif 000003
【図３】
0005074274.tif 000004
【図４】
0005074274.tif 000005
【図５】
0005074274.tif 000006
【図６】
0005074274.tif 000007
【図７】
0005074274.tif 000008
【図８】
0005074274.tif 000009
【図９】
0005074274.tif 000010
【図１０】
0005074274.tif 000011
【図１１】
0005074274.tif 000012
【図１２】
0005074274.tif 000013
【図１３】
0005074274.tif 000014
【図１４】
0005074274.tif 000015
【図１５】
0005074274.tif 000016
【図１６】
0005074274.tif 000017
【図１７】
0005074274.tif 000018
【図１８】
0005074274.tif 000019
【図１９】
0005074274.tif 000020
【図２０】
0005074274.tif 000021
【図２１】
0005074274.tif 000022
【図２２】
0005074274.tif 000023
【図２３】
0005074274.tif 000024
【図２４】
0005074274.tif 000025
【図２５】
0005074274.tif 000026
【図２６】
0005074274.tif 000027