(57)【特許請求の範囲】
【請求項１】
データを記憶する記憶領域を備えた複数の物理媒体と、
アクセス対象となる仮想ボリュームに対する新規データの書き込み要求を検出すると、複数の物理媒体で構成する複数のストレージグループのうち、障害が発生した物理媒体を含むストレージグループ以外のストレージグループであって、前記仮想ボリュームに割り当て済みの容量が他のストレージグループよりも小さいストレージグループを、記憶領域を割り当てるグループとして決定するストレージグループ決定部と、
前記新規データのデータサイズに応じて、前記ストレージグループ決定部によって決定されたストレージグループ内に存在する物理媒体の記憶領域を前記仮想ボリュームに割り当てる記憶領域割当部と
を有することを特徴とするストレージ装置。
【請求項２】
前記物理媒体に障害が発生した場合に、障害が発生した物理媒体を含むストレージグループを障害グループとして、当該障害グループ内の物理媒体に記憶されたデータの復元先を、前記障害グループ以外のストレージグループに決定する復元先グループ決定部と、
前記復元先グループ決定部によって決定されたストレージグループに、前記障害グループ内の物理媒体に記憶されたデータを復元するデータ復元部とを有することを特徴とする請求項１に記載のストレージ装置。
【請求項３】
前記データ復元部は、
前記障害グループが復旧した場合に、前記障害グループを復旧グループとして、当該復旧グループに、前記障害グループ内の物理媒体に記憶されていたデータを再度復元することを特徴とする請求項２に記載のストレージ装置。
【請求項４】
アクセス対象となる仮想ボリュームに対する新規データの書き込み要求を検出すると、複数の物理媒体で構成する複数のストレージグループのうち、障害が発生した物理媒体を含むストレージグループ以外のストレージグループであって、前記仮想ボリュームに割り当て済みの容量が他のストレージグループよりも小さいストレージグループを、記憶領域を割り当てるグループとして決定するストレージグループ決定部と、
前記新規データのデータサイズに応じて、前記ストレージグループ決定部によって決定されたストレージグループ内に存在する物理媒体の記憶領域を前記仮想ボリュームに割り当てる記憶領域割当部と
を有することを特徴とするストレージ装置のコントローラ。
【請求項５】
アクセス対象となる仮想ボリュームに対する新規データの書き込み要求を検出すると、複数の物理媒体で構成する複数のストレージグループのうち、障害が発生した物理媒体を含むストレージグループ以外のストレージグループであって、前記仮想ボリュームに割り当て済みの容量が他のストレージグループよりも小さいストレージグループを、記憶領域を割り当てるグループとして決定するストレージグループ決定ステップと、
前記新規データのデータサイズに応じて、前記ストレージグループ決定ステップによって決定されたストレージグループ内に存在する物理媒体の記憶領域を前記仮想ボリュームに割り当てる記憶領域割当ステップと
を含むことを特徴とするストレージ装置の記憶領域割当方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置、ストレージ装置のコントローラおよびストレージ装置の記憶領域割当方法に関する。
【背景技術】
【０００２】
一般に、ストレージ装置の信頼性を高めるために、ＲＡＩＤ（Redundant  Array  of  Independent  Disks）技術が普及している。特に、近年では、記憶領域や管理費用を削減するために、ＲＡＩＤ技術にシンプロビジョニング機能を加えたストレージ装置が採用されている。
【０００３】
シンプロビジョニング機能とは、ストレージ装置が、上位装置によって認識されるボリューム容量を持つ仮想的な記憶領域として仮想ボリュームを提供する。そして、ストレージ装置は、上位装置から書き込み要求があったとき、書き込み要求があったデータに割り振られる仮想ボリューム内のロケーションだけに、データの容量に応じた物理的な記憶領域を対応付ける。すなわち、ストレージ装置は、仮想ボリューム内のロケーション毎にＲＡＩＤグループを特定し、特定したＲＡＩＤグループ内のディスクに記憶領域を割り当てる。このロケーション毎に物理的な記憶領域を割り当てる方法には、ストレージ装置が、ＲＡＩＤグループ間で既に割り当てられた記憶領域の容量が均等になるように制御することがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−１１６７８３号公報
【特許文献２】特開２００５−２６６９３３号公報
【特許文献３】特開２００４−２４６７７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、ストレージ装置が、障害のあるディスクを含むＲＡＩＤグループ内のディスクの記憶領域を、仮想ボリューム内のロケーションに割り当てると、ストレージ装置全体のアクセス性能が劣化するという問題がある。すなわち、ストレージ装置は、仮想ボリュームに物理的な記憶領域を割り当てる際に、各ＲＡＩＤグループの状態を確認しないで、割り当て容量が均等になるようにＲＡＩＤグループを特定する。このため、ストレージ装置が、仮に障害のあるディスクを含むＲＡＩＤグループの記憶領域を仮想ボリュームに割り当てると、その後、このＲＡＩＤグループにアクセスがあると、アクセス処理に負荷がかかり、レスポンスが遅くなる。この結果、ストレージ装置全体の平均レスポンスが劣化する。
【０００６】
開示の技術は、上記に鑑みてなされたものであって、ストレージ装置内に障害が発生したディスクを含むＲＡＩＤグループがあっても、当該ストレージ装置全体のアクセス性能の劣化を防ぐストレージ装置等の記憶領域割当方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本願の開示するストレージ装置は、一つの態様において、データを記憶する記憶領域を備えた複数の物理媒体と、アクセス対象となる仮想ボリュームに対する新規データの書き込み要求を検出すると、複数の物理媒体で構成する複数のストレージグループのうち、障害が発生した物理媒体を含むストレージグループ以外のストレージグループを、記憶領域を割り当てるグループとして決定するストレージグループ決定部と、前記新規データのデータサイズに応じて、前記ストレージグループ決定部によって決定されたストレージグループ内に存在する物理媒体の記憶領域を前記仮想ボリュームに割り当てる記憶領域割当部とを備える。
【発明の効果】
【０００８】
本願の開示するストレージ装置の一つの態様によれば、ストレージ装置内に障害が発生した物理媒体を含むストレージグループがあっても、当該ストレージ装置全体のアクセス性能の劣化を防止できるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施例１に係るストレージ装置の構成を示す機能ブロック図である。
【図２】図２は、実施例２に係るＲＡＩＤ装置の構成を示す機能ブロック図である。
【図３】図３は、ＲＡＩＤ管理テーブルのデータ構造の一例を示す図である。
【図４】図４は、リストテーブルのデータ構造の一例を示す図である。
【図５】図５は、記憶領域割当の具体例について説明する説明図である。
【図６】図６は、実施例２に係る記憶領域割当の処理手順を示すフローチャートである。
【図７】図７は、実施例３に係るＲＡＩＤ装置の構成を示す機能ブロック図である。
【図８】図８は、ＲＡＩＤグループ復元管理テーブルのデータ構造の一例を示す図である。
【図９】図９は、データ復元の具体例について説明する説明図である。
【図１０】図１０は、実施例３に係るデータ復元の処理手順を示すフローチャートである。
【図１１】図１１は、実施例４に係るＲＡＩＤ装置の構成を示す機能ブロック図である。
【図１２】図１２は、データ再復元の具体例について説明する説明図である。
【図１３】図１３は、実施例４に係るデータ再復元の処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下に、本願の開示するストレージ装置、ストレージ装置のコントローラおよびストレージ装置の記憶領域割当方法の実施例を図面に基づいて詳細に説明する。実施例では、ストレージ装置をシンプロビジョニング機能が搭載されたストレージ装置として説明する。なお、実施例によりこの発明が限定されるものではない。
【実施例１】
【００１１】
図１は、本実施例１に係るストレージ装置の構成を示す機能ブロック図である。図１に示すように、ストレージ装置１は、ストレージグループ決定部１１、記憶領域割当部１２、および物理媒体Ｄを有する。物理媒体Ｄは、データを記憶する記憶領域を備える。
【００１２】
ストレージグループ決定部１１は、アクセス対象となる仮想ボリュームに対する新規データの書き込み要求を検出する。そして、ストレージグループ決定部１１は、複数の物理媒体Ｄで構成する複数のストレージグループＧのうち、障害が発生した物理媒体Ｄを含むストレージグループＧ以外のストレージグループＧを、記憶領域を割り当てるグループとして決定する。
【００１３】
記憶領域割当部１２は、書き込み要求がされた新規データのデータサイズに応じて、ストレージグループ決定部１１によって決定されたストレージグループＧ内に存在する物理媒体Ｄの記憶領域を仮想ボリュームに割り当てる。なお、仮想ボリュームは、シンプロビジョニング型のボリュームであり、書き込み要求をした計算機に対する仮想的な記憶領域である。
【００１４】
このようにして、ストレージ装置１は、仮想ボリュームに物理媒体Ｄの記憶領域を割り当てる際、新規データに対して障害が発生した物理媒体Ｄを含むストレージグループＧの物理媒体を割り当てないようにした。このため、ストレージ装置１は、障害が発生した物理媒体Ｄを含むストレージグループＧにアクセスする頻度の上昇を抑止できるので、このストレージグループＧに対するアクセス処理の負荷を軽減できる。この結果、ストレージ装置１は、アクセス処理の負荷によって要する処理時間の増加を抑止できるので、ストレージ装置１全体のアクセス性能の劣化を防止できる。
【００１５】
ところで、実施例１に係るストレージ装置１は、シンプロビジョニング型の仮想ボリュームを有する装置として説明した。しかしながら、ストレージ装置１は、シンプロビジョニング型の仮想ボリュームを有するＲＡＩＤ（Redundant  Array  of  Independent  Disks）装置であっても良い。そこで、実施例２では、シンプロビジョニング型の仮想ボリュームを有するＲＡＩＤ装置について説明する。
【実施例２】
【００１６】
［実施例２に係るＲＡＩＤ装置の構成］
図２は、実施例２に係るＲＡＩＤ装置２の構成を示す機能ブロック図である。図２に示すように、ＲＡＩＤ装置２は、ＲＡＩＤコントローラ２０、３０およびストレージディスク、所謂ストレージとして機能するディスクＤを有する。ＲＡＩＤコントローラ２０、３０は、それぞれディスクＤと接続する。なお、ＲＡＩＤ装置２は、２台のＲＡＩＤコントローラを持つ小規模なＲＡＩＤ装置を例に示すが、４台の中規模のＲＡＩＤ装置、８台の大規模のＲＡＩＤ装置も同様である。
【００１７】
ここで、ＲＡＩＤ装置２が有するディスクＤは、ＲＡＩＤグループとしてグループ化される。図２の例では、ディスクＤ１１〜１８の８つのディスクが１つのＲＡＩＤグループＧ０を構成し、ディスクＤ２１〜２８の８つのディスクが１つのＲＡＩＤグループＧ１を構成する。また、ディスクＤ４１、Ｄ４３の２つのディスク、ディスクＤ４２、Ｄ４４の２つのディスク、ディスクＤ４５、Ｄ４７の２つのディスク、ディスクＤ４６、Ｄ４８の２つのディスクがそれぞれＲＡＩＤグループＧ２、Ｇ３、Ｇ４、Ｇ５を構成する。
【００１８】
さらに、ＲＡＩＤ装置２が有する複数のディスクＤは、シンプロビジョニングプールを構成する。そして、シンプロビジョニングプール毎に、ディスク容量が集約して管理される。図２の例では、ＲＡＩＤグループＧ０、Ｇ１の２つのグループに含まれる複数のディスクＤが１つのシンプロビジョニングプールＰ０を構成する。また、ディスクＤ３１〜Ｄ３８、ＲＡＩＤグループＧ２〜Ｇ５の４つのグループに含まれる複数のディスクＤが１つのシンプロビジョニングプールＰ１を構成する。なお、１つのシンプロビジョニングプールには、２つ以上のＲＡＩＤグループＧが含まれるものとする。
【００１９】
ＲＡＩＤコントローラ２０は、ホストコンピュータ９との間のデータ転送を制御するためのチャネルアダプタ（ＣＡ）２００、制御部２１０およびディスクＤとの間のデータ転送を制御するディスクインタフェース（ＤＩ）２２０を有する。また、制御部２１０は、仮想ボリューム制御部２１１、仮想ボリューム２１２、シンプロビジョニング制御部２１３、記憶部２１４、ＲＡＩＤ制御部２１５およびリビルド制御部２１６を有する。さらに、記憶部２１４は、ＲＡＩＤ管理テーブル２１４ａおよびリストテーブル２１４ｂを有する。
【００２０】
ＲＡＩＤ管理テーブル２１４ａは、ＲＡＩＤグループ毎の管理情報を記憶する。ここで、ＲＡＩＤ管理テーブル２１４ａについて図３を参照しながら説明する。図３は、ＲＡＩＤ管理テーブル２１４ａのデータ構造の一例を示す図である。図３に示すように、ＲＡＩＤ管理テーブル２１４ａは、ＲＡＩＤグループ番号２１４ａ１毎に、所属プール番号２１４ａ２、ＲＡＩＤレベル２１４ａ３、メンバーディスク数２１４ａ４およびメンバーディスク２１４ａ５を対応付けて記憶する。
【００２１】
ＲＡＩＤグループ番号２１４ａ１は、ＲＡＩＤコントローラ２０内でＲＡＩＤグループを識別する番号である。所属プール番号２１４ａ２は、そのＲＡＩＤグループが所属するプール番号である。ＲＡＩＤレベル２１４ａ３は、そのＲＡＩＤグループのＲＡＩＤレベルである。メンバーディスク数２１４ａ４は、ＲＡＩＤグループに属するディスクＤの数を示す値であり、メンバーディスク２１４ａ５は、ＲＡＩＤグループに属する各ディスクＤの番号である。
【００２２】
リストテーブル２１４ｂは、ホストからのアクセスに応じてＲＡＩＤグループに割り当てられた記憶領域の容量をＲＡＩＤグループ毎に管理する。ここで、リストテーブル２１４ｂについて図４を参照しながら説明する。ここで、図４は、リストテーブル２１４ｂのデータ構造の一例を示す図である。図４に示すように、リストテーブル２１４ｂは、所属プール番号２１４ｂ１、ＲＡＩＤグループ番号２１４ｂ２、ＲＡＩＤグループ状態２１４ｂ３および割り当て済記憶領域サイズ２１４ｂ４を、所属プールのＲＡＩＤグループ毎に記憶する。
【００２３】
ＲＡＩＤグループ番号２１４ｂ２は、ＲＡＩＤコントローラ２０内でＲＡＩＤグループを識別する番号である。所属プール番号２１４ｂ１は、そのＲＡＩＤグループが所属するプール番号である。なお、複数のＲＡＩＤグループが同一の所属プールに所属することがあるものとする。ＲＡＩＤグループ状態２１４ｂ３は、ＲＡＩＤグループが正常であるか否かを示す。例えば、ＲＡＩＤグループ状態２１４ｂ３には、ＲＡＩＤグループに所属するディスクが全て正常であれば、ＲＡＩＤグループが正常であることを示す「１」が格納される。また、ＲＡＩＤグループ状態２１４ｂ３には、１台でもディスクが故障していれば、ＲＡＩＤグループが異常であることを示す「０」が格納される。割り当て済記憶領域サイズ２１４ｂ４は、ホストからのアクセスに応じてＲＡＩＤグループ内で仮想ボリュームに割り当て済みとなっている記憶領域のブロック数の総和を示す。
【００２４】
仮想ボリューム制御部２１１は、ホストコンピュータ９から仮想ボリューム２１２に対する新規データの書き込み要求を検出すると、この新規データを仮想ボリューム２１２内の仮想領域に対応付ける。仮想ボリューム２１２は、ホストコンピュータ９からのアクセス対象となる仮想的な記憶部であり、シンプロビジョニング型のボリュームを指す。なお、仮想ボリューム２１２は、ホストコンピュータ９に対して１つであっても良いし、２つ以上であっても良い。ここでは、仮想ボリューム２１２は、ホストコンピュータ９に対して１つであるものとして説明する
【００２５】
シンプロビジョニング制御部２１３は、ＲＡＩＤグループ決定部２１３ａおよび記憶領域割当部２１３ｂを有する。ＲＡＩＤグループ決定部２１３ａは、仮想ボリューム制御部２１１によって新規データに仮想領域が割り当てられると、複数のＲＡＩＤグループＧのうち、障害が発生したディスクＤを含むＲＡＩＤグループＧ以外のＲＡＩＤグループＧを記憶領域を割り当てるグループとして決定する。具体的には、ＲＡＩＤグループ決定部２１３ａは、仮想ボリューム２１２に対するシンプロビジョニングプール（以降、「プール」と略記）を選択する。また、ＲＡＩＤグループ決定部２１３ａは、選択したプール内におけるＲＡＩＤグループＧ毎の仮想ボリュームに割り当て済みの容量のうち他のＲＡＩＤグループＧより小さい容量であって、当該ＲＡＩＤグループＧ内の全てのディスクＤが正常であるＲＡＩＤグループＧを決定する。
【００２６】
具体的には、ＲＡＩＤグループ決定部２１３ａは、リストテーブル２１４ｂから、割り当て済記憶領域サイズ２１４ｂ４が小さい順にＲＡＩＤグループ番号２１４ｂ２を選択する。そして、ＲＡＩＤグループ決定部２１３ａは、選択したＲＡＩＤグループ番号２１４ｂ２のＲＡＩＤグループＧが正常であるか否かを、リストテーブル２１４ｂのＲＡＩＤグループ状態２１４ｂ３を参照して判定する。すなわち、ＲＡＩＤグループ決定部２１３ａは、選択したＲＡＩＤグループＧに含まれるいずれのディスクＤにも障害が無いか否かを判定する。そして、ＲＡＩＤグループ決定部２１３ａは、選択したＲＡＩＤグループ番号２１４ｂ２のＲＡＩＤグループＧが正常である場合には、新規データに記憶領域を割り当てるグループを当該ＲＡＩＤグループＧに決定する。一方、ＲＡＩＤグループ決定部２１３ａは、選択したＲＡＩＤグループ番号２１４ｂ２のＲＡＩＤグループＧが正常でない場合には、割り当て済記憶領域サイズ２１４ｂ４が次に小さいＲＡＩＤグループ番号２１４ｂ２を選択する。かかる一連のＲＡＩＤグループを決定する処理を、「ＲＡＩＤグループ決定処理」というものとする。
【００２７】
記憶領域割当部２１３ｂは、新規データのデータサイズに応じて、ＲＡＩＤグループ決定部２１３ａによって決定されたＲＡＩＤグループＧ内に存在するディスクＤの記憶領域を仮想ボリューム２１２に割り当てる。すなわち、記憶領域割当部２１３ｂは、仮想ボリューム２１２に対応付けられた新規データのデータサイズに応じた記憶領域を、ＲＡＩＤグループ決定部２１３ａによって決定されたＲＡＩＤグループＧ内に存在するディスクＤに確保する。そして、記憶領域割当部２１３ｂは、確保した記憶領域を仮想ボリューム２１２内の新規データの仮想領域に割り当てる。なお、データサイズに応じた記憶領域とは、データサイズ分の記憶領域であっても良いし、データサイズに関わらず例えば３２ＭＢ単位で割り当てた記憶領域であっても良い。
【００２８】
ＲＡＩＤ制御部２１５は、ＲＡＩＤグループ毎に定められたＲＡＩＤレベルに応じて、ＲＡＩＤグループ内のディスクＤにアクセスする。具体的には、ＲＡＩＤ制御部２１５は、記憶領域割当部２１３ｂによって仮想ボリューム２１２に割り当てられた記憶領域に、新規データを書き込む。このとき、ＲＡＩＤ制御部２１５は、ＲＡＩＤ管理テーブル２１４ａからＲＡＩＤグループ決定部２１３ａによって決定されたＲＡＩＤグループＧのＲＡＩＤレベル２１４ａ３を抽出し、抽出したＲＡＩＤレベルに応じて、新規データを記憶領域に書き込む。
【００２９】
また、ＲＡＩＤ制御部２１５は、ディスクＤの障害を検知すると、この障害ディスクＤの再構築（リビルド）要求をリビルド制御部２１６に送信する。
【００３０】
リビルド制御部２１６は、ＲＡＩＤ制御部２１５から障害ディスクＤの再構築要求を受信すると、この障害ディスクＤの再構築を実行する。具体的には、リビルド制御部２１６は、予め定められているホットスペア（ＨＳ）にデータを再構築する。
【００３１】
次に、シンプロビジョニング制御部２１３による記憶領域割当の具体例について図５を参照しながら説明する。図５は、記憶領域割当の具体例について説明する説明図である。ここでは、ＲＡＩＤグループのＲＡＩＤレベルがＲＡＩＤ１の場合を例示する。また、ＲＡＩＤグループＧ０は障害ディスクを含み、ＲＡＩＤグループＧ１は正常なディスクのみのＲＡＩＤグループであるものとする。
【００３２】
まず、仮想ボリューム制御部２１１は、ホストコンピュータ９から仮想ボリューム２１２に対する新規データの書き込み要求を検出すると、この新規データを仮想ボリューム２１２内の仮想領域に対応付ける。そして、仮想ボリューム制御部２１１は、所属プール番号に基づいて、仮想ボリューム２１２に対応するプールを決定する。そして、ＲＡＩＤグループ決定部２１３ａは、リストテーブル２１４ｂから、決定したプールの中でＲＡＩＤグループＧ毎の仮想ボリューム２１２への割り当て済記憶領域サイズ２１４ｂ４が小さい順にＲＡＩＤグループ番号２１４ｂ２を選択する。ここでは、ＲＡＩＤグループＧ０の割り当て済記憶領域サイズ２１４ｂ４が、ＲＡＩＤグループＧ１より小さい場合を想定する。この場合、ＲＡＩＤグループ決定部２１３ａは、ＲＡＩＤグループＧ０を選択する。
【００３３】
ところが、ＲＡＩＤグループ決定部２１３ａは、選択したＲＡＩＤグループＧ０には障害ディスクが含まれるので正常でないと判定し、割り当て済記憶領域サイズ２１４ｂ４が次に小さいＲＡＩＤグループＧを選択する。ここでは、ＲＡＩＤグループ決定部２１３ａは、ＲＡＩＤグループＧ１を選択する。すると、ＲＡＩＤグループ決定部２１３ａは、選択したＲＡＩＤグループＧ１が正常であると判定し、新規データに記憶領域を割り当てるグループをＲＡＩＤグループＧ１に決定する。
【００３４】
次に、記憶領域割当部２１３ｂは、仮想ボリューム２１２に割り当てられた新規データのデータサイズに応じた記憶領域を、決定されたＲＡＩＤグループＧ１内のディスクＤに確保する。そして、記憶領域割当部２１３ｂは、確保した記憶領域を仮想ボリューム２１２内の新規データの仮想領域に割り当てる。
【００３５】
さらに、ＲＡＩＤ制御部２１５は、ＲＡＩＤグループＧ１内のディスクＤに確保された記憶領域に新規データを書き込む。このとき、ＲＡＩＤ制御部２１５は、ＲＡＩＤグループＧ１がＲＡＩＤ１であるので、記憶領域が確保されたディスクＤと対になるディスクＤにも同時に新規データを書き込む。
【００３６】
［実施例２に係る記憶領域割当の処理手順］
次に、実施例２に係る記憶領域割当の処理手順を、図６を参照して説明する。図６は、実施例２に係る記憶領域割当の処理手順を示すフローチャートである。なお、仮想ボリューム制御部２１１は、ホストコンピュータ９から新規データの書き込み要求を検出したものとする。
【００３７】
まず、仮想ボリューム制御部２１１は、書き込み要求のあった新規データを仮想ボリューム２１２内の仮想領域に割り当てる。そして、ＲＡＩＤグループ決定部２１３ａは、仮想ボリューム２１２に対するプール番号を選択する。
【００３８】
次に、ＲＡＩＤグループ決定部２１３ａは、選択したプール番号（「選択プール番号」）に対応するリストテーブル２１４ｂのＲＡＩＤグループ番号２１４ｂ２を、割り当て済記憶領域サイズ２１４ｂ４の小さい順（昇順）に並べ替える（ステップＳ１１）。なお、ＲＡＩＤグループ決定部２１３ａは、リストテーブル２１４ｂにＲＡＩＤグループ番号２１４ｂ２に対応させて順序番号を付加し、割り当て済記憶領域サイズ２１４ｂ４の小さい順（昇順）に順序番号を保持するようにしても良い。
【００３９】
そして、ＲＡＩＤグループ決定部２１３ａは、割り当て済記憶領域サイズ２１４ｂ４の小さい順（昇順）に並べてあるリストテーブル２１４ｂの最初のＲＡＩＤグループ番号２１４ｂ２を選択する（ステップＳ１２）。なお、割り当て済記憶領域サイズ２１４ｂ４の小さい順に順序番号が保持されたリストテーブル２１４ｂの場合には、ＲＡＩＤグループ決定部２１３ａは、順序番号の一番小さい値を持つＲＡＩＤグループ番号２１４ｂ２を選択する。そして、ＲＡＩＤグループ決定部２１３ａは、選択したＲＡＩＤグループ番号２１４ｂ２のＲＡＩＤグループが正常であるか否かを判定する（ステップＳ１３）。
【００４０】
ＲＡＩＤグループ決定部２１３ａは、ＲＡＩＤグループが正常でないと判定する場合には（ステップＳ１３否定）、選択プール番号に所属する全てのＲＡＩＤグループを選択したか否かを、リストテーブル２１４ｂに基づいて判定する（ステップＳ１４）。そして、ＲＡＩＤグループ決定部２１３ａは、全てのＲＡＩＤグループを選択していない場合には（ステップＳ１４否定）、リストテーブル２１４ｂの次のＲＡＩＤグループ番号２１４ｂ２を選択し（ステップＳ１５）、ステップＳ１３に移行する。
【００４１】
一方、ＲＡＩＤグループ決定部２１３ａは、ＲＡＩＤグループが正常であると判定する場合には（ステップＳ１３肯定）、新規データに記憶領域を割り当てるグループを、選択したＲＡＩＤグループに決定する（ステップＳ１６）。また、ＲＡＩＤグループ決定部２１３ａは、全てのＲＡＩＤグループを選択した場合には（ステップＳ１４肯定）、新規データに記憶領域を割り当てるグループを、リストテーブル２１４ｂの最初に選択したＲＡＩＤグループ番号２１４ｂ２のＲＡＩＤグループに決定する（ステップＳ１７）。
【００４２】
続いて、記憶領域割当部２１３ｂは、決定したＲＡＩＤグループＧに物理空間を割り当てる（ステップＳ１８）。すなわち、記憶領域割当部２１３ｂは、仮想ボリューム２１２に割り当てられた新規データのデータサイズに応じた記憶領域を、ＲＡＩＤグループ決定部２１３ａによって決定されたＲＡＩＤグループＧ内のディスクＤに確保する。その後、ＲＡＩＤ制御部２１５は、記憶領域割当部２１３ｂによって割り当てられた物理空間に新規データを書き込む。このとき、ＲＡＩＤ制御部２１５は、ＲＡＩＤグループ決定部２１３ａによって決定されたＲＡＩＤグループＧのＲＡＩＤレベルに応じて、新規データを記憶領域に書き込む。
【００４３】
［実施例２の効果］
上記実施例２によれば、ＲＡＩＤ装置２は、ＲＡＩＤグループＧに割り当てられた記憶領域の容量をＲＡＩＤグループＧ毎に管理するリストテーブル２１４ｂを有するようにした。そして、ＲＡＩＤ装置２のＲＡＩＤグループ決定部２１３ａは、リストテーブル２１４ｂによって管理されたＲＡＩＤグループＧ毎の容量のうち他のＲＡＩＤグループＧより小さい容量のＲＡＩＤグループＧを選択する。そして、ＲＡＩＤグループ決定部２１３ａは、選択したＲＡＩＤグループＧ内の全てのディスクＤが正常であるＲＡＩＤグループＧを決定するようにした。さらに、記憶領域割当部２１３ｂは、新規データのデータサイズに応じて、ＲＡＩＤグループ決定部２１３ａによって決定されたＲＡＩＤグループＧ内に存在するディスクＤの記憶領域を仮想ボリューム２１２に割り当てる。
【００４４】
かかる構成によれば、ＲＡＩＤグループ決定部２１３ａは、全てのディスクＤが正常であるＲＡＩＤグループの中で、割り当てられた記憶領域の容量が最も小さいＲＡＩＤグループＧの物理空間を仮想ボリューム２１２に割り当てる。このため、ＲＡＩＤグループ決定部２１３ａは、全てのディスクＤが正常であるＲＡＩＤグループＧへのアクセス頻度を特定のＲＡＩＤグループＧに偏らないようにすることができ、ＲＡＩＤ装置２全体のアクセス性能の劣化を防止できる。
【００４５】
なお、ＲＡＩＤグループ決定部２１３ａは、リストテーブル２１４ｂによって管理された、ＲＡＩＤグループ毎の割り当て記憶領域の容量のうち他のＲＡＩＤグループＧより小さい容量のＲＡＩＤグループＧを選択する。そして、ＲＡＩＤグループ決定部２１３ａは、選択したＲＡＩＤグループＧ内の全てのディスクＤが正常であるＲＡＩＤグループＧを決定するようにした。しかしながら、ＲＡＩＤグループ決定部２１３ａは、ＲＡＩＤグループＧ内の全てのディスクＤが正常であるＲＡＩＤグループＧをリストテーブル２１４ｂから抽出する。そして、ＲＡＩＤグループ決定部２１３ａは、抽出したＲＡＩＤグループＧの中から最も小さい割り当て記憶領域の容量のＲＡＩＤグループＧを決定するようにしても良い。
【００４６】
また、ＲＡＩＤ装置２は、障害ディスクを含むＲＡＩＤグループが復旧した後、障害時に該ＲＡＩＤグループ以外のＲＡＩＤグループ内に記憶されたデータを、復旧したＲＡＩＤグループに復元するようにしても良い。
【実施例３】
【００４７】
ところで、実施例２に係るＲＡＩＤ装置２では、アクセス対象となる仮想ボリュームに対する新規データの書き込み要求があった場合に、この仮想ボリュームに障害ディスクを含むＲＡＩＤグループ以外のＲＡＩＤグループの物理空間を割り当てる場合を説明した。ＲＡＩＤ装置２は、これに限定されるものではなく、さらに運用中にディスクに障害が発生した場合、障害ディスクを含むＲＡＩＤグループのデータをこのＲＡＩＤグループ以外のＲＡＩＤグループの物理空間に復元しても良い。すなわち、ＲＡＩＤ装置２は、障害ディスクを含むＲＡＩＤグループのデータをＨＳへ復元する代わりに、正常なＲＡＩＤグループの物理空間に復元するのである。
【００４８】
そこで、実施例３では、ＲＡＩＤ装置３が、運用中にディスクに障害が発生した場合、障害ディスクを含むＲＡＩＤグループのデータをこのＲＡＩＤグループ以外のＲＡＩＤグループの物理空間に復元する場合を説明する。
【００４９】
［実施例３に係るＲＡＩＤ装置の構成］
図７は、実施例３に係るＲＡＩＤ装置３の構成を示す機能ブロック図である。なお、図２に示すＲＡＩＤ装置２と同一の構成については同一符号を示すことで、その重複する構成及び動作の説明については省略する。実施例２と実施例３とが異なるところは、ＲＡＩＤ制御部２１５に障害ディスク検出部２１５ａを追加し、リビルド制御部２１６に復元先ＲＡＩＤグループ決定部２１６ａおよびデータ復元部２１６ｂを追加した点にある。さらに、記憶部２１４にＲＡＩＤグループ復元管理テーブル２１４ｃを追加した点にある。
【００５０】
障害ディスク検出部２１５ａは、障害が発生したディスクＤを検出する。また、障害ディスク検出部２１５ａは、検出した障害ディスクＤを含むＲＡＩＤグループＧが異常であることを示す「０」をリストテーブル２１４ｂのＲＡＩＤグループ状態２１４ｂ３に格納する。また、障害ディスク検出部２１５ａは、障害が発生したディスクＤが所属するＲＡＩＤグループＧの復元を指示する。具体的には、障害ディスク検出部２１５ａは、障害が発生したディスクＤのディスク番号、所属するプール番号および所属するＲＡＩＤグループ番号を含む復元指示を復元先ＲＡＩＤグループ決定部２１６ａに行う。
【００５１】
復元先ＲＡＩＤグループ決定部２１６ａは、障害が発生したディスクＤが所属するＲＡＩＤグループＧを障害グループとして、当該障害グループ内のディスクＤに記憶されたデータの復元先を、障害グループ以外のＲＡＩＤグループＧに決定する。具体的には、復元先ＲＡＩＤグループ決定部２１６ａは、障害ディスク検出部２１５ａから復元指示を受け取ると、ＲＡＩＤグループ決定部２１３ａに対して、障害グループ内のディスクＤに記憶されたデータ毎の復元先の決定を指示する。この際、復元先ＲＡＩＤグループ決定部２１６ａは、障害が発生したディスクＤが所属するプールの番号を含む復元先ＲＡＩＤグループの決定指示を通知する。なお、データとは、ディスクＤに対する読み書き単位の情報をいう。
【００５２】
ＲＡＩＤグループ決定部２１３ａは、復元先ＲＡＩＤグループ決定部２１６ａから復元先ＲＡＩＤグループの決定指示を受け取ると、「ＲＡＩＤグループ決定処理」を実行し、ＲＡＩＤグループＧを決定する。すなわち、ＲＡＩＤグループ決定部２１３ａは、復元先ＲＡＩＤグループの決定指示に含まれたプールに含まれた複数のＲＡＩＤグループＧのうち、障害が発生したディスクＤを含むＲＡＩＤグループＧ以外のＲＡＩＤグループＧを決定する。
【００５３】
データ復元部２１６ｂは、復元先ＲＡＩＤグループ決定部２１６ａによって決定されたＲＡＩＤグループＧに、障害グループ内のディスクＤに記憶されたデータを復元する。具体的には、データ復元部２１６ｂは、障害グループ内のディスクＤに記憶されたデータを読み出し、復元先ＲＡＩＤグループ決定部２１６ａによって決定されたＲＡＩＤグループＧ内のディスクＤに書き込む。また、データ復元部２１６ｂは、読み出したデータが記憶されていた場所と、書き込まれた場所とを対にし、ＲＡＩＤグループ復元管理テーブル２１４ｃに格納する。
【００５４】
ここで、ＲＡＩＤグループ復元管理テーブル２１４ｃについて図８を参照しながら説明する。図８は、ＲＡＩＤグループ復元管理テーブル２１４ｃのデータ構造の一例を示す図である。図８に示すように、ＲＡＩＤグループ復元管理テーブル２１４ｃは、障害ＲＡＩＤグループデータ情報２１４ｃ１および復元先ＲＡＩＤグループデータ情報２１４ｃ２をデータ毎に対応付けて記憶する。障害ＲＡＩＤグループデータ情報２１４ｃ１は、障害グループ内のデータの記憶場所を示し、障害グループのＲＡＩＤグループ番号、データが記憶されているディスクＤのディスク番号およびその実アドレスを含む。復元先ＲＡＩＤグループデータ情報２１４ｃ２は、データの復元先の記憶場所を示し、復元先ＲＡＩＤグループＧのＲＡＩＤグループ番号、データが記憶されるディスクＤのディスク番号およびその実アドレスを含む。すなわち、データ復元部２１６ｂは、障害グループ内のディスクＤから読み出したデータが記憶されていた場所を、障害ＲＡＩＤグループデータ情報２１４ｃ１に格納する。また、データ復元部２１６ｂは、読み出したデータを書き込んだ場所を、復元先ＲＡＩＤグループデータ情報２１４ｃ２に格納する。なお、実アドレスとは、例えばＬＢＡ（Logical  Block  Address）であるが、ディスクＤ内の位置を特定できるアドレスであれば良い。また、データの復元管理を実アドレスで指定されるデータ毎に行うようにしたが、複数のデータを纏めた単位で行うようにしても良い。この場合、障害ＲＡＩＤグループデータ情報２１４ｃ１及び復元先ＲＡＩＤグループデータ情報２１４ｃ２の実アドレスに代えて、先頭アドレス及びデータサイズとしても良い。
【００５５】
図７に戻って、データ復元部２１６ｂは、データを復元すると、復元先ＲＡＩＤグループＧおよび障害グループ内の割り当て済記憶領域サイズ２１４ｂ４をリストテーブル２１４ｂに更新する。
【００５６】
次に、リビルド制御部２１６によるデータ復元の具体例について図９を参照しながら説明する。図９は、データ復元の具体例について説明する説明図である。ここでは、ＲＡＩＤグループのＲＡＩＤレベルがＲＡＩＤ１の場合を例示する。
【００５７】
まず、障害ディスク検出部２１５ａは、障害が発生したディスクＤをＲＡＩＤグループＧ０内で検出し、復元先ＲＡＩＤグループ決定部２１６ａにＲＡＩＤグループＧ０の復元を指示する。すると、復元先ＲＡＩＤグループ決定部２１６ａは、ＲＡＩＤグループ決定部２１３ａに復元先ＲＡＩＤグループＧの決定を指示する。そして、ＲＡＩＤグループ決定部２１３ａは、「ＲＡＩＤグループ決定処理」を実行し、ＲＡＩＤグループＧを決定し、復元先ＲＡＩＤグループ決定部２１６ａに処理を戻す。すなわち、ＲＡＩＤグループ決定部２１３ａは、複数のＲＡＩＤグループＧのうち、障害が発生したディスクＤを含むＲＡＩＤグループＧ０以外のＲＡＩＤグループＧ１を決定する。図９の例では、復元先ＲＡＩＤグループ決定部２１６ａは、ＲＡＩＤグループＧ１を決定する。
【００５８】
次に、データ復元部２１６ｂは、復元先ＲＡＩＤグループ決定部２１６ａによって決定されたＲＡＩＤグループＧ１に、ＲＡＩＤグループＧ０内のディスクＤに記憶されたデータを復元する。すなわち、データ復元部２１６ｂは、ＲＡＩＤグループＧ０内の正常なディスクＤに記憶されたデータを読み出し、ＲＡＩＤグループＧ１内のディスクＤに書き込む。なお、データ復元部２１６ｂは、例えばＲＡＩＤグループ毎にディスクＤの状態を管理したテーブルに基づいて、ＲＡＩＤグループＧ０内の正常なディスクＤを選択する。
【００５９】
［実施例３に係るデータ復元の処理手順］
次に、実施例３に係るデータ復元の処理手順を、図１０を参照して説明する。図１０は、実施例３に係るデータ復元の処理手順を示すフローチャートである。なお、ＲＡＩＤ装置３では、運用中にＲＡＩＤグループＧ０のディスクＤ１２が故障したものとする。
【００６０】
まず、障害ディスク検出部２１５ａは、ＲＡＩＤグループＧ０のディスクＤ１２の障害を検出し（ステップＳ２１）、復元先ＲＡＩＤグループ決定部２１６ａにＲＡＩＤグループＧ０の復元を指示する。
【００６１】
そして、復元先ＲＡＩＤグループ決定部２１６ａは、データ復元カウントを「０」に初期化する（ステップＳ２２）。復元先ＲＡＩＤグループ決定部２１６ａは、ＲＡＩＤグループＧ０内のディスクＤに記憶された複数の復元元データのうち、１個の復元元データを選択し、選択した復元元データの記憶領域のアクセスをロックする（ステップＳ２３）。これは、データの復元中に復元元データにアクセスされてデータ内容が変更されるのを防止するためである。なお、選択した復元元データは、読み書き単位の情報を意味する。
【００６２】
続いて、復元先ＲＡＩＤグループ決定部２１６ａは、選択した復元元データの復元先を、ＲＡＩＤグループＧ０以外のＲＡＩＤグループＧに決定する（ステップＳ２４）。そして、データ復元部２１６ｂは、決定された復元元データの復元先のＲＡＩＤグループＧ内のディスクＤに、記憶領域を確保する（ステップＳ２５）、当該記憶領域に選択された復元元データをコピーする（ステップＳ２６）。この際、データ復元部２１６ｂは、選択された復元元データが記憶された記憶領域から復元元データを削除し、当該記憶領域の確保を解放する（ステップＳ２６）。そして、データ復元部２１６ｂは、選択された復元元データの記憶領域のアクセスをアンロックする（ステップＳ２７）。
【００６３】
続いて、復元先ＲＡＩＤグループ決定部２１６ａは、データ復元カウントが復元元データの最大数であるか否かを判定する（ステップＳ２８）。そして、復元先ＲＡＩＤグループ決定部２１６ａは、データ復元カウントが復元元データの最大数であると判定する場合には（ステップＳ２８肯定）、データ復元処理を終了する。一方、復元先ＲＡＩＤグループ決定部２１６ａは、データ復元カウントが復元元データの最大数でないと判定する場合には（ステップＳ２８否定）、データ復元カウントをインクリメントする（ステップＳ２９）。そして、復元先ＲＡＩＤグループ決定部２１６ａは、次の復元元データの復元をすべく、ステップＳ２３に移行する。
【００６４】
［実施例３の効果］
上記実施例３によれば、復元先ＲＡＩＤグループ決定部２１６ａは、ディスクＤに障害が発生した場合に、障害が発生したディスクＤが所属するグループＧを障害グループとする。そして、復元先ＲＡＩＤグループ決定部２１６ａは、この障害グループ内のディスクＤに記憶されたデータの復元先を、当該障害グループ以外のＲＡＩＤグループＧに決定するようにした。そして、データ復元部２１６ｂは、復元先ＲＡＩＤグループ決定部２１６ａによって決定されたＲＡＩＤグループＧに、障害グループ内のディスクＤに記憶されたデータを復元するようにした。
【００６５】
かかる構成によれば、データ復元部２１６ｂは、障害グループ内のディスクＤに記憶されたデータを、この障害グループ以外のＲＡＩＤグループＧに復元するので、障害グループへのアクセスを抑止する。このため、ＲＡＩＤ装置３は、その後、障害グループにアクセスしないこととなり、障害グループにおけるアクセス負荷を回避できるようになるので、ＲＡＩＤ装置３全体のアクセス性能の劣化を防止できる。
【実施例４】
【００６６】
ところで、実施例３に係るＲＡＩＤ装置３は、運用中にディスクに障害が発生した場合に、障害ディスクを含むＲＡＩＤグループのデータをこのＲＡＩＤグループ以外のＲＡＩＤグループの物理空間に復元する場合を説明した。すなわち、ＲＡＩＤ装置３は、障害ディスクを含むＲＡＩＤグループのデータをＨＳへ復元する代わりに、障害ディスクを含むＲＡＩＤグループのデータを正常なＲＡＩＤグループに復元した。しかしながら、ＲＡＩＤ装置３は、これに限定されるものではなく、障害ディスクを含むＲＡＩＤグループのデータを正常なＲＡＩＤグループに復元後、復元データを保守により復旧したＲＡＩＤグループに再度復元するようにしても良い。
【００６７】
そこで、実施例４では、ＲＡＩＤ装置４が、障害ディスクを含むＲＡＩＤグループのデータを正常なＲＡＩＤグループに復元後、復元データを保守により復旧したＲＡＩＤグループに再度復元する場合を説明する。
【００６８】
［実施例４に係るＲＡＩＤ装置の構成］
図１１は、実施例４に係るＲＡＩＤ装置４の構成を示す機能ブロック図である。なお、図７に示すＲＡＩＤ装置３と同一の構成については同一符号を示すことで、その重複する構成及び動作の説明については省略する。実施例３と実施例４とが異なるところは、ＲＡＩＤ制御部２１５に障害ディスク復元検出部２１５ｂを追加した点にある。
【００６９】
障害ディスク復元検出部２１５ｂは、障害が発生したディスクＤを含むＲＡＩＤグループＧ（障害グループ）が復旧した旨を検出する。また、障害ディスク復元検出部２１５ｂは、復旧したＲＡＩＤグループＧが正常であることを示す「１」をリストテーブル２１４ｂのＲＡＩＤグループ状態２１４ｂ３に格納する。また、障害ディスク復元検出部２１５ｂは、復旧したＲＡＩＤグループＧの復元を復元先ＲＡＩＤグループ決定部２１６ａに指示する。具体的には、障害ディスク復元検出部２１５ｂは、復旧したＲＡＩＤグループＧの番号および所属するプールＰのプール番号を含む再復元指示を復元先ＲＡＩＤグループ決定部２１６ａに行う。復元先ＲＡＩＤグループ決定部２１６ａは、障害ディスク復元検出部２１５ｂから再復元指示を受け取ると、復元先を、復旧したＲＡＩＤグループＧに決定する。
【００７０】
データ復元部２１６ｂは、復旧したＲＡＩＤグループＧを復旧グループとして、当該復旧グループに、障害グループ内のディスクＤに記憶されていたデータを再度復元する。具体的には、データ復元部２１６ｂは、ＲＡＩＤグループ復元管理テーブル２１４ｃの復元先ＲＡＩＤグループデータ情報２１４ｃ２に含まれる記憶場所の復元データを、障害ＲＡＩＤグループデータ情報２１４ｃ１に含まれる記憶場所にコピーする。
【００７１】
さらに具体的に、データ復元部２１６ｂは、ＲＡＩＤグループ復元管理テーブル２１４ｃから、障害ＲＡＩＤグループデータ情報２１４ｃ１内のＲＡＩＤグループ番号が復旧グループの番号と一致する復元先ＲＡＩＤグループデータ情報２１４ｃ２を抽出する。そして、データ復元部２１６ｂは、抽出した復元先ＲＡＩＤグループデータ情報２１４ｃ２に含まれたデータの復元先の記憶場所（ＲＡＩＤグループ、ディスク番号、実アドレス）から復元データを読み出し、復旧グループ内のディスクＤに書き込む。このとき、データ復元部２１６ｂは、読み出した復元データを、この復元データが元にあった記憶場所、すなわち障害ＲＡＩＤグループデータ情報２１４ｃ１内の記憶場所に書き込むものとしても良い。
【００７２】
また、データ復元部２１６ｂは、データを再復元すると、復元先ＲＡＩＤグループＧおよび復旧グループ内の割り当て済記憶領域サイズ２１４ｂ４をリストテーブル２１４ｂに更新する。
【００７３】
次に、リビルド制御部２１６によるデータ再復元の具体例について図１２を参照しながら説明する。図１２は、データ再復元の具体例について説明する説明図である。ここでは、ＲＡＩＤグループＧ０は、障害グループであったものとし、ＲＡＩＤグループＧ０内のデータは、ＲＡＩＤグループＧ１に復元されたものとする。
【００７４】
まず、障害ディスク復元検出部２１５ｂは、ＲＡＩＤグループＧ０が復旧した旨を検出し、復元先ＲＡＩＤグループ決定部２１６ａに復旧したＲＡＩＤグループＧ０の復元を指示する。すると、復元先ＲＡＩＤグループ決定部２１６ａは、ＲＡＩＤグループＧ０を復元先として決定する。
【００７５】
次に、データ復元部２１６ｂは、復元先ＲＡＩＤグループ決定部２１６ａによって決定されたＲＡＩＤグループＧ０に、障害グループとしてのＲＡＩＤグループＧ０内のディスクＤに記憶されていたデータを再度復元する。すなわち、データ復元部２１６ｂは、障害発生時にＲＡＩＤグループＧ１に復元された復元データを、復旧グループとしてのＲＡＩＤグループＧ０に再び復元する。
【００７６】
［実施例４に係るデータ再復元の処理手順］
次に、実施例４に係るデータ再復元の処理手順を、図１３を参照して説明する。図１３は、実施例４に係るデータ再復元の処理手順を示すフローチャートである。なお、ＲＡＩＤ装置４では、運用中にＲＡＩＤグループＧ０のディスクＤ１２が故障し、ＲＡＩＤグループＧ０内のデータをＲＡＩＤグループＧ０以外のＲＡＩＤグループに復元したものとする。
【００７７】
まず、ＲＡＩＤ装置４は、障害ディスクＤ１２を交換する（ステップＳ３１）。なお、この交換時点では、正常となったディスクＤ１２を含むＲＡＩＤグループＧ０には、記憶領域が全く割り当てられていない。障害ディスク復元検出部２１５ｂは、ＲＡＩＤグループＧ０（障害グループ）が復旧した旨を検出すると、復元先ＲＡＩＤグループ決定部２１６ａにＲＡＩＤグループＧ０の再復元指示を行う。すると、復元先ＲＡＩＤグループ決定部２１６ａは、ＲＡＩＤグループＧ０を復元先として決定する。
【００７８】
続いて、データ復元部２１６ｂは、データ復元カウントを「０」に初期化する（ステップＳ３２）。そして、データ復元部２１６ｂは、ＲＡＩＤグループ復元管理テーブル２１４ｃから、障害ＲＡＩＤグループデータ情報２１４ｃ１内のＲＡＩＤグループ番号がＲＡＩＤグループＧ０（復旧グループ）と一致する復元先ＲＡＩＤグループデータ情報２１４ｃ２を抽出する。データ復元部２１６ｂは、この抽出された復元先ＲＡＩＤグループデータ情報２１４ｃ２のレコード数を「復元元データの最大数」とする。そして、データ復元部２１６ｂは、復元先ＲＡＩＤグループデータ情報２１４ｃ２内の１個の復元元データの記憶領域（ＲＡＩＤグループ番号、ディスク番号、実アドレス）を選択し、選択した記憶領域のアクセスをロックする（ステップＳ３３）。これは、データの復元中に復元元データにアクセスされてデータ内容が変更されるのを防止するためである。
【００７９】
続いて、データ復元部２１６ｂは、復元先として決定されたＲＡＩＤグループＧ０内のディスクＤに記憶領域を割り当て（ステップＳ３４）、当該記憶領域に、選択された復元元データをコピーする（ステップＳ３５）。この際、データ復元部２１６ｂは、選択された復元元データが記憶された記憶領域から復元元データを削除し、当該記憶領域の割り当てを解放する。そして、データ復元部２１６ｂは、選択された復元元データの記憶領域のアクセスをアンロックする（ステップＳ３６）。
【００８０】
続いて、データ復元部２１６ｂは、データ復元カウントが「復元元データの最大数」であるか否かを判定する（ステップＳ３７）。そして、データ復元部２１６ｂは、データ復元カウントが「復元元データの最大数」であると判定する場合には（ステップＳ３７肯定）、データ再復元処理を終了する。一方、データ復元部２１６ｂは、データ復元カウントが「復元元データの最大数」でないと判定する場合には（ステップＳ３７否定）、データ復元カウントをインクリメントする（ステップＳ３８）。そして、データ復元部２１６ｂは、次の復元元データの再復元をすべく、ステップＳ３３に移行する。
【００８１】
［実施例４の効果］
上記実施例４によれば、復元先ＲＡＩＤグループ決定部２１６ａは、ディスクＤに障害が発生した場合に、障害が発生したディスクＤが所属するグループＧを障害グループとする。そして、復元先ＲＡＩＤグループ決定部２１６ａは、この障害グループ内のディスクＤに記憶されたデータの復元先を、当該障害グループ以外のＲＡＩＤグループＧに決定する。そして、データ復元部２１６ｂは、復元先ＲＡＩＤグループ決定部２１６ａによって決定されたＲＡＩＤグループＧに、障害グループ内のディスクＤに記憶されたデータを復元する。さらに、データ復元部２１６ｂは、障害グループが復旧した場合に、障害グループを復旧グループとして、当該復旧グループに、障害グループ内のディスクＤに記憶されていたデータを再度復元するようにした。
【００８２】
かかる構成によれば、データ復元部２１６ｂは、障害グループ内に記憶されていたデータであって復元先のＲＡＩＤグループ内に復元されたデータを、障害グループが復旧した結果復旧グループとなったＲＡＩＤグループに再度復元する。このため、データ復元部２１６ｂは、復元先のＲＡＩＤグループから復元データを復旧グループに分散できるので、復元先のＲＡＩＤグループへのアクセス頻度を軽減でき、ＲＡＩＤ装置４全体のアクセス性能の劣化を防止できる。
【００８３】
なお、データ復元部２１６ｂは、復元先ＲＡＩＤグループ内に記憶された全ての復元データを復旧グループに書き込むものとして説明したが、これに限定されない。すなわち、データ復元部２１６ｂは、復元データ毎に「ＲＡＩＤグループ決定処理」によって決定されるＲＡＩＤグループＧにこれら復元データを書き込むものとしても良い。この場合、復元先ＲＡＩＤグループ決定部２１６ａが、ＲＡＩＤグループ復元管理テーブル２１４ｃから障害ＲＡＩＤグループデータ情報２１４ｃ１内のＲＡＩＤグループ番号が復旧グループ番号である復元先ＲＡＩＤグループデータ情報２１４ｃ２を抽出する。そして、復元先ＲＡＩＤグループ決定部２１６ａは、ＲＡＩＤグループ決定部２１３ａに対して、抽出した復元先ＲＡＩＤグループデータ情報２１４ｃ２（復元データ）毎の再復元先の決定を指示する。そして、ＲＡＩＤグループ決定部２１３ａは、「ＲＡＩＤグループ決定処理」によって復元データ毎に再復元先を決定する。そして、データ復元部２１６ｂは、復元データ毎に決定された再復元先に、復元先ＲＡＩＤグループデータ情報２１４ｃ２に含まれたデータの復元先の記憶場所に記憶された復元データを再復元する。これにより、データ復元部２１６ｂは、全ＲＡＩＤグループ内の物理空間の割り当て量を平均化させることができ、さらにＲＡＩＤ装置４全体のアクセス性能の劣化を防止できる。
【００８４】
［その他］
なお、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的態様は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。例えば、仮想ボリューム制御部２１１とシンプロビジョニング制御部２１３とを１つの部として統合しても良い。一方、実施例４に係るＲＡＩＤ装置４において、復元先ＲＡＩＤグループ決定部２１６ａを、復元先のＲＡＩＤグループを決定する復元先ＲＡＩＤグループ決定部と、再復元先のＲＡＩＤグループを決定する再復元先ＲＡＩＤグループ決定部とに分散しても良い。この場合、データ復元部２１６ｂを、復元先にデータを復元するデータ復元部と、再復元先にデータを復元するデータ再復元部とに分散しても良い。また、記憶部２１４をＲＡＩＤ装置２〜４の外部装置としてネットワーク経由で接続するようにしても良い。
【００８５】
また、上記実施例では、ディスクをストレージデバイスとして用いるＲＡＩＤ装置を例に説明を行なったが、開示の技術はこれに限定されるものではなく、任意の記録媒体を用いて実施することができるものである。
【００８６】
また、ストレージ装置１およびＲＡＩＤ装置２〜４にて行われる各処理機能は、その全部または任意の一部が、ＣＰＵ（Central Processing Unit）（またはＭＰＵ（Micro Processing Unit）、ＭＣＵ（Micro Controller Unit）などのマイクロ・コンピュータ）および当該ＣＰＵ（またはＭＰＵ、ＭＣＵなどのマイクロ・コンピュータ）にて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現されても良い。
【００８７】
以上の実施例に係る実施形態に関し、さらに以下の付記を開示する。
【００８８】
（付記１）データを記憶する記憶領域を備えた複数の物理媒体と、
アクセス対象となる仮想ボリュームに対する新規データの書き込み要求を検出すると、複数の物理媒体で構成する複数のストレージグループのうち、障害が発生した物理媒体を含むストレージグループ以外のストレージグループを、記憶領域を割り当てるグループとして決定するストレージグループ決定部と、
前記新規データのデータサイズに応じて、前記ストレージグループ決定部によって決定されたストレージグループ内に存在する物理媒体の記憶領域を前記仮想ボリュームに割り当てる記憶領域割当部と
を有することを特徴とするストレージ装置。
【００８９】
（付記２）前記ストレージグループ決定部は、
前記ストレージグループに割り当てられた記憶領域の容量を前記ストレージグループ毎に管理する記憶領域容量管理部を有し、
前記記憶領域容量管理部によって管理されたストレージグループ毎の容量のうち他のストレージグループより小さい容量のストレージグループであって当該ストレージグループ内の全ての物理媒体が正常であるストレージグループを決定することを特徴とする付記１に記載のストレージ装置。
【００９０】
（付記３）前記物理媒体に障害が発生した場合に、障害が発生した物理媒体を含むストレージグループを障害グループとして、当該障害グループ内の物理媒体に記憶されたデータの復元先を、前記障害グループ以外のストレージグループに決定する復元先グループ決定部と、
前記復元先グループ決定部によって決定されたストレージグループに、前記障害グループ内の物理媒体に記憶されたデータを復元するデータ復元部とを有することを特徴とする付記１または付記２に記載のストレージ装置。
【００９１】
（付記４）前記データ復元部は、
前記障害グループが復旧した場合に、前記障害グループを復旧グループとして、当該復旧グループに、前記障害グループ内の物理媒体に記憶されていたデータを再度復元することを特徴とする付記３に記載のストレージ装置。
【００９２】
（付記５）アクセス対象となる仮想ボリュームに対する新規データの書き込み要求を検出すると、複数の物理媒体で構成する複数のストレージグループのうち、障害が発生した物理媒体を含むストレージグループ以外のストレージグループを、記憶領域を割り当てるグループとして決定するストレージグループ決定部と、
前記新規データのデータサイズに応じて、前記ストレージグループ決定部によって決定されたストレージグループ内に存在する物理媒体の記憶領域を前記仮想ボリュームに割り当てる記憶領域割当部と
を有することを特徴とするストレージ装置のコントローラ。
【００９３】
（付記６）アクセス対象となる仮想ボリュームに対する新規データの書き込み要求を検出すると、複数の物理媒体で構成する複数のストレージグループのうち、障害が発生した物理媒体を含むストレージグループ以外のストレージグループを、記憶領域を割り当てるグループとして決定するストレージグループ決定ステップと、
前記新規データのデータサイズに応じて、前記ストレージグループ決定ステップによって決定されたストレージグループ内に存在する物理媒体の記憶領域を前記仮想ボリュームに割り当てる記憶領域割当ステップと
を含むことを特徴とするストレージ装置の記憶領域割当方法。
【符号の説明】
【００９４】
１  ストレージ装置
２、３、４  ＲＡＩＤ装置
９  ホストコンピュータ
１１  ストレージグループ決定部
１２  記憶領域割当部
２１２  仮想ボリューム
２０、３０  ＲＡＩＤコントローラ
２１０  制御部
２１１  仮想ボリューム制御部
２１３  シンプロビジョニング制御部
２１３ａ  ＲＡＩＤグループ決定部
２１３ｂ  記憶領域割当部
２１４  記憶部
２１４ａ  ＲＡＩＤ管理テーブル
２１４ｂ  リストテーブル
２１４ｃ  ＲＡＩＤグループ復元管理テーブル
２１５  ＲＡＩＤ制御部
２１５ａ  障害ディスク検出部
２１５ｂ  障害ディスク復元検出部
２１６  リビルド制御部
２１６ａ  復元先ＲＡＩＤグループ決定部
２１６ｂ  データ復元部
【図１】
0005532982.tif 000002
【図２】
0005532982.tif 000003
【図３】
0005532982.tif 000004
【図４】
0005532982.tif 000005
【図５】
0005532982.tif 000006
【図６】
0005532982.tif 000007
【図７】
0005532982.tif 000008
【図８】
0005532982.tif 000009
【図９】
0005532982.tif 000010
【図１０】
0005532982.tif 000011
【図１１】
0005532982.tif 000012
【図１２】
0005532982.tif 000013
【図１３】
0005532982.tif 000014