(57)【特許請求の範囲】
【請求項１】
ルートノードから複数のノードにツリー状に分岐しつつその間を通信可能に接続するデータ転送路を有し、前記ルートノードと前記複数のノードとの間でシリアルデータ伝送が行われる情報処理装置であって、
前記複数のノードのうちの少なくとも１組のノード間に設けられた、前記シリアルデータ伝送がそれぞれ双方向で行われる２本のノード間データ転送パスと、
前記ノード間データ転送パスの両端にある前記ノードである端末ノードにそれぞれ設けられており、各前記端末ノードが他方の前記端末ノードを介して送信先である前記ノードのいずれかに送信元である他の前記ノードのいずれかから受信したデータを転送する場合に、前記送信先のノードから前記送信元のノードへの返信データを、前記送信先のノードへのデータ転送に使用した前記ノード間データ転送パスと同一の前記ノード間データ転送パスを使用して転送し、いずれかの前記ノード間に設けられている前記ノード間データ転送パスの一方に障害が発生した場合には、他方の前記ノード間データ転送パスを用いて前記ノード間でのデータ転送を継続するルーティング処理部と、
を備えている情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
当該情報処理装置は、記録媒体とコンピュータとの間でのデータＩ／Ｏを制御するストレージ制御装置であり、
前記ルートノードと前記複数のノードとの間でのシリアルデータ伝送は、PCI Express（登録商標）規格で行われ、前記端末ノードはPCI Express用のスイッチであり、
前記複数のノードには、記録媒体とのデータＩ／Ｏを制御するディスクアダプタと、前記コンピュータとの間での通信を制御するチャネルアダプタが含まれ、
各前記端末ノードが、前記送信元のノードと前記送信先のノードとの各組み合わせに対応付けて、前記ノード間データ転送パスのいずれを使用してデータ転送を実行するかを示す情報である使用ノード間データ転送パス情報を保持しており、
前記ルーティング処理部は、転送しようとするデータに記録されている前記送信元ノード及び前記送信先ノードに基づいて前記使用ノード間データ転送パス情報を取得し、
前記ルートノードが、前記データ転送路を通じて各前記ノードの接続状態を示し情報を収集し、その収集した情報に基づいて前記使用ノード間データ転送パス情報を生成して前記端末ノードに転送し、
前記ルーティング処理部が、前記送信元ノード又は前記送信先ノードのいずれかと通信できないことを検出した場合、当該送信元ノード又は送信先ノードを含む前記使用ノード間データ転送パス情報に、当該ノード間データ転送パスを使用することができない旨の情報を記録し、
前記ルーティング処理部が、通信できないことを検出した前記送信元ノード又は前記送信先ノードについて通信可能となったことを検出した場合、当該送信元ノード又は送信先ノードを含む前記使用ノード間データ転送パス情報に、当該ノード間データ転送パスが使用可能である旨の情報を記録し、
前記ルーティング処理部が、いずれかの前記ノード間データ転送パスが使用できなくなったことを検出した場合、前記ルートノードにその旨を通知し、
前記ルートノードは自身が生成した前記使用ノード間データ転送パス情報について、使用できない前記ノード間データ転送パスに代えて、使用することができる前記ノード間データ転送パスを記録し、当該使用ノード間データ転送パス情報を前記端末ノードに転送し、
前記ルーティング処理部は、前記送信元ノードから使用できない前記ノード間データ転送パスを使用する前記送信先ノードへ転送すべきデータを受信した場合、当該送信先ノードへのデータ転送ができない旨の情報を前記送信元ノードに送信する、
情報処理装置。
【請求項３】
請求項１に記載の情報処理装置であって、
各前記端末ノードが、前記送信元のノードと前記送信先のノードとの各組み合わせに対応付けて、前記ノード間データ転送パスのいずれを使用してデータ転送を実行するかを示す情報である使用ノード間データ転送パス情報を保持しており、
前記ルーティング処理部は、転送しようとするデータに記録されている前記送信元ノード及び前記送信先ノードに基づいて前記使用ノード間データ転送パス情報を取得する、
情報処理装置。
【請求項４】
請求項３に記載の情報処理装置であって、
前記ルートノードが、前記データ転送路を通じて各前記ノードの接続状態を示す情報を収集し、その収集した情報に基づいて前記使用ノード間データ転送パス情報を生成して前記端末ノードに転送する、
情報処理装置。
【請求項５】
請求項１に記載の情報処理装置であって、
前記ルーティング処理部が、前記送信元ノード又は前記送信先ノードのいずれかと通信できないことを検出した場合、当該検出した送信元ノード又は送信先ノードを含む前記使用ノード間データ転送パス情報に、当該ノード間データ転送パスを使用することができない旨の情報を記録する、
情報処理装置。
【請求項６】
請求項５に記載の情報処理装置であって、
前記ルーティング処理部が、通信できないことを検出した前記送信元ノード又は前記送信先ノードについて通信可能となったことを検出した場合、当該送信元ノード又は送信先ノードを含む前記使用ノード間データ転送パス情報に、当該ノード間データ転送パスが使用可能である旨の情報を記録する、
情報処理装置。
【請求項７】
請求項３に記載の情報処理装置であって、
前記ルーティング処理部が、いずれかの前記ノード間データ転送パスが使用できなくなったことを検出した場合、前記ルートノードにその旨を通知し、
前記ルートノードは自身が生成した前記使用ノード間データ転送パス情報について、使用できない前記ノード間データ転送パスに代えて、使用することができる前記ノード間データ転送パスを記録し、当該使用ノード間データ転送パス情報を前記端末ノードに転送する、
情報処理装置。
【請求項８】
請求項１に記載の情報処理装置であって、
前記ルーティング処理部は、前記送信元ノードから使用できない前記ノード間データ転送パスを使用する前記送信先ノードへ転送すべきデータを受信した場合、当該送信先ノードへのデータ転送ができない旨の情報を前記送信元ノードに送信する、
情報処理装置。
【請求項９】
請求項３に記載の情報処理装置であって、
前記ルーティング処理部は、前記使用ノード間データ転送パス情報に、いずれかの前記ノード間データ転送パスが使用できなくなった場合にこれを代替する前記ノード間データ転送パスに関する情報を保持しており、
いずれかの前記ノード間データ転送パスが使用できなくなったことを検出した場合、前記使用ノード間データ転送パス情報を参照し、使用できない前記ノード間データ転送パスに代えて、使用することができる前記ノード間データ転送パスを使用してデータ転送を実行する、
情報処理装置。
【請求項１０】
請求項１に記載の情報処理装置であって、
当該情報処理装置は、記録媒体とコンピュータとの間でのデータＩ／Ｏを制御するストレージ制御装置であり、
前記ルートノードと前記複数のノードとの間でのシリアルデータ伝送は、PCI Express（登録商標）規格で行われ、前記端末ノードはPCI Express用のスイッチであり、
前記複数のノードには、記録媒体とのデータＩ／Ｏを制御するディスクアダプタと、前記コンピュータとの間での通信を制御するチャネルアダプタとが含まれる、
情報処理装置。
【請求項１１】
ルートノードから複数のノードにツリー状に分岐しつつその間を通信可能に接続するデータ転送路において、前記ルートノードと前記複数のノードとの間でシリアル伝送されるデータの転送方法であって、
前記データ転送路は前記複数のノードのうちの少なくとも１組のノード間に設けられた、前記シリアルデータ伝送がそれぞれ双方向で行われる２本のノード間データ転送パスを備え、
前記ノード間データ転送パスの両端にある前記ノードである端末ノードが、各前記端末ノードが他方の前記端末ノードを介して送信先である前記ノードのいずれかに送信元である他の前記ノードのいずれかから受信したデータを転送する場合に、前記送信先のノードから前記送信元のノードへの返信データを、前記送信先のノードへのデータ転送に使用した前記ノード間データ転送パスと同一の前記ノード間データ転送パスを使用して転送し、いずれかの前記ノード間に設けられている前記ノード間データ転送パスの一方に障害が発生した場合には、他方の前記ノード間データ転送パスを用いて前記ノード間でのデータ転送を継続する、
データの転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、情報処理装置、及びデータの転送方法に関し、特にデータ転送路の信頼性を高めつつシステムとしての可用性を向上させるための技術に関する。
【背景技術】
【０００２】
多数のハードディスクドライブ（Hard Disk Drive、以下「ＨＤＤ」）等の磁気記録媒体を用いて大規模なデータ記憶領域を提供するストレージ装置が広く利用されるようになってきている。データ記憶領域の拡大に伴って、格納される個々のファイルデータ等の容量も増大しつつあり、データＩ／Ｏに使用されるデータ転送路にも高速なデータ転送性能が要求されるようになっている。
【０００３】
このようなストレージ装置において、そのストレージ装置を利用するホストコンピュータとストレージ装置にあるＨＤＤ等の記憶媒体との間でのデータＩ／Ｏ、すなわちホストからのデータライト要求あるいはデータリード要求の処理は、ストレージ制御装置（以下慣用されるようにディスク制御部（DisK Controller、ＤＫＣ）と呼ぶ。）によって行われ、ＤＫＣ内部、及び、このＤＫＣと、ＤＫＣとホストとの通信制御を行うチャネルアダプタ（CHannel Adaptor、ＣＨＡ）との間、あるいはＤＫＣと、ＤＫＣとＨＤＤ等の記録媒体との間での通信制御を行うディスクアダプタ（DisK Adaptor、ＤＫＡ）との間でのデータ転送には、例えばＰＣＩ（Peripheral Component Interconnect）バス等の従来のパラレル転送方式に代わって、例えばＰＣＩ  Ｅｘｐｒｅｓｓ（登録商標、以下「ＰＣＩｅ」）に代表されるシリアル転送方式が採用されるようになっている。これは、高速データ転送の要求により、従来のパラレル転送方式では信号同期タイミングの制御が困難となる等の技術的な問題が生じていることなどによる。
【０００４】
ストレージ装置にＰＣＩｅによるデータ転送路を採用する場合、ストレージ装置としての信頼性及び可用性を確保することが問題となる。例えば特許文献１には、ＰＣＩｅ通信システムにおいて、複数のエンドポイントとの間がＰＣＩｅスイッチを介してツリー構造で接続されているルートコンプレックスに異常が生じ、ＰＣＩｅスイッチにおいてルーティング情報の変更が行われた場合にも、変更前のデータ送信元にレスポンスを返すことができるようにした構成が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−３１６７５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
前記のように、ＰＣＩｅではツリー構造のトポロジーが採用されており、ノード間でデータ転送経路（パス）がループを構成するような、ハードウェア上の接続形態は許容されていない。この制約は、ＰＣＩ−ＳＩＧ（登録商標、The Peripheral Component Interconnect Special Interest Group）によって制定されたＰＣＩｅの技術標準であるPCI Express Base Specification Revision 2.0にも明確に規定されている（例えば1.3 PCI Express Fabric Topologyを参照されたい。）。このトポロジーの面での制約は、上記の特許文献１にも当てはまる。なお、上記の文献、PCI Express Base Specification Revision 2.0の内容は、本願明細書に参考として援用する（incorporated by reference）ものとする。
【０００７】
一方、ストレージ制御装置では、データ転送の信頼性と可用性とを両立させるために、データ転送が行われるパスをハードウェア的に二重化する構成が採用される。したがって、データ転送にＰＣＩｅを適用する場合、例えば、ツリー構造を構成する異なるブランチに含まれるＰＣＩｅスイッチの間に、いずれかのＰＣＩｅスイッチに障害が発生した場合に使用しうる迂回パスを設定する場合、データ転送路を二重化することが求められる。
【０００８】
しかし、このようなハードウェア構成とした場合、２つのＰＣＩｅスイッチの間に、ＰＣＩｅの技術標準では許容されないループが構成されることとなるため、このようなハードウェア構成に対してそのままＰＣＩｅを採用することはできない。
【０００９】
本発明はこのような背景に鑑みてなされたもので、データ転送路の信頼性を高めつつシステムとしての可用性を向上させることができる情報処理装置、及びデータの転送方法を提供することを主たる目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するための本発明の一つは、ルートノードから複数のノードにツリー状に分岐しつつその間を通信可能に接続するデータ転送路を有し、前記ルートノードと前記複数のノードとの間でシリアルデータ伝送が行われる情報処理装置であって、前記複数のノードのうちの少なくとも１組のノード間に設けられた、前記シリアルデータ伝送がそれぞれ双方向で行われる２本のノード間データ転送パスと、前記ノード間データ転送パスの両端にある前記ノードである端末ノードにそれぞれ設けられており、各前記端末ノードが他方の前記端末ノードを介して送信先である前記ノードのいずれかに送信元である他の前記ノードのいずれかから受信したデータを転送する場合に、前記送信先のノードから前記送信元のノードへの返信データを、前記送信先のノードへのデータ転送に使用した前記ノード間データ転送パスと同一の前記ノード間データ転送パスを使用して転送し、いずれかの前記ノード間に設けられている前記ノード間データ転送パスの一方に障害が発生した場合には、他方の前記データ転送パスを用いて前記ノード間でのデータ転送を継続するルーティング処理部とを備えている情報処理装置である。
【００１１】
その他本願が開示する課題やその解決方法については、発明の実施形態の欄及び図面により明らかにされる。
【発明の効果】
【００１２】
本発明によれば、データ転送路の信頼性を高めつつシステムとしての可用性を向上させる情報処理装置、及びデータの転送方法を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】ストレージ装置１０の概略的な構成を示す図である。
【図２】ストレージ制御装置１２のハードウェア構成の一例である。
【図３Ａ】マイクロプロセッサ１２１のハードウェア構成の一例である。
【図３Ｂ】マイクロプロセッサ１２１のソフトウェア構成の一例である。
【図４Ａ】ＰＣＩｅスイッチ１２６のハードウェア構成の一例である。
【図４Ｂ】ＰＣＩｅスイッチ１２６のソフトウェア構成の一例である。
【図５】ＰＣＩｅで転送されるトランザクション層パケットのデータ構造例である。
【図６】ＰＣＩｅスイッチ間を接続するパスを通じたパケットの流れを示す模式図である。
【図７Ａ】ＰＣＩｅスイッチＡに格納されるルーティングテーブル１２１６Ａの一例である。
【図７Ｂ】ＰＣＩｅスイッチＢに格納されるルーティングテーブル１２１６Ｂの一例である。
【図８】ルーティングテーブル１２１６の初期設定処理フローの一例である。
【図９】図６で、デバイスＤ５、Ｄ６が実装されていない場合のパケットの流れを示す模式図である。
【図１０Ａ】デバイスＤ５、Ｄ６が実装されていない場合のＰＣＩｅスイッチＡに格納されるルーティングテーブル１２１６Ａの一例である。
【図１０Ｂ】デバイスＤ５、Ｄ６が実装されていない場合のＰＣＩｅスイッチＢに格納されるルーティングテーブル１２１６Ｂの一例である。
【図１１】図６で、デバイスＤ３に障害が発生した場合のパケットの流れを示す模式図である。
【図１２Ａ】デバイスＤ３に障害が発生した場合のＰＣＩｅスイッチＡに格納されるルーティングテーブル１２１６Ａの一例である。
【図１２Ｂ】デバイスＤ３に障害が発生した場合のＰＣＩｅスイッチＢに格納されるルーティングテーブル１２１６Ｂの一例である。
【図１３】デバイス障害の場合のポート閉塞処理フローの一例である。
【図１４】図９で、デバイスＤ５が増設された場合のパケットの流れを示す模式図である。
【図１５Ａ】デバイスＤ５が増設された場合のＰＣＩｅスイッチＡに格納されるルーティングテーブル１２１６Ａの一例である。
【図１５Ｂ】デバイスＤ５が増設された場合のＰＣＩｅスイッチＢに格納されるルーティングテーブル１２１６Ｂの一例である。
【図１６】デバイス増設対応処理フローの一例である。
【図１７】図６で、ＰＣＩｅスイッチの５番ポートを接続するパスに障害が発生した場合のパケットの流れを示す模式図である。
【図１８Ａ】ＰＣＩｅスイッチの５番ポートを接続するパスに障害が発生した場合のＰＣＩｅスイッチＡに格納されるルーティングテーブル１２１６Ａの一例である。
【図１８Ｂ】ＰＣＩｅスイッチの５番ポートを接続するパスに障害が発生した場合のＰＣＩｅスイッチＢに格納されるルーティングテーブル１２１６Ｂの一例である。
【図１９】ＰＣＩｅスイッチ間の障害パス代替処理フローの一例である。
【図２０Ａ】ＰＣＩｅスイッチ間のパス障害発生時の応答処理に関する説明図であり、正常状態でのリード動作を示している。
【図２０Ｂ】ＰＣＩｅスイッチ間のパス障害発生時の応答処理に関する説明図であり、従来の障害発生時のリード動作を示している。
【図２０Ｃ】ＰＣＩｅスイッチ間のパス障害発生時の応答処理に関する説明図であり、本実施例での障害発生時のリード動作を示している。
【図２１】図２０Ｃの応答処理におけるトランザクション層パケットデータ構造例である。
【図２２】ＰＣＩｅスイッチのポート障害検出処理フローの一例である。
【図２３Ａ】代替ポート番号を備えた、ＰＣＩｅスイッチＡに格納されるルーティングテーブル１２１６Ａの一例である。
【図２３Ｂ】代替ポート番号を備えた、ＰＣＩｅスイッチＢに格納されるルーティングテーブル１２１６Ｂの一例である。
【図２４】代替ポート番号を利用した、ＰＣＩｅスイッチ間の障害パス代替処理フローの一例である。
【発明を実施するための形態】
【００１４】
ストレージ装置１０の構成
以下、図面とともに実施形態について説明する。図１に実施形態として説明するストレージ装置１０の概略的な構成を示している。同図に示すように、ストレージ装置１０には、一つ以上のサーバ装置２０が通信ネットワーク３０を介して接続している。なお、図１の例では一のストレージ装置１０が示されているが、通信ネットワーク３０に他の一以上のストレージ装置１０を接続してもよい。
【００１５】
通信ネットワーク３０は、ＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）、ＳＡＮ（Storage Area Network）、インターネット、公衆通信網、専用線等である。通信ネットワーク３０を介して行われる通信は、例えば、ＴＣＰ／ＩＰ、ｉＳＣＳＩ（internet Small Computer System Interface）、ファイバーチャネルプロトコル（Fibre Channel Protocol）、ＦＩＣＯＮ（Fibre Connection）（登録商標）、ＥＳＣＯＮ（Enterprise System Connection） （登録商標）、ＡＣＯＮＡＲＣ（Advanced Connection Architecture）（登録商標）、ＦＩＢＡＲＣ（Fibre Connection Architecture）（登録商標）等のプロトコルに従って行われる。
【００１６】
サーバ装置２０は、ストレージ装置１０が提供する記憶領域（データの記憶領域）を利用する情報処理装置（コンピュータ）である。サーバ装置２０は、パーソナルコンピュータ、メインフレーム（Mainframe）、オフィスコンピュータ等を用いて構成されている。サーバ装置２０は、上記記憶領域へのアクセスに際し、データＩ／Ｏ要求（データ書き込み要求、データ読み出し要求等）を含んだデータフレーム（以下、フレームと略記する。）をストレージ装置１０に送信する。
【００１７】
ストレージ装置１０は例えばディスクアレイ装置である。ストレージ装置１０は、サーバ装置２０から送られてくる前述のＩ／Ｏ要求に応じて記録媒体にアクセスし、サーバ装置２０にデータやレスポンスを送信する。ストレージ装置１０は、一つ以上のチャネルアダプタ（CHannel Adapter、以下「ＣＨＡ」）１１、ディスク制御部（DisK Controller、以下「ＤＫＣ」）１２、一つ以上のディスクアダプタ（DisK Adapter、以下「ＤＫＡ」）１３、記憶装置１４、及びサービスプロセッサ（SerVice Processor、以下「ＳＶＰ」）１５を備えている。
【００１８】
ＣＨＡ１１は、サーバ装置２０から送られてくるフレームを受信し、受信したフレームに含まれているデータＩ／Ｏ要求についての処理の応答（例えば読み出したデータ、読み出し完了報告、書き込み完了報告）を含んだフレームをサーバ装置２０に送信する。なお、以下の説明において、フレームはファイバーチャネルのフレーム（ＦＣフレーム（FC: Fibre Channel））であるものとする。ＣＨＡ１１は、サーバ装置２０と通信するためのポート（通信ポート）を有する外部通信インタフェース（以下「外部通信Ｉ／Ｆ」）、プロセッサ、ローカルメモリ等と通信するためのポート（通信ポート）を有する内部通信インタフェース（以下「内部通信Ｉ／Ｆ」）を備えている。
【００１９】
外部通信Ｉ／Ｆは、ＮＩＣ（Network Interface Card）やＨＢＡ（Host Bus Adaptor）等を用いて構成されている。プロセッサは、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）等を用いて構成されている。ローカルメモリは、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）である。ローカルメモリにはマイクロプログラムが格納されている。プロセッサが、ローカルメモリから上記マイクロプログラムを読み出して実行することにより、ＣＨＡ１１が提供する各種の機能が実現される。内部通信Ｉ／Ｆは、内部通信路を介してＤＫＣ１２、ＤＫＡ１３と通信する。本実施例では、この内部通信Ｉ／Ｆとして、ＰＣＩｅが使用されている。
【００２０】
ＤＫＣ１２は、ＣＨＡ１１が受信したフレームに含まれている上記データＩ／Ｏ要求に応じて、ＣＨＡ１１、及びＤＫＡ１３の間で行われるデータ転送に関する処理を行う。後述のように、ＤＫＣ１２に設けられているマイクロプロセッサ（MicroProcessor、以下「ＭＰ」）は、ＣＨＡ１１とＤＫＡ１３との間のデータ（記憶装置１４から読み出したデータ、記憶装置１４に書き込むデータ）の引き渡しや、ＤＫＣ１２内のキャッシュメモリに格納されるデータのステージング（記憶装置１４からのデータの読み出し）又はデステージング（記憶装置１４への書き出し）等を行う。
【００２１】
ＤＫＡ１３は、記憶装置１４からのデータの読み出しや記憶装置１４へのデータの書き込みに際し記憶装置１４と通信を行う。ＤＫＡ１３は、内部通信Ｉ／Ｆ、プロセッサ、ローカルメモリ、及びドライブインタフェース（以下「ドライブＩ／Ｆ」）を備えている。ローカルメモリにはマイクロプログラムが格納されている。プロセッサが、ローカルメモリから上記マイクロプログラムを読み出して実行することにより、ＤＫＡ１３が提供する各種の機能が実現される。内部通信Ｉ／Ｆは、内部通信路を介して、ＣＨＡ１１、ＤＫＣ１２と通信する。プロセッサは、ＣＰＵ、ＭＰＵ等を用いて構成されている。ローカルメモリは、例えばＲＡＭ、ＲＯＭである。ドライブＩ／Ｆは、記憶装置１４との間で通信を行う。
【００２２】
記憶装置１４は複数の記憶ドライブ１４１を備えて構成されている。記憶ドライブ１４１は、例えばＳＡＳ（Serial Attached SCSI）、ＳＡＴＡ（Serial ATA）、ＦＣ（Fibre Channel）、ＰＡＴＡ（Parallel ATA）、ＳＣＳＩ等のタイプのＨＤＤ、もしくは半導体記憶装置（Solid State Drive、以下「ＳＳＤ」）である。
【００２３】
記憶装置１４は、記憶ドライブ１４１をＲＡＩＤ（Redundant Arrays of Inexpensive （or Independent) Disks）等の方式で制御することによって提供される論理的な記憶領域を単位として記憶領域を提供する。この論理的な記憶領域は、例えばＲＡＩＤグループ（パリティグループ（Parity Group））を用いて構成される論理装置（ＬＤＥＶ１４２（LDEV: Logical DEVice））である。またストレージ装置１０は、サーバ装置２０に対してＬＤＥＶ１４２を用いて構成される論理的な記憶領域（以下、ＬＵ（Logical Unit、Logical Volume、論理ボリューム）と称する。）を提供する。ストレージ装置１０は、ＬＵとＬＤＥＶ１４２との対応（関係）を管理しており、ストレージ装置１０は、この対応に基づきＬＵに対応するＬＤＥＶ１４２の特定、もしくは、ＬＤＥＶ１４２に対応するＬＵの特定を行う。
【００２４】
ＳＶＰ１５は、ストレージ装置１０の各構成要素の制御や状態監視を行う。ＳＶＰ１５は、パーソナルコンピュータやオフィスコンピュータ等である。ＳＶＰ１５は、内部通信路又はＬＡＮ等の通信手段を介してＣＨＡ１１、ＤＫＣ１２、ＤＫＡ１３等のストレージ装置１０の構成要素と随時通信を行い、各構成要素から稼働情報等を取得して管理装置４０に提供する。またＳＶＰ１５は管理装置４０から送られてくる制御情報や稼働情報に基づき、各構成要素の設定や制御、保守（ソフトウェアの導入や更新を含む）を行う。
【００２５】
管理装置４０は、ＳＶＰ１５とＬＡＮ等を介して通信可能に接続されるコンピュータである。管理装置４０はストレージ装置１０の制御や監視のためのＧＵＩ（Graphical User Interface）やＣＬＩ（Command Line Interface）等を用いたユーザインタフェースを備える。
【００２６】
ディスク制御部（ＤＫＣ）１２の構成
次に、図２を参照して、本実施例におけるＤＫＣ１２のハードウェア構成について説明する。図２は、ＤＫＣ１２のハードウェア構成の一例を示す図である。ＤＫＣ１２は、ＭＰ（マイクロプロセッサ）１２１、ＭＣＨ（Memory Controller Hub）１２２、ＭＰＡ（MicroProcessor Adapter）１２４、及びＰＣＩｅスイッチ１２６Ａ、１２６Ｂを備えている。ＭＰ１２１、ＭＣＨ１２２、ＭＰＡ１２４、及びＰＣＩｅスイッチ（端末ノード）１２６Ａ、１２６Ｂの間は、ＰＣＩｅプロトコルを採用するツリー状のデータ転送路によって通信可能に接続されている。したがって、ＤＫＣ１２において、ＭＰ１２１がルートノード（ルートコンプレックス）、ＭＣＨ１２２、ＭＰＡ１２４、ＰＣＩｅスイッチ１２６Ａ、１２６Ｂがノードと位置づけられる。
【００２７】
図３Ａに、ＭＰ１２１の構成の一例を示している。ＭＰ１２１は、ＣＰＵ、ＭＰＵ、ＤＭＡ（Direct Memory Access）等を用いて構成されたプロセッサ１２１２を備え、前述のように、ＣＨＡ１１とＤＫＡ１３とを介した、サーバ装置２０と記憶装置１４との間のデータ転送を制御する等の、ＤＫＣ１２の主要な機能を実現する。このような機能は、各ＭＰ１２１に設けられているローカルメモリ１２１３にあらかじめ格納してあるマイクロプログラムを読み出して実行することを通じて行われる。内部通信Ｉ／Ｆ１２１１は、内部通信路を介してＣＨＡ１１、ＤＫＡ１３、及びメモリ１２３と通信を行う。
【００２８】
図３Ｂに、ＭＰ１２１で動作するソフトウェアの構成の一例を示している。ＭＰ１２１のローカルメモリ１２１３には、データ制御部１２１４、及びルーティング情報管理部１２１５の機能を実現するためにプロセッサ１２１２により実行されるマイクロプログラムと、後述するＰＣＩｅスイッチ１２６Ａ、１２６Ｂが、ＰＣＩｅプロトコル通信によって転送されるデータパケットの転送経路であるパスが設定されているルーティングテーブル１２１６とが格納されている。データ制御部１２１４は、ＤＫＣ１２において行われるデータ処理全般を制御する機能を有する。ルーティング情報管理部１２１５は、後述のルーティングテーブル１２１６に記録される情報を所定のタイミングで更新し、後述するＰＣＩｅスイッチ１２６Ａ、１２６Ｂに転送する。ルーティングテーブル１２１６は、ストレージ装置１０の構成に従ってあらかじめＭＰ１２１のローカルメモリ１２１３に格納されており、ストレージ装置１０の初期電源投入時に、各ＰＣＩｅスイッチ１２６Ａ、１２６Ｂに転送されてそこでデータパケットの転送制御に使用される。
【００２９】
なお、図２の例では４つのＭＰ１２１がＤＫＣ１２に設けられているが、ＭＰ１２１の設置数はこれ以外の数であってもよい。
【００３０】
ＭＣＨ１２２は、ＭＰ１２１とメモリ１２３、あるいはＭＰＡ１２４等の他の周辺デバイスとの間での通信を制御するブリッジ回路を備えている。本実施例では、ＭＣＨ１２２は、４つのＰＣＩｅプロトコルの通信ポート１２２−１〜１２２−４を備え、ＭＰＡ１２４との通信を行う。
【００３１】
メモリ１２３は、ＲＡＭ又はＲＯＭで構成されており、例えば、ＤＫＣ１２全体のデータ処理を制御するためのプログラム等を格納する制御メモリ、あるいは記憶装置１４から読み出したデータ、あるいは記憶装置１４に書き込むデータを一時的に格納するための記憶領域を提供する共有メモリとして使用される。
【００３２】
ＭＰＡ１２４は、ＭＰ１２１とＰＣＩｅスイッチ１２６Ａ、１２６Ｂとの間でのデータ転送を中継する機能を有し、図２の例では、ＭＣＨ１２２の通信ポート１２２−１〜１２２−４とそれぞれＰＣＩｅプロトコルによって通信可能に接続されている４つの通信ポート１２４−１〜１２４−４、及びＰＣＩｅスイッチ１２６Ａの通信ポート１２６Ａ−１、１２６Ａ−２、ＰＣＩｅスイッチ１２６Ｂの通信ポート１２６Ｂ−１、１２６Ｂ−２とそれぞれＰＣＩｅプロトコルによって通信可能に接続されている４つの通信ポート１２４−５〜１２４−８を備えている。これらの通信ポート１２４−１〜１２４−８を通じて、記憶装置１４へのデータＩ／Ｏが転送される。
【００３３】
一方、ＭＰＡ１２４は、ＰＣＩｅスイッチ１２６Ａ、１２６Ｂそれぞれと、サイドバンド通信路１２５を通じて通信可能に接続されている。サイドバンド通信路１２５は、データＩ／Ｏ以外のＤＫＣ１２内における制御データの転送に使用される。サイドバンド通信路１２５は、例えば適宜のシリアル通信路として構成することができ、本実施例では、ＭＰ１２１からルーティングテーブル１２１６のデータを受信して格納するときのデータ転送路として使用される。
【００３４】
ＰＣＩｅスイッチ１２６Ａの通信ポート１２６Ａ−３〜１２６Ａ−Ｎは、デバイス１〜デバイスｍ（１３０）のいずれかと、それぞれＰＣＩｅプロトコルによって通信可能に接続されている。また、ＰＣＩｅスイッチ１２６Ｂの通信ポート１２６Ｂ−３〜１２６Ｂ−Ｎは、同様にデバイスｍ＋１〜デバイスｎのいずれかと、ＰＣＩｅプロトコルによって通信可能に接続されている。
【００３５】
デバイス１〜デバイスｎはＰＣＩｅスイッチ１２６Ａ、１２６Ｂ等と同様にノードであり、それぞれＤＫＣ１２に含まれるＣＨＡ１１、ＤＫＡ１３のいずれかに対応し、具体的にはＣＨＡ１１、ＤＫＡ１３に備えられているＰＣＩｅプロトコルの通信ポートにあるＰＣＩｅ送受信チップである。
【００３６】
また、ＰＣＩｅスイッチ１２６ＡとＰＣＩｅスイッチ１２６Ｂの間には、デバイス１〜ｍのデバイス群とデバイスｍ＋１〜デバイスｎのデバイス群との間でのデータ転送を可能とするために、ＰＣＩｅプロトコルの通信路であるスイッチ間パス１２７（ノード間データ転送パス）が設けられている。前述のように、ストレージ装置１０においては、一つの通信路（パス）に障害が生じたことだけによって運用に支障が出ることは許されないので、図２に示すように、スイッチ間パス１２７は二重系とされている。しかし、前述したように、本来ツリー構造のみが許容されるＰＣＩｅプロトコルの通信路には、このような二重系のパスを設定することができない。そこで、本実施例では、このような二重系のスイッチ間パス１２７の設定を可能とする構成を提案するものである。
【００３７】
ＰＣＩｅスイッチ１２６の構成
次に、ＰＣＩｅスイッチ１２６について説明する。ＰＣＩｅスイッチ１２６のハードウェア構成の一例を図４Ａに、ソフトウェア構成の一例を図４Ｂに示している。ＰＣＩｅスイッチ１２６は、ＣＰＵ１２６１、メモリ１２６２、及びＰＨＹ１２６３から主として構成され、一般に一つのＡＳＩＣ（Application Specific Integrated Circuit）チップとして供給される。ＣＰＵ１２６１、メモリ１２６２、及びＰＨＹ１２６３は、内部通信路によって互いに通信可能に接続されている。
【００３８】
例えばフラッシュメモリ等の不揮発性メモリとして構成されるメモリ１２６２には、ＰＣＩｅのデータパケット転送制御等の、ＰＣＩｅスイッチ１２６の主要な機能を実現するためのマイクロプログラムが格納されており、ＣＰＵ１２６１はこれらのマイクロプログラムを読み出して実行する。ＰＨＹ１２６３は、ＰＣＩｅプロトコルによってデータパケットとして転送されるシリアルデータと、ＰＣＩｅスイッチ１２６内部で処理されるパラレルデータとのシリアル−パラレル変換回路を含む、ＰＣＩｅ送受信回路を備えた回路ブロックである。
【００３９】
図４Ｂに示すように、ＰＣＩｅスイッチ１２６には、その機能を実現するためのソフトウェアとして、ルーティング処理部１２６４が設けられている。ルーティング処理部１２６４は、ＰＣＩｅスイッチ１２６において実行されるデータ転送制御において、ＰＣＩｅプロトコルの各データパケットの転送経路を決定するルーティング制御の機能を有し、ＣＰＵ１２６１がメモリ１２６２から対応するプログラムを読み出して実行することにより実現される。
【００４０】
ルーティングテーブル１２１６は、同様にメモリ１２６２に格納されており、ルーティング処理部１２６４が、本実施例のルーティング制御を実行する際に参照するデータテーブルである。前述のように、ルーティングテーブル１２１６は、ＭＰ１２１によって初期生成され、ＭＣＨ１２２、ＭＰＡ１２４からサイドバンド通信路１２５を経由して各ＰＣＩｅスイッチ１２６Ａ、１２６Ｂに転送され、メモリ１２６２に格納される。ルーティングテーブル１２１６の具体的な構成例については後述する。
【００４１】
データパケットの構成
図５に、ＰＣＩｅプロトコルで使用されるデータパケットであるトランザクション層パケット（Transaction Layer Packet、以下「ＴＬＰ」）のデータ構造の一例を示している。ＴＬＰは、図示のように、ヘッダ部３０１とデータ部３０２とを備えている。ヘッダ部３０１は、例えばトランザクションタイプ、バス番号、デバイス番号、機能番号、タグ番号、送信先アドレスの各データを含み、データ部３０２は、ＴＬＰによって転送されるペイロードとしての実データを含んでいる。
【００４２】
本実施例では、ＴＬＰのヘッダ部３０１において、バス番号及びデバイス番号のブロックに送信元アドレス３０３が、本来の送信先アドレスの一部に送信先アドレス３０４が記録される。このＴＬＰは、各ＰＣＩｅスイッチ１２６のＰＨＹ１２６３において生成され、前記の送信元アドレス３０３及び送信先アドレス３０４が記録される。また、データ部３０２には、後述する本実施例特有のメッセージデータが記録されることがある。
【００４３】
ＰＣＩｅスイッチ１２６によるルーティング制御
次に、本実施例におけるＰＣＩｅスイッチ１２６Ａ、１２６Ｂ間のスイッチ間パス１２７に関するルーティング制御について説明する。図６は、ＰＣＩｅスイッチ１２６Ａ、１２６Ｂ間のスイッチ間パス１２７を介したＴＬＰの転送の流れを示す模式図である。なお、以下ＰＣＩｅスイッチ１２６Ａ、１２６Ｂを互いに区別することなく、ＰＣＩｅスイッチ単体として言及する場合には、単にＰＣＩｅスイッチ１２６という。後出のルーティングテーブル１２１６Ａ、１２１６Ｂについても同様とする。
【００４４】
図６の例において、各ＰＣＩｅスイッチ１２６Ａ、１２６Ｂは、通信ポート０〜５を備えている。通信ポートに付した識別ＩＤとしての数字は、他の識別符号であってもよい。ＰＣＩｅスイッチ１２６Ａでは、通信ポート０〜５は、それぞれＭＰＡ１２４の通信ポートＲ１、デバイスＤ１〜Ｄ３、及び２本のスイッチ間パス１２７に接続されている。また、ＰＣＩｅスイッチ１２６Ｂでは、通信ポート０〜５は、それぞれＭＰＡ１２４の通信ポートＲ２、デバイスＤ４〜Ｄ６、及び２本のスイッチ間パス１２７に接続されている。
【００４５】
図６において、両端に矢印を付した破線は、ＰＣＩｅスイッチ１２６Ａ、１２６Ｂを介したＴＬＰの転送経路を示している。図６の例では、デバイスＤ１（１３０）からＰＣＩｅスイッチ１２６Ａの通信ポート１で受信されたＴＬＰは、通信ポート４からスイッチ間パス１２７を通じてＰＣＩｅスイッチ１２６Ｂの通信ポート４で受信され、通信ポート２からデバイスＤ５に送信されることを示している。ＰＣＩｅ規格では、前述のようにツリー構造のトポロジーを前提としているため、デバイスＤ１からＰＣＩｅスイッチ１２６Ａの通信ポート４を通じてデバイス５に送信されたＴＬＰに対する完了通知は、同様に、ＰＣＩｅスイッチ１２６Ｂの通信ポート４を通じてデバイスＤ１に返す必要がある。言い換えれば、あるデバイスからＰＣＩｅスイッチ１２６Ａ、ＰＣＩｅスイッチ１２６Ｂを通じて他のデバイスに送信されるＴＬＰと、それに対する完了通知は、往復とも同一のスイッチ間パス１２７を通じて転送する必要がある。なお、完了通知については、後出の図２０Ａに関して説明する。
【００４６】
ルーティングテーブル１２１６の構成
次に、図６に例示したパケットの転送制御を実現するために設定されるルーティングテーブル１２１６の構成について説明する。図７Ａ、図７Ｂは、ＰＣＩｅスイッチ１２６Ａ、ＰＣＩｅスイッチ１２６Ｂにそれぞれ格納されるルーティングテーブル１２１６Ａ、１２１６Ｂの設定例を示している。ルーティングテーブル１２１６は、前述のように、ＭＰ１２１によって生成されて、各ＰＣＩｅスイッチ１２６Ａ、１２６Ｂに転送され、メモリ１２６２に格納される。
【００４７】
ルーティングテーブル１２１６には、エントリＡ１、Ｂ１、送信元ＩＤＡ２、Ｂ２、送信先ＩＤＡ３、Ｂ３、ポート番号Ａ４、Ｂ４、及びイネーブルフラグＡ５、Ｂ５の各項目が記録されている。エントリＡ１、Ｂ１は、各ルーティングテーブル１２１６に記録されているデータエントリを互いに識別するためのＩＤである。送信元ＩＤＡ２、Ｂ２は、ＴＬＰの送信元であるデバイスを互いに識別するためのＩＤ（図６の例ではＤ１）である。送信先ＩＤＡ３、Ｂ３は、ＴＬＰの送信先であるデバイスを互いに識別するためのＩＤ（図６の例ではＤ５）である。ポート番号Ａ４、Ｂ４（使用ノード間データ転送パス情報）は、各ＰＣＩｅスイッチ１２６において、ＴＬＰが送出される通信ポートを互いに識別するためのＩＤである（図６の例では４）。イネーブルフラグＡ５、Ｂ５は、各エントリＡ１、Ｂ１に特定されているＴＬＰの転送パスが使用可能であるかを示すフラグである。対応するエントリＡ１、Ｂ１においてＴＬＰの転送パスが使用可能であれば１が、使用不能であれば０が、それぞれイネーブルフラグＡ５、Ｂ５に記録される。
【００４８】
いま、図７Ａを参照すると、ＰＣＩｅスイッチ１２６Ａについて、送信元ＩＤＡ２が「Ｄ１」、送信先ＩＤＡ３が「Ｄ５」であるエントリＡ１「１２」において、ポート番号Ａ４が４、イネーブルフラグＡ５が１である。これは、デバイスＤ１からデバイスＤ５にＴＬＰを転送する場合、ポート番号Ａ４として４が割り当てられているスイッチ間パス１２７が使用されるように設定されており、またそのパスは使用可能であることを意味している。
【００４９】
同様に、図７Ｂを参照すると、ＰＣＩｅスイッチ１２６Ｂについて、送信元ＩＤＢ２が「Ｄ５」、送信先ＩＤＢ３が「Ｄ１」であるエントリＢ１「２５」において、ポート番号Ｂ４が４、イネーブルフラグＢ５が１である。これは、デバイスＤ５からデバイスＤ１にＴＬＰを転送する場合、ポート番号Ａ４として４が割り当てられているスイッチ間パス１２７が使用されるように設定されており、またそのパスは使用可能であることを意味している。
【００５０】
ＰＣＩｅスイッチ１２６Ａ、１２６Ｂのルーティング処理部１２６４は、メモリ１２６２に格納されているこれらのルーティングテーブル１２１６を参照して、それぞれデバイスＤ１からデバイスＤ５へのＴＬＰ転送と、それに応じた完了通知の返信を実行することができる。
【００５１】
ルーティングテーブル１２１６の初期設定処理
次に、以上説明した図７Ａ、図７Ｂのルーティングテーブル１２１６の初期設定処理について説明する。図８に、ルーティングテーブル１２１６の初期設定処理フローの一例を示している。この初期設定処理は、ストレージ装置１０の電源が投入されてＤＫＣ１２に電源が供給されるようになったことを契機として、ＭＰ１２１のルーティング情報管理部１２１５によって実行される。以下、ＭＰ１２１を動作主体として記載した場合は、ＭＰ１２１がルーティング情報管理部１２１５の機能に対応するプログラムを実行することを意味するものとする。また、図８及び後出の他の図において、各処理ステップを示す符号に付した「Ｓ」はステップを意味する。
【００５２】
まず、ＭＰ１２１は、ＤＫＣ１２の電源投入後、ＳＶＰ１５からストレージ装置１０に関してＳＶＰ１５が収集した構成情報を取得して、自身のローカルメモリに保持されているルーティングテーブル１２１６に格納されている情報を必要に応じて更新する（Ｓ６０１）。ストレージ装置１０に関する構成情報は、管理装置４０から管理者等が人手でＳＶＰ１５に入力するようにしてもよい。
【００５３】
例えば、ＭＰ１２１が、ＳＶＰ１５から新たに取得したストレージ装置１０の構成情報により、図６のデバイスＤ６が取り外されていることを検知した場合、ＭＰ１２１は、自身のローカルメモリが保持しているルーティングテーブル１２１６において、デバイス６に対応づけられているイネーブルフラグＡ５、Ｂ５を１から０に変更する。これにより、ルーティングテーブル１２１６上で、デバイスＤ６が含まれる転送パスは使用できないことが設定されたことになる。
【００５４】
次に、ＭＰ１２１は、ローカルメモリ１２１３から更新されたルーティングテーブル１２１６の情報を読み出して（Ｓ６０２）、ＭＣＨ１２２を介してそれをＭＰＡ１２４に転送する（Ｓ６０３）。ＭＰＡ１２４は、受信したルーティングテーブル１２１６の情報を、サイドバンド通信路１２５を通じてＰＣＩｅスイッチ１２６Ａ、１２６Ｂに送信する（Ｓ６０４）。ＰＣＩｅスイッチ１２６Ａ、１２６Ｂは、受信したルーティングテーブル１２１６の情報をそれぞれのメモリ１２６２に格納する（Ｓ６０５）。
【００５５】
以上の処理によれば、各ＰＣＩｅスイッチ１２６に格納されているルーティングテーブル１２１６の情報を、ストレージ装置１０の電源が投入される毎に最新の状態に更新しておくことができ、各ＰＣＩｅスイッチ１２６は、常時使用可能なパスを使用して確実にＴＬＰを転送することができる。
【００５６】
一部デバイスが実装されていない場合のルーティング制御
次に、図６に例示した構成において、デバイスＤ５、Ｄ６がストレージ装置１０に実装されていない場合について説明する。図９に、図６で、デバイスＤ５、Ｄ６が実装されていない場合のパケットの流れを示す模式図を示している。また、図１０Ａ、図１０Ｂに、図９に対応してＰＣＩｅスイッチ１２６Ａ、１２６Ｂがそれぞれ使用するルーティングテーブル１２１６Ａ、１２１６Ｂを示している。
【００５７】
この場合、いずれのＰＣＩｅスイッチ１２６Ａ、１２６Ｂも、送信元あるいは送信先デバイスとしてデバイスＤ５、Ｄ６を含むパスは使用することができないことが明らかであるから、図１０Ａ、図１０Ｂにおいて、破線で囲んで示しているように、送信元ＩＤＡ２、Ｂ２、送信先ＩＤＡ３、Ｂ３に「Ｄ５」又は「Ｄ６」を含むエントリＡ１、Ｂ１に対応付けられているイネーブルフラグＡ５、Ｂ５には、０が設定されている。このような状態は、例えば、デバイスＤ５、Ｄ６に対応する記憶デバイスが接続されていない状態でストレージ装置１０に電源が投入された場合に生じる。
【００５８】
一部デバイスに障害が発生した場合の処理
次に、図６に例示した構成において、デバイスＤ３に障害が発生した場合について説明する。図１１に、図６で、デバイスＤ３に障害が発生した場合のパケットの流れを示す模式図を示している。各ＰＣＩｅスイッチ１２６Ａ、１２６Ｂは、その一般的な機能として、自身が有するＣＰＵ１２６１によって、各通信ポート１２６−ｎの状態を常時モニタする機能を備えているため、各デバイスにおける障害発生を検知して自律的に対処することが可能である。図１２Ａ、図１２Ｂに、図１１に対応してＰＣＩｅスイッチ１２６Ａ、１２６Ｂがそれぞれ使用するルーティングテーブル１２１６Ａ、１２１６Ｂを示している。
【００５９】
この場合、いずれのＰＣＩｅスイッチ１２６Ａ、１２６Ｂも、送信元あるいは送信先デバイスとしてデバイスＤ３を含むパスは使用することができないことが明らかであるから、図１２Ａ、図１２Ｂにおいて、破線で囲んで示しているように、送信元ＩＤＡ２、Ｂ２、送信先ＩＤＡ３、Ｂ３に「Ｄ３」を含むエントリＡ１、Ｂ１に対応付けられているイネーブルフラグＡ５、Ｂ５には、０が設定されている。
【００６０】
デバイス障害に対応する通信ポートの閉塞処理
以上説明したデバイス障害発生時においてＰＣＩｅスイッチ１２６で実行される通信ポートの閉塞処理について説明する。図１３に、通信ポート閉塞処理フローの一例を示している。通信ポート閉塞処理は、ＰＣＩｅスイッチ１２６のルーティング処理部１２６４によって実行される。なお、図１３の例では、ルーティング処理部１２６４が各通信ポートを通じて接続している各デバイスの状態をモニタしているものとするが、別にモニタ部を設ける構成を採用してもよい。
【００６１】
まず、ルーティング処理部１２６４は、自身が属するＰＣＩｅスイッチ１２６に接続するデバイスＤの状態に異常があるかを、例えば当該デバイスＤとの間のデータＩ／Ｏをモニタすることによって常時判定し（Ｓ１１０１、Ｓ１１０２）、あるデバイスに障害を検出した場合（Ｓ１１０２、Ｙｅｓ）、障害発生を検知したデバイスＤが接続している通信ポート１２６−ｎ（図１１のデバイスＤ３では通信ポート３）を閉塞するために、ルーティングテーブル１２１６において閉塞しようとする通信ポート１２６−ｎのポート番号Ａ４、Ｂ４に対応付けられているイネーブルフラグＡ５、Ｂ５を０に設定する。そして、ルーティング処理部１２６４は、デバイスＤに障害が発生し、対応する通信ポート１２６−ｎを閉塞したことを、サイドバンド通信路１２５、ＭＰＡ１２４、ＭＣＨ１２２を通じてＭＰ１２１に通知する（Ｓ１１０４）。通知を受けたＭＰ１２１は、ＳＶＰ１５を通じて管理装置４０に障害への対処を要求する情報等を送信することができる。
【００６２】
以上説明した処理によれば、ＰＣＩｅスイッチ１２６は、デバイス障害を検知して対応する通信ポート１２６−ｎを閉塞することにより、障害発生デバイスを含むデータ転送パスを確実に使用できない状態とし、また管理者等にデバイス障害への対処を促す情報を提供することができる。
【００６３】
デバイス増設時の処理
次に、図９に例示した、デバイスＤ５、Ｄ６が実装されていない構成において、デバイスＤ５が増設された場合について説明する。図１４に、図９で、デバイスＤ５を増設した場合のパケットの流れを示す模式図を示している。図１５Ａ、図１５Ｂに、図１４に対応してＰＣＩｅスイッチ１２６Ａ、１２６Ｂがそれぞれ使用するルーティングテーブル１２１６Ａ、１２１６Ｂを示している。
【００６４】
この場合、いずれのＰＣＩｅスイッチ１２６Ａ、１２６Ｂも、送信元あるいは送信先デバイスとしてデバイスＤ５を含むパスを使用することが可能となった一方で、デバイスＤ６を含むパスは依然として使用することができない。図１５Ａ、図１５Ｂにおいて、送信元あるいは送信先デバイスとしてデバイスＤ５を含むエントリＡ１、Ｂ１については、対応するイネーブルフラグＡ５、Ｂ５が０から１に変更されている。また、破線で囲んで示しているように、送信元ＩＤＡ２、Ｂ２、送信先ＩＤＡ３、Ｂ３に「Ｄ６」を含むエントリＡ１、Ｂ１に対応付けられているイネーブルフラグＡ５、Ｂ５には、依然として０が設定されている。
【００６５】
デバイス増設対応処理
以上説明したデバイス増設時において、ＰＣＩｅスイッチ１２６で実行されるデバイス増設対応処理について説明する。図１６に、デバイス増設対応処理フローの一例を示している。デバイス増設対応処理は、ＭＰ１２１が、ローカルメモリに格納されている、対応するマイクロプログラムを実行することによって行われる。
【００６６】
まず、ＭＰ１２１は、デバイス増設後、最初にストレージ装置１０の電源が投入されたこと、あるいは管理装置４０からＳＶＰ１５を通じてデバイス増設対応処理実行の命令を受け付けたことを契機として、ＳＶＰ１５からストレージ装置１０に関してＳＶＰ１５が収集した構成情報を取得する（Ｓ１４０１）。
【００６７】
次に、ＭＰ１２１は、自身のローカルメモリに保持されているルーティングテーブル１２１６に格納されている情報について、送信元あるいは送信先デバイスとして増設されたデバイス（図１４の例ではデバイスＤ５）を含むエントリＡ１、Ｂ１に対応するイネーブルフラグＡ５、Ｂ５を０から１に変更する（Ｓ１４０２）。ストレージ装置１０に関する構成情報は、管理装置４０から管理者等が人手でＳＶＰ１５に入力するようにしてもよい。
【００６８】
次に、ＭＰ１２１は、ローカルメモリから更新されたルーティングテーブル１２１６の情報を読み出して、ＭＣＨ１２２を介してそれをＭＰＡ１２４に転送する（Ｓ１４０３）。ＭＰＡ１２４は、受信したルーティングテーブル１２１６の情報を、サイドバンド通信路１２５を通じてＰＣＩｅスイッチ１２６Ａ、１２６Ｂに送信する（Ｓ１４０４）。ＰＣＩｅスイッチ１２６Ａ、１２６Ｂは、受信したルーティングテーブル１２１６の情報をそれぞれのメモリ１２６２に格納する（Ｓ１４０５）。
【００６９】
以上説明した処理によれば、データパケットの送信元あるいは送信先となるデバイスが増設された場合でも、ＰＣＩｅスイッチ１２６は、以後自動的に当該増設されたデバイスを含むデータ転送パスを使用することができるようになる。
【００７０】
スイッチ間パス１２７に障害が発生した場合の処理
次に、図６に例示した構成において、ＰＣＩｅスイッチ１２６Ａ、１２６Ｂの間を接続している２本のスイッチ間パス１２７のうち、ＰＣＩｅスイッチ１２６Ａ、１２６Ｂの通信ポート５同士を接続するパス１２７に障害が発生した場合について説明する。図１７に、図６で、ＰＣＩｅスイッチ１２６の通信ポート５を使用しているスイッチ間パス１２７に障害が発生した場合のパケットの流れを示す模式図を示している。図１８Ａ、図１８Ｂには、図１７に対応してＰＣＩｅスイッチ１２６Ａ、１２６Ｂがそれぞれ使用するルーティングテーブル１２１６Ａ、１２１６Ｂを示している。
【００７１】
この場合、いずれのＰＣＩｅスイッチ１２６Ａ、１２６Ｂも、他方のＰＣＩｅスイッチ１２６Ａ、１２６Ｂにデータパケットを転送するときに、通信ポート５を含むパスを使用することができない。したがって、図１８Ａ、図１８Ｂにおいて、送信元デバイスＡ２、Ｂ２あるいは送信先デバイスＡ３、Ｂ３のポート番号Ａ４、Ｂ４として「５」を含むエントリＡ１、Ｂ１については、破線で囲んで示しているように、それらを「４」に変更している。なお、図１８Ａ、図１８Ｂにおいてはそれら該当箇所を、理解しやすくするために「５→４」と記述しているが、実際には変更後の使用通信ポートを示す「４」を記録すれば足りる。
【００７２】
ＭＰ１２１を使用する障害パス代替処理
以上説明した、スイッチ間パス１２７での障害発生時に、ＭＰ１２１によって実行される障害パス代替処理について説明する。図１９に、障害パス代替処理フローの一例を示している。障害パス代替処理は、ＭＰ１２１が、ローカルメモリに格納されている、対応するマイクロプログラムにより実行する処理とＰＣＩｅスイッチ１２６のルーティング処理部１２６４による処理とが協働して行われる。
【００７３】
まず、ＰＣＩｅスイッチ１２６のルーティング処理部１２６４は、ストレージ装置１０の稼働中、スイッチ間パス１２７に含まれる通信ポート（図６の例では通信ポート４、５）に障害が発生しているか監視を継続し（Ｓ１７０１、Ｎｏ）、いずれかの通信ポートに障害が発生したことを検出した場合（Ｓ１７０１、Ｙｅｓ）、ＭＰ１２１にスイッチ間パス１２７に含まれる通信ポートに障害が発生したことを通知する（Ｓ１７０２）。
【００７４】
前記通知を受け取ったＭＰ１２１は、自身のローカルメモリに保持されているルーティングテーブル１２１６に格納されている情報について、送信元デバイスＡ２、Ｂ２あるいは送信先デバイスＡ３、Ｂ３のポート番号Ａ４、Ｂ４として障害発生が通知された通信ポート（図１７の例では通信ポート「５」）を含むエントリＡ１、Ｂ１については、それらを他方の正常な通信ポートの番号（図１７の例では通信ポート「４」）に変更する（Ｓ１７０３）。
【００７５】
次に、ＭＰ１２１は、ローカルメモリから更新されたルーティングテーブル１２１６の情報を読み出して、ＭＣＨ１２２を介してそれをＭＰＡ１２４に転送する（Ｓ１７０４）。ＭＰＡ１２４は、受信したルーティングテーブル１２１６の情報を、サイドバンド通信路１２５を通じてＰＣＩｅスイッチ１２６Ａ、１２６Ｂに送信する（Ｓ１７０５）。ＰＣＩｅスイッチ１２６Ａ、１２６Ｂは、受信したルーティングテーブル１２１６の情報をそれぞれのメモリ１２６２に格納する（Ｓ１７０６）。
【００７６】
以上説明した処理によれば、いずれかのスイッチ間パス１２７に障害が発生した場合でも、ＰＣＩｅスイッチ１２６間でのデータパケットの転送を継続することができるので、ストレージ装置１０としての信頼性、可用性を向上させることができる。
【００７７】
障害発生時の応答処理
次に、前述したスイッチ間パス１２７での障害発生時に、ＰＣＩｅスイッチ１２６において実行される応答処理について説明する。図２０Ａ〜図２０Ｃは、あるデバイスＸから他のデバイスにＹに、ＰＣＩｅスイッチを介してリード要求が送信された場合を例として、本実施例のＰＣＩｅスイッチ１２６における応答処理を説明する模式図である。
【００７８】
ＰＣＩｅスイッチ１２６を介したデバイスＸからデバイスＹまでのデータ転送パスが正常である場合、図２０Ａに示すように、デバイスＸから送信されたリード要求はＰＣＩｅスイッチによって転送され、デバイスＹで受信される。リード要求を受信したデバイスＹは、要求に係るデータを読み出して、完了通知とともにＰＣＩｅスイッチに送信し、ＰＣＩｅスイッチによってデバイスＸに転送される。この一連のデータ転送処理により、デバイスＸは自身が送信したリード要求が正常に処理されたことを確認することができる。
【００７９】
図２０Ｂは、図２０Ａの処理において、ＰＣＩｅスイッチになんらかの障害が発生し、ＰＣＩｅスイッチがリード要求の送信先であるデバイスＹにリード要求を転送できない場合に従来実行されている応答処理を例示している。この場合、ＰＣＩｅスイッチは、デバイスＹにリード要求の転送を試行しているにもかかわらず、デバイスＹから完了通知を受信することができないので、ＰＣＩｅスイッチは、一定時間完了通知の受信を待機した後、タイムアウトエラー発生と判定して、その旨のメッセージを含む完了通知をデバイスＸに送信する。したがって、デバイスＸではＰＣＩｅスイッチでのタイムアウトエラー処理後でなければリード要求送信結果を確認することができないため、データ処理効率が低下するおそれがある。
【００８０】
図２０Ｃは、本実施例におけるＰＣＩｅスイッチでの応答処理を例示している。図１９に関して説明したように、本実施例の場合、ＰＣＩｅスイッチ１２６は、自身のルーティング処理部１２６４の機能により、通信ポートに障害が発生していることを検出することができる。したがって、模式的に図示しているように、ＰＣＩｅスイッチは、デバイスＸからのリード要求が、障害が発生しているデータ転送パスを通じて送信先であるデバイスＹに送信されるものであると判定した場合、デバイスＸからのリード要求をデバイスＹに向けて送信することなく、ただちにデバイスＸに送信エラーが発生した旨の情報を含む完了通知を返信することができる。このため、デバイスＸは従来のようにＰＣＩｅスイッチからのタイムアウトエラー情報を待つことなく処理を進めることができ、データ処理効率の低下を防止することができる。
【００８１】
応答処理に用いるデータ構成例
図２１に、図２０Ｃに例示するパス障害発生時に実行する応答処理において、ＰＣＩｅスイッチがリード要求の送信元であるデバイスＸに送信する完了通知データの構成例を示している。この完了通知には、ヘッダ部に通常の完了通知と同様に、完了通知であることを示す情報、送信元ＩＤ、及び送信先ＩＤが含まれている一方、データ部には、デバイスＹへのデータ転送パスに障害が発生して転送ができないことを示す情報、例えばエラーコード、障害が発生した通信ポートＩＤ、後出の物理層エラーカウンタ値等を格納することができる。これにより、ＭＰ１２１のマイクロプログラム等が別途エラー情報を取得する処理を行う必要がなくなる。なお、図２１に示すリード要求のデータ構成例は、従来と同様であり、またトランザクションタイプはリード要求以外のライト要求等であってもよい。
【００８２】
通信ポート障害検出処理
次に、図１９の障害パス代替処理において実行される通信ポート障害検出ステップ（Ｓ１７０１）について、本実施例に即してより詳細に説明する。図２２に、本実施例において、ＰＣＩｅスイッチ１２６のルーティング処理部１２６４が実行するポート障害検出処理フローの一例を示している。
【００８３】
ストレージ装置１０の稼働中、ルーティング処理部１２６４は、各通信ポート１２６−ｎを構成しているＰＨＹ１２６３が正常に動作しているかを継続して監視し（Ｓ２００１、Ｎｏ）、いずれかのＰＨＹ１２６３に障害が発生したことにより当該ＰＨＹ１２６３が構成する通信ポート１２６−ｎを含むデータ転送パスの物理層に障害が発生したと判定した場合（Ｓ２００１、Ｙｅｓ）、ルーティング処理部１２６４に保持している物理層障害検出用カウンタをインクリメントする（Ｓ２００２）。
【００８４】
次に、ルーティング処理部１２６４は、物理層障害判定用カウンタのカウンタ値があらかじめ障害判定用としてルーティング処理部１２６４内に設定されている閾値を越えたか判定し（Ｓ２００３）、越えていないと判定した場合（Ｓ２００３、Ｎｏ）、Ｓ２００１に処理を戻して引き続き各通信ポート１２６−ｎの物理層監視を継続する。
【００８５】
ルーティング処理部１２６４が、前記カウンタ値が閾値を越えていると判定した場合（Ｓ２００３、Ｙｅｓ）、ルーティング処理部１２６４は、その検出したカウンタ値、障害が発生した通信ポート１２６−ｎのＩＤ（例えば図６のポート番号「４」、「５」）を含めた通信ポート１２６−ｎの物理層障害情報をＭＰ１２１に転送する（Ｓ２００４）。ＭＰ１２１は、受信した物理層障害情報に基づいて、自身が保持しているルーティングテーブル１２１６を更新することができる。
【００８６】
ＰＣＩｅスイッチ１２６での障害パス代替処理
次に、障害パス代替処理を、ＭＰ１２１による処理を介在させることなく、ＰＣＩｅスイッチ１２６で自律的に実行するための構成について説明する。図２３Ａ、図２３Ｂは、ＰＣＩｅスイッチ１２６で障害パス代替処理を実行する場合に使用されるルーティングテーブル１２１６の設定例を示している。これらのルーティングテーブル１２１６Ａ、１２１６Ｂは、図７Ａ、図７Ｂ等に例示した本実施例のルーティングテーブル１２１６と比較して、代替ポート番号Ａ４１、Ｂ４１の項目が追加されている点が異なっている。
【００８７】
ＰＣＩｅスイッチ１２６は、正常時はポート番号Ａ４、Ｂ４の項目に記録されている通信ポート１２６−ｎを使用してデバイス間のデータ転送処理を実行する。そして、それらの正常時に使用される通信ポート１２６−ｎに障害が発生したことをルーティング処理部１２６４が検出した場合、障害が発生した通信ポート１２６−ｎに対応付けて記録されている代替ポート番号Ａ４１、Ｂ４１によって特定される他の通信ポート１２６−ｎを使用してデータ転送処理を行う。図２３Ａ、図２３Ｂの例では、図６に例示した構成に即して、ポート番号Ａ４、Ｂ４が「４」、「５」の通信ポート１２６−ｎには、それぞれ代替ポート番号Ａ４１、Ｂ４１として、「５」、「４」が設定されている。
【００８８】
次に、代替ポート番号Ａ４１、Ｂ４１が設定されている図２３Ａ、図２３Ｂのルーティングテーブル１２１６Ａ、１２１６Ｂを用いたＰＣＩｅスイッチ１２６における障害パス代替処理フローについて説明する。図２４に、ＰＣＩｅスイッチ１２６における障害パス代替処理フローの一例を示している。
【００８９】
まず、ＰＣＩｅスイッチ１２６のルーティング処理部１２６４は、ストレージ装置１０の稼働中、スイッチ間パス１２７に含まれる通信ポート（図６の例では通信ポート４、５）に障害が発生しているか監視を継続し（Ｓ２２０１、Ｎｏ）、いずれかの通信ポートに障害が発生したことを検出した場合（Ｓ２２０１、Ｙｅｓ）、自身に保持されているルーティングテーブル１２１６を参照して代替ポート番号Ａ４１、Ｂ４１が記録されているか判定する（Ｓ２２０２）。
【００９０】
記録されていると判定した場合（Ｓ２２０２、Ｙｅｓ）、ルーティング処理部１２６４は、障害発生した通信ポート１２６−ｎについて、以後設定されている代替ポート番号Ａ４１、Ｂ４１を使用してデータ転送処理を実行する（Ｓ２２０３）。代替ポート番号Ａ４１、Ｂ４１が記録されていないと判定した場合（Ｓ２２０２、Ｎｏ）、ルーティング処理部１２６４は、ルーティングテーブル１２１６において、障害発生を検出した通信ポート１２６−ｎに対応するポート番号が記録されているエントリについて、イネーブルフラグＡ５、Ｂ５を０に変更し（Ｓ２２０４）、以後当該通信ポート１２６−ｎを使用したデータ転送処理は行わない。
【００９１】
以上説明した処理によれば、いずれかのスイッチ間パス１２７に障害が発生した場合でも、ＰＣＩｅスイッチ１２６にて代替の通信ポート１２６−ｎに切り替えてデータパケットの転送を継続することができるので、ＭＰ１２１の処理負荷を増大させることなくストレージ装置１０としての信頼性、可用性を向上させることができる。
【００９２】
なお、以上の実施形態では、同一のＤＫＣ１２内に設けられているスイッチ間パス１２７について実行される処理を説明したが、本発明は、異なる２つのＤＫＣ１２あるいは異なる装置筐体に設けられているスイッチ間に設けられる二重系データ転送パスにも適用することができる。
【００９３】
以上詳細に説明した本発明の実施形態によれば、データ転送路の信頼性を高めつつシステムとしての可用性を向上させるストレージ制御装置、及びデータの転送方法を提供することができる。
【００９４】
以上、本実施形態について説明したが、上記実施形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物も含まれる。
【図１】
0005511960.tif 000002
【図２】
0005511960.tif 000003
【図３Ａ】
0005511960.tif 000004
【図３Ｂ】
0005511960.tif 000005
【図４Ａ】
0005511960.tif 000006
【図４Ｂ】
0005511960.tif 000007
【図５】
0005511960.tif 000008
【図６】
0005511960.tif 000009
【図７Ａ】
0005511960.tif 000010
【図７Ｂ】
0005511960.tif 000011
【図８】
0005511960.tif 000012
【図９】
0005511960.tif 000013
【図１０Ａ】
0005511960.tif 000014
【図１０Ｂ】
0005511960.tif 000015
【図１１】
0005511960.tif 000016
【図１２Ａ】
0005511960.tif 000017
【図１２Ｂ】
0005511960.tif 000018
【図１３】
0005511960.tif 000019
【図１４】
0005511960.tif 000020
【図１５Ａ】
0005511960.tif 000021
【図１５Ｂ】
0005511960.tif 000022
【図１６】
0005511960.tif 000023
【図１７】
0005511960.tif 000024
【図１８Ａ】
0005511960.tif 000025
【図１８Ｂ】
0005511960.tif 000026
【図１９】
0005511960.tif 000027
【図２０Ａ】
0005511960.tif 000028
【図２０Ｂ】
0005511960.tif 000029
【図２０Ｃ】
0005511960.tif 000030
【図２１】
0005511960.tif 000031
【図２２】
0005511960.tif 000032
【図２３Ａ】
0005511960.tif 000033
【図２３Ｂ】
0005511960.tif 000034
【図２４】
0005511960.tif 000035