(57)【要約】【解決課題】コントロールユニットから記憶デバイスへのアクセスに障害が発生し、コントロールユニットから記憶デバイスへのアクセスを交代パスに切り替える場合でも、ホストからのＩ／Ｏ要求を中断することなく、記憶デバイスへのＩ／Ｏアクセスを継続することができる記憶制御装置を提供する。【解決手段】コントロールユニットを２重化した記憶制御装置において、コントローラ間のパスを利用して、ホストからのＩ／Ｏ要求を受領したコントローラが、他のコントロールユニットのイニシエータにＩ／Ｏ要求を発行し、このＩ／Ｏ要求を受領したイニシエータがＩ／Ｏ要求に基づき、接続経路を介して目的とする記憶デバイスにアクセスする。【選択図】図１
2007280258.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶デバイスを備えるメモリユニットと、上位装置からのデータの入出力要求に応答して前記メモリユニットに対するデータ入出力処理を行う複数のコントロールユニットと、各々のコントロールユニットと前記メモリユニットとをそれぞれ接続する複数の接続経路と、を備え、
前記コントロールユニットは、前記データ入出力処理の全体制御を行うコントローラと、前記データ入出要求に基づいて前記メモリユニットのうちの前記データ入出力要求の対象となっている記憶デバイスへアクセスするための制御を行うイニシエータと、を備え、
前記複数のコントロールユニットのそれぞれの前記コントローラ同士は制御データを送受信可能なパスによって接続されてなり、
前記複数のコントロールユニットのうち一つのコントロールユニットの前記コントローラは、前記上位装置からの前記メモリユニットに対するデータ入出力要求に基づいて、当該データ入出力要求を前記パスを利用して前記他のコントロールユニットに送り、当該他のコントロールユニットの前記イニシエータは、前記接続経路を介して目的とする記憶デバイスにアクセスする記憶制御装置。
【請求項２】
前記複数のコントロールユニットのうちの一つのコントロールユニットから前記メモリユニットへのアクセスに障害が発生した際に、当該一つのコントロールユニットは、前記パスを介して他のコントロールユニットに前記データ入出力要求を送る、請求項１記載の記憶制御装置。
【請求項３】
前記一つのコントロールユニットのコントローラは、前記制御パスを介して前記他のコントロールユニットのイニシエータに前記データ入出力要求を発行する請求項２記載の記憶制御装置。
【請求項４】
前記記憶デバイスの各々について、前記一つのコントロールユニットの前記接続経路上のポートアドレスと、前記他のコントロールユニットの前記接続経路上のポートアドレスと、を規定した制御テーブルを格納する制御メモリをさらに備える、請求項２記載の記憶制御装置。
【請求項５】
前記イニシエータは前記制御テーブルの前記ポートアドレスにしたがって、前記データ入出力要求のあった前記記憶デバイスにアクセスする請求項４記載の記憶制御装置。
【請求項６】
前記複数のコントロールユニットのうち一つのコントロールユニットの前記コントローラから前記データ入出力要求を受領した、前記他のコントロールユニットのイニシエータは、当該イニシエータのポートアドレスによって定まる、目的の前記記憶デバイスにアクセスする、請求項５記載の記憶制御装置。
【請求項７】
前記上位装置から前記データ入出力要求を受領した前記コントローラは、障害が発生している前記接続経路のポートアドレスを前記制御テーブルに基づいて障害が発生していない接続経路のポートアドレスに変換し、変換後のアドレスを当該障害が発生していない接続経路を制御する前記イニシエータに送り、当該イニシエータは変換後のアドレスに基づいてデータ入出力対象である前記記憶デバイスにアクセスする、請求項４記載の記憶制御装置。
【請求項８】
前記接続経路が、ファイバチャネルのループからなるＦＣ−ＡＬ（Fiber Channel-Arbitrated Loop）によって構成される、請求項１記載の記憶制御装置。
【請求項９】
前記コントローラは前記接続経路において障害が発生したことを決定し、他のコントロールユニットの前記イニシエータに前記上位装置からのデータ入出力要求を送信する請求項１記載の記憶制御装置。
【請求項１０】
前記コントローラは、前記障害の回復を検知すると、前記上位装置からのデータ入力要求の送信先を障害が発生していないコントロールユニットのイニシエータから、障害が回復されたコントロールユニットのイニシエータに変更する、請求項２記載の記憶制御装置。
【請求項１１】
前記コントローラは、前記イニシエータから前記記憶デバイスへのデータ入出力にエラーが生じた場合、当該イニシエータが目的とする憶デバイスにアクセスすることを規定回数継続させ、この規定回数を超えても前記イニシエータが目的とする記憶デバイスにアクセスすることが出来ない場合には、前記コントローラは障害が発生したと決定する、請求項２記載の記憶制御装置。
【請求項１２】
複数の記憶デバイスを備えるメモリユニットと、上位装置からのデータの入出力要求に応答して前記メモリユニットに対するデータ入出力処理を行う第1及び第２のコントロールユニットと、前記第１のコントロールユニットと前記メモリユニットとを接続する第１の接続経路と、前記第２のコントロールユニットと前記メモリユニットとを接続する第２の接続経路と、を備え、
前記第１コントロールユニットは、前記データの入出力処理の全体制御を行う第１のコントローラと、前記データの入出要求に基づいて前記メモリユニットのうちの前記データの入出力要求の対象となっている記憶デバイスへアクセスするための制御を行う第１のイニシエータと、を備え、
前記第２コントロールユニットは、前記データの入出力処理の全体制御を行う第２のコントローラと、前記データの入出要求に基づいて前記メモリユニットのうちの前記データの入出力要求の対象となっている記憶デバイスへアクセスするための制御を行う第２のイニシエータと、を備え、
前記第１のコントローラと前記第２のコントローラとは制御データを送受信可能なパスによって接続されてなり、
前記第１のコントロールユニットの前記第１のコントローラは、前記上位装置からの前記メモリユニットに対するデータ入出力要求に基づいて、当該データ入出力要求を前記パスを利用して前記第２のコントロールユニットの前記第２のイニシエータに発行し、前記第２のイニシエータは前記データ入出力要求に基づいて前記接続経路を介してアクセスすべき記憶デバイスにアクセスする、記憶制御装置。
【請求項１３】
前記第１のイニシエータが前記第１の接続経路を介して前記記憶デバイスにアクセスする際に発生した障害を契機として、前記第１のコントロールユニットは前記上位装置からのデータ入出力要求を前記パスを介して前記第２のイニシエータに発行してなる、請求項１２記載の記憶制御装置。
【請求項１４】
前記第１のイニシエータが前記第１の接続経路を介して前記記憶デバイスにアクセスする際に発生した障害を契機として、前記第１のコントロールユニットは前記上位装置からのデータ入出力要求を前記パスを介して第２のコントローラに発行してなる、請求項１３記載の記憶制御装置。
【請求項１５】
記憶装置と、上位装置からのデータの入出力要求に応答して前記記憶装置に対するデータ入出力処理を行うコントロールユニットと、前記コントロールユニットと前記記憶装置とを接続する接続経路と、
前記コントロールユニットと前記接続経路とからなる系統が２つ形成されており、一つの系統の接続経路に障害が発生し、同じ系統のコントロールユニットに対して前記上位装置からデータ入出力要求が発行された場合、当該コントロールユニットは他の系統のコントロールユニットに前記データ入出力要求を転送し、当該他の系統のコントロールユニットはこの系統の前記接続経路を介して前記記憶装置にアクセスする、記憶制御装置。
【請求項１６】
前記一つの系統のコントロールユニットが同じ系統の接続経路を介して前記記憶制御装置にアクセスする際にアクセス障害が発生したことを契機として、前記コントロールユニットは前記上位装置からのデータ入出力要求を他の系統のコントロールユニットに転送してなる請求項１５記載の記憶制御装置。
【請求項１７】
前記記憶装置は複数の記憶デバイスからなり、前記接続経路は、各々の記憶デバイスに接続するポートスイッチを備えたスイッチ回路から構成され、前記障害は当該スイッチ回路の不良である、請求項１６記載の記憶制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コントロールユニットが多重化され、複数のコントロールユニットが共通するメモリユニットにアクセスする記憶制御装置に関するものである。
【背景技術】
【０００２】
ミッドレンジクラスの記憶制御装置として、一つの筐体内に二重化されたコントロールユニットを備え、それぞれのコントロールユニットが共通する記憶装置にアクセスするように構成されているものが存在する（特開２００５−０３１９２８号公報）。この記憶制御装置においては、複数の記憶デバイスがアレイ状に配列されて筐体内に収容され、各コントロールユニットは、別個に設けられた接続系統を介して記憶装置にアクセスすることができる。
【０００３】
各コントロールユニットは、上位装置であるホスト装置からのＩ／Ｏ要求を受けて、Ｉ／Ｏ要求先の記憶デバイスにアクセスする。各コントロールユニットは、コントロールユニットの全体を制御するＭＰＵと、キャッシュメモリと、上位装置であるホストが接続するポートと、ＭＰＵからの制御の下アクセス系統を介して、複数の記憶デバイス（ハードディスクドライブ）のうち、データ入出力要求先のハードディスクドライブにアクセスするための制御を実行する、イニシエータとしてのディスクコントローラと、ＭＰＵとキャッシュメモリとディスクコントローラとの間でデータの交換を制御するデータコントローラとを備えている。
【０００４】
ホスト装置からのＩ／Ｏ要求に基づいて、コントロールユニットが記憶デバイスにアクセスするルートには、第１のコントロールユニットのディスクコントローラと第１の接続経路を通過するルートと、第２のコントロールユニットのディスクコントローラと第２の接続経路を通過するルートがある。
【０００５】
この種の記憶制御装置では、ファイバチャネルを使用することによって複数のハードディスクドライブをコントロールユニットとループ状に接続している。ファイバチャネルのループを用いた接続方式には、ＦＣ−ＡＬ（Fiber Channel-Arbitrated Loop）がある。コントロールユニットはＦＣ−ＡＬによってハードディスクドライブとループ状に接続されている。ＦＣ−ＡＬの規格上、ＦＣ−ＡＬの一部分でも切断や障害が発生すると、コントロールユニットとハードディスクドライブとの通信ができなくなるため、障害が発生したループ全体が使用不可能となる。
【０００６】
そこで、ハードディスクドライブの交換や障害の場合等に対応するために、ループの一部やハードディスクドライブをバイパス（切り離し）するポートバイパス回路（ＰＢＣ: Port Bypass Circuit）が設けられている。
【０００７】
この記憶制御装置では、ホストポートを介して、第１のコントロールユニットのＭＰＵがホストＩ／Ｏを受領し、ハードディスクドライブ（ＨＤＤ）に対するＩ／Ｏ要求をイニシエータに発行し、イニシエータがＭＰＵからの要求にしたがって、目的とするＨＤＤにアクセスしてこのＨＤＤにＩ／Ｏコマンドの発行及びデータの入出力処理を実行する。
【０００８】
この種の記憶制御装置において、一つのコントローラ側のＦＣ−ＡＬを構成するバックエンド側のスイッチに障害が発生した場合の処理は次のとおりである。第１のコントロールユニットがホストポートからデータを受信すると、ＭＰＵがホストＩ／Ｏを受領しイニシエータに、ＨＤＤに対するＩ／Ｏ要求を発行する。イニシエータはバックエンドスイッチの障害の発生を検知すると、ホストＩ／Ｏを継続させるために、イニシエータからＨＤＤドライブへのパスを正常パスから冗長パスへ切り替えて、第1のコントロールユニット側で障害が発生した接続経路ではなく、第２のコントロールユニット側のＦＣ−ＡＬスイッチに接続してＭＰＵからのＩ／Ｏ要求にしたがって目的とするＨＤＤにアクセスできるようになっている。
【０００９】
なお、特開２００５−３３９２１６号公報には、ＰＢＣとＥＮＣ（エンクロージャ）の制御について開示され、特開２００５−１８２１０４号公報には、障害検出のためのリトライ処理が記載されている。
【特許文献１】特開２００５−０３１９２８号公報
【特許文献２】特開２００５−３３９２１６号公報
【特許文献３】特開２００５−１８２１０４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
今、第１のコントロールユニットの第１のイニシエータからＨＤＤへの第１の接続経路に障害が生じて、既述のように交代パスに切り替えて第１のイニシエータが第２のコントロールユニットの第２の接続経路にアクセスする場合、第１のイニシエータは、第２の接続経路に係わるＦＣ−ＡＬ上のスイッチのアドレスを認識していない。そこで、第２のＦＣ−ＡＬ上のスイッチのアドレスを第１のイニシエータが取得して、バックエンドスイッチの構成情報を初期化しなければならない。この間、ＨＤＤへのデータ転送が行えず、ホストからのＩ／Ｏ要求を中断しなくてはならない。
【００１１】
そこで、この発明は、コントロールユニットから記憶デバイスへのアクセスに障害が発生し、コントロールユニットから記憶デバイスへのアクセスを交代パスに切り替える場合でも、ホストからのＩ／Ｏ要求を中断することなく、記憶デバイスへのＩ／Ｏアクセスを継続することができる記憶制御装置を提供することを目的とするものである。
【課題を解決するための手段】
【００１２】
前記目的を達成するために、本発明は、コントロールユニットを２重化した記憶制御装置において、コントローラ間の制御パスを利用して、ホストからのＩ／Ｏ要求を受領したコントローラが、他のコントロールユニットのイニシエータにＩ／Ｏ要求を発行し、このＩ／Ｏ要求を受領したイニシエータがＩ／Ｏ要求に基づき、接続経路を介して目的とする記憶デバイスにアクセスすることを特徴とするものである。
【００１３】
したがって、本発明によれば、ホスト装置からのＩ／Ｏアクセスが交代系の経路を介して記憶デバイスに実行された場合でも、イニシエータは接続経路情報の再構成或いは初期化が不要であるので、コントロールユニットから記憶デバイスへのアクセスを交代パスに切り替える場合でも、ホストからのＩ／Ｏ要求を中断することなく、記憶デバイスへのＩ／Ｏアクセスを継続することができる。
【００１４】
本発明は更に詳しくは、複数の記憶デバイスを備えるメモリユニットと、上位装置からのデータの入出力要求に応答して前記メモリユニットに対するデータ入出力処理を行う複数のコントロールユニットと、各々のコントロールユニットと前記メモリユニットとをそれぞれ接続する複数の接続経路と、を備え、前記コントロールユニットは、前記データ入出力処理の全体制御を行うコントローラと、前記データ入出要求に基づいて前記メモリユニットのうちの前記データ入出力要求の対象となっている記憶デバイスへアクセスするための制御を行うイニシエータと、を備え、前記複数のコントロールユニットのそれぞれの前記コントローラ同士は制御データを送受信可能なパスによって接続されてなり、前記複数のコントロールユニットのうち一つのコントロールユニットの前記コントローラは、前記上位装置からの前記メモリユニットに対するデータ入出力要求に基づいて、当該データ入出力要求を前記パスを利用して前記他のコントロールユニットに送り、当該他のコントロールユニットの前記イニシエータは、前記接続経路を介して目的とする記憶デバイスにアクセスすることを特徴とする。特に、前記複数のコントロールユニットのうちの一つのコントロールユニットから前記メモリユニットへのアクセスに障害が発生した際に、当該一つのコントロールユニットは、前記パスを介して他のコントロールユニットに前記データ入出力要求を送る。メモリユニットへのアクセス障害とは、記憶デバイス自体の障害、イニシエータと記憶デバイスとを接続する接続経路上のスイッチやポートの障害などがある。
【発明の効果】
【００１５】
以上説明したように本発明によれば、記憶デバイスと上位装置との間のデータ入出力を制御するコントロールユニットが記憶デバイスへのアクセスの際障害が発生して、このアクセスを交代系のルートに切り替える過程において、上位装置からのＩ／Ｏアクセスを中断することなく、Ｉ／Ｏコマンド処理を継続可能な記憶制御装置を提供することができる。
【発明を実施するための最良の形態】
【００１６】
以下、各図を参照して本発明の実施形態ついて説明する。以後説明する実施形態は特許請求の範囲を限定するものではなく、また実施形態の中で説明されている特徴を適宜組み合わせることができる。
【００１７】
図１は記憶制御装置（ディスクアレイ装置）１０のハードウエア構成の詳細を示している。図２は図１の主要構成を中心にして簡略化したハードウエア構成である。ディスクアレイ装置１０は、通信ネットワーク７１を介してホスト装置（上位ホスト装置）７０に接続している。ホスト装置７０は、ディスクアレイ装置１０の上位ホスト装置として機能するサーバ、パーソナルコンピュータ、ワークステーション、メインフレーム等である。通信ネットワーク７１としては、例えば、ＬＡＮ(Local Area Network)、ＳＡＮ（Storage Area Network）、インターネット、専用回線等がある。７０Ａ，７０Ｂはホスト装置が記憶制御装置に接続するホストポートである。
【００１８】
オープン系ホストの場合は、例えば、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）、ＦＣＰ（Fibre Channel Protocol ）、ｉＳＣＳＩ（internet Small Computer System Interface）等のプロトコルに基づいてデータ転送が行われる。メインフレーム系ホストの場合は、例えば、ＦＩＣＯＮ（Fibre Connection：登録商標）、ＥＳＣＯＮ（Enterprise System Connection：登録商標）、ＡＣＯＮＡＲＣ（Advanced Connection Architecture：登録商標）、ＦＩＢＡＲＣ（Fibre Connection Architecture：登録商標）等の通信プロトコルに基づいてデータ転送が行われる。尚、ホスト装置７０からＮＦＳ（Network File System）等のプロトコルにより、ファイル名指定によるデータ出力要求を受け付けるように構成されたＮＡＳ（Network Attached Storage）機能を搭載してもよい。
【００１９】
ディスクアレイ装置１０は、二重化されたコントロールユニット２０，３０を備えたデュアルコントロールユニット構成を採用して、制御手段の冗長化を達成している。コントロールユニット２０は、主に、ＭＰＵ２１、ローカルメモリＬＭ(システムメモリ)２２、データコントローラ（Ｄ−ＣＴＬ）２３、キャッシュメモリ（ＣＭ）２４、ファイバチャネルプロトコルコントローラ（Ｆ−ＣＴＬ）２５、及びエンクロージャーコントローラ（Ｅ−ＣＴＬ）２８を備えている。符号３０は他系のコントロールユニットを示し、コントロールユニット２０と同様に構成されている。
【００２０】
符号２０Ａは、コントロールユニット２０Ａの制御を受けて、ホストＩ／Ｏを目的の記憶デバイスに中継する接続ユニットである。この接続ユニットは、ＦＣ−ＡＬ（Fibre Channel Arbitrated Loop）６１，６２と、ＰＢＣ（Port Bypass Circuit）２７、１０１，１０２を備えている。ＰＢＣ及びＦＣ−ＡＬが、接続経路に相当する。符号３０Ａはコントロールユニット３０側の接続ユニットを示すものであり、接続ユニット２０Ａと同様に構成されている。
【００２１】
ＭＰＵ２１は、ホスト装置７０からのデータ入出力要求に応答して、複数のディスクドライブＤＲＶ０〜ＤＲＶ１４へのデータ入出力処理（ライトアクセス、又はリードアクセス等）を制御するプロセッサであり、ローカルメモリ２２に格納されたマイクロプログラムを実行することによりデータコントローラ２３、ファイバチャネルプロトコルコントローラ２５、及びＰＢＣ２７を制御する。
【００２２】
データコントローラ２３は、ＭＰＵ２１の制御により、ファイバチャネルプロトコルコントローラ２５とキャッシュメモリ２４との間のデータ転送を制御する。キャッシュメモリ２４は、ファイバチャネルプロトコルコントローラ２５を介してフロントインターフェース又はバックインターフェースとの間で授受されるデータを一時的に記憶する。
【００２３】
後述のＦＣ−ＡＬに対してＩ／Ｏ要求を発行するイニシエータとしてのファイバチャネルプロトコルコントローラ２５は、フロントインターフェース接続用ファイバチャネル４１を介してホスト装置７０にインターフェース接続し、ファイバチャネルプロトコルによるブロックアクセス要求を受信する機能を有する。更に、ファイバチャネルプロトコルコントローラ２５は、バックインターフェース接続用ファイバチャネル４２を介してディスクドライブＤＲＶ０〜ＤＲＶ１４にインターフェース接続し、ディスクドライブＤＲＶ０〜ＤＲＶ１４を制御するコマンド等を規定するプロトコルに従って、ディスクドライブＤＲＶ０〜ＤＲＶ１４へのデータ入出力要求を送信する機能を有する。
【００２４】
ＰＢＣ２７は、バックインターフェース接続用ファイバチャネル４２の接続先として二つのＦＣ−ＡＬ６１，６２のうち何れか一方又は両者を選択し、接続切り替えを行う。
【００２５】
ＦＣ−ＡＬ６１は、ＦＣ−ＡＬ６１上に実装されたＰＢＣ８２を介して、偶数番号のディスクドライブＤＲＶ０，ＤＲＶ２，…，ＤＲＶ１４にループ接続している。ＦＣ−ＡＬ６２は、ＦＣ−ＡＬ６２上に実装されたＰＢＣ８２を介して、奇数番号のディスクドライブＤＲＶ１，ＤＲＶ３，…，ＤＲＶ１３にループ接続している。
【００２６】
ＰＢＣ８２は、システム運用上の障害を最小限に止めて、ノードの追加や削除が行えるようにＦＣ−ＡＬ６１，６２を自動的にオープン又はクローズするためなどの電子スイッチである。ＰＢＣ８２は、ファイバチャネルプロトコルコントローラ２５やディスクドライブＤＲＶ０〜ＤＲＶ１４をバイパスして、これらをＦＣ−ＡＬ６１，６２から電気的に除外する機能を有する。
【００２７】
例えば、ＰＢＣ８２は、障害が発生したディスクドライブＤＲＶ０〜ＤＲＶ１４をＦＣ−ＡＬ６１，６２から切り離して、他のディスクドライブＤＲＶ０〜ＤＲＶ１４とファイバチャネルプロトコルコントローラ２５との間の通信を可能にする。また、ＰＢＣ８２は、ＦＣ−ＡＬ６１，６２の動作を維持したままで、ディスクドライブＤＲＶ０〜ＤＲＶ１４の抜き差しを可能にする。例えば、ディスクドライブＤＲＶ１５（図示せず）が新たに装着された場合には、そのディスクドライブＤＲＶ１５をＦＣ−ＡＬ６１，６２に取り込み、ファイバチャネルプロトコルコントローラ２５との間の通信を可能にする。
【００２８】
エンクロージャーコントローラ（Ｅ−ＣＴＬ）２８は、ＳＥＳ（SCSI Enclosure Surcuit）ドライブを制御する。ＳＥＳドライブは、ＳＣＳＩ３（Small Computer System Interface ３）規格に規定されるＳＥＳ（SCSI Enclosure Services）やＥＳＩ(Enclosure Service I/F)の機能を備えており、ＳＥＳ（SCSI Enclosure Service）やＥＳＩ(Enclosure Service I/F)の機能を動作させることができる。ＳＥＳドライブは、ＦＣ−ＡＬ６１〜６４の他に、エンクロージャーコントローラ２８とも通信可能なディスクドライブである。ここでは、各ＦＣ−ＡＬにつき２台のディスクドライブＤＲＶ０〜ＤＲＶ３をＳＥＳドライブとしているが、全てのディスクドライブＤＲＶ０，ＤＲＶ２，…，ＤＲＶ１４をＳＥＳドライブとしてもよい。
【００２９】
一方、コントロールユニット３０は、コントロールユニット２０と同様な構成であり、ＭＰＵ３１、ローカルメモリ（ＬＭ）３２、データコントローラ（Ｄ−ＣＴＬ）３３、キャッシュメモリ（ＣＭ）３４、ファイバチャネルプロトコルコントローラ（ＦＣ−ＣＴＬ）３５、エンクロージャーコントローラ（Ｅ−ＣＴＬ）３８、フロントインターフェース接続用ファイバチャネル５１、バックインターフェース接続用ファイバチャネル５２を備えている。接続部３０Ａは、接続部２０Ａと同様な構成であり、ＰＢＣ３７,１０３,１０４及びＦＣ−ＡＬ６３，６４を備えている。ＰＢＣ３７は、バックインターフェース接続用ファイバチャネル５２の接続先として、二つのＦＣ−ＡＬ６３，６４のうち何れか一方又は両者を選択し、接続切り替えを行う。
【００３０】
ＦＣ−ＡＬ６３は、ＰＢＣ８２を介して偶数番号のディスクドライブＤＲＶ０，ＤＲＶ２，…，ＤＲＶ１４にループ接続している。ＦＣ−ＡＬ６４は、ＰＢＣ８２を介して奇数番号のディスクドライブＤＲＶ１，ＤＲＶ３，…，ＤＲＶ１３にループ接続している。
【００３１】
データコントローラ２３，３３はバス８１を介して相互に接続されており、一方のデータコントローラ２３（又は３３）がバス８１を介して他方のデータコントローラ３３（又は２３）に対して、イニシエータ制御コマンド、ホストＩ／Ｏデータ
、キャッシュデータの転送を行うこともできる。例えば、両コントローラ２０，３０が分担して同一の論理ボリュームに対するアクセスを行う場合に、両コントローラ間でライトデータ又はリードデータの転送を行うこともできる。
【００３２】
コントロールユニット２０，３０は、ディスクドライブＤＲＶ０，ＤＲＶ２，…，ＤＲＶ１４をいわゆるＲＡＩＤ方式に規定されるＲＡＩＤレベル（例えば、０，１，５，６）で制御することができる。すなわち、複数のディスクドライブはＲＡＩＤグループを構成し、一つのディスクドライブに障害が発生した場合でも他のディスクドライブのパリティデータから障害が発生した障害ディスクドライブのデータを再現することができる。
【００３３】
ＲＡＩＤ方式においては、複数のディスクドライブＤＲＶ０，ＤＲＶ２，…，ＤＲＶ１４が一つのグループ（以下、ＲＡＩＤグループと称する。）として管理される。ＲＡＩＤグループ上には、ホスト装置７０からのアクセス単位である論理ボリュームが形成されている。各論理ボリュームには、ＬＵＮ（Logical Unit Number）と呼ばれる識別子が付与されている。
【００３４】
図３に、ハードディスクドライブ（ＤＲＶ０,１,２・・・,ｎ）の前記ＦＣ−ＡＬ上におけるポートのアドレスを規定した制御テーブルを示す。各記憶デバイスには、イニシエータ０（図２参照）側のＦＣ−ＡＬ（６１,６２）上のポートアドレスと、イニシエータ１側のＦＣ−ＡＬ（６３，６４）上のポートアドレスとが対応されている。この記憶テーブルはコントロールユニット２０及び３０のそれぞれのローカルメモリ２２（３２）に設定されている。イニシエータ２５,３５はそれぞれＩ／Ｏ要求に基づいて、Ｉ／Ｏ要求先のＨＤＤのアドレスを決定し、図３の制御テーブルを参照して、決定されたアドレス先のＨＤＤに対してデータの入出力のための処理を実行する。
【００３５】
ホストからのデータ入出力要求は、データが格納されるべき論理ボリュームの論理ブロックアドレスを含んでいる。ＭＰＵ０は、ローカルメモリ（図１のＬＭ２２）に格納された変換テーブルを用いて、ＨＤＤに実際にアクセスするために、この論理ブロックアドレスを図３のイニシエータ側０側のポートアドレスに変換する。一方、ＭＰＵがスイッチ０の回路に障害がある場合には、図３の記憶テーブルに基づいてイニシエータ０側のポートアドレスを冗長系のイニシエータ１側のポートアドレスに変換する。ＭＰＵは変換後のポートアドレスをイニシエータ１に供給する。イニシエータ１はこの変換後のアドレスに基づいて目的とするＨＤＤにアクセスする。この変換テーブルを用いた変換動作をＣＴＬ１側のコントロールユニットのＭＰＵ１が実行しても良い。
【００３６】
図４は、各コントロールユニットのＭＰＵが目的とするＨＤＤにアクセスするためのパス制御テーブルを示す。図４は、コントロールユニット０側（ＣＴＬ０）のＭＰＵ０の正常パスはイニシエータ０（２５）を介してＨＤＤにアクセスするルートであり、その交代パスは制御パス８１と、コントロールユニット１側のＦＣ−ＣＴＬ３５と、を介してＨＤＤにアクセスするルートであることを示している。さらに、コントロールユニット０側のスイッチに障害が発生し（障害状況：フラグがセット（Ｆ＝１））、ＭＰＵ０からＨＤＤへのアクセスは交代パス（使用パス：フラグがセット（Ｆ＝１））を介すべきことが示されている。
【００３７】
一方、ＭＰＵ１からＨＤＤへのアクセスに対して障害は発生してなく（障害状況＝０）、イニシエータ１（３５）を介する正常パスに沿って、ＭＰＵ１はＨＤＤにアクセスする。イニシエータは、ＨＤＤへのアクセスに対して障害が発生しているか否かを後述のプログラムを実行することによって監視し、いずれかのコントロールユニットに障害が発生した場合は、図４のパス制御テーブルを更新する。ホストＩ／Ｏを受領したＭＰＵは、図４のパス制御テーブルを参照してＨＤＤにアクセスするためのパスを決定する。
【００３８】
図５は図１に示すローカルメモリ２２（３２）に格納されている制御情報を示している。ローカルメモリにはマイクロプログラムと、図４のパス制御テーブルと、図３のＨＤＤ制御アドレステーブルが格納されている。
【００３９】
次に、ＨＤＤへのアクセス障害が起きた場合のフローチャートを図６に示す。ＨＤＤに障害が発生すると（６００）、イニシエータ２５（又は３５）は障害を検知してこれをＭＰＵ２１（３１）に伝える（６０２）。なお、障害の判定方法については後述する。次いで、ＭＰＵ２１（又は３１）が障害を検知すると、ＭＰＵはコントロールユニット間のパスを交代系に切り替える（６０４）。
【００４０】
次いで、障害が回復されたか否かをＭＰＵ２１（３１）が判定し（６０６）、これが否定されると交代系パスを介してＭＰＵがホストＩ／Ｏを処理する（６１２）。一方、ステップ６０６の判定が肯定された場合は、ＭＰＵが障害から復帰されたことを検出して、ＭＰＵはパスを交代系から正常系に切り替える（６１０）。
【００４１】
図７は、ホストＩ/Ｏの処理を示すフローチャートである。ＭＰＵがホストＩ／Ｏデータを受信すると、図４に示すパス制御テーブルを参照して、ＭＰＵがホストＩ／ＯをＨＤＤに発行するためのパスが正常系か交代系を判定する（７０４，７０６）。この判定が肯定された場合は、正常系パスを介してＭＰＵはホストＩ/Ｏをイニシエータに通知する（７０８）。一方、前記判定が否定された場合は、ＭＰＵが他のコントロールユニットにあるイニシエータによってしてＨＤＤにデータを転送する（７１０，７１２）。
【００４２】
次に、コントロールユニットによって実行される、障害検出のためのタイミングチャートを図８及び図９に基づいて説明する。コントロールユニット０のＭＰＵ０がホストのリード命令を受領する（Ｓ０）。ＭＰＵ０はキャッシュメモリにリード命令の対象となったデータが無い場合には、ＨＤＤに対するドライブＩ／Ｏ要求する処理を開始する（Ｓ1）。次いでＭＰＵ０はイニシエータ０に対してＩ／Ｏ要求を発行し、タイマを用いた監視処理を開始する（Ｓ２）。
【００４３】
イニシエータ０は、ＨＤＤに対してリードコマンドを発行する（Ｓ３）。イニシエータ０がリードコマンドを正常に処理できた場合には、ＭＰＵ０にリードデータを送信して、ＭＰＵ０はホストにリードデータを返して（Ｓ０）の処理にリターンする（Ｓ４）。（Ｓ３）の処理において、イニシエータ０がデータをリードできない場合には、ＭＰＵ０にエラー応答を送信する。ＭＰＵ０はエラー応答受領後、又は、イニシエータ０からの応答をタイマ監視のための閾値（時間）内に受け取らない場合（Ｓ５）には、ＭＰＵ０はＨＤＤへのＩ／Ｏリトライ回数カウンタをアップする（Ｓ６）。イニシエータ０はＨＤＤにリードコマンドを再発行する（Ｓ７）。
【００４４】
イニシエータ０がこのリードコマンドに基づいて、目的とするＨＤＤから目的とするデーを読み出せた場合にはＳ０にリターンする。一方、所定のリトライ回数の閾値を越えても、イニシエータ０から応答が無い場合（Ｓ８）には、ＭＰＵ０は障害が発生したと判断する（Ｓ９）。ＭＰＵ０は障害からの回復処理をバックグランドで実施する（Ｓ１０）。ＭＰＵ０は、ＨＤＤへホストからのＩ／Ｏ要求を発行するイニシエータ０をコントロールユニット１（ＣＴＬ１）側のイニシエータ１に変更する（Ｓ１１）。この時、ＭＰＵ０は全Ｉ／Ｏ要求をイニシエータ１に発行しても良いし、Ｉ／Ｏエラーの対象となった記憶デバイスに対するＩ／Ｏ要求のみをイニシエータ１に発行しても良い。
【００４５】
ＭＰＵ０が障害発生を決定したら、ＭＰＵ1にＨＤＤへのアクセスに障害が発生したことを通知する（Ｓ９Ａ）。イニシエータ０はスイッチ、ＨＤＤに対して障害切り分けコマンドを発行して（Ｓ１０Ａ）、障害切り分けの途中結果をＭＰＵ１に通知する（Ｓ９Ｂ）。
【００４６】
イニシエータ０は、障害切り分けコマンド発行後、ＭＰＵ０にＨＤＤ障害以外のＩ／Ｏエラーとなるスイッチの障害、ケーブルのはずれなどを通知する。ＭＰＵ０はホストがＩ／Ｏを発行する前に、ＭＰＵ０がホストＩ／Ｏを発行するイニシエータをイニシエータ０からイニシエータ１に切り替える（Ｓ１９Ａ：図９）。
【００４７】
Ｓ１１においても、ＭＰＵ０がホストＩ／Ｏを発行するイニシエータをイニシエータ０からイニシエータ１に切り替える。ＭＰＵ０はイニシエータ１に対してＩ／Ｏ要求を発行し、同時タイマによる監視処理を開始する（Ｓ１２）。イニシータ１はＨＤＤにリードコマンドを発行する（Ｓ１３）。イニシエータ１がこのコマンドを正常に処理できると、Ｓ０にリターンする（Ｓ１４）。一方、イニシエータがリードコマンドを正常に処理できない場合には、ＭＰＵ０はイニシエータ１からのエラー応答受領後、又は、タイマ監視のための閾値を越えてもイニシエータ１からの応答が無い場合（Ｓ１５）ＨＤＤへのＩ／Ｏリトライのリトライ回数をカウンタにアップする（Ｓ１６）。次いで、イニシエータ１はＨＤＤに対してリードコマンドを再発行する。
【００４８】
ＭＰＵ０がリトライ回数の閾値を越えたと判断した場合（Ｓ１８）、両方のコントローラのイニシエータから目的とするＨＤＤにアクセスできず、ドライブエラーと判断して、障害ＨＤＤを閉塞し、スペアドライブがあれば、閉塞されたドライブのデータをスペアドライブにコレクションコピーを行う。ＭＰＵは障害ドライブの交換を促すための報知を管理者通知する（Ｓ１９）。
【００４９】
さらにＭＰＵ０はＨＤＤ以外の障害部位を特定して、これを管理者に通知する。管理者は障害箇所を交換し、ＣＴＬ０におけるＨＤＤのアクセス障害を正常化する（Ｓ２０）。次いで、ＭＰＵ０は、ＨＤＤに対するＩ／Ｏ発行のイニシエータをイニシエータ１からイニシエータ０に戻す（Ｓ２１）。この一例の過程で、ＨＤＤにＩ／Ｏを発行するイニシエータが、イニシエータ０とイニシエータ１との間で変化しても、イニシエータに対するＨＤＤのポートアドレス（図３）情報を再構成したり、或いは初期化する必要がないために、記憶制御装置はホストからのＩ／Ｏを中断しなければならないことはない。
【００５０】
なお、既述の実施形態では、一つのコントロールユニットのコントローラから他系のコントロールユニットのイニシエータに、コントローラ間に設けられた既存のパスを利用してホストからのＩ／Ｏ要求を発行したが、他系のコントローラに対してＩ／Ｏ要求を発行しても良い。
【００５１】
また、既述のＳＥＳドライブがバックエンドの筐体監視プログラムに基づいてスイッチ回路の異常をモニタしても良い。ＭＰＵ０は障害検出イベントをトリガーとして障害発生箇所をイニシエータに問い合わせをするイニシエータは、スイッチ回路中の異常個所部分のポート情報をＭＰＵ０に通知する。ＭＰＵ０は、必要に応じてＨＤＤを閉塞・コレクション処理を実行する。この間、ＭＰＵ０はＨＤＤにＩ／Ｏを発行するイニシエータをイニシエータ０からイニシエータ１に変更して、ホストＩ／Ｏをイニシエータ１に発行する。
【図面の簡単な説明】
【００５２】
【図１】記憶制御装置（ディスクアレイ装置）のハードウエア構成ブロック図。
【図２】図１の主要構成を中心にして簡略化したハードウエア構成図である。
【図３】ハードディスクドライブ（ＤＲＶ０,１,２・・・,ｎ）のＦＣ−ＡＬ上におけるポートのアドレスを規定した制御テーブル。
【図４】各コントロールユニットのＭＰＵが目的とするＨＤＤにアクセスするためのパス制御テーブル。
【図５】ローカルメモリに格納されている制御情報を示すブロック図。
【図６】ＨＤＤへのアクセス障害が起きた場合の処理を示すフローチャート。
【図７】ホストＩ/Ｏの処理を示すフローチャート。
【図８】障害検出のためのタイミングチャート（前半）。
【図９】障害検出のためのタイミングチャート（後半）。
【符号の説明】
【００５３】
１０，１１，１３…ディスクアレイ装置  ２０，３０…コントローラ  ２１，３１…ＣＰＵ  ２２，３２…ローカルメモリ  ２３，３３…データコントローラ  ２４，３４…キャッシュメモリ  ２５，３５…ファイバチャネルプロトコルコントローラ  ２７，３７…ＰＢＣ  ２８，３８…エンクロージャーコントローラ  ６１〜６４…ＦＣ−ＡＬ  ７０…ホスト装置  ７１…通信ネットワーク  ＤＲＶ０〜ＤＲＶ１４…ハードディスクドライブ
【図１】
2007280258.tif 000003
【図２】
2007280258.tif 000004
【図３】
2007280258.tif 000005
【図４】
2007280258.tif 000006
【図５】
2007280258.tif 000007
【図６】
2007280258.tif 000008
【図７】
2007280258.tif 000009
【図８】
2007280258.tif 000010
【図９】
2007280258.tif 000011