(57)【要約】【課題】複数のディスク記憶デバイスを制御するコントローラを有するストレージシステムに関し、ディスク記憶デバイスのディスクへのライト抜けを診断る。【解決手段】複数のディスク記憶デバイス（１−１〜１−４）を制御するコントローラ（４０）が、ライトデータにＩＤを付して、該当ディスクドライブ（１−１）へのライトアクセス後、ディスクドライブ（１−１）から該当ライトデータをリードし、そのリードデータのＩＤと、付したＩＤを比較する。又、コントローラ（４０）は、ＩＤを、ライトコマンド毎に、更新する。このため、古いライトデータと新しいライトデータを識別でき、正確に診断でき、即座に個々のディスクドライブの障害を検出できる。【選択図】図１
2007122476.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する複数のディスク記憶デバイスと、
前記複数のディスク記憶デバイスに伝送経路を介し接続され、上位からのアクセス指示に応じて、前記ディスク記憶デバイスをアクセス制御するストレージコントローラとを有し、
前記ストレージコントローラは、
ライトコマンドに付随するライトデータを格納するメモリと、
前記ライトコマンド毎に、ＩＤ値を更新し、前記ライトデータの一部又は全部にＩＤ値を挿入して、前記ディスク記憶デバイスのディスクにライトするコントローラとを有し、
前記コントローラは、前記ディスク記憶デバイスのライト完了に応じて、前記ライト完了したディスク記憶デバイスから前記ライトデータの一部又は全部をリードし、前記メモリに格納し、前記リードしたデータ中のＩＤ値と、前記挿入したＩＤ値を比較して、前記ディスク記憶デバイスのライト抜けを検出する
ことを特徴とするデータストレージシステム。
【請求項２】
前記コントローラは、前記ライトデータのデータブロック内のブロックＩＤ内に、前記ＩＤ値を挿入する
ことを特徴とする請求項１のデータストレージシステム。
【請求項３】
前記コントローラは、前記ディスク記憶デバイスにライトするライトデータの先頭又は末尾ブロックに前記ＩＤ値を挿入し、前記ライト完了したディスク記憶デバイスから前記ライトデータの先頭又は末尾ブロックをリードし、前記メモリに格納する
ことを特徴とする請求項１のデータストレージシステム。
【請求項４】
上位とのインターフェース制御を行う第１のインターフェース部と、
データを記憶する複数のディスク記憶デバイスとのインターフェース制御を行う第２のインターフェース部と、
前記上位からのアクセス指示に応じて、前記ディスク記憶デバイスをアクセス制御するコントローラと、
ライトコマンドに付随するライトデータを格納するメモリとを有し、
前記コントローラは、前記ライトコマンド毎に、ＩＤ値を更新し、前記ライトデータの一部又は全部にＩＤ値を挿入して、前記ディスク記憶デバイスのディスクにライトし、前記ディスク記憶デバイスのライト完了に応じて、前記ライト完了したディスク記憶デバイスから前記ライトデータの一部又は全部をリードし、前記メモリに格納し、前記リードしたデータ中のＩＤ値と、前記挿入したＩＤ値を比較して、前記ディスク記憶デバイスのライト抜けを検出する
ことを特徴とするストレージ制御装置。
【請求項５】
データを記憶する複数のディスク記憶デバイスに伝送経路を介し接続され、上位からのアクセス指示に応じて、前記ディスク記憶デバイスをアクセス制御するコントローラと、前記上位とのインターフェース制御を行う第１のインターフェース部と、前記複数のディスク記憶デバイスとのインターフェース制御を行う第２のインターフェース部とを有するストレージシステムのディスクのライト抜け診断方法において、
ライトコマンドに付随するライトデータをメモリに格納するステップと、
前記ライトコマンド毎に、ＩＤ値を更新し、前記ライトデータの一部又は全部にＩＤ値を挿入するステップと、
前記ディスク記憶デバイスのディスクに前記ＩＤ値を挿入したライトデータをライトするステップと、
前記ディスク記憶デバイスのライト完了に応じて、前記ライト完了したディスク記憶デバイスから前記ライトデータの一部又は全部をリードし、前記メモリに格納するステップと、
前記リードしたデータ中のＩＤ値と、前記挿入したＩＤ値を比較して、前記ディスク記憶デバイスのライト抜けを検出するステップとを有する
ことを特徴とするデータストレージシステムのディスクのライト抜け診断方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータの外部記憶装置として用いられるデータストレージシステム、データストレージ制御装置及びそのディスクのライト抜け診断方法に関し、特に、多数のディスクデバイスと制御装置とが、伝送路で接続されたデータストレージシステム、データストレージ制御装置及びそのディスクのライト抜け診断方法に関する。
【背景技術】
【０００２】
近年、様々なデータが電子化され、コンピュータ上で扱われるのに従い、データの処理を実行するホストコンピュータとは独立して、大量のデータを効率よく、高い信頼性で格納することのできるデータストレージ装置（外部記憶装置）の重要性が増加している。
【０００３】
このデータストレージ装置として、大量のディスクデバイス（例えば、磁気ディスクや光ディスク）と、これら大量のディスクデバイスを制御するディスクコントローラとから構成されるディスクアレイ装置が利用されている。このディスクアレイ装置は、同時に複数のホストコンピュータからのディスクアクセス要求を受け付けて、大量のディスクに対する制御を行なうことができる。
【０００４】
このようなディスクアレイ装置は、ディスクのキャッシュの役割を果たすメモリを内蔵する。これにより、ホストコンピュータからリード要求及びライト要求を受信した際の、データへのアクセス時間を短縮し、高性能化を実現できる。
【０００５】
一般に、ディスクアレイ装置は、複数の主要ユニット、即ち、ホストコンピュータとの接続部分であるチャネルアダプタ，ディスクドライブとの接続部分であるディスクアダプタ，キャッシュメモリ，キャッシュメモリの制御を担当するキャッシュ制御部及び大量のディスクドライブから構成される。
【０００６】
このような複雑なシステムにおいて、ディスクドライブのユニットが障害を発生した場合に、その障害を検出する必要がある。この内、ディスクドライブにライトコマンドを発行した場合に、正常にディスクにデータをライトできない障害がある。例えば、ディスクドライブのライト速度を速めるため、特別のコマンドを与えない限り、ディスクドライブは、ディスクにデータをライトした後、リードベリファイ動作を実行せずに、ライト完了を報告する。このため、ヘッドの劣化や隣接トラックへの影響で、対象トラックにデータが、正常にライトされていない場合もある。これをライト抜けという。
【０００７】
このため、ディスク上のライトデータの診断を行う必要がある。従来、この方法として、制御装置が、ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｃｙ  Ｃｏｄｅ）を付加したライトデータを、ディスクドライブに発行し、ディスクドライブは、ＣＲＣとともに、ライトデータをディスクに書き込む。一方、ライト完了報告により、制御装置は、ディスクからそのＣＲＣを読み出し、ライトデータに付加したＣＲＣと比較して、ライト抜けの診断を行う（例えば、特許文献１参照）。
【０００８】
又、他の従来技術として、ＲＡＩＤ構成をとる複数のディスクドライブに、分散してライトデータを書き込む際に、分散されたライトデータにタイムスタンプ情報を付加して、ディスクドライブに転送し、ディスクドライブは、タイムスタンプ情報とともに、ライトデータをディスクに書き込む。そして、次に、ホストからそのデータのリードコマンドを受けた際に、制御装置が、複数のディスクドライブから、その分散されたライトデータを読み出し、分散されたライトデータ中のタイムスタンプ情報をチエックして、多数決により、正常なタイムスタンプ情報を決定し、それ以外のタイムスタンプ情報のディスクドライブを異常と判定する（例えば、特許文献２参照）。
【特許文献１】特開平５−１６６３０４号公報（図１）
【特許文献２】特開平１０−１７１６０８号公報（図３）
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、前者の従来技術では、ディスクの書き込み前のデータ（ｏｌｄ  ｄａｔａ）に、新データ（ｎｅｗ  ｄａｔａ）をオーバーライトする際に、古いデータと新データとのＣＲＣが、たまたま同じであった場合、新データが正しく書き込まれたかを診断することができない。
【００１０】
又、後者の従来技術では、複数のディスクドライブのデータから１つのディスクドライブの障害を検出する方法であるため、個々のディスクドライブを直接診断できない。例えば、３つのディスクドライブの内、２つのディスクドライブのリードデータのタイムスタンプ情報が一致すれば、他の１つのディスクドライブは、障害と判定するため、逆に、２つのディスクドライブのライト抜けが生じた場合には、正常な他の１つのディスクドライブを障害と判定してしまう。
【００１１】
しかも、タイムスタンプという時刻情報であるため、制御装置が、書き込んだ時刻との比較をしても、正常でも異常でも、時刻は相違しているから、ライト抜けを診断できない。
【００１２】
従って、本発明の目的は、個々のディスクドライブのライト抜け診断を正確に行うためのデータストレージシステム、データストレージ制御装置及びそのディスクのライト抜け診断方法を提供することにある。
【００１３】
又、本発明の他の目的は、個々のディスクドライブのライト抜け診断を、ライト直後に、正確に実行するためのデータストレージシステム、データストレージ制御装置及びそのディスクのライト抜け診断方法を提供することにある。
【００１４】
更に、本発明の更に他の目的は、個々のディスクドライブのライト抜けを、ライト直後に、検出するためのデータストレージシステム、データストレージ制御装置及びそのディスクのライト抜け診断方法を提供することにある。
【課題を解決するための手段】
【００１５】
この目的の達成のため、本発明のデータストレージシステムは、データを記憶する複数のディスク記憶デバイスと、前記複数のディスク記憶デバイスに伝送経路を介し接続され、上位からのアクセス指示に応じて、前記ディスク記憶デバイスをアクセス制御するストレージコントローラとを有し、前記ストレージコントローラは、ライトコマンドに付随するライトデータを格納するメモリと、前記ライトコマンド毎に、ＩＤ値を更新し、前記ライトデータの一部又は全部にＩＤ値を挿入して、前記ディスク記憶デバイスのディスクにライトするコントローラとを有し、前記コントローラは、前記ディスク記憶デバイスのライト完了に応じて、前記ライト完了したディスク記憶デバイスから前記ライトデータの一部又は全部をリードし、前記メモリに格納し、前記リードしたデータ中のＩＤ値と、前記挿入したＩＤ値を比較して、前記ディスク記憶デバイスのライト抜けを検出する。
【００１６】
又、本発明のストレージ制御装置は、上位とのインターフェース制御を行う第１のインターフェース部と、データを記憶する複数のディスク記憶デバイスとのインターフェース制御を行う第２のインターフェース部と、前記上位からのアクセス指示に応じて、前記ディスク記憶デバイスをアクセス制御するコントローラと、ライトコマンドに付随するライトデータを格納するメモリとを有し、前記コントローラは、前記ライトコマンド毎に、ＩＤ値を更新し、前記ライトデータの一部又は全部にＩＤ値を挿入して、前記ディスク記憶デバイスのディスクにライトし、前記ディスク記憶デバイスのライト完了に応じて、前記ライト完了したディスク記憶デバイスから前記ライトデータの一部又は全部をリードし、前記メモリに格納し、前記リードしたデータ中のＩＤ値と、前記挿入したＩＤ値を比較して、前記ディスク記憶デバイスのライト抜けを検出する。
【００１７】
又、本発明のディスクのライト抜け診断方法は、データを記憶する複数のディスク記憶デバイスに伝送経路を介し接続され、上位からのアクセス指示に応じて、前記ディスク記憶デバイスをアクセス制御するコントローラと、前記上位とのインターフェース制御を行う第１のインターフェース部と、前記複数のディスク記憶デバイスとのインターフェース制御を行う第２のインターフェース部とを有するストレージシステムのディスクのライト抜け診断方法であって、ライトコマンドに付随するライトデータをメモリに格納するステップと、前記ライトコマンド毎に、ＩＤ値を更新し、前記ライトデータの一部又は全部にＩＤ値を挿入するステップと、前記ディスク記憶デバイスのディスクに前記ＩＤ値を挿入したライトデータをライトするステップと、前記ディスク記憶デバイスのライト完了に応じて、前記ライト完了したディスク記憶デバイスから前記ライトデータの一部又は全部をリードし、前記メモリに格納するステップと、前記リードしたデータ中のＩＤ値と、前記挿入したＩＤ値を比較して、前記ディスク記憶デバイスのライト抜けを検出するステップとを有する。
【００１８】
更に、本発明では、好ましくは、前記コントローラは、前記ライトデータのデータブロック内のブロックＩＤ内に、前記ＩＤ値を挿入する。
【００１９】
更に、本発明では、好ましくは、前記コントローラは、前記ディスク記憶デバイスにライトするライトデータの先頭又は末尾ブロックに前記ＩＤ値を挿入し、前記ライト完了したディスク記憶デバイスから前記ライトデータの先頭又は末尾ブロックをリードし、前記メモリに格納する。
【００２０】
更に、本発明では、好ましくは、前記コントローラは、前記ディスク記憶デバイスにライトするライトデータの全ブロックに前記ＩＤ値を挿入し、前記ライト完了したディスク記憶デバイスから前記ライトデータの全ブロックをリードし、前記メモリに格納する。
【００２１】
更に、本発明では、好ましくは、前記コントローラは、前記ディスク記憶デバイスにライトアクセス指示を行う制御モジュールと、前記ライトアクセス指示に応じて、前記ライトコマンド毎に、ＩＤ値を更新し、前記ライトデータの一部又は全部にＩＤ値を挿入して、前記ディスク記憶デバイスのディスクにライトし、前記ディスク記憶デバイスのライト完了に応じて、前記ライト完了したディスク記憶デバイスから前記ライトデータの一部又は全部をリードし、前記メモリに格納し、前記リードしたデータ中のＩＤ値と、前記挿入したＩＤ値を比較して、前記ディスク記憶デバイスのライト抜けを検出するディスクドライバモジュールとを有する。
【００２２】
更に、本発明では、好ましくは、前記上位とのインターフェース制御を行う第１のインターフェース部と、前記複数のディスク記憶デバイスとのインターフェース制御を行う第２のインターフェース部とを更に有し、前記第２のインターフェース部が、前記伝送経路により前記複数のディスク記憶デバイスと接続する。
【００２３】
更に、本発明では、好ましくは、前記コントローラは、前記メモリのキャッシュ領域に格納された前記ライトデータの一部又は全部にＩＤ値を挿入して、前記ディスク記憶デバイスのディスクにライトし、前記ディスク記憶デバイスのライト完了に応じて、前記ライト完了したディスク記憶デバイスから前記ライトデータの一部又は全部をリードし、前記メモリのデータバッファ領域に格納する。
【発明の効果】
【００２４】
本発明では、コントローラが、ライトデータにＩＤを付して、該当ディスクドライブへのライトアクセス後、ディスクドライブから該当ライトデータをリードし、そのリードデータのＩＤと、付したＩＤを比較する。このため、個々のディスクドライブのライトデータが、ヘッドで正常に書き込まれたかを、ＩＤの比較のみで、即座に診断できる。又、ＩＤは、ライトコマンド毎に、更新するため、古いライトデータと新しいライトデータを識別でき、正確に診断でき、即座にディスクドライブの障害を検出できる。
【発明を実施するための最良の形態】
【００２５】
以下、本発明の実施の形態を、データストレージシステムのディスクのライト抜け診断方法、データストレージシステムの構成、ディスクのライト抜け診断処理、他の実施の形態の順で説明する。
【００２６】
＊＊データストレージシステムのディスクのライト抜け診断方法＊＊
図１は、本発明の一実施の形態のデータストレージ装置のディスクの抜け診断方法の説明図である。図１に示すように、ストレージコントローラ４は、チャネルアダプタ４１、コントローラ４０及びディスクアダプタ４２を有する。チャネルアダプタ４１は、ファイバチャネルもしくはEthernet（登録商標）によって、ホストコンピュータ３に接続される。ディスクアダプタ４２は、例えば、ファイバチャネルのＦＣループによって、ディスクエンクロージャ（後述する）内の各ディスクドライブ１−１に接続される。
【００２７】
このような構成において、コントローラ４０は、キャッシュメモリ４１２とデータバッファ４１６と、ディスクドライバ６３０とを有する。そして、コントローラ４０は、チャネルアダプタ４１を介するホスト３からの依頼や内部のライト依頼（例えば、ライトバック、リビルド、コピーバック等）に基づいて、ディスクアダプタ４２を介し、ファイバチャネル等の伝送路を経て、ディスクドライブ１−１を、リード又はライトアクセスを実施する。
【００２８】
コントローラ４０は、キャッシュメモリ４１２のデータの一部にＩＤを付して、ディスクアダプタ４２を介しディスクドライブ１−１にライトする。ディスクドライブ１−１のライト完了をトリガーに、診断を開始する。
【００２９】
コントローラ４０は、該当ディスクドライブ１−１から当該ライトしたデータをリードし、リードしたデータをデータバッファ４１６に格納する。その後、ディスクドライバ６３０が、キャッシュメモリ４１２のライトデータのＩＤと、データバッファ４１６のリードデータ内のＩＤを比較し、ライト抜け診断を行う。
【００３０】
同様に、ライトデータを複数のディスクドライブに分割して、ライトする、所謂、ＲＡＩＤ１，３，５にも適用できる。図２は、本発明の他の実施の形態のデータストレージ装置のディスクの抜け診断方法の説明図である。図２においても、図１と同様に、ストレージコントローラ４は、チャネルアダプタ４１、コントローラ４０及びディスクアダプタ４２を有する。
【００３１】
このような構成において、コントローラ４０は、キャッシュメモリ４１２とデータバッファ４１６と、ディスクドライバ６３０とを有する。そして、コントローラ４０は、チャネルアダプタ４１を介するホスト３からの依頼や内部のライト依頼（例えば、ライトバック、リビルド、コピーバック等）に基づいて、ディスクアダプタ４２を介し、ファイバチャネル等の伝送路を経て、ディスクドライブ１−１を、リード又はライトアクセスを実施する。
【００３２】
コントローラ４０は、キャッシュメモリ４１２のライトデータを分割し（ここでは、２分割）、分割されたライトデータの各々の一部にＩＤを付して、ディスクアダプタ４２を介しディスクドライブ１−１，１−２に、それぞれライトする。ディスクドライブ１−１，１−２のライト完了をトリガーに、診断を開始する。
【００３３】
コントローラ４０は、該当ディスクドライブ１−１，１−２から当該ライトしたデータをリードし、リードしたデータをデータバッファ４１６に格納する。その後、ディスクドライバ６３０が、キャッシュメモリ４１２のライトデータのＩＤと、データバッファ４１６のリードデータの内のＩＤを比較し、ライト抜け診断を行う。
【００３４】
このＩＤは、ライトコマンド毎に、変更する。例えば、ライトコマンド毎に、「１」を加算するカウンター値で、ＩＤを指定する。
【００３５】
このように、コントローラ４０は、ライトデータにＩＤを付して、該当ディスクドライブへのライトアクセス後、ディスクドライブから該当ライトデータをリードし、そのリードデータのＩＤと、付したＩＤを比較する。このため、個々のディスクドライブのライトデータが、ヘッドで正常に書き込まれたかを、ＩＤの比較のみで、即座に診断できる。又、ＩＤは、ライトコマンド毎に、更新するため、古いライトデータと新しいライトデータを識別でき、正確に診断でき、即座にディスクドライブの障害を検出できる。
【００３６】
＊＊データストレージシステムの構成＊＊
図３は、図１及び図２のストレージコントローラの構成図、図４は、図１及び図２のＦＣループとディスクドライブ群の構成図である。
【００３７】
図３に示すように、コントローラ４０は、ホストコンピュータからの処理要求や内部の処理要求（リード要求もしくはライト要求）に基づいて、リード／ライト処理を行なうものであり、メモリ４１０と処理ユニット４００と、メモリコントローラ４２０とを備える。
【００３８】
メモリ４１０は、図４で説明するディスクエンクロージャ２０、２２の複数のディスクドライブに保持されたデータの一部を保持する、所謂、複数のディスクに対するキャッシュの役割を果たすキャッシュ領域４１２と、データバッファ４１６と、ＩＤカウンタ４１４とを有する。
【００３９】
処理ユニット４００は、メモリ４１０，チャネルアダプタ４１、デバイスアダプタ４２、ＤＭＡ４３の制御を行う。このため、１つ又は複数（図では、１つ）のＣＰＵ４００と、メモリコントローラ４２０とを有する。メモリコントローラ４２０は、メモリ４１０のリード／ライトを制御し、且つパスの切り替えを行う。
【００４０】
メモリコントローラ４２０は、メモリバス４３２を介しメモリ４１０と接続し、ＣＰＵバス４３０を介しＣＰＵ４００と接続し、更に、メモリコントローラ４２０は、４レーンの高速シリアルバス（例えば、ＰＣＩ−Ｅｘｐｒｅｓｓ）４４０を介しディスクアダプタ４２に接続する。
【００４１】
同様に、メモリコントローラ４２０は、４レーンの高速シリアルバス（例えば、ＰＣＩ−Ｅｘｐｒｅｓｓ）４４３，４４４，４４５，４４６を介しチャネルアダプタ４１（ここでは、４つのチャネルアダプタ４１ａ，４１ｂ、４１ｃ，４１ｄ）に接続し、４レーンの高速シリアルバス（例えば、ＰＣＩ−Ｅｘｐｒｅｓｓ）４４８を介しＤＭＡ４３に接続する。
【００４２】
このＰＣＩ−Ｅｘｐｅｓｓ等の高速シリアルバスは、パケットで通信し、且つシリアルバスを複数レーン設けることにより、信号線本線を減らしても、遅延の少ない、速い応答速度で、所謂、低レンテンシで通信することができる。
【００４３】
チャネルアダプタ４１ａ〜４１ｄは、ホストコンピュータに対するインターフェースであり、チャネルアダプタ４１ａ〜４１ｄは、それぞれ異なるホストコンピュータと接続される。また、チャネルアダプタ４１ａ〜４１ｄは、それぞれ対応するホストコンピュータのインターフェース部に、バス、例えば、ファイバチャネル（Fiber Channel）やEthernet（登録商標）によって接続されることが好ましく、この場合、バスとしては、光ファイバや同軸ケーブルが用いられる。
【００４４】
さらに、これらチャネルアダプタ４１ａ〜４１ｄそれぞれは、ストレージコントローラ４の一部として構成されている。このチャネルアダプタ４１ａ〜４１ｄが、対応するホストコンピュータとコントローラ４０とのインターフェース部として、複数のプロトコルをサポートする。
【００４５】
又、対応するホストコンピュータによって実装すべきプロトコルが同一ではないため、各チャネルアダプタ４１ａ〜４１ｄを必要に応じて容易に交換できるように、コントローラ４０とは、別のプリント基板に実装されている。
【００４６】
例えば、チャネルアダプタ４１ａ〜４１ｄがサポートすべきホストコンピュータとの間のプロトコルとしては、上述のように、ファイバチャネルや、Ethernet（登録商標）に対応するｉＳＣＳＩ（Internet Small Computer System Interface）等がある。
【００４７】
更に、各チャネルアダプタ４１ａ〜４１ｄは、前述のように、ＰＣＩ−Ｅｘｐｒｅｓｓバスのように，ＬＳＩ（Large Scale Integration）やプリント基板の間を接続するために設計されたバス４４３〜４４６によって、コントローラ４０と直接結合される。これにより、各チャネルアダプタ４１ａ〜４１ｄとコントローラ４０と間に要求される高いスループットを実現することができる。
【００４８】
次に、ディスクアダプタ４２は、ディスクエンクロージャの各ディスクドライブに対するインターフェースであり、ここでは、４つのＦＣ(Ｆｉｂｅｒ  Ｃｈａｎｎｅｌ)ポートを有する。
【００４９】
又、ディスクアダプタ４２は、前述のように、ＰＣＩ−Ｅｘｐｒｅｓｓバスのように，ＬＳＩ（Large Scale Integration）やプリント基板の間を接続するために設計されたバスによって、コントローラ４０と直接結合されている。これにより、ディスクアダプタ４２とコントローラ４０と間に要求される高いスループットを実現することができる。更に、ＤＭＡエンジン４３は、他のコントロールモジュール４０との間で相互に通信を行うものであり、例えば、ミラーリング処理に使用される。
【００５０】
図４により、伝送経路及びディスクドライブ群を説明する。図４では、４つのＦＣポートを有するディスクアダプタ４２を、２分割して示す。図４に示すように、ディスクエンクロージャ１０は、一対のファイバーチャネルアッセンブリ２０，２２と、複数の磁気ディスク装置（ディスクドライブ）１−１〜１−ｎを有する。
【００５１】
複数の磁気ディスク装置１−１〜１−ｎの各々は、一対のファイバーチャネルループ１２，１４に、ファイバースイッチ２６により接続される。ファイバーチャネルループ１２は、ファイバーチャネルコネクタ２４とファイバーケーブル２−２により、コントローラのデバイスアダプタ４２に接続され、ファイバーチャネルループ１４は、ファイバーチャネルコネクタ２４とファイバーケーブル２−１により、コントローラの他方のデバイスアダプタ４２に接続される。
【００５２】
前述のように、両デバイスアダプタ４２は、コントローラ４０に接続されるため、コントローラ４０は、各磁気ディスク装置１−１〜１−ｎに、デバイスアダプタ４２、ファイバーチャネルループ１２を介する一方のルート（ａルート）と、デバイスアダプタ４２、ファイバーチャネルループ１４を介する他方のルート（ｂルート）との両方からアクセスできる。
【００５３】
両ファイバーチャネルアッセンブリ２０，２２には、切り離し制御部２８が設けられている。一方の切り離し制御部２８は、ファイバーチャネルループ１２の各ファイバースイッチ２６の切り離し（バイパス）制御を行い、他方の切り離し制御部２８は、ファイバーチャネルループ１４の各ファイバースイッチ２６の切り離し（バイパス）制御を行う。
【００５４】
例えば、図４に示すように、磁気ディスク装置１−２のファイバーチャネルループ１４側のａポートがアクセス不能である時には、切り離し制御部２８は、磁気ディスク装置１−２のａポート側のファイバースイッチ２６を、図４に示すように、バイパス状態に切り替え、磁気ディスク装置１−２を、ファイバーチャネルループ１４から切り離す。これにより、ファイバーチャネルループ１４は、正常に機能し、磁気ディスク装置１−２は、ファイバーチャネルループ１２側のｂポートからアクセスすることができる。
【００５５】
各磁気ディスク装置１−１から１−ｎは、ａポート、ｂポートと各々接続するための一対のＦＣ（Ｆｉｂｅｒ  Ｃｈａｎｅｌ）チップと、制御回路と、ディスクドライブ機構とを有する。このＦＣチップは、ＣＲＣチエック機能を有する。
【００５６】
ここで、図３のディスクドライブ１−１〜１−４が、図４の磁気ディスク装置１−１〜１−ｎに対応し、伝送経路２−１，２−２が、ファイバーケーブル２−１，２−２と、ファイバーチャネルアッセンブリ２０，２２に対応する。図３のディスクドライブ１−５〜１−８、伝送経路２−３，２−４も同様である。
【００５７】
次に、ＣＰＵ４００（４１０）が実行するソフトウェアのプログラムモジュール（スレッドという）を説明する。図５は、ＣＰＵ４００（４１０）が実行するソフトウェアのスレッドの構成図、図６は、そのデータブロック形式の説明図である。
【００５８】
図５に示すように、ソフトウェアモジュールは、図示しないカーネル／スケジューラと、ＩＯ制御モジュールとを有する。カーネル／スケジューラは、ＭＳ−ＤＯＳ（登録商標）等のオペレーテイングシステムである。ＩＯ制御モジュールは、ベーシックモジュール６４０と、ＣＭ−ＤＡドライバ、即ち、ディスクドライバ６３０と、ＦＣドライバ６３６とを有する。
【００５９】
ベーシックモジュール６４０は、資源管理を行うリソーススレッド（リソース制御モジュール）６４２、コピー処理を行うコピースレッド（コピー制御モジュール）６４６、メモリ４１０のキャッシュメモリ４１２の制御を行うキャッシュスレッド（キャッシュメモリ制御モジュール）６４８を有するフロントエンドと、ＲＡＩＤ構成制御を行うＲＡＩＤスレッド（ＲＡＩＤ制御モジュール）６３２、ＯＶＳＭスレッド（ＯＶＳＭ制御モジュール）６３４とを有するバックエンドとからなる。
【００６０】
ＯＶＳＭスレッド６３４は、リビルド／コピーバック処理等を行う。ディスクドライバ６３０、ＦＣドライバ６３６は、ＦＣ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）チップで構成されたＤＡ（ディスクアダプタ）４２をドライブするドライバである。
【００６１】
リソースモジュール６４２、ＲＡＩＤモジュール６３２が、構成定義テーブルを参照して、ホストからのＬＵＮ（論理ユニット番号）を、物理ディスクのＰＬＢＡ（物理ブロックアドレス）に変換し、物理ディスク１−１等をアクセスする。
【００６２】
図５に示すように、ＯＶＳＭスレッド６３４は、Ｒｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋの進捗の管理を行う。キャッシュモジュール６４８は、ホストＩ／Ｏ要求に対し、リードアクセスでは、キャッシュメモリ４１２に対象データが格納されているかを判定し、格納されていれば（キャッシュヒット）、その対象データを、ホストに転送し、格納されていなければ（キャッシュミスヒット）、ＲＡＩＤ制御モジュール６３２にリード要求を発行する。
【００６３】
又、キャッシュモジュール６４８は、ホストＩ／Ｏ要求に対し、ライトアクセスでは、キャッシュメモリ４１２に、ライトデータを格納する。その後、キャッシュメモリ４１２のライトデータのライト要求（ライトバック）を、ＲＡＩＤ制御モジュール６３２に発行する。
【００６４】
これに対し、ＲＡＩＤ制御モジュール６３２は、データを一時待避するバッファ(以降では、Ｄａｔａ  Ｂｕｆｆｅｒと記述する)を獲得して、ＲＡＩＤ構成定義に従い、ディスクドライバ６３０に対して、リードやライトを指示する。ディスクへのライトアクセスでは、ディスクドライバ６３０が、ディスクドライブに書きこむデータの少なくとも、先頭ＬＢＡ（ＬＢＡ０）に関して、ＢＩＤ（ＢＬＯＣＫ  ＩＤ）のディスクライト抜け検出用カウンター部に，カウンター値ＩＤを書き込む。
【００６５】
図６に示すように、データブロックは、データ部１００２と、ＢＣＣ（Ｂｌｏｃｋ  Ｃｈｅｃｋ  Ｃｏｄｅ）部１００４からなる。例えば、１ブロックのデータ部１００２が、５１２Ｂｙｔｅである場合には、ＢＣＣ部１００４は、８Ｂｙｔｅが割り当てられる。このＢＣＣ部１００４は、Ｂｌｏｃｋ  ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｏｄｅ）部１１００と、Ｂｌｏｃｋ  ＩＤ部１１０２からなる。
【００６６】
Ｂｌｏｃｋ  ＩＤ部１１０２は、６ｂｙｔｅ割り当てられ、４バイト（３２ビット）のカウンタ値（ブロック番号）と、残り２バイトからなる。この２ｂｙｔｅのうち、１ｂｙｔｅをディスクライト抜け検出用カウンターＩＤ部１１０６に割り当て、残りの１ｂｙｔｅを、ＳＬＵ（ホスト論理ユニット）番号と、パリテイビットと、バッドフラグに割り当てる。
【００６７】
即ち、Ｂｌｏｃｋ  ＩＤ部１１０２のリザーブエリアに、ディスクライト抜け検出用ＩＤ１１０６を割り当てる。そして、ディスクドライバ６３０は、メモリ４１０のＩＤ部４１４のＩＤ値を、キャッシュメモリ４１０のブロックデータのカウンターＩＤ部１１０６に直接書き込む。
【００６８】
次に、ディスクドライバ６３０は、後述するライト抜け診断を行う。このような構成により、ライトコマンド毎に、更新されるＩＤ値を、少なくとも、各ディスクドライブに書き込むライトデータの少なくとも先頭データブロック１０００のＢＩＤ部１１０２のカウンターＩＤ部１１０６に書き込み、ディスクドライブにライトする。
【００６９】
その後、診断を開始し、ディスクドライブから書き込んだライトデータの少なくとも先頭ブロックを読み出し、読み出したブロック内のカウンターＩＤ部１１０６の内容と、メモリ４１０のＩＤ部４１４のＩＤ値と比較して、ライト抜けの有無を判定する。
【００７０】
＊＊ディスクライト抜け診断処理＊＊
次に、図１乃至図６のデータストレージシステムのディスクライト抜け診断処理を、説明する。図７及び図８は、本発明の一実施の形態のディスクライト抜け診断処理フロー図、図９乃至図１２は、その動作説明図である。
【００７１】
（Ｓ１０）ホストコンピュータから対応するチャネルアダプタ４１ａ〜４１ｄが、ライトコマンドを受信する。
【００７２】
（Ｓ１２）チャネルアダプタ４１は、キャッシュメモリ４１２に、ライトコマンドに付随するライトデータＬＢＡ０〜ＬＢＡ９９を書き込む。尚、ここでは、ライトデータを１００ＬＢＡで説明する。
【００７３】
（Ｓ１４）キャッシュ制御モジュール６４８は、キャッシュメモリ４１２に保持された当該対象データＬＢＡ０〜ＬＢＡ９９のライトバックを、ＲＡＩＤ制御モジュール６３２に、指示する。
【００７４】
（Ｓ１６）ＲＡＩＤ制御モジュール６３２は、ＲＡＩＤ構成定義に従い、ディスクドライバ６３０に対して、ディスクドライブへの書き込み（ＬＢＡ０〜９９）を指示する。尚、その際、ＲＡＩＤ制御モジュール６３２は、ＲＡＩＤ構成定義に従い、ディスクへの書き込みに必要となるＰＬＵ（物理ディスクユニット番号、ＬＢＡ位置、ユーザデータの物理アドレス、ユーザデータの長さを、ディスクドライバ６３０に渡す。
【００７５】
（Ｓ１８）ディスクドライバ６３０は、メモリ４１０のカウンター値４１４を更新（「１」インクリメント）した後、キャッシュメモリ４１２の各ディスクに書きこむライトデータの先頭ＬＢＡ（ＬＢＡ０等）又は全ＬＢＡに関して、ＢＩＤ部１１０２のディスクライト抜け検出用ＩＤ部１１０６に，メモリ４１０のカウンター値４１４を書き込む。尚、ディスクドライバ６３０は、メモリマップ処理を行い、メモリ４１０のユーザデータのＢＣＣ部１００４のＩＤ部１１０６の値を、直接変更する。
【００７６】
（Ｓ２０）次に、ディスクドライバ６３０は、ＦＣドライバ６３６に対して、ディスクドライブのディスクに、ライトデータＬＢＡ０〜ＬＢＡ９９のデータを書き込むよう指示する。これにより、後述する図９乃至図１２で説明するように、ライトデータは、ディスクアダプタ４２を介し、指定されたディスクドライブ１−１（又は１−１，１−２，１−３）のディスクに直接ライトされる。
【００７７】
（Ｓ２２）ディスクドライバ６３０は、ディスクアダプタ４２を介し、指定したディスクドライブからライト完了報告を受けたかを判定する。
【００７８】
（Ｓ２４）ディスクドライバ６３０は、指定したディスクドライブからライト完了報告を受けると、診断を開始する。ここでは、診断対象を、全ＬＢＡか、先頭（又は末尾ＬＢＡ）かを指定できる。この指定は、予め、外部（例えば、コントローラ４に接続された保守用装置）から設定される。ディスクドライバ６３０は、診断対象が、全ＬＢＡか、それ以外（先頭ＬＢＡ又は末尾ＬＢＡ）かを判定する。
【００７９】
(Ｓ２６)全ＬＢＡが指定されている場合には、ディスクドライバ６３０は、ステップＳ１８で指定された全ＬＢＡ（ＬＢＡ０〜ＬＢＡ９９）を、指定されたディスクドライブからリードするように、ＦＣドライバ６３６に対して、指示する。この時、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）−２のコマンドフォーマット内のＦＵＡ（Ｆｏｒｃｅ  Ｕｎｉｔ  Ａｃｃｅｓｓ）フラグをセットし、ディスクドライブのディスク媒体を直接アクセスする。即ち、ディスクドライブにキャッシュメモリを搭載する装置では、リードコマンドに対し、キャッシュメモリをアクセスして、リード動作を行うため、これを防止し、直接ディスクからリードするように、指示するものである。これにより、後述する図９乃至図１０で説明するように、ディスクアダプタ４２を介し、指定されたディスクドライブ１−１（又は１−１，１−２，１−３）のディスクからリードされる。
【００８０】
（Ｓ２８）逆に、全ＬＢＡが指定されていない場合には、先頭又は末尾のＬＢＡを診断する。このため、ディスクドライバ６３０は、ステップＳ１８で指定された全ＬＢＡ（ＬＢＡ０〜ＬＢＡ９９）の内、１つ又は各ディスクドライブのライトデータの先頭ＬＢＡ（又は末尾ＬＢＡ）を、指定されたディスクドライブからリードするように、ＦＣドライバ６３６に対して、指示する。この時、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）−２のコマンドフォーマット内のＦＵＡ（Ｆｏｒｃｅ  Ｕｎｉｔ  Ａｃｃｅｓｓ）フラグをセットし、ディスクドライブのディスク媒体を直接アクセスする。即ち、ディスクドライブにキャッシュメモリを搭載する装置では、リードコマンドに対し、キャッシュメモリをアクセスして、リード動作を行うため、これを防止し、直接ディスクからリードするように、指示するものである。これにより、後述する図１１乃至図１２で説明するように、ディスクアダプタ４２を介し、指定されたディスクドライブ１−１（又は１−１，１−２，１−３）のディスクからリードされる。
【００８１】
（Ｓ３０）これらリードされたＬＢＡは、データバッファ４１６に格納され、ディスクドライバ６３０は、先ず、リードデータのＣＲＣ１１００で、リードブロックをチエックする。ＣＲＣエラーを検出した場合には、ＣＲＣエラーのデータを送信してきた当該ディスクドライブを、デグレードする（使用しないようにする）。次に、ＣＲＣエラーを検出しない場合には、ディスクドライバ６３０は、データバッファ４１６内のリードブロック１０００のＢＩＤ１００４内のカウンターＩＤ値１１０６を取り出し、メモリ４０のカウンター値４１４と比較する。
【００８２】
（Ｓ３２）ディスクドライバ６３０は、読み込んだ各リードブロック（全ライトデータ又は先頭（末尾）ブロック）のＩＤ部１１０６と、カウンター値４１４とが一致していない場合には、その一致していないＬＢＡを送ってきたディスクドライブのライト抜けエラーと判断する。このライト抜けエラーと判断されたディスクドライブは、切り離す。一方、ディスクドライバ６３０は、読み込んだ各リードブロック（全ライトデータ又は先頭（末尾）ブロック）のＩＤ部１１０６と、カウンター値４１４とが一致している場合には、ライト抜けエラー無しと判定し、終了する。
【００８３】
図９乃至図１２で、具体的に説明する。図９及び図１０は、対象ライトデータの全ＬＢＡにＩＤ値を書き込む例である。図９は、単一のディスクドライブ１−１に、全ライトデータＬＢＡ００〜ＬＢＡ９９をライトする例を示し、図１０は、複数のディスクドライブ（ここでは、３つ）１−１，１−２，１−３に、ライトデータＬＢＡ００〜ＬＢＡ９９を３分割して、ライトするＲＡＩＤ５の例を示す。
【００８４】
図９に示すように、単一のディスクドライブ１−１に、全ライトデータＬＢＡ００〜ＬＢＡ９９をライトする場合には、ディスクドライバ６３０は、全ＬＢＡ００〜ＬＢＡ９９に、カウンターＩＤ値４１４を書き込み、ディスクドライブ１−１のディスクに、ライトする。次に、ディスクドライバ６３０は、ディスクドライブ１−１からのライト完了報告を受け、ディスクドライブ１−１からライトしたＬＢＡ００〜ＬＢＡ９９をリードし、データバッファに格納する。
【００８５】
そして、ディスクドライバ６３０は、リードした全ＬＢＡ００〜ＬＢＡ９９のリードブロック１０００のＢＩＤ１００４内のカウンターＩＤ値１１０６を取り出し、メモリ４０のカウンターＩＤ値４１４と比較する。１つのＬＢＡのカウンターＩＤ値が、カウンターＩＤ値と一致しないと、そのディスクドライブ１−１にライト抜けが生じたと判断する。
【００８６】
又、図１０に示すように、複数のディスクドライブ（ここでは、３つ）１−１，１−２，１−３に、ライトデータＬＢＡ００〜ＬＢＡ９９を３分割して、ライトするＲＡＩＤ５の例では、同様に、ディスクドライバ６３０は、全ＬＢＡ００〜ＬＢＡ９９に、カウンターＩＤ値４１４を書き込み、ディスクドライブ１−１，１−２，１−３のディスクに、ＬＢＡ００〜ＬＢＡ３３，ＬＢＡ３４〜ＬＢＡ６５，ＬＢＡ６６〜ＬＢＡ９９をライトする。次に、ディスクドライバ６３０は、ディスクドライブ１−１，１−２，１−３からのライト完了報告を受け、ライトしたＬＢＡ００〜ＬＢＡ９９を、各ディスクドライブ１−１，１−２，１−３からリードし、データバッファに格納する。
【００８７】
そして、ディスクドライバ６３０は、リードした全ＬＢＡ００〜ＬＢＡ９９のリードブロック１０００のＢＩＤ１００４内のカウンターＩＤ値１１０６を取り出し、メモリ４０のカウンターＩＤ値４１４と比較する。各ディスクドライブ１−１，１−２，１−３からの１つのＬＢＡのカウンターＩＤ値でも、カウンターＩＤ値と一致しないと、そのディスクドライブ１−１、又は１−２、又は１−３にライト抜けが生じたと判断する。
【００８８】
このように、ライトデータの全ブロックに、カウンターＩＤ値を挿入し、全ブロックをチエックすることは、ディスクに記録された前のデータと、その上にオーバーライトされるデータとの完全なチエックができ、いかなるデータであっても、個々のディスクドライブのヘッドの障害や、隣接トラックの影響によるライト不良を完全に検出できる。
【００８９】
次に、図１１及び図１２は、対象ライトデータの先頭ＬＢＡにのみ、ＩＤ値を書き込む例である。図１１は、単一のディスクドライブ１−１に、全ライトデータＬＢＡ００〜ＬＢＡ９９をライトする例を示し、図１２は、複数のディスクドライブ（ここでは、３つ）１−１，１−２，１−３に、ライトデータＬＢＡ００〜ＬＢＡ９９を３分割して、ライトするＲＡＩＤ５の例を示す。
【００９０】
図１１に示すように、単一のディスクドライブ１−１に、全ライトデータＬＢＡ００〜ＬＢＡ９９をライトする場合には、ディスクドライバ６３０は、先頭ＬＢＡ００に、カウンターＩＤ値４１４を書き込み、ディスクドライブ１−１のディスクに、ライトする。次に、ディスクドライバ６３０は、ディスクドライブ１−１からのライト完了報告を受け、ディスクドライブ１−１からライトしたＬＢＡ００〜ＬＢＡ９９の先頭ＬＢＡ００をリードし、データバッファに格納する。
【００９１】
そして、ディスクドライバ６３０は、リードした先頭ＬＢＡ００のリードブロック１０００のＢＩＤ１００４内のカウンターＩＤ値１１０６を取り出し、メモリ４０のカウンターＩＤ値４１４と比較する。このＬＢＡのカウンターＩＤ値が、カウンターＩＤ値と一致しないと、そのディスクドライブ１−１にライト抜けが生じたと判断する。
【００９２】
又、図１２に示すように、複数のディスクドライブ（ここでは、３つ）１−１，１−２，１−３に、ライトデータＬＢＡ００〜ＬＢＡ９９を３分割して、ライトするＲＡＩＤ５の例では、同様に、ディスクドライバ６３０は、各ディスクドライブ１−１，１−２，１−３に分散する先頭ＬＢＡ００、ＬＢＡ３４，ＬＢＡ６６に、カウンターＩＤ値４１４を書き込み、ディスクドライブ１−１，１−２，１−３のディスクに、ＬＢＡ００〜ＬＢＡ３３，ＬＢＡ３４〜ＬＢＡ６５，ＬＢＡ６６〜ＬＢＡ９９をライトする。
【００９３】
次に、ディスクドライバ６３０は、ディスクドライブ１−１，１−２，１−３からのライト完了報告を受け、ライトした先頭ＬＢＡ００、ＬＢＡ３４，ＬＢＡ６６を、各ディスクドライブ１−１，１−２，１−３からリードし、データバッファに格納する。
【００９４】
そして、ディスクドライバ６３０は、リードした先頭ＬＢＡ００、ＬＢＡ３４，ＬＢＡ６６のリードブロック１０００のＢＩＤ１００４内のカウンターＩＤ値１１０６を取り出し、メモリ４０のカウンターＩＤ値４１４と比較する。各ディスクドライブ１−１，１−２，１−３からのＬＢＡのカウンターＩＤ値が、カウンターＩＤ値と一致しないと、そのディスクドライブ１−１、又は１−２、又は１−３にライト抜けが生じたと判断する。
【００９５】
このように、ライトデータの先頭ブロックに、カウンターＩＤ値を挿入し、先頭ブロックをチエックすることは、ディスクに記録された前のデータと、その上にオーバーライトされるデータとのチエックができ、いかなるデータであっても、個々のディスクドライブのヘッドの障害や、隣接トラックの影響によるライト不良を検出できる。又、図９及び図１０の場合よりも、ＩＤ値の挿入箇所が少なく、且つリードブロックも少ないことから、高速にチエックできる。
【００９６】
＊＊他の実施の形態＊＊
前述の実施の形態では、先頭ＬＢＡにＩＤ値を挿入しているが、末尾ＬＢＡにＩＤ値を挿入しても良い。又、複数のライト動作を並行に実行する場合には、ライトデータに対応して、挿入したカウンターＩＤ値を記憶しておき、そのライトデータのライト完了を受けて、そのライトデータをリードし、記憶した対応するカウンターＩＤ値と比較することもできる。
【００９７】
更に、ライトバック動作で説明したが、冗長制御のための冗長データのコピーのためのライト動作や、リビルド、コピーバック時のライト動作等にも適用できる。
【００９８】
しかも、ストレージコントローラ内のチャネルアダプタやディスクアダプタの数は、必要に応じて、増減できる。又、ディスクドライブとしては、ハードディスクドライブ、光ディスクドライブ、光磁気ディスクドライブ等の記憶デバイスを適用できる。しかも、ストレージシステムやコントローラ（制御モジュール）の構成は、図３、図４、図５の構成のみならず、他の構成にも適用できる。
【００９９】
以上、本発明を実施の形態により説明したが、本発明の趣旨の範囲内において、本発明は、種々の変形が可能であり、本発明の範囲からこれらを排除するものではない。
【０１００】
（付記１）データを記憶する複数のディスク記憶デバイスと、前記複数のディスク記憶デバイスに伝送経路を介し接続され、上位からのアクセス指示に応じて、前記ディスク記憶デバイスをアクセス制御するストレージコントローラとを有し、前記ストレージコントローラは、ライトコマンドに付随するライトデータを格納するメモリと、前記ライトコマンド毎に、ＩＤ値を更新し、前記ライトデータの一部又は全部にＩＤ値を挿入して、前記ディスク記憶デバイスのディスクにライトするコントローラとを有し、前記コントローラは、前記ディスク記憶デバイスのライト完了に応じて、前記ライト完了したディスク記憶デバイスから前記ライトデータの一部又は全部をリードし、前記メモリに格納し、前記リードしたデータ中のＩＤ値と、前記挿入したＩＤ値を比較して、前記ディスク記憶デバイスのライト抜けを検出することを特徴とするデータストレージシステム。
【０１０１】
（付記２）前記コントローラは、前記ライトデータのデータブロック内のブロックＩＤ内に、前記ＩＤ値を挿入することを特徴とする付記１のデータストレージシステム。
【０１０２】
（付記３）前記コントローラは、前記ディスク記憶デバイスにライトするライトデータの先頭又は末尾ブロックに前記ＩＤ値を挿入し、前記ライト完了したディスク記憶デバイスから前記ライトデータの先頭又は末尾ブロックをリードし、前記メモリに格納することを特徴とする付記１のデータストレージシステム。
【０１０３】
（付記４）前記コントローラは、前記ディスク記憶デバイスにライトするライトデータの全ブロックに前記ＩＤ値を挿入し、前記ライト完了したディスク記憶デバイスから前記ライトデータの全ブロックをリードし、前記メモリに格納することを特徴とする付記１のデータストレージシステム。
【０１０４】
（付記５）前記コントローラは、前記ディスク記憶デバイスにライトアクセス指示を行う制御モジュールと、前記ライトアクセス指示に応じて、前記ライトコマンド毎に、ＩＤ値を更新し、前記ライトデータの一部又は全部にＩＤ値を挿入して、前記ディスク記憶デバイスのディスクにライトし、前記ディスク記憶デバイスのライト完了に応じて、前記ライト完了したディスク記憶デバイスから前記ライトデータの一部又は全部をリードし、前記メモリに格納し、前記リードしたデータ中のＩＤ値と、前記挿入したＩＤ値を比較して、前記ディスク記憶デバイスのライト抜けを検出するディスクドライバモジュールとを有することを特徴とする付記１のデータストレージシステム。
【０１０５】
（付記６）前記上位とのインターフェース制御を行う第１のインターフェース部と、前記複数のディスク記憶デバイスとのインターフェース制御を行う第２のインターフェース部とを更に有し、前記第２のインターフェース部が、前記伝送経路により前記複数のディスク記憶デバイスと接続することを特徴とする付記１のデータストレージシステム。
【０１０６】
（付記７）前記コントローラは、前記メモリのキャッシュ領域に格納された前記ライトデータの一部又は全部にＩＤ値を挿入して、前記ディスク記憶デバイスのディスクにライトし、前記ディスク記憶デバイスのライト完了に応じて、前記ライト完了したディスク記憶デバイスから前記ライトデータの一部又は全部をリードし、前記メモリのデータバッファ領域に格納することを特徴とする付記１のデータストレージシステム。
【０１０７】
（付記８）上位とのインターフェース制御を行う第１のインターフェース部と、データを記憶する複数のディスク記憶デバイスとのインターフェース制御を行う第２のインターフェース部と、前記上位からのアクセス指示に応じて、前記ディスク記憶デバイスをアクセス制御するコントローラと、ライトコマンドに付随するライトデータを格納するメモリとを有し、前記コントローラは、前記ライトコマンド毎に、ＩＤ値を更新し、前記ライトデータの一部又は全部にＩＤ値を挿入して、前記ディスク記憶デバイスのディスクにライトし、前記ディスク記憶デバイスのライト完了に応じて、前記ライト完了したディスク記憶デバイスから前記ライトデータの一部又は全部をリードし、前記メモリに格納し、前記リードしたデータ中のＩＤ値と、前記挿入したＩＤ値を比較して、前記ディスク記憶デバイスのライト抜けを検出することを特徴とするストレージ制御装置。
【０１０８】
（付記９）前記コントローラは、前記ライトデータのデータブロック内のブロックＩＤ内に、前記ＩＤ値を挿入することを特徴とする付記８のストレージ制御装置。
【０１０９】
（付記１０）前記コントローラは、前記ディスク記憶デバイスにライトするライトデータの先頭又は末尾ブロックに前記ＩＤ値を挿入し、前記ライト完了したディスク記憶デバイスから前記ライトデータの先頭又は末尾ブロックをリードし、前記メモリに格納することを特徴とする付記８のストレージ制御装置。
【０１１０】
（付記１１）前記コントローラは、前記ディスク記憶デバイスにライトするライトデータの全ブロックに前記ＩＤ値を挿入し、前記ライト完了したディスク記憶デバイスから前記ライトデータの全ブロックをリードし、前記メモリに格納することを特徴とする付記８のストレージ制御装置。
【０１１１】
（付記１２）前記コントローラは、前記ディスク記憶デバイスにライトアクセス指示を行う制御モジュールと、前記ライトアクセス指示に応じて、前記ライトコマンド毎に、ＩＤ値を更新し、前記ライトデータの一部又は全部にＩＤ値を挿入して、前記ディスク記憶デバイスのディスクにライトし、前記ディスク記憶デバイスのライト完了に応じて、前記ライト完了したディスク記憶デバイスから前記ライトデータの一部又は全部をリードし、前記メモリに格納し、前記リードしたデータ中のＩＤ値と、前記挿入したＩＤ値を比較して、前記ディスク記憶デバイスのライト抜けを検出するディスクドライバモジュールとを有することを特徴とする付記８のストレージ制御装置。
【０１１２】
（付記１３）前記コントローラは、前記メモリのキャッシュ領域に格納された前記ライトデータの一部又は全部にＩＤ値を挿入して、前記ディスク記憶デバイスのディスクにライトし、前記ディスク記憶デバイスのライト完了に応じて、前記ライト完了したディスク記憶デバイスから前記ライトデータの一部又は全部をリードし、前記メモリのデータバッファ領域に格納することを特徴とする付記８のストレージ制御装置。
【０１１３】
（付記１４）データを記憶する複数のディスク記憶デバイスに伝送経路を介し接続され、上位からのアクセス指示に応じて、前記ディスク記憶デバイスをアクセス制御するコントローラと、前記上位とのインターフェース制御を行う第１のインターフェース部と、前記複数のディスク記憶デバイスとのインターフェース制御を行う第２のインターフェース部とを有するストレージシステムのディスクのライト抜け診断方法において、ライトコマンドに付随するライトデータをメモリに格納するステップと、前記ライトコマンド毎に、ＩＤ値を更新し、前記ライトデータの一部又は全部にＩＤ値を挿入するステップと、前記ディスク記憶デバイスのディスクに前記ＩＤ値を挿入したライトデータをライトするステップと、前記ディスク記憶デバイスのライト完了に応じて、前記ライト完了したディスク記憶デバイスから前記ライトデータの一部又は全部をリードし、前記メモリに格納するステップと、前記リードしたデータ中のＩＤ値と、前記挿入したＩＤ値を比較して、前記ディスク記憶デバイスのライト抜けを検出するステップとを有することを特徴とするデータストレージシステムのディスクのライト抜け診断方法。
【０１１４】
（付記１５）前記挿入ステップは、前記ライトデータのデータブロック内のブロックＩＤ内に、前記ＩＤ値を挿入するステップからなることを特徴とする付記１４のデータストレージシステムのディスクのライト抜け診断方法。
【０１１５】
（付記１６）前記挿入ステップは、前記ディスク記憶デバイスにライトするライトデータの先頭又は末尾ブロックに前記ＩＤ値を挿入するステップからなり、前記格納するステップは、前記ライト完了したディスク記憶デバイスから前記ライトデータの先頭又は末尾ブロックをリードし、前記メモリに格納するステップからなることを特徴とする付記１４のデータストレージシステムのディスクのライト抜け診断方法。
【０１１６】
（付記１７）前記挿入ステップは、前記ディスク記憶デバイスにライトするライトデータの全ブロックに前記ＩＤ値を挿入するステップからなり、前記格納するステップは、前記ライト完了したディスク記憶デバイスから前記ライトデータの全ブロックをリードし、前記メモリに格納するステップからなることを特徴とする付記１４のデータストレージシステムのディスクのライト抜け診断方法。
【０１１７】
（付記１８）前記コントローラの制御モジュールにより、前記ディスク記憶デバイスにライトアクセス指示を行い、ディスクドライバにより、前記挿入ステップ、前記ディスク記憶デバイスのディスクにライトするステップ、前記ディスク記憶デバイスのライト完了に応じて、前記ライト完了したディスク記憶デバイスから前記ライトデータの一部又は全部をリードし、前記メモリに格納するステップ、前記ディスク記憶デバイスのライト抜けを検出するステップを実行することを特徴とする付記１４のデータストレージシステムのディスクのライト抜け診断方法。
【０１１８】
（付記１９）前記挿入ステップは、前記メモリのキャッシュ領域に格納された前記ライトデータの一部又は全部にＩＤ値を挿入するステップからなり、前記メモリに格納するステップは、前記ライト完了したディスク記憶デバイスから前記ライトデータの一部又は全部をリードし、前記メモリのデータバッファ領域に格納するステップからなることを特徴とする付記１４のデータストレージシステムのディスクのライト抜け診断方法。
【０１１９】
（付記２０）前記ＩＤ値の挿入を、前記ライトデータの一部又は全部のいずれかに選択するステップを更に有することを特徴とする付記１４のデータストレージシステムのディスクのライト抜け診断方法。
【産業上の利用可能性】
【０１２０】
コントローラが、ライトデータにＩＤを付して、該当ディスクドライブへのライトアクセス後、ディスクドライブから該当ライトデータをリードし、そのリードデータのＩＤと、付したＩＤを比較する。このため、個々のディスクドライブのライトデータが、ヘッドで正常に書き込まれたかを、ＩＤの比較のみで、即座に診断できる。又、ＩＤは、ライトコマンド毎に、更新するため、古いライトデータと新しいライトデータを識別でき、正確に診断でき、即座にディスクドライブの障害を検出できる。
【図面の簡単な説明】
【０１２１】
【図１】本発明の一実施の形態のデータストレージシステムの説明図である。
【図２】本発明の他の実施の形態のデータストレージシステムの説明図である。
【図３】図１及び図２のストレージコントローラの構成図である。
【図４】図１乃至図３の伝送経路とディスクエンクロージャの構成図である。
【図５】図３のコントローラのソフトウェアモジュールの構成図である。
【図６】図３及び図５のライトデータのデータブロックのフォーマットの説明図である。
【図７】本発明の一実施の形態のディスクライト抜け診断処理フロー図（その１）である。
【図８】本発明の一実施の形態のディスクライト抜け診断処理フロー図（その２）である。
【図９】本発明の第１の形態のライト抜け診断処理動作の説明図である。
【図１０】本発明の第２の実施の形態のライト抜け診断処理動作の説明図である。
【図１１】本発明の第３の実施の形態のライト抜け診断処理動作の説明図である。
【図１２】本発明の第４の実施の形態のライト抜け診断処理動作の説明図である。
【符号の説明】
【０１２２】
１−１，１−２，１−３，１−４  ディスクドライブ
２−１、２−２  ＦＣループ
３  ホスト
４  ストレージ制御装置（ストレージコントローラ）
４０  コントローラ
４００  制御ユニット
４１０  メモリ
４１２  キャッシュメモリ
４１４  ＩＤカウンター
４１６  データバッファ
６３０  ディスクドライバ
４１  チャネルアダプタ
４２  デバイスアダプタ
４３  通信ユニット（DMAエンジン）
【図１】
2007122476.tif 000003
【図２】
2007122476.tif 000004
【図３】
2007122476.tif 000005
【図４】
2007122476.tif 000006
【図５】
2007122476.tif 000007
【図６】
2007122476.tif 000008
【図７】
2007122476.tif 000009
【図８】
2007122476.tif 000010
【図９】
2007122476.tif 000011
【図１０】
2007122476.tif 000012
【図１１】
2007122476.tif 000013
【図１２】
2007122476.tif 000014