(57)【要約】【課題】冗長性を持たせたＩ／Ｏインターフェースによって障害に対応可能にする。【解決手段】コンピュータシステム(11)は、組み込みコンピュータシステムと、ネットワークか又はマルチポートディスクアレイのような外部システム(13)との間の通信を管理するための冗長Ｉ／Ｏインターフェースモジュール(21及び23)を有する。冗長Ｉ／Ｏインターフェースマネージャ(33)は、冗長Ｉ／Ｏインターフェースモジュールのうちの一方による通信を方向付け、例えば、第１のＩ／Ｏインターフェースモジュールの障害が検出されたか予測される時には、他方による通信に切り換える。前記切り換えが、前記組み込みシステムのオペレーティングシステムには効果的に不可視であるため、冗長Ｉ／Ｏインターフェースモジュールは、該オペレーティングシステム(53)にとって前記第1のＩ／Ｏインターフェースモジュールとして見える。【選択図】図１
2006302287.tif 000002
【特許請求の範囲】
【請求項１】
第１のＩ／Ｏモジュールに接続するための第１の接続部と、
第２のＩ／Ｏモジュールに接続するための第２の接続部と、
組み込みシステムとインターフェースするためのシステムインターフェースであって、前記組み込みシステムのＩ／Ｏインターフェースモジュールドライバにとって、あたかもそれが前記第１のＩ／Ｏインターフェースモジュールであるかのように見えるように該組み込みシステムとインターフェースする、システムインターフェースと、
前記第１のＩ／Ｏインターフェースモジュールが、前記Ｉ／Ｏインターフェースモジュールの両方に接続された外部システムとの通信を停止するように、及び、前記第２のＩ／Ｏインターフェースモジュールが前記外部システムとの通信を開始するように、前記Ｉ／Ｏインターフェースモジュールに対する設定を切り換えるためのコントローラ
とを備える、冗長Ｉ／Ｏインターフェースマネージャ。
【請求項２】
前記コントローラは、前記第１のＩ／Ｏインターフェースモジュールの障害の検出に応答して前記設定を切り換える、請求項１に記載の冗長Ｉ／Ｏインターフェースマネージャ。
【請求項３】
前記コントローラは、前記第１のＩ／Ｏインターフェースモジュールの障害の予測に応答して前記設定を切り換える、請求項１に記載の冗長Ｉ／Ｏインターフェースマネージャ。
【請求項４】
前記コントローラは、前記動作からのコンフィギュレーションデータを、前記第１のＩ／Ｏインターフェースモジュールと前記第２のＩ／Ｏインターフェースモジュールとの両方に対して送出し、その結果、該第１のＩ／Ｏインターフェースモジュールと該第２のＩ／Ｏインターフェースモジュールとの両方が、同じコンフィギュレーション変更を受ける請求項１乃至３のいずれか１項に記載の冗長Ｉ／Ｏインターフェースマネージャ。
【請求項５】
前記システムインターフェースが、Ｉ／Ｏブリッジチップに接続する、請求項１乃至４のいずれか１項に記載の冗長Ｉ／Ｏインターフェースマネージャ。
【請求項６】
第１のＩ／Ｏインターフェースモジュールが行うものとして、オペレーティングシステムからの通信に応答し、及び、組み込みシステムと外部システムとの間の通信を、前記第１のＩ／Ｏインターフェースモジュールと前記外部システムの第１のポートとを含む第１の経路を通して方向付け、及び、
続いて、前記オペレーティングシステムからの通信に応答し続ける間に、前記第１のＩ／Ｏインターフェースモジュールが行うものとして、第２のＩ／Ｏインターフェースモジュールと前記外部システムの第２のポートとを含む第２の経路に前記第１の経路からの通信を切り換える
といったことを含む、方法。
【請求項７】
前記第１のＩ／Ｏインターフェースモジュールの障害を検出すること又は予測することを更に含み、前記切り換えることは、前記検出することか又は予測することに応答している、請求項６に記載の方法。
【請求項８】
前記第１のＩ／Ｏインターフェースモジュールに対して意図されたコンフィギュレーションデータを受け取り、及び、
前記第１のＩ／Ｏインターフェースモジュールと前記第２のＩ／Ｏインターフェースモジュールとの両方に対して、前記コンフィギュレーションデータのコピーを提供し、その結果、それらのコンフィギュレーション状態がコヒーレントのままとなる
といったことを更に含む、請求項６又は７に記載の方法。
【請求項９】
前記外部システムはネットワークである、請求項６乃至８のいずれか１項に記載の方法。
【請求項１０】
前記外部システムはマルチポートディスクアレイである、請求項６乃至８のいずれか１項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータに関し、特に、コンピュータのためのＩ／Ｏ（「入力／出力」）サブシステムに関する。本明細書内において、「従来技術」とラベル付けられた関連技術は、従来技術であると認められており、「従来技術」とラベル付けられていない関連技術は、従来技術であると認めていない。
【背景技術】
【０００２】
現代社会におけるコンピュータの普及は、汎用コンピュータが、往々にしてサードパーティの構成要素である、標準規格品としての構成要素を使用して組み立てられ、保守され、及びアップグレードされることを可能にするインターフェース規格が遵守されていることに部分的に起因する。欠陥構成要素によるダウンタイム（又は故障による停止時間）が非常にコストがかかる用途において使用される、高可用性（又は高稼働率）コンピュータは、構成要素が典型的には高可用性基準を満たすために特別に設計されなければならないため、標準規格から汎用コンピュータが受けるのと同じほどには恩恵を受けてこなかった。例えば、ネットワーク及びディスクアレイＩ／Ｏインターフェースカードのような幾つかの構成要素を、一方に障害が発生した場合には他方が動作を大幅に中断させることなく引き継ぐことができるように、冗長なグループで構成することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
前記特別な設計は、冗長動作のために設計された特別なハードウェアだけでなく、特別なソフトウェア（例えば冗長構成要素を管理するために設計されたオペレーティングシステム及びドライバ）も頻繁に含む。これらはその結果として、大量の技術設計リソースと長期間にわたる設計及び開発スケジュールとを要する（これらは急速に展開する市場において問題があることである）。
【課題を解決するための手段】
【０００４】
本発明は、特許請求の範囲内において画定されるものとして、マルチパスターゲット（例えばネットワーク及びマルチパスディスクアレイ）に対する、標準規格品としてのＩ／Ｏインターフェースモジュール（例えばＩ／Ｏインターフェースカード）の、冗長構成を管理するための冗長Ｉ／Ｏインターフェースマネージャ（Redundant I/O Interface Manager：ＲＩＭ）を提供し、一方で、単一Ｉ／Ｏインターフェースカードが存在していることをＩ／Ｏインターフェースカードドライバに対して見えさせる（又はわからせる）。本発明により、Ｉ／Ｏインターフェースカードのための特別なドライバの必要性を不要にし、冗長動作のために設計されていないストックドライバを使用することができる。標準規格品としてのＩ／Ｏインターフェースカード及びドライバを使用することができるため、製造、保守、及びアップグレードにおいて、大幅なコスト削減を達成することができる。更に、本発明は、高い信頼性／可用性のコンピュータを設計するために必要なリソースを低減させ、より高速な開発時間を提供し、従って、よりタイムリーなリリーススケジュールを達成させる。本発明の、これらの及び他の特徴及び利点は、添付図面に関連して下記の説明から明らかである。
【発明の効果】
【０００５】
特別な設計を必要とせずに、冗長性を持たせたＩ／Ｏインターフェースによって障害発生時に動作を正常動作に切り換えることができる。
【実施例】
【０００６】
本発明によるコンピューティングシステムＡＰ１が、コンピュータ１１及びディスクアレイ１３を含む図１内に示されている。ディスクアレイ１３は、ポート１５と１７とにおける２つの独立した接続を提供する。典型的な構成において、該２つの接続は２つの異なるコンピュータに対するものである。該２つの接続は、この場合には、コンピュータシステム１１の、２つの異なるディスクアレイＩ／Ｏインターフェースカード２１及び２３に対するものである。他の実施形態において、ターゲットは、ネットワークであり、Ｉ／Ｏインターフェースカードは、ネットワークＩ／Ｏインターフェースカードである。より一般的には、Ｉ／Ｏインターフェースカードは、２つか又はそれよりも多くの利用可能な接続部を有する、他のタイプのデバイスに、接続することができる。
【０００７】
コンピュータシステム１１は、プロセッサ２５及び２７、メモリ２９、入力−出力（Ｉ／Ｏ）ブリッジ３１、冗長Ｉ／Ｏインターフェースマネージャ３３、及びＩ／Ｏインターフェースカード２１及び２３、並びに、他の構成要素を備える。プロセッサ２５及び２７、メモリ２９、及びＩ／Ｏブリッジ３１は、バス３５として概略的に示された通信構造を介して通信可能に接続される。Ｉ／Ｏブリッジ３１は、Ｉ／Ｏブリッジに対するＰＣＩバスインターフェース４３を介して、冗長Ｉ／Ｏインターフェースマネージャ３３のシステムポート４１に結合される。Ｉ／Ｏインターフェースカード２１と２３とは、バスインターフェース４８と４９とによって、冗長Ｉ／Ｏインターフェースマネージャ３３のＩ／Ｏポート４５と４７とにそれぞれ結合される。代替の実施形態において、ＰＣＩとは別のＩ／Ｏ通信プロトコル及び技術が使用される。冗長Ｉ／Ｏインターフェースマネージャ３３のコントローラ５０は、そのポート４１、４５、及び４７との間の相互作用を管理する。
【０００８】
メモリ２９は、ランダムアクセスメモリと内部ハードディスクとの両方を含む。メモリ２９は、データ５１と、オペレーティングシステム５３、アプリケーション５５、及びＩ／Ｏドライバ５７を含むプログラムとを格納する。Ｉ／Ｏブリッジ３１が、いくつかの接続５９を有することに留意されたい。すなわち、図１内において、接続されるデバイスが図示されていないが、それらは他のＩ／Ｏデバイスを含むことができ、該他のＩ／Ｏデバイスのうちのいくつかは、冗長構成になっているが、他のものはそうなっていない。
【０００９】
Ｉ／Ｏインターフェースカード２１と２３とは、それらが同じ製造業者によるものであることから名目上同一であり、同一のドライバが提供される。Ｉ／Ｏドライバ５７は、Ｉ／Ｏインターフェースカード２１と２３との両方のために使用されるドライバの一例だけを含む。初期化時には、冗長Ｉ／Ｏインターフェースマネージャ３３は、「アクティブな」カードとしてカードのうちの一方を（例えばカード２１を）選択し、「スペアの」カードとして他方を（例えばカード２３を）選択する。ディスクアレイ１３との通信は、現在アクティブなカードにより単独で行われる。冗長Ｉ／Ｏインターフェースマネージャ３３は、オペレーティングシステム５３にとって単一のＩ／Ｏインターフェースカードとして見える、Ｉ／Ｏインターフェースカードに対するプロキシ（又は代理）としての機能を果たす。冗長動作をサポートするために、ドライバソフトウェアを修正する必要が無い。
【００１０】
通常動作中、ＲＩＭコントローラ５０は、書き込まれているトランザクションＩＤとアドレス空間とに基づいてコンフィギュレーションデータ（又は設定データ、又は構成データ）を認識することができる。ＲＩＭコントローラ５０は、アクティブなＩ／ＯインターフェースカードとスペアのＩ／Ｏインターフェースカードとの両方によってコンフィギュレーションデータが受け取られるようにＩ／Ｏインターフェースカードが見えることを意図された該コンフィギュレーションデータを自動的にミラーリングする。従って、スペアは、アクティブなカードと同じコンフィギュレーション（又は設定、又は構成）において維持される。切換えが生じる時には、スペアはドライバによって期待された状態にある。
【００１１】
現在アクティブなカードに障害が発生したイベントにおいて、ＲＩＭコントローラ５０は、スペアカードへの切換えを管理する。今までアクティブであったカードによる通信は終了させられて、次いでスペアによってアクティブにされる（又はスペアがアクティブにされる）。ＲＩＭコントローラ５０は、切換えの行うためにかかる時間中に起こり得るタイムアウトを除いて、ＯＳ５３にとって不可視であるような手法で切換えを管理する。典型的には、タイムアウトのイベントにおいて、データの消失が起こらないように、通信のリトライが引き起こされる。アクティブＩ／ＯインターフェースカードとスペアＩ／Ｏインターフェースカードとの両方に障害が発生した時にのみ、ＰＣＩバスエラーが発生する。
【００１２】
ネットワークＡＰ１の状況において実施されるような本発明の方法Ｍ１が、図２において、フローチャートに示されている。システム１１は、方法セグメントＳ１１において起動される。方法セグメントＳ１２において、ＲＩＭ３３は、その２つのスロット内におけるＩ／Ｏインターフェースカードの存在をチェックし、少なくとも１つのＩ／Ｏインターフェースカードが存在する場合には、「存在（presence）」フラグを設定する。方法セグメントＳ１３において、２つのカードが存在していると仮定すると、ＲＩＭ３３は、Ｉ／Ｏインターフェースカードのうちの一方を（例えばカード２１を）、一次Ｉ／Ｏインターフェースカードとなるように選択し、他方を（例えばカード２３を）、二次Ｉ／Ｏインターフェースカードとなるように選択する。前記一次カードは、デフォルトで「アクティブ」であるが、二次Ｉ／Ｏインターフェースカードは、デフォルトで「スペア」である。
【００１３】
方法セグメントＳ１４において、システムファームウェアは、Ｉ／Ｏバスを１つずつ調べて、Ｉ／Ｏインターフェースカードを探す。カード２１と２３とを読み出す代りに、Ｉ／Ｏインターフェースカードのプロキシとしての機能を果たすＲＩＭ３３内において設定された存在フラグを読み出す。存在フラグが設定されていると仮定すると、方法セグメントＳ１５において、システムファームウェアは、検出する「カード」を初期化することを試みる。このことには、Ｉ／Ｏアドレスを設定すること、モードビットを設定すること、マイクロコードを提供すること等を含めることができる。方法セグメントＳ１６において、ＲＩＭ３３は、２つのＩ／Ｏインターフェースカード２１と２３との間の全てのセットアップトランザクションをミラーリングする。この時点で、Ｉ／Ｏインターフェースカード２１及び２３は同一にセットアップされる。動作中、オペレーティングシステム５３が新たなコンフィギュレーションデータを送出する場合には、ＲＩＭ３３はまた、それをＩ／Ｏインターフェースカード２１と２３との両方に対してミラーリングし、その結果、それらのコンフィギュレーション状態がコヒーレントなまま（又は整合がとれたまま）となる。方法セグメントＳ１７において、ファームウェアは、立ち上がる時にオペレーティングシステム５３に対しアドレスマップを提示する。ここでもまた、オペレーティングシステム５３及びドライバ５７にとって、冗長ペア２１と２３とが単一アドレスを有する単一Ｉ／Ｏインターフェースカードとして見える。
【００１４】
方法セグメントＳ１８において、通常動作中、ＲＩＭ３３は、ブリッジ３１を介してオペレーティングシステム５３からの読み出し／書き込み動作を受け入れる。ＲＩＭ３３は、トランザクションをそれが完了するまで保持する。方法セグメントＳ１９において、ＲＩＭ３３は、アクティブなＩ／Ｏインターフェースカード（例えばカード２１）に対する動作を進行させる。ディスクアレイ１３に関連した要求された転送が成功した場合には、ＲＩＭ３３は、方法セグメント２０において読み出し／書き込み動作を完了する。
【００１５】
トランザクションが成功しなかった場合には、ＲＩＭ３３は、方法セグメントＳ２１において切換えを実行する。新たにアクティブとなったＩ／Ｏインターフェースカード（例えばカード２３）によって、ディスクアレイ１３とのトランザクションが成功した場合には、ＲＩＭ３３は、方法セグメントＳ２０において読み出し／書き込み動作を完了する。もしもそうでなく、オペレーティングシステム５３から見て、読み出し／書き込み動作がタイムアウトした場合には、方法Ｍ１は通常、リトライのために方法セグメントＳ１８に戻ることになる。おそらくリトライは成功するであろう。しかしながら、両方のカードに障害が発生している場合には、トランザクションを完了させることができない。この場合を、非冗長コンフィギュレーションにおける単一Ｉ／Ｏインターフェースカードの障害と同様の手法において処理することができる。
【００１６】
方法Ｍ１において、アクティブなカードの障害が検出された時に切換えが生じる。しかしながら、他の状況において同様に切換えを生じさせることも可能である。例えば、障害の予測に応答して、例えばＲＩＭ３３がアクティブカードに関連するトランザクションにおいて過度なエラーを検出した時には、切換えを生じさせることができる。Ｉ／Ｏインターフェースカード間のデューティサイクルのバランスをとることに役立つように切換えを実行することもできる。代替の実施形態において、冗長Ｉ／Ｏインターフェースカードは、オペレーティングシステムにとって可視であるが、特定のＩ／Ｏインターフェースカードドライバにとっては可視ではなく、この代替の実施形態において、ＯＳが切換えを要求することができる。
【００１７】
本発明は、任意の数のプロセッサ及び任意のメモリアーキテクチャを有するシステムを提供する。冗長性には、２つか又はそれよりも多くのＩ／Ｏインターフェースモジュールを関与させることができる。３つか又はそれよりも多くのＩ／Ｏインターフェースモジュールの構成を有するいくつかの実施形態において、本発明は、２つ以上のアクティブなＩ／Ｏインターフェースモジュールを提供する。例示された実施形態において、両方のＩ／Ｏインターフェースカードに対して１つのドライバだけが用いられているが、本発明は、冗長インターフェースモジュールが同一ドライバを使用する必要がないように、異なるドライバをやり繰りすることができる冗長管理ソフトウェアを更に提供する。例示された実施形態において、Ｉ／Ｏインターフェースモジュールを「カード」として説明することができるが、本発明は他の形態要素を有するモジュールを提供する。添付の特許請求の範囲内によって範囲が画定される本発明によって、記載された実施形態に対するこれらの及び他の変形形態と修正とが提供される。
【図面の簡単な説明】
【００１８】
【図１】本発明によって提供される多くの実現可能なコンピュータシステムのうちの１つの概略ブロック図である。
【図２】本発明によって提供される多くの方法のうちの１つのフローチャートである。
【符号の説明】
【００１９】
１３  外部システム
２１  第1のＩ／Ｏインターフェースモジュール
２３  第２のＩ／Ｏインターフェースモジュール
３３  冗長Ｉ／Ｏインターフェースマネージャ
５７  Ｉ／Ｏインターフェースモジュールドライバ
【図１】
2006302287.tif 000003
【図２】
2006302287.tif 000004