(57)【特許請求の範囲】
【請求項１】
ホストコンピュータと通信するチャネル制御部、
ハードディスクドライブを制御するディスク制御部、
前記チャネル制御部及び前記ディスク制御部がアクセス可能なキャッシュメモリ
を備え、
前記チャネル制御部は、前記ホストコンピュータからＩ／Ｏ要求を受信すると、前記Ｉ／Ｏ要求によって前記ハードディスクドライブに書き込まれるデータもしくは前記ハードディスクドライブから読み出されるデータを、前記キャッシュメモリを介して前記ディスク制御部との間で送信又は受信し、
前記チャネル制御部は、前記Ｉ／Ｏ要求とともに前記ホストコンピュータとの間で送信又は受信する可変長形式データについてのデータ転送を行う可変長ＤＭＡ（Direct Memory Access）、前記キャッシュメモリとの間で固定長形式データのデータ転送を行う固定長ＤＭＡ、及び前記可変長ＤＭＡと前記固定長ＤＭＡとの間に介在するバッファを備え、
前記固定長ＤＭＡは、前記キャッシュメモリへの前記固定長形式データの前記データ転送に際し、前記可変長形式データを前記キャッシュメモリにおけるデータの取り扱い単位に対応したデータサイズの複数の前記固定長形式データに分割し、当該分割により生成される前記固定長形式データの末尾の前記固定長形式データに、前記可変長形式データの全体に基づいて生成した第１の保証コードを付加し、
前記キャッシュメモリにおけるデータの取り扱い単位に対応した前記データサイズは、ＦＣ（Fibre Channel）タイプのハードディスクドライブのセクタサイズに対応したデータサイズであり、
前記固定長ＤＭＡは、前記固定長形式データの夫々について、前記固定長形式データの夫々に基づく第２の保証コードを生成し、
前記ディスク制御部は、
前記ハードディスクドライブがＦＣタイプのハードディスクドライブである場合には、前記ハードディスクドライブの各セクタに前記第２の保証コードを付加するとともに前記末尾の固定長形式データの書き込み先のセクタに前記第１の保証コードを付加したデータを前記ハードディスクドライブに格納し、
前記ハードディスクドライブがＳＡＴＡ（Serial Advanced Technology Attachment）タイプのハードディスクドライブである場合には、前記ハードディスクドライブの各セクタに前記第２の保証コードは付加せず、前記末尾の固定長形式データの書き込み先のセクタに前記第１の保証コードを付加したデータを前記ハードディスクドライブに格納する
ストレージ装置。
【請求項２】
請求項１に記載のストレージ装置であって、
前記チャネル制御部、前記ディスク制御部、及び前記キャッシュメモリの間のデータ転送に関する処理を行うマイクロプロセッサを備え、
前記マイクロプロセッサは、前記可変長形式データを前記キャッシュメモリに転送するための転送パラメータを、前記可変長ＤＭＡ及び前記固定長ＤＭＡの夫々に設定し、
前記固定長ＤＭＡは、ある前記可変長形式データの前記キャッシュメモリへの前記データ転送が前記転送パラメータを複数回設定することにより行われる場合に、各前記転送パラメータについての前記データ転送に際して生成される前記第１の保証コードの途中計算値を記憶することにより、各前記転送パラメータに対応する前記データ転送で生成される前記途中計算値を引き継いで前記可変長形式データの全体に基づく前記第１の保証コードを生成するストレージ装置。
【請求項３】
請求項２に記載のストレージ装置であって、
前記固定長ＤＭＡに設定される前記転送パラメータにＣＣＷ(Channel Command Word)チェインごとに付与される識別子であるチェインＩＤが設定され、
前記固定長ＤＭＡは、前記チェインＩＤごとに前記途中計算値を記憶することにより、各前記転送パラメータに対応する前記データ転送で生成される前記途中計算値を引き継ぎ、前記チェインＩＤごとに前記可変長形式データの全体に基づく前記第１の保証コードを生成するストレージ装置。
【請求項４】
請求項１に記載のストレージ装置であって、
前記可変長形式データがＣＫＤ（Count Key Data architecture）形式のデータであり、
前記固定長ＤＭＡは、前記可変長形式データのＤ部の末尾のアドレスが前記固定長形式データの末尾のアドレスに一致する場合、前記第１の保証コードを格納するための前記固定長形式データを新たに生成するストレージ装置。
【請求項５】
メインフレームと通信する少なくとも一つのチャネル制御部、
ハードディスクドライブを制御する少なくとも一つのディスク制御部、
前記チャネル制御部及び前記ディスク制御部がアクセス可能なキャッシュメモリ、
及び前記チャネル制御部、前記ディスク制御部、及び前記キャッシュメモリを通信可能に接続するスイッチ
を備え、
前記チャネル制御部は、前記ホストコンピュータからＩ／Ｏ要求を受信すると、前記Ｉ／Ｏ要求によって前記ハードディスクドライブに書き込まれるデータもしくは前記ハードディスクドライブから読み出されるデータを、前記キャッシュメモリを介して前記ディスク制御部との間で送信又は受信し、
前記チャネル制御部は、前記メインフレームとの間の通信のプロトコルに関する処理を行うプロトコル制御部、前記Ｉ／Ｏ要求とともに前記メインフレームとの間で送信又は受信する可変長形式データについてのデータ転送を行う可変長ＤＭＡ、前記キャッシュメモリとの間で固定長形式データのデータ転送を行う固定長ＤＭＡ、前記プロトコル制御部と前記可変長ＤＭＡとの間に介在するバッファ、及び前記可変長ＤＭＡと前記固定長ＤＭＡとの間に介在するバッファを備え、
前記固定長ＤＭＡは、前記キャッシュメモリへの前記固定長形式データの前記データ転送に際し、前記可変長形式データを前記ハードディスクドライブのセクタサイズに対応したデータサイズの複数の前記固定長形式データに分割し、当該分割により生成される前記固定長形式データの末尾の前記固定長形式データに、前記可変長形式データの全体に基づいて生成した第１の保証コードを付加し、
前記キャッシュメモリにおけるデータの取り扱い単位に対応した前記データサイズは、ＦＣ（Fibre Channel）タイプのハードディスクドライブのセクタサイズに対応したデータサイズであり、
前記固定長ＤＭＡは、前記固定長形式データの夫々について、前記固定長形式データの夫々に基づく第２の保証コードを生成し、
前記ディスク制御部は、
前記ハードディスクドライブがＦＣタイプのハードディスクドライブである場合には、前記ハードディスクドライブの各セクタに前記第２の保証コードを付加するとともに前記末尾の固定長形式データの書き込み先のセクタに前記第１の保証コードを付加したデータを前記ハードディスクドライブに格納し、
前記ハードディスクドライブがＳＡＴＡ（Serial Advanced Technology Attachment）タイプのハードディスクドライブである場合には、前記ハードディスクドライブの各セクタに前記第２の保証コードは付加せず、前記末尾の固定長形式データの書き込み先のセクタに前記第１の保証コードを付加したデータを前記ハードディスクドライブに格納する
ストレージ装置。
【請求項６】
ホストコンピュータと通信するチャネル制御部、
ハードディスクドライブを制御するディスク制御部、
前記チャネル制御部及び前記ディスク制御部がアクセス可能なキャッシュメモリ
を備え、
前記チャネル制御部は、前記ホストコンピュータからＩ／Ｏ要求を受信すると、前記Ｉ／Ｏ要求によって前記ハードディスクドライブに書き込まれるデータもしくは前記ハードディスクドライブから読み出されるデータを、前記キャッシュメモリを介して前記ディスク制御部との間で送信又は受信し、
前記チャネル制御部は、前記Ｉ／Ｏ要求とともに前記ホストコンピュータとの間で送信又は受信する可変長形式データについてのデータ転送を行う可変長ＤＭＡ、前記キャッシュメモリとの間で固定長形式データのデータ転送を行う固定長ＤＭＡ、及び前記可変長ＤＭＡと前記固定長ＤＭＡとの間に介在するバッファを備えるストレージ装置におけるデータ保証方法であって、
前記固定長ＤＭＡが、前記キャッシュメモリへの前記固定長形式データの前記データ転送に際し、前記可変長形式データを前記キャッシュメモリにおけるデータの取り扱い単位に対応したデータサイズの複数の前記固定長形式データに分割し、当該分割により生成される前記固定長形式データの末尾の前記固定長形式データに、前記可変長形式データの全体に基づいて生成した第１の保証コードを付加し、
前記キャッシュメモリにおけるデータの取り扱い単位に対応した前記データサイズは、ＦＣ（Fibre Channel）タイプのハードディスクドライブのセクタサイズに対応したデータサイズであり、
前記固定長ＤＭＡが、前記固定長形式データの夫々について、前記固定長形式データの夫々に基づく第２の保証コードを生成し、
前記ディスク制御部が、
前記ハードディスクドライブがＦＣタイプのハードディスクドライブである場合には、前記ハードディスクドライブの各セクタに前記第２の保証コードを付加するとともに前記末尾の固定長形式データの書き込み先のセクタに前記第１の保証コードを付加したデータを前記ハードディスクドライブに格納し、
前記ハードディスクドライブがＳＡＴＡ（Serial Advanced Technology Attachment）タイプのハードディスクドライブである場合には、前記ハードディスクドライブの各セクタに前記第２の保証コードは付加せず、前記末尾の固定長形式データの書き込み先のセクタに前記第１の保証コードを付加したデータを前記ハードディスクドライブに格納する
するデータ保証方法。
【請求項７】
請求項６に記載のデータ保証方法であって、
前記ストレージ装置は、前記チャネル制御部、前記ディスク制御部、及び前記キャッシュメモリの間のデータ転送に関する処理を行うマイクロプロセッサをさらに備え、
前記マイクロプロセッサが、前記可変長形式データを前記キャッシュメモリに転送するための転送パラメータを、前記可変長ＤＭＡ及び前記固定長ＤＭＡの夫々に設定し、
前記固定長ＤＭＡが、ある前記可変長形式データの前記キャッシュメモリへの前記データ転送が前記転送パラメータを複数回設定することにより行われる場合に、各前記転送パラメータについての前記データ転送に際して生成される前記第１の保証コードの途中計算値を記憶することにより、各前記転送パラメータに対応する前記データ転送で生成される前記途中計算値を引き継いで前記可変長形式データの全体に基づく前記第１の保証コードを生成するデータ保証方法。
【請求項８】
請求項７に記載のデータ保証方法であって、
前記固定長ＤＭＡに設定される前記転送パラメータにＣＣＷチェインごとに付与される識別子であるチェインＩＤが設定され、
前記固定長ＤＭＡが、前記チェインＩＤごとに前記途中計算値を記憶することにより、各前記転送パラメータに対応する前記データ転送で生成される前記途中計算値を引き継ぎ、前記チェインＩＤごとに前記可変長形式データの全体に基づく前記第１の保証コードを生成するデータ保証方法。
【請求項９】
請求項６に記載のデータ保証方法であって、
前記可変長形式データがＣＫＤ形式のデータであり、
前記固定長ＤＭＡが、前記可変長形式データのＤ部の末尾のアドレスが前記固定長形式データの末尾のアドレスに一致する場合、前記第１の保証コードを格納するための前記固定長形式データを新たに生成するデータ保証方法。
【請求項１０】
メインフレームと通信する少なくとも一つのチャネル制御部、
ハードディスクドライブを制御する少なくとも一つのディスク制御部、
前記チャネル制御部及び前記ディスク制御部がアクセス可能なキャッシュメモリ、
及び前記チャネル制御部、前記ディスク制御部、及び前記キャッシュメモリを通信可能に接続するスイッチ
を備え、
前記チャネル制御部は、前記ホストコンピュータからＩ／Ｏ要求を受信すると、前記Ｉ／Ｏ要求によって前記ハードディスクドライブに書き込まれるデータもしくは前記ハードディスクドライブから読み出されるデータを、前記キャッシュメモリを介して前記ディスク制御部との間で送信又は受信するストレージ装置におけるデータ保証方法であって、
前記チャネル制御部は、前記メインフレームとの間の通信のプロトコルに関する処理を行うプロトコル制御部、前記Ｉ／Ｏ要求とともに前記メインフレームとの間で送信又は受信する可変長形式データについてのデータ転送を行う可変長ＤＭＡ、前記キャッシュメモリとの間で固定長形式データのデータ転送を行う固定長ＤＭＡ、前記プロトコル制御部と前記可変長ＤＭＡとの間に介在するバッファ、及び前記可変長ＤＭＡと前記固定長ＤＭＡとの間に介在するバッファを備え、
前記固定長ＤＭＡが、前記キャッシュメモリへの前記固定長形式データの前記データ転送に際し、前記可変長形式データを前記ハードディスクドライブのセクタサイズに対応したデータサイズの複数の前記固定長形式データに分割し、当該分割により生成される前記固定長形式データの末尾の前記固定長形式データに、前記可変長形式データの全体に基づいて生成した第１の保証コードを付加し、
前記キャッシュメモリにおけるデータの取り扱い単位に対応した前記データサイズは、ＦＣ（Fibre Channel）タイプのハードディスクドライブのセクタサイズに対応したデータサイズであり、
前記固定長ＤＭＡが、前記固定長形式データの夫々について、前記固定長形式データの夫々に基づく第２の保証コードを生成し、
前記ディスク制御部が、
前記ハードディスクドライブがＦＣタイプのハードディスクドライブである場合には、前記ハードディスクドライブの各セクタに前記第２の保証コードを付加するとともに前記末尾の固定長形式データの書き込み先のセクタに前記第１の保証コードを付加したデータを前記ハードディスクドライブに格納し、
前記ハードディスクドライブがＳＡＴＡ（Serial Advanced Technology Attachment）タイプのハードディスクドライブである場合には、前記ハードディスクドライブの各セクタに前記第２の保証コードは付加せず、前記末尾の固定長形式データの書き込み先のセクタに前記第１の保証コードを付加したデータを前記ハードディスクドライブに格納する
データ保証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置、及びデータ保証方法に関し、とくに不正なデータを確実に検出するための技術に関する。
【背景技術】
【０００２】
ストレージ装置の信頼性を高める方法として、ハードディスクドライブ等の記憶装置に記憶されるデータにＬＲＣ（Longitudinal Redundancy Check）符号などの保証コードを付加する方法が知られている。例えば特開２００５−８４７９９号公報には、記憶装置が記憶するデータのブロックについての保証コードをブロック単位に計算することが記載されている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ところで、メインフレーム等のホストコンピュータから送られてくる可変長形式のデータのＩ／Ｏ要求を受け付けるストレージ装置では、可変長形式データをハードディスクのセクタサイズに対応する固定長形式データに変換し、固定長形式データの夫々に保証コードを付加してハードディスクドライブに格納するようにしている。
【０００４】
しかしながら、個々の固定長形式データに保証コードを付加する方法では、例えば物理的な障害等により上記固定長データとこれに付加した保証コードの双方について更新がされずに書き損じが生じた場合に、これを検出することができないという問題があった。
【０００５】
本発明は、このような問題に鑑みてなされたもので、不正なデータを確実に検出することが可能なストレージ装置、及びデータ保証方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記のおよび他の課題を解決するために、本発明の一態様によるストレージ装置は、
ホストコンピュータと通信するチャネル制御部、
ハードディスクドライブを制御するディスク制御部、
前記チャネル制御部及び前記ディスク制御部がアクセス可能なキャッシュメモリ
を備え、
前記チャネル制御部は、前記ホストコンピュータからＩ／Ｏ要求を受信すると、前記Ｉ／Ｏ要求によって前記ハードディスクドライブに書き込まれるデータもしくは前記ハードディスクドライブから読み出されるデータを、前記キャッシュメモリを介して前記ディスク制御部との間で送信又は受信し、
前記チャネル制御部は、前記Ｉ／Ｏ要求とともに前記ホストコンピュータとの間で送信又は受信する可変長形式データについてのデータ転送を行う可変長ＤＭＡ（Direct Memory Access）、前記キャッシュメモリとの間で固定長形式データのデータ転送を行う固定長ＤＭＡ、及び前記可変長ＤＭＡと前記固定長ＤＭＡとの間に介在するバッファを備え、
前記固定長ＤＭＡは、前記キャッシュメモリへの前記固定長形式データの前記データ転送に際し、前記可変長形式データを前記キャッシュメモリにおけるデータの取り扱い単位に対応したデータサイズの複数の前記固定長形式データに分割し、当該分割により生成される前記固定長形式データの末尾の前記固定長形式データに、前記可変長形式データの全体に基づいて生成した第１の保証コード（ＴＦＬＲＣ）を付加することとする。
【０００７】
このように本発明では、固定長ＤＭＡが、可変長形式データに基づく固定長形式データをキャッシュメモリに格納する際、そのうちの末尾の固定長形式データに、可変長形式データの全体に基づいて生成した第１の保証コードを付加する。これによれば、例えば物理的な障害等により上記固定長データとこれに付加した保証コードの双方について更新がされずに書き損じが生じた場合に、第１の保証コードを用いてそのようなデータの不正を検出することができる。尚、この第１の保証コードが付加されることにより、チャネル制御部、キャッシュメモリ、ディスク制御部、ハードディスクドライブ等において、データの不正を検出することができる。
【０００８】
本発明の他の一態様によるストレージ装置は、
前記チャネル制御部、前記ディスク制御部、及び前記キャッシュメモリの間のデータ転送に関する処理を行うマイクロプロセッサを備え、
前記マイクロプロセッサは、前記可変長形式データを前記キャッシュメモリに転送するための転送パラメータを、前記可変長ＤＭＡ及び前記固定長ＤＭＡの夫々に設定し、
前記固定長ＤＭＡは、ある前記可変長形式データの前記キャッシュメモリへの前記データ転送が前記転送パラメータを複数回設定することにより行われる場合に、各前記転送パラメータについての前記データ転送に際して生成される前記第１の保証コードの途中計算値を記憶することにより、各前記転送パラメータに対応する前記データ転送で生成される前記途中計算値を引き継いで前記可変長形式データの全体に基づく前記第１の保証コードを生成することとする。
【０００９】
本発明によれば、可変長形式データのキャッシュメモリへのデータ転送が転送パラメータを複数回設定することにより行われる場合でも、可変長形式データの全体に基づく第１の保証コードを生成することができる。
【００１０】
本発明の他の一態様によるストレージ装置は、
前記固定長ＤＭＡに設定される前記転送パラメータにＣＣＷ(Channel Command Word)チェインごとに付与される識別子であるチェインＩＤが設定され、
前記固定長ＤＭＡは、前記チェインＩＤごとに前記途中計算値を記憶することにより、各前記転送パラメータに対応する前記データ転送で生成される前記途中計算値を引き継ぎ、前記チェインＩＤごとに前記可変長形式データの全体に基づく前記第１の保証コードを生成することとする。
【００１１】
本発明によれば、ＣＣＷチェインごとに可変長形式データの全体に基づく第１の保証コードを正しく生成することができる。
【００１２】
本発明の他の一態様によるストレージ装置は、
前記キャッシュメモリにおけるデータの取り扱い単位に対応したデータサイズは、ＦＣ（Fibre Channel）タイプのハードディスクドライブのセクタサイズに対応したデータサイズであり、
前記固定長ＤＭＡは、前記固定長形式データの夫々について、前記固定長形式データの夫々に基づく第２の保証コードを生成し、
前記ディスク制御部は、
前記ハードディスクドライブがＦＣタイプのハードディスクドライブである場合には、前記ハードディスクドライブの各セクタに前記第２の保証コードを付加するとともに前記末尾の固定長形式データの書き込み先のセクタに前記第１の保証コードを付加したデータを前記ストレージ装置の前記ハードディスクドライブに格納し、
前記ハードディスクドライブがＳＡＴＡ（Serial Advanced Technology Attachment）タイプのハードディスクドライブである場合には、前記ハードディスクドライブの各セクタに前記第２の保証コードは付加せず、前記末尾の固定長形式データの書き込み先のセクタに前記第１の保証コードを付加したデータを前記ストレージ装置の前記ハードディスクドライブに格納することとする。
【００１３】
例えばキャッシュメモリにおけるデータの取り扱い単位に対応したデータサイズが、ＦＣタイプのハードディスクドライブのセクタサイズに対応したデータサイズであるが、実際にデータが書き込まれるハードディスクドライブがＳＡＴＡタイプのハードディスクドライブである場合、各セクタに書き込むデータに第１の保証コード（ＴＦＬＲＣ）と第２の保証コード（ＳＬＲＣ）の双方を書き込んでしまうと、セクタごとに保証コードの格納位置が異なる等、セクタごとのデータフォーマットが異なることとなり、チャネル制御部、ディスク制御部等で実行するソフトウエアの構成が複雑化し、ストレージ装置の保守性が低下する。
【００１４】
しかしながら本発明によれば、ハードディスクドライブがＳＡＴＡタイプのハードディスクドライブである場合は第２の保証コードを付加せずに第１の保証コードのみを付加してセクタごとのデータフォーマットを一致させるので、保守性を低下させることなく、ハードディスクドライブに格納するデータに第１の保証コードを付加することができる。
【００１５】
本発明の他の一態様によるストレージ装置は、
前記可変長形式データがＣＫＤ（Count Key Data architecture）形式のデータであり、
前記固定長ＤＭＡは、前記可変長形式データのＤ部の末尾のアドレスが前記固定長形式データの末尾のアドレスに一致する場合、前記第１の保証コードを格納するための前記固定長形式データを新たに生成することとする。
【００１６】
本発明によれば、可変長形式データのＤ部の末尾のアドレスが固定長形式データのデータサイズの末尾のアドレスに一致する場合、即ちＤ部の末尾のデータが固定長形式データのデータサイズに丁度収まるような場合でも、固定長ＤＭＡが自動的に第１の保証コードを格納するための固定長形式データを新たに生成するので、上記のような場合でもデータに確実に第１の保証コードを付加することができる。
【００１７】
その他本願が開示する課題やその解決方法については、発明の実施形態の欄及び図面により明らかにされる。
【発明の効果】
【００１８】
本発明によれば、物理的な障害等により上記固定長データとこれに付加した保証コードの双方について更新がされずに書き損じが生じた場合であっても、そのような不正なデータを確実に検出することができる。
【図面の簡単な説明】
【００１９】
【図１】ストレージ装置１０の構成を示す図である。
【図２】ＣＨＡ１１の主な構成要素を示す図である。
【図３】Ｉ／Ｏ要求に応じてＣＨＡ１１、ＭＰ１３、及びＣＭ１４間で行われる処理を説明するフローチャートである。
【図４】ＣＫＤ形式のデータの１レコードの構成を示す図である。
【図５】可変長ＤＭＡ１１２１に対して設定される転送パラメータの一例を示す図である。る。
【図６】固定長ＤＭＡ１１２３に対して設定される転送パラメータの一例を示す図である。
【図７Ａ】第１の方式（データ保証方式）を説明する図である。
【図７Ｂ】第２の方式（データ保証方式）を説明する図である。
【図８Ａ】可変長形式データ７１１が単一のレコードで構成される場合における第１の保証コード（ＴＦＬＲＣ）の生成方法を説明する図である。
【図８Ｂ】可変長形式データ７１１のＤ部４１３の末尾のアドレスが固定長形式データ７１２の末尾のアドレスに一致する場合における第１の保証コード（ＴＦＬＲＣ）の生成方法を説明する図である。
【図８Ｃ】所定の条件を満たした場合に、第１の保証コード（ＴＦＬＲＣ）を付加する方法を説明する図である。
【図９】固定長ＤＭＡ１１２３において、転送されるデータに第１の保証コード（ＴＦＬＲＣ）が付加される様子を説明するフローチャートである。
【図１０】固定長ＤＭＡ１１２３において、転送されるデータに第１の保証コード（ＴＦＬＲＣ）が付加される様子を説明するフローチャートである。
【図１１】チェインＩＤを用いて行われる、転送パラメータ間でのＬＲＣ途中演算値の引き継ぎの様子を説明するフローチャートである。
【図１２】チェインＩＤを用いて行われる、転送パラメータ間でのＬＲＣ途中演算値の引き継ぎの様子を説明するフローチャートである。
【図１３】ＬＲＣ途中計算値をＭＰ１３で管理した場合のＬＲＣ途中演算値の引き継ぎの様子を説明する図である。
【図１４Ａ】ＦＣタイプのハードディスクドライブ１７１に第１の方式で保証コードを付加して格納した場合のデータの格納形態（データフォーマット）を示す図である。
【図１４Ｂ】ＦＣタイプのハードディスクドライブ１７１に第２の方式で保証コードを付加して格納した場合のデータの格納形態（データフォーマット）を示す図である。
【図１４Ｃ】ＳＡＴＡタイプのハードディスクドライブ１７１に第１の方式で保証コードを付加して格納した場合のデータの格納形態（データフォーマット）を示す図である。
【図１４Ｄ】ＳＡＴＡタイプのハードディスクドライブ１７１に、第２の保証コード（ＳＬＲＣ）を除去して第２の方式で保証コードを付加して格納した場合のデータの格納形態（データフォーマット）を示す図である。
【図１５Ａ】図１４Ｄにおいて各セクタにＳＬＲＣを付加する場合の模式図である。
【図１５Ｂ】図１４ＤにおいてＳＬＲＣを付加しない場合の模式図である。
【発明を実施するための形態】
【００２０】
以下、実施形態について説明する。図１に実施形態として説明するストレージ装置１０の構成を示している。同図に示すように、ストレージ装置１０は、一つ以上のチャネルアダプタ（以下、ＣＨＡ１１（CHA: CHannel Adaptor）と記載する。）、一つ以上のディスクアダプタ（以下、ＤＫＡ１２（DKA: DisK Adaptor）と記載する。）、一つ以上の制御プロセッサ（以下、ＭＰ１３（MP: Micro Processor）と記載する。）、キャッシュメモリ（以下、ＣＭ１４（CM: Cache Memory）と記載する。）、共有メモリ（以下、ＳＭ１５（SM: Shared Memory）と記載する。）、スイッチ１６、及び記憶装置１７を備えている。
【００２１】
ＣＨＡ１１は、ホストコンピュータ２から送られてくるＩ／Ｏ要求（データ書き込み要求、データ読み出し要求等）を受け付け、受け付けたＩ／Ｏ要求に応じてＤＫＡ１２にＩ／Ｏコマンド（データ読み出しコマンド、データ書き込みコマンド）を送信する。Ｉ／Ｏコマンドの処理に際して行われるＣＨＡ１１とＤＫＡ１２の間のデータ（記憶装置１７から読み出したデータ、記憶装置１７に書き込むデータ）の引き渡しは、ＣＭ１４を介して行われる。ＣＨＡ１１は、ホストコンピュータ２から受け付けたＩ／Ｏ要求に対応する処理を実行すると、その応答（読み出したデータ、読み出し完了報告、書き込み完了報告等）をホストコンピュータ２に送信する。
【００２２】
ホストコンピュータ２は、ストレージ装置１０に対し、可変長形式データ（例えばＣＫＤ（Count Key Data architecture）形式）のＩ／Ｏ要求を送信する、メインフレーム（Mainframe）等の情報処理装置(コンピュータ）である。ホストコンピュータ２とストレージ装置１０とは、例えば専用線、ＬＡＮ（Local Area Network）、ＳＡＮ（Storage Area Network）、インターネット、公衆通信網等を介して接続されている。ホストコンピュータ２とストレージ装置１０との間の通信は、ＦＩＣＯＮ（Fibre Connection）（登録商標）、ＥＳＣＯＮ（Enterprise System Connection） （登録商標）、ＡＣＯＮＡＲＣ（Advanced Connection Architecture）（登録商標）、ＦＩＢＡＲＣ（Fibre Connection Architecture）（登録商標）等のプロトコルに従って行われる。
【００２３】
ＤＫＡ１２は、ＣＨＡ１１から送られてくるＩ／Ｏコマンドを受信すると、記憶装置１７からのデータの読み出し又は記憶装置１７へのデータの書き込みを行う。またＤＫＡ１２は、ステージング（記憶装置１７からのデータの読み出しとＣＭ１４への格納）やデステージング（ＣＭ１４に格納されているデータの記憶装置１７への書き出し）を行う。
【００２４】
ＭＰ１３は、例えばＣＰＵ、ＭＰＵ、ＤＭＡ（Direct Memory Access）を用いて構成される。ＭＰ１３は、ＣＨＡ１１、ＤＫＡ１２、及びＣＭ１４とは独立したハードウエアとして構成され、ＣＨＡ１１、ＤＫＡ１２、及びＣＭ１４の間で行われるデータ転送に関する処理を実行し、上記データ転送の高速化や負荷分散を図る。
【００２５】
ＣＭ１４は、例えば、高速アクセスが可能なＲＡＭ（Random Access Memory）を用いて構成される。ＣＭ１４には、例えば記憶装置１７に書き込まれるデータ（以下、書き込みデータと記載する。）や、記憶装置１７から読み出されたデータ（以下、読み出しデータと記載する。）が格納される。ＳＭ１５には、例えばストレージ装置１０の制御に用いられる情報が格納される。
【００２６】
記憶装置１７は、ハードディスクドライブ１７１（ＨＤＤ）を用いて構成される。ハードディスクドライブ１７１は、例えばＲＡＩＤ（Redundant Arrays of Inexpensive （or Independent) Disks）の制御方式（例えば０，１，５，６等のＲＡＩＤレベル）に従って制御される。記憶装置１７は、例えばＲＡＩＤによって提供される記憶領域（例えばＲＡＩＤグループの記憶領域）を用いて構成される論理装置ＬＤＥＶ（Logical Device））を単位とする記憶領域を提供する。尚、記憶装置１７は、半導体記憶装置（ＳＳＤ）等の他の記憶媒体を用いて構成してもよい。
【００２７】
スイッチ１６は、例えば高速クロスバースイッチ（Cross Bar Switch）である。スイッチ１６を介して行われる通信は、ファイバーチャネル、ｉＳＣＳＩ（internet Small Computer System Interface）、ＴＣＰ／ＩＰ等のプロトコルに従って行われる。
【００２８】
図２にＣＨＡ１１の主な構成要素を示している。ＣＨＡ１１は、一つ以上のプロトコル制御部１１１、ＤＭＡ１１２、及び中間バッファ１１３を備えている。プロトコル制御部１１１及びＤＭＡ１１２は、例えばカスタマイズされたＬＳＩ（Large Scale Integration）を用いて構成される。中間バッファ１１３は、例えばＤＲＡＭ（Dynamic Random Access Memory）を用いて構成される。
【００２９】
プロトコル制御部１１１は、ホストコンピュータ２とストレージ装置１０との間で送受信されるデータについて、ホストコンピュータ２とストレージ装置１０との間の通信に用いられるプロトコル（ＦＩＣＯＮ、ＥＳＣＯＮ等）に従ったデータフォーマットと、ストレージ装置１０の内部で用いられるデータフォーマットの変換を行う。
【００３０】
ＤＭＡ１１２は、ＣＨＡ１１とＭＰ１３との間、及びＣＨＡ１１とＣＭ１４との間でデータ転送を行う。図２に示すように、ＤＭＡ１１２は、可変長ＤＭＡ１１２１、ＤＭＡ間バッファ１１２２、固定長ＤＭＡ１１２３、及びＴＦＬＲＣバッファ１１２４を備えている。可変長ＤＭＡ１１２１は、ホストコンピュータ２とＤＭＡ間バッファ１１２２との間の可変長形式データの転送を行う。固定長ＤＭＡ１１２３は、ＤＭＡ間バッファ１１２２と、ＭＰ１３又はＣＭ１４との間の固定長形式データの転送を行う。ＤＭＡ間バッファ１１２２には、可変長ＤＭＡ１１２１と固定長ＤＭＡ１１２３との間で授受されるデータが格納される。ＴＦＬＲＣバッファ１１２４には、後述する第１の保証コード（ＴＦＬＲＣ）の途中計算値が格納される。
【００３１】
中間バッファ１１３には、プロトコル制御部１１１と可変長ＤＭＡ１１２１との間で授受されるデータが格納される。中間バッファ１１３は、例えばＤＲＡＭを用いて構成される。
【００３２】
次に、ホストコンピュータ２から送られてくるＩ／Ｏ要求に応じてＣＨＡ１１、ＭＰ１３、及びＣＭ１４間で行われる処理について、図３とともに説明する。図３はホストコンピュータ２から送られてくる可変長形式データ（ＣＫＤ形式）についてのＩ／Ｏ要求（データ書き込み要求）に応じて、ＣＨＡ１１が可変長形式データを固定長形式データに変換し、これをＣＭ１４に転送する場合に、ＣＨＡ１１、ＭＰ１３、及びＣＭ１４間で行われる処理を説明するフローチャートである。尚、以下の説明において、符号の前に付した「Ｓ」の文字はステップを意味する。
【００３３】
同図に示すように、上記転送に際しては、まずＭＰ１３が、ＤＭＡ１１２に、ＣＫＤ形式のデータのうちのＣ部をＣＭ１４に格納するための転送パラメータを設定する（Ｓ３１１）。
【００３４】
図４にＣＫＤ形式のデータの１レコードの構成を示している。同図に示すように、ＣＫＤ形式のデータの１レコードには、Ｃ部４１１（Count部）、Ｋ部４１２（Key部)、及びＤ部４１３（Data部）が含まれる。このうちＣ部４１１には、転送されるデータのフォーマット情報が設定される。Ｋ部４１２には、ホストコンピュータ２において動作するアプリケーションに関する情報が設定される。Ｄ部４１３には、データ（記憶装置１７から読み出したデータ、記憶装置１７に書き込むデータ）が設定される。
【００３５】
ＭＰ１３が転送パラメータを設定すると、ＤＭＡ１１２は中間バッファ１１３からＣ部４１１を読み出し、読み出したＣ部４１１をＭＰ１３に転送する（Ｓ３１２）。ＭＰ１３は、ＤＭＡ１１２からＣ部４１１を受信すると、これをＣＭ１４に転送する（Ｓ３１３）。以上によりＣＭ１４にＣ部４１１が格納される。
【００３６】
次にＭＰ１３は、ＤＭＡ１１２に対し、ＣＫＤ形式のデータのうちＫ部４１２及びＤ部４１３をＣＭ１４に格納するための転送パラメータを設定する（Ｓ３１４）。転送パラメータが設定されると、ＤＭＡ１１２は、中間バッファ１１３からＫ部４１２及びＤ部４１３を読み出し、読み出したＫ部４１２及びＤ部４１３をＭＰ１３に転送する（Ｓ３１５）。ＭＰ１３は、ＤＭＡ１１２からＫ部４１２及びＤ部４１３を受信すると、これらをＣＭ１４に転送する。以上によりＣＭ１４にＫ部４１２及びＤ部４１３が格納される。
【００３７】
ＤＭＡ１１２は、Ｃ部４１１、Ｋ部４１２、及びＤ部４１３の全ての転送が完了すると、転送結果を示すステータス情報をＭＰ１３に送信する（Ｓ３１６）。
【００３８】
ところで、図３のＳ３１１及びＳ３１４における転送パラメータの設定は、ＭＰ１３からＤＭＡ１１２の構成要素である可変長ＤＭＡ１１２１と固定長ＤＭＡ１１２３の夫々に対して行われる。図５に可変長ＤＭＡ１１２１に対して設定される転送パラメータの一例を、また図６に固定長ＤＭＡ１１２３に対して設定される転送パラメータの一例を示す。
【００３９】
＜データ保証方式＞
ストレージ装置１０では、記憶装置１７やＣＭ１４に格納されるデータについて、前述した固定長ＤＭＡ１１２３、スイッチ１６、ＣＭ１４、ＤＫＡ１２、及び記憶装置１７において誤り訂正符号（ＬＲＣ等）を用いたデータ保証を行う。
【００４０】
ストレージ装置１０が行うデータ保証の方式には、ハードディスクドライブ１７１のセクタサイズに対応したデータサイズの固定長形式データごとに第２の保証コード（ＳＬＲＣ）をデータに付加する第１の方式、及びＣＫＤ形式で転送されるデータの全体（Ｃ部４１１、Ｋ部４１２、及びＤ部４１３の組み合わせからなるレコードの一つ又は複数で構成されるデータの全体）についての第１の保証コード（ＴＦＬＲＣ）をデータに付加する第２の方式がある。
【００４１】
図７Ａは第１の方式を説明する図である。第１の方式では、可変長形式データ７１１を複数の固定長形式データ７１２に分割し、各固定長形式データ７１２に第２の保証コード（ＳＬＲＣ）を付加する。また分割により生成された末尾の固定長形式データ７１２に、当該末尾の固定長形式データ７１２におけるデータ（可変長形式データ７１１の端数データ）に基づく保証コード（ＦＬＲＣ）と、当該末尾のデータ、保証コード（ＦＬＲＣ）、及び固定長形式データ７１２のデータサイズに合わせるための埋め合わせデータ（例えば０等のＰＡＤデータ（PAD: PADding））の全体に基づいて生成した第２の保証コード（ＳＬＲＣ）とが付加される。
【００４２】
図７Ｂは、第２の方式を説明する図である。同図に示すように、第２の方式では、各固定長形式データ７１２に第２の保証コード（ＳＬＲＣ）を付加し、また末尾の固定長形式データ７１２に可変長形式データ７１１の全体に基づいて生成した第１の保証コード（ＴＦＬＲＣ）を付加する。第２の方式によれば、例えば物理的な障害等により固定長形式データ７１２とこれに付加した第２の保証コード（ＳＬＲＣ）の双方について更新がされずに書き損じが生じた場合であっても、第１の保証コード（ＴＦＬＲＣ）を用いてデータの不正を検出することができる。
【００４３】
図８Ａは、ホストコンピュータ２から送られてくる可変長形式データ７１１が単一のレコードで構成される場合における第１の保証コード（ＴＦＬＲＣ）の生成方法を説明する図である。このように可変長形式データ７１１が単一のレコードで構成される場合には、図６に示した固定長ＤＭＡ１１２３に設定される転送パラメータの「ＴＦ」ビットが１（ＴＦＬＲＣモード有効）であり、「ＬＦ」のビットが１であることを条件に、末尾の固定長形式データ７１２に第１の保証コード（ＴＦＬＲＣ）が付加される。
【００４４】
図８Ｂは、可変長形式データ７１１のＤ部４１３の末尾のアドレスが固定長形式データ７１２の末尾のアドレスに一致する場合における第１の保証コード（ＴＦＬＲＣ）の生成方法を説明する図である。この場合は第１の保証コード（ＴＦＬＲＣ）を格納するための固定長形式データ７１２を新たに生成する。
【００４５】
尚、ホストコンピュータ２から送られてくる可変長形式データ７１１が、複数の連続するレコードからなる場合には、末尾のレコード以外のレコードは固定長ＤＭＡ１１２３に設定される転送パラメータの「ＬＦ」ビットがオンに設定されないため、レコード単位で第１の保証コード（ＴＦＬＲＣ）を付加することができない。このため、固定長ＤＭＡ１１２３は、図８Ｃに示すように、（１）「ＬＦ」のビットが１である、（２）転送するレコードの長さがセクタサイズ未満である、（３）データの切れ目がちょうどセクタサイズに一致する、といった所定の条件を満たした場合に、第１の保証コード（ＴＦＬＲＣ）を付加する。
【００４６】
図９は、ＭＰ１３からＣＭ１４へのデータ転送に際し、固定長ＤＭＡ１１２３において、転送されるデータに第１の保証コード（ＴＦＬＲＣ）が付加される様子を説明するフローチャートである。以下、同図とともに説明する。
【００４７】
図３に示したように、ＭＰ１３からＣＭ１４にデータ転送する際は、まずＭＰ１３が、可変長ＤＭＡ１１２１及び固定長ＤＭＡ１１２３に転送パラメータを設定する（Ｓ９１１）。
【００４８】
転送パラメータが設定されると、可変長ＤＭＡ１１２１は、設定された転送パラメータに従って中間バッファ１１３からデータを読み出し、読み出したデータをＤＭＡ間バッファ１１２２に転送する（Ｓ９１２）。固定長ＤＭＡ１１２３は、設定された転送パラメータに従い、ＤＭＡ間バッファ１１２２に格納されているデータを読み出し、読み出したデータを固定長形式データ７１２に変換してＣＭ１４に転送する（Ｓ９１３）。このとき、固定長ＤＭＡ１１２３は転送するデータに基づきＬＲＣを計算し、計算した値を途中計算値として保持（記憶）する。
【００４９】
次にＭＰ１３は、転送パラメータの未処理分を、可変長ＤＭＡ１１２１及び固定長ＤＭＡ１１２３に設定する（Ｓ９１４）。転送パラメータが設定されると、可変長ＤＭＡ１１２１は、転送パラメータに従って中間バッファ１１３からデータを読み出し、ＤＭＡ間バッファ１１２２に転送する（Ｓ９１５）。固定長ＤＭＡ１１２３は、転送パラメータに従ってＤＭＡ間バッファ１１２２に格納されているデータを読み出し、読み出したデータを固定長形式データ７１２に変換してＣＭ１４に転送する（Ｓ９１６）。そしてこのとき、固定長ＤＭＡ１１２３は、Ｓ９１３で保持（記憶）しておいたＬＲＣの途中計算値を用いてＬＲＣを計算する。もしＳ９１６のデータ転送が末尾の固定長形式データ７１２の転送であるならば、Ｓ９１６で計算したＬＲＣを第１の保証コード（ＴＦＬＲＣ）として、ＣＭ１４に転送する固定長形式データ７１２に付加する（Ｓ９１７）。
【００５０】
転送パラメータに対応するデータ転送が終了すると、可変長ＤＭＡ１１２１及び固定長ＤＭＡ１１２３は、転送結果を記載したステータス情報をＭＰ１３に送信する（Ｓ９１８）。
【００５１】
図１０は、ＭＰ１３からＣＭ１４に対してデータ転送が多重に行われる場合に、固定長ＤＭＡ１１２３において、転送されるデータに第１の保証コード（ＴＦＬＲＣ）が付加される様子を説明するフローチャートである。以下、同図とともに説明する。
【００５２】
前述と同様、まずＭＰ１３が、可変長ＤＭＡ１１２１及び固定長ＤＭＡ１１２３に、転送パラメータＡを設定する（Ｓ１０１１）。転送パラメータＡが設定されると、可変長ＤＭＡ１１２１は、設定された転送パラメータＡに従って中間バッファ１１３からデータを読み出し、読み出したデータをＤＭＡ間バッファ１１２２に転送する（Ｓ１０１２）。固定長ＤＭＡ１１２３は、設定された転送パラメータＡに従い、ＤＭＡ間バッファ１１２２に格納されているデータを読み出し、読み出したデータを固定長形式データ７１２に変換してＣＭ１４に転送する（Ｓ１０１３）。そしてこのとき、固定長ＤＭＡ１１２３は、転送パラメータＡに従いＣＭ１４に転送されるデータに基づきＬＲＣを計算し、計算した値を途中計算値として保持（記憶）する。
【００５３】
次にＭＰ１３が、可変長ＤＭＡ１１２１及び固定長ＤＭＡ１１２３に、転送パラメータＢを設定する（Ｓ１０１４）。転送パラメータＢが設定されると、可変長ＤＭＡ１１２１は、設定された転送パラメータＢに従って中間バッファ１１３からデータを読み出し、読み出したデータをＤＭＡ間バッファ１１２２に転送する（Ｓ１０１５）。そしてこのとき、固定長ＤＭＡ１１２３は、Ｓ１０１３で計算した、転送パラメータＡで転送されるデータについてのＬＲＣをＴＦＬＲＣバッファ１１２４に退避する（Ｓ１０１６）。
【００５４】
次に固定長ＤＭＡ１１２３は、設定された転送パラメータＢに従いＤＭＡ間バッファ１１２２に格納されているデータを読み出し、読み出したデータを固定長形式データ７１２に変換してＣＭ１４に転送する（Ｓ１０１７）。このとき、固定長ＤＭＡ１１２３は、転送パラメータＢに従いＣＭ１４に転送されるデータに基づきＬＲＣを計算し、計算した値を途中計算値として保持（記憶）する。
【００５５】
次にＭＰ１３は、転送パラメータＡの未処理分を、可変長ＤＭＡ１１２１及び固定長ＤＭＡ１１２３に設定する（Ｓ１０１８）。可変長ＤＭＡ１１２１は、転送パラメータＡに従い中間バッファ１１３からデータを読み出し、読み出したデータをＤＭＡ間バッファ１１２２に転送する（Ｓ１０１９）。そしてこのとき、固定長ＤＭＡ１１２３は、Ｓ１０１７で計算した、転送パラメータＢで転送されるデータについてのＬＲＣをＴＦＬＲＣバッファ１１２４に退避する（Ｓ１０２０）。また固定長ＤＭＡ１１２３は、Ｓ１０１６においてＴＦＬＲＣバッファ１１２４に退避しておいた転送パラメータＡについてのＬＲＣを読み出す（Ｓ１０２１）。
【００５６】
次に固定長ＤＭＡ１１２３は、Ｓ１０１８で設定された転送パラメータＡに従いＤＭＡ間バッファ１１２２に格納されているデータを読み出し、読み出したデータを固定長形式データ７１２に変換してＣＭ１４に転送する（Ｓ１０２２）。この際、固定長ＤＭＡ１１２３は、Ｓ１０２１で読み出したＬＲＣの途中計算値を用いてＬＲＣを計算する。そしてＳ１０２２のデータ転送が末尾の固定長形式データ７１２の転送であるならば、Ｓ１０２２で計算したＬＲＣを第１の保証コード（ＴＦＬＲＣ）として、ＣＭ１４に転送する固定長形式データ７１２に付加する（Ｓ１０２３）。
【００５７】
尚、転送パラメータＢについての第１の保証コード（ＴＦＬＲＣ）の付加も、転送パラメータＡの場合と同様に行われる。各転送パラメータに対応するデータ転送が終了すると、可変長ＤＭＡ１１２１及び固定長ＤＭＡ１１２３は、転送結果を記載したステータス情報をＭＰ１３に送信する（Ｓ１０２４）。
【００５８】
ところで、図９及び図１０における転送パラメータ間でのＬＲＣの途中演算値の引き継ぎは、ＣＣＷのチェインごとに付与される識別子（以下、チェインＩＤと称する。）を用いて行われる。図１１は、データ転送に際し、チェインＩＤを用いて行われる、転送パラメータ間でのＬＲＣの途中演算値の引き継ぎの様子を説明するフローチャートである。以下、同図とともに説明する。
【００５９】
図１１に示すように、ＭＰ１３は、ＤＭＡ１１２からのステータス情報の返信を待つことなくＤＭＡ１１２に転送パラメータを設定することができる（Ｓ１１０１〜Ｓ１１０３）。尚、同図は、チェインＩＤが共通の転送パラメータ（チェインＩＤ＝０）をＤＭＡ１１２に対して３回設定している場合である。
【００６０】
同図に示すように、第１の転送パラメータの設定（パラメータ設定１（Ｓ１１０１））における固定長ＤＭＡ１１２３に設定される転送パラメータの「ＦＦ」ビットは１、「ＬＦ」ビットは０である。また第２の転送パラメータの設定（パラメータ設定２（Ｓ１１０２））における固定長ＤＭＡ１１２３に設定される転送パラメータの「ＦＦ」ビットは０、「ＬＦ」ビットは０である。第３の転送パラメータの設定（パラメータ設定３（Ｓ１１０３））における固定長ＤＭＡ１１２３に設定される転送パラメータの「ＦＦ」ビットは０、「ＬＦ」ビットは１である。
【００６１】
パラメータ設定１（Ｓ１１０１）が行われると、ＤＭＡ１１２がデータ転送１を開始する（Ｓ１１０４）。このデータ転送１はＳ１１０５で完了するが、パラメータ設定２（Ｓ１１０２）が、データ転送１の実行中に行われている。データ転送１が完了すると、ＤＭＡ１１２は、この時点でのＬＲＣの途中計算値を保持（記憶）する（Ｓ１１０５）。
【００６２】
続いてＤＭＡ１１２は、パラメータ設定２（Ｓ１１０２）についてのデータ転送２を開始する（Ｓ１１０６）。このときＤＭＡ１１２は、パラメータ設定２と共通のチェインＩＤを有している、パラメータ設定１（Ｓ１１０１）のデータ転送１において保持したＬＲＣの途中計算値を引き継ぐ（Ｓ１１０６）。尚、同図に示すように、データ転送２の実行中にパラメータ設定３（Ｓ１１０３）が行われる。ＤＭＡ１１２は、データ転送２が完了すると（Ｓ１１０７）、この時点でのＬＲＣの途中計算値を保持（記憶）する。
【００６３】
次にＤＭＡ１１２は、パラメータ設定３（Ｓ１１０３）についてのデータ転送３を開始する（Ｓ１１０８）。このとき、ＤＭＡ１１２は、チェインＩＤがパラメータ設定３と共通するパラメータ設定２のデータ転送２で保持したＬＲＣの途中計算値を引き継ぐ。そしてデータ転送３が完了すると、ＤＭＡ１１２は、末尾の固定長形式データ７１２に第１の保証コード（ＴＦＬＲＣ）を付加し、ステータス情報をＭＰ１３に送信し（Ｓ１１０９）、ＭＰ１３がこれを受信する。
【００６４】
図１２は、データ転送に際し、チェインＩＤを用いて行われる、転送パラメータ間でのＬＲＣの途中演算値の引き継ぎの様子を説明するフローチャートである。図１１はチェインＩＤが単数の場合であったが、図１２ではチェインＩＤが複数の場合である。以下、図１２とともに説明する。
【００６５】
図１１の場合と同じく、ＭＰ１３はＤＭＡ１１２からのステータス情報の返信を待つことなくＤＭＡ１１２に転送パラメータを設定することが可能である（Ｓ１２０１〜Ｓ１２０５）。
【００６６】
同図に示すように、第１の転送パラメータの設定（パラメータ設定１（Ｓ１２０１））における固定長ＤＭＡ１１２３に設定される転送パラメータの「ＦＦ」ビットは１、「ＬＦ」ビットは０であり、チェインＩＤは０である。また第２の転送パラメータの設定（パラメータ設定２（Ｓ１２０２））における固定長ＤＭＡ１１２３に設定される転送パラメータの「ＦＦ」ビットは０、「ＬＦ」ビットは０であり、チェインＩＤは０である。第３の転送パラメータの設定（パラメータ設定３（Ｓ１２０３））における固定長ＤＭＡ１１２３に設定される転送パラメータの「ＦＦ」ビットは１、「ＬＦ」ビットは０であり、チェインＩＤは１である。第４の転送パラメータの設定（パラメータ設定４（Ｓ１２０４））における固定長ＤＭＡ１１２３に設定される転送パラメータの「ＦＦ」ビットは０、「ＬＦ」ビットは１であり、チェインＩＤは０である。第５の転送パラメータの設定（パラメータ設定５（Ｓ１２０５））における固定長ＤＭＡ１１２３に設定される転送パラメータの「ＦＦ」ビットは０、「ＬＦ」ビットは１であり、チェインＩＤは１である。
【００６７】
このように、同図に示す事例では、パラメータ設定１（Ｓ１２０１）、パラメータ設定２（Ｓ１２０２）、及びパラメータ設定４（Ｓ１２０４）のチェインＩＤが共通しており、またパラメータ設定３（Ｓ１２０３）、パラメータ設定５（Ｓ１２０５）のチェインＩＤが共通している。
【００６８】
パラメータ設定１（Ｓ１２０１）が行われると、ＤＭＡ１１２がデータ転送１を開始する（Ｓ１２１１）。このデータ転送１はＳ１２１２で完了するが、パラメータ設定２（Ｓ１２０２）が、データ転送１の実行中に行われている。データ転送１が完了すると、ＤＭＡ１１２は、この時点でのＬＲＣの途中計算値を保持（記憶）する（Ｓ１２１２）。
【００６９】
続いてＤＭＡ１１２は、パラメータ設定２（Ｓ１２０２）についてのデータ転送２を開始する（Ｓ１２１３）。このとき、ＤＭＡ１１２は、共通のチェインＩＤを有している、パラメータ設定１（Ｓ１２０１）のデータ転送１において保持したＬＲＣの途中計算値を引き継ぐ（Ｓ１２１３）。
【００７０】
同図に示すように、データ転送２の実行中にパラメータ設定３（Ｓ１２０３）が行われる。ＤＭＡ１１２は、データ転送２が完了すると（Ｓ１２１３）、この時点でのＬＲＣの途中計算値を保持（記憶）する。またこのとき、ＤＭＡ１１２は、データ転送２のＬＲＣ途中計算値を、チェインＩＤが０のＬＲＣ途中計算値としてＴＦＬＲＣバッファ１１２４に退避する（Ｓ１２１４）。
【００７１】
次にＤＭＡ１１２は、パラメータ設定３（Ｓ１２０３）についてのデータ転送３を開始する（Ｓ１２１５）。そしてデータ転送３が完了すると、ＤＭＡ１１２は、この時点でのＬＲＣの途中計算値を保持（記憶）する（Ｓ１２１６）。またこのとき、ＤＭＡ１１２は、データ転送３のＬＲＣ途中計算値を、チェインＩＤが１のＬＲＣ途中計算値としてＴＦＬＲＣバッファ１１２４に退避する（Ｓ１２１７）。
【００７２】
続いてＤＭＡ１１２は、パラメータ設定４（Ｓ１２０４）についてのデータ転送４を開始する（Ｓ１２１８）。このとき、ＤＭＡ１１２は、Ｓ１２１４で退避したチェインＩＤが０のＬＲＣ途中計算値をＴＦＬＲＣバッファ１１２４から読み出す（Ｓ１２１９）。そしてＤＭＡ１１２は、データ転送４におけるＬＲＣの計算を、Ｓ１２１９で読み出したＬＲＣの途中計算値を用いて行い（途中計算値の引き継ぎ）、データ転送４が完了すると（Ｓ１２２０）、データ転送４のＬＲＣ途中計算値を、チェインＩＤが０のＬＲＣ途中計算値としてＴＦＬＲＣバッファ１１２４に退避する（Ｓ１２２１）。
【００７３】
次にＤＭＡ１１２は、パラメータ設定５（Ｓ１２０５）を受けてデータ転送５を開始する（Ｓ１２２２）。このとき、ＤＭＡ１１２は、Ｓ１２１７で退避したチェインＩＤが１のＬＲＣ途中計算値をＴＦＬＲＣバッファ１１２４から読み出す（Ｓ１２２３）。そしてＤＭＡ１１２は、データ転送５におけるＬＲＣの計算を、Ｓ１２２３で読み出したＬＲＣの途中計算値を用いて行い（途中計算値の引き継ぎ）、データ転送５が完了すると（Ｓ１２２４）、データ転送５のＬＲＣ途中計算値を、チェインＩＤが１のＬＲＣ途中計算値としてＴＦＬＲＣバッファ１１２４に退避する（Ｓ１２２５）。
【００７４】
尚、以上のようにしてデータ転送が全て完了した後はＤＭＡ１１２が末尾の固定長形式データ７１２に第１の保証コード（ＴＦＬＲＣ）を付加する。そしてＤＭＡ１１２ステータス情報をＭＰ１３に送信し、ＭＰ１３がこれを受信することにより一連の処理が終了する。
【００７５】
図１１又は図１２に示したように、本実施形態のストレージ装置１０では、設定される各転送パラメータに対応するデータ転送におけるＬＲＣ途中計算値を、ＭＰ１３ではなくＤＭＡ１１２で管理するようにしている。ＬＲＣ途中計算値は、例えば図１３に示すように、ＭＰ１３で管理する構成とすることもできるが、この場合はＤＭＡ１１２でデータ転送が行われる度に、ＤＭＡ１１２からＭＰ１３、又はＭＰ１３からＤＭＡ１１２に随時ＬＲＣ途中計算値を送信する必要があり、ＬＲＣ途中計算値をＤＭＡ１１２で管理する場合に比べて性能が低下する。
【００７６】
またＬＲＣ途中計算値をＤＭＡ１１２で管理する場合には、前述したようにＭＰ１３はＤＭＡ１１２からのステータス情報の返信を待つことなくＤＭＡ１１２に転送パラメータを設定することができ、ＤＭＡ１１２は前のデータ転送が終了した後、直ちに後続のデータ転送を開始することができ、このことによってもストレージ装置１０処理性能の向上が図られる。
【００７７】
図１４Ａは、ＣＭ１４におけるデータの取り扱い単位が５２０Ｂｙｔｅであるストレージ装置１０において、Ｃ部４１１が８Ｂｙｔｅで構成されＤ部４１３が１０２４Ｂｙｔｅで構成されるデータを、ＦＣ（Fibre Channel）タイプのハードディスクドライブ１７１（５２０Ｂｙｔｅ／セクタ）に前述した第１の方式で保証コードを付加して格納した場合のデータの格納形態（データフォーマット）を示す図である。
【００７８】
一方、図１４Ｂは、上記と同じ構成からなるデータを、ＦＣタイプのハードディスクドライブ１７１に前述した第２の方式で保証コードを付加して格納した場合のデータの格納形態を示す図である。
【００７９】
両者を比較すると、Ｄ部４１３の保証コードがＦＬＲＣであるかＴＦＬＲＣであるかの違いはあるが、データの格納位置（データフォーマット）は基本的に一致している。このため、例えば第１の方式を採用しているストレージ装置１０に第２の方式を導入する場合には、ＣＨＡ１１やＤＫＡ１２、ＭＰ１３等で実行されるソフトウエアを殆ど変更する必要がない。
【００８０】
図１４Ｃは、ＣＭ１４におけるデータの取り扱い単位が５２０Ｂｙｔｅ（ＦＣタイプのハードディスクドライブを想定した管理形態）であるストレージ装置１０において、上記と同じ構成からなるデータを、ＳＡＴＡ（Serial Advanced Technology Attachment）タイプのハードディスクドライブ１７１（５１２Ｂｙｔｅ／セクタ）に前述した第１の方式で保証コードを付加して格納した場合のデータの格納形態を示す図である。
【００８１】
同図に示すように、ＳＡＴＡドライブのセクタサイズは５１２Ｂｙｔｅであって、ＣＭ１４におけるデータの取り扱い単位（５２０Ｂｙｔｅ）とデータサイズが異なるため、セクタごとに第２の保証コード（ＳＬＲＣ）の位置やデータの開始位置が異なり、データフォーマットがこのように複雑になる。
【００８２】
図１４Ｄは、ＣＭ１４におけるデータの取り扱い単位が５２０Ｂｙｔｅであるストレージ装置１０において、上記と同じ構成からなるデータを、ＳＡＴＡタイプのハードディスクドライブ１７１（５１２Ｂｙｔｅ／セクタ）に前述した第２の方式で保証コードを付加して格納した場合のデータの格納形態を示す図である。同図に示すように、この例では第２の保証コード（ＳＬＲＣ）を除去している。
【００８３】
このように、ＳＡＴＡドライブの場合は８Ｂｙｔｅ構成の第２の保証コード（ＳＬＲＣ）を除去することで、ＣＭ１４の取り扱い単位のデータフォーマットとＳＡＴＡドライブの各セクタのデータフォーマットを一致させることができる。尚、この場合は第２の保証コード（ＳＬＲＣ）による保証機能が損なわれるが、旧データの残存やデータの破損の検出機能は、第１の保証コード（ＴＦＬＲＣ）によって保証される。また第２の保証コード（ＳＬＲＣ）には位置情報が含まれているが、同等の情報がＣ部４１１にも含まれているため、第２の保証コード（ＳＬＲＣ）を除去してもハードディスクドライブ１７１のＩ／Ｏ機能に支障を生じることもない。
【００８４】
尚、図１４Ｄのデータフォーマットを採用する場合には、セクタサイズに比べてデータサイズの小さなデータをセクタに格納する場合に保証コードの生成負荷が少なくなる。即ち、図１５Ａに示すように、各セクタに第２の保証コード（ＳＬＲＣ）を付加する場合（第２の保証コード（ＳＬＲＣ）を除去しない場合）には、１セクタ内の一部のデータが書き換えられると、当該セクタの全体に基づき当該セクタの第２の保証コード（ＳＬＲＣ）を生成する必要があるが、図１４Ｄのデータフォーマットを採用する場合には、図１５Ｂに示すように、書き換えられる部分のみを参照して保証コード（同図ではＦＬＲＣ）を生成すればよい。
【００８５】
以上、本実施形態について説明したが、上記実施形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物も含まれる。
【図１】
0005236072.tif 000002
【図２】
0005236072.tif 000003
【図３】
0005236072.tif 000004
【図４】
0005236072.tif 000005
【図５】
0005236072.tif 000006
【図６】
0005236072.tif 000007
【図７Ａ】
0005236072.tif 000008
【図７Ｂ】
0005236072.tif 000009
【図９】
0005236072.tif 000010
【図１０】
0005236072.tif 000011
【図１１】
0005236072.tif 000012
【図１２】
0005236072.tif 000013
【図１３】
0005236072.tif 000014
【図８Ａ】
0005236072.tif 000015
【図８Ｂ】
0005236072.tif 000016
【図８Ｃ】
0005236072.tif 000017
【図１４Ａ】
0005236072.tif 000018
【図１４Ｂ】
0005236072.tif 000019
【図１４Ｃ】
0005236072.tif 000020
【図１４Ｄ】
0005236072.tif 000021
【図１５Ａ】
0005236072.tif 000022
【図１５Ｂ】
0005236072.tif 000023