(57)【要約】【課題】正しいデータを確実且つ容易にミラーリングすることが可能であり、データの信頼性の高い記憶制御が可能な記憶制御装置および外部記憶装置を得る。【解決手段】データのミラーリングにより冗長化管理され、外部から入力されたデータを一時的に保持する複数の一時記憶手段と、前記一時記憶手段に対するデータの入出力を制御する一時記憶制御手段と、前記複数の一時記憶手段の間におけるデータのミラーリングを制御するとともに、前記複数の一時記憶手段の間でデータのミラーリングを行う際にミラーリング元の前記一時記憶手段が保持するデータの正当性を確認し、前記データの正当性が確認された場合のみ該データのミラーリングを実行するミラーリング制御手段と、を備える。【選択図】        図１
2006134241.tif 000002
【特許請求の範囲】
【請求項１】
データのミラーリングにより冗長化管理され、外部から入力されたデータを一時的に保持する複数の一時記憶手段と、
前記一時記憶手段に対するデータの入出力を制御する一時記憶制御手段と、
前記複数の一時記憶手段の間におけるデータのミラーリングを制御するとともに、前記複数の一時記憶手段の間でデータのミラーリングを行う際にミラーリング元の前記一時記憶手段が保持するデータの正当性を確認し、前記データの正当性が確認された場合のみ該データのミラーリングを実行するミラーリング制御手段と、
を備えることを特徴とする記憶制御装置。
【請求項２】
データのミラーリングにより冗長化管理され、外部から入力されたデータを一時的に保持する複数の一時記憶手段と、
前記一時記憶手段に対するデータの入出力を制御する一時記憶制御手段と、
前記複数の一時記憶手段の間におけるデータのミラーリングを制御するとともに、前記複数の一時記憶手段の間でデータのミラーリングを行う際にミラーリング元の前記一時記憶手段が保持するデータの正当性を確認し、前記データの正当性が確認された場合のみ該データのミラーリングを実行するミラーリング制御手段と、
前記一時記憶手段に保持されたデータを格納する複数のディスクを含むディスク装置と、
前記ディスク装置に対する前記データの入出力を制御するディスク装置制御手段と、
を備えることを特徴とする外部記憶装置。
【請求項３】
前記ディスク装置を複数備えることを特徴とする請求項２に記載の外部記憶装置。
【請求項４】
前記外部から入力されたデータに、該データの正当性を確認するためのチェックコードを付加するチェックコード付加手段を備え、
前記一時記憶手段は、前記チェックコードを付加したデータを一時的に保持し、
前記ミラーリング制御手段は、前記チェックコードと、前記ミラーリング元の一時記憶手段に保持した前記チェックコードを付加したデータから生成した他のチェックコードと、を比較して前記ミラーリング元の前記一時記憶手段が保持するデータの正当性を確認すること、
を特徴とする請求項２に記載の外部記憶装置。
【請求項５】
前記ミラーリング制御手段は、
前記ミラーリング元の一時記憶手段が保持する前記チェックコードを付加したデータを読み出す読み出し手段と、
前記読み出し手段が読み出した前記チェックコードを付加したデータを一時的に保持する保持手段と、
前記チェックコードを付加したデータから比較用のチェックコードを生成する比較チェックコード生成手段と、
前記チェックコードを付加したデータのチェックコードと前記比較用のチェックコードとが一致するか否かの比較を行う比較手段と、
前記比較手段における比較結果が一致する場合にのみ前記保持手段に保持した前記チェックコードを付加したデータの転送を行う転送手段と、
を備えることを特徴とする請求項４に記載の外部記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データの正当性を保証して制御する記憶制御装置および該記憶制御装置によりコンピュータの外部記憶装置として用いられる装置内部でのデータの正当性が保証された外部記憶装置に関するものである。より具体的には、装置内でデータを転送する際に、破壊等されたデータを検出し、該データが装置内で伝播しないようにしてデータの正当性を保証して制御する記憶制御装置および該記憶制御装置によりコンピュータの外部記憶装置として用いられる装置内部でのデータの正当性が保証された外部記憶装置に関するものである。
【背景技術】
【０００２】
近年、様々なデータが電子化され、コンピュータ上で扱われるようになるに従い、コンピュータとは独立して大量のデータを効率良く格納することができる外部記憶装置としてディスクアレイ装置の重要性が増してきている。このディスクアレイ装置は、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）技術を取り入れることにより、単純なディスク装置に比べて信頼性を高めているところに特徴がある。また、ディスクアレイ装置は、一般にキャッシュを内蔵することによりデータへのアクセス時間を短くすることを可能としている。
【０００３】
ＲＡＩＤ技術では、複数のディスクに同じデータを記憶させる手法（ＲＡＩＤ−１）や、パリティ情報をディスクに分散して記憶させる手法（ＲＡＩＤ−５）などにより信頼性を高めているが、現在のディスクアレイ装置の多くは、データに対してチェックコードを付加することにより更にデータの保証を行い、信頼性を高める手法が採用されている。
【０００４】
これは５１２バイトのデータブロックに対して、データから計算された巡回冗長検査（ＣＲＣ：Cyclic Redundancy Check）コードとデータの位置情報を示すブロックＩＤを付加することにより行われる。このＣＲＣコードとブロックＩＤとを合わせて、データブロックに対するチェックコードという意味でブロックチェックコード（ＢＣＣ）と呼ぶことがある。ＣＲＣは、５１２バイトのデータとシードと呼ばれる予め決められた値に対する所定の計算によって得られる。また、ブロックＩＤは、最初の５１２バイトのバイトデータブロックに対して定義され、次の５１２バイトに対しては「１」が加算された値（＋１）がそのデータブロックのブロックＩＤとなる。ＢＣＣは、ＡＮＳＩ（American National Standards Institute）でも２バイトのＣＲＣコードと６バイトのブロックＩＤ（２バイトのＭｅｔａ  Ｔａｇと４バイトのＲｅｆｅｒｅｎｃｅ  Ｔａｇとから構成される）によるチェックコードがＴ１０コードという名称で標準化されている。
【０００５】
以下に、このような従来のディスクアレイ装置について図１４を用いて説明する。図１４は従来のディスクアレイ装置を用いたディスクアレイシステムの構成を示すブロック図である。図１４に示すように、ディスクアレイ装置１００はファイバチャネル・リンク１０４Ａ、１０４ＢによってホストコンピュータＡ１０２ＡおよびホストコンピュータＢ１０２Ｂの２台のホストコンピュータに接続されている。ディスクアレイ装置１００は、ホストＩ／Ｆを担当するホストアダプタＡ１０６Ａ、ホストアダプタＢ１０６Ｂ、キャッシュメモリＡ１０８Ａ、キャッシュメモリＢ１０８Ｂ、キャッシュの管理を行なうキャッシュコントローラＡ１１０Ａ、キャッシュコントローラＢ１１０Ｂ、ディスクＩ／Ｆを担当するディスクアダプタＡ１１２Ａ、ディスクアダプタＢ１１２Ｂ、複数ディスクへの接続を提供するスイッチＡ１１４Ａ、スイッチＢ１１４Ｂ、及び複数のディスクドライブＡ１１６Ａ、ディスクドライブＢ１１６Ｂを備えて構成されている。
【０００６】
キャッシュコントローラＡ１１０Ａ、キャッシュコントローラＢ１１０Ｂは、それぞれホストアダプタＡ１０６Ａ、ホストアダプタＢ１０６ＢとディスクアダプタＡ１１２Ａ、ディスクアダプタＢ１１２Ｂとの間のデータ転送経路を提供する。また、キャッシュコントローラＡ１１０ＡとキャッシュコントローラＢ１１０Ｂとの間にもデータ転送経路（キャッシュ間リンク）１１８が設けられ、キャッシュメモリＡ１０８ＡとキャッシュメモリＢ１０８Ｂとの間におけるデータのミラーリングに利用される。キャッシュメモリＡ１０８ＡおよびキャッシュメモリＢ１０８ＢはＤＲＡＭなどの揮発性のメモリで構成される。このため、一方のキャッシュメモリに格納されるデータは必ず他方のキャッシュメモリにも該データのコピーを格納することで、障害発生時にデータが消失することがないように制御される。これをキャッシュのミラーリングと呼ぶ。
【０００７】
つぎに図１４を参照して従来のディスクアレイ装置においてホストコンピュータからのデータをディスクに格納する際のディスクアレイ装置の動作を説明する。ここでは、ホストコンピュータＡ１０２Ａからの送信されたデータをディスクアレイ装置に格納する場合について説明する。ディスクドライブＡ１１６Ａへ格納されるデータは、まずホストコンピュータＡ１０２ＡからホストアダプタＡ１０６Ａへ送信される。ホストアダプタＡ１０６Ａでは、受信したデータにブロックチェックコード（ＢＣＣ）を付加した上で、該データをキャッシュコントローラＡ１１０Ａへ転送する。
【０００８】
キャッシュコントローラＡ１１０Ａは、受信したＢＣＣ付きデータを一時的にキャッシュメモリＡ１０８Ａ内に格納すると共にキャッシュコントローラＢ１１０Ｂへ当該データを転送し、キャッシュメモリＢ１０８Ｂに格納することでミラーリング処理を行なう。これにより、キャッシュメモリＢ１０８ＢにはキャッシュメモリＡ１０８Ａに格納されたデータと同一のデータが格納される。そして、ミラーリングが完了すると、キャッシュコントローラＡ１１０Ａは、ホストアダプタＡ１０６Ａに対してミラーリング処理が終了した旨の通知を行う。ホストアダプタＡ１０６Ａは、ホストコンピュータＡにデータの格納を正常に終了したことを知らせる。
【０００９】
また、キャッシュメモリＡ１０８Ａに格納されたデータは、所定のタイミングでディスクドライブＡ１１６ＡおよびディスクドライブＢ１１６Ｂに格納される。このとき、ディスクアダプタＡ１１２Ａは、データに付加されたＢＣＣをチェックすることによりデータの正当性、すなわちデータが破壊等されていないかを確認している。
【００１０】
また、データをミラーリングした際に、ミラーリング先のデータの信頼性を確認するためにミラーリングを行うときに、ミラーリング先にデータのコピーを送信するとともに他の制御手段にもデータのコピーを送信し、そこでデータのチェックを行う技術が提案されている（たとえば、特許文献１参照）。
【００１１】
【特許文献１】特開２００１−１７５５８２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら、上記のような従来の技術では、キャッシュメモリのミラーリングによって信頼性の向上が図られているが、ミラーリング元のキャッシュメモリへデータを書き込む際に、ハード故障などにより破壊等された間違ったデータを書き込んだ場合や、間違ったアドレスにデータを書き込んでしまった場合には、ミラーリング先のキャッシュメモリ上のミラーリングされたデータも当然信頼できないものとなってしまう。このため、ディスクアレイ装置内に正しいデータが格納されないまま、ホストコンピュータに対して正常にデータが格納されたという通知がなされてしまうという状態が発生し、データの信頼性に問題が生じてしまう。また、上記の特許文献１の技術においてもミラーリング自体が行われた後にデータのチェックが行われるため、仮にデータの不具合が見つかった場合でもミラーリングしたデータの消去、再ミラーリングなどの工程が必要となり、処理が複雑になるという問題がある。
【００１３】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、正しいデータを確実且つ容易にミラーリングすることが可能であり、データの信頼性の高い記憶制御が可能な記憶制御装置および外部記憶装置を得ることを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決し、目的を達成するため、請求項１の発明にかかる記憶制御装置は、データのミラーリングにより冗長化管理され、外部から入力されたデータを一時的に保持する複数の一時記憶手段と、一時記憶手段に対するデータの入出力を制御する一時記憶制御手段と、複数の一時記憶手段の間におけるデータのミラーリングを制御するとともに、複数の一時記憶手段の間でデータのミラーリングを行う際にミラーリング元の一時記憶手段が保持するデータの正当性を確認し、データの正当性が確認された場合のみ該データのミラーリングを実行するミラーリング制御手段と、を備えて構成されるものである。
【００１５】
そして、この記憶制御装置においては、ミラーリング制御手段が複数の一時記憶手段の間でデータのミラーリングを行う際にミラーリング元の一時記憶手段が保持するデータの正当性を確認し、データの正当性が確認された場合のみ該データのミラーリングを実行する。また、ミラーリング元の一時記憶手段が保持するデータの正当性が確認されなかった場合、すなわちデータが破壊等されたデータであった場合には、ミラーリング制御手段は該データのミラーリングを中止し、ミラーリング先の一時記憶手段にはデータを送信しない。
【００１６】
この請求項１の発明によれば、ミラーリング元の一時記憶手段が保持するデータのうち正当性の保証された正しいデータのみを確実且つ容易にミラーリングすることができる。
【００１７】
また、請求項２の発明にかかる外部記憶装置は、データのミラーリングにより冗長化管理され、外部から入力されたデータを一時的に保持する複数の一時記憶手段と、一時記憶手段に対するデータの入出力を制御する一時記憶制御手段と、複数の一時記憶手段の間におけるデータのミラーリングを制御するミラーリング制御手段と、一時記憶手段に保持されたデータを格納する複数のディスクを含むディスク装置と、ディスク装置に対するデータの入出力を制御するディスク制御手段と、を備えて構成されるものである。
【００１８】
そして、この外部記憶装置においては、ミラーリング制御手段が複数の一時記憶手段の間でデータのミラーリングを行う際にミラーリング元の一時記憶手段が保持するデータの正当性を確認し、データの正当性が確認された場合のみ該データのミラーリングを実行する。また、ミラーリング元の一時記憶手段が保持するデータの正当性が確認されなかった場合、すなわちデータが破壊等されたデータであった場合には、ミラーリング制御手段は該データのミラーリングを中止し、ミラーリング先の一時記憶手段にはデータを送信しない。
【００１９】
この請求項２の発明によれば、ミラーリング元の一時記憶手段が保持するデータのうち正当性の保証された正しいデータのみを確実且つ容易にミラーリングすることができる。そして、正当性の保証された正しいデータのみを確実にディスク装置に格納することができる。
【００２０】
また、請求項３の発明にかかる外部記憶装置は、請求項２の発明において、ディスク装置を複数備えることを特徴とする。
【００２１】
この請求項３の発明によれば、複数のディスク装置に外部から入力されたデータが格納される。これにより、障害発生時のデータ保証の信頼性を高めることができる。
【００２２】
また、請求項４の発明にかかる外部記憶装置は、請求項２の発明において、外部から入力されたデータに該データの正当性を確認するためのチェックコードを付加するチェックコード付加手段を備え、一時記憶手段はチェックコードを付加したデータを一時的に保持し、ミラーリング制御手段は前記のチェックコードと、ミラーリング元の一時記憶手段に保持したチェックコードを付加したデータから生成した他のチェックコードと、を比較してミラーリング元の前記一時記憶手段が保持するデータの正当性を確認することを特徴とする。
【００２３】
この請求項４の発明によれば、チャックコードを用いてミラーリング元の前記一時記憶手段が保持するデータの正当性が確認される。これにより、ミラーリング元の一時記憶手段が保持するデータの正当性を容易に且つ確実に確認することができる。
【００２４】
また、請求項５の発明にかかる外部記憶装置は、請求項４の発明において、ミラーリング制御手段は、ミラーリング元の一時記憶手段が保持する前記チェックコードを付加したデータを読み出す読み出し手段と、読み出し手段が読み出したチェックコードを付加したデータを一時的に保持する保持手段と、チェックコードを付加したデータから比較用のチェックコードを生成する比較チェックコード生成手段と、チェックコードを付加したデータのチェックコードと比較用のチェックコードとが一致するか否かの比較を行う比較手段と、比較手段における比較結果が一致する場合にのみ保持手段に保持した前記チェックコードを付加したデータの転送を行う転送手段と、を備えることを特徴とする。
【００２５】
この請求項５の発明によれば、ミラーリング制御手段が上記の構成を備えることにより、チェックコードを付加したデータのチェックコードと比較用のチェックコードとが一致するか否かの比較を行うことでミラーリング元の一時記憶手段が保持するデータの正当性が確認される。これにより、ミラーリング元の一時記憶手段が保持するデータの正当性を容易に且つ確実に確認することができる。
【発明の効果】
【００２６】
請求項１の発明によれば、ミラーリング元の一時記憶手段が保持するデータのミラーリングを行う際に該データの正当性を確認し、データの正当性が確認された場合のみ該データのミラーリングを実行するため、ミラーリング元の一時記憶手段が保持するデータのうち正当性の保証された正しいデータのみを確実且つ容易にミラーリングすることができ、ミラーリング先の一時記憶手段に誤ったデータが格納されることを防止することができるため、格納されたデータの信頼性の高い制御を行うことが可能な記憶制御装置が得られるという効果を奏する。
【００２７】
請求項２の発明によれば、ミラーリング元の一時記憶手段が保持するデータのミラーリングを行う際に該データの正当性を確認し、データの正当性が確認された場合のみ該データのミラーリングを実行するため、ミラーリング元の一時記憶手段が保持するデータのうち正当性の保証された正しいデータのみを確実且つ容易にミラーリングすることができ、ミラーリング先の一時記憶手段に誤ったデータが格納されることを防止することができるため、格納されたデータの信頼性の高い外部記憶装置が得られるという効果を奏する。
【００２８】
また、請求項３の発明によれば、ディスク装置を複数備えるため、障害発生時のデータ保証の信頼性を高めることができるという効果を奏する。
【００２９】
また、請求項４の発明によれば、データの正当性の確認にチャックコードを用いるため、ミラーリング元の一時記憶手段が保持するデータの正当性を容易に且つ確実に確認することができるという効果を奏する。
【００３０】
また、請求項５の発明によれば、チェックコードを付加したデータのチェックコードと比較用のチェックコードとが一致するか否かの比較を行うことでミラーリング元の一時記憶手段が保持するデータの正当性を確認できるため、ミラーリング元の一時記憶手段が保持するデータの正当性を容易に且つ確実に確認することができるという効果を奏する。
【発明を実施するための最良の形態】
【００３１】
以下に添付図面を参照して、この発明にかかる外部記憶装置の好適な実施の形態を詳細に説明する。なお、本発明は以下の記述に限定されるものではなく、本発明の要旨を逸脱しない範囲において適宜変更可能である。
【実施例】
【００３２】
図１は、本実施例にかかる外部記憶装置であるディスクアレイ装置を用いたディスクアレイシステムのシステム構成を示すブロック図である。このディスクアレイシステムにおいては、図１に示すようにディスクアレイ装置１はファイバチャネル・リンクＡ４Ａ、ファイバチャネル・リンクＢ４ＢによってホストコンピュータＡ２ＡおよびホストコンピュータＢ２Ｂの２台のホストコンピュータに接続されている。また、ディスクアレイ装置１は、ホストアダプタＡ６Ａと、ホストアダプタＢ６Ｂと、キャッシュメモリＡ８Ａと、キャッシュメモリＢ８Ｂと、キャッシュコントローラＡ１０Ａと、キャッシュコントローラＢ１０Ｂと、ディスクアダプタＡ１２Ａと、ディスクアダプタＢ１２Ｂと、スイッチＡ１４Ａと、スイッチＢ１４Ｂと、複数のディスクドライブＡ１６Ａと、複数のディスクドライブＢ１６Ｂと、データ転送経路（キャッシュ間リンク）１８と、ミラーリング制御ＤＭＡエンジン（ＤＭＡＥ）Ａ２０Ａ（以下、ＤＭＡＥ・Ａ２０Ａと呼ぶ）と、ミラーリング制御ＤＭＡエンジン（ＤＭＡＥ）Ｂ２０Ｂ（以下、ＤＭＡＥ・Ｂ２０Ｂと呼ぶ）と、を備えて構成されている。
【００３３】
なお、以下においては、ホストコンピュータＡ２ＡとホストコンピュータＢ２Ｂとを総称してホストコンピュータと呼ぶ場合がある。同様に、ホストアダプタＡ６ＡとホストアダプタＢ６Ｂとを総称してホストアダプタと、キャッシュメモリＡ８ＡとキャッシュメモリＢ８Ｂとを総称してキャッシュメモリ８と、キャッシュコントローラＡ１０ＡとキャッシュコントローラＢ１０Ｂとを総称してキャッシュコントローラ１０と、ディスクアダプタＡ１２ＡとディスクアダプタＢ１２Ｂとを総称してディスクアダプタ１２と、スイッチＡ１４ＡとスイッチＢ１４Ｂを総称してスイッチ１４と、ディスクドライブＡ１６ＡとディスクドライブＢ１６Ｂとを総称してディスクドライブ１６と、ＤＭＡＥ・Ａ２０ＡとＤＭＡＥ・Ｂ２０Ｂとを総称してＤＭＡＥ２０と呼ぶ場合がある。
【００３４】
ここで、ホストアダプタＡ６ＡとホストアダプタＢ６Ｂとは、それぞれホストコンピュータＡ２ＡおよびホストコンピュータＢ２ＢのホストＩ／Ｆを担当する。
【００３５】
キャッシュメモリＡ８ＡおよびキャッシュメモリＢ８Ｂは、外部装置であるホストコンピュータ２から送信されたデータを一時的に保持する一時記憶手段である。このようなキャッシュメモリＡ８ＡおよびキャッシュメモリＢ８Ｂは、ＤＲＡＭなどの揮発性のメモリで構成される。このため、一方のキャッシュメモリに格納されるデータは必ず他方のキャッシュメモリにも該データのコピーが格納、すなわちミラーリングされる。たとえばミラーリング元であるキャッシュメモリＡ８Ａに格納されるデータについては、必ずミラーリング先であるキャッシュメモリＢ８Ｂにも該データのコピーが格納される。
【００３６】
同様にミラーリング元であるキャッシュメモリＢ８Ｂに格納されるデータについては、必ずミラーリング先であるキャッシュメモリＡ８Ａにも該データのコピーが格納される。これにより、一方のキャッシュメモリ（たとえばキャッシュメモリＡ８Ａ）に障害が発生した場合においても、同一のデータが他方のキャッシュメモリ（たとえばキャッシュメモリＢ８Ｂ）に格納されているため、データの消失を防止することができる。
【００３７】
また、このディスクアレイ装置１においては、ミラーリング先のキャッシュメモリにデータのミラーリングを行う際に、ミラーリング元のキャッシュメモリ内のデータの正当性確認、すなわちデータが破壊等されていないかの確認が行われている。そして、この確認の結果、データの正当性が確認された場合（データが破壊等されていないことが確認された場合）のみ、他方のキャッシュメモリにデータが格納されている。したがって、このディスクアレイ装置１においては、ミラーリング先のキャッシュメモリ内に不具合の生じた誤ったデータが格納されることが防止されているため、保持されたデータの信頼性の高い外部記憶装置が実現されている。
【００３８】
たとえばキャッシュメモリＢ８ＢにキャッシュメモリＡ８Ａに保持されたデータのミラーリングを行う際に、キャッシュメモリＡ８Ａ内のデータの正当性確認、すなわちデータが破壊等されていないかの確認が行われる。そして、データの正当性が確認された場合（データが破壊等されていないことが確認された場合）のみ、キャッシュメモリＢ８Ｂにデータが格納される。同様に、キャッシュメモリＡ８ＡにキャッシュメモリＢ８Ｂに保持されたデータのミラーリングを行う際に、キャッシュメモリＢ８Ｂ内のデータの正当性確認、すなわちデータが破壊等されていないかの確認が行われる。そして、データの正当性が確認された場合（データが破壊等されていないことが確認された場合）のみ、キャッシュメモリＡ８Ａにデータが格納される。
【００３９】
また、キャッシュメモリ８は、図１に示したディスクアレイシステムのキャッシュメモリとしての役割だけではなく、キャッシュコントローラ１０のシステムメモリとしての役割も有する。すなわち、キャッシュメモリ８は、後述するキャッシュコントローラ１０内のＣＰＵ２２が実行するプログラムの格納領域及び作業領域として、その一部が利用される。また後述するようにＤＭＡＥ２０への指示情報となるディスクリプタも、後述するキャッシュコントローラ１０内のＣＰＵ２２が作成してキャッシュメモリ８内に格納する。
【００４０】
図２はキャッシュコントローラＡ１０Ａの周辺部および該キャッシュコントローラＡ１０Ａの詳細構成を示したブロック図である。なお、図２においては、キャッシュコントローラＡ１０Ａの構成を示すが、キャッシュコントローラＢ１０Ｂの構成もキャッシュコントローラＡ１０Ａの構成と同様である。キャッシュコントローラＡ１０Ａは１つまたは複数のＣＰＵ２２Ａ（図２においては２つ）と、該ＣＰＵ２２Ａが接続されるメモリコントローラ２４Ａと、を備えて構成される。メモリコントローラ２４Ａは図示しない複数のＩ／Ｏポートを有するとともにホストアダプタＡ６Ａ、ディスクアダプタＡ１２ＡおよびＤＭＡＥ・Ａ２０Ａが接続される。
【００４１】
このように構成されるキャッシュコントローラＡ１０ＡおよびキャッシュコントローラＢ１０Ｂは、一時記憶手段であるキャッシュメモリ８に対するデータの入出力を制御するキャッシュメモリの制御手段であり、それぞれキャッシュメモリＡ８ＡおよびキャッシュメモリＢ８Ｂの管理を行ない、ホストコンピュータから受け取ったデータを自キャッシュメモリへ格納する。すなわち、キャッシュコントローラＡ１０Ａは、ホストコンピュータＡ２Ａから受け取ったデータを自キャッシュメモリであるキャッシュメモリＡ８Ａへ格納する。一方、キャッシュコントローラＢ１０Ｂは、ホストコンピュータＢ２Ｂから受け取ったデータを自キャッシュメモリであるキャッシュメモリＢ８Ｂへ格納する。
【００４２】
ここで、キャッシュコントローラ１０は、ホストコンピュータから受け取ったデータを自キャッシュメモリへ格納する際、データから計算された巡回冗長検査（ＣＲＣ：Cyclic Redundancy Check）コードとデータの位置情報を示すブロックＩＤとをデータに付加して自キャッシュメモリへ格納する。このＣＲＣコードとブロックＩＤとを合わせて、データブロックに対するチェックコードという意味でブロックチェックコード（ＢＣＣ）と呼ぶ。
【００４３】
また、キャッシュコントローラ１０は、ホストコンピュータ２から受け取ったデータを自キャッシュメモリへ格納する他に、ＤＭＡＥ２０へ指示を出して、ミラーリングのために自キャッシュメモリではない他方のキャッシュメモリへもホストコンピュータから受け取ったデータを転送する補助処理も行う。
【００４４】
すなわち、ＢＣＣを付加したデータを自キャッシュメモリに格納した後、キャッシュコントローラ１０は、格納したデータの長さとアドレスとを含むデータ転送指示情報（ディスクリプタ）を作成し、キャッシュメモリ８に格納する。そしてキャッシュコントローラ１０はＤＭＡＥ２０に対してディスクリプタを作成した旨を通知する。この通知をトリガとしてＤＭＡＥ２０はミラーリングを開始する。
【００４５】
このようなキャッシュコントローラ１０は、システムメモリとしてキャッシュメモリを使用する。すなわち、キャッシュコントローラは、ＣＰＵ２２Ａが実行するプログラムの格納領域及び作業領域として、キャッシュメモリ８内の一部を利用する。また、ＤＭＡＥ２０へのデータ転送指示情報となるディスクリプタもＣＰＵ２２Ａがキャッシュメモリ８内に作成、格納する。
【００４６】
また、キャッシュコントローラ１０は、ホストアダプタ６とディスクアダプタ１２との間のデータ転送経路を提供する。すなわち、キャッシュコントローラＡ１０Ａは、ホストアダプタＡ６ＡとディスクアダプタＡ１２Ａとの間のデータ転送経路を提供する。キャッシュコントローラＢ１０Ｂは、ホストアダプタＢ６ＢとディスクアダプタＢ１２Ｂとの間のデータ転送経路を提供する。
【００４７】
また、このようなキャッシュコントローラＡ１０ＡとキャッシュコントローラＢ１０Ｂとの間には、ＤＭＡＥ・Ａ２０ＡおよびＤＭＡＥ・Ｂ２０Ｂを介してデータ転送経路（キャッシュ間リンク）１８が設けられており、キャッシュメモリＡ８Ａ、キャッシュメモリＢ８Ｂのミラーリングに利用される。
【００４８】
ディスク装置制御手段であるディスクアダプタ１２は、ディスクドライブ１６とのディスクＩ／Ｆを担当する。また、ディスクアダプタ１２は、キャッシュメモリに格納されたＢＣＣ付きデータを所定のタイミングでディスクドライブに格納する際にＢＣＣのチェックを行い、格納されるＢＣＣ付きデータ、すなわちキャッシュメモリに格納されているＢＣＣ付きデータが破壊等されていない正常なデータであるかを確認する。スイッチ１４は、ディスクアダプタ１２から、ディスクドライブ１６に含まれる複数ディスクへの接続を提供する。ディスクドライブ１６は、それぞれ複数のディスクを備え、キャッシュメモリ８に格納されたデータが所定のタイミングで該ディスクに格納される。
【００４９】
図３は、ミラーリング制御手段であるＤＭＡＥ・Ａ２０Ａの構成を示したブロック図である。なお、図３においては、ＤＭＡＥ・Ａ２０Ａの構成を示し、ＤＭＡＥ・Ａ２０Ａを例に説明するが、ＤＭＡＥ・Ｂ２０Ｂについても構成およびその機能はＤＭＡＥ・Ａ２０Ａと同様である。ＤＭＡＥ・Ａ２０Ａは、メモリＩ／Ｆ２６Ａと、送信部２８Ａと、受信部３０Ａと、リンクＩ／Ｆ３２Ａと、を備えて構成される。また、送信部２８Ａは、ディスクリプタ制御部３４Ａと、リード制御部３６Ａと、バッファ３８Ａと、ＣＲＣ生成論理部４０Ａと、ＣＲＣレジスタ４２Ａと、ブロックＩＤ（ＢＩＤ）カウントレジスタ４４Ａと、ＢＩＤカウンタ４６Ａと、比較論理部４８Ａと、転送制御部５０Ａと、を備えて構成される。そして、受信部３０Ａは、バッファ５２Ａと、ライト制御５４Ａと、を備えて構成される。
【００５０】
メモリＩ／Ｆ２６Ａは、キャッシュコントローラＡ１０Ａのメモリコントローラ２４Ａに接続され、キャッシュメモリ８Ａに格納されたディスクリプタやデータへのアクセスを行う。ディスクリプタ制御部３４Ａは、キャッシュメモリ８Ａからディスクリプタを読み出して解析し、該ディスクリプタをリード制御部３６Ａと転送制御部５０Ａとへ送信する。また、ディスクリプタ内のブロックＩＤ（ＢＩＤ）初期値をＢＩＤカウントレジスタ４４Ａにセットする。
【００５１】
リード制御部３６Ａは、キャッシュメモリＡ８Ａからのデータの読み出しを制御する。すなわち、リード制御部３６Ａは、ディスクリプタ制御部３４Ａから受信したディスクリプタに指定された転送元キャッシュアドレスから、指定されたバイト数のデータを読み出し、バッファ３８Ａへ格納する。また、リード制御部３６Ａは、リード制御部３６Ａが読み出したデータをバッファ３８Ａへ格納するのと同時にＣＲＣ生成論理部４０Ａへ送信する。
【００５２】
ＣＲＣ生成論理部４０Ａは、リード制御部３６Ａから送信されるデータを受信し、決められた初期値から（Ｔ１０コードを使用する場合はＡＬＬ’１’）５１２バイト毎にＣＲＣを生成して、生成したＣＲＣをＣＲＣレジスタ４２Ａに格納する。ＢＩＤカウントレジスタ４４Ａは、ディスクリプタ制御部３４Ａによりディスクリプタ内のブロックＩＤ（ＢＩＤ）初期値をセットされ、保持する。その後は、リード制御部３６Ａが５２０バイトデータブロックを読み出すごとにＢＩＤカウンタによりＢＩＤに「１」を加算（＋１）された、次のデータブロックに対するＢＩＤの期待値を格納する。
【００５３】
比較論理部４８Ａは、リード制御部３６Ａが読み出すデータのうち、５２０バイトの最後の８バイトにあるＢＣＣと、上記のＣＲＣレジスタおよびＢＩＤカウントレジスタに保持された期待値と、を受信する。そして５２０バイトの最後の８バイトにあるＢＣＣと、上記のＣＲＣレジスタおよびＢＩＤカウントレジスタに保持された期待値とが一致するか否かの比較を行い、比較結果を転送制御部５０Ａに送信する。
【００５４】
転送制御部５０Ａは、上記の比較結果を確認し、ミラーリング先のキャッシュメモリ（ここではキャッシュメモリＢ８Ｂ）への最終的なデータ転送を制御する。すなわち、ディスクリプタ制御部３４Ａから受け取ったディスクリプタに指定された転送先キャッシュアドレスへ、指定されたバイト数のデータをバッファから転送する。具体的には、５２０バイトデータブロック毎に比較回路からのＢＣＣ比較結果を受け取り、一致していればそのデータブロックを転送し、不一致が見つかった場合はそのデータブロックを含めた残りのデータの転送は行わない。
【００５５】
ここで、比較結果が一致する場合とは、キャッシュコントローラＡ１０Ａが受け取ったデータとキャッシュメモリＡ８Ａに格納されたデータとが一致することを意味し、キャッシュメモリＡ８Ａに格納されたデータが破壊等されていない正常なデータであることを意味する。比較結果が一致する場合には、キャッシュメモリＡ８Ａに格納されたデータが正常なデータであることを保証することができる。したがって、上記の比較結果が一致している場合には、転送制御部５０Ａがバッファ３８Ａに格納されたデータブロックをミラーリング先のキャッシュメモリであるキャッシュメモリＢ８Ｂに転送することにより、データの正当性が保証されたミラーリングが可能であり、正常且つ同一のデータがキャッシュメモリＡ８ＡおよびキャッシュメモリＢ８Ｂに格納される。
【００５６】
一方、比較結果が一致しない場合（比較結果において不一致が見つかった場合）とは、キャッシュコントローラＡ１０Ａが受け取ったデータとキャッシュメモリＡ８Ａに格納されたデータとが一致しないことを意味し、キャッシュメモリＡ８Ａに格納されたデータが破壊等されていることを意味する。上記の比較を行うことにより、ミラーリングが完了する前に、すなわちデータがキャッシュメモリＢ８Ｂに格納される前に破壊等されたデータを検出することができる。
【００５７】
比較結果が一致しない場合には、キャッシュメモリＡ８Ａに格納されたデータが正常なデータであることを保証することができない。したがって、上記の比較結果が一致しない場合には、転送制御部５０Ａはバッファ３８Ａに格納されたデータブロックをミラーリングキャッシュメモリであるキャッシュメモリＢ８Ｂに転送しない。これにより、破壊等された異常なデータがミラーリングキャッシュメモリであるキャッシュメモリＢ８Ｂに格納される（ミラーリングされる）ことを防止することができる。これにより、ミラーリングしたデータの消去、再ミラーリングなどの工程の発生を防止することができ、正しいデータのみを確実且つ容易にミラーリングすることができる。
【００５８】
バッファ５２Ａは、ＤＭＡＥ・Ｂ２０Ｂにおいてデータの正当性が確認され、転送されたデータを一時的に保持する。そしてバッファ５２Ａに保持されたデータは、ライト制御５４Ａの制御によりキャッシュメモリＡ８Ａへ格納される。
【００５９】
つぎに、ディスクアレイ装置１においてデータのミラーリングを行う際の具体的な処理手順について図４〜図１３を用いて説明する。図４〜図１３は、本実施例にかかるディスクアレイシステムの処理手順を示すフローチャートである。ここでは、ホストコンピュータＡ２Ａから送信されたデータをキャッシュメモリＡ８ＡおよびディスクドライブＡ１６Ａに格納するとともに、該データをキャッシュメモリＢ８Ｂにミラーリングする場合を例に説明する。
【００６０】
まず、ホストコンピュータＡ２Ａから送信されたデータをキャッシュメモリＡ８ＡおよびキャッシュメモリＢ８Ｂに格納する処理について図４〜図６に示すフローチャートを用いて説明する。最初にホストコンピュータＡ２ＡがホストアダプタＡ６Ａにデータを送信する（ステップＳ１０１）。ホストアダプタＡ６Ａは、ホストコンピュータＡ２Ａが送信したデータを受信し（ステップＳ１０２）、該データに５１２バイト毎に８バイトのＢＣＣを付与する（ステップＳ１０３）。そしてホストアダプタＡ６Ａは、ＢＣＣを付与したデータ（以下、ＢＣＣ付きデータと呼ぶ）をキャッシュコントローラＡ１０Ａに送信する（ステップＳ１０４）。
【００６１】
キャッシュコントローラＡ１０Ａは、ホストアダプタＡ６Ａから送信されたＢＣＣ付きデータを受信し（ステップＳ１０５）、該ＢＣＣ付きデータをキャッシュメモリＡ８Ａに送信する（ステップＳ１０６）。キャッシュメモリＡ８Ａでは、キャッシュコントローラＡ１０Ａから送信されたＢＣＣ付きデータを受信し（ステップＳ１０７）、該データを格納、すなわち書き込む（ステップＳ１０８）。
【００６２】
つぎに、キャッシュコントローラＡ１０Ａは、データの長さとデータのアドレスを記述したデータ転送指示情報（ディスクリプタ）を作成し、キャッシュメモリＡ８Ａに送信する（ステップＳ１０９）。キャッシュメモリＡ８Ａはディスクリプタを受信し（ステップＳ１１０）、キャッシュメモリＡ８Ａ内の作業域に該ディスクリプタの書き込み（格納）を行う（ステップＳ１１１）。また、キャッシュメモリＡ８Ａがディスクリプタを書き込んだ後、キャッシュコントローラＡ１０Ａは、ＤＭＡＥ・Ａ２０ＡにキャッシュメモリＡ８Ａのディスクリプタを読み出すよう指示情報を送る。
【００６３】
ＤＭＡＥ・Ａ２０Ａはこの指示情報を受けてキャッシュメモリＡ８Ａからディスクリプタを読み出し（ステップＳ１１２）、該ディスクリプタの情報に基づいてキャッシュメモリＡ８ＡからＢＣＣ付きデータを読み出す（ステップＳ１１３）。つぎに、ＤＭＡＥ・Ａ２０Ａは、読み出したＢＣＣ付きデータのＢＣＣをチェックし、キャッシュメモリＡ８Ａから読み出したＢＣＣ付きデータが破壊等されていないか、すなわち正常なデータであるか否かを確認する（ステップＳ１１４）。このＢＣＣのチェックについての詳細な処理は後述する。
【００６４】
ここで、キャッシュメモリＡ８Ａから読み出したＢＣＣ付きデータが正常なデータでない場合（破壊等されている場合、ステップＳ１１４否定）、図５のフローチャートに示すようにＤＭＡＥ・Ａ２０ＡはキャッシュコントローラＡ１０Ａに対してエラー情報を送信する（ステップＳ１１５）。キャッシュコントローラＡ１０Ａは、ＤＭＡＥ・Ａ２０Ａから送信されたエラー情報を受信し（ステップＳ１１６）、該エラー情報をホストアダプタＡ６Ａに送信する（ステップＳ１１７）。
【００６５】
ホストアダプタＡ６Ａでは、キャッシュコントローラＡ１０Ａから送信されたエラー情報を受信し（ステップＳ１１８）、該エラー情報をホストコンピュータＡ２Ａに送信する（ステップＳ１１９）。そして、ホストコンピュータＡ２Ａがエラー情報を受信することで（ステップＳ１２０）、ホストコンピュータＡ２Ａがステップ１０１において送信したデータの一連の処理が終了する。
【００６６】
一方、ステップＳ１１４においてキャッシュメモリＡ８Ａから読み出したＢＣＣ付きデータが破壊等されていないか、すなわち正常なデータであるか否かを確認した結果、該ＢＣＣ付きデータが正常なデータである場合（破壊等されていない場合、ステップＳ１１４肯定）には、ＤＭＡＥ・Ａ２０Ａは該ＢＣＣ付きデータをＤＭＡＥ・Ｂ２０Ｂに送信する（ステップＳ１２１）。ＤＭＡＥ・Ｂ２０Ｂは、図６のフローチャートに示すようにＤＭＡＥ・Ａ２０Ａから送信されたＢＣＣ付きデータを受信すると（ステップＳ１２２）、該ＢＣＣ付きデータをキャッシュコントローラＢ１０Ｂに送信する（ステップＳ１２３）。
【００６７】
キャッシュコントローラＢ１０Ｂは、ＤＭＡＥ・Ｂ２０Ｂから送信されたＢＣＣ付きデータを受信し（ステップＳ１２４）、該ＢＣＣ付きデータをキャッシュメモリＢ８Ｂに送信する（ステップＳ１２５）。キャッシュメモリＢ８Ｂでは、キャッシュコントローラＢ１０Ｂから送信されたＢＣＣ付きデータを受信し（ステップＳ１２６）、該ＢＣＣ付きデータの書き込み（格納）を行う（ステップＳ１２７）。そして、キャッシュメモリＢ８ＢにおいてＢＣＣ付きデータの書き込み（格納）が完了すると、キャッシュコントローラＢ１０ＢはＢＣＣ付きデータの書き込み（格納）完了の情報（以下、データ格納完了情報と呼ぶ）をＤＭＡＥ・Ｂ２０ＢおよびＤＭＡＥ・Ａ２０Ａを経由してキャッシュコントローラＡ１０Ａに送信する（ステップＳ１２８）。
【００６８】
キャッシュコントローラＡ１０Ａは、キャッシュコントローラＢ１０Ｂからデータ格納完了情報を受信すると（ステップＳ１２９）、該情報をホストアダプタＡ６Ａに送信する（ステップＳ１３０）。ホストアダプタＡ６Ａは、キャッシュコントローラＡ１０Ａからデータ格納完了情報を受信すると（ステップＳ１３１）、該情報をホストコンピュータＡ２Ａに送信する（ステップＳ１３２）。そして、ホストコンピュータＡ２Ａがデータ格納完了情報を受信することで（ステップＳ１３３）、ホストコンピュータＡ２Ａがステップ１０１において送信したデータがキャッシュメモリＡ８ＡおよびキャッシュメモリＢ８Ｂに正常な状態で格納され、キャッシュメモリＡ８ＡおよびキャッシュメモリＢ８Ｂに対するデータの格納処理が終了する。
【００６９】
つぎに、キャッシュメモリＡ８ＡまたはキャッシュメモリＢ８Ｂに格納されたＢＣＣ付きデータをディスクドライブＡ１６ＡおよびディスクドライブＢ１６Ｂに格納する処理について図７〜図１０に示すフローチャートを用いて説明する。まず、図７のフローチャートに示すようにキャッシュコントローラＡ１０ＡがキャッシュメモリＡ８ＡからＢＣＣ付きデータを読み出し（ステップＳ２０１）、該ＢＣＣ付きデータをディスクアダプタＡ１２Ａに送信する（ステップＳ２０２）。ディスクアダプタＡ１２Ａは、キャッシュコントローラＡ１０Ａから送信されたＢＣＣ付きデータを受信し（ステップＳ２０３）、該ＢＣＣ付きデータのＢＣＣをチェックし、ＢＣＣ付きデータが破壊等されていないか、すなわち正常なデータであるか否かを確認する（ステップＳ２０４）。
【００７０】
ここで、キャッシュコントローラＡ１０Ａから送信されたＢＣＣ付きデータが正常なデータである場合（破壊等されていない場合、ステップＳ２０４肯定）、ディスクアダプタＡ１２Ａは、ＢＣＣ付きデータをスイッチＡ１４ＡおよびスイッチＢ１４Ｂに送信する（ステップＳ２０５）。スイッチＡ１４Ａは、ＢＣＣ付きデータを受信すると（ステップＳ２０６）、該ＢＣＣ付きデータをディスクドライブＡ１６Ａに送信する（ステップＳ２０７）。そして、ディスクドライブＡ１６Ａでは、スイッチＡ１４Ａから送信されたＢＣＣ付きデータを受信し、受信したＢＣＣ付きデータをディスクドライブＡ１６Ａ内のディスクに書き込む（ステップＳ２０８）。これにより、キャッシュメモリＡ８Ａに格納されたＢＣＣ付きデータをディスクドライブＡ１６Ａに格納する一連の処理が終了する。
【００７１】
また、スイッチＢ１４Ｂは、ＢＣＣ付きデータを受信すると（ステップＳ２０９）、該ＢＣＣ付きデータをディスクドライブＢ１６Ｂに送信する（ステップＳ２１０）。そして、ディスクドライブＢ１６Ｂでは、スイッチＢ１４Ｂから送信されたＢＣＣ付きデータを受信し、ディスクドライブＢ１６Ｂ内のディスクに受信したＢＣＣ付きデータを書き込む（ステップＳ２１１）。これにより、キャッシュメモリＡ８Ａに格納されたＢＣＣ付きデータをディスクドライブＢ１６Ｂに格納する一連の処理が終了する。
【００７２】
一方、ステップ２０４において、キャッシュコントローラＡ１０Ａから送信されたＢＣＣ付きデータが破壊等されていないか、すなわち正常なデータであるか否かを確認した結果、該ＢＣＣ付きデータが正常なデータでない場合（破壊等されている場合、ステップＳ２０４否定）には、ミラーリングキャッシュメモリであるキャッシュメモリＢ８Ｂに格納されたＢＣＣ付きデータをディスクドライブＡ１６ＡおよびディスクドライブＢ１６Ｂに格納する処理に移る。この場合にはディスクアダプタＡ１２Ａは、図８のフローチャートに示すようにキャッシュコントローラＡ１０Ａに対してエラー情報を送信する（ステップＳ２１２）。キャッシュコントローラＡ１０Ａは、ディスクアダプタＡ１２Ａからエラー情報を受信すると（ステップＳ２１３）、ＤＭＡＥ・Ａ２０ＡおよびＤＭＡＥ・Ｂ２０Ｂを介して該エラー情報をキャッシュコントローラＢ１０Ｂに送信する（ステップＳ２１４）。
【００７３】
キャッシュコントローラＢ１０Ｂは、キャッシュコントローラＡ１０Ａから送信されたエラー情報を受信すると（ステップＳ２１５）、キャッシュメモリＢ８Ｂから該キャッシュメモリＢ８Ｂに格納されたＢＣＣ付きデータを読み出す（ステップＳ２１６）。そしてキャッシュコントローラＢ１０Ｂは、読み出したＢＣＣ付きデータをＤＭＡＥ・Ｂ２０ＢおよびＤＭＡＥ・Ａ２０Ａを介してキャッシュコントローラＡ１０Ａに送信する（ステップＳ２１７）。
【００７４】
キャッシュコントローラＡ１０Ａは、キャッシュコントローラＢ１０Ｂから送信されたＢＣＣ付きデータを受信し（ステップＳ２１８）、該ＢＣＣ付きデータをディスクアダプタＡ１２Ａに送信する（ステップＳ２１９）。そして図９のフローチャートに示すように、ディスクアダプタＡ１２ＡはキャッシュコントローラＡ１０Ａから送信されたＢＣＣ付きデータを受信すると（ステップＳ２２０）、該ＢＣＣ付きデータのＢＣＣをチェックし、ＢＣＣ付きデータが破壊等されていないか、すなわち正常なデータであるか否かを確認する（ステップＳ２２１）。
【００７５】
ここで、キャッシュコントローラＡ１０Ａから送信されたＢＣＣ付きデータが正常なデータである場合（破壊等されていない場合、ステップＳ２２１肯定）、ディスクアダプタＡ１２Ａは、ＢＣＣ付きデータをスイッチＡ１４ＡおよびスイッチＢ１４Ｂに送信する（ステップＳ２２２）。スイッチＡ１４Ａは、ＢＣＣ付きデータを受信すると（ステップＳ２２３）、該ＢＣＣ付きデータをディスクドライブＡ１６Ａに送信する（ステップＳ２２４）。そして、ディスクドライブＡ１６Ａでは、スイッチＡ１４Ａから送信されたＢＣＣ付きデータを受信し、受信したＢＣＣ付きデータをディスクドライブＡ１６Ａ内のディスクに書き込む（ステップＳ２２５）。これにより、キャッシュメモリＢ８Ｂに格納されたＢＣＣ付きデータをディスクドライブＡ１６Ａに格納する一連の処理が終了する。
【００７６】
また、スイッチＢ１４Ｂは、ＢＣＣ付きデータを受信すると（ステップＳ２２６）、該ＢＣＣ付きデータをディスクドライブＢ１６Ｂに送信する（ステップＳ２２７）。そして、ディスクドライブＢ１６Ｂでは、スイッチＢ１４Ｂから送信されたＢＣＣ付きデータを受信し、ディスクドライブＢ１６Ｂ内のディスクに受信したＢＣＣ付きデータを書き込む（ステップＳ２２８）。これにより、キャッシュメモリＢ８Ｂに格納されたＢＣＣ付きデータをディスクドライブＢ１６Ｂに格納する一連の処理が終了する。
【００７７】
一方、ステップ２２１において、キャッシュコントローラＡ１０Ａから送信されたＢＣＣ付きデータが破壊等されていないか、すなわち正常なデータであるか否かを確認した結果、該ＢＣＣ付きデータが正常なデータでない場合（破壊等されている場合、ステップＳ２２１否定）には、ディスクアダプタＡ１２ＡはキャッシュコントローラＡ１０Ａにエラー情報を送信する（ステップＳ２２９）。キャッシュコントローラＡ１０Ａは、図１０のフローチャートに示すようにディスクアダプタＡ１２Ａから送信されたエラー情報を受信し（ステップＳ２３０）、該エラー情報をホストアダプタＡ６Ａに送信する（ステップＳ２３１）。
【００７８】
ホストアダプタＡ６Ａでは、キャッシュコントローラＡ１０Ａから送信されたエラー情報を受信し（ステップＳ２３２）、該エラー情報をホストコンピュータＡ２Ａに送信する（ステップＳ２３３）。そして、ホストコンピュータＡ２Ａがエラー情報を受信することで（ステップＳ２３４）、一連の処理が終了する。
【００７９】
つぎにＤＭＡＥ・Ａ２０ＡにおいてＤＭＡＥ・Ｂ２０Ｂにデータを転送する場合の転送処理について図１１および図１２を用いて説明する。なお、ここでは、ＤＭＡＥ・Ａ２０Ａを例に説明するがＤＭＡＥ・Ｂ２０Ｂの場合の処理も同様である。まず、図１１に示すように、ディスクリプタ制御部３４ＡがキャッシュメモリＡ８Ａに格納されたディスクリプタを読み出す（ステップＳ３０１）。そして、ディスクリプタ制御部３４Ａは、該ディスクリプタをリード制御部３６Ａと転送制御部５０Ａとへ送信し、また、読み出したディスクリプタ内のブロックＩＤ（ＢＩＤ）をＢＩＤカウントレジスタ４４Ａに送信する（ステップＳ３０２）。
【００８０】
リード制御部３６Ａは、ディスクリプタ制御部３４Ａから送信されたディスクリプタを受信し（ステップＳ３０３）、ディスクリプタに含まれる転送元キャッシュアドレスから指定されたバイト数のＢＣＣ付きデータを読み出し、バッファ３８Ａに送信する。また、読み出したＢＣＣ付きデータのうちデータのみをＣＲＣ生成論理部４０Ａに送信し、ＢＣＣのみを比較論理部に送信する（ステップＳ３０４）。バッファ３８Ａは、リード制御部３６Ａから送信されたＢＣＣ付きデータの書き込みを行う（ステップＳ３０５）。
【００８１】
転送制御部５０Ａは、ディスクリプタ制御部３４Ａから送信されたディスクリプタを受信し（ステップＳ３０６）、転送処理を行うまで該ディスクリプタを保持する。ＢＩＤカウントレジスタ４４Ａは、ディスクリプタ制御部３４Ａから送信されたディスクリプタ内のＢＩＤを受信し（ステップＳ３０７）、初期値をＢＩＤ初期値にセットする（ステップＳ３０８）。そして、ＢＩＤカウントレジスタ４４Ａは、リード制御部３６Ａが５２０バイトを読み出す毎にカウンタ値に「１」を加算（＋１）して次のデータブロックに対するＢＩＤの期待値をＢＩＤカウントレジスタ４４Ａに格納する（ステップＳ３０９）。
【００８２】
つぎに、ＣＲＣ生成論理部４０Ａは、ステップＳ３０４でリード制御部３６Ａから送信されたＢＣＣ付きデータのデータ部分（５１２バイト分）を受信し（ステップＳ３１０）、５１２バイト毎にデータから計算したＣＲＣを生成して（ステップＳ３１１）、ＣＲＣレジスタ４２Ａに格納する（ステップＳ３１２）。そして、比較論理部４８Ａは、ステップ３０４でリード制御部３６Ａから送信されたＢＣＣ付きデータのＢＣＣ部分（８バイト分）を受信し（ステップＳ３１３）、ＣＲＣ生成論理部４０Ａから該ＣＲＣ生成論理部４０Ａで生成したＣＲＣを読み出し（ステップＳ３１４）、ＢＩＤカウントレジスタ４４ＡからＢＩＤを読み出す（ステップＳ３１５）。そして図１２に示すように、比較論理部４８Ａは、リード制御部３６Ａから送信されたＢＣＣと、ＣＲＣ生成論理部４０Ａから読み出したＣＲＣおよびＢＩＤカウントレジスタ４４Ａから読み出したＢＩＤと、を比較し（ステップＳ３１６）、比較結果を転送制御部５０Ａに送信する（ステップＳ３１７）。
【００８３】
転送制御部５０Ａでは、上記の比較結果を受信し（ステップＳ３１８）、リード制御部３６Ａから送信されたＢＣＣと、ＣＲＣ生成論理部４０Ａから読み出したＣＲＣおよびＢＩＤカウントレジスタ４４Ａから読み出したＢＩＤと、が一致している否かを判断する（ステップＳ３１９）。ここで、比較結果が一致する場合は（ステップＳ３１９肯定）、転送制御部５０Ａは、保持していたディスクリプタに指示されたＢＣＣ付きデータをバッファ３８Ａから読み出し（ステップＳ３２０）、該ＢＣＣ付きデータをリンクＩ／Ｆ３２Ａに送信する（ステップＳ３２１）。
【００８４】
リンクＩ／Ｆ３２Ａは、転送制御部５０Ａから送信されたＢＣＣ付きデータを受信し（ステップＳ３２２）、ＤＭＡＥ・Ｂ２０Ｂに送信する（ステップＳ３２３）。これにより、ＤＭＡＥ・Ａ２０ＡからＤＭＡＥ・Ｂ２０Ｂへの一連の転送処理が終了する。
【００８５】
一方、ステップＳ３１９において比較結果が一致しない場合は（ステップＳ３１９否定）、転送制御部５０Ａは転送処理中止し（ステップＳ３２４）、キャッシュコントローラＡ１０Ａにエラー情報を送信する（ステップＳ３２５）。これによりＤＭＡＥ・Ａ２０Ａにおいて転送処理を中止した場合の一連の処理が終了する。以上の処理を行うことにより、キャッシュメモリＡ８Ａに格納されたＢＣＣ付きデータをキャッシュメモリＢ８Ｂに転送する際に、破壊等されたデータを検出し、該破壊等されたデータのミラーリングを防止することができる。したがって、キャッシュメモリＡ８Ａに格納されたＢＣＣ付きデータであって破壊等されたＢＣＣ付きデータがキャッシュメモリＢ８Ｂに転送されることがないため、ミラーリングされたＢＣＣ付きデータの正当性を確実に保証することが可能である。
【００８６】
最後に、ＤＭＡＥ・Ｂ２０Ｂにおいてデータの正当性が確認されたＢＣＣ付きデータがＤＭＡＥ・Ｂ２０ＢからＤＭＡＥ・Ａ２０Ａに転送された場合の転送処理について図１３を用いて説明する。
【００８７】
まず、リンクＩ／Ｆ３２Ａは、ＤＭＡＥ・Ｂ２０Ｂから送信されたデータの正当性が確認されたＢＣＣ付きデータを受信すると（ステップＳ４０１）、該ＢＣＣ付きデータをバッファ５２Ａに送信する（ステップＳ４０２）。ここで、ＤＭＡＥ・Ｂ２０Ｂから送信されてくるＢＣＣ付きデータは、５２０バイト（データ部５１２バイト＋ＢＣＣ部８バイト）単位で送信されてくる。
【００８８】
バッファ５２Ａは、リンクＩ／Ｆ３２Ａから送信されたＢＣＣ付きデータを受信し、該ＢＣＣ付きデータの書き込み（格納）を行う（ステップＳ４０３）。つぎに、バッファ５２Ａは、格納したＢＣＣ付きデータを所定のタイミングでライト制御部５４Ａに送信する（ステップＳ４０４）。ライト制御部５４Ａは、バッファ５２Ａから送信されたＢＣＣ付きデータを受信し、該ＢＣＣ付きデータをメモリＩ／Ｆ２６Ａに送信する（ステップＳ４０５）。そして、メモリＩ／Ｆ２６Ａは、ライト制御部５４Ａから送信されたＢＣＣ付きデータを受信し、キャッシュコントローラＡ１０Ａに送信する（ステップＳ４０６）。これにより、データの正当性が確認されたＢＣＣ付きデータがＤＭＡＥ・Ｂ２０ＢからＤＭＡＥ・Ａ２０Ａに転送された場合のＤＭＡＥ・Ａ２０Ａにおける一連の転送処理が終了する。そして、キャッシュコントローラＡ１０Ａに送られたＢＣＣ付きデータはキャッシュメモリＡ８Ａへの書き込み（格納）が行われ、キャッシュメモリＢ８Ｂに格納されたＢＣＣ付きデータのキャッシュメモリＡ８Ａへのミラーリングが終了する。
【００８９】
なお、ここでは、ＤＭＡＥ・Ａ２０Ａを例に説明するがＤＭＡＥ・Ｂ２０Ｂの場合の処理も同様である。また、ＤＭＡＥ・Ｂ２０Ｂにおいては、上述したＤＭＡＥ・Ａ２０Ａの場合と同様の処理によりデータの正当性が確認されている。したがって、以上の処理を行うことにより、キャッシュメモリＢ８Ｂに格納されたＢＣＣ付きデータをキャッシュメモリＡ８Ａに転送する際に、破壊等されたデータのミラーリングが防止される。したがって、キャッシュメモリＢ８Ｂに格納されたＢＣＣ付きデータであって破壊等されたＢＣＣ付きデータがキャッシュメモリＡ８Ａに転送されることがないため、ミラーリングされたＢＣＣ付きデータの正当性を確実に保証することが可能である。
【００９０】
上述してきたように本実施例では、ＤＭＡＥ・Ａ２０Ａが、リード制御部３６Ａが読み出すＢＣＣ付きデータのうち、５２０バイトの最後の８バイトにあるＢＣＣと、ＤＭＡＥ・Ａ２０Ａ内で生成されＣＲＣレジスタ４２ＡおよびＢＩＤカウントレジスタ４４Ａに保持された値とが一致するか否かの比較を比較論理部４８Ａにおいて行う。そして、この比較結果を転送制御部５０Ａにおいて確認し、この比較結果が一致している場合には、転送制御部５０Ａはバッファ３８Ａに格納されたデータブロックをミラーリングキャッシュメモリであるキャッシュメモリＢ８Ｂに転送する。一方、比較結果において不一致が認められた場合、すなわち破壊等されたデータが検出された場合には、転送制御部５０Ａはバッファ３８Ａに格納されたデータブロックを含めた残りのデータの転送は行わない。
【００９１】
このような処理を行うことにより、ディスクアレイ装置内に正しいデータが格納されない状態でキャッシュメモリＢ８Ｂに正常にデータが格納されたという通知（正常終了通知）がホストコンピュータＡ２Ａに対してなされることが確実に防止される。これにより、本実施例では、ディスクアレイ装置１内においてミラーリングされたデータの正当性を確実に保証してキャッシュメモリの冗長化管理を確実に行い、データの信頼性を高めることができるという効果を有する。したがって、本実施例では、正しいデータを確実且つ容易にミラーリングすることが可能であり、データの信頼性の高い外部記憶装置を得ることができる。
【００９２】
なお、上記においてはホストコンピュータＡ２Ａから送信されたデータをキャッシュメモリＡ８Ａおよびディスクドライブ１６Ａに格納するとともに該データをキャッシュメモリＢ８Ｂにミラーリングする場合を例に説明したが、ホストコンピュータＢ２Ｂから送信されたデータをキャッシュメモリＢ８Ｂおよびディスクドライブ１６Ｂに格納するとともに該データをキャッシュメモリＡ８Ａにミラーリングする場合も上記と同様の処理により行うことができる。
【００９３】
また、上記においてはキャッシュメモリが２つの場合について説明したが、本発明においてはキャッシュメモリは２つに限定されるものではなく、キャッシュメモリを３つ以上の複数個備えた構成とすることも可能である。
【産業上の利用可能性】
【００９４】
以上のように、本発明にかかる外部記憶装置は、電子化されたデータの格納に有用であり、特に、電子化されたデータを大量に取り扱うコンピュータのデータを効率良く格納する用途に適している。
【図面の簡単な説明】
【００９５】
【図１】本実施例にかかるディスクアレイシステムのシステム構成を示すブロック図である。
【図２】キャッシュコントローラおよびその周辺部の構成を示すブロック図である。
【図３】ＤＭＡＥの構成を示すブロック図である。
【図４】ディスクアレイシステムの処理手順を示すフローチャート（１）である。
【図５】ディスクアレイシステムの処理手順を示すフローチャート（２）である。
【図６】ディスクアレイシステムの処理手順を示すフローチャート（３）である。
【図７】ディスクアレイシステムの処理手順を示すフローチャート（４）である。
【図８】ディスクアレイシステムの処理手順を示すフローチャート（５）である。
【図９】ディスクアレイシステムの処理手順を示すフローチャート（６）である。
【図１０】ディスクアレイシステムの処理手順を示すフローチャート（７）である。
【図１１】ディスクアレイシステムの処理手順を示すフローチャート（８）である。
【図１２】ディスクアレイシステムの処理手順を示すフローチャート（９）である。
【図１３】ディスクアレイシステムの処理手順を示すフローチャート（１０）である。
【図１４】従来のディスクアレイシステムのシステム構成を示すブロック図である。
【符号の説明】
【００９６】
１    ディスクアレイ装置
２Ａ    ホストコンピュータＡ
２Ｂ    ホストコンピュータＢ
４Ａ    ファイバチャネル・リンクＡ
４Ｂ    ファイバチャネル・リンクＢ
６Ａ    ホストアダプタＡ
６Ｂ    ホストアダプタＢ
８Ａ    キャッシュメモリＡ
８Ｂ    キャッシュメモリＢ
１０Ａ    キャッシュコントローラＡ
１０Ｂ    キャッシュコントローラＢ
１２Ａ    ディスクアダプタＡ
１２Ｂ    ディスクアダプタＢ
１４Ａ    スイッチＡ
１４Ｂ    スイッチＢ
１６Ａ    ディスクドライブＡ
１６Ｂ    ディスクドライブＢ
１８    キャッシュ間リンク
２０Ａ    ＤＭＡＥ・Ａ
２０Ｂ    ＤＭＡＥ・Ｂ
２２Ａ    ＣＰＵ
２４Ａ    メモリコントローラ
２６Ａ    メモリＩ／Ｆ
２８Ａ    送信部
３０Ａ    受信部
３２Ａ    リンクＩ／Ｆ
３４Ａ    ディスクリプタ制御部
３６Ａ    リード制御部
３８Ａ    バッファ
４０Ａ    ＣＲＣ生成論理部
４２Ａ    ＣＲＣレジスタ
４４Ａ    ＢＩＤカウントレジスタ
４６Ａ    ＢＩＤカウンタ
４８Ａ    比較論理部
５０Ａ    転送制御部
５２Ａ    バッファ
５４Ａ    ライト制御
【図１】
2006134241.tif 000003
【図２】
2006134241.tif 000004
【図３】
2006134241.tif 000005
【図４】
2006134241.tif 000006
【図５】
2006134241.tif 000007
【図６】
2006134241.tif 000008
【図７】
2006134241.tif 000009
【図８】
2006134241.tif 000010
【図９】
2006134241.tif 000011
【図１０】
2006134241.tif 000012
【図１１】
2006134241.tif 000013
【図１２】
2006134241.tif 000014
【図１３】
2006134241.tif 000015
【図１４】
2006134241.tif 000016