(57)【特許請求の範囲】
【請求項１】
ホストから依頼されたＩ／Ｏ要求に応じて、接続されたディスク装置をアクセスし、Ｉ／Ｏ要求を実行するＲＡＩＤシステムにおいて、
ＲＡＩＤを構成する複数の前記ディスク装置と、
前記複数のディスク装置の１つが故障した場合に、故障したディスク装置以外のディスク装置のデータをリードし、予備ディスク装置又は新ディスク装置にデータをライトする動作を複数回に別けて実行して、ＲＡＩＤ構成を再構築するリビルド又はコピーバック処理を実行するコントローラとを有し、
前記コントローラは、
前記通常Ｉ／Ｏ要求と前記リビルド／コピーバックの１回の要求とを、優先度を付け、所定の比で、実行するＲＡＩＤ制御モジュールと、
前記リビルド／コピーバック要求の処理完了に応じて、前記リビルド／コピーバック処理の進捗状況を管理する進捗テーブルを参照して、次のリビルド／コピーバック要求を発行するリビルド／コピーバックモジュールとを有し、
前記ＲＡＩＤ制御モジュールは、通常Ｉ／Ｏ要求の処理完了時刻を、前記通常Ｉ／Ｏ要求の処理完了毎に記録し、前記処理完了時刻と現在時刻とを比較して、通常Ｉ／Ｏ要求が所定時間以内に来ないかを判定し、
前記リビルド／コピーバックモジュールは、前記リビルド／コピーバック要求の処理完了に応じて、前記ＲＡＩＤ制御モジュールに前記判定結果を問い合わせ、前記リビルド又はコピーバック処理の１回の要求処理サイズを、通常Ｉ／Ｏ要求が所定時間以内に到来しない場合には、前記通常Ｉ／Ｏ要求が所定時間以内に到来した場合より、大きく設定して、前記リビルド／コピーバックの1回の要求を、前記ＲＡＩＤ制御モジュールに発行する
ことを特徴とするＲＡＩＤシステム。
【請求項２】
前記コントローラは、前記ディスク装置のデータの一部を格納するキャッシュメモリを有し、
ホストからのＩ／Ｏ要求の内、前記キャッシュメモリを利用できないＩ／Ｏ要求を、前記通常Ｉ／Ｏ要求として、前記ＲＡＩＤ制御モジュールに要求する
ことを特徴とする請求項１のＲＡＩＤシステム。
【請求項３】
前記リビルド／コピーバックモジュールは、前記リビルド又はコピーバック処理の１回の要求処理サイズを、通常Ｉ／Ｏ要求が所定時間以内に到来しない場合には、前記通常Ｉ／Ｏ要求が所定時間以内に到来した場合の処理サイズの倍数に設定する
ことを特徴とする請求項１のＲＡＩＤシステム。
【請求項４】
コントローラが、ホストから依頼されたＩ／Ｏ要求に応じて、接続されたディスク装置をアクセスし、Ｉ／Ｏ要求を実行するＲＡＩＤシステムのリビルド／コピーバック処理方法において、
ＲＡＩＤを構成する複数の前記ディスク装置の１つが故障した場合に、故障したディスク装置以外のディスク装置のデータをリードし、予備ディスク装置又は新ディスク装置にデータをライトする動作を複数回に別けて実行して、ＲＡＩＤ構成を再構築するリビルド又はコピーバック処理を実行するステップと、
ＲＡＩＤ制御モジュールにより、通常Ｉ／Ｏ要求の処理完了時刻を、前記通常Ｉ／Ｏ要求の処理完了毎に記録し、前記処理完了時刻と現在時刻とを比較して、前記ホストからのＩ／Ｏ要求を含む通常Ｉ／Ｏ要求が所定時間以内に来ないかを判定するステップと、
ＲＡＩＤ制御モジュールにより、前記通常Ｉ／Ｏ要求と前記リビルド／コピーバックの１回の要求とを、優先度に応じて、所定比で、実行するステップとを有し、
前記リビルド／コピーバック処理の実行ステップは、
リビルド／コピーバックモジュールにより、リビルド／コピーバック要求の処理完了に応じて、前記リビルド／コピーバック処理の進捗状況を管理する進捗テーブルを参照して、次のリビルド／コピーバック要求の生成を開始するステップと、
前記リビルド／コピーバックモジュールが、前記リビルド／コピーバック要求の処理完了に応じて、前記ＲＡＩＤ制御モジュールに前記判定結果を問い合わせ、前記リビルド又はコピーバック処理の１回の要求処理サイズを、通常Ｉ／Ｏ要求が所定時間以内に到来しない場合には、前記通常Ｉ／Ｏ要求が所定時間以内に到来した場合より、大きく設定して、前記リビルド／コピーバックの1回の要求を、前記ＲＡＩＤ制御モジュールに発行するステップとを有する
ことを特徴とするＲＡＩＤシステムのリビルド／コピーバック処理方法。
【請求項５】
前記コントローラが、ホストからのＩ／Ｏ要求の内、前記ディスク装置のデータの一部を格納するキャッシュメモリを利用できないＩ／Ｏ要求を、前記通常Ｉ／Ｏ要求として、前記ＲＡＩＤ制御モジュールに要求するステップを更に有する
ことを特徴とする請求項４のＲＡＩＤシステムのリビルド／コピーバック処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のディスク装置に、データを冗長性を持って、格納するＲＡＩＤシステムにおいて、一部のディスク装置の障害時に、他のディスク装置からのデータで冗長構成を再構築するリビルド及びコピーバックするＲＡＩＤシステム及びそのリビルド／コピーバック処理方法に関し、特に、ホストＩ／Ｏを受け付けながら、リビルド及びコピーバックするＲＡＩＤシステム及びそのリビルド／コピーバック処理方法に関する。
【背景技術】
【０００２】
近年、様々なデータが電子化され、コンピュータ上で扱われるのに従い、データの処理を実行するホストコンピュータとは独立して、大量のデータを効率よく、高い信頼性で格納することのできるデータストレージ装置（外部記憶装置）の重要性が増加している。
【０００３】
このデータストレージ装置として、大量のディスクデバイス（例えば、磁気ディスク装置や光ディスク装置）と、これら大量のディスクデバイスを制御するディスクコントローラとから構成されるディスクアレイ装置が利用されている。このディスクアレイ装置は、ＲＡＩＤ構成を採用することにより、データの冗長化を実現し、信頼性を向上している。
【０００４】
このようなディスクアレイ装置において、ＲＡＩＤグループを構成するディスクデバイスが、故障して冗長性を失った場合に、冗長性回復が必要となる。図８は、かかる冗長性回復のためのＲＡＩＤ５のリビルド機能の説明図である。活性保守を行なうため、ＲＡＩＤ５を構成する４台のディスクデバイス＃０，＃１，＃２，＃３に、予備ディスクデバイスＨＳ（Hot Spare Disk）を設ける。
【０００５】
このディスクデバイス群１６０は、一対のディスクコントローラ１１０，１２０に接続されている。各ディスクコントローラ１１０，１２０は、ディスクデバイス群１６０とのインタフェース制御するディスクアダプタ１４０と、制御ユニット１２０と、ホスト（図示せず）とのインタフェース制御するチャネルアダプタ１００とを有する。
【０００６】
ここで、ＲＡＩＤ５を構成する４台のディスクデバイスの内、ディスクデバイス＃０が故障した場合には、この故障ディスクデバイス＃０以外のディスクデバイス＃１、＃２、＃３のデータを、ディスクアダプタ１４０を介し、制御ユニット１２０のキャッシュメモリ（図示せず）に読み出し、これらのＸＯＲ演算を行い、冗長データを作成する。
【０００７】
そして、ディスクアダプタ１４０を介し、作成した冗長データを、予備ディスクデバイスＨＳに書き込み、冗長性を回復する。これをＲｅｂｕｉｌｄ機能という。
【０００８】
一方、図９は、コピーバック機能の説明図である。図８のＲｅｂｕｉｌｄが完了した状態から、故障したディスクデバイス＃０が、新しいディスクデバイスＮｅｗと交換された場合に、コピーバック処理を行なう。即ち、予備ディスクデバイスＨＳに書かれた冗長データを，本来のディスクデバイスＮｅｗに書き戻す処理である。
【０００９】
このようなＲｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋ処理を、ホストからのＩ／Ｏ要求を処理しながら、実行することが、望ましく、これらの要求数のバランスをとる方法が提案されている（例えば、特許文献１）。
【特許文献１】特開２００４−２９５８６０号公報（図１４）
【発明の開示】
【発明が解決しようとする課題】
【００１０】
このように、ホストからのＩ／Ｏ要求を処理しつつ、Ｒｅｂｕｉｌｅ／Ｃｏｐｙｂａｃｋ処理するには、ディスクデバイス１台分の処理を一度に行うことは出来ない。このため、１回の処理サイズを固定して、その固定された処理サイズについて、正常なディスクデバイスからデータをリードして、書き込み先ディスクデバイスへライトする動作を、ディスクデバイスのデータ量分の回数を実行していた。
【００１１】
例えば、Ｒｅｂｕｉｌｄでは、正常ディスクデバイスからデータをリードして、ＲＡＩＤ１（ミラーリング）以外は冗長データを作成して、予備ディスクデバイスＨＳや新規ディスクデバイスＮｅｗへライトするという動作を行い、Ｃｏｐｙｂａｃｋでは、予備ディスクＨＳからデータをリードして、新規ディスクデバイスＮｅｗへライトするという動作を行う。
【００１２】
従来は、これらの動作について、一回一回の処理サイズが固定で決められており、そのＲＡＩＤグループの負荷状態によって変動しなかった。そのため、通常Ｉ／Ｏ(ホストからのアクセス)が有る場合で、即ち、ある程度の負荷が有る状態で、通常Ｉ／Ｏによるディスクアクセスと、Ｒｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋのディスクアクセスとのバランスをとるように調整しているシステムでは、逆に、通常Ｉ／Ｏが無い場合での，Ｒｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋの処理では、ディスクデバイスの性能が、十分に引き出せないでいた。
【００１３】
このため、通常Ｉ／Ｏが無い場合に、常識的に考えられるディスクデバイスの性能と比較して、Ｒｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋの完了までの時間が長くなる。近年、ディスクデバイスの格納容量が増大しているため、Ｒｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋの完了までの時間短縮が課題となっている。
【００１４】
従って、本発明の目的は、ホストＩ／Ｏ要求を処理しつつ、リビルド／コピーバックをバランス処理する際に、リビルド／コピーバック処理の性能を向上するためのＲＡＩＤシステム及びそのリビルド／コピーバック処理方法を提供することにある。
【００１５】
又、本発明の他の目的は、ホストＩ／Ｏ要求を処理しつつ、リビルド／コピーバックをバランス処理する際に、リビルド／コピーバックの完了時間を短縮するためのＲＡＩＤシステム及びそのリビルド／コピーバック処理方法を提供することにある。
【００１６】
更に、本発明の他の目的は、リビルド／コピーバックの完了時間を短縮しつつ、ホストＩ／Ｏ要求を処理しつつ、リビルド／コピーバックをバランス処理するためのＲＡＩＤシステム及びそのリビルド／コピーバック処理方法を提供することにある。
【課題を解決するための手段】
【００１７】
この目的の達成のため、本発明は、ホストから依頼されたＩ／Ｏ要求に応じて、接続されたディスク装置をアクセスし、Ｉ／Ｏ要求を実行するＲＡＩＤシステムにおいて、ＲＡＩＤを構成する複数の前記ディスク装置と、前記複数のディスク装置の１つが故障した場合に、故障したディスク装置以外のディスク装置のデータをリードし、予備ディスク装置又は新ディスク装置にデータをライトする動作を複数回に別けて実行して、ＲＡＩＤ構成を再構築するリビルド又はコピーバック処理を実行するコントローラとを有し、前記コントローラは、前記通常Ｉ／Ｏ要求と前記リビルド／コピーバックの１回の要求とを、優先度を付け、所定の比で、実行するＲＡＩＤ制御モジュールと、前記リビルド／コピーバック要求の処理完了に応じて、前記リビルド／コピーバック処理の進捗状況を管理する進捗テーブルを参照して、次のリビルド／コピーバック要求を発行するリビルド／コピーバックモジュールとを有し、前記ＲＡＩＤ制御モジュールは、通常Ｉ／Ｏ要求の処理完了時刻を、前記通常Ｉ／Ｏ要求の処理完了毎に記録し、前記処理完了時刻と現在時刻とを比較して、通常Ｉ／Ｏ要求が所定時間以内に来ないかを判定し、前記リビルド／コピーバックモジュールは、前記リビルド／コピーバック要求の処理完了に応じて、前記ＲＡＩＤ制御モジュールに前記判定結果を問い合わせ、前記リビルド又はコピーバック処理の１回の要求処理サイズを、通常Ｉ／Ｏ要求が所定時間以内に到来しない場合には、前記通常Ｉ／Ｏ要求が所定時間以内に到来した場合より、大きく設定して、前記リビルド／コピーバックの1回の要求を、前記ＲＡＩＤ制御モジュールに発行する。
【００１８】
又、本発明のＲＡＩＤシステムのリビルド／コピーバック処理方法は、ＲＡＩＤを構成する複数の前記ディスク装置の１つが故障した場合に、故障したディスク装置以外のディスク装置のデータをリードし、予備ディスク装置又は新ディスク装置にデータをライトする動作を複数回に別けて実行して、ＲＡＩＤ構成を再構築するリビルド又はコピーバック処理を実行するステップと、ＲＡＩＤ制御モジュールにより、通常Ｉ／Ｏ要求の処理完了時刻を、前記通常Ｉ／Ｏ要求の処理完了毎に記録し、前記処理完了時刻と現在時刻とを比較して、前記ホストからのＩ／Ｏ要求を含む通常Ｉ／Ｏ要求が所定時間以内に来ないかを判定するステップと、ＲＡＩＤ制御モジュールにより、前記通常Ｉ／Ｏ要求と前記リビルド／コピーバックの１回の要求とを、優先度に応じて、所定比で、実行するステップとを有し、前記リビルド／コピーバック処理の実行ステップは、リビルド／コピーバックモジュールにより、リビルド／コピーバック要求の処理完了に応じて、前記リビルド／コピーバック処理の進捗状況を管理する進捗テーブルを参照して、次のリビルド／コピーバック要求の生成を開始するステップと、前記リビルド／コピーバックモジュールが、前記リビルド／コピーバック要求の処理完了に応じて、前記ＲＡＩＤ制御モジュールに前記判定結果を問い合わせ、前記リビルド又はコピーバック処理の１回の要求処理サイズを、通常Ｉ／Ｏ要求が所定時間以内に到来しない場合には、前記通常Ｉ／Ｏ要求が所定時間以内に到来した場合より、大きく設定して、前記リビルド／コピーバックの1回の要求を、前記ＲＡＩＤ制御モジュールに発行するステップとを有する。
【００１９】
更に、本発明では、好ましくは、前記コントローラは、通常Ｉ／Ｏ要求の処理完了時刻を、前記通常Ｉ／Ｏ要求の処理完了毎に記録し、前記処理完了時刻と現在時刻とを比較して、通常Ｉ／Ｏ要求が所定時間来ないかを判定する。
【００２０】
更に、本発明では、好ましくは、前記コントローラは、前記通常Ｉ／Ｏ要求と前記リビルド／コピーバックの１回の要求とをバランスして、実行するとともに、前記リビルド／コピーバック要求の処理完了に応じて、次のリビルド／コピーバック要求を発行する。
【００２１】
更に、本発明では、好ましくは、前記コントローラは、前記リビルド／コピーバック処理の進捗状況を管理する進捗テーブルを有し、前記進捗テーブルに従い、リビルド又はコピーバック処理の１回の要求を作成し、且つ前記進捗テーブルを更新する。
【００２２】
更に、本発明では、好ましくは、前記コントローラは、前記通常Ｉ／Ｏ要求と前記リビルド／コピーバックの１回の要求とをバランスして、実行するＲＡＩＤ制御モジュールと、前記リビルド／コピーバック要求の処理完了に応じて、前記リビルド／コピーバック処理の進捗状況を管理する進捗テーブルを参照して、次のリビルド／コピーバック要求を発行するリビルド／コピーバックモジュールとを有する。
【００２３】
更に、本発明では、好ましくは、前記ＲＡＩＤ制御モジュールは、通常Ｉ／Ｏ要求の処理完了時刻を、前記通常Ｉ／Ｏ要求の処理完了毎に記録し、前記処理完了時刻と現在時刻とを比較して、通常Ｉ／Ｏ要求が所定時間来ないかを判定し、前記リビルド／コピーバックモジュールは、前記ＲＡＩＤ制御モジュールに前記判定結果を問い合わせ、前記リビルド又はコピーバック処理の１回の要求処理サイズを、通常Ｉ／Ｏ要求が所定時間到来しない場合には、前記通常Ｉ／Ｏ要求が所定時間到来した場合より、大きく設定して、前記リビルド／コピーバック要求を発行する。
【００２４】
更に、本発明では、好ましくは、前記コントローラは、前記リビルド又はコピーバック処理の１回の要求処理サイズを、通常Ｉ／Ｏ要求が所定時間到来しない場合には、前記通常Ｉ／Ｏ要求が所定時間到来した場合の処理サイズの倍数に設定した。
【００２５】
更に、本発明では、好ましくは、前記コントローラは、前記ホストとのインタフェース制御を行う第１のインタフェース回路と、前記複数のディスク装置とのインタフェース制御を行う第２のインタフェース回路と、前記第１のインタフェース回路と前記第２のインタフェース回路に接続され、前記通常Ｉ／Ｏ処理と、前記リビルド又はコピーバック処理を実行する制御ユニットとを有し、前記制御ユニットは、前記ホストからのＩ／Ｏ要求を含む通常Ｉ／Ｏ要求が所定時間来ないかを判定し、複数回に別けて実行するリビルド又はコピーバック処理の１回の要求処理サイズを、通常Ｉ／Ｏ要求が所定時間到来しない場合には、前記通常Ｉ／Ｏ要求が所定時間到来した場合より、大きく設定した。
【００２６】
更に、本発明では、好ましくは、前記コントローラは、前記ＲＡＩＤを構成する前記複数のディスク装置の１つが故障した場合に、故障したディスク装置以外のディスク装置のデータをリードし、予備ディスク装置にデータをライトする動作を複数回に別けて実行して、ＲＡＩＤ構成を再構築するリビルド処理を実行した後、前記予備ディスク装置のデータをリードし、前記故障したディスク装置の代わりに設けられた新ディスク装置にデータをライトする動作を複数回に別けて実行して、コピーバック処理を実行する。
【００２７】
更に、本発明では、好ましくは、前記制御ユニットは、前記ディスク装置のデータの一部を格納するキャッシュメモリを有し、前記ホストからのＩ／Ｏ要求の内、前記キャッシュメモリを利用できないＩ／Ｏ要求を、前記通常Ｉ／Ｏとして、要求する。
【発明の効果】
【００２８】
本発明では、リビルド／コピーバックの１回の処理サイズを、ＲＡＩＤ制御が管理する通常Ｉ／Ｏの有無に応じて、変更するため、通常Ｉ／Ｏがある場合には、通常Ｉ／Ｏの処理の阻害にならず、リビルド／コピーバックを実行でき、通常Ｉ／Ｏが無い静的な状態では、それよりも大きい処理サイズを指定して、リビルド／コピーバック処理を高速に実現できる。又、通常Ｉ／Ｏとリビルド／コピーバック要求とを所定比で実行するＲＡＩＤ制御モジュールと、リビルド／コピーバック処理モジュールに分け、ＲＡＩＤ制御モジュールで、通常Ｉ／Ｏの有無を判定するため、少ない負荷で且つ正確に通常Ｉ／Ｏの有無を判定できる。且つリビルド／コピーバック処理モジュールが、通常Ｉ／Ｏがある場合でも、1回のリビルド／コピーバック要求をＲＡＩＤ制御モジュールに発行するため、通常Ｉ／Ｏ有りでも、所定比でリビルド／コピーバック要求を実行でき、ホストＩ／Ｏが途切れることが少ない使用環境でも、ホストＩ／Ｏ要求の遅延を最小限にして、リビルド／コピーバック処理の所定時間までに、リビルド／コピーバック処理を完了できる。
【発明を実施するための最良の形態】
【００２９】
以下、本発明の実施の形態を、ディスクアレイ装置（ＲＡＩＤシステム）、スレッド構成、リビルド／コピーバック処理、他の実施の形態の順で説明する。
【００３０】
＊＊ディスクアレイ装置＊＊
図１は、本発明の一実施の形態のディスクアレイ装置の構成図、図２は、図１のコントロールモジュールの構成図である。
【００３１】
図１は、２台のコントロールモジュールを持つ小規模なディスクアレイ装置を例に示すが、４台の中規模のディスクアレイ装置、８台の大規模のディスクアレイ装置も同様である。
【００３２】
図１に示すように、ディスクアレイ装置は、データを保持する複数のディスクデバイスを搭載する複数のディスクエンクロージャ２−０〜２−３と、図示しないホストコンピュータ（データ処理装置）と、複数のディスクエンクロージャ２−０〜２−３との間に、配置された複数（ここでは２つ）の制御モジュール４−０〜４−１とを有する。
【００３３】
制御モジュール４−０〜４−１のそれぞれは、コントローラ４０と、チャネルアダプタ（第１インターフェース部；図中ＣＡと表記）４１と、ディスクアダプタ（第２インターフェース部；図中ＤＡと表記）４２ａ，４２ｂと、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）エンジン（通信部；図中ＤＭＡと表記）４３とを有する。
【００３４】
図１及び図２により、制御モジュール４−０〜４−１を説明する。コントローラ４０は、ホストコンピュータからの処理要求（リード要求もしくはライト要求）に基づいて、リード／ライト処理を行なうものであり、メモリ４０ｂと制御部４０ａとを備える。
【００３５】
メモリ４０ｂは、ディスクエンクロージャ２−０〜２−３の複数のディスクに保持されたデータの一部を保持する、所謂、複数のディスクに対するキャッシュの役割を果たすキャッシュ領域と、その他のワーク領域とを有する。
【００３６】
制御部４０ａは、メモリ４０ｂ，チャネルアダプタ４１、デバイスアダプタ４２、ＤＭＡ４３の制御を行う。このため、１つ又は複数（図では、２つ）のＣＰＵ４００，４１０と、メモリコントローラ４２０とを有する。メモリコントローラ４２０は、メモリのリード／ライトを制御し、且つパスの切り替えを行う。
【００３７】
メモリコントローラ４２０は、メモリバス４３４を介しメモリ４０ｂと接続し、ＣＰＵバス４３０，４３２を介しＣＰＵ４００，４１０と接続し、更に、メモリコントローラ４２０は、４レーンの高速シリアルバス（例えば、ＰＣＩ−Ｅｘｐｒｅｓｓ）４４０，４４２を介しディスクアダプタ４２ａ，４２ｂに接続する。
【００３８】
同様に、メモリコントローラ４２０は、４レーンの高速シリアルバス（例えば、ＰＣＩ−Ｅｘｐｒｅｓｓ）４４３，４４４，４４５，４４６を介しチャネルアダプタ４１（ここでは、４つのチャネルアダプタ４１ａ，４１ｂ、４１ｃ，４１ｄ）に接続し、４レーンの高速シリアルバス（例えば、ＰＣＩ−Ｅｘｐｒｅｓｓ）４４７，４４８を介しＤＭＡ４３（ここでは、２つのＤＭＡ４３−ａ，４３−ｂ）に接続する。
【００３９】
このＰＣＩ−Ｅｘｐｅｓｓ等の高速シリアルバスは、パケットで通信し、且つシリアルバスを複数レーン設けることにより、信号線本線を減らしても、遅延の少ない、速い応答速度で、所謂、低レンテンシで通信することができる。
【００４０】
チャネルアダプタ４１ａ〜４１ｄは、ホストコンピュータに対するインターフェースであり、チャネルアダプタ４１ａ〜４１ｄは、それぞれ異なるホストコンピュータと接続される。また、チャネルアダプタ４１ａ〜４１ｄは、それぞれ対応するホストコンピュータのインターフェース部に、バス、例えば、ファイバチャネル（Fiber Channel）やEthernet（登録商標）によって接続されることが好ましく、この場合、バスとしては、光ファイバや同軸ケーブルが用いられる。
【００４１】
さらに、これらチャネルアダプタ４１ａ〜４１ｄそれぞれは、各制御モジュール４−０〜４−１の一部として構成されている。このチャネルアダプタ４１ａ〜４１ｂが、対応するホストコンピュータと制御モジュール４−０〜４−３とのインターフェース部として、複数のプロトコルをサポートする。
【００４２】
ここでは、対応するホストコンピュータによって実装すべきプロトコルが同一ではないため、各チャネルアダプタ４１ａ〜４１ｄを必要に応じて容易に交換できるように、制御モジュール４−０〜４−１の主要ユニットであるコントローラ４０とは、別のプリント基板に実装されている。
【００４３】
例えば、チャネルアダプタ４１ａ〜４１ｄがサポートすべきホストコンピュータとの間のプロトコルとしては、上述のように、ファイバチャネルや、Ethernet（登録商標）に対応するｉＳＣＳＩ（Internet Small Computer System Interface）等がある。
【００４４】
更に、各チャネルアダプタ４１ａ〜４１ｄは、前述のように、ＰＣＩ−Ｅｘｐｒｅｓｓバスのように，ＬＳＩ（Large Scale Integration）やプリント基板の間を接続するために設計されたバスによって、コントローラ４０と直接結合されている。これにより、各チャネルアダプタ４１ａ〜４１ｄとコントローラ４０と間に要求される高いスループットを実現することができる。
【００４５】
ディスクアダプタ４２ａ，４２ｂは、ディスクエンクロージャ２−０〜２−３の各ディスクドライブに対するインターフェースであり、ディスクエンクロージャ２−０〜２−３に接続され，ここでは、４つのＦＣ(Ｆｉｂｅｒ  Ｃｈａｎｎｅｌ)ポートを有する。
【００４６】
又、各ディスクアダプタ４２ａ、４２ｂは、前述のように、ＰＣＩ−Ｅｘｐｒｅｓｓバスのように，ＬＳＩ（Large Scale Integration）やプリント基板の間を接続するために設計されたバスによって、コントローラ４０と直接結合されている。これにより、各ディスクアダプタ４２ａ、４２ｂとコントローラ４０と間に要求される高いスループットを実現することができる。
【００４７】
図１に示すように、ディスクエンクロージャ２−０〜２−３の各々は、各々２つのポートを有する複数台（例えば、１５台）のディスクドライブ２００を搭載する。そして、ディスクエンクロージャ２−０〜２−３内では、２つのポートからの一対のＦＣケーブルにより、各ディスクドライブ２００の各ポートが、２つのポートに接続される。
【００４８】
この２つのポートは、各制御モジュール４−０〜４−１のディスクアダプタ４２ａ，４２ｂそれぞれを、すべてのディスクエンクロージャ２−０〜２−３に接続する。即ち、各制御モジュール４−０〜４−１のディスクアダプタ４２ａは、ディスクエンクロージャ２−０〜２−３に接続される。又、同様に、各制御モジュール４−０〜４−１のディスクアダプタ４２ｂは、ディスクエンクロージャ２−０〜２−３に接続される。
【００４９】
このような構成により、各制御モジュール４−０〜４−１が、いずれのディスクアダプタ４２ａ，４２ｂを通じて、且ついずれのパスを通じても、すべてのディスクエンクロージャ（ディスクドライブ）２−０〜２−３にアクセスできる。
【００５０】
なお、各ディスクアダプタ４２ａ，４２ｂと対応するディスクエンクロージャ２−０〜２−３との間は、例えば、ファイバチャネルによって接続され、この場合には、モジュールが異なるため、光ケーブルで接続される。
【００５１】
図１に示すように、ＤＭＡエンジン４３は、各制御モジュール４−０〜４−１と相互に通信を行うものであり、他の制御モジュール間との通信とデータ転送処理を担当する。各制御モジュール４−０〜４−１のＤＭＡエンジン４３のそれぞれは、制御モジュール４−０〜４−１の一部として構成されており、制御モジュール４−０〜４−１の主要ユニットであるコントローラ４０の基板上に実装される。そして、前述の高速シリアルバスによって、コントローラ４０と直接結合されるとともに、他の制御モジュール４−０〜４−１のＤＭＡエンジン４３と互いに通信する。
【００５２】
このような構成により、各制御モジュール４−０〜４−１のＤＭＡエンジン４３のそれぞれは、自身に接続されたコントローラ４０と他の制御モジュール４−０〜４−１のコントローラ４０との間で、ホストコンピュータからのアクセス要求等に応じて生じる通信やデータ転送処理（例えば、ミラーリング処理）を実行する。
【００５３】
また、図２に示すように、各制御モジュール４−０〜４−７のＤＭＡエンジン４３が複数（ここでは２つ）のＤＭＡエンジン４３−ａ，４３−ｂで構成され、これら２つのＤＭＡエンジン４３−ａ，４３−ｂの各々は、図２に示したように、例えば、ＰＣＩ−Ｅｘｐｒｅｓｓバスによって、コントローラ４０に接続されている。即ち、各制御モジュール４−０〜４−１間（つまり、各制御モジュール４−０〜４−１のコントローラ４０間）の通信やデータ転送（ＤＭＡ）処理では、データ転送量が多く、通信制御にかかる時間を短くすることが望ましく、高いスループットと同時に低いレイテンシ（速い応答速度）が要求される。このため、図１、図２に示すように、各制御モジュール４−０〜４−１のＤＭＡエンジン４３は、高いスループットと低いレイテンシとの両方の要求を満たすべく設計された、高速シリアル伝送を利用したバス（PCI-ExpressやRapid-IO）によって、接続される。
【００５４】
これらPCI-ExpressやRapid-IOは、２．５Ｇｂｐｓの高速シリアル伝送を利用したものであり、これらのバスインターフェースには、ＬＶＤＳ（Low Voltage Differential Signaling）という小振幅差動インタフェースが採用される。
【００５５】
＊＊スレッド構成＊＊
次に、ＣＰＵ４００（４１０）が実行するソフトウェアのプログラムモジュール（スレッドという）を説明する。図３は、ＣＰＵ４００（４１０）が実行するソフトウェアのスレッドの構成図、図４は、その部分詳細図である。図３に示すように、ソフトウェアモジュールは、カーネル／スケジューラ６００と、ＩＯ制御モジュール６０２と、ＣＭ間通信ドライバ６０４、ＣＰＵ間通信ドライバ６０６と、システム制御モジュール６０８と、ネットワークドライバ６１０とを有する。
【００５６】
カーネル／スケジューラ６００は、ＭＳ−ＤＯＳ（登録商標）等のオペレーテイングシステムである。ＩＯ制御モジュール６０２は、ＣＭ−ＣＡドライバ６２０と、ベーシックモジュール６４０と、ＣＭ−ＤＡドライバ６３０と有する。ＣＭ−ＣＡドライバ６２０は、ＣＡ（チャネルアダプタ）４１をドライブするドライバである。
【００５７】
ベーシックモジュール６３０は、資源管理を行うリソーススレッド（リソース制御モジュール）６４６、コピー処理を行うコピースレッド（コピー制御モジュール）６４６、メモリ４０ｂのキャッシュメモリの制御を行うキャッシュスレッド（キャッシュメモリ制御モジュール）６４８を有するフロントエンドと、ＲＡＩＤ構成制御を行うＲＡＩＤスレッド（ＲＡＩＤ制御モジュール）６３２、ＯＶＳＭスレッド（ＯＶＳＭ制御モジュール）６３４とを有するバックエンドとからなる。
【００５８】
ＯＶＳＭスレッド６３４は、後述するリビルド／コピーバック処理を行う。メインテナンスエージェント６１２は、ＯＶＳＭスレッド６３４への各種の通知を行う。ＣＭ−ＤＡドライバ６３０は、ＤＡ（ディスクアダプタ）４２をドライブするドライバである。ＣＭ間通信ドライバ６０４は、他のＣＭと、ＣＰＵ間通信ドライバ６０６は、他のＣＰＵ４１０と通信を行う。
【００５９】
システム制御モジュール６０８は、構成管理モジュール６５２とを有する。構成管理モジュール６５２は、サービスコントローラ４６からの、ネットワークドライバ６１０を介する指定に応じて、構成定義のためのＲＬＵ(Raid  Logical  Unit)テーブルを含む構成定義テーブルを、メモリ４０ｂに作成する。尚、サービスコントローラ４６は、図１では、図示されておらず、各ＣＭに共通である。
【００６０】
又、ＤＡ４２に接続されたディスクエンクロージャ２−０〜２−３内に設けられたディスクドライブ２００は、システムディスク２００−１とユーザディスク２００−２に分けられ、システムディスク２００−１に、構成定義テーブルも格納される。
【００６１】
リソースモジュール６４２、ＲＡＩＤモジュール６３２が、構成定義テーブルを参照して、ホストからのＬＵＮ（論理ユニット番号）を、物理ディスクのＰＬＢＡ（物理ブロックアドレス）に変換し、物理ディスク２００をアクセスする。
【００６２】
図４に示すように、ＯＶＳＭスレッド６３４は、Ｒｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋの進捗の管理を行うＲｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋモジュール６３４−１を有する。Ｒｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋモジュール６３４−１は、Ｒｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋの一回一回の処理を、後述するＲＡＩＤ制御モジュール６３２に依頼し、その応答を得て、Ｒｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋの進捗を記録する。
【００６３】
これに対し、ＲＡＩＤ制御モジュール６３２は、データを一時待避するバッファ(以降では、Ｄａｔａ  Ｂｕｆｆｅｒと記述する)を獲得して、ディスクデバイスに対して、リードやライトを指示する。特に、Ｒｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋでは、ディスクデバイスからリードし、Ｄａｔａ  Ｂｕｆｆｅｒへ格納し、Ｄａｔａ  Ｂｕｆｆｅｒの内容を、ディスクデバイスへライトする処理を担当する。
【００６４】
このＲＡＩＤ制御モジュール６３２は、最後の通常Ｉ／Ｏが完了した時刻を記録する通常Ｉ／Ｏ完了時刻記録部６３２−１と、通常Ｉ／Ｏ完了時刻記録部６３２−１の時刻と、現在の時刻とを比較して、例えば、５ｓｅｃの差があるかどうかを判定する通常Ｉ／Ｏ有無判定モジュール６３２−２とを有する。
【００６５】
又、ＯＶＳＭモジュール６３４は、ＲＡＩＤ制御モジュール６３２へＲｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋ実処理を依頼するＲｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋモジュール６３４−２，６３４−３と、実処理依頼時に、通常Ｉ／Ｏ有無判定モジュール６３２−２の判定結果を呼び出し、その結果により、１回の実処理の処理サイズを変更する処理サイズ変更モジュール６３４−４とを有する。
【００６６】
このＲｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋモジュール６３４−１は、メモリ４０ｂに設けられた開始ＬＢＡを格納する進捗テーブル４１０と、処理サイズのデフォルト値を格納するデフォルト格納部４１４を参照し、１回の実処理サイズを決定し、実処理を依頼する。
【００６７】
このような構成により、ＯＶＳＭモジュール６３４は、Ｒｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋの実処理を、ＲＡＩＤ制御モジュール６３２に依頼する度に、ＯＶＳＭモジュール６３４は、ＲＡＩＤ制御モジュール６３２に対して、通常Ｉ／Ｏの有無(通常Ｉ／Ｏ無しになってから５ｓｅｃ以上が，経過しているかどうか)について確認を行い、その結果を受けて、ＯＶＳＭモジュール６３４は、ＲＡＩＤ制御モジュール６３２へ渡すＲｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋ実処理のパラメータ（１回の処理サイズ）等を変更する。
【００６８】
ここで、通常Ｉ／Ｏの有無の判定として、５ｓｅｃ以上としたのは、Ｉ／Ｏの有るタイミングと無いタイミングが交互に繰り返されているような場合に、誤認を防ぐためである。つまり、まばらに、通常Ｉ／Ｏが来ている状態だと、偶然に、Ｒｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋのタイミングで、通常Ｉ／Ｏが無いように見えても、Ｒｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋを開始してすぐに、通常Ｉ／Ｏが発生する可能性がある。このようなケースは、通常Ｉ／Ｏ有りの状態に分類し、通常Ｉ／Ｏを待たせないという意味である。
【００６９】
＊＊リビルド／コピーバック処理＊＊
図５は、本発明の一実施の形態のリビルド／コピーバック処理フロー図、図６は、そのタイムチャート図、図７は、その動作説明図である。
【００７０】
以下、図６及び図７を参照して、図５のリビルド／コピーバック処理を説明する。
【００７１】
（Ｓ１０）先ず、ＯＶＳＭモジュール６３４は、リビルド／コピーバックの開始に当り、ＲＡＩＤ制御モジュール６３２から完了応答があることを確認する。
【００７２】
（Ｓ１２）次に、ＯＶＳＭモジュール６３４のリビルド／コピーバックモジュール６３４−１は、メモリ４０ｂのリビルド／コピーバック進捗テーブル４１０の開始ＲＬＢＡを参照する。図７に示すように、リビルド／コピーバック処理の対象が、ＲＡＩＤ構成でのＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）０００〜ｎｎｎとすると、開始ＲＬＢＡには、次のリビルド／コピーバック処理の対象データの開始ＲＬＢＡが、記録されている。
【００７３】
（Ｓ１４）リビルド／コピーバックモジュール６３４−１は、進捗テーブル４１０の開始ＲＬＢＡから、対象とする全ＲＬＵ（Ｒａｉｄ  Ｌｏｇｉｃａｌ  Ｕｎｉｔ）の処理が完了したかを判定する。リビルド／コピーバックモジュール６３４−１は、全ＲＬＵの処理を完了したと判定すると、終了する。
【００７４】
（Ｓ１６）逆に、リビルド／コピーバックモジュール６３４−１は、全ＲＬＵの処理を完了していないと判定すると、ＲＡＩＤ制御モジュール６３２に、通常Ｉ／Ｏの有無を問い合わせる。図４で説明したように、ＲＡＩＤ制御モジュール６３２は、通常Ｉ／Ｏ無しになってから５ｓｅｃ以上が，経過しているかどうかを判定している。
【００７５】
（Ｓ１８）リビルド／コピーバックモジュール６３４−１は、ＲＡＩＤ制御モジュール６３２からの応答から、通常Ｉ／Ｏの有無を確認し、通常Ｉ／Ｏが有る場合には、図６のコピーバック１に示すように、１回の処理サイズを、メモリ４０ｂのデフォルト値に設定する。一方、通常Ｉ／Ｏが無い場合には、図６のコピーバック２に示すように、１回の処理サイズを、メモリ４０ｂのデフォルト値の２倍に設定する。
【００７６】
（Ｓ２０）そして、リビルド／コピーバックモジュール６３４−１は、ＲＡＩＤ制御モジュール６３２に、開始ＲＬＢＡと設定した処理サイズを有する実処理を要求する。更に、リビルド／コピーバックモジュール６３４−１は、開始ＲＬＢＡに処理サイズを加えて、次の開始ＲＬＢＡを計算し、進捗テーブル４１０を計算した開始ＲＬＢＡに更新する。そして、ステップＳ１０に戻る。
【００７７】
このように、通常Ｉ／Ｏ有りの状態(以降、動的と記述する)と、無しの状態(以降、静的と記述する)とで、静的の場合では、一回の処理サイズを大きくする。一回のサイズが大きければ、Ｒｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋ処理は、早くなるが、代わりに通常Ｉ／Ｏへの影響が大きくなる。
【００７８】
このため、動的の場合では、通常Ｉ／Ｏの処理の阻害にならない処理サイズを指定し、静的では、それよりも大きい処理サイズ(例えば、物理ディスクドライブの1トラック以上のサイズであることが、ディスク性能的に望ましい)を指定する。このサイズの指定方法は、ＯＶＳＭ６３４からＲＡＩＤ制御６３２へのＲｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋ実処理要求時のパラメータを変更するだけで良い。
【００７９】
尚、図３のホストからのアクセス処理を説明すると、ＣＡ４１が、ホストからのリード要求を受けると、ＣＡ４１は、ＣＭ−ＣＡドライバ６２０を介し、リソースモジュール６４２に通知し、リソースモジュール６４２は、このリード要求を受け付ける。
【００８０】
リソースモジュール６４２は、キャッシュモジュール６４８に、キャッシュヒットか否かの判定を依頼する。キャッシュモジュール６４８は、対象とするホストＬＵＮのＬＢＡ（ＯＬＢＡ）のデータが、メモリ４０ｂのキャッシュ領域に存在するかを調べ、存在すれば（ヒット）、メモリ４０ｂのＯＬＢＡ（ホスト論理ブロックアドレス）のデータを読み出し、ＣＭ−ＣＡドライバ６２０を介しＣＡ４１からホストにデータを転送する。
【００８１】
一方、キャッシュモジュール６４８は、対象とするホストＬＵＮのＬＢＡ（ＯＬＢＡ）のデータが、メモリ４０ｂのキャッシュ領域に存在しない（ミスヒット）と判定すると、バックエンドのＲＡＩＤ制御モジュール６３２に、物理ディスクからのデータリード要求を行う。ＲＡＩＤモジュール６３２は、周知のように、処理要求されたホストＬＵＮのＬＢＡ（ＯＬＢＡ）を、ＲＡＩＤグループのＬＢＡ（ＲＬＢＡ）に変換する。
【００８２】
次に、ＲＡＩＤ制御モジュール６３２は、ＲＡＩＤグループのＬＢＡ（ＲＬＢＡ）を、仮想ディスクのＬＢＡ（ＤＬＢＡ）に変換する。次に、ＲＡＩＤモジュール６３２は、処理要求された仮想ディスクのＬＢＡ（ＤＬＢＡ）を、物理ディスクのＬＢＡ（ＰＬＢＡ）に変換する。この処理は、ＲＡＩＤ構成（例えば、ＲＡＩＤ１，ＲＡＩＤ５）により異なる。
【００８３】
次に、ＲＡＩＤモジュール６３２は、処理要求された物理ディスクのＬＢＡ（ＰＬＢＡ）から、ディスクエンクロージャＲＡＩＤ、スロットを求め、物理ディスク２００のＬＢＡ（ＰＬＢＡ）にリード要求を行う。即ち、ＣＭ−ＤＡドライバ６３０を介し対応するＤＡ４２に当該物理ディスクのリード要求を発し、ＢＲＴ５−０を介し当該物理ディスクをアクセスする。
【００８４】
物理ディスクからデータが読み出され、キャッシュモジュール６４８が、ＤＡ４２を介しメモリ４０ｂのキャッシュ領域に格納し、リードが完了すると、リソースモジュール６４２は、ＣＭ−ＣＡドライバ６２０を介しＣＡ４１からホストにこのリードデータを転送して、終了する。
【００８５】
尚、ホストからのライト処理は、一旦、ライトデータをメモリ４０ｂのキャッシュ領域に格納した後、内部のライトバックスケジュールに従い、該当物理ディスクにライトバックする。このライトバック時も同様に、ミスヒット以降の処理は、構成定義テーブルを使用したアドレス変換処理を行う。
【００８６】
又、ＲＡＩＤ制御モジュール６３２は、受け付けたホストＩ／Ｏ、ライトバック等の内部Ｉ／Ｏ等の通常Ｉ／Ｏと、受け付けたリビルド／コピーバック要求とを、所定のＩ／Ｏ比で優先度を付け、優先順に、下位層のＣＭ−ＤＡモジュール６３０に要求する。
【００８７】
このようにして、リビルド／コピーバックの１回の処理サイズを、ＲＡＩＤ制御が管理する通常Ｉ／Ｏの有無に応じて、変更するため、通常Ｉ／Ｏがある場合には、通常Ｉ／Ｏの処理の阻害にならず、リビルド／コピーバックを実行でき、静的な状態では、それよりも大きい処理サイズを指定して、リビルド／コピーバック処理を高速に実現できる。
【００８８】
又、ＲＡＩＤ制御モジュール６３２は、最後の通常Ｉ／Ｏが完了した時刻を記録し、この時刻と、現在の時刻とを比較して、例えば、５ｓｅｃの差があるかどうかを判定する通常Ｉ／Ｏ有無判定処理を行うため、リビルド／コピーバックモジュール６３４−１は、問い合わせにより、容易に、処理サイズを変更して、リビルド／コピーバック処理を進行できる。
【００８９】
＊＊他の実施の形態＊＊
前述した実施の形態では、図１のような構成のディスクアレイ装置で説明したが、これ以外の構成のディスクアレイ装置に適用できる。又、物理ディスクは、磁気ディスク、光ディスク、光磁気ディスク、各種のストレージデバイスを適用できる。
【００９０】
更に、通常Ｉ／Ｏの有無の監視時間を５秒としたが、他の監視時間であっても良く、Ｉ／Ｏ有無の判定を、ＯＶＳＭモジュールで実行することもできる。又、処理サイズの変更を、デフォルト値の２倍としたが、１．５倍等他の倍数を利用でき、且つ通常Ｉ／Ｏの有無により、処理サイズを別々に設けても良い。
【００９１】
以上、本発明を実施の形態により説明したが、本発明の趣旨の範囲内において、本発明は、種々の変形が可能であり、本発明の範囲からこれらを排除するものではない。
【００９２】
（付記１）ホストから依頼されたＩ／Ｏ要求に応じて、接続されたディスク装置をアクセスし、Ｉ／Ｏ要求を実行するＲＡＩＤシステムにおいて、ＲＡＩＤを構成する複数の前記ディスク装置と、前記複数のディスク装置の１つが故障した場合に、故障したディスク装置以外のディスク装置のデータをリードし、予備ディスク装置又は新ディスク装置にデータをライトする動作を複数回に別けて実行して、ＲＡＩＤ構成を再構築するリビルド又はコピーバック処理を実行するコントローラとを有し、前記コントローラは、前記ホストからのＩ／Ｏ要求を含む通常Ｉ／Ｏ要求が所定時間来ないかを判定し、複数回に別けて実行するリビルド又はコピーバック処理の１回の要求処理サイズを、通常Ｉ／Ｏ要求が所定時間到来しない場合には、前記通常Ｉ／Ｏ要求が所定時間到来した場合より、大きく設定したことを特徴とするＲＡＩＤシステム。
【００９３】
（付記２）前記コントローラは、通常Ｉ／Ｏ要求の処理完了時刻を、前記通常Ｉ／Ｏ要求の処理完了毎に記録し、前記処理完了時刻と現在時刻とを比較して、通常Ｉ／Ｏ要求が所定時間来ないかを判定することを特徴とする付記１のＲＡＩＤシステム。
【００９４】
（付記３）前記コントローラは、前記通常Ｉ／Ｏ要求と前記リビルド／コピーバックの１回の要求とをバランスして、実行するとともに、前記リビルド／コピーバック要求の処理完了に応じて、次のリビルド／コピーバック要求を発行することを特徴とする付記１のＲＡＩＤシステム。
【００９５】
（付記４）前記コントローラは、前記リビルド／コピーバック処理の進捗状況を管理する進捗テーブルを有し、前記進捗テーブルに従い、リビルド又はコピーバック処理の１回の要求を作成し、且つ前記進捗テーブルを更新することを特徴とする付記１のＲＡＩＤシステム。
【００９６】
（付記５）前記コントローラは、前記通常Ｉ／Ｏ要求と前記リビルド／コピーバックの１回の要求とをバランスして、実行するＲＡＩＤ制御モジュールと、前記リビルド／コピーバック要求の処理完了に応じて、前記リビルド／コピーバック処理の進捗状況を管理する進捗テーブルを参照して、次のリビルド／コピーバック要求を発行するリビルド／コピーバックモジュールとを有することを特徴とする付記３のＲＡＩＤシステム。
【００９７】
（付記６）前記ＲＡＩＤ制御モジュールは、通常Ｉ／Ｏ要求の処理完了時刻を、前記通常Ｉ／Ｏ要求の処理完了毎に記録し、前記処理完了時刻と現在時刻とを比較して、通常Ｉ／Ｏ要求が所定時間来ないかを判定し、前記リビルド／コピーバックモジュールは、前記ＲＡＩＤ制御モジュールに前記判定結果を問い合わせ、前記リビルド又はコピーバック処理の１回の要求処理サイズを、通常Ｉ／Ｏ要求が所定時間到来しない場合には、前記通常Ｉ／Ｏ要求が所定時間到来した場合より、大きく設定して、前記リビルド／コピーバック要求を発行することを特徴とする付記５のＲＡＩＤシステム。
【００９８】
（付記７）前記コントローラは、前記リビルド又はコピーバック処理の１回の要求処理サイズを、通常Ｉ／Ｏ要求が所定時間到来しない場合には、前記通常Ｉ／Ｏ要求が所定時間到来した場合の処理サイズの倍数に設定したことを特徴とする付記１のＲＡＩＤシステム。
【００９９】
（付記８）前記コントローラは、前記ホストとのインタフェース制御を行う第１のインタフェース回路と、前記複数のディスク装置とのインタフェース制御を行う第２のインタフェース回路と、前記第１のインタフェース回路と前記第２のインタフェース回路に接続され、前記通常Ｉ／Ｏ処理と、前記リビルド又はコピーバック処理を実行する制御ユニットとを有し、前記制御ユニットは、前記ホストからのＩ／Ｏ要求を含む通常Ｉ／Ｏ要求が所定時間来ないかを判定し、複数回に別けて実行するリビルド又はコピーバック処理の１回の要求処理サイズを、通常Ｉ／Ｏ要求が所定時間到来しない場合には、前記通常Ｉ／Ｏ要求が所定時間到来した場合より、大きく設定したことを特徴とする付記１のＲＡＩＤシステム。
【０１００】
（付記９）前記コントローラは、前記ＲＡＩＤを構成する前記複数のディスク装置の１つが故障した場合に、故障したディスク装置以外のディスク装置のデータをリードし、予備ディスク装置にデータをライトする動作を複数回に別けて実行して、ＲＡＩＤ構成を再構築するリビルド処理を実行した後、前記予備ディスク装置のデータをリードし、前記故障したディスク装置の代わりに設けられた新ディスク装置にデータをライトする動作を複数回に別けて実行して、コピーバック処理を実行することを特徴とする付記１のＲＡＩＤシステム。
【０１０１】
（付記１０）前記制御ユニットは、前記ディスク装置のデータの一部を格納するキャッシュメモリを有し、前記ホストからのＩ／Ｏ要求の内、前記キャッシュメモリを利用できないＩ／Ｏ要求を、前記通常Ｉ／Ｏとして、要求することを特徴とする付記５のＲＡＩＤシステム。
【０１０２】
（付記１１）ホストから依頼されたＩ／Ｏ要求に応じて、接続されたディスク装置をアクセスし、Ｉ／Ｏ要求を実行するＲＡＩＤシステムのリビルド／コピーバック処理方法において、ＲＡＩＤを構成する複数の前記ディスク装置の１つが故障した場合に、故障したディスク装置以外のディスク装置のデータをリードし、予備ディスク装置又は新ディスク装置にデータをライトする動作を複数回に別けて実行して、ＲＡＩＤ構成を再構築するリビルド又はコピーバック処理を実行するステップと、前記ホストからのＩ／Ｏ要求を含む通常Ｉ／Ｏ要求が所定時間来ないかを判定するステップと、複数回に別けて実行するリビルド又はコピーバック処理の１回の要求処理サイズを、通常Ｉ／Ｏ要求が所定時間到来しない場合には、前記通常Ｉ／Ｏ要求が所定時間到来した場合より、大きく設定するステップとを有することを特徴とするＲＡＩＤシステムのリビルド／コピーバック処理方法。
【０１０３】
（付記１２）前記判定ステップは、通常Ｉ／Ｏ要求の処理完了時刻を、前記通常Ｉ／Ｏ要求の処理完了毎に記録し、前記処理完了時刻と現在時刻とを比較して、通常Ｉ／Ｏ要求が所定時間来ないかを判定するステップからなることを特徴とする付記１１のＲＡＩＤシステムのリビルド／コピーバック処理方法。
【０１０４】
（付記１３）前記通常Ｉ／Ｏ要求と前記リビルド／コピーバックの１回の要求とをバランスして、実行するステップを更に有し、前記リビルド／コピーバック処理の実行ステップは、前記リビルド／コピーバック要求の処理完了に応じて、次のリビルド／コピーバック要求を発行するステップからなることを特徴とする付記１１のＲＡＩＤシステムのリビルド／コピーバック処理方法。
【０１０５】
（付記１４）前記リビルド／コピーバック処理の実行ステップは、前記リビルド／コピーバックの進捗状況を管理する進捗テーブルを参照して、リビルド又はコピーバック処理の１回の要求を作成するステップと、前記進捗テーブルを更新するステップを有することを特徴とする付記１１のＲＡＩＤシステムのリビルド／コピーバック処理方法。
【０１０６】
（付記１５）ＲＡＩＤ制御モジュールにより、前記通常Ｉ／Ｏ要求と前記リビルド／コピーバックの１回の要求とをバランスして、実行するステップを更に有し、前記処理ステップは、前記リビルド／コピーバック要求の処理完了に応じて、前記リビルド／コピーバック処理の進捗状況を管理する進捗テーブルを参照して、次のリビルド／コピーバック要求を前記ＲＡＩＤ制御モジュールに発行するステップからなることを特徴とする付記１１のＲＡＩＤシステムのリビルド／コピーバック処理方法。
【０１０７】
（付記１６）前記判定ステップは、前記ＲＡＩＤ制御モジュールにより、通常Ｉ／Ｏ要求の処理完了時刻を、前記通常Ｉ／Ｏ要求の処理完了毎に記録し、前記処理完了時刻と現在時刻とを比較して、通常Ｉ／Ｏ要求が所定時間来ないかを判定するステップからなり、前記リビルド／コピーバック要求発行ステップは、前記ＲＡＩＤ制御モジュールに前記判定結果を問い合わせ、前記リビルド又はコピーバック処理の１回の要求処理サイズを、通常Ｉ／Ｏ要求が所定時間到来しない場合には、前記通常Ｉ／Ｏ要求が所定時間到来した場合より、大きく設定して、前記リビルド／コピーバック要求を発行するステップからなることを特徴とする付記１５のＲＡＩＤシステムのリビルド／コピーバック処理方法。
【０１０８】
（付記１７）前記設定ステップは、前記リビルド又はコピーバック処理の１回の要求処理サイズを、通常Ｉ／Ｏ要求が所定時間到来しない場合には、前記通常Ｉ／Ｏ要求が所定時間到来した場合の処理サイズの倍数に設定するステップからなることを特徴とする付記１１のＲＡＩＤシステムのリビルド／コピーバック処理方法。
【０１０９】
（付記１８）前記判定ステップは、前記ホストとのインタフェース制御を行う第１のインタフェース回路と、前記複数のディスク装置とのインタフェース制御を行う第２のインタフェース回路とに接続され、前記通常Ｉ／Ｏ処理と、前記リビルド又はコピーバック処理を実行する制御ユニットにより、前記ホストからのＩ／Ｏ要求を含む通常Ｉ／Ｏ要求が所定時間来ないかを判定するステップからなり、前記設定ステップは、前記制御ユニットにより、複数回に別けて実行するリビルド又はコピーバック処理の１回の要求処理サイズを、通常Ｉ／Ｏ要求が所定時間到来しない場合には、前記通常Ｉ／Ｏ要求が所定時間到来した場合より、大きく設定するステップからなることを特徴とする付記１１のＲＡＩＤシステムのリビルド／コピーバック処理方法。
【０１１０】
（付記１９）前記リビルド／コピーバック処理を実行するステップは、前記ＲＡＩＤを構成する前記複数のディスク装置の１つが故障した場合に、故障したディスク装置以外のディスク装置のデータをリードし、予備ディスク装置にデータをライトする動作を複数回に別けて実行して、ＲＡＩＤ構成を再構築するリビルド処理ステップと、前記リビルド処理を実行した後、前記予備ディスク装置のデータをリードし、前記故障したディスク装置の代わりに設けられた新ディスク装置にデータをライトする動作を複数回に別けて実行して、コピーバック処理を実行するステップからなることを特徴とする付記１１のＲＡＩＤシステムのリビルド／コピーバック処理方法。
【０１１１】
（付記２０）前記ホストからのＩ／Ｏ要求の内、前記ディスク装置のデータの一部を格納するキャッシュメモリを利用できないＩ／Ｏ要求を、前記通常Ｉ／Ｏとして、要求するステップを更に有することを特徴とする付記１５のＲＡＩＤシステムのリビルド／コピーバック処理方法。
【産業上の利用可能性】
【０１１２】
以上、説明したように、リビルド／コピーバックの１回の処理サイズを、ＲＡＩＤ制御が管理する通常Ｉ／Ｏの有無に応じて、変更するため、通常Ｉ／Ｏがある場合には、通常Ｉ／Ｏの処理の阻害にならず、リビルド／コピーバックを実行でき、通常Ｉ／Ｏが無い静的な状態では、それよりも大きい処理サイズを指定して、リビルド／コピーバック処理を高速に実現できる。又、通常Ｉ／Ｏとリビルド／コピーバック要求とを所定比で実行するＲＡＩＤ制御モジュールと、リビルド／コピーバック処理モジュールに分け、ＲＡＩＤ制御モジュールで、通常Ｉ／Ｏの有無を判定するため、少ない負荷で且つ正確に通常Ｉ／Ｏの有無を判定できる。且つリビルド／コピーバック処理モジュールが、通常Ｉ／Ｏがある場合でも、1回のリビルド／コピーバック要求をＲＡＩＤ制御モジュールに発行するため、通常Ｉ／Ｏ有りでも、所定比でリビルド／コピーバック要求を実行でき、ホストＩ／Ｏが途切れることが少ない使用環境でも、ホストＩ／Ｏ要求の遅延を最小限にして、リビルド／コピーバック処理の所定時間までに、リビルド／コピーバック処理を完了できる。
【図面の簡単な説明】
【０１１３】
【図１】本発明の一実施の形態のディスクアレイ装置の構成図である。
【図２】図１の制御モジュールの構成図である。
【図３】図１及び図２の制御モジュールのファームウェアの機能ブロック図である。
【図４】図３のファームウェアの詳細構成図である。
【図５】本発明の一実施の形態のリビルド／コピーバック処理フロー図である。
【図６】図５の処理のタイムチャート図である。
【図７】図５の処理の動作説明図である。
【図８】従来のリビルド処理の説明図である。
【図９】従来のコピーバック処理の説明図である。
【符号の説明】
【０１１４】
４−０〜４−１  制御モジュール
４０  制御ユニット
４１  チャネルアダプタ
４２ａ，４２ｂ  デバイスアダプタ
４００、４１０  ＣＰＵ
４０ｂ  メモリ
２００  ディスクデバイス
６３２  ＲＡＩＤ制御モジュール
６３４−１  リビルド／コピーバックモジュール
２−０〜２−３  デバイスエンクロージャー
【図１】
0004817783.tif 000002
【図２】
0004817783.tif 000003
【図３】
0004817783.tif 000004
【図４】
0004817783.tif 000005
【図５】
0004817783.tif 000006
【図６】
0004817783.tif 000007
【図７】
0004817783.tif 000008
【図８】
0004817783.tif 000009
【図９】
0004817783.tif 000010