(57)【特許請求の範囲】
【請求項１】
ホスト装置とのデータの通信を制御する上位通信制御部と、
複数の記憶デバイスとのデータの通信を制御する下位通信制御部と、
複数の通信ポートを介してそれぞれ異なる複数の記憶デバイスと接続し、さらに前記下位通信制御部とも通信ポートを介して接続される複数のスイッチ回路と、前記各記憶デバイスと前記下位通信制御部との間のデータ転送を制御する制御回路と、を有する接続制御部と、
を備え、
前記接続制御部は、前記各通信ポートを流れるデータを前記各スイッチ回路内で監視し、前記各記憶デバイス毎のエラーを前記各スイッチ回路内でそれぞれ検出し、前記各記憶デバイス毎のエラーカウント値を含むエラー情報を前記制御回路内で記憶するエラー監視部を備え、
前記エラー監視部は、
前記下位通信制御部からの要求を受領した場合、前記エラー情報を前記制御回路から前記下位通信制御部に送信し、
前記エラーカウント値が所定の閾値を超えた場合、前記エラー情報を前記制御回路から前記下位通信制御部に送信し、
前記下位通信制御部は、前記エラーカウント値に基づいて、障害の発生した記憶デバイスを特定する
ことを特徴とする記憶制御装置。
【請求項２】
前記下位通信制御部は、前記各記憶デバイスとの通信結果に基づいてエラーが発生したか否かを検出し、エラーを検出した場合は、前記エラー監視部に前記エラー情報の送信を要求する請求項１に記載の記憶制御装置。
【請求項３】
前記下位通信制御部は、前記障害の発生した記憶デバイスを特定し、この障害の発生した記憶デバイスに記憶されているデータを回復させるための障害回復処理を実行する請求項１に記載の記憶制御装置。
【請求項４】
前記エラー監視部は、
前記各スイッチ回路内にそれぞれ設けられ、該各スイッチ回路が有する前記各通信ポートに生じたエラーをそれぞれ検出し、エラー情報として記憶するエラー情報収集部と、
前記制御回路内に設けられ、前記各エラー収集部に記憶された前記エラー情報を所定のタイミングでそれぞれ読み出して保存する中継記憶部と、
前記制御回路内に設けられ、前記下位通信制御部からの要求に応じて、前記中継記憶部に記憶された前記エラー情報を前記下位通信制御部に送信するエラー情報送信部と、を備えて構成される請求項１に記載の記憶制御装置。
【請求項５】
前記エラー監視部は、前記通信ポートを流れるデータのビットパターンが予め設定された所定のエラーパターンに一致する場合に、前記エラーカウント値を増加させるようになっている請求項４に記載の記憶制御装置。
【請求項６】
前記中継記憶部は、予め設定された所定の周期で、前記エラー収集部に前記エラー情報の取得を要求し、
前記エラー情報収集部は、前記中継記憶部からの前記要求に応じて、前記各エラーカウンタのエラーカウント値を前記レジスタに転送させ、前記レジスタに記憶された前記各エラーカウント値を前記中継記憶部に転送させるようになっている請求項５に記載の記憶制御装置。
【請求項７】
前記接続制御部は、前記下位通信制御部に直接的または間接的に接続される前記通信ポートを、前記各記憶デバイスにそれぞれ接続される他の通信ポートのいずれか一つに接続させる請求項１に記載の記憶制御装置。
【請求項８】
前記各スイッチ回路は、前記各記憶デバイスと前記各通信ポートとの対応関係を示すポート管理テーブルをそれぞれ備えており、このポート管理テーブルを用いて、前記下位通信制御部と前記各通信ポートのうち所定の通信ポートとをスイッチ接続させるようになっている請求項４に記載の記憶制御装置。
【請求項９】
前記各スイッチ回路は、直列に接続されている請求項４に記載の記憶制御装置。
【請求項１０】
前記各スイッチ回路は、所定のスイッチ回路を中心として、この所定のスイッチ回路に他の全てのスイッチ回路がそれぞれ接続されている請求項４に記載の記憶制御装置。
【請求項１１】
前記各スイッチ回路は、リング状に接続されている請求項４に記載の記憶制御装置。
【請求項１２】
前記エラー監視部は、予め設定された所定のエラーを検出した場合は、前記所定のエラーを検出した旨を前記下位通信制御部に直ちに通知する請求項５に記載の記憶制御装置。
【請求項１３】
前記エラー監視部は、予め設定された所定のテスト用パターンを発生させる信号発生器を備えており、前記各記憶デバイスのうち前記下位通信制御部に接続されていない記憶デバイスに前記テスト用パターンを供給し、このテスト用パターンに対する記憶デバイスからの応答信号に基づいて、前記エラーを検出するようになっている請求項４に記載の記憶制御装置。
【請求項１４】
ホスト装置とのデータの通信を制御する上位通信制御部と、
複数の記憶デバイスとのデータの通信を制御する下位通信制御部と、
複数の通信ポートを介してそれぞれ異なる複数の記憶デバイスと接続し、さらに前記下位通信制御部とも通信ポートを介して接続される複数のスイッチ回路と、前記各記憶デバイスと前記下位通信制御部との間のデータ転送を制御する制御回路と、を有する接続制御部とを備えた記憶制御装置のエラー情報管理方法であって、
前記接続制御部は、
前記各記憶デバイスにそれぞれ接続される各通信ポートに、予め設定された所定のエラーパターンに一致するビットパターンが出現したか否かを前記スイッチ回路で判定するステップと、
前記エラーパターンに一致するビットパターンが出現した場合は、その通信ポートのエラーカウンタのエラーカウント値を増加させるステップと、
予め設定された所定時間が経過したか否かを判定するステップと、
前記所定時間が経過した場合は、前記各エラーカウンタのエラーカウント値をそれぞれ取得して記憶させるステップと、
前記下位通信制御部から前記各記憶デバイスのいずれかに対するアクセスエラーが検出されたか否かを判定するステップと、
前記アクセスエラーが検出された場合は、前記記憶された各エラーカウント値をそれぞれ取得し、前記取得された各エラーカウント値に基づいて、障害の発生した記憶デバイスを特定するステップと、
前記エラーカウント値が、閾値を超えた場合、前記エラー情報を前記下位通信制御部に送信し、前記取得された各エラーカウント値に基づいて、障害の発生した記憶デバイスを特定するステップと、
を含んだ記憶制御装置のエラー情報管理方法。
【請求項１５】
さらに、前記特定された記憶デバイスに関する情報を外部の管理端末に送信させるステップを備えた請求項１４に記載の記憶制御装置のエラー情報管理方法。
【請求項１６】
さらに、前記特定された記憶デバイスに記憶されているデータを回復させるステップを備えた請求項１５に記載の記憶制御装置のエラー情報管理方法。
【請求項１７】
前記データを回復させるステップは、
前記記憶デバイスのうち未使用の記憶デバイスをいずれか一つ選択するステップと、
前記特定された記憶デバイスとRAIDグループを構成する他の記憶デバイスに記憶されているデータに基づいて、前記特定された記憶デバイスに記憶されているデータを復元させるステップと、
前記復元されたデータを前記選択された未使用の記憶デバイスに記憶させるステップと、を含んで構成される請求項１６に記載の記憶制御装置のエラー情報管理方法。
【請求項１８】
ホスト装置とのデータの通信を制御する上位通信制御部と、
複数の記憶デバイスとのデータの通信を制御する下位通信制御部と、
前記各記憶デバイスと前記下位通信制御部とをそれぞれ一対一でスイッチ接続させ、かつ、前記各記憶デバイス毎のエラー情報をそれぞれ監視するエラー監視回路を有する接続制御部とを備え、
前記接続制御部は、複数の通信ポートを介してそれぞれ異なる複数の記憶デバイスに接続され、かつ、前記下位通信制御部とも通信ポートを介して接続される複数のスイッチ回路と、これら各スイッチ回路にそれぞれ接続され、前記各記憶デバイスと前記下位通信制御部との間のデータ転送を制御する制御回路とを備えて構成され、
前記エラー監視回路は、
前記各スイッチ回路内にそれぞれ設けられ、該各スイッチ回路が有する前記各通信ポートを流れるデータを監視して、前記各記憶デバイスに生じるエラーをそれぞれ検出し、エラー情報として記憶するエラー情報収集回路と、
前記制御回路内に設けられ、前記各エラー収集回路に記憶された前記エラー情報を所定のタイミングでそれぞれ読み出して保存する中継記憶回路と、
前記制御回路内に設けられ、前記下位通信制御部からの要求に応じて、前記中継記憶回路に記憶された前記エラー情報を前記下位通信制御部に送信するエラー情報送信回路と、を備えて構成されており、かつ、
前記エラー情報収集回路は、
前記通信ポートにそれぞれ設けられ、前記エラーの回数をカウントして記憶するエラーカウンタと、これら各エラーカウンタに記憶されたエラーカウント値を前記エラー情報としてそれぞれ記憶するレジスタとを備えており、
前記各エラーカウンタは、前記通信ポートを流れるデータのビットパターンが予め設定された所定のエラーパターンに一致する場合に、前記エラーカウント値を増加させるようになっており、
前記エラー監視回路は、
前記下位通信制御部からの要求を受領した場合、前記エラー情報を前記中継記憶回路から前記下位通信制御部に送信し、
前記エラーカウント値が所定の閾値を超えた場合、前記エラー情報を前記中継記憶回路から前記下位通信制御部に送信し、
前記下位通信制御部は、前記エラーカウント値に基づいて、障害の発生した記憶デバイスを特定する
記憶制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶制御装置及び記憶制御装置のエラー情報管理方法に関する。
【背景技術】
【０００２】
記憶制御装置は、例えば、ハード記憶デバイス等の記憶デバイスをアレイ状に配設して構成されており、例えば、RAID（Redundant Array of Independent Disks）に基づく記憶領域をホストコンピュータ（以下、ホストと略記する場合がある）に提供する。記憶デバイス群が提供する物理的な記憶領域上には少なくとも１つ以上の論理ボリュームが形成され、この論理ボリュームがホストに提供される。ホストは、所定のコマンドを送信することにより、論理ボリュームに対してデータの書込み、読出しを行う。
【０００３】
複数の記憶デバイスは、ポートバイパスサーキットと呼ばれる回路によって、ディジーチェーンモードで接続される。あるいは、複数の記憶デバイスをクロスバスイッチで接続する技術も知られている（特許文献１）
【特許文献１】特開２００３−３０３０５５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
同一のパス上に存在する複数の記憶デバイスをディジーチェーン方式で接続する場合は、そのうちのいずれか１台の記憶デバイスが故障すると、そのパスに繋がる他の全ての正常な記憶デバイスまでも使用不能となる。パスが切断されてしまうためである。もっとも、セカンダリパス（冗長パス）が用意されている場合は、プライマリパスからセカンダリパスに切り替えることにより、正常な記憶デバイスにアクセス可能である。しかし、パスの切替に時間を必要とするため、記憶制御装置の応答性が低下する。
【０００５】
なお、前記文献に記載の技術では、各記憶デバイスをスイッチ接続させることにより、ディスクアダプタと記憶デバイス間のスループットを増大させている。しかし、前記文献では、記憶デバイスに生じる障害を検出する方法や、障害を回復させる方法についての考察がされておらず、改善の余地がある。
【０００６】
本発明は、上記の問題点に鑑みてなされたもので、その一つの目的は、耐障害性を向上できるようにした記憶制御装置及び記憶制御装置のエラー情報管理方法を提供することにある。本発明の他の目的は、記憶デバイスに生じた障害を検出して自動的に回復させることができ、耐障害性及び使い勝手を向上できるようにした記憶制御装置及び記憶制御装置のエラー情報管理方法を提供することにある。本発明の他の目的は、後述する実施形態の記載から明らかになるであろう。
【課題を解決するための手段】
【０００７】
上記課題を解決すべく、本発明の一つの観点に従う記憶制御装置は、ホスト装置との通信を制御する上位通信制御部と、複数の記憶デバイスとの通信を制御する下位通信制御部と、各記憶デバイスと下位通信制御部とをスイッチ接続させる接続制御部と、を備え、接続制御部は、各記憶デバイス毎のエラー情報をそれぞれ監視するエラー監視部を備えたことを特徴とする。ここで、接続制御部は、下位通信制御部に直接的または間接的に接続される通信ポートを、各記憶デバイスにそれぞれ接続される他の通信ポートのいずれか一つに接続させることができる。本発明の記憶制御装置は、接続制御部の内部で、各記憶デバイスに生じるエラーをそれぞれ監視することにより、アクセス障害またはアクセス障害の予兆を早期に検出することができる。
【０００８】
本発明の実施形態では、エラー監視部は、下位通信制御部からの要求を受領した場合に、エラー情報を下位通信制御部に送信する。即ち、エラー監視部によるエラー情報の監視と下位通信制御部によるエラー情報の取得とは、非同期である。これにより、記憶デバイスにインターミッテントエラーが検出された場合でも、その軽微なエラーによって当該記憶デバイスへのアクセスが中止されたりするのを防止することができる。
【０００９】
本発明の実施形態では、下位通信制御部は、各記憶デバイスとの通信結果に基づいてエラーが発生したか否かを検出し、エラーを検出した場合は、エラー監視部にエラー情報の送信を要求する。即ち、下位通信制御部は、記憶デバイスへのアクセスに障害が検出された場合に、エラー監視部にエラー情報の取得を要求する。従って、下位通信制御部は、アクセス障害の発生した場合にのみエラー情報を取得して、故障した記憶デバイスを特定することができる。
【００１０】
本発明の実施形態では、下位通信制御部は、エラー監視部から取得したエラー情報に基づいて障害の発生した記憶デバイスを特定し、この障害の発生した記憶デバイスに記憶されているデータを回復させるための障害回復処理を実行する。アクセス障害の生じた記憶デバイスを特定して自動的に障害回復処理を行うことにより、耐障害性及び使い勝手が向上する。障害回復処理としては、例えば、障害の発生した記憶デバイスとRAIDグループを構成する他の記憶デバイスからデータ及びパリティを取得し、これらデータ及びパリティに基づいて演算を行うことにより、データを回復させる方法が挙げられる。
【００１１】
本発明の実施形態では、接続制御部は、複数の通信ポートを介してそれぞれ異なる複数の記憶デバイスに接続される複数のスイッチ回路と、これら各スイッチ回路にそれぞれ接続される制御回路とを備えて構成され、エラー監視部は、各スイッチ回路内にそれぞれ設けられ、該各スイッチ回路が有する各通信ポートに生じたエラーをそれぞれ検出し、エラー情報として記憶するエラー情報収集部と、制御回路内に設けられ、各エラー収集部に記憶されたエラー情報を所定のタイミングでそれぞれ読み出して保存する中継記憶部と、制御回路内に設けられ、下位通信制御部からの要求に応じて、中継記憶部に記憶されたエラー情報を下位通信制御部に送信するエラー情報送信部と、を備えて構成される。即ち、各記憶デバイスに接続される各通信ポートに生じたエラーをそれぞれ検出するすることにより、各記憶デバイスのエラー状況を個別に監視することができる。個別のエラー情報は、制御回路内の中継記憶部にいったん記憶させてから、エラー情報送信部を介して下位通信制御部に送信される。例えば、中継記憶部を不揮発性メモリから構成した場合に、接続制御部が記憶制御装置から取り外された場合においても、エラー情報をそのまま保持し続けることができ、その後のエラー解析作業等に役立たせることができる。
【００１２】
本発明の実施形態では、エラー情報収集部は、通信ポートにそれぞれ設けられたエラーカウンタと、これら各エラーカウンタのカウント値をエラー情報としてそれぞれ記憶するレジスタとを備えており、各エラーカウンタは、通信ポートを流れるデータのビットパターンが予め設定された所定のエラーパターンに一致する場合に、カウント値を増加させるようになっている。
【００１３】
本発明の実施形態では、中継記憶部は、予め設定された所定の周期で、エラー収集部にエラー情報の取得を要求し、エラー情報収集部は、中継記憶部からの要求に応じて、各エラーカウンタのカウント値をレジスタに転送させ、レジスタに記憶された各カウント値を中継記憶部に転送させるようになっている。
【００１４】
本発明の実施形態では、各スイッチ回路は、各記憶デバイスと各通信ポートとの対応関係を示すポート管理テーブルをそれぞれ備えており、このポート管理テーブルを用いて、下位通信制御部と各通信ポートのうち所定の通信ポートとをスイッチ接続させるようになっている。
【００１５】
本発明の実施形態では、各スイッチ回路は、直列に接続されている。これに代えて、各スイッチ回路は、所定のスイッチ回路を中心として、この所定のスイッチ回路に他の全てのスイッチ回路がそれぞれ接続されている構成としてもよい。あるいは、各スイッチ回路は、リング状に接続されている構成としてもよい。
【００１６】
本発明の他の実施形態では、エラー監視部は、予め緊急度の高いエラーであるとして設定された所定のエラーを検出した場合は、所定のエラーを検出した旨を下位通信制御部に直ちに通知する。
【００１７】
本発明のさらに別の実施形態では、エラー監視部は、予め設定された所定のテスト用パターンを発生させる信号発生器を備えており、各記憶デバイスのうち下位通信制御部に接続されていない記憶デバイスにテスト用パターンを供給し、このテスト用パターンに対する記憶デバイスからの応答信号に基づいて、エラーを検出するようになっている。
【００１８】
本発明の他の観点に従う記憶制御装置のエラー情報管理方法は、ホスト装置との通信を制御する上位通信制御部と、複数の記憶デバイスとの通信を制御する下位通信制御部と、各記憶デバイスと下位通信制御部とをスイッチ接続させる接続制御部とを備えた記憶制御装置のエラー情報管理方法であって、接続制御部は、各記憶デバイスにそれぞれ接続される各通信ポートに、予め設定された所定のエラーパターンに一致するビットパターンが出現したか否かを判定するステップと、エラーパターンに一致するビットパターンが出現した場合は、その通信ポートのエラーカウンタのカウント値を増加させるステップと、予め設定された所定時間が経過したか否かを判定するステップと、所定時間が経過した場合は、各エラーカウンタのカウント値をそれぞれ取得して記憶させるステップと、下位通信制御部から各記憶デバイスのいずれかに対するアクセスエラーが検出されたか否かを判定するステップと、アクセスエラーが検出された場合は、記憶された各カウント値をそれぞれ取得するステップと、取得された各カウント値に基づいて、障害の発生した記憶デバイスを特定するステップと、を含む。
【００１９】
さらに、特定された記憶デバイスに関する情報を外部の管理端末に送信させるステップを備えてもよい。
【００２０】
さらに、特定された記憶デバイスに記憶されているデータを回復させるステップを備えてもよい。
【００２１】
また、データを回復させるステップは、記憶デバイスのうち未使用の記憶デバイスをいずれか一つ選択するステップと、特定された記憶デバイスとRAIDグループを構成する他の記憶デバイスに記憶されているデータに基づいて、特定された記憶デバイスに記憶されているデータを復元させるステップと、復元されたデータを選択された未使用の記憶デバイスに記憶させるステップと、を含んで構成してもよい。
【００２２】
本発明の手段、機能、ステップの全部または一部は、コンピュータシステムにより実行されるコンピュータプログラムとして構成可能な場合がある。本発明の構成の全部または一部がコンピュータプログラムから構成された場合、このコンピュータプログラムは、例えば、各種記憶媒体に固定して配布等することができ、あるいは、通信ネットワークを介して送信することもできる。
【発明を実施するための最良の形態】
【００２３】
図１は、本発明の実施形態の全体概要を示す構成説明図である。本実施形態の記憶制御装置１は、コントローラ２及び記憶部３を備えており、ホストＨにデータストレージサービスを提供する。
【００２４】
コントローラ２は、記憶制御装置１の全体動作を制御するものである。コントローラ２は、例えば、上位通信制御部２Ａと、メモリ部２Ｂ及び下位通信制御部２Ｃを備えて構成することができる。
【００２５】
上位通信制御部２Ａは、ホストＨとの間の通信を制御するものである。ホストＨは、例えば、サーバコンピュータ、メインフレーム等のコンピュータ装置として構成され、記憶制御装置１にコマンドを発行する。上位通信制御部２Ａは、ホストＨから受領したコマンドに応じた処理を行う。
【００２６】
下位通信制御部２Ｃは、記憶部３の各ディスクドライブ５との間の通信を制御するものである。下位通信制御部２Ｃは、ホストＨから要求されたデータを所定のディスクドライブ５から読み出して、メモリ部２Ｂに格納させる。上位通信制御部２Ａは、メモリ部２Ｂに記憶されたデータを読み出して、このデータをホストＨに送信する。また、下位通信制御部２Ｃは、ホストＨから書込みを要求された場合、ライトデータを所定のディスクドライブ５に書き込むようになっている。さらに、下位通信制御部２Ｃには、障害回復制御部２Ｃ１が設けられている。障害回復制御部２Ｃ１は、ディスクドライブ５へのアクセス障害が検出された場合に、この障害から回復するための処理を実行する。
【００２７】
記憶部３の構成を説明する。記憶部３は、ホストＨによって使用される種々のデータを記憶するためのものである。記憶部３は、例えば、複数のスイッチ回路４と、複数のディスクドライブ５と、接続用基板６及びエラー監視部７を備えて構成できる。そして、ドライブ接続制御部８は、スイッチ回路４及びエラー監視部７を含んで構成される。
【００２８】
スイッチ回路４は、例えば、一つの共通ポート４Ａ及び複数のデバイス接続ポート４Ｂを備えて構成される。図中では、一つのスイッチ回路４に４つのディスクドライブ５を接続する場合を示すが、実際には、複数のスイッチ回路４が設けられており、各スイッチ回路４にはそれぞれ複数のディスクドライブ５が接続されている。スイッチ回路４は、下位通信制御部２Ｃから入力されたコマンドに基づいて、共通ポート４Ａといずれか一つのデバイス接続ポート４Ｂとを一対一で接続させ、これらポート４Ａ，４Ｂ間で全二重通信を行わせる。
【００２９】
接続用基板６には、複数のディスクドライブ５が取り付けられている。接続用基板６には、各ディスクドライブ５とスイッチ回路４とを接続するための信号線や、各ディスクドライブ５に電源を供給するための電源線が形成されている。ディスクドライブ５は、例えば、ハードディスクドライブや半導体メモリドライブ、あるいは、光ディスクドライブ、磁気テープドライブ等のような記憶デバイスから構成される。各ディスクドライブ５は、接続用基板６を介してスイッチ回路４に接続されており、さらに、スイッチ回路４を介して下位通信制御部２Ｃに接続される。
【００３０】
エラー監視部７は、例えば、エラー情報収集部７Ａと、中継記憶部７Ｂ及びエラー情報通知部７Ｃを備えて構成される。エラー情報収集部７Ａは、各ポート４Ａ，４Ｂを流れるデータを監視することにより、エラーの発生を示すエラー情報を収集する。収集されたエラー情報は、中継記憶部７Ｂに記憶される。エラー情報通知部７Ｃは、下位通信制御部２Ｃからの要求に応じて、中継記憶部７Ｂに記憶されたエラー情報を読み出し、この読出したエラー情報を下位通信制御部２Ｃに送信する。
【００３１】
管理端末９は、記憶制御装置１の状態を管理するためのコンピュータ装置である。管理端末９は、コントローラ２に構成変更指示を発行したり、あるいは、記憶制御装置１の各種ステータス情報を取得する。
【００３２】
次に、ネットワーク構成を説明する。ホストＨと記憶制御装置１とは、例えば、SAN（Storage Area Network）やインターネット等の通信ネットワークＣＮ１を介して、双方向通信可能に接続されている。コントローラ２と記憶部３とは、例えば、SAN等の通信ネットワークＣＮ２を介して、双方向通信可能に接続されている。コントローラ２と管理端末９とは、例えば、LAN（Local Area Network）等の通信ネットワークＣＮ３を介して、双方向通信可能に接続されている。
【００３３】
本実施形態の動作を説明する。ホストＨは、記憶制御装置１にリードコマンドやライトコマンドを発行する。これにより、コントローラ２は、ドライブ接続制御部８を介して、所定のディスクドライブ５にアクセスし、ホストＨから要求されたデータを所定のディスクドライブ５から読み出して、ホストＨに提供する（リードコマンドの場合）。あるいは、コントローラ２は、ドライブ接続制御部８を介して所定のディスクドライブ５にアクセスし、ホストＨから受信したライトデータをブロックデータに分割して、所定のディスクドライブ５に記憶させる（ライトコマンドの場合）。
【００３４】
ここで、スイッチ回路４は、共通ポート４Ａといずれか一つのデバイス接続ポート４Ｂとを接続させることにより、特定のディスクドライブ５と下位通信制御部２Ｃとを接続させる。複数のデバイス接続ポート４Ｂを周期的に切り替えていくことにより、複数のディスクドライブ５にデータが分散して記憶される場合もある。
【００３５】
エラー監視部７は、各ディスクドライブ５に生じるエラーを監視する。エラー情報収集部７Ａは、例えば、各ポート４Ａ，４Ｂを流れるデータのビットパターンを監視し、既知のエラーパターンが検出されたか否かを判定する。
【００３６】
例えば、下位通信制御部２Ｃと各ディスクドライブ５とは、ファイバチャネルプロトコルに基づいてブロックレベルのデータ転送を行うが、ファイバチャネルプロトコルでは、”０”または”１”のビットが所定数以上連続することを禁じている。従って、エラー情報収集部７Ａは、ポートに発生したエラーを監視することができる。あるいは、あるデータをディスクドライブ５に入力した場合の応答が、期待される値とは異なる場合に、そのディスクドライブ５にエラーが生じたことを検出することができる。このために、エラー情報収集部７Ａは、共通ポート４Ａから入力されるデータ及びデバイス接続ポートから返信されるデータの両方をそれぞれ監視する。
【００３７】
検出されたエラーは、例えば、各デバイス接続ポート４Ｂ毎のエラーカウント値のようなエラー情報として、中継記憶部７Ｂに記憶される。下位通信制御部２Ｃは、例えば、ディスクドライブ５へのアクセスに支障が生じた場合に、エラー監視部７にエラー情報の転送を要求する。エラー監視部７は、下位通信制御部２Ｃからの要求に応じて、中継記憶部７Ｂに記憶されたエラー情報を、エラー情報通知部７Ｃから下位通信制御部２Ｃに送信させる。
【００３８】
即ち、いずれかのディスクドライブ５におけるエラーの発生がエラー監視部７によって検出された場合でも、そのエラー情報は下位通信制御部２Ｃに直ちに報告されるわけではない。下位通信制御部２Ｃがディスクドライブ５へのアクセス障害を認識した場合に、エラー情報がエラー監視部７から下位通信制御部２Ｃに送信される。そして、下位通信制御部２Ｃは、そのエラー情報に基づいて、障害回復処理を実行するか否かを決定し、必要があれば障害回復処理を実行させる。
【００３９】
このように構成される本実施形態によれば、ディスクドライブ５と下位通信制御部２Ｃとをスイッチ接続させると共に、ディスクドライブ５に生じたエラー情報をそれぞれ個別に監視する構成とした。従って、どのディスクドライブ５に障害が発生したかを早期に発見することができ、使い勝手が向上する。
【００４０】
本実施形態では、下位通信制御部２Ｃが要求した場合に、エラー監視部７は、エラー情報を下位通信制御部２Ｃに通知する構成とした。従って、緊急性が比較的低いインターミッテントエラーが検出された場合に、この軽微なエラーの発生によって、そのディスクドライブ５の閉塞処理や障害回復処理が開始されたりするのを抑制できる。この結果、例えば、記憶制御装置１としての動作に影響が無いような場合、障害の生じたディスクドライブ５を閉塞処理させずに、そのまま使用し続けることができる。これにより、記憶制御装置１の稼働時間を増大させることができ、また、閉塞処理や障害回復処理の実行による応答性の低下を抑制することができ、使い勝手が向上する。
【００４１】
本実施形態では、ディスクドライブ５へのアクセスに障害が発生したことを下位通信制御部２Ｃが認識した場合に、エラー監視部７からエラー情報を取得する構成とした。従って、エラー情報を周期的に取得する場合に比べて、エラー監視部７や下位通信制御部２Ｃの処理負担を軽減させることができる。
【００４２】
本実施形態では、ディスクドライブ５の障害が検出された場合、障害回復制御部２Ｃ１によって障害を自動的に回復させる構成とした。従って、耐障害性及び使い勝手を向上させることができる。
【実施例１】
【００４３】
本発明の実施形態を詳細に説明する。図１との関係を先に述べると、図１中のホストＨは図３中のホスト２０に、図１中の記憶制御装置１は図３中の記憶制御装置１０に、図１中のコントローラ２は図３中のコントローラ１００に、図１中の記憶部３は図３中の記憶部２００に、図１中の管理端末９は図３中の管理端末３０に、図１中の上位通信制御部２Ａは図３中のCHA１１０に、図１中の下位通信制御部２Ｃは図３中のDKA１２０に、図１中のメモリ部２Ｂは図３中のキャッシュメモリ１３０及び共有メモリ１４０に、図１中のディスクドライブ５は図３中のディスクドライブ２１０に、図１中の接続用基板６は図３中の接続用基板２２０に、図１中のドライブ接続制御部８は図３中の接続制御部２３０に、図１中のスイッチ回路４は図３中のスイッチ回路２４０に、それぞれ対応する。
【００４４】
図２は、記憶制御装置１０の外観構成を示す概略斜視図である。記憶制御装置１０は、例えば、基本筐体１１と複数の増設筐体１２とから構成可能である。
【００４５】
基本筐体１１は、記憶制御装置１０の最小構成単位であり、記憶機能及び制御機能の両方を備えている。増設筐体１２は、記憶制御装置１０のオプションであり、基本筐体１１の有する制御機能により制御される。例えば、最大４個の増設筐体１２を基本筐体１１に接続可能である。
【００４６】
基本筐体１１には、例えば、複数の制御パッケージ１３と、複数の電源ユニット１４と、複数のバッテリユニット１５と、複数のディスクドライブ２１０とがそれぞれ着脱可能に設けられている。増設筐体１２には、複数のディスクドライブ２１０と、複数の電源ユニット１４及び複数のバッテリユニット１５が着脱可能に設けられている。また、基本筐体１１及び各増設筐体１２には、複数の冷却ファン１６もそれぞれ設けられている。基本筐体１１と各増設筐体１２とは、例えば、メタルケーブルまたはファイバケーブルによって接続されており、ファイバチャネルプロトコルに基づいた通信を行う。
【００４７】
制御パッケージ１３は、後述するチャネルアダプタ（以下、CHA）１１０、ディスクアダプタ（以下、DKA）１２０、キャッシュメモリ１３０及び共有メモリ１４０等をそれぞれ実現するためのモジュールである。即ち、基本筐体１１には、複数のCHAパッケージ、複数のDKAパッケージ及び１つ以上のメモリパッケージがそれぞれ着脱可能に設けられ、パッケージ単位で交換可能となっている。
【００４８】
図３は、記憶制御装置１０の全体概要を示すブロック図である。記憶制御装置１０は、通信ネットワークＣＮ１１を介して、複数のホスト２０と双方向通信可能にそれぞれ接続可能である。記憶制御装置１０は、後述のように、記憶制御装置１０の動作を制御するためのコントローラ１００と、記憶部２００とを備えている。
【００４９】
通信ネットワークＣＮ１１は、例えば、LAN、SAN（Storage Area Network）、インターネットあるいは専用回線等である。LANを用いる場合、ホスト２０と記憶制御装置１０との間のデータ転送は、TCP/IPに従って行われる。SANを用いる場合、ホスト２０と記憶制御装置１０とは、ファイバチャネルプロトコルに従ってデータ転送を行う。また、ホスト２０がメインフレームの場合は、例えば、FICON（Fibre Connection：登録商標）、ESCON（Enterprise System Connection：登録商標）、ACONARC（Advanced Connection Architecture：登録商標）、FIBARC（Fibre Connection Architecture：登録商標）等の通信プロトコルに従ってデータ転送が行われる。
【００５０】
各ホスト２０は、例えば、サーバ、パーソナルコンピュータ、ワークステーション、メインフレーム等として実現されるものである。例えば、各ホスト２０は、図外に位置する複数のクライアント端末と別の通信ネットワークを介して接続されている。各ホスト２０は、例えば、各クライアント端末からの要求に応じて、記憶制御装置１０にデータの読み書きを行うことにより、各クライアント端末へのサービスを提供する。
【００５１】
各CHA１１０は、各ホスト２０との間のデータ転送を制御するもので、複数の通信ポート１１１を備えている。記憶制御装置１０には、例えば３２個のCHA１１０を設けることができる。CHA１１０は、例えば、オープン系用CHA、メインフレーム系用CHA等のように、ホスト２０の種類に応じて用意される。
【００５２】
各CHA１１０は、それぞれに接続されたホスト２０から、データの読み書きを要求するコマンド及びデータを受信し、ホスト２０から受信したコマンドに従って動作する。
【００５３】
DKA１２０の動作も含めて先に説明すると、CHA１１０は、ホスト２０からリードコマンドを受信すると、このリードコマンドを共有メモリ１４０に記憶させる。DKA１２０は、共有メモリ１４０を随時参照しており、未処理のリードコマンドを発見すると、ディスクドライブ２１０からデータを読み出して、キャッシュメモリ１３０に記憶させる。CHA１１０は、キャッシュメモリ１３０に移されたデータを読み出し、ホスト２０に送信する。
【００５４】
一方、CHA１１０は、ホスト２０からライトコマンドを受信すると、このライトコマンドを共有メモリ１４０に記憶させる。また、CHA１１０は、受信したライトデータをキャッシュメモリ１３０に記憶させる。CHA１１０は、キャッシュメモリ１３０にライトデータを記憶させた後、ホスト２０に書込み完了を報告する。DKA１２０は、共有メモリ１４０に記憶されたライトコマンドに従って、キャッシュメモリ１３０に記憶されたデータを読出し、所定のディスクドライブ２１０に記憶させる。
【００５５】
各DKA１２０は、記憶制御装置１０内に例えば４個や８個等のように複数個設けることができる。各DKA１２０は、各ディスクドライブ２１０との間のデータ通信をそれぞれ制御するものである。各DKA１２０と各ディスクドライブ２１０とは、接続制御回路（FSW）２３０等を介して接続されている。そして、各DKA１２０と各ディスクドライブ２１０とは、例えば、SAN等の通信ネットワークＣＮ１２を介して、ファイバチャネルプロトコルに基づくブロック単位のデータ転送を行う。また、各DKA１２０は、ディスクドライブ２１０の状態を随時監視しており、この監視結果は、内部ネットワークＣＮ１４を介して、SVP１６０に送信される。
【００５６】
各CHA１１０及び各DKA１２０は、例えば、プロセッサやメモリ等が実装されたプリント基板と、メモリに格納された制御プログラムとをそれぞれ備えており、これらのハードウェアとソフトウェアとの協働作業によって、それぞれ所定の機能を実現するようになっている。CHA１１０及びDKA１２０は、キャッシュメモリ１３０や共有メモリ１４０等と共にコントローラ１００を構成する。
【００５７】
キャッシュメモリ１３０は、例えば、ホスト２０から受信したデータ等を記憶するものである。キャッシュメモリ１３０は、例えば不揮発メモリから構成される。共有メモリ（あるいは制御メモリ）１４０は、例えば不揮発メモリから構成される。共有メモリ１４０には、例えば、制御情報や管理情報等が記憶される。制御情報等の情報は、複数の共有メモリ１４０により多重管理することができる。
【００５８】
なお、共有メモリ１４０及びキャッシュメモリ１３０は、それぞれ複数個設けることができる。また、同一のメモリ基板にキャッシュメモリ１３０と共有メモリ１４０とを混在させて実装することもできる。あるいは、メモリの一部をキャッシュ領域として使用し、他の一部を制御領域として使用することもできる。
【００５９】
スイッチ部１５０は、各CHA１１０と、各DKA１２０と、キャッシュメモリ１３０及び共有メモリ１４０をそれぞれ接続させる。これにより、全てのCHA１１０，DKA１２０は、キャッシュメモリ１３０及び共有メモリ１４０にそれぞれアクセス可能である。スイッチ部１５０は、例えばクロスバスイッチ等として構成することができる。
【００６０】
サービスプロセッサ（SVP）１６０は、LAN等の内部ネットワークＣＮ１４を介して、各CHA１１０及び各DKA１２０とそれぞれ接続されている。また、SVP１６０は、LAN等の通信ネットワークＣＮ１３を介して、一つまたは複数の管理端末３０に接続可能である。SVP１６０は、記憶制御装置１０内部の各種状態を収集し、管理端末３０に提供する。なお、SVP１６０は、CHA１１０またはDKA１２０のいずれか一方にのみ接続されてもよい。SVP１６０は、共有メモリ１４０を介して、各種のステータス情報を収集可能だからである。
【００６１】
次に、記憶制御装置１０の記憶部２００について説明する。上述のように、ディスクドライブ２１０が多数設けられた記憶部２００は、基本筐体１１及び増設筐体１２のそれぞれに備えさせることができる。
【００６２】
各ディスクドライブ２１０は、例えば、ハードディスクドライブや半導体メモリドライブあるいは光ディスクドライブ等として実現される。ディスクドライブ２１０は、物理的なディスクドライブである。各ディスクドライブ２１０は、例えば、記憶媒体と、記憶媒体にデータを読み書きするための制御回路と、冷却機構及び電源回路等を備えて構成することができる。
【００６３】
RAID構成等によっても相違するが、例えば、３個１組や４個１組等の所定数のディスクドライブ２１０が提供する物理的な記憶領域上には、冗長化された論理的記憶領域が構築される。そして、この冗長化された記憶領域上には、少なくとも一つ以上の論理デバイス（LU：Logigal Unit）を設定可能である。この論理デバイスは、LUN（Logical Unit Number ）に対応付けられて、ホスト２０に提供される。ホスト２０は、例えば、論理デバイスをアクセス対象としてデータの読み書きを行う。
【００６４】
なお、記憶制御装置１０により使用される記憶資源は、全て記憶制御装置１０内に設けられている必要はない。記憶制御装置１０は、記憶制御装置１０の外部に存在する記憶資源を、あたかも自己の記憶資源であるかのように取り込んで、利用可能である。例えば、別の記憶制御装置が存在する場合、その別の記憶制御装置と記憶制御装置１０とをSAN等で接続し、別の記憶制御装置の有する論理デバイスを、記憶制御装置１０の論理デバイスの下層に設けられた仮想デバイスに接続することにより、外部の記憶資源を利用することができる。
【００６５】
さて、記憶部２００は、複数のスイッチ回路２４０を備える接続制御部（以下、FSWと略記）２３０と、複数のディスクドライブ２１０が取り付けられた接続用基板２２０とを含んでいる。接続用基板２２０は、例えば、プリント配線基板のように構成されており、各ディスクドライブ２１０が取り付けられるためのコネクタ類やプリント配線が設けられている。各ディスクドライブ２１０は、接続用基板２２０を介して、FSW２３０に接続されている。また、各ディスクドライブ２１０は、接続用基板２２０を介して、電源ユニット１４やバッテリユニット１５に接続されている。
【００６６】
FSW２３０は、DKA１２０から各ディスクドライブ２１０へのアクセスを制御するための制御回路である。FSW２３０は、例えば、複数設けることができる。そして、一方のFSW２３０を一方のDKA１２０に接続し、他方のFSW２３０を他方のDKA１２０に接続することにより、いずれか一方のパスに障害が生じた場合でも、残された正常なパスを介してディスクドライブ２１０へのアクセスを行うことができる。FSW２３０の詳細は後述する。
【００６７】
図４は、FSW２３０の要部を模式的に示す説明図である。FSW２３０は、FSW制御回路２３１と、マイクロコントローラ２３２及び複数のスイッチ回路２４０を備えている。FSW制御回路２３１は、例えば、記憶部２００の電圧状態や冷却ファンの作動状態を監視する回路である。これ以外に、FSW制御回路２３１は、DKA１２０とマイクロコントローラ２３２との間の通信を中継する。
【００６８】
FSW制御回路２３１は、制御線Ｃ７を介して、DKA１２０に接続されており、DKA１２０との間で双方向の通信可能となっている。また、FSW制御回路２３１は、マイクロコントローラ２３２とも双方向通信可能に接続されている。従って、FSW制御回路２３１は、マイクロコントローラ２３２とDKA１２０との間の通信を中継することができる。FSW制御回路２３１は「エラー情報通知部７Ｃ」に対応し、マイクロコントローラ２３２は「中継記憶部７Ｂ」に対応する。FSW制御回路２３１とマイクロコントローラ２３２とを一体化して１チップの集積回路として構成してもよい。
【００６９】
スイッチ回路２４０は、FSW２３０に複数設けられている。図４中では３個のスイッチ回路２４０を示すが、これに限らず、３個未満または４個以上のスイッチ回路２４０をFSW２３０に設けることができる。
【００７０】
図４に示す例では、各スイッチ回路２４０は、例えば、ポートＰ１〜Ｐ６の複数の入出力ポート（通信ポート）を備えている。ポートＰ１は、他の装置からのデータを受信するための共通ポートであり、ポートＰ２〜Ｐ６はディスクドライブ２１０に接続するためのデバイス接続ポートである。また、ポートＰ６は、他のスイッチ回路２４０の共通ポートＰ１に接続されている。
【００７１】
詳細は後述するが、DKA１２０から通信ネットワークＣＮ１２を介して、最初のスイッチ回路２４０に入力されたブロックデータは、所定のポートから所定のディスクドライブ２１０に転送され、そのディスクドライブ２１０に書き込まれる。
【００７２】
図５は、FSW２３０の機能構成を模式的に示す説明図である。スイッチ回路２４０は、共通ポートＰ１を、デバイス接続ポートＰ２〜Ｐ６のうちいずれか一つのポートに一対一で接続させるようになっている。各ポートＰ１〜Ｐ６は、それぞれ全二重通信可能な通信ポートである。従って、DKA１２０に接続されたディスクドライブ２１０は、DKA１２０との間で比較的高速なデータ通信を行うことができる。
【００７３】
各ポートには、それぞれエラーカウンタ２４１が設けられている。エラーカウンタ２４１の詳細は後述するが、各エラーカウンタ２４１は、ポートを流れるデータのパターン（ビット列）を監視してエラーの有無を検出する。
【００７４】
スイッチ回路２４０には、スイッチ回路２４０の作動を制御するためのスイッチ制御回路（図中「SW_CTL」）２４２が設けられている。スイッチ制御回路２４２は、ポート管理テーブルＴ１に基づいて、共通ポートＰ１とデバイス接続ポートＰ２〜Ｐ６との接続を制御する。また、スイッチ制御回路２４２は、各エラーカウンタ２４１から取得したカウント値を診断レジスタ２４３に記憶させる。スイッチ制御回路２４２は、マイクロコントローラ２３２からの要求に応じて、診断レジスタ２４３に記憶された各ポート毎のカウント値をマイクロコントローラ２３２に転送する。
【００７５】
なお、図５において、DKA１２０と共通ポートＰ１との間にはチャネルＣ１が、デバイス接続ポートＰ２〜Ｐ５と各ディスクドライブ２１０との間にはチャネルＣ２〜Ｃ５が、接続用ポートＰ６と後続のスイッチ回路２４０との間にはチャネルＣ６が、それぞれ設けられている。
【００７６】
図６は、データのルーティング方法の一例を示す説明図である。ここでは、スイッチ回路２４０ａ，２４０ｂ，２４０ｃを直列に接続する場合を例に挙げて説明する。上述のように、各スイッチ回路２４０ａ〜２４０ｃには、それぞれポート管理テーブルＴ１が設けられている。ここでは、説明の便宜上、DKA１２０に最初に接続されたスイッチ回路２４０ａのポート管理テーブルをＴ１ａと、次に接続されるスイッチ回路２４０ｂのポート管理テーブルをＴ１ｂと、最後に接続されるスイッチ回路２４０ｃのポート管理テーブルをＴ１ｃとする。なお、ドライブ番号は、記憶制御装置１０内において一意に決定されているものとする。
【００７７】
各ポート管理テーブルＴ１ａ〜Ｔ１ｃは、ポート番号とドライブ番号とを対応付けることによりそれぞれ構成されている。例えば、テーブルＴ１ａでは、共通ポートＰ１にドライブ番号＃０が対応付けられている。ドライブ番号＃０は、DKA１２０に割り当てられた番号である。ポートＰ２はドライブ番号＃１に、ポートＰ３はドライブ番号＃２に、ポートＰ４はドライブ番号＃３に、ポートＰ５はドライブ番号＃４に、ポートＰ６は他のドライブ番号＃５〜＃１２に対応付けられている。つまり、後続のスイッチ回路２４０ｂに接続される接続用ポートＰ６には、後段の各スイッチ回路２４０ｂ，２４０ｃにそれぞれ接続されている全てのディスクドライブ２１０を特定するためのドライブ番号が、対応付けられている。
【００７８】
テーブルＴ１ｂに着目すると、テーブルＴ１ｂにおいて、前段のスイッチ回路２４０ａのポートＰ６に接続されるポートＰ１には、前段のスイッチ回路２４０ａに接続されている全てのドライブ番号＃０〜＃４が対応付けられている。そして、ポートＰ６には、後続するスイッチ回路２４０ｃの管理下にある各ディスクドライブ２１０のドライブ番号＃９〜＃１２が対応付けられている。
【００７９】
同様にテーブルＴ１ｃに着目すると、直前のスイッチ回路２４０ｂのポートＰ６に接続されるポートＰ１には、このスイッチ回路２４０ｃよりも前に位置する各スイッチ回路２４０ａ，２４０ｂにそれぞれ接続されているドライブの番号＃０〜＃８が対応付けられている。ポートＰ６には、ドライブ番号が対応付けられていない。この例では、スイッチ回路２４０ｃは、最終段のスイッチ回路であり、後続するスイッチ回路が存在しないためである。
【００８０】
DKA１２０は、目的のドライブ番号を明示して、リードコマンドまたはライトコマンドを発行する。スイッチ回路２４０ａ〜２４０ｃのスイッチ制御回路２４２は、コマンド中に明示されたドライブ番号に基づいてポート管理テーブルＴ１ａ〜Ｔ１ｃを参照することにより、そのコマンドを自分で処理すべきなのか他のスイッチ回路２４０に任せるべきなのかを判定する。そして、各スイッチ回路２４０ａ〜２４０ｃは、ポートＰ１とポートＰ２〜Ｐ６のいずれか一つを接続させる。
【００８１】
図７は、DKA１２０とFSW２３０の機能構成を示す説明図である。DKA１２０は、アクセス制御部１２１及び障害回復制御部１２２を備えている。アクセス制御部１２１は、キャッシュメモリ１３０及び共有メモリ１４０にそれぞれ接続されている。アクセス制御部１２１は、共有メモリ１４０に記憶されたコマンドに基づいて、所定のディスクドライブ２１０にアクセスし、データの読み書きを行う。
【００８２】
例えば、アクセス制御部１２１は、共有メモリ１４０に記憶されたリードコマンドに基づいて、所定のディスクドライブ２１０にアクセスし、要求されたデータを読み出す。読み出されたデータのアドレスは論理アドレスに変換されて、キャッシュメモリ１３０に記憶される。また例えば、アクセス制御部１２１は、共有メモリ１４０に記憶されたライトコマンドに基づいて、所定のディスクドライブ２１０にアクセスし、キャッシュメモリ１３０に記憶されたライトデータを所定のディスクドライブ２１０に書き込む。
DKA１２０は、複数のディスクドライブ２１０を切替ながらアクセスする。この場合、スイッチ回路２４０は、DKA１２０からの要求に応じて、所定のディスクドライブ２１０をDKA１２０に接続させる。
【００８３】
これらのコマンドを処理する際に、アクセス制御部１２１は、所定のディスクドライブ２１０へのアクセスに障害が生じたか否かを検出可能である。例えば、期待する結果がディスクドライブ２１０から得られなかった場合、アクセス制御部１２１は、アクセス障害の発生であると認識し、障害回復制御部１２２に対して障害の回復を要求する。
【００８４】
障害回復制御部１２２は、SVP１６０に接続されている。障害回復制御部１２２は、アクセス制御部１２１からの要求に応じて、マイクロコントローラ２３２に記憶された障害情報を読み出し、障害を回復させるための処理を自動的に開始させる。また、障害回復制御部１２２は、SVP１６０を介して、障害の発生及び障害回復に関する通知を管理端末３０に行う。
【００８５】
図８は、診断レジスタ２４３と障害情報Ｔ３との関係を示す説明図である。ここでは、図６と同様に、各スイッチ回路２４０ａ〜２４０ｃに対応させて、診断レジスタ２４３の記憶内容に符号ａ〜ｃを添える。図８の上側に示すように、診断レジスタ２４３は、各ポート番号毎にカウント値を対応付けて記憶する。カウント値とは、各ポートで検出されたエラーの回数である。
【００８６】
図８の下側に示すように、マイクロコントローラ２３２は、各スイッチ回路２４０の診断レジスタ２４３から記憶内容Ｔ２ａ〜Ｔ２ｃをそれぞれ取得して、障害情報Ｔ３を記憶する。マイクロコントローラ２３２は、例えば、不揮発性のメモリを内蔵している。障害情報Ｔ３は、マイクロコントローラ２３２の内蔵メモリに記憶される。この障害情報Ｔ３は、例えば、スイッチ回路２４０を識別するためのスイッチ番号と、各ポートを識別するためのポート番号と、エラーのカウント値とを対応付けることにより、構成される。
【００８７】
図９は、エラーカウンタ２４１によるエラーの検出方法を示す説明図である。エラーカウンタ２４１は、予め設定されたエラーパターンテーブルＴ４を備えている。予め設定されるエラーパターンとしては、例えば、プロトコルにおいて定められているエラーパターン等を挙げることができる。あるいは、コマンド中で示されたアドレスとディスクドライブ２１０からの応答に含まれるアドレスとが一致するか否かを、エラーパターンとして設定することもできる。
【００８８】
エラーカウンタ２４１は、ディスクドライブ２１０に入出力されるデータのパターン（ビット列）を検出し、この検出されたデータパターンとエラーパターンとを照合することにより、エラーの有無を判定する。エラーが検出された場合、エラーカウンタ２４１は、カウント値メモリ２４１Ａに記憶されているカウント値をインクリメントさせる。
【００８９】
次に、図１０は、エラーの検出方法及び障害情報Ｔ３の記憶方法を示すフローチャートである。以下に述べる各フローチャートも同様であるが、各フローチャートは、処理の概要を示しており、実際のプログラムとは相違する場合がある。また、ステップを「Ｓ」と略記する。
【００９０】
エラーカウンタ２４１の動作を先に説明する。エラーカウンタ２４１は、ディスクドライブ２１０からの応答を検出すると（Ｓ１１）、エラーパターンテーブルＴ４を参照することにより（Ｓ１２）、ディスクドライブ２１０の応答がエラーパターンに該当するか否かを判定する（Ｓ１３）。ディスクドライブ２１０からの応答にエラーパターンが検出されなかった場合（S13:NO）、Ｓ１４をスキップしてＳ１５に移る。
【００９１】
エラーパターンが検出された場合（S13:YES）、エラーカウンタ２４１は、カウント値を１つインクリメントさせる（Ｓ１４）。そして、エラーカウンタ２４１は、スイッチ制御回路２４２からカウント値の転送要求があったか否かを判定し（Ｓ１５）、転送を要求された場合（S15:YES）、カウント値を診断レジスタ２４３に格納させる（Ｓ１６）。このように、各ポート毎にそれぞれ設けられているエラーカウンタ２４１は、エラーの発生回数をカウントして記憶し、転送を要求された場合にのみ、カウント値を診断レジスタ２４３に転送して記憶させる。
【００９２】
マイクロコントローラ２３２及びスイッチ制御回路２４２の動作を説明する。マイクロコントローラ２３２は、例えば、数秒（５秒程度）に設定された所定時間が経過したか否かを判定する（Ｓ３１）。
【００９３】
所定時間が経過すると（S31:YES）、マイクロコントローラ２３２は、スイッチ制御回路２４２に障害情報（各ポートのカウント値）の送信を要求する（Ｓ３２）。つまり、マイクロコントローラ２３２は、所定周期毎に障害情報Ｔ３を更新させる。
【００９４】
スイッチ制御回路２４２は、マイクロコントローラ２３２からの要求を受信すると（Ｓ２１）、各ポートのエラーカウンタ２４１にカウント値の転送を要求する（Ｓ２２）。スイッチ制御回路２４２は、各エラーカウンタ２４１からそれぞれ受信したカウント値を診断レジスタ２４３に記憶させる（Ｓ２３）。そして、スイッチ制御回路２４２は、診断レジスタ２４３の記憶内容Ｔ２をマイクロコントローラ２３２に送信する（Ｓ２４）。
【００９５】
マイクロコントローラ２３２は、スイッチ制御回路２４２から診断レジスタ２４３の記憶内容Ｔ２を受信すると（Ｓ３３）、障害情報Ｔ３を更新させる（Ｓ３４）。
【００９６】
このように、各エラーカウンタ２４１は、それぞれ別々にエラーの発生回数をカウントしており、マイクロコントローラ２３２は所定周期毎にカウント値を収集して障害情報Ｔ３を更新させる。カウント値の更新と障害情報Ｔ３の更新とは非同期である。
【００９７】
図１１は、DKA１２０によるアクセス制御処理を示すフローチャートである。DKA１２０は、共有メモリ１４０に記憶された未処理のコマンドを検出すると（Ｓ４１）、このコマンドに含まれている論理アドレスを物理アドレスに変換して、アクセスすべきディスクドライブ２１０の番号を特定する（Ｓ４２）。
【００９８】
DKA１２０は、特定されたドライブ番号を有するディスクドライブ２１０に向けてコマンドを送信する（Ｓ４３）。上述のように、各スイッチ回路２４０は、コマンド中に含まれるドライブ番号とポート管理テーブルＴ１とを照合することにより、所定のポート同士をスイッチ接続させる。
【００９９】
ディスクドライブ２１０は、DKA１２０からのコマンドを受信すると（Ｓ５１）、このコマンドに応じた処理を実行する（Ｓ５２）。コマンドに応じた処理とは、例えば、コマンドで指定されたアドレスへのデータの読み書きである。そして、ディスクドライブ２１０は、その実行結果をDKA１２０に応答する（Ｓ５３）。ディスクドライブ２１０の応答は、エラーカウンタ２４１により検査される。
【０１００】
ディスクドライブ２１０の応答は、スイッチ回路２４０を介して、DKA１２０に受信される（Ｓ４４）。DKA１２０は、ディスクドライブ２１０の応答が期待した通りの結果であるか否かを判定する（Ｓ４５）。期待通りの結果がディスクドライブ２１０から戻ってきた場合（S45:YES）、DKA１２０が発行したコマンドは正常に処理された場合なので、処理を終了する。
【０１０１】
これに対し、ディスクドライブ２１０からの応答が期待通りの結果ではなかった場合（S45:NO）、DKA１２０は、ディスクドライブ２１０へのアクセス障害が発生したものと判定し、障害回復制御処理を実行する（Ｓ６０）。例えば、DKA１２０が発行したコマンド中のアドレスとディスクドライブ２１０からの応答に含まれるアドレスとが相違するような場合や、ディスクドライブ２１０から所定時間経過しても応答が無い場合等に、アクセス障害が発生したものと判定することができる。
【０１０２】
図１２は、障害回復制御処理を示すフローチャートである。DKA１２０は、アクセス障害の発生を認識すると（Ｓ６１）、マイクロコントローラ２３２に障害情報Ｔ３の送信を要求する（Ｓ６２）。マイクロコントローラ２３２は、DKA１２０からの要求を受信すると（Ｓ７１）、障害情報Ｔ３をDKA１２０に送信する（Ｓ７２）。
【０１０３】
DKA１２０は、マイクロコントローラ２３２から障害情報Ｔ３を受信すると（Ｓ６３）、障害情報Ｔ３をSVP１６０に送信する（Ｓ６４）。SVP１６０は、この障害情報Ｔ３を受信すると、例えば、管理端末３０に警告メッセージを表示させる。DKA１２０は、障害情報Ｔ３の内容に基づいて、障害回復処理を実行する（Ｓ６５）。
【０１０４】
図１３は、障害回復処理を示すフローチャートである。DKA１２０は、障害情報Ｔ３に基づいて、アクセス障害の発生したディスクドライブ２１０を特定する（Ｓ８１）。アクセス障害の生じているディスクドライブ２１０は、そのエラーのカウント値も他のディスクドライブ２１０に比べて大幅に増加しているため、直ちに特定可能である。
【０１０５】
DKA１２０は、記憶部２００に実装されているディスクドライブ２１０の中から、未使用のスペアドライブを選択する（Ｓ８２）。例えば、SATA（Serial AT Attachment）ディスクやSCSI（Small Computer System Interface）ディスク等のように、複数種類のディスクドライブ２１０が記憶部２００に混在している場合、DKA１２０は、アクセス障害の生じたディスクドライブ２１０と同一種類で同一容量のスペアドライブを選択する。
【０１０６】
そして、DKA１２０は、アクセス障害の生じたディスクドライブ２１０（以下、障害ドライブとも呼ぶ）に記憶されているデータを復元させ（Ｓ８３）、復元したデータをスペアドライブに記憶させる（Ｓ８４）。DKA１２０は、障害ドライブに記憶されている全データを復元させるまでＳ８３，Ｓ８４のステップを繰り返す（Ｓ８５）。
【０１０７】
障害ドライブからスペアドライブへのデータ移動が完了すると（S85:YES）、DKA１２０は、データの復元が完了した旨をSVP１６０に通知する（Ｓ８６）。
【０１０８】
SVP１６０は、DKA１２０からの通知を受信すると、例えば、管理端末３０に所定の交換メッセージを表示させる。交換メッセージには、交換すべきディスクドライブ２１０のドライブ番号と、データが復元されたスペアドライブの番号とが含まれる。ユーザや保守員は、この交換メッセージを確認すると、障害ドライブを記憶部２００から引き抜き、スペアドライブを障害ドライブの装着されていた位置に取り付ける。
【０１０９】
データ復元方法は、RAIDレベルによって相違する。例えば、ミラーリングの場合、正常なディスクドライブ２１０に記憶されているデータをスペアドライブにコピーする。RAID５のようにパリティを算出している場合、パリティ及び他のデータに基づいて論理演算を行うことにより、障害ドライブに記憶されているデータを復元させる。
【０１１０】
次に、図１４は、本実施例によるRAIDグループ構成方法の一例を模式的に示す説明図である。説明の便宜上、図１４では、各FSW２３０内にそれぞれ一つずつのスイッチ回路２４０を示している。
【０１１１】
図１４に示すように、それぞれ異なるFSW２３０に接続されたディスクドライブ２１０によってRAIDグループＲＧ１〜ＲＧ４を構成することができる。これにより、いずれか一つのFSW２３０が故障した場合でも、その故障したFSW２３０に接続されているディスクドライブ２１０のデータを、他のFSW２３０に接続されている同一RAIDグループのディスクドライブ２１０に基づいて、復元することができる。
なお、FSW２３０に接続されている複数のディスクドライブ２１０によってRAIDグループを構成してもよい。
【０１１２】
本実施例は上述のように構成されるので、以下の効果を奏する。本実施例では、スイッチ回路２４０によって、ディスクドライブ２１０とDKA１２０とを一対一でスイッチ接続させると共に、各ディスクドライブ２１０に生じたエラーをそれぞれ個別に監視する構成とした。従って、いずれかのディスクドライブ２１０に障害が発生した場合でも、この障害ドライブを直ちに特定することができ、使い勝手が向上する。
【０１１３】
本実施例では、エラーカウンタ２４１によるエラーのカウントと、マイクロコントローラ２３２によるカウント値の記憶と、DKA１２０による障害情報Ｔ３の取得とは、それぞれ非同期で実行される構成とした。つまり、エラーカウンタ２４１またはマイクロコントローラ２３２がエラーの発生を検出した場合でも、DKA１２０がアクセス障害を認識しない限り、障害情報Ｔ３はマイクロコントローラ２３２からDKA１２０に転送されない。従って、DKA１２０が実際にアクセス障害を認識するまでの間、記憶制御装置１０の正常動作を継続させることができる。これにより、軽微なエラーで障害回復制御処理が実行されるのを防止し、使い勝手や耐障害性が向上する。
【０１１４】
本実施例では、障害ドライブを特定した後、自動的に障害回復制御処理を実行する構成とした。従って、保守員が記憶制御装置１０の設置場所に駆けつけるよりも前に、障害ドライブに記憶されていたデータを復元しておくことができる。これにより、障害回復までの時間を短縮することができ、信頼性を向上させることができる。
【実施例２】
【０１１５】
図１５に基づいて第２実施例を説明する。本実施例では、マイクロコントローラ２３２が障害情報Ｔ３を更新した時点で、障害発生の有無をDKA１２０に通知する。本実施例を含む以下の各実施例は、第１実施例の変形例に該当し、共通の構成を備えている。そこで、第１実施例との相違部分を中心に説明する。
【０１１６】
マイクロコントローラ２３２は、スイッチ制御回路２４２の診断レジスタ２４３に記憶された各ポートのカウント値を受信すると（Ｓ３３）、障害情報Ｔ３を更新記憶させ（Ｓ３４）、さらに、障害情報Ｔ３をDKA１２０に送信する（Ｓ３５）。つまり、本実施例では、DKA１２０がアクセス障害を認識するよりも前に、マイクロコントローラ２３２からDKA１２０に障害情報Ｔ３を送信する。
【０１１７】
このように構成される本実施例では、DKA１２０がアクセス障害に遭遇する前に、ディスクドライブ２１０に障害が生じたか否かを検出することができ、障害回復制御を早期に開始させることができる。
【実施例３】
【０１１８】
図１６に基づいて第３実施例を説明する。本実施例では、各ポートにおけるエラー発生回数（カウント値）が、予め設定された所定値Ｔｈに達している場合に、障害情報Ｔ３をマイクロコントローラ２３２からDKA１２０に送信させる。
【０１１９】
即ち、マイクロコントローラ２３２は、診断レジスタ２４３の記憶内容を受信すると（Ｓ３３）、カウント値が所定値Ｔｈに達しているポートが存在するか否かを判定する（Ｓ３６）。マイクロコントローラ２３２は、カウント値が所定値Ｔｈ以上になっているポートを発見した場合（S36:YES）、障害情報Ｔ３をDKA１２０に送信する（Ｓ３５）。
【０１２０】
このように構成される本実施例では、軽微なエラーが偶発的に発生した場合に、障害情報Ｔ３がマイクロコントローラ２３２からDKA１２０に送信されるのを抑制でき、DKA１２０が無駄に障害回復制御を行う事態を抑制できる。
【実施例４】
【０１２１】
図１７〜図１９に基づいて第４実施例を説明する。本実施例では、DKA１２０に接続されていないディスクドライブ２１０にテスト用パターンを供給することにより、そのディスクドライブ２１０の動作状態を調査する。
【０１２２】
図１７の模式図に示すように、各エラーカウンタ２４１には、テスト用パターンを発生させるための信号発生回路２４１Ｂがそれぞれ設けられている。図１８のエラーカウンタ２４１の模式図に示すように、信号発生回路２４１Ｂは、ディスクドライブ２１０に所定のテスト用パターン（ビット列）を供給する。エラーカウンタ２４１は、テスト用パターンに対するディスクドライブ２１０の応答信号を検出し、エラーパターンに該当するか否かを判定する。
【０１２３】
図１９のフローチャートを参照する。エラーカウンタ２４１は、DKA１２０に接続されていないディスクドライブ２１０にテスト用パターンを入力する（Ｓ１０）。そして、エラーカウンタ２４１は、テスト用パターンに対するディスクドライブ２１０の応答を検出し（Ｓ１１）、エラーパターンに該当するか否かを検査する（Ｓ１２，Ｓ１３）。
【０１２４】
このように、本実施例では、DKA１２０にスイッチ接続されていないディスクドライブ２１０にテスト用パターンを供給してエラーの有無を検査する。従って、DKA１２０によって使用されていないディスクドライブ２１０についても、そのエラーの有無を検出することができ、障害検知の精度を高めることができる。
【実施例５】
【０１２５】
図２０に基づいて第５実施例を説明する。本実施例では、マイクロコントローラ２３２は、DKA１２０から要求があった場合のみ、診断レジスタ２４３の記憶内容を取得して障害情報Ｔ３を生成するようになっている。
【０１２６】
DKA１２０は、アクセス障害の発生を認識すると（Ｓ６１）、マイクロコントローラ２３２に障害情報の送信を要求する（Ｓ６２）。マイクロコントローラ２３２は、この要求を受信すると（Ｓ７１）、スイッチ制御回路２４２に、診断レジスタ２４３の記憶内容を転送するように要求する（Ｓ７３）。
【０１２７】
スイッチ制御回路２４２は、マイクロコントローラ２３２からの要求を受信すると（Ｓ２１）、各エラーカウンタ２４１のカウント値をそれぞれ読み出して（Ｓ２２）、診断レジスタ２４３に記憶させる（Ｓ２３）。そして、スイッチ制御回路２４２は、診断レジスタ２４３の記憶内容をマイクロコントローラ２３２に送信する（Ｓ２４）。マイクロコントローラ２３２は、診断レジスタ２４３の記憶内容を受信すると（Ｓ７４）、障害情報Ｔ３を生成してDKA１２０に送信する（Ｓ７２）。
【０１２８】
このように構成される本実施例では、DKA１２０によるアクセス障害の認識と同期して、マイクロコントローラ２３２は障害情報Ｔ３を生成する。従って、所定周期毎に障害情報Ｔ３を更新させる場合に比較して、マイクロコントローラ２３２の負荷を低減させることができる。
【実施例６】
【０１２９】
図２１のフローチャートに基づいて第６実施例を説明する。本実施例では、エラーカウンタ２４１が予め設定されている重大なエラーを検出した場合、エラーカウンタ２４１からDKA１２０に向けて、エラーの発生を直ちに通知する。
【０１３０】
エラーカウンタ２４１は、ディスクドライブ２１０からの応答を検出すると（Ｓ９１）、エラーパターンテーブルＴ４を参照して（Ｓ９２）、その応答にエラーパターンが含まれているか否かを判定する（Ｓ９３）。
【０１３１】
エラーパターンが検出された場合（S93:YES）、エラーカウンタ２４１は、カウント値をインクリメントさせる（Ｓ９４）。さらに、エラーカウンタ２４１は、検出されたエラーが予め設定されている所定の重大エラーであるか否かを判定する（Ｓ９５）。重大エラーである場合（S95:YES）、エラーカウンタ２４１は、マイクロコントローラ２３２等を介して、重大エラーが検出された旨をDKA１２０に通知する（Ｓ９６）。
【０１３２】
重大エラーではない場合（S95:NO）、スイッチ制御回路２４２から転送要求されたか否かを判定し（Ｓ９７）、転送要求された場合（S97:YES）、カウント値を診断レジスタ２４３に転送して記憶させる（Ｓ９８）。
【０１３３】
DKA１２０は、エラーカウンタ２４１からのエラー通知に基づいて、障害の発生を認識し（Ｓ１０１）、障害回復処理を実行する（Ｓ１０２）。また、DKA１２０は、障害が検出された旨及び障害回復処理が開始された旨をSVP１６０に通知する（Ｓ１０３）。
【０１３４】
なお、重大エラーであるか否かを先に判定し（Ｓ９５）、重大エラーの場合は、予め設定された数だけカウント値を増大させる構成でもよい。そして、カウント値が所定の閾値以上になった場合に、DKA１２０にエラーの発生を通知してもよい。また、重大エラーであるか否かの判定をマイクロコントローラ２３２内で行う構成としてもよい。
【０１３５】
このように構成される本実施例では、重大なエラーがエラーカウンタ２４１によって検出された場合、直ちにDKA１２０に通知するため、アクセス障害がDKA１２０によって検出されるよりも前に障害回復処理を行うことができる。
【実施例７】
【０１３６】
図２２に基づいて第７実施例を説明する。本実施例では、スイッチ回路２４０をスター型のトポロジで接続している。図２２の模式図に示すように、本実施例では、第１のスイッチ回路２４０ａを中心とし、このスイッチ回路２４０ａに他のスイッチ回路２４０ｂ，２４０ｃをそれぞれ接続している。
【実施例８】
【０１３７】
図２３に基づいて第８実施例を説明する。本実施例では、スイッチ回路２４０をループ型のトポロジで接続している。図２３の模式図に示すように、本実施例では、第１のスイッチ回路２４０ａに第２のスイッチ回路２４０ｂを接続し、第２のスイッチ回路２４０ｂに第３のスイッチ回路２４０ｃを接続し、さらに、第３のスイッチ回路２４０ｃと第１のスイッチ回路２４０ａを接続している。
【０１３８】
このようにスイッチ回路２４０をループ状に接続することにより、特に、スイッチ回路２４０を４個以上接続した場合、いずれか一つのスイッチ回路２４０が故障しても、他のスイッチ回路２４０は使用することができ、より一層使い勝手が向上する。
【０１３９】
なお、本発明は、上述した各実施例に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。
【図面の簡単な説明】
【０１４０】
【図１】本発明の実施形態の概要を示す説明図である。
【図２】記憶制御装置の外観構成を示す斜視図である。
【図３】記憶制御装置のブロック図である。
【図４】接続制御回路（FSW）の構成を示す説明図である。
【図５】スイッチ回路の構成を示す説明図である。
【図６】スイッチ回路内でルーティングを行う様子を示す説明図である。
【図７】接続制御回路とDKAの関係を示す説明図である。
【図８】診断レジスタの記憶内容と障害情報の関係を示す説明図である。
【図９】エラーカウンタによるエラー検出方法を示す説明図である。
【図１０】エラー検出方法の全体動作を示すフローチャートである。
【図１１】アクセス制御処理を示すフローチャートである。
【図１２】障害回復制御処理を示すフローチャートである。
【図１３】障害回復処理を示すフローチャートである。
【図１４】異なるFSWを用いてRAIDグループを構成する様子を示す説明図である。
【図１５】第２実施例に係るエラー検出方法の全体動作を示すフローチャートである。
【図１６】第３実施例に係るエラー検出方法の全体動作を示すフローチャートである。
【図１７】第４実施例に係るスイッチ回路の構成を示す説明図である。
【図１８】エラーカウンタによるエラー検出方法を示す説明図である。
【図１９】エラー検出方法の全体動作を示すフローチャートである。
【図２０】第５実施例に係るエラー検出方法を示すフローチャートである。
【図２１】第６実施例に係るエラー検出方法を示すフローチャートである。
【図２２】第７実施例に係るスイッチ回路の接続形態を示す説明図である。
【図２３】第８実施例に係るスイッチ回路の接続形態を示す説明図である。
【符号の説明】
【０１４１】
１…記憶制御装置、２…コントローラ、２Ａ…上位通信制御部、２Ｂ…メモリ部、２Ｃ…下位通信制御部、２Ｃ１…障害回復制御部、３…記憶部、４…スイッチ回路、４Ａ…共通ポート、４Ｂ…デバイス接続ポート、５…ディスクドライブ、６…接続用基板、７…エラー監視部、７Ａ…エラー情報収集部、７Ｂ…中継記憶部、７Ｃ…エラー情報通知部、８…ドライブ接続制御部、９…管理端末、１０…記憶制御装置、１１…基本筐体、１２…増設筐体、１３…制御パッケージ、１４…電源ユニット、１５…バッテリユニット、１６…冷却ファン、２０…ホスト、３０…管理端末、１００…コントローラ、１１０…チャネルアダプタ（CHA）、１１１…ポート、１２０…ディスクアダプタ（DKA）、１２１…アクセス制御部、１２２…障害回復制御部、１３０…キャッシュメモリ、１４０…共有メモリ、１５０…スイッチ部、１６０…サービスプロセッサ（SVP）、２００…記憶部、２１０…ディスクドライブ、２２０…接続用基板、２３０…接続制御部、２３１…FSW制御回路、２３２…マイクロコントローラ、２４０，２４０ａ，２４０ｂ，２４０ｃ…スイッチ回路、２４１…エラーカウンタ、２４１Ａ…カウント値メモリ、２４１Ｂ…信号発生回路、２４２…スイッチ制御回路、２４３…診断レジスタ、Ｃ１〜Ｃ６…チャネル、Ｃ７…制御線、ＣＮ１，ＣＮ２，ＣＮ３，ＣＮ１１，ＣＮ１２，ＣＮ１３，ＣＮ１４…通信ネットワーク、Ｐ１〜Ｐ６…ポート、ＲＧ１〜ＲＧ４…グループ、Ｔ１，Ｔ１ａ，Ｔ１ｂ，Ｔ１ｃ…ポート管理テーブル、Ｔ２，Ｔ２ａ，Ｔ２ｂ，Ｔ２ｃ…診断レジスタの記憶内容、Ｔ３…障害情報、Ｔ４…エラーパターンテーブル
【図１】
0004786312.tif 000002
【図２】
0004786312.tif 000003
【図３】
0004786312.tif 000004
【図４】
0004786312.tif 000005
【図５】
0004786312.tif 000006
【図６】
0004786312.tif 000007
【図７】
0004786312.tif 000008
【図８】
0004786312.tif 000009
【図９】
0004786312.tif 000010
【図１０】
0004786312.tif 000011
【図１１】
0004786312.tif 000012
【図１２】
0004786312.tif 000013
【図１３】
0004786312.tif 000014
【図１４】
0004786312.tif 000015
【図１５】
0004786312.tif 000016
【図１６】
0004786312.tif 000017
【図１７】
0004786312.tif 000018
【図１８】
0004786312.tif 000019
【図１９】
0004786312.tif 000020
【図２０】
0004786312.tif 000021
【図２１】
0004786312.tif 000022
【図２２】
0004786312.tif 000023
【図２３】
0004786312.tif 000024