(57)【要約】      （修正有）【課題】ミラー構成のディスクアレイにおいてＩＯアクセスと並行してリビルドする。【解決手段】ディスクアレイは、ＩＯ要求のデータＸを一時保管するバッファと、ミラー構成を有する第１ディスクと第２ディスクと、補助ディスクと、補助ディスクにコピーされたデータのディスク位置をログする冗長管理テーブルを含む。コントローラは、（ａ）第２ディスクに障害がある場合、データＸのＩＯと並行して、バッファに保管されたデータＸを補助ディスクへコピーし、（ｂ）データＸのディスク位置がコピー済みであることを冗長管理テーブルにログし、（ｃ）コピー完了によりＩＯ要求の完了をホストに返す。コントローラは、データサイズが所定の大きさになるように、追加データとしてデータＸと連続するディスク位置の後続データＹをバッファに保管し、連続するデータＸ、Ｙを補助ディスクへコピーする。ディスク使用率が多い場合にもリビルド時間の短縮が見込める。【選択図】図６
2014096072.tif 000002
【特許請求の範囲】
【請求項１】
リビルドをするミラー機構を有するディスクアレイであって、
ホストからの書込み又は読込み要求（読み書き要求）のデータ（データＸ）を一時保管するバッファと、
ミラー構成を有する冗長化された第1のディスクと第２のディスクと、
第２のディスクに障害ある場合にリビルドするために使用される補助ディスクと、
前記補助ディスクにコピーされた第１のディスクに記憶されているデータのディスク位置をログする冗長管理テーブルと、
前記書込み又は読込み要求に応じて、前記バッファと前記２つの冗長化ディスクとの間のデータＸの読み書きを制御するコントローラであって、更に、
（ａ）第２のディスクに障害がある場合に、前記データＸの読み書きと並行して、リビルドのために前記バッファに保管されたデータＸを補助ディスクへコピーし、
（ｂ）前記（ａ）においてコピーされたデータＸのディスク位置がコピー済みであることを前記冗長性管理テーブルにログし、
（ｃ）前記（ａ）のコピーの完了により、前記読み書き要求の完了をホストに返す、
ことを実行するコントローラと、を含むミラー構成を有するディスクアレイ。
【請求項２】
前記コントローラの（ａ）は、前記読み書き要求の現在データＸのサイズが第１の所定値より小さい場合は、全体のデータのサイズが第２の所定値になるように、追加データとして、前記バッファに保管されたデータＸと連続するディスク位置のデータを第１のディスクから前記バッファに読み出し保管し、前記バッファに保管された連続するデータを補助ディスクへコピーし、
前記コントローラの前記（ｂ）は、前記追加データについて前記冗長性管理テーブルにログする、リビルドを実行する請求項１に記載のストレージアレイ。
【請求項３】
前記コントローラの前記（ａ）は、前記読み書き要求の現在データＸのサイズが所定の閾値以上の場合はホストから後続の読み書き要求をシーケンシャルであると見なして、全体のデータのサイズが第２の所定値になるように、追加データとして、前記バッファに保管されたデータＸと連続する後続のディスク位置のデータ（後続データＹ）を第１のディスクから前記バッファに読み出し保管し、前記バッファに保管された連続するデータを補助ディスクへコピーして、リビルドを実行する請求項２に記載のストレージアレイ。
【請求項４】
前記コントローラの（ａ）は、前記読み書き要求の現在データＸのサイズが所定の閾値より小さい場合はホストから後続の読み書き要求をランダムであると見なして、全体のデータのサイズが第２の所定値になるよう、追加データとして、前記バッファに保管されたデータＸと連続する後続のディスク位置のデータ（後続データＹ）及び、前方のディスク位置のデータ（前方データＺ）を第1のディスクから前記バッファに読み出し保管し、前記バッファに保管された連続するデータを前記補助ディスクへコピーして、リビルドを実行する請求項２に記載のストレージアレイ。
【請求項５】
前記コントローラは、更に、
（ｄ）前記（ａ）のコピーをする前に、前記冗長性管理テーブルを参照して前記バッファに保管されたデータＸがコピー済みか確認し、
（ｅ）前記（ｄ）で現在データＸがコピー済みの場合、（ａ）のコピーを回避して前記書込み又は読込み要求の完了をホストに返す、ことを含む請求項２に記載のストレージアレイ。
【請求項６】
前記コントローラは、前記ホストから複数の読み書き要求のデータに対して一定回数毎に前記（ａ）の補助ディスクのコピーを回避して、ホストへの前記要求の完了応答の遅延を小さくする請求項１に記載のストレージアレイ。
【請求項７】
ホストからの書込み又は要求（読み書き要求）のデータ（データＸ）を一時保管するバッファと、
ミラー構成を有する冗長化された第1のディスクと第２のディスクと、
第２のディスクに障害ある場合にリビルドするために使用される補助ディスクと、
前記書込み又は読込み要求に応じて、前記バッファと前記２つの冗長化ディスクとの間のデータＸの読み書きを制御するコントローラとを含む、ミラー機構を有するディスクアレイのリビルドする方法であって、
前記ディスクアレイに更に、前記補助ディスクにコピーされた第１のディスクに記憶されているデータのディスク位置をログする冗長管理テーブルを含み、
（ａ）第２のディスクに障害がある場合に、前記データＸの読み書きと並行して、リビルドのために前記バッファに保管されたデータＸを補助ディスクへコピーするステップと、
（ｂ）前記（ａ）においてコピーされたデータＸのディスク位置がコピー済みであることを前記冗長性管理テーブルにログするステップと、
（ｃ）前記（ａ）のコピーの完了により、前記読み書き要求の完了をホストに返すステップと、を含むリビルド方法。
【請求項８】
ホストからの書込み又は読込み要求（読み書き要求）のデータ（データＸ）を一時保管するバッファと、
ミラー構成を有する冗長化された第1のディスクと第２のディスクと、
第２のディスクに障害ある場合にリビルドするために使用される補助ディスクと、
前記書込み又は読込み要求に応じて、前記バッファと前記２つの冗長化ディスクとの間のデータＸの読み書きを制御するコントローラとを含む、ミラー機構を有するディスクアレイのリビルドするプログラムであって、
前記ディスクアレイに更に、前記補助ディスクにコピーされた第１のディスクに記憶されているデータのディスク位置をログする冗長管理テーブルを含み、
（ａ）第２のディスクに障害がある場合に、前記データＸの読み書きと並行して、リビルドのために前記バッファに保管されたデータＸを補助ディスクへコピーするステップと、
（ｂ）前記（ａ）においてコピーされたデータＸのディスク位置がコピー済みであることを前記冗長性管理テーブルにログするステップと、
（ｃ）前記（ａ）のコピーの完了により、前記読み書き要求の完了をホストに返すステップと、をコントローラに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホストからＩＯアクセスと並行してリビルドする、ミラー構成を有するディスクアレイ及びリビルド方法に関する。
【背景技術】
【０００２】
ホストは、ファイバチャネル（FC: fiber channel）やイーサネット（Ethernet）により接続されているミラー構成のディスクアレイ（ＲＡＩＤ１、ＲＡＩＤ１０：Redundant Arrays of Inexpensive Disks）にデータを読み書きする。ＲＡＩＤ１は、２台の装置にまったく同じデータを同時に書きこむ方式である。ＲＡＩＤ１０は、ＲＡＩＤ１を構成要素として含む。
【０００３】
従来技術のＲＡＩＤ１では、ホストの読み書きなどホストからのＩＯアクセスを優先させる。そのため、ホストからのＩＯアクセスが多いほど、障害ディスクに対して新たにディスクのリビルド（再構築）のに完了までにより長期の時間を要する。その間、冗長性がない状態が継続する。リビルド（ｒｅｂｕｉｌｄ）とは、ＲＡＩＤ構成のハードディスクで1台が壊れた際に、新しいものに入れ替えて残りのディスクからデータを再構築・複写する作業を言う。
【０００４】
特許文献１は、ホストからのＩＯがある場合とない場合でリビルド処理サイズを変更するリビルド方法を示す。
【０００５】
特許文献２では、通常業務のＩＯとリビルド処理のバランスをとるために、単純に、ホストＩＯの処理とリビルドの比率を設定するだけである。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−９４９９４号公報
【特許文献２】特開２０１２−１４６３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
以上の先行技術では、ホストからのＩＯアクセスが継続している場合には、リビルド時間の短縮が達成できない。ホストからＩＯアクセスが頻繁である場合でも同時並行にリビルド処理を処理できるようにする。障害ディスクの発生によりデータ保全性を確実にするために、ホストＩＯアクセスの際もミラー構成ディスクのリビルドを確実にする方法である。
【０００８】
従って、本発明の目的は、ミラー構成の冗長化機構を有するディスクアレイにおいて、ホストからＩＯアクセスと並行してリビルドする方法及びディスクスアレイを提供する。
【課題を解決するための手段】
【０００９】
かかる目的のもと、本発明は、障害ディスクの発生によりリビルドをするミラー機構を有するディスクアレイである。このディスクアレイは、
ホストからの書込み（Ｗｒｉｔｅ）又は読込み（Ｒｅａｄ）要求（読み書き要求）のデータＸを一時保管するバッファと、
ミラー構成を有する互いに冗長化した第1のディスクと第２のディスクと、
前記第２のディスクに障害ある場合にリビルドするために使用される補助ディスクと、
前記補助ディスクにコピーされた正常駆動の第１のディスクに記憶されているデータのディスク位置をログする冗長管理テーブルと、
前記書込み又は読込み要求に応じて、前記バッファと前記冗長化ディスクとの間のデータＸの読み書きを制御するコントローラであって、更に、
（ａ）第２のディスクに障害がある場合に、前記データＸの読み書きと並行して、リビルドのために前記バッファに保管されたデータＸを補助ディスクへコピーし、
（ｂ）前記（ａ）においてコピーされたデータＸのディスク位置がコピー済みであることを前記冗長性管理テーブルにログ・更新し、
（ｃ）前記（ａ）のコピーの完了により、前記読み書き要求の完了をホストに返す、
ことを実行するコントローラと、を含む。
【００１０】
また、本発明のディスクアレイの前記コントローラの（ａ）は、前記読み書き要求の現在データＸのサイズが第１の所定値（例、４ＭＢ又は６ＭＢ）より小さい場合は、全体のデータのサイズが第２の所定値（例、４ＭＢ又は６ＭＢ）になるように、追加データとして、前記バッファに保管された現在データＸと連続するディスク位置のデータ（データＹ）を（正常に駆動している）第１のディスクから前記バッファに読み出し保管し、前記バッファに保管された連続するデータＸ及びデータＹを補助ディスクへコピーし、
前記コントローラの前記（ｂ）は、前記追加データについて前記冗長性管理テーブルにログする、リビルドを実行することを特徴とする。
【００１１】
また、本発明のディスクアレイの前記コントローラの前記（ａ）は、前記読み書き要求の現在データＸのサイズが所定の閾値（例、２ＭＢ）以上の場合はホストから後続の読み書き要求をシーケンシャルであると見なして、全体のデータのサイズが第２の所定値（例、４ＭＢ又は６ＭＢ）になるように、追加データとして、前記バッファに保管された現在データＸと連続する後続のディスク位置のデータ（データＹ）を正常に駆動している第１のディスクから前記バッファに読み出し保管し、前記バッファに保管された連続するデータＸ及びデータＹを補助ディスクへコピーして、リビルドを実行する請求項２に記載のストレージアレイ
【００１２】
また、本発明のディスクアレイの前記コントローラの（ａ）は、前記読み書き要求の現在データＸのサイズが所定の閾値（例、２ＭＢ）より小さい場合はホストから後続の読み書き要求をランダムであると見なして、全体のデータのサイズが第２の所定値（例、４ＭＢ又は６ＭＢ）になるよう、追加データとして、前記バッファに保管された現在データＸと連続する後続のディスク位置のデータ（後続データＹ）及び、前方のディスク位置のデータ（前方データＺ）を正常に駆動している第１のディスクから前記バッファに読み出し保管し、前記バッファに保管された連続するデータＸ、データＹ、及びデータＺを前記補助ディスクへコピーして、リビルドを実行することを特徴とする。
【００１３】
また、本発明のディスクアレイの前記コントローラは、更に、
（ｄ）前記（ａ）のコピーをする前に、前記冗長性管理テーブルを参照して前記バッファに保管された現在データＸがコピー済みか確認し、
（ｅ）前記（ｄ）で現在データＸがコピー済みの場合、（ａ）のコピーを回避して前記書込み又は読込み要求の完了をホストに返す、ことを含む。
【００１４】
また、本発明のディスクアレイの前記コントローラは、前記ホストから複数の読み書き要求のデータに対して一定回数毎に前記（ａ）の補助ディスクのコピーを回避して、ホストへの前記要求の完了応答の遅延を小さくすることを特徴とする。
【００１５】
更に、本発明は、ミラー機構を有するディスクアレイのリビルドする方法である。
この方法は、ホストからの書込み（Ｗｒｉｔｅ）又は読込み（Ｒｅａｄ）要求（読み書き要求）のデータＸを一時保管するバッファと、
ミラー構成を有する互いに冗長化した第1のディスクと第２のディスクと、
前記第２のディスクに障害ある場合にリビルドするために使用される補助ディスクと、
前記書込み又は読込み要求に応じて、前記バッファと前記冗長化ディスクとの間のデータＸの読み書きを制御するコントローラとを含む、ミラー機構を有するディスクアレイであって、
前記ディスクアレイに更に、前記補助ディスクにコピーされた正常駆動の第１のディスクに記憶されているデータのディスク位置をログする冗長管理テーブルを含み、
（ａ）第２のディスクに障害がある場合に、前記データＸの読み書きと並行して、リビルドのために前記バッファに保管されたデータＸを補助ディスクへコピーするステップと、
（ｂ）前記（ａ）においてコピーされたデータＸのディスク位置がコピー済みであることを前記冗長性管理テーブルにログするステップと、
（ｃ）前記（ａ）のコピーの完了により、前記読み書き要求の完了をホストに返すステップと、を含む。
【００１６】
更に、本発明は、ミラー機構を有するディスクアレイのリビルドするプログラムである。
このプログラムは、ホストからの書込み（Ｗｒｉｔｅ）又は読込み（Ｒｅａｄ）要求（読み書き要求）のデータＸを一時保管するバッファと、
ミラー構成を有する互いに冗長化した第1のディスクと第２のディスクと、
前記第２のディスクに障害ある場合にリビルドするために使用される補助ディスクと、
前記書込み又は読込み要求に応じて、前記バッファと前記冗長化ディスクとの間のデータＸの読み書きを制御するコントローラとを含む、ミラー機構を有するディスクアレイのリビルドするプログラムであって、
前記ディスクアレイに更に、前記補助ディスクにコピーされた正常駆動の第１のディスクに記憶されているデータのディスク位置をログする冗長管理テーブルを含み、
（ａ）第２のディスクに障害がある場合に、前記データＸの読み書きと並行して、リビルドのために前記バッファに保管されたデータＸを補助ディスクへコピーするステップと、
（ｂ）前記（ａ）においてコピーされたデータＸのディスク位置がコピー済みであることを前記冗長性管理テーブルにログするステップと、
（ｃ）前記（ａ）のコピーの完了により、前記読み書き要求の完了をホストに返すステップと、をコントローラに実行させる。
【発明の効果】
【００１７】
以上の本発明の適用のディスクアレイは、ホストＩＯによるディスク使用率が高い場合でもリビルド時間の短縮できる。
【図面の簡単な説明】
【００１８】
【図１】本発明が適当されるミラー構成を有するディスクアレイ（ＲＡＩＤ１）１０の構成を示す。
【図２】冗長性管理テーブルの例を示す。
【図３】ディスク１ｂに障害が発生した場合に補助ディスクが１ｂの代わりにリビルドされることを示す。
【図４】ホストからの書込み読込みデータＸの処理と並行して、データＸ及び追加データＹ，Ｚをｃｏｐｙすることを示す。
【図５】ホストからの書込み・読込みアクセスに並行して、正常に稼働しているディスクのデータをコピーする処理の順番及び構成要素の関係を示す。
【図６】ホストＩＯに並行してバッファに保管されたデータＸをコピーして、ミラー構成をリビルドする処理フローを示す。
【発明を実施するための形態】
【００１９】
以下、ホストからディスクアレイへのデータの書込みの場合及び読み出し（ホストＩＯ）の場合について実施の形態（実施例）を説明する。以下の実施例は例であり、本発明は、読み書きデータＸのサイズについて例示された示される各種の基準値（第１の所定値、第２の所定値、所定の閾値など）に限定されるものではない。
【００２０】
本発明のＲＡＩＤ１は、ミラー構成を有する２つのディスクと１つの予備のディクスで構成される。ＲＡＩＤ１の冗長な１つのディスクに障害が発生した時点で、ホストからのＩＯが並行に、ディスクのデータのコピーを効率的に行い全体のリビルド時間を短縮する。ホストＩＯのアクセスパターンに基づき、コピーするデータサイズやデータ位置を動的に変更することにより、リビルド処理を効率化する。
【００２１】
図１は、本発明が適用されるミラー構成を有するディスクアレイ（ＲＡＩＤ１）１０の構成を示す。なお、本発明のディスクアレイは、ＲＡＩＤ１を構成要素として含むＲＡＩＤ１０にも適用される。実施例が実装されるＲＡＩＤ１のホストＩＯ処理の駆動を、図を参照しながら説明する。ディスクアレイ１０は、コントローラ１３、ミラー構成のディスク１ａ，１ｂ、補助ディスクｓ１、ホスト・インタフェース部１１、Ｗｒｉｔｅ／Ｒｅａｄバッファ１６、及び冗長性管理テーブル１４を有している。ホスト・インタフェース１４は、ディスクアレイ装置１０の上位装置であるホスト２０する通信手段である。
【００２２】
２つのディスク１ａ，１ｂは同じデータを保持し冗長化され、互いにミラーの関係である。冗長化されているので２つのディスク１ａ，１ｂの一方が故障しても、他方のディスクが正常であればユーザのデータは保証される。１つのディスク１ｂに障害が発生した場合、このディスク１ｂの代わりに補助ディスクがディスク１ａとミラー関係となるように、ディスク１ａのデータを補助ディスクｓ１にコピーする（リビルド）。予備ディスクｓ１は、ディスク１ａ、１ｂが正常に稼動中には、論理的にはディスクアレイから切り離されている。一方、予備ディスクｓ１は、ディスク１ａ、１ｂのいずれか１台が故障した場合に、ＲＡＩＤ１の構成要素となる。
【００２３】
ディスク１ａのデータを補助ディスクにリビルドするのには、ホストＩＯがある場合とない場合とに分けて取り扱われる。ホストＩＯと並列して補助ディスクのリビルドする操作は、ホストＩＯのデータＸについてＩＯ処理と同時に、補助ディスクにコピーする。
データの転送においては、ホストからのＩＯアクセスには、Ｒｅａｄ／Ｗｒｉｔｅバッファ１６を使用する。バッファ１６はＤＲＡＭでも、SSD (Solid State Disk) でもよい。ホストからのＩＯがある場合、補助ディスクへのデータには、ホストＩＯのためにバッファ１６に保管されたデータＸが使用される。本発明では、バッファ１６においてホストＩＯのデータＸに対してサイズを拡張して、ＣＯＰＹ（コピー：リビルド処理の一部分）を実施する。ホストＩＯが休止している場合、コピーされていないディスク１ａの残りのアドレス位置のデータについてのＣＯＰＹをバッファ１６を経由して行ない、リビルドを完了する。
【００２４】
コントローラ１３は、ディスクアレイ１０の各部の動作を制御する機能手段である。コントローラ１０は、ＣＰＵ及びファームウエアによって構成されている。コントローラ１３は、バッファ１６がホスト・インタフェース１１を介してホスト２０と接続する。ホスト２０とホスト・インタフェース１１との通信は、例えばＳＣＳＩ（Small Computer System Interface）、イーサネットなどで行われる。コントローラ１３は、冗長性管理テーブル１４、Ｗｒｉｒｅ／Ｒｅａｄデータ要求、故障検出、及び、内部的なＣＯＰＹなどの機能を有している。
【００２５】
ホスト２０からＳＣＳＩコマンドにより書込み（Ｗｒｉｔｅ）又は読込み（Ｒｅａｄ）の要求をディスクアレイ１０は受取る。書込み又は読込みデータＸは、例えば固定長単位でバッファ１６に保管される。例えば、２ＭＢ単位で読み書きがされる。２ＭＢは例示である。読み書きデータＸは可変長でもよい。ディスクの位置（番地）を、ＬＢＡ（Logical Block Address）で指定する。１ＬＢＡはセクター（Sector）を指示し、大きさは例えば５１２Ｂである。ＬＢＡはＲＡＩＤ１のストレージアレイ１０の論理アドレスを指示する。１つの論理アドレスであるＬＢＡは、ディスクアレイの内部では２つのディスク１ａ又は１ｂの物理アドレスが割当てられる。なお、ホストＩＯは、複数のアドレス範囲（ＬＢＡブロック）のデータ単位で行われる。例えば、1つのＬＢＡブロックは１０００ＬＢＡ（２ＭＢ）単位で行われる。
【００２６】
書込みの場合、バッファ１６に保管されたデータは、ディスク１ａ及び１ｂは順に送られ、同じディスク位置、即ちＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）に記録される。読込みの場合、ディスク１ａ又は１ｂの一方を主として決めておき、指定のストレージ位置から、ＬＢＡからデータを読出し、バッファ１４に保管しホストに送られる。
【００２７】
コントローラ１３は、ホスト２０からＲｅａｄコマンドを受信した場合に、ディスク１ａ及び１ｂのうち、いずれか一方のディスクからデータＸを読み出してバッファ１６を介してホスト２０に送信する。コントローラ１３は、ホスト２０からＷｒｉｔｅコマンド及びライト処理するデータを受信した場合に、バッファ１６を介して、データＸをディスク１ａ，１ｂに書き込む。このとき、コントローラ１３は、第１ディスク１ａ及び第２ディスク１ｂに対して、データをミラーリングする。即ち冗長化のため、２つのディスク１ａ及び１ｂの同じディスク位置に同じデータを同時に書き込む。
【００２８】
冗長性管理テーブル１４は、ディスク１ｂの１つに障害が発生した場合に、補助ディスクにミラー関係を再構築するために、コピー済みのディスクのアドレス範囲（ディスク位置の範囲：以下、「ＬＢＡブロック」、「アドレスブロック」と言う）についてログする。例えば、ディスク１ｂが故障して、ディスク１ａの冗長性が確保されていない場合が生じる。この場合、正常稼働している１ａの全てのＬＢＡブロックを、補助ディスクｓ１にＣＯＰＹする。
【００２９】
図２は、冗長性管理テーブルの例を示す。冗長性管理テーブルは、ディスクアレイ１０内に不揮発性記憶域に保持される。1番目の項目は、ホストの読み書き単位であるＬＢＡブロック（アドレスブロック）を指示する。実施例のホストＩＯでは、ストレージアレイ１０のディスク書込み単位を、例えば、１０００のＬＢＡの範囲のデータ（２ＭＢ）毎としている。２番目の項目は、ＬＢＡの所定のブロック単位で、シーケンシャルにブロックのサイズの累積を示す。３番目の項目は、ブロック毎にＣＯＰＹ済みかをログする。通常のリビルドは、ＬＢＡブロックの小さい番号から大きい番号へとシーケンシャルにコピーされる。
【００３０】
コントローラ１３は、このテーブルの参照、更新、リセットを行う機能を有する。コントローラ１３は、ディスク１ｂに障害が生じたことを検出すると直ちに、冗長性管理テーブルを参照してコピー済のフラグの“ＯＫ”をリセットする。コントローラ１３は、ＣＯＰＹ済でないディスクのＬＢＡブロックについて、ミラー構成になっていない、補助ディスクのアドレスブロックについてコピーがされた場合、冗長化済のフラグ“ＯＫ”をログする。
【００３１】
図３は、ディスク１ｂに障害が発生した場合に補助ディスクが１ｂの代わりにリビルドされることを示す。コントローラ１３により、ディスク１ａと補助ディスクｓ１のミラー構成を有するディスクアレイ（ＲＡＩＤ１）が再構成される。
【００３２】
図４は、ホストからの書込み読込みデータＸの処理と並行して、データＸ及び追加データＹ，Ｚをｃｏｐｙすることを示す。
ホストＩＯ処理と並行に、バッファ１６に保管されているデータＸに連続するデータＹ，Ｚを追加して、補助ディスクｓ１にこれら連続データをコピーする。データＸに追加データをバッファ１６に読み出すなどの操作は、ホストＩＯの処理の完了の応答は通常より遅くする。本発明は、ディスク１ａの読み書き処理の遅延をなるべく小さくしながら、ＲＡＩＤ１のリビルドを可能にする方法を提供する。そのために一定値サイズ以上のデータを補助ディスクにコピーすることを考える。例えば４ＭＢより小さいデータＸについてはデータを追加して補助ディスクにコピーすることにより、ｃｏｐｙ回数を少なくしてリビルドの効率化ができる。（ａ）（ｂ）にあるように、データＸが４ＭＢより小さい場合、追加データとして後続データＹ、又は、前方データＺを付加して全体で４ＭＢ又は６ＭＢにできれば１回で大きなデータのコピーとなる。読み書きデータＸのサイズが第１の所定値（例えば４ＭＢ）より小さい場合には、データＹまたはＺを追加してコピーする。データＸが第１の所定値以上の場合は、補助ディスクｓ１のコピーするのには十分大きいとする。
【００３３】
（ａ）は、書込みデータのサイズが所定の閾値（例えば２ＭＢ）以上の場合には、後続ＬＢＡの追加データについても冗長化を行うことを示す。データＸが所定の閾値以上の場合は、後続のホストＩＯが連続するデータのシーケンシャル・アクセスであることが多い。よってデータＸに連続する後続ＬＢＡのデータ（後続データＹ）をデータに追加する。データＸ及び後続データＹのｃｏｐｙ処理は、ホストＩＯの応答処理を通常より長くするが、ｃｏｐｙされるデータのサイズを大きくすることによりリビルドの効率化ができる。Ｘが所定の閾値以上の場合は追加データとして、後続のＬＢＡのデータＹを追加して全体のｃｏｐｙサイズが第２の所定値（例えば４ＭＢまたは６ＭＢ）になるようにする。事前に後続データＹについても追加的に補助ディスクにコピーしておけば、後続のアクセスにおいてデータのコピーを省略できる。また、ホストＩＯのデータＸのサイズ以上の第１の所定値または第２の所定値のサイズの連続データを補助ディスクにコピーすることにより、ミラー構成のディスクのリビルドを短縮できる。ＩＯ応答の遅延が大きくなりすぎないように調整するため、後続データＹのサイズは可変としてもよい。なお、第２の所定値は第１の所定値と同じ値としてもよい。
【００３４】
（ｂ）は、書込みデータのサイズが所定の閾値（例えば２ＭＢ）より小さい場合、後続データＹに更に前方ＬＢＡのデータＺ（後続データＺ）を追加することを示す。読み書きデータＸがこの定閾値より小さな場合、後続のホストＩＯがランダム・アクセスである場合が多いため、前方データＺについても追加としている。後続データＹだけでなく前方データＺも含めて、連続データ（Ｘ、Ｙ，Ｚ）のサイズが第２の所定値（例えば６ＭＢ）となるように、バッファ１６に後続データＹ，前方データＺをディスク１ａから読み出す。ホストＩＯのデータＸだけでなく、追加データＹ，Ｚを補助ディスクｓ１にコピーしておけば、後続のホストＩＯアクセスにおいてデータのコピーを省略できる効果がある。
【００３５】
図５は、ホストＩＯに並行して、正常に稼働しているディスクのデータをコピーする処理の順番及び構成要素の関係を示す。図６は、ホストＩＯに並行してバッファに保管されたデータＸをコピーして、ミラー構成をリビルドする処理フローを示す。各処理フローは、コントローラ１３において扱われる。図５及び図６の処理番号（１）−（７）は同じ内容を表す。
●（１）：ディスクアレイ１０は、ホストからデータＸの書込み（Ｗｒｉｔｅ）又は読込み（Ｒｅａｄ）の要求を受取る。
●（２）：Ｗｒｉｔｅ要求ではバッファ保管のデータＸをディスク１ａに書込む。Ｒｅａｄ要求ではディスク１ａからデータＸを読出してバッファ保管しホストに送る。
●（３−１）：テーブル１４を参照してバッファ１６に保管されているデータＸが補助ディスクにＣＯＰＹ済みか確認する。例えば、図２において１つのＬＢＡブロックに“ＯＫ”と付されている場合、そのブロックのデータは補助ディスクにコピー済みである。ＣＯＰＹ済みの場合、データＸを補助ディスクにコピーすることをスキップして、Ｗｒｉｔｅ処理等の完了をホストに送る（７）。データＸについてＣＯＰＹ済みでない場合、後続のＣＯＰＹ処理（３−２）をする。
●（３−２）ＣＯＰＹ処理では、データＸが第１の所定値（例えば４ＭＢ）より小さい場合、データＸに対して後続データＹを加える。データＸが第１の所定値以上ならば、そのままデータを追加せずＣＯＰＹを行う。第１の所定値（例えば、４ＭＢ）を設けるのは、小さなデータのＣＯＰＹが頻発すると、全体のリビルド処理の速度に比べてホストＩＯ処理を遅延させる。
●（３−２）＆（４）：補助ディスクにコピーするデータの大きさが、第２の所定値（４ＭＢ又はより以上）の大きさの連続するデータとなるようにディスク１ａからバッファ１６に追加の後続データＹ又は前方データＺを確保する。第２の所定値は第１の所定値と同じ値でもよい。データＸのサイズが所定の閾値以上の場合は後続のホストＩＯがシーケンシャルと見なして、追加データＹをディスク１ａからバッファ１６に読み出す（図４（ａ））。また、データＸのサイズが所定の閾値より小さい場合は後続のＩＯがランダムと見なして、後続データＹの他に、前方データＺをディスク１ａからバッファ１６に読み出す（図４（ｂ））。なお、所定の閾値は、ホストＩＯのアクセス態様においてデータサイズとアクセスパターン（シーケンシャル及びランダム）との関係から、適時変更可能である。また、前方データＺと後方データＹのサイズの割合は、後続のホストＩＯの予想パターンに基づいて適時変更可能である。
●（５）：ホストＩＯをシーケンシャルと見なした場合（（図４（ａ））、バッファ１６に保管された連続するデータＸ，Ｙを補助ディスクにｃｏｐｙする。また、ホストＩＯをランダムと見なした場合（（図４（ｂ））、バッファ１６に保管された連続するデータＸ，Ｙ、Ｚを補助ディスクにｃｏｐｙする（図４（ｂ））。
●（６）：バッファ１６に保管されているデータＸ，Ｙ，Ｚを補助ディスクにｃｏｐｙか完了したら、冗長性管理テーブル１４を対応するＬＢＡブロックについて更新する。
●（７）：データのＷｒｉｔｅ及びＲｅａｄに完了をホストに送る。
●（８）：複数のホストからのデータの読み書き完了（７）して全てのホストＩＯが終了する。
●（９）：通常のリビルド操作として、ホストのＩＯ完了後、テーブルを参照しながら、残りのＬＢＡブロックについて複数のデータをバッファ１６を経由してシーケンシャルにコピーする。
●（１０）：ディスク１ａの全データについて補助ディスクへのリビルドを完了する。
【００３６】
ホストＩＯのデータＸに対して、後続データＹ及び前方データＺはシーケンシャルの連続するデータである。追加されるデータＹ、データＺのバッファ１６の読み出しは余計な操作であり、通常のデータＸの書込み、読込みに対して応答を遅らせることになる。しかし、連続するデータＸ．Ｙ，Ｚを補助ディスクｓ１に大きなサイズでｃｏｐｙできれば、リビルドを速くできる効果がある。しかも、ホストＩＯの処理の完了後の休止期間にリビルドを部分的に行うことは、ホストＩＯの頻繁なシステム環境ではリビルドが長期間に及ぶ。その間ミラー構成が確保されないストレージアレイとなるので、突発的な障害によりデータの完全な消失の可能性が高まる。従って、本発明のディスクアレイは、ホストＩＯ処理と並行してリビルドを早期に確保する。
【００３７】
本発明では、ホストＩＯの応答性の遅延を最小限にしつつ、ミラー構成のリビルド処理を実施する。そのため、ホストのＩＯタイムアウトにならないようにしなければならない。そのため、追加データの処理サイズを可変にして応答時間の制御ができるようにしている。また、ホストアクセスが激しい場合や、バッチ処理時間への影響を考慮しなければならない場合がある。ホストのＩＯアクセスＭ回中Ｎ回のみミラー回復動作、つまり、リビルド動作を実施するようにする。Ｎ＝０の設定も可能にする。オペレータの判断で現在実行中のバッチ処理（ホストＩＯ処理）の完了を最優先させたい場合などに対応できる。具体的には、３回にホストＩＯに対して１回は追加データを回避する問調整により、ホストＩＯを優先又はリビルドの優先を調整できる。
【００３８】
以上の実施例が適用されたＲＡＩＤ１は、ホストＩＯによるディスク使用率が多い場合にも、リビルド処理を実行するので、リビルド時間の短縮が見込める。これまで、本発明を実施の形態を用いて説明したが、本発明の範囲は上記実施例には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。
【符号の説明】
【００３９】
１０…ディスクアレイ（ＲＡＩＤ１）、
１１…ホスト・インタフェース、
１３…コントロ−ラ（読み書き制御）、
１４…冗長性管理テーブル、
１６…Ｗｒｉｔｅ／Ｒｅａｄバッファ、
２０…ホスト
【図１】
2014096072.tif 000003
【図２】
2014096072.tif 000004
【図３】
2014096072.tif 000005
【図４】
2014096072.tif 000006
【図５】
2014096072.tif 000007
【図６】
2014096072.tif 000008