(57)【要約】【課題】マルチルートＰＣＩスイッチにおける管理用仮想スイッチの一点障害を排除する。【解決手段】インタフェースを備える複数の計算機と、計算機のインタフェースを介して接続されるＰＣＩスイッチと、ＰＣＩスイッチに接続される複数のＩ／Ｏデバイスと、を備える計算機システムであって、ＰＣＩスイッチは、複数のポートとスイッチ管理部とを備え、通信経路は、仮想スイッチと仮想ブリッジとを含み、スイッチ管理部は、仮想スイッチ及び仮想ブリッジを設定し、通信経路を生成する通信経路生成部と、一以上の仮想スイッチから構成される仮想スイッチグループを構成し、仮想スイッチグループに含まれる前記仮想スイッチのうち、ポートとの接続が有効であることを示す有効フラグを設定する仮想スイッチグループ管理部と、通信経路とポートとの接続を管理するポート管理部とを備える。【選択図】図２
2010282387.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ、前記プロセッサに接続されるメモリ、及び前記プロセッサに接続されるインタフェースを備える複数の計算機と、
前記複数の計算機の前記インタフェースを介して接続されるＰＣＩスイッチと、
前記ＰＣＩスイッチに接続される複数のＩ／Ｏデバイスと、を備える計算機システムであって、
前記ＰＣＩスイッチは、
前記計算機又は前記Ｉ／Ｏデバイスを接続するための複数のポートと、
前記計算機と前記Ｉ／Ｏデバイスとを接続する通信経路を設定するスイッチ管理部と、を備え、
前記通信経路は、一以上の仮想スイッチと一以上の仮想ブリッジとを含み、前記仮想スイッチは前記仮想ブリッジ間を接続する前記通信経路の経路を構成し、前記仮想ブリッジは前記仮想スイッチと前記ポートとを接続し、
前記スイッチ管理部は、
前記仮想スイッチ及び前記仮想ブリッジを設定し、前記設定された前記仮想スイッチ及び前記仮想ブリッジから前記通信経路を生成する通信経路生成部と、
一以上の前記仮想スイッチから構成される仮想スイッチグループを構成し、前記仮想スイッチグループに含まれる前記仮想スイッチのうち、前記ポートとの接続が有効であることを示す有効フラグを設定する仮想スイッチグループ管理部と、
前記通信経路生成部、及び前記仮想スイッチグループ管理部の設定に基づいて、前記生成された通信経路と前記ポートとの接続を管理するポート管理部と、を備えることを特徴とする計算機システム。
【請求項２】
前記有効フラグは、前記生成された通信経路のうち、実際に前記計算機と前記Ｉ／Ｏデバイスとの接続に使用される通信経路に含まれる前記仮想スイッチの識別子を格納し、
前記ポート管理部は、
前記有効フラグにおいて指定された前記仮想スイッチが含まれる前記通信経路と、前記ポートとを接続し、
前記有効フラグにおいて指定されていない前記仮想スイッチが含まれる前記通信経路と、前記ポートとの接続を待機させることを特徴とする請求項１に記載の計算機システム。
【請求項３】
前記仮想スイッチグループは、第１の仮想スイッチと第２の仮想スイッチとを含み、
前記有効フラグには前記第１の仮想スイッチの識別子が格納され、
前記ポート管理部は、
前記第１の仮想スイッチの識別子から前記第２の仮想スイッチの識別子に有効フラグが変更された場合、前記第１の仮想スイッチが含まれる前記通信経路と前記ポートとの接続を解除し、
前記第２の仮想スイッチが含まれる前記通信経路と前記ポートとを接続することを特徴とする請求項１に記載の計算機システム。
【請求項４】
前記計算機は、前記計算機システムを管理する現用系計算機と、前記現用系計算機の切り替え先である待機系計算機とを含み、
前記計算機システムは、前記現用系計算機の障害を監視する障害監視部を備え、
前記スイッチ管理部は、前記現用系計算機と前記Ｉ／Ｏデバイスとを接続するために使用される第１の通信経路、及び、前記待機系計算機と前記Ｉ／Ｏデバイスとを接続するために使用される第２の通信経路を管理し、
前記仮想スイッチグループ管理部が、前記第１の通信経路に含まれる前記仮想スイッチの識別子から、前記第２の通信経路に含まれる前記仮想スイッチの識別子に前記有効フラグを変更することによって、前記現用系計算機から前記待機系計算機へ切り替えることを特徴とする請求項１に記載の計算機システム。
【請求項５】
前記待機系計算機が前記障害監視部を含み、
前記待機系計算機は、前記現用系計算機の障害を検出した場合、前記有効フラグを前記第１の通信経路に含まれる仮想スイッチの識別子から前記第２の通信経路に含まれる仮想スイッチの識別子に変更するように前記仮想スイッチグループ管理部に要求することを特徴とする請求項４に記載の計算機システム。
【請求項６】
前記ＰＣＩスイッチが前記障害監視部を含み、
前記ＰＣＩスイッチは、前記現用系計算機の障害を検出した場合、前記有効フラグを前記第１の通信経路に含まれる仮想スイッチの識別子から前記第２の通信経路に含まれる仮想スイッチの識別子に変更するように前記仮想スイッチグループ管理部に要求することを特徴とする請求項４に記載の計算機システム。
【請求項７】
前記ＰＣＩスイッチは、前記有効フラグが前記第１の通信経路に含まれる仮想スイッチの識別子から前記第２の通信経路に含まれる仮想スイッチの識別子に変更されるときに、前記待機系計算機へと割り込みを通知することを特徴とする請求項６に記載の計算機システム。
【請求項８】
プロセッサ、前記プロセッサに接続されるメモリ、及び前記プロセッサに接続されるインタフェースを備える複数の計算機と、前記複数の計算機の前記インタフェースを介して接続されるＰＣＩスイッチと、前記ＰＣＩスイッチに接続される複数のＩ／Ｏデバイスと、を備える計算機システムにおけるスイッチ切り替え方法であって、
前記ＰＣＩスイッチは、
前記計算機又は前記Ｉ／Ｏデバイスを接続するための複数のポートと、
前記計算機と前記Ｉ／Ｏデバイスとを接続する通信経路を設定するスイッチ管理部と、を備え、
前記通信経路は、一以上の仮想スイッチと一以上の仮想ブリッジとを含み、前記仮想スイッチは前記仮想ブリッジ間を接続する前記通信経路の経路を構成し、前記仮想ブリッジは前記仮想スイッチと前記ポートとを接続し、
前記スイッチ管理部は、
前記仮想スイッチ及び前記仮想ブリッジを設定する通信経路生成部と、
一以上の前記仮想スイッチから構成される仮想スイッチグループを構成し、管理する仮想スイッチグループ管理部と、
前記通信経路と前記ポートとの接続を管理するポート管理部と、を備え、
前記通信経路生成部が、設定された前記仮想スイッチ及び前記仮想ブリッジを生成する第１のステップと、
前記通信経路生成部が、前記生成された仮想スイッチ及び仮想ブリッジから前記通信経路を生成する第２のステップと、
前記仮想スイッチグループ管理部が、前記仮想スイッチグループに含まれる前記仮想スイッチのうち、前記ポートとの接続が有効であることを示す有効フラグを設定する第３のステップと、
前記ポート管理部が、前記通信経路生成部及び前記仮想スイッチグループ管理部の設定に基づいて、前記通信経路と前記ポートとの接続を決定する第４のステップと、を含むことを特徴とするスイッチ切り替え方法。
【請求項９】
前記有効フラグは、前記生成された通信経路のうち、実際に前記計算機と前記Ｉ／Ｏデバイスとの接続に使用される通信経路に含まれる前記仮想スイッチの識別子を格納し、
前記第４のステップは、
前記ポート管理部が、前記有効フラグにおいて指定された前記仮想スイッチが含まれる前記通信経路と前記ポートとを接続するステップと、
前記ポート管理部が、前記有効フラグにおいて指定されていない前記仮想スイッチが含まれる前記通信経路と前記ポートとの接続を待機させるステップとを含むことを特徴とする請求項８に記載のスイッチ切り替え方法。
【請求項１０】
前記仮想スイッチグループは、第１の仮想スイッチと第２の仮想スイッチとを含み、
前記有効フラグには前記第１の仮想スイッチの識別子が格納され、
有効フラグが前記第１の仮想スイッチの識別子から前記第２の仮想スイッチの識別子に変更された場合、前記ポート管理部が、前記第１の仮想スイッチが含まれる前記通信経路と前記ポートとの接続を解除するステップと、
前記ポート管理部が、前記第２の仮想スイッチが含まれる前記通信経路と前記ポートとを接続するステップと、をさらに含むことを特徴とする請求項８に記載のスイッチ切り替え方法。
【請求項１１】
前記計算機は、前記計算機システムを管理する現用系計算機と、前記現用系計算機の切り替え先である待機系計算機とを含み、
前記計算機システムは、前記現用系計算機の障害を監視する障害監視部を備え、
前記スイッチ管理部は、前記現用系計算機と前記Ｉ／Ｏデバイスとを接続するために使用される第１の通信経路、及び、前記待機系計算機と前記Ｉ／Ｏデバイスとを接続するために使用される第２の通信経路を管理し、
前記仮想スイッチグループ管理部が、前記第１の通信経路に含まれる前記仮想スイッチの識別子から、前記第２の通信経路に含まれる前記仮想スイッチの識別子に前記有効フラグを変更するステップをさらに含むことを特徴とする請求項８に記載のスイッチ切り替え方法。
【請求項１２】
前記待機系計算機が前記障害監視部を含み、
前記待機系計算機が、前記現用系計算機の障害を監視するステップと、
前記待機系計算機が、前記現用系計算機の障害を検出した場合、前記有効フラグを前記第１の通信経路に含まれる仮想スイッチの識別子から前記第２の通信経路に含まれる仮想スイッチの識別子に変更するように前記仮想スイッチグループ管理部に要求するステップと、をさらに含むことを特徴とする請求項１１に記載のスイッチ切り替え方法。
【請求項１３】
前記ＰＣＩスイッチが前記障害監視部を含み、
前記ＰＣＩスイッチが、前記現用系計算機の障害を監視するステップと、
前記ＰＣＩスイッチが、前記現用系計算機の障害を検出した場合、前記有効フラグを前記第１の通信経路に含まれる仮想スイッチの識別子から前記第２の通信経路に含まれる仮想スイッチの識別子に変更するように前記仮想スイッチグループ管理部に要求するステップと、をさらに含むことを特徴とする請求項１１に記載のスイッチ切り替え方法。
【請求項１４】
前記ＰＣＩスイッチが、前記有効フラグが前記第１の通信経路に含まれる仮想スイッチの識別子から前記第２の通信経路に含まれる仮想スイッチの識別子に変更されるときに、前記待機系計算機へと割り込みを通知するステップを含みことを特徴とする請求項１３に記載のスイッチ切り替え方法。
【請求項１５】
プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサに接続されるインタフェースを備える複数の計算機と、複数のＩ／Ｏデバイスとを接続するＰＣＩスイッチであって、
前記計算機又は前記Ｉ／Ｏデバイスを接続するための複数のポートと、
前記計算機と前記Ｉ／Ｏデバイスとを接続する通信経路を設定するスイッチ管理部と、を備え、
前記通信経路は、一以上の仮想スイッチと一以上の仮想ブリッジとを含み、前記仮想スイッチは前記仮想ブリッジ間を接続する前記通信経路の経路を構成し、前記仮想ブリッジは前記仮想スイッチと前記ポートとを接続し、
前記スイッチ管理部は、
前記仮想スイッチ及び前記仮想ブリッジを設定し、前記設定された前記仮想スイッチ及び前記仮想ブリッジから前記通信経路を生成する通信経路生成部と、
一以上の前記仮想スイッチから構成される仮想スイッチグループを構成し、前記仮想スイッチグループに含まれる前記仮想スイッチのうち、前記ポートとの接続が有効であることを示す有効フラグを設定する仮想スイッチグループ管理部と、
前記通信経路生成部、及び前記仮想スイッチグループ管理部の設定に基づいて、前記生成された通信経路と前記ポートとの接続を管理するポート管理部と、を備えることを特徴とするＰＣＩスイッチ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の計算機と複数のＰＣＩデバイスをＰＣＩスイッチで接続した複合型計算機システムに関し、特にマルチルートＰＣＩスイッチの高信頼化に関する。
【背景技術】
【０００２】
近年、サーバの管理を容易にするために１つの装置に複数の計算機を搭載したブレードサーバが用いられるようになっている。また、ＣＰＵが複数のプロセッサコアを持つマルチコア化によってＣＰＵの処理性能が向上し、それに伴い効率的にＣＰＵを使用するため１つの計算機に複数の仮想的なサーバを稼動させる仮想サーバ技術が用いられるようになっている。
【０００３】
また、ＣＰＵ性能の向上に比べて入出力のためのコネクタやポートを必要とするＩ／Ｏデバイス数不足を補うために、ＰＣＩスイッチ技術によってＩ／Ｏの拡張性や柔軟性を強化する方法が知られている。
【０００４】
このようなＰＣＩスイッチを介して接続されたサーバシステムの信頼性を高めるためには、単一のデバイス又はサーバに障害が起きてもシステム全体に影響を及ぼさない（一点障害とならない）ように、パスの冗長化、及び待機系へと引き継ぎができるようにシステムを構築する必要がある。
【０００５】
例えば、２つのＰＣＩスイッチ同士を接続しておき、通常はそれぞれのスイッチ上のホストが各デバイスをアクセスするが、ホスト障害発生時にはカスケード接続へと切り替え、１つのホストが全デバイスにアクセスする方法がある（例えば、特許文献１参照）。しかし、前述の方法では、障害発生時にＢｕｓ＃の付け替えなどが生じるため、デバイスを実行させたまま引き継ぐことは難しい。
【０００６】
また、Ｎｏｎ−ｔｒａｎｓｐａｒｅｎｔ  ｂｒｉｄｇｅを用いて複数ホストを接続するＰＣＩスイッチを構成することもできる（例えば、非特許文献２参照）。Ｎｏｎ−ｔｒａｎｓｐａｒｅｎｔ  ｂｒｉｄｇｅは、２つのＰＣＩ−ＰＣＩブリッジを組合せ、２つのＰＣＩバスツリー間を接続するＢｒｉｄｇｅである。当該Ｂｒｉｄｇｅは、それぞれのホストからはＥｎｄ  Ｐｏｉｎｔとして認識され、Ｂａｓｅ  Ａｄｄｒｅｓｓ  Ｒｅｇｉｓｔｅｒ（ＢＡＲ）を介したメモリアクセスを行う時に、アドレスが変換され、他方のＰＣＩバスツリーへとアクセスが転送される。しかし、前述の方法では、ホストの切り替え時に、切り替えに伴うリセットや再初期化が必要となる。
【０００７】
ＰＣＩの標準化団体ＰＣＩ−ＳＩＧでは、従来の単一サーバが使用するＰＣＩスイッチを拡張し、複数の計算機と複数のＩ／ＯデバイスであるＰＣＩ（Ｐｅｒｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）デバイス（または、ＰＣＩ  Ｅｘｐｒｅｓｓデバイス）とを接続可能とするＭｕｌｔｉ−Ｒｏｏｔ  Ｉ／Ｏ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ（ＭＲ−ＩＯＶ）規格を策定している（例えば、非特許文献１参照）。
【０００８】
ＭＲ−ＩＯＶ規格に対応したデバイス（ＭＲデバイス）は、複数の仮想階層（Ｖｉｒｔｕａｌ  Ｈｉｅｒａｒｃｈｙ：ＶＨ）を持ち、ＭＲ−ＩＯＶ規格に対応したスイッチ（ＭＲスイッチ）によって構成される仮想スイッチにそれぞれのＶＨが割り当てられる。これによって、同時に複数のサーバホストから１つのＭＲデバイスを共有して使用可能となる。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】米国特許第２００８／０２４０１３４号明細書
【非特許文献】
【００１０】
【非特許文献１】PCI-SIG, "Multi-Root I/O Virtualization and Sharing Specification Rev1.0" [online], 2008/5., p.109-222, ＜URL: http://www.pcisig.com/specifications/iov/multi-root/＞
【非特許文献２】Using Non-transparent Bridging in PCI Express Systems, Jack Regula, 2004/6., p.24-27, ＜URL: http://www.plxtech.com/pdf/technical/expresslane/NontransparentBridging.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ＭＲ−ＩＯＶ規格では、ＭＲスイッチやＭＲデバイスの構成情報の管理を行うためにＰＣＩマネージャーと呼ばれる管理用のソフトウェアが存在する。ＰＣＩマネージャー自身は、ＶＨ０と呼ばれる管理用の仮想スイッチ（管理用仮想スイッチＶＨ０）を介してＭＲスイッチやＭＲデバイスを設定する。
【００１２】
しかし、管理用仮想スイッチＶＨ０には、ＰＣＩマネージャーが管理する全てのＭＲスイッチ及びＭＲデバイスが接続されており、ＭＲデバイスにおける仮想階層ＶＨ０には管理用の特殊な機能（Ｂａｓｅ  Ｆｕｎｃｔｉｏｎ：ＢＦ）が含まれているため、管理用仮想スイッチＶＨ０を含むホスト（以下、管理ホストとも記載する。）が一点障害となってしまう可能性がある。
【００１３】
管理ホストに障害が起きると、管理下のＭＲデバイスのＢＦにリセットが入る。ＢＦにリセットが入ると、ＭＲデバイスをＶＨ単位で分割していた構成情報が消えてしまうため、当該ＭＲデバイスを共有して使用していた全ホストに影響が及ぶ。また、計画保守やファームウェアアップデートのために、管理ホストを計画的に停止して他のホストに移動させるような場合においても、管理下にあるＭＲデバイスを使用しているホストに影響を及ぼさずに停止できない、という課題がある。
【００１４】
ＭＲ−ＩＯＶ規格では、前述したような管理用仮想スイッチＶＨ０のフェイルオーバーについては規定されていない。ＭＲ−ＩＯＶ規格の範囲内で仮想スイッチの切り替えるためには、例えば、（１）仮想スイッチ間の動的なポートの繋ぎ替え、（２）Ｈｏｔ−Ｐｌｕｇによる仮想スイッチの繋ぎ替え、などの手段が考えられる。
【００１５】
しかし、前述の（１）及び（２）のいずれの方法でも仮想スイッチ（仮想スイッチを構成する仮想ブリッジ）とポートが切り離される状態が存在し、当該切り離された状態が発生した瞬間にリンクダウンとみなされてＭＲデバイスのＢＦにリセットが入ってしまうため、「ＭＲデバイスを使用中の他のホストに影響を及ぼさずに管理用仮想スイッチＶＨ０を切り替える」という目的は達成できない。
【課題を解決するための手段】
【００１６】
本発明の代表的な一例を示せば以下の通りである。すなわち、プロセッサ、前記プロセッサに接続されるメモリ、及び前記プロセッサに接続されるインタフェースを備える複数の計算機と、前記複数の計算機の前記インタフェースを介して接続されるＰＣＩスイッチと、前記ＰＣＩスイッチに接続される複数のＩ／Ｏデバイスと、を備える計算機システムであって、前記ＰＣＩスイッチは、前記計算機又は前記Ｉ／Ｏデバイスを接続するための複数のポートと、前記計算機と前記Ｉ／Ｏデバイスとを接続する通信経路を設定するスイッチ管理部と、を備え、前記通信経路は、一以上の仮想スイッチと一以上の仮想ブリッジとを含み、前記仮想スイッチは前記仮想ブリッジ間を接続する前記通信経路の経路を構成し、前記仮想ブリッジは前記仮想スイッチと前記ポートとを接続し、前記スイッチ管理部は、前記仮想スイッチ及び前記仮想ブリッジを設定し、前記設定された前記仮想スイッチ及び前記仮想ブリッジから前記通信経路を生成する通信経路生成部と、一以上の前記仮想スイッチから構成される仮想スイッチグループを構成し、前記仮想スイッチグループに含まれる前記仮想スイッチのうち、前記ポートとの接続が有効であることを示す有効フラグを設定する仮想スイッチグループ管理部と、前記通信経路生成部、及び前記仮想スイッチグループ管理部の設定に基づいて、前記生成された通信経路と前記ポートとの接続を管理するポート管理部と、を備えることを特徴とする。
【発明の効果】
【００１７】
仮想スイッチを多重化し、Ｉ／Ｏデバイスにリセットを入れることなく仮想スイッチを切り替えられるようになるため、現用系計算機が一点障害とならず、全体として信頼性の高い計算機システムを構築できる。
【図面の簡単な説明】
【００１８】
【図１】本発明の第一の実施形態の計算機システムの一例を説明するブロック図である。
【図２】本発明の第一の実施形態のホストの内部構成を説明するブロック図である。
【図３】本発明の第一の実施形態のＭＲデバイスの内部における仮想階層と、各ホストへの割り当ての一例を示す説明図である。
【図４】本発明の第一の実施形態のファンクションの種類を説明する図である。
【図５】本発明の第一の実施形態のホストＸを頂点とする仮想スイッチの構成を示す説明図である。
【図６】本発明の第一の実施形態のホストＺを頂点とする仮想スイッチの構成を示す説明図である。
【図７】本発明の第一の実施形態のホストＷを頂点とする仮想スイッチの構成を示す説明図である。
【図８】本発明の第一の実施形態のホストＹを頂点とする仮想スイッチの構成を示す説明図である。
【図９】本発明の第一の実施形態の仮想スイッチ管理表及び仮想ブリッジ管理表の対応関係を示す説明図である。
【図１０】本発明の第一の実施形態における、引き継ぎ後のホストＸを頂点とする仮想スイッチの構成を示す説明図である。
【図１１】本発明の第一の実施形態における、引き継ぎ後のホストＹを頂点とする仮想スイッチの構成を示す説明図である。
【図１２】本発明の第一の実施形態の仮想スイッチ管理表及び仮想ブリッジ管理表と、仮想スイッチグループ管理表との対応関係を示す説明図である。
【図１３】本発明の第一の実施形態の仮想スイッチ管理表及び仮想ブリッジ管理表と、仮想スイッチグループ管理表との対応関係を示す説明図である。
【図１４】本発明の第一の実施形態のマルチルートＰＣＩスイッチが備える仮想スイッチ生成機構の構成を説明するブロック図である。
【図１５】本発明の第一の実施形態のポートマップ情報生成部の処理の一例を示す説明図である。
【図１６】本発明の第一の実施形態のＰＣＩバスツリー管理表を示す説明図である。
【図１７】本発明の第一の実施形態のＰＣＩバスツリー管理表を示す説明図である。
【図１８】本発明の第一の実施形態の管理コンソールからＰＣＩマネージャーを起動してホスト−デバイス割り当て表を操作するためのユーザ操作インタフェースを示す説明図である。
【図１９】本発明の第一の実施形態の管理コンソールからＰＣＩマネージャーを起動してホスト−デバイス割り当て表を操作するためのユーザ操作インタフェースを示す説明図である。
【図２０】本発明の第一の実施形態における計画的フェイルオーバーの処理を説明するフローチャートである。
【図２１】本発明の第一の実施形態の変形例における障害発生時のフェイルオーバーの処理を説明するフローチャートである。
【図２２】本発明の第二の実施形態の仮想スイッチグループ管理表を示す説明図である。
【図２３】本発明の第二の実施形態の障害時設定の一例を示す説明図である。
【図２４】本発明の第二の実施形態のマルチルートＰＣＩスイッチがホストＸの障害を検出して仮想スイッチを切り替える場合における処理を説明するフローチャートである。
【図２５】本発明の第二の実施形態の現用系ホストＸの処理を説明するフローチャートである。
【図２６】本発明の第二の実施形態の待機系ホストＹの処理を説明するフローチャートである。
【図２７】本発明の第一の実施形態のトポロジ情報の一例を示す説明図である。
【図２８】本発明の第一の実施形態のポートマップ情報生成部が実行する処理を説明するフローチャートである。
【発明を実施するための形態】
【００１９】
以下、本発明の一実施形態を添付図面に基づいて説明する。
【００２０】
〔第一の実施形態〕
図１は、本発明の第一の実施形態の計算機システムの一例を説明するブロック図である。
【００２１】
計算機システムは、ホスト１００ａ〜１００ｄと、各ホスト１００ａ〜１００ｄが利用するマルチルートＩ／Ｏデバイス（以下、ＭＲデバイスとも記載する。）３００ａ〜３００ｄと、及び、ホスト１００ａ〜１００ｄとＭＲデバイス３００ａ〜３００ｄとを接続するマルチルートＰＣＩスイッチ２００から構成される。
【００２２】
なお、特に区別しない場合、ホスト１００ａ〜１００ｄをホスト１００と記載し、ＭＲデバイス３００ａ〜３００ｄをＭＲデバイス３００と記載する。
【００２３】
ホスト１００ａ上ではマルチルートＰＣＩスイッチ２００及びＭＲデバイス３００を管理するＰＣＩマネージャー２９０が稼動する。
【００２４】
ホスト１００ａ〜１００ｄは、管理用ネットワーク２７０を介して互いに接続される。また、管理用ネットワーク２７０には管理コンソール２８０が接続され、管理者が管理コンソール２８０を介してＰＣＩマネージャー２９０を管理する。
【００２５】
マルチルートＰＣＩスイッチ２００は、４つの上流ポート２１０ａ〜２１０ｄと４つの下流ポート２２０ａ〜２２０ｄとを備える。以下、特に区別しない場合、上流ポート２１０ａ〜２１０ｄを上流ポート２１０と記載し、また、下流ポート２２０ａ〜２２０ｄを下流ポート２２０と記載する。
【００２６】
上流ポート２１０ａ〜２１０ｄは、それぞれ、ホスト１００ａ〜１００ｄと接続される。具体的には、ホスト１００ａ〜１００ｄが備えるルートポート１１０ａ〜１１０ｄと上流ポート２１０ａ〜２１０ｄとがそれぞれ接続される。また、下流ポート２２０ａ〜２２０ｄは、それぞれ、ＭＲデバイス３００ａ〜３００ｄと接続される。
【００２７】
マルチルートＰＣＩスイッチ２００は、仮想スイッチ生成機構２６０と、ルーティング制御部２５０を備える。
【００２８】
仮想スイッチ生成機構２６０は、仮想スイッチ４００（図５参照）に関する設定を決定し、仮想スイッチ４００（図５参照）を生成する。なお、仮想スイッチ生成機構２６０の詳細については、図１４を用いて後述する。
【００２９】
ルーティング制御部２５０は、仮想スイッチ生成機構２６０の設定に従って、具体的には、仮想スイッチ生成機構２６０から入力されたポートマップ情報２６３及び仮想スイッチ構成情報２６４に従って、各ポート２１０、２２０から入力されるパケットをルーティングする。
【００３０】
ルーティング制御部２５０は、内部バス２３０ａ〜２３０ｈを介して、各上流ポート２１０ａ〜２１０ｄ及び各下流ポート２２０ａ〜２２０ｄと接続される。仮想スイッチ生成機構２６０は、スイッチ管理バス２４０ａ〜２４０ｄを介して、各上流ポート２１０ａ〜２１０ｄと接続される。
【００３１】
図２は、本発明の第一の実施形態のホスト１００ａ〜１００ｄの内部構成を説明するブロック図である。なお、図２は、ホスト１００ａの内部構成を示すものであるが、他のホスト１００ｂ〜１００ｄについても同一の構成である。
【００３２】
ホスト１００ａは、演算処理を行うＣＰＵ１２０、メモリ１３０、Ｉ／Ｏハブ１４０、及びストレージ１５０を備える。ＣＰＵ１２０は、メモリ１３０上に展開されているプログラムを実行する。
【００３３】
ＣＰＵ１２０とメモリ１３０とはメモリバス１４６を介して接続され、ＣＰＵ１２０とＩ／Ｏハブ１４０とは内部バス１４５を介して接続される。なお、ホスト１００ａがＩ／Ｏハブ１４０の代わりにメモリコントローラを内蔵したチップセットを搭載し、メモリバス１４６がチップセットに接続されるような構成であってもよい。以下の説明ではどちらの構成でも差異を生じない。
【００３４】
Ｉ／Ｏハブ１４０は、ルートポート１１０ａを含み、ルートポート１１０ａからＩ／Ｏバス１１１を介してマルチルートＰＣＩスイッチ２００と接続する。
【００３５】
なお、図２に示す例では、Ｉ／Ｏハブ１４０及びルートポート１１０ａは説明の簡略化のために１つずつとしたが、ホスト１００ａが複数のＩ／Ｏハブ１４０及び複数のルートポート１１０ａを備える構成であってもよい。
【００３６】
Ｉ／Ｏハブ１４０は、ストレージＩ／Ｆ１４７を介してストレージ１５０と接続する。ここで、ストレージ１５０はハードディスクドライブ又は不揮発性メモリのような不揮発な情報を格納する媒体である。
【００３７】
ストレージ１５０は、ブートに必要なＯＳ等の他、ＰＣＩマネージャープログラム１５１及び管理用設定値１５２が格納される。
【００３８】
起動後のメモリ１３０は、メモリコード部１３１とメモリデータ部１３２とに分けられる。
【００３９】
ＰＣＩマネージャープログラム１５１はＰＣＩマネージャー実行コード１３３としてメモリ上に展開され、ＣＰＵ１２０によって実行される。また、マルチルートＰＣＩスイッチ２００が各ＭＲデバイス３００に固有の処理を実行するために、必要に応じてＭＲデバイスドライバ１３４がメモリ上に展開され、ＣＰＵ１２０によって実行される。
【００４０】
また、メモリコード部１３１には、フェイルオーバー監視部１３７が格納されていてもよい。フェイルオーバー監視部１３７は、ホスト１００ａの障害を監視し、障害が発生した場合、他のホスト１００ｂ〜１００ｄにフェイルオーバーさせる。なお、フェイルオーバー監視部１３７が実行する処理の詳細については、図２１を用いて後述する。
【００４１】
メモリデータ部１３２は、ＰＣＩバスツリー管理表１３６、仮想スイッチグループ管理表５１０、仮想スイッチ管理表５２０、仮想ブリッジ管理表５３０、ホスト−デバイス割り当て表６５０、及びトポロジ情報６６０を格納する。
【００４２】
ＰＣＩバスツリー管理表１３６は、図１６及び図１７を用いて後述する。
【００４３】
仮想スイッチグループ管理表５１０、仮想スイッチ管理表５２０、及び仮想ブリッジ管理表５３０は、仮想スイッチ生成機構２６０が格納する仮想スイッチグループ管理表５１０、仮想スイッチ管理表５２０、及び仮想ブリッジ管理表５３０のコピーである。仮想スイッチグループ管理表５１０、仮想スイッチ管理表５２０、及び仮想ブリッジ管理表５３０については、図１２及び図１３を用いて後述する。
【００４４】
ホスト−デバイス割り当て表６５０は、図１８及び図１９を用いて後述する。トポロジ情報６６０は、図２７を用いて後述する。
【００４５】
また、ホスト１００ａは、ネットワークコントローラ１６０を介して管理用ネットワーク２７０と接続する。
【００４６】
（ＭＲデバイスの仮想階層と仮想スイッチ構成）
図３は、本発明の第一の実施形態のＭＲデバイス３００の内部における仮想階層と、各ホスト１００への割り当ての一例を示す説明図である。
【００４７】
ＭＲデバイス３００の内部は、仮想階層３１０と呼ばれる単位で内部リソースが分割されている。各仮想階層３１０は、仮想階層番号（ＶＨＮ）で区別される。
【００４８】
１つの仮想階層には１つ以上のファンクションが含まれ、ＭＲデバイス３００がそれぞれの仮想階層３１０単位で仮想スイッチ４００（図６参照）と接続されることによって、複数のホスト１００ａ〜１００ｄが同時にＭＲデバイス３００ａ〜３００ｄへアクセスできる。
【００４９】
ここで、ファンクションの種類について説明する。
【００５０】
図４は、本発明の第一の実施形態のファンクションの種類を説明する図である。
【００５１】
Ｂａｓｅ  Ｆｕｎｃｔｉｏｎ（ＢＦ）は、ＰＣＩマネージャー２９０が使用するための特殊なファンクションで仮想階層番号が「ＶＨ０」の階層にのみに存在する。ＶＨ０以外の仮想階層３１０には、通常、１つ以上のＰｈｙｓｉｃａｌ  Ｆｕｎｃｔｉｏｎ（ＰＦ）と複数のＶｉｒｔｕａｌ  Ｆｕｎｃｔｉｏｎ（ＶＦ）とが含まれる。
【００５２】
図３に示す例では、ＭＲデバイス３００ａ〜３００ｄのＶＨ０をホストＸ（１００ａ）に割り当て、ＭＲデバイス３００ａのＶＨ１及びＭＲデバイス３００ｂのＶＨ１をホストＺ（１００ｃ）に割り当て、ＭＲデバイス３００ｂのＶＨ２、ＭＲデバイス３００ｃのＶＨ１及びＭＲデバイス３００ｄのＶＨ１をホストＷ（１００ｄ）に割り当てると仮定する。
【００５３】
図５〜図７は、前述の割り当てに従った場合におけるマルチルートＰＣＩスイッチ２００内の仮想スイッチ４００及び仮想ブリッジ４１０の構成例を示す。なお、仮想ブリッジ４１０は、上流仮想ブリッジと下流仮想ブリッジとを含む。
【００５４】
各仮想スイッチ４００は、１つの上流仮想ブリッジ４１０と、０以上の下流仮想ブリッジ４１０とから構成される。上流仮想ブリッジ４１０は上流ポート２１０ａ〜２１０ｄと接続され、また、下流仮想ブリッジ４１０は下流ポート２２０ａ〜２２０ｄにおける、いずれかの仮想階層３１０（ＶＨＮ）と接続される。ただし、下流仮想ブリッジ４１０は、必ずしも、下流ポート２２０ａ〜２２０ｄと接続されなくともよい。
【００５５】
図５は、本発明の第一の実施形態のホストＸ（１００ａ）を頂点とする仮想スイッチ４００−０の構成を示す説明図である。
【００５６】
図５に示す例では、上流ポート２１０ａのＶＨＮ＝０と上流仮想ブリッジ４１０−０とが接続される。上流仮想ブリッジ４１０−０の配下には４つの下流仮想ブリッジ４１０−１〜４１０−４が接続される。下流仮想ブリッジ４１０−１〜４１０−４は、それぞれ下流ポート２２０ａ〜２２０ｄのＶＨＮ＝０と接続され、下流ポート２２０ａ〜２２０ｄを介してＭＲデバイス３００ａ〜３００ｄの仮想階層３１０（ＶＨＮ＝０）と接続される。
【００５７】
図６は、本発明の第一の実施形態のホストＺ（１００ｃ）を頂点とする仮想スイッチ４００−２の構成を示す説明図である。
【００５８】
図６に示す例では、上流ポート２１０ｃのＶＨＮ＝０と上流仮想ブリッジ４１０−１０とが接続されている。上流仮想ブリッジ４１０−１０の配下には２つの下流仮想ブリッジ４１０−１１、４１０−１２が接続される。下流仮想ブリッジ４１０−１１は下流ポート２２０ａのＶＨＮ＝１と接続され、下流仮想ブリッジ４１０−１２は下流ポート２２０ｂのＶＨＮ＝１と接続される。下流仮想ブリッジ４１０−１１、４１０−１２は、下流ポート２２０ａ、２２０ｂを介してＭＲデバイス３００ａ、３００ｂの仮想階層３１０と接続されている。
【００５９】
図７は、本発明の第一の実施形態のホストＷ（１００ｄ）を頂点とする仮想スイッチ４００−３の構成を示す説明図である。
【００６０】
図７に示す例では、上流ポート２１０ｄのＶＨＮ＝０と上流仮想ブリッジ４１０−１５とが接続されている。上流仮想ブリッジ４１０−１５の配下には３つの下流仮想ブリッジ４１０−１６〜４１０−１８が接続される。下流仮想ブリッジ４１０−１６は下流ポート２２０ｂのＶＨＮ＝２と接続され、下流仮想ブリッジ４１０−１７は下流ポート２２０ｃのＶＨＮ＝１と接続され、また、下流仮想ブリッジ４１０−１８は下流ポート２２０ｄのＶＨＮ＝１と接続される。下流仮想ブリッジ４１０−１６〜４１０−１８は、下流ポート２２０ｂ〜２２０ｄを介してＭＲデバイス３００ｂ〜３００ｄの仮想階層３１０と接続される。
【００６１】
（一点障害の排除とフェイルオーバー）
図５〜図７に示す構成において、ホストＺ（１００ｃ）及びホストＷ（１００ｄ）は、同一のＭＲデバイス３００ｂを共有している。しかし、ホストＺ（１００ｃ）及びホストＷ（１００ｄ）が接続される仮想階層３１０が異なるため、ホストＺ（１００ｃ）及びホストＷ（１００ｄ）は分割されたリソースをそれぞれ使用できる。
【００６２】
例えば、ホストＺ（１００ｃ）に障害が起きた場合、当該障害の影響はＭＲデバイス３００ｂの仮想階層ＶＨＮ＝１内に限定されるため、仮想階層ＶＨＮ＝２を使用しているホストＺ（１００ｄ）には影響を与えない。
【００６３】
しかし、ホストＸ（１００ａ）の仮想階層ＶＨＮ＝０における障害は例外となる。ＭＲデバイス３００ａ〜３００ｄの仮想階層ＶＨＮ＝０は、各ＭＲデバイス３００ａ〜３００ｄにおける仮想階層の分割を設定するためのＢａｓｅ  Ｆｕｎｃｔｉｏｎを含む。
【００６４】
したがって、ホストＸ（１００ａ）で障害又は再起動が発生した場合、配下のＭＲデバイス３００ａ〜３００ｄの仮想階層ＶＨＮ＝０にリセットが入る。前述の場合、Ｂａｓｅ  Ｆｕｎｃｔｉｏｎにリセットが入り、他の仮想階層（ＶＨＮ≧１）が消えてしまうため、ホストＺ（１００ｃ）及びホストＷ（１００ｄ）にも影響が及ぶ。つまり、図５〜図７に示す構成では管理ホストであるホストＸ（１００ａ）が一点障害となっている。
【００６５】
そこで一点障害とならないように、待機系のホストＹ（１００ｂ）（図８参照）を用意し、ホストＸ（１００ａ）からホストＹ（１００ｂ）（図８参照）へと引き継ぐ（フェイルオーバーする）ことが考えられる。引き継ぐ前の状態のホストＹ（１００ｂ）（図８参照）を頂点とする仮想スイッチ４００−１の構成を図８に示す。
【００６６】
図８は、本発明の第一の実施形態のホストＹ（１００ｂ）を頂点とする仮想スイッチ４００−１の構成を示す説明図である。
【００６７】
図８に示す例では、上流ポート２１０ｂのＶＨＮ＝０と上流仮想ブリッジ４１０−５とが接続されている。上流仮想ブリッジ４１０−５の配下には４つの下流仮想ブリッジ４１０−６〜４１０−９が接続される。ただし、下流仮想ブリッジ４１０−６〜４１０−９は、下流ポート２２０ａ〜２２０ｄと接続されていない。
【００６８】
ＭＲ-Ｉ／ＯＶ仕様では、任意のポートとＶＨＮとの組は、同時に２つ以上の仮想ブリッジ４１０と接続できない。なぜなら、下流ポート２２０に同時に２つ以上の仮想ブリッジ４１０を繋いでしまうと、複数のルートが存在し、正しいＰＣＩバスツリーとならず、動作が保証されないためである。
【００６９】
したがって、図８に示す例では、下流ポート２２０ａ〜２２０ｄの仮想階層ＶＨＮ＝０は、ホストＸ（１００ａ）の仮想スイッチ４００−０の配下の下流仮想ブリッジ４１０−１〜４１０−４と接続されているため、下流仮想ブリッジ４１０−６〜４１０−９と下流ポート２２０ａ〜２２０ｄとは接続されていない。
【００７０】
本発明を適用する前の、マルチルートＰＣＩスイッチ２００が備える仮想スイッチ生成機構２６０内に設定される仮想スイッチ管理表５２０及び仮想ブリッジ管理表５３０について説明する。
【００７１】
以下、ホストＸ（１００ａ）を管理ホストＸ（１００ａ）とも記載し、また、ホストＹ（１００ｂ）を待機系ホストＹ（１００ｂ）とも記載する。
【００７２】
図９は、本発明の第一の実施形態の仮想スイッチ管理表５２０及び仮想ブリッジ管理表５３０の対応関係を示す説明図である。
【００７３】
図９に示す仮想スイッチ管理表５２０及び仮想ブリッジ管理表５３０は、ＭＲ-ＩＯＶ仕様で規定されている表を簡略化して示したものであり、本質的にはＭＲ-ＩＯＶ仕様で規定されているものと同一である。
【００７４】
仮想スイッチ管理表５２０の各エントリは、仮想スイッチ番号５２１、有効フラグ５２２、開始仮想ブリッジ番号５２３、及び仮想ブリッジエントリ数５２４から構成される。開始仮想ブリッジ番号５２３及び仮想ブリッジエントリ数５２４によって、仮想ブリッジ管理表５３０のエントリへとポインタが貼られている。
【００７５】
仮想ブリッジ管理表５３０の各エントリは、仮想ブリッジ番号５３１、有効フラグ５３２、上流か下流かを示す方向フラグ５３３、仮想ブリッジをポートにマップするか否かを示すポートマップ状態５３４、マップ先のポート番号５３５、及びマップ先の仮想階層番号（ＶＨＮ）５３６から構成される。
【００７６】
なお、図９に示す仮想スイッチ管理表５２０及び仮想ブリッジ管理表５３０は、図５〜図８に示す構成と一致するものである。
【００７７】
以下、管理ホストＸ（１００ａ）から待機系ホストＹ（１００ｂ）へと各ＭＲデバイス（３００ａ〜３００ｄ）のＶＨＮ＝０を引き継ぐ（フェイルオーバーする）場合を考える。引き継ぎ後の仮想スイッチの構成図を図１０及び図１１に示す。
【００７８】
図１０は、本発明の第一の実施形態における、引き継ぎ後のホストＸ（１００ａ）を頂点とする仮想スイッチ４００−０の構成を示す説明図である。図１１は、本発明の第一の実施形態における、引き継ぎ後のホストＹ（１００ｂ）を頂点とする仮想スイッチ４００−１の構成を示す説明図である。
【００７９】
管理ホストＸ（１００ａ）を頂点とする仮想スイッチ４００−０の下流仮想ブリッジ４１０−１〜４１０−４は下流ポート２２０ａ〜２２０ｄのマップから外され、代わりに待機系ホストＹ（１００ｂ）を頂点とする仮想スイッチ４００−１の下流仮想ブリッジ４１０−６〜４１０−９が下流ポート２２０ａ〜２２０ｄへとマップされている。
【００８０】
しかし、図９に示す仮想スイッチ管理表５２０及び仮想ブリッジ管理表５３０を書き換えて、図１０及び図１１に示す状態へと変更するためには、仮想ブリッジ管理表５３０の複数エントリのポートマップ状態５３４を変更する必要がある。
【００８１】
具体的にはＶＢ＃５３１が「１」〜「４」のポートマップ状態５３４を「Ｙｅｓ」から「Ｎｏ」に変更し、ＶＢ＃５３１が「６」〜「９」のポートマップ状態５３４を「Ｎｏ」から「Ｙｅｓ」へと変更する必要がある。
【００８２】
前述した変更は同時に実行できないため、逐次的に変更される。この場合、ＭＲ-ＩＯＶ仕様に従って、同時にポートが２つ以上の仮想ブリッジ４１０に繋がないように変更すると、一時的に下流ポート２２０ａ〜２２０ｄがいずれの仮想ブリッジ４１０とも接続されていない状態が必ず発生する。ＭＲ-Ｉ／ＯＶ仕様では、いずれの仮想ブリッジ４１０とも接続されていないポート２２０はリンクダウンとみなされ、リセットが入る。
【００８３】
このため、逐次的に仮想ブリッジ管理表５３０を書き換える引き継ぎ方法では、Ｂａｓｅ  Ｆｕｎｃｔｉｏｎにリセットを入れずに管理ホストＸ（１００ａ）を引き継ぐという目的を達成できない。
【００８４】
本発明では、管理ホストＸ（１００ａ）のフェイルオーバーを実現するために、ＭＲデバイスのＢａｓｅ  Ｆｕｎｃｔｉｏｎにリセットを入れず、かつ、ＰＣＩ／ＭＲ−ＩＯＶ仕様に違反しないように、仮想スイッチ４００の接続状態を同時に切り替える機能をマルチルートＰＣＩスイッチ２００に追加する。
【００８５】
そのために、複数の仮想スイッチ４００をグループ化し、当該グループの中で有効な仮想スイッチ４００を１つ指定するポインタを用意する。グループ内においてポインタで指定された以外の仮想スイッチ４００は、下流ポート２２０とのマップ状態を無効化された状態となる。
【００８６】
ポインタを別の仮想スイッチ４００へと変更した場合、それまで有効だった仮想スイッチ４００の下流ポート２２０のマップ状態が無効化され、代わりに新しく指定された仮想スイッチ４００の下流ポート２２０のマップ状態が有効となる。
【００８７】
前述したマップ状態の変更は、ポインタの変更を契機として同時に行われるため、ＰＣＩ／ＭＲ−ＩＯＶ仕様に違反した状態（１つのポートのＶＨＮが２つ以上の仮想ブリッジ４１０にマップされている状態）は生じず、また、１つのポートは常にいずれかの仮想スイッチ４００と接続された状態を保つことができためリンクダウンに伴うリセットも発生しない。
【００８８】
以下、前述した機能の詳細について説明する。
【００８９】
図１２は、本発明の第一の実施形態の仮想スイッチ管理表５２０及び仮想ブリッジ管理表５３０と、仮想スイッチグループ管理表５１０との対応関係を示す説明図である。
【００９０】
図１２は、管理ホストＸ（１００ａ）の引き継ぎ前の設定を示す。本発明のマルチルートＰＣＩスイッチ２００は、ＭＲ−ＩＯＶ仕様で規定された仮想スイッチ管理表５２０及び仮想ブリッジ管理表５３０に加え、さらに、仮想スイッチグループ管理表５１０を備える。
【００９１】
仮想スイッチグループ管理表５１０の各エントリは、仮想スイッチグループ番号（ＶＳ  Ｇｒｐ＃）５１１、有効フラグ５１２、仮想スイッチリスト（ＶＳ  Ｌｉｓｔ）５１３、及び有効仮想スイッチ番号（有効ＶＳ＃）５１４から構成される。なお、仮想スイッチグループ番号５１１は、複数の仮想スイッチ４００から構成されるグループ（仮想スイッチグループ）を識別するための識別子である。
【００９２】
図１２に示す例では、仮想スイッチグループ番号５１１が「０」の仮想スイッチグループが有効化されている。また、仮想スイッチグループ番号５１１が「０」の仮想スイッチグループにはＶＳ＃（仮想スイッチ番号）５２１が「０」及び「１」の仮想スイッチ４００が含まれ、そのうちＶＳ＃５２１が「０」の仮想スイッチ４００が有効な仮想スイッチ４００として指定されている。
【００９３】
仮想スイッチグループ管理表５１０の設定に従って、仮想スイッチ管理表５２０ではＶＳ＃５２１が「０」の仮想スイッチ４００が有効化され、仮想ブリッジ管理表５３０ではＶＢ＃５３１が「０」〜「４」の仮想ブリッジ４１０が有効化され、かつ、当該仮想ブリッジ４１０が下流ポート２２０にマップされている。
【００９４】
一方、仮想スイッチグループ管理表５１０において、同一の仮想スイッチグループに含まれるＶＳ＃５２１が「１」の仮想スイッチ４００は無効化されているため、当該仮想スイッチの４００の下流仮想ブリッジ４１０の下流ポート２２０へのマップは無効化される。したがって、１つの下流ポート２２０に２つ以上の仮想ブリッジ４１０が接続された状態にはならない。
【００９５】
なお、図１２に示す例では、ＶＳ＃５２１が「０」の仮想スイッチ４００及びＶＳ＃５２１が「１」の仮想スイッチ４００のそれぞれのポートマップ状態５３４が「Ｙｅｓ」となっているが、これは、接続可能な仮想スイッチ４００であることを示している。実際の仮想ブリッジ４１０と下流ポート（２２０ａ〜２２０ｄ）との接続はルーティング制御部２５０が行っている。
【００９６】
具体的には、ルーティング制御部２５０は、仮想スイッチ生成機構２６０から入力されるポートマップ情報２６３及び仮想スイッチ構成情報２６４に基づいて、ＶＳ＃５２１が「０」の仮想ブリッジ４１０と下流ポート（２２０ａ〜２２０ｄ）との接続（マップ）を有効化し、仮想スイッチ４００のＶＳ＃５２１が「１」の仮想スイッチ４００の仮想ブリッジ４１０と下流ポート（２１０ａ〜２１０ｄ）との接続（マップ）を無効化している。
【００９７】
図１３は、本発明の第一の実施形態の仮想スイッチ管理表５２０及び仮想ブリッジ管理表５３０と、仮想スイッチグループ管理表５１０との対応関係を示す説明図である。図１３は、管理ホストＸ（１００ａ）を待機系ホストＹ（１００ｂ）に引き継ぎ後の状態を示す。
【００９８】
図１２との差は、仮想スイッチグループ管理表５１０の仮想スイッチグループ番号５１１が「０」のエントリの有効仮想スイッチ番号５１４が「０」から「１」へと変更されている点である。
【００９９】
前述の変更によって、同じ仮想スイッチグループに属する仮想スイッチ４００のうち、有効とされていたＶＳ＃５２１が「０」の仮想スイッチの下流仮想ブリッジ４１０の下流ポート２２０へのマップが無効化され、一方、ＶＳ＃５２１が「１」の仮想スイッチの下流仮想ブリッジ４１０の下流ポート２２０へのマップが有効化される。
【０１００】
前述した切り替えは、対象の仮想スイッチ４００の配下の全てのポートで同時に起こるため、二重に接続された状態、又はポート２２０から仮想ブリッジ４１０が切り離された状態が発生せず、ＭＲデバイスのＢａｓｅ  Ｆｕｎｃｔｉｏｎにリセットは入らずに管理ホストＸ（１００ａ）を待機系ホストＹ（１００ｂ）へと引き継ぐことが可能となる。
【０１０１】
（仮想スイッチ生成機構の構成）
図１４は、本発明の第一の実施形態のマルチルートＰＣＩスイッチ２００が備える仮想スイッチ生成機構２６０の構成を説明するブロック図である。
【０１０２】
仮想スイッチ生成機構２６０は、仮想スイッチグループ管理表５１０、仮想スイッチ管理表５２０、仮想ブリッジ管理表５３０、ポートマップ情報生成部２６１、及び仮想スイッチ構成情報生成部２６２を備える。
【０１０３】
ポートマップ情報生成部２６１は、仮想スイッチグループ管理表５１０及び仮想スイッチ管理表５２０から入力される情報に基づいてポートマップ情報２６３を生成し、生成されたポートマップ情報２６３をルーティング制御部２５０に出力する。
【０１０４】
仮想スイッチ構成情報生成部２６２は、仮想スイッチ管理表５２０及び仮想ブリッジ管理表５３０から入力される情報に基づいて仮想スイッチ構成情報２６４を生成し、生成された仮想スイッチ構成情報２６４をルーティング制御部２５０に出力する。
【０１０５】
ＰＣＩマネージャー２９０は、スイッチ管理バス２４０を介して仮想スイッチグループ管理表５１０、仮想スイッチ管理表５２０、及び仮想ブリッジ管理表５３０をそれぞれ設定する。
【０１０６】
設定された情報は、ポートマップ情報生成部２６１及び仮想スイッチ構成情報生成部２６２を経て、ポートマップ情報２６３及び仮想スイッチ構成情報２６４としてルーティング制御部２５０へと出力される。ルーティング制御部２５０は、入力されたポートマップ情報２６３及び仮想スイッチ構成情報２６４によってポート間の接続関係を把握し、内部バス２３０を流れるパケットをルーティングする。
【０１０７】
図１２に示す状態から図１３に示す状態への変更は、ポートマップ情報生成部２６１によって実現される。以下、ポートマップ情報生成部２６１が実行する処理について説明する。
【０１０８】
図１５は、本発明の第一の実施形態のポートマップ情報生成部２６１の処理の一例を示す説明図である。
【０１０９】
ポートマップ情報生成部２６１は、仮想スイッチグループ管理表５１０及び仮想スイッチ管理表５２０を参照し、有効な仮想スイッチグループエントリから、仮想スイッチリスト５１３に含まれる仮想スイッチ番号を抜き出す。
【０１１０】
ポートマップ情報生成部２６１は、抜き出された仮想スイッチ番号に対応するそれぞれの仮想スイッチから、任意の下流ポート２２０（ここでは２２０ａ）にマップされる仮想ブリッジ４１０のＶＢ＃５３１（ここではＶＢ＃５３１が「１」と「６」）を選択する。
【０１１１】
ポートマップ情報生成部２６１は、選択された仮想ブリッジ４１０のうち、有効仮想スイッチ番号５１４で示される仮想スイッチに属する仮想ブリッジ４１０のマップ状態のみを有効とし、それ以外の仮想ブリッジ４１０のマップ状態を無効とする。
【０１１２】
ポートマップ情報生成部２６１は、前述した処理を全ての下流ポート２２０（ここでは２２０ａ〜２２０ｄ）に対して実行する。
【０１１３】
ポートマップ情報生成部２６１は、以上に処理によって選択された下流ポート２２０のポートマップ情報と、上流ポート２１０のポートマップ情報とをまとめて、ポートマップ情報２６３として出力する。
【０１１４】
図２８は、本発明の第一の実施形態のポートマップ情報生成部２６１が実行する処理を説明するフローチャートである。なお、図２８は、図１５の処理をフローチャートとして表したものである。
【０１１５】
ポートマップ情報生成部２６１は、ポートマップ情報２６３を初期化する（ステップ１６００）。
【０１１６】
ポートマップ情報生成部２６１は、仮想スイッチ管理表５２０を参照し、全ての仮想スイッチ番号５２１に対して処理を実行する（ステップ１６１０）。具体的には、ポートマップ情報生成部２６１は、各仮想スイッチ番号５２１に対して処理を実行する。
【０１１７】
ポートマップ情報生成部２６１は、選択された仮想スイッチ番号５２１が仮想スイッチグループ管理表５１０の任意のエントリの仮想スイッチリスト５１３に含まれるか否かを判定する（ステップ１６２０）。
【０１１８】
選択された仮想スイッチ番号５２１が仮想スイッチグループ管理表５１０の任意のエントリの仮想スイッチリスト５１３に含まれないと判定された場合、ポートマップ情報生成部２６１は、ステップ１６５０に進む。
【０１１９】
選択された仮想スイッチ番号５２１が仮想スイッチグループ管理表５１０の任意のエントリの仮想スイッチリスト５１３に含まれると判定された場合、ポートマップ情報生成部２６１は、当該エントリの有効フラグ５１２が「Ｙｅｓ」であるか否かを判定する（ステップ１６３０）。
【０１２０】
エントリの有効フラグ５１２が「Ｙｅｓ」でないと判定された場合、ポートマップ情報生成部２６１は、ステップ１６５０に進む。
【０１２１】
エントリの有効フラグ５１２が「Ｙｅｓ」であると判定された場合、ポートマップ情報生成部２６１は、選択された仮想スイッチ番号５２１が有効仮想スイッチ番号５１４と一致するか否かを判定する（ステップ１６４０）。
【０１２２】
選択された仮想スイッチ番号５２１が有効仮想スイッチ番号５１４と一致すると判定された場合、ポートマップ情報生成部２６１は、仮想ブリッジ管理表５３０を参照し、選択された仮想スイッチ番号５２１に対応する仮想スイッチ４００配下の仮想ブリッジ４１０のうち、有効フラグ５３２が「Ｙｅｓ」、かつ、ポートマップ状態５３４が「Ｙｅｓ」であるエントリを全てポートマップ情報２６３に追加する（ステップ１６５０）。
【０１２３】
選択された仮想スイッチ番号５２１が有効仮想スイッチ番号５１４と一致しないと判定された場合、ポートマップ情報生成部２６１は、仮想ブリッジ管理表５３０を参照し、選択された仮想スイッチ番号５２１に対応する仮想スイッチ４００配下の仮想ブリッジ４１０のうち、有効フラグ５３２が「Ｙｅｓ」、かつ、ポートマップ状態５３４が「Ｙｅｓ」、かつ、方向フラグ５３３が「ｕｐ」であるエントリのみをポートマップ情報２６３に追加する（ステップ１６６０）。
【０１２４】
ステップ１６６０の処理によって、仮想ブリッジ４１０と上流ポート２１０とのマップは有効となるが、仮想ブリッジ４１０と下流ポート２２０とのマップは無効となる。
【０１２５】
ポートマップ情報生成部２６１は、仮想スイッチ管理表５２０の全ての仮想スイッチ番号５２１に対して処理が終了するまでループ処理（ステップ１６２０〜ステップ１６６０）を実行する（ステップ１６７０）。
【０１２６】
ポートマップ情報生成部２６１は、ステップ１６２０〜ステップ１６６０の処理結果をポートマップ情報２６３としてルーティング制御部２５０に出力し（ステップ１６８０）、処理を終了する。
【０１２７】
（ＰＣＩマネージャー内部のフェイルオーバー処理）
次に、ＰＣＩマネージャー２９０内部のフェイルオーバー処理について説明する。
【０１２８】
図１６は、本発明の第一の実施形態のＰＣＩバスツリー管理表１３６を示す説明図である。図１６は、引き継ぎ前（フェイルオーバー前）のホストＸ（１００ａ）におけるＰＣＩマネージャー２９０内部のＰＣＩバスツリー管理表１３６−ｘを示す。
【０１２９】
ＰＣＩバス上のデバイス及びブリッジは、Ｂｕｓ＃６０１、Ｄｅｖｉｃｅ＃６０２、及びＦｕｎｃ＃６０３の組によって一意にＩＤ付けされ、管理される。
【０１３０】
デバイス種別６０４は、各デバイスがＲｏｏｔ  Ｃｏｍｐｌｅｘか、ブリッジか、又はＭＲデバイス３００かを示す情報を格納する。デバイス名６０５は、デバイス種別６０４がＭＲデバイス３００であった場合のデバイス名を格納する。
【０１３１】
さらに、デバイスがメモリマップトＩ／Ｏによってアクセス可能な場合、Ｂａｓｅ  Ａｄｄｒｅｓｓ６０６及びＳｉｚｅ６０７が格納される。
【０１３２】
図１６に示す例では、Ｂｕｓ＃６０１が「０」のデバイスはＲｏｏｔ  Ｃｏｍｐｌｅｘ（この場合、Ｉ／Ｏハブ１４０に対応する)、Ｂｕｓ＃６０１が「１」のデバイスは上流仮想ブリッジ４１０−０、Ｂｕｓ＃６０１が「２」のデバイスのＤｅｖｉｃｅ＃６０２が「０」〜「３」が下流仮想ブリッジ４１０−１〜４１０−４にそれぞれ対応する。また、Ｂｕｓ＃６０１が「３」のデバイスはＭＲデバイスＡ（３００ａ）、Ｂｕｓ＃６０１が「４」のデバイスはＭＲデバイスＢ（３００ｂ）、Ｂｕｓ＃６０１が「５」のデバイスはＭＲデバイスＣ（３００ｃ）、Ｂｕｓ＃６０１が「６」のデバイスはデバイスＤ（３００ｄ）にそれぞれ対応する。
【０１３３】
図１７は、本発明の第一の実施形態のＰＣＩバスツリー管理表１３６を示す説明図である。図１７は、引き継ぎ前（フェイルオーバー前）のホストＹ（１００ｂ）におけるＰＣＩマネージャー２９０内部のＰＣＩバスツリー管理表１３６−ｙを示す。
【０１３４】
ホストＹ（１００ｂ）が使用する仮想スイッチ４００−１は、仮想ブリッジ４１０までは存在するが、当該仮想ブリッジ４１０と下流ポート２２０とは接続されていない状態であるため、ＭＲデバイス３００までは到達できない。そのため、通常のＰＣＩバスエニュメレートの手順に従うと、デバイスの存在しないＰＣＩバスツリーが生成されてしまう。
【０１３５】
そこでホストＹ（１００ｂ）は、管理用ネットワーク２７０又はマルチルートＰＣＩスイッチ２００内部のレジスタを介して、現用系ホストＸ（１００ａ）と通信を行い、引き継ぎ（フェイルオーバー）の準備を行う。
【０１３６】
つまり、ホストＹ（１００ｂ）は、ホストＸ（１００ａ）のＰＣＩバスツリー管理表１３６−ｘに基づいてＰＣＩバスツリー管理表１３６−ｙを作成する。
【０１３７】
具体的には、ホストＹ（１００ｂ）は、ＰＣＩバスツリー管理表１３６−ｘのデバイス種別６０４において「Ｄｅｖｉｃｅ」が格納されるエントリ（この場合Ｂｕｓ＃６０１が「３」〜「６」）に対応するＰＣＩバスツリー管理表１３６−ｙのエントリに、将来、引き継がれるデバイス（この場合、ＤｅｖｉｃｅＡ（３００ａ）〜ＤｅｖｉｃｅＤ（３００ｄ））待機Ｄｅｖｉｃｅのエントリを用意しておく。待機Ｄｅｖｉｃｅのエントリには、引き継がれるデバイスのＢｕｓ＃６０１、Ｄｅｖｉｃｅ＃６０２、Ｆｕｎｃ＃６０３、Ｂａｓｅ  Ａｄｄｒｅｓｓ６０６及びＳｉｚｅ６０７が予約される。
【０１３８】
これによって、ＰＣＩバスの再エニュメレートやメモリマップトＩ／Ｏアドレスの再配置をすることなく、ホストＸ（１００ａ）の配下にあるＭＲデバイス３００を引き継ぐことができる。
【０１３９】
（計画的フェイルオーバー手順）
図１８及び図１９は、本発明の第一の実施形態の管理コンソール２８０からＰＣＩマネージャー２９０を起動してホスト−デバイス割り当て表６５０を操作するためのユーザ操作インタフェースを示す説明図である。
【０１４０】
ホスト−デバイス割り当て表６５０の各エントリは、管理ホスト指定部（Ｍａｎａｇｅｒ  Ｈｏｓｔ）６５１、ホスト名（Ｈｏｓｔ）６５２、デバイス指定部（Ｄｅｖｉｃｅ）６５３、及び仮想階層番号指定部（ＶＨＮ）６５４を含む。
【０１４１】
管理ホスト指定部６５１は、管理ホストＸ（１００ａ）の現用系（Ａｃｔｉｖｅ）と待機系（Ｂａｃｋｕｐ）とを示す情報を格納する。ホスト名６５２は、ホスト名（又はホスト番号）を格納する。デバイス指定部６５３は、接続先のＭＲデバイス３００を格納する。仮想階層番号指定部６５４は、ＭＲデバイス３００の仮想階層番号を格納する。
【０１４２】
なお、ホスト−デバイス割り当て表６５０を操作するためのユーザ操作インタフェースは、図１８に示すようなテキストベースの画面だけでなく、必要に応じて図５〜図８に示すような仮想スイッチ４００の状態を表示するグラフィカルユーザインタフェースであってもよい。
【０１４３】
ＰＣＩマネージャー２９０は、ホスト−デバイス割り当て表６５０と、マルチルートＰＣＩスイッチ２００の各ポート２１０、２２０に何が接続されているかを示すトポロジ情報６６０とに基づいて、仮想スイッチグループ管理表５１０、仮想スイッチ管理表５２０、仮想ブリッジ管理表５３０を生成する。ＰＣＩマネージャー２９０は、生成された各管理表に基づいて、仮想スイッチ４００を管理する。
【０１４４】
具体的には、ＰＣＩマネージャー２９０は、生成された核管理表をマルチルートＰＣＩスイッチ２００内の仮想スイッチ生成機構２６０に入力し、仮想スイッチ４００の生成及び管理を実行する。
【０１４５】
ここで、トポロジ情報６６０について説明する。
【０１４６】
図２７は、本発明の第一の実施形態のトポロジ情報６６０の一例を示す説明図である。
【０１４７】
トポロジ情報６６０は、ポート番号６６１、方向６６２、コンポーネント種別６６３、デバイス名６６４、及び最大仮想階層数（Ｍａｘ  ＶＨＮ）６６５を含む。
【０１４８】
ポート番号６６１は、マルチルートＰＣＩスイッチ２００が備えるポート２１０、２２０を識別する識別子を格納する。方向６６２は、ポート番号６６１に対応するポートが上流ポート２１０か、又は、下流ポート２２０かを示す情報を格納する。
【０１４９】
コンポーネント種別６６３は、ポート番号６６１に対応するポートに接続されたデバイスの種類を格納する。デバイス６６４は、コンポーネント種別６６３が「ＭＲ  Ｄｅｖｉｃｅ」である場合におけるＭＲデバイス３００を識別するための識別子を格納する。最大仮想階層数６６５は、ＭＲデバイス３００上に生成可能な仮想階層の数を格納する。
【０１５０】
以下、管理コンソール２８０の画面を介して、管理者が計画的に管理ホストをホストＸ（１００ａ）からホストＹ（１００ｂ）へと切り替える手順を示す。
【０１５１】
管理者は、図１９に示すようにホスト−デバイス割り当て表６５０の、ホストＹ（１００ｂ）の管理ホスト指定部６５１の属性をＢａｃｋｕｐ（待機系）からＡｃｔｉｖｅ（現用系）へと切り替える。この時、ホストＹ（１００ｂ）とホストＸ（１００ａ）とは同一の仮想スイッチグループに属しているため、管理所の切り替え操作に連動してホストＸ（１００ａ）の管理ホスト指定部６５１の属性がＡｃｔｉｖｅ（現用系）からＢａｃｋｕｐ（待機系）へと切り替えられる。その後、管理コンソール２８０の画面上に確認のプロンプトが表示され、管理者が承認することによって、計画的フェイルオーバーが開始される。
【０１５２】
図２０は、本発明の第一の実施形態における計画的フェイルオーバーの処理を説明するフローチャートである。
【０１５３】
管理者による計画的フェイルオーバーの開始要求（ステップ１０００）を受け、現用系ホストＸ（１００ａ）は、配下のデバイスへのＭＭＩＯアクセスを停止し、また、ＰＣＩマネージャー２９０への割り込みの発行を停止する（ステップ１０１０）。なお、ＰＣＩマネージャー２９０への割り込みは、例えば、ＭＳＩ（Ｍｅｓｓａｇｅ  Ｓｉｇｎａｌｅｄ  Ｉｎｔｅｒｒｕｐｔ）又はＩＮＴｘ＃が用いられる。
【０１５４】
現用系ホストＸ（１００ａ）は、発行中のＭＭＩＯ及びＤＭＡが全て完了するのを待つ（ステップ１０２０）。発行中のＭＭＩＯ及びＤＭＡが全て完了した後、現用系ホストＸ（１００ａ）の仮想スイッチ４００内にはフライト中のＴｘ（トランザクション）がいないことが保証される。
【０１５５】
その後、現用系ホストＸ（１００ａ）は、仮想スイッチグループ管理表５１０の有効仮想スイッチ番号５１４が書き換える（ステップ１０３０）。本実施形態では、有効仮想スイッチ番号５１４が「０」から「１」に書き換えられる。
【０１５６】
現用系ホストＸ（１００ａ）は、待機系ホストＹ（１００ｂ）との間で情報の引き継ぎを実行する（ステップ１０４０）。当該情報の引継ぎによって、待機系ホストＹ（１００ｂ）のＰＣＩバスツリー管理表１３６−ｙの「待機デバイス」のエントリには、図１６のＰＣＩバスツリー管理表１３６−ｘに示す実際のデバイスへと置き換えられる。
【０１５７】
待機系ホストＹ（１００ｂ）は、ＰＣＩマネージャー２９０への割り込み停止及びＭＭＩＯ発行停止の解除を実行する（ステップ１０５０）。
【０１５８】
以降、待機系ホストＹ（１００ｂ）が現用系ホストＹ（１００ｂ）としてＰＣＩマネージャー２９０を含む管理を行う（ステップ１０６０）。
【０１５９】
以上が本発明の第一の実施形態である。
【０１６０】
〔第一の実施例の変形例〕
（障害時フェイルオーバー）
次に、本発明の第一の実施形態の変形例を示す。
【０１６１】
第一の実施形態の変形例では、待機系ホストＹ（１００ｂ）へのフェイルオーバーのタイミングが異なる。つまり、第一の実施形態の変形例は、待機系ホストＹ（１００ｂ）が現用系ホストＸ（１００ａ）の障害発生を検出し、当該障害発生の検出を契機にフェイルオーバーを実行する。
【０１６２】
計算機システム、ホスト１００、及びマルチルートＰＣＩスイッチ２００等の構成は第一の実施形態と同一であるため説明を省略する。以下、第一の実施形態との差異を中心に説明する。
【０１６３】
図２１は、本発明の第一の実施形態の変形例における障害発生時のフェイルオーバーの処理を説明するフローチャートである。
【０１６４】
現用系ホストＸ（１００ａ）と待機系ホストＹ（１００ｂ）とは、フェイルオーバー監視部１３７によって、ハートビート等を用いて互いを監視している（ステップ１１００）。なお、ハートビート用のネットワークとして、管理用ネットワーク２７０とは別のネットワークを用いてもよい。
【０１６５】
待機系ホストＹ（１００ｂ）は、現用系ホストＸ（１００ａ）の監視と同時に、現用系ホストＸ（１００ａ）の情報を適宜コピーし、同期をとる（ステップ１１１０）。なお、ＭＲデバイス３００等の状態が変化しない場合、待機系ホストＹ（１００ｂ）は、最初の１回だけ現用系ホストＸ（１００ａ）の情報をコピーすればよい。また、ＭＲデバイス３００等の状態が変化を検出してから、待機系ホストＹ（１００ｂ）は、現用系ホストＸ（１００ａ）の情報をコピーするようにしてもよい。
【０１６６】
待機系のホストＹ（１００ｂ）は、フェイルオーバー監視部１３７によって現用系ホストＸ（１００ａ）に障害が発生したか否かを判定する（ステップ１１２０）。待機系のホストＹ（１００ｂ）は、障害発生を検出するまでステップ１１００〜ステップ１１２０の処理を実行する。
【０１６７】
現用系ホストＸ（１００ａ）に障害が発生したことが検出された場合、待機系ホストＹ（１００ｂ）は、仮想スイッチグループ管理表５１０の有効仮想スイッチ番号５１４を、自らの属する仮想スイッチ４００へと書き換える（ステップ１１３０）。この場合、有効仮想スイッチ番号５１４が「０」から「１」に書き換えられる。
【０１６８】
前述した処理によって、現用系ホストＸ（１００ａ）から待機系ホストＹ（１００Ｂ）への引き継ぎが可能となるが、待機系ホストＹ（１００ｂ）は、計画的フェイルオーバーと異なり、フライト中のＴｘが存在する可能性があるため、当該Ｔｘの修復処理を実行する。
【０１６９】
待機系ホストＹ（１００ｂ）は、割り込みが失われた可能性を考慮して、待機系ホストＹ（１００ｂ）配下のデバイスの割り込み状態の修復を実行する（ステップ１１４０）。具体的には、待機系ホストＹ（１００ｂ）は、割り込み要因レジスタ（図示省略）の割り込み要因ビットを参照して割り込み要因を特定し、その後、割り込み要因ビットをクリアする。
【０１７０】
待機系ホストＹ（１００ｂ）は、完了しないＴｘがタイムアウトを起こした場合、当該Ｔｘを再発行する（ステップ１１５０）。
【０１７１】
以上の修復処理が完了した後、待機系ホストＹ（１００ｂ）は、新たな現用系ホストＹ（１００ｂ）として動作する（ステップ１１６０）。
【０１７２】
以上が第一の実施例の変形例である。
【０１７３】
〔第二の実施形態〕
以下、本発明の第二の実施形態を示す。
【０１７４】
計算機システム、ホスト１００、及びマルチルートＰＣＩスイッチ２００等の構成は第一の実施形態と同一であるため説明を省略する。以下、第一の実施形態との差異を中心に説明する。
【０１７５】
第二の実施形態では、仮想スイッチグループ管理表５１０に新たな項目を付加する。
【０１７６】
図２２は、本発明の第二の実施形態の仮想スイッチグループ管理表５１０−２を示す説明図である。
【０１７７】
図２２に示すように、仮想スイッチグループ管理表５１０−２のエントリには、新たに障害時設定５４０が追加されている。
【０１７８】
障害時設定５４０は、マルチルートＰＣＩスイッチ２００が障害を検出した時に自動的に仮想スイッチ４００を切り替えるための設定を行うためのエントリである。以下、障害時設定５４０の詳細ついて説明する。
【０１７９】
図２３は、本発明の第二の実施形態の障害時設定５４０の一例を示す説明図である。
【０１８０】
障害時設定５４０は、切り替え先仮想スイッチ番号（切り替え先ＶＳ＃）５４１、割り込みベクタ番号（割り込みベクタ＃）５４２、切り替え要因５４３、切り替え条件５４４、Ｗａｔｃｈｄｏｇ  Ｔｉｍｅｒ閾値５４５、Ｗａｔｃｈｄｏｇ  Ｔｉｍｅｒ制御レジスタ５４６を含む。
【０１８１】
切り替え先仮想スイッチ番号５４１は、フェイルオーバー時に切り替えられる仮想スイッチ４００の仮想スイッチ番号５２１を格納する。具体的には、仮想スイッチリスト５１３のうち有効仮想スイッチ番号５１４で指定されていない仮想スイッチ番号５２１が格納される。
【０１８２】
割り込みベクタ番号５４２は、仮想スイッチ４００の切り替えが発生した時に、切り替え時に待機系ホストＹ（１００ｂ）へと通知する割り込みの識別子を格納する。
【０１８３】
切り替え要因５４３及び切り替え条件５４４は、切り替えの要因となった障害やリセットの種別ごとにビットマップで指定する。切り替えの要因となった障害やリセットの種別ごとにビットマップは、例えば、非特許文献１のＰ．１２３〜１２５に記載されているようなものを用いることができる。
【０１８４】
切り替え要因としては、
（１）現用系ホストＸ（１００ａ）が使用する仮想スイッチ４００におけるリセットの検出
（２）Ｗａｔｃｈｄｏｇ  Ｔｉｍｅｒのタイムアウト、
（３）現用系ホストＸ（１００ａ）が使用する仮想スイッチ４００における障害検出
等の要因が考えられる。
【０１８５】
Ｗａｔｃｈｄｏｇ  Ｔｉｍｅｒは、カウントがスタートされてからカウントアップされ続け、現用系ホストＸ（１００ａ）上のＰＣＩマネージャー２９０又はフェイルオーバー監視部１３７によって、定期的にクリアされるカウンタである。
【０１８６】
もし、Ｗａｔｃｈｄｏｇ  Ｔｉｍｅｒがクリアされずに、予め設定されたＷａｔｃｈｄｏｇ  Ｔｉｍｅｒ閾値５４５を超えた場合、現用系ホストＸ（１００ａ）の障害とみなされ、待機系ホストＹ（１００ｂ）への切り替えるように割り込みによる通知が行われる。
【０１８７】
Ｗａｔｃｈｄｏｇ  Ｔｉｍｅｒ制御レジスタ５４６には、現在のカウンタの値、カウントアップの有効・無効制御フラグ、カウンタのクリア用ビット、カウンタがオーバーフローしたことを示すフラグ、等が含まれる。
【０１８８】
図２４は、本発明の第二の実施形態のマルチルートＰＣＩスイッチ２００がホストＸ（１００ａ）の障害を検出して仮想スイッチ４００を切り替える場合における処理を説明するフローチャートである。
【０１８９】
マルチルートＰＣＩスイッチ２００は、障害時設定５４０の切り替え条件５４４に設定された条件に従って条件を判定する（ステップ１２００）。
【０１９０】
マルチルートＰＣＩスイッチ２００は、切り替え条件５４４を参照し、リセット監視が有効か否かを判定する（ステップ１２１０）。
【０１９１】
リセット監視が有効であると判定された場合、マルチルートＰＣＩスイッチ２００は、現用系ホストＸ（１００ａ）が使用する仮想スイッチ４００（以下、現用系仮想スイッチ４００とも記載する。）でリセットを検出したか否かを判定する（ステップ１２２０）。マルチルートＰＣＩスイッチ２００は、現用系ホストＸ（１００ａ）からリセットの通知を検出することによって判定することができる。
【０１９２】
現用系仮想スイッチ４００でリセットが検出された場合、マルチルートＰＣＩスイッチ２００は、ステップ１２８０へ進む。
【０１９３】
現用系仮想スイッチ４００でリセットが検出されない場合、マルチルートＰＣＩスイッチ２００は、ステップ１２３０に進む。
【０１９４】
ステップ１２１０において、リセット監視が有効でないと判定された場合、マルチルートＰＣＩスイッチ２００は、切り替え条件５４４を参照し、障害監視が有効であるか否かを判定する（ステップ１２３０）。
【０１９５】
障害監視が有効であると判定された場合、マルチルートＰＣＩスイッチ２００は、現用系仮想スイッチ４００で回復不可能な致命的障害を検出したか否かを判定する（ステップ１２４０）。
【０１９６】
現用系仮想スイッチ４００で回復不可能な致命的障害が検出された場合、マルチルートＰＣＩスイッチ２００は、ステップ１２８０に進む。
【０１９７】
現用系仮想スイッチ４００で回復不可能な致命的障害が検出されない場合、マルチルートＰＣＩスイッチ２００は、ステップ１２５０に進む。
【０１９８】
ステップ１２３０において、障害監視が有効でないと判定された場合、マルチルートＰＣＩスイッチ２００は、切り替え条件５４４を参照し、Ｗａｔｃｈｄｏｇ  Ｔｉｍｅｒ監視が有効であるか否かを判定する（ステップ１２５０）。
【０１９９】
Ｗａｔｃｈｄｏｇ  Ｔｉｍｅｒ監視が有効でないと判定された場合、マルチルートＰＣＩスイッチ２００は、ステップ１２００に戻り、監視を続ける。
【０２００】
Ｗａｔｃｈｄｏｇ  Ｔｉｍｅｒ監視が有効であると判定された場合、マルチルートＰＣＩスイッチ２００は、Ｗａｔｃｈｄｏｇ  Ｔｉｍｅｒをカウントアップし（ステップ１２６０）、Ｗａｔｃｈｄｏｇ  ＴｉｍｅｒがＷａｔｃｈｄｏｇ  Ｔｉｍｅｒ閾値５４５を超えたか否かを判定する（ステップ１２７０）。
【０２０１】
Ｗａｔｃｈｄｏｇ  ＴｉｍｅｒがＷａｔｃｈｄｏｇ  Ｔｉｍｅｒ閾値５４５を超えていないと判定された場合、マルチルートＰＣＩスイッチ２００は、ステップ１２００に戻り、監視を続ける。
【０２０２】
Ｗａｔｃｈｄｏｇ  ＴｉｍｅｒがＷａｔｃｈｄｏｇ  Ｔｉｍｅｒ閾値５４５を超えたと判定された場合、マルチルートＰＣＩスイッチ２００は、ステップ１２８０に進む。
【０２０３】
ステップ１２８０において、マルチルートＰＣＩスイッチ２００は、発生した要因を切り替え要因５４３に記録する。
【０２０４】
次に、マルチルートＰＣＩスイッチ２００は、予め設定された切り替え先仮想スイッチ番号５４１へと、有効仮想スイッチ番号５１４を書き換える（ステップ１２９０）。
【０２０５】
続いて、マルチルートＰＣＩスイッチ２００は、ステップ１２９０で切り替えられた後の仮想スイッチ４００に対して、割り込みベクタ番号５４２に指定されたベクタを用いて割り込みを発行する（ステップ１３００）。
【０２０６】
以降、待機系ホストＹ（１００ｂ）が新たな現用系ホストＹ（１００ｂ）として動作する（ステップ１３１０）。
【０２０７】
図２５は、本発明の第二の実施形態の現用系ホストＸ（１００ａ）の処理を説明するフローチャートである。
【０２０８】
現用系ホストＸ（１００ａ）は、管理用ネットワーク２７０を介して、現用系ホストＸ（１００ａ）に関する情報を待機系ホストＹ（１００ｂ）へと適宜コピーをして同期を取る（ステップ１４００）。
【０２０９】
現用系ホストＸ（１００ａ）は、Ｗａｔｃｈｄｏｇ  Ｔｉｍｅｒ監視が有効か否かを判定する（ステップ１４１０）。判定方法としては、図２４のステップ１２５０と同一の方法を用いることができる。
【０２１０】
Ｗａｔｃｈｄｏｇ  Ｔｉｍｅｒ監視が有効でないと判定された場合、現用系ホストＸ（１００ａ）は、ステップ１４００に戻り同様の処理を実行する。
【０２１１】
Ｗａｔｃｈｄｏｇ  Ｔｉｍｅｒ監視が有効であると判定された場合、現用系ホストＸ（１００ａ）は、周期的に、障害時設定５４０内のＷａｔｃｈｄｏｇ  Ｔｉｍｅｒ制御レジスタ５４６にアクセスし、カウンタをクリアし（ステップ１４２０）、ステップ１４００に戻り同様の処理を実行する。これにより、現用系ホストＸ（１００ａ）が動作している間にＷａｔｃｈｄｏｇ  Ｔｉｍｅｒがオーバーフローすることを防ぐことができる。
【０２１２】
図２６は、本発明の第二の実施形態の待機系ホストＹ（１００ｂ）の処理を説明するフローチャートである。
【０２１３】
待機系ホストＹ（１００ｂ）は、管理用ネットワーク２７０を介して、現用系ホストＸ（１００ａ）から現用系ホストＸ（１００ａ）に関する情報を取得し、適宜、現用系ホストＸ（１００ａ）に関する情報をアップデートする（ステップ１５００）。
【０２１４】
待機系ホストＹ（１００ｂ）は、割り込みを受けた否かを判定する（ステップ１５１０）。
【０２１５】
割り込みを受けていないと判定された場合、待機系ホストＹ（１００ｂ）は、ステップ１５００に戻り同様の処理を実行する。
【０２１６】
割り込みを受けたと判定された場合、待機系ホストＹ（１００ｂ）は、切り替え要因５４３を読み出す（ステップ１５２０）。なお、当該割り込みには、少なくとも割り込みベクタ番号５４２が含まれる。
【０２１７】
待機系ホストＹ（１００ｂ）は、割り込みベクタ番号５４２及び切り替え要因５４３から、割り込みの要因が仮想スイッチ４００の切り替えに伴うものであるか否かを判定する（ステップ１５３０）。
【０２１８】
割り込みの要因が仮想スイッチ４００の切り替えに伴うものでないと判定された場合、待機系ホストＹ（１００ｂ）は、ステップ１５００に戻り同様の処理を実行する。なお、仮想スイッチ４００の切り替え以外の割り込みの要因については、待機系ホストＹ（１００ｂ）が備える他の機能によって処理が実行される。
【０２１９】
割り込みの要因が仮想スイッチ４００の切り替えに伴うものであると判定された場合、待機系ホストＹ（１００ｂ）は、待機系ホストＹ（１００ｂ）配下のデバイスの割り込み状態の修復を実行する（ステップ１５４０）。修復方法は、図２１のステップ１１４０と同一の方法を用いることができる。
【０２２０】
また、待機系ホストＹ（１００ｂ）は、待機系ホストＹ（１００ｂ）配下で、タイムアウトしたＴｘを再発行する（ステップ１５５０）。
【０２２１】
以降、待機系ホストＹ（１００ｂ）が新たな現用系ホストＹ（１００ｂ）として動作する。
【０２２２】
以上が、第二の実施例である。
【０２２３】
本発明の一実施形態によれば、ＰＣＩマネージャー２９０が稼動する現用系ホストから待機系ホストへ切り替える場合、ＭＲデバイス３００のリセットが発生しないように仮想スイッチ４００の切り替えることができる。
【０２２４】
これによって、ＭＲ−ＩＯＶ仕様に違反するような中間状態が発生せず、また、ＭＲデバイス３００のリセットが発生しない。したがって、切り替え後においても、他のホストが使用する仮想スイッチ４００をそのまま引き継ぐことができため、他のホストに影響を与えない。
【０２２５】
また、本発明の他の実施形態によれば、ＰＣＩマネージャー２９０が稼動する現用系ホストの障害発生時に待機系ホストに引き継ぎを行うと共に、ＭＲデバイス３００のリセットが発生しないように仮想スイッチの切り替えることができる。
【０２２６】
これによって、現用系ホストの障害発生による一転障害を解消するとともに、ＭＲ−ＩＯＶ仕様に違反するような中間状態が発生せず、また、ＭＲデバイス３００のリセットが発生しないため、信頼性の高い計算機システムを構築できる。
【符号の説明】
【０２２７】
１００  ホスト
１１０  ルートポート
１１１  Ｉ／Ｏバス
１２０  ＣＰＵ
１３０  メモリ
１３１  メモリコード部
１３２  メモリデータ部
１３３  ＰＣＩマネージャー実行コード
１３４  ＭＲデバイスドライバ
１３６  ＰＣＩバスツリー管理表
１３７  フェイルオーバー監視部
１４０  Ｉ／Ｏハブ
１４５  内部バス
１４６  メモリバス
１４７  ストレージＩ／Ｆ
１５０  ストレージ
１５１  ＰＣＩマネージャープログラム
１５２  管理用設定値
１６０  ネットワークコントローラ
２００  マルチルートＰＣＩスイッチ
２１０  上流ポート
２２０  下流ポート
２３０  内部バス
２４０  スイッチ管理バス
２５０  ルーティング制御部
２６０  仮想スイッチ生成機構
２６１  ポートマップ情報生成部
２６２  仮想スイッチ構成情報生成部
２６３  ポートマップ情報
２６４  仮想スイッチ構成情報
２７０  管理用ネットワーク
２８０  管理コンソール
２９０  ＰＣＩマネージャー
３００  ＭＲデバイス
３１０  仮想階層
４００  仮想スイッチ
４１０  仮想ブリッジ
５１０  仮想スイッチグループ管理表
５１１  仮想スイッチグループ番号
５１２  有効フラグ
５１３  仮想スイッチリスト
５１４  有効仮想スイッチ番号
５２０  仮想スイッチ管理表
５２１  仮想スイッチ番号
５２２  有効フラグ
５２３  開始仮想ブリッジ番号
５２４  仮想ブリッジエントリ数
５３０  仮想ブリッジ管理表
５３１  仮想ブリッジ番号
５３２  有効フラグ
５３３  方向フラグ
５３４  ポートマップ状態
５３５  ポート番号
５３６  仮想階層番号
５４０  障害時設定
５４１  切り替え先仮想スイッチ番号
５４２  割り込みベクタ番号
５４３  切り替え要因
５４４  切り替え条件
５４５  Ｗａｔｃｈｄｏｇ  Ｔｉｍｅｒ閾値
５４６  Ｗａｔｃｈｄｏｇ  Ｔｉｍｅｒ制御レジスタ
６０１  Ｂｕｓ＃
６０２  Ｄｅｖｉｃｅ＃
６０３  Ｆｕｎｃ＃
６０４  デバイス種別
６０５  デバイス名
６０６  Ｂａｓｅ  Ａｄｄｒｅｓｓ
６０７  Ｓｉｚｅ
６５０  ホスト−デバイス割り当て表
６５１  管理ホスト指定部
６５２  ホスト名
６５３  デバイス指定部
６５４  仮想階層番号指定部
６６０  トポロジ情報
６６１  ポート番号
６６２  方向
６６３  コンポーネント種別
６６４  デバイス名
６６５  最大仮想階層数
【図１】
2010282387.tif 000003
【図２】
2010282387.tif 000004
【図３】
2010282387.tif 000005
【図４】
2010282387.tif 000006
【図５】
2010282387.tif 000007
【図６】
2010282387.tif 000008
【図７】
2010282387.tif 000009
【図８】
2010282387.tif 000010
【図９】
2010282387.tif 000011
【図１０】
2010282387.tif 000012
【図１１】
2010282387.tif 000013
【図１２】
2010282387.tif 000014
【図１３】
2010282387.tif 000015
【図１４】
2010282387.tif 000016
【図１５】
2010282387.tif 000017
【図１６】
2010282387.tif 000018
【図１７】
2010282387.tif 000019
【図１８】
2010282387.tif 000020
【図１９】
2010282387.tif 000021
【図２０】
2010282387.tif 000022
【図２１】
2010282387.tif 000023
【図２２】
2010282387.tif 000024
【図２３】
2010282387.tif 000025
【図２４】
2010282387.tif 000026
【図２５】
2010282387.tif 000027
【図２６】
2010282387.tif 000028
【図２７】
2010282387.tif 000029
【図２８】
2010282387.tif 000030