(57)【要約】【課題】  記憶装置に対してホストデータを記録する上での信頼性を向上させるためのストレージ技術を提供する。【解決手段】  ストレージシステム１０は、ストレージ部５０に対して、ライトデータに基づく第１のチェックコードをキャッシュメモリ３７０に記憶し、第１のチェックコードが付加されたライトデータの書き込みを、所定の記憶領域を指定して指示した後、該所定の記憶領域に記録されているデータの読み出しを、ストレージ部５０に対して指示し、該読み出されたデータに基づき第２のチェックコードを生成し、第１および第２のチェックコードの対応関係が正しい場合に、ライトデータがストレージ部５０へと正常に記録されたと判断する。【選択図】  図２
2006072435.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶可能な複数の記憶領域を有する記憶装置を用いて、ホストコンピュータが取り扱うホストデータを保存するストレージシステムであって、
前記ホストコンピュータ側から書き込みを指示されたホストデータを、ライトデータとして受け取るライトデータ受取手段と、
該受け取ったライトデータと所定の対応関係を有するチェックコードを第１のチェックコードとして該ライトデータに基づいて生成し、該第１のチェックコードを該ライトデータに付加するチェックコード付加手段と、
前記生成された第１のチェックコードを記憶するキャッシュメモリと、
前記記憶装置に対して、前記第１のチェックコードが付加されたライトデータの書き込みを、前記複数の記憶領域のうちの所定の記憶領域を指定して指示する書き込み指示手段と、
該書き込みの後、前記記憶装置に対して、該書き込みが指定された記憶領域に記憶されているデータの読み出しを、該記憶領域を指定して指示する読み出し指示手段と、
該読み出されたデータと所定の対応関係を有するチェックコードを第２のチェックコードとして該データに基づいて生成するチェックコード生成手段と、
前記キャッシュメモリに記憶されている第１のチェックコードと、前記生成された第２のチェックコードとを比較し、両チェックコードの対応関係が正しい場合に、前記ライトデータが前記記憶装置へと正常に記録されたと判断する記録検査手段と
を備えたストレージシステム。
【請求項２】
データを記憶可能な複数の記憶領域を有する記憶装置を用いて、ホストコンピュータが取り扱うホストデータを保存するストレージシステムであって、
前記ホストコンピュータ側から書き込みを指示されたホストデータを、ライトデータとして受け取るライトデータ受取手段と、
該受け取ったライトデータと所定の対応関係を有するチェックコードを第１のチェックコードとして該ライトデータに基づいて生成し、該第１のチェックコードを該ライトデータに付加するチェックコード付加手段と、
前記生成された第１のチェックコードを記憶するキャッシュメモリと、
前記記憶装置に対して、前記第１のチェックコードが付加されたライトデータの書き込みを、前記複数の記憶領域のうちの所定の記憶領域を指定して指示する書き込み指示手段と、
該書き込みの後、前記記憶装置に対して、該書き込みが指定された記憶領域に記憶されているデータの読み出しを、該記憶領域を指定して指示する読み出し指示手段と、
該読み出されたデータに付加されているチェックコードを第２のチェックコードとして抽出するチェックコード抽出手段と、
前記キャッシュメモリに記憶されている第１のチェックコードと、前記抽出された第２のチェックコードとを比較し、両チェックコード同士が一致する場合に、前記ライトデータが前記記憶装置へと正常に記録されたと判断する記録検査手段と
を備えたストレージシステム。
【請求項３】
前記記憶装置を複数備え、
更に、前記複数の記憶装置をＲＡＩＤ技術によって制御するＲＡＩＤコントローラを備えた請求項１または２記載のストレージシステム。
【請求項４】
前記ＲＡＩＤコントローラは、前記記録検査手段によって前記ライトデータが正常に記録されなかったと判断された記憶装置の利用を禁止し、該禁止された記憶装置に保存されていたデータを、該記憶装置とは異なる他の記憶装置に復旧する禁止復旧手段を備えた請求項３記載のストレージシステム。
【請求項５】
前記ＲＡＩＤコントローラは、前記記録検査手段によって前記ライトデータが正常に記録されなかったと判断された記憶装置に保存されていたデータを復旧し、該復旧されたデータを該記憶装置に上書きする上書復旧手段を備えた請求項３記載のストレージシステム。
【請求項６】
請求項３記載のストレージシステムであって、
更に、前記ライトデータの書き込みが指示される前に、該ライトデータの書き込みが指定される前記所定の記憶領域と所定の対応関係を有するアドレスコードを生成し、該アドレスコードを該ライトデータに付加するアドレスコード付加手段と、
前記記憶装置に保存されているデータの記憶領域と、該データに付加されているアドレスコードとの対応関係が正しい場合に、該データが正常な記憶領域に保存されていると判断するアドレス誤り検査手段と
を備え、
前記ＲＡＩＤコントローラは、前記記録検査手段によって前記ライトデータが正常に記録されなかったと判断された記憶装置に対して前記アドレス誤り検査手段による誤り検査を行い、該検査によって誤りが検出されたデータを復旧するアドレス復旧手段を備えた
ストレージシステム。
【請求項７】
前記記録検査手段によって前記ライトデータが前記記憶装置へと正常に記録されなかったと判断された場合に、該記憶装置に対する該ライトデータの再度の書き込みを指示する再書き込み指示手段を備えた請求項１ないし６のいずれか記載のストレージシステム。
【請求項８】
前記記録検査手段による判断を実行するか否かを、所定の基準に従って決定する検査決定手段を備えた請求項１ないし７のいずれか記載のストレージシステム。
【請求項９】
前記記録検査手段によって正常に記録されたと判断された後に、前記キャッシュメモリから第１のチェックコードを消去するキャッシュ消去手段を備えた請求項１ないし８のいずれか記載のストレージシステム。
【請求項１０】
前記記憶装置は、磁気ディスクまたは光ディスク，半導体メモリの少なくともいずれかに前記複数の記憶領域を有する装置である請求項１ないし９のいずれか記載のストレージシステム。
【請求項１１】
前記第１および第２のチェックコードの生成における前記所定の対応関係は、水平冗長度検査，巡回冗長検査の少なくともいずれかのコード生成における対応関係である請求項１記載のストレージシステム。
【請求項１２】
前記第１のチェックコードの生成における前記所定の対応関係は、水平冗長度検査，巡回冗長検査の少なくともいずれかのコード生成方式における対応関係である請求項２記載のストレージシステム。
【請求項１３】
前記記憶装置に記録されるライトデータは、前記第１のチェックコードに加え、該ライトデータの書き込みが指定される前記所定の記憶領域と所定の対応関係を有するアドレスコードが付加された態様で記録される請求項１ないし１２のいずれか記載のストレージシステム。
【請求項１４】
データを記憶可能な複数の記憶領域を有する記憶装置を用いて、ホストコンピュータが取り扱うホストデータを保存するストレージシステムにおいて、データを一時的に記憶するキャッシュメモリを有し前記記憶装置に対する前記ホストデータの記録を制御するコントローラによって、前記記憶装置に前記ホストデータを記録するデータ記録方法であって、
前記ホストコンピュータ側から書き込みを指示されたホストデータを、ライトデータとして受け取り、
該受け取ったライトデータと所定の対応関係を有するチェックコードを第１のチェックコードとして該ライトデータに基づいて生成し、該第１のチェックコードを該ライトデータに付加し、
前記コントローラによって、前記生成された第１のチェックコードを前記キャッシュメモリに記憶し、
前記コントローラによって、前記記憶装置に対して、前記第１のチェックコードが付加されたライトデータの書き込みを、前記複数の記憶領域のうちの所定の記憶領域を指定して指示し、
該書き込みの後、前記コントローラによって、前記記憶装置に対して、該書き込みが指定された記憶領域に記憶されているデータの読み出しを、該記憶領域を指定して指示し、
該読み出されたデータと所定の対応関係を有するチェックコードを第２のチェックコードとして該データに基づいて生成し、
前記コントローラによって、前記記憶されている第１のチェックコードと、前記生成された第２のチェックコードとを比較し、両チェックコードの対応関係が正しい場合に、前記ライトデータが前記記憶装置へと正常に記録されたと判断する
データ記録方法。
【請求項１５】
データを記憶可能な複数の記憶領域を有する記憶装置を用いて、ホストコンピュータが取り扱うホストデータを保存するストレージシステムにおいて、データを一時的に記憶するキャッシュメモリを有し前記記憶装置に対する前記ホストデータの記録を制御するコントローラによって、前記記憶装置に前記ホストデータを記録するデータ記録方法であって、
前記ホストコンピュータ側から書き込みを指示されたホストデータを、ライトデータとして受け取り、
該受け取ったライトデータと所定の対応関係を有するチェックコードを第１のチェックコードとして該ライトデータに基づいて生成し、該第１のチェックコードを該ライトデータに付加し、
前記コントローラによって、前記生成された第１のチェックコードを前記キャッシュメモリに記憶し、
前記コントローラによって、前記記憶装置に対して、前記第１のチェックコードが付加されたライトデータの書き込みを、前記複数の記憶領域のうちの所定の記憶領域を指定して指示し、
該書き込みの後、前記コントローラによって、前記記憶装置に対して、該書き込みが指定された記憶領域に記憶されているデータの読み出しを、該記憶領域を指定して指示し、
該読み出されたデータに付加されているチェックコードを第２のチェックコードとして抽出し、
前記コントローラによって、前記記憶されている第１のチェックコードと、前記抽出された第２のチェックコードとを比較し、両チェックコード同士が一致する場合に、前記ライトデータが前記記憶装置へと正常に記録されたと判断する
データ記録方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを記憶可能な記憶装置を用いて、ホストコンピュータが取り扱うホストデータを保存するストレージ技術に関するものである。
【背景技術】
【０００２】
従来のストレージ技術として、ホストデータを記憶装置に記録する際には、チェックコードを付加してホストデータを記憶装置に書き込み、記憶装置に保存されているホストデータをホストコンピュータに引き渡す際には、記憶装置から読み出したホストデータに付加されているチェックコードを用いて、ホストデータの誤りを検査する技術があった。従来のストレージ技術によれば、記憶装置に生じた電気的なノイズや物理的な損壊などによって、記憶装置に保存されているホストデータに誤りが生じてしまった場合であっても、その誤ったホストデータがホストコンピュータによって取り扱われることを防止することができる。なお、チェックコードを用いた検査には、水平冗長度検査（Longitudinal Redundancy Check、以下、ＬＲＣという）や巡回冗長検査（Cyclic Redundancy Check、以下、ＣＲＣという）などの誤り検査方法がある。
【０００３】
下記特許文献１には、記憶装置に保存されているホストデータをホストコンピュータに引き渡す際に、チェックコードを用いた誤り検査を行うストレージ技術が開示されている。
【０００４】
【特許文献１】特開２００１−２０２２９５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来のストレージ技術では、チェックコードを利用して、記憶装置への記録後に生じたホストデータの誤りを検出することが可能であるが、ホストデータとチェックコードと間に整合性を有するような誤りが生じてしまった場合には、その誤りを検出することができなかった。例えば、記憶装置に対してホストデータを記録する際に、記憶装置の正しい記憶領域にホストデータが記録されなかった場合には、最新のデータが記録されるべき記憶領域に、古いデータが記録されたままとなるが、記録されている古いデータと、これに付加されたチェックコードとの間には整合性が保たれている。そのため、その古いデータは、ホストコンピュータに引き渡す際の誤り検査によって正常であると判断されてしまう。
【０００６】
正しい記憶領域にホストデータが記録されない例としては、誤った記憶領域にホストデータが書き込まれてしまう場合（記憶装置ハードディスクドライブの場合には、所謂オフトラックによるもの）や、記憶装置にホストデータが一切書き込まれない場合（記憶装置がハードディスクドライブの場合には、ディスクヘッド回路の一時的な断線によるもの）などが想定される。
【０００７】
本発明は、上記した課題を踏まえ、記憶装置に対してホストデータを記録する際の信頼性を向上させるためのストレージ技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記した課題を解決するため、本発明の第１のストレージシステムは、データを記憶可能な複数の記憶領域を有する記憶装置を用いて、ホストコンピュータが取り扱うホストデータを保存するストレージシステムであって、前記ホストコンピュータ側から書き込みを指示されたホストデータを、ライトデータとして受け取るライトデータ受取手段と、該受け取ったライトデータと所定の対応関係を有するチェックコードを第１のチェックコードとして該ライトデータに基づいて生成し、該第１のチェックコードを該ライトデータに付加するチェックコード付加手段と、前記生成された第１のチェックコードを記憶するキャッシュメモリと、前記記憶装置に対して、前記第１のチェックコードが付加されたライトデータの書き込みを、前記複数の記憶領域のうちの所定の記憶領域を指定して指示する書き込み指示手段と、該書き込みの後、前記記憶装置に対して、該書き込みが指定された記憶領域に記憶されているデータの読み出しを、該記憶領域を指定して指示する読み出し指示手段と、
該読み出されたデータと所定の対応関係を有するチェックコードを第２のチェックコードとして該データに基づいて生成するチェックコード生成手段と、前記キャッシュメモリに記憶されている第１のチェックコードと、前記生成された第２のチェックコードとを比較し、両チェックコードの対応関係が正しい場合に、前記ライトデータが前記記憶装置へと正常に記録されたと判断する記録検査手段とを備えたことを特徴とする。
【０００９】
また、本発明の第１のデータ記録方法は、データを記憶可能な複数の記憶領域を有する記憶装置を用いて、ホストコンピュータが取り扱うホストデータを保存するストレージシステムにおいて、データを一時的に記憶するキャッシュメモリを有し前記記憶装置に対する前記ホストデータの記録を制御するコントローラによって、前記記憶装置に前記ホストデータを記録するデータ記録方法であって、前記ホストコンピュータ側から書き込みを指示されたホストデータを、ライトデータとして受け取り、該受け取ったライトデータと所定の対応関係を有するチェックコードを第１のチェックコードとして該ライトデータに基づいて生成し、該第１のチェックコードを該ライトデータに付加し、前記コントローラによって、前記生成された第１のチェックコードを前記キャッシュメモリに記憶し、前記コントローラによって、前記記憶装置に対して、前記第１のチェックコードが付加されたライトデータの書き込みを、前記複数の記憶領域のうちの所定の記憶領域を指定して指示し、該書き込みの後、前記コントローラによって、前記記憶装置に対して、該書き込みが指定された記憶領域に記憶されているデータの読み出しを、該記憶領域を指定して指示し、該読み出されたデータと所定の対応関係を有するチェックコードを第２のチェックコードとして該データに基づいて生成し、前記コントローラによって、前記記憶されている第１のチェックコードと、前記生成された第２のチェックコードとを比較し、両チェックコードの対応関係が正しい場合に、前記ライトデータが前記記憶装置へと正常に記録されたと判断することを特徴とする。
【００１０】
本発明の第１のストレージシステムおよび第１のデータ記録方法によれば、記憶装置にライトデータを記録する際に、記憶装置の正しい記憶領域にライトデータが記録されなかったことを判別することができ、その対策を取ることができる。その結果、記憶装置に対してホストデータを記録する上での信頼性を向上させることができる。また、ライトデータそのものではなく、ライトデータよりもデータ量の少ないチェックコードを比較することによってライトデータの記録を検査するため、ストレージシステム内部でのデータ転送量を抑制し、検査処理速度を向上させることができる。
【００１１】
上記した課題を解決するため、本発明の第２のストレージシステムは、データを記憶可能な複数の記憶領域を有する記憶装置を用いて、ホストコンピュータが取り扱うホストデータを保存するストレージシステムであって、前記ホストコンピュータ側から書き込みを指示されたホストデータを、ライトデータとして受け取るライトデータ受取手段と、該受け取ったライトデータと所定の対応関係を有するチェックコードを第１のチェックコードとして該ライトデータに基づいて生成し、該第１のチェックコードを該ライトデータに付加するチェックコード付加手段と、前記生成された第１のチェックコードを記憶するキャッシュメモリと、前記記憶装置に対して、前記第１のチェックコードが付加されたライトデータの書き込みを、前記複数の記憶領域のうちの所定の記憶領域を指定して指示する書き込み指示手段と、該書き込みの後、前記記憶装置に対して、該書き込みが指定された記憶領域に記憶されているデータの読み出しを、該記憶領域を指定して指示する読み出し指示手段と、該読み出されたデータに付加されているチェックコードを第２のチェックコードとして抽出するチェックコード抽出手段と、前記キャッシュメモリに記憶されている第１のチェックコードと、前記抽出された第２のチェックコードとを比較し、両チェックコード同士が一致する場合に、前記ライトデータが前記記憶装置へと正常に記録されたと判断する記録検査手段とを備えたことを特徴とする。
【００１２】
また、本発明の第２のデータ記録方法は、データを記憶可能な複数の記憶領域を有する記憶装置を用いて、ホストコンピュータが取り扱うホストデータを保存するストレージシステムにおいて、データを一時的に記憶するキャッシュメモリを有し前記記憶装置に対する前記ホストデータの記録を制御するコントローラによって、前記記憶装置に前記ホストデータを記録するデータ記録方法であって、前記ホストコンピュータ側から書き込みを指示されたホストデータを、ライトデータとして受け取り、該受け取ったライトデータと所定の対応関係を有するチェックコードを第１のチェックコードとして該ライトデータに基づいて生成し、該第１のチェックコードを該ライトデータに付加し、前記コントローラによって、前記生成された第１のチェックコードを前記キャッシュメモリに記憶し、前記コントローラによって、前記記憶装置に対して、前記第１のチェックコードが付加されたライトデータの書き込みを、前記複数の記憶領域のうちの所定の記憶領域を指定して指示し、該書き込みの後、前記コントローラによって、前記記憶装置に対して、該書き込みが指定された記憶領域に記憶されているデータの読み出しを、該記憶領域を指定して指示し、該読み出されたデータに付加されているチェックコードを第２のチェックコードとして抽出し、前記コントローラによって、前記記憶されている第１のチェックコードと、前記抽出された第２のチェックコードとを比較し、両チェックコード同士が一致する場合に、前記ライトデータが前記記憶装置へと正常に記録されたと判断することを特徴とする。
【００１３】
本発明の第２のストレージシステムおよび第２のデータ記録方法によれば、第１のストレージシステムおよび第１のデータ記録方法と同様に、記憶装置に対してホストデータを記録する上での信頼性の向上や、検査処理速度の向上を図ることができる。また、読み出されたデータから第２のチェックコードを生成する第１のストレージシステムおよび第１のデータ記録方法と異なり、読み出されたデータに付加されているチェックコードを第２のチェックコードとして取り扱うことによって、ライトデータの記録検査に要する処理負荷の低減を図り、検査処理速度を更に向上させることができる。
【００１４】
上記の構成を有する本発明の第１および第２のストレージシステムは、以下の態様を採ることもできる。前記記憶装置を複数備え、更に、前記複数の記憶装置をＲＡＩＤ技術によって制御するＲＡＩＤコントローラを備えても良い。これによって、ホストデータ保存全般の信頼性を向上させることができる。
【００１５】
また、ＲＡＩＤコントローラを備える場合に、前記ＲＡＩＤコントローラは、前記記録検査手段によって前記ライトデータが正常に記録されなかったと判断された記憶装置の利用を禁止し、該禁止された記憶装置に保存されていたデータを、該記憶装置とは異なる他の記憶装置に復旧する禁止復旧手段を備えても良い。これによって、信頼性の低い記録エラーの発生した記憶装置の利用を禁止することによって、再度の記録エラーの発生を予防すると共に、その記憶装置に保存されていたホストデータを、他の記憶装置に退避させることができる。
【００１６】
また、ＲＡＩＤコントローラを備える場合に、前記ＲＡＩＤコントローラは、前記記録検査手段によって前記ライトデータが正常に記録されなかったと判断された記憶装置に保存されていたデータを復旧し、該復旧されたデータを該記憶装置に上書きする上書復旧手段を備えても良い。これによって、誤った記憶領域にライトデータが記録されることによって、その記憶領域に保存されていたホストデータが書き換えられてしまった場合であっても、その記憶装置に保存されていたデータを修復することができる。
【００１７】
また、ＲＡＩＤコントローラを備える場合に、更に、前記ライトデータの書き込みが指示される前に、該ライトデータの書き込みが指定される前記所定の記憶領域と所定の対応関係を有するアドレスコードを生成し、該アドレスコードを該ライトデータに付加するアドレスコード付加手段と、前記記憶装置に保存されているデータの記憶領域と、該データに付加されているアドレスコードとの対応関係が正しい場合に、該データが正常な記憶領域に保存されていると判断するアドレス誤り検査手段とを備え、前記ＲＡＩＤコントローラは、前記記録検査手段によって前記ライトデータが正常に記録されなかったと判断された記憶装置に対して前記アドレス誤り検査手段による誤り検査を行い、該検査によって誤りが検出されたデータを復旧するアドレス復旧手段を備えても良い。これによって、誤った記憶領域にライトデータが記録されることによって、その記憶領域に保存されていたホストデータが書き換えられてしまった場合であっても、そのホストデータを修復することができる。
【００１８】
また、前記記録検査手段によって前記ライトデータが前記記憶装置へと正常に記録されなかったと判断された場合に、該記憶装置に対する該ライトデータの再度の書き込みを指示する再書き込み指示手段を備えても良い。これによって、記録損なったライトデータの記録を実現することができる。
【００１９】
また、前記記録検査手段による判断を実行するか否かを、所定の基準に従って決定する検査決定手段を備えても良い。これによって、保存されるホストデータの重要性や、記憶装置の信頼性，求められる記録速度などの条件に応じて、記録時の誤り検査の実行を選択することができる。なお、記録検査手段による判断を実行するか否かの所定の基準としては、論理ユニット単位，ＲＡＩＤグループ単位，ホストコンピュータと接続するポート単位，ホストコンピュータ単位などの種々の基準を採用することができる。
【００２０】
また、前記記録検査手段によって正常に記録されたと判断された後に、前記キャッシュメモリから第１のチェックコードを消去するキャッシュ消去手段を備えても良い。これによって、キャッシュメモリに必要とされる記憶容量の増大を抑制することができる。
【００２１】
なお、前記記憶装置は、磁気ディスクまたは光ディスク，半導体メモリの少なくともいずれかに前記複数の記憶領域を有する装置であるとしても良い。また、第１のストレージシステムにおいては、前記第１および第２のチェックコードの生成は、水平冗長度検査，巡回冗長検査の少なくともいずれかにおけるコード生成方式に従って行われることとしても良いし、第２のストレージシステムにおいては、前記第１のチェックコードの生成は、水平冗長度検査，巡回冗長検査の少なくともいずれかにおけるコード生成方式に従って行われることとしても良い。また、前記記憶装置に記録されるライトデータは、前記第１のチェックコードに加え、該ライトデータの書き込みが指定される前記所定の記憶領域と所定の対応関係を有するアドレスコードが付加された態様で記録されることとしても良い。
【発明を実施するための最良の形態】
【００２２】
以上説明した本発明の構成および作用を一層明らかにするために、以下本発明を適用したストレージシステムについて、次の順序で説明する。
【００２３】
目次
Ａ．第１実施例
Ａ−（１）ストレージシステム１０の構成
Ａ−（２）ストレージシステム１０の動作
Ａ−（２−１）．ライトバック処理
Ａ−（２−２）．データ記録処理
Ａ−（２−３）．記録検査処理（第１実施例）
Ｂ．第２実施例（記録検査処理）
Ｃ．第３実施例（記録エラー処理）
Ｄ．第４実施例（記録エラー処理）
Ｅ．第５実施例（記録エラー処理）
Ｆ．その他の実施形態
【００２４】
Ａ．第１実施例：
Ａ−（１）ストレージシステム１０の構成：
図１は、ストレージシステム１０の外観構成を示す全体斜視図である。本発明の実施例の一つであるストレージシステム１０は、データを記憶可能な複数の記録領域を有する複数のハードディスクドライブ（Hard Disk Drive、以下、ＨＤＤという）５１０で構成されたストレージ部５０と、ストレージ部５０をＲＡＩＤ（Redundant Arrays of Independent (Inexpensive) Disks、レイド）技術によって制御するＲＡＩＤ制御部３０を備える。ストレージシステム１０は、ホストコンピュータシステムＨＣＳに接続され、ホストコンピュータシステムＨＣＳにおける各種ホストコンピュータが取り扱うホストデータを、複数のＨＤＤ５１０を用いて保存する。
【００２５】
ホストコンピュータシステムＨＣＳの態様としては、ホストコンピュータである種々のサーバＳＶが接続されたＳＡＮ(Storage Area Network)を構成するシステムや、ホストコンピュータである種々のサーバＳＶが接続されたネットワークを構成しストレージシステム１０をＮＡＳ(Network Attached Storage)として利用するシステム，ホストコンピュータであるメインフレームＭＦで構成されたシステムなどがあり、これらのシステムを混在させたシステムであっても良い。なお、ホストコンピュータとしては、サーバＳＶやメインフレームＭＦに限るものではなく、各種のコンピュータやパーソナルコンピュータであっても良い。
【００２６】
ストレージシステム１０は、ホストコンピュータシステムＨＣＳの態様に応じて、ファイバチャンネル(Fibre Channel)などのＳＣＳＩ−３(Small Computer System Interface - 3)や、ギガビットイーサネット(Gigabit Ethernet)（イーサネット(Ethernet)は登録商標），メインフレームシリアルチャンネル，メインフレームファイバチャンネルなどの種々のインターフェースを介して、ホストコンピュータシステムＨＣＳと接続することが可能である。
【００２７】
図２は、ストレージシステム１０の内部構成を示すブロック図である。ストレージシステム１０のＲＡＩＤ制御部３０は、ＲＡＩＤ制御部３０内の各部の動作を制御するための演算処理を行うセントラルプロセッシングユニット（Central Processing Unit、以下、ＣＰＵという）３１０と、ＣＰＵ３１０の演算処理を規定したプログラムを予め記憶するリードオンリメモリ（Read Only Memory、以下、ＲＯＭという）３１４と、ＣＰＵ３１０が取り扱うデータを一時的に記憶するランダムアクセスメモリ（Random Access Memory、以下、ＲＡＭという）３１２と、ホストコンピュータシステムＨＣＳ側とストレージ部５０の間におけるホストデータのやり取りを制御するための回路を有するデータコントローラ３２０と、データコントローラ３２０が取り扱うデータを一時的に記憶するキャッシュメモリ３７０と、ホストデータと所定の対応関係を有するチェックコードを該ホストデータに基づいて生成するコード生成回路３３０と、２つのチェックコード同士を比較するコード比較回路３４０とを備える。
【００２８】
ＲＡＩＤ制御部３０は、ＣＰＵ３１０の管理下でデータコントローラ３２０がキャッシュメモリ３７０，コード生成回路３３０，コード比較回路３４０との間でデータのやり取りを実行することによって、種々の制御処理を実現する。ＲＡＩＤ制御部３０は、ストレージ部５０を構成する複数のＨＤＤ５１０が有する記憶領域を、ｎ個の論理ユニット(Logical Unit)ＬＵ−１〜ＬＵ−ｎに区分けして取り扱う。各論理ユニットＬＵ−１〜ＬＵ−ｎは、更に、所定のデータ長のデータを記憶可能な記憶容量単位の論理ブロック(Logical Block)に区分けされ、各論理ブロックに通し番号である論理ブロックアドレス(Logical Block Address)が付されている。ＲＡＩＤ制御部３０は、各ＨＤＤ５１０のデータにアクセスする際に、先頭の論理ブロックアドレスと、転送データ長（論理ブロック数）を指定して、連続した複数の論理ブロック単位のデータにアクセスする。なお、本実施例では、論理ブロックは、５１２バイトのデータを記憶可能な記憶容量単位で区分けされているが、任意のデータ長のデータを記憶可能な記憶容量単位で区分けされていても良い。
【００２９】
本実施例では、コード生成回路３３０の生成するチェックコードは、誤り検査方法の一つであるＬＲＣにおけるコード生成方式に従って生成されるＬＲＣコードである。本実施例では、コード生成回路３３０は、論理ブロックに記憶される５１２バイト単位のデータに基づいて１バイトのＬＲＣコードを生成するが、任意のデータ長単位のデータに基づいて任意のデータ長のＬＲＣコードを生成することとしても良い。
【００３０】
ストレージシステム１０は、ＲＡＩＤ制御部３０やストレージ部５０の他、ホストコンピュータシステムＨＣＳとＲＡＩＤ制御部３０との間のインターフェースの変換を行うホストＩ／Ｆ２０と、ＲＡＩＤ制御部３０とストレージ部５０との間のインターフェースの変換を行うストレージＩ／Ｆ４０とを備える。ストレージＩ／Ｆ４０とストレージ部５０との間は、ＩＤＥ（Integrated Drive Electronics）やＳＣＳＩ（Small Computer System Interface）などのインターフェースを介して接続され、本実施例では、ファイバチャンネルを介して接続されている。
【００３１】
Ａ−（２）ストレージシステム１０の動作：
Ａ−（２−１）．ライトバック処理：
図３は、ＲＡＩＤ制御部３０のライトバック処理を示すフローチャートである。ライトバック処理は、ホストコンピュータシステムＨＣＳにおけるホストコンピュータからストレージシステム１０に対するホストデータの書き込みを実現させる処理である。ホストＩ／Ｆ２０がホストコンピュータシステムＨＣＳからホストデータの書き込みの指示であるライトコマンドを受信すると、ＲＡＩＤ制御部３０は、ライトバック処理を開始する。
【００３２】
ＲＡＩＤ制御部３０は、ライトバック処理を開始すると、ホストＩ／Ｆ２０を介して、ホストコンピュータシステムＨＣＳ側から書き込みを指示されたホストデータを、ライトデータとして受け取る（ステップＳ１１０）。なお、本実施例では、ＲＡＩＤ制御部３０は、ホストコンピュータシステムＨＣＳ側から書き込みを指示されたホストデータを、５１２バイト単位に区切り、５１２バイト単位のホストデータを１つのライトデータとして取り扱うが、任意のデータ長単位のホストデータを１つのライトデータとして取り扱うこととしても良い。以下の説明では、説明の便宜上、１つのライトデータについてのみの取り扱いを述べるが、実際には、１つのホストデータを構成する複数のライトデータの全てについて同様の取り扱いがなされる。
【００３３】
ＲＡＩＤ制御部３０は、ライトデータを受け取った後（ステップＳ１１０）、そのライトデータをキャッシュメモリ３７０に格納する（ステップＳ１２０）。その後、ＲＡＩＤ制御部３０は、ホストデータの書き込みの終了をホストコンピュータシステムＨＣＳ側に対して応答する（ステップＳ１３０）。これによって、ホストコンピュータシステムＨＣＳにおけるホストコンピュータは、ストレージシステム１０内においてホストデータの書き込みが実際に終了するのを待たずとも、次の処理へ移行することができる。
【００３４】
ＲＡＩＤ制御部３０は、ライトデータの書き込みの終了を応答した後（ステップＳ１３０）、ストレージ部５０に対するライトデータの記録を行うデータ記録処理を実行して（ステップＳ１４０）、ライトバック処理を終了する。なお、ストレージシステム１０に対するホストデータの書き込み指示が複数なされた場合には、ＲＡＩＤ制御部３０は、各書き込み指示に応じた複数のライトバック処理を並行して実行する。
【００３５】
Ａ−（２−２）．データ記録処理：
図４は、ＲＡＩＤ制御部３０のデータ記録処理を示すフローチャートである。ＲＡＩＤ制御部３０は、データ記録処理を開始すると、キャッシュメモリ３７０に格納されているライトデータの処理経過を管理するためのデータベースであるキャッシュ管理テーブルＤＴに、キャッシュメモリ３７０に格納されたライトデータ（ステップＳ１３０）の登録を行う（ステップＳ２１０）。本実施例では、キャッシュ管理テーブルＤＴは、ＲＡＭ３１２に作成される。
【００３６】
図５は、キャッシュ管理テーブルＤＴの一例を示す説明図である。キャッシュ管理テーブルＤＴには、図５に示すように、個々のライトデータを識別可能なデータＩＤと、そのライトデータについてのストレージ部５０に対する記録処理が完了したか否かの記録状況と、そのライトデータについての後述する記録検査処理が完了したか否かの検査状況とが登録される。
【００３７】
キャッシュ管理テーブルＤＴに登録されるデータＩＤは、ライトデータ毎の識別が可能な識別番号であればよく、論理ユニット番号（ＬＵＮ，Logical Unit Number）と論理ブロックアドレスとの組み合わせたものや、キャッシュメモリ３７０上のアドレスを用いることとしても良い。
【００３８】
キャッシュ管理テーブルＤＴに登録される記録状況および検査状況には、各処理が未了である場合には２値データの「０」が登録され、各処理が完了した場合には２値データの「１」が登録される。キャッシュ管理テーブルＤＴにデータＩＤが登録される際には（ステップＳ２１０）、その記録状況および検査状況には、「０」が登録される。
【００３９】
ＲＡＩＤ制御部３０は、キャッシュ管理テーブルＤＴにライトデータを登録した後（ステップＳ２１０）、コード生成回路３３０によって、ライトデータと所定の対応関係を有するＬＲＣコードを第１のＬＲＣコードとして該ライトデータに基づいて生成し（ステップＳ２２０）、該第１のＬＲＣコードを該ライトデータに付加してキャッシュメモリ３７０に格納する（ステップＳ２３０）。
【００４０】
その後、ＲＡＩＤ制御部３０は、ストレージ部５０に対して、第１のＬＲＣコードが付加されたライトデータの書き込みを、ストレージ部５０における所定の記憶領域を指定して指示する（ステップＳ２４０）。ライトデータの書き込みが指定される所定の記憶領域は、ＲＡＩＤ制御部３０が採用するＲＡＩＤ技術に基づいて決定される記憶領域である。本実施例では、１つのライトデータは、１つの論理ブロックに記憶され、ライトデータが記憶される記憶領域は、論理ブロックアドレスで特定することが可能である。
【００４１】
ＲＡＩＤ制御部３０は、ライトデータの書き込みを指示した後（ステップＳ２４０）、書き込み指定された記憶領域を有するＨＤＤ５１０から正常に書き込みを終了したとの応答があれば（ステップＳ２５０）、図５に示したキャッシュ管理テーブルの記録状況に「１」を登録することによって、記録済みの登録を行う（ステップＳ２６０）。
【００４２】
一方、正常に書き込みを終了したとの応答がない場合には（ステップＳ２５０）、応答エラー処理を実行する（ステップＳ２９０）。応答エラー処理としては、ストレージシステム１０のリセットも考えられるが、本実施例では、ストレージ部５０に対するライトデータの書き込み（ステップＳ２４０）からの処理をリトライする。
【００４３】
ＲＡＩＤ制御部３０は、記録済みの登録を行った後（ステップＳ２６０）、ライトデータの記録が検査対象であれば（ステップＳ２７０）、ライトデータが誤り無く記録されたか否かを検査する記録検査処理を実行し（ステップＳ２８０）、ライトデータの記録が検査対象でなければ（ステップＳ２７０）、データ記録処理を終了する。なお、記録検査処理の詳細については後述する。
【００４４】
図６は検査管理テーブルＣＴの一例を示す説明図である。ライトデータの記録が検査対象であるか否かの判断（ステップＳ２７０）は、検査管理テーブルＣＴに従って決定される。本実施例では、検査管理テーブルＣＴは、ストレージシステム１０の初期設定時に、ＲＯＭ３１４に予め記憶されたデフォルト設定がＲＡＭ３１２検査管理テーブルＣＴとして記憶され、ＲＡＭ３１２に記憶された検査管理テーブルＣＴは、ホストコンピュータシステムＨＣＳやストレージシステム１０の管理コンピュータ（図示しない）などから適宜設定の変更が可能とされている。本実施例では、検査管理テーブルＣＴは、図６に示すように、論理ユニット毎に、記録検査処理を実行するのであれば２値データの「１」が登録され、記録検査を実行しないのであれば２値データの「０」が登録されている。ＲＡＩＤ制御部３０は、検査管理テーブルを参照し、ライトデータの記録が行われた論理ユニットが、記録検査の対象であるか否かによって、そのライトデータの記録が検査対象であるか否かを判断する（ステップＳ２７０）。なお、ライトデータの記録が検査対象であるか否かの判断は、論理ユニット単位で行うことに限るものではなく、ＲＡＩＤグループ単位，ホストコンピュータシステムＨＣＳと接続するポート単位，ホストコンピュータシステムＨＣＳにおけるホストコンピュータ単位などの種々の基準を採用しても良いし、ライトデータの記録の全てを検査対象としても良い。
【００４５】
Ａ−（２−３）．記録検査処理（第１実施例）：
図７は、第１の実施例におけるＲＡＩＤ制御部３０の記録検査処理を示すフローチャートである。ＲＡＩＤ制御部３０は、記録検査処理を開始すると、図４に示したデータ記憶処理（ステップＳ２４０）において書き込みが指定された所定の記憶領域に記録されているデータの読み出しを、該記憶領域を指定してストレージ部５０に対して指示する（ステップＳ３１０）。その後、コード生成回路３３０によって、読み出されたデータと所定の対応関係を有するＬＲＣコードを第２のＬＲＣコードとして該データに基づいて生成し（ステップＳ３２０）、生成された第２のＬＲＣコードをキャッシュメモリ３７０に格納する（ステップＳ３３０）。
【００４６】
その後、キャッシュメモリ３７０に格納されている第１のＬＲＣコードと第２のＬＲＣコードとを、コード比較回路３４０によって比較し（ステップＳ３４０）、両チェックコードの対応関係が正しいか否かを判断する（ステップＳ３５０）。本実施例では、両チェックコードの対応関係が正しい場合とは、両チェックコードの値が一致する場合である。
【００４７】
両チェックコードの対応関係が正しい場合には（ステップＳ３５０）、ライトデータがストレージ部５０へと正常に記録されたと判断し（ステップＳ３６０）、図５に示したキャッシュ管理テーブルの検査状況に「１」を登録することによって、記録検査済みの登録を行う（ステップＳ３７０）。その後、図５に示したキャッシュ管理テーブルの記録状況および検査状況が共に「１」が登録されたライトデータおよびそのチェックコードを、キャッシュメモリ３７０から消去し（ステップＳ３７５）、記録検査処理を終了する。
【００４８】
一方、両チェックコードの対応関係が正しくない場合には（ステップＳ３５０）、ライトデータがストレージ部５０へと正常に記録されなかった場合の対策である記録エラー処理を実行する（ステップＳ３８０）。本実施例では、記録エラー処理（ステップＳ３８０）として、ストレージ部５０に対するライトデータの書き込み（図４のステップＳ２４０）からの処理をリトライする。
【００４９】
図８は、第１の実施例におけるデータ移行の様子を示す説明図である。［１］図４に示したデータ記録処理におけるライトデータの格納処理（図４のステップＳ２３０）にて、第１のチェックコードＬＲＣ１が付加されたライトデータは、データコントローラ３２０によってキャッシュメモリ３７０に記憶される。［２］データ記録処理における書き込み指示処理（図４のステップＳ２４０）にて、第１のチェックコードＬＲＣ１が付加されたライトデータは、キャッシュメモリ３７０に記憶されたまま、データコントローラ３２０を介してＨＤＤ５１０に書き込まれる。
【００５０】
［３］図７に示した記録検査処理における読出し指示処理（図７のステップＳ３１０）にて、ＨＤＤ５１０に保存されているチェックコード付きのデータは、データコントローラ３２０に読み出された後、データコントローラ３２０によってチェックコードが削除され、データコントローラ３２０からコード生成回路３３０へと引き渡される。［４］記録検査処理におけるチェックコード生成処理（図７のステップＳ３２０）にて、第２のチェックコードＬＲＣ２が、コード生成回路３３０によって生成される。［５］記録検査処理におけるチェックコードの格納処理（図７のステップＳ３３０）にて、第２のチェックコードＬＲＣ２は、データコントローラ３２０を介してコード生成回路３３０からキャッシュメモリ３７０に記憶される。［６］記録検査処理におけるチェックコードの比較処理にて（図７のステップＳ３４０）にて、キャッシュメモリ３７０に記憶されている第１，２のチェックコードＬＲＣ１，ＬＲＣ２は、データコントローラ３２０を介してコード比較回路３４０へと引き渡される。
【００５１】
以上説明した第１の実施例のストレージシステム１０によれば、ストレージ部５０に対してライトデータを記録する際に、ストレージ部５０における正しい記憶領域にライトデータが記録されなかったことを判別することができ、その対策を取ることができる。その結果、ストレージ部５０に対してホストデータを記録する上での信頼性を向上させることができる。また、ライトデータそのものではなく、ライトデータよりもデータ量の少ないＬＲＣコードを比較することによって、ライトデータの記録を検査するため、ストレージシステム１０内部でのデータ転送量を抑制し、検査処理速度を向上させることができる。
【００５２】
また、ストレージ部５０に備える複数のＨＤＤ５１０は、ＲＡＩＤ制御部３０によりＲＡＩＤ技術によって制御するため、ホストデータ保存全般の信頼性を向上させることができる。また、記録エラー処理（図７のステップＳ３８０）によって、ストレージ部５０に対するライトデータの再度の書き込みを指示することができるため、記録損なったライトデータの記録を実現することができる。また、図７に示した記録検査処理を実行するか否かを、図６に示した検査管理テーブルＣＴに従って決定するため（図４のステップＳ２７０）、ストレージ部５０におけるＨＤＤ５１０の信頼性，ホストコンピュータシステムＨＣＳ側から要求される記録速度などの条件に応じて、記録検査処理の実行を選択することができる。また、正常に記録されたと判断された後に、キャッシュメモリ３７０からライトデータおよびそのＬＲＣコードを消去するため（図７のステップＳ３７５）、キャッシュメモリ３７０に必要とされる記憶容量の増大を抑制することができる。また、図８に示した一連のデータ移行や、チェックコードの生成，チェックコードの比較を、それぞれデータコントローラ３２０，コード生成回路３３０，コード比較回路３４０によるハードウェアで処理を実行するため、検査処理速の高速化を図ることができる。
【００５３】
なお、前述のデータ記録処理（図４）では、ホストコンピュータシステムＨＣＳ側から書き込み指示されたホストデータの記録について説明したが、ＲＡＩＤ５技術に基づくパリティデータや、ＲＡＩＤ１技術に基づくミラーデータ等のＲＡＩＤ技術に基づく冗長データについても、データ記録処理（図４）を適用して、ホストデータと同様に記録を行うこととしても良い。また、前述の記録検査処理（図７）は、ホストデータの記録検査について説明したが、ＲＡＩＤ５技術に基づくパリティデータや、ＲＡＩＤ１技術に基づくミラーデータ等のＲＡＩＤ技術に基づく冗長データについても、記録検査処理（図７）を適用して、ホストデータと同様に記録検査を行うこととしても良い。
【００５４】
Ｂ．第２実施例（記録検査処理）：
本発明の実施例の一つである第２の実施例のストレージシステム１０は、第１の実施例のストレージシステム１０の構成および動作と比べて、その動作の一つである記録検査処理の点で異なる他は同様である。
【００５５】
図９は、第２の実施例におけるＲＡＩＤ制御部３０の記録検査処理を示すフローチャートである。第２の実施例の記録検査処理は、第１の実施例の記録検査処理のように、読み出されたデータに基づいて第２のチェックコードを生成するのではなく（図７のステップＳ３２０）、読み出されたデータに付加されているＬＲＣコードを第２のＬＲＣコードとして抽出する点（ステップＳ４２０）が異なる他は、第１の実施例の記録検査処理と同様である。
【００５６】
図１０は、第２の実施例におけるデータ移行の様子を示す説明図である。第２の実施例では、図８に示した第１の実施例と同様に［１］ライトデータの格納処理、［２］書き込み指示処理が実行された後、［３］図７に示した記録検査処理における読出し指示処理（図７のステップＳ３１０）にて、ＨＤＤ５１０に保存されているチェックコード付きのデータは、データコントローラ３２０に読み出される。［４］記録検査処理におけるチェックコード生成処理（図８のステップＳ４２０）にて、読み出されたデータに付加されているチェックコードを第２のチェックコードＬＲＣ２として抽出する［５］記録検査処理におけるチェックコードの格納処理（図７のステップＳ３３０）にて、第２のチェックコードＬＲＣ２は、データコントローラ３２０からキャッシュメモリ３７０に記憶される。その後、図８に示した第１の実施例と同様に［６］チェックコードの比較処理が実行される。
【００５７】
以上説明した第２の実施例のストレージシステム１０によれば、第１の実施例と同様に、ストレージ部５０に対してホストデータを記録する上での信頼性の向上や、検査処理速度の向上を図ることができる。また、読み出されたデータから第２のチェックコードを生成する第１の実施例と異なり、読み出されたデータに付加されているチェックコードを第２のチェックコードとして取り扱うことによって、ライトデータの記録検査に要する処理負荷の低減を図り、検査処理速度を更に向上させることができる。
【００５８】
Ｃ．第３実施例（記録エラー処理）：
本発明の実施例の一つである第３の実施例のストレージシステム１０は、第１の実施例のストレージシステム１０の構成および動作と比べて、その動作の一つである記録エラー処理の点で異なる他は同様である。
【００５９】
図１１は、第３の実施例におけるＲＡＩＤ制御部３０の記録エラー処理を示すフローチャートである。第３の実施例の記録エラー処理は、第１の実施例の記録エラー処理（ステップＳ３８０）のように、直ちに、ライトデータの書き込みをリトライするのでなく、リトライの前に復旧処理を行う点が異なる。
【００６０】
第３の実施例の記録エラー処理では、ＲＡＩＤ制御部３０は、記録検査処理（図７のステップＳ３５０）においてライトデータが正常に記録されなかったと判断されたＨＤＤ５１０の利用を禁止し（ステップＳ５１０）、利用が禁止されたＨＤＤ５１０に保存されていたデータを、ＲＡＩＤ技術によって他のＨＤＤ５１０に復旧する（ステップＳ５２０）。その後、ストレージ部５０に対するライトデータの書き込み（図４のステップＳ２４０）からの処理をリトライする。
【００６１】
以上説明した第３の実施例のストレージシステム１０によれば、信頼性の低い記録エラーの発生したＨＤＤ５１０の利用を禁止することによって、再度の記録エラーの発生を予防すると共に、そのＨＤＤ５１０に保存されていたホストデータを、他のＨＤＤ５１０に退避させることができる。なお、第３の実施例における記録エラー処理を、第２の実施例における記録エラー処理に適用しても良い。
【００６２】
Ｄ．第４実施例（記録エラー処理）：
本発明の実施例の一つである第４の実施例のストレージシステム１０は、第１の実施例のストレージシステム１０の構成および動作と比べて、その動作の一つである記録エラー処理の点で異なる他は同様である。
【００６３】
図１２は、第４の実施例におけるＲＡＩＤ制御部３０の記録エラー処理を示すフローチャートである。第４の実施例の記録エラー処理は、第１の実施例の記録エラー処理（ステップＳ３８０）のように、直ちに、ライトデータの書き込みをリトライするのでなく、リトライの前に復旧処理を行う点が異なる。
【００６４】
第４の実施例の記録エラー処理では、ＲＡＩＤ制御部３０は、記録検査処理（図７のステップＳ３５０）においてライトデータが正常に記録されなかったと判断されたＨＤＤ５１０に保存されていたデータを、ＲＡＩＤ技術によって復旧し（ステップＳ６１０）、復旧されたデータを、元のＨＤＤ５１０に上書きする（ステップＳ６２０）。その後、ストレージ部５０に対するライトデータの書き込み（図４のステップＳ２４０）からの処理をリトライする。
【００６５】
以上説明した第４の実施例のストレージシステム１０によれば、誤った記憶領域にライトデータが記録されることによって、その記憶領域に保存されていたホストデータが書き換えられてしまった場合であっても、そのＨＤＤ５１０に保存されていたデータを修復することができる。なお、第４の実施例における記録エラー処理を、第２の実施例における記録エラー処理に適用しても良い。
【００６６】
Ｅ．第５実施例（記録エラー処理）：
本発明の実施例の一つである第５の実施例のストレージシステム１０は、第１の実施例のストレージシステム１０の構成および動作と比べて、ライトデータの書き込みが指定される記憶領域と所定の対応関係を有するアドレスコードを該ライトデータに付加する点、および、記録エラー処理の点で異なる他は同様である。
【００６７】
第５の実施例におけるＲＡＩＤ制御部３０は、図４に示したデータ記録処理において、第１のＬＲＣコードに加えアドレスコードが付加された態様でライトデータを記録する（図４のステップＳ２２０〜Ｓ２４０）。本実施例では、アドレスコードの付加は、ホストコンピュータシステムＨＣＳから受け取ったホストデータを、５１２バイト単位のライトデータに区切った際に、先頭のライトデータに対して初期値のアドレスコードを割り当て、これに続くライトデータに対して初期値に１ずつ順に加算したアドレスコードを割り当てることによって行う。このようにアドレスコードが付加された一群のライトデータは、ストレージ部５０における連続した論理ブロックのそれぞれに対して順に記録される。なお、本実施例のアドレスコードは、１バイトのデータ長であるが、任意のデータ長単位のライトデータに対して任意のデータ長のアドレスコードを付加することとしても良い。
【００６８】
図１３は、アドレスコードと論理ブロックアドレスとの関係を模式的に示す説明図である。ホストデータを５１２バイト単位に区切った先頭のライトデータには、アドレスコードＬＡとして初期値「ｘ」が付加され、これに続くライトデータには、初期値「ｘ」に１ずつ加算したアドレスコードＬＡが付加される。ｎ個目のライトデータには、アドレスコードＬＡとして「ｘ＋ｎ」が付加されることとなる。
【００６９】
ＨＤＤ５１０上の記憶領域である論理ブロックには、その並び順にそれぞれ論理ブロックアドレスＬＢＡが割り当てられている。先頭のライトデータが、論理ブロックアドレスＬＢＡの値が「ｙ」である論理ブロックに記録されると、これに続くライトデータは、論理ブロックアドレスＬＢＡの値が１ずつ加算された論理ブロックに記録される。ｎ個目のライトデータは、論理ブロックアドレスＬＢＡの値が「ｙ＋ｎ」である論理ブロックに記録されることとなる。
【００７０】
これによって、ＨＤＤ５１０上に保存されている一群のデータについてのアドレスコードＬＡの「ｘ」の値と、論理ブロックアドレスＬＢＡの「ｙ」の値とを一群のデータの連続性から算出することによって、一群のデータのうちの所定のデータについてアドレスコードＬＡと論理ブロックアドレスＬＢＡとの対応関係が正しいか否かを判断することができる。
【００７１】
図１４は、第５の実施例におけるＲＡＩＤ制御部３０の記録エラー処理を示すフローチャートである。第５の実施例の記録エラー処理は、第１の実施例の記録エラー処理（ステップＳ３８０）のように、直ちに、ライトデータの書き込みをリトライするのでなく、リトライの前に復旧処理を行う点が異なる。
【００７２】
第５の実施例の記録エラー処理では、ＲＡＩＤ制御部３０は、記録検査処理（図７のステップＳ３５０）においてライトデータが正常に記録されなかったと判断されたＨＤＤ５１０に対して、アドレスコードを用いた誤り検査を実施する（ステップＳ７１０）。アドレスコードを用いた誤り検査とは、アドレスコードと論理ブロックアドレスとの対応関係に誤りが生じているデータを特定する検査である。
【００７３】
ＲＡＩＤ制御部３０は、アドレスコードを用いた誤り検査によって、データの誤りを検出した場合には（ステップＳ７２０）、誤りが検出されたホストデータをＲＡＩＤ技術によって復旧する（ステップＳ７２０）。その後、ストレージ部５０に対するライトデータの書き込み（図４のステップＳ２４０）からの処理をリトライする。
【００７４】
以上説明した第５の実施例のストレージシステム１０によれば、誤った記憶領域にライトデータが記録されることによって、その記憶領域に保存されていたホストデータが書き換えられてしまった場合であっても、そのホストデータを修復することができる。なお、第５の実施例における記録エラー処理を、第２の実施例における記録エラー処理に適用しても良い。
【００７５】
Ｆ．その他の実施形態：
以上、本発明の実施の形態について説明したが、本発明はこうした実施の形態に何ら限定されるものではなく、本発明の趣旨を逸脱しない範囲内において様々な形態で実施し得ることは勿論である。例えば、第１ないし５の実施例では、ライトデータの記録を終了する前にホストコンピュータシステムＨＣＳに対して応答するライトバック処理（図３）において本発明を適用したが、ライトデータの記録を終了した後にホストコンピュータシステムＨＣＳに対して応答するライトスルー処理において本発明を適用しても良い。
【００７６】
図１５は、その他の実施形態におけるＲＡＩＤ制御部３０のライトスルー処理を示すフローチャートである。図１５に示すライトスルー処理は、図３に示したライトバック処理と比べ、データ記録処理（ステップＳ９４０）の後に、ホストコンピュータシステムＨＣＳに対する応答を行う（ステップＳ９５０）点が異なる。なお、ライトスルー処理におけるホストコンピュータシステムＨＣＳに対する応答では、書き込み終了応答ではなく、不正終了応答を行うことによって、再度のライトコマンドの送信を要求するようにしても良い。
【００７７】
また、記録検査処理（図７，図９）において比較するための第１および第２のチェックコードを、キャッシュメモリに格納するのではなく、データコントローラ３２０に内蔵のバッファ（図示しない）に格納することとしても良い。また、ストレージ部５０は、複数のＨＤＤ５１０によって構成するものに限るものではなく、単一のＨＤＤによって構成しても良く、また、磁気ディスクまたは光ディスク，半導体メモリの少なくともいずれかに前記複数の記憶領域を有する装置によって構成しても良い。
【００７８】
また、記録検査処理（図７，図９）を実行するか否かを図６に示した検査管理テーブルＣＴで判断するのではなく、ホストコンピュータシステムＨＣＳからのライトコマンドの種類に応じて実行するか否かを判断することとしても良い。また、図５に示したキャッシュ管理テーブルＤＴや、図６に示した検査管理テーブルＣＴを、ＲＡＭ３１２に格納するのではなく、キャッシュメモリ３７０や、データコントローラ３２０に内蔵のバッファ（図示しない）に格納することとしても良い。
【００７９】
また、ライトコマンドに付加するチェックコードは、ＬＲＣコードに限るものではなく、巡回冗長検査におけるＣＲＣコードであっても良いし、ホストコンピュータシステムＨＣＳからライトコマンドを受け取った順に付与する通し番号、ストレージ部５０に対するアクセスに用いる論理アドレスなどを更に付加しても良い。
【００８０】
また、本実施例では、チェックコードの生成やチェックコードの比較を、コード生成回路３３０やコード比較回路３４０によるハードウェアによって実現したが、これらの処理をソフトウェアによって実現することとしても良い。
【図面の簡単な説明】
【００８１】
【図１】ストレージシステム１０の外観構成を示す全体斜視図である。
【図２】ストレージシステム１０の内部構成を示すブロック図である。
【図３】ＲＡＩＤ制御部３０のライトバック処理を示すフローチャートである。
【図４】ＲＡＩＤ制御部３０のデータ記録処理を示すフローチャートである。
【図５】キャッシュ管理テーブルＤＴの一例を示す説明図である。
【図６】検査管理テーブルＣＴの一例を示す説明図である。
【図７】第１の実施例におけるＲＡＩＤ制御部３０の記録検査処理を示すフローチャートである。
【図８】第１の実施例におけるデータ移行の様子を示す説明図である。
【図９】第２の実施例におけるＲＡＩＤ制御部３０の記録検査処理を示すフローチャートである。
【図１０】第２の実施例におけるデータ移行の様子を示す説明図である。
【図１１】第３の実施例におけるＲＡＩＤ制御部３０の記録エラー処理を示すフローチャートである。
【図１２】第４の実施例におけるＲＡＩＤ制御部３０の記録エラー処理を示すフローチャートである。
【図１３】アドレスコードと論理ブロックアドレスとの関係を模式的に示す説明図である。
【図１４】第５の実施例におけるＲＡＩＤ制御部３０の記録エラー処理を示すフローチャートである。
【図１５】その他の実施形態におけるＲＡＩＤ制御部３０のライトスルー処理を示すフローチャートである。
【符号の説明】
【００８２】
１０...ストレージシステム
２０...ホストＩ／Ｆ
３０...ＲＡＩＤ制御部
４０...ストレージＩ／Ｆ
５０...ストレージ部
３１０...ＣＰＵ
３１２...ＲＡＭ
３１４...ＲＯＭ
３２０...データコントローラ
３３０...コード生成回路
３４０...コード比較回路
３７０...キャッシュメモリ
５１０...ＨＤＤ
ＨＣＳ...ホストコンピュータシステム
【図１】
2006072435.tif 000003
【図２】
2006072435.tif 000004
【図３】
2006072435.tif 000005
【図４】
2006072435.tif 000006
【図５】
2006072435.tif 000007
【図６】
2006072435.tif 000008
【図７】
2006072435.tif 000009
【図８】
2006072435.tif 000010
【図９】
2006072435.tif 000011
【図１０】
2006072435.tif 000012
【図１１】
2006072435.tif 000013
【図１２】
2006072435.tif 000014
【図１３】
2006072435.tif 000015
【図１４】
2006072435.tif 000016
【図１５】
2006072435.tif 000017