(57)【要約】  低消費電力でデータを冗長化できるようにする。  動作制御部（１１）は、各論理記憶領域（３１，３２）を構成する記憶装置（２１〜２５）のうち、記憶装置（２２，２５）の動作を停止させる。アクセス制御部（１２）は、各論理記憶領域（３１，３２）を構成する記憶装置のうち、停止中の記憶装置（２２，２５）へのデータの書き込みが要求されたとき、書き込みが要求された記憶装置（２２，２５）の代わりに、各論理記憶領域を構成する記憶装置（２１〜２５）とは別の予備用の記憶装置（２６）にデータを書き込み、各論理記憶領域（３１，３２）を構成する記憶装置（２１〜２５）のうち動作中の記憶装置（２１，２３，２４）と予備用の記憶装置（２６）とによって、各論理記憶領域（３１，３２）におけるデータの冗長性が保たれるように制御する。
2014002160.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ複数の記憶装置の記憶領域で構成される１つまたは複数の論理記憶領域ごとにデータが異なる記憶装置に冗長化されるように、前記各論理記憶領域へのデータの書き込みを制御するストレージ制御装置において、
前記各論理記憶領域を構成する記憶装置のうち、複数の記憶装置の動作を停止させる動作制御部と、
前記各論理記憶領域を構成する記憶装置のうち、停止中の記憶装置へのデータの書き込みが要求されたとき、書き込みが要求された記憶装置の代わりに、前記各論理記憶領域を構成する記憶装置とは別の予備用記憶装置にデータを書き込み、前記各論理記憶領域を構成する記憶装置のうち動作中の記憶装置と前記予備用記憶装置とによって、前記各論理記憶領域におけるデータの冗長性が保たれるように制御するアクセス制御部と、
を有することを特徴とするストレージ制御装置。
【請求項２】
前記各論理記憶領域を構成する記憶装置のうち、停止中の記憶装置の動作を開始させ、前記予備用記憶装置に格納されたデータごとに、前記各論理記憶領域を構成するいずれかの記憶装置における書き込み位置が登録された書き込み位置情報に基づいて、前記予備用記憶装置に格納されたデータを、対応する前記書き込み位置が示す記憶領域に書き戻す書き戻し制御部をさらに有することを特徴とする請求の範囲第１項記載のストレージ制御装置。
【請求項３】
前記アクセス制御部は、前記予備用記憶装置に格納されたデータを、対応する前記書き込み位置が示す記憶領域に書き戻す処理が実行されている間に、いずれかの前記論理記憶領域へのデータの書き込みが要求された場合には、書き込みが要求された前記論理記憶領域を構成する記憶装置へデータを書き込むとともに、書き込み先の記憶装置に書き戻すべきデータが前記予備用記憶装置に格納されている場合には、当該データを破棄することを特徴とする請求の範囲第２項記載のストレージ制御装置。
【請求項４】
前記アクセス制御部は、
前記各論理記憶領域を構成する記憶装置のうち、停止中の記憶装置へのデータの書き込みが要求されたとき、当該停止中の記憶装置への書き込み位置を示す前記書き込み位置情報を、書き込みが要求されたデータに対応付けて前記予備用記憶装置に書き込むとともに、所定の記憶領域にも前記書き込み位置情報を登録し、
前記各論理記憶領域を構成する記憶装置のうち、停止中の同じ記憶装置内の同じアドレスへのデータの書き込みが要求されるたびに、書き込みが要求されたデータとこれに対応付けた前記書き込み位置情報とを前記予備用記憶装置に追記し、
前記書き戻し制御部は、
前記予備用記憶装置に書き込まれたデータおよびこれに対応付けられた前記書き込み位置情報を、前記予備用記憶装置への書き込み順とは逆の順序で読み出し、
読み出した前記書き込み位置情報が前記所定の記憶領域にも登録されている場合には、当該書き込み位置情報に対応付けられたデータを当該書き込み位置情報が示す記憶装置の記憶領域に書き戻すとともに、当該書き込み位置情報を前記所定の記憶領域から削除し、
読み出した前記書き込み位置情報が前記所定の記憶領域に登録されていない場合には、当該書き込み位置情報に対応付けられたデータを破棄する、
ことを特徴とする請求の範囲第２項記載のストレージ制御装置。
【請求項５】
前記アクセス制御部は、前記予備用記憶装置に格納されたデータを対応する前記書き込み位置が示す記憶領域に書き戻す処理が実行されている間に、いずれかの前記論理記憶領域へのデータの書き込みが要求された場合には、書き込みが要求された前記論理記憶領域を構成する記憶装置へデータを書き込むとともに、当該データの書き込み先を示す前記書き込み位置情報が前記所定の記憶領域に登録されている場合には、当該書き込み位置情報を前記所定の記憶領域から削除することを特徴とする請求の範囲第４項記載のストレージ制御装置。
【請求項６】
前記所定の記憶領域は揮発性の記憶領域であり、
前記アクセス制御部は、前記所定の記憶領域に登録された前記書き込み位置情報が失われたとき、前記予備用記憶装置からデータに対応付けられた前記書き込み位置情報を読み出して、前記所定の記憶領域に再登録する、
ことを特徴とする請求の範囲第４項または第５項記載のストレージ制御装置。
【請求項７】
前記所定の記憶領域は揮発性の記憶領域であり、
前記アクセス制御部は、
前記所定の記憶領域に登録された前記書き込み位置情報が失われたとき、前記予備用記憶装置に書き込まれたデータおよびこれに対応付けられた前記書き込み位置情報を、前記予備用記憶装置への書き込み順とは逆の順序で読み出し、
読み出した前記書き込み位置情報が前記所定の記憶領域に登録されていない場合には、当該書き込み位置情報に対応付けられたデータを当該書き込み位置情報が示す記憶装置の記憶領域に書き戻すとともに、当該書き込み位置情報を前記所定の記憶領域に登録し、
読み出した前記書き込み位置情報が前記所定の記憶領域にも登録されている場合には、当該書き込み位置情報に対応付けられたデータを破棄する、
ことを特徴とする請求の範囲第４項または第５項記載のストレージ制御装置。
【請求項８】
前記書き戻し制御部は、前記予備用記憶装置の残容量が所定のしきい値より小さくなったとき、前記予備用記憶装置に格納されたデータを、対応する前記書き込み位置が示す記憶領域に書き戻すことを特徴とする請求の範囲第２項〜第７項のいずれか１項に記載のストレージ制御装置。
【請求項９】
前記アクセス制御部は、いずれかの前記論理記憶領域に格納されたデータの読み出しが要求されたとき、読み出しが要求された論理記憶領域を構成する記憶装置のうち、動作中の記憶装置からデータを読み出すことを特徴とする請求の範囲第１項〜第８項のいずれか１項に記載のストレージ制御装置。
【請求項１０】
前記アクセス制御部は、前記予備用記憶装置が故障したとき、停止中の記憶装置の動作を開始させ、動作を開始させた記憶装置と同じ前記論理記憶領域を構成する他の記憶装置に格納されたデータを基に、前記予備用記憶装置に格納されていたデータをリビルドし、リビルドされたデータを、動作を開始させた記憶装置に格納することを特徴とする請求の範囲第１項〜第９項のいずれか１項に記載のストレージ制御装置。
【請求項１１】
それぞれ複数の記憶装置の記憶領域で構成される１つまたは複数の論理記憶領域ごとにデータが異なる記憶装置に冗長化されるように、前記各論理記憶領域へのデータの書き込みを制御するストレージ制御装置におけるストレージ制御方法であって、
前記各論理記憶領域を構成する記憶装置のうち、複数の記憶装置の動作を停止させ、
前記各論理記憶領域を構成する記憶装置のうち、停止中の記憶装置へのデータの書き込みが要求されたとき、書き込みが要求された記憶装置の代わりに、前記各論理記憶領域を構成する記憶装置とは別の予備用記憶装置にデータを書き込み、前記各論理記憶領域を構成する記憶装置のうち動作中の記憶装置と前記予備用記憶装置とによって、前記各論理記憶領域におけるデータの冗長性が保たれるように制御する、
ことを特徴とするストレージ制御方法。
【請求項１２】
前記各論理記憶領域を構成する記憶装置のうち、停止中の記憶装置の動作を開始させ、
前記予備用記憶装置に格納されたデータごとに、前記各論理記憶領域を構成するいずれかの記憶装置における書き込み位置が登録された書き込み位置情報に基づいて、前記予備用記憶装置に格納されたデータを、対応する前記書き込み位置が示す記憶領域に書き戻す、
処理をさらに含むことを特徴とする請求の範囲第１１項記載のストレージ制御方法。
【請求項１３】
前記予備用記憶装置に格納されたデータを、対応する前記書き込み位置が示す記憶領域に書き戻す処理が実行されている間に、いずれかの前記論理記憶領域へのデータの書き込みが要求された場合には、書き込みが要求された前記論理記憶領域を構成する記憶装置へデータを書き込むとともに、書き込み先の記憶装置に書き戻すべきデータが前記予備用記憶装置に格納されている場合には、当該データを破棄することを特徴とする請求の範囲第１２項記載のストレージ制御方法。
【請求項１４】
前記予備用記憶装置にデータを書き込む処理は、
前記各論理記憶領域を構成する記憶装置のうち、停止中の記憶装置へのデータの書き込みが要求されたとき、当該停止中の記憶装置への書き込み位置を示す前記書き込み位置情報を、書き込みが要求されたデータに対応付けて前記予備用記憶装置に書き込むとともに、所定の記憶領域にも前記書き込み位置情報を登録し、
前記各論理記憶領域を構成する記憶装置のうち、停止中の同じ記憶装置内の同じアドレスへのデータの書き込みが要求されるたびに、書き込みが要求されたデータとこれに対応付けた前記書き込み位置情報とを前記予備用記憶装置に追記する、
処理を含み、
前記書き戻し処理は、
前記予備用記憶装置に書き込まれたデータおよびこれに対応付けられた前記書き込み位置情報を、前記予備用記憶装置への書き込み順とは逆の順序で読み出し、
読み出した前記書き込み位置情報が前記所定の記憶領域にも登録されている場合には、当該書き込み位置情報に対応付けられたデータを当該書き込み位置情報が示す記憶装置の記憶領域に書き戻すとともに、当該書き込み位置情報を前記所定の記憶領域から削除し、
読み出した前記書き込み位置情報が前記所定の記憶領域に登録されていない場合には、当該書き込み位置情報に対応付けられたデータを破棄する、
処理を含むことを特徴とする請求の範囲第１２項記載のストレージ制御方法。
【請求項１５】
前記予備用記憶装置に格納されたデータを対応する前記書き込み位置が示す記憶領域に書き戻す処理が実行されている間に、いずれかの前記論理記憶領域へのデータの書き込みが要求された場合には、書き込みが要求された前記論理記憶領域を構成する記憶装置へデータを書き込むとともに、当該データの書き込み先を示す前記書き込み位置情報が前記所定の記憶領域に登録されている場合には、当該書き込み位置情報を前記所定の記憶領域から削除することを特徴とする請求の範囲第１４項記載のストレージ制御方法。
【請求項１６】
前記所定の記憶領域は揮発性の記憶領域であり、また、
前記所定の記憶領域に登録された前記書き込み位置情報が失われたとき、前記予備用記憶装置からデータに対応付けられた前記書き込み位置情報を読み出して、前記所定の記憶領域に再登録する、
処理をさらに含むことを特徴とする請求の範囲第１４項または第１５項記載のストレージ制御方法。
【請求項１７】
前記所定の記憶領域は揮発性の記憶領域であり、また、
前記所定の記憶領域に登録された前記書き込み位置情報が失われたとき、前記予備用記憶装置に書き込まれたデータおよびこれに対応付けられた前記書き込み位置情報を、前記予備用記憶装置への書き込み順とは逆の順序で読み出し、
読み出した前記書き込み位置情報が前記所定の記憶領域に登録されていない場合には、当該書き込み位置情報に対応付けられたデータを当該書き込み位置情報が示す記憶装置の記憶領域に書き戻すとともに、当該書き込み位置情報を前記所定の記憶領域に登録し、
読み出した前記書き込み位置情報が前記所定の記憶領域にも登録されている場合には、当該書き込み位置情報に対応付けられたデータを破棄する、
処理をさらに含むことを特徴とする請求の範囲第１４項または第１５項記載のストレージ制御方法。
【請求項１８】
前記書き戻し処理では、前記予備用記憶装置の残容量が所定のしきい値より小さくなったとき、前記予備用記憶装置に格納されたデータを、対応する前記書き込み位置が示す記憶領域に書き戻すことを特徴とする請求の範囲第１２項〜第１７項のいずれか１項に記載のストレージ制御方法。
【請求項１９】
いずれかの前記論理記憶領域に格納されたデータの読み出しが要求されたとき、読み出しが要求された論理記憶領域を構成する記憶装置のうち、動作中の記憶装置からデータを読み出す、
処理をさらに含むことを特徴とする請求の範囲第１１項〜第１８項のいずれか１項に記載のストレージ制御方法。
【請求項２０】
それぞれ複数の記憶装置の記憶領域で構成される１つまたは複数の論理記憶領域ごとにデータが異なる記憶装置に冗長化されるように、前記各論理記憶領域へのデータの書き込みを制御するためのストレージ制御プログラムにおいて、
コンピュータに、
前記各論理記憶領域を構成する記憶装置のうち、複数の記憶装置の動作を停止させ、
前記各論理記憶領域を構成する記憶装置のうち、停止中の記憶装置へのデータの書き込みが要求されたとき、書き込みが要求された記憶装置の代わりに、前記各論理記憶領域を構成する記憶装置とは別の予備用記憶装置にデータを書き込み、前記各論理記憶領域を構成する記憶装置のうち動作中の記憶装置と前記予備用記憶装置とによって、前記各論理記憶領域におけるデータの冗長性が保たれるように制御する、
処理を実行させることを特徴とするストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置、ストレージ制御方法およびストレージ制御プログラムに関する。
【背景技術】
【０００２】
近年、ＨＤＤ（Hard Disk Drive）などの記憶装置を複数用いたストレージシステムが広く使用されている。このようなストレージシステムでは、一般的に、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）技術を用いて、データが２つ以上の記憶装置に冗長化されるような記録制御が行われる。これにより、記録されるデータの安全性が高められている。【０００３】
ＲＡＩＤ技術を利用したストレージシステムは、多数の記憶装置を備えることから、消費電力が高くなるという問題がある。これに対して、運用ボリューム用の記憶装置とレプリケーション用の記憶装置とを備えるシステムにおいて、通常運用時にはレプリケーション用の記憶装置の電源をオフにしておき、所定のタイミングでレプリケーション用の記憶装置の電源をオンにしてレプリケーションを行うものがある。【０００４】
また、ＲＡＩＤ技術を利用した多くのストレージシステムは、ホットスペア（Hot Spare）と呼ばれる予備用記憶装置を備える。このようなストレージシステムでは、１つの記憶装置が故障すると、故障した記憶装置に記憶されていたデータがリビルドされて、ホットスペアの記憶装置に格納される。これにより、ストレージシステムの運用を短時間で再開できる。【０００５】
ホットスペアの記憶装置を利用した技術の例としては、ＲＡＩＤによって制御される複数の記憶装置に格納されたデータの一部を、ホットスペアの記憶装置にも書き込んでおき、データの読み出し時に、ＲＡＩＤによって制御される各記憶装置だけでなくホットスペアの記憶装置からも読み出しを行うことで、読み出しを高速化するものがある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−３２６２４４号公報
【特許文献２】特開２００３−１０８３１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記のように、ＲＡＩＤ技術を利用したストレージシステムでは、消費電力が高くなるという問題がある。これに対して、上記のように、通常運用時にレプリケーション用の記憶装置の電源をオフにしておく技術では、レプリケーション用の記憶装置の電源をオンにするまで、データが冗長化されない。【０００８】
１つの側面では、本発明は、低消費電力でデータを冗長化することが可能なストレージ制御装置、ストレージ制御方法およびストレージ制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの案では、それぞれ複数の記憶装置の記憶領域で構成される１つまたは複数の論理記憶領域ごとにデータが異なる記憶装置に冗長化されるように、各論理記憶領域へのデータの書き込みを制御するストレージ制御装置が提供される。このストレージ制御装置は、次のような動作制御部およびアクセス制御部を有する。動作制御部は、各論理記憶領域を構成する記憶装置のうち、複数の記憶装置の動作を停止させる。アクセス制御部は、各論理記憶領域を構成する記憶装置のうち、停止中の記憶装置へのデータの書き込みが要求されたとき、書き込みが要求された記憶装置の代わりに、各論理記憶領域を構成する記憶装置とは別の予備用記憶装置にデータを書き込み、各論理記憶領域を構成する記憶装置のうち動作中の記憶装置と予備用記憶装置とによって、各論理記憶領域におけるデータの冗長性が保たれるように制御する。【００１０】
また、１つの案では、上記のストレージ制御装置と同様の処理が実行されるストレージ制御方法、および、上記のストレージ制御装置と同様の処理をコンピュータに実行させるストレージ制御プログラムが提供される。
【発明の効果】
【００１１】
１態様によれば、ストレージ制御装置、ストレージ制御方法およびストレージ制御プログラムにおいて、低消費電力でデータを冗長化することができる。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態に係るストレージシステムの構成例およびその動作例を示す図である。
【図２】第２の実施の形態に係るストレージシステムの構成例を示す図である。
【図３】アレイコントローラの内部構成例を示す図である。
【図４】ＲＡＩＤグループの第１の設定例を示す図である。
【図５】ＲＡＩＤ５の制御について説明するための図である。
【図６】ＲＡＩＤグループの第２の設定例を示す図である。
【図７】ＲＡＩＤ６の制御について説明するための図である。
【図８】ＲＡＩＤグループの第３の設定例を示す図である。
【図９】ＲＡＩＤ１＋０の制御について説明するための図である。
【図１０】アレイコントローラの処理機能の構成例を示すブロック図である。
【図１１】アレイコントローラの処理の際に利用される情報の内容の例を示す図である。
【図１２】ＲＡＩＤ制御部によるアクセス制御処理の例を示すフローチャートである。
【図１３】ＲＡＩＤ制御部によるアクセス制御処理の例を示すフローチャートである。
【図１４】ＲＡＩＤ１またはＲＡＩＤ１＋０の場合の書き込み処理の例を示すフローチャートである。
【図１５】ＲＡＩＤ５またはＲＡＩＤ６の場合の書き込み処理の例を示すフローチャートである。
【図１６】ホットスペアのＨＤＤからの書き戻し処理の例を示すフローチャートである。
【図１７】アレイコントローラの第１の起動処理例を示すフローチャートである。
【図１８】アレイコントローラの第２の起動処理例を示すフローチャートである。
【図１９】ホットスペアのＨＤＤが故障した場合の復旧処理の例を示すフローチャートである。
【図２０】ＲＡＩＤグループを構成するＨＤＤのうち動作中のＨＤＤが故障した場合の復旧処理の例を示すフローチャートである。
【図２１】停止中のＨＤＤが故障した場合の復旧処理の例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態を図面を参照して説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係るストレージシステムの構成例およびその動作例を示す図である。図１に示すストレージシステムは、ストレージ制御装置１０と、複数の記憶装置とを備える。図１のストレージシステムは、例として、６台の記憶装置２１〜２６を備えている。
【００１４】
ストレージ制御装置１０は、記憶装置２１〜２６へのアクセスを制御する。また、ストレージ制御装置１０は、複数台数の記憶装置の記憶領域を１つの論理記憶領域として管理することができる。ストレージ制御装置１０は、論理記憶領域ごとにデータが異なる記憶装置に冗長化されるように、各論理記憶領域へのデータの書き込みを制御する。このような論理記憶領域の管理はＲＡＩＤ技術を用いて行われ、論理記憶領域はＲＡＩＤグループなどと呼ばれる。
【００１５】
図１の例では、記憶装置２１，２２の記憶領域が論理記憶領域３１として管理され、記憶装置２３〜２５の記憶領域が論理記憶領域３２として管理される。論理記憶領域３１へのデータの読み書きは、例えばＲＡＩＤ１によって制御される。この場合、ストレージ制御装置１０は、記憶装置２１，２２の両方に同じデータを書き込み、データを記憶装置２１，２２にミラーリングする。また、論理記憶領域３２へのデータの読み書きは、例えばＲＡＩＤ５によって制御される。この場合、ストレージ制御装置１０は、論理記憶領域３２へ書き込むデータを分割し、連続する２個の分割データとそれらに基づくパリティとを、記憶装置２３〜２５における同一ストライプ番号の領域に分散させて書き込む。
【００１６】
また、ストレージ制御装置１０に接続された記憶装置のうち、少なくとも１台は、予備用の記憶装置とされる。図１の例では、記憶装置２６が予備用に用意されている。予備用の記憶装置２６は、例えば、いずれかの論理記憶領域を構成する記憶装置の１台が故障したとき、故障した記憶装置の代わりに論理記憶領域に組み込まれて使用される。これにより、記憶装置の故障によって一時的にデータが冗長化されなくなった論理記憶領域を、短時間で、データが冗長化される状態に復旧させることができる。
【００１７】
ストレージ制御装置１０は、動作制御部１１およびアクセス制御部１２を備える。
動作制御部１１は、ストレージシステム全体の消費電力を低減するために、各論理記憶領域３１，３２を構成する記憶装置のうち、複数の記憶装置の動作を停止させる。図１の例では、ステップＳ１として示すように、動作制御部１１は、記憶装置２２と記憶装置２５のそれぞれの動作を停止させる。なお、例えば、記憶装置２２，２５がＨＤＤの場合、動作制御部１１は、記憶装置２２，２５のそれぞれにおける磁気ディスクの回転を停止させる、あるいは記憶装置２２，２５の電源をオフにするなどによって、記憶装置２２，２５の動作を停止させる。
【００１８】
アクセス制御部１２は、各論理記憶領域３１，３２を構成する記憶装置のうち、停止中の記憶装置へのデータの書き込みが要求されたとき、書き込みが要求された記憶装置の代わりに、予備用の記憶装置２６にデータを書き込む。例えば、図１にステップＳ２として示すように、アクセス制御部１２は、記憶装置２２へのデータの書き込みが要求されたとき、そのデータを記憶装置２２の代わりに予備用の記憶装置２６に書き込む。また、図１のステップＳ３として示すように、アクセス制御部１２は、記憶装置２５へのデータの書き込みが要求されたとき、そのデータを記憶装置２５の代わりに予備用の記憶装置２６に書き込む。
【００１９】
なお、アクセス制御部１２に対するデータの書き込み要求は、例えば、ストレージ制御装置１０に接続された外部のホスト装置から送信されてもよいし、あるいは、ストレージ制御装置１０の内部で発生されてもよい。
【００２０】
アクセス制御部１２は、上記のような書き込みを行うことで、各論理記憶領域３１，３２を構成する記憶装置のうち動作中の記憶装置２１，２３，２４と予備用の記憶装置２６とによって、各論理記憶領域３１，３２におけるデータの冗長性が保たれるように制御する。
【００２１】
ここで、動作制御部１１によって動作が停止される記憶装置は、その記憶装置の動作が停止したときに、その記憶装置が属する論理記憶装置のデータが失われないように決定される。ここで言う「論理記憶装置のデータが失われない」状態とは、論理記憶装置を構成する記憶装置のうち動作中の記憶装置のみから、データをそのまま読み出し可能か、あるいはパリティを用いてデータをリビルド可能である状態を示す。
【００２２】
例えば、ＲＡＩＤ１，ＲＡＩＤ４，ＲＡＩＤ５によって管理される論理記憶領域では、その論理記憶領域を構成する記憶装置のうち、１台のみ動作を停止させることができる。また、ＲＡＩＤ６によって管理される論理記憶領域では、その論理記憶領域を構成する記憶装置のうち、２台までの記憶装置の動作を停止させることができる。
【００２３】
このように動作を停止させる記憶装置が決定されることで、アクセス制御部１２は、動作を停止させる記憶装置を選択する際に、各論理記憶領域を構成する記憶装置のうち動作中の記憶装置と予備用の記憶装置とによって、各論理記憶領域におけるデータの冗長性が保たれるように制御することが可能になる。
【００２４】
さらに、動作制御部１１は、各論理記憶領域を構成する記憶装置のうち、アクセス制御部１２によって書き込み先として使用される予備用の記憶装置の台数より多い台数の記憶装置の動作を停止させる。これにより、ストレージシステムにおける電力消費を低減することができる。
【００２５】
以上のストレージ制御装置１０の処理によれば、低消費電力でデータを冗長化することができる。
なお、ストレージ制御装置１０は、所定のタイミングで、予備用の記憶装置２６に書き込まれたデータを、各論理記憶領域を構成する記憶装置の記憶領域のうち、本来の書き込み位置に書き戻すことができる。ストレージ制御装置１０は、例えば、予備用の記憶装置２６の残容量が所定のしきい値以下になった場合、あるいは、いずれかの論理記憶領域を構成する１台の記憶装置が故障して、故障した記憶装置の代わりに予備用の記憶装置２６を使用する必要が生じた場合などに、データの書き戻しを行う。
【００２６】
〔第２の実施の形態〕
図２は、第２の実施の形態に係るストレージシステムの構成例を示す図である。図２に示すストレージシステムは、情報処理装置１００とディスクアレイ２００とを備える。
【００２７】
ディスクアレイ２００は、情報処理装置１００からのアクセスの対象となる複数の記憶装置を備えている。本実施の形態では、ディスクアレイ２００は、情報処理装置１００からのアクセスの対象となる記憶装置としてＨＤＤ２１０を備えるが、例えば、ＳＳＤ（Solid State Drive）などのＨＤＤ以外の不揮発性記憶装置を備えていてもよい。また、情報処理装置１００には、複数のディスクアレイ２００が接続されていてもよい。
【００２８】
情報処理装置１００は、ディスクアレイ２００内のＨＤＤ２１０に対してデータの読み書きを実行可能である。情報処理装置１００は、次のようなハードウェア構成を有する。
情報処理装置１００は、図２に示すようなコンピュータとして実現可能である。情報処理装置１００は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０９を介して、ＲＡＭ（Random Access Memory）１０２と複数の周辺機器が接続されている。
【００２９】
ＲＡＭ１０２は、情報処理装置１００の主記憶装置として使用される。ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。
【００３０】
バス１０９に接続されている周辺機器としては、ＨＤＤ（Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、通信インタフェース１０７およびアレイコントローラ１０８がある。
【００３１】
ＨＤＤ１０３は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、情報処理装置１００の二次記憶装置として使用される。ＨＤＤ１０３には、ＯＳプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの他の種類の不揮発性記憶装置を使用することもできる。
【００３２】
グラフィック処理装置１０４には、モニタ１０４ａが接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１０４ａに表示させる。なお、モニタ１０４ａは、例えば、液晶ディスプレイである。
【００３３】
入力インタフェース１０５には、キーボード１０５ａ、マウス１０５ｂなどの入力装置が接続されている。入力インタフェース１０５は、入力装置からの出力信号をＣＰＵ１０１に送信する。
【００３４】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク１０６ａに記録されたデータの読み取りを行う。光ディスク１０６ａは、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク１０６ａには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（Rewritable）などがある。
【００３５】
通信インタフェース１０７は、ネットワーク１０７ａを通じて他の装置との間でデータを送受信する。
アレイコントローラ１０８は、ＣＰＵ１０１からの指示に応じて、ディスクアレイ２００内のＨＤＤ２１０へのアクセスを制御する。アレイコントローラ１０８は、ディスクアレイ２００内のＨＤＤ２１０を、ＲＡＩＤを用いて制御することができる。
【００３６】
図３は、アレイコントローラの内部構成例を示す図である。アレイコントローラ１０８は、ＣＰＵ１１１、ＲＡＭ１１２、不揮発性メモリ１１３、ホストインタフェース１１４およびディスクインタフェース１１５を備える。
【００３７】
ＣＰＵ１１１は、不揮発性メモリ１１３に格納されたファームウェア（Ｆ／Ｗ）１２０を実行することで、ディスクアレイ２００内のＨＤＤ２１０に対するアクセスを制御する。ＲＡＭ１１２には、ＣＰＵ１１１に実行させるファームウェア１２０の少なくとも一部や、各種のデータが一時的に格納される。
【００３８】
ホストインタフェース１１４は、ホストとＣＰＵ１１１との間でデータを送受信する。ホストとは、情報処理装置１００のＣＰＵ１０１である。ディスクインタフェース１１５は、ディスクアレイ２００内のＨＤＤ２１０とＣＰＵ１１１との間でデータを送受信する。ディスクインタフェース１１５は、ＣＰＵ１１１の制御の下で、ディスクアレイ２００内のＨＤＤ２１０にコマンドを送信することができる。
【００３９】
ＣＰＵ１１１は、ディスクアレイ２００に搭載された複数のＨＤＤ２１０を、ＲＡＩＤグループとして管理することができる。ＲＡＩＤグループとは、複数のＨＤＤ２１０の記憶領域によって構成され、データが異なるＨＤＤ２１０に冗長化されるように管理される論理記憶領域である。各ＲＡＩＤグループを構成するＨＤＤ２１０の情報や、各ＲＡＩＤグループの管理で用いられるＲＡＩＤレベルの情報などは、不揮発性メモリ１１３に設定される。
【００４０】
次に、アレイコントローラ１０８によるＨＤＤ２１０へのアクセス制御について説明する。
アレイコントローラ１０８は、ディスクアレイ２００に搭載されたＨＤＤ２１０のうちの少なくとも１つを、「ホットスペア（Hot Spare）」と呼ばれる予備用のＨＤＤとして使用する。また、アレイコントローラ１０８は、各ＲＡＩＤグループを構成するＨＤＤ２１０のうち、あらかじめ決められた複数の記憶装置２１０における磁気ディスクの回転を停止させる。
【００４１】
アレイコントローラ１０８は、磁気ディスクの回転が停止されたＨＤＤ２１０へのデータの書き込みが要求された場合、そのデータをホットスペアのＨＤＤに一時的に書き込む。アレイコントローラ１０８は、各ＲＡＩＤグループを構成するＨＤＤ２１０のうち磁気ディスクの回転が停止されていないＨＤＤと、ホットスペアのＨＤＤとを用いて、データの冗長性が保たれるように制御を行う。これにより、ストレージシステム全体の消費電力を低減するとともに、各ＲＡＩＤグループに格納するデータを冗長化することができる。
【００４２】
以下、ＲＡＩＤグループの設定例と、磁気ディスクの回転を停止させるＨＤＤの選択例を挙げる。
まず、図４は、ＲＡＩＤグループの第１の設定例を示す図である。また、図５は、ＲＡＩＤ５の制御について説明するための図である。
【００４３】
図４の例では、ディスクアレイ２００に搭載されたＨＤＤのうち、ＨＤＤ２１０ａ，２１０ｂの記憶領域によってＲＡＩＤグループ＃０１が構成され、ＨＤＤ２１０ｃ〜２１０ｅの記憶領域によってＲＡＩＤグループ＃０２が構成されている。また、ＨＤＤ２１０ｆは、ホットスペアとして使用されるとともに、ＲＡＩＤグループ＃０１，＃０２を構成するＨＤＤ２１０ａ〜２１０ｅのうち磁気ディスクの回転が停止されたＨＤＤに書き込むべきデータの一時記憶領域としても使用される。
【００４４】
ＲＡＩＤグループ＃０１は、例えばＲＡＩＤ１によって管理される。ＲＡＩＤ１は、２台のＨＤＤに対して同じデータを書き込んで、データを各ＨＤＤにミラーリングする方式である。アレイコントローラ１０８は、ＲＡＩＤグループ＃０１に対応する論理ボリュームに対するデータの書き込み要求をホストから受けたとき、書き込みが要求されたデータをＨＤＤ２１０ａ，２１０ｂの両方に書き込む。また、アレイコントローラ１０８は、ＲＡＩＤグループ＃０１に対応する論理ボリュームからのデータの読み出し要求をホストから受けたとき、ＨＤＤ２１０ａ，２１０ｂのうちあらかじめ決められた一方のＨＤＤからデータを読み出す。本実施の形態では、データの読み出しはＨＤＤ２１０ａから行われるものとする。
【００４５】
ＲＡＩＤグループ＃０２は、例えばＲＡＩＤ５によって管理される。ＲＡＩＤ５は、書き込みデータを一定長に分割し、連続する分割データとそれらに基づくパリティとを、複数のＨＤＤにおける同一ストライプ番号の領域に分散させて書き込む方式である。
【００４６】
例えば図５に示すように、ホストからアレイコントローラ１０８に対して、ＲＡＩＤグループ＃０２に対応する論理ボリュームにデータＤ１を書き込むように要求されたものとする。このとき、アレイコントローラ１０８は、データＤ１を所定データ長ごとに分割して、分割データＤａ〜Ｄｆを生成する。
【００４７】
アレイコントローラ１０８は、分割データＤａ，ＤｂからパリティＰａｂを、分割データＤｃ，ＤｄからパリティＰｃｄを、分割データＤｅ，ＤｆからパリティＰｅｆを、それぞれ計算する。アレイコントローラ１０８は、分割データＤａ，Ｄｂ、パリティＰａｂを、それぞれＨＤＤ２１０ｃ，２１０ｄ，２１０ｅに書き込み、分割データＤｃ、パリティＰｃｄ、分割データＤｄを、それぞれＨＤＤ２１０ｃ，２１０ｄ，２１０ｅに書き込み、パリティＰｅｆ、分割データＤｅ，Ｄｆを、それぞれＨＤＤ２１０ｃ，２１０ｄ，２１０ｅに書き込む。これにより、連続するストライプにおいてパリティが異なるＨＤＤに分散して格納される。
【００４８】
ところで、図４の例では、１台のホットスペアのＨＤＤ２１０ｆが、磁気ディスクの回転が停止されたＨＤＤに書き込むべきデータの一時記憶領域として使用される。この場合、ＲＡＩＤグループを構成するＨＤＤのうち、２台以上のＨＤＤにおける磁気ディスクの回転を停止させることで、消費電力を低減することができる。
【００４９】
一方、ＲＡＩＤ１で管理されるＲＡＩＤグループ＃０１では、このＲＡＩＤグループ＃０１を構成するＨＤＤ２１０ａ，２１０ｂのうち１台の動作を停止させても、ＲＡＩＤグループ＃０１におけるデータは失われない。また、ＲＡＩＤ５で管理されるＲＡＩＤグループ＃０２では、このＲＡＩＤグループ＃０２を構成するＨＤＤ２１０ｃ〜２１０ｅのうち１台の動作を停止させても、ＲＡＩＤグループ＃０２におけるデータは失われない。ここで言う「ＲＡＩＤグループにおけるデータが失われない」状態とは、ＲＡＩＤグループに格納済みの分割データが、そのまま読み出し可能またはリビルド可能な状態であり、かつ、その後にＲＡＩＤグループに書き込まれるデータも失われない状態であることを示す。
【００５０】
そこで、図４の例では、アレイコントローラ１０８は、ＲＡＩＤグループ＃０１を構成するＨＤＤ２１０ａ，２１０ｂのうちの１台と、ＲＡＩＤグループ＃０２を構成するＨＤＤ２１０ｃ〜２１０ｅのうちの１台の合計２台について、磁気ディスクの回転を停止させる。例として、アレイコントローラ１０８は、ＨＤＤ２１０ｂ，２１０ｅのそれぞれにおける磁気ディスクの回転を停止させる。
【００５１】
また、アレイコントローラ１０８は、ＨＤＤ２１０ｂ，２１０ｅのそれぞれにおける磁気ディスクの回転を停止させた状態で、ＲＡＩＤグループ＃０１，＃０２にそれぞれ対応する論理ボリュームへのアクセスの受け付けを継続する。アレイコントローラ１０８は、ＨＤＤ２１０ｂへのデータの書き込みが発生したとき、ＨＤＤ２１０ｂへのデータの書き込みを行わずに、そのデータをホットスペアのＨＤＤ２１０ｆに一時的に書き込む。また、アレイコントローラ１０８は、ＨＤＤ２１０ｅへのデータの書き込みが発生したとき、ＨＤＤ２１０ｅへのデータの書き込みを行わずに、そのデータをホットスペアのＨＤＤ２１０ｆに一時的に書き込む。なお、図５の例では、ＨＤＤ２１０ｅに書き込むべきパリティＰａｂおよび分割データＤｄ，Ｄｆが、ＨＤＤ２１０ｅの代わりにホットスペアのＨＤＤ２１０ｆに書き込まれる。
【００５２】
このように、アレイコントローラ１０８は、ＨＤＤ２１０ｂ，２１０ｅのそれぞれにおける磁気ディスクの回転を停止させ、ＨＤＤ２１０ｂ，２１０ｅに書き込むべきデータをホットスペアのＨＤＤ２１０ｆに一時的に書き込む。これによりアレイコントローラ１０８は、低消費電力でデータを冗長化することができる。
【００５３】
なお、アレイコントローラ１０８が管理可能な他のＲＡＩＤレベルとしては、ＲＡＩＤ４がある。ＲＡＩＤ４は、ＲＡＩＤ５と同様に、書き込みデータを一定長に分割し、連続する分割データとそれらに基づくパリティとを、複数のＨＤＤにおける同一ストライプ番号の領域に書き込む方式である。ただし、ＲＡＩＤ５とは異なり、パリティは同一のＨＤＤに書き込まれる。
【００５４】
このようなＲＡＩＤ４で管理されるＲＡＩＤグループにおいては、ＲＡＩＤ５の場合と同様に、ＲＡＩＤグループを構成するＨＤＤのうちの１台を停止させることができる。アレイコントローラ１０８は、例えば、パリティが格納されるＨＤＤにおける磁気ディスクの回転を停止させ、パリティをホットスペアのＨＤＤに一時的に格納する。これによりＲＡＩＤグループのデータを冗長化することができる。
【００５５】
図６は、ＲＡＩＤグループの第２の設定例を示す図である。また、図７は、ＲＡＩＤ６の制御について説明するための図である。
図６の例では、ディスクアレイ２００に搭載されたＨＤＤのうち、ＨＤＤ２１０ａ〜２１０ｅの記憶領域によってＲＡＩＤグループ＃１１が構成されている。また、ＨＤＤ２１０ｆは、ホットスペアとして使用されるとともに、ＲＡＩＤグループ＃１１を構成するＨＤＤ２１０ａ〜２１０ｅのうち磁気ディスクの回転が停止されたＨＤＤに書き込むべきデータの一時記憶領域としても使用される。
【００５６】
ＲＡＩＤグループ＃１１は、例えばＲＡＩＤ６によって管理される。ＲＡＩＤ６は、書き込みデータを一定長に分割し、連続する分割データとそれらに基づく２種類のパリティ（Ｐ−パリティおよびＱ−パリティ）とを、複数のＨＤＤにおける同一ストライプ番号の領域に分散させて書き込む方式である。
【００５７】
例えば図７に示すように、ホストからアレイコントローラ１０８に対して、ＲＡＩＤグループ＃１１に対応する論理ボリュームにデータＤ２を書き込むように要求されたものとする。このとき、アレイコントローラ１０８は、データＤ２を所定データ長ごとに分割して、分割データＤａ〜Ｄｉを生成する。
【００５８】
アレイコントローラ１０８は、分割データＤａ〜ＤｃからＰ−パリティＰａｂｃおよびＱ−パリティＱａｂｃを、分割データＤｄ〜ＤｆからＰ−パリティＰｄｅｆおよびＱ−パリティＱｄｅｆを、分割データＤｇ〜ＤｉからＰ−パリティＰｇｈｉおよびＱ−パリティＱｇｈｉを、それぞれ計算する。
【００５９】
アレイコントローラ１０８は、分割データＤａ，Ｄｂ，Ｄｃ、Ｐ−パリティＰａｂｃ、Ｑ−パリティＱａｂｃを、それぞれＨＤＤ２１０ａ，２１０ｂ，２１０ｃ，２１０ｄ，２１０ｅに書き込み、分割データＤｄ，Ｄｅ、Ｐ−パリティＰｄｅｆ、Ｑ−パリティＱｄｅｆ、分割データＤｆを、それぞれＨＤＤ２１０ａ，２１０ｂ，２１０ｃ，２１０ｄ，２１０ｅに書き込み、分割データＤｇ、Ｐ−パリティＰｇｈｉ、Ｑ−パリティＱｇｈｉ、分割データＤｈ，Ｄｉを、それぞれＨＤＤ２１０ａ，２１０ｂ，２１０ｃ，２１０ｄ，２１０ｅに書き込む。これにより、連続するストライプにおいてＰ−パリティおよびＱ−パリティがそれぞれ異なるＨＤＤに分散して格納される。
【００６０】
ところで、図６の例では、図４の場合と同様に、１台のホットスペアのＨＤＤ２１０ｆが、磁気ディスクの回転が停止されたＨＤＤに書き込むべきデータの一時記憶領域として使用される。この場合、ＲＡＩＤグループを構成するＨＤＤのうち、２台以上のＨＤＤにおける磁気ディスクの回転を停止させることで、消費電力を低減することができる。一方、ＲＡＩＤ１で管理されるＲＡＩＤグループ＃１１では、このＲＡＩＤグループ＃１１を構成するＨＤＤ２１０ａ〜２１０ｅのうち２台の動作を停止させても、ＲＡＩＤグループ＃１１におけるデータは失われない。
【００６１】
そこで、図６の例では、アレイコントローラ１０８は、ＲＡＩＤグループ＃１１を構成するＨＤＤ２１０ａ〜２１０ｅのうちの２台について、磁気ディスクの回転を停止させる。例として、アレイコントローラ１０８は、ＨＤＤ２１０ｄ，２１０ｅのそれぞれにおける磁気ディスクの回転を停止させる。
【００６２】
また、アレイコントローラ１０８は、ＨＤＤ２１０ｄ，２１０ｅのそれぞれにおける磁気ディスクの回転を停止させた状態で、ＲＡＩＤグループ＃１１にそれぞれ対応する論理ボリュームへのアクセスの受け付けを継続する。アレイコントローラ１０８は、ＨＤＤ２１０ｄ，２１０ｅへのデータの書き込みが発生したとき、ＨＤＤ２１０ｄ，２１０ｅへのデータの書き込みを行わずに、そのデータをホットスペアのＨＤＤ２１０ｆに一時的に書き込む。
【００６３】
図７の例では、ＨＤＤ２１０ｄに書き込むべきＰ−パリティＰａｂｃ、Ｑ−パリティＱｄｅｆおよび分割データＤｈが、ＨＤＤ２１０ｄの代わりにホットスペアのＨＤＤ２１０ｆに書き込まれる。また、ＨＤＤ２１０ｅに書き込むべきＱ−パリティＱａｂｃおよび分割データＤｆ，Ｄｉが、ＨＤＤ２１０ｅの代わりにホットスペアのＨＤＤ２１０ｆに書き込まれる。
【００６４】
このように、アレイコントローラ１０８は、ＨＤＤ２１０ｄ，２１０ｅのそれぞれにおける磁気ディスクの回転を停止させ、ＨＤＤ２１０ｄ，２１０ｅに書き込むべきデータをホットスペアのＨＤＤ２１０ｆに一時的に書き込む。これによりアレイコントローラ１０８は、低消費電力でデータを冗長化することができる。
【００６５】
図８は、ＲＡＩＤグループの第３の設定例を示す図である。また、図９は、ＲＡＩＤ１＋０の制御について説明するための図である。
図８の例では、ディスクアレイ２００に搭載されたＨＤＤのうち、ＨＤＤ２１０ａ〜２１０ｆの記憶領域によってＲＡＩＤグループ＃２１が構成されている。また、ＨＤＤ２１０ｇは、ホットスペアとして使用されるとともに、ＲＡＩＤグループ＃２１を構成するＨＤＤ２１０ａ〜２１０ｆのうち磁気ディスクの回転が停止されたＨＤＤに書き込むべきデータの一時記憶領域としても使用される。
【００６６】
ＲＡＩＤグループ＃２１は、例えばＲＡＩＤ１＋０によって管理される。ＲＡＩＤ１＋０は、データのストライピングとミラーリングとを組み合わせた方式である。例えば図９に示すように、ホストからアレイコントローラ１０８に対して、ＲＡＩＤグループ＃２１に対応する論理ボリュームにデータＤ３を書き込むように要求されたものとする。このとき、アレイコントローラ１０８は、データＤ３を所定データ長ごとに分割して、分割データＤａ〜Ｄｆを生成する。
【００６７】
アレイコントローラ１０８は、分割データＤａ〜Ｄｃを、同一ストライプ番号の領域に書き込むとともにミラーリングする。同様に、アレイコントローラ１０８は、分割データＤｄ〜Ｄｆを、同一ストライプ番号の領域に書き込むとともにミラーリングする。具体的には、アレイコントローラ１０８は、分割データＤａをＨＤＤ２１０ａ，２１０ｂに書き込み、分割データＤｂをＨＤＤ２１０ｃ，２１０ｄに書き込み、分割データＤｃをＨＤＤ２１０ｅ，２１０ｆに書き込む。また、アレイコントローラ１０８は、分割データＤｄをＨＤＤ２１０ａ，２１０ｂに書き込み、分割データＤｅをＨＤＤ２１０ｃ，２１０ｄに書き込み、分割データＤｆをＨＤＤ２１０ｅ，２１０ｆに書き込む。
【００６８】
なお、アレイコントローラ１０８は、ＲＡＩＤグループ＃２１に対応する論理ボリュームからのデータの読み出しが要求された場合には、分割データがミラーリングされた２台のＨＤＤのうちあらかじめ決められた一方のＨＤＤから、分割データを読み出す。図８、図９の例では、アレイコントローラ１０８は、ＨＤＤ２１０ａ，２１０ｃ，２１０ｅから分割データを読み出すものとする。
【００６９】
ところで、図８の例では、１台のホットスペアのＨＤＤ２１０ｇが、磁気ディスクの回転が停止されたＨＤＤに書き込むべきデータの一時記憶領域として使用される。この場合、ＲＡＩＤグループを構成するＨＤＤのうち、２台以上のＨＤＤにおける磁気ディスクの回転を停止させることで、消費電力を低減することができる。
【００７０】
一方、ＲＡＩＤ１＋０で管理されるＲＡＩＤグループ＃２１では、このＲＡＩＤグループ＃２１を構成するＨＤＤ２１０ａ〜２１０ｆのうち２台の動作を停止させても、ＲＡＩＤグループ＃２１におけるデータは失われない。ただし、停止させることが可能なＨＤＤは、ＨＤＤ２１０ａ，２１０ｂの一方、ＨＤＤ２１０ｃ，２１０ｄの一方、および、ＨＤＤ２１０ｅ，２１０ｆの一方の中から、２台までである。
【００７１】
そこで、図８の例では、アレイコントローラ１０８は、ＲＡＩＤグループ＃２１を構成するＨＤＤ２１０ａ〜２１０ｆのうちの２台について、磁気ディスクの回転を停止させる。例として、アレイコントローラ１０８は、ＨＤＤ２１０ｂ，２１０ｄ，２１０ｆのそれぞれにおける磁気ディスクの回転を停止させる。
【００７２】
また、アレイコントローラ１０８は、ＨＤＤ２１０ｂ，２１０ｄ，２１０ｆのそれぞれにおける磁気ディスクの回転を停止させた状態で、ＲＡＩＤグループ＃２１にそれぞれ対応する論理ボリュームへのアクセスの受け付けを継続する。アレイコントローラ１０８は、ＨＤＤ２１０ｂ，２１０ｄ，２１０ｆへのデータの書き込みが発生したとき、ＨＤＤ２１０ｂ，２１０ｄ，２１０ｆへのデータの書き込みを行わずに、そのデータをホットスペアのＨＤＤ２１０ｆに一時的に書き込む。図９の例では、分割データＤａ〜ＤｆのミラーデータがホットスペアのＨＤＤ２１０ｇに書き込まれる。
【００７３】
このように、アレイコントローラ１０８は、ＨＤＤ２１０ｂ，２１０ｄ，２１０ｆのそれぞれにおける磁気ディスクの回転を停止させ、ＨＤＤ２１０ｂ，２１０ｄ，２１０ｆに書き込むべきデータをホットスペアのＨＤＤ２１０ｇに一時的に書き込む。これによりアレイコントローラ１０８は、低消費電力でデータを冗長化することができる。
【００７４】
次に、図１０は、アレイコントローラの処理機能の構成例を示すブロック図である。
アレイコントローラ１０８は、ＲＡＩＤ制御部１３０、書き戻し制御部１４０および復旧制御部１５０を備える。ＲＡＩＤ制御部１３０、書き戻し制御部１４０および復旧制御部１５０の処理は、例えば、アレイコントローラ１０８が備えるＣＰＵ１１１が所定のプログラム（例えば、図３のファームウェア１２０）を実行することで実現される。
【００７５】
また、アレイコントローラ１０８の処理の際には、ＬＢＡ（Logical Block Address）テーブル１６０、テーブル管理情報１７０、ディスク管理テーブル１８０、ＲＡＩＤ管理テーブル１９０およびデータテーブル２２０が利用される。ＬＢＡテーブル１６０は、アレイコントローラ１０８のＲＡＭ１１２に格納され、テーブル管理情報１７０、ディスク管理テーブル１８０およびＲＡＩＤ管理テーブル１９０は、アレイコントローラ１０８の不揮発性メモリ１１３に格納される。また、データテーブル２２０は、磁気ディスクの回転が停止されたＨＤＤに書き込むべきデータの一時記憶領域を含むものであり、ホットスペアのＨＤＤに格納される。
【００７６】
なお、以下の説明では、いずれかのＲＡＩＤグループを構成するＨＤＤを「ＨＤＤ２１１」と表記し、ホットスペアのＨＤＤを「ＨＤＤ２１２」と表記する。また、ＲＡＩＤグループを構成するＨＤＤ２１１のうち、磁気ディスクが回転しているＨＤＤを「動作中のＨＤＤ」と呼び、磁気ディスクの回転が停止しているＨＤＤを「停止中のＨＤＤ」と呼ぶ。
【００７７】
ＲＡＩＤ制御部１３０は、図１に示した動作制御部１１およびアクセス制御部１２に対応する処理を行う。ＲＡＩＤ制御部１３０は、ホストから、ＲＡＩＤグループに対応する論理ボリュームへのアクセス要求を受け付け、アクセス要求に応じたＨＤＤへのアクセス処理を実行する。このとき、ＲＡＩＤ制御部１３０は、各ＲＡＩＤグループを構成するＨＤＤ２１１のうち複数のＨＤＤ２１１における磁気ディスクの回転を停止させて、消費電力を低減する。そして、ＲＡＩＤ制御部１３０は、停止中のＨＤＤ２１１への書き込みが発生した場合には、そのＨＤＤ２１１へ書き込むべきデータをホットスペアのＨＤＤ２１２内のデータテーブル２２０に格納して、データの冗長性を保つ。
【００７８】
ここで、データテーブル２２０は、停止中のＨＤＤ２１１に書き込むべきデータごとに生成される。また、最後に生成されたデータテーブル２２０の識別番号がテーブル管理情報１７０に登録され、データテーブル２２０を検索する際にＲＡＩＤ制御部１３０によって参照される。
【００７９】
また、磁気ディスクの回転を停止させるＨＤＤ２２１およびホットスペアのＨＤＤ２１２についての設定情報は、ディスク管理テーブル１８０にあらかじめ登録され、ＲＡＩＤグループについての設定情報は、ＲＡＩＤ管理テーブル１９０にあらかじめ登録される。ディスク管理テーブル１８０およびＲＡＩＤ管理テーブル１９０は、ＲＡＩＤ制御部１３０によって参照される。
【００８０】
また、ＲＡＩＤ制御部１３０は、停止中のＨＤＤ２１１への書き込みが発生した場合に、その本来の書き込み先アドレス（すなわち、停止中のＨＤＤ２１１における書き込み先アドレス）をＬＢＡテーブル１６０に登録する。
【００８１】
書き戻し制御部１４０は、所定のタイミングにおいて、停止中のＨＤＤ２１１に磁気ディスクの回転を開始させ、それらのＨＤＤ２１１に対してデータテーブル２２０に格納されたデータを書き戻す。
【００８２】
復旧制御部１５０は、ＲＡＩＤグループを構成するいずれかのＨＤＤ２１１またはホットスペアのＨＤＤ２１２が異常停止した場合などに、復旧のための処理を実行する。
なお、以上のＲＡＩＤ制御部１３０、書き戻し制御部１４０および復旧制御部１５０の処理の少なくとも一部は、情報処理装置１００のＣＰＵ１０１が所定のプログラムを実行することで実現されてもよい。
【００８３】
図１１は、アレイコントローラの処理の際に利用される情報の内容の例を示す図である。
データテーブル２２０は、ＲＡＩＤ制御部１３０によって、停止中のＨＤＤ２１１に書き込むべきデータごとに、ホットスペアのＨＤＤ２１２に登録される。各データテーブル２２０には、「ディスク番号」、「書き込み先ＬＢＡ」および「書き込みデータ」が登録される。「書き込みデータ」は、停止中のＨＤＤ２１１に書き込むべき実データである。「ディスク番号」は、書き込みデータの本来の書き込み先である停止中のＨＤＤ２１１の識別番号であり、「書き込み先ＬＢＡ」は、停止中のＨＤＤ２１１における書き込みデータの本来の書き込み先アドレスを示す。
【００８４】
なお、停止中の同じＨＤＤ２１１における同じアドレスへの書き込みが発生した場合には、同じディスク番号および書き込み先ＬＢＡが登録されたＨＤＤ２１２に格納済みのデータテーブル２２０は上書きされずに、新たなデータテーブル２２０がＨＤＤ２１２に登録される。
【００８５】
テーブル管理情報１７０は、ホットスペアのＨＤＤ２１２に登録されたデータテーブル２２０を検索するために利用される情報である。テーブル管理情報１７０には、ＲＡＩＤ制御部１３０によって、ホットスペアのＨＤＤ２１２に最後に登録されたデータテーブル２２０を識別するテーブル番号が登録される。図１１の例では、ホットスペアのＨＤＤ２１２にはテーブル番号「１」から「４」までのデータテーブル２２０が登録されており、この場合、テーブル管理情報１７０にテーブル番号として「４」が登録される。
【００８６】
なお、テーブル管理情報１７０に登録されるテーブル番号の初期値を「０」とする。一方、ホットスペアのＨＤＤ２１２に登録される先頭のデータテーブル２２０に付与されるテーブル番号を「１」とする。テーブル管理情報１７０にテーブル番号「０」が登録されていた場合、ホットスペアのＨＤＤ２１２にデータテーブル２２０が登録されていないことを示す。
【００８７】
ディスク管理テーブル１８０には、「ＨＳディスク番号」と「停止ディスク番号」とが登録される。「ＨＳディスク番号」は、ホットスペアとして使用されるＨＤＤ２１２の識別番号である。「停止ディスク番号」は、ＲＡＩＤグループを構成するＨＤＤ２１１のうち磁気ディスクの回転を停止させるＨＤＤ２１１の識別番号である。
【００８８】
ＲＡＩＤ管理テーブル１９０は、ＲＡＩＤグループごとに生成される。各ＲＡＩＤ管理テーブル１９０には、「ＲＡＩＤグループ番号」、「ＲＡＩＤレベル」、「ディスク番号」および「ストライプサイズ」が登録される。「ＲＡＩＤグループ番号」は、対応するＲＡＩＤグループを識別する識別番号である。「ＲＡＩＤレベル」は、対応するＲＡＩＤグループに設定されたＲＡＩＤレベルを示す。「ディスク番号」は、対応するＲＡＩＤグループを構成するＨＤＤ２１１の識別番号である。通常、１つのＲＡＩＤ管理テーブル１９０には複数の「ディスク番号」が登録される。「ストライプサイズ」には、対応するＲＡＩＤグループに設定されたＲＡＩＤレベルがＲＡＩＤ５，６，１＋０のいずれかの場合に、ストライプにおけるＨＤＤ２１１ごとのサイズ（すなわち、分割データのサイズ）が登録される。
【００８９】
ＬＢＡテーブル１６０は、ＲＡＩＤ制御部１３０によって、停止中のＨＤＤ２１１ごとに登録される。各ＬＢＡテーブル１６０には、「停止ディスク番号」および「書き込み先ＬＢＡ」が登録される。「停止ディスク番号」は、ＲＡＩＤグループを構成するＨＤＤ２１１のうち磁気ディスクの回転を停止させるＨＤＤ２１１の識別番号である。「書き込み先ＬＢＡ」は、対応する停止中のＨＤＤ２１１にデータの書き込みが発生した場合に、停止中のＨＤＤ２１１における本来の書き込み先アドレスを示す。ＬＢＡテーブル１６０に登録された「書き込み先アドレス」は、いずれかのデータテーブル２２０にも必ず登録されている。また、１つのＬＢＡテーブル１６０には、最大で、停止中のＨＤＤ２１１に割り付けられているＬＢＡの数だけの「書き込み先ＬＢＡ」が登録される。
【００９０】
なお、前述のように、同じ停止中のＨＤＤ２１１における同じアドレスに対するデータの書き込みが複数回発生した場合には、このＨＤＤ２１１およびアドレスが登録されたデータテーブル２２０が複数登録される。このため、ホットスペアのＨＤＤ２１２には、同じディスク番号および書き込み先ＬＢＡを含むデータテーブル２２０が重複して登録される可能性がある。
【００９１】
書き戻し制御部１４０は、データテーブル２２０をその最後尾から順に検索して、データの書き戻しを行うが、その際に、書き戻しが完了したデータに対応するＬＢＡをＬＢＡテーブル１６０から消去する。これにより、書き戻し制御部１４０は、同じディスク番号および書き込み先ＬＢＡを含むデータテーブル２２０が重複して登録されている場合でも、それらのうち最も後に登録されたデータテーブル２２０に含まれるデータのみを書き戻すことができる。
【００９２】
次に、アレイコントローラ１０８の処理を、フローチャートを用いて説明する。まず、図１２および図１３は、ＲＡＩＤ制御部によるアクセス制御処理の例を示すフローチャートである。
【００９３】
［ステップＳ１１］ＲＡＩＤ制御部１３０は、ＲＡＩＤグループを構成するＨＤＤ２１１のうち、ディスク管理テーブル１８０に登録された停止ディスク番号が示すＨＤＤ２１１に対して、磁気ディスクの回転を停止するように指示するためのコマンドを送信する。これにより、停止ディスク番号が示すＨＤＤ２１１における磁気ディスクの回転が停止する。
【００９４】
［ステップＳ１２］ＲＡＩＤ制御部１３０は、ＲＡＩＤ管理テーブル１９０に設定されたＲＡＩＤグループに対応する論理ボリュームに対する、ホストからのアクセス要求を監視し、アクセス要求を受信した場合にステップＳ１３の処理を実行する。
【００９５】
［ステップＳ１３］ホストからデータの読み出しが要求された場合には、ステップＳ１４の処理が実行され、データの書き込みが要求された場合には、図１３のステップＳ３１の処理が実行される。
【００９６】
［ステップＳ１４］ＲＡＩＤ制御部１３０は、ＲＡＩＤ管理テーブル１９０を参照し、読み出しが要求されたＲＡＩＤグループのＲＡＩＤレベルを判定する。ＲＡＩＤ制御部１３０は、ＲＡＩＤレベルがＲＡＩＤ１またはＲＡＩＤ１＋０の場合には、ステップＳ１５の処理を実行し、ＲＡＩＤレベルがＲＡＩＤ５またはＲＡＩＤ６の場合には、ステップＳ１６の処理を実行する。
【００９７】
［ステップＳ１５］ＲＡＩＤ制御部１３０は、動作中のＨＤＤ２１１から、読み出しが要求されたデータを読み出す。
ＲＡＩＤ１の場合の例としては、ＲＡＩＤ制御部１３０は、図４のＲＡＩＤグループ＃０１を構成するＨＤＤ２１０ａ，２１０ｂのうち、動作中のＨＤＤ２１０ａからデータを読み出す。また、ＲＡＩＤ１＋０の場合の例としては、ＲＡＩＤ制御部１３０は、図８のＲＡＩＤグループ＃２１を構成するＨＤＤ２１０ａ〜２１０ｆのうち、動作中のＨＤＤ２１０ａ，２１０ｃ，２１０ｅの少なくとも１つから分割データを読み出す。
【００９８】
［ステップＳ１６］ＲＡＩＤ制御部１３０は、ホストから指示された論理ボリューム上の読み出しアドレスおよびデータサイズと、ＲＡＩＤ管理テーブル１９０に登録されたディスク番号の数（すなわち、ＲＡＩＤグループを構成するＨＤＤ２１１の台数）およびストライプサイズとを基に、読み出しが要求されたデータを構成する各分割データが、ＲＡＩＤグループを構成するＨＤＤ２１１のうちのどのＨＤＤ２１１のどの位置に格納されているかを判定する。ここで判定される読み出し位置は、あくまでＲＡＩＤグループを構成するＨＤＤ２１１における本来の読み出し位置であり、ホットスペアのＨＤＤ２１２における一時記憶領域を含まない。
【００９９】
［ステップＳ１７］このステップＳ１７からループ端であるステップＳ２２までの処理は、読み出し対象のストライプごとに繰り返される。例えば、読み出し対象の領域が複数のストライプに跨る場合には、ステップＳ１７からステップＳ２２までの処理が複数回繰り返される。
【０１００】
［ステップＳ１８］ＲＡＩＤ制御部１３０は、処理対象のストライプに含まれるすべての読み出し対象の分割データが、読み出しが要求されたＲＡＩＤグループを構成するＨＤＤ２１１のうち動作中のＨＤＤ２１１に格納されているかを判定する。ＲＡＩＤ制御部１３０は、読み出し対象の分割データがすべて動作中のＨＤＤ２１１に格納されている場合には、ステップＳ１９の処理を実行する。一方、ＲＡＩＤ制御部１３０は、読み出し対象の分割データの中に動作中のＨＤＤ２１１に格納されていない分割データがある場合（すなわち、本来の格納位置が停止中のＨＤＤ２１１である分割データがある場合）には、ステップＳ２０の処理を実行する。
【０１０１】
［ステップＳ１９］ＲＡＩＤ制御部１３０は、読み出し対象の分割データを動作中のＨＤＤ２１１から読み出す。
例えば、図５における分割データＤａ，ＤｂおよびパリティＰａｂを含むストライプが処理対象であり、分割データＤａ，Ｄｂが読み出し対象である場合、分割データＤａ，Ｄｂはそれぞれ動作中のＨＤＤ２１０ｃ，２１０ｄに格納されている。この場合、ステップＳ１８において「Ｙｅｓ」と判定され、ステップＳ１９において動作中のＨＤＤ２１０ｃ，２１０ｄからそれぞれ分割データＤａ，Ｄｂが読み出される。
【０１０２】
［ステップＳ２０］ＲＡＩＤ制御部１３０は、読み出しが要求されたＲＡＩＤグループを構成するＨＤＤ２１１のうち動作中のＨＤＤ２１１から、処理対象のストライプに含まれる分割データおよびパリティを読み出す。
【０１０３】
［ステップＳ２１］ＲＡＩＤ制御部１３０は、ステップＳ２０で読み出した分割データおよびパリティを基に、停止中のＨＤＤ２１１から読み出すべき分割データを計算する。
例えば、図５における分割データＤｃ，ＤｄおよびパリティＰｃｄを含むストライプが処理対象であり、分割データＤｃ，Ｄｄが読み出し対象である場合、分割データＤｄは動作中のＨＤＤ２１０ｃ，２１０ｄに格納されていない。この場合、ステップＳ１８において「Ｎｏ」と判定され、ステップＳ１９において動作中のＨＤＤ２１０ｃ，２１０ｄからそれぞれ分割データＤｃおよびパリティＰｃｄが読み出され、ステップＳ２０において分割データＤｄが計算される。
【０１０４】
［ステップＳ２２］読み出し対象のすべてのストライプについてステップＳ１７からステップＳ２２までの処理が実行された場合に、ステップＳ２３の処理が実行される。
［ステップＳ２３］ＲＡＩＤ制御部１３０は、読み出しが要求されたデータをホストに転送する。この後、ステップＳ１２に戻り、アクセス要求が監視される。
【０１０５】
以上のステップＳ１４〜Ｓ２３に示した読み出し制御処理では、停止中のＨＤＤ２１１における磁気ディスクを再度回転させず、動作中のＨＤＤ２１１のみから読み出し処理を行う。これにより、停止中のＨＤＤ２１１がアクセス可能になるまで待機する必要がなくなり、ホストからの読み出し要求に対する応答速度が低下することを抑制できる。
【０１０６】
なお、ステップＳ２０，Ｓ２１では、ＲＡＩＤ制御部１３０は、動作中のＨＤＤ２１１から読み出すことができない分割データを、ホットスペアのＨＤＤ２１２から読み出してもよい。ただしこの場合、ＲＡＩＤ制御部１３０は、分割データが登録されたデータテーブル２２０をホットスペアのＨＤＤ２１２から検索する必要があり、この検索処理によってホストからの読み出し要求に対する応答時間が長くなる可能性がある。ＲＡＩＤ制御部１３０は、データテーブル２２０を検索する代わりにパリティを用いて分割データを計算する方が、読み出し要求に対する応答時間の遅延を安定的に抑制することができる。
【０１０７】
次に、データの書き込みが要求された場合の処理について、図１３を用いて説明する。
［ステップＳ３１］ＲＡＩＤ制御部１３０は、書き戻し制御部１４０によるホットスペア（ＨＳ）のＨＤＤ２１２からのデータの書き戻し処理が実行中かを判定する。ＲＡＩＤ制御部１３０は、書き戻し処理が実行中である場合には、ステップＳ３７の処理を実行し、書き戻し処理が実行されていない場合には、ステップＳ３２の処理を実行する。
【０１０８】
［ステップＳ３２］ＲＡＩＤ制御部１３０は、ホットスペアのＨＤＤ２１２の残容量が所定のしきい値以上かを判定する。ＲＡＩＤ制御部１３０は、残容量がしきい値以上である場合には、ステップＳ３４の処理を実行し、残容量がしきい値未満である場合には、ステップＳ３３の処理を実行する。
【０１０９】
［ステップＳ３３］ＲＡＩＤ制御部１３０は、書き戻し制御部１４０に、ホットスペアのＨＤＤ２１２に一時記憶されたデータの書き戻し処理を開始させる。これにより、ＲＡＩＤ制御部１３０による制御処理と並行して、書き戻し制御部１４０による書き戻し処理が実行される。
【０１１０】
なお、本実施の形態では、ステップＳ３２で用いられるしきい値は、１回の書き込み要求で書き込まれる最大のデータを含んだデータテーブル２２０のサイズ以上の値に設定されているものとする。これにより、ＲＡＩＤ制御部１３０は、ステップＳ３３で書き戻しの開始を指示してから、停止中のＨＤＤ２１１が書き込み可能な状態になる前に、ステップＳ３５またはステップＳ３６の書き込み処理を完了させることができ、書き込みの応答速度の低下を抑制できる。
【０１１１】
これに対し、ステップＳ３２で用いられるしきい値がより小さい値に設定された場合には、停止中のＨＤＤ２１１に書き込むべきすべてのデータをホットスペアのＨＤＤ２１２に書き込み可能かが保証されない。この場合、ステップＳ３３の次にステップＳ３７に進むように処理を変更することで書き込みを完了できるが、ステップＳ３７以降の処理は、停止中のＨＤＤ２１１における磁気ディスクの回転が開始されて、そのＨＤＤ２１１が書き込み可能な状態になるまで、実行できない。
【０１１２】
［ステップＳ３４］ＲＡＩＤ制御部１３０は、ＲＡＩＤ管理テーブル１９０を参照し、書き込みが要求されたＲＡＩＤグループのＲＡＩＤレベルを判定する。ＲＡＩＤ制御部１３０は、ＲＡＩＤレベルがＲＡＩＤ１またはＲＡＩＤ１＋０の場合には、ステップＳ３５の処理を実行し、ＲＡＩＤレベルがＲＡＩＤ５またはＲＡＩＤ６の場合には、ステップＳ３６の処理を実行する。
【０１１３】
［ステップＳ３５］ＲＡＩＤ制御部１３０は、ＲＡＩＤ１またはＲＡＩＤ１＋０の場合の書き込み処理を実行する。この処理の詳細については、図１４において説明する。
［ステップＳ３６］ＲＡＩＤ制御部１３０は、ＲＡＩＤ５またはＲＡＩＤ６の場合の書き込み処理を実行する。この処理の詳細については、図１５において説明する。
【０１１４】
ステップＳ３５またはステップＳ３６が実行された後、ステップＳ１２に戻り、アクセス要求が監視される。
［ステップＳ３７］ＲＡＩＤ制御部１３０は、ホストから指示された論理ボリューム上の書き込みアドレスおよびデータサイズと、ＲＡＩＤ管理テーブル１９０に登録されたディスク番号の数（すなわち、ＲＡＩＤグループを構成するＨＤＤ２１１の台数）およびストライプサイズとを基に、書き込みが要求されたデータを構成する各分割データを、ＲＡＩＤグループを構成するＨＤＤ２１１のうちのどのＨＤＤ２１１のどの領域に格納すべきかを決定する。ここで決定される書き込み先領域は、あくまでＲＡＩＤグループを構成するＨＤＤ２１１における本来の読み出し位置であり、ホットスペアのＨＤＤ２１２における一時記憶領域を含まない。
【０１１５】
［ステップＳ３８］書き戻し制御部１４０による書き戻しの実行中では、書き込みが要求されたＲＡＩＤグループを構成するすべてのＨＤＤ２１１が動作中の状態になっている。このとき、ＲＡＩＤ制御部１３０は、ホットスペアのＨＤＤ２１２への書き込みを行わずに、ＲＡＩＤグループを構成するＨＤＤ２１１への書き込みを行う。
【０１１６】
ステップＳ３８では、ＲＡＩＤ制御部１３０はまず、書き込み先のＲＡＩＤグループに対応するＬＢＡテーブル１６０に、ステップＳ３７で判定した書き込み先領域に含まれるＬＢＡが登録されている場合に、このＬＢＡをＬＢＡテーブル１６０から削除する。これにより、ＲＡＩＤ制御部１４０は、同じ書き込み先領域への書き込みが要求された古いデータがホットスペアのＨＤＤ２１２の一時記憶領域に書き込まれていた場合に、その古いデータがその後に動作中のＨＤＤ２１１に書き戻されることを阻止する。換言すると、同じ書き込み先領域への書き込みが要求された古いデータがホットスペアのＨＤＤ２１２の一時記憶領域に書き込まれていた場合に、その古いデータが破棄される。
【０１１７】
例えば、図１１において、ステップＳ３７で判定した書き込み先領域に含まれるＬＢＡが、テーブル番号「１」のデータテーブル２２０に登録されていたものとする。このＬＢＡを「ＬＢＡ＃１」とすると、ステップＳ３８においてＲＡＩＤ制御部１３０は、テーブル番号「１」のデータテーブル２２０に書き込み先ＬＢＡとして登録されていたＬＢＡ＃１を、ＬＢＡテーブル１６０から削除する。
【０１１８】
後述するように、書き戻し制御部１４０は、ＬＢＡテーブル１６０に登録されているＬＢＡに対してのみ書き戻しを行う。このため、ＬＢＡ＃１がＬＢＡテーブル１６０から削除されることにより、書き戻し制御部１４０は、ＬＢＡ＃１を含むデータテーブル２２０がホットスペアのＨＤＤ２１２に登録されているにもかかわらず、このデータテーブル２２０に含まれる書き込みデータの書き戻しを行わない。これにより、次のステップＳ３９で該当ＬＢＡに最新のデータが書き込まれた後に、該当ＬＢＡに対応する古いデータが上書きされることが阻止される。
【０１１９】
なお、ステップＳ３８では、ＲＡＩＤ制御部１３０は、同じ書き込み先領域への書き込みが要求された古いデータがあるかを、データテーブル２２０を検索せずに、アレイコントローラ１０８のＲＡＭ１１２に記録されたＬＢＡテーブル１６０を参照することで、短時間で判定することができる。これにより、ホストからの書き込み要求に対する応答速度を向上させることができる。
【０１２０】
［ステップＳ３９］書き込み先のＲＡＩＤグループを構成するすべてのＨＤＤ２１１が動作中であることから、ＲＡＩＤ制御部１４０は、ＲＡＩＤレベルに応じた通常の書き込み処理、すなわち、ステップＳ３７で判定された書き込み領域への書き込み処理を実行する。この後、ステップＳ１２に戻り、アクセス要求が監視される。
【０１２１】
上記のステップＳ３７〜Ｓ３９に示したように、ＲＡＩＤ制御部１３０は、書き戻し制御部１４０による書き戻しの実行中では、ホットスペアのＨＤＤ２１２への書き込みを行わずに、ＲＡＩＤグループを構成するＨＤＤ２１１への書き込みを行う。この場合、ＲＡＩＤ制御部１４０は、テーブルの更新処理としてステップＳ３８での書き込み先ＬＢＡの削除処理のみ実行するなど、書き込み処理手順が簡単になる。このため、ＲＡＩＤ制御部１３０は、後述するステップＳ３５またはステップＳ３６での書き込み処理と比較して、データの書き込みを短時間で完了できる。
【０１２２】
図１４は、ＲＡＩＤ１またはＲＡＩＤ１＋０の場合の書き込み処理の例を示すフローチャートである。この図１４の処理は、図１３のステップＳ３５の処理に対応する。
［ステップＳ５１］このステップＳ５１は、書き込みが要求されたＲＡＩＤグループのＲＡＩＤレベルがＲＡＩＤ１＋０である場合のみ、実行される。ＲＡＩＤ制御部１３０は、ホストから指示された論理ボリューム上の書き込みアドレスおよびデータサイズと、ＲＡＩＤ管理テーブル１９０に登録されたストライプサイズとを基に、書き込みが要求されたＲＡＩＤグループを構成するＨＤＤ２１１から、書き込み先のＨＤＤ２１１のペアを決定する。
【０１２３】
ここで言うＨＤＤ２１１のペアとは、分割データがミラーリングされるＨＤＤ２１１のペアである。例えば、図８に示したＲＡＩＤグループ＃２１に対応する論理ボリュームへの書き込みが要求され、書き込みが要求されたデータから生成される分割データの容量が１ストライプの大きさ以上である場合、書き込み先のＨＤＤのペアとして、ＨＤＤ２１０ａとＨＤＤ２１０ｂのペア、ＨＤＤ２１０ｃとＨＤＤ２１０ｄのペア、ＨＤＤ２１０ｅとＨＤＤ２１０ｆのペアが決定される。
【０１２４】
［ステップＳ５２］ＲＡＩＤ制御部１３０は、書き込みが要求されたＲＡＩＤグループを構成するＨＤＤ２１１のうち、動作中のＨＤＤ２１１に対してデータを書き込む。なお、ＲＡＩＤ制御部１３０は、ＲＡＩＤレベルがＲＡＩＤ１＋０の場合には、ステップＳ５１で決定したＨＤＤ２１１のペアのうち動作中のＨＤＤ２１１に対して、分割データを書き込む。このステップＳ５２により、データがミラーリングされるＨＤＤ２１１のペアのうち一方のみにデータが書き込まれる。
【０１２５】
［ステップＳ５３］ＲＡＩＤ制御部１３０は、停止中のＨＤＤ２１１に書き込むべきデータをホットスペアのＨＤＤ２１２に書き込むための処理を行う。
具体的には、ＲＡＩＤ制御部１３０は、本来の書き込み先である停止中のＨＤＤ２１１を示すディスク番号およびそのＨＤＤ２１１におけるデータの書き込み先ＬＢＡの組み合わせごとに、データテーブル２２０を作成する。ＲＡＩＤ制御部１３０は、各データテーブル２２０に、対応するディスク番号および書き込み先ＬＢＡと、書き込みデータとを登録し、各データテーブル２２０をデータの書き込み順にホットスペアのＨＤＤ２１２に登録する。
【０１２６】
［ステップＳ５４］ＲＡＩＤ制御部１３０は、ステップＳ５３で登録したデータテーブル２２０の数だけ、テーブル管理情報１７０のテーブル番号をインクリメントする。なお、データテーブル２２０が１つも登録されていない初期状態におけるテーブル番号の初期値は「０」である。
【０１２７】
［ステップＳ５５］ＲＡＩＤ制御部１３０は、データの本来の書き込み先である停止中のＨＤＤ２１１（すなわち、ステップＳ５３でデータテーブル２２０に登録したディスク番号が示すＨＤＤ２１１）にそれぞれ対応するＬＢＡテーブル１６０を特定する。ＲＡＩＤ制御部１３０は、特定した各ＬＢＡテーブル１６０に対して、ステップＳ５３でデータテーブル２２０に登録した書き込み先ＬＢＡを登録する。これにより、ホットスペアのＨＤＤ２１２に一時的に書き込まれた各データについての本来のＨＤＤ２１１における書き込み先ＬＢＡが、ＬＢＡテーブル１６０に登録される。
【０１２８】
なお、このステップＳ５５では、ＲＡＩＤ制御部１３０は、特定したＬＢＡテーブル１６０にすでに同一のＬＢＡが登録されていた場合には、そのＬＢＡの登録をスキップする。すなわち、各ＬＢＡテーブル１６０には、同じＬＢＡは重複して登録されない。
【０１２９】
図１５は、ＲＡＩＤ５またはＲＡＩＤ６の場合の書き込み処理の例を示すフローチャートである。この図１５の処理は、図１３のステップＳ３６の処理に対応する。
［ステップＳ６１］ＲＡＩＤ制御部１３０は、ホストから受信した書き込みデータを、ＲＡＩＤ管理テーブル１９０に登録されたストライプサイズごとに分割して、分割データを生成する。
【０１３０】
［ステップＳ６２］ＲＡＩＤ制御部１３０は、ホストから指示された論理ボリューム上の書き込みアドレスおよびデータサイズと、ＲＡＩＤ管理テーブル１９０に登録されたディスク番号の数（すなわち、ＲＡＩＤグループを構成するＨＤＤ２１１の台数）およびストライプサイズとを基に、書き込みが要求されたデータを構成する各分割データを、ＲＡＩＤグループを構成するＨＤＤ２１１のうちのどのＨＤＤ２１１のどの領域に格納すべきかを決定する。ここで決定される書き込み先領域は、あくまでＲＡＩＤグループを構成するＨＤＤ２１１における本来の読み出し位置であり、ホットスペアのＨＤＤ２１２における一時記憶領域を含まない。
【０１３１】
［ステップＳ６３］このステップＳ６３からループ端であるステップＳ７６までの処理は、決定された書き込み先領域に含まれるストライプごとに繰り返される。例えば、書き込み先領域が複数のストライプに跨る場合には、ステップＳ６３からステップＳ７６までの処理が複数回繰り返される。
【０１３２】
［ステップＳ６４］ＲＡＩＤ制御部１３０は、処理対象のストライプに含まれる分割データのうち、ステップＳ６１で決定された書き込み先領域に含まれていない分割データを、動作中のＨＤＤ２１１から読み出す。例えば、図５における分割データＤａ，ＤｂおよびパリティＰａｂを含むストライプが処理対象であり、分割データＤｂおよびパリティＰａｂが書き込み先領域に含まれている場合、ＲＡＩＤ制御部１３０は、書き込み先領域に含まれていない分割データＤａをＨＤＤ２１０ｃから読み出す。読み出された分割データＤａは、最新のパリティＰａｂを計算するために使用される。
【０１３３】
［ステップＳ６５］ＲＡＩＤ制御部１３０は、処理対象のストライプに含まれる、ステップＳ６１で生成した分割データのうち、書き込み先のＨＤＤ２１１が動作中である分割データを、対応するＨＤＤ２１１に書き込む。
【０１３４】
［ステップＳ６６］ＲＡＩＤ制御部１３０は、処理対象のストライプに含まれる分割データの書き込み先となるＨＤＤ２１１の中に、停止中のＨＤＤ２１１があるかを判定する。ＲＡＩＤ制御部１３０は、停止中のＨＤＤ２１１がある場合には、ステップＳ６７の処理を実行し、停止中のＨＤＤ２１１がない場合には、ステップＳ７０の処理を実行する。
【０１３５】
［ステップＳ６７］ＲＡＩＤ制御部１３０は、停止中のＨＤＤ２１１に書き込むべき分割データをホットスペアのＨＤＤ２１２に書き込むための処理を行う。
具体的には、ＲＡＩＤ制御部１３０は、分割データの本来の書き込み先である停止中のＨＤＤ２１１を示すディスク番号と、そのＨＤＤ２１１におけるデータの書き込み先ＬＢＡと、分割データとを格納したデータテーブル２２０を作成する。ＲＡＩＤ制御部１３０は、作成したデータテーブル２２０を、ホットスペアのＨＤＤ２１２に登録する。
【０１３６】
なお、ＲＡＩＤ６の場合には、２台のＨＤＤ２１１が停止中である可能性があることから、ステップＳ６７では最大で２つのデータテーブル２２０がホットスペアのＨＤＤ２１２に登録される。
【０１３７】
［ステップＳ６８］ＲＡＩＤ制御部１３０は、ステップＳ６７で登録したデータテーブル２２０の数だけ、テーブル管理情報１７０のテーブル番号をインクリメントする。
［ステップＳ６９］ＲＡＩＤ制御部１３０は、分割データの本来の書き込み先である停止中のＨＤＤ２１１（すなわち、ステップＳ６７でデータテーブル２２０に登録したディスク番号が示すＨＤＤ２１１）にそれぞれ対応するＬＢＡテーブル１６０を特定する。ＲＡＩＤ制御部１３０は、特定した各ＬＢＡテーブル１６０に対して、ステップＳ６７でデータテーブル２２０に登録した書き込み先ＬＢＡを登録する。これにより、ホットスペアのＨＤＤ２１２に一時的に書き込まれた各分割データについての本来のＨＤＤ２１１における書き込み先ＬＢＡが、ＬＢＡテーブル１６０に登録される。
【０１３８】
なお、このステップＳ６９では、図１５のステップＳ５５と同様に、各ＬＢＡテーブル１６０には、同じＬＢＡは重複して登録されない。
［ステップＳ７０］ＲＡＩＤ制御部１３０は、パリティを計算する。ＲＡＩＤ６の場合、Ｐ−パリティおよびＱ−パリティが計算される。
【０１３９】
［ステップＳ７１］ＲＡＩＤ制御部１３０は、ステップＳ７０で算出したパリティのうち、書き込み先のＨＤＤ２１１が動作中であるパリティを、対応するＨＤＤ２１１に書き込む。
【０１４０】
［ステップＳ７２］ＲＡＩＤ制御部１３０は、ステップＳ７０で算出したパリティの書き込み先となるＨＤＤ２１１の中に、停止中のＨＤＤ２１１があるかを判定する。ＲＡＩＤ制御部１３０は、停止中のＨＤＤ２１１がある場合には、ステップＳ７３の処理を実行する。一方、停止中のＨＤＤ２１１がない場合には、ステップＳ７６に進む。
【０１４１】
［ステップＳ７３］ＲＡＩＤ制御部１３０は、停止中のＨＤＤ２１１に書き込むべきパリティをホットスペアのＨＤＤ２１２に書き込むための処理を行う。
具体的には、ＲＡＩＤ制御部１３０は、パリティの本来の書き込み先である停止中のＨＤＤ２１１を示すディスク番号と、そのＨＤＤ２１１におけるデータの書き込み先ＬＢＡと、パリティとを格納したデータテーブル２２０を作成する。ＲＡＩＤ制御部１３０は、作成したデータテーブル２２０を、ホットスペアのＨＤＤ２１２に登録する。
【０１４２】
なお、ＲＡＩＤ６の場合には、２台のＨＤＤ２１１が停止中である可能性があることから、ステップＳ７３では最大で２つのデータテーブル２２０がホットスペアのＨＤＤ２１２に登録される。
【０１４３】
［ステップＳ７４］ＲＡＩＤ制御部１３０は、ステップＳ７３で登録したデータテーブル２２０の数だけ、テーブル管理情報１７０のテーブル番号をインクリメントする。
［ステップＳ７５］ＲＡＩＤ制御部１３０は、パリティの本来の書き込み先である停止中のＨＤＤ２１１（すなわち、ステップＳ７３でデータテーブル２２０に登録したディスク番号が示すＨＤＤ２１１）にそれぞれ対応するＬＢＡテーブル１６０を特定する。ＲＡＩＤ制御部１３０は、特定した各ＬＢＡテーブル１６０に対して、ステップＳ７３でデータテーブル２２０に登録した書き込み先ＬＢＡを登録する。これにより、ホットスペアのＨＤＤ２１２に一時的に書き込まれた各パリティについての本来のＨＤＤ２１１における書き込み先ＬＢＡが、ＬＢＡテーブル１６０に登録される。
【０１４４】
なお、このステップＳ７５では、図１４のステップＳ５５と同様に、各ＬＢＡテーブル１６０には、同じＬＢＡは重複して登録されない。
［ステップＳ７６］書き込み先領域に含まれるすべてのストライプについてステップＳ６３からステップＳ７６までの処理が実行された場合に、書き込み処理が終了する。
【０１４５】
以上の図１２〜図１５において説明したアクセス制御処理によれば、ＲＡＩＤ制御部１３０は、消費電力を低減させつつ、データを冗長化することができる。
また、停止中のＨＤＤ２１１に書き込むべきデータの一時記憶領域を、不揮発性記憶領域であるホットスペアのＨＤＤ２１２とすることで、例えばストレージシステムが異常停止した後に再起動した場合でも、一時記憶領域のデータが消去されずに保持される。このため、ＲＡＩＤ制御部１３０は、データの冗長性を保ったまま、ＲＡＩＤグループの運用を継続できる。なお、再起動時の処理については、後に詳しく説明する。
【０１４６】
これとともに、例えば、一時記憶領域をＲＡＭとした場合と比較して、安価に大容量の記憶領域を一時記憶領域として確保できる。
次に、図１６は、ホットスペアのＨＤＤからの書き戻し処理の例を示すフローチャートである。この図１６の処理は、例えば、図１３のステップＳ３３でＲＡＩＤ制御部１３０が書き戻しの開始を要求した際に実行される。あるいは、図１６の処理は、例えば業務時間外など、他の任意のタイミングで実行されてもよい。
【０１４７】
［ステップＳ９１］書き戻し制御部１４０は、ディスク管理テーブル１８０に登録された停止ディスク番号が示す、停止中のＨＤＤ２１１に対して、磁気ディスクを回転させるように指示するためのコマンドを送信する。これにより、停止中の各ＨＤＤ２１１において、磁気ディスクの回転が開始される。
【０１４８】
［ステップＳ９２］書き戻し制御部１４０は、テーブル管理情報１７０に登録されたテーブル番号が示すデータテーブル２２０を特定する。
［ステップＳ９３］書き戻し制御部１４０は、ステップＳ９２で特定されたデータテーブル２２０から、ディスク番号を読み出し、読み出したディスク番号に対応するＬＢＡテーブル１６０を参照する。書き戻し制御部１４０は、参照したＬＢＡテーブル１６０に、ステップＳ９２で特定されたデータテーブル２２０に登録されている書き込み先ＬＢＡが登録されているかを判定する。
【０１４９】
書き戻し制御部１４０は、書き込み先ＬＢＡが登録されている場合には、ステップＳ９４の書き戻し処理を実行する。一方、書き込み先ＬＢＡが登録されていない場合とは、そのＬＢＡについての最新のデータが本来のＨＤＤ２１１に登録済みであることを示す。この場合、書き戻し制御部１４０は、ステップＳ９２で特定されたデータテーブル２２０に登録されている書き込みデータの書き戻しを行わずに、ステップＳ９６の処理を実行する。
【０１５０】
なお、後者のケースとしては、ホットスペアのＨＤＤ２１２に登録されていた最新データが本来のＨＤＤ２１１に書き戻し済みの場合と、書き戻し処理中にそのＬＢＡに対する新たなデータがホストから送信されて本来のＨＤＤ２１１に書き込まれた場合（図１３のステップＳ３７〜Ｓ３９が実行された場合）とがある。
【０１５１】
［ステップＳ９４］書き戻し制御部１４０は、ステップＳ９２で特定されたデータテーブル２２０に登録されたディスク番号および書き込み先ＬＢＡが示す位置へ、このデータテーブル２２０に登録されている最新データを転送して書き込む。
【０１５２】
［ステップＳ９５］書き戻し制御部１４０は、ステップＳ９３で参照したＬＢＡテーブル１６０から、ステップＳ９２で特定されたデータテーブル２２０に登録された書き込み先ＬＢＡを削除する。
【０１５３】
［ステップＳ９６］書き戻し制御部１４０は、テーブル管理情報１７０に登録されたテーブル番号を「１」だけデクリメントする。
［ステップＳ９７］書き戻し制御部１４０は、デクリメント後のテーブル番号が「１」以上の場合には、ステップＳ９２に戻り、１つ前に登録されたデータテーブル２２０を参照しながらステップＳ９２以降の処理を実行する。ステップＳ９２〜Ｓ９７の処理が繰り返されることで、ホットスペアのＨＤＤ２１２に登録されたデータテーブル２２０が降順に（すなわち、登録順とは逆の順序で）参照され、同一ＨＤＤの同一ＬＢＡに対応する最新データのみが、動作状態に遷移した本来のＨＤＤ２１１に書き戻される。そして、書き戻し制御部１４０は、ステップＳ９６でのデクリメント後のテーブル番号が「０」になった場合に、ステップＳ９８の処理を実行する。
【０１５４】
［ステップＳ９８］書き戻し制御部１４０は、書き戻しが完了したＨＤＤ２１１に対して、磁気ディスクの回転を停止するように指示するためのコマンドを送信する。これにより、ステップＳ９１で動作状態に遷移した各ＨＤＤ２１１は、再度停止状態に遷移する。
【０１５５】
以上の図１６の処理によれば、書き戻し制御部１４０は、ホットスペアのＨＤＤ２１２に一時的に書き込んだデータを、動作を停止させていた、本来書き込むべきＨＤＤ２１１に書き戻すことができる。
【０１５６】
また、前述のように、本実施の形態のＲＡＩＤ制御部１３０は、同一ＨＤＤの同一ＬＢＡに対して複数回データの書き込みが発生した場合でも、その都度新たなデータテーブル２２０を作成して、ホットスペアのＨＤＤ２１２に追記する。これにより、ＲＡＩＤ制御部１３０は、ホストからデータの書き込み要求を受けたときに、同一ＨＤＤの同一ＬＢＡについての古いデータが登録されたデータテーブル２２０を検索する必要がなくなる。これにより、ホストからの書き込み要求に対する応答時間を短縮できる。
【０１５７】
一方、書き戻し制御部１４０は、ＬＢＡテーブル１６０を利用することで、同一ＨＤＤの同一ＬＢＡに対して複数回データの書き込みが発生した場合でも、最新のデータのみを書き戻すことができる。また、ＬＢＡテーブル１６０が不揮発性メモリ１１３ではなくＲＡＭ１１２に格納されることで、書き戻し制御部１４０はＬＢＡテーブル１６０の読み取りおよび更新を高速に行うことができ、その結果、書き戻し処理に要する時間を短縮することができる。
【０１５８】
次に、停止状態にあるアレイコントローラ１０８の電源をオンにしてアレイコントローラ１０８が起動する際の処理について説明する。この起動処理は、例えば、アレイコントローラ１０８の電源をオフにしてアレイコントローラ１０８を正常に停止させた後、アレイコントローラ１０８を再度起動させた場合に実行される。あるいは、ストレージシステムが何らかの異常の発生によって停止した後、ストレージシステムが再起動した場合に実行されてもよい。
【０１５９】
以下、アレイコントローラ１０８の起動処理として、２つの処理例を示す。
まず、図１７は、アレイコントローラの第１の起動処理例を示すフローチャートである。
【０１６０】
ＬＢＡテーブル１６０はＲＡＭ１１２に格納されているため、アレイコントローラ１０８の電源がオフになると、ＬＢＡテーブル１６０の内容は消失する。図１７に示す第１の起動処理例は、消失したＬＢＡテーブル１６０の内容を再構築して、ホットスペアのＨＤＤ２１２に一時的に書き込まれたデータを継続して使用可能にするものである。
【０１６１】
［ステップＳ１１１］復旧制御部１５０は、不揮発性メモリ１１３内のテーブル管理情報１７０に登録されているテーブル番号を、所定の記憶領域（例えば、不揮発性メモリ１１３上の別の領域）に退避させる。
【０１６２】
［ステップＳ１１２］復旧制御部１５０は、ディスク管理テーブル１８０に登録された停止ディスク番号が示すＨＤＤ２１１にそれぞれ対応するＬＢＡテーブル１６０を、ＲＡＭ１１２に登録する。なお、このステップＳ１１２の段階では、登録された各ＬＢＡテーブル１６０の中には何も登録されていない。
【０１６３】
以下のステップＳ１１２〜Ｓ１１６では、テーブル管理情報１７０がＬＢＡテーブル１６０の再構築のために使用される。
［ステップＳ１１３］復旧制御部１５０は、テーブル管理情報１７０に登録されたテーブル番号が示すデータテーブル２２０を特定する。
【０１６４】
［ステップＳ１１４］復旧制御部１５０は、ステップＳ１１３で特定されたデータテーブル２２０から、ディスク番号を読み出し、読み出したディスク番号に対応するＬＢＡテーブル１６０を参照する。復旧制御部１５０は、参照したＬＢＡテーブル１６０に、ステップＳ１１３で特定されたデータテーブル２２０に登録されている書き込み先ＬＢＡを登録する。なお、復旧制御部１５０は、データテーブル２２０から読み出した書き込み先ＬＢＡがＬＢＡテーブル１６０にすでに登録されていた場合には、書き込み先ＬＢＡの登録をスキップする。
【０１６５】
［ステップＳ１１５］復旧制御部１５０は、テーブル管理情報１７０に登録されたテーブル番号を「１」だけデクリメントする。
［ステップＳ１１６］復旧制御部１５０は、デクリメント後のテーブル番号が「１」以上の場合には、ステップＳ１１３に戻り、１つ前に登録されたデータテーブル２２０を参照しながらステップＳ１１３以降の処理を実行する。ステップＳ１１３〜Ｓ１１６の処理が繰り返されることで、ホットスペアのＨＤＤ２１２に登録されたデータテーブル２２０が降順に参照され、参照されたデータテーブル２２０に基づいてＬＢＡテーブル１６０が再構築される。そして、復旧制御部１５０は、ステップＳ１１５でのデクリメント後のテーブル番号が「０」になった場合に、ステップＳ１１７の処理を実行する。
【０１６６】
［ステップＳ１１７］復旧制御部１５０は、ステップＳ１１１で所定記憶領域に退避させたテーブル番号を、テーブル管理情報１７０に再登録する。
以上の第１の起動処理例によれば、ＬＢＡテーブル１６０およびテーブル管理情報１７０を、アレイコントローラ１０８の電源がオフになる直前の状態に復旧させることができる。これにより、アレイコントローラ１０８は、図１２、図１３に示したアクセス制御処理や、図１６に示した書き戻し処理を実行可能な状態になる。
【０１６７】
また、上記の第１の起動処理例では、次の図１８に示す第２の起動処理例のように、ホットスペアのＨＤＤ２１２から本来のＨＤＤ２１１へのデータの書き戻しが実行されない分だけ、起動処理に要する時間が短縮される。
【０１６８】
図１８は、アレイコントローラの第２の起動処理例を示すフローチャートである。
図１８に示す第２の起動処理例は、不揮発性メモリ１１３に残された情報を用いて、ホットスペアのＨＤＤ２１２に一時的に書き込まれたデータを本来のＨＤＤ２１１に書き戻し、一時記憶領域およびその管理に利用される情報を初期化するものである。この第２の起動処理例では、アレイコントローラ１０８は、電源オフによって記憶内容が失われたＬＢＡテーブル１６０を、書き戻し時に使用される本来の目的とは別の目的で使用することで、一時記憶領域の初期化を可能にする。
【０１６９】
［ステップＳ１２１］復旧制御部１５０は、ディスク管理テーブル１８０に登録された停止ディスク番号が示すＨＤＤ２１１にそれぞれ対応するＬＢＡテーブル１６０を、ＲＡＭ１１２に登録する。なお、このステップＳ１２１の段階では、登録された各ＬＢＡテーブル１６０の中には何も登録されていない。
【０１７０】
［ステップＳ１２２］復旧制御部１５０は、テーブル管理情報１７０に登録されたテーブル番号が示すデータテーブル２２０を特定する。
［ステップＳ１２３］復旧制御部１５０は、ステップＳ１２２で特定されたデータテーブル２２０からディスク番号を読み出し、読み出したディスク番号に対応するＬＢＡテーブル１６０を参照する。復旧制御部１５０は、参照したＬＢＡテーブル１６０に、ステップＳ１２２で特定されたデータテーブル２２０に登録されている書き込み先ＬＢＡが登録されているかを判定する。
【０１７１】
復旧制御部１５０は、書き込み先ＬＢＡが登録されていない場合には、ステップＳ１２４の処理を実行して、書き戻し制御部１４０に書き戻し処理を実行させる。一方、復旧制御部１５０は、書き込み先ＬＢＡが登録されていた場合には、書き戻し処理を実行させずに、ステップＳ１２７の処理を実行する。
【０１７２】
すなわち、図１８の第２の起動処理例では、ＬＢＡテーブル１６０に書き込み先ＬＢＡが登録されている場合、その書き込み先ＬＢＡに対応するＨＤＤ２１１の領域にはすでに最新のデータが書き戻し済みであって、書き戻しを実行する必要がないことを示す。
【０１７３】
［ステップＳ１２４］復旧制御部１５０は、ステップＳ１２２で特定されたデータテーブル２２０のテーブル番号を書き戻し制御部１４０に通知して、書き戻しの実行を指示する。書き戻し制御部１４０は、通知されたテーブル番号が示すデータテーブル２２０に登録されたディスク番号および書き込み先ＬＢＡが示す位置へ、このデータテーブル２２０に登録されている最新データを転送して書き込む。
【０１７４】
［ステップＳ１２５］復旧制御部１５０は、ステップＳ１２３で参照したＬＢＡテーブル１６０に、ステップＳ１２２で特定されたデータテーブル２２０に登録された書き込み先ＬＢＡを登録する。
【０１７５】
［ステップＳ１２６］復旧制御部１５０は、テーブル管理情報１７０に登録されたテーブル番号を「１」だけデクリメントする。
［ステップＳ１２７］復旧制御部１５０は、デクリメント後のテーブル番号が「１」以上の場合には、ステップＳ１２２に戻り、１つ前に登録されたデータテーブル２２０を参照しながらステップＳ１２２以降の処理を実行する。ステップＳ１２２〜Ｓ１２７の処理が繰り返されることで、ホットスペアのＨＤＤ２１２に登録されたデータテーブル２２０が降順に参照され、同一ＨＤＤの同一ＬＢＡに対応する最新データのみが、本来の書き込み先であるＨＤＤ２１１に書き戻される。
【０１７６】
そして、復旧制御部１５０は、ステップＳ１２７でのデクリメント後のテーブル番号が「０」になった場合に、ステップＳ１２８の処理を実行する。この状態では、テーブル管理情報１７０には初期値「０」が登録されているので、ＨＤＤ２１２に登録されていたデータテーブル２２０は無効化される。
【０１７７】
［ステップＳ１２８］復旧制御部１５０は、すべてのＬＢＡテーブル１６０に登録されている書き込み先ＬＢＡを消去して、各ＬＢＡテーブル１６０を初期化する。
以上の第２の起動処理例が実行されることで、アレイコントローラ１０８は、図１２、図１３に示したアクセス制御処理を実行可能な状態になる。
【０１７８】
次に、ＲＡＩＤ制御部１３０によるアクセス制御処理が実行されている状態において、いずれかのＨＤＤが故障した場合の復旧処理について説明する。まず、図１９は、ホットスペアのＨＤＤが故障した場合の復旧処理の例を示すフローチャートである。
【０１７９】
［ステップＳ１４１］復旧制御部１５０は、ディスク管理テーブル１８０に登録された停止ディスク番号が示す、停止中のＨＤＤ２１１に対して、磁気ディスクを回転させるように指示するためのコマンドを送信する。これにより、停止中の各ＨＤＤ２１１において、磁気ディスクの回転が開始され、停止中の各ＨＤＤ２１１が動作状態に遷移する。
【０１８０】
［ステップＳ１４２］復旧制御部１５０は、ＲＡＩＤグループを構成するＨＤＤ２１１のうち、ステップＳ１４１で動作状態になったＨＤＤ２１１を除く他のＨＤＤ２１１から読み出したデータを基に、動作状態になったＨＤＤ２１１に書き込むべきデータをリビルドする。そして、復旧制御部１５０は、リビルドされたデータを動作状態になったＨＤＤ２１１に書き込む。
【０１８１】
例えば、図４に示すＲＡＩＤグループ＃０１においては、ＨＤＤ２１０ｂが停止状態から動作状態に遷移し、ＨＤＤ２１０ａに格納されたデータがＨＤＤ２１０ｂにコピーされる。
【０１８２】
また、図４に示すＲＡＩＤグループ＃０２においては、ＨＤＤ２１０ｅが停止状態から動作状態に遷移する。そして、ＨＤＤ２１０ｃ〜２１０ｅにおける同一ストライプ番号の領域ごとに、ＨＤＤ２１０ｃ，２１０ｄから読み出したデータを基にＨＤＤ２１０ｅに書き込むべきデータが計算され、算出されたデータがＨＤＤ２１０ｅに書き込まれる。例えば図５において、分割データＤａ，Ｄｂを基にパリティＰａｂが計算され、パリティＰａｂがＨＤＤ２１０ｅに書き込まれる。また、分割データＤｃとパリティＰｃｄとを基に分割データＤｄが計算され、分割データＤｄがＨＤＤ２１０ｅに書き込まれる。
【０１８３】
また、図６に示すＲＡＩＤグループ＃１１においては、ＨＤＤ２１０ｄ，２１０ｅが停止状態から動作状態に遷移する。そして、ＨＤＤ２１０ａ〜２１０ｅにおける同一ストライプ番号の領域ごとに、ＨＤＤ２１０ａ〜２１０ｃから読み出したデータを基にＨＤＤ２１０ｄ，２１０ｅに書き込むべきデータが計算され、算出されたデータがＨＤＤ２１０ｄ，２１０ｅに書き込まれる。
【０１８４】
例えば図７において、分割データＤａ〜Ｄｃを基にＰ−パリティＰａｂｃおよびＱ−パリティＱａｂｃが計算され、Ｐ−パリティＰａｂｃがＨＤＤ２１０ｄに、Ｑ−パリティＱａｂｃがＨＤＤ２１０ｅにそれぞれ書き込まれる。また、分割データＤｄ，ＤｅおよびＰ−パリティＰｄｅｆを基にＱ−パリティＱｄｅｆおよび分割データＤｆが計算され、Ｑ−パリティＱｄｅｆがＨＤＤ２１０ｄに、分割データＤｆがＨＤＤ２１０ｅにそれぞれ書き込まれる。
【０１８５】
また、図８に示すＲＡＩＤグループ＃２１においては、ＨＤＤ２１０ｂ，２１０ｄ，２１０ｆが停止状態から動作状態に遷移する。そして、ＨＤＤ２１０ａのデータがＨＤＤ２１０ｂに、ＨＤＤ２１０ｃのデータがＨＤＤ２１０ｄに、ＨＤＤ２１０ｅのデータがＨＤＤ２１０ｆに、それぞれコピーされる。
【０１８６】
［ステップＳ１４３］復旧制御部１５０は、ホットスペアとして使用可能なＨＤＤが他に存在するかを判定する。復旧制御部１５０は、ホットスペアとして使用可能なＨＤＤがある場合には、そのＨＤＤのディスク番号をディスク管理テーブル１８０にＨＳディスク番号として登録し、そのＨＤＤをホットスペアのＨＤＤ２１２として組み込む。そして、復旧制御部１５０は、ステップＳ１４４の処理を実行する。一方、復旧制御部１５０は、ホットスペアとして使用可能なＨＤＤがない場合には、ステップＳ１４５の処理を実行する。
【０１８７】
［ステップＳ１４４］復旧制御部１５０は、ＲＡＩＤ制御部１３０に、省電力状態でのアクセス制御を再開させる。省電力状態でのアクセス制御とは、図１２、図１３に示したように、ＲＡＩＤグループを構成する所定のＨＤＤを停止状態にし、ホットスペアのＨＤＤ２１２を一時的な書き込み領域として用いて実行されるアクセス制御である。
【０１８８】
［ステップＳ１４５］復旧制御部１５０は、ＲＡＩＤ制御部１３０に、非省電力状態でのアクセス制御を開始させる。非省電力状態でのアクセス制御とは、各ＲＡＩＤグループを構成するすべてのＨＤＤを動作状態にして、ＲＡＩＤレベルに応じたアクセス制御を行う処理である。
【０１８９】
以上の図１９の処理により、アレイコントローラ１０８は、一時的な書き込み領域として使用していたホットスペアのＨＤＤ２１２が故障した場合でも、各ＲＡＩＤグループに対応する論理ボリュームに対するホストからのアクセス要求に応じたアクセス制御を再開することができる。
【０１９０】
図２０は、ＲＡＩＤグループを構成するＨＤＤのうち動作中のＨＤＤが故障した場合の復旧処理の例を示すフローチャートである。
［ステップＳ１５１］復旧制御部１５０は、ディスク管理テーブル１８０に登録された停止ディスク番号が示す、停止中のＨＤＤ２１１に対して、磁気ディスクを回転させるように指示するためのコマンドを送信する。これにより、停止中の各ＨＤＤ２１１において、磁気ディスクの回転が開始され、停止中の各ＨＤＤ２１１が動作状態に遷移する。
【０１９１】
［ステップＳ１５２］復旧制御部１５０は、ホットスペアのＨＤＤ２１２から、動作状態に遷移したＨＤＤ２１１への書き戻しを、書き戻し制御部１４０に実行させる。
［ステップＳ１５３］復旧制御部１５０は、故障したＨＤＤ２１１の代わりに、書き戻しが完了したホットスペアのＨＤＤ２１２を組み込む。具体的には、復旧制御部１５０は、ホットスペアとして使用していたＨＤＤ２１２のディスク番号を、ＲＡＩＤ管理テーブル１９０において故障したＨＤＤ２１１のディスク番号が登録されていた欄に、上書きして登録する。また、復旧制御部１５０は、ホットスペアとして使用していたＨＤＤ２１２のディスク番号を、ディスク管理テーブル１８０のＨＳディスク番号から削除する。これにより、ホットスペアとして使用されていたＨＤＤ２１２は、ＲＡＩＤグループを構成するＨＤＤ２１１に変更される。
【０１９２】
さらに、復旧制御部１５０は、故障したＨＤＤ２１１が属していたＲＡＩＤグループにおいて、新たに組み込まれたＨＤＤ２１１に書き込むデータを、他のＨＤＤ２１１に記録されたデータを基にリビルドする。そして、復旧制御部１５０は、リビルドされたデータを、新たに組み込まれたＨＤＤ２１１に書き込む。
【０１９３】
［ステップＳ１５４］復旧制御部１５０は、ホットスペアとして使用可能なＨＤＤが他に存在するかを判定する。復旧制御部１５０は、ホットスペアとして使用可能なＨＤＤがある場合には、そのＨＤＤのディスク番号をディスク管理テーブル１８０にＨＳディスク番号として登録し、そのＨＤＤをホットスペアのＨＤＤ２１２として組み込む。そして、復旧制御部１５０は、ステップＳ１５５の処理を実行する。一方、復旧制御部１５０は、ホットスペアとして使用可能なＨＤＤがない場合には、ステップＳ１５６の処理を実行する。
【０１９４】
［ステップＳ１５５］復旧制御部１５０は、ＲＡＩＤ制御部１３０に、省電力状態でのアクセス制御を再開させる。
［ステップＳ１５６］復旧制御部１５０は、ＲＡＩＤ制御部１３０に、非省電力状態でのアクセス制御を開始させる。
【０１９５】
以上の図２０の処理により、アレイコントローラ１０８は、ＲＡＩＤグループを構成するＨＤＤのうち動作中のＨＤＤが故障した場合でも、各ＲＡＩＤグループに対応する論理ボリュームに対するホストからのアクセス要求に応じたアクセス制御を再開することができる。
【０１９６】
図２１は、停止中のＨＤＤが故障した場合の復旧処理の例を示すフローチャートである。
［ステップＳ１６１］復旧制御部１５０は、ディスク管理テーブル１８０に登録された停止ディスク番号が示す、停止中のＨＤＤ２１１のうち、故障したＨＤＤ２１１以外のＨＤＤ２１１に対して、磁気ディスクを回転させるように指示するためのコマンドを送信する。これにより、コマンドを受信した各ＨＤＤ２１１において、磁気ディスクの回転が開始され、これらの各ＨＤＤ２１１が動作状態に遷移する。
【０１９７】
［ステップＳ１６２］復旧制御部１５０は、ホットスペアのＨＤＤ２１２から、ステップＳ１６１で動作状態に遷移したＨＤＤ２１１への書き戻しを、書き戻し制御部１４０に実行させる。この書き戻し処理は、図１６の処理において、故障したＨＤＤ２１１を書き込み先とする書き戻しをスキップすることで実現される。
【０１９８】
［ステップＳ１６３］復旧制御部１５０は、故障したＨＤＤ２１１の代わりに、ステップＳ１６２での書き戻しが完了したホットスペアのＨＤＤ２１２を組み込む。これにより、ホットスペアとして使用されていたＨＤＤ２１２は、ＲＡＩＤグループを構成するＨＤＤ２１１に変更される。
【０１９９】
さらに、復旧制御部１５０は、故障したＨＤＤ２１１が属していたＲＡＩＤグループにおいて、新たに組み込まれたＨＤＤ２１１に書き込むデータを、他のＨＤＤ２１１に記録されたデータを基にリビルドする。そして、復旧制御部１５０は、リビルドされたデータを、新たに組み込まれたＨＤＤ２１１に書き込む。
【０２００】
［ステップＳ１６４］復旧制御部１５０は、ホットスペアとして使用可能なＨＤＤが他に存在するかを判定する。復旧制御部１５０は、ホットスペアとして使用可能なＨＤＤがある場合には、そのＨＤＤのディスク番号をディスク管理テーブル１８０にＨＳディスク番号として登録し、そのＨＤＤをホットスペアのＨＤＤ２１２として組み込む。そして、復旧制御部１５０は、ステップＳ１６５の処理を実行する。一方、復旧制御部１５０は、ホットスペアとして使用可能なＨＤＤがない場合には、ステップＳ１６６の処理を実行する。
【０２０１】
［ステップＳ１６５］復旧制御部１５０は、ＲＡＩＤ制御部１３０に、省電力状態でのアクセス制御を再開させる。
［ステップＳ１６６］復旧制御部１５０は、ＲＡＩＤ制御部１３０に、非省電力状態でのアクセス制御を開始させる。
【０２０２】
以上の図２１の処理により、アレイコントローラ１０８は、ＲＡＩＤグループを構成するＨＤＤのうち停止中のＨＤＤが故障した場合でも、各ＲＡＩＤグループに対応する論理ボリュームに対するホストからのアクセス要求に応じたアクセス制御を再開することができる。
【０２０３】
なお、上記の各実施の形態に示したストレージ制御装置、情報処理装置、およびこの情報処理装置内のアレイコントローラの各処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０２０４】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０２０５】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０２０６】
上記については単に本発明の原理を示すものである。さらに、多数の変形や変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【符号の説明】
【０２０７】
１０  ストレージ制御装置
１１  動作制御部
１２  アクセス制御部
２１〜２６  記憶装置
３１，３２  論理記憶領域
【図１】
2014002160.tif 000003
【図２】
2014002160.tif 000004
【図３】
2014002160.tif 000005
【図４】
2014002160.tif 000006
【図５】
2014002160.tif 000007
【図６】
2014002160.tif 000008
【図７】
2014002160.tif 000009
【図８】
2014002160.tif 000010
【図９】
2014002160.tif 000011
【図１０】
2014002160.tif 000012
【図１１】
2014002160.tif 000013
【図１２】
2014002160.tif 000014
【図１３】
2014002160.tif 000015
【図１４】
2014002160.tif 000016
【図１５】
2014002160.tif 000017
【図１６】
2014002160.tif 000018
【図１７】
2014002160.tif 000019
【図１８】
2014002160.tif 000020
【図１９】
2014002160.tif 000021
【図２０】
2014002160.tif 000022
【図２１】
2014002160.tif 000023
【手続補正書】
【提出日】平成26年12月19日(2014.12.19)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００４０
【補正方法】変更
【補正の内容】
【００４０】
次に、アレイコントローラ１０８によるＨＤＤ２１０へのアクセス制御について説明する。
アレイコントローラ１０８は、ディスクアレイ２００に搭載されたＨＤＤ２１０のうちの少なくとも１つを、「ホットスペア（Hot Spare）」と呼ばれる予備用のＨＤＤとして使用する。また、アレイコントローラ１０８は、各ＲＡＩＤグループを構成するＨＤＤ２１０のうち、あらかじめ決められた複数のＨＤＤ２１０における磁気ディスクの回転を停止させる。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００６０
【補正方法】変更
【補正の内容】
【００６０】
ところで、図６の例では、図４の場合と同様に、１台のホットスペアのＨＤＤ２１０ｆが、磁気ディスクの回転が停止されたＨＤＤに書き込むべきデータの一時記憶領域として使用される。この場合、ＲＡＩＤグループを構成するＨＤＤのうち、２台以上のＨＤＤにおける磁気ディスクの回転を停止させることで、消費電力を低減することができる。一方、ＲＡＩＤ６で管理されるＲＡＩＤグループ＃１１では、このＲＡＩＤグループ＃１１を構成するＨＤＤ２１０ａ〜２１０ｅのうち２台の動作を停止させても、ＲＡＩＤグループ＃１１におけるデータは失われない。
【手続補正３】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
それぞれ複数の記憶装置の記憶領域で構成される１つまたは複数の論理記憶領域ごとにデータが異なる記憶装置に冗長化されるように、前記各論理記憶領域へのデータの書き込みを制御するストレージ制御装置において、
前記各論理記憶領域を構成する記憶装置のうち、複数の記憶装置の動作を停止させる動作制御部と、
前記各論理記憶領域を構成する記憶装置のうち、停止中の記憶装置へのデータの書き込みが要求されたとき、書き込みが要求された記憶装置の代わりに、前記各論理記憶領域を構成する記憶装置とは別の予備用記憶装置にデータを書き込み、前記各論理記憶領域を構成する記憶装置のうち動作中の記憶装置と前記予備用記憶装置とによって、前記各論理記憶領域におけるデータの冗長性が保たれるように制御するアクセス制御部と、
を有することを特徴とするストレージ制御装置。
【請求項２】
前記各論理記憶領域を構成する記憶装置のうち、停止中の記憶装置の動作を開始させ、前記予備用記憶装置に格納されたデータごとに、前記各論理記憶領域を構成するいずれかの記憶装置における書き込み位置が登録された書き込み位置情報に基づいて、前記予備用記憶装置に格納されたデータを、対応する前記書き込み位置が示す記憶領域に書き戻す書き戻し制御部をさらに有することを特徴とする請求項１記載のストレージ制御装置。
【請求項３】
前記アクセス制御部は、前記予備用記憶装置に格納されたデータを、対応する前記書き込み位置が示す記憶領域に書き戻す処理が実行されている間に、いずれかの前記論理記憶領域へのデータの書き込みが要求された場合には、書き込みが要求された前記論理記憶領域を構成する記憶装置へデータを書き込むとともに、書き込み先の記憶装置に書き戻すべきデータが前記予備用記憶装置に格納されている場合には、当該データを破棄することを特徴とする請求項２記載のストレージ制御装置。
【請求項４】
前記アクセス制御部は、
前記各論理記憶領域を構成する記憶装置のうち、停止中の記憶装置へのデータの書き込みが要求されたとき、当該停止中の記憶装置への書き込み位置を示す前記書き込み位置情報を、書き込みが要求されたデータに対応付けて前記予備用記憶装置に書き込むとともに、所定の記憶領域にも前記書き込み位置情報を登録し、
前記各論理記憶領域を構成する記憶装置のうち、停止中の同じ記憶装置内の同じアドレスへのデータの書き込みが要求されるたびに、書き込みが要求されたデータとこれに対応付けた前記書き込み位置情報とを前記予備用記憶装置に追記し、
前記書き戻し制御部は、
前記予備用記憶装置に書き込まれたデータおよびこれに対応付けられた前記書き込み位置情報を、前記予備用記憶装置への書き込み順とは逆の順序で読み出し、
読み出した前記書き込み位置情報が前記所定の記憶領域にも登録されている場合には、当該書き込み位置情報に対応付けられたデータを当該書き込み位置情報が示す記憶装置の記憶領域に書き戻すとともに、当該書き込み位置情報を前記所定の記憶領域から削除し、
読み出した前記書き込み位置情報が前記所定の記憶領域に登録されていない場合には、当該書き込み位置情報に対応付けられたデータを破棄する、
ことを特徴とする請求項２記載のストレージ制御装置。
【請求項５】
前記アクセス制御部は、前記予備用記憶装置に格納されたデータを対応する前記書き込み位置が示す記憶領域に書き戻す処理が実行されている間に、いずれかの前記論理記憶領域へのデータの書き込みが要求された場合には、書き込みが要求された前記論理記憶領域を構成する記憶装置へデータを書き込むとともに、当該データの書き込み先を示す前記書き込み位置情報が前記所定の記憶領域に登録されている場合には、当該書き込み位置情報を前記所定の記憶領域から削除することを特徴とする請求項４記載のストレージ制御装置。
【請求項６】
前記所定の記憶領域は揮発性の記憶領域であり、
前記アクセス制御部は、前記所定の記憶領域に登録された前記書き込み位置情報が失われたとき、前記予備用記憶装置からデータに対応付けられた前記書き込み位置情報を読み出して、前記所定の記憶領域に再登録する、
ことを特徴とする請求項４または５記載のストレージ制御装置。
【請求項７】
前記アクセス制御部は、いずれかの前記論理記憶領域に格納されたデータの読み出しが要求されたとき、読み出しが要求された論理記憶領域を構成する記憶装置のうち、動作中の記憶装置からデータを読み出すことを特徴とする請求項１〜６のいずれか１項に記載のストレージ制御装置。
【請求項８】
それぞれ複数の記憶装置の記憶領域で構成される１つまたは複数の論理記憶領域ごとにデータが異なる記憶装置に冗長化されるように、前記各論理記憶領域へのデータの書き込みを制御するストレージ制御装置におけるストレージ制御方法であって、
前記各論理記憶領域を構成する記憶装置のうち、複数の記憶装置の動作を停止させ、
前記各論理記憶領域を構成する記憶装置のうち、停止中の記憶装置へのデータの書き込みが要求されたとき、書き込みが要求された記憶装置の代わりに、前記各論理記憶領域を構成する記憶装置とは別の予備用記憶装置にデータを書き込み、前記各論理記憶領域を構成する記憶装置のうち動作中の記憶装置と前記予備用記憶装置とによって、前記各論理記憶領域におけるデータの冗長性が保たれるように制御する、
ことを特徴とするストレージ制御方法。
【請求項９】
それぞれ複数の記憶装置の記憶領域で構成される１つまたは複数の論理記憶領域ごとにデータが異なる記憶装置に冗長化されるように、前記各論理記憶領域へのデータの書き込みを制御するためのストレージ制御プログラムにおいて、
コンピュータに、
前記各論理記憶領域を構成する記憶装置のうち、複数の記憶装置の動作を停止させ、
前記各論理記憶領域を構成する記憶装置のうち、停止中の記憶装置へのデータの書き込みが要求されたとき、書き込みが要求された記憶装置の代わりに、前記各論理記憶領域を構成する記憶装置とは別の予備用記憶装置にデータを書き込み、前記各論理記憶領域を構成する記憶装置のうち動作中の記憶装置と前記予備用記憶装置とによって、前記各論理記憶領域におけるデータの冗長性が保たれるように制御する、
処理を実行させることを特徴とするストレージ制御プログラム。
【手続補正書】
【提出日】平成27年9月25日(2015.9.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
それぞれ複数の記憶装置の記憶領域で構成される１つまたは複数の論理記憶領域ごとにデータが異なる記憶装置に冗長化されるように、前記各論理記憶領域へのデータの書き込みを制御するストレージ制御装置において、
前記各論理記憶領域を構成する記憶装置のうち、複数の記憶装置の動作を停止させる動作制御部と、
前記各論理記憶領域を構成する記憶装置のうち、停止中の記憶装置へのデータの書き込みが要求されたとき、前記停止中の記憶装置の代わりに、前記各論理記憶領域を構成する記憶装置とは別の予備用記憶装置にデータを書き込み、前記各論理記憶領域を構成する記憶装置のうち動作中の記憶装置と前記予備用記憶装置とによって、前記各論理記憶領域におけるデータの冗長性が保たれるように制御するとともに、前記停止中の記憶装置への書き込み位置を示す書き込み位置情報を、書き込みが要求されたデータに対応付けて前記予備用記憶装置に書き込むのと併せて、所定の記憶領域にも前記書き込み位置情報を登録し、前記停止中の記憶装置内の同じアドレスへのデータの書き込みが要求されるたびに、書き込みが要求されたデータとこれに対応付けた前記書き込み位置情報とを前記予備用記憶装置に追記するアクセス制御部と、
前記停止中の記憶装置の動作を開始させ、前記予備用記憶装置に格納されたデータを、対応する前記書き込み位置が示す記憶領域に書き戻す際に、前記予備用記憶装置に書き込まれたデータおよびこれに対応付けられた前記書き込み位置情報を、前記予備用記憶装置への書き込み順とは逆の順序で読み出し、読み出した前記書き込み位置情報が前記所定の記憶領域にも登録されている場合には、当該書き込み位置情報に対応付けられたデータを当該書き込み位置情報が示す記憶装置の記憶領域に書き戻すとともに、当該書き込み位置情報を前記所定の記憶領域から削除し、読み出した前記書き込み位置情報が前記所定の記憶領域に登録されていない場合には、当該書き込み位置情報に対応付けられたデータを破棄する書き戻し制御部と、
を有することを特徴とするストレージ制御装置。
【請求項２】
前記アクセス制御部は、前記予備用記憶装置に格納されたデータを対応する前記書き込み位置が示す記憶領域に書き戻す処理が実行されている間に、いずれかの前記論理記憶領域へのデータの書き込みが要求された場合には、書き込みが要求された前記論理記憶領域を構成する記憶装置へデータを書き込むとともに、当該データの書き込み先を示す前記書き込み位置情報が前記所定の記憶領域に登録されている場合には、当該書き込み位置情報を前記所定の記憶領域から削除することを特徴とする請求項１記載のストレージ制御装置。
【請求項３】
前記所定の記憶領域は揮発性の記憶領域であり、
前記アクセス制御部は、前記所定の記憶領域に登録された前記書き込み位置情報が失われたとき、前記予備用記憶装置からデータに対応付けられた前記書き込み位置情報を読み出して、前記所定の記憶領域に再登録する、
ことを特徴とする請求項１または２記載のストレージ制御装置。
【請求項４】
前記アクセス制御部は、いずれかの前記論理記憶領域に格納されたデータの読み出しが要求されたとき、読み出しが要求された前記論理記憶領域を構成する記憶装置のうち、動作中の記憶装置からデータを読み出すことを特徴とする請求項１〜３のいずれか１項に記載のストレージ制御装置。
【請求項５】
それぞれ複数の記憶装置の記憶領域で構成される１つまたは複数の論理記憶領域ごとにデータが異なる記憶装置に冗長化されるように、前記各論理記憶領域へのデータの書き込みを制御するストレージ制御装置におけるストレージ制御方法であって、
前記各論理記憶領域を構成する記憶装置のうち、複数の記憶装置の動作を停止させ、
前記各論理記憶領域を構成する記憶装置のうち、停止中の記憶装置へのデータの書き込みが要求されたとき、前記停止中の記憶装置の代わりに、前記各論理記憶領域を構成する記憶装置とは別の予備用記憶装置にデータを書き込み、前記各論理記憶領域を構成する記憶装置のうち動作中の記憶装置と前記予備用記憶装置とによって、前記各論理記憶領域におけるデータの冗長性が保たれるように制御するとともに、前記停止中の記憶装置への書き込み位置を示す書き込み位置情報を、書き込みが要求されたデータに対応付けて前記予備用記憶装置に書き込むのと併せて、所定の記憶領域にも前記書き込み位置情報を登録し、前記停止中の記憶装置内の同じアドレスへのデータの書き込みが要求されるたびに、書き込みが要求されたデータとこれに対応付けた前記書き込み位置情報とを前記予備用記憶装置に追記し、
前記停止中の記憶装置の動作を開始させ、前記予備用記憶装置に格納されたデータを、対応する前記書き込み位置が示す記憶領域に書き戻す際に、前記予備用記憶装置に書き込まれたデータおよびこれに対応付けられた前記書き込み位置情報を、前記予備用記憶装置への書き込み順とは逆の順序で読み出し、読み出した前記書き込み位置情報が前記所定の記憶領域にも登録されている場合には、当該書き込み位置情報に対応付けられたデータを当該書き込み位置情報が示す記憶装置の記憶領域に書き戻すとともに、当該書き込み位置情報を前記所定の記憶領域から削除し、読み出した前記書き込み位置情報が前記所定の記憶領域に登録されていない場合には、当該書き込み位置情報に対応付けられたデータを破棄する、
ことを特徴とするストレージ制御方法。
【請求項６】
それぞれ複数の記憶装置の記憶領域で構成される１つまたは複数の論理記憶領域ごとにデータが異なる記憶装置に冗長化されるように、前記各論理記憶領域へのデータの書き込みを制御するためのストレージ制御プログラムにおいて、
コンピュータに、
前記各論理記憶領域を構成する記憶装置のうち、複数の記憶装置の動作を停止させ、
前記各論理記憶領域を構成する記憶装置のうち、停止中の記憶装置へのデータの書き込みが要求されたとき、前記停止中の記憶装置の代わりに、前記各論理記憶領域を構成する記憶装置とは別の予備用記憶装置にデータを書き込み、前記各論理記憶領域を構成する記憶装置のうち動作中の記憶装置と前記予備用記憶装置とによって、前記各論理記憶領域におけるデータの冗長性が保たれるように制御するとともに、前記停止中の記憶装置への書き込み位置を示す書き込み位置情報を、書き込みが要求されたデータに対応付けて前記予備用記憶装置に書き込むのと併せて、所定の記憶領域にも前記書き込み位置情報を登録し、前記停止中の記憶装置内の同じアドレスへのデータの書き込みが要求されるたびに、書き込みが要求されたデータとこれに対応付けた前記書き込み位置情報とを前記予備用記憶装置に追記し、
前記停止中の記憶装置の動作を開始させ、前記予備用記憶装置に格納されたデータを、対応する前記書き込み位置が示す記憶領域に書き戻す際に、前記予備用記憶装置に書き込まれたデータおよびこれに対応付けられた前記書き込み位置情報を、前記予備用記憶装置への書き込み順とは逆の順序で読み出し、読み出した前記書き込み位置情報が前記所定の記憶領域にも登録されている場合には、当該書き込み位置情報に対応付けられたデータを当該書き込み位置情報が示す記憶装置の記憶領域に書き戻すとともに、当該書き込み位置情報を前記所定の記憶領域から削除し、読み出した前記書き込み位置情報が前記所定の記憶領域に登録されていない場合には、当該書き込み位置情報に対応付けられたデータを破棄する、
処理を実行させることを特徴とするストレージ制御プログラム。
【国際調査報告】
2014002160.tif 000024
2014002160.tif 000025