(57)【要約】【課題】複数の格納対象ブロックからなるブロックグループを複数の記憶装置に分散して格納する記憶システムにおいて、一の記憶装置が故障した場合におけるブロック再生処理のオーバーヘッドを低減する。【解決手段】一の格納対象ブロックは、他の複数の格納対象ブロックを再生するための冗長化ブロックであり、複数の格納対象ブロックのそれぞれと、複数の格納対象ブロックのいずれかを複製した複製ブロックとを、互いに異なる記憶装置に格納するブロック書込部と、複製されていない格納対象ブロックの故障が検出された場合に、複数の格納対象ブロックのうち故障した格納対象ブロック以外のブロックに基づいて、故障した格納対象ブロックを再生するブロック再生部と、再生された格納対象ブロックを、複製ブロック又は複製ブロックの複製元となった格納対象ブロックに上書きする再生ブロック上書部とを備える記憶システムを提供する。【選択図】  図１
2004326357.tif 000002
【特許請求の範囲】
【請求項１】
複数の格納対象ブロックを含むブロックグループを、複数の記憶装置に分散して格納する記憶システムであって、
一の前記格納対象ブロックは、他の複数の前記格納対象ブロックのいずれかが故障した場合に当該格納対象ブロックを再生するための冗長データである冗長化ブロックであり、
複数の記憶装置と、
前記複数の格納対象ブロックのそれぞれと、前記複数の格納対象ブロックのいずれかを複製した複製ブロックとを、互いに異なる前記記憶装置に格納するブロック書込部と、
複製されていない前記格納対象ブロックの故障が検出された場合に、前記複数の格納対象ブロックのうち故障した前記格納対象ブロック以外のブロックに基づいて、故障した前記格納対象ブロックを再生するブロック再生部と、
再生された前記格納対象ブロックを、前記複製ブロック又は前記複製ブロックの複製元となった前記格納対象ブロックに上書きする再生ブロック上書部と
を備える記憶システム。
【請求項２】
前記ブロック書込部は、複数の前記ブロックグループのそれぞれについて、当該ブロックグループに含まれる前記複数の格納対象ブロックのそれぞれと、前記複製ブロックとを互いに異なる前記記憶装置に格納し、
一の前記記憶装置が故障した場合に、前記ブロック再生部は、複製されていない前記格納対象ブロックが前記一の記憶装置に格納されている前記ブロックグループのそれぞれについて、前記複数の格納対象ブロックのうち前記一の記憶装置に格納されている前記格納対象ブロック以外のブロックに基づいて、故障した前記格納対象ブロックを再生し、
前記再生ブロック上書部は、複製されていない前記格納対象ブロックが前記一の記憶装置に格納されている前記ブロックグループのそれぞれについて、再生された前記格納対象ブロックを、前記複製ブロック又は前記複製ブロックの複製元となった前記格納対象ブロックに上書きする
請求項１記載の記憶システム。
【請求項３】
前記ブロック書込部は、前記複数の格納対象ブロックのそれぞれと、前記複数の格納対象ブロックに含まれる前記冗長化ブロックを複製した前記複製ブロックとを、互いに異なる前記記憶装置に格納する請求項１記載の記憶システム。
【請求項４】
前記複数の格納対象ブロックのうち、前記冗長化ブロック以外のブロックであるデータブロックに対して、書込データの書き込みを要求する書込要求を受信する要求受信部と、
書込対象となる前記データブロック、前記書込データ、及び元の前記冗長化ブロックに基づき、新たな前記冗長化ブロックを生成する冗長化ブロック生成部と
を更に備え、
前記ブロック書込部は、書込対象となる前記データブロックに前記書込データを書き込み、元の前記冗長化ブロック及び前記複製ブロックに新たな前記冗長化ブロックを書き込む
請求項３記載の記憶システム。
【請求項５】
前記ブロック書込部は、前記複数の格納対象ブロックのそれぞれと、前記複数の格納対象ブロックのうち前記冗長化ブロック以外のブロックである複数のデータブロックのいずれかを複製した前記複製ブロックとを、互いに異なる前記記憶装置に格納する請求項１記載の記憶システム。
【請求項６】
前記複数の格納対象ブロックのうち、前記冗長化ブロック以外のブロックであるデータブロックに対して、書込データの書き込みを要求する書込要求を受信する要求受信部を更に備え、
前記ブロック書込部は、書込対象となる前記データブロックが前記複製元ブロックである場合に、前記複製元ブロック及び前記複製ブロックのそれぞれに前記書込データを書き込み、書込対象となる前記データブロックが前記複製元ブロックでない場合に、書込対象となる前記データブロックに前記書込データを書き込む
請求項５記載の記憶システム。
【請求項７】
複数の格納対象ブロックを含むブロックグループを、複数の記憶装置に分散して格納する記憶システムの制御装置であって、
一の前記格納対象ブロックは、他の複数の前記格納対象ブロックのいずれかが故障した場合に当該格納対象ブロックを再生するための冗長データである冗長化ブロックであり、
前記複数の格納対象ブロックのそれぞれと、前記複数の格納対象ブロックのいずれかを複製した複製ブロックとを、互いに異なる前記記憶装置に格納するブロック書込部と、
複製されていない前記格納対象ブロックの故障が検出された場合に、前記複数の格納対象ブロックのうち故障した前記格納対象ブロック以外のブロックに基づいて、故障した前記格納対象ブロックを再生するブロック再生部と、
再生された前記格納対象ブロックを、前記複製ブロック又は前記複製ブロックの複製元となった前記格納対象ブロックに上書きする再生ブロック上書部と
を備える制御装置。
【請求項８】
複数の格納対象ブロックを含むブロックグループを、複数の記憶装置に分散して格納する記憶システムの制御方法であって、
一の前記格納対象ブロックは、他の複数の前記格納対象ブロックのいずれかが故障した場合に当該格納対象ブロックを再生するための冗長データである冗長化ブロックであり、
前記複数の格納対象ブロックのそれぞれと、前記複数の格納対象ブロックのいずれかを複製した複製ブロックとを、互いに異なる前記記憶装置に格納するブロック書込段階と、
複製されていない前記格納対象ブロックの故障が検出された場合に、前記複数の格納対象ブロックのうち故障した前記格納対象ブロック以外のブロックに基づいて、故障した前記格納対象ブロックを再生するブロック再生段階と、
再生された前記格納対象ブロックを、前記複製ブロック又は前記複製ブロックの複製元となった前記格納対象ブロックに上書きする再生ブロック上書段階と
を備える制御方法。
【請求項９】
複数の格納対象ブロックを含むブロックグループを、複数の記憶装置に分散して格納する記憶システムを制御するプログラムであって、
一の前記格納対象ブロックは、他の複数の前記格納対象ブロックのいずれかが故障した場合に当該格納対象ブロックを再生するための冗長データである冗長化ブロックであり、
前記記憶システムを、
前記複数の格納対象ブロックのそれぞれと、前記複数の格納対象ブロックのいずれかを複製した複製ブロックとを、互いに異なる前記記憶装置に格納するブロック書込部と、
複製されていない前記格納対象ブロックの故障が検出された場合に、前記複数の格納対象ブロックのうち故障した前記格納対象ブロック以外のブロックに基づいて、故障した前記格納対象ブロックを再生するブロック再生部と、
再生された前記格納対象ブロックを、前記複製ブロック又は前記複製ブロックの複製元となった前記格納対象ブロックに上書きする再生ブロック上書部と
して機能させるプログラム。
【請求項１０】
請求項９に記載のプログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、冗長化ブロックを有する記憶システム、並びに、当該記憶システムの制御装置、制御方法、プログラム、及び記録媒体に関する。特に本発明は、複数の格納対象ブロックを含むブロックグループを、複数の記憶装置に分散して格納し、ブロックグループ中の一の格納対象ブロックが故障した場合においても、他の格納対象ブロックに基づき故障した格納対象ブロックを再生することができる冗長化ブロックを有する記憶システム、並びに、当該記憶システムの制御装置、制御方法、プログラム、及び記録媒体に関する。
【０００２】
【従来の技術】
従来、ハードディスク等の記憶装置のアクセス性能を高めると共に、耐故障性を向上するために、ＲＡＩＤ技術が用いられている。例えば、ＲＡＩＤ５構成においては、複数のデータブロックと、複数のデータブロックのいずれかが故障した場合に故障したデータブロックを再生するための冗長データであるパリティブロックとにより構成される複数の格納対象ブロックを、ブロックグループとして、複数の記憶装置にブロック単位で分散して格納する。例えば、特許文献１は、パリティブロックを複数の記憶装置に分散して格納するＲＡＩＤ５構成を開示する（特許文献１参照。）。
【０００３】
複数の記憶装置のうち一の記憶装置が故障した場合において、格納対象ブロックを再生し、予備のブロックに格納する技術が開示されている（特許文献２参照。）。また、第１及び第２のパリティブロックを設け、書き込み時に第１のパリティブロック又は第２のパリティブロックのいずれか一方を更新することにより、ブロックの書き込みに伴うパリティブロックの更新を第１及び第２のパリティブロックに分散させる技術が開示されている（特許文献３参照。）。
【０００４】
【特許文献１】
特公平５−４７８５７号公報
【特許文献２】
特公平７−２４０３９号公報
【特許文献３】
特開平９−３４６５１号公報
【０００５】
【発明が解決しようとする課題】
特許文献２又は特許文献３に示した技術を用いた場合において、一の記憶装置が故障すると、全てのブロックグループについて失われたブロックを再生し、予備のブロックに書き込む必要が生じる。ここで、一の記憶装置が故障した状態は、更に記憶装置が故障すると記憶システムに格納された情報が失われるクリティカルな状態であるため、ブロックの再生に伴うオーバヘッドを低減することが望ましい。
【０００６】
そこで本発明は、上記の課題を解決することのできる冗長化ブロックを有する記憶システム、並びに、当該記憶システムの制御装置、制御方法、プログラム、及び記録媒体を提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
【０００７】
【課題を解決するための手段】
即ち、本発明の第１の形態によると、複数の格納対象ブロックを含むブロックグループを、複数の記憶装置に分散して格納する記憶システムであって、一の前記格納対象ブロックは、他の複数の前記格納対象ブロックのいずれかが故障した場合に当該格納対象ブロックを再生するための冗長データである冗長化ブロックであり、複数の記憶装置と、前記複数の格納対象ブロックのそれぞれと、前記複数の格納対象ブロックのいずれかを複製した複製ブロックとを、互いに異なる前記記憶装置に格納するブロック書込部と、複製されていない前記格納対象ブロックの故障が検出された場合に、前記複数の格納対象ブロックのうち故障した前記格納対象ブロック以外のブロックに基づいて、故障した前記格納対象ブロックを再生するブロック再生部と、再生された前記格納対象ブロックを、前記複製ブロック又は前記複製ブロックの複製元となった前記格納対象ブロックに上書きする再生ブロック上書部とを備える記憶システム、並びに、当該記憶システムの制御装置、制御方法、プログラム及び記録媒体を提供する。
【０００８】
なお上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションも又発明となりうる。
【０００９】
【発明の実施の形態】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、又実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１０】
図１は、本実施形態に係る記憶システム２０の構成を示す。記憶システム２０は、例えばＲＡＩＤ５等の冗長化ディスクアレイシステムであり、複数の格納対象ブロックを含むブロックグループを、複数の記憶装置３０にブロック単位で分散して格納する。ここで、記憶システム２０は、複数の格納対象ブロックに加え、複数の格納対象ブロックの一部をそれぞれを複製した１又は複数の複製ブロックを含めたブロックグループを、複数の記憶装置３０にブロック単位で分散して格納する。
【００１１】
一の記憶装置３０が故障した場合、各ブロックグループ内の複製ブロックは予備のブロックとして用いられてよい。また、複製ブロックには、故障前に予め複製元の格納対象ブロックが複製されていることから、一の記憶装置に複製元のブロック又は複製ブロックが格納されているブロックグループについては、故障したブロックの再生が不要となり、クリティカルな状態におけるデータ再生処理のオーバヘッドを低減することができる。
【００１２】
記憶システム２０は、情報処理装置１０に接続され、情報処理装置１０からの要求に応じてデータの書き込み及び／又は読み出しを行なう。記憶システム２０は、複数の記憶装置３０と、制御部４０とを備える。
【００１３】
複数の記憶装置３０のそれぞれは、例えばハードディスク等の、データをブロック単位で格納する記憶装置である。複数の記憶装置３０は、複数の格納対象ブロックと、複数の格納対象ブロックの一部をそれぞれ複製した１又は複数の複製ブロックとを含むブロックグループを、ブロック単位で分散して格納する。
【００１４】
複数の格納対象ブロックの一部、例えば本実施形態においては一の格納対象ブロックは、他の複数の格納対象ブロックのいずれかが故障した場合に当該格納対象ブロックを再生するための冗長データである冗長化ブロックである。また、複数の格納対象ブロックのうち、冗長化ブロック以外のブロックは、情報処理装置１０が使用するデータを格納するデータブロックである。
【００１５】
以下本実施形態においては、４つのデータブロックと、１つの冗長化ブロックと、１つの複製ブロックとを一のブロックグループとして、記憶装置３０ａ〜ｆにブロック単位で分散して格納する場合を例として説明する。
【００１６】
制御部４０は、複数の記憶装置３０を制御する。制御部４０は、要求受信部４５と、応答送信部５０と、ブロック書込部５５と、ブロック読出部６０と、故障検出部６５と、ブロック再生部７０と、再生ブロック上書部７５と、冗長化ブロック生成部８０とを有する。
【００１７】
要求受信部４５は、情報処理装置１０からデータブロックの読出要求又は書込要求等のコマンドを受信する。書込要求の場合、要求受信部４５は、書込要求のコマンドと共に、書込データを受信する。応答送信部５０は、コマンドに対する処理結果等の応答を情報処理装置１０に送信する。ここで、応答送信部５０は、読出要求に対する処理結果として、読み出されたデータブロックを情報処理装置１０に送信してよい。
【００１８】
ブロック書込部５５は、ブロックグループ毎に、複数の格納対象ブロックのそれぞれと、複数の格納対象ブロックのいずれかを複製した複製ブロックとを、互いに異なる記憶装置３０に格納する。ブロック読出部６０は、情報処理装置１０からの要求を受けた場合、又は故障した記憶装置３０を交換した場合において新たな記憶装置３０の再構築を行なう場合に、記憶装置３０に格納された読出対象のブロックを読み出す。
【００１９】
故障検出部６５は、記憶装置３０に格納されたブロックがブロック読出部６０により読み出せない場合や、読み出されたブロックにエラーが存在する場合等に、当該ブロックが故障したことを検出する。また、故障検出部６５は、複数の記憶装置３０のうち、いずれか一の記憶装置３０が故障したことを検出する。この場合、故障検出部６５は、当該一の記憶装置３０に格納された全てのブロックが故障したものとして検出する。
【００２０】
ブロック再生部７０は、故障検出部６５により複製されていない格納対象ブロックの故障が検出された場合に、故障した格納対象ブロックが含まれるブロックグループが有する複数の格納対象ブロックのうち、故障した当該格納対象ブロック以外のブロックをブロック読出部６０を介して読み出す。そして、ブロック再生部７０は、これらのブロックに基づいて故障した格納対象ブロックを再生する。再生ブロック上書部７５は、故障検出部６５により再生された格納対象ブロックを、当該ブロックグループ内の複製ブロック、又は、複製ブロックの複製元となった格納対象ブロックである複製元ブロックに上書きする。
【００２１】
冗長化ブロック生成部８０は、要求受信部４５が情報処理装置１０からの書込要求を受信した場合に、ブロック読出部６０を介して読み出した書込対象となるデータブロック及び元の冗長化ブロックと、書込データとに基づき、新たな冗長化ブロックを生成する。ブロック読出部６０が生成した新たな冗長化ブロックは、ブロック書込部５５により記憶装置３０に書き込まれる。
【００２２】
以上に示した記憶システム２０によれば、各ブロックグループについて、複数の格納対象ブロックのそれぞれと、複数の格納対象ブロックのいずれかを複製した複製ブロックとを、互いに異なる記憶装置３０に格納する。そして、ブロックの故障や記憶装置３０の故障により一のブロックが故障した場合、故障したブロックが複製ブロック又は複製元ブロックであった場合にはブロックの再生が不要となる。これにより、ブロックの再生に伴うオーバヘッドを低減することができる。
【００２３】
図２は、本実施形態に係る記憶装置３０に格納されるブロックの配置の一例を示す。ブロック書込部５５は、記憶システム２０に格納される複数のブロックグループのそれぞれについて、当該ブロックグループに含まれる複数の格納対象ブロックのそれぞれと、複数の格納対象ブロックのいずれかを複製した複製ブロックとを、互いに異なる記憶装置３０に格納する。本例において、ブロック書込部５５は、複数のブロックグループのそれぞれについて、当該ブロックグループの複数の格納対象ブロックに含まれる冗長化ブロックを複製し、複製ブロックとして用いる。
【００２４】
例えば、ストライプ１と示したブロックグループは、図中ＤＢ１ａ、ＤＢ１ｂ、ＤＢ１ｃ、及びＤＢ１ｄと示した４つのデータブロックと、図中ＰＢ１と示した冗長化ブロックと、図中ＰＢ１’と示した冗長化ブロックの複製ブロックとを、複数の記憶装置３０に分散して格納する。本例において、冗長化ブロックＰＢ１は、複製ブロックＰＢ１’の複製元となる複製元ブロックである。また、ブロック書込部５５は、複数のブロックグループについて、複製元ブロックＰＢ１、ＰＢ２、…、ＰＢ６及び複製ブロックＰＢ１’、ＰＢ２’、…、ＰＢ６’を、複数の記憶装置３０に分散して格納されるように、インターリーブして格納される。
【００２５】
図３は、本実施形態に係る記憶システム２０における書込処理の流れを示す。まず、要求受信部４５は、ブロックグループに含まれる複数の格納対象ブロックのうち、冗長化ブロック以外のブロックであるデータブロックに対して、書込データの書き込みを要求する書込要求を受信する（Ｓ３００）。書込要求を受信すると、ブロック読出部６０は、書込対象となるデータブロック及び元の冗長化ブロックを読み出す（Ｓ３１０、Ｓ３２０）。
【００２６】
次に、冗長化ブロック生成部８０は、ブロック読出部６０により読み出された書込対象となるデータブロック及び元の冗長化ブロックと、要求受信部４５が受信した書込データとに基づき、新たな冗長化ブロックを生成する（Ｓ３３０）。より具体的には、記憶システム２０がＲＡＩＤ５構成を採る場合、冗長化ブロック生成部８０は、書込対象となるデータブロック、元の冗長化ブロック、及び書込データをビット毎に排他的論理和演算することにより、新たな冗長化ブロックを生成する。次に、ブロック書込部５５は、書込対象となるデータブロックに書き込みデータを書き込み（Ｓ３４０）、元の冗長化ブロック及び複製ブロックに新たな冗長化ブロックを書き込む（Ｓ３５０）。
【００２７】
以上に示した書込処理により、制御部４０は、複数のブロックグループのそれぞれについて、複製ブロックと複製元ブロックである冗長化ブロックとを同一に保つことができる。ここで、ブロック書込部５５は、新たな冗長化ブロックを、冗長化ブロック及び複製ブロックに並列に書き込むことにより、２つの記憶装置３０に新たな冗長化ブロックを書き込む処理時間を低減することができる。
【００２８】
図４は、図２において、記憶装置３０ｂが故障した状態を示す。図４に示す様に、一の記憶装置３０が故障すると、当該記憶装置３０に格納された全てのブロックが読み出し不可能となる。このため、故障検出部６５は、当該記憶装置３０に格納された全てのブロックが故障したものとして検出する。
ここで、図２に示す様に、ブロック書込部５５は、複数の複製元ブロック及び複製ブロックをインターリーブして格納する。このため、記憶装置３０ｂの故障に伴い、ストライプ１、２、３、及び６についてはデータブロックが故障し、ストライプ４については複製元ブロックが故障し、ストライプ５については、複製ブロックが故障する。
【００２９】
図５は、本実施形態に係る記憶システム２０における再構築処理の流れを、記憶装置３０が故障した場合について示す。
まず、故障検出部６５は、記憶装置３０の故障を検出する（Ｓ５００）。故障を検出した場合、制御部４０は、記憶システム２０が格納する複数のブロックグループのそれぞれについて、Ｓ５２０、Ｓ５３０、Ｓ５４０、及びＳ５５０からなるループ処理を行なう（Ｓ５１０、Ｓ５６０）。
【００３０】
ループ処理により再構築の対象となったブロックグループにおいて、複製されていない格納対象ブロックが故障したものとして検出された場合（Ｓ５２０のＹＥＳ）、ブロック再生部７０は、複数の格納対象ブロックのうち故障した格納対象ブロック以外のブロックをブロック読出部６０を介して記憶装置３０からそれぞれ読み出し、読み出したブロックに基づいて故障した格納対象ブロックを再生する（Ｓ５４０）。次に、再生ブロック上書部７５は、再生された格納対象ブロックを、複製ブロック又は複製元ブロックに上書きする（Ｓ５５０）。
【００３１】
以上の処理により、一の記憶装置３０が故障した場合に、ブロック再生部７０は、複製されていない格納対象ブロックが当該記憶装置３０に格納されているブロックグループのそれぞれについて、複数の格納対象ブロックのうち当該記憶装置３０に格納されている格納対象ブロック以外のブロックに基づいて、故障した格納対象ブロックを再生する。そして、再生ブロック上書部７５は、複製されていない格納対象ブロックが当該記憶装置３０に格納されているブロックグループのそれぞれについて、再生された格納対象ブロックを、複製ブロック又は複製元の格納対象ブロックに上書きすることができる。
【００３２】
ここで、一の記憶装置３０が故障した場合において記憶システム２０の全ブロックグループを再構築する処理のオーバヘッドは、次の様に見積もることができる。本実施形態に係る記憶システム２０においては、全ブロックグループのうち、複製されていない格納対象ブロックが故障した記憶装置３０に格納されているブロックグループのそれぞれについて、故障した格納対象ブロックの再生を行なう。一方、複製元ブロック又は複製ブロックの一方が故障した記憶装置３０に格納されているブロックグループについては、故障したブロックの再生が不要となる。従って、複製ブロック及び複製元ブロックが複数の記憶装置３０に均一にインターリーブされている場合、記憶装置の数をＮ、ブロックグループ当たりの複製ブロックの数を１とすると、全ブロックグループのうち、再生を行なうブロックグループの比率は（Ｎ−２）／Ｎとなる。
【００３３】
一方、複製ブロックを持たず、予備のブロックを有する特許文献２の記憶システムにおいては、全ブロックグループのうち、故障した記憶装置３０に予備のブロックが格納されているブロックグループについて、故障したブロックの再生が不要となる。従って、全ブロックグループのうち、再生を行なうブロックグループの比率は（Ｎ−１）／Ｎとなる。
【００３４】
以上により、上記の例において、本実施形態に係る記憶システム２０によれば、予備のブロックを用いる記憶システムと比較し再構築処理において再生を行なうブロックグループの数を（Ｎ−２）／（Ｎ−１）に削減することができる。ここで、故障した記憶装置３０を再構築するために複数の記憶装置３０に発行されるＩ／Ｏ命令の数は、再生を行なうブロックグループの数と比例する。このため、記憶システムが単位時間に処理可能なＩ／Ｏ命令数が同一である場合、上記の例においては、本実施形態に係る記憶システム２０により、再構築処理の性能を（Ｎ−１）／（Ｎ−２）倍に高めることができる。
【００３５】
図６は、図４において、ブロックを再構築した後のブロック配置の一例を示す。図中（）で示したブロックは、再構築により再生されたブロックである。
記憶装置３０ｂが故障した場合、ブロック再生部７０は、複製されていない格納対象ブロックが記憶装置３０ｂに格納されているストライプ１、２、３、及び６のそれぞれについて、複数の格納対象ブロックのうち記憶装置３０ｂに格納されているブロック以外のブロックに基づいて、故障した格納ブロックを再生する。そして、再生ブロック上書部７５は、再生された格納対象ブロックを、複製ブロック又は複製元ブロックに上書きする。
【００３６】
すなわち例えば、ストライプ１においては、ブロック再生部７０は、ＤＢ１ａ、ＤＢ１ｃ、ＤＢ１ｄ、及び、複製ブロックＰＢ１に基づいて、故障したＤＢ１ｂを再生する。そして、再生ブロック上書部７５は、再生されたＤＢ１ｂを、記憶装置３０ｅ内の複製元ブロックＰＢ１又は記憶装置３０ｆ内の複製ブロックＰＢ１’に上書きする。なお、図６においては、再生されたＤＢ１ｂを、複製ブロックＰＢ１’に上書きした状態を示す。
【００３７】
ブロックを再構築することにより、制御部４０は、複数のブロックグループのそれぞれについて、全ての格納対象ブロックが故障していない記憶装置３０に格納された状態とすることができる。ここで、故障した記憶装置３０に複製元ブロック又は複製ブロックが格納されているブロックグループについては、故障したブロックの再生が不要となるため、データ再生処理のオーバヘッドを低減することができる。
【００３８】
図７は、図６において、記憶装置３０ｂを交換した後ブロックを再書込みした状態の一例を示す。
故障した記憶装置３０が新たな記憶装置３０に交換されると、制御部４０は、複数のブロックグループのそれぞれについて、再生された格納対象ブロック、又は、故障により失われた複製ブロック若しくは複製元ブロックをブロック読出部６０により読み出し、ブロック書込部５５により記憶装置３０ｂに書き戻す。この処理により書き戻されたブロックを、図中［］により示す。
【００３９】
この後制御部４０は、複数のブロックグループのうち、再生された格納対象ブロックを有するブロックグループのそれぞれについて、ブロック読出部６０により冗長化ブロックを読み出して、ブロック書込部５５により再生された格納対象ブロックに上書きし、図２に示したブロック配置に復旧させる。
【００４０】
以上に示した様に、故障した記憶装置３０が新たな記憶装置３０に交換された場合に、制御部４０は、まず全てのブロックグループのそれぞれについて、再生された格納対象ブロック、又は、故障により失われた複製ブロック若しくは複製元ブロックを記憶装置３０ｂに書き戻す。この状態において一の記憶装置３０が別途故障した場合においても、複数のブロックグループのそれぞれについて、最大で１の格納対象ブロックの内容が失われるのみであり、他の記憶装置３０が格納するブロックに基づいて故障した記憶装置３０に格納されたブロックを再生可能である。従って、新たな記憶装置３０に交換された場合に、より早くクリティカルな状態を脱することができる。
【００４１】
図８は、本実施形態の変形例に係る記憶装置３０に格納されるブロックの配置の一例を示す。本変形例において、ブロック書込部５５は、記憶システム２０に格納される複数のブロックグループのそれぞれについて、当該ブロックグループに含まれる複数の格納部ロックのそれぞれと、複数の格納対象ブロックのうち冗長化ブロック以外のブロックである複数のデータブロックのいずれかを複製した複製ブロックとを、互いに異なる記憶装置３０に格納する。
【００４２】
例えば、ストライプ１と示したブロックグループは、図中ＤＢ１ａ、ＤＢ１ｂ、ＤＢ１ｃ、及びＤＢ１ｄと示した４つのデータブロックと、図中ＰＢ１と示した冗長化ブロックと、図中ＤＢ１ａ’と示したデータブロックＤＢ１ａの複製ブロックとを、複数の記憶装置３０に分散して格納する。
【００４３】
図９は、本実施形態の変形例に係る記憶システム２０における書込処理の流れを示す。
Ｓ９００、Ｓ９１０、Ｓ９２０、及びＳ９３０は、図３のＳ３００、Ｓ３１０、Ｓ３２０、及びＳ３３０とそれぞれ同様の処理であるため説明を省略する。
【００４４】
書込対象となるデータブロックが複製元ブロックである場合（Ｓ９４０のＹｅｓ）、ブロック書込部５５は、複製元ブロック及び複製ブロックのそれぞれに書込データを書き込む（Ｓ９５０）。一方、書込対象となるデータブロックが複製元ブロックでない場合（Ｓ９４０のＮｏ）、ブロック書込部５５は、書込対象となるデータブロックに書込データを書き込む（Ｓ９６０）。そして、ブロック書込部５５は、元の冗長化ブロックに新たな冗長化ブロックを書き込む（Ｓ９７０）。
【００４５】
以上に示した記憶システム２０によれば、書込対象となるデータブロックが複製元ブロックでない場合に、書込データを当該データブロックに書き込むと共に、冗長化ブロックを更新するのみで、複製元ブロックと複製ブロックとを同一に保つことができる。これにより、冗長化ブロックを複製元ブロックとした場合と比較し、複数の記憶装置３０に対するブロック書込部５５の書き込み回数を低減することができる。
【００４６】
図１０は、図８において記憶装置３０ｂが故障し、ブロックを再構築した後のブロック配置の一例を示す。図中（）で示したブロックは、再構築により再生されたブロックである。
本変形例において一の記憶装置３０が故障した場合、制御部４０は、図５に示した再構築処理により、複数の格納対象ブロックのうち故障していない格納対象ブロックに基づいて、故障した格納対象ブロックを再生し、複製元ブロック又は複製ブロックに上書きする。例えば記憶装置３０ｂが故障した場合、再生ブロック上書部７５は、図１０に示す様に、複製されていない格納対象ブロックが記憶装置３０ｂに格納されているストライプ１から４のそれぞれについて、複製されていないデータブロック又は冗長化ブロックを再生する。そして、再生ブロック上書部７５は、再生されたデータブロック又は冗長化ブロックを、複製元ブロック又は複製ブロックの一方（本例においては複製ブロック）に上書きする。
【００４７】
本変形例によれば、一の記憶装置３０が故障した場合において、記憶システム２０は、冗長化ブロックを複製する場合と同様にして再構築することにより、全ての格納対象ブロックが故障していない記憶装置３０に格納された状態とすることができる。ここで、故障した記憶装置３０に複製元ブロック又は複製ブロックが格納されているブロックグループについては、故障したブロックの再生が不要となるため、データ再生処理のオーバヘッドを低減することができる。
【００４８】
図１１は、本実施形態に係る情報処理装置１０のハードウェア構成の一例を示す。本実施形態に係る情報処理装置１０は、ホスト・コントローラ１１８２により相互に接続されるＣＰＵ１１００、ＲＡＭ１１２０、グラフィック・コントローラ１１７５、及び表示装置１１８０を有するＣＰＵ周辺部と、入出力コントローラ１１８４によりホスト・コントローラ１１８２に接続される通信インターフェイス１１３０、ハードディスク・ドライブ１１４０、及びＣＤ−ＲＯＭドライブ１１６０を有する入出力部と、入出力コントローラ１１８４に接続されるＲＯＭ１１１０、フレキシブルディスク・ドライブ１１５０、及び入出力チップ１１７０を有するレガシー入出力部とを備える。
【００４９】
ホスト・コントローラ１１８２は、ＲＡＭ１１２０と、高い転送レートでＲＡＭ１１２０をアクセスするＣＰＵ１１００及びグラフィック・コントローラ１１７５とを接続する。ＣＰＵ１１００は、ＲＯＭ１１１０及びＲＡＭ１１２０に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィック・コントローラ１１７５は、ＣＰＵ１１００等がＲＡＭ１１２０内に設けたフレーム・バッファ上に生成する画像データを取得し、表示装置１１８０上に表示させる。これに代えて、グラフィック・コントローラ１１７５は、ＣＰＵ１１００等が生成する画像データを格納するフレーム・バッファを、内部に含んでもよい。
【００５０】
入出力コントローラ１１８４は、ホスト・コントローラ１１８２と、比較的高速な入出力装置である通信インターフェイス１１３０、ハードディスク・ドライブ１１４０、ＣＤ−ＲＯＭドライブ１１６０を接続する。通信インターフェイス１１３０は、ネットワークを介して記憶システム２０や他の装置と通信する。ハードディスク・ドライブ１１４０は、情報処理装置１０内のＣＰＵ１１００が使用するプログラム及びデータを格納する。ＣＤ−ＲＯＭドライブ１１６０は、ＣＤ−ＲＯＭ１１９５からプログラム又はデータを読み取り、入出力コントローラ１１８４及び通信インターフェイス１１３０を介して記憶システム２０に提供する。
【００５１】
また、入出力コントローラ１１８４には、ＲＯＭ１１１０と、フレキシブルディスク・ドライブ１１５０や入出力チップ１１７０等の比較的低速な入出力装置とが接続される。ＲＯＭ１１１０は、情報処理装置１０００が起動時に実行するブート・プログラムや、情報処理装置１０のハードウェアに依存するプログラム等を格納する。フレキシブルディスク・ドライブ１１５０は、フレキシブルディスク１１９０からプログラム又はデータを読み取り、入出力コントローラ１１８４及び通信インターフェイス１１３０を介して記憶システム２０に提供する。入出力チップ１１７０は、フレキシブルディスク１１９０や、例えばパラレル・ポート、シリアル・ポート、キーボード・ポート、マウス・ポート等を介して各種の入出力装置を接続する。
【００５２】
ＲＡＭ１１２０を介して記憶システム２０に提供されるプログラムは、フレキシブルディスク１１９０、ＣＤ−ＲＯＭ１１９５、又はＩＣカード等の記録媒体に格納されて利用者によって提供される。プログラムは、記録媒体から読み出され、入出力コントローラ１１８４及び通信インターフェイス１１３０を介して記憶システム２０内の制御部４０にインストールされ、制御部４０において実行される。
【００５３】
記憶システム２０内の制御部４０にインストールされて実行されるプログラムは、記憶システム２０内の制御部４０を、要求受信モジュールと、応答送信モジュールと、ブロック書込モジュールと、ブロック読出モジュールと、故障検出モジュールと、ブロック再生モジュールと、再生ブロック上書モジュールと、冗長化ブロック生成モジュールとを、要求受信部４５、応答送信部５０、ブロック書込部５５、ブロック読出部６０、故障検出部６５、ブロック再生部７０、再生ブロック上書部７５及び冗長化ブロック生成部８０としてそれぞれ機能させる。
【００５４】
以上に示したプログラム又はモジュールは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク１１９０、ＣＤ−ＲＯＭ１１９５の他に、ＤＶＤやＰＤ等の光学記録媒体、ＭＤ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はＲＡＭ等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムを記憶システム２０に提供してもよい。
【００５５】
以上、本発明を実施形態を用いて説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されない。上記実施形態に、多様な変更または改良を加えることができる。そのような変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【００５６】
以上に説明した実施形態によれば、以下の各項目に示す冗長化ブロックを有する記憶システム、並びに、当該記憶システムの制御装置、制御方法、プログラム、及び記録媒体が実現される。
【００５７】
（項目１）  複数の格納対象ブロックを含むブロックグループを、複数の記憶装置に分散して格納する記憶システムであって、一の前記格納対象ブロックは、他の複数の前記格納対象ブロックのいずれかが故障した場合に当該格納対象ブロックを再生するための冗長データである冗長化ブロックであり、複数の記憶装置と、前記複数の格納対象ブロックのそれぞれと、前記複数の格納対象ブロックのいずれかを複製した複製ブロックとを、互いに異なる前記記憶装置に格納するブロック書込部と、複製されていない前記格納対象ブロックの故障が検出された場合に、前記複数の格納対象ブロックのうち故障した前記格納対象ブロック以外のブロックに基づいて、故障した前記格納対象ブロックを再生するブロック再生部と、再生された前記格納対象ブロックを、前記複製ブロック又は前記複製ブロックの複製元となった前記格納対象ブロックに上書きする再生ブロック上書部とを備える記憶システム。
【００５８】
（項目２）  前記ブロック書込部は、複数の前記ブロックグループのそれぞれについて、当該ブロックグループに含まれる前記複数の格納対象ブロックのそれぞれと、前記複製ブロックとを互いに異なる前記記憶装置に格納し、一の前記記憶装置が故障した場合に、前記ブロック再生部は、複製されていない前記格納対象ブロックが前記一の記憶装置に格納されている前記ブロックグループのそれぞれについて、前記複数の格納対象ブロックのうち前記一の記憶装置に格納されている前記格納対象ブロック以外のブロックに基づいて、故障した前記格納対象ブロックを再生し、前記再生ブロック上書部は、複製されていない前記格納対象ブロックが前記一の記憶装置に格納されている前記ブロックグループのそれぞれについて、再生された前記格納対象ブロックを、前記複製ブロック又は前記複製ブロックの複製元となった前記格納対象ブロックに上書きする項目１記載の記憶システム。
【００５９】
（項目３）  前記ブロック書込部は、前記複数の格納対象ブロックのそれぞれと、前記複数の格納対象ブロックに含まれる前記冗長化ブロックを複製した前記複製ブロックとを、互いに異なる前記記憶装置に格納する項目１記載の記憶システム。
（項目４）  前記複数の格納対象ブロックのうち、前記冗長化ブロック以外のブロックであるデータブロックに対して、書込データの書き込みを要求する書込要求を受信する要求受信部と、書込対象となる前記データブロック、前記書込データ、及び元の前記冗長化ブロックに基づき、新たな前記冗長化ブロックを生成する冗長化ブロック生成部とを更に備え、前記ブロック書込部は、書込対象となる前記データブロックに前記書込データを書き込み、元の前記冗長化ブロック及び前記複製ブロックに新たな前記冗長化ブロックを書き込む項目３記載の記憶システム。
【００６０】
（項目５）  前記ブロック書込部は、前記複数の格納対象ブロックのそれぞれと、前記複数の格納対象ブロックのうち前記冗長化ブロック以外のブロックである複数のデータブロックのいずれかを複製した前記複製ブロックとを、互いに異なる前記記憶装置に格納する項目１記載の記憶システム。
（項目６）  前記複数の格納対象ブロックのうち、前記冗長化ブロック以外のブロックであるデータブロックに対して、書込データの書き込みを要求する書込要求を受信する要求受信部を更に備え、前記ブロック書込部は、書込対象となる前記データブロックが前記複製元ブロックである場合に、前記複製元ブロック及び前記複製ブロックのそれぞれに前記書込データを書き込み、書込対象となる前記データブロックが前記複製元ブロックでない場合に、書込対象となる前記データブロックに前記書込データを書き込む項目５記載の記憶システム。
【００６１】
（項目７）  複数の格納対象ブロックを含むブロックグループを、複数の記憶装置に分散して格納する記憶システムの制御装置であって、一の前記格納対象ブロックは、他の複数の前記格納対象ブロックのいずれかが故障した場合に当該格納対象ブロックを再生するための冗長データである冗長化ブロックであり、前記複数の格納対象ブロックのそれぞれと、前記複数の格納対象ブロックのいずれかを複製した複製ブロックとを、互いに異なる前記記憶装置に格納するブロック書込部と、複製されていない前記格納対象ブロックの故障が検出された場合に、前記複数の格納対象ブロックのうち故障した前記格納対象ブロック以外のブロックに基づいて、故障した前記格納対象ブロックを再生するブロック再生部と、再生された前記格納対象ブロックを、前記複製ブロック又は前記複製ブロックの複製元となった前記格納対象ブロックに上書きする再生ブロック上書部とを備える制御装置。
【００６２】
（項目８）  複数の格納対象ブロックを含むブロックグループを、複数の記憶装置に分散して格納する記憶システムの制御方法であって、一の前記格納対象ブロックは、他の複数の前記格納対象ブロックのいずれかが故障した場合に当該格納対象ブロックを再生するための冗長データである冗長化ブロックであり、前記複数の格納対象ブロックのそれぞれと、前記複数の格納対象ブロックのいずれかを複製した複製ブロックとを、互いに異なる前記記憶装置に格納するブロック書込段階と、複製されていない前記格納対象ブロックの故障が検出された場合に、前記複数の格納対象ブロックのうち故障した前記格納対象ブロック以外のブロックに基づいて、故障した前記格納対象ブロックを再生するブロック再生段階と、再生された前記格納対象ブロックを、前記複製ブロック又は前記複製ブロックの複製元となった前記格納対象ブロックに上書きする再生ブロック上書段階とを備える制御方法。
【００６３】
（項目９）  複数の格納対象ブロックを含むブロックグループを、複数の記憶装置に分散して格納する記憶システムを制御するプログラムであって、一の前記格納対象ブロックは、他の複数の前記格納対象ブロックのいずれかが故障した場合に当該格納対象ブロックを再生するための冗長データである冗長化ブロックであり、前記記憶システムを、前記複数の格納対象ブロックのそれぞれと、前記複数の格納対象ブロックのいずれかを複製した複製ブロックとを、互いに異なる前記記憶装置に格納するブロック書込部と、複製されていない前記格納対象ブロックの故障が検出された場合に、前記複数の格納対象ブロックのうち故障した前記格納対象ブロック以外のブロックに基づいて、故障した前記格納対象ブロックを再生するブロック再生部と、再生された前記格納対象ブロックを、前記複製ブロック又は前記複製ブロックの複製元となった前記格納対象ブロックに上書きする再生ブロック上書部として機能させるプログラム。
（項目１０）  項目９に記載のプログラムを記録した記録媒体。
【００６４】
【発明の効果】
上記説明から明らかなように、本発明によれば、複数の格納対象ブロックからなるブロックグループの複数を複数の記憶装置に分散して格納する記憶システムにおいて、一の記憶装置が故障した場合におけるブロック再生処理のオーバーヘッドを低減することができる。
【図面の簡単な説明】
【図１】本発明の実施形態に係る記憶システム２０の構成を示す。
【図２】本発明の実施形態に係る記憶装置３０に格納されるブロックの配置の一例を示す。
【図３】本発明の実施形態に係る記憶システム２０における書込処理の流れを示す。
【図４】図２において、記憶装置３０ｂが故障した状態を示す。
【図５】本発明の実施形態に係る記憶システム２０における再構築処理の流れを示す。
【図６】図４において、ブロックを再構築した後のブロック配置の一例を示す。
【図７】図６において、記憶装置３０ｂを交換した後ブロックを再書込みした状態を示す。
【図８】本発明の実施形態の変形例に係る記憶装置３０に格納されるブロックの配置の一例を示す。
【図９】本発明の実施形態の変形例に係る記憶システム２０における書込処理の流れを示す。
【図１０】図８において記憶装置３０ｂが故障し、ブロックを再構築した後のブロック配置の一例を示す。
【図１１】本発明の実施形態に係る情報処理装置１０のハードウェア構成の一例を示す。
【符号の説明】
１０  情報処理装置
２０  記憶システム
３０ａ〜ｆ  記憶装置
４０  制御部
４５  要求受信部
５０  応答送信部
５５  ブロック書込部
６０  ブロック読出部
６５  故障検出部
７０  ブロック再生部
７５  再生ブロック上書部
８０  冗長化ブロック生成部
１１００  ＣＰＵ
１１１０  ＲＯＭ
１１２０  ＲＡＭ
１１３０  通信インターフェイス
１１４０  ハードディスク・ドライブ
１１５０  フレキシブルディスク・ドライブ
１１６０  ＣＤ−ＲＯＭドライブ
１１７０  入出力チップ
１１７５  グラフィック・コントローラ
１１８０  表示装置
１１８２  ホスト・コントローラ
１１８４  入出力コントローラ
１１９０  フレキシブルディスク
１１９５  ＣＤ−ＲＯＭ
【図１】
2004326357.tif 000003
【図２】
2004326357.tif 000004
【図３】
2004326357.tif 000005
【図４】
2004326357.tif 000006
【図５】
2004326357.tif 000007
【図６】
2004326357.tif 000008
【図７】
2004326357.tif 000009
【図８】
2004326357.tif 000010
【図９】
2004326357.tif 000011
【図１０】
2004326357.tif 000012
【図１１】
2004326357.tif 000013