(57)【特許請求の範囲】
【請求項１】
ホストから依頼されたＩ／Ｏ要求に応じて、接続されたディスク装置をアクセスし、Ｉ／Ｏ要求を実行するＲＡＩＤシステムにおいて、
ＲＡＩＤを構成する複数の前記ディスク装置と、
前記複数のディスク装置と、パスで接続され、前記ホストからのＩ／Ｏ要求を含む通常Ｉ／Ｏ要求を実行しながら、前記複数のディスク装置の１つが故障した場合に、故障したディスク装置以外のディスク装置のデータを前記パスを介しリードする処理を行い、予備ディスク装置又は新ディスク装置に前記リードしたデータを前記パスを介しライトする処理を複数回に別けて実行して、ＲＡＩＤ構成を再構築するリビルド又はコピーバック処理を実行するコントローラとを有し、
前記コントローラは、
前記リビルド又はコピーバック処理の前記リードする処理と、前記ライトする処理とを分けて、実行するととともに、前記通常Ｉ／Ｏ要求が所定時間以内に来ないかを判定し、受け付けた前記通常Ｉ／Ｏ要求と、前記リビルド又はコピーバック処理の処理依頼とを、所定の比で、実行するＲＡＩＤ制御モジュールと、
前記ＲＡＩＤ制御モジュールの前記判定結果から、前記通常Ｉ／Ｏ要求が所定時間以内に到来した場合には、前記リビルド又はコピーバック処理の前記リードする処理の依頼と、前記ライトする処理の依頼とのいずれかを、１回の処理依頼として、前記ＲＡＩＤ制御モジュールに要求し、前記通常Ｉ／Ｏ要求が所定時間以内に到来しない場合には、前記リビルド又はコピーバック処理の前記リードする処理の依頼と、前記ライトする処理の依頼との両方を、１回の処理依頼として、前記ＲＡＩＤ制御モジュールに要求するリビルド又はコピーバックモジュールとを有し、
前記ＲＡＩＤ制御モジュールは、前記通常Ｉ／Ｏ要求が所定時間以内に到来しない場合には、１回の前記リビルド又はコピーバック処理として、前記リードする処理と前記ライトする処理の両方を実行する
ことを特徴とするＲＡＩＤシステム。
【請求項２】
前記リビルド又はコピーバックモジュールは、前記通常Ｉ／Ｏ要求が所定時間以内に到来した場合から前記通常Ｉ／Ｏ要求が所定時間以内に到来しない場合に遷移したことに応じて、前記リビルド又はコピーバック処理の１回のリードする処理の依頼を発行し、前記ＲＡＩＤ制御モジュールからの前記リードする処理の依頼の処理完了に応じて、前記リビルド又はコピーバック処理の前記ライトする処理の依頼と前記リードする処理の依頼の両方を、前記ＲＡＩＤ制御モジュールに要求する
ことを特徴とする請求項１のＲＡＩＤシステム。
【請求項３】
前記リビルド又はコピーバックモジュールは、前記リビルド／コピーバック処理の１回の前記ライトする処理の依頼と前記リードする処理の依頼に対する前記ＲＡＩＤ制御モジュールからの前記ライト処理及びリード処理の完了に応じて、次のリビルド／コピーバック処理の１回の前記ライトする処理の依頼と前記リードする処理の依頼を、前記ＲＡＩＤ制御モジュールに要求する
ことを特徴とする請求項２のＲＡＩＤシステム。
【請求項４】
ホストから依頼されたＩ／Ｏ要求に応じて、接続されたディスク装置をアクセスし、Ｉ／Ｏ要求を実行するＲＡＩＤコントローラにおいて、
前記ホストとのインタフェース制御を行う第１のインタフェース回路と、
ＲＡＩＤを構成する複数の前記ディスク装置とのインタフェース制御を行う第２のインタフェース回路と、
前記ホストからのＩ／Ｏ要求を含む通常Ｉ／Ｏ要求を実行しながら、前記複数のディスク装置の１つが故障した場合に、故障したディスク装置以外のディスク装置のデータを前記パスを介しリードする処理を行い、予備ディスク装置又は新ディスク装置に前記リードしたデータを前記パスを介しライトする処理を複数回に別けて実行して、ＲＡＩＤ構成を再構築するリビルド又はコピーバック処理を実行するコントローラとを有し、
前記コントローラは、
前記リビルド又はコピーバック処理の前記リードする処理と、前記ライトする処理とを分けて、実行するととともに、前記通常Ｉ／Ｏ要求が所定時間以内に来ないかを判定し、受け付けた前記通常Ｉ／Ｏ要求と、前記リビルド又はコピーバック処理の処理依頼とを、所定の比で、実行するＲＡＩＤ制御モジュールと、
前記ＲＡＩＤ制御モジュールの前記判定結果から、前記通常Ｉ／Ｏ要求が所定時間以内に到来した場合には、前記リビルド又はコピーバック処理の前記リードする処理の依頼と、前記ライトする処理の依頼とのいずれかを、１回の処理依頼として、前記ＲＡＩＤ制御モジュールに要求し、前記通常Ｉ／Ｏ要求が所定時間以内に到来しない場合には、前記リビルド又はコピーバック処理の前記リードする処理の依頼と、前記ライトする処理の依頼の両方を、１回の処理依頼として、前記ＲＡＩＤ制御モジュールに要求するリビルド又はコピーバックモジュールとを有し、
前記ＲＡＩＤ制御モジュールは、前記通常Ｉ／Ｏ要求が所定時間以内に到来しない場合には、１回の前記リビルド又はコピーバック処理として、前記リードする処理と前記ライトする処理の両方を実行する
ことを特徴とするＲＡＩＤコントローラ。
【請求項５】
ホストから依頼されたＩ／Ｏ要求を含む通常Ｉ／Ｏ要求に応じて、接続されたディスク装置をアクセスし、通常Ｉ／Ｏ要求を実行しながら、複数のディスク装置の１つが故障した場合に、故障したディスク装置以外のディスク装置のデータを前記パスを介しリードする処理を行い、予備ディスク装置又は新ディスク装置に前記リードしたデータを前記パスを介しライトする処理を複数回に別けて実行して、ＲＡＩＤ構成を再構築するリビルド又はコピーバック処理を実行するＲＡＩＤシステムのリビルド／コピーバック処理方法であって、
前記リビルド又はコピーバック処理の前記リードする処理と、前記ライトする処理とを分けて、実行するコントローラのＲＡＩＤ制御モジュールが、前記通常Ｉ／Ｏ要求が所定時間以内に到来したかを判定するステップと、
前記ＲＡＩＤ制御モジュールが、受け付けた前記通常Ｉ／Ｏ要求と、前記リビルド又はコピーバック処理の処理依頼とを、所定の比で、実行するステップと、
前記コントローラのリビルド又はコピーバックモジュールが、前記ＲＡＩＤ制御モジュールの前記判定結果から、前記通常Ｉ／Ｏ要求が所定時間以内に到来した場合には、前記リビルド又はコピーバック処理の前記リードする処理の依頼と、前記ライトする処理の依頼とのいずれかを、１回の処理依頼として、前記ＲＡＩＤ制御モジュールに要求し、前記通常Ｉ／Ｏ要求が所定時間以内に到来しない場合には、前記リビルド又はコピーバック処理の前記リードする処理の依頼と、前記ライトする処理の依頼の両方を、１回の処理依頼として、前記ＲＡＩＤ制御モジュールに要求するステップとを有し、
前記ＲＡＩＤ制御モジュールは、前記通常Ｉ／Ｏ要求が所定時間以内に到来しない場合には、１回の前記リビルド又はコピーバック処理として、前記リードする処理と前記ライトする処理の両方を実行する
ことを特徴とするＲＡＩＤシステムのリビルド／コピーバック処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のディスク装置に、データを冗長性を持って、格納するＲＡＩＤシステムにおいて、一部のディスク装置の障害時に、他のディスク装置からのデータで冗長構成を再構築するリビルド及びコピーバックするＲＡＩＤシステム、ＲＡＩＤコントローラ及びそのリビルド／コピーバック処理方法に関し、特に、リビルド及びコピーバックの処理時間を短縮するためのＲＡＩＤシステム、ＲＡＩＤコントローラ及びそのリビルド／コピーバック処理方法に関する。
【背景技術】
【０００２】
近年、様々なデータが電子化され、コンピュータ上で扱われるのに従い、データの処理を実行するホストコンピュータとは独立して、大量のデータを効率よく、高い信頼性で格納することのできるデータストレージ装置（外部記憶装置）の重要性が増加している。
【０００３】
このデータストレージ装置として、大量のディスクデバイス（例えば、磁気ディスク装置や光ディスク装置）と、これら大量のディスクデバイスを制御するディスクコントローラとから構成されるディスクアレイ装置が利用されている。このディスクアレイ装置は、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋ）構成を採用することにより、データの冗長化を実現し、信頼性を向上している。
【０００４】
このようなディスクアレイ装置において、ＲＡＩＤグループを構成するディスクデバイスが、故障して冗長性を失った場合に、冗長性回復が必要となる。図１４は、かかる冗長性回復のためのＲＡＩＤ５のリビルド機能の説明図である。活性保守を行なうため、ＲＡＩＤ５を構成する４台のディスクデバイス＃０，＃１，＃２，＃３に、予備ディスクデバイスＨＳ（Hot Spare Disk）を設ける。
【０００５】
このディスクデバイス群１６０は、一対のディスクコントローラ１１０，１２０に接続されている。各ディスクコントローラ１１０，１２０は、ディスクデバイス群１６０とのインタフェース制御するディスクアダプタ１４０と、制御ユニット１２０と、ホスト（図示せず）とのインタフェース制御するチャネルアダプタ１００とを有する。
【０００６】
ここで、ＲＡＩＤ５を構成する４台のディスクデバイスの内、ディスクデバイス＃０が故障した場合には、この故障ディスクデバイス＃０以外のディスクデバイス＃１、＃２、＃３のデータを、ディスクアダプタ１４０を介し、制御ユニット１２０のキャッシュメモリ又はデータバッファ（図示せず）に読み出し、これらのＸＯＲ演算を行い、冗長データを作成する。
【０００７】
そして、ディスクアダプタ１４０を介し、作成した冗長データを、予備ディスクデバイスＨＳに書き込み、冗長性を回復する。これをリビルド（Ｒｅｂｕｉｌｄ）機能という。尚、ＲＡＩＤ１の場合には、読み出したデータを、そのまま、予備ディスクデバイスＨＳに書き込む。
【０００８】
一方、図１５は、コピーバック（Ｃｏｐｙｂａｃｋ）機能の説明図である。図１４のＲｅｂｕｉｌｄが完了した状態から、故障したディスクデバイス＃０が、新しいディスクデバイスＮｅｗと交換された場合に、コピーバック処理を行なう。即ち、予備ディスクデバイスＨＳに書かれた冗長データを，本来のディスクデバイスＮｅｗに書き戻す処理である。
【０００９】
このようなＲｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋ処理を、ホストからのＩ／Ｏ要求を処理しながら、実行するため、これらの要求数のバランスをとる方法が提案されている（例えば、特許文献１）。
【００１０】
図１６に示すように、このＲｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋ処理では、仮に、通常Ｉ／Ｏ（ホストＩ／Ｏ，内部Ｉ／Ｏ）が、無い状態においても、元のディスクドライブ＃１からのリード処理が完了した後、ライト先のディスクドライブ＃２へのライト処理を実行していた。
【００１１】
即ち、Ｒｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋ処理を管理するＯＶＳＭモジュールは、ＲＡＩＤアクセスを実行するＲＡＩＤ制御モジュールに、例えば、１回分のコピーバックを依頼すると、ＲＡＩＤ制御モジュールは、ディスク＃１のリード完了後、続いて、ディスク＃２へのライトを実行する。そして、ＲＡＩＤ制御モジュールは、ディスク＃２からのライト完了を受け、ＯＶＳＭモジュールに、依頼されたコピーバック完了を報告し、ＯＶＳＭモジュールは、次のコピーバック依頼処理を実行していた。
【特許文献１】特開２００４−２９５８６０号公報（図１４）
【発明の開示】
【発明が解決しようとする課題】
【００１２】
このように、通常Ｉ／Ｏ処理を受け付けながら、Ｒｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋ処理するには、ディスクデバイス１台分の処理を一度に行うことは出来ない。このため、複数回に分けて、正常なディスクデバイスからデータをリードして、書き込み先ディスクデバイスへライトする動作を、ディスクデバイスのデータ量分の回数を実行していた。
【００１３】
例えば、Ｒｅｂｕｉｌｄでは、正常ディスクデバイスからデータをリードして、ＲＡＩＤ１（ミラーリング）以外は冗長データを作成して、予備ディスクデバイスＨＳや新規ディスクデバイスＮｅｗへライトするという動作を行い、Ｃｏｐｙｂａｃｋでは、予備ディスクＨＳからデータをリードして、新規ディスクデバイスＮｅｗへライトするという動作を行う。
【００１４】
従来は、これらの動作について、リードとライトは、一体と考え、リードとライトを一単位として、１回分のリード及びライトの処理が終了しないと、次のリード及びライト処理に進行できなかった。
【００１５】
このため、通常Ｉ／Ｏが無い場合に、常識的に考えられるディスクデバイスの性能と比較して、Ｒｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋの完了までの時間が長くなる。近年、データベース容量の増大や、ディスクデバイスの格納容量の増大により、Ｒｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋの完了までの時間も長期化している。
【００１６】
又、場合によっては、Ｒｅｂｕｉｌｄ／ｃｏｐｙｂａｃｋの操作を、システムメーカーのＣＥ（Ｃｕｓｔｏｍｅｒ  Ｅｎｇｉｎｅｅｒ）に依頼する場合があり、ＣＥが、これらの処理が完了するまで、機器の設置場所に居なければならず、ＣＥの処理待ち時間が増大しており、これら処理の時間短縮が要請される。
【００１７】
従って、本発明の目的は、通常Ｉ／Ｏ要求を処理しつつ、リビルド／コピーバックを処理する際に、リビルド／コピーバック処理の性能を向上するためのＲＡＩＤシステム、ＲＡＩＤコントローラ及びそのリビルド／コピーバック処理方法を提供することにある。
【００１８】
又、本発明の他の目的は、通常Ｉ／Ｏ要求と、リビルド／コピーバックをバランス処理する際に、リビルド／コピーバックの完了時間を短縮するためのＲＡＩＤシステム、ＲＡＩＤコントローラ及びそのリビルド／コピーバック処理方法を提供することにある。
【００１９】
更に、本発明の他の目的は、通常Ｉ／Ｏ要求の有無を判定し、リビルド／コピーバック処理を高速に実行するためのＲＡＩＤシステム、ＲＡＩＤコントローラ及びそのリビルド／コピーバック処理方法を提供することにある。
【課題を解決するための手段】
【００２０】
この目的の達成のため、本発明は、ホストから依頼されたＩ／Ｏ要求に応じて、接続されたディスク装置をアクセスし、Ｉ／Ｏ要求を実行するＲＡＩＤシステムにおいて、ＲＡＩＤを構成する複数の前記ディスク装置と、前記複数のディスク装置と、パスで接続され、前記ホストからのＩ／Ｏ要求を含む通常Ｉ／Ｏ要求を実行しながら、前記複数のディスク装置の１つが故障した場合に、故障したディスク装置以外のディスク装置のデータを前記パスを介しリードする処理を行い、予備ディスク装置又は新ディスク装置に前記リードしたデータを前記パスを介しライトする処理を複数回に別けて実行して、ＲＡＩＤ構成を再構築するリビルド又はコピーバック処理を実行するコントローラとを有し、前記コントローラは、前記リビルド又はコピーバック処理の前記リードする処理と、前記ライトする処理とを分けて、実行するととともに、前記通常Ｉ／Ｏ要求が所定時間以内に来ないかを判定し、受け付けた前記通常Ｉ／Ｏ要求と、前記リビルド又はコピーバック処理の処理依頼とを、所定の比で、実行するＲＡＩＤ制御モジュールと、前記ＲＡＩＤ制御モジュールの前記判定結果から、前記通常Ｉ／Ｏ要求が所定時間以内に到来した場合には、前記リビルド又はコピーバック処理の前記リードする処理の依頼と、前記ライトする処理の依頼とのいずれかを、１回の処理依頼として、前記ＲＡＩＤ制御モジュールに要求し、前記通常Ｉ／Ｏ要求が所定時間以内に到来しない場合には、前記リビルド又はコピーバック処理の前記リードする処理の依頼と、前記ライトする処理の依頼との両方を、１回の処理依頼として、前記ＲＡＩＤ制御モジュールに要求するリビルド又はコピーバックモジュールとを有し、前記ＲＡＩＤ制御モジュールは、前記通常Ｉ／Ｏ要求が所定時間以内に到来しない場合には、１回の前記リビルド又はコピーバック処理として、前記リードする処理と前記ライトする処理の両方を実行する。
【００２１】
又、本発明は、ホストから依頼されたＩ／Ｏ要求に応じて、接続されたディスク装置をアクセスし、Ｉ／Ｏ要求を実行するＲＡＩＤコントローラにおいて、前記ホストとのインタフェース制御を行う第１のインタフェース回路と、ＲＡＩＤを構成する複数の前記ディスク装置とのインタフェース制御を行う第２のインタフェース回路と、前記ホストからのＩ／Ｏ要求を含む通常Ｉ／Ｏ要求を実行しながら、前記複数のディスク装置の１つが故障した場合に、故障したディスク装置以外のディスク装置のデータを前記パスを介しリードする処理を行い、予備ディスク装置又は新ディスク装置に前記リードしたデータを前記パスを介しライトする処理を複数回に別けて実行して、ＲＡＩＤ構成を再構築するリビルド又はコピーバック処理を実行するコントローラとを有し、前記コントローラは、前記リビルド又はコピーバック処理の前記リードする処理と、前記ライトする処理とを分けて、実行するととともに、前記通常Ｉ／Ｏ要求が所定時間以内に来ないかを判定し、受け付けた前記通常Ｉ／Ｏ要求と、前記リビルド又はコピーバック処理の処理依頼とを、所定の比で、実行するＲＡＩＤ制御モジュールと、前記ＲＡＩＤ制御モジュールの前記判定結果から、前記通常Ｉ／Ｏ要求が所定時間以内に到来した場合には、前記リビルド又はコピーバック処理の前記リードする処理の依頼と、前記ライトする処理の依頼とのいずれかを、１回の処理依頼として、前記ＲＡＩＤ制御モジュールに要求し、前記通常Ｉ／Ｏ要求が所定時間以内に到来しない場合には、前記リビルド又はコピーバック処理の前記リードする処理の依頼と、前記ライトする処理の依頼の両方を、１回の処理依頼として、前記ＲＡＩＤ制御モジュールに要求するリビルド又はコピーバックモジュールとを有し、前記ＲＡＩＤ制御モジュールは、前記通常Ｉ／Ｏ要求が所定時間以内に到来しない場合には、１回の前記リビルド又はコピーバック処理として、前記リードする処理と前記ライトする処理の両方を実行する。
【００２２】
又、本発明は、ホストから依頼されたＩ／Ｏ要求を含む通常Ｉ／Ｏ要求に応じて、接続されたディスク装置をアクセスし、通常Ｉ／Ｏ要求を実行しながら、複数のディスク装置の１つが故障した場合に、故障したディスク装置以外のディスク装置のデータを前記パスを介しリードする処理を行い、予備ディスク装置又は新ディスク装置に前記リードしたデータを前記パスを介しライトする処理を複数回に別けて実行して、ＲＡＩＤ構成を再構築するリビルド又はコピーバック処理を実行するＲＡＩＤシステムのリビルド／コピーバック処理方法であって、前記リビルド又はコピーバック処理の前記リードする処理と、前記ライトする処理とを分けて、実行するコントローラのＲＡＩＤ制御モジュールが、前記通常Ｉ／Ｏ要求が所定時間以内に到来したかを判定するステップと、前記ＲＡＩＤ制御モジュールが、受け付けた前記通常Ｉ／Ｏ要求と、前記リビルド又はコピーバック処理の処理依頼とを、所定の比で、実行するステップと、前記コントローラのリビルド又はコピーバックモジュールが、前記ＲＡＩＤ制御モジュールの前記判定結果から、前記通常Ｉ／Ｏ要求が所定時間以内に到来した場合には、前記リビルド又はコピーバック処理の前記リードする処理の依頼と、前記ライトする処理の依頼とのいずれかを、１回の処理依頼として、前記ＲＡＩＤ制御モジュールに要求し、前記通常Ｉ／Ｏ要求が所定時間以内に到来しない場合には、前記リビルド又はコピーバック処理の前記リードする処理の依頼と、前記ライトする処理の依頼の両方を、１回の処理依頼として、前記ＲＡＩＤ制御モジュールに要求するステップとを有し、前記ＲＡＩＤ制御モジュールは、前記通常Ｉ／Ｏ要求が所定時間以内に到来しない場合には、１回の前記リビルド又はコピーバック処理として、前記リードする処理と前記ライトする処理の両方を実行する。
【００２３】
更に、本発明では、好ましくは、前記コントローラは、通常Ｉ／Ｏ要求の処理完了時刻を、前記通常Ｉ／Ｏ要求の処理完了毎に記録し、前記処理完了時刻と現在時刻とを比較して、通常Ｉ／Ｏ要求が所定時間来ないかを判定する。
【００２４】
更に、本発明では、好ましくは、前記コントローラは、前記通常Ｉ／Ｏ要求と前記リビルド／コピーバックの１回の要求とをバランスして、実行するとともに、前記リビルド／コピーバックの並列のライト及びリード完了に応じて、次のリビルド／コピーバックのライト及びリード要求を発行する。
【００２５】
更に、本発明では、好ましくは、前記コントローラは、前記リビルド／コピーバック処理の進捗状況を管理する進捗テーブルを有し、前記進捗テーブルに従い、リビルド又はコピーバック処理の１回のリード要求を作成し、且つ前記リビルド／コピーバックの並列のライト及びリード完了に応じて、前記進捗テーブルを更新する。
【００２６】
更に、本発明では、好ましくは、前記コントローラは、前記リビルド／コピーバックの要求を、リードまでの処理と、ライトからの処理に分割して、実行するＲＡＩＤ制御モジュールと、前記リビルド／コピーバック処理のリード要求とライト要求を個別に、前記ＲＡＩＤ制御モジュールに発行するリビルド／コピーバックモジュールとを有する。
【００２７】
更に、本発明では、好ましくは、前記リビルド／コピーバックモジュールは、通常Ｉ／Ｏ要求が所定時間到来しない場合と、前記通常Ｉ／Ｏ要求が所定時間内に到来した場合との間の遷移を判定し、前記判定結果に応じて、前記リビルド又はコピーバックのリード及びライト要求を並列に発行する。
【００２８】
更に、本発明では、好ましくは、前記コントローラは、前記通常Ｉ／Ｏ要求が所定時間内に到来した場合から前記通常Ｉ／Ｏ要求が所定時間到来しない場合に遷移したことに応じて、前記リビルド又はコピーバック処理の１回のリード要求を発行し、前記リード要求の処理完了に応じて、前記リビルド又はコピーバックのリード及びライト要求を並列に発行する。
【００２９】
更に、本発明では、好ましくは、前記コントローラは、前記ＲＡＩＤを構成する前記複数のディスク装置の１つが故障した場合に、故障したディスク装置以外のディスク装置のデータをリードし、予備ディスク装置にデータをライトする動作を複数回に別けて実行して、ＲＡＩＤ構成を再構築するリビルド処理を実行した後、前記予備ディスク装置のデータをリードし、前記故障したディスク装置の代わりに設けられた新ディスク装置にデータをライトする動作を複数回に別けて実行して、コピーバック処理を実行する。
【発明の効果】
【００３０】
本発明では、リビルド／コピーバックでは、一のディスク装置からリードし、別のディスク装置へライトするため、通常Ｉ／Ｏを実行しながら、実行するには、通常Ｉ／Ｏの有無を判定し、通常Ｉ／Ｏが無いことに応じて、これらの別々のディスクドライブへの１回のリードとライトを、それぞれ同時に行う。これにより、リビルド／コピーバック時間の短縮を図る。又、通常Ｉ／Ｏが有る場合には、通常Ｉ／Ｏと、１回のリビルド／コピーバックのリードかライトの一方を実行するため、通常Ｉ／Ｏの実行を阻害しない程度に、リビルド／コピーバックを実行でき、よりリビルド／コピーバック時間の短縮を可能とする。
【発明を実施するための最良の形態】
【００３１】
以下、本発明の実施の形態を、ディスクアレイ装置（ＲＡＩＤシステム）、スレッド構成、リビルド／コピーバック処理、リビルド／コピーバックの並列処理、他の実施の形態の順で説明する。
【００３２】
＊＊ディスクアレイ装置＊＊
図１は、本発明の一実施の形態のディスクアレイ装置の構成図、図２は、図１のコントロールモジュールの構成図である。
【００３３】
図１は、２台のコントロールモジュールを持つ小規模なディスクアレイ装置を例に示すが、４台の中規模のディスクアレイ装置、８台の大規模のディスクアレイ装置も同様である。
【００３４】
図１に示すように、ディスクアレイ装置は、データを保持する複数のディスクデバイスを搭載する複数のディスクエンクロージャ２−０〜２−３と、図示しないホストコンピュータ（データ処理装置）と、複数のディスクエンクロージャ２−０〜２−３との間に、配置された複数（ここでは２つ）の制御モジュール（ＲＡＩＤコントローラ）４−０〜４−１とを有する。
【００３５】
制御モジュール４−０〜４−１のそれぞれは、コントローラ４０と、チャネルアダプタ（第１インタフェース部；図中ＣＡと表記）４１と、ディスクアダプタ（第２インタフェース部；図中ＤＡと表記）４２ａ，４２ｂと、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）エンジン（通信部；図中ＤＭＡと表記）４３とを有する。
【００３６】
図１及び図２により、制御モジュール４−０〜４−１を説明する。コントローラ４０は、ホストコンピュータからの処理要求（リード要求もしくはライト要求）に基づいて、リード／ライト処理を行なうものであり、メモリ４０ｂと制御部４０ａとを備える。
【００３７】
メモリ４０ｂは、ディスクエンクロージャ２−０〜２−３の複数のディスクに保持されたデータの一部を保持する、所謂、複数のディスクに対するキャッシュの役割を果たすキャッシュ領域と、その他のワーク領域とを有する。
【００３８】
制御部４０ａは、メモリ４０ｂ，チャネルアダプタ４１、デバイスアダプタ４２、ＤＭＡ４３の制御を行う。このため、１つ又は複数（図では、２つ）のＣＰＵ４００，４１０と、メモリコントローラ４２０とを有する。メモリコントローラ４２０は、メモリのリード／ライトを制御し、且つパスの切り替えを行う。
【００３９】
メモリコントローラ４２０は、メモリバス４３４を介しメモリ４０ｂと接続し、ＣＰＵバス４３０，４３２を介しＣＰＵ４００，４１０と接続し、更に、メモリコントローラ４２０は、４レーンの高速シリアルバス（例えば、ＰＣＩ−Ｅｘｐｒｅｓｓ）４４０，４４２を介しディスクアダプタ４２ａ，４２ｂに接続する。
【００４０】
同様に、メモリコントローラ４２０は、４レーンの高速シリアルバス（例えば、ＰＣＩ−Ｅｘｐｒｅｓｓ）４４３，４４４，４４５，４４６を介しチャネルアダプタ４１（ここでは、４つのチャネルアダプタ４１ａ，４１ｂ、４１ｃ，４１ｄ）に接続し、４レーンの高速シリアルバス（例えば、ＰＣＩ−Ｅｘｐｒｅｓｓ）４４７，４４８を介しＤＭＡ４３（ここでは、２つのＤＭＡ４３−ａ，４３−ｂ）に接続する。
【００４１】
このＰＣＩ−Ｅｘｐｒｅｓｓ等の高速シリアルバスは、パケットで通信し、且つシリアルバスを複数レーン設けることにより、信号線本線を減らしても、遅延の少ない、速い応答速度で、所謂、低レイテンシで通信することができる。
【００４２】
チャネルアダプタ４１ａ〜４１ｄは、ホストコンピュータに対するインタフェースであり、チャネルアダプタ４１ａ〜４１ｄは、それぞれ異なるホストコンピュータと接続される。また、チャネルアダプタ４１ａ〜４１ｄは、それぞれ対応するホストコンピュータのインタフェース部に、バス、例えば、ファイバチャネル（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のリビルド、ＲＡＩＤ1及びＲＡＩＤ５のコピーバックの例であり、図１０は、ＲＡＩＤ５のリビルド処理の例である。
【０１０１】
図９に示すように、ＲＡＩＤ制御モジュール６３２のリードまでの処理６３２−３は、排他権を設定し（Ｓ２１）、次に、メモリ４０ｂにデータバッファを獲得する（Ｓ２２）。そして、ディスクのＡＣＢ（Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｂｌｏｃｋ）を獲得し（Ｓ２３）、ＦＣループのＦＣセグメントを獲得する（Ｓ２４）。これにより、ドライバ６３０、ディスクアダプタ４２を介し、当該ディスクドライブをリードアクセスし、リードデータを獲得したデータバッファに格納する（Ｓ２５）。
【０１０２】
そして、ＦＣセグメントを解放し（Ｓ２６）、ディスクのＡＣＢを解放する（Ｓ２７）。その後、ＲＡＩＤ制御モジュールのリード処理６３２−３は、ＯＶＳＭモジュール６３４に、リード完了を報告する。
【０１０３】
一方、ＲＡＩＤ制御モジュール６３２のライトからの処理６３２−４は、ディスクのＡＣＢ（Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｂｌｏｃｋ）を獲得し（Ｓ３０）、ＦＣループのＦＣセグメントを獲得する（Ｓ３１）。これにより、ドライバ６３０、ディスクアダプタ４２を介し、当該ディスクドライブをライトアクセスし、メモリ４０ｂのデータバッファのリードデータしたデータをディスクに書き込む（Ｓ３２）。
【０１０４】
そして、ＦＣセグメントを解放し（Ｓ３３）、ディスクのＡＣＢを解放する（Ｓ３４）。その後、データバッファを解放し（Ｓ３５）、排他権を解除し（Ｓ３６）、ＯＶＳＭモジュール６３４に、ライト完了を報告する。
【０１０５】
又、図１０のＲＡＩＤ５のリビルド処理の場合には、図１４で説明したように、リード処理６３２−３において、ＸＯＲによるデータのＲｅｇｅｎｅｒａｔｉｏｎが必要になるので、Ｓ２５のディスクリードは、図１４の複数（３つの）ディスクドライブ＃１，＃２，＃３に行い、且つディスクのＡＣＢ解放後、３つのデータから冗長データを作成するＸＯＲ処理（Ｓ２８）を行い、ＯＶＳＭモジュール６３４に、リード完了を報告する。ライト処理６３２−４は、図９と同様である。
【０１０６】
また、データバッファの獲得、解放は、上記Ｒｅｇｅｎｅｒａｔｉｏｎのためのリード用のものと、Ｒｅｇｅｎｅｒａｔｉｏｎの結果であるライトすべきものとの両方を、同時に獲得し、且つ解放する。「ライトから」の処理６３２−４では、Ｒｅｇｅｎｅｒａｔｉｏｎのためのリードしたデータは不要となるが、保持しつづける。これにより、解放処理を省き、処理を高速化する。
【０１０７】
これに対し、ＯＶＳＭモジュール６３４が、図５のステップＳ２０のリビルド／コピーバック処理の進捗を更新するのは、「ライトから」の処理が完了した時となる。
【０１０８】
更に、具体的にリビルド／コピーバックの並列処理を説明する。この並列処理を用いた場合、動的と静的との変化時に、リビルド／コピーバックの動作が切り替わることになる。このため、ＯＶＳＭモジュール６３４は、ＲＡＩＤ制御モジュール６３２からの応答時に、次の処理をどのようにするかを決定する。
【０１０９】
図１１は、リードとライトを分離した静的状態と動的状態の状態遷移図、図１２は、ＲＡＩＤ制御モジュールへのＯＶＳＭモジュールの要求処理フロー図、図１３は、ＯＶＳＭモジュールのＲＡＩＤ制御モジュールからの応答時の処理フロー図である。
【０１１０】
先ず、リビルド／コピーバック処理を、リードまでの処理と、ライトからの処理を分割したため、状態遷移で考えると、ＯＶＳＭモジュール６３４が決定すべき動的状態と静的状態は、図１１のように、５つ存在する。
【０１１１】
即ち、前回動的状態で、リードからとライトまでの両方をおこなった動的通常状態Ａ，前回動的状態で、ライトからを行なった動的「ライトから」の状態Ｂ，前回静的状態で「リードまで」を行なった静的「リードまで」の状態Ｃ、前回静的状態でリードとライトの両方を行なった静的「リードまで」、「ライトから」の状態Ｄ，前回静的状態でライトまでを行なった静的「ライトから」の状態Ｅである。
【０１１２】
先ず、デフォルト状態（図３のシステム制御モジュール６０８のＲＡＩＤ  Ｒｅｃｏｖｅｒｙモジュール（図示せず）からＯＶＳＭモジュールが起動された状態）は、動的状態Ａである。以下、ＡＣＢは，処理を制御するものであり、並列した処理を行うためには平列数分だけＡＣＢを用意するものとする。又、ＯＶＳＭモジュールが、Ｒｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋを行おうとしている時点で、既にＡＣＢを一つ獲得し、動作している状態にある。
【０１１３】
（１）前回動的状態（Ｒｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋは通常）Ａから今回動的状態Ａへ遷移するケースでは、前回と同様に、次の処理範囲(動的時サイズ)を設定し、ＲＡＩＤ制御モジュール６３２へ通常の要求（リードに続きライトを要求）を行う。ただし、リビルド／コピーバックの次の処理範囲が無い場合には、該当ＬＵ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ）のＲｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋ完了となる。
【０１１４】
（２）前回動的状態（Ｒｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋの「ライトから」だけ）Ｂから今回動的状態Ａへ遷移するケースでは、もし、ＡＣＢを獲得している状態であれば、これを解放する。そして、（１）と同様に、次の処理範囲(動的時サイズ)を設定し、ＲＡＩＤ制御モジュール６３２へ通常の要求を行う。同様に、次の処理範囲が無い場合には、上記のＡＣＢ解放後に，該当ＬＵのリビルド／コピーバック完了となる。
【０１１５】
（３）前回動的状態（Ｒｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋは通常）Ａから今回静的状態Ｃへ遷移するケースでは、次の処理範囲(静的時サイズ)を設定し、ＲＡＩＤ制御モジュール６３２へ「リードまで」の要求を行う。図８の初回の処理に当たる。ただし、次の処理範囲が無い場合には、該当ＬＵのリビルド／コピーバック完了となる。
【０１１６】
（４）前回動的状態（Ｒｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋは「ライトだけ」）Ｂから今回静的状態Ｃへ遷移するケースでは、もし、ＡＣＢを獲得している状態であれば、これを解放する。そして、次の処理範囲(静的時サイズ)を設定し、ＲＡＩＤ制御モジュール６３２へ「リードまで」の要求を行う。図８の初回の処理に当たる。ただし、次の処理範囲が無い場合には、該当ＬＵのリビルド／コピーバック完了となる。
【０１１７】
（５）前回静的状態（Ｒｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋは、「リードまで」だけ）Ｃから今回動的状態Ｂへ遷移するケースでは、同じ処理範囲について、ＲＡＩＤ制御モジュール６３２へ「ライトから」の要求を行う。
【０１１８】
（６）前回静的状態（Ｒｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋは、「ライトから」と「リードまで」の両方）Ｄから今回動的状態Ｂのケースでは、ライト及びリードの両ＡＣＢが返ってくるまで待ち、「リードまで」だったＡＣＢについては、同じ処理範囲について、ＲＡＩＤ制御モジュール６３２へ「ライトから」の要求を行う。又、「ライトから」だったＡＣＢについては、保留とする。
【０１１９】
（７）前回静的状態（Ｒｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋは，「ライトから」だけ）Ｅから今回動的状態Ｂのケースでは、基本的にリビルド／コピーバックの次の処理が無い場合のみであり、ＡＣＢ解放後に該当ＬＵのリビルド／コピーバック完了となる。図８の最終処理に相当する。
【０１２０】
（８）前回静的状態（Ｒｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋは「リードまで」だけ）Ｃから今回静的状態Ｄへ遷移するケースでは、内部ＡＣＢを一つ獲得し、獲得したＡＣＢと元々あったＡＣＢとリンク張っておく。内部ＡＣＢ獲得失敗時には、動的状態Ａ，Ｂと同様の動作とする。そして、まず、「リードまで」だったＡＣＢ（元々あったＡＣＢ）については、同じ処理範囲について、ＲＡＩＤ制御モジュール６３２へ「ライトから」の要求を行う。次に獲得したＡＣＢについては、次の処理範囲(静的時サイズ)を設定し，ＲＡＩＤ制御モジュール６３２へ「リードまで」の要求を行う。ただし、次の処理範囲が無い場合には、ＡＣＢの獲得は行わずに、ＲＡＩＤ制御モジュール６３２へ「ライトから」の要求のみを行う。図８の２回目以降の並列処理に相当する。
【０１２１】
（９）前回静的状態（Ｒｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋは、「ライトから」と「リードまで」の両方）Ｄから今回静的状態Ｄへ遷移するケースでは、リード及びライトの両ＡＣＢが返ってくるまで待ち、前回と同様に、「リードまで」だったＡＣＢについては、同じ処理範囲について、ＲＡＩＤ制御モジュール６３２へ「ライトから」の要求を行う。次に、「ライトから」だったＡＣＢについては、次の処理範囲(静的時サイズ)を設定し、ＲＡＩＤ制御モジュール６３２へ「リードまで」の要求を行う。ただし、次の処理範囲が無い場合には、ＲＡＩＤ制御へ「ライトから」の要求のみを行う。
【０１２２】
（１０）前回静的状態（Ｒｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋが、「ライトから」だけ）Ｅから今回静的状態Ｄのケースは、基本的に次の処理が無い場合のみである。次の処理範囲が無い場合には、ＡＣＢ解放後に，該当ＬＵのリビルド／コピーバック完了となる。
【０１２３】
又、ＲＡＩＤ制御モジュール６３２は、図９及び図１０に示したように、各種エラーリカバリのために、「リードまで」と「ライトから」とは別に、「リードまで」で獲得した資源(排他制御/データバッファ)を解放するだけの処理として、「資源解放のみ」を用意する。
【０１２４】
このように、リビルド／コピーバック処理を、リードまでの処理と、ライトからの処理を分割しても、動的状態と静的状態との間に遷移が生じても、ライト、リードの並列処理を継続できる。
【０１２５】
次に、これらを実現するためのＲＡＩＤ制御モジュールへのＯＶＳＭモジュールの要求処理を、図１２により説明する。
【０１２６】
（Ｓ４０）ＯＶＳＭモジュール６３４は、ＲＡＩＤ制御モジュール６３２からのＩ／Ｏ有無確認応答から動的状態、静的状態を確認している。先ず、前回動的通常状態であるかを判定する。
【０１２７】
（Ｓ４２）ＯＶＳＭモジュール６３４は、前回動的通常状態であれば、今回（現時点）は、動的状態か静的状態かを判定する。今回動的状態なら、（１）と同様に、次の処理範囲(動的時サイズ)を設定し、ＲＡＩＤ制御モジュール６３２へ通常の要求（リードに続きライトを要求）を行う。ただし、リビルド／コピーバックの次の処理範囲が無い場合には、該当ＬＵ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ）のＲｅｂｕｉｌｄ／Ｃｏｐｙｂａｃｋ完了となる。一方、今回静的状態に遷移した場合には、（３）と同様に、次の処理範囲(静的時サイズ)を設定し、ＲＡＩＤ制御モジュール６３２へ「リードまで」の要求を行う。図８の初回の処理に当たる。ただし、次の処理範囲が無い場合には、該当ＬＵのリビルド／コピーバック完了となる。そして、要求処理を終了する。
【０１２８】
（Ｓ４４）ＯＶＳＭモジュール６３４は、動的通常状態でなかったら、動的「ライトまで」の状態かを判定する。
【０１２９】
（Ｓ４６）ＯＶＳＭモジュール６３４は、前回動的「ライトから」の状態であれば、ＡＣＢが、２個あるかを判定し、２個あれば、一方を解放する。次に、今回（現時点）は、動的状態か静的状態かを判定する。今回動的状態なら、（２）と同様に、動的通常状態へ遷移し、次の処理範囲(動的時サイズ)を設定し、ＲＡＩＤ制御モジュール６３２へ通常の要求（リードに続きライトを要求）を行う。一方、今回静的状態に遷移した場合には、（４）と同様に、次の処理範囲(静的時サイズ)を設定し、ＲＡＩＤ制御モジュール６３２へ「リードまで」の要求を行う。そして、要求処理を終了する。
【０１３０】
（Ｓ４８）ＯＶＳＭモジュール６３４は、動的「ライトから」の状態でなかったら、静的「リードまで」の状態Ｃかを判定する。
【０１３１】
（Ｓ５０）ＯＶＳＭモジュール６３４は、前回静的「リードまで」の状態であれば、今回（現時点）は、動的状態か静的状態かを判定する。今回動的状態なら、（５）と同様に、動的「ライトから」の状態へ遷移し、ＲＡＩＤ制御モジュール６３２へ「ライトから」の要求を行う。そして、要求処理を終了する。
【０１３２】
（Ｓ５２）一方、今回静的状態に遷移した場合には、最終処理範囲かを判定する。最終処理範囲であれば、静的「ライトから」の状態から静的状態Ｄへ遷移し、ＲＡＩＤ制御モジュール６３２へ「ライトから」の要求を行う。逆に、最終処理範囲でなければ、ＯＶＳＭモジュール６３４は、ＡＣＢを１個獲得し、静的「リードまで」の状態から静的状態Ｄへ遷移し、ＲＡＩＤ制御モジュール６３２に、リード済み範囲の「ライトから」の要求を行い、次の処理範囲(動的時サイズ)を設定し、ＲＡＩＤ制御モジュール６３２へリードまでの要求を行う。そして、要求処理を終了する。
【０１３３】
（Ｓ５４）ＯＶＳＭモジュール６３４は、静的「リードまで」の状態でなかったら、静的「リードまで」、「ライトから」の状態Ｄかを判定する。
【０１３４】
（Ｓ５６）ＯＶＳＭモジュール６３４は、前回静的「リードまで」、「ライトから」の状態Ｄであれば、今回（現時点）は、動的状態か静的状態かを判定する。今回動的状態なら、（５）と同様に、動的「ライトから」の状態へ遷移し、ＲＡＩＤ制御モジュール６３２へ「ライトから」の要求を行う。又、未使用のＡＣＢは、一時保留する。そして、要求処理を終了する。
【０１３５】
（Ｓ５８）一方、今回静的状態であれば、最終処理範囲かを判定する。最終処理範囲であれば、静的「ライトから」の状態に遷移し、ＲＡＩＤ制御モジュール６３２へ「ライトから」の要求を行う。又、未使用のＡＣＢは、一時保留する。逆に、最終処理範囲でなければ、ＯＶＳＭモジュール６３４は、静的状態Ｄのままとし、ＲＡＩＤ制御モジュール６３２に、リード済み範囲の「ライトから」の要求を行い、次の処理範囲(動的時サイズ)を設定し、ＲＡＩＤ制御モジュール６３２へリードまでの要求を行う。そして、要求処理を終了する。
【０１３６】
（Ｓ６０）ＯＶＳＭモジュール６３４は、静的「リードまで」、「ライトから」の状態Ｄでなかったら、エラー処理する。即ち、静的「ライトから」の状態Ｄからの遷移はありえない。そして、要求処理を終了する。
【０１３７】
次に、図１３により、ＯＶＳＭモジュールのＲＡＩＤ制御モジュールからの応答時の処理を説明する。
【０１３８】
（Ｓ７０）ＲＡＩＤ制御モジュール６３２から応答を受けた時に、ＯＶＳＭモジュール６３４は、静的「リードまで」、「ライトから」の状態Ｄであったかを判定する。
【０１３９】
（Ｓ７２）ＯＶＳＭモジュール６３４は、静的「リードまで」、「ライトから」の状態Ｄであったなら、ＲＡＩＤ制御モジュール６３２から「リードまで」と「ライトから」の両方の完了応答があったかを判定する。両方の応答がないと、両方の応答があるまで待つ。一方、両方の応答があると判定すると、進捗情報４１０を更新する。
【０１４０】
（Ｓ７４）そして、次のＲＡＩＤ制御モジュール６３４への要求を実施する（図１２参照）。
【０１４１】
（Ｓ７６）ＯＶＳＭモジュール６３４は、静的「リードまで」、「ライトから」の状態Ｄでなかったと判定すると、ＯＶＳＭモジュール６３４は、静的「リードまで」の状態Ｃであったかを判定する。ＯＶＳＭモジュール６３４は、静的「リードまで」の状態Ｃであったと判定すると、ステップＳ７４に進む。
【０１４２】
（Ｓ７８）ＯＶＳＭモジュール６３４は、静的「リードまで」の状態Ｃでなかったと判定すると、ＯＶＳＭモジュール６３４は、動的「ライトから」の状態Ｂであったかを判定する。ＯＶＳＭモジュール６３４は、動的「ライトから」の状態Ｂでなかったと判定すると、ＯＶＳＭモジュール６３４は、動的通常状態Ａであったかを判定する。
【０１４３】
（Ｓ８０）ＯＶＳＭモジュール６３４は、動的「ライトから」の状態Ｂ，動的通常状態Ａのいずれでもないと判定すると、進捗情報４１０を更新し、最終処理範囲かを判定する。最終処理範囲でなければ、ステップＳ７４に進む。
【０１４４】
（Ｓ８２）一方、最終処理範囲であれば、ＡＣＢが、２個あれば、一方を解放し、該当ＲＬＵの処理を完了する。
【０１４５】
（Ｓ８４）ＯＶＳＭモジュール６３４は、動的通常状態Ａでなかったと判定すると、ＯＶＳＭモジュール６３４は、静的「ライトから」の状態Ｅであったかを判定する。ＯＶＳＭモジュール６３４は、静的「ライトから」の状態Ｅであったと判定すると、進捗情報４１０を更新し、ステップＳ８２に進む。一方、ＯＶＳＭモジュール６３４は、静的「ライトから」の状態でなければ、終了する。
【０１４６】
このように、ＯＶＳＭモジュール６３４に、前述の処理を行う状態遷移判定モジュール６３４−５を設けるにより、ＲＡＩＤ制御モジュール６３２の変更を最小にできる。即ち、図９及び図１０で説明したように、リードまでの処理と、ライトからの処理を分割するだけで良い。
【０１４７】
又、リビルド／コピーバック処理を、リードまでの処理と、ライトからの処理を分割し、動的状態と静的状態との間に遷移が生じても、ライト、リードの並列処理を継続できる。
【０１４８】
＊＊他の実施の形態＊＊
前述した実施の形態では、図１のような構成のディスクアレイ装置で説明したが、これ以外の構成のディスクアレイ装置に適用できる。又、物理ディスクは、磁気ディスク、光ディスク、光磁気ディスク、各種のストレージデバイスを適用できる。
【０１４９】
更に、通常Ｉ／Ｏの有無の監視時間を５秒としたが、他の監視時間であっても良く、Ｉ／Ｏ有無の判定を、ＯＶＳＭモジュールで実行することもできる。又、処理サイズの変更を、デフォルト値の２倍としたが、１．５倍等他の倍数を利用でき、且つ通常Ｉ／Ｏの有無により、処理サイズを別々に設けても良い。
【０１５０】
しかも、状態を５つに分け、遷移を説明したが、例えば、動的「ライトから」の状態を省き、状態を簡略化することもできる。
【０１５１】
以上、本発明を実施の形態により説明したが、本発明の趣旨の範囲内において、本発明は、種々の変形が可能であり、本発明の範囲からこれらを排除するものではない。
【０１５２】
（付記１）ホストから依頼されたＩ／Ｏ要求に応じて、接続されたディスク装置をアクセスし、Ｉ／Ｏ要求を実行するＲＡＩＤシステムにおいて、ＲＡＩＤを構成する複数の前記ディスク装置と、前記複数のディスク装置の１つが故障した場合に、故障したディスク装置以外のディスク装置のデータをリードし、予備ディスク装置又は新ディスク装置にデータをライトする動作を複数回に別けて実行して、ＲＡＩＤ構成を再構築するリビルド又はコピーバック処理を実行するコントローラとを有し、前記コントローラは、前記ホストからのＩ／Ｏ要求を含む通常Ｉ／Ｏ要求が所定時間来ないかを判定し、通常Ｉ／Ｏ要求が所定時間到来しない場合には、前記リビルド又はコピーバックのリード及びライト処理を並列に実行することを特徴とするＲＡＩＤシステム。
【０１５３】
（付記２）前記コントローラは、通常Ｉ／Ｏ要求の処理完了時刻を、前記通常Ｉ／Ｏ要求の処理完了毎に記録し、前記処理完了時刻と現在時刻とを比較して、通常Ｉ／Ｏ要求が所定時間来ないかを判定することを特徴とする付記１のＲＡＩＤシステム。
【０１５４】
（付記３）前記コントローラは、前記通常Ｉ／Ｏ要求と前記リビルド／コピーバックの１回の要求とをバランスして、実行するとともに、前記リビルド／コピーバックの並列のライト及びリード完了に応じて、次のリビルド／コピーバックのライト及びリード要求を発行することを特徴とする付記１のＲＡＩＤシステム。
【０１５５】
（付記４）前記コントローラは、前記リビルド／コピーバック処理の進捗状況を管理する進捗テーブルを有し、前記進捗テーブルに従い、リビルド又はコピーバック処理の１回のリード要求を作成し、且つ前記リビルド／コピーバックの並列のライト及びリード完了に応じて、前記進捗テーブルを更新することを特徴とする付記１のＲＡＩＤシステム。
【０１５６】
（付記５）前記コントローラは、前記リビルド／コピーバックの要求を、リードまでの処理と、ライトからの処理に分割して、実行するＲＡＩＤ制御モジュールと、前記リビルド／コピーバック処理のリード要求とライト要求を個別に、前記ＲＡＩＤ制御モジュールに発行するリビルド／コピーバックモジュールとを有することを特徴とする付記３のＲＡＩＤシステム。
【０１５７】
（付記６）前記リビルド／コピーバックモジュールは、通常Ｉ／Ｏ要求が所定時間到来しない場合と、前記通常Ｉ／Ｏ要求が所定時間内に到来した場合との間の遷移を判定し、前記判定結果に応じて、前記リビルド又はコピーバックのリード及びライト要求を並列に発行することを特徴とする付記５のＲＡＩＤシステム。
【０１５８】
（付記７）前記コントローラは、前記通常Ｉ／Ｏ要求が所定時間内に到来した場合から前記通常Ｉ／Ｏ要求が所定時間到来しない場合に遷移したことに応じて、前記リビルド又はコピーバック処理の１回のリード要求を発行し、前記リード要求の処理完了に応じて、前記リビルド又はコピーバックのリード及びライト要求を並列に発行することを特徴とする付記１のＲＡＩＤシステム。
【０１５９】
（付記８）前記コントローラは、前記ＲＡＩＤを構成する前記複数のディスク装置の１つが故障した場合に、故障したディスク装置以外のディスク装置のデータをリードし、予備ディスク装置にデータをライトする動作を複数回に別けて実行して、ＲＡＩＤ構成を再構築するリビルド処理を実行した後、前記予備ディスク装置のデータをリードし、前記故障したディスク装置の代わりに設けられた新ディスク装置にデータをライトする動作を複数回に別けて実行して、コピーバック処理を実行することを特徴とする付記１のＲＡＩＤシステム。
【０１６０】
（付記９）ホストから依頼されたＩ／Ｏ要求に応じて、接続されたディスク装置をアクセスし、Ｉ／Ｏ要求を実行するＲＡＩＤコントローラにおいて、前記ホストとのインタフェース制御を行う第１のインタフェース回路と、ＲＡＩＤを構成する複数の前記ディスク装置とのインタフェース制御を行う第２のインタフェース回路と、前記複数のディスク装置の１つが故障した場合に、故障したディスク装置以外のディスク装置のデータをリードし、予備ディスク装置又は新ディスク装置にデータをライトする動作を複数回に別けて実行して、ＲＡＩＤ構成を再構築するリビルド又はコピーバック処理を実行するコントローラとを有し、前記コントローラは、前記ホストからのＩ／Ｏ要求を含む通常Ｉ／Ｏ要求が所定時間来ないかを判定し、通常Ｉ／Ｏ要求が所定時間到来しない場合には、前記リビルド又はコピーバックのリード及びライト処理を並列に実行することを特徴とするＲＡＩＤコントローラ。
【０１６１】
（付記１０）前記コントローラは、通常Ｉ／Ｏ要求の処理完了時刻を、前記通常Ｉ／Ｏ要求の処理完了毎に記録し、前記処理完了時刻と現在時刻とを比較して、通常Ｉ／Ｏ要求が所定時間来ないかを判定することを特徴とする付記９のＲＡＩＤコントローラ。
【０１６２】
（付記１１）前記コントローラは、前記通常Ｉ／Ｏ要求と前記リビルド／コピーバックの１回の要求とをバランスして、実行するとともに、前記リビルド／コピーバックの並列のライト及びリード完了に応じて、次のリビルド／コピーバックのライト及びリード要求を発行することを特徴とする付記９のＲＡＩＤコントローラ。
【０１６３】
（付記１２）前記コントローラは、前記リビルド／コピーバック処理の進捗状況を管理する進捗テーブルを有し、前記進捗テーブルに従い、リビルド又はコピーバック処理の１回のリード要求を作成し、且つ前記リビルド／コピーバックの並列のライト及びリード完了に応じて、前記進捗テーブルを更新することを特徴とする付記９のＲＡＩＤコントローラ。
【０１６４】
（付記１３）前記コントローラは、前記リビルド／コピーバックの要求を、リードまでの処理と、ライトからの処理に分割して、実行するＲＡＩＤ制御モジュールと、前記リビルド／コピーバック処理のリード要求とライト要求を個別に、前記ＲＡＩＤ制御モジュールに発行するリビルド／コピーバックモジュールとを有することを特徴とする付記１１のＲＡＩＤコントローラ。
【０１６５】
（付記１４）前記リビルド／コピーバックモジュールは、通常Ｉ／Ｏ要求が所定時間到来しない場合と、前記通常Ｉ／Ｏ要求が所定時間内に到来した場合との間の遷移を判定し、前記判定結果に応じて、前記リビルド又はコピーバックのリード及びライト要求を並列に発行することを特徴とする付記１３のＲＡＩＤコントローラ。
【０１６６】
（付記１５）前記コントローラは、前記通常Ｉ／Ｏ要求が所定時間内に到来した場合から前記通常Ｉ／Ｏ要求が所定時間到来しない場合に遷移したことに応じて、前記リビルド又はコピーバック処理の１回のリード要求を発行し、前記リード要求の処理完了に応じて、前記リビルド又はコピーバックのリード及びライト要求を並列に発行することを特徴とする付記９のＲＡＩＤコントローラ。
【０１６７】
（付記１６）前記コントローラは、前記ＲＡＩＤを構成する前記複数のディスク装置の１つが故障した場合に、故障したディスク装置以外のディスク装置のデータをリードし、予備ディスク装置にデータをライトする動作を複数回に別けて実行して、ＲＡＩＤ構成を再構築するリビルド処理を実行した後、前記予備ディスク装置のデータをリードし、前記故障したディスク装置の代わりに設けられた新ディスク装置にデータをライトする動作を複数回に別けて実行して、コピーバック処理を実行することを特徴とする付記９のＲＡＩＤコントローラ。
【０１６８】
（付記１７）ホストから依頼されたＩ／Ｏ要求に応じて、接続されたディスク装置をアクセスし、Ｉ／Ｏ要求を実行するＲＡＩＤシステムのリビルド／コピーバック処理方法において、ＲＡＩＤを構成する複数の前記ディスク装置の１つが故障した場合に、故障したディスク装置以外のディスク装置のデータをリードし、予備ディスク装置又は新ディスク装置にデータをライトする動作を複数回に別けて実行して、ＲＡＩＤ構成を再構築するリビルド又はコピーバック処理を実行するリビルド／コピーバック処理ステップと、前記ホストからのＩ／Ｏ要求を含む通常Ｉ／Ｏ要求が所定時間来ないかを判定するステップと、前記通常Ｉ／Ｏ要求が所定時間到来しない場合には、前記リビルド又はコピーバックのリード及びライト処理を並列に実行するステップとを有することを特徴とするＲＡＩＤシステムのリビルド／コピーバック処理方法。
【０１６９】
（付記１８）前記判定ステップは、通常Ｉ／Ｏ要求の処理完了時刻を、前記通常Ｉ／Ｏ要求の処理完了毎に記録し、前記処理完了時刻と現在時刻とを比較して、通常Ｉ／Ｏ要求が所定時間来ないかを判定するステップからなることを特徴とする付記１７のＲＡＩＤシステムのリビルド／コピーバック処理方法。
【０１７０】
（付記１９）前記通常Ｉ／Ｏ要求と前記リビルド／コピーバックの１回の要求とをバランスして、実行するステップを更に有し、前記並列処理ステップは、前記リビルド／コピーバックの並列のライト及びリード完了に応じて、次のリビルド／コピーバックのライト及びリード要求を発行するステップからなることを特徴とする付記１８のＲＡＩＤシステムのリビルド／コピーバック処理方法。
【０１７１】
（付記２０）前記リビルド／コピーバック処理の進捗状況を管理する進捗テーブルに従い、リビルド又はコピーバック処理の１回のリード要求を作成し、且つ前記リビルド／コピーバックの並列のライト及びリード完了に応じて、前記進捗テーブルを更新するステップを更に有することを特徴とする付記１８のＲＡＩＤシステムのリビルド／コピーバック処理方法。
【産業上の利用可能性】
【０１７２】
以上、説明したように、リビルド／コピーバックでは、一のディスクからリードし、別のディスクへライトするため、通常Ｉ／Ｏの有無を判定し、通常Ｉ／Ｏが無いことに応じて、これらの別々のディスクドライブへのリードとライトを、それぞれ同時に行う。これにより、リビルド／コピーバック時間の短縮を図る。
【図面の簡単な説明】
【０１７３】
【図１】本発明の一実施の形態のディスクアレイ装置の構成図である。
【図２】図１の制御モジュールの構成図である。
【図３】図１及び図２の制御モジュールのファームウェアの機能ブロック図である。
【図４】図３のファームウェアの詳細構成図である。
【図５】本発明の一実施の形態のリビルド／コピーバック処理フロー図である。
【図６】図５の処理のタイムチャート図である。
【図７】図５の処理の動作説明図である。
【図８】本発明の一実施の形態のリビルド／コピーバックの並列処理のタイムチャート図である。
【図９】図４のＲＡＩＤ制御モジュールの処理フロー図である。
【図１０】図４のＲＡＩＤ制御モジュールの他の処理フロー図である。
【図１１】本発明の一実施の形態の動的・静的状態遷移図である。
【図１２】本発明の一実施の形態のリビルド／コピーバックモジュールの要求処理フロー図である。
【図１３】本発明の一実施の形態のリビルド／コピーバックモジュールの応答処理フロー図である。
【図１４】従来のリビルド処理の説明図である。
【図１５】従来のコピーバック処理の説明図である。
【図１６】従来のコピーバック処理のタイムチャート図である。
【符号の説明】
【０１７４】
４−０〜４−１  制御モジュール
４０  制御ユニット
４１  チャネルアダプタ
４２ａ，４２ｂ  デバイスアダプタ
４００、４１０  ＣＰＵ
４０ｂ  メモリ
２００  ディスクデバイス
６３２  ＲＡＩＤ制御モジュール
６３４−１  リビルド／コピーバックモジュール
２−０〜２−３  デバイスエンクロージャー
【図１】
0004472617.tif 000002
【図２】
0004472617.tif 000003
【図３】
0004472617.tif 000004
【図４】
0004472617.tif 000005
【図５】
0004472617.tif 000006
【図６】
0004472617.tif 000007
【図７】
0004472617.tif 000008
【図８】
0004472617.tif 000009
【図９】
0004472617.tif 000010
【図１０】
0004472617.tif 000011
【図１１】
0004472617.tif 000012
【図１２】
0004472617.tif 000013
【図１３】
0004472617.tif 000014
【図１４】
0004472617.tif 000015
【図１５】
0004472617.tif 000016
【図１６】
0004472617.tif 000017