(57)【要約】【課題】ストレージ装置と複数のサーバをＩ／Ｏインターフェースで接続した計算機システムにおいて、何れかのＩ／Ｏインターフェースで障害が発生したときに全体に障害の影響が波及するのを抑制する。【解決手段】サーバモジュールが、第１のインターフェースの障害を検出すると、所定の回復処理を実行し、サーバモジュールとストレージモジュールを接続する接続モジュールが、第１のエンドポイントで第１のインターフェースの障害の発生を検出すると、障害の発生通知を出力し、接続モジュールでは障害の発生通知を第１のインターフェースの切断通知に変換して第２のエンドポイントからストレージモジュールに送信し、ストレージモジュールが接続モジュールから切断通知を受信すると、第１のインターフェースに障害が発生したサーバモジュールとの接続を解除する。【選択図】図５
2015064648.tif 000002
【特許請求の範囲】
【請求項１】
サーバモジュールと、ストレージモジュール及び接続モジュールを備える計算機システムであって、
前記サーバモジュールは、
第１のプロセッサと、
第１のメモリと、
他の装置と接続する第１のインターフェースと、
前記第１のインターフェースを介して前記ストレージモジュールにアクセスを要求するストレージアクセス部と、
前記第１のインターフェースの障害を検出する障害検出部と、
前記障害検出部が前記第１のインターフェースの障害を検出したときに、所定の回復処理を実行する障害処理部と、を有し、
前記接続モジュールは、
前記第１のインターフェースに接続されて、前記第１のインターフェースの障害の発生を検出すると、障害の発生通知を出力する第１のエンドポイントと、
前記ストレージモジュールの第２のインターフェースに接続される第２のエンドポイントと、
前記第１のエンドポイントと第２のエンドポイントの間でデータの転送を行うデータ転送部と、
前記第１のエンドポイントが、前記障害の発生通知を出力すると、前記障害の発生通知を第１のインターフェースの切断通知に変換し、当該変換された切断通知を前記第２のエンドポイントから前記ストレージモジュールに送信するイベント模擬部と、を有し、
前記ストレージモジュールは、
第２のプロセッサと、
第２のメモリと、
記憶装置と、
他の装置と接続する第２のインターフェースと、
前記第２のインターフェースからアクセス要求を受信して、前記記憶装置にアクセスするストレージ制御部と、
前記接続モジュールから前記切断通知を受信したときに、前記サーバモジュールとの接続を解除する切断処理部と、
を有することを特徴とする計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記接続モジュールは、
前記第１のエンドポイントと第２のエンドポイントの間でプロトコルの変換を行うプロトコル変換部を有し、前記切断通知を前記第２のエンドポイントのプロトコルで送信することを特徴とする計算機システム。
【請求項３】
請求項１に記載の計算機システムであって、
前記サーバモジュールの障害処理部が行う所定の回復処理は、前記第１のインターフェースのリセットであることを特徴とする計算機システム。
【請求項４】
請求項１に記載の計算機システムであって、
前記計算機システムは、
複数の前記サーバモジュールと、
前記複数のサーバモジュールにそれぞれ接続された前記接続モジュールと、を有し、
複数の前記接続モジュールの前記第２のエンドポイントは、前記ストレージモジュールの前記第２のインターフェースに接続されたことを特徴とする計算機システム。
【請求項５】
サーバモジュールと、ストレージモジュール及び接続モジュールを備えた計算機システムの制御方法であって、
前記サーバモジュールは、
第１のプロセッサと、第１のメモリと、他の装置と接続する第１のインターフェースと、を有し、
前記ストレージモジュールは、
第２のプロセッサと、第２のメモリと、記憶装置と、他の装置と接続する第２のインターフェースと、を有し、
前記接続モジュールは、
前記第１のインターフェースと接続する第１のエンドポイントと、前記第２のインターフェースと接続する第２のエンドポイントと、を有し、
前記方法は、
前記サーバモジュールが、前記第１のインターフェースの障害を検出する第１のステップと、
前記サーバモジュールが、前記第１のインターフェースの障害を検出すると、所定の回復処理を実行する第２のステップと、
前記接続モジュールが、前記第１のエンドポイントで前記第１のインターフェースの障害の発生を検出し、障害の発生通知を出力する第３のステップと、
前記接続モジュールが、前記障害の発生通知を前記第１のインターフェースの切断通知に変換し、当該変換された切断通知を前記第２のエンドポイントから前記ストレージモジュールに送信する第４のステップと、
前記ストレージモジュールが、前記接続モジュールから前記切断通知を受信したときに、前記サーバモジュールとの接続を解除する第５のステップと、
を含むことを特徴とする計算機システムの制御方法。
【請求項６】
請求項５に記載の計算機システムの制御方法であって、
前記第４のステップは、
前記接続モジュールが、前記切断通知を前記第２のエンドポイントのプロトコルで送信することを特徴とする計算機システムの制御方法。
【請求項７】
請求項５に記載の計算機システムの制御方法であって、
前記第２のステップは、
前記サーバモジュールが行う所定の回復処理は、前記第１のインターフェースのリセットであることを特徴とする計算機システムの制御方法。
【請求項８】
請求項５に記載の計算機システムの制御方法であって、
前記計算機システムは、
複数の前記サーバモジュールと、
前記複数のサーバモジュールにそれぞれ接続された前記接続モジュールと、を有し、
複数の前記接続モジュールの前記第２のエンドポイントは、前記ストレージモジュールの前記第２のインターフェースに接続されたことを特徴とする計算機システムの制御方法。
【請求項９】
第１の装置と、第２の装置を接続する接続モジュールであって、
前記第１の装置の第１のインターフェースに接続されて、前記第１のインターフェースの障害の発生を検出すると、障害の発生通知を出力する第１のエンドポイントと、
前記第２の装置の第２のインターフェースに接続される第２のエンドポイントと、
前記第１のエンドポイントと第２のエンドポイントの間でデータの転送を行うデータ転送部と、
前記第１のエンドポイントが、前記障害の発生通知を出力すると、前記障害の発生通知を前記第１のインターフェースの切断通知に変換し、当該変換された切断通知を前記第２のエンドポイントから前記第２の装置に送信するイベント模擬部と、
を有することを特徴とする接続モジュール。
【請求項１０】
請求項９に記載の接続モジュールであって、
前記第１のエンドポイントと第２のエンドポイントの間でプロトコルの変換を行うプロトコル変換部を有し、前記切断通知を前記第２のエンドポイントのプロトコルで送信することを特徴とする接続モジュール。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバモジュールとストレージモジュールとの間で高速なデータ転送を実現する技術に関する。
【背景技術】
【０００２】
サーバ及び当該サーバがアクセスするストレージ装置を接続する計算機システムとしては、以下のようなシステムが知られている。
【０００３】
一つの計算機システムとしては、ＳＡＮ等のネットワークを介してサーバ及びストレージが接続された計算機システムが知られている（例えば、特許文献１参照）。
【０００４】
特許文献１には、「アプリケーションをローカルに実行するための少なくとも一つのアプリケーション・サーバ、およびＩ／Ｏ伝送のため少なくとも一つのアプリケーション・サーバと通信している、一つ以上のストレージ・サーバを包含可能なストレージ・アプライアンス・システム」が記載されている。
【０００５】
前述した計算機システムは、大規模な計算機システムに用いられる利用形態である。当該計算機システムは、システム構成の柔軟性が高いという利点があるが、ＳＡＮ等のネットワークを構成する装置のコスト、及び運用コストが高いという問題がある。
【０００６】
高速なインターフェースとしてはＰＣＩ Ｅｘｐｒｅｓｓ（登録商標）が知られており、２つの装置をＰＣＩ Ｅｘｐｒｅｓｓで接続する技術が知られている（例えば、特許文献２）。特許文献２では、ノントランスペアレントポートを有するスイッチを用いて２つの装置をＰＣＩ Ｅｘｐｒｅｓｓでブリッジ接続することにより、２つの装置間での通信を行う技術が開示されている。
【０００７】
また、ＰＣＩ Ｅｘｐｒｅｓｓを用いた計算機システムで、エンドポイントで障害が発生したときに、エラーの情報をＰＣＩ Ｅｘｐｒｅｓｓのプロトコルで送信する技術が知られている（例えば、特許文献３）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１２−１１８９７３号公報
【特許文献２】特開２０１２−１２８７１７号公報
【特許文献３】特開２０１０−２３８１５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上記従来例１のサーバとストレージ装置を、上記従来例２のＰＣＩ Ｅｘｐｒｅｓｓを用いて接続する場合、サーバとノントランスペアレントポートのリンクＡと、ストレージ装置とノントランスペアレントポートのリンクＢをブリッジ接続する。そして、サーバと接続したリンクＡで障害が発生した場合、リンクＢのストレージ装置に障害の発生を通知すると、サーバとストレージ装置の双方で、ＰＣＩ Ｅｘｐｒｅｓｓの障害回復処理を行う必要が生じる。
【００１０】
このため、ひとつのストレージ装置に複数のサーバをノントランスペアレントポートを介して接続した場合では、ひとつのサーバ側のリンクで障害が発生すると、ストレージ装置でも障害回復処理を行うため、正常な他のサーバのストレージ装置へのアクセスが停止するという問題があった。換言すれば、サーバ側のリンク（Ｉ／Ｏインターフェース）のうちのひとつで障害が発生すると、ストレージ装置を介して全体のサーバに障害の影響が波及するという問題があった。
【００１１】
また、上記従来例３を利用して障害が発生した通知を伝達する場合、ＰＣＩ Ｅｘｐｒｅｓｓのプロトコルを拡張する必要があるため、既存のチップセットやデバイスでは利用できないという問題があった。
【００１２】
そこで本発明は、上記問題点に鑑みてなされたもので、ストレージ装置と複数のサーバをＩ／Ｏインターフェースで接続した計算機システムにおいて、プロトコルを拡張することなく、何れかのＩ／Ｏインターフェースで障害が発生したときに全体に障害の影響が波及するのを抑制することを目的とする。
【課題を解決するための手段】
【００１３】
本発明は、サーバモジュールと、ストレージモジュール及び接続モジュールを備える計算機システムであって、前記サーバモジュールは、第１のプロセッサと、第１のメモリと、他の装置と接続する第１のインターフェースと、前記第１のインターフェースを介して前記ストレージモジュールにアクセスを要求するストレージアクセス部と、前記第１のインターフェースの障害を検出する障害検出部と、前記障害検出部が前記第１のインターフェースの障害を検出したときに、所定の回復処理を実行する障害処理部と、を有し、前記接続モジュールは、前記第１のインターフェースに接続されて、前記第１のインターフェースの障害の発生を検出すると、障害の発生通知を出力する第１のエンドポイントと、前記第２のインターフェースに接続される第２のエンドポイントと、前記第１のエンドポイントと第２のエンドポイントの間でデータの転送を行うデータ転送部と、前記第１のエンドポイントが、前記障害の発生通知を出力すると、前記障害の発生通知を第１のインターフェースの切断を示す通知に変換し、当該変換された切断通知を前記第２のエンドポイントから前記ストレージモジュールに送信するイベント模擬部と、を有し、前記ストレージモジュールは、第２のプロセッサと、第２のメモリと、記憶装置と、他の装置と接続する第２のインターフェースと、前記第２のインターフェースからアクセス要求を受信して、前記記憶装置にアクセスするストレージ制御部と、前記接続モジュールから前記切断通知を受信したときに、前記サーバモジュールとの接続を解除する切断処理部と、を有する。
【発明の効果】
【００１４】
したがって、本発明は、ストレージモジュールに複数のサーバモジュールを接続し、何れかのサーバモジュールの第１のインターフェースで障害が発生すると、ストレージモジュールに対しては障害の発生通知に代わって切断通知が通知され、ストレージモジュールは第１のインターフェースに障害が発生したサーバモジュールとの接続を解除する。これにより、計算機システム全体に第１のインターフェースの障害の影響が波及するのを防止できる。また、Ｉ／Ｏインターフェースのプロトコルの拡張は不要であるため、既存のチップやデバイスを用いることで、計算機システムのコストが上昇するのを抑制できる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施例を示し、計算機システムの一例を示すブロック図である。
【図２】本発明の実施例を示し、サーバモジュールの構成の一例を示すブロック図である。
【図３】本発明の実施例を示し、ストレージモジュールの構成の一例を示すブロック図である。
【図４】本発明の実施例を示し、接続モジュールの構成の一例を示すブロック図である。
【図５】本発明の実施例を示し、サーバモジュール側で障害が発生したときの処理の概要を示すブロック図である。
【図６】本発明の実施例を示し、サーバモジュール側で障害が発生したときの処理の一例を示すシーケンス図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態を添付図面に基づいて説明する。
【００１７】
図１は、本発明の実施例を示し、計算機システムの一例を示すブロック図である。
【００１８】
本実施例の計算機システムは、サーバ装置１００が、複数のサーバモジュール２００−１〜２００−ｎとストレージモジュール３００及び複数のサーバモジュール２００−１〜２００−ｎとストレージモジュール３００を接続するバックプレーン４００から構成される。
【００１９】
サーバ装置１００は、複数のサーバモジュール２００−１〜２００−ｎと、ひとつのストレージモジュール３００と、バックプレーン４００を備える。なお、以下では、サーバモジュール２００−１〜２００−ｎの総称を符号２００で表す。
【００２０】
サーバモジュール２００は、所定の業務を提供する計算機である。ストレージモジュール３００は、サーバモジュール２００が利用するデータを格納する計算機である。本実施例では、ストレージモジュール３００は、各サーバモジュール２００にＬＵ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ）を提供する。
【００２１】
サーバモジュール２００−１は、プロセッサ２１０−１、メモリ２２０−１を含む。なお、他のサーバモジュール２００−２〜２００−ｎも同様の構成であるので、重複する説明は省略する。また、プロセッサ２１０−１〜２１０−２の総称を、符号２１０を表す。符号の表記については他の構成要素についても、以下同様とする。
【００２２】
プロセッサ２１０−１には、Ｉ／ＯインターフェースとしてＰＣＩ Ｅｘｐｒｅｓｓのインターフェース２３０−１が含まれており、以下、ＰＣＩｅ  Ｉ／Ｆ２３０−１とする。そして、ＰＣＩｅ  Ｉ／Ｆ２３０−１は、ＰＣＩ Ｅｘｐｒｅｓｓのツリー構造のデバイスの最上位に位置するルートコンプレックス２４０−１を含む。
【００２３】
プロセッサ２１０は、メモリ２２０に格納されるプログラムを実行する。プロセッサ２１０がメモリ２２０に格納されるプログラムを実行することによって、サーバモジュール２００は業務を提供する。
【００２４】
メモリ２２０は、プロセッサ２１０によって実行されるプログラム及び当該プログラムの実行に必要なデータを格納する。メモリ２２０に格納されるプログラム及び情報については、図２を用いて後述する。
【００２５】
なお、メモリ２２０に格納されるプログラム及び情報は、ストレージモジュール３００によって提供されるＬＵ等に格納されてもよい。この場合、プロセッサ２１０が、ＬＵ等のプログラムが格納される記憶領域からプログラム及び情報を取得し、取得されたプログラム及び情報をメモリ２２０にロードする。
【００２６】
ストレージモジュール３００は、ディスクコントローラ３１０及び記憶装置３６０−１〜３６０−ｎを含む。ストレージモジュール３００が有する各構成は、Ｉ／Ｏインターフェースを介して互いに接続される。
【００２７】
ディスクコントローラ３１０は、記憶装置３６０記憶領域の管理、及びサーバモジュール２００と記憶領域との対応関係等を制御する。ディスクコントローラ３１０は、プロセッサ３２０、メモリ３３０及びＩ／ＯインターフェースとしてＰＣＩ Ｅｘｐｒｅｓｓのインターフェース３４０（以下、ＰＣＩｅ  Ｉ／Ｆ３４０とする）を含む。
【００２８】
また、プロセッサ３２０はＰＣＩｅ  Ｉ／Ｆ３４０に接続され、ＰＣＩｅ  Ｉ／Ｆ３４０を介して各サーバモジュール２００とデータの転送を行う。そして、ＰＣＩｅ  Ｉ／Ｆ３４０は、ＰＣＩ Ｅｘｐｒｅｓｓのツリー構造のデバイスの最上位に位置するルートコンプレックス３５０を含む。
【００２９】
ＰＣＩｅ  Ｉ／Ｆ３４０は、ＰＣＩ  Ｅｘｐｒｅｓｓのリンク５１０−１を介して接続モジュール４１０−１に接続され、サーバモジュール２００−１とデータの転送を行う。同様にＰＣＩｅ  Ｉ／Ｆ３４０は、ＰＣＩ  Ｅｘｐｒｅｓｓのリンク５１０−２を介して接続モジュール４１０−２に接続され、サーバモジュール２００−２とデータの転送を行う。
【００３０】
なお、本実施例では、ＰＣＩｅ  Ｉ／Ｆ３４０はチップセットなどで構成することができる。しかし、これに限定されるものではなく、サーバモジュール２００と同様に、プロセッサがＰＣＩｅ  Ｉ／Ｆを包含する構成であってもよい。
【００３１】
また、本実施例では、ストレージモジュール３００は、ひとつのディスクコントローラ３１０で構成される例を示したが、ひとつのストレージモジュール３００に複数のディスクコントローラ３１０を配置して冗長構成としてもよい。
【００３２】
プロセッサ３２０は、メモリ３３０に格納されるプログラムを実行する。プロセッサ３２０がメモリ３３０に格納されるプログラムを実行することによって、ストレージモジュール３００が有する機能を実現できる。
【００３３】
メモリ３３０は、プロセッサ３２０によって実行されるプログラム及び当該プログラムの実行に必要な情報を格納する。メモリ３３０に格納されるプログラム及び情報については、図３を用いて後述する。
【００３４】
なお、メモリ３３０に格納されるプログラム及び情報は、記憶装置３６０−１〜３６０−ｎ等に格納されてもよい。この場合、プロセッサ３２０が、記憶装置３６０−１〜３６０−ｎ等からプログラム及び情報を取得し、取得されたプログラム及び情報をメモリ３３０にロードする。
【００３５】
記憶装置３６０−１〜３６０−ｎは、データを格納するための装置であり、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）及びＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等が考えられる。
【００３６】
本実施例では、ストレージモジュール３００は、複数の記憶装置を用いてＲＡＩＤを構成し、ＲＡＩＤボリュームからＬＵを生成し、さらに、サーバモジュール２００にＬＵを提供する。なお、ＬＵには、ＯＳ２２１（図２参照）及びアプリケーション２２５（図２参照）等のプログラム及びプログラムの実行に必要な情報が格納される。
【００３７】
サーバモジュール２００とストレージモジュール３００とを接続するバックプレーン４００には、サーバモジュール２００−１〜２００−ｎ毎に接続モジュール４１０−１〜４１０−ｎが配置される。なお、接続モジュール４１０−１〜４１０〜ｎは、同様の構成であるので重複した説明は省略する。
【００３８】
接続モジュール４１０−１は、ＰＣＩ  Ｅｘｐｒｅｓｓのエンドポイントを２つ備え、２つのエンドポイント間でデータを転送する。接続モジュール４１０−１は、サーバモジュール２００のＰＣＩｅ  Ｉ／Ｆ２３０−１と接続するエンドポイント４２０−１と、ストレージモジュール３００のＰＣＩｅ  Ｉ／Ｆ３４０と接続するエンドポイント４３０−１とを備える。
【００３９】
エンドポイント４２０−１とサーバモジュール２００−１は、ＰＣＩ  Ｅｘｐｒｅｓｓのリンク５００−１で接続される。エンドポイント４３０−１とストレージモジュール３００は、ＰＣＩ  Ｅｘｐｒｅｓｓのリンク５１０−１で接続される。
【００４０】
ここで、サーバモジュール２００と接続するエンドポイント４２０−１は、ＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｅｒ）として機能し、ストレージモジュール３００と接続するエンドポイント４３０は、ＴＢＡ（Ｔａｒｇｅｔ  Ｂｕｓ  Ａｄａｐｔｅｒ）として機能する例を示す。なお、本実施例では、エンドポイント４２０−１及び３４０がＦＣ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）のプロトコルでデータを転送する例を示すが、これに限定されるものではなく、ＳＣＳＩ、ＳＡＳ、ＳＡＴＡなどのプロトコルを採用しても良い。接続モジュール４１０の詳細な構成については、図４を用いて後述する。
【００４１】
なお、接続モジュール４１０の実装方法としては、バックプレーン４００の基板上のチップ（ＬＳＩ）として搭載することができる。ただし、本発明は、接続モジュール４１０の実装方法に限定されない。
【００４２】
また、リンク５００、５１０は、信号を伝達する物理的な経路と、通信の階層などを示す論理的な接続を含む。サーバモジュール２００及びストレージモジュール３００は、例えば、バックプレーン４００に設けた挿抜自在のスロットに装着される。
【００４３】
図２は、本実施例のサーバモジュール２００−１の構成の一例を示すブロック図である。
【００４４】
メモリ２２０−１は、ＯＳ２２１及びアプリケーション２２５を実現するためのプログラムを格納する。また、メモリ２２０−１に格納されるＯＳ２２１は、ストレージモジュール３００にアクセスするストレージアクセス部２２４と、バックプレーン４００に接続されたＰＣＩ  Ｅｘｐｒｅｓｓのリンク５００−１またはＰＣＩｅ  Ｉ／Ｆ２３０−１に障害が発生したときに回復処理を行うＰＣＩｅ障害処理部２２２と、ストレージモジュール３００との接続を解除する処理を行うＨＢＡリンクダウン処理部２２３とを含む。
【００４５】
本実施例では、ＰＣＩｅ  Ｉ／Ｆ２３０−１が接続されるエンドポイント４２０−１がＨＢＡで構成されるため、ストレージアクセス部２２４はＨＢＡドライバを介してエンドポイント４２０−１にアクセスする。
【００４６】
なお、本実施例では、ＯＳ２２１がＰＣＩｅ障害処理部２２２とＨＢＡリンクダウン処理部２２３を含む例を示したが、これに限定されるものではなく、ＯＳ２２１上でＰＣＩｅ障害処理部２２２とＨＢＡリンクダウン処理部２２３が稼働する構成であっても良い。
【００４７】
ＯＳ２２１は、サーバモジュール２００を管理する。ＯＳ２２１は、サーバモジュール２００とストレージモジュール３００との間のアクセスを制御するストレージアクセス部２２４を有する。ストレージアクセス部２２４は、例えば、接続モジュール４１０を操作するデバイスドライバを用いて実現する方法が考えられる。
【００４８】
なお、ＯＳ２２１は、図示しないファイルシステム等の機能を有しているが、公知のものであるため省略している。アプリケーション２２５は、所定の業務を提供する。本発明はアプリケーションの種別に限定されない。
【００４９】
プロセッサ２１０−１は、各機能部のプログラムに従って処理することによって、所定の機能を提供する機能部として稼働する。例えば、プロセッサ２１０−１は、ＰＣＩｅ障害処理プログラムに従って処理することでＰＣＩｅ障害処理部２２２として機能する。他のプログラムについても同様である。さらに、プロセッサ２１０−１は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
【００５０】
また、機能を実現するプログラム、テーブル等の情報は、ストレージモジュール３００や不揮発性半導体メモリ、ハードディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶デバイス、または、ＩＣカード、ＳＤカード、ＤＶＤ等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
【００５１】
図３は、本実施例のストレージモジュール３００の構成の一例を示すブロック図である。
【００５２】
メモリ３３０は、ストレージ制御部３３３と、ＴＢＡリンクダウン処理部３３２と、ＰＣＩｅ障害処理部３３１とを実現するプログラムを格納する。
【００５３】
ストレージ制御部３３３は、サーバモジュール２００とストレージモジュール３００との間のＩ／Ｏ処理を制御する。本実施例では、ＰＣＩｅ  Ｉ／Ｆ３４０の接続先のエンドポイント４３０がＴＢＡで構成されるため、ストレージ制御部３３３は、ＴＢＡドライバを介してエンドポイント４３０にアクセスする。そして、ストレージ制御部３３３は、エンドポイント４３０を介してサーバモジュール２００と記憶装置３６０との間でデータの転送を行う。
【００５４】
ＴＢＡリンクダウン処理部３３２は、後述するように、リンク５００で接続されたサーバモジュール２００との接続を解除する処理を行う。ディスクコントローラ３１０では、接続モジュール４１０からサーバモジュール２００との接続を解除した通知（リンクダウンまたは切断通知）を受信すると、ＴＢＡリンクダウン処理部（切断処理部）３３２を起動して、該当するリンク５００のサーバモジュール２００との接続を解除し、リンク５００を切断したサーバモジュール２００の処理待ちＩ／Ｏ（データやコマンド）を破棄する。
【００５５】
ＰＣＩｅ障害処理部３３１は、バックプレーン４００に接続されたＰＣＩ  Ｅｘｐｒｅｓｓのリンク５１０−１〜５１０−ｎまたはＰＣＩｅ  Ｉ／Ｆ３４０に障害が発生したときに所定の回復処理を行う。ディスクコントローラ３１０は、ＰＣＩｅ  Ｉ／Ｆ３４０またはリンク５１０に障害が発生すると、ＰＣＩｅ  Ｉ／Ｆ３４０をリセットして障害の回復処理を行う。
【００５６】
図４は、本実施例の接続モジュール４１０−１の構成の一例を示すブロック図である。なお、接続モジュール４１０−２〜４２０−ｎの同一の構成であるので、重複した説明は省略する。
【００５７】
接続モジュール４１０−１は、データ転送部４４０、プロトコルエンジン４６０、ブリッジ４５０、ＨＢＡとして機能するエンドポイント４２０−１及びＴＢＡとして機能するエンドポイント４３０−１と、イベント模擬処理部４７０を備える。
【００５８】
データ転送部４４０は、サーバモジュール２００のメモリ２２０とストレージモジュール３００のメモリ３３０との間のデータ転送を制御する。本実施例のデータ転送部４４０は、ＤＭＡコントローラ４４１を含む。
【００５９】
ＤＭＡコントローラ４４１は、サーバモジュール２００のメモリ２２０とストレージモジュール３００のメモリ３３０との間のＤＭＡ転送を制御する。
【００６０】
プロトコルエンジン４６０は、サーバモジュール２００が使用するコマンド及びストレージモジュール３００が使用するコマンドを変換する。すなわち、プロトコルエンジン４６０は、エンドポイント４２０−１側のプロトコルと、エンドポイント４３０−１側のプロトコルを相互に変換する。
【００６１】
ブリッジ４５０は、エンドポイント４２０−１、４３０−１を介して接続されるデバイス間の通信を制御する。例えば、ブリッジ４５０は、レーン数が異なるＰＣＩ  Ｅｘｐｒｅｓｓの信号を変換する。ブリッジ４５０は、前述したＤＭＡ転送が不要な場合に用いられる。
【００６２】
エンドポイント４２０−１、４３０−１は、例えば、デバイスと接続するためのポートで構成することができる。本実施例では、エンドポイント４２０−１は、プロセッサ２１０−１のＰＣＩｅ  Ｉ／Ｆ２３０と接続され、エンドポイント４３０−１は、ディスクコントローラ３１０のＰＣＩｅ  Ｉ／Ｆ３４０と接続される。
【００６３】
また、エンドポイント４２０−１は、リンク５００−１がリセットまたは遮断されると障害の発生を検出して、プロトコルエンジン４６０に障害の発生を通知する。換言すれば、エンドポイント４２０−１は、サーバモジュール２００−１のＰＣＩｅ  Ｉ／Ｆ２３０−１またはリンク５００−１に障害が発生すると障害の発生通知を出力する。
【００６４】
プロトコルエンジン４６０は、障害の発生通知を受信すると、イベント模擬処理部４７０を起動する。イベント模擬処理部４７０は、サーバモジュール２００−１側のリンク５００−１で障害の発生通知を、リンク５００−１が切断したことを示す切断通知（リンクダウンまたはホットリムーブ）に変換する。そして、イベント模擬処理部４７０は、異常の発生通知に代わって、変換された切断通知（リンクダウン）をエンドポイント４３０−１からストレージモジュール３００に送信する。
【００６５】
なお、接続モジュール４１０−１をバックプレーン４００上のチップとして構成する場合、プロセッサとメモリを含むＡＳＩＣ（Application Specific Integrated Circuit）等で構成することができる。
【００６６】
また、上記ではエンドポイント４２０−１がリンク５００−１側の障害を検出すると、プロトコルエンジン４６０に障害の発生通知を出力する例を示したが、エンドポイント４２０−１が障害の発生通知を出力すると、イベント模擬処理部４７０を起動するようにしても良い。
【００６７】
また、データ転送部４４０、プロトコルエンジン４６０、イベント模擬処理部４７０は、ひとつの制御部として実現しても良い。
【００６８】
図５は、サーバモジュール側で障害が発生したときの処理の概要を示すブロック図である。
【００６９】
図５の例では、サーバモジュール２００−１が接続モジュール４１０−１を介してストレージモジュール３００に接続され、サーバモジュール２００−１側のリンク５００−１で障害が発生した例を示す。また、サーバモジュール２００−２が接続モジュール４１０−１を介してストレージモジュール３００に接続され、正常にデータの転送を行う例を示す。
【００７０】
まず、正常なデータの転送について、サーバモジュール２００−２が接続モジュール４１０−２を介してストレージモジュール３００からデータを読み出す例について説明する。
【００７１】
サーバモジュール２００−２のＯＳ２２１は、アプリケーション２２５からストレージモジュール３００に格納されるデータの読出要求を受け付けた場合、ストレージアクセス部２２４を呼び出す。
【００７２】
ストレージアクセス部２２４は、リンク５００−２を介してディスクコントローラ３１０のストレージ制御部３３３に対して読出要求を送信する。当該読出要求は、サーバモジュール２００−２において使用されるコマンドである。したがって、ストレージモジュール３００において使用されるコマンドとは異なる形式のコマンドである。すなわち、サーバモジュール２００−２及びストレージモジュール３００が扱うプロトコルが異なる。
【００７３】
以下の説明では、サーバモジュール２００が使用するコマンドをサーバコマンドと記載し、ストレージモジュール３００が使用するコマンドをストレージコマンドと記載する。
【００７４】
接続モジュール４１０−２は、ストレージアクセス部２２４から読出要求（サーバコマンド）を受信すると、当該読出要求をストレージコマンドに変換し、変換された読出要求（ストレージコマンド）をストレージ制御部３３３に送信する。具体的には、以下のような処理が実行される。
【００７５】
データ転送部４４０は、受信した読出要求（サーバコマンド）を解析する。データ転送部４４０は、受信した読出要求（サーバコマンド）がストレージモジュール３００に送信されるサーバコマンドであるため、プロトコルエンジン４６０にコマンドの変換を指示する。
【００７６】
プロトコルエンジン４６０は、受信した読出要求（サーバコマンド）をサーバコマンドからストレージコマンドに変換し、変換された読出要求（ストレージコマンド）をデータ転送部４４０に出力する。
【００７７】
データ転送部４４０は、入力された読出要求（ストレージコマンド）をストレージモジュール３００のストレージ制御部３３３に送信する。
【００７８】
ストレージ制御部３３３は、読出要求（ストレージコマンド）を受信すると、読出対象のデータを記憶装置３６０−１〜３６０−ｎから読み出してメモリ３３０に格納し、接続モジュール４１０−２に、ＤＭＡ転送要求を送信する。
【００７９】
接続モジュール４１０−２は、ＤＭＡ転送要求を受信すると、サーバモジュール２００−２のメモリ２２０の宛先アドレスと、ストレージモジュール３００のメモリ３３０から送信元アドレスを取得する。なお、ＤＭＡ転送は、周知又は公知の技術を適用すれば良い。例えば、データ転送部４４０のＤＭＡコントローラ４４１が、宛先アドレスと送信元アドレスを取得し、ＤＭＡコントローラ４４１が、ストレージモジュール３００のメモリ３３０のデータをサーバモジュール２００−２のメモリ２２０−２へ転送する。
【００８０】
以上の処理によって、接続モジュール４１０−２がデータの転送を実現する。
【００８１】
次に、サーバモジュール２００−１と接続モジュール４１０−１の間のリンク５００−１またはＰＣＩｅＩ／Ｆ２３０−１で障害が発生した場合について説明する。
【００８２】
サーバモジュール２００−１のプロセッサ２１０−１が、ＰＣＩｅ  Ｉ／Ｆ２３０−１またはリンク５００−１に障害が発生したことを検出する。検出される障害としては、例えば、ＰＣＩ  Ｅｘｐｒｅｓｓのバスエラーである。この障害検出は、例えば、プロセッサ２１０−１が実行するＯＳ２２１が、ＰＣＩｅ  Ｉ／Ｆ２３０−１やエンドポイント４２０−１をポーリングなどで監視することで実現してもよい。あるいは、ストレージアクセス部２２４が、ＰＣＩｅ  Ｉ／Ｆ２３０−１やエンドポイント４２０−１をポーリングなどで監視することで実現してもよい。あるいは、ＯＳ２２１に提供されたＨＢＡドライバが、ＰＣＩｅ  Ｉ／Ｆ２３０−１やエンドポイント４２０−１をポーリングなどで監視することで実現してもよい。なお、上記サーバモジュール２００−１と接続モジュール４１０−１の間のリンク５００−１で障害を検出するソフトウェアが、障害検出部として機能する。
【００８３】
プロセッサ２１０−１は、リンク５００−１またはＰＣＩｅ  Ｉ／Ｆ２３０−１の障害を検出すると、ＰＣＩｅ障害処理部２２２を起動して、ＰＣＩｅ  Ｉ／Ｆ２３０−１のリセットなどの所定の障害回復処理を実行する。
【００８４】
なお、本実施例では、Ｉ／ＯインターフェースがＰＣＩ  Ｅｘｐｒｅｓｓの場合、物理層、データリンク層、トランザクション層のエラーのうち、ＰＣＩｅ  Ｉ／Ｆ２３０−１のリセットが必要なエラーを障害発生として検出すればよい。
【００８５】
次に、接続モジュール４１０−１では、エンドポイント４２０−１が、リンク５００−１のリセットまたは障害の発生をプロトコルエンジン４６０に通知する。プロトコルエンジン４６０は、リンク５００−１またはＰＣＩｅ  Ｉ／Ｆ２３０−１で障害が検出されたことから、イベント模擬処理部４７０を起動する。
【００８６】
イベント模擬処理部４７０は、エンドポイント４２０−１（ＨＢＡ）側で障害が発生すると、エンドポイント４３０−１（ＴＢＡ）側からストレージモジュール３００のディスクコントローラ３１０に対してＦＣの切断（またはリンクダウン）を通知する。換言すれば、接続モジュール４１０−１のイベント模擬処理部４７０は、検出したＰＣＩ  Ｅｘｐｒｅｓｓの障害を、上位のプロトコルであるＦＣのリンクダウンに変換してストレージモジュール３００に通知する。なお、イベント模擬処理部４７０は、接続モジュール４１０−１内のサーバモジュール２００−１とストレージモジュール３００間の処理待ちＩ／Ｏを破棄しておく。
【００８７】
ディスクコントローラ３１０のプロセッサ３２０は、ＦＣの切断の通知を受信すると、ＴＢＡリンクダウン処理部３３２を起動する。ＴＢＡリンクダウン処理部３３２は、サーバモジュール２００−１と接続モジュール４１０−１間でＦＣが切断されたので、サーバモジュール２００−１に対する処理待ちのデータやコマンド（処理待ちのＩ／Ｏ）を破棄し、サーバモジュール２００−１との切断処理を正常に終了させる。
【００８８】
一方、サーバモジュール２００−１では、リセットによりＰＣＩｅ  Ｉ／Ｆ２３０−１が回復する。接続モジュール４１０−１のエンドポイント４２０−１は、再度サーバモジュール２００−１と接続されたことをプロトコルエンジン４６０に通知する。プロトコルエンジン４６０は、サーバモジュール２００−１に対してリンク５００−１またはＰＣＩｅ  Ｉ／Ｆ２３０−１に障害が発生したことを通知する。
【００８９】
障害が発生した通知を受信したサーバモジュール２００−１のストレージアクセス部２２４では、ストレージモジュール３００との間で処理待ちとなっていたデータやコマンド（処理待ちＩ／Ｏ）を破棄して、障害から回復する。接続モジュール４１０−１のエンドポイント４２０−１は、ＰＣＩｅＩ／Ｆ２３０−１及びリンク５００−１の復旧を検出すると、プロトコルエンジン４６０を介してストレージモジュール３００に対して、サーバモジュール２００−１との間のリンクアップを通知する。リンクアップの通知を受信したストレージモジュール３００は、サーバモジュール２００−１との間のデータ転送の環境を再構築し、データの転送を再開する。
【００９０】
以上のように、サーバモジュール２００−１と接続モジュール４１０−１の間でＰＣＩ  Ｅｘｐｒｅｓｓに障害が発生すると、サーバモジュール２００−１ではＰＣＩｅ  Ｉ／Ｆ２３０−１のリセットを行うが、ストレージモジュール３００に対しては、ＰＣＩ  Ｅｘｐｒｅｓｓの障害発生ではなく、ＰＣＩｅ  Ｉ／Ｆの上位のプロトコルで切断が発生したことを接続モジュール４１０−１が通知する。このため、ストレージモジュール３００では、ＰＣＩｅ  Ｉ／Ｆ３４０の稼働状態を維持したまま、サーバモジュール２００−１との間のリンクダウンの処理が正常に行われる。
【００９１】
したがって、ストレージモジュール３００のＰＣＩｅ  Ｉ／Ｆ３４０に接続された他のサーバモジュール２００−２は、サーバモジュール２００−１のＰＣＩｅ  Ｉ／Ｆ２３０−１の障害発生の影響を受けることなく、ストレージモジュール３００に対するアクセスを継続することが可能となるのである。
【００９２】
図６は、サーバモジュール側で障害が発生したときの処理の一例を示すシーケンス図である。
【００９３】
ステップＳ１０１で、サーバモジュール２００−１のプロセッサ２１０−１は、ＰＣＩｅ  Ｉ／Ｆ２３０−１を介してリンク５００−１に障害が発生したことを検出する。ステップＳ１０２で、プロセッサ２１０−１は、ＰＣＩｅ障害処理部２２２を起動し、ステップＳ１０３でＰＣＩｅ障害処理部２２２が、ＰＣＩｅ  Ｉ／Ｆ２３０−１のリセットなどの所定の障害回復処理を実行する。
【００９４】
接続モジュール４１０−１のエンドポイント４２０−１は、リンク５００−１のリセットまたは障害の発生をプロトコルエンジン４６０に通知する。ステップＳ１０４で、プロトコルエンジン４６０は、リンク５００−１で障害が検出されたことから、イベント模擬処理部４７０を起動する。
【００９５】
イベント模擬処理部４７０は、サーバモジュール２００−１に接続されたエンドポイント４２０−１（ＨＢＡ）側で障害が発生すると、エンドポイント４３０−１（ＴＢＡ）側からストレージモジュール３００のディスクコントローラ３１０に対してＦＣの切断（またはリンクダウン）を通知する（Ｓ１０６）。換言すれば、接続モジュール４１０−１のイベント模擬処理部４７０は、検出したＰＣＩ  Ｅｘｐｒｅｓｓの障害を、上位のプロトコルであるＦＣのリンクダウンに変換してストレージモジュール３００に通知する。なお、リンクダウンの通知の前に、イベント模擬処理部４７０は、サーバモジュール２００−１とストレージモジュール３００の間の、処理待ちＩ／Ｏを破棄しておく（Ｓ１０５）。
【００９６】
ステップＳ１０７で、ディスクコントローラ３１０のプロセッサ３２０は、ＦＣの切断（リンクダウン）の通知を受信すると、ステップＳ１０８で、ＴＢＡリンクダウン処理部３３２を起動する。
【００９７】
ステップＳ１０９で、ＴＢＡリンクダウン処理部３３２は、サーバモジュール２００−１と接続モジュール４１０−１間でＦＣが切断されたので、サーバモジュール２００−１に対する処理待ちのデータやコマンド（処理待ちのＩ／Ｏ）を破棄し、サーバモジュール２００−１との切断処理を正常に終了させる。
【００９８】
一方、サーバモジュール２００−１では、リセットによりＰＣＩｅ  Ｉ／Ｆ２３０−１が回復する（Ｓ１１０）。接続モジュール４１０−１のエンドポイント４２０−１は、再度サーバモジュール２００−１と接続されたことをプロトコルエンジン４６０に通知する。プロトコルエンジン４６０は、サーバモジュール２００−１に対してリンク５００−１に障害が発生したことを通知する（Ｓ１１１）。
【００９９】
ステップＳ１１１では、障害が発生した通知を受信したサーバモジュール２００−１のストレージアクセス部２２４が、ストレージモジュール３００との間で処理待ちとなっていたデータやコマンド（処理待ちＩ／Ｏ）を破棄して（Ｓ１１２）、障害から回復する（Ｓ１１３）。その後、接続モジュール４１０−１のエンドポイント４２０−１がリンク５００−１の復旧を検出して、プロトコルエンジン４６０がストレージモジュール３００に対して、サーバモジュール２００−１との間のリンクアップを通知する（Ｓ１１４）。
【０１００】
ステップＳ１１５で、接続モジュール４１０−１からリンクアップの通知を受信したストレージモジュール３００は、サーバモジュール２００−１とのデータ転送の環境を再構築し、データの転送を再開する。
【０１０１】
以上のように、サーバモジュール２００−１と接続モジュール４１０−１の間でＰＣＩ  Ｅｘｐｒｅｓｓに障害が発生すると、サーバモジュール２００−１ではＰＣＩｅ  Ｉ／Ｆ２３０−１のリセットを行うが、接続モジュール４１０−１は、ストレージモジュール３００に対してＰＣＩ  Ｅｘｐｒｅｓｓの障害発生ではなく、ＰＣＩ  Ｅｘｐｒｅｓｓの上位のプロトコルであるＦＣのプロトコルでリンクダウン（切断）が発生したことを通知する。このため、ストレージモジュール３００では、ＰＣＩｅ  Ｉ／Ｆ３４０の稼働状態を維持したまま、サーバモジュール２００−１との間のリンクダウンの処理が正常に行われる。
【０１０２】
したがって、ストレージモジュール３００のＰＣＩｅ  Ｉ／Ｆ３４０に接続された他のサーバモジュール２００−２は、サーバモジュール２００−１のＰＣＩｅ  Ｉ／Ｆ２３０−１の障害発生の影響を受けることなく、ストレージモジュール３００に対するアクセスを継続することが可能となるのである。接続モジュール４１０−１が、サーバモジュール２００−１側で発生した障害を、リンク５００−１の切断に変換してストレージモジュール３００へ通知する。これにより、ストレージモジュール３００側のＰＣＩｅ  Ｉ／Ｆ３４０がリセットされるのを防いで、サーバモジュール２００−１のＰＣＩｅ  Ｉ／Ｆ２３０−１の障害発生の影響が、他のサーバモジュール２００に波及するのを防止することが可能となる。
【０１０３】
つまり、前記従来例のように、サーバモジュール２００−１のＰＣＩｅ  Ｉ／Ｆ２３０−１の障害発生（ＰＣＩバスエラー）を、そのままストレージモジュール３００に通知すると、ディスクコントローラ３１０がＰＣＩｅ  Ｉ／Ｆ３４０をリセットするＰＣＩｅ障害処理部３３１を起動することになる。この場合、ＰＣＩｅ  Ｉ／Ｆ３４０に接続されたリンク５００−２の正常なサーバモジュール２００−２とストレージモジュール３００との間のデータ転送が中断されてしまう。
【０１０４】
これに対して本発明では、接続モジュール４１０−１が、サーバモジュール２００−１側で発生したＰＣＩｅ  Ｉ／Ｆ２３０−１の障害を、リンク５００−１の切断に変換してストレージモジュール３００へ通知することにより、ストレージモジュール３００ではサーバモジュール２００−１との接続解除（例えば、リンクダウンまたはホットリムーブ）の処理を実行することができる。
【０１０５】
さらに、本発明によれば、前記従来例のようにＰＣＩ  Ｅｘｐｒｅｓｓのプロトコルを拡張する必要が無いので、既存のチップやデバイス及びソフトウェアを利用することができ、サーバモジュール２００及びストレージモジュール３００をＰＣＩ  Ｅｘｐｒｅｓｓで接続するサーバ装置１００のコストが上昇するのを抑制できる。
【０１０６】
なお、上記ではプロトコルエンジン４６０が、イベント模擬処理部４７０を起動する例を示したが、これに限定されるものではなく、接続モジュール４１０−１の制御部で処理を実現すれば良い。
【０１０７】
また、上記実施例においては、接続モジュール４１０をバックプレーン４００に配置した例を示したが、これに限定されるものではない。例えば、接続モジュール４１０−１〜４１０−ｎを、サーバモジュール２００−１〜２００−ｎのそれぞれに配置しても良い。この場合、バックプレーン４００に代わって、ＰＣＩｅスイッチでサーバモジュール２００とストレージモジュール３００を接続してもよい。
【０１０８】
また、上記実施例においては、サーバモジュール２００とストレージモジュール３００を接続するＩ／Ｏインターフェースとして、ＰＣＩ  Ｅｘｐｒｅｓｓを採用した例を示したが、これに限定されるものではない。
【０１０９】
また、上記実施例においては、Ｉ／Ｏインターフェース上での上位プロトコルとして、ＦＣを適用した例を示したが、ＳＡＳ（ＳＣＳＩ）やＳＡＴＡ等のプロトコルを採用しても良い。また、上記実施例においては、Ｉ／Ｏインターフェースでの障害を、上位プロトコルのリンクダウンとする例を示したが、ホットリムーブで代用するようにしても良い。
【０１１０】
本願発明は、接続モジュール４１０を介してサーバモジュール２００−１とストレージモジュール３００を接続するＩ／Ｏインターフェースにおいて、サーバモジュール２００−１がＩ／Ｏインターフェースのリセットが必要な障害を検出し、サーバモジュール２００がＩ／Ｏインターフェースをリセットする。接続モジュール４１０はサーバモジュール２００−１によるリセットから障害の発生を検出し、Ｉ／Ｏインターフェース上の通信プロトコルで障害の発生通知を、リンクの切断を示す通知に変換してストレージモジュール３００に送信する。ストレージモジュール３００では、サーバモジュール２００とのリンクを切断する処理を行って、Ｉ／Ｏインターフェースをリセットすることなく稼働を継続することができる。
【０１１１】
なお、本発明において説明した計算機等の構成、処理部及び処理手段等は、それらの一部又は全部を、専用のハードウェアによって実現してもよい。
【０１１２】
また、本実施例で例示した種々のソフトウェアは、電磁的、電子的及び光学式等の種々の記録媒体（例えば、非一時的な記憶媒体）に格納可能であり、インターネット等の通信網を通じて、コンピュータにダウンロード可能である。
【０１１３】
また、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明をわかりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
【符号の説明】
【０１１４】
１００  サーバ装置
２００−１〜２００−ｎ  サーバモジュール
２２２  ＰＣＩｅ障害処理部
２３０−１〜２３０−ｎ  ＰＣＩｅ  Ｉ／Ｆ
３００  ストレージモジュール
３３２  ＴＢＡリンクダウン処理部
４１０−１〜４１０−ｎ  接続モジュール
４４０  データ転送部
４６０  プロトコルエンジン
４７０  イベント模擬処理部
【図１】
2015064648.tif 000003
【図２】
2015064648.tif 000004
【図３】
2015064648.tif 000005
【図４】
2015064648.tif 000006
【図５】
2015064648.tif 000007
【図６】
2015064648.tif 000008