(57)【要約】【課題】本発明は、安価なハードディスクドライブを多用してもデータの信頼性を保証し、短時間で検証し得る記憶システム及びデータ保証方法を提案する。【解決手段】ホスト装置に対してデータを読み書きするための記憶領域を提供する記憶装置と、記憶装置を制御する記憶制御装置とを有する記憶システムにおいて、記憶装置に保存するホスト装置からのデータに、当該データの保証を示す保証番号を生成する第１の生成部と、ホスト装置からのデータに対応するパリティデータの保証を示す保証番号を生成する第２の生成部と、ホスト装置からのデータの保証を示す保証番号と、パリティデータの保証を示す保証番号とを照合する照合部と、を備えることとした。【選択図】図１
2008165582.tif 000002
【特許請求の範囲】
【請求項１】
ホスト装置に対してデータを読み書きするための記憶領域を提供する記憶装置と、前記記憶装置を制御する記憶制御装置とを有する記憶システムにおいて、
前記記憶装置に保存するホスト装置からのデータに、当該データの保証を示す保証番号を生成する第１の生成部と、
前記ホスト装置からのデータに対応するパリティデータの保証を示す保証番号を生成する第２の生成部と、
前記ホスト装置からのデータの保証を示す保証番号と、前記パリティデータの保証を示す保証番号とを照合する照合部と、
を備えることを特徴とする記憶システム。
【請求項２】
第１の生成部に基づいて生成された前記ホスト装置からのデータの保証を示す保証番号を当該データに付与する第１の付与部と、
第２の生成部に基づいて生成された前記パリティデータの保証を示す保証番号を当該パリティデータに付与する第２の付与部と、をさらに備える
ことを特徴とする請求項１記載の記憶システム。
【請求項３】
前記第２の生成部は、
第１の生成部により生成された前記ホスト装置からのデータの保証を示す保証番号をコピーすることで前記パリティデータの保証を示す保証番号を生成する
ことを特徴とする請求項１記載の記憶システム。
【請求項４】
前記照合部に基づいて前記ホスト装置からのデータに付与される保証番号と、前記パリティデータに付与される保証番号とが一致しない場合には、
前記ホスト装置からのデータ又は前記パリティデータの障害を検出する検出部をさらに備える
ことを特徴とする請求項１記載の記憶システム。
【請求項５】
第１の付与部及び第２の付与部は、
前記記憶装置に保存されるデータの最小ブロック単位毎に保証番号を付与する
ことを特徴とする請求項１記載の記憶システム。
【請求項６】
ホスト装置に対してデータを読み書きするための記憶領域を提供する記憶装置と、前記記憶装置を制御する記憶制御装置とを有する記憶システムのデータ保証方法において、
前記記憶装置に保存するホスト装置からのデータに、当該データの保証を示す保証番号を生成する第１の生成ステップと、
前記ホスト装置からのデータに対応するパリティデータの保証を示す保証番号を生成する第２の生成ステップと、
前記ホスト装置からのデータの保証を示す保証番号と、前記パリティデータの保証を示す保証番号とを照合する照合ステップと、
を備えることを特徴とするデータ保証方法。
【請求項７】
第１の生成ステップに基づいて生成された前記ホスト装置からのデータの保証を示す保証番号を当該データに付与する第１の付与ステップと、
第２の生成ステップに基づいて生成された前記パリティデータの保証を示す保証番号を当該パリティデータに付与する第２の付与ステップと、をさらに備える
ことを特徴とする請求項６記載のデータ保証方法。
【請求項８】
前記第２の生成ステップは、
第１の生成ステップにより生成された前記ホスト装置からのデータの保証を示す保証番号をコピーすることで前記パリティデータの保証を示す保証番号を生成する
ことを特徴とする請求項６記載のデータ保証方法。
【請求項９】
前記照合ステップに基づいて前記ホスト装置からのデータに付与される保証番号と、前記パリティデータに付与される保証番号とが一致しない場合には、
前記ホスト装置からのデータ又は前記パリティデータの障害を検出する検出ステップをさらに備える
ことを特徴とする請求項６記載のデータ保証方法。
【請求項１０】
第１の付与ステップ及び第２の付与ステップは、
前記記憶装置に保存されるデータの最小ブロック単位毎に保証番号を付与する
ことを特徴とする請求項６記載のデータ保証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶システム及びデータ保証方法に関し、例えば安価なハードディスクドライブを使用した記憶システムに適用して好適なものである。
【背景技術】
【０００２】
近年、情報化社会の進展等につれて、ストレージ装置内で保存するホスト装置からのデータ量が急増しており、これに伴いストレージ装置内の記憶容量の大規模化が進められている。そこで、ストレージ装置では、まずハードディスクドライブからＲＡＩＤ（Redundant Array of Independent/Inexpensive Disks）構成されたディスクアレイを作成し、この物理的な記憶リソースを複数個集めて物理ボリュームを作成することでストレージ装置内の記憶容量の大規模化を図っている。
【０００３】
上記のようなＲＡＩＤ構成をサポートするハードディスクドライブとしては、高い性能及びデータの信頼性が高い高価なハードディスクドライブと、大容量のデータを保存できるもののデータの信頼性の保証が難しい安価なハードディスクドライブとがある。
【０００４】
これらのハードディスクドライブは、ストレージ装置内の保存されるデータの質や量、顧客のニーズ等を考慮して、適宜使用される。
【０００５】
特に近年においては、安価なハードディスクドライブを多用してデータを保存する要望が高まっている。
【０００６】
主に安価なハードディスクドライブに保存されるデータの信頼性を高める技術としては、特許文献１に開示された方法が挙げられる。特許文献１には、ホストデータの圧縮データを作成し、圧縮データと当該圧縮データを保存する記憶領域とは異なる記憶領域に保存されるデータとを比較してデータの信頼性を保証する方法が提案されている。
【特許文献１】特開２００６−２５１９６０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、上記のような安価なハードディスクドライブを多用する場合、ハードディスクドライブ内の保存されるべき記憶領域にデータが正しく書き込まれないおそれがある。
【０００８】
また、データの信頼性を確保するためには、保存される全てのデータについてデータが保存されるべき記憶領域に正しく書き込まれているかを検証しなければならず、一つ一つのデータを検証するために多くの時間を費やすことになる。
【０００９】
本発明は以上の点を考慮してなされたもので、安価なハードディスクドライブを多用してもデータの信頼性を保証し、短時間で検証し得る記憶システム及びデータ保証方法を提案しようとするものである。
【課題を解決するための手段】
【００１０】
かかる課題を解決するため本発明は、ホスト装置に対してデータを読み書きするための記憶領域を提供する記憶装置と、記憶装置を制御する記憶制御装置とを有する記憶システムにおいて、記憶装置に保存するホスト装置からのデータに、当該データの保証を示す保証番号を生成する第１の生成部と、ホスト装置からのデータに対応するパリティデータの保証を示す保証番号を生成する第２の生成部と、ホスト装置からのデータの保証を示す保証番号と、パリティデータの保証を示す保証番号とを照合する照合部と、を備えることを特徴とする。
【００１１】
その結果、記憶装置にホスト装置からのデータを保存する際に、ホスト装置からのデータの保証番号と当該データに対応するパリティデータの保証番号とを生成し、両者の保証番号を照合するため、記憶装置に保存されるデータの信頼性を確保することができる。
【００１２】
また、本発明は、ホスト装置に対してデータを読み書きするための記憶領域を提供する記憶装置と、記憶装置を制御する記憶制御装置とを有する記憶システムのデータ保証方法において、記憶装置に保存するホスト装置からのデータに、当該データの保証を示す保証番号を生成する第１の生成ステップと、ホスト装置からのデータに対応するパリティデータの保証を示す保証番号を生成する第２の生成ステップと、ホスト装置からのデータの保証を示す保証番号と、パリティデータの保証を示す保証番号とを照合する照合ステップと、を備えることを特徴とする。
【００１３】
その結果、記憶装置にホスト装置からのデータを保存する際に、ホスト装置からのデータの保証番号と当該データに対応するパリティデータの保証番号とを生成し、両者の保証番号を照合するため、記憶装置に保存されるデータの信頼性を確保することができる。
【発明の効果】
【００１４】
本発明によれば、安価なハードディスクドライブを多用してもデータの信頼性を保証することができる。
【００１５】
また、記憶システム内において、ハードディスクドライブ内に保存されるデータの信頼性に関する検証を短時間で行うことができる。
【発明を実施するための最良の形態】
【００１６】
以下図面について、本発明の一実施の形態を詳述する。
【００１７】
（１）第１の実施の形態
（１−１）第１の実施の形態による記憶システムの構成
（１−１−１）記憶システムの全体構成
図１において、１は全体として本実施の形態による記憶システムを示す。この記憶システム１は、ホスト装置２がネットワーク３を介してストレージ装置４と接続されることにより構成されている。
【００１８】
ホスト装置２は、ＣＰＵ（Central Processing Unit）やメモリ等の情報処理資源を備えたコンピュータ装置であり、例えばパーソナルコンピュータや、ワークステーション、メインフレームなどから構成される。またホスト装置２は、キーボード、スイッチやポインティングデバイス、マイクロフォン等の情報入力装置（図示せず）と、モニタディスプレイやスピーカ等の情報出力装置（図示せず）とを備える。
【００１９】
ネットワーク３は、例えばＳＡＮ（Storage Area Network）、ＬＡＮ（Local Area Network）、インターネット、公衆回線又は専用回線などから構成される。このネットワーク３を介したホスト装置２及びストレージ装置４間の通信は、例えばネットワーク３がＳＡＮである場合にはファイバーチャネルプロトコルに従って行われ、ネットワーク３がＬＡＮである場合にはＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）プロトコルに従って行われる。
【００２０】
ストレージ装置４は、複数のハードディスクドライブ５０からなるディスクドライブ部５と、複数のハードディスクドライブ５０をＲＡＩＤ（Redundant Array of Independent/Inexpensive Disks）方式で管理するコントローラ６とを備えて構成される。
【００２１】
ハードディスクドライブ５０は、例えばＳＣＳＩ（Small Computer System Interface）ディスク等の高価なディスクドライブ、又はＳＡＴＡ（Serial AT Attachment）ディスクや光ディスクドライブ等の安価なディスクドライブから構成される。本実施の形態では、ハードディスクドライブ５０は、ＳＡＴＡ（Serial AT Attachment）ディスクや光ディスクドライブ等の安価なディスクドライブから構成される。
【００２２】
コントローラ６は、複数のチャネルアダプタ７、接続部８、共有メモリ９、キャッシュメモリ１０、複数のディスクアダプタ１１及びサービスプロセッサ１２を備えて構成される。
【００２３】
各チャネルアダプタ７は、マイクロプロセッサ７０、ホスト装置２のインタフェースプロトコルを解釈するためのプロトコルチップ７１、高速にデータの授受を行うためにＤＭＡ（Direct Memory Access）回路を搭載したデータ転送部７２、メモリ７３及び通信インタフェース等を備えたマイクロコンピュータシステムとして構成されており、ネットワーク３に接続するためのポート（図示せず）を備える。各チャネルアダプタ７は、ホスト装置２から送信される各種コマンドを解釈して、必要な処理を実行する。各チャネルアダプタ７のポートには、それぞれを識別するためのネットワークアドレス（例えば、ＩＰアドレスやＷＷＮ）が割り当てられており、これによりチャネルアダプタ７がそれぞれ個別にＮＡＳ（Network Attached Storage）として振る舞うことができるようになされている。そして各チャネルアダプタ７は、内部バスアダプタ（図示せず）を介して接続部８と接続されている。
【００２４】
接続部８は、上述したチャネルアダプタ７の他、共有メモリ９、キャッシュメモリ１０及びディスクアダプタ１１と接続されている。チャネルアダプタ７、共有メモリ９、キャッシュメモリ１０及びディスクアダプタ１１間のデータやコマンドの授受は、この接続部８を介して行われる。接続部８は、例えば高速スイッチングによりデータ伝送を行う超高速クロスバススイッチなどのスイッチ又はバス等で構成される。
【００２５】
共有メモリ９は、チャネルアダプタ７及びディスクアダプタ１１により共有される記憶メモリである。共有メモリ９は、主にストレージ装置４の電源投入時にシステムボリュームから読み出されたシステム構成情報及び各種制御プログラムや、ホスト装置２からのコマンドなどを記憶するために利用される。共有メモリ９についての詳細な説明は、後述する。
【００２６】
キャッシュメモリ１０も、チャネルアダプタ７及びディスクアダプタ１１により共有される記憶メモリである。このキャッシュメモリ１０は、主にストレージ装置４に入出力するユーザデータを一時的に記憶するために利用される。
【００２７】
各ディスクアダプタ１１は、マイクロプロセッサ１１０、メモリ（図示せず）、ハードディスクドライブ５０のインタフェースプロトコルを解釈するためのプロトコルチップ１１１、高速にデータの授受を行うためにＤＭＡ回路を搭載したデータ転送部１１２及び冗長データを生成するためにＤＲＲ（Data Recovery Reconstruct）回路を搭載した冗長データ生成部１１３等を備えたマイクロコンピュータシステムとして構成され、ディスクドライブ部５との通信時におけるプロトコル制御を行うインタフェースとして機能する。本実施の形態においては、冗長データ生成部１１３は、パリティデータを生成するために用いられる。これらディスクアダプタ１１は、例えばファイバーチャネルケーブルを介して対応するディスクドライブ部５と接続されており、ファイバーチャネルプロトコルに従ってこれらディスクドライブ部５との間のデータの授受を行う。
【００２８】
サービスプロセッサ１２は、ストレージ装置４の保守又は管理のために操作されるコンピュータ装置であり、例えばノート型のパーソナルコンピュータから構成される。このサービスプロセッサ１２は、ネットワーク３を介してホスト装置２が接続されており、ホスト装置２からデータ或いは命令を受信することができる。サービスプロセッサ１２は、ストレージ装置４内の障害発生を監視してディスプレイ画面（図示せず）に表示することができる。
【００２９】
（１−１−２）チャネルアダプタ内のメモリの構成
次に、上述のチャネルアダプタ７内のメモリ７３の構成について説明する。
【００３０】
チャネルアダプタ７は、図２に示すように、ホスト装置２からのホストデータの書き込み要求に基づいて実行するチャネルアダプタ用ライトプログラム７３０、ホスト装置２からのリードデータの読み出し要求に基づいて実行するチャネルアダプタ用リードプログラム７３１を備える。
【００３１】
（１−１−３）共有メモリの構成
次に、上述の共有メモリ９の構成について説明する。
【００３２】
共有メモリ９は、図３に示すように、チャネルアダプタ７及びディスクアダプタ１１間の通信メッセージを記憶するメッセージエリア９０、ハードディスクドライブ５０におけるＲＡＩＤ構成情報を記憶する構成情報エリア９１及びハードディスクドライブ５０の障害発生回数を記憶する障害管理エリア９２を備える。
【００３３】
メッセージエリア９０は、チャネルアダプタ７及びディスクアダプタ１１間の通信メッセージを管理するメッセージ情報テーブル９００と、当該テーブル内の情報を追加、変更又は削除するためのメッセージプログラム９０１とを備える。
【００３４】
メッセージ情報テーブル９００は、図４に示すように、通信メッセージの送信元と送信先とを管理するためのテーブルである。
【００３５】
メッセージ情報テーブル９００は、通信メッセージが有効／無効を示す「フラグ」フィールド９００Ａ、通信メッセージを識別する「メッセージコード」フィールド９００Ｂ、通信メッセージの送信元であるチャネルアダプタ７のマイクロプロセッサ７０を識別する「送信コード」フィールド９００Ｃ、送信内容のアドレスを示す「送信内容のアドレス」フィールド９００Ｄ、通信メッセージの送信先であるディスクアダプタ１１のマイクロプロセッサ１１０を識別する「受信コード」フィールド９００Ｅ、受信内容のアドレスを示す「受信内容のアドレス」フィールド９００Ｆから構成される。
【００３６】
構成情報エリア９１は、ハードディスクドライブ５０におけるＲＡＩＤ構成情報を記憶するレイドグループ情報テーブル９１０、当該情報テーブル９１０内の情報を追加、変更又は削除するためのレイドグループプログラム９１１、ハードディスクドライブ５０の構成情報を記憶するハードディスクドライブ情報テーブル９１２及び当該情報テーブル９１２内の情報を追加、変更又は削除するためのハードディスクドライブプログラム９１３を備える。
【００３７】
レイドグループ情報テーブル９１０は、図５に示すように、レイドグループを構成する構成情報を管理するためのテーブルである。レイドグループ情報テーブル９１０は、レイドのグループ番号を示す「レイドグループ番号」フィールド９１０Ａ、レイドのレベルを示す「レイドレベル」フィールド９１０Ｂ、レイドグループの使用可否状態を示す「状態」フィールド９１０Ｃ、レイドグループを構成するハードディスクドライブ５０の台数を示す「ハードディスクドライブ台数」フィールド９１０Ｄ及びレイドグループに含まれるハードディスクドライブを識別する「ハードディスクドライブコード」フィールド９１０Ｅから構成される。
【００３８】
ハードディスクドライブ情報テーブル９１２は、図６に示すように、ハードディスクドライブを構成する構成情報を管理するためのテーブルである。
【００３９】
ハードディスクドライブテーブル９１２は、ハードディスクドライブを識別する「ハードディスクドライブコード」フィールド９１２Ａ、ハードディスクドライブの使用可否状態を示す「状態」フィールド９１２Ｂとから構成される。
【００４０】
障害情報テーブル９２０は、図７に示すように、ハードディスクドライブの障害の種類や回数を管理するためのテーブルである。
【００４１】
障害情報テーブル９２０は、ハードディスクドライブを識別する「ハードディスクドライブコード」フィールド９２０Ａ、ハードディスクドライブをセクタ単位で障害の回数をカウントする「セクタ障害カウンタ」フィールド９２０Ｂ、ハードディスクドライブの機構系の障害の回数をカウントする「機構系障害カウンタ」フィールド９２０Ｃ、ハードディスクドライブが規定時間内に応答しなかった回数を示す「応答障害カウンタ」フィールド９２０Ｄとから構成される。
【００４２】
（１−１−４）ディスクアダプタ内のメモリの構成
次に、上述のディスクアダプタ１１内のメモリ１１４の構成について説明する。
【００４３】
ディスクアダプタ１１は、図８に示すように、ホスト装置２からのホストデータの書き込み要求に基づいて実行するディスクアダプタ用ライトプログラム１１５、ホスト装置２からのリードデータの読み出し要求に基づいて実行するディスクアダプタ用リードプログラム１１６、ホスト装置２からのホストデータを分割したデータ（以下、分割ホストデータという）に付与した保証コード及び当該分割ホストデータに対応するパリティデータに付与した保証コードを比較して異常を検出した場合に実行するコンペア異常プログラム１１７、パリティデータの異常を検出した場合に実行するパリティデータ異常プログラム１１８、分割ホストデータの異常を検出した場合に実行する分割ホストデータ異常プログラム１１９、分割ホストデータ又はパリティデータを回復してハードディスクドライブに保存する場合に実行するデータ回復コピープログラム１２０を備える。
【００４４】
（１−１−５）各種のデータブロック
本実施の形態における記憶システム１においては、図９に示すように、５つの安価なハードディスクドライブ５０を使用する。５つのハードディスクドライブ５０のうち、２つのハードディスクドライブ５０Ａ、５０Ｂは、ホスト装置２からのホストデータを分割した分割ホストデータＤ０、Ｄ１を保存するディスクであり、他の２つのハードディスクドライブ５０Ｃ、５０Ｄは分割ホストデータＤ０、Ｄ１に保存されるデータの誤りを検出するためのパリティデータＰ１、Ｐ２を保存するディスクである。すなわち、ハードディスクドライブの台数ｎは「４」と設定するものとする。その他のハードディスクドライブ５０Ａ´は、ハードディスクドライブ５０Ａのスペアディスクとして備える。
【００４５】
また、各ハードディスクドライブ５０Ａ〜５０Ｄは、各ディスクアダプタ１１Ａ〜１１Ｄと接続され、各ディスクアダプタ１１Ａ〜１１Ｄは、各チャネルアダプタ７Ａ〜７Ｄと接続されている。
【００４６】
このような記憶システムの構成において、図１０に示すように、キャッシュメモリ１０上に保存されるホストデータの最小ブロック単位は、ユーザのデータを保存する「ユーザデータ」エリア１３、当該ユーザデータの位置情報を示す「付加コード」エリア１４、データを識別するための識別番号を示す「保証コード」エリア１５とから構成される。例えば、最小ブロックフォーマットにおける「ユーザデータ」エリア１３は５１２バイト、「付加コード」エリア１４は８バイト及び「保証コード」エリア１５は８バイトから構成される。
【００４７】
なお、この最小ブロック単位は、ハードディスクドライブ５０上も同様の構成であるため、説明を省略する。
【００４８】
ハードディスクドライブ５０上に保存されるデータの最小ブロック単位のうち、「保証コード」エリアには、サブブロックが構成されている。そしてこのサブブロックは、ハードディスクドライブ５０Ａ、５０Ｂと、ハードディスクドライブ５０Ｃ、５０Ｄとでのフォーマットが異なる。
【００４９】
図１１に示すように、ハードディスクドライブ５０Ａ、５０Ｂに保存されるデータのサブブロックは、データを検証するための識別番号を示す「保証コード」エリア１６Ｄ及びデータを保存した時点での年月日の履歴を示す「Time Stamp」エリア１７Ｄとから構成される。
【００５０】
また図１２に示すように、ハードディスクドライブ５０Ｃ、５０Ｄに保存されるパリティデータのサブブロックは、各ハードディスクドライブ５０Ａ、５０Ｂに対応する識別番号を示す「保証コード」エリア１６Ｐ、１７Ｐ及び使用しない予備領域を示す「ＲＳＶ」エリア１８Ｐとから構成される。
【００５１】
（１−２）データ保証機能
次に、本実施の形態による記憶システム１に搭載されたデータ保証機能について説明する。
【００５２】
この記憶システム１は、ホスト装置２から要求に基づいて分割ホストデータＤをハードディスクドライブ５０に書き込む際に、チャネルアダプタ７が分割ホストデータＤを書き込む毎に当該データを識別するための保証コード１６Ｄを生成して当該データＤに付与し、ディスクアダプタ１１がディスクアダプタ１１内で作成したパリティデータＰに当該保証コード１６Ｐをコピーすることで保証コードを付与する点を特徴としている。
【００５３】
また、ホスト装置２から要求に基づいて分割ホストデータＤをハードディスクドライブ５０から読み出す際に、分割ホストデータＤに付与されている保証コード１６Ｄと、分割ホストデータＤに対応するパリティデータＰの保証コード１６Ｐとをコンペア（照合）する点を特徴としている。
【００５４】
（１−２−１）データのライト時における処理内容
上記の特徴を実現する手段として、ホスト装置の書き込み要求に基づいて分割ホストデータの保証コードを設定し、当該データの保証コードをパリティデータにコピーする処理内容について説明する。
【００５５】
（１−２−１−１）チャネルアダプタの処理内容
まず、チャネルアダプタ７が、ホスト装置の書き込み要求に基づいて、分割ホストデータの保証コードを設定する処理内容を説明する。チャネルアダプタ７側の書き込み処理は、マイクロプロセッサ７０がチャネルアダプタ用ライトプログラム７３０に基づいて当該処理を実行する。
【００５６】
まず、図１３に示すように、プロトコルチップ７１Ａはホスト装置２からの書き込み要求を受領することで、この処理を開始する（ＳＰ０）。そしてプロトコルチップ７１Ａは、この書き込み要求を受領した旨をプロトコルチップ７０Ａに報告する（ＳＰ１）。
【００５７】
この報告を受け取ると、マイクロプロセッサ７０Ａは、プロトコルチップ７１Ａに対して、データ転送部７２Ａにホスト装置２からのホストデータを転送するように、指示をする（ＳＰ２）。
【００５８】
当該指示を受けたプロトコルチップ７１Ａは、データ転送部７２Ａにホスト装置２からのホストデータを転送する（ＳＰ３）。
【００５９】
次に、マイクロプロセッサ７０Ａは、データ転送部７２Ａに対して、当該ホストデータを論理分割（以下、これをＲＡＩＤストライプ分割という）し、当該分割ホストデータＤ０、Ｄ１を一時的に保存するキャッシュメモリ１０のアドレス及び当該分割ホストデータＤ０、Ｄ１の転送長を設定するように指示をする（ＳＰ４）。引き続き、マイクロプロセッサ７０Ａは、共有メモリ９内の構成情報エリア９１を参照し、データ転送部７２Ａに対して、ハードディスクドライブ数の設定をするように指示をする（ＳＰ４）。
【００６０】
そして、マイクロプロセッサ７０Ａは、分割ホストデータＤ０、Ｄ１をプロトコルチップ７１Ａから読み込み、プロトコルチップ７１Ａに対して、キャッシュメモリ１０に当該分割ホストデータＤ０、Ｄ１を転送するように指示をする（ＳＰ４）。
【００６１】
そうするとデータ転送部７２Ａは、マイクロプロセッサ７０Ａの指示に従い、ホストデータを論理分割して、分割ホストデータＤ０、Ｄ１を作成する。そしてデータ転送部７２Ａは、分割ホストデータＤ０、Ｄ１を一時的に保存するキャッシュメモリ１０のアドレス及び当該分割ホストデータＤ０、Ｄ１の転送長を設定する（ＳＰ５）。
【００６２】
また、データ転送部７２Ａは、ハードディスクドライブ数の設定をする（ＳＰ５）。
【００６３】
引き続き、データ転送部７２Ａは、分割ホストデータＤ０、Ｄ１をキャッシュメモリに保存する最小ブロック単位毎に保証コードを設定し、分割ホストデータＤ０、Ｄ１に付与する（ＳＰ６）。
【００６４】
図１４に示すように、データ転送部７２Ａは、保証コードが付与された分割ホストデータＤ０、Ｄ１をキャッシュメモリ１０へ転送する（ＳＰ６）。
【００６５】
データ転送部７２Ａは、キャッシュメモリ１０への転送が完了するとマイクロプロセッサ７０Ａに転送完了した旨を報告する（ＳＰ７）。
【００６６】
マイクロプロセッサ７０Ａは、プロトコルチップ７１Ａからの転送完了した旨の通知を受領すると（ＳＰ８）、キャッシュメモリに転送された分割ホストデータＤ０、Ｄ１をハードディスクドライブ５０に書き込むというメッセージを、共有メモリ９のメッセージエリア９０内のメッセージ情報テーブル９００に設定する（ＳＰ９）。
【００６７】
そしてマイクロプロセッサ７０Ａは、プロトコルチップ７１Ａに、ホスト装置２へ書き込み処理が完了した旨のステータス送信をするように、指示をする（ＳＰ１０）。
【００６８】
この指示を受けたプロトコルチップ７１Ａは、ホスト装置２に書き込み処理が完了した旨のステータス送信をすると（ＳＰ１１）。チャネルアダプタ側での書き込み処理を終了する（ＳＰ１２）。
【００６９】
（１−２−１−２）ディスクアダプタの処理内容
まず、ディスクアダプタ１１がホスト装置２からの書き込み要求に基づいて、パリティデータに分割ホストデータの保証コードをコピーする処理内容を説明する。ディスクアダプタ１１側の書き込み処理は、マイクロプロセッサ１１０がディスクアダプタ用ライトプログラム１１５に基づいて当該処理を実行する。
【００７０】
具体的には、図１５に示すように、マイクロプロセッサ１１０Ａは、共有メモリ９のメッセージエリア９０にハードディスクドライブ５０Ａに対する書き込み指示が書き込まれると、この処理を開始する（ＳＰ２０）。
【００７１】
マイクロプロセッサ１１０Ａは、冗長データ生成部１１３Ａに対し、分割ホストデータＤ０、Ｄ１をキャッシュメモリ１０から読み込み、分割ホストデータＤ０、Ｄ１に対応するパリティデータＰ１、Ｐ２を作成するよう指示をする（ＳＰ２１）。
【００７２】
同時に、マイクロプロセッサ１１０Ａは、冗長データ生成部１１３Ａに対し、作成したパリティデータＰ１、Ｐ２をキャッシュメモリ１０に書き込むよう指示をする（ＳＰ２１）。
【００７３】
そして、マイクロプロセッサ１１０Ａは、冗長データ生成部１１３Ａに共有メモリ９の構成情報エリア９１内のレイドグループ情報テーブル９１０を参照し、レイドグループを構成するハードディスクドライブの台数を設定する（ＳＰ２２）。本実施の形態においてマイクロプロセッサ１１０Ａは、ハードディスクドライブの台数を４と設定する。
【００７４】
上記指示を受けた冗長データ生成部１１３Ａは、パリティデータＰ１、Ｐ２を作成する（ＳＰ２３）。
【００７５】
冗長データ生成部１１３Ａは、分割ホストデータＤ０、Ｄ１の保証コード１６Ｄ０、１６Ｄ１を、作成したパリティデータＰ１、Ｐ２にコピーする（ＳＰ２４）。
【００７６】
具体的には、図１６に示すように、冗長データ生成部１１３Ａは、パリティデータＰ１に、分割ホストデータＤ０、Ｄ１の保証コード１６Ｄ０、１６Ｄ１をコピーして、対応する保証コード１６Ｐ１、１７Ｐ１を作成する。引き続き、冗長データ生成部１１３Ａは、パリティデータＰ２に、分割ホストデータＤ０、Ｄ１の保証コード１６Ｄ０、１６Ｄ１をコピーして、対応する保証コード１６Ｐ２、１７Ｐ２を作成する。
【００７７】
そうすると、冗長データ生成部１１３Ａは、パリティデータＰ１、Ｐ２をキャッシュメモリ１０に書き込む（ＳＰ２５）。
【００７８】
次に、マイクロプロセッサ１１０Ａは、自マイクロプロセッサ１１０Ａを含む、マイクロプロセッサ１１０Ａ〜１１０Ｄに、当該マイクロプロセッサ１１０Ａ〜１１０Ｄと接続されるハードディスクドライブ５０Ａ〜５０Ｄに分割ホストデータＤ０、Ｄ１又はパリティデータＰ１、Ｐ２を書き込むように指示をする（ＳＰ２６）。
【００７９】
具体的には、マイクロプロセッサ１１０Ａは、共有メモリ９のメッセージ情報テーブル９００内に、ハードディスクドライブ５０Ａ〜５０Ｄに分割ホストデータＤ０、Ｄ１又はパリティデータＰ１、Ｐ２を書き込み命令のメッセージを設定する。
【００８０】
その後、図１７に示すように、マイクロプロセッサ１１０Ａ〜１１０Ｄは、マイクロプロセッサ１１０Ａの指示に従い、ハードディスクドライブ５０Ａ〜５０Ｄに分割ホストデータＤ０、Ｄ１又はパリティデータＰ１、Ｐ２を書き込む（ＳＰ２７）。
【００８１】
そしてマイクロプロセッサ１１０Ａは、他のマイクロプロセッサ１１０Ｂ〜１１０Ｄから書き込み完了があるかを判断し（ＳＰ２８）、全ての書き込み完了がない場合には（ＳＰ２８：ＮＯ）、全ての書き込み完了報告があるまで待つ。
【００８２】
一方、マイクロプロセッサ１１０Ａは、全ての書き込みが完了した旨の報告があると（ＳＰ２８：ＹＥＳ）、この旨を受領し（ＳＰ２９）、ディスクアダプタ側の書き込み処理を終了する（ＳＰ３０）。
【００８３】
具体的には、マイクロプロセッサ１１０Ａは、共有メモリ９のメッセージ情報テーブル９００の「フラグ」フィールド９００Ａを有効にして、この処理を終了する。
【００８４】
引き続き、ステップＳＰ２７において、マイクロプロセッサ１１０Ａからハードディスクドライブ５０Ａ〜５０Ｄの書き込み指示を受けたマイクロプロセッサ１１０Ａ〜１１０Ｄの書き込み処理について説明する。
【００８５】
図１８に示すように、マイクロプロセッサ１１０Ａ〜１１０Ｄは、マイクロプロセッサ１１０Ａから分割ホストデータＤ０、Ｄ１又はパリティデータＰ１、Ｐ２を書き込む指示を受領すると、共有メモリ９のメッセージ情報テーブル９００に設定された情報に従い、この処理を開始する（ＳＰ４０）。
【００８６】
そして、マイクロプロセッサ１１０Ａ〜１１０Ｄは、データ転送部１１２Ａ〜１１２Ｄに対して、分割ホストデータＤ０、Ｄ１又はパリティデータＰ１、Ｐ２が保存されるハードディスクドライブ５０Ａ〜５０Ｄのアドレスと転送サイズを設定するよう指示をする（ＳＰ４１）。
【００８７】
この指示を受けたデータ転送部１１２Ａ〜１１２Ｄに対して、ハードディスクドライブ５０のアドレスと転送サイズを設定する（ＳＰ４２）。
【００８８】
マイクロプロセッサ１１０Ａ〜１１０Ｄは、プロトコルチップ１１１Ａ〜１１１Ｄに対し、書き込むハードディスクドライブ５０Ａ〜５０Ｄの識別ＩＤ、ＬＢＡ（Logical Block Address）及び転送サイズを設定するよう指示をする（ＳＰ４３）。
【００８９】
プロトコルチップ１１１Ａ〜１１１Ｄは、書き込むハードディスクドライブ５０の識別ＩＤ、ＬＢＡ（Logical Block Address）及び転送サイズを設定する（ＳＰ４４）。
【００９０】
図１７に示すように、プロトコルチップ１１１Ａ〜１１１Ｄは、ハードディスクドライブ５０Ａ〜５０Ｄに分割ホストデータＤ０、Ｄ１又はパリティデータＰ１、Ｐ２を転送する。
【００９１】
他のマイクロプロセッサ１１０Ｂ〜１１０Ｄは、ハードディスクドライブ５０へ分割ホストデータＤ１又はパリティデータＰ１、Ｐ２の書き込みを完了すると、マイクロプロセッサ１１０Ａにこの旨を報告して（ＳＰ４５）、この処理を終了する（ＳＰ４６）。
【００９２】
なお、マイクロプロセッサ１１０Ａ内における処理の場合には、書き込み完了報告をせずに他のマイクロプロセッサ１１０Ｂ〜１１０Ｄからの書き込み完了通知を待つことになる（ＳＰ２８）。
【００９３】
（１−２−１−３）保証コードの設定処理内容
次に、ホスト装置からのデータの書き込み要求に基づいて、ストレージ装置４が分割ホストデータの保証コード及びパリティデータの保証コードを設定するための保証コード設定処理の内容について説明する。
【００９４】
具体的には、図１９に示すように、チャネルアダプタ７は、ホスト装置２からのホストデータの書き込み要求を受領すると、保証コード設定処理を開始する（ＳＰ５０）。
【００９５】
チャネルアダプタ７のデータ転送部７２は、キャッシュメモリ１０内でＲＡＩＤストライプ分割をした分割ホストデータD０に保証コード１６D０を設定し、分割ホストデータD０に付与する（ＳＰ５１）。
【００９６】
次に、ディスクアダプタ１１のデータ転送部１１２は、保証コードを付与された分割ホストデータＤ０を、ハードディスクドライブ５０に書き込む（ＳＰ５２）。
【００９７】
そして、ディスクアダプタ１１の冗長データ生成部１１３は、分割ホストデータに対応するパリティデータを作成し、パリティデータに付与する保証コードを作成する（ＳＰ５３）。
【００９８】
ディスクアダプタ１１のデータ転送部１１２は、保証コードを付与したパリティデータをハードディスクドライブに書き込みすると（ＳＰ５４）、この処理を終了する（ＳＰ５５）。
【００９９】
（１−２−２）データのリード時における処理内容
上記の特徴を実現する手段として、ホスト装置からのデータの読み出し要求に基づいて、ハードディスクドライブから読み出した分割ホストデータの保証コードとパリティデータの保証コードとを比較し、読み出し要求があったデータの保証を確保する処理内容について説明する。このとき、当該データの保証が確保されない場合には、障害のあるデータを検出して、データの保証を確保できるように回復する処理内容についても併せて説明する。
【０１００】
（１−２−２−１）チャネルアダプタの処理内容
まず、チャネルアダプタ７がホスト装置からのデータの読み出し要求に基づいて、要求されたデータをホスト装置２に転送する処理内容を説明する。チャネルアダプタ７の読み出し処理は、マイクロプロセッサ７０がチャネルアダプタ用リードプログラム７３１に基づいて当該処理を実行する。
【０１０１】
図２０及び図２１に示すように、プロトコルチップ７１Ａは、ホスト装置２からのデータの読み出し要求を受領することで、この処理を開始する（ＳＰ６０）。そしてプロトコルチップ７１Ａは、マイクロプロセッサ７０Ａに、データの読み出し要求があったことを報告する（ＳＰ６１）。
【０１０２】
この報告を受け取ったマイクロプロセッサ７０Ａは、ホスト装置２が要求するデータがＲＡＩＤストライプ分割されたハードディスクドライブのうち、どのハードディスクドライブに該当するのかを、共有メモリ９のレイドグループ情報テーブル９１０及びハードディスクドライブ情報テーブル９１１を参照して特定（物理論理変換）する（ＳＰ６２）。ここでは、ホスト装置２が要求するデータは、分割ホストデータＤ０とする。
【０１０３】
そして、マイクロプロセッサ７０Ａは、共有メモリ９のメッセージ情報テーブル９００内に、ハードディスクドライブ５０Ａに保存される分割ホストデータＤ０をキャッシュメモリ１０に読み込むようにメッセージを設定する（ＳＰ６３）。
【０１０４】
その後マイクロプロセッサ７０Ａは、ディスクアダプタ１１Ａに対して、ハードディスクドライブ５０に保存された分割ホストデータＤ０をキャッシュメモリ１０に読み込むように指示をし（ＳＰ６４）、キャッシュメモリ１０に当該分割ホストデータＤ０が読み込まれたか否かを判断する（ＳＰ６５）。
【０１０５】
ここでマイクロプロセッサ７０Ａは、ハードディスクドライブ５０に保存された分割ホストデータＤ０がキャッシュメモリ１０に読み込まれていないと判断すると（ＳＰ６５：ＮＯ）、読み込まれるまで待つ。
【０１０６】
一方、マイクロプロセッサ７０Ａは、ハードディスクドライブ５０に保存された分割ホストデータＤ０がキャッシュメモリ１０に読み込まれていると判断すると（ＳＰ６５：ＹＥＳ）、データ転送部７２Ａに対し、分割ホストデータＤ０が読み込まれたキャッシュメモリ１０上のアドレスと転送長を設定するよう指示をする（ＳＰ６６）。
【０１０７】
この指示を受け取ると、データ転送部７２Ａは、分割ホストデータＤ０が読み込まれたキャッシュメモリ１０上のアドレスと転送長を設定する（ＳＰ６７）。
【０１０８】
そして、マイクロプロセッサ７０Ａは、データ転送部７２Ａに、キャッシュメモリ１０上の分割ホストデータＤ０をプロトコルチップ７１Ａに転送するように指示をする（ＳＰ６８）。
【０１０９】
この指示を受け取ったデータ転送部７２Ａは、キャッシュメモリ１０上の分割ホストデータＤ０をプロトコルチップ７１Ａに転送すると（ＳＰ６９）、マイクロプロセッサ７０Ａに、転送を完了した旨を報告する（ＳＰ７０）。
【０１１０】
マイクロプロセッサ７０Ａは、データ転送部７２Ａから転送を完了した旨の報告を受領すると（ＳＰ７１）、プロトコルチップ７１Ａに、分割ホストデータをホスト装置２に転送するよう指示をするとともに、終了ステータスを送信するように指示をする（ＳＰ７２）。
【０１１１】
この指示を受け取ったプロトコルチップ７１Ａは、分割ホストデータをホスト装置２に転送するとともに、終了ステータスを送信すると（ＳＰ７３）、この処理を終了する（ＳＰ７４）。
【０１１２】
（１−２−２−２）ディスクアダプタの処理内容
（１−２−２−２−１）読み出し処理
続いて、ディスクアダプタ１１が、ホスト装置２からの読み出し要求に基づいてハードディスクドライブから読み出した分割ホストデータの保証コードとパリティデータの保証コードとを比較する処理内容を説明する。ディスクアダプタ１１のライト処理は、マイクロプロセッサ１１０がディスクアダプタ用リードプログラム１１６に基づいて当該処理を実行する。
【０１１３】
図２２及び図２３に示すように、ステップＳＰ６４において、マイクロプロセッサ１１０Ａは、ハードディスクドライブ５０に保存された分割ホストデータＤ０をキャッシュメモリ１０へ読み込むという読み込み指示をチャネルアダプタ７Ａから受領すると、この処理を開始する（ＳＰ８０）。
【０１１４】
次に、マイクロプロセッサ１１０Ａは、プロトコルチップ１１１Ａに対して、分割ホストデータＤ０が保存されたハードディスクドライブの識別ＩＤ、ＬＢＡ及び分割ホストデータＤ０の転送サイズを設定するよう指示をする（ＳＰ８１）。
【０１１５】
そして、マイクロプロセッサ１１０Ａは、データ転送部１１２Ａに対し、分割ホストデータの転送先であるキャッシュメモリ１０のアドレスと転送ブロックサイズを設定する（ＳＰ８２）。
【０１１６】
マイクロプロセッサ１１０Ａからの指示に従い、プロトコルチップ１１１Ａは、ハードディスクドライブ５０Ａの識別ＩＤ、ＬＢＡ及び分割ホストデータＤ０の転送サイズを設定すると（ＳＰ８３）、分割ホストデータＤ０を読み出し、データ転送部１１２Ａに転送する（ＳＰ８４）。
【０１１７】
そしてデータ転送部１１２Ａは、図２４に示すように、分割ホストデータＤ０を、ステップＳＰ７２で設定したキャッシュメモリ１０のアドレスに転送する（ＳＰ８５）。
【０１１８】
次に、マイクロプロセッサ１１０Ａは、他のマイクロプロセッサ１１０Ｃに対して、パリティデータＰ１をハードディスクドライブ５０Ｃから読み出して、キャッシュメモリ１０に転送するよう指示をする（ＳＰ８６）。
【０１１９】
なお、この指示は、パリティデータＰ２を保存するハードディスクドライブ５０Ｄと接続するマイクロプロセッサ１１０Ｄに対して行ってもよい。
【０１２０】
他のマイクロプロセッサ１１０Ｃに対して、パリティデータＰ１をハードディスクドライブ５０Ｃから読み出して、キャッシュメモリ１０に転送する（ＳＰ８７）。なお、この詳細は、マイクロプロセッサ１１０Ｃの処理として図２６に示すフローチャートに基づいて後述する。
【０１２１】
そうして、マイクロプロセッサ１１０Ａは、上記指示によってキャッシュメモリ１０にパリティデータＰ１が転送されて、読み込まれるかどうかを判断し（ＳＰ８８）、読み込まれていないと判断すると（ＳＰ８８：ＮＯ）、パリティデータＰ１がキャッシュメモリ１０に読み込まれるのを待つ。
【０１２２】
一方、マイクロプロセッサ１１０Ａは、上記指示によって、図２４に示すようにキャッシュメモリ１０にパリティデータＰ１を読み込んで、読み込み完了と判断すると（ＳＰ８８：ＹＥＳ）、冗長データ生成部１１３Ａに対し、キャッシュメモリ１０から分割ホストデータＤ０とパリティデータＰ１をディスクアダプタ１１Ａに読み込むよう指示をする（ＳＰ８９）。
【０１２３】
分割ホストデータＤ０とパリティデータＰ１がディスクアダプタ１１に読み込まれると、マイクロプロセッサ１１０Ａは、冗長データ生成部１１３Ａに対し、分割ホストデータＤ０の保証コード１６Ｄ０とパリティデータＰ１の保証コード１６Ｐ１とをコンペア（照合）するように指示をする（ＳＰ９０）。
【０１２４】
マイクロプロセッサ１１０Ａは、共有メモリ９の構成情報エリア９１内のレイドグループ情報テーブル９１０を参照し、冗長データ生成部１１３Ａにレイドグループを構成するハードディスクドライブの台数を設定する（ＳＰ９１）。本実施の形態においてマイクロプロセッサ１１０Ａは、ハードディスクドライブの台数を４と設定する。
【０１２５】
冗長データ生成部１１３Ａは、図２５に示すように、マイクロプロセッサ１１０Ａからのコンペア指示に従って、分割ホストデータＤ０の保証コード１６Ｄ０とパリティデータＰ１の保証コード１６Ｐ１とをコンペア（照合）し（ＳＰ９２）、このコンペア結果をマイクロプロセッサ１１０Ａに報告する（ＳＰ９３）。
【０１２６】
マイクロプロセッサ１１０Ａは、冗長データ生成部１１３Ａからのコンペア結果を受領すると（ＳＰ９４）、コンペア結果を判断する（ＳＰ９５）。
【０１２７】
マイクロプロセッサ１１０Ａは、分割ホストデータＤ０の保証コード１６Ｄ０とパリティデータＰ１の保証コード１６Ｐ１とが一致していないと判断すると（ＳＰ９５：ＮＯ）、いずれかのデータが保証されていないと判断されたため、コンペア異常処理を実行させる（ＳＰ９６）。なお、コンペア異常処理については、図２８及び図２９に示すフローチャートに基づいて後述をする。
【０１２８】
一方、マイクロプロセッサ１１０Ａは、分割ホストデータＤ０の保証コード１６Ｄ０とパリティデータＰ１の保証コード１６Ｐ１とが一致していると判断すると（ＳＰ９５：ＹＥＳ）、共有メモリ９のメッセージ情報テーブル９００にハードディスクドライブからの読み込みは完了した旨を設定し（ＳＰ９７）、この処理を終了する（ＳＰ９８）。
【０１２９】
ステップＳＰ８７のパリティデータＰ１の読み出し処理について、図２６に示すフローチャートに基づいて、説明をする。
【０１３０】
具体的には、マイクロプロセッサ１１０Ｃは、共有メモリ９に読み込み指示を確認した場合にこの処理を開始する（ＳＰ１００）。
【０１３１】
そして、マイクロプロセッサ１１０Ｃは、プロトコルチップ１１１Ｃに対して、パリティデータＰ１を保存するハードディスクドライブの識別ＩＤ、ＬＢＡ及びパリティデータＰ１の転送サイズを設定するように指示をする（ＳＰ１０１）。
【０１３２】
この指示を受け取ったプロトコルチップ１１１Ｃは、パリティデータＰ１を保存するハードディスクドライブの識別ＩＤ、ＬＢＡ及びパリティデータＰ１の転送サイズを設定する（ＳＰ１０２）。
【０１３３】
次にマイクロプロセッサ１１０Ｃは、データ転送部１１２Ｃに対して、ハードディスクドライブ５０Ｃから読み出すパリティデータを一時的に保存するキャッシュアドレスと転送サイズを設定するよう指示をする（ＳＰ１０３）。
【０１３４】
この指示を受け取ったデータ転送部１１２Ｃは、ハードディスクドライブ５０Ｃから読み出すパリティデータＰ１を一時的に保存するキャッシュメモリ１０のアドレスと転送サイズを設定する（ＳＰ１０４）。
【０１３５】
それぞれの設定が終了すると、プロトコルチップ１１１Ｃは、ハードディスクドライブ５０ＣからパリティデータＰ１を読み込み、データ転送部１１２Ｃに転送する（ＳＰ１０５）。
【０１３６】
そしてデータ転送部１１２Ｃは、設定したキャッシュメモリ１０のアドレス上に読み込んだパリティデータＰ１を転送する（ＳＰ１０６）。
【０１３７】
そうすると、マイクロプロセッサ１１０Ｃは、共有メモリ９にパリティデータＰ１の読み込み完了を設定し（ＳＰ１０７）、マイクロプロセッサに完了した旨を報告すると（ＳＰ１０７）、この処理を終了する（ＳＰ１０８）。
【０１３８】
（１−２−２−２−２）保証コードの比較処理内容
次に、ホスト装置からのデータの読み出し要求に基づいて、ストレージ装置４が分割ホストデータの保証コード及びパリティデータの保証コードを比較して、リードデータとしてホスト装置２に読み出すための保証コードの比較処理の内容について説明する。
【０１３９】
具体的には、図２７に示すように、ディスクアダプタ１１のデータ転送部１１２は、ホスト装置２からのリードデータの読み出し要求を受領すると、保証コードの比較処理を開始する（ＳＰ１１０）。
【０１４０】
ディスクアダプタ１１の冗長データ生成部１１３は、リードデータである分割ホストデータＤ０の保証コード１６Ｄ０と、当該分割ホストデータＤ０に対応するパリティデータＰ１の保証コード１６Ｐ１とを比較する（ＳＰ１１１）。
【０１４１】
データ転送部１１２は、当該比較により保証コードが一致した場合には、分割ホストデータＤ０をホスト装置２へ読み出す。
【０１４２】
次に、保証コードが一致しない場合には、ディスクアダプタ１１の冗長データ生成部１１３は、リードデータである分割ホストデータＤ０の保証コード１６Ｄ０と、当該分割ホストデータＤ０に対応するパリティデータＰ２の保証コード１６Ｐ２とを比較する（ＳＰ１１２）。
【０１４３】
データ転送部１１２は、当該比較により保証コードが一致した場合には、分割ホストデータＤ０をホスト装置２へ読み出す。
【０１４４】
保証コードが一致しない場合には、ディスクアダプタ１１の冗長データ生成部１１３は、分割ホストデータ又はパリティデータ再作成処理を行い（ＳＰ１１３）、この処理を終了する（ＳＰ１１４）。
【０１４５】
（１−２−２−２−３）コンペア異常処理
それでは次に、ステップＳＰ９６のコンペア異常処理について詳細に説明をする。このコンペア異常処理は、ディスクアダプタ１１のマイクロプロセッサ１１０がコンペア異常プログラム１１７に基づいて実行する。
【０１４６】
具体的には、図２８及び図２９に示すように、まずマイクロプロセッサ１１０Ａは、分割ホストデータＤ０の保証コード１６Ｄ０とパリティデータＰ１の保証コード１６Ｐ１とが一致していないと判断すると（ＳＰ９５：ＮＯ）、コンペア異常処理を開始する（ＳＰ１２０）。
【０１４７】
そして、マイクロプロセッサ１１０Ａは、パリティデータＰ２を保存するハードディスクドライブ５０Ｄに接続する他のマイクロプロセッサ１１０Ｄに、ハードディスクドライブ５０ＤからパリティデータＰ２を読み出すよう指示をする（ＳＰ１２１）。
【０１４８】
マイクロプロセッサ１１０Ａは、他のマイクロプロセッサ１１０Ｄがハードディスクドライブ５０ＤからパリティデータＰ２を読み出して、共有メモリ９にパリティデータ読み込み指示が完了するのを待つ。なお、この処理はステップＳＰ１００〜ステップＳＰ１０８までと同様の処理なので説明は省略する。
【０１４９】
そうしてマイクロプロセッサ１１０Ａは、パリティデータＰ２がキャッシュメモリ１０に読み込まれた否かを判断して（ＳＰ１２２）、読み込まれるまで待つ（ＳＰ１２２：ＮＯ）。
【０１５０】
一方、図３０に示すようにマイクロプロセッサ１１０Ａは、パリティデータＰ２がキャッシュメモリ１０に読み込まれたと判断すると（ＳＰ１２２：ＹＥＳ）、冗長データ生成部１１３Ａに、分割ホストデータＤ０の保証コード１６Ｄ０と読み込んだパリティデータＰ２の保証コード１６Ｐ２とをコンペアするように指示をする（ＳＰ１２３）。
【０１５１】
その後、マイクロプロセッサ１１０Ａは、図３１に示すように、分割ホストデータＤ０の保証コード１６Ｄ０と読み込んだパリティデータＰ２の保証コード１６Ｐ２についてコンペアを行い、ステップＳＰ１２４〜ステップＳＰ１２８の処理手順を、ステップＳＰ９１〜ステップＳＰ９５と同様の処理手順で行う。
【０１５２】
そして、マイクロプロセッサ１１０Ａは、分割ホストデータＤ０の保証コード１６Ｄ０と読み込んだパリティデータＰ２の保証コード１６Ｐ２とが一致したと判断すると(ＳＰ１２８：ＹＥＳ)、パリティデータＰ２の読み込み完了を共有メモリ９に設定する（ＳＰ１２９）。
【０１５３】
マイクロプロセッサ１１０Ａは、コンペア結果により、先に読み込んだパリティデータＰ１が異常であると判断したので、パリティデータＰ１の異常処理を行うこととなる（ＳＰ１３０）。パリティデータＰ１の異常処理の説明については、図３３及び図３４に基づいて後述する。
【０１５４】
一方、マイクロプロセッサ１１０Ａは、分割ホストデータＤ０の保証コード１６Ｄ０と読み込んだパリティデータＰ２の保証コード１６Ｐ２とが一致しないと判断すると(ＳＰ１２８：ＮＧ)、パリティデータＰ１の保証コードは正常であると判断される。
【０１５５】
そうすると、次にマイクロプロセッサ１１０Ａは、冗長データ生成部１１３Ａに、パリティデータＰ１の保証コード１６Ｐ１と読み込んだパリティデータＰ２の保証コード１６Ｐ２とをコンペアするように指示をする（ＳＰ１３１）。
【０１５６】
その後、マイクロプロセッサ１１０Ａは、図３２に示すように、パリティデータＰ１の保証コード１６Ｐ１と読み込んだパリティデータＰ２の保証コード１６Ｐ２についてコンペアを行い、ステップＳＰ９１〜ステップＳＰ９５と同様の処理をステップＳＰ１３２〜ステップＳＰ１３６で行う。
【０１５７】
そして、マイクロプロセッサ１１０Ａは、パリティデータＰ１の保証コード１６Ｐ１と読み込んだパリティデータＰ２の保証コード１６Ｐ２とが一致したと判断すると(ＳＰ１３６：ＹＥＳ)、先に読み込んだ分割ホストデータＤ０が異常であると判断したので、分割ホストデータＤ０の異常処理を行うこととなる（ＳＰ１３７）。分割ホストデータＤ０の異常処理の説明については、図３７及び図３８に基づいて後述する。
【０１５８】
一方、マイクロプロセッサ１１０Ａは、パリティデータＰ１の保証コード１６Ｐ１と読み込んだパリティデータＰ２の保証コード１６Ｐ２とが一致しないと判断すると(ＳＰ１３６：ＮＯ)、分割ホストデータＤ０、Ｄ１及びパリティデータＰ１、Ｐ２の全ての保証コードが一致しないと判断する。
【０１５９】
したがって、マイクロプロセッサ１１０Ａは、当該レイドグループの使用不可の設定をし（ＳＰ１３８）、共有メモリ９にディスクアダプタの完了異常であることを設定すると（ＳＰ１３９）、この処理を終了する（ＳＰ１４０）。
【０１６０】
（１−２−２−２−４）パリティデータの異常処理
引き続き、ステップＳＰ１３０のパリティデータＰ１の異常処理について詳細に説明をする。このパリティデータの異常処理は、ディスクアダプタ１１のマイクロプロセッサ１１０がパリティデータ異常プログラム１１８に基づいて実行する。
【０１６１】
具体的には、図３３及び図３４に示すように、マイクロプロセッサ１１０Ａは、分割ホストデータＤ０の保証コード１６Ｄ０とパリティデータＰ２の保証コード１６Ｐ２とが一致したと判断すると(ＳＰ１２８：ＹＥＳ)、パリティデータＰ１の異常処理を開始する（ＳＰ１５０）。
【０１６２】
まず、マイクロプロセッサ１１０Ａは、共有メモリ９内の障害情報テーブル９２０の障害カウンタを加算する（ＳＰ１５１）。本実施の形態では、マイクロプロセッサ１１０Ａは、パリティデータＰ１を保存するハードディスクドライブ５０Ｃにおける「セクタ障害」フィールド９２０Ｂ内のカウンタ値を更新する。
【０１６３】
そしてマイクロプロセッサ１１０Ａは、更新したハードディスクドライブ５０Ｃに該当する「セクタ障害」フィールド９２０Ｂ内の障害カウンタ値が障害しきい値を超えているか否かを判断する（ＳＰ１５２）。
【０１６４】
マイクロプロセッサ１１０Ａは、更新したハードディスクドライブ５０Ｃにおける「セクタ障害」フィールド９２０Ｂ内の障害カウンタ値が障害しきい値を超えていると判断すると（ＳＰ１５２：ＹＥＳ）、ハードディスクドライブ５０Ｃはドライブ障害と判断する。そしてマイクロプロセッサ１１０Ａは、共有メモリ９のハードディスクドライブ情報テーブル９１２内の、ハードディスクドライブ５０Ｃに該当する「状態」フィールド９１２Ｂ内を「使用不可」に変更する（ＳＰ１５３）。
【０１６５】
次に、マイクロプロセッサ１１０Ａは、ドライブ障害と判断したハードディスクドライブ５０ＣのスペアハードディスクドライブＳがあるか否かを判断し（ＳＰ１５４）、スペアハードディスクドライブＳがないと判断した場合には（ＳＰ１５４：ＮＯ）、このパリティデータＰ１の異常処理を終了する（ＳＰ１６５）。
【０１６６】
一方、マイクロプロセッサ１１０Ａは、スペアディスクがあると判断した場合には（ＳＰ１５４：ＹＥＳ）、ハードディスクドライブの回復を行うためにデータ回復コピー処理を行うこととなる（ＳＰ１５５）。なお、データ回復コピー処理の説明については、図４１及び図４２に基づいて後述する。
【０１６７】
ステップＳＰ１５２において、マイクロプロセッサ１１０Ａは、更新したハードディスクドライブ５０Ｃにおける「セクタ障害」フィールド９２０Ｂ内の障害カウンタ値が障害しきい値を超えていないと判断すると（ＳＰ１５２：ＮＯ）、冗長データ生成部１１３Ａに、分割ホストデータＤ０及びパリティデータＰ２を読み込んで、パリティデータＰ１を作成するよう指示をし（ＳＰ１５６）、作成したパリティデータＰ１をキャッシュメモリ１０に書き込むように指示をする（ＳＰ１５７）。
【０１６８】
またマイクロプロセッサ１１０Ａは、共有メモリ９のレイドグループ情報テーブル９１０を参照して、「ハードディスクドライブ台数」フィールドを「４」に設定する（ＳＰ１５８）
【０１６９】
図３５に示すように、マイクロプロセッサ１１０Ａからの指示を受け取った冗長データ生成部１１３Ａは、分割ホストデータＤ０及びパリティデータＰ２を読み込んで、パリティデータＰ１を作成する（ＳＰ１５９）。そして、同時に、冗長データ生成部１１３Ａは、パリティデータＰ２の保証コード１６Ｐ２、１７Ｐ２をパリティデータＰ１にコピーをして、パリティデータＰ１の保証コード１６Ｐ１、１７Ｐ１を再作成する（ＳＰ１６０）。
【０１７０】
冗長データ生成部１１３Ａは、保証コード１６Ｐ１、１７Ｐ１を再作成したパリティデータＰ１をキャッシュメモリ１０に書き込む（ＳＰ１６１）。
【０１７１】
そうすると、マイクロプロセッサ１１０Ａは、他のマイクロプロセッサ１１０Ｃに対して、再作成したパリティデータＰ１をハードディスクドライブ５０Ｃに書き込むように、書き込み指示をする（ＳＰ１６２）。具体的には、マイクロプロセッサ１１０Ａは、共有メモリ９にハードディスク書き込み指示を設定する。
【０１７２】
その後、他のマイクロプロセッサ１１０Ａ及び他のマイクロプロセッサ１１０Ｃは、ステップＳＰ１６３において、再作成したパリティデータＰ１についてステップＳＰ４０〜ステップＳＰ４６と同様の処理を行う。
【０１７３】
マイクロプロセッサ１１０Ａは、他のマイクロプロセッサ１１０Ｃがハードディスクドライブ５０ＣにパリティデータＰ１を書き込みしたか否かを判断し（ＳＰ１６４）、書き込みが完了していない場合には（ＳＰ１６４：ＮＯ）、完了するまで待つ。
【０１７４】
一方、マイクロプロセッサ１１０Ａは、図３６に示すように、他のマイクロプロセッサ１１０Ｃがハードディスクドライブ５０ＣにパリティデータＰ１を書き込んだことで、書き込み完了の報告を他のマイクロプロセッサ１１０Ｃから受け取ると（ＳＰ１６４：ＹＥＳ）、パリティデータ異常処理を終了する（ＳＰ１６５）。
【０１７５】
（１−２−２−２−５）分割ホストデータの異常処理
引き続き、ステップＳＰ１３７の分割ホストデータＤ０の異常処理について詳細に説明をする。この分割ホストデータの異常処理は、ディスクアダプタ１１のマイクロプロセッサ１１０が分割ホストデータ異常プログラム１１９に基づいて実行する。
【０１７６】
具体的には、図３７及び図３８に示すように、マイクロプロセッサ１１０Ａは、パリティデータＰ１の保証コード１６Ｐ１と読み込んだパリティデータＰ２の保証コード１６Ｐ２とが一致したと判断したことで(ＳＰ１３６：ＹＥＳ)、分割ホストデータＤ０の異常処理を開始する（ＳＰ１７０）。
【０１７７】
次に、マイクロプロセッサ１１０Ａは、冗長データ生成部１１３Ａに、パリティデータＰ１及びパリティデータＰ２を読み込んで、分割ホストデータＤ０を作成するよう指示をし（ＳＰ１７１）、作成した分割ホストデータＤ０をキャッシュメモリ１０に書き込むように指示をする（ＳＰ１７２）。
【０１７８】
またマイクロプロセッサ１１０Ａは、共有メモリ９のレイドグループ情報テーブル９１０を参照して、「ハードディスクドライブ台数」フィールドを「４」に設定する（ＳＰ１７３）。
【０１７９】
図３９に示すように、マイクロプロセッサ１１０Ａからの指示を受け取った冗長データ生成部１１３Ａは、パリティデータＰ１及びパリティデータＰ２を読み込んで、分割ホストデータＤ０を作成する（ＳＰ１７４）。そして、同時に、冗長データ生成部１１３Ａは、パリティデータＰ１の保証コード１６Ｐ１、１７Ｐ１を分割ホストデータＤ０にコピーをして、分割ホストデータＤ０の保証コード１６Ｄ０を再作成する（ＳＰ１７５）。
【０１８０】
冗長データ生成部１１３Ａは、保証コード１６Ｄ０を再作成した分割ホストデータＤ０をキャッシュメモリ１０に書き込む（ＳＰ１７６）。
【０１８１】
そしてマイクロプロセッサ１１０Ａは、図４０に示すように、キャッシュメモリ１０に書き込まれた再作成後の分割ホストデータＤ０をハードディスクドライブ５０Ａに書き込む（ＳＰ１７７）。
【０１８２】
なお、再作成後の分割ホストデータＤ０をハードディスクドライブ５０Ａに書き込む処理は、ステップＳＰ４０〜ステップＳＰ４６までと同様の処理のため、説明を省略する。
【０１８３】
その後マイクロプロセッサ１１０Ａは、ステップＳＰ１７８〜ステップＳＰ１８２までの処理をステップＳＰ１５１〜ステップＳＰ１５５と同様の処理を行う。
【０１８４】
そうして、マイクロプロセッサ１１０Ａが、更新したハードディスクドライブ５０Ａにおける「セクタ障害」フィールド９２０Ｂ内の障害カウンタ値が障害しきい値を超えていないと判断した場合（ＳＰ１７９：ＮＯ）又は、ステップＳＰ１８１においてスペアのハードディスクドライブＳがないと判断した場合（ＳＰ１８１：ＮＯ）には、分割ホストデータＤ０の異常処理を終了する（ＳＰ１８３）。
【０１８５】
一方、マイクロプロセッサ１１０Ａは、スペアのハードディスクドライブがあると判断した場合には（ＳＰ１８１：ＹＥＳ）、ハードディスクドライブの回復を行うためにデータ回復コピー処理を行うこととなる（ＳＰ１８２）。なお、データ回復コピー処理の説明については、図４１及び図４２に基づいて後述する。
【０１８６】
（１−２−２−２−６）データ回復コピーの処理
引き続き、ステップＳＰ１８２の分割ホストデータＤ０のデータ回復コピー処理について詳細に説明をする。この分割ホストデータの異常処理は、ディスクアダプタ１１のマイクロプロセッサ１１０がデータ回復コピープログラム１２０に基づいて実行する。
【０１８７】
ここで、分割ホストデータＤ０のデータ回復コピー処理とは、障害ディスクであると判断されたハードディスクドライブ５０Ａに保存される分割ホストデータＤ０をスペアのハードディスクドライブＳにコピーすることで、当該分割ホストデータＤ０の回復を行う処理をいう。
【０１８８】
なお、ステップＳＰ１５５のパリティデータＰ１のデータ回復コピー処理については、ハードディスクドライブから読み出すデータが異なることを除いて、分割ホストデータＤ０のデータ回復コピー処理と同様の手順のため、説明を省略する。
【０１８９】
具体的には、図４１及び図４２に示すように、マイクロプロセッサ１１０Ａは、スペアのハードディスクドライブＳがあると判断した場合に（ＳＰ１８１：ＹＥＳ）、分割ホストデータＤ０のデータ回復コピー処理を開始する（ＳＰ１９０）。
【０１９０】
マイクロプロセッサ１１０Ａは、他のマイクロプロセッサ１１０Ｂ、１１０Ｃに、分割ホストデータＤ１又はパリティデータＰ１をそれぞれのハードディスクドライブ５０Ｂ、５０Ｃから読み出して、キャッシュメモリ１０に転送するよう指示をする（ＳＰ１９１）。
【０１９１】
他のマイクロプロセッサ１１０Ｂ、１１０Ｃは、分割ホストデータＤ１又はパリティデータＰ１をそれぞれのハードディスクドライブ５０Ｂ、５０Ｃから読み出して、キャッシュメモリ１０に転送する（ＳＰ１９２）。
【０１９２】
マイクロプロセッサ１１０Ａは、キャッシュメモリ１０への読み込みが完了したか否かを判断し（ＳＰ１９３）、読み込みが完了するまで待つ（ＳＰ１９３：ＮＯ）。
【０１９３】
マイクロプロセッサ１１０Ａは、キャッシュメモリ１０への読み込みが完了したと判断すると（ＳＰ１９３：ＹＥＳ）、その後はステップＳＰ１９４〜ステップＳＰ１９８までの処理手順をステップＳＰ９０〜ＳＰ９４と同様の処理手順で行う。
【０１９４】
そしてマイクロプロセッサ１１０Ａは、図４３に示すように、読み出した分割ホストデータＤ１の保証コード１６Ｄ１とパリティデータＰ１の保証コード１７Ｐ１とをコンペアして（ＳＰ１９９）、両者の保証コードが一致しないと判断した場合には（ＳＰ１９９：ＮＯ）、コンペア異常処理が行われる（ＳＰ２００）。
【０１９５】
一方、そしてマイクロプロセッサ１１０Ａは、両者の保証コードが一致すると判断した場合には（ＳＰ１９９：ＹＥＳ）、冗長データ生成部１１３Aに対して、分割ホストデータD０の再作成を指示する（ＳＰ２０１）。そしてマイクロプロセッサ１１０Ａは、冗長データ生成部１１３Ａに対して、パリティデータＰ１の保証コード１７Ｐ１を分割ホストデータＤ０にコピーするように指示をするとともに（ＳＰ２０２）、再作成した分割ホストデータＤ０をキャッシュメモリ１０に書き込むように指示をする（ＳＰ２０３）。
【０１９６】
この指示を受けた冗長データ生成部１１３Ａは、分割ホストデータを再作成し（ＳＰ２０３）、パリティデータＰ１の保証コード１７Ｐ１を分割ホストデータＤ０にコピーして、保証コードを再設定した後（ＳＰ２０４）、図４４に示すように、再作成した分割ホストデータをキャッシュメモリに書き込む（ＳＰ２０５）。
【０１９７】
すると、図４５に示すように、マイクロプロセッサ１１０Ａは、キャッシュメモリ１０上にある再作成後の分割ホストデータＤ０をスペアのハードディスクドライブＳに書き込む（ＳＰ２０６）。
【０１９８】
マイクロプロセッサ１１０Ａは、分割ホストデータD０の全てのブロックにおけるコピーが完了したか否かを判断し（ＳＰ２０７）、完了していなければ（ＳＰ２０７：ＮＯ）、ステップＳＰ１９１に再び戻る。
【０１９９】
マイクロプロセッサ１１０Ａは、分割ホストデータD０の全てのブロックにおけるコピーが完了すると（ＳＰ２０７：ＹＥＳ）、データ回復コピー処理を終了する（ＳＰ２０８）。
【０２００】
次に、ステップＳＰ２００におけるコンペア異常処理について説明する。この処理は、マイクロプロセッサ１１０Ａがコンペア異常プログラムに基づいて実行する。
【０２０１】
具体的には、図４６及び図４７に示すように、ステップＳＰ１９９でマイクロプロセッサ１１０Ａは、読み出した分割ホストデータＤ１の保証コード１６Ｄ１とパリティデータＰ１の保証コード１７Ｐ１とが一致しないと判断した場合に（ＳＰ１９９：ＮＯ）、コンペア異常処理を開始する（ＳＰ２１０）。
【０２０２】
そしてマイクロプロセッサ１１０Ａは、ステップＳＰ２１１〜ステップＳＰ２１８までの処理手順を、ステップＳＰ１２１〜ステップＳＰ１２８と同様の処理手順で行うこととなる。
【０２０３】
マイクロプロセッサ１１０Ａは、図４８に示すように、分割ホストデータＤ１の保証コード１６Ｄ１と読み込んだパリティデータＰ２の保証コード１６Ｐ２とが一致したと判断すると（ＳＰ２１８：ＹＥＳ）、先に読み込んだパリティデータＰ１が異常であると判断したので、パリティデータＰ１の異常処理を行うこととなる（ＳＰ２１９）。
【０２０４】
そして、この処理は、マイクロプロセッサ１１０Ａが、図４９に示すように、パリティデータＰ１についてのステップＳＰ２３０〜ステップＳＰ２４０までの処理手順を、ステップＳＰ１７０〜ステップＳＰ１８０と同様の処理手順で行うこととなる。そうして、マイクロプロセッサ１１０Ａは、パリティデータＰ１の異常処理を実行した結果後、ステップＳＰ２０１の手順に進むことになる。
【０２０５】
一方、マイクロプロセッサ１１０Ａは、ステップＳＰ２１８において、分割ホストデータＤ１の保証コード１６Ｄ１と読み込んだパリティデータＰ２の保証コード１６Ｐ２とが一致しないと判断すると（ＳＰ２１８：ＮＯ）、ステップＳＰ２２０〜ステップＳＰ２２５までの処理手順を、ステップＳＰ１３１〜ステップＳＰ１３６と同様の処理手順で行うこととなる。
【０２０６】
そして、マイクロプロセッサ１１０Ａは、パリティデータＰ１の保証コード１６Ｐ１と読み込んだパリティデータＰ２の保証コード１６Ｐ２とが一致したと判断すると(ＳＰ２２５：ＹＥＳ)、先に読み込んだ分割ホストデータＤ１が異常であると判断したので、分割ホストデータＤ１の異常処理を行うこととなる（ＳＰ２２６）。
【０２０７】
そして、この分割ホストデータＤ１の異常処理については、図５０に示すように、マイクロプロセッサ１１０Ａが、分割ホストデータＤ１についてのステップＳＰ２５０〜ステップＳＰ２６０までの処理手順を、ステップＳＰ１７０〜ステップＳＰ１８０と同様の処理手順で行うこととなる。そうして、マイクロプロセッサ１１０Ａは、分割ホストデータＤ１の異常処理を実行した結果後、ステップＳＰ２０１の手順に進むことになる。
【０２０８】
一方、マイクロプロセッサ１１０Ａは、パリティデータＰ１の保証コード１６Ｐ１と読み込んだパリティデータＰ２の保証コード１６Ｐ２とが一致しないと判断すると(ＳＰ２２５：ＮＧ)、分割ホストデータＤ０、Ｄ１及びパリティデータＰ１、Ｐ２の全ての保証コードが一致しないと判断する。
【０２０９】
したがって、マイクロプロセッサ１１０Ａは、当該レイドグループの使用不可の設定をし（ＳＰ２２７）、データ回復コピーの失敗を設定すると（ＳＰ２２８）、この処理を終了する（ＳＰ２２９）。
【０２１０】
（１−２−２−２−７）保証コードの回復処理内容
次に、ホスト装置からのデータの読み出し要求に基づいて、ストレージ装置４が分割ホストデータの保証コード及びパリティデータの保証コードを比較して、保証コードが一致しなかった場合の保証コードを回復する処理の内容について説明する。
【０２１１】
具体的には、図５１に示すように、ディスクアダプタ１１は、データ回復コピープログラムに基づいてデータ回復コピー処理を開始すると、保証コードの回復処理を開始する（ＳＰ２７０）。
【０２１２】
ディスクアダプタ１１の冗長データ生成部１１３は、リードデータである分割ホストデータの保証コードと、当該分割ホストデータに対応するパリティデータの保証コードとを比較する（ＳＰ２７１）。
【０２１３】
次に、ディスクアダプタ１１の冗長データ生成部１１３は、リードデータである分割ホストデータに対応するパリティデータの保証コード同士を比較する（ＳＰ２７２）。
【０２１４】
ディスクアダプタ１１の冗長データ生成部１１３は、再作成したパリティデータの保証コードをキャッシュメモリ上に作成する（ＳＰ２７３）。
【０２１５】
ディスクアダプタ１１のデータ転送部１１２は、保証コードを付与した再作成後のパリティデータをハードディスクドライブに書き込む（ＳＰ２７４）。
【０２１６】
ディスクアダプタ１１の冗長データ生成部１１３は、再作成した分割ホストデータの保証コードをキャッシュメモリ上に作成する（ＳＰ２７５）。
【０２１７】
ディスクアダプタ１１のデータ転送部１１２は、保証コードを付与した再作成後の分割ホストデータをハードディスクドライブに書き込と（ＳＰ２７６）、保証コードの回復処理を終了する（ＳＰ２７７）。
【０２１８】
（１−３）第１の実施の形態の効果
本発明によれば、安価なハードディスクドライブを多用しても、保証コードを比較することで、データの信頼性を保証することができる。
【０２１９】
また、記憶システム内において、チャネルアダプタ及びディスクアダプタが保証コードに関する検証を行うため、ハードディスクドライブ内に保存されるデータの信頼性に関する検証を短時間で行うことができる。
【０２２０】
（２）第２の実施の形態
本形態による記憶システム１は、第１の実施の形態による記憶システム１の構成と同様なので、説明を省略する。また、第１の実施の形態と同様の構成には、同じ符号を付す。
【０２２１】
第２の実施の形態では、ホスト装置の書き込み要求に基づいて、ハードディスクドライブ５０内に予め保存される分割ホストデータやパリティデータを用いて、分割ホストデータの保証コードを設定し、当該データの保証コードをパリティデータにコピーする処理内容について説明する。
【０２２２】
（２−１）チャネルアダプタの処理内容
まず、チャネルアダプタ７のマイクロプロセッサ７０が、ホスト装置の書き込み要求に基づいて新たな分割ホストデータＮＤ０の保証コード１６ＮＤ０を設定する処理内容を説明する。マイクロプロセッサ７０は、図５２に示すように、新たな分割ホストデータＮＤ０がキャッシュメモリ上に書き込まれ、その後、ハードディスクドライブ５０Ａに書き込まれるために、新たな分割ホストデータＮＤ０について、ステップＳＰ０〜ＳＰ１２の処理手順と同様の手順を、チャネルアダプタ用ライトプログラム７３０に基づいて行う。
【０２２３】
（２−２）ディスクアダプタの処理内容
まず、ディスクアダプタ１１がホスト装置２からの書き込み要求に基づいて、パリティデータＰ１、Ｐ２に新たな分割ホストデータＮＤ０の保証コード１６ＮＤ０をコピーする処理内容を説明する。ディスクアダプタ１１側の書き込み処理は、マイクロプロセッサ１１０がディスクアダプタ用ライトプログラム１１５に基づいて当該処理を実行する。
【０２２４】
具体的には、図５３及び図５４に示すように、マイクロプロセッサ１１０Ａは、共有メモリ９のメッセージエリア９０にハードディスクドライブ５０に対する読み出し指示が書き込まれると、この処理を開始する（ＳＰ２８０）。
【０２２５】
マイクロプロセッサ１１０Ａは、他のマイクロプロセッサ１１０Ｃ、１１０Ｄに古いパリティデータＰ１、Ｐ２をハードディスクドライブ５０Ｃ、５０Ｄから読み出すよう指示をするとともに、ハードディスクドライブ５０Ａから古い分割ホストデータＤ０を読み出す（ＳＰ２８１）。
【０２２６】
マイクロプロセッサ１１０Ａは、キャッシュメモリ１０上に古いパリティデータＰ１、Ｐ２及び古い分割ホストデータＤ０が読み込みこまれたか否かを判断し（ＳＰ２８２）、読み込まれるまで待つ（ＳＰ２８２：ＮＯ）。
【０２２７】
一方、マイクロプロセッサ１１０Ａは、図５５に示すように、キャッシュメモリ１０上にある新たな分割ホストデータＮＤ０、古い分割ホストデータＤ０及び古いパリティデータＰ１、Ｐ２をディスクアダプタ１１Ａに読み込むと、古い分割ホストデータＤ０及び古いパリティデータＰ１との保証コード１６Ｄ０、１６Ｐ１をコンペアするように指示をする（ＳＰ２８３）。
【０２２８】
マイクロプロセッサ１１０Ａは、冗長データ生成部１１３Ａに共有メモリ９の構成情報エリア９１内のレイドグループ情報テーブル９１０を参照し、レイドグループを構成するハードディスクドライブの台数を設定する（ＳＰ２８４）。本実施の形態においてマイクロプロセッサ１１０Ａは、ハードディスクドライブの台数を４と設定する。
【０２２９】
上記指示を受けた冗長データ生成部１１３Ａは、図５６に示すように、古い分割ホストデータＤ０及び古いパリティデータＰ１との保証コード１６Ｄ０、１６Ｐ１をコンペアし（ＳＰ２８５）、コンペア結果をマイクロプロセッサ１１０Ａに報告する（ＳＰ２８６）。
【０２３０】
この報告をマイクロプロセッサ１１０Ａが受領すると（ＳＰ２８７）、コンペアが一致したか否かを判断し（ＳＰ２８８）、保証コードが一致しないと判断すると（ＳＰ２８８：ＮＯ）、古いパリティデータＰ１又は古い分割ホストデータＤ０の異常処理をステップＳＰ１５０〜ステップＳＰ１６５又はステップＳＰ１７０〜ステップＳＰ１８３と同様の手順で開始されることとなる。
【０２３１】
一方、マイクロプロセッサ１１０Ａは、保証コードが一致すると判断すると（ＳＰ２８８：ＹＥＳ）、図５７に示すように、冗長データ生成部１１３Ａは新たな分割ホストデータＮＤＯの保証コードをコピーして、新たなパリティデータＮＰ１、ＮＰ２を作成し、キャッシュメモリ１０に新たなパリティデータＮＰ１、ＮＰ２を書き込む（ＳＰ２９０）。
【０２３２】
そして、マイクロプロセッサ１１０Ａの指示に基づいて、他のマイクロプロセッサ１１０Ｂ、１１０Ｃは、新たなパリティデータＮＰ１、ＮＰ２をそれぞれのハードディスクドライブ５０Ｂ、５０Ｃに書き込むと（ＳＰ２９１）、この処理を終了する（ＳＰ２９２）。
【０２３３】
なお、他のマイクロプロセッサ１１０Ｂ、１１０Ｃの書き込み処理は、新たなパリティデータＮＰ１、ＮＰ２についてステップＳＰ４０〜ステップＳＰ４６と同様の手順で行われる。
【０２３４】
また、第２の実施の形態において、データを読み出す際には、第１の実施の形態と同様の処理手順で行うため説明を省略する。
【０２３５】
（２−３）第２の実施の形態の効果
本発明によれば、安価なハードディスクドライブを多用しても、先に保存される保証コードを比較することで、新たなデータを書き込む際にも新たなデータの信頼性を保証することができる。
【０２３６】
また、記憶システム内において、チャネルアダプタ及びディスクアダプタが保証コードに関する検証を行うため、ハードディスクドライブ内に保存されるデータの信頼性に関する検証を短時間で行うことができる。
【０２３７】
（３）他の実施の形態
保証コードのコンペア（照合）は、分割ホストデータ又はパリティデータをハードディスクに書き込んだ後に、分割ホストデータ又はパリティデータをハードディスクドライブから読み出してコンペアしてもよい。また、保証コードのコンペア（照合）は、周期的又は読み出し時にコンペアしてもよい。
【０２３８】
第１及び第２の実施の形態として、ハードディスクドライブは４台としたが、この台数に限らない。例えば、ハードディスク部は、ハードディスクドライブを８台に設定にし、分割ホストデータＤ０〜Ｄ５及びパリティデータＰ１、Ｐ２を各ハードディスクドライブに保存するようにしてもよい。
【０２３９】
ハードディスクドライブに保存するホスト装置からのデータに、当該データの保証を示す保証番号（保証コード）を生成する第１の生成部として記憶制御装置（ストレージ装置）内のチャネルアダプタ７が有し、ホスト装置からのデータに対応するパリティデータの保証を示す保証番号を生成する第２の生成部及びホスト装置からのデータの保証を示す保証番号と、パリティデータの保証を示す保証番号とを照合する照合部としてディスクアダプタ１１が有したが、第１の生成部、第２の生成部及び照合部を個別のハードウェアとしてもよい。
【０２４０】
第１の生成部に基づいて生成された前記ホスト装置からのデータの保証を示す保証番号を当該データに付与する第１の付与部としてチャネルアダプタ７が有し、第２の生成部に基づいて生成された前記パリティデータの保証を示す保証番号を当該パリティデータに付与する第２の付与部としてディスクアダプタ１１が有したが、第１の付与部及び第２の付与部を個別のハードウェアとしてもよい。
【産業上の利用可能性】
【０２４１】
本発明は、１又は複数のストレージ装置を有する記憶システムや、その他の形態の記憶システムに広く適用することができる。
【図面の簡単な説明】
【０２４２】
【図１】第１の実施の形態における記憶システムの全体構成を示すブロック図である。
【図２】第１の実施の形態におけるチャネルアダプタのメモリ内を示すブロック図である。
【図３】第１の実施の形態における共有メモリ内を示すブロック図である。
【図４】第１の実施の形態におけるメッセージ情報テーブルを示す概念図である。
【図５】第１の実施の形態におけるレイドグループ情報テーブルを示す概念図である。
【図６】第１の実施の形態におけるハードディスクドライブ情報テーブルを示す概念図である。
【図７】第１の実施の形態における障害情報テーブルを示す概念図である。
【図８】第１の実施の形態におけるディスクアダプタのメモリ内を示すブロック図である。
【図９】第１の実施の形態におけるストレージ装置内の全体構成を示すブロック図である。
【図１０】第１の実施の形態におけるキャッシュメモリ上でのデータブロック図である。
【図１１】第１の実施の形態における分割ホストデータのデータブロック図である。
【図１２】第１の実施の形態におけるパリティデータのデータブロック図である。
【図１３】第１の実施の形態におけるチャネルアダプタ内でのホストデータ書き込み時のフローチャートである。
【図１４】第１の実施の形態におけるチャネルアダプタ内でのホストデータ書き込み時の概念図である。
【図１５】第１の実施の形態におけるディスクアダプタ内でのホストデータ書き込み時のフローチャートである。
【図１６】第１の実施の形態におけるディスクアダプタ内でのホストデータ書き込み時の概念図である。
【図１７】第１の実施の形態におけるディスクアダプタ内でのホストデータ書き込み時の概念図である。
【図１８】第１の実施の形態におけるディスクアダプタ内でのホストデータ書き込み時のフローチャートである。
【図１９】第１の実施の形態における保証コード付与時のフローチャートである。
【図２０】第１の実施の形態におけるチャネルアダプタ内でのリードデータ読み出し時のフローチャートである。
【図２１】第１の実施の形態におけるチャネルアダプタ内でのリードデータ読み出し時のフローチャートである。
【図２２】第１の実施の形態におけるディスクアダプタ内でのリードデータ読み出し時のフローチャートである。
【図２３】第１の実施の形態におけるディスクアダプタ内でのリードデータ読み出し時のフローチャートである。
【図２４】第１の実施の形態におけるディスクアダプタ内でのリードデータ読み出し時の概念図である。
【図２５】第１の実施の形態におけるディスクアダプタ内でのリードデータ読み出し時の概念図である。
【図２６】第１の実施の形態におけるハードディスクドライブへのデータ書き込み時のフローチャートである。
【図２７】第１の実施の形態における保証コード照合時のフローチャートである。
【図２８】第１の実施の形態におけるコンペア異常処理のフローチャートである。
【図２９】第１の実施の形態におけるコンペア異常処理のフローチャートである。
【図３０】第１の実施の形態におけるコンペア異常処理の概念図である。
【図３１】第１の実施の形態におけるコンペア異常処理の概念図である。
【図３２】第１の実施の形態におけるコンペア異常処理の概念図である。
【図３３】第１の実施の形態におけるパリティデータ異常処理のフローチャートである。
【図３４】第１の実施の形態におけるパリティデータ異常処理のフローチャートである。
【図３５】第１の実施の形態におけるパリティデータ異常処理の概念図である。
【図３６】第１の実施の形態におけるパリティデータ異常処理の概念図である。
【図３７】第１の実施の形態における分割ホストデータ異常処理のフローチャートである。
【図３８】第１の実施の形態における分割ホストデータ異常処理のフローチャートである。
【図３９】第１の実施の形態における分割ホストデータ異常処理の概念図である。
【図４０】第１の実施の形態における分割ホストデータ異常処理の概念図である。
【図４１】第１の実施の形態におけるデータ回復コピー処理のフローチャートである。
【図４２】第１の実施の形態におけるデータ回復コピー処理のフローチャートである。
【図４３】第１の実施の形態におけるデータ回復コピー処理の概念図である。
【図４４】第１の実施の形態におけるデータ回復コピー処理の概念図である。
【図４５】第１の実施の形態におけるデータ回復コピー処理の概念図である。
【図４６】第１の実施の形態におけるデータ回復コピー処理時のコンペア異常処理のフローチャートである。
【図４７】第１の実施の形態におけるデータ回復コピー処理時のコンペア異常処理のフローチャートである。
【図４８】第１の実施の形態におけるデータ回復コピー処理時のコンペア異常処理の概念図である。
【図４９】第１の実施の形態におけるデータ回復コピー処理時のパリティデータ異常処理のフローチャートである。
【図５０】第１の実施の形態におけるデータ回復コピー処理時の分割ホストデータ異常処理のフローチャートである。
【図５１】第１の実施の形態におけるデータ回復コピー時の保証コード照合のフローチャートである。
【図５２】第２の実施の形態におけるチャネルアダプタ内での分割ホストデータ書き込み時の概念図である。
【図５３】第２の実施の形態におけるディスクアダプタ内での分割ホストデータ書き込み時のフローチャートである。
【図５４】第２の実施の形態におけるディスクアダプタ内での分割ホストデータ書き込み時のフローチャートである。
【図５５】第２の実施の形態におけるディスクアダプタ内での分割ホストデータ書き込み時の概念図である。
【図５６】第２の実施の形態におけるディスクアダプタ内での分割ホストデータ書き込み時の概念図である。
【図５７】第２の実施の形態におけるディスクアダプタ内での分割ホストデータ書き込み時の概念図である。
【符号の説明】
【０２４３】
１……記憶システム、２……ホスト装置、４……ストレージ装置、５……ディスクドライブ部、７……チャネルアダプタ、１１……ディスクアダプタ。
【図１】
2008165582.tif 000003
【図２】
2008165582.tif 000004
【図３】
2008165582.tif 000005
【図４】
2008165582.tif 000006
【図５】
2008165582.tif 000007
【図６】
2008165582.tif 000008
【図７】
2008165582.tif 000009
【図８】
2008165582.tif 000010
【図９】
2008165582.tif 000011
【図１０】
2008165582.tif 000012
【図１１】
2008165582.tif 000013
【図１２】
2008165582.tif 000014
【図１３】
2008165582.tif 000015
【図１４】
2008165582.tif 000016
【図１５】
2008165582.tif 000017
【図１６】
2008165582.tif 000018
【図１７】
2008165582.tif 000019
【図１８】
2008165582.tif 000020
【図１９】
2008165582.tif 000021
【図２０】
2008165582.tif 000022
【図２１】
2008165582.tif 000023
【図２２】
2008165582.tif 000024
【図２３】
2008165582.tif 000025
【図２４】
2008165582.tif 000026
【図２５】
2008165582.tif 000027
【図２６】
2008165582.tif 000028
【図２７】
2008165582.tif 000029
【図２８】
2008165582.tif 000030
【図２９】
2008165582.tif 000031
【図３０】
2008165582.tif 000032
【図３１】
2008165582.tif 000033
【図３２】
2008165582.tif 000034
【図３３】
2008165582.tif 000035
【図３４】
2008165582.tif 000036
【図３５】
2008165582.tif 000037
【図３６】
2008165582.tif 000038
【図３７】
2008165582.tif 000039
【図３８】
2008165582.tif 000040
【図３９】
2008165582.tif 000041
【図４０】
2008165582.tif 000042
【図４１】
2008165582.tif 000043
【図４２】
2008165582.tif 000044
【図４３】
2008165582.tif 000045
【図４４】
2008165582.tif 000046
【図４５】
2008165582.tif 000047
【図４６】
2008165582.tif 000048
【図４７】
2008165582.tif 000049
【図４８】
2008165582.tif 000050
【図４９】
2008165582.tif 000051
【図５０】
2008165582.tif 000052
【図５１】
2008165582.tif 000053
【図５２】
2008165582.tif 000054
【図５３】
2008165582.tif 000055
【図５４】
2008165582.tif 000056
【図５５】
2008165582.tif 000057
【図５６】
2008165582.tif 000058
【図５７】
2008165582.tif 000059