(57)【特許請求の範囲】
【請求項１】
ホストコンピュータと、複数のディスク記憶装置を含むディスクアレイ、及び前記ディスクアレイを制御し、前記ホストコンピュータと前記ディスク記憶装置との間の転送データを一時記憶するためのキャッシュメモリを内蔵するディスクアレイコントローラから構成されたディスクアレイ装置とを備え、前記ホストコンピュータ上でアプリケーションプログラムと並行して動作する監視プログラムにより前記ディスクアレイ装置の監視及び当該ディスクアレイ装置に対する各種設定が行われるコンピュータシステムで適用されるディスクアレイ装置のパトロールによるデータパス異常検出方法であって、
前記ホストコンピュータから前記ディスクアレイ装置に発行されたライト要求が予め設定されたタイミングに合致する場合、当該ライト要求に応じて前記ホストコンピュータから前記ディスクアレイ装置に転送されて前記キャッシュメモリに書き込まれたライトデータの第１の冗長コードを予め設定されたサイズのデータブロックを単位に生成するステップと、
前記ホストコンピュータから前記ディスクアレイ装置に対し、前記ホストコンピュータと前記ディスクアレイ装置との間のデータパス監視のための問い合わせを前記監視プログラムに従って前記タイミングに対応した間隔で行うステップと、
前記問い合わせに応じて、その際に生成されている前記第１の冗長コード及び対応するデータを指定するためのデータ指定情報を前記ディスクアレイ装置から前記ホストコンピュータに通知するステップと、
前記ディスクアレイ装置から通知された前記データ指定情報の指定するデータを前記キャッシュメモリから前記ホストコンピュータに読み出すステップと、
前記ホストコンピュータに読み出されたデータの第２の冗長コードを前記監視プログラムに従って前記データブロックを単位に生成するステップと、
前記第２の冗長コードを前記ディスクアレイ装置から通知された前記第１の冗長コードを比較し、少なくとも当該比較結果に基づいて前記ホストコンピュータと前記ディスクアレイ装置との間のデータパスの異常の有無を判定するステップとを具備することを特徴とするディスクアレイ装置のパトロールによるデータパス異常検出方法。
【請求項２】
前記タイミングが、前記監視プログラムに従って予め設定された時間間隔またはライト要求回数の間隔であることを特徴とする請求項１記載のディスクアレイ装置のパトロールによるデータパス異常検出方法。
【請求項３】
前記第１の冗長コードと前記第２の冗長コードとが一致しない場合、前記ホストコンピュータから前記ディスクアレイ装置に対して前記キャッシュメモリ上の元のデータが更新されているか否かを問い合わせるステップとを更に具備し、
前記元のデータが更新されていない旨の応答が返された場合に前記ホストコンピュータと前記ディスクアレイ装置との間のデータパスの異常を判定することを特徴とする請求項１記載のディスクアレイ装置のパトロールによるデータパス異常検出方法。
【請求項４】
前記第１の冗長コードの生成に用いられた前記キャッシュメモリ上のデータの写しを、前記ホストコンピュータからの前記監視プログラムに従う専用のリード要求によってのみ読み出しが可能な当該キャッシュメモリ上の別の特定領域に保持しておき、
前記ディスクアレイ装置から通知された前記データ指定情報の指定するデータを前記キャッシュメモリから前記ホストコンピュータに読み出すステップでは、前記専用のリード要求を用いて前記特定領域のデータを読み出す
ことを特徴とする請求項１記載のディスクアレイ装置のパトロールによるデータパス異常検出方法。
【請求項５】
前記ホストコンピュータから転送されて前記キャッシュメモリに書き込まれたライトデータを前記ディスク記憶装置に書き込む際に、当該データの写しを当該ディスク記憶装置の別の特定領域に書き込むと共に前記キャッシュメモリ上の前記データを前記アプリケーションプログラムから見えない無効データとするステップと、
前記ディスク記憶装置の前記特定領域に書き込まれたデータを前記ディスクアレイコントローラに読み出して、前記キャッシュメモリ上の元のデータと比較することで、前記ディスクアレイコントローラと前記ディスク記憶装置との間のデータパスの異常の有無を判定するステップと
を更に具備することを特徴とする請求項１記載のディスクアレイ装置のパトロールによるデータパス異常検出方法。
【請求項６】
前記ホストコンピュータから転送されて前記キャッシュメモリに書き込まれたライトデータを前記ディスク記憶装置に書き込む際に、当該データの第３の冗長コードを前記データブロックを単位に生成して前記ディスクアレイコントローラ内に保持するステップと、
前記第３の冗長コードの生成に用いられた前記ディスク記憶装置内のデータを前記ディスクアレイコントローラに読み出して当該データの第４の冗長コードを前記データブロックを単位に生成するステップと、
前記第４の冗長コードを前記ディスクコントローラ内に保持されている前記第３の冗長コードと比較することで、前記ディスクアレイコントローラと前記ディスク記憶装置との間のデータパスの異常の有無を判定するステップと
を更に具備することを特徴とする請求項１記載のディスクアレイ装置のパトロールによるデータパス異常検出方法。
【請求項７】
各種アプリケーションプログラムが動作するホストコンピュータと、複数のディスク記憶装置を含むディスクアレイ、及び前記ディスクアレイを制御し、前記ホストコンピュータと前記ディスク記憶装置との間の転送データを一時記憶するためのキャッシュメモリを内蔵するディスクアレイコントローラから構成されたディスクアレイ装置とを備えたコンピュータシステムにおいて、
前記ディスクアレイコントローラは、
前記ホストコンピュータから前記ディスクアレイ装置に発行されたライト要求が予め設定されたタイミングに合致する場合、当該ライト要求に応じて前記ホストコンピュータから前記ディスクアレイ装置に転送されて前記キャッシュメモリに書き込まれたライトデータの第１の冗長コードを予め設定されたサイズのデータブロックを単位に生成する第１の冗長コード生成手段と、
前記ホストコンピュータからの当該ホストコンピュータと前記ディスクアレイ装置との間のデータパス監視のための問い合わせに応じて、その際に前記第１の冗長コード生成手段により生成されている前記第１の冗長コードと当該第１の冗長コードの生成に用いられたライトデータを指定するためのデータ指定情報とを前記ホストコンピュータに通知する手段と
を備え、
前記ホストコンピュータは、
前記ディスクアレイ装置に対して前記問い合わせを前記タイミングに対応した間隔で行う手段と、
前記問い合わせに応じて前記ディスクアレイ装置から通知される、前記第１の冗長コードと当該第１の冗長コードの生成に用いられたライトデータを指定するためのデータ指定情報とを受けて、当該データ指定情報の指定する前記キャッシュメモリ上のデータを要求するリード要求により当該データを前記ディスクアレイ装置から読み出す手段と、
前記リード要求に応じて前記ディスクアレイ装置から読み出されたデータの第２の冗長コードを前記データブロックを単位に生成する第２の冗長コード生成手段と、
前記第２の冗長コード生成手段により生成された前記第２の冗長コードと前記問い合わせに応じて前記ディスクアレイ装置から通知された前記第１の冗長コードとを比較し、少なくとも当該比較結果に基づいて前記ホストコンピュータと前記ディスクアレイ装置との間のデータパスの異常の有無を判定する手段と
を備えたことを特徴とするコンピュータシステム。
【請求項８】
前記ディスクアレイコントローラは、
前記ホストコンピュータから転送されて前記キャッシュメモリに書き込まれたライトデータを前記ディスク記憶装置に書き込む際に、当該データの写しを当該ディスク記憶装置の別の特定領域に書き込むと共に前記キャッシュメモリ上の前記データを前記アプリケーションプログラムから見えない無効データで且つチェック用データとするライトデータ保存手段と、
前記ライトデータ保存手段により前記ディスク記憶装置の前記特定領域に書き込まれたデータを前記ディスクアレイコントローラに読み出して、前記キャッシュメモリ上の元のデータと比較することで、前記ディスクアレイコントローラと前記ディスク記憶装置との間のデータパスの異常の有無を判定する手段と
を更に備えていることを特徴とする請求項７記載のコンピュータシステム。
【請求項９】
前記ディスクアレイコントローラは、
前記ホストコンピュータから転送されて前記キャッシュメモリに書き込まれたライトデータを前記ディスク記憶装置に書き込む際に、当該データの第３の冗長コードを前記データブロックを単位に生成する第３の冗長コード生成手段と、
前記第３の冗長コードの生成に用いられた前記ディスク記憶装置内のデータを読み出して当該データの第４の冗長コードを前記データブロックを単位に生成する第４の冗長コード生成手段と、
前記第４の冗長コード生成手段により生成された前記第４の冗長コードを前記第３の冗長コード生成手段により生成された前記第３の冗長コードと比較することで、前記ディスクアレイコントローラと前記ディスク記憶装置との間のデータパスの異常の有無を判定する手段と
を更に備えていることを特徴とする請求項７記載のコンピュータシステム。
【請求項１０】
複数のディスク記憶装置を含むディスクアレイを制御し、各種アプリケーションプログラムが動作するホストコンピュータと前記ディスク記憶装置との間の転送データを一時記憶するためのキャッシュメモリを内蔵するディスクアレイコントローラにおいて、
前記ホストコンピュータから転送されて前記キャッシュメモリに書き込まれたライトデータを前記ディスク記憶装置に書き込む際に、当該データの写しを当該ディスク記憶装置の別の特定領域に書き込むと共に前記キャッシュメモリ上の前記データを前記アプリケーションプログラムから見えない無効データで且つチェック用データとするライトデータ保存手段と、
前記ライトデータ保存手段により前記ディスク記憶装置の前記特定領域に書き込まれたデータを前記ディスクアレイコントローラに読み出して、前記キャッシュメモリ上の元のデータと比較することで、前記ディスクアレイコントローラと前記ディスク記憶装置との間のデータパスの異常の有無を判定する手段と
を具備することを特徴とするディスクアレイコントローラ。
【請求項１１】
複数のディスク記憶装置を含むディスクアレイを制御し、各種アプリケーションプログラムが動作するホストコンピュータと前記ディスク記憶装置との間の転送データを一時記憶するためのキャッシュメモリを内蔵するディスクアレイコントローラにおいて、
前記ホストコンピュータから転送されて前記キャッシュメモリに書き込まれたライトデータを前記ディスク記憶装置に書き込む際に、当該データの第１の冗長コードを予め定められたサイズのデータブロックを単位に生成する第１の冗長コード生成手段と、
前記第１の冗長コードの生成に用いられた前記ディスク記憶装置内のデータを読み出して当該データの第２の冗長コードを前記データブロックを単位に生成する第２の冗長コード生成手段と、
前記第２の冗長コード生成手段により生成された前記第２の冗長コードを前記第１の冗長コード生成手段により生成された前記第１の冗長コードと比較することで、前記ディスクアレイコントローラと前記ディスク記憶装置との間のデータパスの異常の有無を判定する手段と
を具備することを特徴とするディスクアレイコントローラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ホストコンピュータとディスクアレイ装置との間のデータパスなどの異常を検出するのに好適なディスクアレイ装置のパトロールによるデータパス異常検出方法及びディスクアレイ装置を備えたコンピュータシステムに関する。
【０００２】
【従来の技術】
複数のディスク記憶装置を有し、ホストコンピュータとの間でデータを授受するディスクアレイ装置では、ホストコンピュータとのインターフェース（ホストインターフェース）に、ＳＣＳＩ（Small Computer System Interface）等の標準化されたインターフェースが使用されるのが一般的である。このようなホストコンピュータとディスクアレイ装置とが接続されたコンピュータシステムでは、データ保護の機構として、ホストインターフェースがＳＣＳＩインターフェースの例では、パリティチェック回路を使用している。
【０００３】
【発明が解決しようとする課題】
上記したように従来は、ホストコンピュータとの間でデータを授受するディスクアレイ装置を備えたコンピュータシステムでは、データ保護の機構として、ホストインターフェースがＳＣＳＩインターフェースの例では、パリティチェック回路を使用するのが一般的であった。
【０００４】
しかしながら、パリティによる保護は、１データ単位（例えば１バイト単位）の確認であることから、データブロック（例えばセクタサイズのデータブロック）として考えた場合のデータずれ、データ抜けなどに対する検出には効果がないという問題があった。
【０００５】
そこで、データブロック単位で、ＣＲＣ（Cyclic Redundancy Check）等の冗長コード（データチェックコード）を付加する方法も考えられる。しかし、この方式では、標準化されたインターフェースの中で、特別な動作を要求することになり、動作に制限が加えられることになる。
【０００６】
本発明は上記事情を考慮してなされたものでその目的は、ホストコンピュータから転送されるライトデータ自身に、データ保護のための冗長コードがついていない場合でも、ホストコンピュータとディスクアレイ装置内のディスク記憶装置との間におけるターゲットとなるデータパスの異常によりデータ誤りを起こした場合の検出率を向上させることができるディスクアレイ装置のパトロールによるデータパス異常検出方法及びディスクアレイ装置を備えたコンピュータシステムを提供することにある。
【０００７】
【課題を解決するための手段】
本発明は、監視プログラムが動作するホストコンピュータと、複数のディスク記憶装置を含むディスクアレイ、及びキャッシュメモリを内蔵するディスクアレイコントローラから構成されたディスクアレイ装置とを備えたコンピュータシステムにおいて、上記ホストコンピュータからディスクアレイ装置に発行されたライト要求が予め設定されたタイミングに合致する場合に、当該ライト要求に応じてホストコンピュータからディスクアレイ装置に転送されてキャッシュメモリに書き込まれたライトデータの第１の冗長コードを予め設定されたサイズのデータブロックを単位に生成しておき、次にホストコンピュータからディスクアレイ装置に対し、ホストコンピュータとディスクアレイ装置との間のデータパス監視のための問い合わせが上記監視プログラムに従って上記タイミングに対応してなされた場合に、その際に生成されている第１の冗長コード及び対応するデータを指定するためのデータ指定情報をディスクアレイ装置からホストコンピュータに通知し、この通知を受けたホストコンピュータでは、通知されたデータ指定情報の指定するデータを上記キャッシュメモリからホストコンピュータに読み出して、そのデータの第２の冗長コードを上記監視プログラムに従って上記データブロックを単位に生成し、生成した第２の冗長コードを上記通知された第１の冗長コードと比較することで、少なくとも当該比較結果に基づいてホストコンピュータとディスクアレイ装置との間のデータパスの異常の有無を判定することを特徴とする。
【０００８】
このような構成において、ホストコンピュータから例えばアプリケーションプログラムに従って発行されるライト要求が予め設定されたタイミングに合致する場合にだけ、そのライト要求に応じてホストコンピュータからディスクアレイ装置に転送されてディスクアレイコントローラ内のキャッシュメモリに一時記憶されたデータの第１の冗長コードが生成される。また、ホストコンピュータからディスクアレイ装置には上記のタイミングに対応してデータパス監視のための問い合わせが送られ、この問い合わせに対して上記第１の冗長コードとデータ指定情報とがホストコンピュータに通知される。これによりホストコンピュータは、通知されたデータ指定情報の指定するデータ、即ち上記第１の冗長コードの生成に用いられた上記キャッシュメモリ上のデータを読み出して、そのデータの第２の冗長コードを生成し、上記第１の冗長コードと比較することで、ホストコンピュータとディスクアレイ装置との間のデータパス（更に詳細に述べるならば、ホストコンピュータとディスクアレイコントローラ内のキャッシュメモリとの間のデータパスの異常、つまり当該パス上のいずれかの回路の異常）を判定する。
【０００９】
このように本発明においては、ディスクアレイ装置側でのライトデータに対する第１の冗長コード生成は、監視プログラムからの設定に従ってアプリケーションプログラムから独立に行われ、またホストコンピュータ側でのディスクアレイ装置に対する問い合わせと当該問い合わせに対する応答から取得したデータ指定情報の指定するデータの読み出しと第２の冗長コードの生成、及び第１及び第２の冗長コードの比較は、監視プログラムに従って、アプリケーションプログラムとの間で通信を行うことなく当該アプリケーションプログラムから独立に行われる。
【００１０】
なお、一般には、ホストコンピュータ上で動作する監視プログラムにより当該ホストコンピュータとディスクアレイ装置との間のデータパスをチェックするには、ホストコンピュータからディスクアレイ装置に対してライト・リードコンペアテストを行うことが最も確実で簡便である。しかし、データを確実に保護するためには、アプリケーションプログラムとデータの情報を授受する処理が必要となる。これに対して本発明では、アプリケーションプログラムの動作と関係せずに、データパスの確認を行うことができる。
【００１１】
ここで、アプリケーションプログラムの動作と関係せずに、データパスの確認を行うには、上記タイミングとして、監視プログラムに従って予め設定される時間間隔またはライト要求回数の間隔を適用するとよい。
【００１２】
また、アプリケーションプログラムの動作と関係せずにデータパスが確認できるようにしていることから、第１の冗長コードの生成に用いられたデータが第２の冗長コードの生成に用いられる前に更新される可能性がある。この場合、第２の冗長コードは更新後のデータをもとに生成されることになるから、上記データパスの異常の有無に無関係に、第１及び第２の冗長コードは一致しなくなる。そこで、第１及び第２の冗長コードが不一致の場合、ホストコンピュータからディスクアレイ装置に対してキャッシュメモリ上の元のデータが更新されているか否かを問い合わせ、更新されていない旨の応答が返された場合に限り、上記データパスの異常を判定するとよい。
【００１３】
また本発明は、第１の冗長コードの生成に用いられたキャッシュメモリ上のデータの写しを、ホストコンピュータからの監視プログラムに従う専用のリード要求によってのみ読み出しが可能な当該キャッシュメモリ上の別の特定領域に保持しておき、第１の冗長コードの生成に用いられたキャッシュメモリ上の元のデータではなくて、そのデータの写し、即ち上記特定領域のデータを上記専用のリード要求を用いて読み出して、その読み出したデータから第２の冗長コードを生成するようにしたことをも特徴とする。
【００１４】
このような構成においては、第２の冗長コードの生成に用いられるデータ、即ち上記特定領域のデータがアプリケーションプログラム等に従うライト要求により更新されるのを防止できる。
【００１５】
また本発明は、ホストコンピュータから転送されてキャッシュメモリに書き込まれたライトデータをディスク記憶装置に書き込む際に、当該データの写しを当該ディスク記憶装置の別の特定領域に書き込むと共にキャッシュメモリ上の上記データをアプリケーションプログラムから見えない無効データで且つチェック用データとし、上記ディスク記憶装置の特定領域に書き込まれたデータをディスクアレイコントローラに読み出して、キャッシュメモリ上の元のデータと比較することで、ディスクアレイコントローラと前記ディスク記憶装置との間のデータパスの異常の有無を判定することをも特徴とする。ここでも、全ライトデータでなく、キャッシュメモリからディスク記憶装置へのライトデータの書き込みが予め設定された間隔（時間間隔または書き込み回数の間隔）に合致した際のライトデータについて、処理するとよい。
【００１６】
このような構成においては、ディスク記憶装置に書き込まれたキャッシュメモリ上のデータをアプリケーションプログラムから見えない無効データで且つチェック用データとして、更新から保護すると共に、ディスク記憶装置に書き込まれたデータの写しを当該ディスク記憶装置の別の特定領域に保存して、当該データの写しを更新から保護するようにしたので、つまりデータを破壊する要因をなくすようにしたので、この特定領域のデータを読み出してキャッシュメモリ上の元のデータ（チェック用データ）と比較することで、ディスクアレイコントローラとディスク記憶装置との間のデータパスの異常の有無を正しく判定することが可能となる。
【００１７】
この他に、ホストコンピュータから転送されてキャッシュメモリに書き込まれたライトデータをディスク記憶装置に書き込む際に、当該データの第３の冗長コードを生成してディスクアレイコントローラ内に保持しておく一方、この第３の冗長コードの生成に用いられたディスク記憶装置内のデータをディスクアレイコントローラに読み出して当該データの第４の冗長コードを生成し、この第４の冗長コードを先に生成されている第３の冗長コードと比較することでも、ディスクアレイコントローラとディスク記憶装置との間のデータパスの異常の有無を判定することが可能である。
【００１８】
以上のディスクアレイ装置のパトロールによるデータパス異常検出方法に係る本発明は、ホストコンピュータとディスクアレイ装置とから構成されるコンピュータシステムに係る発明、或いはディスクアレイコントローラに係る発明としても成立する。
【００１９】
【発明の実施の形態】
以下、本発明の実施の形態につき図面を参照して説明する。
【００２０】
図１は本発明の一実施形態に係るコンピュータシステムの構成を示すブロック図である。
図１のコンピュータシステムは、ディスクアレイ装置１０と当該ディスクアレイ装置１０を利用するホストコンピュータ２０とから構成される。
【００２１】
ディスクアレイ装置１０は、複数のディスク記憶装置、例えばハードディスク装置（以下、ＨＤＤと称する）１１０を備えたディスクアレイ１１と当該ディスクアレイ１１を制御するコントローラ（ディスクアレイコントローラ）１２とから構成される。
【００２２】
ディスクアレイコントローラ１２は、主制御部１２０と、ホストインターフェース１２１と、各ＨＤＤ１１０毎に設けられたディスクインターフェース１２２と、キャッシュメモリ装置１２３とを備えている。この主制御部１２０、ホストインターフェース１２１、ディスクインターフェース１２２及びキャッシュメモリ装置１２３は、データ転送用バス１２４により相互接続されている。データ転送用バス１２４は、例えば標準バスとして知られているＰＣＩバス（Peripheral
Component Interconnect Bus）である。
【００２３】
主制御部１２０は、マイクロプロセッサ１２５と、当該マイクロプロセッサ１２５が実行する制御プログラム（ファームウェア）を記憶したＲＯＭ（Read Only Memory）１２６と、当該プログラムの実行時に使用されるＲＡＭ（Random Access Memory）１２７とを有するマイクロプロセッサ部である。マイクロプロセッサ１２５は、各インターフェース１２１，１２２とキャッシュメモリ装置１２３との間のデータ転送の制御を行う。
【００２４】
ホストインターフェース１２１は、ホストコンピュータ２０と接続されており、当該ホストコンピュータ２０とのインターフェースをなす。ホストインターフェース１２１は、ホストコンピュータ２０との間のデータ転送の制御と、ホストコンピュータ２０からのデータをデータ転送用バス１２４を介してキャッシュメモリ装置１２３または（マイクロプロセッサ１２５が使用する）ＲＡＭ１２７に転送する制御と、キャッシュメモリ装置１２３またはＲＡＭ１２７のデータをホストコンピュータ２０に転送する制御とを行う。
【００２５】
ディスクインターフェース１２２は、ＨＤＤ１１０と接続されており、データ転送用バス１２４とＨＤＤ１１０との間のデータ転送を行うための手順等の制御を司る。具体的には、ディスクインターフェース１２２は、ＨＤＤ１１０からのデータをキャッシュメモリ装置１２３またはＲＡＭ１２７に転送する制御と、キャッシュメモリ装置１２３またはＲＡＭ１２７のデータをＨＤＤ１１０に転送する制御とを行う。
【００２６】
キャッシュメモリ装置１２３は、ＨＤＤ１１０とホストコンピュータ２０との間の転送データを一時記憶するためのキャッシュメモリ１２８と、当該キャッシュメモリ１２８を制御するキャッシュ制御ＬＳＩ１２９とを有する。キャッシュメモリ１２８には特定領域１２８ａが確保されている。この領域１２８ａは、ＨＤＤ１１０とホストコンピュータ２０との間の転送データを記憶するためのキャッシュ領域とは別に管理される。領域１２８ａは、後述するデータアドレス、サイズ及びＣＲＣコード列を一時保持するのに用いられる。
【００２７】
ホストコンピュータ２０上では、ユーザが目的とする処理を行うために使用される各種アプリケーションプログラム２１と、サポートプログラム２２とが並行して動作する。このサポートプログラム２２は、ホストコンピュータ２０をディスクアレイ装置１０の監視及び当該ディスクアレイ装置１０に対する各種の設定を行う監視手段として機能させるための監視ソフトウェアである。
【００２８】
次に、図１の構成の動作について、ホストコンピュータ２０からのディスクアレイ装置１０を対象とするパトロールにより、当該ホストコンピュータ２０とディスクアレイ装置１０との間のデータパスの異常を検出する処理（第１のデータパス異常検出処理）と、ディスクアレイ装置１０内のディスクアレイコントローラ１２とＨＤＤ１１０との間のデータパスの異常を検出する処理（第２のデータパス異常検出処理）を例に説明する。
【００２９】
まず、データパス異常検出処理の理解を容易にするために、ホストコンピュータ２０からディスクアレイ装置１０にデータのライト／リードを要求した際の従来から知られているデータの流れについて、図２を参照して説明する。
【００３０】
＜ライトデータの流れ＞
ホストコンピュータ２０からのライト要求（ライトコマンド）、例えばアプリケーションプログラム２１に従うライト要求は、図２中のパスＡ１を介して、即ちディスクアレイ装置１０内のディスクアレイコントローラ１２のホストインターフェース１２１、及びデータ転送用バス１２４を介して主制御部１２０内のＲＡＭ１２７に転送される。
【００３１】
また、ホストコンピュータ２０からのデータ（ライトデータ）は、図２中のパスＡ２を介して、即ちディスクアレイコントローラ１２のホストインターフェース１２１、及びデータ転送用バス１２４を介してキャッシュメモリ装置１２３に転送され、当該キャッシュメモリ装置１２３内のキャッシュ制御ＬＳＩ１２９の制御によりキャッシュメモリ１２８に一時記憶される。
【００３２】
さて、図１中のディスクアレイ装置１０では、ホストコンピュータ２０からのライト要求に対し、ライデータをキャッシュメモリ１２８に書き込んだ段階で、ライト要求の実行完了をホストコンピュータ２０に返す、いわゆるライトバックキャッシュ方式を適用している。
【００３３】
そこでディスクアレイコントローラ１２内のマイクロプロセッサ１２５は、ライト要求の実行完了がホストコンピュータ２０に返された後、当該ライト要求を解釈して、ライトデータの分割先ＨＤＤ１１０を決定する。そしてマイクロプロセッサ１２５は、ディスクアレイコントローラ１２内の対応するディスクインターフェース１２２にライト指示を送ることで、キャッシュメモリ１２８上の該当するライトデータを、図２のパス中のパスＡ３を介して、即ちデータ転送用バス１２４、ディスクインターフェース１２２を介してＨＤＤ１１０に転送させる。
【００３４】
＜リードデータの流れ＞
ホストコンピュータ２０からのリード要求（リードコマンド）は、図２中のパスＡ１を介してディスクアレイコントローラ１２内のＲＡＭ１２７に転送される。
【００３５】
ディスクアレイコントローラ１２内のマイクロプロセッサ１２５は、ホストコンピュータ２０からのリード要求を解釈し、当該要求で指定されたデータがキャッシュメモリ１２８上に存在するか否かをキャッシュ制御ＬＳＩ１２９により判定させる。
【００３６】
もし、リード要求で指定されたデータがキャッシュメモリ１２８上に存在しないならば、例えば複数のＨＤＤ１１０に分割して格納されているデータを当該ＨＤＤ１１０から読み出すように対応するディスクインターフェース１２２に指示する。
【００３７】
これによりディスクインターフェース１２２は、マイクロプロセッサ１２５から指示されたデータ、即ちホストコンピュータ２０から要求されたデータを、図２中のパスＡ３を介してＨＤＤ１１０からキャッシュメモリ１２８に転送する。このとき、後続する連続データの読み出しが続けて要求されると予測される場合には、当該後続する連続データもキャッシュメモリ１２８に転送されるのが一般的である。但し、この予測の方法は本発明に直接関係しないため説明を省略する。ＨＤＤ１１０からキャッシュメモリ１２８に転送されたデータは、図２中のパスＡ２を介してホストコンピュータ２０に転送される。
【００３８】
＜第１のデータパス異常検出処理＞
次に、本発明に関係する第１のデータパス異常検出処理について、図３を参照して説明する。
【００３９】
まずディスクアレイ装置１０では、ホストコンピュータ２０からアプリケーションプログラム２１に従うライト要求が与えられると、要求されたライトデータをキャッシュメモリ１２８に書き込むデータライトが行われる（ステップＢ１）。
【００４０】
マイクロプロセッサ１２５は、キャッシュメモリ１２８に書き込まれたライトデータを読み込んで、ホストコンピュータ２０上で動作しているサポートプログラム２２からの指定により予め定められたデータブロック（例えばＨＤＤ１１０の記録単位であるセクタのサイズに一致するデータブロック）を単位に冗長コード、例えばＣＲＣ（Cyclic Redundancy Check）コードを生成し、その冗長コードの列を対応するデータのアドレス（ここでは先頭のディスクアドレス）及びサイズと共にキャッシュメモリ１２８上の領域１２８ａに保持する（ステップＢ２）。
【００４１】
本実施形態において、上記のＣＲＣコード生成は、ホストコンピュータ２０からライト要求が送られる都度行われる訳ではなく、例えば図４（ａ）に示すように、一定時間間隔Ｔで、その際のライト要求に応じてライトされたデータに対してのみ行われる。但し、一定時間間隔Ｔのタイミングでライト要求が実行されなかった場合には、その後の最初のライト要求に応じてライトされたデータに対してＣＲＣコードが生成される。時間間隔Ｔは、サポートプログラム２２からの指定により予め設定される。なお、図４（ｂ）に示すように、一定回数（個数）のライト要求毎に（ここでは、２個のライト要求毎に）、つまり一定回数（個数）のライト要求の間隔で、その際のライト要求に応じてライトされたデータに対してＣＲＣコード生成を行うようにしても構わない。
【００４２】
ホストコンピュータ２０は、サポートプログラム２２に従い、上記一定時間間隔（または、一定回数のライト要求の間隔）で、ディスクアレイ装置１０に対してデータパス監視のための問い合わせを行う（ステップＢ３）
これを受けてディスクアレイ装置１０内のマイクロプロセッサ１２５は、その際にキャッシュメモリ１２８上の領域１２８ａに保持されているデータアドレス、サイズ及び冗長コード列とをホストコンピュータ２０に通知する（ステップＢ４）。
【００４３】
ホストコンピュータ２０はディスクアレイ装置１０からデータアドレス、サイズ及び冗長コード列がサポートプログラム２２に通知されると、当該サポートプログラム２２に従い、通知されたデータアドレス及びサイズで指定されるデータを読み出すためのリード要求をディスクアレイ装置１０に送出する（ステップＢ５）。
【００４４】
これを受けてディスクアレイ装置１０内のマイクロプロセッサ１２５は、キャッシュ制御ＬＳＩ１２９により該当するデータをキャッシュメモリ１２８から読み出させて、データ転送用バス１２４及びホストインターフェース１２１を介してホストコンピュータ２０に転送させる（ステップＢ６）。
【００４５】
ホストコンピュータ２０は、サポートプログラム２２に従うリード要求に対してディスクアレイ装置１０から該当するデータが返された場合、サポートプログラム２２に従って、当該データを対象にデータブロック単位でＣＲＣコードを生成し、先にディスクアレイ装置１０から通知されたＣＲＣコードと比較する（ステップＢ７，Ｂ８）。
【００４６】
ホストコンピュータ２０は、上記ＣＲＣコード比較の結果、上記両コードが一致しているならば（ステップＢ９）、ホストコンピュータ２０とディスクアレイ装置１０との間のデータパス（図２中のパスＡ１に相当）上の回路は正常であると判定し、そのまま次の異常検出のタイミングを待つ。
【００４７】
これに対し、上記ＣＲＣコード比較の結果、上記両コードが一致していないならば（ステップＢ９）、その不一致が、該当するデータが上書き（更新）されたことに起因するのか、或いはディスクアレイ装置１０との間のデータパス上の回路が異常であることに起因するのかを判別するために、ホストコンピュータ２０はサポートプログラム２２に従って、ディスクアレイ装置１０に対して当該データが更新されたか否かを問い合わせる（ステップＢ１０）。
【００４８】
この問い合わせに対し、ディスクアレイ装置１０内のマイクロプロセッサ１２５は、キャッシュメモリ１２８上の該当するデータが、アプリケーションプログラム２１に従うホストコンピュータ２０からの新たなライト要求により更新（上書き）されているか否かを通知する応答をサポートプログラム２２に返す（ステップＢ１１）。
【００４９】
ホストコンピュータ２０は、この応答により、サポートプログラム２２に従うリード要求に対し、該当するデータが更新（上書き）されていないことが通知された場合（ステップＢ１２）、上記ＣＲＣコードの不一致の要因が、ホストコンピュータ２０とディスクアレイ装置１０との間のデータパスの異常、更に詳細に述べるならば当該データパス上のいずれかの回路の異常にあると判別する。この場合、ホストコンピュータ２０はディスクアレイ装置１０との間のデータパスの異常を、サポートプログラム２２に従ってディスクアレイ装置１０及びアプリケーションプログラム２１に通知し、しかる後にディスクアレイ装置１０を切り離すよう動作する（ステップＢ１３，Ｂ１４）。
【００５０】
一方、ディスクアレイ装置１０から該当するデータが更新（上書き）されていることが通知された場合には（ステップＢ１２）、ホストコンピュータ２０は上記ＣＲＣコードの不一致の要因がディスクアレイ装置１０との間のデータパスの異常にあるか否か判別不可能であるとして、そのまま、次の異常検出（パトロール）のタイミングを待つ。
【００５１】
なお、以上の説明では、ホストコンピュータ２０からのデータ更新の有無（データ更新確認）の問い合わせに対して、ディスクアレイ装置１０から応答を返すものとしたが、これに限るものではない。例えば、ステップＢ２でのＣＲＣコードの生成に用いられたデータが、ホストコンピュータ２０からサポートプログラム２２に従う当該データを対象とするリード要求を受け取るまでの間に更新された場合に、その旨を、その更新された時点で返すか、或いは当該リード要求が与えられた時点で、要求されたデータに代えて返すようにしてもよい。
【００５２】
また、ＣＲＣコードの生成に用いられたデータがアプリケーションプログラム２１により上書きされるのを防ぐために、当該データの写しをチェック（監視）用データとしてキャッシュメモリ１２８上の例えば上記領域１２８ａに、データアドレス、サイズ及びＣＲＣコード列と共に保持し、元のデータとは別管理とするようにしてもよい。但し、このようにすると、ホストコンピュータ２０からは、通常のリード要求では該当するデータ（チェック用データ）を読み出すことができない。そこで上記ステップＢ５では、専用のリード要求（リードコマンド）によって通常のリード要求と区別することにより、チェック用データを読み出すことを可能とするとよい。
【００５３】
＜第２のデータパス異常検出処理＞
次に、本発明に関係する第２のデータパス異常検出処理について、図５を参照して説明する。
【００５４】
本実施形態における第２のデータパス異常検出処理の特徴は、キャッシュメモリ１２８からＨＤＤ１１０へのデータ書き込みのうち、予め設定された間隔（ここでは時間間隔）に合致した書き込みの際に、ディスクアレイ装置１０内のマイクロプロセッサ１２５からＨＤＤ１１０に確保されたマイクロプロセッサ１２５の管理領域を対象として該当するデータの写しのライト・リードを実施することで、ディスクアレイ１１とＨＤＤ１１０との間のデータパスにおいて、データ化けのエラーが発生していないことを確認する点にある。この第２のデータパス異常検出処理の詳細は次の通りである。
【００５５】
まず、マイクロプロセッサ１２５は、キャッシュメモリ１２８上のデータをＨＤＤ１１０に書き込む（ライトバックする）（ステップＣ１）。この書き込みが上記間隔に合致している場合、マイクロプロセッサ１２５は、ＨＤＤ１１０に書き込んだデータの写しを当該ＨＤＤ１１０の別の特定領域に書き込む（ステップＣ２）。この特定領域は、ユーザに開放されない（使用させない）マイクロプロセッサ１２５の管理領域である。したがって、この管理領域上のデータが、ユーザのデータで上書きされることはない。また、マイクロプロセッサ１２５は、キャッシュメモリ１２８上の元のデータをアプリケーションプログラム２１（ユーザ）からは見えない無効データとすると共に、当該データをＨＤＤチェック用データとして保持する。
【００５６】
次にマイクロプロセッサ１２５は、ＨＤＤ１１０の特定領域から、当該特定領域に格納されているデータをＲＡＭ１２７上に確保されている作業領域（図示せず）に読み込み、キャッシュメモリ１２８上の該当する元のデータであるＨＤＤチェック用データと比較することで、その一致の有無により、キャッシュメモリ１２８とＨＤＤ１１０との間のデータパス（図２中のパスＡ３に相当）、つまりディスクアレイコントローラ１２とＨＤＤ１１０との間のデータパスが正常であるか異常であるかを判定する（ステップＣ３）。
【００５７】
ステップＣ３で異常が判定された場合、マイクロプロセッサ１２５はその旨を通知するためのステータスを、ホストコンピュータ２０からサポートプログラム２２に従って読み込み可能なように、ディスクインターフェース１２２に設定する。また、ホストコンピュータ２０からの要求に対してディスクアレイコントローラ１２が応答しない構成とすることも可能である。
【００５８】
なお、ＨＤＤ１１０の特定領域から読み出したデータをＲＡＭ１２７上の作業領域ではなくて、キャッシュメモリ１２８上の元のデータとは別領域に読み込み、この別領域上のデータとキャッシュメモリ１２８上の元のデータ（ＨＤＤチェック用データ）とをマイクロプロセッサ１２５が比較するようにしてもよい。
【００５９】
また、上記別領域上のデータとキャッシュメモリ１２８上のＨＤＤチェック用データとを、キャッシュ制御ＬＳＩ１２９により比較するようにしてもよい。このためには、マイクロプロセッサ１２５からキャッシュ制御ＬＳＩ１２９に対して、上記別領域上のデータが記憶されているキャッシュメモリ１２８上の先頭アドレスとサイズを指定すると共に、上記ＨＤＤチェック用データが記憶されているキャッシュメモリ１２８上の先頭アドレスとサイズを指定して、当該キャッシュ制御ＬＳＩ１２９を起動する構成とすればよい。このようにすると、キャッシュ制御ＬＳＩ１２９自身が、先頭アドレスとサイズで指定されたキャッシュメモリ１２８上の領域のデータを比較することが可能となる。このように、マイクロプロセッサ１２５（のプログラム処理）による比較処理に代えて、キャッシュ制御ＬＳＩ１２９（ハードウェア）による比較処理を行うことにより、処理の高速化を図ることが可能となる。
【００６０】
また、キャッシュメモリ１２８上のデータをＨＤＤ１１０に書き込んだ際に当該データのＣＲＣコードを生成すると共に、当該データをＨＤＤ１１０から読み込んだ際にもＣＲＣコードを生成して、両ＣＲＣコードを比較するようにしても、キャッシュメモリ１２８とＨＤＤ１１０との間のデータパスの異常検出が可能となる。このＣＲＣコード比較によるデータパス異常検出処理（第２のデータパス異常検出処理）の手順の詳細を図６のフローチャートを参照して説明する。
【００６１】
まずマイクロプロセッサ１２５は、キャッシュメモリ１２８上のデータをＨＤＤ１１０に書き込む（ライトバックする）際、この書き込みが上記間隔に合致している場合には、当該データのＣＲＣコードＣＲＣ１をサポートプログラム２２に従って設定されたサイズのデータブロック（ここではセクタサイズに一致するデータブロック）を単位に生成して、これをＲＡＭ１２７上の作業領域（またはキャッシュメモリ１２８上の特定領域１２８ａ）に保持する（ステップＤ１）。
【００６２】
次にマイクロプロセッサ１２５は、ステップＤ１でＨＤＤ１１０に書き込んだデータを読み込んで、当該データのＣＲＣコードＣＲＣ２を上記データブロック単位に生成する（ステップＤ２）。そしてマイクロプロセッサ１２５は、生成したＣＲＣコードＣＲＣ２を、先のＨＤＤ１１０への書き込み時に生成したＣＲＣコードＣＲＣ１と比較することで、キャッシュメモリ１２８とＨＤＤ１１０との間のデータパスが正常であるか異常であるかを判定する（ステップＤ３）。
【００６３】
なお、以上に述べた実施形態においては、ディスクアレイコントローラ１２におけるＣＲＣコードの生成がマイクロプロセッサ１２５により行われるものとして説明したが、これに限るものではない。例えばキャッシュ制御ＬＳＩ１２９に以下に述べるＣＲＣコード生成機能（１）または（２）を持たせ、当該キャッシュ制御ＬＳＩ１２９によりＣＲＣコードが生成されるようにしてもよい。
【００６４】
＜ＣＲＣコード生成機能（１）＞
ＣＲＣコード生成機能（１）は、ホストコンピュータ２０のサポートプログラム２２から指定された例えば時間間隔でデータをキャッシュメモリ１２８から読み出す際、即ちキャッシュメモリ１２８からホストコンピュータ２０へのリードデータの転送時、或いはキャッシュメモリ１２８からＨＤＤ１１０へのライトデータの転送時で、且つ上記時間間隔に合致するタイミングの転送時に、ホストコンピュータ２０のサポートプログラム２２から予め設定されたデータサイズ分のＣＲＣコードを演算し、予め指定したメモリまたはキャッシュ制御ＬＳＩ１２９のレジスタ内に、演算結果を格納しておく機能である。
【００６５】
このＣＲＣコード生成機能（１）は、例えば図６中のステップＤ１でのＣＲＣコード生成、即ちキャッシュメモリ１２８上のデータを読み出してＨＤＤ１１０に書き込む際の当該データのＣＲＣコードの生成に利用できる。
【００６６】
＜ＣＲＣコード生成機能（２）＞
ＣＲＣコード生成機能（２）は、ホストコンピュータ２０のサポートプログラム２２から指定された例えば時間間隔でデータをキャッシュメモリ１２８に書き込む際、即ちホストコンピュータ２０からキャッシュメモリ１２８へのライトデータの転送時、或いはＨＤＤ１１０からＨＤＤ１１０へのリードデータの転送時で、且つ上記時間間隔に合致するタイミングの転送時に、ホストコンピュータ２０のサポートプログラム２２から予め設定されたデータサイズ分のＣＲＣコードを演算し、予め指定したメモリまたはキャッシュ制御ＬＳＩ１２９のレジスタ内に、演算結果を格納しておく機能である。
【００６７】
このＣＲＣコード生成機能（２）を利用して、ホストコンピュータ２０からディスクアレイ装置１０に転送されたデータをキャッシュメモリ１２８に書き込む際に、当該データのＣＲＣコードを生成するならば、当該ＣＲＣコードを前記第１のデータパス異常検出処理におけるステップＢ４でホストコンピュータ２０（上のサポートプログラム２２）に通知することができる。
【００６８】
なお、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果（の少なくとも１つ）が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【００６９】
【発明の効果】
以上詳述したように本発明によれば、ディスクアレイ装置側でのライトデータに対する第１の冗長コード生成が、監視プログラムからの設定に従ってアプリケーションプログラムから独立に行われ、またホストコンピュータ側でのディスクアレイ装置に対する問い合わせと当該問い合わせに対する応答から取得したデータ指定情報の指定するデータの読み出しと第２の冗長コードの生成、及び第１及び第２の冗長コードの比較が、監視プログラムに従って、アプリケーションプログラムとの間で通信を行うことなくアプリケーションプログラムから独立に行われる。したがって本発明によれば、ホストコンピュータから転送されるライトデータ自身に、データ保護のための冗長コードがついていない場合でも、ホストコンピュータとディスクアレイコントローラとの間のデータパスの異常によりデータ誤りを起こした場合の検出率を向上させることができ、しかもアプリケーションプログラムとデータの情報を授受する必要がない。
【００７０】
また本発明によれば、ディスクアレイコントローラにおいて、ホストコンピュータから転送されてキャッシュメモリに書き込まれたライトデータをディスク記憶装置に書き込む際に、そのライトデータを利用することで、ディスクアレイコントローラとディスク記憶装置との間のデータパスの異常を監視し、当該データパスの異常によりデータ誤りを起こした場合の検出率を向上させることができる。
【００７１】
このように本発明によれば、ホストコンピュータとディスクアレイ装置内のディスク記憶装置との間におけるターゲットとなるデータパスの異常によりデータ誤りを起こした場合の検出率を向上させることができる
【図面の簡単な説明】
【図１】本発明の一実施形態に係るコンピュータシステムの構成を示すブロック図。
【図２】ホストコンピュータ２０からディスクアレイ装置１０にデータのライト／リードを要求した際のデータの流れを説明するための図。
【図３】同実施形態における第１のデータパス異常検出処理を説明するためのフローチャート。
【図４】上記第１のデータパス異常検出処理におけるＣＲＣコード生成条件例を説明するための図。
【図５】同実施形態における第２のデータパス異常検出処理を説明するためのフローチャート。
【図６】上記第２のデータパス異常検出処理の変形例を説明するためのフローチャート。
【符号の説明】
１０…ディスクアレイ装置
１２…ディスクアレイコントローラ
２０…ホストコンピュータ
２１…アプリケーションプログラム
２２…サポートプログラム（監視プログラム）
１１０…ＨＤＤ（ディスク記憶装置）
１２０…主制御部
１２１…ホストインターフェース
１２２…ディスクインターフェース
１２３…キャッシュメモリ装置
１２４…データ転送用バス
１２５…マイクロプロセッサ
１２６…ＲＯＭ
１２７…ＲＡＭ
１２８…キャッシュメモリ
１２８ａ…特定領域
１２９…キャッシュ制御ＬＳＩ
【図１】
0003964629.tif 000002
【図２】
0003964629.tif 000003
【図３】
0003964629.tif 000004
【図４】
0003964629.tif 000005
【図５】
0003964629.tif 000006
【図６】
0003964629.tif 000007