(57)【要約】【課題】記憶装置の故障時における信頼性を向上させる。【解決手段】複数の記憶装置のうち復元対象記憶装置以外の冗長用記憶装置から読み出した冗長データを用いて、復元対象記憶装置のデータを、複数の予備記憶装置のうちの第１の予備記憶装置に再構成する再構成処理部１３と、再構成処理部１３による再構成を行なう際に前記冗長用記憶装置から読み出したデータを、複数の予備記憶装置のうちの冗長用記憶装置に対応する第２の予備記憶装置に格納することで、冗長用記憶装置の複製を行なう複製処理部１５とを備える。【選択図】図２
2015156081.tif 000002
【特許請求の範囲】
【請求項１】
冗長構成がなされた複数の記憶装置及び複数の予備記憶装置と通信路を介して通信可能に接続されるストレージ制御装置であって、
前記複数の記憶装置のうち復元対象記憶装置以外の冗長用記憶装置から読み出した冗長データを用いて、前記復元対象記憶装置のデータを、前記複数の予備記憶装置のうちの第１の予備記憶装置に再構成する再構成処理部と、
前記再構成処理部による再構成を行なう際に前記冗長用記憶装置から読み出したデータを、前記複数の予備記憶装置のうちの前記冗長用記憶装置に対応する第２の予備記憶装置に格納することで、前記冗長用記憶装置の複製を行なう複製処理部と
を備えることを特徴とする、ストレージ制御装置。
【請求項２】
リード要求受信時には、前記冗長用記憶装置と、当該冗長用記憶装置のデータを格納する前記第２の予備記憶装置とを併用することを特徴とする、請求項１記載のストレージ制御装置。
【請求項３】
ライト要求受信時には、前記冗長用記憶装置及び当該冗長用記憶装置のデータを格納する前記予備記憶装置の双方に書き込みを行なうことを特徴とする、請求項１又は２記載のストレージ制御装置。
【請求項４】
前記記憶装置に対して前記予備記憶装置を割り当てる割当処理部を備え、
前記複製処理部が、前記冗長用記憶装置から読み出したデータを、前記割当処理部が割り当てた前記予備記憶装置に格納することを特徴とする、請求項１〜３のいずれか１項に記載のストレージ制御装置。
【請求項５】
前記記憶装置に割り当て可能な前記予備記憶装置の数が前記記憶装置の数よりも少ない場合に、
前記割当処理部が、
前記予備記憶装置を、安定度の低い前記記憶装置から優先して割り当てることを特徴とする、請求項４記載のストレージ制御装置。
【請求項６】
前記再構成処理部による再構成の完了後に、安定度の低い前記冗長用記憶装置に代えて、当該安定度の低い前記冗長用記憶装置の複製がされた前記予備記憶装置を用いて、前記冗長構成を変更する冗長構成変更部を備えることを特徴とする、請求項１〜請求項５のいずれか１項に記載のストレージ制御装置。
【請求項７】
冗長構成がなされた複数の記憶装置と、
複数の予備記憶装置と、
前記複数の記憶装置のうち復元対象記憶装置以外の冗長用記憶装置から読み出した冗長データを用いて、前記復元対象記憶装置のデータを、前記複数の予備記憶装置のうちの第１の予備記憶装置に再構成する再構成処理部と、
前記再構成処理部による再構成を行なう際に前記冗長用記憶装置から読み出したデータを、前記複数の予備記憶装置のうちの前記冗長用記憶装置に対応する第２の予備記憶装置に格納することで、前記冗長用記憶装置の複製を行なう複製処理部と
を備えることを特徴とする、ストレージシステム。
【請求項８】
冗長構成がなされた複数の記憶装置及び複数の予備記憶装置と通信路を介して通信可能に接続されるコンピュータに、
前記複数の記憶装置のうち復元対象記憶装置以外の冗長用記憶装置から読み出した冗長データを用いて、前記復元対象記憶装置のデータを、前記複数の予備記憶装置のうちの第１の予備記憶装置に再構成し、
前記再構成を行なう際に前記冗長用記憶装置から読み出したデータを、前記複数の予備記憶装置のうちの前記冗長用記憶装置に対応する第２の予備記憶装置に格納することで、前記冗長用記憶装置の複製を行なう
処理を実行させることを特徴とする、制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置，ストレージシステム及び制御プログラムに関する。
【背景技術】
【０００２】
情報通信技術（Information and Communication Technology；ＩＣＴ）システムの普及に伴い、近年、Hard Disk Drive（ＨＤＤ）に代表される記憶装置（以下、「ディスク」
と総称する）を複数使用するディスクアレイ装置が広く用いられるようになっている。このようなディスクアレイ装置では、一般に、Redundant Arrays of Inexpensive Disks（ＲＡＩＤ）技術を用いて、データが２台以上のディスクに冗長化されて記録されることにより、データの安全性が担保されている。
【０００３】
ここで、ＲＡＩＤとは、複数のディスクを組合せて、仮想的な１台のディスク（ＲＡＩＤグループ）として管理する技術を指す。ＲＡＩＤには、各ディスクへのデータ配置及び冗長性に応じて、ＲＡＩＤ０〜ＲＡＩＤ６のレベルが存在する。
ＲＡＩＤ装置では、ＲＡＩＤを構成する複数ディスクにまたがるストライプ内にパリティデータを入れてＲＡＩＤを構成するディスクの故障に対してデータを保護する。そして、このＲＡＩＤ構成上にＬＵＮ（Logical Unit Number）を割り当ててサーバにディスク領域として見せて使用させている。
【０００４】
データが冗長化されたディスクアレイ装置において、ディスクが故障すると、故障したディスクに記憶されていたデータが再構築されて、予備ディスクなどの代替ディスクに格納される。このような処理は、一般にリビルド処理と呼ばれる。リビルド処理が実行されることで、データの冗長性が回復する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１０−２９３６５８号公報
【特許文献２】特開２００５−７８４３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、このような従来のディスクアレイ装置において、例えば、ＲＡＩＤ上に複数のＬＵＮがある場合に、リビルド処理により一部のＬＵＮの復元が完了していても、ＲＡＩＤ内で更にもう１本ディスクが故障した場合には、ＲＡＩＤ内の全データがロストし、復元されていたＬＵＮのデータも失われてしまう。
また、ＲＡＩＤ装置上に複数のＬＵＮがある場合に、復元が完了しているＬＵＮであっても、リビルドの全処理が終わるまでは、このリビルド処理による性能劣化の影響を受ける。
【０００７】
１つの側面では、本発明は、記憶装置の故障時における信頼性を向上させることを目的とする。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の１つとして位置付けることができる。
【課題を解決するための手段】
【０００８】
このため、このストレージ制御装置は、冗長構成がなされた複数の記憶装置及び複数の予備記憶装置と通信路を介して通信可能に接続されるストレージ制御装置であって、前記複数の記憶装置のうち復元対象記憶装置以外の冗長用記憶装置から読み出した冗長データを用いて、前記復元対象記憶装置のデータを、前記複数の予備記憶装置のうちの第１の予備記憶装置に再構成する再構成処理部と、前記再構成処理部による再構成を行なう際に前記冗長用記憶装置から読み出したデータを、前記複数の予備記憶装置のうちの前記冗長用記憶装置に対応する第２の予備記憶装置に格納することで、前記冗長用記憶装置の複製を行なう複製処理部とを備える。
【発明の効果】
【０００９】
一実施形態によれば、記憶装置の故障時における信頼性を向上させることができる。
【図面の簡単な説明】
【００１０】
【図１】実施形態の一例としてのストレージ装置を備えるストレージシステムのハードウェア構成を模式的に示す図である。
【図２】実施形態の一例としてのストレージ装置の機能構成を示す図である。
【図３】実施形態の一例としてのストレージ装置におけるＬＵＮ管理テーブルの構成を例示する図である。
【図４】実施形態の一例としてのストレージ装置におけるリビルド処理を説明する図である。
【図５】実施形態の一例としてのストレージ装置におけるリビルド処理を説明する図である。
【図６】実施形態の一例としてのストレージ装置におけるリビルド処理を説明する図である。
【図７】実施形態の一例としてのストレージ装置におけるＲＡＩＤ構成変更部によるＲＡＩＤ構成変更方法を示す図である。
【図８】実施形態の一例としてのストレージ装置におけるリビルド処理の概要を説明するフローチャートである。
【図９】実施形態の一例としてのストレージ装置におけるストレージ構成の決定方法をフローチャートである。
【図１０】実施形態の一例としてのストレージ装置におけるリビルド処理を説明するフローチャートである。
【図１１】実施形態の一例としてのストレージ装置における予備ディスクの解放要求の有無の確認処理の詳細を説明するフローチャートである。
【図１２】実施形態の一例としてのストレージ装置におけるリビルド処理後の処理を説明するフローチャートである。
【図１３】実施形態の一例としてのストレージ装置におけるリード受信時の処理を説明するフローチャートである。
【図１４】実施形態の一例としてのストレージ装置におけるライト受信時の処理を説明するフローチャートである。
【発明を実施するための形態】
【００１１】
以下、図面を参照して本ストレージ制御装置，ストレージシステム及び制御プログラムに係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。又、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００１２】
図１は実施形態の一例としてのストレージ装置１を備えるストレージシステム４のハードウェア構成を模式的に示す図である。
ストレージシステム４においては、ストレージ装置１と１つ以上（図１に示す例では２つ）のホスト装置２ａ，２ｂとが冗長化された複数のパスを介して接続されている。
ストレージ装置１は、ドライブエンクロージャ（ＤＥ：Drive Enclosure）３０に格納された記憶装置３１を仮想化して、仮想ストレージ環境を形成する。そしてストレージ装置１は、仮想ボリュームを上位装置であるホスト装置２ａ，２ｂに提供する。
【００１３】
ホスト装置２ａ，２ｂは、例えば、サーバ機能をそなえた情報処理装置であり、本ストレージ装置１との間において、ＮＡＳ（Network Attached Storage）やＳＡＮ（Storage Area Network）のコマンドを送受信する。これらのホスト装置２ａ，２ｂは、同様の構成を有している。
以下、ホスト装置を示す符号としては、複数のホスト装置のうち１つを特定する必要があるときには符号２ａ，２ｂを用いるが、任意のホスト装置を指すときには符号２を用いる。
【００１４】
ホスト装置２は、図示しないＣＰＵ（Central Processing Unit）やメモリを備え、ＣＰＵがメモリ等に格納されたＯＳ（Operating System）やプログラムを実行することで、種々の機能を実行する。
ホスト装置２は、例えば、ストレージ装置１に対してＮＡＳにおけるリード／ライト等のディスクアクセスコマンドを送信することにより、ストレージ装置１が提供するボリュームにデータの書き込みや読み出しを行なう。
【００１５】
そして、本ストレージ装置１は、ホスト装置２からボリュームに対して行なわれる入出力要求（例えば、リードコマンドやライトコマンド）に応じて、このボリュームに対応する実ストレージに対して、データの読み出しや書き込み等の処理を行なう。なお、ホスト装置２からの入出力要求のことをＩＯコマンドという場合がある。
スイッチ３ａ，３ｂは、ホスト装置２ａ，２ｂとストレージ装置１のコントローラ１００との通信を中継する中継装置である。各スイッチ３ａ，３ｂは、それぞれホスト装置２ａ，２ｂに接続されるとともに、コントローラ１００に接続されている。
【００１６】
図１に示す例においては、コントローラ１００に２つのポート１０１ａ，１０１ｂが備えられている。そして、ポート１０１ａにスイッチ３ａが、又、ポート１０１ｂにスイッチ３ｂが、それぞれ接続され、更に、各スイッチ３ａ，３ｂにそれぞれホスト装置２ａ，２ｂが接続されている。
ストレージ装置１は、図１に示すように、１つ以上（本実施形態では１つ）のコントローラ１００及び１つ以上（図１に示す例では１つ）のドライブエンクロージャ（Drive Enclosure：ＤＥ）３０をそなえる。
【００１７】
ドライブエンクロージャ３０には、１以上（図１に示す例では８つ）の記憶装置（物理ディスク）３１ａ−１〜３１ａ−４，３１ｂ−１〜３１ｂ−４が搭載され、これらの記憶装置３１ａ−１〜３１ａ−４，３１ｂ−１〜３１ｂ−４の記憶領域（実ボリューム，実ストレージ）を、本ストレージ装置１に対して提供する。
以下、記憶装置を示す符号としては、複数の記憶装置のうち１つを特定する必要があるときには符号３１ａ−１〜３１ａ−４，３１ｂ−１〜３１ｂ−４を用いるが、任意の記憶装置を指すときには符号３１を用いる。又、記憶装置３１をディスク３１という場合がある。
【００１８】
また、以下、記憶装置３１ａ−１，３１ａ−２，３１ａ−３，３１ａ−４を、disk1，disk2，disk3，disk4とそれぞれ表す場合がある。更に、以下、記憶装置３１ｂ−１，３１ｂ−２，３１ｂ−３，３１ｂ−４を、disk1’，disk2’，disk3’，disk4’とそれぞれ表す場合がある。
記憶装置３１は、ハードディスクドライブ（Hard disk drive：ＨＤＤ）、ＳＳＤ（Solid State Drive）等の記憶装置であって、種々のデータを格納するものである。
【００１９】
ドライブエンクロージャ３０は、例えば複数段のスロット（図示省略）を備えて構成され、これらのスロットに記憶装置３１を挿入することにより、実ボリューム容量を随時変更することができる。
また、ドライブエンクロージャ３０に備えられた複数の記憶装置３１を用いてＲＡＩＤ（Redundant Arrays of Inexpensive Disks）が構成される。図１に示す例においては、記憶装置３１ａ−１〜３１ａ−４を用いてＲＡＩＤが構成されており、これらの記憶装置３１ａ−１〜３１ａ−４がＲＡＩＤグループ３０ａを構成している。
【００２０】
このＲＡＩＤグループ３０ａを構成する記憶装置３１ａ−１〜３１ａ−４をＲＡＩＤ構成ディスク３１ａという場合がある。
記憶装置３１ｂ−１〜３１ｂ−４は、ＲＡＩＤディスクグループ内のディスク故障にそなえて予備的に設けられた予備ディスクであり、ホットスペア（Hot spare；ＨＳ）として用いられる。これらの記憶装置３１ｂ−１〜３１ｂ−４が予備ディスクグループ３０ｂを構成している。以下、記憶装置３１ｂを予備ディスク３１ｂという場合がある。
【００２１】
ドライブエンクロージャ３０は、コントローラ１００のデバイスアダプタ（Device Adapter：ＤＡ）１０３，１０３とそれぞれ接続されている。
コントローラエンクロージャ４０は、１以上（図１に示す例では１つ）のコントローラ１００を備える。
コントローラ１００は、ストレージ装置１内の動作を制御するストレージ制御装置であり、ホスト装置２から送信されるＩＯコマンドに従って、ドライブエンクロージャ３０の記憶装置３１へのアクセス制御等、各種制御を行なう。
【００２２】
なお、図１に示す例においては、ストレージ装置１に１つのコントローラ１００が備えられているが、これに限定されるものではなく、２つ以上のコントローラ１００を備えてもよい。すなわち、複数のコントローラ１００により冗長化を行ない、通常は、いずれかのコントローラ１００がプライマリとして各種制御を行ない、このプライマリコントローラ１００の故障時には、セカンダリのコントローラ１００がプライマリとしての動作を引き継いでもよい。
【００２３】
コントローラ１００はポート１０１ａ，１０１ｂを介してホスト装置２に接続される。そして、コントローラ１００は、ホスト装置２から送信されるリード／ライト等のＩＯコマンドを受信し、ＤＡ１０３等を介して記憶装置３１の制御を行なう。
コントローラ１００は、図１に示すように、ポート１０１ａ，１０１ｂと複数（図１に示す例では２つ）のＤＡ１０３，１０３とをそなえるとともに、ＣＰＵ１１０，メモリ１０６，ＳＳＤ１０７及びＩＯＣ（Input Output Controller）１０８をそなえる。
【００２４】
以下、ポートを示す符号としては、複数のポートのうち１つを特定する必要があるときには符号１０１ａ，１０１ｂを用いるが、任意のポートを指すときには符号１０１を用いる。
ポート１０１は、ホスト装置２等から送信されたデータを受信したり、コントローラ１００から出力するデータをホスト装置２等に送信する。すなわち、ポート１０１は、ホスト装置等の外部装置との間でのデータの入出力（Ｉ／Ｏ）を制御する。
【００２５】
ポート１０１ａは、ＳＡＮを介してホスト装置２と通信可能に接続され、例えば、ＦＣ（Fibre Channel）インタフェース等のネットワークアダプタに備えられるＦＣポートである。
ポート１０１ｂは、ＮＡＳを介してホスト装置２と通信可能に接続され、例えば、ＬＡＮ（Local Area Network）インタフェースのＮＩＣポートである。コントローラ１００は、これらのポート１０１により通信回線を介してホスト装置２等と接続され、Ｉ／Ｏコマンドの受信やデータの送受信等を行なう。
【００２６】
そして、ポート１０１ａにスイッチ３ａが、又、ポート１０１ｂにスイッチ３ｂが、それぞれ接続され、更に、各スイッチ３ａ，３ｂにそれぞれホスト装置２ａ，２ｂが接続されている。
すなわち、ホスト装置２ａ，２ｂは、それぞれスイッチ３ａを介してポート１０１ａに接続されるとともに、スイッチ３ｂを介してポート１０１ｂに接続されている。
【００２７】
なお、図１に示す例においてはコントローラ１００に２つのポート１０１ａ，１０１ｂが備えられているが、これに限定されるものではなく、１つもしくは３つ以上のポートを備えてもよい。
ＤＡ１０３は、ドライブエンクロージャ３０や記憶装置３１等と通信可能に接続するためのインタフェースである。ＤＡ１０３にはドライブエンクロージャ３０の記憶装置３１が接続され、コントローラ１００は、ホスト装置２から受信したＩＯコマンドに基づき、これらの記憶装置３１に対するアクセス制御を行なう。
【００２８】
コントローラ１００は、これらのＤＡ１０３を介して、記憶装置３１に対するデータの書き込みや読み出しを行なう。又、図１に示す例においては、コントローラ１００に２つのＤＡ１０３がそなえられている。そして、コントローラ１００において、各ＤＡ１０３にドライブエンクロージャ３０が接続されている。これにより、ドライブエンクロージャ３０の記憶装置３１には、コントローラ１００からデータの書き込みや読み出しを行なうことができる。
【００２９】
ＳＳＤ１０７は、ＣＰＵ１１０が実行するプログラムや種々のデータ等を格納する記憶装置である。
メモリ１０６は、種々のデータやプログラムを一時的に格納する記憶装置であり、図示しないメモリ領域とキャッシュ領域とをそなえる。キャッシュ領域は、ホスト装置２から受信したデータや、ホスト装置２に対して送信するデータを一時的に格納する。メモリ領域には、ＣＰＵ１１０がプログラムを実行する際に、データやプログラムを一時的に格納・展開して用いる。
【００３０】
このメモリ１０６には、後述するＲＡＩＤ制御部１２によるＲＡＩＤ制御に用いられる、仮／実ボリューム変換テーブル６２やディスク構成情報６３，ＲＡＩＤ構成テーブル６４等が格納される。仮／実ボリューム変換テーブル６２は、ホスト装置２に提供する仮想ボリュームのアドレスを、記憶装置３１の物理アドレス（実アドレス）にマッピングしているテーブルである。
【００３１】
ディスク構成情報６３は、本ストレージ装置１に備えられる記憶装置３１を管理する情報である。ディスク構成情報６３において、例えば、各記憶装置３１のディスク種別や、各記憶装置３１がライブエンクロージャ３０のどのスロットに取り付けられているか、又、どの記憶装置３１が予備ディスク３１であるか等の情報が管理される。
ＲＡＩＤ構成テーブル６４は、後述するＲＡＩＤ制御部１２がＲＡＩＤの管理を行なうために用いる情報であり、例えば、ＲＡＩＤ種別や、ＲＡＩＤグループ３０ａを構成する記憶装置３１ａを特定する情報等が格納される。
【００３２】
なお、これらの仮／実ボリューム変換テーブル６２やディスク構成情報６３，ＲＡＩＤ構成テーブル６４は既知であるので、その詳細な説明は省略する。
また、メモリ１０６には、後述するリビルド処理部１３がリビルド処理を行なう際に、各リビルド元ディスク３１ａから読み出されたデータが一時的に格納される。
さらに、メモリ１０６には、後述する、ＬＵＮ管理テーブル６１が格納される。ＬＵＮ管理テーブル６１の詳細は後述する。
【００３３】
ＩＯＣ１０８は、コントローラ１００内におけるデータ転送を制御する制御装置であり、例えば、メモリ１０６に格納されたデータをＣＰＵ１１０を介することなく転送させるＤＭＡ転送（Direct Memory Access）を実現する。
ＣＰＵ１１０は、種々の制御や演算を行なう処理装置であり、例えばマルチコアプロセッサ（マルチＣＰＵ）である。ＣＰＵ１１０は、ＳＳＤ１０７等に格納されたＯＳやプログラムを実行することにより、種々の機能を実現する。
【００３４】
図２は実施形態の一例としてのストレージ装置１の機能構成を示す図である。
この図２に示すように、ストレージ装置１は、ＩＯ制御部１１，ＲＡＩＤ制御部１２，リビルド処理部１３，割当処理部１４，ミラーリング処理部１５及びＲＡＩＤ構成変更部１６として機能する。
そして、コントローラ１００のＣＰＵ１１０が、制御プログラムを実行することにより、これらのＩＯ制御部１１，ＲＡＩＤ制御部１２，リビルド処理部１３，割当処理部１４，ミラーリング処理部１５及びＲＡＩＤ構成変更部１６として機能する。
【００３５】
なお、これらのＩＯ制御部１１，ＲＡＩＤ制御部１２，リビルド処理部１３，割当処理部１４，ミラーリング処理部１５及びＲＡＩＤ構成変更部１６としての機能を実現するためのプログラム（制御プログラム）は、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等），ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供するようにしてもよい。
【００３６】
ＩＯ制御部１１，ＲＡＩＤ制御部１２，リビルド処理部１３，割当処理部１４，ミラーリング処理部１５及びＲＡＩＤ構成変更部１６としての機能を実現する際には、内部記憶装置（本実施形態ではＳＳＤ１０７やメモリ１０６）に格納されたプログラムがコンピュータのマイクロプロセッサ（本実施形態ではＣＰＵ１１０）によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行するようにしてもよい。
【００３７】
ＲＡＩＤ制御部１２は、記憶装置３１ａを用いてＲＡＩＤを実現し、ＲＡＩＤを構成する記憶装置３１の制御を行なう。すなわち、ＲＡＩＤ制御部１２は、複数の記憶装置３１ａを用いた冗長構成を設定する。
このＲＡＩＤ制御部１２は、上述したＲＡＩＤ構成テーブル６４を作成・管理して、ＲＡＩＤ構成ディスク３１ａを用いてＲＡＩＤグループ３０ａを設定し、各種ＲＡＩＤ制御を行なう。なお、ＲＡＩＤ制御部１２によるＲＡＩＤの管理は既知の手法で実現することができ、その説明は省略する。
【００３８】
また、ＲＡＩＤ制御部１２は、記憶装置３１を用いてＬＵＮの設定・管理を行ない、ホスト装置２はこの設定されたＬＵＮに対してデータアクセスを行なう。ＲＡＩＤ制御部１２は、ＬＵＮ管理テーブル６１を用いて、ＬＵＮの管理を行なう。
図３は実施形態の一例としてのストレージ装置１におけるＬＵＮ管理テーブル６１の構成を例示する図である。
【００３９】
ＬＵＮ管理テーブル６１はＬＵＮ毎に備えられる管理情報であり、この図３に例示するＬＵＮ管理テーブル６１はＬＵＮ１についての情報を示す。
ＬＵＮ管理テーブル６１は、項目と内容と備考とを関連付けて構成されている。図３に示す例においては、ＬＵＮ管理テーブル６１に１２個の項目が登録されており、これらの項目を特定するための項番１〜１２が設定されている。
【００４０】
具体的には、項目として、ＬＵＮ名，構成ディスク名リスト，各ディスク上の位置、サイズ，故障ディスク名，ＬＵＮの状態，利用予備ディスク名リスト，ディスクの安定度リスト，リビルド済サイズ，元ディスクのリード／ライト中カウンタ，予備ディスクのリード／ライト中カウンタ，元ディスクのＩＯ禁止フラグ及び予備ディスクのＩＯ禁止フラグが登録されており、これらに対して１〜１２の項（項番）が設定されている。
【００４１】
項１のＬＵＮ名には、ＬＵＮを特定する識別情報が登録され、図３に示す例においては“LUN1”が登録されている。項２の構成ディスク名リストは、そのＬＵＮを構成する記憶装置３１を示す情報が登録される。すなわち、構成ディスク名リストには、ＲＡＩＤ構成ディスク３１ａを示す情報が格納される。図３に示す例においては、構成ディスク名リストにdisk1，disk2，disk3，disk4が登録されている。
【００４２】
項３の各ディスク上の位置、サイズは、そのＬＵＮを構成するＲＡＩＤ構成ディスク３１ａ上における、当該ＬＵＮのデータの格納位置とサイズを示す情報が登録される。なお、位置としては、例えばオフセット（Offset）値が登録される。
項４の故障ディスク名は、そのＬＵＮを構成するＲＡＩＤ構成ディスク３１ａにおいて、故障の発生が検知された記憶装置３１ａを示す情報が登録され、図３に示す例においては“disk2”が登録されている。
【００４３】
項５のＬＵＮの状態は、そのＬＵＮの状態を示す情報が格納され、図３に示す例においては、正常な状態であることを示す“正常”、リビルド中であることを示す“rebuild中”及び、リビルド済みであることを示す“rebuild済”のいずれかが格納される。
項６の利用予備ディスク名リストは、各ＲＡＩＤ構成ディスク３１ａに対応付けられている予備ディスク３１ｂを示す情報が格納される。なお、このＲＡＩＤ構成ディスク３１ａに対応づけられる予備ディスク３１ｂは、後述する割当処理部１４によって設定される。
【００４４】
図３に示す例においては、項２の構成ディスク名リストのdisk1，disk2，disk3及びdisk4に対して、disk1’，disk2’，disk3’及びdisk4’が対応付けられている。すなわち、disk1とdisk1’とが対をなし、同様に、disk2，disk3及びdisk4がdisk2’，disk3’及びdisk4’とそれぞれ対をなす。
また、ＲＡＩＤ構成ディスク３１ａの数に対して割り当て可能な予備ディスク３１ｂの数（本数）が少ない場合には、後述の如く、一部のＲＡＩＤ構成ディスク３１ａに対してのみ予備ディスク３１ｂが割り当てられる。図３においては、このように予備ディスク３１ｂの数が少ない場合の例も表示されており、割り当てられた予備ディスク３１ｂのみが示され、割り当てられる予備ディスク３１ｂがない部分には、横線（−）を記している。
【００４５】
項７のディスクの安定度リストには、そのＬＵＮを構成するＲＡＩＤ構成ディスク３１ａを示す情報が、その安定度が高い順に登録される。図３に示す例においては、ＲＡＩＤ構成ディスク３１ａが、disk1，disk4，disk3の順で登録されている。なお、disk2は故障中であるので、このディスクの安定度リストには登録されない。
項８のリビルド済サイズには、項２の故障ディスクに関するリビルド処理が実行された場合に、その復元されたデータの合計値（データサイズ）が進捗状況として登録される。このリビルド済みサイズの初期値は０であり、リビルド処理の進行に伴い、その値が大きくなる。
【００４６】
項９の元ディスクのリード／ライト中カウンタには、そのＬＵＮを構成する各ＲＡＩＤ構成ディスク（元ディスク）３１ａのそれぞれについて、実行中のリードアクセス及びライトアクセスの数が格納される。すなわち、各ＲＡＩＤ構成ディスク３１ａへのＩＯアクセス状態をリアルタイム表す。
図３に示す例においては、各ＲＡＩＤ構成ディスク３１ａのそれぞれに対して、リード中カウンタの値ｎとライト中カウンタの値ｎとを、（ｎ，ｎ）の形式で示している。
【００４７】
ホスト装置２からＬＵＮに対するリード要求もしくはライト要求のＩＯコマンドを受信すると、例えば、後述するＩＯ制御部１１が、そのアクセス先のＲＡＩＤ構成ディスク３１ａについてのリード中カウンタもしくはライト中カウンタの値をインクリメントする。又、ＩＯ制御部１１は、リードアクセスもしくはライトアクセスが完了すると、対応するカウンタの値をデクリメントする。
【００４８】
この元ディスクのリード／ライト中カウンタの値を参照することで、各ＲＡＩＤ構成ディスク３１ａがＩＯ処理を実行中であるか否かを判断することができる。
項１０の予備ディスクのリード／ライト中カウンタには、各予備ディスク３１ｂのそれぞれについて、実行中のリードアクセス及びライトアクセスの数が格納される。すなわち、各予備ディスク３１ｂへのＩＯアクセス状態を示す。
【００４９】
図３に示す例においては、各予備ディスク３１ｂのそれぞれに対して、リード中カウンタの値ｎとライト中カウンタの値ｎとを、（ｎ，ｎ）の形式で示している。
例えば、後述するミラーリング処理部１５が、その予備ディスク３１ｂに対してデータのライトを行なう際にライト中カウンタの値をインクリメントする。又、ミラーリング処理部１５は、ライト処理が完了すると、対応するカウンタの値をデクリメントする。
【００５０】
この予備ディスクのリード／ライト中カウンタの値を参照することで、各予備ディスク３１ｂがＩＯ処理を実行中であるか否かを判断することができる。
項１１の元ディスクのＩＯ禁止フラグは、そのＬＵＮを構成する各ＲＡＩＤ構成ディスク３１ａのそれぞれについて、ＩＯ処理が禁止されているか否かを示す情報が格納される。図３に示す例においては、“０”もしくは“１”が格納され、“１”がフラグとして設定されている場合には、そのＲＡＩＤ構成ディスク３１ａへのＩＯが禁止されていることを示す。
【００５１】
項１２の予備ディスクのＩＯ禁止フラグは、予備ディスク３１ｂのそれぞれについて、ＩＯ処理が禁止されているか否かを示す情報が格納される。図３に示す例においては、“０”もしくは“１”が格納され、“１”がフラグとして設定されている場合には、その予備ディスク３１ｂへのＩＯが禁止されていることを示す。
リビルド処理部１３は、例えば、いずれかのディスク３１ａの故障を検出した場合に、リビルド処理を実行制御する。以下、故障が検出されたディスク３１ａを故障ディスク３１ａという場合がある。この故障ディスク３１ａが復元対象記憶装置に相当する。なお、ディスク３１ａの故障は、例えば媒体エラー等の所定のエラーが閾値として設定された頻度以上で生じる場合に発生したと判断される。
【００５２】
リビルド処理は、ＲＡＩＤグループの冗長性を自動回復する処理であり、ＲＡＩＤグループに属する記憶装置３１ａが故障した際に、代理として用いられる予備ディスク（代理ディスク，第１の予備記憶装置）３１ｂに対し、故障ディスク３１ａのデータを、同一ＲＡＩＤグループにおける故障ディスク３１ａ以外の記憶装置３１ａのデータを用いて再構築する処理である。以下、同一ＲＡＩＤグループにおける故障ディスク３１ａ以外の記憶装置（冗長用記憶装置）３１ａをリビルド元ディスク３１ａという場合がある。又、このリビルド元ディスクを単に元ディスクという場合もある。
【００５３】
つまり、リビルド処理部１３は、故障ディスク３１ａの発生を検出すると、故障ディスク３１ａ以外のリビルド元ディスク３１ａのデータを用いて、故障ディスク３１ａに代わる代理ディスク（リビルド先ディスク）３１ｂに故障ディスク３１ａのデータを再構築する。
このように、リビルド処理部１３は、複数のＲＡＩＤ構成ディスク３１ａのうち故障ディスク（復元対象記憶装置）３１ａ以外のリビルド元ディスク（冗長用記憶装置）３１ａから読み出した冗長データを用いて、故障ディスク３１ａのデータを、予備ディスク（第１の予備記憶装置）に再構成する再構成処理部として機能する。
【００５４】
リビルド処理部（データ復元部）１３による故障ディスク３１ａのデータの復元は、既知の手法で実現することができる。
同一のＲＡＩＤグループ３０ａを構成する複数の記憶装置３１ａは、各記憶装置３１ａのデータが他の複数の記憶装置（冗長用記憶装置）３１ａに分散してコピーされることにより、冗長化されている。
【００５５】
リビルド処理部１３は、故障ディスク３１ａと同じＲＡＩＤグループを構成する複数の記憶装置（冗長用記憶装置）３１ａにそれぞれ格納されたデータを読み出して、代替ディスク３１ｂに格納することで、故障ディスク３１ａのデータを代替ディスク３１ｂに復元（データディスク構築）する。
例えば、メモリ１０６の所定の領域に、格納した故障ディスク３１ａ以外の各リビルド元ディスク３１ａから読み出したデータを格納し、このデータに対してパリティを用いたＸＯＲ（排他的論理和）演算を行なうことで、故障ディスク３１ａのデータの復元を行なう。
【００５６】
図４は実施形態の一例としてのストレージ装置１におけるリビルド処理を説明する図である。この図４に示す例においては、ＲＡＩＤグループ３０ａは、４本（３本＋１本）のＲＡＩＤ構成ディスク３１ａ−１〜３１ａ−４によりＲＡＩＤ５を実現している。又、これらのＲＡＩＤ構成ディスク３１ａ−１〜３１ａ−４のうち、ディスク３１ａ−２の故障が検知された場合を示す。
【００５７】
また、この図４に示す例においては、ＲＡＩＤグループ３０ａのディスク３１ａ−１〜３１ａ−４を用いて３つのＬＵＮ１〜３が形成されており、これらのうちＬＵＮ１のデータ（Data1-2）を復元する例を示している。
リビルド処理部１３は、ディスク３１ａ−２の故障を検出すると、同一ＲＡＩＤグループ３０ａ内のリビルド元ディスク３１ａ−１４，３１ａ−３，３１ａ−４のデータ（Data1-1，1-3，1-4）を用いて、故障ディスク３１ａ−２のデータ（復元Date1-2）を作成する（図４中の破線参照）。
【００５８】
そして、この作成した故障ディスク３１ａ−２のデータ（復元Date1-2）を、故障ディスク３１ａ−２に代わる代替ディスク（リビルド先ディスク）３１ｂ−２に格納することで、故障ディスク３１ａ−２を再構築する。
ＲＡＩＤグループ３０ａにおいて、複数のＬＵＮが形成されている場合には、リビルド処理部１３はＬＵＮ毎にリビルド処理を行なう。又、リビルド処理部１３は、複数のＬＵＮについてリビルドを行なう場合には、これらの複数のＬＵＮの一覧（図示省略）と、当該一覧においてリビルド処理の進捗を示すポインタとを用いて、リビルド処理の進捗状況を管理する。
【００５９】
ミラーリング処理部（複製処理部）１５は、リビルド処理部１３によるリビルド処理中に、ＲＡＩＤグループ３０ａ内のリビルド元ディスク（冗長用記憶装置）３１ａからそれぞれ読み出したデータを、各リビルド元ディスク３１ａに割り当てられた予備ディスク（第２の予備記憶装置）３１ｂに格納する。これにより、ミラーリング処理部１５は、各リビルド元ディスク３１ａを予備ディスク３１ｂに複製する。
【００６０】
図４に示す例においては、リビルド元ディスク３１ａ−１に対して予備ディスク３１ｂ−１が対応付けられており、同様に、リビルド元ディスク３１ａ−３に対して予備ディスク３１ｂ−３が、リビルド元ディスク３１ａ−４に対して予備ディスク３１ｂ−４が、それぞれ対応付けられている。なお、このようなリビルド元ディスク３１ａへの予備ディスク３１ｂの対応付けは、後述する割当処理部１４が行なう。
【００６１】
ミラーリング処理部１５は、リビルド処理部１３によるリビルド処理中に、ＲＡＩＤグループ３０ａ内のリビルド元ディスク（冗長用記憶装置）３１ａから読み出されメモリ１０６に格納されたデータを、対応する予備ディスク３１ｂに格納（デッドコピー）することで、予備ディスク３１ｂへのリビルド元ディスク３１ａの複製を行なう。
すなわち、図４に示す例においては、リビルド元ディスク３１ａ−１，３１ａ−３，３１ａ−４のＬＵＮ１の各データ（Data1-1，1-3，1-4）が、予備ディスク３１ｂ−１，３１ｂ−３，３１ｂ−４にそれぞれコピーされる（矢印Ｐ１〜Ｐ３参照）。
【００６２】
割当処理部１４は、リビルド元ディスク３１ａに対して予備ディスク３１ｂを対応付ける。以下、リビルド元ディスク３１ａに対して予備ディスク３１ｂを対応付けることを、「割り当てる」と表現する場合がある。
また、予備ディスク３１ｂのうち、ＲＡＩＤ構成ディスク３１ａに対応付けられていないディスク３１ｂを特に未割当予備ディスク３１ｂという。
【００６３】
図４に示した例においては、リビルド元ディスク３１ａのそれぞれに予備ディスク３１ｂが対応付けられている。
しかしながら、使用可能な予備ディスク３１ｂの数がリビルド元ディスク３１ａの数に足りず、予備ディスク３１ｂを全てのリビルド元ディスク３１ａに対応付けることができない場合もある。このような場合に、割当処理部１４は、一部のリビルド元ディスク３１ａに対してだけ予備ディスク３１ｂを割り当てる。
【００６４】
割当処理部１４は、ＲＡＩＤサイズ（Ｐ）とスペアｄｉｓｋ数（ｍ）と制限値（Ｌ）とを参照することで、リビルド時に使用する予備ディスク３１ｂの数を決定する。
ここで、ＲＡＩＤサイズ（Ｐ）は、ＲＡＩＤグループ３０ａにおいて実現されるＲＡＩＤを構成する記憶装置３１ａの数（本数）であり、ＲＡＩＤ種類により決定される。例えば、ＲＡＩＤ５の場合は４本（３本＋１本）である（Ｐ=４）。このＲＡＩＤサイズは、ＲＡＩＤ構成ディスク３１ａの数でもある。
【００６５】
スペアｄｉｓｋ数（ｍ）は、使用可能な予備ディスク３１ｂの数であり、例えば、ディスク構成情報６３を参照することで確認することができる。制限値（Ｌ）は、例えば予備ディスク３１ｂの数（ｍ）がＲＡＩＤサイズ（Ｐ）未満の場合に、リビルド時に使用する最低限の予備ディスク３１ｂの数である。例えば、制限値Ｌ＝２の場合には、リビルド時に２本の予備ディスク３１ｂが用いられることを示す。制限値（Ｌ）は、管理者等によって予め設定される。
【００６６】
また、割当処理部１４は、予備ディスク数（ｍ）がＲＡＩＤサイズ（Ｐ）に満たない場合に、リビルド元ディスク３１ａのうち、安定度が低い、すなわち、不安定なリビルド元ディスク３１ａに対して予備ディスク３１ｂを優先して割り当てる。割当処理部１４は、例えば、ＬＵＮ管理テーブル６１の項７のディスクの安定度リストを参照することで、安定度の低い、すなわち、最も不安定なリビルド元ディスク３１ａを知ることができる。
【００６７】
図５は実施形態の一例としてのストレージ装置１におけるリビルド処理を説明する図であり、予備ディスク３１ｂが一部のリビルド元ディスク３１ａにだけ対応付けられた例を示す。
この図５に示す例においては、ＲＡＩＤ構成ディスク３１ａ−２が故障し、このＲＡＩＤ構成ディスク３１ａ−２のデータがリビルド処理により代理ディスク３１ｂ−２に復元されている（図５中の破線参照）。
【００６８】
そして、リビルド元ディスク３１ａ−１，３１ａ−３，３１ａ−４のうち、リビルド元ディスク３１ａ−３に対してだけ予備ディスク３１ｂ−３が対応付けられており、他のリビルド元ディスク３１ａ−１，３１ａ−４に対しては予備ディスク３１ｂが対応付けられていない。
全てのリビルド元ディスク３１ａに対して予備ディスク３１ｂを割り当てることができない場合には、割当処理部１４は安定度の低い一部のリビルド元ディスク３１ａに対してだけ予備ディスク３１ｂが割り当てる。
【００６９】
このように、安定度の低い一部のリビルド元ディスク３１ａに対してだけ予備ディスク３１ｂが割り当てられた場合には、ミラーリング処理部１５は、この予備ディスク３１ｂが割り当てられているリビルド元ディスク３１ａのデータを、当該リビルド元ディスク３１ａに対して割り当てられた予備ディスク３１ｂにコピーする。
図５に示す例においては、リビルド元ディスク３１ａ−３のＬＵＮ１のデータ（Data1-3）が、予備ディスク３１ｂ−３にコピーされる（矢印Ｐ４参照）。
【００７０】
すなわち、ミラーリング処理部１５は、リビルド処理部１３によるリビルド処理中に、リビルド元ディスク３１ａ−３から読み出されメモリ１０６に格納されたデータを、対応する予備ディスク３１ｂ−３に格納（デッドコピー）する。これにより、予備ディスク３１ｂ−３にリビルド元ディスク３１のデータの複製が行なわれる。
余分に割り当てた予備ディスク３１ｂは、システム内で別のＲＡＩＤに故障が発生して予備ディスク３１ｂが不足となった場合に、リビルド処理が完了していなくても、対をなすＲＡＩＤ構成ディスク３１ａが安定している予備ディスク３１ｂから順番に、割り当てを解除することで未割当予備ディスク３１ｂとして利用する。
【００７１】
ＩＯ制御部１１はＬＵＮに対するＩＯ制御を行なう。このＩＯ制御部１１は、例えば、ＬＵＮに対してＦＣＰ（Fibre Channel Protocol）もしくはＮＡＳのＩＯ制御を行なう。
ＩＯ制御部１１は、上述した仮／実ボリューム変換テーブル６２を用いて、ホスト装置２からのＩＯ要求に応じて実ボリュームである記憶装置３１に対するＩＯ処理を行なう。ＩＯ制御部１１は、ホスト装置２から送信されたＩＯ要求に応じて、ＬＵＮを構成する記憶装置３１に対して、データのリードやライトを行なう。
【００７２】
図６は実施形態の一例としてのストレージ装置１におけるリビルド処理を説明する図である。この図６に示す例においては、図４と同様に、ＲＡＩＤグループ３０ａは４本のＲＡＩＤ構成ディスク３１ａ−１〜３１ａ−４によりＲＡＩＤ５を実現しており、又、代理ディスク３１ｂ−２に故障ディスク３１ａ−２のデータを再構築している。特にこの図６においては、図４に示した状態の後、ＬＵＮ１のリビルド処理が完了し、ＬＵＮ２のリビルド処理中の状態を示す。
【００７３】
リビルド処理部１３は、リビルド元ディスク３１ａ−１，３１ａ−３，３１ａ−４のＬＵＮ２のデータ（Data2-1，2-3，2-4）を用いて、故障ディスク３１ａ−２のＬＵＮ２のデータ（復元Date2-2）を作成する。そして、この作成した故障ディスク３１ａ−２のＬＵＮ２のデータ（復元Date2-2）を、故障ディスク３１ａ−２に代わる代替ディスク３１ｂ−２に格納している（図６中の破線参照）。
【００７４】
また、これに伴い、ミラーリング処理部１５が、リビルド元ディスク（冗長用記憶装置）３１ａ−１，３１ａ−３，３１ａ−４のＬＵＮ２の各データ（Data2-1，2-3，2-4）を、予備ディスク３１ｂ−１，３１ｂ−３，３１ｂ−４にそれぞれコピーしている。
この図６に示す状態において、リビルド済みのＬＵＮ１に対してホスト装置２からＩＯ要求が行なわれると、ＩＯ制御部１１は、ＲＡＩＤグループ３０ａのＲＡＩＤ構成ディスク３１ａと、予備ディスクグループ３０ｂの予備ディスク３１ｂとの両方のディスクデータ域を用いてＩＯ処理を行なう。
【００７５】
具体的には、ＬＵＮ１のデータに対するリードアクセスが行なわれると、ＲＡＩＤグループ３０ａのＲＡＩＤ構成ディスク３１ａと、予備ディスクグループ３０ｂの予備ディスク３１ｂとを併用してリード処理を行なう。例えば、ＩＯ制御部１１は、ＲＡＩＤグループ３０ａのＲＡＩＤ構成ディスク３１ａと、予備ディスクグループ３０ｂの予備ディスク３１ｂとをラウンドロビンで交互に選択してリード処理を行なう。
【００７６】
リビルド済みのＬＵＮ１のデータはＲＡＩＤグループ３０ａと予備ディスクグループ３０ｂとの両方に存在し、二重化されている。
リード処理については、これらのデータはＲＡＩＤグループ３０ａのＲＡＩＤ構成ディスク３１ａと、予備ディスクグループ３０ｂの予備ディスク３１ｂとのいずれか一方から行なえばよい。本ストレージ装置１においては、ホスト装置２からのリード要求に対して、これらのＲＡＩＤグループ３０ａと予備ディスクグループ３０ｂとの両方を用いてデータリードを行なう。すなわち、複数のデータリードを並列して実行できるようにすることでデータリードのパフォーマンスを向上させるとともに、ディスクアクセス負荷を分散させることで、記憶装置３１の寿命を延ばすことができる。
【００７７】
具体的には、ＲＡＩＤグループ３０ａのＲＡＩＤ構成ディスク３１ａと、予備ディスクグループ３０ｂの予備ディスク３１ｂとをラウンドロビンで交互に選択してリード処理を行なうことで、リビルド中であっても高いストレージアクセス性能を実現することができる。
一方、ＬＵＮ１のデータに対するライトアクセスが行なわれると、ＲＡＩＤグループ３０ａのＲＡＩＤ構成ディスク３１ａと、予備ディスクグループ３０ｂの予備ディスク３１ｂとの両方に対してライト処理を行なう。
【００７８】
このように、ライト処理については、ＲＡＩＤグループ３０ａのＲＡＩＤ構成ディスク３１ａと、予備ディスクグループ３０ｂの予備ディスク３１ｂとで重複して行なう必要がある。しかしながら、一般に、ストレージ装置においては、ライト処理に比べてリード処理の割合が多く、リード：ライト＝２：１程度であると言われているので、全体的にはライト処理を重複して行なうことによるストレージアクセス性能への影響は少ないと考えられる。
【００７９】
なお、図６に示す状態において、リビルドが完了していないＬＵＮ２，３に対してホスト装置２からＩＯコマンドが発行されると、ＩＯ制御部１１は、ＲＡＩＤグループ３０ａのＲＡＩＤ構成ディスク３１ａのディスクデータ域を用いてＩＯ処理を行なう。
例えば、ＬＵＮ２のデータに対するリードアクセスが行なわれると、ＩＯ制御部１１は、ＲＡＩＤグループ３０ａのＲＡＩＤ構成ディスク３１ａからリード処理を行なう。又、故障ディスク３１ａ−２に対するリード処理は、この故障ディスク３１ａ−２以外の各リビルド元ディスク（冗長用記憶装置）３１ａ−１，３１ａ−３，３１ａ−４のデータに対して、パリティを用いたＸＯＲ演算を行なって故障ディスク３１ａ−２のデータの復元を行なって対応する。
【００８０】
また、ＬＵＮ２のデータに対するライトアクセスが行なわれると、ＩＯ制御部１１は、ＲＡＩＤグループ３０ａのＲＡＩＤ構成ディスク３１ａに対してライト処理を行なう。又、故障ディスク３１ａ−２に対するライト処理は、この故障ディスク３１ａ−２以外の各リビルド元ディスク（冗長用記憶装置）３１ａ−１，３１ａ−３，３１ａ−４のデータに対して、パリティを用いたＸＯＲ演算を行なって故障ディスク３１ａ−２のデータの復元を行ない、この復元したデータを用いて、予備ディスクグループ３０ｂの代理ディスク３１ｂ−２に対してライト処理を行なう。
【００８１】
ＲＡＩＤ構成変更部１６は、リビルド処理部１３によるリビルド処理の完了後に、ＲＡＩＤグループ３０ａにおいて不安定なリビルド元ディスク３１ａがある場合には、その不安定なリビルド元ディスク３１ａに代えて予備ディスク３１ｂを用いてＲＡＩＤ構成を組み直す。
すなわち、ＲＡＩＤ構成変更部１６は、リビルド処理部１３によるリビルド処理の完了後に、安定度の低いリビルド元ディスク３１ａに代えて、当該リビルド元ディスク３１ａの複製がされた予備ディスク３１ｂを用いて、ＲＡＩＤ構成を変更する冗長構成変更部として機能する。
【００８２】
リビルド元ディスク３１ａが不安定であるか否かの判断は、例えば、ストレージ統計情報（ログ情報）に基づいて行なう。ストレージ統計情報において所定のエラーが閾値以上検知された場合に、不安定であると判断することができる。
ストレージ統計情報としては、例えば、各ＲＡＩＤ構成ディスク３１ａにおける媒体エラーの発生数やシークエラーの発生数を用いることができる。このようなストレージ統計情報は、例えば、各ディスク３１ａのファーム等を参照することにより取得することができる。
【００８３】
ＲＡＩＤ構成変更部１６は、リビルド処理部１３によりすべてのＬＵＮのリビルド処理が完了したら、障害が検知された障害ＲＡＩＤを構成するＲＡＩＤ構成ディスク３１ａと、それに対をなす予備ディスク３１ｂの信頼性を確認して、より安定なＲＡＩＤ構成となるように構成を組みなおす。
なお、元のＲＡＩＤを構成するディスク群の各搭載位置を維持する必要がある場合には、元のＲＡＩＤのＲＡＩＤ構成ディスク３１ａを問題がなければ使用し続けてもよい。
【００８４】
図７は実施形態の一例としてのストレージ装置１におけるＲＡＩＤ構成変更部１６によるＲＡＩＤ構成変更方法を示す図である。
この図７に示す例においても、図４と同様に、ＲＡＩＤグループ３０ａは４本のＲＡＩＤ構成ディスク３１ａ−１〜３１ａ−４によりＲＡＩＤ５を実現しており、又、故障ディスク３１ａ−２が代理ディスク３１ｂ−２に再構築されている。特にこの図７においては、図６に示した状態の後、ＬＵＮ２，３のリビルド処理が完了した状態を示す。
【００８５】
すなわち、予備ディスク３１ｂ−１，３１ｂ−３，３１ｂ−４には、ミラーリング処理部１５によりＲＡＩＤ構成ディスク３１ａ−１，３１ａ−３，３１ａ−４のデータがそれぞれ複写されている。
そして、この図７に示す例においては、ＲＡＩＤ構成ディスク３１ａ−３が不安定であると判断された状態を示す。
【００８６】
リビルド処理の完了後に、ＲＡＩＤ構成ディスク３１ａ−３が不安定であると判断された場合に、ＲＡＩＤ構成変更部１６は、このＲＡＩＤ構成ディスク３１ａ−３に代えて、ＲＡＩＤ構成ディスク３１ａ−３のデータが複製された予備ディスク３１ｂ−３を用いてＲＡＩＤを構成し直す。
なお、ＲＡＩＤ構成ディスク３１ａ−３から予備ディスク３１ｂ−３への切り替えは既知の種々の手法を用いて実現することができる。例えば、ＲＡＩＤ構成変更部１６は、不安定であると判断されたＲＡＩＤ構成ディスク３１ａ−３をfail状態に設定するコマンドを発行することで、ＲＡＩＤ構成ディスク３１ａ−３を予備ディスク３１ｂ−３に切り替える。
【００８７】
また、不安定であると判断されたＲＡＩＤ構成ディスク３１ａが複数ある場合には、これらの複数のＲＡＩＤ構成ディスク３１ａについても同様に予備ディスク３１ｂに切り替える。
また、ＲＡＩＤ構成変更部１６は、リビルド処理の完了後、不安定であると判断されていないＲＡＩＤ構成ディスク３１ａに対応する予備ディスク３１ｂを未割当予備ディスク３１ｂに戻す。これにより、ドライブエンクロージャ３０のスロットに予備ディスク３１ｂとして取り付けられた記憶装置３１を、積極的に予備ディスク３１ｂとして使用することができ、管理が容易になる。図７に示す例においては、予備ディスク３１ｂ−１，３１ｂ−４がフリーの未割当予備ディスク３１ｂに戻され、ＲＡＩＤ構成ディスク３１ａとの対応付けが解除される。
【００８８】
上述の如く構成された実施形態の一例としてのストレージ装置１におけるリビルド処理の概要を、図８に示すフローチャート（ステップＡ１〜Ａ３）に従って説明する。
ステップＡ１において、割当処理部１４は使用可能な予備ディスク３１ｂの本数を確認して、ストレージ構成を決定する。なお、このストレージ構成の決定手法の詳細は、図９を用いて後述する。
【００８９】
ステップＡ２において、リビルド処理部１３が故障ディスク３１のリビルド処理を行なう。先ず、ステップＡ２１において、ＲＡＩＤグループ３０ａに構成されている全てのＬＵＮについてのリビルドが完了したかを確認する。全ＬＵＮのリビルドが完了していない場合には（ステップＡ２１のＮＯルート参照）、ステップＡ２２において、リビルド処理部１３が、故障ディスク３１のデータを復元する。又、このリビルド処理中に、ミラーリング処理部１５が、リビルド元ディスク３１ａから読み出されたデータを対応する予備ディスク３１ｂにデッドコピーする。これにより、予備ディスク３１ｂへのリビルド元ディスク３１ａの複製が行なわれる。
【００９０】
ステップＡ２３において、処理中のＬＵＮのリビルドが完了すると、対になるＲＡＩＤ構成ディスク３１ａと予備ディスク３１ｂとを二重化して利用可能にする。例えば、ホスト装置２からリード要求を受信した場合には、対を形成するＲＡＩＤ構成ディスク３１ａと予備ディスク３１ｂとからラウンドロビンで交互にリードされるようにする。又、ホスト装置２からライト処理を受信した場合には、対を形成するＲＡＩＤ構成ディスク３１ａと予備ディスク３１ｂとの両方にライト処理が行なわれるようにする。その後、ステップＡ２１に戻る。
【００９１】
なお、このリビルド処理の詳細は、図１０及び図１１を用いて後述する。
ステップＡ２１において全てのＬＵＮについての処理が完了すると（ステップＡ２１のＹＥＳルート参照）、リビルド処理後の処理、すなわち後処理（ステップＡ３）に移行する。
この後処理においては、ステップＡ３１において、ＲＡＩＤ構成変更部１６が、故障が検知されたＲＡＩＤ構成ディスク３１ａに代えて予備ディスク３１ｂを用いてＲＡＩＤ構成を組み直す。
【００９２】
また、ＲＡＩＤグループ３０ａにおいて不安定なＲＡＩＤ構成ディスク３１ａがある場合には、ＲＡＩＤ構成変更部１６は、その不安定なＲＡＩＤ構成ディスク３１ａに代えて、当該ＲＡＩＤ構成ディスク３１ａに対応する予備ディスク３１ｂを用いてＲＡＩＤ構成を組み直す。
その後、ステップＡ３２において、ステップＡ３１で使用されなかった予備ディスク３１ｂを解放して、未割当予備ディスク３１ｂに戻し、処理を終了する。
【００９３】
なお、故障ディスク３１ａや、ステップＡ３２において不安定であると判断されたＲＡＩＤ構成ディスク３１ａは、保守作業により当該ストレージ装置１から取り外され、新しい記憶装置３１と交換される。
なお、この後処理の詳細は、図１２を用いて後述する。
次に、実施形態の一例としてのストレージ装置１におけるストレージ構成の決定方法を、図９に示すフローチャート（ステップＢ１〜Ｂ８）に従って説明する。
【００９４】
ステップＢ１において、割当処理部１４が、ＲＡＩＤサイズ（Ｐ），予備ディスク数（ｍ）及び制限値（Ｌ）を確認する。
ステップＢ２において、割当処理部１４は、“ＲＡＩＤサイズＰ＝＝２”，“予備ディスク数ｍ≦１”及び“制限値Ｌ≦１”の３つの条件のうち、少なくともいずれか１つが満たされるか否かを確認する。
【００９５】
確認の結果、これらの３つの条件のうち、少なくともいずれか１つが満たされる場合には（ステップＢ２のＹＥＳルート参照）、リビルド処理部１３は、従来手法によるリビルド処理を行なう。すなわち、故障ディスク３１ａのデータを、同一ＲＡＩＤグループにおける故障ディスク３１ａ以外のリビルド元ディスク３１ａのデータを用いて再構築する。又、この際、割当処理部１４によるリビルド元ディスク３１ａに対する予備ディスク３１ｂを割り当てや、ミラーリング処理部１５によるリビルド元ディスク３１ａのデータの対応する代理ディスク３１ｂへの複製は行なわれない。
【００９６】
ここでＲＡＩＤサイズＰは、ＲＡＩＤにより必要とされる記憶装置３１の数を示す。従って、“ＲＡＩＤサイズＰ＝＝２”は、ＲＡＩＤグループ３０ａのＲＡＩＤ種類がＲＡＩＤ１の二重化（ミラーリング）であり、リビルド処理が不要であることを意味する。又、“予備ディスク数ｍ≦１”及び“制限値Ｌ≦１”は、いずれも予備ディスク３１ｂが１つもしくは０であり、割当処理部１４によりＲＡＩＤ構成ディスク３１ａに割り当て可能な予備ディスク３１ｂがないことを意味する。
【００９７】
一方、確認の結果、上述した３つの条件のいずれも満たされない場合には（ステップＢ２のＮＯルート参照）、ステップＢ３において、“ＲＡＩＤサイズＰ＞制限値Ｌ”であるか否かが確認される。
ＲＡＩＤサイズＰ＞制限値Ｌである場合（ステップＢ３のＹＥＳルート参照）、ステップＢ４において、Ｌ（例えば、図５に示したようにＬ＝２）本の予備ディスク３１ｂがリビルド処理及びミラーリング処理に使用される。
【００９８】
一方、ＲＡＩＤサイズＰ＞制限値Ｌでない場合（ステップＢ３のＮＯルート参照）、ステップＢ５において、Ｐ（例えば、図４等に示したようにＬ＝４）本の予備ディスク３１ｂがリビルド処理及びミラーリング処理に使用される。
その後、ステップＢ６において、ＲＡＩＤ制御部１２は、記憶装置３１ａに故障が生じたＲＡＩＤグループ３０ａ（故障ＲＡＩＤ）において生き残っているＲＡＩＤ構成ディスク３１ａのストレージ統計情報を確認する。そしてＲＡＩＤ制御部１２は、ＬＵＮ管理テーブル６１の項７のディスクの安定度リストとして格納する情報を作成し、ＬＵＮ管理テーブル６１に登録する。ストレージ統計情報として取得した各ＲＡＩＤ構成ディスク３１ａのエラーの発生数に基づき、エラーの発生数に従ってＲＡＩＤ構成ディスク３１ａをソートすることで、ディスクの安定度リストを作成する。
【００９９】
また、ステップＢ７において、割当処理部１４は、故障が検知されたＲＡＩＤ構成ディスク３１ａを含む不安定なＲＡＩＤ構成ディスク３１ａを優先して、ＲＡＩＤ構成ディスク３１ａに予備ディスク３１ｂを割り当てる。ＲＡＩＤ制御部１２は、ＬＵＮ管理テーブル６１の項６の利用予備ディスク名リストとして格納する情報を作成し、ＬＵＮ管理テーブル６１に登録する。
【０１００】
ステップＢ８において、ＲＡＩＤ制御部１２は、ＬＵＮ管理テーブル６１の項４〜１２の各内容を初期化し、又、ＬＵＮ管理テーブル６１の項５のＬＵＮの状態に“リビルド中”を登録して、処理を終了する。
次に、実施形態の一例としてのストレージ装置１におけるリビルド処理を、図１０に示すフローチャート（ステップＣ１〜Ｃ１０）に従って説明する。
【０１０１】
ステップＣ１において、リビルド処理部１３は、ＬＵＮ管理テーブル６１を参照することでＬＵＮ数を取得する。ＬＵＮ管理テーブル６１はＬＵＮ毎に作成されるので、例えばＬＵＮ管理テーブル６１の数を参照することで、ＲＡＩＤグループ３０ａに形成されているＬＵＮの数を把握することができる。又、リビルド処理部１３は、処理中のＬＵＮを示す図示しない処理中ポインタに、最初のＬＵＮ（ＬＵＮ域）を示す情報を記憶する。この処理中ポインタを参照することで、リビルド処理の進捗状況を把握することができる。
【０１０２】
ステップＣ２において、リビルド処理部１３は、処理中ポインタを参照して、未処理のＬＵＮ数を確認する。
未処理のＬＵＮ数が１つ以上ある場合には（ステップＣ２のＮＯルート参照）、ステップＣ３において、処理中ＬＵＮの情報に基づき、生き残っている各リビルド元ディスク３１ａを調べ、この生き残っているリビルド元ディスク３１ａから、ＲＡＩＤストライプ分のデータを読み出し、メモリ１０６の所定の領域に格納する。
【０１０３】
ステップＣ４において、リビルド処理部１３は、各リビルド元ディスク３１ａから読み出したデータを用いて故障ディスク３１ａの復元を行なう（復元データ作成）。
ステップＣ５において、リビルド処理部１３は、故障ディスク３１に対してアサインされた予備ディスク３１ｂの所定位置（元と同じ位置）へ復元データを書き出す。又、同時に、ミラーリング処理部１５は、生き残っているリビルド元ディスク３１から読み出したデータを、各リビルド元ディスク３１に対応付けた（アサインした）予備ディスク３１ｂの同じ位置へデッドコピーする。
【０１０４】
ステップＣ６において、リビルド処理部１３は、ＬＵＮ管理テーブル６１の項８のリビルド済サイズに、リビルドが完了したデータサイズ（リビルド済サイズ）を加算（ｕｐ）する。
ステップＣ７において、リビルド処理部１３は、他のＲＡＩＤの故障による予備ディスクの解放要求があるか否かを確認する。
【０１０５】
ここで、このステップＣ７にかかる、予備ディスクの解放要求の有無の確認処理の詳細を、図１１に示すフローチャート（ステップＣ７１〜Ｃ７７）に従って説明する。
ステップＣ７１において、他ＲＡＩＤの故障による予備ディスク３１の解放要求があるか否かを確認する。他のＲＡＩＤから予備ディスク３１ｂの解放要求がない場合には（ステップＣ７１のＮＯルート参照）、処理を終了し、図１０のステップＣ８に移行する。
【０１０６】
他のＲＡＩＤから予備ディスク３１ｂの解放要求がある場合には（ステップＣ７１のＹＥＳルート参照）、ステップＣ７２において、リビルド処理部１３は、ＬＵＮ管理テーブル６１の項７のディスクの安定度リストを参照して、解放できる予備ディスク３１ｂがあるか否かを確認する。対応するＲＡＩＤ構成ディスク３１ａが安定していれば予備ディスク３１ｂが代理ディスク３１ｂとして使用される可能性は低い。従って、ＬＵＮ管理テーブル６１の項７のディスクの安定度リストにおいて、安定度が高いＲＡＩＤ構成ディスク３１ａに対応付けられている予備ディスク３１ｂは、解放して他の記憶装置３１ａの予備ディスク３１ｂとして使用しても問題ないと考えられる。
【０１０７】
そこで、例えば、ＬＵＮ管理テーブル６１の項７のディスクの安定度リストに、一つでもＲＡＩＤ構成ディスク３１ａが登録されていれば、解放できる予備ディスク３１ｂがあると判断することができる。
確認の結果（ステップＣ７３）、解放できる予備ディスク３１ｂがある場合には（ステップＣ７３のＹＥＳルート参照）、ステップＣ７４において、リビルド処理部１３は、ＬＵＮ管理テーブル６１の項１２の予備ディスクのＩＯ禁止フラグに、当該解放対象の予備ディスク３１ｂのＩＯを禁止にするフラグを設定する。このＩＯ禁止フラグが設定される予備ディスク３１ｂは、ＬＵＮ管理テーブル６１の項７のディスクの安定度リストにおいて先頭に登録されているＲＡＩＤ構成ディスク３１ａに対応する予備ディスク３１ｂであることが望ましい。
【０１０８】
これにより、当該予備ディスク３１ｂに対するＩＯ処理が禁止され、最終的にＩＯアクセスが無くなるので、当該予備ディスク３１ｂを使用することができるようになる。
その後、ステップＣ７５において、リビルド処理部１３は、ＬＵＮ管理テーブル６１の項１０の予備ディスクのリード／ライト中カウンタにおいて、解放対象の予備ディスク３１ｂのカウンタ値を確認する。
【０１０９】
確認の結果（ステップＣ７６）、解放予定の予備ディスク３１ｂがリード中でなく、且つ、ライト中（ＲＷ中）でもない場合、すなわち、解放対象の予備ディスク３１ｂに関してリード中カウンタもしくはライト中カウンタのいずれにおいても１以上の値が格納されていない場合には（ステップＣ７６のＮＯルート参照）、ステップＣ７７に移行する。
このステップＣ７７において、リビルド処理部１３は、ＬＵＮ管理テーブル６１の項６の利用予備ディスク名リストから、当該予備ディスク３１ｂを削除してＬＵＮ管理テーブル６１を更新する。これにより、リビルド処理部１３は、その予備ディスク３１ｂを割り当て可能な予備ディスク３１ｂとしてシステムに返却して、処理を終了し、図１０のステップＣ８に移行する。
【０１１０】
また、ステップＣ７３における確認の結果、解放できる予備ディスク３１ｂがない場合（ステップＣ７３のＮＯルート参照）や、ステップＣ７６における確認の結果、解放予定の予備ディスク３１ｂがリード中もしくはライト中（ＲＷ中）である場合にも（ステップＣ７６のＹＥＳルート参照）、処理を終了し、図１０のステップＣ８に移行する。
ステップＣ８において、リビルド処理部１３は、処理中のＬＵＮのリビルド処理が完了したか否かを確認する。この確認の結果（ステップＣ９）、リビルド処理が完了していない場合には（ステップＣ９のＮＯルート参照）、ステップＣ３に戻る。
【０１１１】
一方、リビルド処理が完了した場合には（ステップＣ９のＹＥＳルート参照）、ステップＣ１０に移行する。
ステップＣ１０において、リビルド処理部１３は、ＬＵＮ管理テーブル６１の項５のＬＵＮの状態に“リビルド済”を設定する。又、リビルド処理部１３は、未処理のＬＵＮ数をダウンして、次のＬＵＮ管理テーブル１００を処理中ポインタに記憶する。その後、ステップＣ２に戻る。
【０１１２】
ステップＣ２において、未処理のＬＵＮ数が０である場合には（ステップＣ２のＹＥＳルート参照）、処理を終了する。
次に、実施形態の一例としてのストレージ装置１におけるリビルド処理後の処理（後処理）を、図１２に示すフローチャート（ステップＤ１〜Ｄ９）に従って説明する。
ステップＤ１において、ＲＡＩＤ構成変更部１６は、上述したリビルド処理を行なった故障ディスク３１ａ以外のＲＡＩＤ構成ディスク３１ａについて、その統計情報を確認することで、これらのＲＡＩＤ構成ディスク３１ａに異常がないかを確認する。
【０１１３】
ステップＤ２において、ＲＡＩＤ構成変更部１６は、ＲＡＩＤ構成ディスク３１ａに問題の有無を確認する。この問題の有無の確認は、例えば、媒体エラーやシークエラー等の所定のエラーの発生数と閾値とを比較することで行なう。所定のエラーの発生数が閾値を越えている場合に問題があると判断することができる。
確認の結果、問題があると判断された場合には（ステップＤ２のＮＯルート参照）、ステップＤ３において、その問題があると判断されたＲＡＩＤ構成ディスク３１ａを、failさせるリビルド元ディスク（元ディスク）としてメモリ１０６等に記憶して、ステップＤ４に移行する。
【０１１４】
また、ステップＤ２における確認の結果、問題がないと判断された場合には（ステップＤ２のＹＥＳルート参照）、ステップＤ３をスキップしてステップＤ４に移行する。
ステップＤ４において、ＲＡＩＤ構成変更部１６は、failさせるディスク３１ａと解放する予備ディスク３１ｂとにＩＯ禁止フラグを設定する。具体的には、ＬＵＮ管理テーブル６１の項１１において、該当する記憶装置３１ａにＩＯ禁止フラグを設定する。又、ＲＡＩＤ構成変更部１６は、ＬＵＮ管理テーブル６１の項１２において、該当する予備ディスク３１ｂにＩＯ禁止フラグを設定する。
【０１１５】
ステップＤ５において、ＲＡＩＤ構成変更部１６は、ＬＵＮ管理テーブル６１の項９及び項１０を参照して、failさせる元ディスク及び解放する予備ディスクの各リード／ライト中カウンタの値を確認する。すなわち、これらのfailさせる元ディスク及び解放する予備ディスクが使用されておらずＩＯアクセスがないことを確認する。
確認の結果（ステップＤ６）、failさせる元ディスク及び解放する予備ディスクの各リード／ライト中カウンタの値が０でない場合には（ステップＤ６のＮＯルート参照）、ステップＤ７において所定の時間（例えば１秒）待った後、ステップＤ５に戻る。
【０１１６】
ステップＤ４において、failさせる元ディスク及び解放する予備ディスクに対してＩＯ禁止フラグを設定することにより、これらのディスク３１への新規のディスクアクセスがなくなり、最終的には各リード／ライト中カウンタの値が０となる。
failさせる元ディスク及び解放する予備ディスクの各リード／ライト中カウンタの値が０である場合には（ステップＤ６のＹＥＳルート参照）、ステップＤ８に移行する。
【０１１７】
ステップＤ８において、ＲＡＩＤ構成変更部１６は、ＲＡＩＤ構成テーブル６４及びＬＵＮ管理テーブル６１を変更して、ＲＡＩＤ構成を変更する。
例えば、ＲＡＩＤ構成変更部１６は、ＲＡＩＤ構成テーブル６４及びＬＵＮ管理テーブル６１において、failさせる元ディスク３１ａに代えて、ミラーリング処理部１５により、当該failさせる元ディスクのデータを複製した予備ディスク３１ｂを登録する。これにより、ＲＡＩＤ構成変更部１６は、ＲＡＩＤグループ３０ａにおいて不安定なリビルド元ディスク３１ａに代えて予備ディスク３１ｂを用いてＲＡＩＤ構成を組み直す。
【０１１８】
また、ＲＡＩＤ構成変更部１６は、ＬＵＮ管理テーブル６１の項６の利用予備ディスク名リストから、解放する予備ディスク３１ｂを削除する。
ステップＤ９において、ＲＡＩＤ構成変更部１６は、failさせる元ディスク３１ａをfail状態に設定するコマンドを発行することでfailさせる。これにより、不要になった予備ディスク３１ｂがシステムに返却（解放）されることになる。
【０１１９】
なお、上述したステップＤ２において、ＲＡＩＤ構成変更部１６は、failさせる元ディスクがないと判断された場合には、ステップＤ４以降の処理において、failさせる元ディスクに対して行なわれる処理が省略される。
次に、実施形態の一例としてのストレージ装置１におけるリード受信時の処理を図１３に示すフローチャート（ステップＥ１〜Ｅ１３）に従って説明する。
【０１２０】
ステップＥ１において、ＩＯ制御部１１は、受信したリード要求がリビルド処理中のＲＡＩＤへのリードであるか否かを確認する。確認の結果（ステップＥ２）、リードの要求先のＲＡＩＤグループ３０ａがリビルド中である場合には（ステップＥ２のＹＥＳルート参照）、ステップＥ３において、ＩＯ制御部１１は、受信したリード要求がリビルド処理が完了したＬＵＮ領域へのリードであるか否かを確認する。確認の結果（ステップＥ４）、リードの要求先が未リビルドのＬＵＮ領域である場合や（ステップＥ４のＮＯルート参照）、リードの要求先のＲＡＩＤグループ３０ａがリビルド中でない場合には（ステップＥ２のＮＯルート参照）、従来手法によるリード処理を行なう。
【０１２１】
すなわち、ＩＯ制御部１１は、リード要求先の記憶装置３１ａにアクセスして、要求されたデータを読み出し、ホスト装置２へ送信する。又、リード要求先が故障ディスク３１ａである場合には、この故障ディスク３１ａ以外の各リビルド元ディスク３１ａのデータに対して、パリティを用いたＸＯＲ演算を行なって故障ディスク３１ａのデータの復元を行なってホスト装置２へ送信する。
【０１２２】
一方、リードの要求先がリビルド済のＬＵＮ領域である場合には（ステップＥ４のＹＥＳルート参照）、ステップＥ５において、ＩＯ制御部１１は、アクセス対象のＲＡＩＤ構成ディスク３１ａが二重化されているかを確認する。すなわち、アクセス対象のＲＡＩＤ構成ディスク３１ａに対して予備ディスク３１ｂが割り当てられ、この予備ディスク３１ｂにＲＡＩＤ構成ディスク３１ａのデータの複製が格納されているかを確認する。
【０１２３】
確認の結果（ステップＥ６）、二重化されている場合には（ステップＥ６のＹＥＳルート参照）、ステップＥ７において、ＬＵＮ管理テーブル６１の項１１及び項１２のＩＯ禁止フラグを確認する。すなわち、リード対象のＲＡＩＤ構成ディスク３１ａ及びその対応する予備ディスク３１ｂの両方のＩＯ禁止フラグが“０（ｏｆｆ）”であるかを確認する。
【０１２４】
確認の結果（ステップＥ８）、リード対象のＲＡＩＤ構成ディスク３１ａ及びその対応する予備ディスク３１ｂの各ＩＯ禁止フラグが共にｏｆｆの場合には（ステップＥ８のＹＥＳルート参照）、ステップＥ９において、ＩＯ制御部１１は、ＲＡＩＤ構成ディスク３１ａと対応する予備ディスク３１ｂとのうちの一方をラウンドロビンにより交互に選択して、リード対象ディスク３１を選択する。このように、ＲＡＩＤ構成ディスク３１ａのデータが予備ディスク３１ｂにより二重化されている場合に、これらのＲＡＩＤ構成ディスク３１ａと予備ディスク３１ｂとを交互に選択してリードを行なう。これにより、各ディスク３１に対するアクセスを分散し、負荷を軽減することで寿命を延ばし、信頼性を向上させることができる。
【０１２５】
一方、ステップＥ７における確認の結果、禁止フラグが共にｏｆｆではない場合、すなわち、ＲＡＩＤ構成ディスク３１ａ及び対応する予備ディスク３１ｂの一方に、禁止フラグにｏｎが設定されている場合には（ステップＥ８のＮＯルート参照）、ステップＥ１０に移行する。
ステップＥ１０において、ＩＯ制御部１１は、ＲＡＩＤ構成ディスク３１ａ及び対応する予備ディスク３１ｂのうち、ＩＯ禁止フラグにｏｆｆが設定されている方をリード対象ディスク３１として選択する。
【０１２６】
その後、ステップＥ１１において、ＩＯ制御部１１は、選択されたリード対象ディスク３１について、ＬＵＮ管理テーブル６１の項９もしくは項１０のリード／ライト中カウンタをカウントアップする。これにより、選択されたリード対象ディスク３１がfailされたりフリーにされることを阻止することができ、信頼性が向上する。
また、ステップＥ５における確認の結果、二重化がされていない場合にも（ステップＥ６のＮＯルート参照）、このステップＥ１１に移行する。
【０１２７】
ステップＥ１２において、ＩＯ制御部１１は、リード対象ディスク３１へリードを実行し、このリードが完了すると、ステップＥ１３において、当該リード対象ディスク３１について、ＬＵＮ管理テーブル６１の項９もしくは項１０のリード／ライト中カウンタをカウントダウンして、処理を終了する。
次に、実施形態の実施形態の一例としてのストレージ装置１におけるライト受信時の処理を図１４に示すフローチャート（ステップＦ１〜Ｆ１４）に従って説明する。
【０１２８】
ステップＦ１において、ＩＯ制御部１１は、受信したライト要求がリビルド処理中のＲＡＩＤへのライトであるか否かを確認する。確認の結果（ステップＦ２）、ライトの要求先のＲＡＩＤグループ３０ａがリビルド中である場合には（ステップＦ２のＹＥＳルート参照）、ステップＦ３において、ＩＯ制御部１１は、受信したライト要求がリビルド処理が完了したＬＵＮ領域へのライトであるか否かを確認する。確認の結果（ステップＦ４）、ライトの要求先が未リビルドのＬＵＮ領域である場合や（ステップＦ４のＮＯルート参照）、ライトの要求先のＲＡＩＤグループ３０ａがリビルド中でない場合には（ステップＦ２のＮＯルート参照）、従来手法によるライト処理を行なう。
【０１２９】
すなわち、ＩＯ制御部１１は、ライト要求先の記憶装置３１ａにアクセスして、要求されたデータを書き込む。又、ライト要求先が故障ディスク３１ａである場合には、この故障ディスク３１ａ以外の各リビルド元ディスク３１ａのデータに対して、パリティを用いたＸＯＲ演算を行なって故障ディスク３１ａのデータの復元を行ない、この復元したデータとつき合わせをしながらデータのライトを行なう。
【０１３０】
一方、ライトの要求先がリビルド済のＬＵＮ領域である場合には（ステップＦ４のＹＥＳルート参照）、ステップＦ５において、ＩＯ制御部１１は、ライトデータとＲＡＩＤメンバディスクのデータからパリティデータを生成する。
その後、ステップＦ６において、ＩＯ制御部１１は、書き出し対象のＲＡＩＤ構成ディスク３１ａが二重化されているかを確認する。すなわち、アクセス対象のＲＡＩＤ構成ディスク３１ａに対して予備ディスク３１ｂが割り当てられ、この予備ディスク３１ｂにＲＡＩＤ構成ディスク３１ａのデータの複製が格納されているかを確認する。
【０１３１】
確認の結果（ステップＦ７）、二重化されている場合には（ステップＦ７のＹＥＳルート参照）、ステップＦ８において、ＬＵＮ管理テーブル６１の項１１及び項１２のＩＯ禁止フラグを確認する。すなわち、ライト対象のＲＡＩＤ構成ディスク３１ａ及びその対応する予備ディスク３１ｂの両方のＩＯ禁止フラグが“０（ｏｆｆ）”であるかを確認する。
【０１３２】
確認の結果（ステップＦ９）、ライト対象のＲＡＩＤ構成ディスク３１ａ及びその対応する予備ディスク３１ｂの各ＩＯ禁止フラグが共にｏｆｆの場合には（ステップＦ９のＹＥＳルート参照）、ステップＦ１０において、ＩＯ制御部１１は、ＲＡＩＤ構成ディスク３１ａと対応する予備ディスク３１ｂとを二重書きの対象ディスク３１として選択する。
一方、ステップＦ８における確認の結果、禁止フラグが共にｏｆｆではない場合、すなわち、ＲＡＩＤ構成ディスク３１ａ及び対応する予備ディスク３１ｂの一方に、禁止フラグにｏｎが設定されている場合には（ステップＦ９のＮＯルート参照）、ステップＦ１１に移行する。
【０１３３】
ステップＦ１１において、ＩＯ制御部１１は、ＲＡＩＤ構成ディスク３１ａ及び対応する予備ディスク３１ｂのうち、ＩＯ禁止フラグにｏｆｆが設定されている方をライト対象ディスク３１として選択する。
その後、ステップＦ１２において、ＩＯ制御部１１は、選択されたライト対象ディスク３１について、ＬＵＮ管理テーブル６１の項９もしくは項１０のリード／ライト中カウンタをカウントアップする。これにより、選択されたライト対象ディスク３１がfailされたりフリーにされることを阻止することができ、信頼性が向上する。
【０１３４】
また、ステップＦ６における確認の結果、二重化がされていない場合にも（ステップＦ７のＮＯルート参照）、このステップＦ１２に移行する。
ステップＦ１３において、ＩＯ制御部１１は、ライト対象ディスク３１へライトを実行し、このライトが完了すると、ステップＦ１４において、当該ライト対象ディスク３１について、ＬＵＮ管理テーブル６１の項９もしくは項１０のリード／ライト中カウンタをカウントダウンして、処理を終了する。
【０１３５】
このように、実施形態の一例としてのストレージ装置１によれば、ミラーリング処理部１５がＲＡＩＤ構成ディスク３１ａの複製を、当該ＲＡＩＤ構成ディスク３１ａに対応する予備ディスク３１ｂに作成することで、各ＲＡＩＤ構成ディスク３１ａのデータを冗長化することができる。これにより、複数のＲＡＩＤ構成ディスク３１ａが故障した場合でも、予備ディスク３１ｂを用いてＲＡＩＤを構成しなおすことにより、ＲＡＩＤ内の全データのロストの発生を阻止することができる。これにより信頼性を向上させることができる。
【０１３６】
また、リビルド処理が完了したＬＵＮは、リビルド処理による性能劣化の影響が緩和され、データ保護状態に速やかに戻ることができる。
リード時において、冗長化されたＲＡＩＤ構成ディスク３１ａのデータと予備ディスク３１ｂのデータとをラウンドロビンで交互に選択してリード処理を行なうことで、リビルド中であっても高いストレージアクセス性能を実現することができる。更に、リード時に、冗長化されたＲＡＩＤ構成ディスク３１ａと予備ディスク３１ｂとを均等に用いることで負荷を分散させることができる。
【０１３７】
ＲＡＩＤ構成変更部１６が、リビルド処理の完了時点で、ＲＡＩＤグループ３０ａ内に不安定なＲＡＩＤ構成ディスク３１ａを検知した場合に、この不安定なＲＡＩＤ構成ディスク３１ａに代えて対応する予備ディスク３１ｂを用いてＲＡＩＤを構成し直す。これにより、ＲＡＩＤ構成ディスク３１ａの故障を未然に阻止することができ、信頼性を向上させることができる。
【０１３８】
ミラーリング処理部１５が、リビルド時にリビルド元ディスク３１ａからメモリ１０６に読み出されたデータを、当該リビルド元ディスク３１ａに対応する予備ディスク３１ｂにデッドコピーすることで、リビルド元ディスク３１ａの複製を予備ディスク３１ｂに容易に作成することができる。この際、コントローラ１００のＣＰＵ１１０等による特別な制御が不要であり、コントローラ１００の負荷の増大や処理速度の低下が発生することがない。
【０１３９】
そして、開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
例えば、上述した実施形態においては、リビルド処理部１３がいずれかの記憶装置３１ａの故障を検知した場合にリビルド処理を行なっている例を示しているが、これに限定されるものではない。例えば、いずれかの記憶装置３１ａ故障の発生が予測される場合に、この故障の発生が予測される記憶装置３１ａを故障ディスク３１ａとしてリビルド処理を行なってもよく、又、予防保守の観点等から、異常のない記憶装置３１ａを故障ディスク３１ａとしてリビルド処理を行なってもよい。
【０１４０】
また、上述した実施形態においては、ＲＡＩＤグループ３０ａが４本（３本＋１本）のＲＡＩＤ構成ディスク３１ａによりＲＡＩＤ５を実現している例を示しているが、これに限定されるものではない。例えば、ＲＡＩＤ２〜４やＲＡＩＤ５０（５＋０）、ＲＡＩＤ６，ＲＡＩＤ１０等、種々変形して実施することができる。
上述した実施形態においては、ＩＯ制御部１１が、ＲＡＩＤグループ３０ａのＲＡＩＤ構成ディスク３１ａと、予備ディスクグループ３０ｂの予備ディスク３１ｂとをラウンドロビンで交互に選択してリード処理を行なっているが、これに限定されるものではない。すなわち、ＲＡＩＤ構成ディスク３１ａと、このＲＡＩＤ構成ディスク３１ａの複製が格納された予備ディスク３１ｂとから必ずしも交互にデータリードを行なう必要はなく、結果として均等にデータのリードを行なうことで負荷が分散できればよい。
【０１４１】
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
以上の実施形態に関し、更に以下の付記を開示する。
（付記１）
冗長構成がなされた複数の記憶装置及び複数の予備記憶装置と通信路を介して通信可能に接続されるストレージ制御装置であって、
前記複数の記憶装置のうち復元対象記憶装置以外の冗長用記憶装置から読み出した冗長データを用いて、前記復元対象記憶装置のデータを、前記複数の予備記憶装置のうちの第１の予備記憶装置に再構成する再構成処理部と、
前記再構成処理部による再構成を行なう際に前記冗長用記憶装置から読み出したデータを、前記複数の予備記憶装置のうちの前記冗長用記憶装置に対応する第２の予備記憶装置に格納することで、前記冗長用記憶装置の複製を行なう複製処理部と
を備えることを特徴とする、ストレージ制御装置。
【０１４２】
（付記２）
リード要求受信時には、前記冗長用記憶装置と、当該冗長用記憶装置のデータを格納する前記第２の予備記憶装置とを併用することを特徴とする、付記１記載のストレージ制御装置。
（付記３）
ライト要求受信時には、前記冗長用記憶装置及び当該冗長用記憶装置のデータを格納する前記予備記憶装置の双方に書き込みを行なうことを特徴とする、付記１又は２記載のストレージ制御装置。
【０１４３】
（付記４）
前記記憶装置に対して前記予備記憶装置を割り当てる割当処理部を備え、
前記複製処理部が、前記冗長用記憶装置から読み出したデータを、前記割当処理部が割り当てた前記予備記憶装置に格納することを特徴とする、付記１〜３のいずれか１項に記載のストレージ制御装置。
【０１４４】
（付記５）
前記記憶装置に割り当て可能な前記予備記憶装置の数が前記記憶装置の数よりも少ない場合に、
前記割当処理部が、
前記予備記憶装置を、安定度の低い前記記憶装置から優先して割り当てることを特徴とする、付記４記載のストレージ制御装置。
【０１４５】
（付記６）
前記再構成処理部による再構成の完了後に、安定度の低い前記冗長用記憶装置に代えて、当該安定度の低い前記冗長用記憶装置の複製がされた前記予備記憶装置を用いて、前記冗長構成を変更する冗長構成変更部を備えることを特徴とする、付記１〜付記５のいずれか１項に記載のストレージ制御装置。
【０１４６】
（付記７）
冗長構成がなされた複数の記憶装置と、
複数の予備記憶装置と、
前記複数の記憶装置のうち復元対象記憶装置以外の冗長用記憶装置から読み出した冗長データを用いて、前記復元対象記憶装置のデータを、前記複数の予備記憶装置のうちの第１の予備記憶装置に再構成する再構成処理部と、
前記再構成処理部による再構成を行なう際に前記記憶装置から読み出したデータを、前記複数の予備記憶装置のうちの前記冗長用記憶装置に対応する第２の予備記憶装置に格納することで、前記冗長用記憶装置の複製を行なう複製処理部と
を備えることを特徴とする、ストレージシステム。
【０１４７】
（付記８）
リード要求受信時には、前記冗長用記憶装置と、当該冗長用記憶装置のデータを格納する前記第２の予備記憶装置とを併用することを特徴とする、付記７記載のストレージシステム。
（付記９）
ライト要求受信時には、前記冗長用記憶装置及び当該冗長用記憶装置のデータを格納する前記予備記憶装置の双方に書き込みを行なうことを特徴とする、付記７又は８記載のストレージシステム。
【０１４８】
（付記１０）
前記記憶装置に対して前記予備記憶装置を割り当てる割当処理部を備え、
前記複製処理部が、前記冗長用記憶装置から読み出したデータを、前記割当処理部が割り当てた前記予備記憶装置に格納することを特徴とする、付記７〜９のいずれか１項に記載のストレージシステム。
【０１４９】
（付記１１）
前記記憶装置に割り当て可能な前記予備記憶装置の数が前記記憶装置の数よりも少ない場合に、
前記割当処理部が、
前記予備記憶装置を、安定度の低い前記記憶装置から優先して割り当てることを特徴とする、付記１０記載のストレージシステム。
【０１５０】
（付記１２）
前記再構成処理部による再構成の完了後に、安定度の低い前記冗長用記憶装置に代えて、当該安定度の低い前記冗長用記憶装置の複製がされた前記予備記憶装置を用いて、前記冗長構成を変更する冗長構成変更部を備えることを特徴とする、付記７〜付記１１のいずれか１項に記載のストレージシステム。
【０１５１】
（付記１３）
冗長構成がなされた複数の記憶装置及び複数の予備記憶装置と通信路を介して通信可能に接続されるコンピュータに、
前記複数の記憶装置のうち復元対象記憶装置以外の冗長用記憶装置から読み出した冗長データを用いて、前記復元対象記憶装置のデータを、前記複数の予備記憶装置のうちの第１の予備記憶装置に再構成し、
前記再構成を行なう際に前記冗長用記憶装置から読み出したデータを、前記複数の予備記憶装置のうちの前記冗長用記憶装置に対応する第２の予備記憶装置に格納することで、前記冗長用記憶装置の複製を行なう
処理を実行させることを特徴とする、制御プログラム。
【０１５２】
（付記１４）
リード要求受信時には、前記冗長用記憶装置と、当該冗長用記憶装置のデータを格納する前記第２の予備記憶装置とを併用する
処理を前記コンピュータに実行させることを特徴とする、付記１３記載の制御プログラム。
【０１５３】
（付記１５）
ライト要求受信時には、前記冗長用記憶装置及び当該冗長用記憶装置のデータを格納する前記予備記憶装置の双方に書き込みを行なう
処理を前記コンピュータに実行させることを特徴とする、付記１３又は１４記載の制御プログラム。
【０１５４】
（付記１６）
前記記憶装置に対して前記予備記憶装置を割り当て、
前記冗長用記憶装置から読み出したデータを、前記割当処理部が割り当てた前記予備記憶装置に格納する
処理を前記コンピュータに実行させることを特徴とする、付記１３〜１５のいずれか１項に記載の制御プログラム。
【０１５５】
（付記１７）
前記記憶装置に割り当て可能な前記予備記憶装置の数が前記記憶装置の数よりも少ない場合に、
前記予備記憶装置を、安定度の低い前記記憶装置から優先して割り当てる
処理を前記コンピュータに実行させることを特徴とする、付記１６記載の制御プログラム。
【０１５６】
（付記１８）
前記再構成の完了後に、安定度の低い前記冗長用記憶装置に代えて、当該安定度の低い前記冗長用記憶装置の複製がされた前記予備記憶装置を用いて、前記冗長構成を変更する
処理を前記コンピュータに実行させることを特徴とする、付記１３〜付記１７のいずれか１項に記載の制御プログラム。
【符号の説明】
【０１５７】
１    ストレージ装置
２    ホスト装置
３ａ，３ｂ    スイッチ
４    ストレージシステム
１１    ＩＯ制御部
１２    ＲＡＩＤ制御部
１３    リビルド処理部
１４    割当処理部
１５    ミラーリング処理部
１６    ＲＡＩＤ構成変更部
３０    ドライブエンクロージャ
３０ａ    ＲＡＩＤグループ
３０ｂ    予備ディスクグループ
３１    記憶装置
３１ａ，３１ａ−１〜３１ａ−４    記憶装置（ＲＡＩＤ構成ディスク，リビルド元ディスク）
３１ｂ，３１ｂ−１〜３１ｂ−４    予備ディスク
４０    コントローラエンクロージャ
６１    ＬＵＮ管理テーブル
６２    仮／実ボリューム変換テーブル
６３    ディスク構成情報
６４    ＲＡＩＤ構成テーブル
１００    コントローラ（ストレージ制御装置）
１０１ａ，１０１ｂ    ポート
１０３    ＤＡ
１０６    メモリ
１０７    ＳＳＤ
１０８    ＩＯＣ
１１０    ＣＰＵ
【図１】
2015156081.tif 000003
【図２】
2015156081.tif 000004
【図３】
2015156081.tif 000005
【図４】
2015156081.tif 000006
【図５】
2015156081.tif 000007
【図６】
2015156081.tif 000008
【図７】
2015156081.tif 000009
【図８】
2015156081.tif 000010
【図９】
2015156081.tif 000011
【図１０】
2015156081.tif 000012
【図１１】
2015156081.tif 000013
【図１２】
2015156081.tif 000014
【図１３】
2015156081.tif 000015
【図１４】
2015156081.tif 000016