(57)【要約】【課題】計算機システムにおける障害又は障害ポテンシャルに対して適切に対処することができるようにする。【解決手段】所定の処理を実行するロジック２０１を有するＦＰＧＡ２０と、ＦＰＧＡとバスを介して接続される複数のデバイスとを備えるストレージシステム１０において、ＦＰＧＡのロジック２０１を、複数のデバイスに対してアクセスを試み、デバイスとの間のアクセスの状況に基づいて、デバイスとの間のアクセスに異常があるか否かを判定し、デバイスとの間のアクセスに異常があると判定した場合に、デバイスのバスを介しての通信処理を行うためのＩＦ部をリセットするように構成する。【選択図】図１
2020086538.tif 000002
【特許請求の範囲】
【請求項１】
所定の処理を実行するハードウェアロジックを有する処理ユニットと、前記処理ユニットとバスを介して接続される複数のデバイスとを備える計算機システムであって、
前記処理ユニットの前記ハードウェアロジックは、
複数の前記デバイスに対してアクセスを試み、前記デバイスとの間のアクセスの状況に基づいて、前記デバイスとの間のアクセスに異常があるか否かを判定し、
前記デバイスとの間のアクセスに異常があると判定した場合に、前記デバイスの前記バスを介しての通信処理を行うためのデバイス側インタフェース部をリセットする
計算機システム。
【請求項２】
前記処理ユニットは、前記処理ユニットの前記バスを介しての通信処理を行うための処理ユニット側インタフェース部を備え、
前記ハードウェアロジックは、
前記処理ユニットインタフェース部を介して、前記デバイスに対してアクセスを試み、前記デバイスとの間のアクセスが異常停止していることを自身により検出した場合に、前記処理ユニット側インタフェース部をリセットする
請求項１に記載の計算機システム。
【請求項３】
前記ハードウェアロジックは、
前記処理ユニットインタフェース部を介して、前記複数のデバイスのうちの第１デバイスに対してアクセスを試み、前記第１デバイスとの間のアクセスが異常停止した場合に、前記処理ユニット側インタフェース部をリセットし、その後、前記処理ユニットインタフェース部を介して、前記複数のデバイスのうちの前記第１デバイスと異なる第２デバイスに対してアクセスを試みる
請求項２に記載の計算機システム。
【請求項４】
前記ハードウェアロジックは、
前記デバイスとの間のアクセスに異常があると判定した場合に、前記デバイスが前記バスの末端に位置する末端デバイスであるか否かを判定し、前記デバイスが前記末端デバイスであると判定した場合には、前記末端デバイスの前記デバイス側インタフェース部をリセットし、前記デバイスが前記末端デバイスでないと判定した場合には、前記デバイスの末端側のデバイスを対象に、前記デバイス側インタフェース部のリセットを行う
請求項１から請求項３のいずれか一項に記載の計算機システム。
【請求項５】
前記計算機システムは、
前記バスに接続され、処理を実行可能な１以上のプロセッサコアを有し、
前記ハードウェアロジックは、
前記デバイスとの間のアクセスに異常があると判定した場合に、前記異常に関わるデバイスを示す情報を、前記プロセッサコアに通知する
請求項１から請求項４のいずれか一項に記載の計算機システム。
【請求項６】
前記計算機システムは、
１以上のプロセッサコアと、複数のデバイスとを有し、互いに通信可能に接続された２つのコントローラを含み、
前記ハードウェアロジックは、
前記デバイスとの間のアクセスに異常があると判定した場合に、前記異常に関わるデバイスが、前記コントローラ間のデッドロックを発生させる可能性のあるデバイスであるか否かを判定し、前記異常に関わるデバイスが前記デッドロックを発生させる可能性のあるデバイスである場合には、前記デッドロックの発生を示す情報の取得を行い、前記デッドロックの発生を示す情報が取得できた場合には、前記コントローラ間の前記パスによる通信を切断する
請求項１から請求項５のいずれか一項に記載の計算機システム。
【請求項７】
前記コントローラの一方のコントローラの前記プロセッサコアは、
前記ハードウェアロジックにより、前記コントローラ間の前記パスによる通信が切断された場合に、他方のコントローラを閉塞させる
請求項６に記載の計算機システム。
【請求項８】
前記処理ユニットは、複数の前記デバイスのそれぞれについて、前記コントローラ間のデッドロックを発生させる可能性があるか否かを示すデッドロック懸念情報を記憶し、
前記ハードウェアロジックは、
前記デッドロック懸念情報に基づいて、前記異常に関わるデバイスが、前記コントローラ間のデッドロックを発生させる可能性のあるデバイスであるか否かを判定する
請求項６又は請求項７に記載の計算機システム。
【請求項９】
前記デバイスは、前記デバイスをリセットするためのデバイスリセット信号を入力するためのデバイスリセット端子、又は、前記デバイス内の前記デバイス側インタフェース部をリセットするためのインタフェースリセット信号を入力するためのインタフェースリセット端子の少なくとも一方を備え、
前記ハードウェアロジックは、
前記デバイスとの間のアクセスに異常があると判定した場合に、前記デバイスの前記デバイスリセット端子に前記デバイスリセット信号を送信するか、又は前記デバイスの前記インタフェースリセット端子に前記インタフェースリセット信号を送信することにより、前記デバイス側インタフェース部をリセットする
請求項１から請求項８のいずれか一項に記載の計算機システム。
【請求項１０】
所定の処理を実行するハードウェアロジックを有する処理ユニットと、前記処理ユニットとバスを介して接続される複数のデバイスとを備える計算機システムによるデバイス管理方法であって、
前記処理ユニットの前記ハードウェアロジックが、複数の前記デバイスに対してアクセスを試み、前記デバイスとの間のアクセスの状況に基づいて、前記デバイスとの間のアクセスに異常があるか否かを判定し、
前記デバイスとの間のアクセスに異常があると判定した場合に、前記デバイスの前記バスを介しての通信処理を行うためのデバイス側インタフェース部をリセットする
デバイス管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムにおける障害に対する耐性を高める技術に関する。
【背景技術】
【０００２】
例えば、データを記憶する記憶デバイスを有する計算機システムの一例としてのストレージシステムにおいては、記憶デバイスへのデータの入出力を制御するコントローラが備えられている。コントローラには、処理を統括制御するプロセッサ（例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ））が備えられている。
【０００３】
ストレージシステムにおいては、様々な要因により、コントローラに搭載されたＣＰＵ（ＣＰＵコア）がハングアップ（異常停止、以下、単にハングともいう）する場合がある。
【０００４】
例えば、システムに搭載されているＬＳＩ間を接続する伝送路のＩＦが故障した場合には、ＣＰＵがハングすることがある。また、伝送路のＩＦを有するＬＳＩのエラッタ（設計不良）、電源、クロック、内部論理回路の故障などの障害要因を持つデバイスに対してアクセスした場合に、ＣＰＵがハングすることがある。また、例えば、コントローラを冗長化した冗長系ストレージシステムにおいては、各コントローラがハードウェア共有資源を使用する際に生じるデッドロック障害などによっても、ＣＰＵがハングする。
【０００５】
冗長系ストレージシステムの一方の系のコントローラのＣＰＵがハングする障害が発生すると、他系のコントローラに障害が伝播して、冗長系ストレージシステム全体がダウンしてしまったり、コントローラを閉塞しなければならなかったりする事態が発生する虞がある。
【０００６】
例えば、処理装置の停止状態に対する技術として、処理装置の停止状態において、中継部のバッファのバッファフル状態を検知した場合に中継部をリセットする技術が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１６−６２１６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ストレージシステムは、例えば、ミッションクリティカルな装置として使用されることもあり、障害に対する耐性を高めることが要請されており、プロセッサがハングする障害が発生した場合であっても、できるだけ、障害を解消して通常の処理を早期に実行できることが要請されている。また、プロセッサがハングする原因となる障害ポテンシャルを早期に発見して対処することも要請されている。
【０００９】
本発明は、上記事情に鑑みなされたものであり、その目的は、計算機システムにおける障害又は障害ポテンシャルに対して適切に対処することのできる技術を提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、一観点に係る計算機システムは、所定の処理を実行するハードウェアロジックを有する処理ユニットと、処理ユニットとバスを介して接続される複数のデバイスとを備える計算機システムであって、処理ユニットのハードウェアロジックは、複数のデバイスに対してアクセスを試み、デバイスとの間のアクセスの状況に基づいて、デバイスとの間のアクセスに異常があるか否かを判定し、デバイスとの間のアクセスに異常があると判定した場合に、デバイスのバスを介しての通信処理を行うためのデバイス側インタフェース部をリセットする。
【発明の効果】
【００１１】
本発明によれば、計算機システムにおける障害又は障害ポテンシャルに対して適切に対処することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、一実施形態に係る情報処理システムの全体構成図である。
【図２】図２は、一実施形態に係るストレージシステムの全体構成図である。
【図３】図３は、一実施形態に係る初期設定テーブルの構成図である。
【図４】図４は、一実施形態に係るストレージシステムによるバス及びデバイスの診断処理の概要を説明する図である。
【図５】図５は、一実施形態に係る障害検出対処処理におけるタイムアウトに基づく異常に関わる処理部分のフローチャートである。
【図６】図６は、一実施形態に係る障害検出対処処理における診断により特定された異常に関わる処理部分のフローチャートである。
【図７】図７は、一実施形態に係るストレージシステムにおける正常時の処理動作のシーケンス図である。
【図８】図８は、一実施形態に係るストレージシステムにおけるデバイスの内部故障による異常発生時の処理動作のシーケンス図である。
【図９】図９は、一実施形態に係るストレージシステムにおけるデッドロックによる異常発生時の処理動作のシーケンス図である。
【発明を実施するための形態】
【００１３】
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１４】
以下の説明では、「ＡＡＡテーブル」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「ＡＡＡテーブル」を「ＡＡＡ情報」と呼ぶことができる。
【００１５】
図１は、一実施形態に係る情報処理システムの全体構成図である。
【００１６】
情報処理システム１は、ホストサーバ２と、ホストサーバ２にネットワークを介して接続されるストレージシステム１０とを備えている。ネットワークは、例えば、有線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）や無線ＬＡＮなどの通信路である。
【００１７】
ストレージシステム１０は、計算機システムの一例であり、複数のホストＩＦ（インタフェース）１１（１１Ａ，１１Ｂ）と、複数のコントローラ１２（１２Ａ，１２Ｂ）と、複数のＤｒｉｖｅ  ＩＦ（インタフェース）２２と、複数のアクセラレータ２１と、ドライブ（Ｄｒｉｖｅ）２３とを備える。
【００１８】
ホストＩＦ１１は、Ｈｏｓｔ通信用プロトコルチップを有し、ホストサーバ２と、コントローラ１２との間の通信を仲介する。アクセラレータ２１は、一方のコントローラ１２に接続され、コントローラ１２における特定の処理を実行するためのデバイスである。ドライブ２３は、例えば、１以上のＨＤＤ（ハードディスクドライブ）やＳＳＤ（ソリッドステートドライブ）などであり、ホストサーバ２が利用するユーザデータや、コントローラ１２で実行されるプログラムや、コントローラ１２で利用されるデータを記憶する。本実施形態では、コントローラ１２Ａ、１２Ｂは、それぞれドライブ２３を利用することができる。Ｄｒｉｖｅ  ＩＦ２２は、Ｄｒｉｖｅ通信用プロトコルチップを有し、ドライブ２３とコントローラ１２との間の通信を仲介する。
【００１９】
コントローラ１２は、複数のＣＰＵ１３と、複数の主記憶装置１４と、Ｈｏｓｔ通信用プロトコルチップ１５と、Ｄｒｉｖｅ通信用プロトコルチップ１６と、複数のコントローラ間中継器１７と、スイッチ（ＳＷ）１８と、デバイス（Ｄｅｖｉｃｅ）１９と、処理ユニットの一例としてのＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）２０とを含む。
【００２０】
ＣＰＵ１３は、主記憶装置１４に格納されているプログラムや、内部に格納されているマイクロプログラム１３ａを実行して各種処理を実行する。主記憶装置１４は、例えば、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であり、ＣＰＵ１３で実行されるプログラムや、ＣＰＵ１３で使用されるデータを格納する、主記憶装置１４は、１つのＣＰＵ１３と接続されている。
【００２１】
Ｈｏｓｔ通信用プロトコルチップ１５は、ホストサーバ２と、コントローラ１２との間の通信を仲介する。Ｄｒｉｖｅ通信用プロトコルチップ１６は、ドライブ２３とコントローラ１２との間の通信を仲介する。
【００２２】
コントローラ間中継器１７は、他系のコントローラ１２のコントローラ間中継器１７とコントローラ間通信パス２４を介して接続されており、コントローラ１２Ａ側のＣＰＵ１３と、コントローラ１２Ｂ側のＣＰＵ１３との間の通信を仲介する。なお、コントローラ間中継器１７の代わりに、スイッチを設けるようにしてもよい。
【００２３】
ＳＷ１８は、ＣＰＵ１３と各種デバイスとの間を通信可能に接続する。本実施形態では、ＳＷ１８には、ＣＰＵ１３と、デバイス１９と、アクセラレータ２１とが接続されている。デバイス１９は、所定の処理を実行するデバイスである。
【００２４】
ＦＰＧＡ２０は、バス（伝送路）を介して接続されている監視対象のデバイスとの間のアクセス処理を行うことにより、デバイスの異常や、デバイスとの間のバスや中継器の異常を検出し、検出した異常に基づいて、対処処理を実行する。本実施形態では、ＦＰＧＡ２０は、ＣＰＵ１３に接続されており、ＣＰＵ１３を介して、監視対象のデバイスに対してアクセス可能となっている。ＦＰＧＡ２０は、ＣＰＵコア１３１（図２）から等価的な存在として振舞うことができる、すなわち、ＣＰＵコア１３１の制御と独立して、能動的に監視対象のデバイスに対してアクセス可能となっている。監視対象のデバイスは、例えば、コントローラ間中継器１７、ＳＷ１８、デバイス１９、アクセラレータ２１、Ｄｒｉｖｅ  ＩＦ２２等である。
【００２５】
次に、ストレージシステム１０の構成をより詳細に説明する。
【００２６】
図２は、一実施形態に係るストレージシステムの全体構成図である。なお、図２においては、ストレージシステムの一部の構成について省略している。
【００２７】
コントローラ１２は、ＣＰＵ１３と、主記憶装置１４と、コントローラ間中継器１７と、ＳＷ１８と、デバイス１９と、ＦＰＧＡ２０と、Ｄｒｉｖｅ  ＩＦ２２とを備える。
【００２８】
ＣＰＵ１３は、１以上のＣＰＵコア（ＣＰＵ  Ｃｏｒｅ：プロセッサコアの一例）１３１と、ＣＰＵ  ＩＦ部１３２と、主記憶ＩＦ部１３３と、ＩＦ部アービタ１３４と、複数のＩＦ部１３５とを含む。ＣＰＵコア１３１は、主記憶装置１４のプログラムや、マイクロプログラム１３ａに従って処理を実行する。ＣＰＵ  ＩＦ部１３２は、同一コントローラ１２内の他のＣＰＵ１３との間でバスを介した通信を行う。主記憶ＩＦ部１３３は、主記憶装置１４との間でバスを介した通信を行う。ＩＦ部アービタ１３４は、接続された複数の部位間の通信を制御する。ＩＦ部１３５は、他のデバイスとの間の通信を行う。なお、本実施形態では、ＣＰＵ１３の内部に、スイッチ機能部（複数のＩＦ部１３５、ＩＦ部アービタ１３４等）を備えるようにしているが、これらスイッチ機能部は、ＣＰＵの外に配置するようにしてもよい。
【００２９】
主記憶装置１４は、主記憶ＩＦ部１４１を備える。主記憶ＩＦ部１４１は、ＣＰＵ１３の主記憶ＩＦ部１３３との間でバスを介した通信を行う。主記憶ＩＦ部１４１は、デバイス側インタフェース部の一例である。
【００３０】
コントローラ間中継器１７は、ＩＦ部制御／状態レジスタ１７１と、ＲＳＴ／ＰＷＲ制御端子１７２と、ＩＦ部１７３とを備える。ＩＦ部制御／状態レジスタ１７１は、ＩＦ部１７３の状態を示す情報を記憶する。ＲＳＴ／ＰＷＲ制御端子１７２は、コントローラ間中継器１７の電源ＯＦＦを指示するデバイスＯＦＦ信号や、コントローラ間中継器１７のリセットを指示するデバイスリセット信号を受け付ける。本実施形態では、ＲＳＴ／ＰＷＲ制御端子１７２は、ＦＰＧＡ２０と信号線を介して接続され、ＦＰＧＡ２０からの信号が入力可能となっている。コントローラ間中継器１７は、ＲＳＴ／ＰＷＲ制御端子１７２により、デバイスＯＦＦ信号を受け付けた場合には、自身の電源をＯＦＦにし、デバイスリセット信号を受け付けた場合には、自身をリセットする。
【００３１】
ＩＦ部１７３は、他のデバイスのＩＦ部との間でバスを介した通信を行う。ＩＦ部１７３は、ＩＦ部１７３のリセットを指示するＩＦリセット信号を受け付けるＩＦ部制御端子１７４を有する。本実施形態では、ＩＦ部制御端子１７４は、ＦＰＧＡ２０と信号線を介して接続され、ＦＰＧＡ２０からの信号が入力可能となっている。ＩＦ部１７３は、ＩＦ部制御端子１７４を介して、ＩＦリセット信号を受け付けた場合には、自身をリセットする。なお、ＩＦ部１７３は、デバイス側インタフェース部の一例である。
【００３２】
ＳＷ１８は、ＩＦ部制御／状態レジスタ１８１と、ＲＳＴ／ＰＷＲ制御端子１８２と、複数のＩＦ部１８３とを備える。ＲＳＴ／ＰＷＲ制御端子１８２は、ＳＷ１８の電源ＯＦＦを指示するデバイスＯＦＦ信号や、ＳＷ１８のリセットを指示するデバイスリセット信号を受け付ける。本実施形態では、ＲＳＴ／ＰＷＲ制御端子１８２は、ＦＰＧＡ２０と信号線を介して接続され、ＦＰＧＡ２０からの信号が入力可能となっている。ＳＷ１８は、ＲＳＴ／ＰＷＲ制御端子１８２により、デバイスＯＦＦ信号を受け付けた場合には、自身の電源をＯＦＦにし、デバイスリセット信号を受け付けた場合には、自身をリセットする。
【００３３】
ＩＦ部１８３は、他のデバイスのＩＦ部との間でバスを介した通信を行う。ＩＦ部１８３は、ＩＦ部１８３のリセットを指示するＩＦリセット信号を受け付けるＩＦ部制御端子１８４を有する。本実施形態では、ＩＦ部制御端子１８４は、ＦＰＧＡ２０と信号線を介して接続され、ＦＰＧＡ２０からの信号が入力可能となっている。ＩＦ部１８３は、ＩＦ部制御端子１８４を介して、ＩＦリセット信号を受け付けた場合には、自身をリセットする。なお、ＩＦ部１８３は、デバイス側インタフェース部の一例である。
【００３４】
Ｄｒｉｖｅ  ＩＦ２２は、ＩＦ部制御／状態レジスタ２２１と、ＲＳＴ／ＰＷＲ制御端子２２２と、ＩＦ部２２３とを備える。ＩＦ部制御／状態レジスタ２２１は、ＩＦ部２２３の状態を示す情報を記憶する。ＲＳＴ／ＰＷＲ制御端子２２２は、Ｄｒｉｖｅ  ＩＦ２２の電源ＯＦＦを指示するデバイスＯＦＦ信号や、Ｄｒｉｖｅ  ＩＦ２２のリセットを指示するデバイスリセット信号を受け付ける。本実施形態では、ＲＳＴ／ＰＷＲ制御端子２２２は、ＦＰＧＡ２０と信号線を介して接続され、ＦＰＧＡ２０からの信号が入力可能となっている。Ｄｒｉｖｅ  ＩＦ２２は、ＲＳＴ／ＰＷＲ制御端子２２２により、デバイスＯＦＦ信号を受け付けた場合には、自身の電源をＯＦＦにし、デバイスリセット信号を受け付けた場合には、自身をリセットする。
【００３５】
ＩＦ部２２３は、他のデバイスのＩＦ部との間でバスを介した通信を行う。ＩＦ部２２３は、ＩＦ部２２３のリセットを指示するＩＦリセット信号を受け付けるＩＦ部制御端子２２４を有する。本実施形態では、ＩＦ部制御端子２２４は、ＦＰＧＡ２０と信号線を介して接続され、ＦＰＧＡ２０からの信号が入力可能となっている。ＩＦ部２２３は、ＩＦ部制御端子２２４を介して、ＩＦリセット信号を受け付けた場合には、自身をリセットする。なお、ＩＦ部１７３は、デバイス側インタフェース部の一例である。
【００３６】
ＦＰＧＡ２０は、ロジック２０１と、ＩＦ部２０２と、ＲＳＴ／ＰＷＲ制御端子２０３と、ＩＦ部制御端子２０４と、初期設定テーブル２０５と、動作ログ２０６とを備える。
【００３７】
ロジック２０１は、各種処理を実行するハードウェアロジックである。ここで、ロジック２０１のハードウェアロジックは、組合回路や順序回路を含んでおり、非ソフトウェア且つ非ノイマン型の動作により処理を実行することができる。本実施形態では、ロジック２０１は、デバイスやデバイスとの間のバスにおける障害検出対処処理を実行する。なお、ロジック２０１による処理の詳細は、後述する。
【００３８】
ＩＦ部２０２は、ＣＰＵ１３のＩＦ部１３５とバスを介して接続されており、ＣＰＵ１３を介して、他のデバイスとの間で通信を行う。ＩＦ部２０２は、処理ユニット側インタフェース部の一例である。
【００３９】
ＲＳＴ／ＰＷＲ制御端子２０３は、デバイスのＲＳＴ／ＰＷＲ制御端子と信号線を介して接続されている。ＦＰＧＡ２０は、ＲＳＴ／ＰＷＲ制御端子２０３を介して、監視対象のデバイスに、このデバイスの電源ＯＦＦを指示するデバイスＯＦＦ信号や、このデバイスのリセットを指示するデバイスリセット信号を送信する。ＩＦ部制御端子２０４は、デバイスのＩＦ部制御端子と信号線を介して接続されている。ＦＰＧＡ２０は、ＩＦ部制御端子２０４を介して、デバイスのＩＦ部に、このＩＦ部のリセットを指示するＩＦリセット信号を送信する。
【００４０】
初期設定テーブル２０５は、ストレージシステム１０のデバイスについての各種情報を記憶する。初期設定テーブル２０５は、例えば、ストレージシステム１０の起動時にＣＰＵ１３により、設定される。動作ログ２０６は、障害検知対処処理において、障害が検出されたデバイスを示す情報を含む。
【００４１】
アクセラレータ２１は、ＲＳＴ／ＰＷＲ制御端子２１１と、ＩＦ部２１２とを備える。ＲＳＴ／ＰＷＲ制御端子２１１は、アクセラレータ２１の電源ＯＦＦを指示するデバイスＯＦＦ信号や、アクセラレータ２１のリセットを指示するデバイスリセット信号を受け付ける。本実施形態では、ＲＳＴ／ＰＷＲ制御端子２１１は、ＦＰＧＡ２０と信号線を介して接続され、ＦＰＧＡ２０からの信号が入力可能となっている。アクセラレータ２１は、ＲＳＴ／ＰＷＲ制御端子２１１により、デバイスＯＦＦ信号を受け付けた場合には、自身の電源をＯＦＦにし、デバイスリセット信号を受け付けた場合には、自身をリセットする。
【００４２】
ＩＦ部２１２は、他のデバイスのＩＦ部との間でバスを介した通信を行う。ＩＦ部２１２は、ＩＦ部２１２のリセットを指示するＩＦリセット信号を受け付けるＩＦ部制御端子２１３を有する。本実施形態では、ＩＦ部制御端子２１３は、ＦＰＧＡ２０と信号線を介して接続され、ＦＰＧＡ２０からの信号が入力可能となっている。ＩＦ部２１２は、ＩＦ部制御端子２１１を介して、ＩＦリセット信号を受け付けた場合には、自身をリセットする。なお、ＩＦ部２１２は、デバイス側インタフェース部の一例である。
【００４３】
次に、初期設定テーブル２０５について説明する。
【００４４】
図３は、一実施形態に係る初期設定テーブルの構成図である。
【００４５】
初期設定テーブル２０５は、ストレージシステム１０のデバイス毎のエントリを有する。初期設定テーブル２０５のエントリは、番号（＃）２０５ａと、デバイス名２０５ｂと、アクセスアドレス２０５ｃと、アクセス単位２０５ｄと、処理２０５ｅと、アクセス周期２０５ｆと、デッドロック懸念２０５ｇと、トポロジ深度２０５ｆと、上位デバイス２０５ｉと、監視モード２０５ｊと、リトライ回数２０５ｋとのフィールドを含む。
【００４６】
＃２０５ａには、エントリの番号（デバイスの番号）が格納される。デバイス名２０５ｂには、エントリに対応するデバイスの名称（デバイス名）が格納される。アクセスアドレス２０５ｃには、エントリに対応するデバイスにアクセスするためのアドレスが格納される。アクセス単位２０５ｄには、エントリに対応するデバイスにアクセスする際のデータの大きさ（アクセス単位）が格納される。処理２０５ｅには、エントリに対応するデバイスに対して診断時に行うアクセス処理が格納される。アクセス処理としては、リード（Ｒｅａｄ）、ライト（Ｗｒｉｔｅ）、リード及びライト（Ｒｅａｄ／Ｗｒｉｔｅ）のいずれかである。アクセス処理として、リードを行うと、デバイス内でのリード処理が行われるので、このアクセスの結果、デバイスの内部処理が正常であるか否かを診断できる。アクセス周期２０５ｆには、エントリに対応するデバイスに対するアクセスを行う周期が格納される。デッドロック懸念２０５ｇには、エントリに対応するデバイスが、複数のコントローラ間のデッドロックを発生させる可能性があるか、すなわち、懸念があるか否かの情報（デッドロック懸念情報）が格納される。トポロジ深度２０５ｆには、エントリに対応するデバイスのトポロジの深度が格納される。トポロジの深度は、例えば、ＣＰＵコア１３１を基準とした深度でもよい。上位デバイス２０５ｉには、エントリに対応するデバイスの上位（基準側）となるデバイスの番号が格納される。監視モード２０５ｊには、エントリに対応するデバイスを監視対象とするか否かの情報が格納される。監視モードとしては、監視対象とすることを示すＯＮと、監視対象としないことを示すＯＦＦとがある。リトライ回数２０５ｋには、エントリに対応するデバイスに対する診断時のアクセス処理（診断ルーチン）のリトライの回数が格納される。
【００４７】
次に、ストレージシステム１０によるバス及びデバイスの診断処理の概要について説明する。
【００４８】
図４は、一実施形態に係るストレージシステムによるバス及びデバイスの診断処理の概要を説明する図である。
【００４９】
このバス及びデバイスの診断処理は、ストレージシステム１０のＦＰＧＡ２０が起点となって処理が行われる。
【００５０】
ＦＰＧＡ２０は、診断の対象となるデバイス（ここでは、Ｄｒｉｖｅ  ＩＦ２２とする）に対して、その間のバス（伝送路、中継するスイッチ等）及びＩＦ部を介して、アクセス要求（例えば、リード要求）を送信する（図中（１））。
【００５１】
この結果、Ｄｒｉｖｅ  ＩＦ２２のＩＦ部２２３が正常にリード要求を受信した場合には、Ｄｒｉｖｅ  ＩＦ２２がＩＦ部制御／状態レジスタ２２１のリード要求が示すアドレスの値を読み出す（図中（２））。次いで、Ｄｒｉｖｅ  ＩＦ２２は、読み出した値を、ＩＦ部２２３を介して、ＦＰＧＡ２０に返す（図中（３））。
【００５２】
この一連の動作によると、ＦＰＧＡ２０からＣＰＵ１３への伝送路と、ＣＰＵ１３内の内部回路（ＩＦ部アービタ１３４、ＩＦ部１３５等）と、ＣＰＵ１３からＤｒｉｖｅ  ＩＦ２２への伝送路と、Ｄｒｉｖｅ  ＩＦ２２の内部回路とのそれらについて、一気通貫して動作診断を行うことができる。
【００５３】
ＦＰＧＡ２０は、一連の動作における異常の発生（例えば、デバイスから応答結果が正常でない場合、ＦＰＧＡ２０のハング、アクセス要求に対する応答がない場合等）を検出すると、ＦＰＧＡ２０は、バックグラウンド（ＣＰＵコア１３１の介在なし）で、Ｄｒｉｖｅ  ＩＦ２２のＩＦ部２２３のリセットを実行する。ＦＰＧＡ２０は、自動復帰して、診断処理を継続する。なお、ＦＰＧＡ２０の診断処理は、ロジック２０１により実行しているので、ＣＰＵコア１３１等のソフトウェアの処理を逐次実行する処理と異なって、ハングした場合であっても、ＦＰＧＡ２０は、自身により自動復帰することができる。
【００５４】
次に、ストレージシステム１０における障害検出対処処理の動作について説明する。ストレージシステム１０における障害検出対処処理は、タイムアウトに基づく異常に関わる処理部分（図５参照）と、診断により特定された異常に関わる処理部分（図６参照）とによって構成される。ここで、タイムアウトに基づく異常とは、アクセスを行ったが、その応答がタイムアウトしたことにより異常であると判断された異常であり、診断により特定された異常とは、アクセスにより応答があったが、応答内容から異常であると判断された異常である。
【００５５】
図５は、一実施形態に係る障害検出対処処理におけるタイムアウトに基づく異常に関わる処理部分のフローチャートである。
【００５６】
ストレージシステム１０が電源を投入されると、コントローラ１２のＣＰＵ１３のＣＰＵコア１３１は、ＦＰＧＡ２０の初期設定を行う（Ｓ１１）。具体的には、ＣＰＵコア１３１は、初期設定テーブル２０５をＦＰＧＡ２０に設定する処理等を実行する。なお、初期設定テーブル２０５は、図示しない外部記憶装置等に格納されている初期設定テーブル２０５の設定に必要な情報に基づいて設定するようにしてもよい。この初期設定テーブル２０５に必要な情報は、ストレージシステム１０のユーザにより予め設定されている。
【００５７】
ＦＰＧＡ２０（厳密には、ロジック２０１）は、初期設定が行われると、診断対象の各デバイスとの間のアクセスの状態について診断処理を行う監視動作を開始する（Ｓ１２）。
【００５８】
ＦＰＧＡ２０は、診断対象の各デバイスのそれぞれに対して、ステップＳ１３以降の処理を実行する。ここで、診断対象としては、全てのデバイスと、そのデバイスとの間のバスとしてもよく、いずれか一部のデバイスとその間のバスとしてもよい。
【００５９】
まず、ＦＰＧＡ２０は、デバイスとの間のアクセスの状態の診断、すなわち、診断対象のデバイス（対象デバイス）と、対象デバイスとの間のバスの状態を診断する（Ｓ１３）。
【００６０】
この結果、ＦＰＧＡ２０は、デバイスとの間でのアクセスの診断がタイムアウトしたか否か、すなわち、デバイスとの間のバス又は前記デバイスの内部処理に起因するタイムアウトの異常が発生したか否かを判定する（Ｓ１４）。この結果、デバイス間でのアクセスでタイムアウトしていない場合（Ｓ１４：Ｎ）には、ＦＰＧＡ２０は、処理をステップＳ１３に進める一方、デバイス間でのアクセスでタイムアウトした場合（Ｓ１４：Ｙ）には、ＦＰＧＡ２０は、タイムアウトしたデバイス間の部位（デバイス自体又はバス）が、コントローラ（ＣＴＬ）間デッドロックを発生させる可能性があるか否かを判定する（Ｓ１５）。
【００６１】
この結果、コントローラ間デッドロックを発生させる可能性がある場合（Ｓ１５：Ｙ）には、ＦＰＧＡ２０は、コントローラ間デッドロックの障害を示す情報の取得を試み、コントローラ間デッドロック障害を示す情報を取得できたか否かを判定する（Ｓ１６）。ここで、コントローラ間デッドロック障害を示す情報としては、例えば、ＦＰＧＡ２０は、自身が属するコントローラ１２とは別のコントローラ１２（他系コントローラ）の主記憶装置１４に対して実際にアクセスした際における返答が得られないといった情報でよい。
【００６２】
この結果、コントローラ間デッドロック障害を示す情報を取得できた場合（Ｓ１６：Ｙ）には、ＦＰＧＡ２０は、コントローラ間の通信を行うコントローラ間中継器１７のＩＦ部１７３をリセットさせる信号を出力することにより、コントローラ間を接続するパスを切断する（Ｓ１７）。
【００６３】
各コントローラ１２のＣＰＵコア１３１は、コントローラ間を接続するパスが切断されたことを認識すると、それぞれのコントローラ１２内の全体診断を開始し、優先して閉塞すべきコントローラ１２を決定し（Ｓ１９）、いずれかのＣＰＵコア１３１は、決定したコントローラ１２を閉塞する（Ｓ２０）。
【００６４】
一方、コントローラ間デッドロックを発生させる可能性がない場合（Ｓ１５：Ｎ）、又はコントローラ間デッドロック障害を示す情報を取得できなかった場合（Ｓ１６：Ｎ）には、ＦＰＧＡ２０は、タイムアウトしたバス又はデバイスが、トポロジの末端である、すなわち、末端デバイスであるか否かを判定する（Ｓ２１）。ここで、デバイスがトポロジの末端であることは、初期設定テーブル２０５に、そのデバイスに対応するデバイス番号が上位デバイス２０５ｉに格納されているエントリがないことにより特定することができる。
【００６５】
この結果、タイムアウトしたバス又はデバイスが、トポロジの末端である場合（Ｓ２１：Ｙ）には、ＦＰＧＡ２０は、このデバイスのＣＰＵ１３とのバスに接続されているＩＦ部をリセットすることにより、このデバイスとＣＰＵ１３との伝送路を切断する（Ｓ２２）。この後、ＣＰＵコア１３１は、タイムアウトしたデバイスを閉塞する（Ｓ２３）。
【００６６】
一方、タイムアウトしたバス又はデバイスが、トポロジの末端でない場合（Ｓ２１：Ｎ）には、ＦＰＧＡ２０は、そのデバイスよりも末端側の末端のデバイスから所定の順番でＩＦ部をリセットさせる信号を発行し（Ｓ２４）、処理をステップＳ１３に進める。ＩＦ部をリセットさせる信号を発行する所定の順番とは、トポロジ深度が深いデバイスからでもよく、初期設定テーブル２０５の登録順でもよく、何らかの条件で決まった順番でもよい。
【００６７】
図６は、一実施形態に係る障害検出対処処理における診断により特定された異常に関わる処理部分のフローチャートである。なお、図５と共通部分については、同一の符号を付すこととする。
【００６８】
ステップＳ１３の処理の結果、ＦＰＧＡ２０は、デバイスとの間のアクセスに対する診断の結果がＮＧ（異常）であるか否かを判定する（Ｓ３１）。この結果、診断の結果がＮＧでない場合（Ｓ３１：Ｎ）には、ＦＰＧＡ２０は、処理をステップＳ１３に進める一方、デバイス間でのアクセスに対する診断の結果がＮＧである場合（Ｓ３１：Ｙ）には、ＦＰＧＡ２０は、診断ＮＧとなったデバイスがトポロジの末端であるか否かを判定する（Ｓ３２）。
【００６９】
この結果、診断ＮＧとなったデバイスがトポロジの末端である場合（Ｓ３２：Ｙ）には、ＦＰＧＡ２０は、このデバイスのＣＰＵ１３とのバスに接続されているＩＦ部をリセットすることにより、このデバイスとＣＰＵ１３との伝送路を切断する（Ｓ３３）。これにより、ＣＰＵコア１３１のハングを解消することができる。この後、ＣＰＵコア１３１は、診断ＮＧとなったデバイスを閉塞する（Ｓ３４）。
【００７０】
一方、診断ＮＧのデバイスが、トポロジの末端でない場合（Ｓ３２：Ｎ）には、ＦＰＧＡ２０は、そのデバイスよりも末端側の末端のデバイスから所定の順番でＩＦ部をリセットさせる信号を発行し（Ｓ３５）、処理をステップＳ１３に進める。
【００７１】
次に、ストレージシステム１０における正常時の処理動作について説明する。
【００７２】
図７は、一実施形態に係るストレージシステムにおける正常時の処理動作のシーケンス図である。
【００７３】
まず、マイクロプログラム１３ａを実行するＣＰＵ１３のＣＰＵコア１３１は、ＦＰＧＡ２０を初期化する処理を実行する（Ｓ４１）。ＦＰＧＡ２０は、ＣＰＵコア１３１による初期設定が完了すると（Ｓ４２）、複数のデバイスのうちの診断対象の１つデバイス（以下、対象デバイスという）に対して診断ルーチンＲ１を実行する。
【００７４】
診断ルーチンＲ１では、ＦＰＧＡ２０は、対象デバイスに対して、対象デバイスに対して設定されているアクセスの種類（初期設定テーブル２０５の処理２０５ｅの種類）によるアクセス（リード又はライトの少なくとも一方）を実行する（Ｓ４３）。
【００７５】
この結果、対象デバイスでは、ＦＰＧＡ２０からのアクセス要求を検出し（Ｓ４４）、アクセス要求を受信し（Ｓ４５）、アクセス要求に対応するデータ処理を実行し（Ｓ４６）、アクセス要求に対応する応答、すなわち、ライト要求であれば、Ａｃｋ（肯定応答）を送信し、リード要求であればリード対象のデータを送信する（Ｓ４７）。
【００７６】
ＦＰＧＡ２０は、対象デバイスから送信されたＡｃｋ又はデータを取得し（Ｓ４８）、返却されたデータとその期待値とが一致するか否かをチェックし（Ｓ４９）、対象デバイスのＩＦ部の処理にエラーがないかをチェックする（Ｓ５０）。
【００７７】
なお、ステップＳ４９、Ｓ５０の処理で、異常が検出されなければ、ＦＰＧＡ２０は、次の対象デバイスに対して診断ルーチンＲ１を実行する。
【００７８】
次に、ストレージシステム１０におけるデバイスの内部故障による異常発生時の処理動作について説明する。
【００７９】
図８は、一実施形態に係るストレージシステムにおけるデバイスの内部故障による異常発生時の処理動作のシーケンス図である。
【００８０】
まず、マイクロプログラム１３ａを実行するＣＰＵ１３のＣＰＵコア１３１は、ＦＰＧＡ２０を初期化する処理を実行する（Ｓ５１）。ＦＰＧＡ２０は、ＣＰＵコア１３１によって初期設定が行われて完了する（Ｓ５２）。
【００８１】
ここで、診断対象のデバイス（以下、対象デバイスという：第１デバイスの一例）において、ＩＦ部の故障が発生したとする（Ｓ５３）。
【００８２】
マイクロプログラム１３ａを実行するＣＰＵ１３のＣＰＵコア１３１は、対象デバイスへのアクセス処理を実行すると（Ｓ５４）、ＣＰＵ１３から対象デバイスへのアクセスが実施されることとなる（Ｓ５５）。しかしながら、この際には、対象デバイスのＩＦ部に故障が発生しているので、対象デバイスでは、アクセスに基づくデータ処理が不可能な状態となっている（Ｓ５６）。
【００８３】
この結果、ＣＰＵ１３（ＣＰＵコア１３１）では、対象デバイスの無応答によってハングが発生し（Ｓ５７）、マイクロプログラム１３ａの不正停止が発生することとなる（Ｓ５８）。
【００８４】
ＣＰＵコア１３１による初期設定が完了すると（Ｓ５２）、ＦＰＧＡ２０は、対象デバイスに対して診断ルーチンＲ１を実行する。
【００８５】
診断ルーチンＲ１では、ＦＰＧＡ２０は、対象デバイスに対して、対象デバイスに対して設定されているアクセスの種類によるアクセスを実行する（Ｓ５９）。対象デバイスのＩＦ部に故障が発生しているので、対象デバイスでは、アクセスに基づくデータ処理が不可能である（Ｓ６０）。
【００８６】
これにより、ＦＰＧＡ２０では、ハングが発生し（Ｓ６１）、対象デバイスが一定時間無応答であることを検出し（Ｓ６２）、ＩＦ部２０２をリセットする（Ｓ６３）。このように、ＩＦ部２０２がリセットされると、ＦＰＧＡ２０は、各デバイスとの間の通信が可能となる。ここで、Ｓ６２及びＳ６３の処理は、ロジック２０１で実行されているので、ＦＰＧＡ２０でハングが発生しても支障なく処理が実行されることとなる。
【００８７】
次いで、ＦＰＧＡ２０は、対象デバイスに対するにアクセスが成功しない場合には、対象デバイスに対応付けられているリトライ回数（初期設定テーブル２０５の対応するエントリのリトライ回数２０５ｋの値）だけ、診断ルーチンＲ１を繰り返し実行する。
【００８８】
診断ルーチンＲ１を対象デバイスに対応付けられているリトライ回数だけ繰り返しても、アクセスに成功しない場合には、ＦＰＧＡ２０は、対象デバイスへのアクセスが不可であるとの異常を認識し（Ｓ６４）、対象デバイスのＩＦ部を初期化するための処理を実施する（Ｓ６５）。具体的には、ＦＰＧＡ２０は、対象デバイスのＲＳＴ／ＰＷＲ制御端子に対象デバイスの電源ＯＦＦを指示するデバイスＯＦＦ信号又は、対象デバイスのリセットを指示するデバイスリセット信号を送信するか、又は、対象デバイスのＩＦ部制御端子に対象デバイスのＩＦ部に、このＩＦ部のリセットを指示するＩＦリセット信号を送信する。
【００８９】
この結果、対象デバイスにおいては、ＩＦ部が初期化される（Ｓ６６）。次いで、対象デバイスのＩＦ部が初期化されるので、対象デバイスと接続されている、対象デバイスとＣＰＵ１３との間にあるデバイスにおいても、ＩＦ部が初期化される（Ｓ６７）。なお、対象デバイスと接続されているデバイスのＩＦ部が初期化される動作は、バス上のプロトコルに従った処理動作で実現される。
【００９０】
この結果、ＣＰＵ１３においてハングが解消されることとなり（Ｓ６８）、ＣＰＵ１３のＣＰＵコア１３１は、マイクロプログラム１３ａの実行を再開することができるようになる（Ｓ６９）。次いで、ＣＰＵコア１３は、障害部位となった対象デバイスを検出する（Ｓ７０）。障害部位となった対象デバイスを検出する処理としては、例えば、ＣＰＵコア１３がＦＰＧＡ２０に動作ログ２０６を要求して取得し、この動作ログ２０６から対象デバイスを検出するようにしてもよい。なお、ＦＰＧＡ２０は、ＣＰＵコア１３１から動作ログ２０６の要求を受信した場合には、動作ログ２０６をＣＰＵコア１３１に送信することとなる（Ｓ７１）。なお、この例では、ＦＰＧＡ２０は、ＣＰＵコア１３１からの要求に応じて動作ログ２０６を送信するようにしているが、ＣＰＵコア１３１からの要求が無くても、ＣＰＵコア１３１に送信するようにしてもよい。
【００９１】
次いで、ＣＰＵコア１３１は、検出した対象デバイスに対して閉塞処理を実行する（Ｓ７２）。この結果、対象デバイスは、閉塞される（Ｓ７３）。これにより、ＣＰＵコア１３１は、対象デバイスを用いない処理については、継続して実行することができるようになる。この後、ＦＰＧＡ２０は、監視対象のデバイスのうちの他のデバイス（第２デバイスの一例）に対する診断ルーチンＲ１を順次行う。
【００９２】
次に、ストレージシステム１０におけるコントローラ間デッドロックによる異常発生時の処理動作について説明する。
【００９３】
図９は、一実施形態に係るストレージシステムにおけるデッドロックによる異常発生時の処理動作のシーケンス図である。
【００９４】
まず、マイクロプログラム１３ａを実行するＣＰＵ１３のＣＰＵコア１３１は、ＦＰＧＡ２０を初期化する処理を実行する（Ｓ８１）。ＦＰＧＡ２０は、ＣＰＵコア１３１によって初期設定が行われて完了する（Ｓ８２）。
【００９５】
ここで、コントローラ１２Ａとコントローラ１２Ｂとの間で、コントローラ間デッドロックが発生したものとする（Ｓ８３）。この結果、コントローラ間デッドロックが発生した、コントローラ１２Ａと、コントローラ１２Ｂとでは、コントローラ間デッドロックによって、ＣＰＵハングが発生する（Ｓ８４）。
【００９６】
ＣＰＵコア１３１による初期設定が完了すると（Ｓ８２）、ＦＰＧＡ２０は、対象デバイスに対して診断ルーチンＲ１を実行する。
【００９７】
診断ルーチンＲ１では、ＦＰＧＡ２０は、対象デバイスに対して、対象デバイスに対して設定されているアクセスの種類によるアクセスを実行する（Ｓ８３）。
【００９８】
ここで、対象デバイスは、コントローラ間デッドロックを発生させる可能性がある対象デバイスであり、この例では、この対象デバイスがコントローラ間デッドロックによりアクセスできない状況になっているものとして説明する。
【００９９】
このため、対象デバイスでは、ＦＰＧＡ２０からのアクセス要求が受信できない（Ｓ８６）。これにより、ＦＰＧＡ２０では、ハングが発生し（Ｓ８７）、対象デバイスが一定時間無応答であることを検出し（Ｓ８８）、ＩＦ部２０２をリセットする（Ｓ８９）。このように、ＩＦ部２０２がリセットされると、ＦＰＧＡ２０は、各デバイスとの間の通信が可能となる。
【０１００】
次いで、ＦＰＧＡ２０は、対象デバイスに対するにアクセスが成功しない場合には、対象デバイスに対応付けられているリトライ回数（初期設定テーブル２０５の対応するエントリのリトライ回数２０５ｋの値）だけ、診断ルーチンＲ１を繰り返し実行する。
【０１０１】
診断ルーチンＲ１を対象デバイスに対応付けられているリトライ回数だけ繰り返しても、アクセスに成功しない場合には、ＦＰＧＡ２０は、デッドロック確認ルーチンＲ２を実行する。具体的には、ＦＰＧＡ２０は、対象デバイスへのアクセスが不可であるとの異常を認識し（Ｓ９０）、デッドロック確認をするための情報を取得するために、他系のコントローラ１２の主記憶装置１４に対してアクセスを試みる（Ｓ９１）。この例では、コントローラ間デッドロックが発生しているので、他系のコントローラ１２は、ＦＰＧＡ２０のアクセス要求を受信できない（Ｓ９２）。
【０１０２】
これにより、ＦＰＧＡ２０では、ハングが発生する（Ｓ９３）。ＦＰＧＡ２０は、対象デバイスが一定時間無応答であることを検出し（Ｓ９４）、ＩＦ部２０２をリセットする（Ｓ９５）。次いで、ＦＰＧＡ２０は、コントローラ間中継器１７をリセット又は電源ＯＦＦするための信号をコントローラ間中継器に送信する（Ｓ９６）。コントローラ間中継器１７では、ＩＦ部１７３が初期化されることとなる（Ｓ９７）。
【０１０３】
これにより、ＣＰＵコア１３１は、コントローラ間中継器１７のバッファを初期化し（Ｓ９８）、マイクロプログラムの動作が可能となり（Ｓ９９）、ＣＰＵコア１３１による各種プログラムが再開されることとなる。
【０１０４】
次いで、ＣＰＵコア１３１は、ＦＰＧＡ２０の動作ログ２０６を取得したり、ストレージシステム１０の装置状態等を取得したりすることにより、コントローラ間のパス障害を検出する（Ｓ１００）。なお、ＦＰＧＡ２０は、ＣＰＵコア１３１から要求があった場合には、動作ログ２０６をＣＰＵコア１３１に送信する（Ｓ１０１）。次いで、ＣＰＵコア１３１は、他系のコントローラ１２のＣＰＵコア１３１との間で、コントローラ間パス障害処理の調停を行い（Ｓ１０２）、調停に従ってコントローラ間パス障害処理を実行する（Ｓ１０３）。このコントローラ間パス障害処理においては、例えば、いずれか一方のコントローラ１２を閉塞するようにしてもよい。
【０１０５】
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
【０１０６】
例えば、上記実施形態では、デバイスにＲＳＴ／ＰＷＲ制御端子及びＩＦ部制御端子がある場合には、ＦＰＧＡ２０と両方の端子を信号線で接続する例を示していたが、少なくともいずれか一方のみと信号線を接続するようにしてもよく、また、デバイスに、ＲＳＴ／ＰＷＲ制御端子とＩＦ部制御端子とのいずれか一方のみしかない場合には、ＦＰＧＡ２０と、その端子とを信号線で接続するようにしてもよい。なお、デバイスのＩＦ部をリセットする際には、ＦＰＧＡ２０は、接続されている端子に対して対応する信号を送信するようにすればよい。
【０１０７】
また、上記実施形態では、各コントローラ１２にＦＰＧＡ２０を備えた例を示していたが、本発明はこれに限られず、例えば、一方のコントローラ１２にのみＦＰＧＡ２０を備え、両方のコントローラ１２の複数のデバイスに対して、１つのＦＰＧＡ２０が障害検出対処処理を実行するようにしてもよい。
【０１０８】
また、上記実施形態では、コントローラ１２内にＦＰＧＡ２０を備えるようにしていたが、コントローラ１２の外部にＦＰＧＡ２０を備えるようにしてもよい。
【符号の説明】
【０１０９】
１…情報処理システム、１０…ストレージシステム、１２…コントローラ、１３…ＣＰＵ、２０…ＦＰＧＡ、１３１…ＣＰＵコア、２０１…ロジック
【図１】
2020086538.tif 000003
【図２】
2020086538.tif 000004
【図３】
2020086538.tif 000005
【図４】
2020086538.tif 000006
【図５】
2020086538.tif 000007
【図６】
2020086538.tif 000008
【図７】
2020086538.tif 000009
【図８】
2020086538.tif 000010
【図９】
2020086538.tif 000011