(57)【特許請求の範囲】
【請求項１】
データを記憶するための記憶媒体を有する複数のドライブユニットと、
複数のポートを有し、当該複数のポートの少なくとも一つに前記複数のドライブユニットの少なくとも一つを接続する複数の第１のスイッチデバイスと、
前記複数の第１のスイッチデバイスの少なくとも一つを接続し、前記複数のドライブユニットを制御する第１のディスクコントローラと、
複数のポートを有し、当該複数のポートの少なくとも一つに前記複数のドライブユニットの少なくとも一つを接続する複数の第２のスイッチデバイスであって、それぞれが前記複数の第１のスイッチのそれぞれに対応する複数の第２のスイッチデバイスと、
前記複数の第２のスイッチデバイスの少なくとも一つを接続し、前記複数のドライブユニットを制御する第２のディスクコントローラと、を備え、
前記複数の第１のスイッチデバイス及び前記複数の第２のスイッチデバイスはそれぞれ、自身の前記複数のポートを介して、縦列に接続されていると共に、
前記複数の第１のスイッチデバイスのそれぞれ及び前記複数の第２のスイッチデバイスのそれぞれは、前記複数のポートのそれぞれに送信されるデータフレームにおけるエラーをチェックし、前記データフレームにおいてエラーを検出した場合に、所定のエラー情報を出力するエラーチェック回路を備え、
前記第１のディスクコントローラは、
前記複数の第１のスイッチデバイスのそれぞれにおける前記複数のポートのそれぞれに接続されたデバイス及び当該複数のポートのそれぞれの接続状態を管理する第１のコネクションパスマップを有し、
前記第２のディスクコントローラは、
前記複数の第２のスイッチデバイスのそれぞれにおける前記複数のポートのそれぞれに接続されたデバイス及び当該複数のポートのそれぞれの接続状態を管理する第２のコネクションパスマップを有し、
前記第１のディスクコントローラ及び前記第２のディスクコントローラの少なくとも一方は、
自身に接続された前記複数のスイッチデバイスの少なくとも一つを介して、前記複数のドライブユニットの少なくとも一つにアクセスするためのコマンドに基づくデータフレームを送信し、
前記コマンドに応答して送信されてくるデータフレームにおいてエラーを検出した場合に、前記複数のスイッチデバイスに対してエラー情報送信要求を送信し、
前記少なくとも一方のディスクコントローラに接続された前記複数のスイッチデバイスのそれぞれは、前記エラー情報送信要求に応答して、前記エラー情報を前記少なくとも一方のディスクコントローラに送信し、
前記少なくとも一方のディスクコントローラは、
前記エラー情報送信要求に応答して前記複数のスイッチデバイスのそれぞれから送信されるエラー情報に基づいて、エラーが検出されたスイッチデバイス及びポートを障害部位として特定し、
特定した障害部位に基づいて、当該特定した障害部位を迂回するように、前記複数の第１のスイッチデバイスのそれぞれにおける前記複数のポートの少なくとも一つと前記対応する複数の第２のスイッチデバイスのそれぞれにおける前記複数のポートの少なくとも一つとを相互に接続するコネクションパスの再構築パターンを特定し、
その特定したコネクション再構築パターンに従い、前記スイッチデバイス間コネクションパスを変更すると共に、自身の前記コネクションパスマップの内容を更新することを特徴とするストレージサブシステム。
【請求項２】
請求項１に記載のストレージサブシステムであって、
前記第１のディスクコントローラ及び前記第２のディスクコントローラの少なくとも一方は、自身に接続された前記複数のスイッチデバイスの少なくとも一つ及び当該対応する前記スイッチデバイスのそれぞれにおける前記複数のポートの少なくとも一つの接続状態を有効状態にセットすることを特徴とするストレージサブシステム。
【請求項３】
請求項１に記載のストレージサブシステムであって、
前記複数の第１のスイッチデバイスのそれぞれ及び前記複数の第２のスイッチデバイスのそれぞれは、自身の前記複数のポートのそれぞれにおけるビジー情報を出力することを特徴とするストレージサブシステム。
【請求項４】
請求項３に記載のストレージサブシステムであって、
前記第１のディスクコントローラ及び前記第２のディスクコントローラの少なくとも一方は、前記複数の第１のスイッチデバイス及び前記複数の第２のスイッチデバイスのいずれかが出力するビジー情報に基づいて、所定のコネクションパス再構築パターンに従い、自身の前記コネクションパスマップの内容を更新することを特徴とするストレージサブシステム。
【請求項５】
自身の複数のポートを介して縦列接続された複数の第１のスイッチデバイスの少なくとも一つのポートに接続され、データを記憶するための記憶媒体を有する複数のドライブユニットを制御する第１のコントローラ、及び自身の複数のポートを介して縦列接続され、前記複数の第１のスイッチデバイスに対応付けられた複数の第２のスイッチデバイスの少なくとも一つのポートに接続された前記複数のドライブユニットを制御する第２のコントローラを含み、前記複数の第１のスイッチデバイスのそれぞれ及び前記複数の第２のスイッチデバイスのそれぞれは、前記複数のポートのそれぞれに送信されるデータフレームにおけるエラーをチェックし、前記データフレームにおいてエラーを検出した場合に、所定のエラー情報を出力するエラーチェック回路を備え、前記第１のディスクコントローラ及び前記第２のディスクコントローラは、前記複数の第１及び第２のスイッチデバイスのそれぞれにおける前記複数のポートのそれぞれに接続されたデバイス及び当該複数のポートのそれぞれの接続状態を管理する第１及び第２のコネクションパスマップを有するストレージサブシステムにおけるスイッチデバイス間コネクションパスの制御方法であって、
前記第１のコントローラ及び前記第２のディスクコントローラの少なくとも一方が、自身に接続された前記複数のスイッチデバイスを介して、前記複数のドライブユニットの少なくとも一つにアクセスするためのコマンドに基づくデータフレームを送信するステップと、
前記少なくとも一方のディスクコントローラが、前記コマンドに応答して前記複数のスイッチデバイスを介して送信されてくるデータフレームを受信し、当該受信したデータフレームにおけるエラーをチェックするステップと、
前記少なくとも一方のディスクコントローラが、前記チェックの結果、前記データフレームにおいてエラーを検出した場合に、前記複数のスイッチデバイスに対してエラー情報送信要求を送信するステップと、
前記少なくとも一方のディスクコントローラが、前記エラー情報送信要求に応答して送信されてくるエラー情報を受信するステップと、
前記少なくとも一方のディスクコントローラが、前記受信したエラー情報に基づいて、エラーが検出されたスイッチデバイス及び当該スイッチデバイスのポートを障害部位として特定するステップと、
前記少なくとも一方のディスクコントローラが、前記特定した障害部位に基づいて、当該特定した障害部位を迂回するように、前記複数の第１のスイッチデバイスそれぞれにおける前記複数のポートの少なくとも一つとこれに対応する前記複数の第２のスイッチデバイスそれぞれにおける複数のポートの少なくとも一つとを相互に接続するコネクションパスの再構築パターンを特定するステップと、
特定したコネクション再構築パターンに従い、前記スイッチデバイス間コネクションパスを変更するステップと、
前記少なくとも一方のディスクコントローラが、自身の前記コネクションパスマップの内容を更新するステップと、
を含むことを特徴とする制御方法。
【請求項６】
請求項５に記載の制御方法であって、
前記スイッチデバイス間コネクションパス変更するステップは、前記複数の第１のスイッチデバイスの少なくとも一つとこれに対応する前記複数のスイッチデバイスの少なくとも一つの接続状態を有効状態にセットすることを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
ストレージサブシステム及びこれの制御方法に関し、特に、冗長化パス構成を採用し、複数のスイッチデバイスにより形成されたコネクションパスを有するストレージサブシステム及び当該コネクションパスの制御方法に関する。
【背景技術】
【０００２】
ストレージサブシステムは、ホストコンピュータに対してデータストレージサービスを提供する装置である。ストレージサブシステムは、典型的には、データを記憶するためのハードディスクドライブ群とこれを制御するディスクコントローラとで構成される。ディスクコントローラは、ストレージサブシステム全体を制御するためのプロセッサと、ホストコンピュータに接続するためのフロントエンドインターフェースと、ハードディスクドライブ群を接続するためのバックエンドインタフェースとを備える。典型的には、ユーザデータをキャッシュするためのキャッシュメモリが両者のインターフェースの間に配置される。また、ハードディスクドライブ群は、多段に配置されたスイッチ回路を介して、アレイ状に配設される。
【０００３】
ストレージサブシステムは、一般に、ミッションクリティカルな業務に用いられることから、高信頼性、高可用性が要求される。このため、耐障害性の観点から、ストレージサブシステム内のコンポーネントは、典型的には、冗長的に構成される。例えば、バックエンドインターフェースにおいて、ハードディスクドライブにアクセスするためのパスは二重化され、いずれかのパスに障害が発生しても、他方のパスを用いて、システムを継続的に運用できるようになっている。また、ストレージサブシステム内で障害が発生した場合には、当該障害が発生したコンポーネントは直ちに特定され、障害の復旧が行われる。
【０００４】
下記特許文献１は、ディスクドライブを接続したスイッチ回路の複数のポートを監視し、いずれかのポートでエラーを検出した場合には、コントローラに設けられた障害回復制御部により障害部位を特定し、障害回復処理を行う記憶制御装置を開示している。
【特許文献１】特開２００７-１４１１８５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ストレージサブシステムは、一般に、ミッションクリティカルな業務に用いられることから、高信頼性、高可用性が要求される。ストレージサブシステムを構成するコンポーネントの障害は、確率的に起こりうることであり、これを避けることはできず、従って、システム設計の観点から耐障害性を十分に考慮する必要がある。
【０００６】
例えば、上述したように、ストレージサブシステムは、二重化されたパスの一方に障害が発生した場合であっても、残された他方のパスを介してハードディスクドライブにアクセスすることでシステムの運用を継続し、障害に耐えうるようになっている。
【０００７】
しかしながら、このような従来のストレージサブシステムでは、二重化されたパスはそれぞれ全体に亘って独立に構成されていたため、一旦、障害が発生すると、当該障害が発生したパス自体を使用することができず、障害の影響が広範囲に及んでしまうという課題があった。
【０００８】
また、当該障害が回復するまでの間は、他方のパスのみによる運用となるため、もはやさらなる障害に対しては対応することができない。従って、万が一、残りのパスに障害が発生した場合には、システムダウンを引き起こしてしまうという課題があった。
【０００９】
さらに、他方のパスのみによる運用では、当該他方のパスにアクセス負荷が集中するため、スループット性能が低下するという課題があった。
【００１０】
そこで、本発明は、上記課題に鑑み、信頼性及び可用性を向上させつつ、システムパフォーマンスの劣化を最小限に抑制することができるストレージサブシステム及びこれの制御方法を提供することを目的とする。
【００１１】
より具体的には、本発明の一つの目的は、ストレージサブシステム内に障害が発生した場合であっても、障害の影響を最小限に抑えることができるストレージサブシステム及びこれの制御方法を提供することである。
【００１２】
また、本発明の他の目的は、ストレージサブシステム内に障害が発生した場合であっても、障害が回復するまでの間、障害が発生していないコンポーネントにより可能な限り冗長構成を維持することで負荷分散を行って、スループット性能の低下を防止することができるストレージサブシステム及びこれの制御方法を提供することである。
【００１３】
本発明のさらなる他の目的は、後述される実施形態の記載から明らかになる。
【課題を解決するための手段】
【００１４】
本発明は、上記課題に鑑みなされたものであり、その要旨は、本発明のストレージサブシステムは、ドライブユニットに対するコネクションパス中に障害部位を検出した場合に、当該障害部位を迂回乃至は回避するように当該コネクションパスを再構築すること、である。
【００１５】
すなわち、本発明は、要約すると、複数の第１のスイッチデバイスを介して接続された複数のドライブユニットを制御する第１のコントローラ及び当該複数の第１のスイッチデバイスに対応付けられた複数の第２のスイッチデバイスを介して接続された当該複数のドライブユニットを制御する第２のコントローラを含むストレージサブシステムであって、当該複数の第１のスイッチデバイスと当該対応する複数の第２のスイッチデバイスとを相互に接続したコネクションパスを有するストレージサブシステムにおいて、障害の発生を検出すると、コネクションパス中の障害部位を特定し、当該障害部位を迂回するように、スイッチデバイスの接続構成（コネクションパス）を変更する。
【００１６】
これにより、ストレージサブシステムは、内部で障害が発生した場合であっても、障害の影響を最小限に抑えることができるようになる。また、このような障害が発生した場合であっても、ストレージシステムは、障害が回復するまでの間、障害が発生していないコンポーネントにより可能な限り冗長構成を維持することができるようになり、従って、負荷分散を可能にし、スループット性能の低下を防止することができるようになる。
【００１７】
詳述すると、本発明に係るストレージシステムは、データを記憶するための記憶媒体を有する複数のドライブユニットと、複数のポートを有し、当該複数のポートの少なくとも一つに前記複数のドライブユニットの少なくとも一つを接続する複数の第１のスイッチデバイスと、前記複数の第１のスイッチデバイスの少なくとも一つを接続し、前記複数のドライブユニットを制御する第１のディスクコントローラと、複数のポートを有し、当該複数のポートの少なくとも一つに前記複数のドライブユニットの少なくとも一つを接続する複数の第２のスイッチデバイスであって、それぞれが前記複数の第１のスイッチのそれぞれに対応する複数の第２のスイッチデバイスと、前記複数の第２のスイッチデバイスの少なくとも一つを接続し、前記複数のドライブユニットを制御する第２のディスクコントローラと、を備え、前記複数の第１のスイッチデバイス及び前記複数の第２のスイッチデバイスはそれぞれ、自身の前記複数のポートを介して、縦列に接続されていると共に、前記複数の第１のスイッチデバイスのそれぞれ及び前記複数の第２のスイッチデバイスのそれぞれは、前記複数のポートのそれぞれに送信されるデータフレームにおけるエラーをチェックし、前記データフレームにおいてエラーを検出した場合に、所定のエラー情報を出力するエラーチェック回路を備え、前記第１のディスクコントローラは、前記複数の第１のスイッチデバイスのそれぞれにおける前記複数のポートのそれぞれに接続されたデバイス及び当該複数のポートのそれぞれの接続状態を管理する第１のコネクションパスマップを有し、前記第２のディスクコントローラは、前記複数の第２のスイッチデバイスのそれぞれにおける前記複数のポートのそれぞれに接続されたデバイス及び当該複数のポートのそれぞれの接続状態を管理する第２のコネクションパスマップを有し、前記第１のディスクコントローラ及び前記第２のディスクコントローラの少なくとも一方は、自身に接続された前記複数のスイッチデバイスの少なくとも一つを介して、前記複数のドライブユニットの少なくとも一つにアクセスするためのコマンドに基づくデータフレームを送信し、前記コマンドに応答して送信されてくるデータフレームにおいてエラーを検出した場合に、前記複数のスイッチデバイスに対してエラー情報送信要求を送信し、前記少なくとも一方のディスクコントローラに接続された前記複数のスイッチデバイスのそれぞれは、前記エラー情報送信要求に応答して、前記エラー情報を前記少なくとも一方のディスクコントローラに送信し、前記少なくとも一方のディスクコントローラは、前記エラー情報送信要求に応答して前記複数のスイッチデバイスのそれぞれから送信されるエラー情報に基づいて、エラーが検出されたスイッチデバイス及びポートを障害部位として特定し、特定した障害部位に基づいて、当該特定した障害部位を迂回するように、前記複数の第１のスイッチデバイスのそれぞれにおける前記複数のポートの少なくとも一つと前記対応する複数の第２のスイッチデバイスのそれぞれにおける前記複数のポートの少なくとも一つとを相互に接続するコネクションパスの再構築パターンを特定し、その特定したコネクション再構築パターンに従い、前記スイッチデバイス間コネクションパスを変更すると共に、自身の前記コネクションパスマップの内容を更新することを特徴とする。
【００１９】
さらにまた、本発明に係るストレージシステムにおけるスイッチデバイス間コネクションパスの制御方法は、自身の複数のポートを介して縦列接続された複数の第１のスイッチデバイスの少なくとも一つのポートに接続され、データを記憶するための記憶媒体を有する複数のドライブユニットを制御する第１のコントローラ、及び自身の複数のポートを介して縦列接続され、前記複数の第１のスイッチデバイスに対応付けられた複数の第２のスイッチデバイスの少なくとも一つのポートに接続された前記複数のドライブユニットを制御する第２のコントローラを含み、前記複数の第１のスイッチデバイスのそれぞれ及び前記複数の第２のスイッチデバイスのそれぞれは、前記複数のポートのそれぞれに送信されるデータフレームにおけるエラーをチェックし、前記データフレームにおいてエラーを検出した場合に、所定のエラー情報を出力するエラーチェック回路を備え、前記第１のディスクコントローラ及び前記第２のディスクコントローラは、前記複数の第１及び第２のスイッチデバイスのそれぞれにおける前記複数のポートのそれぞれに接続されたデバイス及び当該複数のポートのそれぞれの接続状態を管理する第１及び第２のコネクションパスマップを有するストレージサブシステムにおけるスイッチデバイス間コネクションパスの制御方法であって、前記第１のコントローラ及び前記第２のディスクコントローラの少なくとも一方が、自身に接続された前記複数のスイッチデバイスを介して、前記複数のドライブユニットの少なくとも一つにアクセスするためのコマンドに基づくデータフレームを送信するステップと、前記少なくとも一方のディスクコントローラが、前記コマンドに応答して前記複数のスイッチデバイスを介して送信されてくるデータフレームを受信し、当該受信したデータフレームにおけるエラーをチェックするステップと、前記少なくとも一方のディスクコントローラが、前記チェックの結果、前記データフレームにおいてエラーを検出した場合に、前記複数のスイッチデバイスに対してエラー情報送信要求を送信するステップと、前記少なくとも一方のディスクコントローラが、前記エラー情報送信要求に応答して送信されてくるエラー情報を受信するステップと、前記少なくとも一方のディスクコントローラが、前記受信したエラー情報に基づいて、エラーが検出されたスイッチデバイス及び当該スイッチデバイスのポートを障害部位として特定するステップと、前記少なくとも一方のディスクコントローラが、前記特定した障害部位に基づいて、当該特定した障害部位を迂回するように、前記複数の第１のスイッチデバイスそれぞれにおける前記複数のポートの少なくとも一つとこれに対応する前記複数の第２のスイッチデバイスそれぞれにおける複数のポートの少なくとも一つとを相互に接続するコネクションパスの再構築パターンを特定するステップと、特定したコネクション再構築パターンに従い、前記スイッチデバイス間コネクションパスを変更するステップと、前記少なくとも一方のディスクコントローラが、自身の前記コネクションパスマップの内容を更新するステップと、を含むことを特徴とする。
【発明の効果】
【００２０】
本発明によれば、ストレージサブシステムは、信頼性及び可用性を向上させつつ、システムパフォーマンスの劣化を最小限に抑制することができるようになる。
【００２１】
本発明の他の技術的特徴及び利点は、添付した図面を参照して説明される以下の実施形態のより明らかにされる。
【発明を実施するための最良の形態】
【００２２】
次に、本発明の実施の形態について、図面を参照しつつ説明する。
［第１の実施形態］
【００２３】
図１は、本発明の一実施形態に係るストレージサブシステムの全体構成を説明するための図である。同図に示すストレージサブシステム１は、ネットワーク２Ａを介してホストコンピュータ３に接続され、コンピュータシステムを形成している。ストレージサブシステム１はまた、管理用ネットワーク２Ｂを介して管理装置４に接続されている。
【００２４】
ネットワーク２Ａは、例えば、ＬＡＮ、インターネット、又はＳＡＮ（Storage Area Network）のいずれかを用いることができ、典型的には、ネットワークスイッチやハブ等を含んで構成される。本実施形態では、ネットワーク２Ａは、ファイバーチャネルプロトコルを用いたＳＡＮ（ＦＣ−ＳＡＮ）で構成され、管理用ネットワーク２Ｂは、ＬＡＮで構成されているものとする。
【００２５】
ホストコンピュータ３は、プロセッサと、メインメモリと、通信インターフェースと、ローカル入出力装置等のハードウェア資源を備えるとともに、デバイスドライバやオペレーティングシステム（ＯＳ）、アプリケーションプログラム等のソフトウェア資源を備える（図示せず）。これによって、ホストコンピュータ３は、プロセッサの制御の下、各種のアプリケーションプログラムを実行して、ハードウェア資源との協働作用により、ストレージサブシステム１にアクセスしながら、所望の処理を実現する。
【００２６】
ストレージサブシステム１は、データストレージサービスをホストコンピュータ３に提供する補助記憶装置である。ストレージサブシステム１は、データを記憶する記憶媒体を含むストレージデバイス１１と、これを制御するディスクコントローラ１２とを備える。ストレージデバイス１１とディスクコントローラ１２とは、ディスクチャネルを介して接続される。ディスクコントローラ１２の内部構成は二重化されており、ディスクコントローラ１２は、ストレージデバイス１１に対して２つのチャネル（コネクションパス）を用いてアクセスすることができる。
【００２７】
ストレージデバイス１１は、一つ以上のドライブユニット１１０を含んで構成される。ドライブユニット１１０は、例えばハードディスクドライブ１１１及び当該ハードディスクドライブ１１１の駆動を制御する制御回路１１２からなる。ハードディスクドライブ１１１は、例えば、ドライブユニット１１０の筐体に嵌装され、実装される。ハードディスクドライブ１１１に代えて、フラッシュメモリ等のソリッドステート装置が用いられてもよい。ディスクコントローラ１２における二重化パス構成に対応して、制御回路１１２もまた二重化されている。
【００２８】
ドライブユニット１１０は、典型的には、スイッチデバイス（エクスパンダ）１３を介して、ディスクコントローラ１２に接続される。複数のスイッチデバイス１３を用いることで、複数のドライブユニット１１０をさまざまな形態で接続することができる。本実施形態では、縦列に接続された複数のスイッチデバイス１３のそれぞれにドライブユニット１１０が接続されている。つまり、ディスクコントローラ１２０は、その配下に属する縦列接続された複数のスイッチデバイス１３を介してドライブユニット１１０にアクセスする。従って、スイッチデバイス１３を縦列に追加接続することにより、ドライブユニット１１０を容易に増設することができ、ストレージサブシステム１の記憶容量を容易に拡張することができる。ストレージサブシステム１内のドライブユニット１１０の接続形態は、後述するコネクションマップにより定義される。
【００２９】
ドライブユニット１１０のハードディスクドライブ１１１は、典型的には、所定のＲＡＩＤ構成（例えばＲＡＩＤ  ５）に基づいてＲＡＩＤグループが構成され、ＲＡＩＤ制御の下、アクセスされる。ＲＡＩＤ制御は、例えば、ディスクコントローラ１２に実装されたＲＡＩＤコントローラ（図示せず）により、行われる。ＲＡＩＤグループは、複数のドライブユニット１１０に亘っていてもよい。同一のＲＡＩＤグループに属するハードディスクドライブ１１１は、１つの仮想的な論理デバイスとして、ホストコンピュータ３に認識される。
【００３０】
ディスクコントローラ１２は、ストレージサブシステム１全体を制御するシステムコンポーネントであり、その主たる役割は、ホストコンピュータ３からのアクセス要求に基づいて、ストレージデバイス１１に対するＩ／Ｏ処理を実行することである。ディスクコントローラ１２はまた、管理装置４からの各種の要求に基づいて、ストレージサブシステム１の管理に関わる処理を実行する。
【００３１】
上述したように、本実施形態では、ディスクコントローラ１２内のコンポーネントは、耐障害性の観点から、二重化されている。以下では、二重化された個々のディスクコントローラ１２を指すときは、「ディスコントローラ１２０」というものとする。また、ディスクコントローラ１２０のそれぞれを指すときは、「第１のディスクコントローラ１２０」及び「第２のディスクコントローラ１２０」というものとする。
【００３２】
各ディスクコントローラ１２０は、チャネルアダプタ１２１、データコントローラ１２２、ディスクアダプタ１２３、プロセッサ１２４、メモリユニット１２５、ＬＡＮインターフェース１２６を含む。ディスクコントローラ１２０どうしは、相互に通信可能なようにバス１２７で接続される。
【００３３】
チャネルアダプタ（ＣＨＡ）１２１は、ネットワーク２Ａを介してホストコンピュータ３を接続するためのインターフェースであり、ホストコンピュータ３との間の所定のプロトコルに従ったデータ通信を制御する。チャネルアダプタ１２１は、ホストコンピュータ３からの例えば書き込みコマンドを受信すると、データコントローラ１２２を介して、メモリユニット１２５に当該書き込みコマンド及びこれに従うデータを書き込む。チャネルアダプタ１２１は、ホストインターフェースやフロントエンドインターフェースと呼ばれることもある。
【００３４】
データコントローラ１２２は、ディスクコントローラ１２０内のコンポーネント間のインターフェースであり、コンポーネント間のデータの送受を制御する。
【００３５】
ディスクアダプタ（ＤＫＡ）１２３は、ドライブユニット１１０を接続するためのインターフェースであり、ホストコンピュータ３からのＩ／Ｏコマンドに従って、ドライブユニット１１０との間の所定のプロトコルに従ったデータ通信を制御する。すなわち、ディスクアダプタ１２３は、メモリユニット１２５を周期的にチェックし、メモリユニット１２５上にＩ／Ｏコマンドを見つけると、当該コマンドに従ってドライブユニット１１０にアクセスする。
【００３６】
より具体的には、ディスクアダプタ１２３は、例えば、メモリユニット１２５上に書き込みコマンドを見つけると、当該書き込みコマンドが指定するメモリユニット１２５上のデータをストレージデバイス１１（すなわち、ハードディスクドライブ１１１の所定の記憶領域）にデステージングするため、ストレージデバイス１１に対してアクセスを行う。また、ディスクアダプタ１２３は、メモリユニット１２５上に読み出しコマンドを見つけると、当該読み出しコマンドが指定するストレージデバイス１１上のデータをメモリユニット１２５上にステージングするため、ストレージデバイス１１に対してアクセスを行う。
【００３７】
本実施形態のディスクアダプタ１２３は、上記のＩ／Ｏ機能に加え、障害回復機能を実装している。これらの機能は、例えば、ファームウェアとして実現される。
【００３８】
ディスクアダプタ１２３は、ディスクインターフェースやバックエンドインターフェースと呼ばれることもある。
【００３９】
プロセッサ１２４は、メモリユニット１２５上にロードされた各種の制御プログラムを実行して、ディスクコントローラ１２０（すなわちストレージサブシステム１）全体の動作を司る。プロセッサ１２４は、マルチコアタイプのプロセッサであってもよい。
【００４０】
メモリユニット１２５は、プロセッサ１２４のメインメモリとして機能するとともに、チャネルアダプタ１２１及びディスクアダプタ１２３のキャッシュメモリとして機能する。メモリユニット１２５は、例えば、ＤＲＡＭ等の揮発性メモリで構成され、あるいは、フラッシュメモリ等の不揮発性メモリで構成される。メモリユニット１２５は、例えば、図２に示すように、ストレージサブシステム１自体のシステム構成情報を記憶する。システム構成情報は、論理ボリューム構成情報やＲＡＩＤ構成情報、コネクションパスマップ、コネクションパス再構築テーブル等を含む。システム構成情報は、例えば、ストレージサブシステム１に電源が投入されると、プロセッサ１２４の制御の下、イニシャルプロセスに従ってハードディスクドライブ１１１の特定の記憶領域から読み出され、メモリユニット１２５にロードされる。コネクションパスマップ及びコネクションパス再構築テーブルは後述される。
【００４１】
ＬＡＮインターフェース１２６は、ＬＡＮを介して管理装置４を接続するためのインターフェース回路である。ＬＡＮインターフェースは、例えば、ＴＣＰ／ＩＰ及びイーサネット（登録商標）に従ったネットワークボードを採用することができる。
【００４２】
管理装置４は、システム管理者がストレージサブシステム１全体を管理するための装置であり、典型的には、管理プログラムを実装した汎用コンピュータで構成される。管理装置４は、サービスプロセッサと呼ばれることもある。同図では、管理装置４は、管理用ネットワーク２Ｂを介してストレージ装置１の外側に設けられているが、これに限らず、ストレージサブシステム１の内部に設けられるようにしてもかまわない。あるいは、管理装置４と同等の機能を含むように、ディスクコントローラ１２０が構成されてもよい。
【００４３】
システム管理者は、管理装置４によって提供されるユーザインターフェースを介して、ディスクコントローラに指示を与え、これによって、ストレージサブシステム１のシステム構成情報を取得して、参照したり、システム構成情報を設定・変更したりすることができる。例えば、システム管理者は、管理装置４を操作して、ハードディスクドライブの増設に併せて、論理ボリュームや仮想ボリュームを設定し、また、ＲＡＩＤ構成を設定することができる。
【００４４】
図３は、本発明の一実施形態に係るストレージサブシステム１内のスイッチデバイス１３の構成を説明するための図である。
【００４５】
同図に示すように、スイッチデバイス１３は、複数のポート部１３１と、スイッチ回路１３２と、アドレステーブル１３３と、エラーレジスタ１３４とを備える。
【００４６】
ポート部１３１は、外部接続のための複数のポート１３１１と、エラー検出回路１３１２とを含む。また、ポート部１３１は、図示していないが、バッファを含み、受信データフレーム及び送信データフレームを一時的に格納することができる。ポート１３１１には、例えば、ディスクコントローラ１２０、他のスイッチデバイス１３、及びドライブユニット１１０が接続される。各ポート１３１１には、スイッチデバイス１３内で固有の番号（ポート番号）が割り当てられ、識別できるようになっている。ポート番号は、ポート部１３１ごとに割り当てられてもよい。同図では、複数のポート部１３１が配置され、それぞれに他のデバイスが接続されることが示されているが、特にこれにこだわるものでなく、単一のポート部１３１に設けられた複数のポート１３１１にそれぞれのデバイスが接続されてもよい。
【００４７】
スイッチデバイス１３の内部では、各ポート１３１１は、データ線Ｄを介して、スイッチ回路１３２に接続されている。また、エラーチェック回路１３１２は、図４に示されるようなエラーパターンテーブルに従って、各ポート１３１１における通信エラーを監視する。具体的には、エラーチェック回路１３１２は、各ポート１３１１を通過するデータフレームに含まれるパリティをチェックし、当該パリティが所定のエラーパターンに一致する場合に、当該エラーパターンに対するエラーカウンタの値をインクリメントする。エラーチェック回路１３１２は、エラーカウンタの値が所定の閾値を超える場合に、エラー情報をエラー信号線Ｅに出力する。エラー情報は、スイッチ回路１３２を介して、エラーレジスタ１３４に書き込まれる。
【００４８】
スイッチ回路１３２は、アドレスラッチ及びセレクタから構成されたスイッチング素子を含む。スイッチ回路１３２は、入力されてくるデータフレームのヘッダ情報を解析して、アドレステーブル１３３に従って、データフレームの送出先を切り替える。
【００４９】
エラーレジスタ１３４は、各ポート部１３１のエラーチェック回路１３１２から送出されるエラー情報を保持するためのレジスタである。
【００５０】
図４は、本発明の一実施形態に係るスイッチデバイス１３内のエラーパターンテーブルの一例を示す図である。エラーパターンテーブルは、エラーチェック回路１３１２に保持されている。
【００５１】
同図に示すように、エラーパターンテーブル４００は、所定のビット配列で定義された各エラーパターン４０１ごとに、エラーカウンタ値４０２及び所定の閾値４０３が対応付けられている。エラーパターン４０１は、正常なデータ通信であれば、データフレーム内のパリティに現れないビットパターンである。エラーカウンタ値４０２は、エラーパターン４０１ごとに発生したエラーの回数であり、閾値４０３は、当該エラー発生回数の許容上限値である。
【００５２】
エラーチェック回路１３１２は、データフレーム内のパリティがエラーパターン４０１のいずれかに一致する場合に、エラーが発生したものとして、当該検出したエラーパターン４０１に対するエラーカウンタ値４０２をインクリメントする。さらに、エラーチェック回路１３１２は、当該エラーカウンタ値４０２と閾値４０３とを比較して、当該エラーカウンタ値４０２が閾値４０３超えたと判断する場合に、エラー信号線Ｅにエラー情報を出力する。
【００５３】
図５は、本発明の一実施形態に係るスイッチデバイス１３内のエラーレジスタ１３４の内容を説明するための図である。
【００５４】
同図に示すように、エラーレジスタ１３４は、エラーチェック回路１３１２から送信されるエラー情報を格納する。エラー情報は、例えば、ポート番号１３４１と、エラーコード１３４２と、エラーカウンタ値１３４３とからなる。ポート番号１３４１は、エラーが検出されたポート１３１１のポート番号である。エラーコード１３４２は、例えば、エラーパターン４０１ごとに割り当てられたコードであり、エラーコード１３４２を参照することによって、エラーの内容等が認識できる。エラーレジスタ１３４のエラー情報は、外部のデバイス（例えばチャネルアダプタ１２３）から送信されるエラー情報送信要求に応答して、読み出される。
【００５５】
図６及び図７は、本発明の一実施形態に係るディスクコントローラ１２０のメモリユニット１２５に保持されるコネクションパスマップ６００の一例を示す図である。コネクションパスマップ６００は、二重化されたディスクコントローラ１２０のそれぞれのメモリユニット１２５に記憶される。図６は、第１のディスクコントローラ１２０におけるコネクションパスマップ６００を示し、図７は、第２のディスクコントローラ１２０におけるコネクションマップ６００を示している。ディスクコントローラ１２０は、バス１２７を介して、他のディスクコントローラ１２０のコネクションパスマップ６００を参照することができる。
【００５６】
コネクションパスマップ６００は、各スイッチデバイス１３の各ポート１３１１に接続されているデバイス及び当該ポート１３１１の状態を示すテーブルである。すなわち、コネクションパスマップ６００は、デバイス名６０１と、ポート番号６０２と、接続先デバイス名６０３と、状態６０４と、を含む。デバイス名６０１は、スイッチデバイス１３に一意に割り当てられた識別名である。ポート番号６０２は、スイッチデバイス１３に設けられたポート１３１１のポート番号である。接続先デバイス名６０３は、当該ポート１３１１に接続されたデバイスを一意に識別するために割り当てられた識別名である。また、状態６０４は、当該ポート１３１１が有効状態になっているか、無効状態になっているかを示す。
【００５７】
例えば、図６に示すように、デバイス名「Ｓｗｉｔｃｈ−１１」で示されるスイッチデバイス１３は、ポート番号「＃１」で示されるポートに、接続先デバイス名「Ｃｏｎｔｒｏｌｌｅｒ−１」で示される第１のディスクコントローラ１２０を接続している。このときの当該ポートの状態は「有効」になっている。同様に、「Ｓｗｉｔｃｈ−１１」のポート「＃２」及び「＃３」には「ＨＤＤ＃１」及び「ＨＤＤ＃２」がそれぞれ接続され、また、ポート「＃４」には、「Ｓｗｉｔｃｈ−１２」が接続されている。また、ポート「＃５」には、何も接続されておらず、当該ポートの状態は「無効」になっている。
【００５８】
図８は、本発明の一実施形態に係るディスクコントローラ１２０のメモリユニット１２５に保持されるコネクションパス再構築テーブル８００の一例を示す図である。コネクションパス再構築テーブル８００は、二重化されたディスクコントローラ１２０のそれぞれのメモリユニット１２５に記憶される。
【００５９】
すなわち、同図に示すように、コネクションパス再構築テーブル８００は、障害パターン８０１とコネクションパス再構築パターン８０２とからなる。障害パターン８０１は、エラーが検出された障害部位の組み合わせである。障害部位は、エラーが検出されたスイッチデバイス１３のポート１３１１である。本例では、障害パターン８０１は、ポート１３１１の組み合わせに応じた６つのパターンが定義されている。図中、「Ｆ」は、当該ポート番号のポート１３１１が障害部位であることを意味し、また、「Ｅ」は、当該ポート番号のポート１３１１が有効状態（使用中）であることを意味している。また、空欄は、有効／無効の状態を問わないことを意味し、「−」は、変更がないことを意味する。例えば、１行目に示された障害パターン８０１は、ポート番号＃１及び＃４を使用中に、ポート番号＃１にエラーが検出されたことを示す。
【００６０】
コネクションパス再構築パターン８０２は、障害部位を迂回するためのコネクションパスを再構築するのに必要な各スイッチデバイス１３のポート１３１１の状態を定義する。図中、ハッチングで示された部分が、コネクションパスを再構築するために、ポート１３１１の状態変更があったことを示している。
【００６１】
コネクションパス再構築テーブル８００を用いたコネクションパスの再構築処理については、図１３乃至図２１を参照しながら、詳細に説明される。
【００６２】
図９は、本発明の一実施形態に係るスイッチデバイス１３におけるエラーチェック処理を説明するためのフローチャートである。
【００６３】
すなわち、同図に示すように、スイッチデバイス１３の各ポート部１３１のエラーチェック回路１３１２は、データフレームがポート部１３１のバッファに書き込まれるか否かを監視している（ＳＴＥＰ９０１）。データフレームがバッファに書き込まれる場合としては、スイッチデバイス１３がポート部１３１のポート１３１１を介して外部からデータフレームを受信する場合と、当該スイッチデバイス１３内の他のポート部１３１が受信したデータフレームがスイッチ回路１３２を介して転送されてきた場合とがある。前者は、データフレームの受信であり、後者は、データフレームの送信である。バッファにデータフレームが書き込まれると、エラーチェック回路１３１２は、エラーパターンテーブル４００を参照し（ＳＴＥＰ９０２）、当該データフレーム内のパリティがいずれかのエラーパターン４０１に一致するか否かを判断する（ＳＴＥＰ９０３）。エラーパターン４０１は、上述したように、データ通信上、異常なビット配列である。
【００６４】
エラーチェック回路１３１２は、当該パリティがいずれかのエラーパターン４０１に一致しないと判断する場合には（ＳＴＥＰ９０３のＮｏ）、データフレームは正常であるとみなして、当該データフレームを次に転送する（ＳＴＥＰ９０６）。つまり、データフレームの外部からの受信であれば、エラーチェック回路１３１２は、当該データフレームをスイッチ回路１３２に送出し、データフレームの外部への送信であれば、ポート１３１１に接続された他のデバイスにデータを送出する。
【００６５】
これに対して、エラーチェック回路１３１２は、当該パリティがいずれかのエラーパターン４０１に一致すると判断する場合には（ＳＴＥＰ９０３のＹｅｓ）、エラーパターンテーブル４００における一致したエラーパターン４０１に対するエラーカウンタ値４０２を１つインクリメントする（ＳＴＥＰ９０４）。続いて、エラーチェック回路１３１２は、当該エラーが検出されたポート１３１１のポート番号及びエラーカウンタ値４０２を含むエラー情報をエラー信号線Ｅに出力する。これを受けて、当該エラー情報は、エラーレジスタ１３４に書き込まれることになる。そして、エラーチェック回路１３１２は、当該データフレームを次に転送する（ＳＴＥＰ９０６）。
【００６６】
図１０は、本発明の一実施形態に係るディスクコントローラ１２０のディスクアダプタ１２３によるＩ／Ｏ処理を説明するためのフローチャートである。本実施形態のディスクアダプタ１２３によるＩ／Ｏ処理は、エラー検出時の障害回復処理を含んでいる。Ｉ／Ｏ処理は、例えば、Ｉ／Ｏ処理プログラムにより実現される。あるいは、ディスクアダプタ１２３のファームウェアの一部として実現される。
【００６７】
すなわち、同図に示すように、ディスクアダプタ１２３は、メモリユニット１２５に格納されたコマンドを取り出して、所定のプロトコル変換によりデータフレームを作成し、内部バッファに格納する（ＳＴＥＰ１００１）。ここで、コマンドが読み出しコマンドであれば、当該読み出しコマンドに基づくデータフレームが作成される。また、コマンドが書き込みコマンドであれば、当該書き込みコマンド及び書き込み対象データに基づくデータフレームが作成される。
【００６８】
ディスクアダプタ１２３は、次に、当該作成したデータフレームについてエラーチェックを行う（ＳＴＥＰ１００２）。ディスクアダプタ１２３におけるエラーチェックもまた、上述したスイッチデバイス１３におけるエラーチェック処理と同様に、データフレームに含まれるパリティが所定のエラーパターンに一致するか否かにより行われる。ディスクアダプタ１２３は、エラーチェックの結果、当該データフレームにエラーがないと判断する場合には（ＳＴＥＰ１００２のＮｏ）、ポートを介して当該データフレームを送出する（ＳＴＥＰ１００３）。これにより、当該データフレームは、スイッチデバイス１３を介して、当該データフレームのヘッダ情報に従って転送され、最終的には、送信先のドライブユニット１１０に送信される。
【００６９】
これに対して、ディスクアダプタ１２３は、当該データフレームにエラーがあると判断する場合には（ＳＴＥＰ１００２のＹｅｓ）、エラーレポートを管理装置４に送信し（ＳＴＥＰ１００８）、Ｉ／Ｏ処理を終了する。
【００７０】
ディスクアダプタ１２３は、送信したデータフレームに応答して、スイッチデバイス１３を介してドライブユニット１１０から送信されるデータフレームを受信し、内部バッファに格納する（ＳＴＥＰ１００４）。続いて、ディスクアダプタ１２３は、受信したデータフレームについてエラーチェックを行う（ＳＴＥＰ１００５）。
【００７１】
ディスクアダプタ１２３は、エラーチェックの結果、当該受信したデータフレームにエラーがないと判断する場合には（ＳＴＥＰ１００５のＮｏ）、当該受信したデータフレームをプロトコル変換した後、メモリユニット１２５に書き込む（ＳＴＥＰ１００６）。例えば、コマンドが読み出しコマンドであれば、ハードディスクドライブ１１１の所定の領域から読み出されたデータがメモりユニット１２５のキャッシュ領域に書き込まれることになる。
【００７２】
これに対して、ディスクアダプタ１２３は、当該受信したデータフレームにエラーがあると判断する場合には（ＳＴＥＰ１００５のＹｅｓ）、以下で詳述される障害回復処理を行う（ＳＴＥＰ１００７）。つまり、受信したデータフレームにエラーパターンが含まれているということは、データフレームの伝送経路のどこかで障害が発生している可能性があるということである。障害回復処理の後、ディスクアダプタ１２３は、データフレームの再送を試みる（ＳＴＥＰ１００３）。
【００７３】
障害回復処理は、障害が発生したデバイス及びその部位（障害部位）を特定する処理及び特定した障害部位を迂回した新たなコネクションパスを構築する処理を含む。図１１は、本発明の一実施形態に係るディスクコントローラ１２０のディスクアダプタ１２３による障害回復処理を説明するためのフローチャートである。
【００７４】
すなわち、同図に示すように、ディスクアダプタ１２３は、受信したデータフレームにエラーがあると判断する場合、ポートを介してエラー情報送信要求をブロードキャスト送信する（ＳＴＥＰ１１０１）。ブロードキャスト送信は、コネクションパス上の全てのデバイスを送信先とする送信である。これにより、エラー情報送信要求は、ディスクアダプタ１２３に縦列に接続された全てのスイッチデバイス１３に送信されることになる。エラー情報送信要求を受信したスイッチデバイス１３は、自身のエラーレジスタ１３４に格納されているエラー情報を上位のスイッチデバイス１３に送信するとともに、エラー情報送信要求を下位のスイッチデバイス１３に転送する。
【００７５】
ディスクアダプタ１２３は、エラー情報送信要求に応答して各スイッチデバイス１３から送信されてくるエラー情報を受信する（ＳＴＥＰ１１０２）。本実施形態では、各スイッチデバイス１３のエラーレジスタ１３４に保持されているエラー情報が収集される。エラーが検出されなかったスイッチデバイス１３から送信されるエラー情報は、「エラーなし」を示すステータスを含んでいる。
【００７６】
次に、ディスクアダプタ１２３は、当該収集したエラー情報に基づいて障害部位を特定する（ＳＴＥＰ１１０３）。障害部位は、エラー情報に含まれるスイッチデバイス１３のデバイス名及びポート番号により特定される。続いて、ディスクアダプタ１２３は、特定した障害部位を含む障害情報を作成し、これを管理装置４に送信する（ＳＴＥＰ１１０４）。これを受けて、管理装置４は、ユーザインターフェース上に障害情報を表示する。
【００７７】
ディスクアダプタ１２３は、次に、特定した障害部位を迂回したコネクションパスを再構築するため、メモリユニットに記憶されているコネクションパス再構築テーブル８００を参照し、特定された障害部位の組み合わせ（障害パターン８０１）からコネクションパス再構築パターン８０２を特定する（ＳＴＥＰ１１０５）。そして、ディスクアダプタ１２３は、特定したコネクションパス再構築パターン８０２に従って、コネクションパスマップ６００を更新する（ＳＴＥＰ１１０６）。
【００７８】
以上のように、ストレージデバイス１１内のコネクションパス内の障害部位に応じて、これを迂回した新たなコネクションパスが構築され、ストレージサブシステム１は、二重化構成を最大限確保しつつ、ストレージサービスの運用を継続することができる。
【００７９】
図１２は、本発明の一実施形態に係るストレージサブシステム１のバックエンドにおけるＩ／Ｏ処理に伴うエラー検出時の処理を説明するためのシーケンスである。
【００８０】
ディスクコントローラ１２０のディスクアダプタ１２３は、メモリユニット１２５からコマンドを取り出すと、所定のプロトコル変換を行った後、縦列接続された最上位のスイッチデバイス１３に送信する（ＳＴＥＰ１２０１）。
【００８１】
最上位のスイッチデバイス１３は、当該コマンドを受信すると（ＳＴＥＰ１２０２）、受信エラーチェックを行い、ヘッダ情報に従って送信先を選択し、さらに送信エラーチェックを行って（ＳＴＥＰ１２０３）、下位のスイッチデバイス１３に送出する（ＳＴＥＰ１２０４）。下位のスイッチデバイス１３では、同様に、当該コマンドを受信すると、受信エラーチェックを行い、ヘッダ情報に従って送信先を選択し、さらに送信エラーチェックを行って、より下位のスイッチデバイス１３に送出する。また、各スイッチデバイス１３は、当該コマンドの送信先が自身に接続されたドライブユニット１１０である場合には、当該コマンドをドライブユニット１１０に送出する。
【００８２】
ドライブユニット１１０は、当該コマンドを受信すると（ＳＴＥＰ１２０５）、当該コマンドに基づくアクセス処理を行って（ＳＴＥＰ１２０６）、当該コマンドに対する処理結果（コマンド応答）をスイッチデバイス１３に送信する（ＳＴＥＰ１２０７）。コマンド応答は、例えばコマンドが書き込みコマンドであれば、書き込み成功ステータスである。また、例えばコマンドが読み出しコマンドであれば、コマンド応答は、ハードディスクドライブ１１１から読み出されたデータとなる。スイッチデバイス１３は、コマンド応答を受信すると（ＳＴＥＰ１２０８）、同様に、受信エラーチェックを行い、ヘッダ情報に従って送信先を選択し、さらに送信エラーチェックを行って（ＳＴＥＰ１２０９）、上位のスイッチデバイス１３に送出する（ＳＴＥＰ１２１０）。このようにして、ディスクアダプタ１２３は、一つ以上のスイッチデバイス１３を介して、ドライブユニット１１０からコマンド応答を受信する（ＳＴＥＰ１２１１）。
【００８３】
コマンド応答を受信したディスクアダプタ１２３は、受信エラーチェックを行う（ＳＴＥＰ（ＳＴＥＰ１２１２）。本例では、コマンド応答に、エラーが検出されたとする。ディスクアダプタ１２３は、エラーを検出すると、エラー情報送信要求をブロードキャスト送信する（ＳＴＥＰ１２１３）。ブロードキャスト送信は、全てのスイッチデバイス１３を送信先とする送信である。
【００８４】
スイッチデバイス１３は、エラー情報送信要求を受信すると（ＳＴＥＰ１２１４）、自身のエラーレジスタ１３４に格納されているエラー情報を上位のスイッチデバイス１３に送信するとともに（ＳＴＥＰ１２１５）、エラー情報送信要求を下位のスイッチデバイス１３に転送する（ＳＴＥＰ１２１６）。エラー情報送信要求を受信した下位のスイッチデバイス１３は、同様に、自身のエラーレジスタ１３４に格納されているエラー情報を上位のスイッチデバイス１３に送信するとともに、エラー情報送信要求をより下位のスイッチデバイスに転送する。最下位のスイッチデバイス１３は、エラー情報送信要求を受信すると（ＳＴＥＰ１２１７）、自身のエラーレジスタ１３４に格納されているエラー情報を上位のスイッチデバイス１３に送信する（ＳＴＥＰ１２１８）。また、各スイッチデバイス１３は、下位のスイッチデバイス１３からエラー情報を受信すると（ＳＴＥＰ１２１９）、これを上位のスイッチデバイス１３に転送する（ＳＴＥＰ１２２０）。このようにして、ディスクアダプタ１２３は、コネクションパス上の全てのスイッチデバイス１３から、エラー情報を収集する（ＳＴＥＰ１２２１）。
【００８５】
次に、本実施形態の障害回復処理によるコネクションパスの再構築の具体例を説明する。図１３は、本発明の一実施形態に係るストレージサブシステム１におけるバックエンドを模式的に示す図である。
【００８６】
同図に示すように、本実施形態のストレージサブシステム１におけるバックエンドは、二重化されたディスクコントローラ１２０のディスクアダプタ１２３が、４つのスイッチデバイス１３を縦列に接続し、各スイッチデバイス１３が、ドライブユニット１１０を接続したコネクションパスを構成している。このようなバックエンドインターフェースの構成は、例えば、図６及び７に示したコネクションパスマップ６００として示される。
【００８７】
以下の説明では、第１のディスクコントローラ１２０のディスクアダプタ１２３を「ＤＫＡ−１」といい、これに接続された４つのスイッチデバイス１３をそれぞれ「Ｓｗｉｔｃｈ−１１」、「Ｓｗｉｔｃｈ−１２」、「Ｓｗｉｔｃｈ−１３」、及び「Ｓｗｉｔｃｈ−１４」というものとする。また、第２のディスクコントローラ１２０のディスクアダプタ１２３を「ＤＫＡ−２」といい、これに接続された４つのスイッチデバイス１３をそれぞれ「Ｓｗｉｔｃｈ−２１」、「Ｓｗｉｔｃｈ−２２」、「Ｓｗｉｔｃｈ−２３」、及び「Ｓｗｉｔｃｈ−２４」というものとする。さらに、「Ｓｗｉｔｃｈ−１１」及び「Ｓｗｉｔｃｈ−２１」に接続されたドライブユニット１１０を「ＨＤＤ＃１」及び「ＨＤＤ＃２」、「Ｓｗｉｔｃｈ−１２」及び「Ｓｗｉｔｃｈ−２２」に接続されたドライブユニットを「ＨＤＤ＃３」及び「ＨＤＤ＃４」、「Ｓｗｉｔｃｈ−１３」及びＳｗｉｔｃｈ−２３」に接続されたドライブユニットを「ＨＤＤ＃５」及び「ＨＤＤ＃６」、及び「Ｓｗｉｔｃｈ−１４」及び「Ｓｗｉｔｃｈ−２４」に接続されたドライブユニットを「ＨＤＤ＃７」及び「ＨＤＤ＃８」というものとする。また、図中、各スイッチデバイス１３内の＃に続く数字は、ポート１３１１のポート番号を示す。さらに、実線矢印は、当該ポート１３１１の状態が有効になっていることを示し、破線矢印は、当該ポート１３１１の状態が無効になっていることを示す。
（具体例１）
【００８８】
今、図１４に示すように、Ｓｗｉｔｃｈ−１２のポート番号＃１に障害が発生したとする。ＤＫＡ−１は、上述したように、エラー情報送信要求を送信し、障害部位を認識すると、図８に示すようなコネクションパス再構築テーブル８００を参照し、障害部位を迂回するために必要なコネクションパス再構築パターン８０２を決定する。本例では、Ｓｗｉｔｃｈ−１２のポート番号＃１の障害であるため、１行目に示すコネクションパス再構築パターンに決定される。従って、ＤＫＡ−１は、Ｓｗｉｔｃｈ−１１のポート番号＃５、Ｓｗｉｔｃｈ−１２のポート番号＃５、Ｓｗｉｔｃｈ−２１のポート番号＃５、及びＳｗｉｔｃｈ−２２のポート番号＃５をそれぞれ有効化するとともに、Ｓｗｉｔｃｈ−１１のポート番号＃４及びＳｗｉｔｃｈ−１２のポート番号＃４を無効化する。これにより、ＤＫＡ−１とＳｗｉｔｃｈ１２との間は、Ｓｗｉｔｃｈ−１１、Ｓｗｉｔｃｈ−２１、及びＳｗｉｔｃｈ−２２を通る迂回パスが構築される（図中の２点鎖線で示される）。図１５及び１６は、このときのコネクションパスマップ６００を示している。
（具体例２）
【００８９】
図１７に示すように、Ｓｗｉｔｃｈ−１２のポート番号＃１及び＃５に障害が発生したとする。この場合は、ＤＫＡ−１は、図８に示すようなコネクションパス再構築テーブル８００に従って、Ｓｗｉｔｃｈ−１１のポート番号＃５、Ｓｗｉｔｃｈ−１３のポート番号＃５、Ｓｗｉｔｃｈ−２１のポート番号＃５、及びＳｗｉｔｃｈ−２３のポート番号＃５をそれぞれ有効化するとともに、Ｓｗｉｔｃｈ−１１のポート番号＃４及びＳｗｉｔｃｈ−１２のポート番号＃４を無効化する。これにより、ＤＫＡ−１とＳｗｉｔｃｈ１３との間は、Ｓｗｉｔｃｈ−１１、Ｓｗｉｔｃｈ−２１、Ｓｗｉｔｃｈ−２２、及びＳｗｉｔｃｈ−２３を通る迂回パスが構築される。
（具体例３）
【００９０】
図１８に示すように、Ｓｗｉｔｃｈ−１２のポート番号＃４に障害が発生したとする。この場合は、ＤＫＡ−１は、Ｓｗｉｔｃｈ−１２のポート番号＃５、Ｓｗｉｔｃｈ−１３のポート番号＃５、Ｓｗｉｔｃｈ−２２のポート番号＃５、及びＳｗｉｔｃｈ−２３のポート番号＃５をそれぞれ有効化するとともに、Ｓｗｉｔｃｈ−１２のポート番号＃４及びＳｗｉｔｃｈ−１３のポート番号＃４を無効化する。これにより、ＤＫＡ−１とＳｗｉｔｃｈ１３との間は、Ｓｗｉｔｃｈ−１１、Ｓｗｉｔｃｈ−１２、Ｓｗｉｔｃｈ−２２、Ｓｗｉｔｃｈ−２３を通る迂回パスが構築される。
（具体例４）
【００９１】
図１９に示すように、Ｓｗｉｔｃｈ−１２のポート番号＃４及び＃５に障害が発生したとする。この場合は、ＤＫＡ−１は、Ｓｗｉｔｃｈ−１１のポート番号＃５、Ｓｗｉｔｃｈ−１３のポート番号＃５、Ｓｗｉｔｃｈ−２１のポート番号＃５、及びＳｗｉｔｃｈ−２３のポート番号＃５をそれぞれ有効化するとともに、Ｓｗｉｔｃｈ−１１のポート番号＃４、及びＳｗｉｔｃｈ−１３のポート番号＃１を無効化する。これにより、ＤＫＡ−１とＳｗｉｔｃｈ１２との間のパスを維持しつつ、ＤＫＡ−１とＳｗｉｔｃｈ１３との間は、Ｓｗｉｔｃｈ−１１、Ｓｗｉｔｃｈ−２１、Ｓｗｉｔｃｈ−２２、及びＳｗｉｔｃｈ−２３を通る迂回パスが構築される。
（具体例５）
【００９２】
図２０に示すように、Ｓｗｉｔｃｈ−１２のポート番号＃１及び＃４に障害が発生したとする。この場合は、ＤＫＡ−１は、Ｓｗｉｔｃｈ−１１のポート番号＃５、Ｓｗｉｔｃｈ−１２のポート番号＃５、Ｓｗｉｔｃｈ−１３のポート番号＃５、Ｓｗｉｔｃｈ−２１のポート番号＃５、Ｓｗｉｔｃｈ−２２のポート番号＃５、及びＳｗｉｔｃｈ−２３のポート番号＃５をそれぞれ有効化するとともに、Ｓｗｉｔｃｈ−１１のポート番号＃４、Ｓｗｉｔｃｈ−１２のポート番号＃１及び＃４、並びにＳｗｉｔｃｈ−１３のポート番号＃４を無効化する。これにより、ＤＫＡ−１とＳｗｉｔｃｈ１２との間は、Ｓｗｉｔｃｈ−１１、Ｓｗｉｔｃｈ−２１、及びＳｗｉｔｃｈ−２２のを通る迂回パスが構築されるとともに、ＤＫＡ−１とＳｗｉｔｃｈ１３との間は、Ｓｗｉｔｃｈ−１１、Ｓｗｉｔｃｈ−２１、Ｓｗｉｔｃｈ−２２、及びＳｗｉｔｃｈ−２３を通る迂回パスが構築される。
（具体例６）
【００９３】
図２１に示すように、Ｓｗｉｔｃｈ−１２のポート番号＃１、＃４、及び＃５に障害が発生したとする。この場合は、ＤＫＡ−１は、Ｓｗｉｔｃｈ−１１のポート番号＃５、Ｓｗｉｔｃｈ−１３１のポート番号＃５、Ｓｗｉｔｃｈ−２１のポート番号＃５、及びＳｗｉｔｃｈ−２３のポート番号＃５をそれぞれ有効化するとともに、Ｓｗｉｔｃｈ−１１のポート番号＃４及びＳｗｉｔｃｈ−２１のポート番号＃１及び＃４を無効化する。これにより、ＤＫＡ−１とＳｗｉｔｃｈ１３との間は、Ｓｗｉｔｃｈ−１１、Ｓｗｉｔｃｈ−２１、Ｓｗｉｔｃｈ−２２、及びＳｗｉｔｃｈ−２３を通る迂回パスが構築される。
［第２の実施形態］
【００９４】
図２２は、本発明の一実施形態に係るストレージサブシステムの構成を示す図である。
【００９５】
同図に示すように、本実施形態のストレージサブシステム１は、各ディスクコントローラ１２０のディスクアダプタ１２３が、ストレージデバイス１１に対する複数のチャネル（図では２チャネル）を制御するように構成されている。各チャネルにおける各スイッチデバイス１３は、上記実施形態と同様に、縦列に接続され、それぞれドライブユニット１１０を接続しているが、各スイッチデバイス１３は、同一のディスクアダプタ１２３の他チャネルにおける対応するスイッチデバイス１３と接続されている。このような構成に従って、コネクションパスマップ４００及びコネクションパス再構築テーブル８００の内容は定義され。その他の各部の構成及び処理内容については、上記実施形態と同様である。
【００９６】
図２３は、本発明の一実施形態に係るストレージサブシステム１におけるバックエンドを模式的に示す図であり、具体的には、同図は、Ｓｗｉｔｃｈ−１２で示されるスイッチデバイス１３のポート番号＃１で示されるポート１３１１に障害が発生した場合の再構築されたコネクションパスを示している。ディスクアダプタ１２３による障害回復処理は、上述した実施形態と同様である。
【００９７】
すなわち、ＤＫＡ−１は、Ｓｗｉｔｃｈ−１２のポート番号＃１が障害部位であることを特定すると、所定のコネクションパス再構築テーブルに従って、コネクションパスを再構築する。本例では、ＤＫＡ−１は、Ｓｗｉｔｃｈ−１１のポート番号＃５、Ｓｗｉｔｃｈ−１２のポート番号＃５、Ｓｗｉｔｃｈ−３１のポート番号＃５、及びＳｗｉｔｃｈ−３２のポート番号＃５をそれぞれ有効化するとともに、Ｓｗｉｔｃｈ−１１のポート番号＃４及びＳｗｉｔｃｈ−１２のポート番号＃４をそれぞれ無効化する。
【００９８】
ここで特記すべきことは、迂回するパスを形成する対応するスイッチデバイス１３どうしは、同一のディスクアダプタ１２３の配下に属している点である。すなわち、一方のディスクアダプタ１２３に属するいずれかのチャネル内のスイッチデバイス１３でエラーが検出された場合であっても、他方のディスクアダプタ１２３は再構築されたコネクションパスに介在しない。従って、二重化されたディスクコントローラ１２０におけるディスクアダプタ１２３間で競合が発生しないため、より効率的にデータフレームを転送することが可能になる。
［第３の実施形態］
【００９９】
本実施形態は、パススイッチデバイス１３のポート１３１１がビジー状態になった場合に、コネクションパスの再構築処理を行うものである。本実施形態は、上記第１の実施形態及び第２の実施形態で示されたストレージサブシステム１の構成のいずれにも適用することができる。
【０１００】
図２４は、本発明の一実施形態に係るディスクコントローラ１２０のディスクアダプタ１２３によるＩ／Ｏ処理を説明するためのフローチャートである。本実施形態のディスクアダプタ１２３によるＩ／Ｏ処理は、データフレームの転送遅延を検出する処理を含んでいる点が、上記の実施形態と異なっている。
【０１０１】
すなわち、同図に示すように、ディスクアダプタ１２３は、メモリユニット１２５に格納されたコマンドを取り出して、所定のプロトコル変換によりデータフレームを作成し、内部バッファに格納する（ＳＴＥＰ２４０１）。
【０１０２】
ディスクアダプタ１２３は、次に、ポートを介して当該データフレームを送出する（ＳＴＥＰ２４０２）。ディスクアダプタ１２３は、上記実施形態と同様に、送信データフレームについてのエラーチェックを行っても良い。これにより、当該データフレームは、スイッチデバイス１３を介して、当該データフレームのヘッダ情報に従って転送され、最終的には、送信先のドライブユニット１１０に送信される。
【０１０３】
ディスクアダプタ１２３は、データフレームの送信後、所定の時間内にコマンド応答があるか監視する（ＳＴＥＰ２４０３）。所定の時間以内にコマンド応答がない場合には、タイムアウトと判断される。ディスクアダプタ１２３は、所定の時間内にコマンド応答を受信した場合には（ＳＴＥＰ２４０３のＮｏ）、当該受信したデータフレームを内部バッファに格納し（ＳＴＥＰ２４０４）、所定のプロトコル変換した後、メモリユニット１２５に書き込む（ＳＴＥＰ２４０５）。
【０１０４】
これに対して、ディスクアダプタ１２３は、所定の時間内にコマンド応答を受信しなかった場合には（ＳＴＥＰ２４０３のＹｅｓ）、障害が発生しているものとして、以下で詳述される障害回復処理を行う（ＳＴＥＰ２４０６）。障害回復処理の後、ディスクアダプタ１２３は、データフレームの再送を試みる（ＳＴＥＰ２４０２）。
【０１０５】
図２５は、本発明の一実施形態に係るディスクコントローラ１２０のディスクアダプタ１２３による障害回復処理を説明するためのフローチャートである。
【０１０６】
すなわち、同図に示すように、ディスクアダプタ１２３は、受信したデータフレームにエラーがあると判断する場合、ポートを介してエラー情報送信要求をブロードキャスト送信する（ＳＴＥＰ２５０１）。これにより、ディスクアダプタ１２３は、全てのスイッチデバイス１３からエラー情報を収集することができる（ＳＴＥＰ２５０２）。この場合、エラー情報収集のパス内にビジー状態のポート１３１１が含まれている可能性があるため、応答（エラー情報）を受けるまでのタイムアウト時間を通常のコマンド送信の際のタイムアウト時間に比べて長くすることが好ましい。本実施形態では、スイッチデバイス１３から送信されるエラー情報は、各ポート１３１１の送受信エラー情報及び各ポート１３１１のビジー情報を含んでいる。送受信エラー情報は、図５で示されたエラー情報に等価である。
【０１０７】
次に、ディスクアダプタ１２３は、当該収集したエラー情報に送受信エラー情報が含まれているか否かを判断する（ＳＴＥＰ２５０３）。ディスクアダプタ１２３は、当該収集したエラー情報に送受信エラー情報が含まれている場合には（ＳＴＥＰ２５０３のＹｅｓ）、当該収集したエラー情報に基づいて障害部位を特定する（ＳＴＥＰ２５０４）。以降の処理であるＳＴＥＰ２５０５〜ＳＴＥＰ２５０７は、図１１に示したＳＴＥＰ１１０４〜ＳＴＥＰ１１０６と同様であるため、説明を省略する。
【０１０８】
ディスクアダプタ１２３は、当該収集したエラー情報に送受信エラー情報が含まれていないと判断する（ＳＴＥＰ２５０３のＮｏ）、当該収集したエラー情報に含まれるビジー情報に基づいて、ビジー状態にある部位を障害部位として特定する（ＳＴＥＰＳＴＥＰ２５０８）。ディスクアダプタ１２３は、次に、特定した障害部位を迂回したコネクションパスを再構築するため、メモリユニットに記憶されているコネクションパス再構築テーブル８００を参照し、コネクションパス再構築パターン８０２を特定する（ＳＴＥＰ２５０９）。
【０１０９】
続いて、ディスクアダプタ１２３は、現在のコネクションパスマップ６００のバックアップを作成するとともに、特定したコネクションパス再構築パターン８０２に従って、コネクションパスマップ６００を更新する（ＳＴＥＰ２５１０）。そして、ディスクアダプタ１２３は、ビジー状態監視処理を別に起動して（ＳＴＥＰ２５１０）、当該障害回復処理を終了する。ビジー状態監視処理は、ビジー状態にあるとされたポート１３１１のビジー状態が解消したか否かを監視し、ビジー状態が解消したと判断する場合に、もとのコネクションパスマップに復元する。
【０１１０】
図２６は、本発明の一実施形態に係るディスクアダプタ１２３によるビジー状態監視処理を説明するためのフローチャートである。ビジー状態監視処理は、上述したＩ／Ｏ処理とは独立に（別スレッドで）実行される。
【０１１１】
すなわち、同図に示すように、ディスクアダプタ１２３は、一定時間経過するごとに（ＳＴＥＰ２６０１のＹｅｓ）、ビジー状態とされたポート１３１１のビジー状態が解消したか否かをチェックする（ＳＴＥＰ２６０２）。ディスクアダプタ１２３は、ポート１３１１のビジー状態が解消したと判断する場合には（ＳＴＥＰ２６０２のＹｅｓ）、再構築されたコネクションパスマップを、バックアップしておいたコネクションパスマップ６００に置き換える（ＳＴＥＰ２６０３）。これにより、ストレージデバイス１１内のコネクションパスは、ビジー状態が発生する前のものに復元されることになる。
【０１１２】
以上のように、ストレージデバイス１１におけるコネクションパス内の部位のビジー状態に応じて、これを迂回した新たなコネクションパスが構築され、ストレージサブシステム１は、二重化構成を最大限確保しつつ、ストレージサービスの運用を継続することができる。
【０１１３】
また、ビジー状態が解消した場合には、ストレージサブシステム１は、もとのコネクションパスに復元するので、より柔軟かつ効果的なストレージサービスの運用をすることができる。
【０１１４】
なお、本実施形態では、ディスクアダプタ１２３は、所定の時間内にコマンド応答を受信した場合には、エラーチェックをせずに、メモリユニット１２５に当該コマンド応答を書き込んだが、上記実施形態と同様に、エラーチェックを行い、当該エラーチェックの結果に従って、障害回復処理を行うようにしてもよい。
［その他の実施形態］
【０１１５】
上記各実施形態は、本発明を説明するための例示であり、本発明をこれらの実施形態にのみ限定する趣旨ではない。本発明は、その要旨を逸脱しない限り、さまざまな形態で実施することができる。例えば、上記実施形態では、各種プログラムの処理をシーケンシャルに説明したが、特にこれにこだわるものではない。従って、処理結果に矛盾が生じない限り、処理の順序を入れ替えまたは並行動作するように構成しても良い。
【０１１６】
また、上記実施形態では、ディスクアダプタ１２３が障害回復処理を行うように構成したが、特にこれにこだわるものではない。例えば、ディスクアダプタ１２３に代えて、プロセッサ１２４が障害回復処理等を行うように構成しても良い。
【０１１７】
さらに、上記実施形態では、ドライブユニット１１０とスイッチデバイス１３とを別体で構成したが、スイッチデバイス１３の機能を含むようにドライブユニット１１０を構成してもよい。
【産業上の利用可能性】
【０１１８】
本発明は、冗長化パス構成を採用し、複数のスイッチデバイスを用いてコネクションパスを形成するストレージサブシステムに広く適用することができる。
【図面の簡単な説明】
【０１１９】
【図１】本発明の一実施形態に係るストレージサブシステムの全体構成を説明するための図である。
【図２】本発明の一実施形態に係るディスクコントローラのメモリユニットの内容の一例を示す図である。
【図３】本発明の一実施形態に係るストレージサブシステムのスイッチデバイスの構成を説明するための図である。
【図４】本発明の一実施形態に係るスイッチデバイスのエラーパターンテーブルの一例を示す図である。
【図５】本発明の一実施形態に係るスイッチデバイスのエラーレジスタの内容を説明するための図である。
【図６】本発明の一実施形態に係るディスクコントローラに保持されるコネクションパスマップの一例を示す図である。
【図７】本発明の一実施形態に係るディスクコントローラに保持されるコネクションパスマップの一例を示す図である。
【図８】本発明の一実施形態に係るディスクコントローラに保持されるコネクションパス再構築テーブルの一例を示す図である。
【図９】本発明の一実施形態に係るスイッチデバイスにおけるエラーチェック処理を説明するためのフローチャートである。
【図１０】本発明の一実施形態に係るディスクコントローラによるＩ／Ｏ処理を説明するためのフローチャートである。
【図１１】本発明の一実施形態に係るディスクコントローラによる障害回復処理を説明するためのフローチャートである。
【図１２】本発明の一実施形態に係るストレージサブシステムのバックエンドにおけるＩ／Ｏ処理に伴うエラー検出時の処理を説明するためのシーケンスである。
【図１３】本発明の一実施形態に係るストレージサブシステムにおけるバックエンドを模式的に示す図である。
【図１４】本発明の一実施形態に係るストレージサブシステムにおけるバックエンドを模式的に示す図である。
【図１５】本発明の一実施形態に係るディスクコントローラに保持されるコネクションパスマップの一例を示す図である。
【図１６】本発明の一実施形態に係るディスクコントローラに保持されるコネクションパスマップの一例を示す図である。
【図１７】本発明の一実施形態に係るストレージサブシステムにおけるバックエンドを模式的に示す図である。
【図１８】本発明の一実施形態に係るストレージサブシステムにおけるバックエンドを模式的に示す図である。
【図１９】本発明の一実施形態に係るストレージサブシステムにおけるバックエンドを模式的に示す図である。
【図２０】本発明の一実施形態に係るストレージサブシステムにおけるバックエンドを模式的に示す図である。
【図２１】本発明の一実施形態に係るストレージサブシステムにおけるバックエンドを模式的に示す図である。
【図２２】本発明の一実施形態に係るストレージサブシステムの構成を示す図である。
【図２３】本発明の一実施形態に係るストレージサブシステム１におけるバックエンドを模式的に示す図である。
【図２４】本発明の一実施形態に係るディスクコントローラによるＩ／Ｏ処理を説明するためのフローチャートである。
【図２５】本発明の一実施形態に係るディスクコントローラによる障害回復処理を説明するためのフローチャートである。
【図２６】本発明の一実施形態に係るディスクコントローラによるビジー状態監視処理を説明するためのフローチャートである。
【符号の説明】
【０１２０】
１…ストレージサブシステム
１２，１２０…ディスクコントローラ
１２１…チャネルアダプタ
１２２…データコントローラ
１２３…ディスクアダプタ
１２４…プロセッサ
１２５…メモリユニット
１２６…ＬＡＮインターフェース
１２７…バス
２Ａ，２Ｂ…ネットワーク
３…ホストコンピュータ
４…管理装置
１１…ストレージデバイス
１１０…ドライブユニット
１１１…ハードディスクドライブ
１１２…制御回路
【図１】
0005127491.tif 000002
【図２】
0005127491.tif 000003
【図３】
0005127491.tif 000004
【図４】
0005127491.tif 000005
【図５】
0005127491.tif 000006
【図６】
0005127491.tif 000007
【図７】
0005127491.tif 000008
【図９】
0005127491.tif 000009
【図１０】
0005127491.tif 000010
【図１１】
0005127491.tif 000011
【図１２】
0005127491.tif 000012
【図１３】
0005127491.tif 000013
【図１４】
0005127491.tif 000014
【図１７】
0005127491.tif 000015
【図１８】
0005127491.tif 000016
【図１９】
0005127491.tif 000017
【図２０】
0005127491.tif 000018
【図２１】
0005127491.tif 000019
【図２２】
0005127491.tif 000020
【図２３】
0005127491.tif 000021
【図２４】
0005127491.tif 000022
【図２５】
0005127491.tif 000023
【図２６】
0005127491.tif 000024
【図８】
0005127491.tif 000025
【図１５】
0005127491.tif 000026
【図１６】
0005127491.tif 000027