(57)【要約】【課題】  障害発生が予測されるディスクから予備ディスクへのデータ移行中に、ディスクアクセスを極力低減し、二重障害が引き起こされるのを未然に防止する。【解決手段】  ＲＡＩＤグループ17(P)を構成するディスク16(#4)に障害の発生が予測されると、ディスク16(#4)の記憶内容は予備ディスク16(SP)にコピーされる（Ｓ１）。コピーと同時にＲＡＩＤグループ17(P)とペアとなるＲＡＩＤグループ17(S)が設定され、副ボリューム18(S)が用意される(S2,S3)。書込み要求は副ボリューム18(S)に対して行われる（Ｓ４）。差分ビットマップ２０は、更新データを管理する（Ｓ５）。未更新データの読出しは、正ボリュームから行われ（Ｓ６）、更新済データの読出しは副ボリュームから行われる（Ｓ７）。データ移行が完了すると、副ボリュームの記憶内容が正ボリュームに反映される（Ｓ８）。【選択図】        図５
2005157739.tif 000002
【特許請求の範囲】
【請求項１】
上位装置とのデータ授受を制御するチャネルアダプタと、
ＲＡＩＤグループを構成する複数のデータディスクドライブと、
前記各データディスクドライブの予備として少なくとも１つ設けられる予備ディスクドライブと、
前記各データディスクドライブ及び前記予備ディスクドライブとのデータ授受を制御するディスクアダプタと、
前記チャネルアダプタ及び前記ディスクアダプタにより使用され、データを記憶するキャッシュメモリと、
前記チャネルアダプタ及び前記ディスクアダプタにより使用され、制御情報を記憶する制御メモリと、
前記各データディスクドライブ及び前記予備ディスクドライブとは別に設けられる退避用記憶部と、
前記ディスクアダプタに設けられ、前記各データディスクドライブに対するアクセスエラーの発生を監視して前記アクセスエラーの発生頻度が予め設定された所定の閾値以上になった場合には、前記閾値以上のデータディスクドライブに記憶されたデータを前記キャッシュメモリを介して前記予備ディスクドライブにコピーさせる第１制御部と、
前記ディスクアダプタに設けられ、前記第１制御部による前記コピー中に前記ＲＡＩＤグループを対象とするアクセス要求を処理し、前記ＲＡＩＤグループを対象とする書込み要求を前記退避用記憶部に対して実行させる第２制御部と、
前記ディスクアダプタに設けられ、前記第１制御部による前記コピーが終了した場合に前記第２制御部により前記退避用記憶部に書き込まれたデータを、前記閾値以上のデータディスクドライブ以外の前記各データディスクドライブ及び前記予備ディスクドライブに反映させる第３制御部と、を含んで構成されるディスクアレイ装置。
【請求項２】
前記第２制御部は、前記閾値以上のデータディスクドライブを対象とする読出し要求を、前記閾値以上のデータディスクドライブ以外の前記各データディスクドライブ内に記憶されたデータに基づいて処理する請求項１に記載のディスクアレイ装置。
【請求項３】
前記第２制御部は、前記閾値以上のデータディスクドライブ以外の前記各データディスクドライブを対象とする読出し要求を、前記退避用記憶部にコピーされたデータに基づいて処理する請求項１に記載のディスクアレイ装置。
【請求項４】
前記第２制御部は、前記退避用記憶部に書き込まれたデータを管理する差分管理情報に関連付けられており、この差分管理情報に基づいて、前記ＲＡＩＤグループを対象とする読出し要求を、前記閾値以上のデータディスクドライブ以外の前記各データディスクドライブ内に記憶されたデータに基づいて処理するか、あるいは前記退避用記憶部に記憶されたデータに基づいて処理するかを決定する請求項１に記載のディスクアレイ装置。
【請求項５】
前記第２制御部は、前記ＲＡＩＤグループを対象とする書込み要求のうち前記閾値以上のデータディスクドライブへの書込み要求のみを前記退避用記憶部に対して実行させ、前記閾値以上のデータディスクドライブ以外の前記各データディスクドライブへの書込み要求は、当該各データディスクドライブに対して実行させる請求項１に記載のディスクアレイ装置。
【請求項６】
前記第２制御部は、前記退避用記憶部に所定値以上の空き容量がある場合に、前記ＲＡＩＤグループを対象とする書込み要求を前記退避用記憶部に対して実行させ、前記退避用記憶部に前記所定値以上の空き容量が無い場合に、前記ＲＡＩＤグループを対象とする書込み要求を前記ＲＡＩＤグループに対して実行させる請求項１に記載のディスクアレイ装置。
【請求項７】
前記第１制御部は、前記閾値以上のデータディスクドライブ以外の前記各データディスクドライブ内に記憶されたデータに基づいて、前記閾値以上のデータディスクドライブ内のデータを復元し、この復元されたデータを前記予備ディスクドライブにコピーさせるものである請求項１に記載のディスクアレイ装置。
【請求項８】
前記第１制御部によるコピー処理実行させる手動指示部を設けた請求項１に記載のディスクアレイ装置。
【請求項９】
前記第１制御部及び前記第２制御部は多重動作可能であり、前記退避用記憶部は、複数のＲＡＩＤグループのそれぞれを対象とする書込み要求を受け入れるようになっている請求項１に記載のディスクアレイ装置。
【請求項１０】
前記退避用記憶部は、少なくとも、前記ＲＡＩＤグループと同一構成を有する別のＲＡＩＤグループ、論理ボリューム、ディスクドライブのいずれか１つとして実現される請求項１に記載のディスクアレイ装置。
【請求項１１】
上位装置とのデータ授受を制御するチャネルアダプタと、ＲＡＩＤグループを構成する複数のデータディスクドライブと、前記各データディスクドライブの予備として少なくとも１つ設けられる予備ディスクドライブと、前記各データディスクドライブ及び前記予備ディスクドライブとのデータ授受を制御するディスクアダプタと、前記チャネルアダプタ及び前記ディスクアダプタにより使用され、データを記憶するキャッシュメモリと、前記チャネルアダプタ及び前記ディスクアダプタにより使用され、制御情報を記憶する制御メモリと、前記各データディスクドライブ及び前記予備ディスクドライブとは別に設けられる退避用記憶部と、を含んだディスクアレイ装置の障害回避方法であって、
前記各データディスクドライブに対するアクセスエラーの発生を監視し、前記アクセスエラーの発生頻度が予め設定された所定の閾値以上になったか否かを判定する第１ステップと、
前記第１ステップにより前記閾値以上のデータディスクドライブが検出された場合は、この閾値以上のデータディスクドライブに記憶されたデータを前記予備ディスクドライブにコピーさせる第２ステップと、
前記第１ステップによる前記コピーの開始によって、前記ＲＡＩＤグループと前記退避用記憶部とを関連付ける第３ステップと、
前記第１ステップによる前記コピー中に、前記ＲＡＩＤグループを対象とするアクセス要求が発生したか否かを判定する第４ステップと、
前記第４ステップにより前記アクセス要求の発生が検出された場合、前記アクセス要求が書込み要求であるならば、前記第３ステップにより関連付けられた前記退避用記憶部に対してデータを書き込む第５ステップと、
を含むディスクアレイ装置の障害回避方法。
【請求項１２】
前記第２ステップによる前記コピーが終了した場合に、前記５ステップにより前記退避用記憶部に書き込まれたデータを、前記閾値以上のデータディスクドライブ以外の前記各ディスクドライブ及び前記予備ディスクドライブに反映させる第６ステップをさらに含んだ請求項１１に記載のディスクアレイ装置の障害回避方法。
【請求項１３】
前記第５ステップは、前記第４ステップにより検出された前記アクセス要求が前記閾値以上のデータディスクドライブを対象とする読出し要求であるならば、この読出し要求を、前記閾値以上のデータディスクドライブ以外の前記各データディスクドライブ内に記憶されたデータに基づいて処理するようになっている請求項１１に記載のディスクアレイ装置の障害回避方法。
【請求項１４】
前記第５ステップは、前記退避用記憶部に書き込まれたデータを管理する差分管理情報を利用することにより、前記第４ステップにより検出された前記ＲＡＩＤグループを対象とする読出し要求を、前記閾値以上のデータディスクドライブ以外の前記各データディスクドライブ内に記憶されたデータに基づいて処理するか、あるいは前記退避用記憶部に記憶されたデータに基づいて処理するかを決定する請求項１１に記載のディスクアレイ装置の障害回避方法。
【請求項１５】
前記第５ステップは、前記第４ステップにより検出された前記ＲＡＩＤグループを対象とする書込み要求のうち、前記閾値以上のデータディスクドライブへの書込み要求のみを前記退避用記憶部に対して実行させ、前記閾値以上のデータディスクドライブ以外の前記各データディスクドライブへの書込み要求は当該各データディスクドライブに対して実行させる請求項１１に記載のディスクアレイ装置の障害回避方法。
【請求項１６】
前記第２ステップは、前記閾値以上のデータディスクドライブ以外の前記各データディスクドライブ内に記憶されたデータに基づいて、前記閾値以上のデータディスクドライブに記憶されているデータを復元し、この復元されたデータを前記予備ディスクドライブにコピーさせるものである請求項１１に記載のディスクアレイ装置の障害回避方法。
【請求項１７】
ＲＡＩＤグループを構成する複数のディスクドライブを含んだディスクアレイ装置のディスクドライブ使用方法であって、
前記ＲＡＩＤグループを構成する前記各ディスクドライブに対するアクセスエラーの発生を監視し、前記アクセスエラーの発生頻度が予め設定された所定の閾値以上になった場合に障害ディスクドライブであると判定する障害ドライブ検出ステップと、
前記障害ドライブ検出ステップによって前記障害ディスクドライブが検出された場合は、この障害ディスクドライブに記憶されたデータを、前記ＲＡＩＤグループを構成する前記各ディスクドライブ以外の正常ディスクドライブにコピーさせるデータコピーステップと、
前記データコピーステップによる前記コピー中に、前記ＲＡＩＤグループを対象とするアクセス要求が発生したか否かを検出するアクセス要求検出ステップと、
前記アクセス要求検出ステップにより書込み要求が検出された場合は、前記データコピーがされている正常ディスクドライブとは別の正常ディスクドライブに対して、前記書込み要求に係わるデータを書き込むアクセス処理ステップと、
を含むディスクアレイ装置のディスクドライブ使用方法。
【請求項１８】
前記データコピーステップによる前記データコピーが終了した場合に、前記アクセス処理ステップにより前記正常ディスクドライブに書き込まれたデータを、前記障害ディスクドライブ以外の前記ＲＡＩＤグループを構成する前記各ディスクドライブ及び前記データコピーされた正常ディスクドライブに反映させるデータ更新ステップをさらに含んだ請求項１７に記載のディスクアレイ装置のディスクドライブ使用方法。
【請求項１９】
前記アクセス処理ステップは、前記アクセス要求検出ステップによって前記障害ディスクドライブを対象とする読出し要求が検出された場合、前記ＲＡＩＤグループを構成する前記障害ディスクドライブ以外の前記各ディスクドライブ内に記憶されたデータに基づいて、要求されたデータを復元する請求項１７に記載のディスクアレイ装置のディスクドライブ使用方法。
【請求項２０】
前記データコピーステップは、前記ＲＡＩＤグループを構成する前記障害ディスクドライブ以外の前記各ディスクドライブに記憶されたデータに基づいて、前記障害ディスクドライブに記憶されているデータを復元し、この復元されたデータを前記正常ディスクドライブにデータコピーさせる請求項１７に記載のディスクアレイ装置のディスクドライブ使用方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のディスクドライブを有するディスクアレイ装置及びディスクアレイ装置の障害回避方法に関する。
【背景技術】
【０００２】
ディスクアレイ装置は、例えば、多数のディスクドライブをアレイ状に配設し、RAID（Redundant
Array of Independent Inexpensive Disks）に基づいて構築されている。各ディスク装置が有する物理的な記憶領域上には、論理的な記憶領域である論理ボリュームが形成されている。ホストコンピュータは、ディスクアレイ装置に対して所定形式の書込みコマンド又は読出しコマンドを発行することにより、所望のデータの読み書きを行うことができる。
【０００３】
ディスクアレイ装置には、ディスクドライブに記憶したデータの消失等を防止するために、種々の防御策が施されている。１つは、RAID構成の採用である。例えば、RAID１〜６等として知られている冗長記憶構造をディスクアレイ装置が採用することにより、データ消失の可能性が低減される。これに加えて、ディスクアレイ装置では、例えば、RAID構造の論理ボリュームを二重化し、正ボリュームと副ボリュームの一対の論理ボリュームにそれぞれ同一のデータを記憶させることもできる。また、いわゆるディザスタリカバリとして知られているように、自然災害等の不測の事態に備えて、ローカルサイトから遠く離れたリモートサイトに、データのコピーを保存する場合もある。また、ディスクアレイ装置に記憶されているデータは、定期的に、テープドライブ等のバックアップ装置に記憶される。
【０００４】
さらに、ディスクアレイ装置では、物理的構成の二重化も行われている。例えば、ディスクアレイ装置では、ホストコンピュータとの間のデータ通信を行う上位インターフェース回路や各ディスクドライブとの間のデータ通信を行う下位インターフェース回路等の主要部を複数設けて多重化している。また、これら各主要部間をそれぞれ接続する経路や、各主要部に電力を供給する電源等も複数設けられている。
【０００５】
これらに加えて、ディスクアレイ装置は、予備のディスクドライブを１つ以上備えることができる。データが記憶されているディスクドライブに何らかの障害が発生した場合、この障害の発生したディスクドライブに記憶されているデータは、予備ディスクにコピーされる。例えば、他のディスクドライブに分散して記憶されているデータ及びパリティに基づいて逆演算することにより、障害の発生したディスクドライブ内のデータを復元する（特許文献１）。その後、障害の発生したディスクドライブを取り出し、新品のディスクドライブや予備ディスクドライブと入れ替える。
【特許文献１】特開平７−１４６７６０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来技術では、ディスクドライブに障害が発生した場合に、障害ディスクドライブに記憶されているデータを、他の正常なディスクドライブ記憶されたデータとパリティとに基づいて復元する。そして、従来技術では、復元したデータを予備ディスクドライブに格納する。このように、従来技術では、あるディスクドライブに実際に障害が発生するまでは、予備ディスクドライブへのデータコピーが行われない。従って、予備ディスクドライブへのデータコピー開始時期に遅れが発生する。また、正常なディスクドライブからデータを復元するため、データ復元に時間がかかり、データコピー完了までの時間もかかる。
【０００７】
さらに、続けて他の正常なディスクドライブの一部に何らかの障害が発生した場合は、逆演算に必要なデータを取得できないため、障害の発生したディスクドライブのデータを復元することができない。正常なディスクドライブであっても、読み書きを繰り返すことにより、部分的な障害を引き起こす可能性が増加する。２つ以上の情報（データ、パリティ）が読出し不能になった場合は、逆演算によりデータを復元できないため、復元不能なデータは失われることになる。
【０００８】
本発明の１つの目的は、障害発生のおそれのあるディスクドライブから予備ディスクドライブへのデータ移行を従来よりも安全に行うことができるディスクアレイ装置及びディスクアレイ装置の障害回避方法を提供することにある。本発明の１つの目的は、障害発生のおそれのあるディスクドライブ以外の正常なディスクドライブへの読み書きを低減することにより、正常なディスクドライブに障害が発生する可能性を低減できるようにしたディスクアレイ装置及びディスクアレイ装置の障害回避方法を提供することにある。本発明の他の目的は、後述する実施の形態の記載から明らかになるであろう。
【課題を解決するための手段】
【０００９】
上記課題を解決すべく、本発明に従うディスクアレイ装置は、上位装置とのデータ授受を制御するチャネルアダプタと、ＲＡＩＤグループを構成する複数のデータディスクドライブと、各データディスクドライブの予備として少なくとも１つ設けられる予備ディスクドライブと、各データディスクドライブ及び予備ディスクドライブとのデータ授受を制御するディスクアダプタと、チャネルアダプタ及びディスクアダプタにより使用され、データを記憶するキャッシュメモリと、チャネルアダプタ及びディスクアダプタにより使用され、制御情報を記憶する制御メモリと、各データディスクドライブ及び予備ディスクドライブとは別に設けられる退避用記憶部と、ディスクアダプタに設けられ、各データディスクドライブに対するアクセスエラーの発生を監視してアクセスエラーの発生頻度が予め設定された所定の閾値以上になった場合には、閾値以上のデータディスクドライブに記憶されたデータをキャッシュメモリを介して予備ディスクドライブにコピーさせる第１制御部と、ディスクアダプタに設けられ、第１制御部によるコピー中にＲＡＩＤグループを対象とするアクセス要求を処理し、ＲＡＩＤグループを対象とする書込み要求を退避用記憶部に対して実行させる第２制御部と、ディスクアダプタに設けられ、第１制御部によるコピーが終了した場合に第２制御部により退避用記憶部に書き込まれたデータを、閾値以上のデータディスクドライブ以外の各データディスクドライブ及び予備ディスクドライブに反映させる第３制御部と、を含んで構成されている。
【００１０】
チャネルアダプタは、上位装置から受信したデータをキャッシュメモリに格納する。また、チャネルアダプタは、上位装置から受信したコマンド（読出し命令、書込み命令等）を制御メモリに格納する。ディスクアダプタは、制御メモリの内容を参照することにより、上位装置からの受信データをキャッシュメモリから読み出して、所定のデータディスクドライブに記憶させる（書込み命令の場合）。また、ディスクアダプタは、制御メモリの内容を参照することにより、上位装置から要求されたデータをデータディスクドライブから読み出して、キャッシュメモリに格納させる（読出し命令の場合）。チャネルアダプタは、キャッシュメモリに格納されたデータを読み出して上位装置に送信する。
さて、ＲＡＩＤグループを構成する複数のデータディスクドライブには、データ（パリティを含む）が分散して記憶されている。例えば、ＲＡＩＤ５では、パリティ専用のディスクドライブを備えておらず、通常のデータと同様に、パリティもデータディスクドライブに分散して記憶される。退避用記憶部は、ＲＡＩＤグループに対する書込み要求を処理するために設けられており、ＲＡＩＤグループを対象とするデータを一時的に保持する。退避用記憶部は、例えば、ＲＡＩＤグループと同一構成を有する別のＲＡＩＤグループ、１つまたは複数の論理ボリューム、１つまたは複数のディスクドライブ等として実現することができる。
【００１１】
第１制御部は、ＲＡＩＤグループを構成する各データディスクドライブにおけるアクセスエラーの発生を監視している。アクセスエラーとしては、例えば、データの読み込みエラー、データの書込みエラーがある。具体的なアクセスエラーとしては、例えば、ディスク面の傷のためにデータを書き込めなかった場合、ディスク面の磁性劣化でデータを読み出せなかった場合、ヘッドの故障や劣化等でデータの読み書きができなかった場合等を挙げることができる。第１制御部は、各データディスクドライブのそれぞれについて、アクセスエラーの発生を監視する。アクセスエラーの発生頻度が所定の閾値以上になった場合、第１制御部は、閾値以上のアクセスエラーが検出されたデータディスクドライブに記憶されているデータを、予備ディスクドライブにコピーさせる。ここで、注意すべき点は、アクセスエラーが閾値以上になった場合でも、実際に読み書き不能な障害が発生しているとは限らない点である。従って、第１制御部は、閾値以上のアクセスエラーが検出されたデータディスクドライブからデータを直接読み出して、予備ディスクドライブに移行させることができる。閾値以上のアクセスエラーが検出されたデータディスクドライブからデータを直接読み出せない場合、第１制御部は、他の正常なデータディスクドライブからデータ及びパリティを取り出して、データを復元し、復元したデータを予備ディスクドライブに記憶させることができる。
【００１２】
第１制御部による予備ディスクドライブへのコピー処理中においても、ディスクアレイ装置を利用するホストコンピュータは、ＲＡＩＤグループへアクセスし、所望のデータを読み出したり、書き込んだりすることができる。第１制御部によるコピー中に、ＲＡＩＤグループを対象とする書込み要求が発生した場合、第２制御部は、この書込み要求を退避用記憶部に対して実行させる。即ち、新たなデータは、ＲＡＩＤグループを構成する各データディスクドライブに記憶されるのではなく、退避用記憶部に記憶される。そして、第１制御部によるコピーが終了すると、第３制御部は、退避用記憶部に記憶されたデータを、閾値以上のアクセスエラーが検出されたデータディスクドライブ以外の各データディスクドライブ及び予備ディスクドライブにコピーして反映させる。
【００１３】
第１制御部による予備ディスクドライブへのコピー中に、ＲＡＩＤグループを構成する各データディスクドライブに対して、データの読出し要求が発生する場合もある。第２制御部は、閾値以上のアクセスエラーが検出されたデータディスクドライブを対象とする読出し要求が発生した場合、この閾値以上のデータディスクドライブ以外の各データディスクドライブに記憶されたデータから、要求されたデータを復元することができる。第２制御部は、復元したデータを読出し要求元に提供する。
【００１４】
逆に、閾値以上のアクセスエラーが検出されたデータディスクドライブ以外の各データディスクドライブを対象とする読出し要求が発生した場合、第２制御部は、退避用記憶部に記憶されたデータを読み出して、この読み出したデータを読出し要求元に提供することができる。
【発明を実施するための最良の形態】
【００１５】
以下、図１〜図２９に基づき、本発明の実施の形態を説明する。本実施形態では、以下のような特徴を備えることができる。
１つの態様では、予備ディスクドライブへのデータ移行中にアクセス要求を処理する第２制御部を、退避用記憶部に書き込まれたデータを管理するための差分管理情報に関連付ける。第２制御部は、差分管理情報に基づいて、ホストコンピュータからの読出し要求に対応する記憶領域を判別する。差分管理情報に記録されているデータの読出しが要求された場合、第２制御部は、要求されたデータを退避用記憶部から読み出してホストコンピュータに提供する。逆に、差分管理情報に記録されていないデータの読出しが要求された場合、第２制御部は、閾値以上のデータディスクドライブ以外の各データディスクドライブに記憶されたデータに基づいてデータを復元し、この復元したデータをホストコンピュータに提供する。
【００１６】
１つの態様では、第２制御部は、ＲＡＩＤグループを対象とする書込み要求のうち閾値以上のアクセスエラーが検出されたデータディスクドライブへの書込み要求のみを退避用記憶部に対して実行させる。閾値以上のアクセスエラーが検出されたデータディスクドライブ以外の各データディスクドライブへの書込み要求である場合、第２制御部は、当該各データディスクドライブに対して実行させる。
【００１７】
１つの態様では、第２制御部は、退避用記憶部に所定値以上の空き容量がある場合に、ＲＡＩＤグループを対象とする書込み要求を退避用記憶部に対して実行させる。退避用記憶部に所定値以上の空き容量が無い場合、第２制御部は、ＲＡＩＤグループを対象とする書込み要求を、ＲＡＩＤグループに対して実行させる。
【００１８】
１つの態様では、第１制御部は、閾値以上のアクセスエラーが検出されたデータディスクドライブ以外の各データディスクドライブ内に記憶されたデータに基づいて、閾値以上のアクセスエラーが検出されたデータディスクドライブ内のデータを復元する。第１制御部は、復元されたデータを予備ディスクドライブにコピーさせる。
【００１９】
１つの態様では、第１制御部によるコピー処理実行させる手動指示部を設けている。即ち、アクセスエラーが所定の閾値に達していない場合でも、システム管理者等は、手動指示部を介して、ＲＡＩＤグループを構成するいずれかのデータディスクドライブの記憶内容を予備ディスクドライブにコピーさせることができる。
【００２０】
１つの態様では、第１制御部及び第２制御部は多重動作可能となっている。そして、退避用記憶部は、複数のＲＡＩＤグループのそれぞれを対象とする書込み要求を受け入れるようになっている。
【００２１】
また、本実施形態は、例えば、ディスクアレイ装置の障害回避方法として捉えることも可能である。即ち、本実施形態は、ＲＡＩＤグループを構成する複数のデータディスクドライブと、これら各データディスクドライブの予備として少なくとも１つ設けられる予備ディスクドライブと、各データディスクドライブ及び予備ディスクドライブとは別に設けられる退避用記憶部とを含んだディスクアレイ装置の障害回避方法であって、以下の第１ステップ〜第５ステップを備える。第１ステップは、各データディスクドライブに対するアクセスエラーの発生を監視し、アクセスエラーの発生頻度が予め設定された所定の閾値以上になったか否かを判定する。第２ステップは、第１ステップにより閾値以上のデータディスクドライブが検出された場合、この閾値以上のデータディスクドライブに記憶されたデータを予備ディスクドライブにコピーさせる。第３ステップは、第１ステップによるコピーの開始によって、ＲＡＩＤグループと退避用記憶部とを関連付ける。第４ステップは、第１ステップによるコピー中に、ＲＡＩＤグループを対象とするアクセス要求が発生したか否かを判定する。第５ステップは、第４ステップによりアクセス要求の発生が検出された場合、アクセス要求が書込み要求であるならば、第３ステップにより関連付けられた退避用記憶部に対してデータを書き込む。
【００２２】
さらに、本実施形態は、例えば、ディスクアレイ装置のディスクドライブ使用方法として捉えることもできる。即ち、本実施形態は、ＲＡＩＤグループを構成する複数のディスクドライブを含んだディスクアレイ装置のディスクドライブ使用方法であって、以下のステップを備える。障害ドライブ検出ステップは、ＲＡＩＤグループを構成する各ディスクドライブに対するアクセスエラーの発生を監視し、アクセスエラーの発生頻度が予め設定された所定の閾値以上になった場合に障害ディスクドライブであると判定する。データコピーステップは、障害ドライブ検出ステップによって障害ディスクドライブが検出された場合は、この障害ディスクドライブに記憶されたデータを、ＲＡＩＤグループを構成する各ディスクドライブ以外の正常ディスクドライブにコピーさせる。アクセス要求検出ステップは、データコピーステップによるコピー中に、ＲＡＩＤグループを対象とするアクセス要求が発生したか否かを検出する。アクセス処理ステップは、アクセス要求検出ステップにより書込み要求が検出された場合は、データコピーがされている正常ディスクドライブとは別の正常ディスクドライブに対して、書込み要求に係わるデータを書き込む。
【実施例１】
【００２３】
図１〜図９に基づいて、本発明の第１実施例を説明する。図１は、ディスクアレイ装置１０の概略構成を示すブロック図である。
ディスクアレイ装置１０は、通信ネットワークＣＮ１を介して、複数のホストコンピュータ１と双方向通信可能に接続されている。ここで、通信ネットワークＣＮ１は、例えば、ＬＡＮ（Local Area Network）、ＳＡＮ（Storage Area Network）、インターネット等である。ＬＡＮを用いる場合、ホストコンピュータ１とディスクアレイ装置１０との間のデータ転送は、TCP/IP（Transmission
Control Protocol/Internet Protocol）プロトコルに従って行われる。ＳＡＮを用いる場合、ホストコンピュータ１とディスクアレイ装置１０とは、ファイバチャネルプロトコルに従ってデータ転送を行う。また、ホストコンピュータ１がメインフレームの場合は、例えば、FICON（Fibre
Connection：登録商標）、ESCON（Enterprise
System Connection：登録商標）、ACONARC（Advanced
Connection Architecture：登録商標）、FIBARC（Fibre
Connection Architecture：登録商標）等の通信プロトコルに従ってデータ転送が行われる。
【００２４】
各ホストコンピュータ１は、例えば、サーバ、パーソナルコンピュータ、ワークステーション、メインフレーム等として実現されるものである。例えば、各ホストコンピュータ１は、図外に位置する複数のクライアント端末と別の通信ネットワークを介して接続されている。各ホストコンピュータ１は、例えば、各クライアント端末からの要求に応じて、ディスクアレイ装置１０にデータの読み書きを行うことにより、各クライアント端末へのサービスを提供する。
【００２５】
ディスクアレイ装置１０は、それぞれ後述するように、各チャネルアダプタ（以下、ＣＨＡと略記）１１と、各ディスクアダプタ（以下、ＤＫＡと略記）１２と、共有メモリ１３と、キャッシュメモリ１４と、スイッチ部１５と、各ディスクドライブ１６とを備えて構成されている。ＣＨＡ１１及びＤＫＡ１２は、例えば、プロセッサやメモリ等が実装されたプリント基板と、制御プログラムとの協働により実現される。
【００２６】
ディスクアレイ装置１０には、例えば、４個や８個等のように、複数のＣＨＡ１１が設けられている。チャネルアダプタ１１は、例えば、オープン系用ＣＨＡ、メインフレーム系用ＣＨＡ等のように、ホストコンピュータ１の種類に応じて、用意される。各ＣＨＡ１１は、ホストコンピュータ１との間のデータ転送を制御するものである。各ＣＨＡ１１は、それぞれプロセッサ部、データ通信部及びローカルメモリ部を備えている（いずれも不図示）。
【００２７】
各ＣＨＡ１１は、それぞれに接続されたホストコンピュータ１から、データの読み書きを要求するコマンド及びデータを受信し、ホストコンピュータ１から受信したコマンドに従って動作する。ＤＫＡ１２の動作も含めて先に説明すると、例えば、ＣＨＡ１１は、ホストコンピュータ１からデータの読出し要求を受信すると、読出しコマンドを共有メモリ１３に記憶させる。ＤＫＡ１２は、共有メモリ１３を随時参照しており、未処理の読出しコマンドを発見すると、ディスクドライブ１６からデータを読み出して、キャッシュメモリ１４に記憶させる。ＣＨＡ１１は、キャッシュメモリ１４に移されたデータを読み出し、コマンド発行元のホストコンピュータ１に送信する。また例えば、ＣＨＡ１１は、ホストコンピュータ１からデータの書込み要求を受信すると、書込みコマンドを共有メモリ１３に記憶させると共に、受信データをキャッシュメモリ１４に記憶させる。ＤＫＡ１２は、共有メモリ１３に記憶されたコマンドに従って、キャッシュメモリ１４に記憶されたデータを所定のディスクドライブ１６に記憶させる。
【００２８】
各ＤＫＡ１２は、ディスクアレイ装置１０内に例えば４個や８個等のように複数個設けられている。各ＤＫＡ１２は、各ディスクドライブ１６との間のデータ通信を制御するもので、それぞれプロセッサ部と、データ通信部と、ローカルメモリ等を備えている（いずれも不図示）。各ＤＫＡ１２と各ディスクドライブ１６とは、例えば、ＳＡＮ等の通信ネットワークＣＮ２を介して接続されており、ファイバチャネルプロトコルに従ってブロック単位のデータ転送を行う。各ＤＫＡ１２は、ディスクドライブ１６の状態を随時監視しており、この監視結果は内部ネットワークＣＮ３を介してＳＶＰ２に送信される。
【００２９】
ディスクアレイ装置１０は、多数のディスクドライブ１６を備えている。ディスクドライブ１６は、例えば、ハードディスクドライブ（ＨＤＤ）や半導体メモリ装置等として実現される。ここで、例えば、４個のディスクドライブ１６によってＲＡＩＤグループ１７を構成することができる。ＲＡＩＤグループ１７とは、例えばＲＡＩＤ５（ＲＡＩＤ５に限定されない）に従って、データの冗長記憶を実現するディスクグループである。各ＲＡＩＤグループ１７により提供される物理的な記憶領域の上には、論理的な記憶領域である論理ボリューム１８（ＬＵ）を少なくとも１つ以上設定可能である。
【００３０】
「制御メモリ」の一例に該当する共有メモリ１３は、例えば、不揮発メモリによって構成されており、制御情報や管理情報等を記憶する。キャッシュメモリ１４は、主としてデータを記憶する。
【００３１】
ＳＶＰ（Service Processor）２は、ディスクアレイ装置１０の管理及び監視を行うためのコンピュータ装置である。ＳＶＰ２は、ディスクアレイ装置１０内に設けられた通信ネットワークＣＮ３を介して、各ＣＨＡ１１及び各ＤＫＡ１２等から各種の環境情報や性能情報等を収集する。ＳＶＰ２が収集する情報としては、例えば、装置構成、電源アラーム、温度アラーム、入出力速度（IOPS）等が挙げられる。通信ネットワークＣＮ３は、例えば、ＬＡＮとして構成される。システム管理者は、ＳＶＰ２の提供するユーザインターフェースを介して、ＲＡＩＤ構成の設定、各種パッケージ（ＣＨＡ、ＤＫＡ、ディスクドライブ等）の閉塞処理等を行うことができる。
【００３２】
図２は、ディスクアレイ装置１０内に記憶されるＲＡＩＤ構成管理テーブルＴ１の概略構造を示す説明図である。ＲＡＩＤ構成管理テーブルＴ１は、例えば共有メモリ１３内に記憶される。ＲＡＩＤ構成管理テーブルＴ１は、例えば、ＲＡＩＤグループ番号（図中、グループ＃）と、論理ボリューム番号（図中、ボリューム＃）と、ディスクドライブ番号（図中、ディスク＃）と、ＲＡＩＤレベルとを対応付けている。以下に述べる他のテーブルも同様であるが、テーブル内の文字または数値は、説明のためのものであって、実際に記憶されるものとは異なる。ＲＡＩＤ構成管理テーブルＴ１の内容の一例を説明すると、例えば、グループ番号１のＲＡＩＤグループ１７には、ボリューム番号１〜３の合計３個の論理ボリューム１８が設定されている。また、このＲＡＩＤグループ１７は、ディスク番号１〜４で特定される合計４個のディスクドライブ１６から構成されている。そして、このグループ番号１で特定されるＲＡＩＤグループ１７は、ＲＡＩＤ５に従って運用されている。
【００３３】
本実施例では、後述のように、あるディスクドライブ１６に障害発生の予兆が検出された場合、この障害発生が予測されるディスクドライブ１６が所属するＲＡＩＤグループへのデータ書込みを、他のＲＡＩＤグループ（あるいは、論理ボリュームやディスクドライブ）に退避させるようになっている。
【００３４】
図２（ａ）は、退避用のＲＡＩＤグループ１７を設定する前の構成を示し、図２（ｂ）は、退避用のＲＡＩＤグループ１７を設定した後の構成を示す。図２（ａ）に示すように、グループ番号５で特定されるＲＡＩＤグループ１７は、当初使用目的が設定されておらず、論理ボリュームが１つも設定されていない。グループ番号１のＲＡＩＤグループ１７に属するいずれか１つのディスクドライブ１６に障害の発生が予測されると、グループ番号５で特定される未使用のＲＡＩＤグループ１７は、退避用のＲＡＩＤグループ１７として利用される。データ退避用に使用されるＲＡＩＤグループ１７（＃５）には、データ退避元のＲＡＩＤグループ１７（＃１）に設定されている論理ボリューム１８（＃１〜３）と同数の論理ボリューム（＃１３〜１５）が設定される。
【００３５】
図３は、ディスクアレイ装置１０内に記憶されるペア情報管理テーブルＴ２の概略構造を示す説明図である。ペア情報管理テーブルＴ２は、例えば、共有メモリ１３内に記憶されるもので、ペアを構成する論理ボリューム１８について管理する。
【００３６】
ペア情報管理テーブルＴ２は、例えば、正ボリューム番号と、副ボリューム番号と、ペア状態と、差分ビットマップとを対応付けている。図３（ａ）に示すペア情報管理テーブルＴ２は、データ退避用の論理ボリューム１８を設定する前の状態を示している。図３（ａ）では、例えば、ある１つの論理ボリューム１８（＃４）が正、別の１つの論理ボリューム１８（＃７）が副となってペアを構成している。ペア状態は「二重化」である。二重化とは、正ボリュームと副ボリュームとの記憶内容を同期させることを意味する。差分ビットマップについてはさらに後述するが、正ボリュームと副ボリュームとのデータの差分を管理するための情報である。
【００３７】
図３（ｂ）は、データ退避用のＲＡＩＤグループ１７を設定した場合を示す。ＲＡＩＤグループ１７（＃１）の各論理ボリューム１８（＃１〜３）は、ＲＡＩＤグループ１７（＃５）に設定された各論理ボリューム１８（＃１３〜１５）にそれぞれ一対一で対応付けられる。即ち、図３（ｂ）に示す例では、論理ボリューム１８（＃１）は、論理ボリューム１８（＃１３）とペアを構成し、論理ボリューム１８（＃２）は、論理ボリューム１８（＃１４）とペアを構成し、論理ボリューム１８（＃３）は、論理ボリューム１８（＃１５）とペアを構成する。これらの各ペアのペア状態は、「二重化」ではなく、「更新データ退避中」となっている。「更新データ退避中」とは、データ退避元の論理ボリューム１８（＃１〜３）を対象とする更新データを、データ退避先の論理ボリューム１８（＃１３〜１５）に退避させている状態を示す。「更新データ退避中」状態と、「二重化」状態とでは、例えば、初期コピーを行わない点で相違する。通常の二重化では、最初に初期コピーを行って、正ボリュームと副ボリュームとの内容を一致させるが、「更新データ退避中」状態では、初期コピーを行わない。
【００３８】
図４は、差分ビットマップ２０について説明する説明図である。図４（ａ）に示すように、本実施形態では、正ボリュームと副ボリュームとでペアを形成し、正ボリュームへデータ書込み（更新）が要求された場合は、このデータを副ボリュームに記憶させるようになっている。仮に、データ（＃１）とデータ（＃２）の更新があった場合、これらのデータは、副ボリュームに記憶される。そして、更新データに対応する差分ビットには、それぞれ「１」がセットされる。差分ビットに「１」がセットされた状態は、副ボリューム内のデータが正ボリュームに反映されていないこと、即ち、新たなデータが副ボリュームに記憶されていることを意味する。従って、データ読出し要求があった場合、要求されたデータに対応する差分ビットが「１」にセットされているならば、そのデータは、副ボリュームに記憶されていると判別することができる。逆に、読出し対象のデータに対応する差分ビットが「０」にセットされているならば、要求されたデータは、正ボリュームに記憶されていると判別することができる。
【００３９】
図４（ｂ）に示すように、差分ビットマップ２０は、差分ビットの集合体である。差分ビットマップ２０は、「差分管理情報」の一例である。本実施例において、各差分ビットは、ディスクの各トラックにそれぞれ対応している。従って、更新管理単位は、トラック単位である。更新管理単位に満たないデータの更新がされた場合は、この更新データが属するトラックの全データをキャッシュメモリ１４に読出し、キャッシュメモリ１４上で更新データと合成させる。そして、このキャッシュメモリ１４上で合成されたトラックを副ボリュームに記憶させ、対応する差分ビットを「１」にセットする。
【００４０】
次に、図５は、本実施例による障害回避方法の全体概要を示す説明図である。図５に示す例では、ＲＡＩＤグループ１７（Ｐ）に属する４番目のディスクドライブ１６（＃４）に障害発生が予測されたものとする。詳細は後述するが、読出しエラーや書込みエラーが所定の閾値以上に発生した場合、このディスクドライブ１６（＃４）は、障害発生のおそれありと判定される。そこで、まず最初に、障害発生が予測されたディスクドライブ１６（＃４）の記憶内容がキャッシュメモリ１４に読み出され、キャッシュメモリ１４から予備ディスクドライブ１６（ＳＰ）にコピーされる（Ｓ１）。
【００４１】
予備ディスクドライブ１６（ＳＰ）へのデータコピーが開始されると、ディスクアレイ装置１０が有する複数のＲＡＩＤグループ１７のうち、未使用のＲＡＩＤグループが１つ確保される（Ｓ２）。そして、障害発生が予測されたディスクドライブ１６（＃４）の属するＲＡＩＤグループ１７（Ｐ）を正、Ｓ２で確保された未使用のＲＡＩＤグループ１７（Ｓ）を副として、ペアが形成される。正のＲＡＩＤグループ１７（Ｐ）に設定されている正ボリューム１８（Ｐ）と、副のＲＡＩＤグループ１７（Ｓ）に設定される副ボリューム１８（Ｓ）とは、ペアを形成する（Ｓ３）。このペアに関する情報は、ペア情報管理テーブルＴ２に登録される。
【００４２】
予備ディスクドライブ１６（ＳＰ）へのデータ移行中に、ホストコンピュータ１からデータ書込みが要求された場合、このデータは、正ボリューム１８（Ｐ）ではなく、副ボリューム１８（Ｓ）に記憶される（Ｓ４）。副ボリューム１８（Ｓ）にデータが記憶された場合、この更新データに対応する差分ビットが「１」にセットされ、差分ビットマップ２０により管理される（Ｓ５）。
【００４３】
予備ディスクドライブ１６（ＳＰ）へのデータ移行中に、ホストコンピュータ１からデータ読出しが要求された場合、ＤＫＡ１２は、差分ビットマップ２０を参照することにより、ホストコンピュータ１から要求されたデータが正ボリューム１８（Ｐ）と副ボリューム１８（Ｓ）のいずれに記憶されているかを判別する。要求されたデータに対応する差分ビットが「０」にセットされている場合、この要求されたデータは、正ボリューム１８（Ｐ）に記憶されている。そこで、ＤＫＡ１２は、要求されたデータを正ボリューム１８（Ｐ）から読み出し、キャッシュメモリ１４にコピーする。ＣＨＡ１１は、キャッシュメモリ１４に移されたデータを、ホストコンピュータ１に送信する（Ｓ６）。一方、ホストコンピュータ１から要求されたデータに対応する差分ビットが「１」にセットされている場合、この要求されたデータは、副ボリューム１８（Ｓ）に存在する。そこで、ＤＫＡ１２は、要求されたデータを副ボリューム１８（Ｓ）から読み出してキャッシュメモリ１４にコピーする。前記同様に、ＣＨＡ１１は、キャッシュメモリ１４に移されたデータをホストコンピュータ１に送信する（Ｓ７）。
【００４４】
予備ディスク１６（ＳＰ）へのデータ移行が完了すると、ＤＫＡ１２は、差分ビットマップ２０を参照し、副ボリューム１８（Ｓ）に退避したデータを、正ボリューム１８（Ｐ）側に反映させる（Ｓ８）。より詳しくは、副ボリューム１８（Ｓ）に記憶されたデータは、正のＲＡＩＤグループ１７（Ｐ）に属するディスクドライブ１６のうち、障害が予測されたディスクドライブ１６（＃４）以外のディスクドライブ１６（＃１〜３）と、予備ディスクドライブ１６（ＳＰ）とにコピーされる。言うまでもないが、副ボリューム１８（Ｓ）に記憶されたデータの全部をディスクドライブ１６（＃１〜３）及び予備ディスクドライブ（ＳＰ）にそれぞれコピーするのではない。対応するディスクにのみ必要なデータがコピーされる。
【００４５】
次に、図５中のＳ１で示した予備ディスクドライブ１６（ＳＰ）へのコピー処理について、図６を参照しつつ説明する。本実施例においては、予備ディスクドライブ１６（ＳＰ）へのデータコピーを「スペアリング」と称する場合がある。図６に示すフローチャートは、「第１制御部」、「第１ステップ」及び「第２ステップ」、「障害ドライブ検出ステップ」及び「データコピーステップ」の一例である。図６に示す処理は、例えば、ＤＫＡ１２によって実行される。なお、以下の各フローチャートでも同様であるが、各フローチャートは処理の概要を示すもので、実際のコンピュータプログラムとは相違する。
【００４６】
ＤＫＡ１２は、各ディスクドライブ１６におけるアクセスエラー（ＩＯエラー）を監視している（Ｓ１１）。エラー発生が検出された場合（S11：YES）、ＤＫＡ１２は、エラー種別毎にエラー発生回数を管理する（Ｓ１２）。ＤＫＡ１２は、例えば、図６中に示すエラー管理テーブルＴ３を用いることにより、発生したアクセスエラーを管理することができる。アクセスエラーは、その種類（ＥＴ１〜ＥＴ３・・・）毎に発生回数（Ｎ１〜Ｎ３・・・）が管理され、かつ、アクセスエラーの種類毎に閾値Ｔｈ１〜Ｔｈ３・・・がそれぞれ設定されている。図６中では１つだけ図示するが、エラー管理は、使用されている各ディスクドライブ１６毎にそれぞれ行われる。
【００４７】
ここで、アクセスエラーは、例えば、読出しエラーと書込みエラーとに分類することができる。また、アクセスエラーは、例えば、リカバリ可能なエラーとリカバリ不能なエラーとに分類することもできる。リカバリ可能なエラーとは、例えば、ＥＣＣ（Error-Correcting Code）によりデータの修復を容易に行える種類のエラーを意味する。リカバリ不能なエラーとは、各データに付加された冗長データ（ECC）ではエラーを修復することができず、より上位での回復（他のデータとパリティとによる逆演算等）が必要となる種類のエラーを意味する。アクセスエラーの具体例としては、例えば、ディスク面に物理的な傷が存在するためにデータを書き込むことができない場合、ディスク面の磁性が劣化しているためデータを読み出すことができない場合、磁気ヘッドの不良でデータの読み書きができない場合等を挙げることができる。
【００４８】
エラー管理テーブルＴ３の下側に示すように、リカバリ可能なエラーとリカバリ不能なエラーとでは、閾値Ｔｈの設定値が異なる。リカバリ可能なエラーの閾値Ｔｈは、相対的に高く設定され、リカバリ不能なエラーの閾値Ｔｈは、相対的に低く設定される。なお、図６中のエラー管理テーブルＴ３では、３種類以上のエラーを示し、各種類のエラー毎にそれぞれ閾値Ｔｈを設定しているが、これは一例であって、リカバリ可能エラー及びリカバリ不能エラーの２種類に限定してもよい。あるいは、さらに詳しくエラーを分類し、エラー管理テーブルＴ３に示すように、多種類のエラー毎にそれぞれ閾値Ｔｈを設定するようにしてもよい。
【００４９】
ＤＫＡ１２は、エラー管理テーブルＴ３を参照することにより、使用されているディスクドライブ１６のそれぞれについて、アクセスエラーの発生頻度が閾値Ｔｈ以上になったか否かを判定する（Ｓ１３）。アクセスエラーの発生頻度が閾値Ｔｈ以上になっていない場合は（S13：NO）、処理を終了する。一方、アクセスエラーの発生頻度が閾値Ｔｈ以上になった場合は（S13：YES）、そのディスクドライブ１６に障害の発生が予測された場合である。そこで、ＤＫＡ１２は、障害の発生が予測されたディスクドライブ（以下、このドライブを障害ディスクドライブと称する場合がある）１６の記憶内容を、予備ディスクドライブ１６（ＳＰ）にコピーし、データ移行を開始させる（Ｓ１４）。データ移行が完了するまで（S15：NO）、Ｓ１４の処理が繰り返される。予備ディスクドライブ１６（ＳＰ）へのデータ移行が完了すると（S15：YES）、処理を終了する。
【００５０】
なお、上記処理では、エラー種別毎にそれぞれ閾値Ｔｈを設定し、いずれかの種類のアクセスエラーの発生頻度が、それに対応する閾値Ｔｈ以上になった場合に、障害ディスクドライブであると判定している。しかし、これに限らず、アクセスエラーを総合的に解析することにより（アクセスエラーに基づいて）、障害ディスクドライブであるか否かを判定してもよい。
【００５１】
図７は、ＳＶＰ２を介して、手動操作によりスペアリングを実行させる場合の処理を示す。図７に示す処理は、主としてＳＶＰ２とＤＫＡ１２との協働作業により実行される。この処理は、「手動指示部」に対応する構成を含んでいる。
【００５２】
ＳＶＰ２は、内部ネットワークＣＮ３を介して、各ＤＫＡ１２から各ディスクドライブ１６に関するエラー情報を収集している（Ｓ２１）。ＳＶＰ２は、システム管理者からの要求に応じて、あるいは自動的に、収集したエラー情報をＳＶＰ２の端末画面に表示させる（Ｓ２２）。ＳＶＰ２は（より正確には、ＳＶＰ２のマイクロプロセッサにより実行される制御プログラムは）、各ディスクドライブ１６のそれぞれについて、アクセスエラーの発生頻度が閾値Ｔｈ以上になったか否かを判定する（Ｓ２３）。アクセスエラーの発生頻度が閾値Ｔｈ以上になったディスクドライブ１６が検出された場合（S23：YES）、ＳＶＰ２は、このディスクドライブ１６を将来障害の発生する可能性が高い障害ディスクドライブであると判定し、システム管理者に警告する（Ｓ２４）。この警告は、例えば、警告メッセージの表示または音声出力、警告ランプの点滅等により行うことができる。アクセスエラーの発生頻度が閾値Ｔｈ以上になったディスクドライブ１６が存在しない場合（S23：NO）、Ｓ２４はスキップされる。
【００５３】
システム管理者は、Ｓ２４で通知された警告に従って、あるいは、警告がされていない場合でも自らの判断に従って、スペアリングの開始を指示できる。システム管理者からの手動操作によるスペアリング開始指示は、ＳＶＰ２のユーザインターフェース（例えば、キーボードスイッチからの入力や音声による指示等）により行われる。ＤＫＡ１２は、システム管理者からのスペアリングの開始指示があったか否かを判定する（Ｓ２５）。手動操作による開始指示が無い場合（S25：NO）、処理を終了するか否かを判定する（Ｓ２６）。例えば、システム管理者がメニュー操作等を行うことにより処理の終了を指示した場合（S26：YES）、処理は終了する。システム管理者が処理の終了を指示しない場合（S26：NO）、Ｓ２１に戻ってエラー情報の収集等が繰り返される。
【００５４】
システム管理者の手動操作によってスペアリングの開始が指示された場合（S25：YES）、システム管理者により指示されたディスクドライブ１６またはＳ２４で警告されたディスクドライブ１６、あるいはシステム管理者により指示されたディスクドライブ１６及び警告されたディスクドライブ１６の記憶内容が、予備ディスクドライブ１６（ＳＰ）にコピーされる（Ｓ２７）。そして、予備ディスクドライブ１６（ＳＰ）へのデータ移行が完了すると（S28：YES）、処理を終了する。
【００５５】
図８は、データ退避処理を示すフローチャートである。データ退避処理は、スペアリングの開始により起動されるもので、ＤＫＡ１２によって実行される。図８に示す処理は、「第２制御部」、「第３ステップ」〜「第５ステップ」、「アクセス要求検出ステップ」及び「アクセス処理ステップ」にそれぞれ対応する一例である。
【００５６】
ＤＫＡ１２は、スペアリング、即ち、障害ディスクドライブ１６から予備ディスクドライブ１６（ＳＰ）へのデータコピーが開始されたか否かを監視している（Ｓ３１）。スペアリング開始が検出されると（S31：YES）、ＤＫＡ１２は、未使用のＲＡＩＤグループ１７が存在するか否かを判定する（Ｓ３２）。未使用のＲＡＩＤグループ１７が存在しない場合（S32：NO）、データ退避領域を確保できないので、処理を終了する。
【００５７】
未使用のＲＡＩＤグループ１７を発見した場合（S32：YES）、ＤＫＡ１２は、障害ディスクドライブ１６が属するＲＡＩＤグループ１７を正、発見された未使用のＲＡＩＤグループ１７を副として、ペアを構成する（Ｓ３３）。正のＲＡＩＤグループ１７に複数の論理ボリューム１８が設定されている場合、副のＲＡＩＤグループ１７にも同数かつ同サイズの論理ボリューム１８がそれぞれ設定され、正と副の各論理ボリューム１８同士でペアが形成される。
【００５８】
ＤＫＡ１２は、随時共有メモリ１３を参照することにより、ホストコンピュータ１からのアクセス要求（読出し要求または書込み要求）が発生したか否かを監視している（Ｓ３４）。ホストコンピュータ１からのアクセス要求が発生していない場合（S34：NO）、ＤＫＡ１２は、スペアリングが終了したか否かを判定する（Ｓ３５）。スペアリングが終了していない場合（S35：NO）、Ｓ３４に戻る。スペアリングが終了した場合（S35：YES）、ＤＫＡ１２は、副ボリューム１８に記憶されたデータを、正ボリューム１８に反映させ（Ｓ３６）、ボリュームペアを解除し（Ｓ３７）、処理を終了する。
【００５９】
スペアリング中にホストコンピュータ１からのアクセス要求が発生した場合（S34：YES）、ＤＫＡ１２は、このアクセス要求が読出し要求（図中、リードと表示）であるか否かを判定する（Ｓ３８）。読出し要求である場合（S38：YES）、ＤＫＡ１２は、差分ビットマップ２０を参照し、読出しを要求されたデータに対応する差分ビットに「１」がセットされているか否か（図中では、差分ビットに１をセットする場合をＯＮ、差分ビットに０をセットする場合をＯＦＦと示す）を判定する（Ｓ３９）。
【００６０】
差分ビットに「１」がセットされている場合（S39：YES）、要求されたデータは副ボリューム１８に存在する。そこで、ＤＫＡ１２は、副ボリューム１８からデータを読み出して、キャッシュメモリ１４に格納する（Ｓ４０）。読出しを要求されたデータに対応する差分ビットに「０」がセットされている場合（S39：NO）、要求されたデータは正ボリューム１８に存在するので、ＤＫＡ１２は、正ボリューム１８からデータを読み出し、キャッシュメモリ１４に格納する（Ｓ４１）。ここで、要求されたデータが障害ディスクドライブ１６に記憶されている場合は、障害ディスクドライブ１６から直接データを読み出すのではなく、他の正常なディスクドライブ１６に格納されているデータに基づいて、要求されたデータを復元する。
【００６１】
ホストコンピュータ１からのアクセス要求が書込み要求である場合（S38：NO）、ＤＫＡ１２は、書込みデータ（更新データ）に対応する差分ビットに「１」をセットし（Ｓ４２）、書込みデータを副ボリューム１８に記憶させる（Ｓ４３）。
【００６２】
図９は、差分データのフィードバック処理を示すフローチャートである。差分データフィードバック処理は、スペアリングの終了により、ＤＫＡ１２によって実行される。本処理は、図８中のＳ３６の詳細である。本処理は、「第３制御部」、「第６ステップ」、「データ更新ステップ」に対応する一例である。
【００６３】
ＤＫＡ１２は、フィードバックポインタを論理ボリュームの先頭アドレスにセットする（Ｓ５１）。ＤＫＡ１２は、そのアドレスに対応する差分ビットに「１」がセットされているか否かを判定する（Ｓ５２）。差分ビットに「１」がセットされている場合（S52：YES）、ＤＫＡ１２は、そのアドレスのデータを副ボリューム１８から正ボリューム１８にコピーさせる（Ｓ５３）。より詳しくは、副ボリューム１８から読み出されたデータは、キャッシュメモリ１４にコピーされ、キャッシュメモリ１４から正ボリューム１８にコピーされる。１アドレス分のデータコピーを終了すると、ＤＫＡ１２は、フィードバックポインタを次のアドレスに移動させる（Ｓ５４）。そして、ＤＫＡ１２は、差分データのフィードバックが完了したか否かを判定する（Ｓ５５）。即ち、ＤＫＡ１２は、フィードバックポインタが最終位置を示しているか否かを判定する。差分データのフィードバックが完了するまで（S55：NO）、Ｓ５２〜Ｓ５４の処理が繰り返し実行される。
【００６４】
このように構成される本実施例によれば、以下の効果を奏する。
障害ディスクドライブ（正確には、障害の発生が予測されるディスクドライブ）１６から予備ディスクドライブ１６（ＳＰ）へのデータ移行中に、障害ディスクドライブ１６の属するＲＡＩＤグループ１７へのデータ読み書きを低減することができる。従って、ＲＡＩＤグループ１７を構成する他の正常なディスクドライブ１６に障害が発生する可能性を少なくすることができ、いわゆる二重障害の可能性を低減できる。即ち、例えば、ＲＡＩＤ５に従う一組のデータセットを考えた場合、このデータセットを構成するいずれか１つのデータが失われた場合でも、残りのデータ（パリティを含む）から逆演算を行うことにより、消失したデータを復元することができる。具体的には、例えば、データセットが、Ｄ１〜Ｄ４の４個のデータと１個のパリティｐとから構成される場合を考える。仮に、Ｄ２の読出しを行うことができない場合、Ｄ２は、Ｄ２＝（Ｄ１）XOR（Ｄ３）XOR（Ｄ４）XOR（ｐ）よって求めることができる。しかし、２つ以上のデータが利用できない場合、演算によるデータ復元は不可能である。
【００６５】
障害ディスクドライブ１６であると判定されていない他の正常なディスクドライブ１６であっても、全くエラーが存在しないとは限らない。また、エラーが全く存在しない場合でも、アクセス回数が多くなればなるほどエラーを生じる確率が増す。もしも、正常なディスクドライブ１６に発生したエラーの位置が、障害ディスクドライブ１６のエラー位置と偶然一致した場合、その場所に格納されているデータを復元することはできない。障害ディスクドライブ１６には比較的多数のエラーが既に生じているので、正常なディスクドライブ１６に追加的に発生した新たなエラーの位置が、障害ディスクドライブ１６のエラー位置と偶然一致するおそれがある。このようなエラー位置の一致による障害を本実施例では「二重障害」と呼ぶ。従って、スペアリングの最中に、正常なディスクドライブ１６へのアクセスを通常通り続行すると、正常なディスクドライブ１６に生じた新たなエラーによって、データの一部を消失する可能性がある。
【００６６】
これに対し、本実施例では、スペアリング中に、正常な他のディスクドライブ１６へのアクセスを低減するため、正常な他のディスクドライブ１６に新たなエラーが追加的に発生して、二重障害が発生する可能性を少なくできる。具体的には、本実施例では、スペアリング中におけるデータ書込みは、副ボリューム１８に対して行わせ、スペアリング中のデータの読出しは、要求されたデータが正ボリューム１８に存在する場合に限って、正ボリューム１８から読み出す。従って、障害ディスクドライブ１６が属する正ボリューム１８へのアクセス頻度を低減し、二重障害の発生を防止可能である。
【００６７】
また、本実施例では、副ボリューム１８に退避させたデータを差分ビットマップ２０によって管理する。従って、ホストコンピュータ１からデータの読出し要求があった場合に、要求されたデータが正ボリューム１８または副ボリューム１８のいずれに存在するかを容易に判別することができる。
【実施例２】
【００６８】
図１０〜図１３に基づいて、本発明の第２実施例を説明する。本実施例の１つの特徴は、スペアリング中のデータ退避領域として、論理ボリュームを使用する点にある。また、本実施例の１つの特徴は、ジャーナルファイルを使用する点にある。図１０は、本実施例による障害回避方法の全体動作の概要を示す説明図である。動作全体の概要は、前記実施例とほぼ同様である。
【００６９】
あるディスクドライブ１６について障害の発生が予測されると、この障害発生が予測されたディスクドライブ１６の記憶内容を予備ディスクドライブ１６（ＳＰ）に移行させるスペアリングが開始される（Ｓ６１）。スペアリングが開始されると、データ退避領域用に、未使用の論理ボリューム１８が少なくとも１つ以上確保される（Ｓ６２）。この未使用の論理ボリューム１８は、ワークボリューム１８（Ｗ）として利用される。ここで、注意すべき点は、前記実施例とは異なり、同サイズの未使用ＲＡＩＤグループを確保するのではなく、未使用の論理ボリュームを確保する点である。即ち、データ退避元の記憶サイズとデータ退避先の記憶サイズとが相違し、データ退避元よりも小さな記憶サイズを有するデータ退避先を使用する点である。
【００７０】
データ退避元のＲＡＩＤグループ１７（Ｐ）に設定された論理ボリューム１８（Ｐ）と、ワークボリューム１８（Ｗ）とが対応付けられる（Ｓ６３）。論理ボリューム１８（Ｐ）とワークボリューム１８（Ｗ）とは、記憶サイズが異なってもよい（同一サイズであってもよい）。ホストコンピュータ１からＲＡＩＤグループ１７（Ｐ）に対する書込み要求が発生すると、この更新データは、ワークボリューム１８（Ｗ）に順次記憶されていく（Ｓ６４）。ここで注意すべき点は、ワークボリューム１８（Ｗ）には、ジャーナルファイルのように、書込みの履歴が記憶される点である。
【００７１】
ホストコンピュータ１からＲＡＩＤグループ１７（Ｐ）に対する読出し要求が発生した場合、要求されたデータがＲＡＩＤグループ１７（Ｐ）に存在するならば、つまり、更新されていないデータの読出し要求の場合は、論理ボリューム１８（Ｐ）からデータが読み出され、キャッシュメモリ１４及びＣＨＡ１１等を介して、ホストコンピュータ１に提供される（Ｓ６５）。要求されたデータが障害ディスクドライブ１６（＃４）に存在する場合、他のディスクドライブ１６（＃１〜３）が記憶するデータに基づいて、要求されたデータが復元される。
【００７２】
ホストコンピュータ１から要求されたデータがワークボリューム１８（Ｗ）に存在するならば、つまり、更新されたデータの読出し要求の場合は、ワークボリューム１８（Ｗ）からデータが読み出され、ホストコンピュータ１に提供される（Ｓ６６）。そして、スペアリングが終了すると、ワークボリューム１８（Ｗ）に記憶されたデータが、論理ボリューム１８（Ｐ）及び予備ディスクドライブ１６（ＳＰ）に反映される（Ｓ６７）。障害ディスクドライブ１６（＃４）に差分データは反映されない。
【００７３】
図１１は、ディスクアレイ装置１０内に記憶されるワークボリューム管理テーブルＴ４の概略構造を示す説明図である。ワークボリューム管理テーブルＴ４は、例えば、共有メモリ１３内に記憶される。なお、前記実施例で述べた各テーブルも含めて、全てのテーブルは、共有メモリ以外の記憶領域に記憶させることもできる。
【００７４】
ワークボリューム管理テーブルＴ４は、例えば、ワークボリューム番号と、ワークボリュームの記憶容量と、対応付けられている正ボリュームの番号と、最新のデータ更新を記憶する終端アドレスと、差分ビットマップとを対応付けて構成されている。差分ビットマップは、更新されたデータの位置を管理するために用いられる。図１１（ａ）は、予備ディスクドライブ１６（ＳＰ）へのデータ移行（スペアリング処理）が開始される前の状態を示す。従って、３個のワークボリューム１８（＃１０〜１２）は、いずれも正ボリュームに対応付けられていない。
【００７５】
図１１（ｂ）は、スペアリング処理が開始された後の状態を示す。この例では、各ワークボリューム１８（＃１０〜１２）を、それぞれ１つずつの正ボリューム１８（＃１〜３）に対応付けている。しかし、これに限らず、１つのワークボリューム１８を複数の正ボリューム１８に対応付ける構成でもよい。
【００７６】
図１１（ｃ）は、ワークボリューム１８に記憶されるデータの概略構造を示す。ワークボリューム１８内では、例えば、ジャーナルアドレスと、正ボリューム番号と、アドレスと、更新データとが対応付けられて記憶されている。図示の例では、上から順番にデータが記憶されていくようになっており、最下端が終端アドレスとなっている。
【００７７】
図１２は、データ退避処理を示すフローチャートである。本処理は、ＤＫＡ１２によって実行される。ＤＫＡ１２は、障害ディスクドライブ１６から予備ディスクドライブ１６（ＳＰ）へのデータコピーが開始されたことを検出すると（Ｓ７１）、ワークボリューム１８が登録されているか否かを判定する（Ｓ７２）。ワークボリューム１８が登録されていない場合（S72：NO）、データ退避領域を確保できないので処理を終了する。
【００７８】
ワークボリューム１８が登録されている場合（S72：YES）、登録されているワークボリューム１８が未使用であるか否かを判定する（Ｓ７３）。そのワークボリューム１８が使用中の場合（S73：NO）、他にワークボリューム１８が登録されているか否かを判定する（Ｓ７４）。登録済のワークボリュームが存在しない場合（S74：NO）、データ退避領域を確保できないので処理を終了する。一方、他のワークボリューム１８が登録されている場合（S74：YES）、Ｓ７３に戻って未使用のワークボリューム１８であるか否かを検査する。
【００７９】
このようにして、ＤＫＡ１２は、登録されているワークボリューム１８を順番に検査し、未使用のワークボリューム１８を検出する。未使用のワークボリューム１８が検出された場合（S73：YES）、ＤＫＡ１２は、この検出された未使用のワークボリューム１８とデータ退避元の論理ボリューム１８とを対応付けて、ワークボリューム管理テーブルＴ４に登録する（Ｓ７５）。
【００８０】
ＤＫＡ１２は、予備ディスクドライブ１６（ＳＰ）へのデータ移行が完了するまでの期間（Ｓ７７）、ホストコンピュータ１からのアクセス要求が発生したか否かを監視する（Ｓ７６）。データ移行が完了した場合（S78：YES）、ＤＫＡ１２は、ワークボリューム１８に記憶されたデータを正ボリューム１８及び予備ディスクドライブ１６（ＳＰ）に反映させる（Ｓ７８）。そして、ＤＫＡ１２は、ワークボリューム管理テーブルＴ４から、ワークボリューム１８に対応付けた正ボリューム１８の番号を削除し、データ退避領域として使用したワークボリューム１８を解放する（Ｓ７９）。
【００８１】
データ移行期間内にホストコンピュータ１からのアクセス要求が検出された場合（S76：YES）、ＤＫＡ１２は、このアクセス要求が読出し要求であるか否かを判定する（Ｓ８０）。読出し要求の場合（S80：YES）、ワークボリューム管理テーブルＴ４に登録されている差分ビットマップを参照し、要求されたデータに対応する差分ビットに「１」が設定されているか否かを判定する（Ｓ８１）。差分ビットに「１」がセットされている場合（S81：YES）、読み出すべきデータはワークボリューム１８に記憶されている。そこで、ＤＫＡ１２は、ワークボリューム１８に記憶されたジャーナルファイルを、終端アドレスから上に向けて（古い方に遡って）順番に検索することにより、目的のデータを発見する（Ｓ８２）。ＤＫＡ１２は、発見したデータをワークボリューム１８から読み出して、キャッシュメモリ１４に記憶させ（Ｓ８３）、Ｓ７７に戻る。ホストコンピュータ１から読出しを要求されたデータに対応する差分ビットに「０」がセットされている場合（S81：NO）、ＤＫＡ１２は、目的のデータを正ボリューム１８から読出してキャッシュメモリ１４に記憶させる（Ｓ８４）。ＣＨＡ１１は、キャッシュメモリ１４に記憶されたデータを読み出し、ホストコンピュータ１に送信する。
【００８２】
一方、ホストコンピュータ１からのアクセス要求が書込み要求の場合（S80：NO）、ＤＫＡ１２は、ワークボリューム１８の残量検査を行う（Ｓ８５）。更新データを記憶するだけの残容量がワークボリューム１８に存在しない場合（S85：NO）、ＤＫＡ１２は、更新データを正ボリューム１８に記憶させる（Ｓ８６）。そして、更新データを正ボリューム１８に記憶させたため、更新データに対応する差分ビットに「０」を設定し（Ｓ８７）、Ｓ７７に戻る。更新データを記憶するだけの残容量がワークボリューム１８に存在する場合（S85：YES）、ＤＫＡ１２は、更新データに対応する差分ビットに「１」をセットし（Ｓ８８）、更新データをワークボリューム１８に記憶させる（Ｓ８９）。そして、ＤＫＡ１２は、ワークボリューム管理テーブルＴ４の終端アドレスを更新し（Ｓ９０）、Ｓ７７に戻る。
【００８３】
なお、ワークボリューム１８の残量が不足している場合（S85：NO）、Ｓ７２〜Ｓ７４で行ったように、他の空いているワークボリューム１８を探索し、他の空いているワークボリューム１８を発見した場合は、このワークボリューム１８に更新データを記憶させるようにしてもよい。
【００８４】
図１３は、差分データのフィードバック処理を示すフローチャートである。この処理は、図１２中のＳ７８に対応する。
【００８５】
ＤＫＡ１２は、ワークボリューム１８に退避しているデータが存在するか否かを判定する（Ｓ１００）。退避データが存在しない場合（S100：NO）、処理を終了する。退避データが存在する場合（S100：YES）、フィードバックポインタをワークボリューム１８の終端アドレスにセットする（Ｓ１０１）。即ち、最新のデータにフィードバックポインタをセットする。次に、ＤＫＡ１２は、フィードバックポインタの示すジャーナルファイル（更新データ及びアドレス）をキャッシュメモリ１４に記憶させる（Ｓ１０２）。ＤＫＡ１２は、キャッシュメモリ１４にコピーされた更新データを正ボリューム１８にコピーする（Ｓ１０３）。なお、ここで、差分データ（更新データ）を正ボリューム１８にコピーするとは、正ボリューム１８のうち障害ディスクドライブ１６を除いた他の正常なディスクドライブ１６及び予備ディスクドライブ１６（ＳＰ）の所定アドレスに更新データをコピーすることを意味する。これは後述する他の実施例でも同様である。
【００８６】
ＤＫＡ１２は、更新データを正ボリューム１８にコピーした後、この更新データに対応する差分ビットに「０」をセットする（Ｓ１０４）。次に、ＤＫＡ１２は、フィードバックポインタが先頭アドレスを示しているか否かを検査する（Ｓ１０５）。フィードバックポインタがワークボリューム１８の先頭アドレスに達している場合は（S105：YES）、ワークボリューム１８を全て検査してデータ移行が完了したときなので、ＤＫＡ１２は、処理を終了する。
【００８７】
フィードバックポインタが先頭アドレスに達していない場合（S105：NO）、ＤＫＡ１２は、フィードバックポインタを１つ前に（古いデータに）移動させる（Ｓ１０６）。そして、ＤＫＡ１２は、フィードバックポインタの示す更新データをジャーナルファイルから読み出し、キャッシュメモリ１４に記憶させる（Ｓ１０７）。ＤＫＡ１２は、キャッシュメモリ１４に読み出した更新データに対応する差分ビットに「１」がセットされているか否かを判定する（Ｓ１０８）。差分ビットに「１」がセットされている場合（S108：YES）、ＤＫＡ１２は、この更新データを正ボリューム１８にコピーし（Ｓ１０９）、差分ビットを「１」から「０」に変更し（Ｓ１１０）、Ｓ１０５に戻る。一方、キャッシュメモリ１４に読み出した更新データに対応する差分ビットに「０」がセットされている場合（S108：NO）、ＤＫＡ１２は、キャッシュメモリ１４に読み出したデータを削除し（Ｓ１１１）、Ｓ１０５に戻る。
【００８８】
つまり、Ｓ１０５〜Ｓ１１１では、新しいジャーナルファイルのデータから順番に正ボリューム１８に反映させていき、古いジャーナルファイルのデータで新しいデータが上書きされるのを防止するために、差分ビットに「０」をセットする。そして、差分ビットに「０」がセットされたデータは、古いデータであると判断し、削除する。
【実施例３】
【００８９】
図１４〜図１８に基づいて、第３実施例を説明する。本実施例の１つの特徴は、データ退避領域として、ワークディスクを使用する点にある。
まず、図１４は、本実施例によるデータ障害回避方法の全体動作の概略を示す説明図である。あるディスクドライブ１６（＃４）について障害の発生が予測されると、予備ディスクドライブ１６（ＳＰ）へのデータ移行が開始される（Ｓ１２１）。
【００９０】
このデータ移行の開始と共に、未使用のワークディスクドライブ１６（Ｗ）が少なくとも１つ確保される（Ｓ１２２）。ホストコンピュータ１からの書込み要求が発生すると、この更新データはワークディスクドライブ１６（Ｗ）に記憶される（Ｓ１２３）。ワークディスクドライブ１６（Ｗ）に記憶されたデータについては、差分管理テーブルＴ７により管理される（Ｓ１２４）。
【００９１】
ホストコンピュータ１から読出し要求が発行された場合、読み出すべきデータがデータ退避元である正のディスクドライブ１６に存在するならば、正ディスクドライブ１６からデータが読み出される（Ｓ１２５）。障害ディスクドライブ１６（＃４）に存在するデータを要求された場合、他の正常なディスクドライブ１６（＃１〜３）の記憶内容に基づいてデータが復元され、復元されたデータがホストコンピュータ１に提供される。ホストコンピュータ１から要求されたデータがワークディスクドライブ１６（Ｗ）に存在する場合、ワークディスクドライブ１６（Ｗ）からデータが読み出され、ホストコンピュータ１に提供される（Ｓ１２６）。そして、予備ディスクドライブ１６（ＳＰ）へのデータ移行が完了すると、ワークディスクドライブ１６に退避されたデータが正ディスクドライブ１６（障害ディスクドライブを除く）及び予備ディスクドライブ１６（ＳＰ）に反映される（Ｓ１２７）。
【００９２】
図１５は、ディスクアレイ装置１０内に記憶される各種管理テーブルの構造例を示す説明図である。図１５（ａ）は、ディスク管理テーブルＴ５を示す。ディスク管理テーブルＴ５には、ディスクアレイ装置１０の備える全てのディスクドライブ１６について、ディスクドライブ番号と、記憶容量と、ステータスとが対応付けられている。ステータスとしては、少なくとも「更新データ退避中」と「NULL」とがある。図示の例では、正ディスクドライブ１６（＃１〜４）がデータ退避モードに入っていることを示している。
【００９３】
図１５（ｂ），（ｃ）は、ワークディスク管理テーブルＴ６を示す。図１５（ｂ）は、予備ディスクドライブ１６（ＳＰ）へのデータ移行前における状態を、図１５（ｃ）は、データ移行後の状態をそれぞれ示す。ワークディスク管理テーブルＴ６は、ワークディスクドライブ番号と、記憶容量と、ステータスと、対応する正ディスクドライブ番号と、更新データを記憶する終端アドレスとを対応付けて管理する。
【００９４】
データ移行前の状態では、２つのワークディスク１６（＃６０，６１）は、いずれも「未使用」ステータスであり、正ディスクドライブ１６に対応付けられていない。データ移行が開始されると、図示の例では、１つのワークディスクドライブ１６（＃６０）が、４個の正ディスクドライブ１６（＃１〜４）に対応付けられる。ステータスは「未使用」から「使用中」に変化する。１つのワークディスクドライブ１６（＃６０）には、４つの正ディスクドライブ１６（＃１〜４）を対象とする更新データがそれぞれ記憶され、最新の更新データの位置は終端アドレスとして示される。
【００９５】
図１６は、ディスクアレイ装置１０内に記憶される差分管理テーブルＴ７を示す説明図である。差分管理テーブルＴ７は、「差分管理情報」の一例であって、正ディスクドライブ番号と、正ディスクドライブ１６におけるアドレスと、ワークディスクドライブ番号と、ワークディスクドライブ１６におけるアドレスとを対応付けている。図示の例では、正ディスク１６（＃１）のアドレス「１」，「２」に記憶されるべきデータが、ワークディスクドライブ１６（＃６０）のアドレス「１」，「２」にそれぞれ退避していることが示されている。また、図示の例では、正ディスクドライブ１６（＃２）のアドレス「５」，「２」，「６」に記憶されるべきデータが、ワークディスクドライブ１６（＃６０）のアドレス「３」，「４」，「５」にそれぞれ記憶されている。さらに、図示の例では、正ディスクドライブ１６（＃３）のアドレス「３」に記憶されるべきデータが、ワークディスクドライブ１６（＃６０）のアドレス「６」に記憶されている。そして、ワークディスクドライブアドレス「６」の位置が終端アドレスとなっている。
【００９６】
次に、図１７は、ＤＫＡ１２により実行されるデータ退避処理を示すフローチャートである。Ｓ１３１〜Ｓ１３５は、データ退避領域がディスクである点を除いて、図１２で述べたＳ７１〜Ｓ７５とほぼ同様である。即ち、データ移行が開始されると（S131：YES）、ＤＫＡ１２は、ワークディスクドライブ１６が登録されているか否かを判定し（Ｓ１３２）、登録されているワークディスクドライブ１６を順番に検査することにより（Ｓ１３４）、未使用のワークディスクドライブ１６を検出する（S133：YES）。
【００９７】
ＤＫＡ１２は、予備ディスクドライブ１６（ＳＰ）へのデータ移行が完了するまでの間（Ｓ１３７）、ホストコンピュータ１からのアクセス要求が発生したか否かを監視する（Ｓ１３６）。データ移行が完了した場合（S137：YES）、ワークディスクドライブ１６に退避させた更新データを正ディスクドライブ１６及び予備ディスクドライブ１６（ＳＰ）に反映させる（Ｓ１３８）。差分データのフィードバックが完了した後、ワークディスク管理テーブルＴ６から正ディスクドライブ番号等を削除し、ステータスを「未使用」に戻して、ワークディスクドライブ１６を解放する（Ｓ１３９）。なお、データ移行中に、正ディスクドライブ１６のステータスは「更新データ退避中」にセットされ、データ移行が終了すると、ステータスは「NULL」に変更される。
【００９８】
データ移行中にホストコンピュータ１からのアクセス要求が発生すると（S136：YES）、ＤＫＡ１２は、要求されたデータが差分管理テーブルＴ７に登録されているか否かを判定する（Ｓ１４０）。要求されたデータが差分管理テーブルＴ７に登録されている場合（S140：YES）、ＤＫＡ１２は、ホストコンピュータ１からのアクセス要求が読出し要求であるか否かを判定する（Ｓ１４１）。読出し要求の場合（S141：YES）、ＤＫＡ１２は、ワークディスクドライブ１６から目的のデータを読出し（Ｓ１４２）、キャッシュメモリ１４に記憶させ、Ｓ１３７に戻る。書込み要求の場合（S141：NO）、ＤＫＡ１２は、更新データをワークディスクドライブ１６に記憶させ（Ｓ１４３）、Ｓ１３７に戻る。ここで注意すべき点は、ジャーナルファイルとは異なり、同一アドレスに対する重複したデータ書込みは、上書き処理される点である。
【００９９】
ホストコンピュータ１から要求されたデータが差分管理テーブルＴ７に登録されていない場合（S140：NO）、ＤＫＡ１２は、ホストコンピュータ１からのアクセス要求が読出し要求であるか否かを判定する（Ｓ１４４）。読出し要求ではない場合（S144：NO）、ＤＫＡ１２は、更新データを記憶するだけの空き容量がワークディスクドライブ１６に存在するか否かを判定する（Ｓ１４５）。ワークディスクドライブ１６に残容量がある場合（S145：YES）、ＤＫＡ１２は、更新データの記憶先アドレス等を差分管理テーブルＴ７に登録する（Ｓ１４６）。また、ＤＫＡ１２は、終端アドレスを差分管理テーブルＴ７に登録し（Ｓ１４７）、ワークディスクドライブ１６の終端アドレスに更新データを記憶させる（Ｓ１４８）。
【０１００】
ワークディスクドライブ１６に残容量が無い場合（S145：NO）、ＤＫＡ１２は、更新データを正ディスクドライブ１６に記憶させて（Ｓ１４９）、Ｓ１３７に戻る。差分管理テーブルＴ７に登録されていないデータの読出し要求である場合（S144：YES）、ＤＫＡ１２は、正ディスクドライブ１６からデータを読み出し（Ｓ１５０）、キャッシュメモリ１４に記憶させてＳ１３７に戻る。
【０１０１】
図１８は、差分データのフィードバック処理を示すフローチャートである。本処理は、図１７中のＳ１３８に対応する。ＤＫＡ１２は、差分管理テーブルＴ７にデータが登録されているか否かを判定する（Ｓ１６０）。差分管理テーブルＴ７にデータが登録されていない場合（S160：NO）、正ディスクドライブ１６にフィードバックすべきデータが存在しないので、処理を終了する。
【０１０２】
差分管理テーブルＴ７にデータが登録されている場合（S160：YES）、ＤＫＡ１２は、差分管理テーブルＴ７に登録されたワークディスクアドレスに基づいて、ワークディスクドライブ１６から全てのデータを読み出し、この読み出したデータをキャッシュメモリ１４に記憶させる（Ｓ１６１）。ＤＫＡ１２は、キャッシュメモリ１４に読み出した全データを、対応する正ディスクドライブ１６の対応するアドレスにそれぞれコピーさせる（Ｓ１６２）。そして、ＤＫＡ１２は、差分管理テーブルＴ７を削除する（Ｓ１６３）。なお、図示の例では、ワークディスクドライブ１６に退避させたデータの全てをキャッシュメモリ１４に読み出す場合を説明したが、これに限らず、１アドレス分のデータずつキャッシュメモリ１４に読み出して正ディスクドライブ１６にコピーさせてもよい。
【実施例４】
【０１０３】
図１９，図２０に基づいて第４実施例を説明する。本実施例の１つの特徴は、複数のＲＡＩＤグループのそれぞれでスペアリング処理が実施された場合でも、対応できるようにした点にある。本実施例は、第２実施例及び第３実施例のいずれにも適用可能であるが、図１９では、第２実施例の変形例として説明する。
【０１０４】
本実施例では、ＲＡＩＤグループ１７（Ｐ１）とＲＡＩＤグループ１７（Ｐ２）との複数のＲＡＩＤグループにおいて、それぞれ独自にディスクドライブ１６の障害発生が予測される。そして、障害ディスクドライブ１６が検出されると、それぞれ別々の予備ディスクドライブ１６（ＳＰ１），（ＳＰ２）に障害ディスクドライブ１６のデータがコピーされる（Ｓ１７１）。
【０１０５】
いずれか１つのＲＡＩＤグループ１７においてスペアリング処理が開始されると、登録されたワークボリュームのうち空いているワークボリューム１８（Ｓ）が確保され、データ退避元の論理ボリューム１８と対応付けられる（Ｓ１７２）。また、別のＲＡＩＤグループにおいてスペアリング処理が開始されると、別のワークボリューム１８（Ｓ）が確保される。図示の例では、第１のＲＡＩＤグループ１７（Ｐ１）の論理ボリューム１８（Ｐ１）は、ワークボリューム１８（Ｓ１）に対応し、第２のＲＡＩＤグループ１７（Ｐ２）の論理ボリューム１８（Ｐ２）は、ワークボリューム１８（Ｓ１）に対応する。
【０１０６】
データ移行中に、ホストコンピュータ１から書込み要求があった場合は、対応するワークボリューム１８（Ｓ）にデータが書き込まれる。差分ビットマップ２０は、ワークボリューム１８（Ｓ）に登録されたデータを管理する（Ｓ１７４）。
【０１０７】
データ移行中に、ホストコンピュータから読出し要求があった場合、要求されたデータが正の論理ボリューム１８に存在するときは、正の論理ボリューム１８からデータが復元されて、ホストコンピュータ１に提供される（Ｓ１７５）。ホストコンピュータ１から要求されたデータがワークボリューム１８（Ｓ）に存在するときは、ワークボリューム１８（Ｓ）からデータが読み出される（Ｓ１７６）。
【０１０８】
データ移行が完了すると、ワークボリューム１８（Ｓ）に退避させていたデータを正の論理ボリューム１８及び予備ディスクドライブ１６（ＳＰ）にそれぞれ反映させる（Ｓ１７７）。なお、以上の各処理は、各ＲＡＩＤグループそれぞれについて、独立して実行される。
【０１０９】
図２０は、ディスクアレイ装置１０に記憶される管理テーブルを示す。図２０（ａ）は、第２実施例と同様のワークボリューム管理テーブルＴ４を示す。図１１（ｂ）に示す第２実施例のワークボリューム管理テーブルとの相違点は、各ワークボリューム１８（Ｓ）に複数の正ボリュームを対応付けることが可能となっている点である。
【０１１０】
例えば、本実施例のワークボリューム管理テーブルＴ４では、ワークボリューム１８（＃１０）に、２つの正ボリューム１８（＃１，４）が対応付けられている。例えば、一方の正ボリューム１８（＃１）はＲＡＩＤグループ１７（Ｐ１）に属し、他方の正ボリューム１８（＃４）は他のＲＡＩＤグループ１７（Ｐ２）に属する。このように、ワークボリューム１８（Ｓ）は、それぞれ異なるＲＡＩＤグループ１７の論理ボリューム１８に対応付け可能である。
【０１１１】
図２０（ｂ）は、第３実施例に適用した場合におけるワークディスク管理テーブルＴ６を示す。図１５（ｃ）に示すワークディスク管理テーブルとの相違点は、１つのワークディスクドライブ１６（＃６０）に、複数のＲＡＩＤグループをそれぞれ構成する複数の正ディスクドライブ１６（＃１〜８）を対応付け可能である点である。
【０１１２】
このように、各管理テーブルＴ４，Ｔ６を拡張するだけで、データ障害回避処理を多重起動させることができる。
【実施例５】
【０１１３】
図２１〜図２４に基づいて第５実施例を説明する。本実施例の１つの特徴は、障害発生が予測されたディスクドライブ１６への書込み要求のみを退避させる点にある。本実施例は第１実施例〜第３実施例にそれぞれ適用可能であるが、図２１では、第２実施例に適用した場合を例に挙げて説明する。
【０１１４】
図２１は、データ障害回避方法の全体概要を示す説明図である。障害ディスクドライブ１６が検出されて予備ディスクドライブ１６（ＳＰ）へのデータ移行が開始すると（Ｓ１８１）、空いているワークボリューム１８（Ｓ）が確保される（Ｓ１８２）。このワークボリューム１８（Ｓ）は、障害ディスクドライブ１６（＃４）に書き込まれるべきデータ（パリティを含む）を退避するために用いられる。ワークボリューム１８（Ｓ）には、他の正常なディスクドライブ１６（＃１〜３）を対象とするデータは書き込まれない。
【０１１５】
データ移行中に、ホストコンピュータ１から障害ディスクドライブ１６（＃４）を対象とする書込み要求が発行された場合、更新データは、ワークボリューム１８（Ｓ）に記憶される（Ｓ１８３）。差分ビットマップ２０は、ワークボリューム１８（Ｓ）に記憶されたデータについて管理する（Ｓ１８４）。
【０１１６】
データ移行中に、ホストコンピュータ１から読出し要求があった場合、要求されたデータが正常なディスクドライブ１６（＃１〜３）に存在するならば、正ディスクドライブ１６から目的のデータが読み出される（Ｓ１８５）。読出しを要求されたデータが障害ディスクドライブ１６（＃４）に存在すべき場合は、ワークボリューム１８（Ｓ）からデータが読み出される（Ｓ１８６）。
【０１１７】
一方、データ移行中に、ホストコンピュータ１から正常なディスクドライブ１６（＃１〜３）を対象とする書込み要求があった場合、それぞれのディスクドライブ１６（＃１〜３）に対してデータが書き込まれる（Ｓ１８７）。
【０１１８】
そして、データ移行が完了すると、ワークボリューム１８（Ｓ）に退避させたデータは、予備ディスクドライブ１６（ＳＰ）にコピーされる（Ｓ１８８）。
【０１１９】
図２２は、本実施例を第１実施例に適用した場合におけるデータ退避処理を示すフローチャートである。この実施例では、障害ディスクドライブ１６のデータ退避領域として、ＲＡＩＤグループを使用する。
【０１２０】
本処理のＳ１９１〜Ｓ１９７は、図８で述べたＳ３１〜Ｓ３７と同一の処理を行うので説明を省略する。ホストコンピュータ１からのアクセス要求が発生すると（S194：YES）、ＤＫＡ１２は、アクセスを要求されたデータ（パリティを含む）が障害ディスクドライブ１６に存在するか否かを判別する（Ｓ１９８）。障害ディスクドライブ１６以外のディスクドライブ１６に存在するデータを要求された場合（S198：NO）、ＤＫＡ１２は、ホストコンピュータ１からのアクセス要求が読出し要求であるか否かを判定する（Ｓ１９９）。書込み要求の場合（S199：NO）、ＤＫＡ１２は、正ボリューム（正ディスクドライブ。本処理において以下同様）にデータを書き込み（Ｓ２００）、Ｓ１９５に戻る。ホストコンピュータ１からのアクセス要求が読出し要求の場合（S199：YES）、ＤＫＡ１２は、正ボリュームからデータを読み出す（Ｓ２０１）。
【０１２１】
障害ディスクドライブ１６を対象とするアクセス要求の場合（S198：YES）、ＤＫＡ１２は、このアクセス要求が読出し要求であるか否かを判定する（Ｓ２０２）。読出し要求の場合（S202：YES）、ＤＫＡ１２は、要求されたデータに対応する差分ビットに「１」がセットされているか否かを判定する（Ｓ２０３）。差分ビットに「０」がセットされている場合（S203：NO）、データは更新されていないので、ＤＫＡ１２は、要求されたデータを正ボリュームのデータに基づいて復元し（Ｓ２０１）、Ｓ１９５に戻る。差分ビットに「１」がセットされている場合（S203：YES）、更新済のデータなので、ＤＫＡ１２は、ワークボリューム（副ボリュームである。本処理において以下同様）１８からデータを読み出し（Ｓ２０４）、Ｓ１９５に戻る。
【０１２２】
障害ディスクドライブ１６を対象とするアクセス要求であって、かつ書込み要求である場合（S202：NO）、ＤＫＡ１２は、対応する差分ビットに「１」をセットし（Ｓ２０５）、ワークボリューム１８にデータを書き込んで（Ｓ２０６）、Ｓ１９５に戻る。
【０１２３】
図２３は、本実施例を第２実施例に適用した場合のデータ退避処理を示すフローチャートである。本処理のＳ２１１〜Ｓ２１９は、図１２で述べたＳ７１〜Ｓ７９と同一の処理を行うので、説明を割愛する。
【０１２４】
ＤＫＡ１２は、予備ディスクドライブ１６（ＳＰ）へのデータ移行中に、ホストコンピュータ１からのアクセス要求が発生すると（S216：YES）、要求されたデータが障害ディスクドライブ１６に存在するか否かを判定する（Ｓ２２０）。正常な他のディスクドライブ１６に存在するデータを対象とする場合（S220：YES）、ＤＫＡ１２は、ホストコンピュータ１からのアクセス要求が読出し要求であるか否かを判定する（Ｓ２２１）。読出し要求の場合（S221：YES）、ＤＫＡ１２は、正ボリュームからデータを読み出し（Ｓ２２２）、Ｓ２１７に戻る。書込み要求の場合（S221：NO）、ＤＫＡ１２は、更新データを正ボリュームに書き込む（Ｓ２２３）。
【０１２５】
ホストコンピュータ１からのアクセス要求が障害ディスクドライブ１６を対象とする場合（S220：YES）、ＤＫＡ１２は、このアクセス要求が読出し要求であるか否かを判定する（Ｓ２２４）。読出し要求の場合（S224：YES）、ＤＫＡ１２は、要求されたデータに対応する差分ビットに「１」がセットされているか否かを検査する（Ｓ２２５）。差分ビットに「１」がセットされている場合（S225：YES）、ＤＫＡ１２は、終端アドレスから上に向けて（古い方に向けて）目的のデータを検索する（Ｓ２２６）。そして、ＤＫＡ１２は、発見されたデータをワークボリューム１８から読出して（Ｓ２２７）、Ｓ２１７に戻る。要求されたデータに対応する差分ビットに「０」がセットされている場合（S225：NO）、ＤＫＡ１２は、正ボリュームからデータを読み出して（Ｓ２２８）、Ｓ２１７に戻る。
【０１２６】
ホストコンピュータ１からのアクセス要求が障害ディスクドライブ１６を対象とする書込み要求である場合（S224：NO）、ＤＫＡ１２は、ワークボリューム１８に残容量があるか否かを検査する（Ｓ２２９）。ワークボリューム１８に残容量が無い場合（S229：NO）、ＤＫＡ１２は、更新データを正ボリュームに書き込む（Ｓ２３０）。そして、ＤＫＡ１２は、更新データに対応する差分ビットに「０」をセットし（Ｓ２３１）、Ｓ２１７に戻る。ワークボリューム１８に残量がある場合（S229：YES）、ＤＫＡ１２は、更新データに対応する差分ビットに「１」をセットし（Ｓ２３２）、更新データをワークボリューム１８に書き込む（Ｓ２３３）。ＤＫＡ１２は、終端アドレスを更新して（Ｓ２３４）、Ｓ２１７に戻る。
【０１２７】
図２４は、本実施例を第３実施例に適用した場合のデータ退避処理を示すフローチャートである。本処理のＳ２４１〜Ｓ２４９は、図１７で述べたＳ１３１〜Ｓ１３９と同一の処理を行うので説明を省略する。
【０１２８】
予備ディスクドライブ１６（ＳＰ）へのデータ移行中に、ホストコンピュータ１から障害ディスクドライブ１６以外の正常なディスクドライブ１６を対象とするアクセス要求が出された場合（S250：NO）、ＤＫＡ１２は、このアクセス要求が読出し要求であるか否かを判別する（Ｓ２５１）。読出し要求の場合（S251：YES）、ＤＫＡ１２は、正ディスクドライブ１６からデータを読み出し（Ｓ２５２）、Ｓ２４７に戻る。書込み要求の場合（S251：NO）、ＤＫＡ１２は、更新データを正ディスクドライブ１６に書込み（Ｓ２５３）、Ｓ２４７に戻る。
【０１２９】
一方、ホストコンピュータ１から障害ディスクドライブ１６を対象とするアクセス要求が出された場合（S250：YES）、ＤＫＡ１２は、差分管理テーブルＴ７に登録されているデータが要求されているか否かを判定する（Ｓ２５４）。差分管理テーブルＴ７に登録されているデータの場合（S254：YES）、ＤＫＡ１２は、ホストコンピュータ１からのアクセス要求が読出し要求であるか否かを判定する（Ｓ２５５）。読出し要求の場合（S255：YES）、ＤＫＡ１２は、ワークディスクからデータを読み出し（Ｓ２５６）、Ｓ２４７に戻る。
【０１３０】
差分管理テーブルＴ７に登録されていないデータを対象とするアクセス要求の場合（S254：NO）、ＤＫＡ１２は、このアクセス要求が読出し要求であるか否かを判定する（Ｓ２５８）。書込み要求の場合（S258：NO）、ＤＫＡ１２は、ワークディスクに残容量があるか否かを検査する（Ｓ２５９）。ワークディスクに残容量がある場合（S259：YES）、ＤＫＡ１２は、更新データの記憶元アドレス等を差分管理テーブルＴ７に登録する（Ｓ２６０）。また、ＤＫＡ１２は、終端アドレスを差分管理テーブルＴ７に登録し（Ｓ２６１）、ワークディスクに更新データを書き込んで（Ｓ２６２）、Ｓ２４７に戻る。
【実施例６】
【０１３１】
図２５〜図２９に基づいて、第６実施例を説明する。本実施例の１つの特徴は、スペアリング処理及びデータ退避処理のいずれにおいても、正常なディスクドライブに記憶されたデータに基づいて、障害ディスクドライブに記憶されたデータを復元し、この復元したデータを予備ディスクドライブにコピーさせると共に、ホストコンピュータに提供するようにした点にある。
【０１３２】
本実施例は、第１実施例〜第３実施例にそれぞれ適用可能であるが、図２５では、第１実施例に適用した場合を例に挙げて説明する。図２５は、本実施例によるデータ障害回避方法の全体動作の概要を示す説明図である。
【０１３３】
前記各実施例と同様に、ＲＡＩＤグループ１７（Ｐ）を構成するディスクドライブ１６（＃４）に障害の発生が予測されると、予備ディスクドライブ１６（ＳＰ）へのデータ移行が開始される（Ｓ２７１）。ここで、注意すべき点は、障害ディスクドライブ１６（＃４）から直接データを読み出して予備ディスクドライブ１６（ＳＰ）にコピーするのではなく、他の正常なディスクドライブ１６（＃１〜３）の記憶内容に基づいて障害ディスクドライブ１６（＃４）内のデータを復元し、この復元したデータを予備ディスクドライブ１６（ＳＰ）にコピーする点である。従って、スペアリング処理中に、障害ディスクドライブ１６（＃４）からの読出しは行われない。
【０１３４】
予備ディスクドライブ１６（ＳＰ）へのデータ移行が開始されると、未使用のＲＡＩＤグループ１７（Ｓ）が確保され（Ｓ２７２）、正のＲＡＩＤグループ１７（Ｐ）とペアを形成する（Ｓ２７３）。また、ここで、副ＲＡＩＤグループ１７（Ｓ）には、正ＲＡＩＤグループ１７（Ｐ）の正論理ボリューム１８（Ｐ）に対応する副ボリューム１８（Ｓ）が形成される。
【０１３５】
データ移行中に、ホストコンピュータ１から正のＲＡＩＤグループ１７（Ｐ）を対象とする書込み要求が発行された場合、この更新データは、副ボリューム１８（Ｓ）に記憶される（Ｓ２７４）。副ボリューム１８（Ｓ）に記憶されたデータについては、差分ビットマップ２０により管理される（Ｓ２７５）。
【０１３６】
データ移行中に、ホストコンピュータ１から、更新されていないデータの読出し要求が出された場合は、正ボリューム１８（Ｐ）からデータを読み出して、ホストコンピュータ１に提供する（Ｓ２７６）。障害ディスクドライブ１６（＃４）に記憶されているデータの読出し要求の場合は、他の正常なディスクドライブ１６（＃１〜３）からのデータに基づいてデータを復元する。
【０１３７】
データ移行中に、ホストコンピュータ１から、更新済データの読出し要求が出された場合は、副ボリューム１８（Ｓ）からデータを読み出して、ホストコンピュータ１に提供する（Ｓ２７７）。そして、データ移行が終了すると、差分ビットマップ２０に基づいて、副ボリューム１８（Ｓ）の記憶内容を正ボリューム１８（Ｐ）（障害ディスクドライブを除く）及び予備ディスクドライブ１６（ＳＰ）に反映させる（Ｓ２７８）。
【０１３８】
図２６は、本実施例によるスペアリング処理（データ移行処理）を示すフローチャートである。まず、ＤＫＡ１２は、コピーポインタをコピー元ディスクドライブ（障害ディスクドライブ）の先頭アドレスにセットする（Ｓ２８１）。ＤＫＡ１２は、コピー元ディスクドライブ以外の他の正常なディスクドライブ１６から、コピーポインタの示すストライプデータをキャッシュメモリ１４にコピーする（Ｓ２８２）。
【０１３９】
データ復元に使用するストライプデータのキャッシュメモリ１４への読出しが正常に終了した場合（S283：YES）、ＤＫＡ１２は、キャッシュメモリ１４に読み出されたデータに基づいて逆演算を行い、コピー元デスクドライブに存在するはずのデータを復元する（Ｓ２８４）。データの復元が正常に終了した場合（S285：YES）、ＤＫＡ１２は、復元したデータを予備ディスクドライブ１６（ＳＰ）に書き込む（Ｓ２８６）。予備ディスクドライブ１６（ＳＰ）へのデータ書込みが正常に終了した場合（S287：YES）、ＤＫＡ１２は、コピーポインタがコピー元ディスクドライブの終端アドレスに達したか否か、即ち、データ移行を全て完了したか否かを判定する（Ｓ２８８）。データ移行が完了していない場合（S288：NO）、ＤＫＡ１２は、コピーポインタを次のアドレスに移動させ（Ｓ２８９）、Ｓ２８２に戻る。データ移行が完了するまでの間、Ｓ２８２〜Ｓ２８９の処理が繰り返される。
【０１４０】
正常なディスクドライブ１６からストライプデータの読出しに失敗した場合（S283：NO）、ＤＫＡ１２は、目的とするデータをコピー元ディスクドライブ１６から直接読出して、キャッシュメモリ１４に記憶させる（Ｓ２９１）。コピー元ディスクドライブ１６からのデータ読出しに成功した場合（S292：YES）、Ｓ２８６に移る。コピー元ディスクドライブ１６からのデータ読出しに失敗した場合（S292：NO）、コピー対象のデータは消失されたものとして扱い（Ｓ２９３）、Ｓ２８８に移る。
【０１４１】
一方、復元されたデータを予備ディスクドライブ１６（ＳＰ）へ正常に書込みできなかった場合（S287：NO）、対象データの書込みエラーとして扱い（Ｓ２９０）、Ｓ２８８に移る。
【０１４２】
図２７は、本実施例を第１実施例に適用した場合のデータ退避処理を示す。本処理の多くのステップは、図２２で述べたステップと同一の処理を実行する。そこで、Ｓ３１４を中心に述べる。障害ディスクドライブ１６を対象とする読出し要求が発行され（S312：YES）、この要求されたデータが更新されていない場合（S313：NO）、ＤＫＡ１２は、他の正常なディスクドライブ１６から読み出したデータに基づいて、目的のデータを復元し（Ｓ３１４）、Ｓ３０５に戻る。
【０１４３】
図２８は、本実施例を第２実施例に適用した場合のデータ退避処理を示す。本処理の多くのステップは、図２３で述べたステップと同一の処理を実行する。そこで、Ｓ３３８を中心に説明する。障害ディスクドライブ１６を対象とする読出し要求が発行され（S334：YES）、この要求されたデータが更新されていない場合（S335：NO）、ＤＫＡ１２は、他の正常なディスクドライブ１６から読み出したデータに基づいて、目的のデータを復元し（Ｓ３３８）、Ｓ３２７に戻る。
【０１４４】
図２９は、本実施例を第３実施例に適用した場合のデータ退避処理を示す。前記同様に、本処理の多くのステップは、図２４で述べたステップと同一の処理を実行する。図２４と異なるステップは、Ｓ３７４である。Ｓ３７４において、ＤＫＡ１２は、障害ディスクドライブ１６以外の正常なディスクドライブ１６からデータを読み出し、目的とするデータを復元する（Ｓ３７４）。
【０１４５】
なお、本発明は、上述した各実施の形態に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。例えば、実施例中で明示した組合せ以外でも各実施例を適宜組合せ可能である。
【図面の簡単な説明】
【０１４６】
【図１】本発明の実施例に係わるディスクアレイ装置の全体概要を示すブロック図である。
【図２】ＲＡＩＤ構成管理テーブルの構成を示す説明図であって、（ａ）はスペアリング処理の実行前、（ｂ）はスペアリング処理の実行後の状態をそれぞれ示す。
【図３】ペア情報管理テーブルの構成を示す説明図であって、（ａ）はスペアリング処理の実行前、（ｂ）はスペアリング処理の実行後の状態をそれぞれ示す。
【図４】差分ビットマップの構成を示す説明図である。
【図５】第１実施例におけるデータ障害回避方法の全体概要を示す説明図である。
【図６】スペアリング処理を示すフローチャートである。
【図７】手動でスペリング処理を行う場合のフローチャートである。
【図８】データ退避処理を示すフローチャートである。
【図９】差分データのフィードバック処理を示すフローチャートである。
【図１０】第２実施例におけるデータ障害回避方法の全体概要を示す説明図である。
【図１１】ワークボリューム管理テーブル等を示す説明図であって、（ａ）はスペアリング処理の実行前、（ｂ）はスペアリング処理の実行後の状態、（ｃ）はワークボリュームの記憶構造をそれぞれ示す。
【図１２】データ退避処理を示すフローチャートである。
【図１３】差分データのフィードバック処理を示すフローチャートである。
【図１４】第３実施例におけるデータ障害回避方法の全体概要を示す説明図である。
【図１５】管理テーブルを示す説明図であって、（ａ）はディスク管理テーブル、（ｂ）はスペアリング処理実行前のワークディスク管理テーブル、（ｃ）はスペアリング処理実行後のワークディスク管理テーブルをそれぞれ示す。
【図１６】差分管理テーブルを示す説明図である。
【図１７】データ退避処理を示すフローチャートである。
【図１８】差分データのフィードバック処理を示すフローチャートである。
【図１９】第４実施例におけるデータ障害回避方法の全体概要を示す説明図である。
【図２０】（ａ）はワークボリューム管理テーブル、（ｂ）はワークディスク管理テーブルをそれぞれ拡張した様子を示す説明図である。
【図２１】第５実施例におけるデータ障害回避方法の全体概要を示す説明図である。
【図２２】データ退避処理を示すフローチャートである。
【図２３】データ退避処理の別の例を示すフローチャートである。
【図２４】データ退避処理のさらに別の例を示すフローチャートである。
【図２５】第６実施例におけるデータ障害回避方法の全体概要を示す説明図である。
【図２６】スペアリング処理を示すフローチャートである。
【図２７】データ退避処理を示すフローチャートである。
【図２８】データ退避処理の別の例を示すフローチャートである。
【図２９】データ退避処理のさらに別の例を示すフローチャートである。
【符号の説明】
【０１４７】
１…ホストコンピュータ、２…ＳＶＰ、１０…ディスクアレイ装置、１１…チャネルアダプタ、１２…ディスクアダプタ、１３…共有メモリ、１４…キャッシュメモリ、１５…スイッチ部、１６…ディスクドライブ、１７…ＲＡＩＤグループ、１８…論理ボリューム、２０…差分ビットマップ、ＣＮ１〜ＣＮ３…通信ネットワーク、Ｔ１…ＲＡＩＤ構成管理テーブル、Ｔ２…ペア情報管理テーブル、Ｔ３…エラー管理テーブル、Ｔ４…ワークボリューム管理テーブル、Ｔ５…ディスク管理テーブル、Ｔ６…ワークディスク管理テーブル、Ｔ７…差分管理テーブル、Ｔｈ…閾値
【図１】
2005157739.tif 000003
【図２】
2005157739.tif 000004
【図３】
2005157739.tif 000005
【図４】
2005157739.tif 000006
【図５】
2005157739.tif 000007
【図６】
2005157739.tif 000008
【図７】
2005157739.tif 000009
【図８】
2005157739.tif 000010
【図９】
2005157739.tif 000011
【図１０】
2005157739.tif 000012
【図１１】
2005157739.tif 000013
【図１２】
2005157739.tif 000014
【図１３】
2005157739.tif 000015
【図１４】
2005157739.tif 000016
【図１５】
2005157739.tif 000017
【図１６】
2005157739.tif 000018
【図１７】
2005157739.tif 000019
【図１８】
2005157739.tif 000020
【図１９】
2005157739.tif 000021
【図２０】
2005157739.tif 000022
【図２１】
2005157739.tif 000023
【図２２】
2005157739.tif 000024
【図２３】
2005157739.tif 000025
【図２４】
2005157739.tif 000026
【図２５】
2005157739.tif 000027
【図２６】
2005157739.tif 000028
【図２７】
2005157739.tif 000029
【図２８】
2005157739.tif 000030
【図２９】
2005157739.tif 000031