(57)【要約】【課題】コマンドの論理的な異常に対して、コマンドの論理的な異常を検出する手段を提供し、適切なエラー処理、障害部位の検出・閉塞処理を実行する。【解決手段】ホスト装置１００からのデータの入出力要求に応答してドライブ１５０、１６０に対するデータ入出力処理を行うコントローラユニット１３０Ａ、１３０Ｂと、コントローラユニット１３０Ａ、１３０Ｂとドライブ１５０、１６０とをそれぞれ接続するスイッチ１４０Ａ、１４０Ｂと、スイッチ１４０Ａ、１４０Ｂとドライブ１６０との間に挿入されたポートセレクタ３００とを備え、ポートセレクタ３００は、ＭＰＵ１３１の処理に基づいて生成されたコマンドを受信したときに、コマンドを構成するデータが正常であるときには、目的とするドライブ１６０をアクセスし、コマンドの論理不整合を検出したときには、この検出結果をスイッチ１４０Ａ、１４０Ｂを介してＭＰＵ１３１に転送し、ＭＰＵ１３１に対してリトライ処理を要求する。【選択図】図５
2008041080.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶デバイスを備えるメモリユニットと、上位装置からのデータの入出力要求に応答して前記メモリユニットに対するデータ入出力処理を行う複数のコントロールユニットと、各々のコントロールユニットと前記メモリユニットとをそれぞれ接続する複数の接続経路と、前記複数の接続経路のうちいずれかの接続経路中に挿入されてデータの入出力を制御するポートセレクタと、を備え、
前記コントロールユニットは、制御プログラムを格納するメモリと、前記データ入出力処理の全体制御を行うとともに、前記制御プログラムに基づいて前記データの入出力要求に応じたコマンドを生成するコントローラと、前記コマンドに基づいて前記メモリユニットのうち前記データ入出力要求の対象となっている記憶デバイスへアクセスするための制御を行うイニシエータと、を備え、前記ポートセレクタは、前記コマンドを受信したときに、前記コマンドの異常の有無を判定し、前記判定結果に従った処理を少なくとも前記コントローラに対して実行する記憶制御システム。
【請求項２】
前記ポートセレクタは、前記コマンドに関する判定結果として、正常の判定結果を得たときには、前記接続経路を介して目的とする記憶デバイスにアクセスし、異常の判定結果を得たときには、前記異常の判定結果を前記接続経路を介して前記コントローラに転送することを特徴とする請求項１に記載の記憶制御システム。
【請求項３】
前記ポートセレクタは、前記コマンドの異常の有無を判定するときに、前記コマンドの論理不整合を検出したときには、この検出結果を前記異常の判定結果として前記接続経路を介して前記コントローラに転送することを特徴とする請求項２に記載の記憶制御システ
ム。
【請求項４】
前記コントローラは、前記ポートセレクタから異常の判定結果を受けたときには、前記異常の判定結果を認識して、前記コマンドを再度生成するためのリトライ処理を実行することを特徴とする請求項１に記載の記憶制御システム。
【請求項５】
前記コントローラは、前記ポートセレクタから受けた前記異常の判定結果を認識したときに、前記認識結果から閉塞すべき部位を判定し、この判定結果に従って前記閉塞すべき部位を閉塞することを特徴とする請求項４に記載の記憶制御システム。
【請求項６】
複数の記憶デバイスを備えるメモリユニットと、上位装置からのデータの入出力要求に応答して前記メモリユニットに対するデータ入出力処理を行う複数のコントロールユニットと、各々のコントロールユニットと前記メモリユニットとをそれぞれ接続する複数の接続経路と、を備え、
前記コントロールユニットは、制御プログラムを格納するメモリと、前記データ入出力処理の全体制御を行うとともに、前記制御プログラムに基づいて前記データの入出力要求に応じたコマンドを生成するコントローラと、前記コマンドに基づいて前記メモリユニットのうち前記データ入出力要求の対象となっている記憶デバイスへアクセスするための制御を行うイニシエータと、を備え、
前記各々のメモリユニットは、データの入出力を制御するポートセレクタを備え、前記ポートセレクタは、前記コマンドを受信したときに、前記コマンドの異常の有無を判定し、前記判定結果に従った処理を少なくとも前記コントローラに対して実行する記憶制御システム。
【請求項７】
前記ポートセレクタは、前記コマンドに関する判定結果として、正常の判定結果を得たときには、目的とする記憶デバイスにアクセスし、異常の判定結果を得たときには、前記異常の判定結果を前記コントローラに転送することを特徴とする請求項６に記載の記憶制御システム。
【請求項８】
前記ポートセレクタは、前記コマンドの異常の有無を判定するときに、前記コマンドの論理不整合を検出したときには、この検出結果を前記異常の判定結果として前記コントローラに転送することを特徴とする請求項７に記載の記憶制御システム。
【請求項９】
前記コントローラは、前記ポートセレクタから異常の判定結果を受けたときには、前記異常の判定結果を認識して、前記コマンドを再度生成するためのリトライ処理を実行することを特徴とする請求項６に記載の記憶制御システム。
【請求項１０】
前記コントローラは、前記ポートセレクタから受けた前記異常の判定結果を認識したときに、前記認識結果から閉塞すべき部位を判定し、この判定結果に従って前記閉塞すべき部位を閉塞することを特徴とする請求項９に記載の記憶制御システム。
【請求項１１】
前記コントローラは、前記閉塞すべき部位を前記イニシエータと判定したときには、前記イニシエータを閉塞し、前記閉塞すべき部位を前記記憶デバイスと判定したときには、前記記憶デバイスを閉塞するための処理を実行することを特徴とする請求項５に記載の記憶制御システム。
【請求項１２】
前記コントローラは、前記閉塞すべき部位を判定したときに、前記閉塞すべき部位に対する判定回数が閾値を超えたことを条件に前記閉塞すべき部位に対する閉塞処理を実行することを特徴とする請求項６に記載の記憶制御システム。
【請求項１３】
前記コントローラは、前記閉塞すべき部位に対する閉塞処理を実行するときには、前記閉塞すべき部位の情報を前記上位装置に転送することを特徴とする請求項７に記載の記憶制御システム。
【請求項１４】
複数の記憶デバイスを備えるメモリユニットと、上位装置からのデータの入出力要求に応答して前記メモリユニットに対するデータ入出力処理を行う複数のコントロールユニットと、各々のコントロールユニットと前記メモリユニットとをそれぞれ接続する複数の接続経路と、前記複数の接続経路のうちいずれかの接続経路中に挿入されてデータの入出力を制御するポートセレクタと、を備え、前記コントロールユニットは、制御プログラムを格納するメモリと、前記データ入出力処理の全体制御を行うとともに、前記制御プログラムに基づいて前記データの入出力要求に応じたコマンドを生成するコントローラと、前記コマンドに基づいて前記メモリユニットのうち前記データ入出力要求の対象となっている記憶デバイスへアクセスするための制御を行うイニシエータと、を備え、前記メモリユニットと前記複数のコントロールユニットとの間で、前記複数の接続経路と前記ポートセレクタを介してデータの授受を行うに際して、
前記ポートセレクタは、前記コマンドを受信したときに、前記コマンドの異常の有無を判定し、前記判定結果に従った処理を少なくとも前記コントローラに対して実行する記憶制御システムの制御方法。
【請求項１５】
前記ポートセレクタは、前記コマンドに関する判定結果として、正常の判定結果を得たときには、前記接続経路を介して目的とする記憶デバイスにアクセスし、異常の判定結果を得たときには、前記異常の判定結果を前記接続経路を介して前記コントローラに転送することを特徴とする請求項１４に記載の記憶制御システムの制御方法。
【請求項１６】
前記ポートセレクタは、前記コマンドの異常の有無を判定するときに、前記コマンドの論理不整合を検出したときには、この検出結果を前記異常の判定結果として前記接続経路を介して前記コントローラに転送することを特徴とする請求項１５に記載の記憶制御システムの制御方法。
【請求項１７】
前記コントローラは、前記ポートセレクタから異常の判定結果を受けたときには、前記異常の判定結果を認識して、前記コマンドを再度生成ためのリトライ処理を実行することを特徴とする請求項１４に記載の記憶制御システムの制御方法。
【請求項１８】
前記コントローラは、前記ポートセレクタから受けた前記異常の判定結果を認識したときに、前記認識結果から閉塞すべき部位を判定し、この判定結果に従って前記閉塞すべき部位を閉塞することを特徴とする請求項１７に記載の記憶制御システムの制御方法。
【請求項１９】
前記コントローラは、前記閉塞すべき部位を前記イニシエータと判定したときには、前記イニシエータを閉塞し、前記閉塞すべき部位を前記記憶デバイスと判定したときには、前記記憶デバイスを閉塞するための処理を実行することを特徴とする請求項１８に記載の記憶制御システムの制御方法。
【請求項２０】
複数の記憶デバイスを備えるメモリユニットと、上位装置からのデータの入出力要求に応答して前記メモリユニットに対するデータ入出力処理を行う複数のコントロールユニットとをそれぞれ接続する複数の接続経路のうちいずれかの接続経路中に挿入されてデータの入出力を制御するポートセレクタにおいて、前記コントロールユニットで生成されたコマンドを受信したときに、前記コマンドの異常の有無を判定し、前記コマンドに関する判定結果として、正常の判定結果を得たときには、前記接続経路を介して目的とする記憶デバイスにアクセスし、異常の判定結果を得たときには、前記異常の判定結果を前記接続経路を介して前記コントロールユニットに転送することを特徴とするポートセレクタ。
【請求項２１】
前記コマンドの異常の有無を判定するときに、前記コマンドの論理不整合を検出したときには、この検出結果を前記異常の判定結果として前記接続経路を介して前記コントロールユニットに転送することを特徴とする請求項２０に記載のポートセレクタ。
【請求項２２】
上位装置からのデータの入出力要求に応答して、複数の記憶デバイスを備えるメモリユニットに対するデータ入出力処理を行うコントロールユニットに属するコントローラであって、制御プログラムに基づいて前記データの入出力要求に応じたコマンドを生成し、生成したコマンドを、前記データ入出力要求の対象となっている記憶デバイスへアクセスするための制御を行うイニシエータを転送するコントローラにおいて、前記コントロールユニットと前記メモリユニットとをそれぞれ接続する複数の接続経路のうちいずれかの接続経路中に挿入されてデータの入出力を制御するポートセレクタから異常の判定結果を受けたときには、前記異常の判定結果を認識して、前記コマンドを再度生成するためのリトライ処理を実行することを特徴とするコントローラ。
【請求項２３】
前記ポートセレクタから受けた前記異常の判定結果を認識したときに、前記認識結果から閉塞すべき部位を判定し、この判定結果に従って前記閉塞すべき部位を閉塞することを特徴とする請求項２２に記載のコントローラ。
【請求項２４】
前記閉塞すべき部位を前記イニシエータと判定したときには、前記イニシエータを閉塞し、前記閉塞すべき部位を前記記憶デバイスと判定したときには、前記記憶デバイスを閉塞するための処理を実行することを特徴とする請求項２３に記載のコントローラ。
【請求項２５】
前記閉塞すべき部位を判定したときに、前記閉塞すべき部位に対する判定回数が閾値を超えたことを条件に前記閉塞すべき部位に対する閉塞処理を実行することを特徴とする請求項２４に記載のコントローラ。
【請求項２６】
前記閉塞すべき部位に対する閉塞処理を実行するときには、前記閉塞すべき部位の情報を前記上位装置に転送することを特徴とする請求項２５に記載のコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コントロールユニットが多重化され、複数のコントロールユニットが共通するメモリユニットにアクセスする記憶制御システム及びその制御方法に関するものである。
【背景技術】
【０００２】
ミッドレンジクラスの記憶制御装置として、１つの筐体内に２重化されたコントロールユニットを備え、それぞれのコントロールユニットが共通する記憶装置にアクセスするように構成されているものが提案されている（特許文献１参照）。この記憶制御装置においては、複数の記憶デバイスがアレイ状に配列されて筐体内に収容され、各コントロールユニットは、別個に設けられた接続系統（接続経路）を介して記憶装置にアクセスすることができる。
【０００３】
各コントロールユニットは、上位装置であるホスト装置からのＩ／Ｏ要求を受けて、Ｉ／Ｏ要求先の記憶デバイスにアクセスする。各コントロールユニットは、コントロールユニット全体を制御するＭＰＵと、キャッシュメモリと、上位装置であるホストが接続するポートと、ＭＰＵからの制御の下、アクセス系統を介して、複数の記憶デバイス（ハードディスクドライブ）のうちデータ入出力要求先のハードディスクドライブにアクセスするための制御を実行する、イニシエータとしてのディスクコントローラと、ＭＰＵとキャッシュメモリとディスクコントローラとの間でデータの交換を制御するデータコントローラとを備えている。
【０００４】
ホスト装置からのＩ／Ｏ要求に基づいて、コントロールユニットが記憶デバイスにアクセスするルートには、第１のコントロールユニットのディスクコントローラと第１の接続経路を通過するルートと、第２のコントロールユニットのディスクコントローラと第２の接続経路を通過するルートがある。これらのルートを用いてコントロールユニットが記憶デバイスにアクセスするに際しては、いずれかのルートで切断や障害が発生すると、コントロールユニットとハードディスクドライブとの通信ができなくなるため、ルートが切断されたり、ルートに障害が発生したりしたときには、ルートの一部やハードディスクドライブをバイパス（切り離し）するポートバイパス回路が設けられている。
【０００５】
一方、データの統一性を保全するに際して、物理的なチェックサム計算を行ったあとに、データブロック内に含まれるデータ上で論理チェックを行い、データブロックが論理チェックをパスしたときに、データブロックを不揮発性メモリに書き込み、そのあと、不揮発性メモリからデータブロックを読み出し、物理的なチェックサムの検証をデータブロック上で行うとともに、データブロック内に含まれるデータ上で論理チェックを行ってデータブロックが破損したか否かを判定する方法が提案されている（特許文献２参照）。
【０００６】
また、記憶デバイスから一連のデータをブロック単位で読み出してデータコントローラのデータ記憶部に記憶するに際して、データ制御部において、書き込みデータの書き込み先となるブロックとデータ記憶部に記憶されているブロックとが同じ場合は、データ記憶部に記憶されているデータを書き込みデータにより更新し、異なる場合は、データ記憶部に記憶されている一連のデータに基づいて保証コードを生成し、その一連のデータに保証コードを付加して記憶デバイスに転送するものがある（特許文献３参照）。また、この種の技術に関連するものとして、特許文献４、特許文献５、及び特許文献６に記載されているものがある。
【０００７】
特許文献５は、上位装置と下位装置との間で転送される転送情報の変換処理において、変換処理の検証をする情報転送処理装置を提供するために、情報処理装置と１または２以上の記憶装置との間に設けられ、情報処理装置と記憶装置との転送制御を行う情報変換処理装置において、前記情報処理装置からの前記記憶装置に対する論理的な転送情報を物理的な転送情報に変換して出力する物理情報生成部と、前記物理情報生成部で行われた変換が正しく変換されたか否かを検証し、検証結果を出力するチェック部とを有する、ことを開示している。
【０００８】
特許文献６は、ＳＡＴＡリンクまたはＡＴＡリンクを介してスイッチのデバイスポートに接続された単一ポート方式の格納ユニットへの２つのホストポートからの同時のアクセスを可能にする電子スイッチが必要であるとの目的の下、スイッチが、第１のホストユニットに接続される第１のシリアルアドバンスドテクノロジーアタッチメント（ＡＴＡ）ポートと、第２のホストユニットに接続される第２のシリアルＡＴＡポートとデバイスに接続される第３のシリアルＡＴＡポートと、ｄ）該第１のホストユニットまたは第２のホストユニットのどちらか一方が、該デバイスによって実行されるコマンドを送信する場合はいつでも、該スイッチを介して、該第１のホストユニットまたは該第２のホストユニットの該デバイスに接続されるべき一方を選択するアービトレーションおよびコントロール回路と、を備える、ことを開示している。
【特許文献１】特開２００５−３１９２８号公報
【特許文献２】特表２００４−５３０９６４号公報
【特許文献３】特開２００５−８４７９９号公報
【特許文献４】特開２００５−１８３４２０号公報
【特許文献５】特開２００２−２５１３３２号公報
【特許文献６】特開２００５−３２７２３０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
コントロールユニットから記憶デバイスにアクセスするに際して、コントロールユニットにおいて、ホストから発行されたコマンド情報を基にコマンドの変換処理を行う必要がある場合、無効コマンドを避けるためのパリティ計算を施すだけでは、例えば、アルファ線によって破損されたビットを検出することができず、ハードディスクドライブは正しくないコマンドを受領して不正なＩＯアクセスを実行してしまうおそれがある。
【００１０】
また、特許文献４に記載されているものでは、メモリサイズや配線幅サイズの縮小に伴ってノード容量を形成する拡散層（ゲート面積）が小さくなり、ノード容量も低下されることになってソフトエラーの課題が生じる。このソフトエラーはメモリセルに対してα線や中性子線が照射されたときに、ノード容量によって蓄積されていたデータ電荷が半導体基板側に逃げてしまい、データが消失してしまうことになる。
【００１１】
そこで、この発明は、記憶装置とコントロールユニットの間でコマンドを構成するデータを変換するときに、データが破損した場合においても、コマンドを構成するデータの破損を検出する手段を提供し、HDDに対して不正なIOアクセスを防止し、制御コントローラが適切なエラー処理を実施するための、記憶制御システムおよびその制御方法を提供することを目的とするものである。
【課題を解決するための手段】
【００１２】
前記目的を達成するために、本発明は、コントロールユニットを２重化した記憶制御システムにおいて、コントロールユニットとメモリユニットを結ぶ複数の接続経路のうちいずれかの接続経路に挿入されてデータの入出力を制御するポートセレクタがコマンドを受信したときに、コマンドの異常の有無を判定し、この判定結果にしたがった処理を少なくともコントロールユニットに対して実行することを特徴とするものである。
【００１３】
本発明によれば、コントロールユニットで生成されたコマンドが記憶装置に転送される過程で、コマンドを構成するデータが、コマンドを構成するデータの変換処理にて破損したときには、コマンドを構成するデータを検証する部位が、記憶装置に破損したコマンドを転送するのを防止して、コントローラに対してエラーを通知することにより、コントローラは、適切なエラー処理を実施することができる。
【００１４】
本発明は、さらに詳しくは、複数の記憶デバイスを備えるメモリユニットと、上位装置からのデータの入出力要求に応答して前記メモリユニットに対するデータ入出力処理を行う複数のコントロールユニットと、各々のコントロールユニットと前記メモリユニットとをそれぞれ接続する複数の接続経路と、前記複数の接続経路のうちいずれかの接続経路中に挿入されてデータの入出力を制御するポートセレクタと、を備え、前記コントロールユニットは、制御プログラムを格納するメモリと、前記データ入出力処理の全体制御を行うとともに、前記制御プログラムに基づいて前記データの入出力要求に応じたコマンドを生成するコントローラと、前記コマンドに基づいて前記メモリユニットのうち前記データ入出力要求の対象となっている記憶デバイスへアクセスするための制御を行うイニシエータと、を備え、前記ポートセレクタは、前記コマンドを受信したときに、前記コマンドの異常の有無を判定し、前記判定結果に従った処理を少なくとも前記コントローラに対して実行する記憶制御システムである。特に、前記ポートセレクタは、前記コマンドに関する判定結果として、正常の判定結果を得たときには、前記接続経路を介して目的とする記憶デバイスにアクセスし、異常の判定結果を得たときには、前記異常の判定結果を前記接続経路を介して前記コントローラに転送することを特徴とする。
【発明の効果】
【００１５】
本発明によれば、コマンドを構成するデータが、コマンドを構成するデータの変換処理にて破損し、コマンドを構成するデータが物理的な伝送経路を正常に転送した場合において、前記コマンドの論理的な異常に対して、コマンドの論理的な異常を検出する手段、および、適切なエラー処理を実施することができる、記憶装置システムおよびその制御方法を提供することができる。
【発明を実施するための最良の形態】
【００１６】
以下、各図を参照して本発明の実施形態について説明する。以後、説明する実施形態は特許請求の範囲を限定するものではなく、また実施形態の中で説明されている特徴を適宜組み合わせることができる。
【００１７】
図１は、本発明の第１実施形態を示す記憶制御システム（ディスクアレイシステム）のブロック構成図、図２は、本発明の第２実施形態を示す記憶制御システム（ディスクアレイシステム）のブロック構成図である。ストレージシステム１２０は、記憶制御システムとして、通信ネットワーク１１０を介して、複数のホスト装置（上位ホスト装置）１００に接続されている。各ホスト装置１００は、ストレージシステム１２０の上位ホスト装置として機能するサーバ、パーソナルコンピュータ、ワークステーション、メインフレームなどである。通信ネットワーク１１０としては、例えば、LAN（Local Area Network）、SAN（Storage  Area  Network）、インターネット、専用回線などがある。この通信ネットワーク１１０には、ホスト１００とストレージシステム１２０とを結ぶホストポート１００Ａ、１００Ｂが設けられている。
【００１８】
オープン系ホストの場合は、例えば、TCP/IP（Transmission  Control  Protocol/Internet  Protocol）、FCP（Fibre  Channel  Protocol）、iSCSI（internet  Small  Computer  System  Interface）などのプロトコルに基づいてデータ転送が行われる。メインフレーム系ホストの場合は、例えば、FICON（Fibre  Connection；登録商標）、ESCON（Enterprise  System  Connection；登録商標）、ACONARC（Advanced  Connection  Architecture；登録商標）、FIBARC（Fibre  Connection  Architecture；登録商標）などの通信プロトコルに基づいてデータ転送が行われる。なお、ホスト装置１００からNFS（Network  File  System）などのプロトコルにより、ファイル名指定によるデータ出力要求を受付けるように構成されたNAS（Network  Attached  Storage）機能を搭載してもよい。
【００１９】
ディスクアレイシステム１２０は、２重化されたコントロールユニット１３０Ａ、１３０Ｂ、スイッチ１４０Ａ、１４０Ｂ、ＳＡＳ（Serial Attached SCSI）ドライブ１５０、ＳＡＴＡ（Serial Advanced Technology Attachment）ドライブ１６０、複数のポートセレクタ３００を備えて構成されている。記憶装置としてはＦＣドライブでもよい。ポートセレクタ３００は、SATAドライブ１６０が二重化されたコントローラからＩＯ要求を受領するために、ホストポートが単一のSATAドライブ１６０を、2つのホストポートに拡張するために用いるスイッチである。
【００２０】
コントロールユニット１３０Ａ、１３０Ｂは、それぞれ同一のもので構成されており、主に、ＭＰＵ１３１、メモリ１３２、ファイバチャネル（ＦＣ）プロトコルコントローラ１３３、データコントローラ１３４、キャッシュメモリ１３５、ＳＡＳプロトコルコントローラ１３６を備え、コントロールユニット１３０Ａのデータコントローラ１３４とコントロールユニット１３０Ｂのデータコントローラ１３４がそれぞれデータミラーリングバス１３７を介して接続されている。なお、図２に示す第２実施形態は、ＳＡＳプロトコルコントローラ１３６の代わりに、ファイバチャネル（ＦＣ）プロトコルコントローラ１３３、プロトコル変換コントローラ４００を備えたものであり、他の構成は図１に示す第１実施形態のものと同様である。プロトコル変換コントローラ４００は、ポートセレクタ３００の部分にあってもよい（ＦＣバックエンドの場合、ポートセレクタ３００にプロトコル変換コントローラ４００の機能を付加してもよい）。
【００２１】
ＭＰＵ（ＣＰＵ）１３１は、ホスト装置１１０からのデータ入出力要求に応答して、複数のＳＡＳドライブ１５０、ＳＡＴＡドライブ１６０へのデータ入出力処理（ライトアクセス、またはリードアクセスなど）を制御するプロセッサであり、ローカルメモリとしてのメモリ１３２に格納された制御プログラム５００を実行することにより、ファイバチャネルプロトコルコントローラ１３３、データコントローラ１３４、ＳＡＳプロトコルコントローラ１３６、プロトコル変換コントローラ４００を制御する機能を有する。
【００２２】
データコントローラ１３４は、ＭＰＵ１３１の制御により、ファイバチャネルプロトコルコントローラ１３３とキャッシュメモリ１３５との間のデータ転送を制御する。キャッシュメモリ１３５は、ファイバチャネルプロトコルコントローラ１３３を介してフロントインタフェイスまたはバックインタフェイスとの間で授受されるデータを一時的に記憶する。
【００２３】
ＳＡＳプロトコルコントローラ１３６は、メモリユニットに属するＳＡＳドライブ１５０、ＳＡＴＡドライブ１６０のうちデータ入出力要求の対象となっている記憶デバイスへアクセスを制御するためのイニシエータとして、スイッチ１４０Ａまたはスイッチ１４０Ｂを介してコマンドなどを規定するプロトコルにしたがって各記憶デバイス（ＳＡＳドライブ１５０、ＳＡＴＡドライブ１６０）に対して、データ入出力要求を送信する機能を有する。
【００２４】
スイッチ１４０Ａ、１４０Ｂは、コントロールユニット１３０Ａ、１３０Ｂとメモリユニットに属するＳＡＳドライブ１５０、ＳＡＴＡドライブ１６０とをそれぞれ接続する接続経路を構成するようになっており、これら接続経路のうち特定の接続経路には、ポートセレクタ３００が挿入されている。
【００２５】
各ポートセレクタ３００は、図３に示すように、各種の演算を行うＣＰＵ３１０、メモリ３１１、ＳＡＴＡフレームのテンポラリメモリ３１２、スイッチ１４０Ａに接続されるＳＡＴＡホストポート（ポートＡ）３２０、スイッチ１４０Ｂに接続されるＳＡＴＡホストポート（ポートＢ）３２１、ＳＡＴＡドライブ１６０に接続されるＳＡＴＡドライブポート３２２を備えて構成されている。メモリ３１１にはコマンド検証プログラム３３０に関するデータが格納されているとともに、マッピングテーブル３４０に関するデータが格納されている。マッピングテーブル３４０には、ドライブポート３４１に関するデータとしてＴａｇ０〜Ｔａｇ３１が格納され、ホストポート３４２には、ホストポート３４２に関するデータとして、ホストポートＡ／Ｂと、ホストポート側のコマンドのＴａｇに関するデータが格納されている。
【００２６】
一方、プロトコル変換コントローラ４００は、図４に示すように、各種演算処理を行うＣＰＵ４１０、メモリ４１１、ファイバチャネル（ＦＣ）フレームとＳＡＴＡフレームのテンポラリメモリ４１２、スイッチ１４０Ａ、１４０Ｂに接続されるファイバチャネル（ＦＣ）ホストポート（ポートＡ）４２０、ファイバチャネル（ＦＣ）ホストポート（ポートＢ）４２１、スイッチ１４０Ａ、１４０Ｂに接続されるＳＡＳポート４２２を備えて構成されている。メモリ４１１には、コマンド検証プログラム３３０に関するデータが格納されているとともに、変換テーブル４４０に関するデータが格納されている。変換テーブル４４０には、ＳＣＳＩ  ＣＭＤ４４１に関するデータとして、リード、ライトに関するデータが格納されているとともに、ＳＣＳＩ  ＣＭＤ４４１に対応して、ＡＴＡ  ＣＭＤ４４２に関するデータが格納されている。
【００２７】
次に、ストレージシステム１２０におけるコマンド生成から実行までの処理内容を図５に基づいて説明する。ＭＰＵ（ＣＰＵ）１３１は、ホスト装置１００からのデータの入出力要求に応答して、データ入出力処理の全体制御を行う。ＭＰＵ １３１は、制御プログラム５００に基づいて、データの入出力要求に応じたコマンドを制御する。たとえば、ＭＰＵ１３１は、ホスト装置１００から入出力要求を受領したときに、ＨＤＤに発行するコマンドを制御プログラム５００に基づいて生成する。この時、ＦＣＰコントローラ１３３がホスト１００から受領するコマンドを構成するデータを書き込み、また、ＨＤＤに発行するコマンドを構成するデータを保持する、ローカルメモリ１３２と、ローカルメモリにアクセスする経路（ＰＣＩ, PCI-Express等のＢＵＳ）は、パリティやＥＣＣ、ＣＲＣにてデータの一貫性を保持している。
【００２８】
このあと、図６（ａ）に示す構成情報テーブル６１０と、図６（ｂ）に示すアルゴリズムテーブル６２０の内容を参照しながら、チェックサムを計算し、コマンド情報とチェックサムを合わせた情報を取得する。SATAドライブ１６０に対してコマンドを発行する場合、ポートセレクタが変換した後のコマンドを構成するデータは、ポートセレクタ３００のマッピングテーブル３４０にて計算できる。よって、ＭＰＵ１３１は、ポートセレクタ３００のマッピングテーブル３４０を考慮したチェックサムの計算アルゴリズム６２２（後述）に基づいて、ポートセレクタ３００にて変換される後のコマンドを構成するデータを予測し、予測した前記コマンドを構成するデータに対してチェックサムを計算する。構成情報テーブル６１０には、筐体番号６１１、ドライブ番号６１２に対して、ドライブのポートＩＤ（ＷＷＮ：World Wide Name）６１３、ドライブ種別６１４、計算アルゴリズム番号６１５に関するデータが格納され、アルゴリズムテーブル６２０には、計算アルゴリズム番号６２１に対応して、計算アルゴリズム６２２、コマンド検証の対象となるコマンド種別のリスト６２３、途中経路のデバイス６２４に関するデータが格納されている。
【００２９】
この処理の過程では、パリティ、ＥＣＣ、チェックサムがコマンドの保護として行われることになる。コマンドを構成するデータは、ローカルメモリやバス（PCI, PCI-Express等）のパリティ, ＥＣＣ, ＣＲＣに加えて、既述の計算に依るチェックサムにて保護される。このあとＳＡＳプロトコルコントローラ１３６は、プロトコルに応じたコマンドフレームを作成し、作成したコマンドフレームにＣＲＣ（Cyclic Redundancy Check）を付加し、ＣＲＣが付加されたコマンドフレームを発行する。ＳＡＳプロトコルコントローラ１３６が発行するコマンドフレームは、フレームを保護するCRCと、コマンドを構成するデータを保護するチェックサムにて保護される。コマンドがスイッチ１４０Ａ、１４０Ｂを介してポートセレクタ３００に転送されると、ポートセレクタ３００は、コマンドフレームを受領し、コマンドフレームのＣＲＣを検証し、ＣＲＣが正しいとＣＲＣを削除する。ポートセレクタは、マッピングテーブル３４０を参照して、コマンドを構成する情報のうちTag番号を、コマンドフレームを受領したポート番号とTag番号に対応する、新たなＴａｇ番号に変換する。この変換作業の間は、コマンドを構成するデータは、ＭＰＵ１３１があらかじめ計算してコマンドを構成するデータとして付加したチェックサムによって保護される。その後、変換後のコマンドを構成するデータに対して、ＳＡＴＡプロトコルにて規定されたＣＲＣをfooterに付加して、コマンドフレームを構成する。この時に、コマンドフレームは、ＣＲＣにて保護され、コマンドを構成するデータはＭＰＵ １３１にてあらかじめ算出したチェックサムにて保護される。
【００３０】
この後、ポートセレクタ３００は、ＭＰU１３１が制御プログラム５００に基づいてコマンドを発行する前にあらかじめ付加したチェックサムを用いて、コマンドが論理的に正しいかを検証する。具体的には、コマンド検証は、コマンド情報の論理的に破壊されたデータのチェックである。ポートセレクタ３００は、コマンド検証プログラム３３０に基づいて、検証が正しい（valid）場合にはドライブに対してコマンドフレームを発行し、検証結果が正しくない（invalid）場合にはコマンドフレームを破棄して、コントローラに対してエラー通知を実行する。.ポートセレクタ３００から目的とするドライブにコマンドが発行されたときには、例えば、ＳＡＴＡドライブ１６０は、論理的なコマンド検証を通過した正しいコマンドを受領し、アクセスに応答した処理を行うことになる。ＳＡＴＡドライブ１６０はコマンドの保護としてＣＲＣを行なう。以上説明したとおり、コマンドを構成するデータに付加したチェックサムの値は、ＭＰＵ１３１がコマンドとチェックサムを生成してから、ドライブがコマンドフレームを受領するまで、変化しない。ポートセレクタ３００は、途中経路にてコマンドを構成するデータを変更するプロセスにてソフトエラー等による破損が生じた場合に、コマンドを構成するデータの破損を検出し、不正なコマンドをドライブに発行することを防止し、かつ、コントローラに適切なエラー処理を実施するように通知することができる。
【００３１】
図７（Ａ）に、メモリ１３２に格納されたエラーカウンタテーブル７１０、７２０の構成を示す。エラーカウンタテーブル７１０には、図７（Ｂ）のテーブルで定義しているように、筐体番号６１１とドライブ番号６１２に関するデータがエラーカウンタ７１１に関連づけて格納されており、また閾値７１２に関するデータも格納されている。またエラーカウンタテーブル７２０には、プロトコルコントローラ番号７２１とエラーカウンタ７２２に関するデータが格納されているとともに、閾値７２３に関するデータが格納されている。
【００３２】
図８（Ａ）は、ＳＡＴＡのRead／Write FPDMA Queuedコマンド８１０のフレーム情報の構成を示し、図８（Ｂ）は、ＳＣＳＩのRead（１０）コマンドのコマンド記述ブロック（ＣＤＢ）のフォーマット８２０の構成を示し、図８（ｃ）に、ＳＩＳＣのWrite（１０）コマンドのＣＤＢのフォーマット８３０およびCheck  Sum８０１の挿入位置の例を示す。Check Sum８０１を計算する対象のフィールド８０２は、一例である。
【００３３】
次に、構成テーブル６１０を構成するときの処理を図９にしたがって説明する。まず、ＭＰＵ１３１が構成情報テーブル６１０の構築を開始すると（Ｓ１０）、制御プログラム５００は、接続しているデバイスを探索する（Ｓ１１）。このとき制御プログラム５００は、デバイス種別として、プロトコル変換かドライブかを判別し（Ｓ１２）、ドライブのときには、ドライブ種別を判別する（Ｓ１３）。ステップＳ１２においてプロトコル変換と判別されたときには、制御プログラム５００は、プロトコル変換コントローラ４００のデバイスの情報を取得するためのコマンドを発行し（Ｓ２０）、ドライブ種別を判別する（Ｓ２１）。ステップＳ１３とＳ２１においてドライブ種別としてＳＡＴＡと判別されたときには、制御プログラム５００は、ＳＡＴＡドライブ１６０の手前のポートセレクタ３００に対して、ポートセレクタ３００のチェックサム計算アルゴリズムを選択するための情報を取得するためのコマンドを発行し、ステップＳ４０の処理に移行する（Ｓ３０）。
【００３４】
一方、ステップＳ１３において、ＳＡＳドライブまたはＦＣドライブ（途中の接続経路に変換デバイスなし）と判別されたとき、あるいはステップＳ２１においてＦＣ／ＳＡＳと判別されたときには、ステップＳ４０の処理に移行する。ステップＳ４０においては、制御プログラム５００は、接続デバイスの種別及び途中の接続経路に接続しているデバイスからチェック関数を選択する（Ｓ４０）。続いて制御プログラム５００は、構成情報テーブル６１０に、チェック関数番号を登録し（Ｓ５０）、さらに、ドライブに対してチェックサムが不正なコマンドを発行し、正常にエラー応答を返すかを確認するための処理行い（Ｓ６０）、このルーチンでの処理を終了する。
【００３５】
次に、コマンドチェックが正常に終了したときの処理を図１０にしたがって説明する。まず、ＭＰＵ１３１の処理を基に、制御プログラム５００は、リードコマンドの実行に必要な、コマンドを構成する情報（ドライブのアドレス、転送長、ＬＢＡ、Tagなど）を生成し（Ｓ１００）、特定のドライブを示す筐体＃およびunit＃を用いて、構成情報テーブル６１０からチェックサムの計算アルゴリズム６２２を選択し（Ｓ１０１）、ステップＳ１００にて生成したコマンドの情報から、計算アルゴリズム６２２を用いて、ドライブが受領するコマンドのチェックサムを計算し、チェックサムをステップＳ１００にて生成されたコマンドを構成するデータに付加し（Ｓ１０２）、SASプロトコルコントローラ１３５にチェックサムを付加したコマンドを登録する（Ｓ１０３）。コマンドが生成されると、ＳＡＳプロトコルコントローラ１３６において、コマンドの発行（ＳＡＴＡ  Ｈ２Ｄ  ＦＩＳの発行）が行われる（Ｓ１０４）。このあとポートセレクタ３００がコマンドを受領すると（Ｓ１１０）、ポートセレクタ３００はコマンドを変換し、コマンド変換後のコマンドフレームに対してＣＲＣを生成（Ｓ１１１）、コマンドの検証を行う（Ｓ１１２）。
【００３６】
このとき、“Valid”と判定したときには、ポートセレクタ３００は、ドライブ１６０に対してコマンドを発行する（Ｓ１１３）。ＳＡＴＡドライブ１６０がコマンドを受領したときには（Ｓ１３０）、ＳＡＴＡドライブ１６０からＳＡＳプロトコルコントローラ１３６に対してコマンド受領の通知（SATA  D２H  FIS発行）を行う（Ｓ１３１）。ＳＳプロトコルコントローラ１３６がD２H  FISを受領する（Ｓ１３２）。このときＳＡＴＡドライブ１６０はＤＭＡ転送準備（DMA  Setup  FIS発行）を行い（Ｓ１３３）、準備した内容をＳＡＳプロトコルコントローラ１３６に転送する（Ｓ１３３）。ＳＳプロトコルコントローラ１３６がDMA  Setup  FISを受領する（Ｓ１３４）。
【００３７】
これにより、ＳＡＴＡドライブ１６０は、リードデータの転送（Data  FIS送信）をＳＡＳプロトコルコントローラ１３６に対して行う。ＳＳプロトコルコントローラ１３６は、Data  FISを受領する（Ｓ１３６）。これにより、ＳＡＴＡドライブ１６０は、コマンド完了通知（SDB  FIS、D２H  FIS）をＳＳプロトコルコントローラ１３６に対して行う（Ｓ１３７）。ＳＡＳプロトコルコントローラ１３６は、制御プログラム５００にコマンドの完了を通知する（Ｓ１３８）。コマンド完了通知を受領した制御プログラム５００はコマンドの生成に関する処理を完了し（Ｓ１３９）、このルーチンでの処理を終了する。
【００３８】
次に、コマンドチェックの結果が異常（invalid）である際の処理とリトライ処理を図１１のフローチャートにしたがって説明する。まず、ＭＰＵ１３１の処理に基づいて制御プログラム５００は、コマンドチェック結果が正常である時と同様に、ステップＳ１００〜Ｓ１０３までの処理を実行し、ＳＡＳプロトコルコントローラ１３６はステップＳ１０４の処理を実行し、ポートセレクタ３００はステップＳ１１０〜Ｓ１１２までの処理を行う。このあと、ポートセレクタ３００は、コマンドの転送に伴う異常として、コマンドを構成するデータの破損を検出したときには検出結果をＳＡプロトコルコントローラ１３６に通知する（Ｓ１６１）。マンドを構成するデータの破損の結果を受領したＳＡプロトコルコントローラ１３６はその旨を制御プログラム５００に転送する（Ｓ１６２）。制御プログラム５００は、コマンドの論理不整合の検出結果を受けて、コマンドチェックエラーを認識し（Ｓ１６３）、発行先ドライブごとに、コマンド論理不正のエラーをカウントする（Ｓ１７０）。
【００３９】
このあと制御プログラム５００は、リトライ判定を行うとともに、閉塞すべき部位を判定するための処理を行い（Ｓ１８０）、リトライ判定にしたがって、Ｓ１００の処理に戻るとともに、閉塞すべき部位として、コントローラと判定したときには、その旨をホスト装置１００に転送する（Ｓ１８０）。ホスト装置１８０は、ストレージシステム１２０に属するコントローラの閉塞に対して、冗長パスに切り替えを実施し、ホストＩＯに対するドライブＩＯを冗長パスにて継続し（Ｓ１９０）、このルーチンでの処理を終了する。
【００４０】
次に、リトライ判定処理と閉塞部位判定処理の具体的な内容を図１２のフローチャートにしたがって説明する。図１２は図１１のステップ１８０の詳細である。先ず、制御プログラム５００は、リトライ判定を開始し（Ｓ２００）、エラーカウンタテーブル７００の発生したドライブに該当するエントリのカウンタを加算し（Ｓ２０１）、エラー発生元のＳＳプロトコルコントローラ１３６に該当するエントリのカウンタを加算し（Ｓ２０２）、カウンタの値と閾値とを比較判定する（Ｓ２０３）。カウンタの値が閾値を超えているときには、障害部位の切り分けを開始し（Ｓ２５０）、閾値を超過しているエントリの部位を判定する（Ｓ２５１）。
【００４１】
このときドライブと判定したときには、制御プログラム５００は、ドライブまたはドライブの手前のコマンドフォーマットを変換するデバイス（ポートセレクタ３００やプロトコル変換コントローラ４００など）に障害が発生していると判断し（Ｓ２６１）、ドライブ及び変換デバイスを閉塞する（Ｓ２６２）。このあとスペアドライブがあれば、ＲＡＩＤ制御におけるコレクションコピーをバックグラウンドにて実施を開始し（Ｓ２６３）、ステップＳ２０３においてカウンタの値が閾値以下と判定されたときと同様に、コマンドをリトライするための処理を行い（Ｓ２６４）、図１１のステップＳ１００の処理に戻る。
【００４２】
一方、ステップＳ２５１において、閾値を超過しているエントリはプロトコルコントローラ１３６であると判定されたときには、制御プログラム５００は、他系のコントローラ１３０Ｂのエラーカウンタテーブルにて、エラーが発生していないことを確認し（Ｓ２７１）、障害が発生している自系のコントローラ１３０Ａを閉塞するための処理を行い（Ｓ２７２）、図１１のステップ１９０の処理に移行する。
【００４３】
次に、コマンドチェックプログラムによるコマンドチェックの処理内容を図１３のフローチャートにしたがって説明する。図１３は図１０及び図１１のステップ１２を詳細に説明したものである。
【００４４】
まず、ポートセレクタ３００がコマンドを受領すると（Ｓ３１０）、メモリ３１１に格納されたコマンドチェックプログラム３３０は、受領したコマンドのうちチェック対象の部分について、チェックサムを計算し（Ｓ３２０）、計算したチェックサムと制御プログラム５００が計算してコマンドに付加したチェックサムとを比較し（Ｓ３３０）、両者の内容が同一か否かを判定し（Ｓ３４０）、両者が同一のときには、コマンドは正しく変換されているとして処理し（Ｓ３５０）、一方、異なるときには、不正コマンドのため、プロトコルコントローラ１３６に対してエラー応答として報告し、受領した不正なコマンドを破棄し（Ｓ３６０）、このルーチンでの処理を終了する。
【００４５】
本実施形態によれば、ＭＰＵ１３１の処理に基づいて生成されたコマンドをポートセレクタ３００が受信したときに、ポートセレクタ３００がコマンドを構成するデータが破損しているかどうかを判定し、コマンドが正常であるときには、目的とするドライブ１６０をアクセスし、一方、コマンドが異常であって、コマンドの論理的な不整合を検出したときには、この検出結果をスイッチ１４０Ａ、１４０Ｂを介してＭＰＵ１３１に転送し、ＭＰＵ１３１に対してリトライ処理及び障害部位の検出・閉塞の処理を実施することができる。したがって、本発明はコマンドの論理的な異常を検出する手段を提供し、さらに適切なエラー処理を実施することができる。
ることができる。
【００４６】
前記第２の実施形態において、プロトコル変換、ポートセレクタの両方にコマンドチェックの回路を持っている。制御プログラムが、プロトコル変換が検出して返すエラーと、ポートセレクタが検出して返すエラーを識別できるように、エラーレスポンスを複数種類用意する。これにより、第一の実施形態を組み合わせることにより、プロトコル変換とポートセレクタといった、複数の変換部位のうち、どの部分にコマンドの論理的なデータ化けが発生したかを、制御プログラムが識別することができ、適切に障害部位を切り分け、迅速に閉塞・交換することができる。
【図面の簡単な説明】
【００４７】
【図１】本発明の第１実施形態を示す記憶制御システムのブロック構成図である。
【図２】本発明の第２実施形態を示す記憶制御システムのブロック構成図である。
【図３】図３（Ａ）はポートセレクタを示すブロックダイアグラムであり、図３（Ｂ）はポートセレクタのマッピングテーブルを示す。
【図４】図４（Ａ）はプロトコル変換コントローラを示すブロックダイアグラムであり、図４（Ｂ）はプロトコル変換コントローラのマッピングテーブルである。
【図５】ストレージシステムによりコマンド生成から実行までの処理を説明するための図である。
【図６】（ａ）は、構成情報テーブルの構成図、（ｂ）は、チェックサム計算アルゴリズムのテーブル構成図である。
【図７】（ａ）は、エラーカウンタテーブルの構成図、（ｂ）は、エラーカウンタテーブルの構成図である。
【図８】（ａ）は、SATAのRead/Write FPDMA Queuedコマンドのフレームフォーマットであり、（ｂ）は、SISCのReadコマンドのフレームフォーマットであり、（ｃ）は、SCSIのWriteコマンドのフレームフォーマットである。
【図９】ストレージ装置のK情勢情報を取得するためのフローチャートである。
【図１０】コマンドチェック結果が正常の際の処理を説明するためのフローチャートである。
【図１１】コマンドチェック結果が異常である際の処理及びリトライ処理を説明するためのフローチャートである。
【図１２】リトライ処理において障害部位を検出して閉塞を実施するまでの処理を説明するためのフローチャートである。
【図１３】コマンド検証プログラムの処理を説明するためのフローチャートである。
【符号の説明】
【００４８】
１００  ホスト装置
１１０  通信ネットワーク
１２０  ストレージシステム
１３０Ａ、１３０Ｂ  コントロールユニット
１３１  ＭＰＵ
１３２  メモリ
１３３  ＦＣプロトコルコントローラ
１３４  データコントローラ
１３５  キャッシュメモリ
１３６  ＳＳプロトコルコントローラ
１４０Ａ、１４０Ｂ  スイッチ
１５０  ＳＡＳドライブ
１６０  ＳＡＴＡドライブ
４００  プロトコル変換コントローラ
５００  制御プログラム
【図１】
2008041080.tif 000003
【図２】
2008041080.tif 000004
【図３】
2008041080.tif 000005
【図４】
2008041080.tif 000006
【図５】
2008041080.tif 000007
【図６】
2008041080.tif 000008
【図７】
2008041080.tif 000009
【図８】
2008041080.tif 000010
【図９】
2008041080.tif 000011
【図１０】
2008041080.tif 000012
【図１１】
2008041080.tif 000013
【図１２】
2008041080.tif 000014
【図１３】
2008041080.tif 000015