(58)【調査した分野】(Int.Cl.,DB名)
複数の記憶装置を用いて構成された複数の記憶域プールにおいて、データを保存する領域を追加するための予備記憶装置を組み込む前記記憶域プールを判定する判定手段と、
判定された前記記憶域プールに前記予備記憶装置を組み込む管理手段と、
前記記憶装置及び前記予備記憶装置における障害状態に対応して前記記憶装置及び前記予備記憶装置に保存されているデータを保存する予備領域を、前記記憶装置及び前記予備記憶装置に分散して配置させる配置手段とを含み、
前記管理手段が、前記予備記憶装置を前記記憶域プールに組み込む際に前記配置手段に前記予備領域の配置を依頼し、
前記判定手段が、
前記記憶装置の前記障害状態を基に前記予備記憶装置を組み込む前記記憶域プールを判定する
管理装置。
【発明を実施するための形態】
【0019】
次に、本発明の実施形態について図面を参照して説明する。
【0020】
なお、各図面は、本発明の実施形態を説明するためのものである。ただし、本発明は、各図面の記載に限られるわけではない。また、各図面の同様の構成には、同じ番号を付し、その繰り返しの説明を、省略する場合がある。また、以下の説明に用いる図面において、本発明の説明に関係しない部分の構成については、記載を省略し、図示しない場合もある。
【0021】
以下の説明において、各実施形態として、ホストと接続されて、HDD又はSDDなどの複数の記憶装置を管理する管理装置を用いて説明する。例えば、管理装置は、ディスクアレイの制御装置である。ただし、各実施形態は、ディスクアレイに限定されない。
【0022】
<第1の実施形態>
以下、図面を参照して、本発明における第1の実施形態について説明する。
【0023】
第1の実施形態に係る管理装置10は、図示しないホストと記憶装置との間におけるデータの送信及び受信を管理する。さらに、管理装置10は、複数の記憶装置から構成された記憶域プールを管理する。
【0024】
[構成の説明]
まず、図面を参照して、第1の実施形態に係る管理装置10の構成を説明する。
【0025】
図1は、第1の実施形態に係る管理装置10の構成の一例を示すブロック図である。
【0026】
図1に示されているように、管理装置10は、ホスト処理部130と、キャッシュ制御部140と、管理部150と、キャッシュ160と、記憶装置制御部170と、判定部190と、配置部110とを含む。
【0027】
ホスト処理部130は、ホストからコマンドを受信する。そして、ホスト処理部130は、コマンドに対応した処理を実行する。
【0028】
ホスト処理部130は、ホストからライトコマンドを受信した場合、キャッシュ制御部140を介してキャッシュ160にライトデータを格納し、ホストにコマンドの終了を報告する。そして、ホスト処理部130は、管理部150に、キャッシュ160に格納したデータの記憶装置への書き込みを依頼する。
【0029】
あるいは、ホスト処理部130は、ホストからリードコマンドを受信した場合、管理部150、記憶装置制御部170、及び/又はキャッシュ制御部140を介して記憶装置からキャッシュ160にデータを読み出し、読み出したデータをホストに送信する。
【0030】
このように、ホスト処理部130は、ホストとキャッシュ160とのデータの転送を処理する。
【0031】
キャッシュ制御部140は、キャッシュ160におけるデータの格納動作を制御する。より詳細には、キャッシュ制御部140は、キャッシュ160に格納されるデータのアドレスを管理する。
【0032】
キャッシュ160は、キャッシュ制御部140に制御されてデータを格納する。さらに、キャッシュ160は、キャッシュ制御部140に制御されて、ホスト処理部130からホストのデータを受信し、ホスト処理部130にホストのデータを送信する。あるいは、キャッシュ160は、キャッシュ制御部140に制御されて、記憶装置制御部170を介して記憶装置にデータを送信し、記憶装置制御部170を介して記憶装置からデータを受信する。
【0033】
記憶装置制御部170は、管理部150の依頼を基に、キャッシュ160と記憶装置とのデータ転送を制御及び仲介する。
【0034】
管理部150は、記憶装置制御部170を用いて、記憶装置を管理する。具体的には、管理部150は、ホストから受信したデータを保存する記憶装置を管理している。
【0035】
さらに、管理部150は、記憶装置の管理として、複数の記憶装置を用いて構成された記憶域プールを用いて、複数の記憶装置を管理する。
【0036】
なお、本実施形態において、記憶域プールは、後ほど説明するように、予備記憶装置を含む場合と、含まない場合とがある。
【0037】
さらに、管理部150は、判定部190の判定を基に、記憶域プールにおける予備記憶装置の組み込みと解放を管理する。予備記憶装置とは、記憶域プールにおけるデータを保存する領域を追加するための記憶装置である。
【0038】
管理部150は、予備記憶装置の組み込みにおいて、配置部110に予備領域の配置を依頼する。また、管理部150は、予備記憶装置の解放において、配置部110に予備領域の解放を依頼する。予備領域とは、記憶装置及び/又は予備記憶装置の障害に対応して、障害が発生した記憶装置及び/又は予備記憶装置に保存されているデータを保存する領域である。
【0039】
なお、領域とは、記憶装置においてデータを記録する単位である。本実施形態において、領域の大きさは、任意である。例えば、各領域は、記憶装置における処理の最小単位(例えば、セクタ)でもよく、複数の処理単位(例えば、4セクタ、又は8セクタ)でもよい。
【0040】
さらに、管理部150は、記憶装置の障害(エラー)などに基づく記憶域プールにおける縮退(REDUCTION)を管理する。
【0041】
判定部190は、予備記憶装置を組み込む記憶域プールを判定する。
【0042】
例えば、管理装置10が予備記憶装置を容量追加のために用いる場合、判定部190は、残り容量(未使用の容量)が所定の値より少ない記憶域プールを、予備記憶装置を組み込む記憶域プールと判定してもよい。
【0043】
あるいは、管理装置10が予備記憶装置を障害時の退避用記憶装置として追加する場合、判定部190は、記憶域プールに含まれる記憶装置の障害状態に対応して、予備記憶装置を組み込む記憶域プールを判定してもよい。
【0044】
以下では、一例として、記憶装置の障害状態に対応した場合を説明する。ただし、本実施形態は、以下の説明に限定されない。
【0045】
判定部190は、記憶域プールに含まれる記憶装置の障害状態を監視する。例えば、判定部190は、記憶装置制御部170を介して記憶装置の障害状態を取得する。そして、判定部190は、取得した障害状態を基に、各記憶域プールの状態(以下、「プール状態」と呼ぶ)を算出する。そして、判定部190は、プール状態を基に、予備記憶装置を組み込む記憶域プールを判定する。
【0046】
図2は、障害状態の一例を示す図である。
図2の第1列が、記憶域プールを示す。第2列が、各記憶域プールに含まれる記憶装置を示す。そして、第3列から第5列が、各記憶装置における障害状態(ERROR STATE)を示す。つまり、
図2の各行が、記憶域プール(POOL#0など)に含まれる各記憶装置(PD#00など)における障害状態である。
図2は、障害状態の一例として、エラーの回数を示している。例えば、1行目は、記憶域プール(POOL#0)の記憶装置(PD#00)における3種類のエラーの回数である。具体的な回数は、次のとおりである。
(1)チェック条件(CHECK CONDITION):PC00[回]
(2)タイムアウト(TIMEOUT):PT00[回]
(3)その他のエラー(OTHER ERROR):PE00[回]
第6列が、判定部190が判定した各記憶域プールにおけるプール状態(State#0など)である。
【0047】
そして、判定部190は、プール状態を基に、予備記憶装置を組み込む記憶域プールを判定する。例えば、判定部190は、プール状態としてエラーの合計数を用いる場合、エラーの合計数が多い記憶域プールから予備記憶装置の数の記憶域プールを、予備記憶装置を組み込む記憶域プールと判定する。
【0048】
ただし、障害は、システムに与える影響の程度が異なる。そこで、判定部190は、障害の影響に対応するように、障害に対応した重みを用いて、プール状態を算出してもよい。
【0049】
例えば、
図2に示されている3種類のエラーに対する重みを「WC」、「WT」、及び「WE」とする。詳細には、CHECK CONDITIONに対応する重みをWC、TIMEOUTに対応する重みをWT、OTHER ERRORに対応する重みをWEとする。
【0050】
そして、判定部190は、各エラーに対して上記重みを用いた算出式を用いて、プール状態を算出する。例えば、
図2の一番上の記憶域プール(POOL#0)のプール状態(State#0)は、次のように算出される。
State#0=WC×(PC00+PC01+・・・+PC0n)+WT×(PT00+PT01+・・・+OT0n)+WE×(PE00+PE01+・・・+PE0n)
障害が多く発生している記憶域プールは、縮退する可能性が高い。そのため、上記のように障害状態を用いて算出されたプール状態は、記憶域プールが縮退となる可能性を示す指標の一例である。以下の説明において、「指標」とは、記憶域プールが縮退となる可能性を示す値とする。指標は、縮退の可能性が大きいほど、大きな値となる。ただし、指標は、縮退の可能性が高いほど、小さくなる値でもよい。このような指標を用いる場合、以下の判断において、「大きい」を「小さい」に置き換えればよい。
【0051】
なお、指標は、上記の式に限定されない。指標は、例えば、合計数に限らず、算術平均などの記憶装置に数に関連しない値でもよいし、現在から所定時間前までのエラー回数を用いるなど時間を考慮した値でもよい。
【0052】
判定部190は、全ての記憶域プールに対して、上記のような式を用いて指標(縮退となる可能性)を算出する。そして、判定部190は、算出した指標の値が大きい方から予備記憶装置の数の記憶域プールを、予備記憶装置を組み込む記憶域プールと判定すればよい。
【0053】
図3は、予備記憶装置の組み込みを説明するための図である。
図3に示されているように、判定部190は、全ての記憶域プール(POOL#0・・・POOL#m・・・(mは、任意の整数))の中から予備記憶装置(SD#x0)を組み込む記憶域プールを判定する。
【0054】
ただし、本実施形態に係る判定方法は、上記に限定されない。例えば、判定部190は、算出した指標の値が所定の閾値より大きい記憶域プールを選択し、選択した記憶域プールの中から、ランダムに予備記憶装置を組み込む記憶域プールを判定してもよい。
【0055】
なお、障害状態は変化する。そのため、判定部190は、所定の周期で上記の判定を繰り返すことが望ましい。
【0056】
予備記憶装置を組み込む記憶域プールが変化した場合、管理部150は、後ほど説明するように、配置部110を用いて、予備記憶装置を解放する記憶域プールと予備記憶装置を組み込む予備記憶域プールとにおける予備領域を変更する。
【0057】
配置部110は、管理部150から記憶域プール内の予備領域の組み込み又は解放の指示を受けると、予備領域を組み込み又は解放を実行する。配置部110における予備領域の組み込み方法は、記憶域プールの構成に合わせて選択される。
【0058】
以下、図面を参照して、予備領域の組み込み及び解放の一例を説明する。
【0059】
図4は、予備領域の組み込みを説明するための図である。
図4において、記憶装置PD#0からPD#5が、記憶域プールを構成する記憶装置(例えば、HDD又はSDD)である。
【0060】
図4の上部は、その記憶域プールを構成する記憶装置と予備記憶装置(SD#0)との領域とを示す。なお、以下の説明において、記憶域プールは、RAID6を用いるとする。そのため、パリティは、2つ(P及びQ)となる。ただし、本実施形態は、RAID6に限定されない。
【0061】
図4において、各行が、論理的なデータの組であるストライプを示す。さらに、D00からD63が、各ストライプにおけるデータを記憶する領域(例えば、セクタ)である。P0からP6、及び、Q0からQ6が、修復用のデータ(パリティ)を記憶している領域である。SD00からSD06が、予備領域である。
【0062】
管理部150は、判定部190が予備記憶装置(SD#0)を組み込むと判定した記憶域プールに対して、配置部110にその記憶域プールにおける予備領域の配置を依頼する。
【0063】
配置部110は、
図4の下部に示されているように、予備領域が記憶域プールに含まれる記憶装置及び予備記憶装置に分散するように、記憶域プールにおける予備領域を配置する。
【0064】
例えば、
図4の下部の1行目の「S00からD00への矢印」は、記憶装置PD#0の記憶されていたデータD00を予備記憶装置SD#0に移動することを示している。データの異動後、記憶装置PD#0の領域は、予備領域(S00)として用いられる。2行目から6行目までの矢印も、同様にデータの移動を示す。このように、配置部110は、予備領域を記憶域プール内の記憶装置及び予備記憶装置に分散させる。
【0065】
図4に示されている分散は、全ての記憶装置及び予備記憶装置に予備領域を分散している。ただし、配置部110における分散は、
図4に示されている例に限定されない。配置部110は、分散として、少なくとも、予備記憶装置の数より多い数の装置に予備領域を分散すればよい。例えば、配置部110は、予備領域を、予備記憶装置と1台の記憶装置とに分散してもよい。
【0066】
ただし、予備領域は、記憶装置に障害が発生した場合に、障害装置の領域の代わりにデータを保存するために用いられる。その際、全ての予備領域へのデータの転送が発生する。予備領域を複数の記憶装置及び予備記憶装置に分散させると、その際のアクセスが、複数の装置に分散される。その結果、各装置におけるアクセス負荷が、低減される。そのため、配置部110は、予備領域を、可能な範囲で多くの装置に分散させることが望ましい。
【0067】
なお、配置された予備領域のデータは、管理装置10が用いられるシステムに沿って設定されればよい。例えば、新たに予備領域として設定された
図4の下部の記憶装置(PD#0)のS00の領域は、システムに合わせて初期化されてもよいし、システムが必要としない場合は何も操作されなくてもよい。
【0068】
図5は、縮退が発生した状態を示す図である。
図5の上部は、記憶装置PD#2に障害が発生したことを示す。そこで、管理部150は、記憶装置制御部170を用いて、障害となった記憶装置PD#2のデータを予備領域に移動する。
【0069】
図5の下部が、データの異動後の状態を示す。管理部150は、記憶装置制御部170を用いて、記憶装置PD#2のデータを予備領域に移動する。ただし、記憶装置PD#2が障害となっているため、記憶装置PD#2のデータは、読み出せない場合がある。その場合、管理部150は、他の記憶装置及び予備記憶装置のデータを基にデータを生成して、生成したデータを予備領域に記憶する。その際、管理部150は、適宜、パリティ(P及びQ)を用いる。
【0070】
この結果、記憶域プールは、障害装置が発生した記憶装置(PD#2)を除外した利用(縮退での利用)が可能となる。
【0071】
管理部150は、保守などの結果として障害となった記憶装置(PD#2)が交換された場合、交換後の記憶装置(PD#2)に対するデータの復旧を管理する。具体的には、管理部150は、
図5の下部に示したデータの移動とは反対方向にデータを移動し、
図4の下部に示されている通常状態に戻す。
【0072】
図6は、予備領域の解放を説明するための図である。
【0073】
管理部150は、記憶域プールから予備装置を解放する場合、配置部110に予備領域の解放を指示する。
【0074】
配置部110は、管理部150から予備領域の解放の指示を受けると、
図6の上部に示されているように、予備記憶装置(SD#0)に記憶されているデータを記憶域プールの記憶装置(PD#0から#5)に移動する。例えば、
図6の上部の1行目は、予備記憶装置(SD#0)に記憶されているデータD00を、記憶装置PD#0に移動することを示す。配置部110は、予備記憶装置(SD#0)に記憶されている全てのデータを移動する。
【0075】
図6の下部は、予備領域を解放した状態を示す。
図6の下部に示されているように、予備領域を解放する動作は、予備領域を予備記憶装置に集める動作となる。
【0076】
なお、
図6の場合においても、予備記憶装置において予備領域と設定された領域のデータは、
図4の場合と同様に、管理装置10が用いられるシステムに沿って設定されればよい。
【0077】
管理部150は、予備領域の解放後、予備記憶装置を記憶域プールから解放する。
【0078】
[動作の説明]
次に、図面を参照して、動作を説明する。
【0079】
まず、予備記憶装置を組み込む記憶域プールを判定するための動作を説明する。
【0080】
図7は、記憶域プールに予備記憶装置を組み込む動作の一例を示すフローチャートである。
【0081】
判定部190は、定期的に、記憶域プールに含まれる記憶装置の障害状態を取得する。
【0082】
そして、判定部190は、取得した障害状態を基に、全ての記憶域プールにおけるプール状態を算出する(ステップS102)。以下の説明では、プール状態として、指標を用いる。
【0083】
判定部190は、算出された指標が変化している記憶域プールがあるか否かを判定する(ステップS103)。
【0084】
変化している記憶域プールがない場合(ステップS103でNo)、判定部190は、ステップS102に戻る。つまり、管理装置10は、判定部190における判定を繰り返す。
【0085】
変化している記憶域プールがある場合(ステップS103でYes)、判定部190は、指標の値が大きい方から全ての記憶域プールに対して、以下の動作を繰り返す(ステップS104)。
【0086】
判定部190は、未処理の記憶域プールの中で指標の値が最も大きい記憶域プールを選択する。そして、判定部190は、選択した記憶域プールに予備記憶装置が組み込まれているか否かを判定する(ステップS105)。
【0087】
予備記憶装置が組み込み済みの場合(ステップS105でYes)、判定部190は、次の記憶域プールを処理に進む。
【0088】
予備記憶装置が組み込まれていない場合(ステップS105でNo)、判定部190は、利用可能な予備記憶装置があるか否かを判定する(ステップS106)。具体的には、判定部190は、管理部150に、利用可能な予備記憶装置(例えば、未使用の予備記憶装置)があるか否かを問い合わせる。
【0089】
組み込み可能な予備記憶装置がある場合(ステップS106でYes)、判定部190は、管理部150に対象となっている記憶域プールに予備記憶装置の組み込みを依頼する。管理部150は、配置部110を用いて予備記憶装置を組み込む(ステップS108)。
【0090】
利用可能な予備記憶装置がない場合(ステップS106でNo)、判定部190は、次のように動作する。
【0091】
ここで、指標は、縮退の可能性の表す。そのため、管理装置10は、予備記憶装置を、指標の大きな記憶域プールから割り当てる。また、判定部190は、指標が大きな記憶域プールから処理するため、処理対象の記憶域プールの指標は、未処理の記憶域プールの指標以上である。そこで、利用可能な予備記憶装置がない場合、判定部190は、未処理の記憶域プールから予備記憶装置が割り当てられている記憶域プールを抽出する。そして、判定部190は、抽出した記憶域プールの予備記憶装置を、対象となっている記憶域プールに割り当てるように管理部150に依頼する。
【0092】
詳細には、管理装置10は、次のように動作する。
【0093】
利用可能な予備記憶装置がない場合(ステップS106でNo)、判定部190は、予備記憶装置を解放可能な記憶域プールがあるか否かを判定する(ステップS109)。詳細には、判定部190は、管理部150を用いて、未処理の記憶域プールの中から予備記憶装置が組み込まれている記憶域プールがあるか否かを判定する。
【0094】
ここで、記憶域プールがない場合、判定部190は、予備記憶装置を解放する記憶域プールがないと判定する(ステップS109でNo)。この場合、判定部190は、次の記憶域プールの処理に進む。
【0095】
記憶域プールがある場合(ステップ109でYes)、判定部190は、未処理の記憶域プールの中からの予備記憶装置を解放する記憶域プールを選択する。例えば、判定部190は、未処理の記憶域プールの中から予備記憶装置が組み込まれている記憶域プールを抽出し、抽出した記憶域プールの中で指標が最も小さい記憶域プールを選択する。そして、判定部190は、管理部150に、選択した記憶域プールの予備記憶装置の解放を依頼する(ステップS107)。
【0096】
そして、判定部190は、管理部150に、処理対象の記憶域プールに解放した予備記憶装置の組み込みを依頼する(ステップS108)。組み込み後、判定部190は、次の記憶域プールを処理する。
【0097】
図8は、予備記憶装置の組替えを説明するための図である。
図8において、予備記憶装置(
図8のSD#x0)は、第1の記憶域プール(POOL#0)に組み込まれている。第2の記憶域プール(POOL#1)の指標は、第1の記憶域プールの指標より大きいとする。その場合、判定部190は、第1の記憶域プールに組み込まれている予備記憶装置を第2の記憶域プールに組み込むと判定する。
【0098】
なお、予備記憶装置(SD#x0)は、POOL#0に組み込まれている場合、POOL#0の予備記憶装置となるため、「SD#00」として示されている。また、予備記憶装置(SD#x0)は、第1の記憶域プール(POOL#0)から解放され、第2の記憶域プール(POOL#1)に組み込まれた場合、POOL#1の予備記憶装置となるため、「SD#10」として示されている。
【0099】
管理装置10は、全ての記憶域プールに対して上記処理を繰り返す。
【0100】
全ての記憶域プールを処理すると、判定部190は、ステップS102に戻る。つまり、管理装置10は、処理を繰り返す。
【0101】
図7は、全ての記憶域プールに対する処理である。ただし、管理装置10は、指標が大きな方から記憶域プールに予備記憶装置を組み込む。そのため、予備記憶装置の数の記憶域プールに予備記憶装置が組み込まれると、それ以降の記憶域プールは、予備記憶装置が組み込まれない。つまり、管理装置10は、指標が大きい方から予備記憶装置の数の記憶域プールに対して、予備記憶装置を組み込む。そのため、例えば、管理装置10は、全ての記憶域プールに対してではなく、予備記憶装置の数だけ、
図7に示されている動作を繰り返してもよい。
【0102】
このように、管理装置10の動作は、
図7に限定されない。
【0103】
次に、図面を参照して、障害状態及びエラーに対する重みの値を更新する動作について説明する。
【0104】
図9は、障害状態を更新する動作の一例を示すフローチャートである。
【0105】
記憶装置制御部170が記憶装置における障害を検出すると、判定部190に対して障害状態を通知する。あるいは、判定部190が、記憶装置制御部170に障害状態を問い合わせてもよい。
【0106】
以下の説明において、障害は、「CHECK CONDITION」、「TIMEOUT」、及び「OTHER ERROR」とする。ただし、これは、本実施形態に係る管理装置10における障害を限定するものではない。本実施形態に係る管理装置10は、他の障害を検出してもよく、「CHECK CONDITION」及び/又は「TIMEOUT」を他の障害に含めてもよい。
【0107】
判定部190は、以下の動作を繰り返す。以下で説明するように、判定部190は、記憶装置制御部170から障害状態の通知を受けた場合と、受けていない場合とで、異なる動作を実行する。
【0108】
まず、判定部190は、障害状態を受信したか否かを判定する(ステップS121)。
【0109】
障害状態を受信した場合(ステップS121でYes)、判定部190は、受信した障害状態の種類を判定する(ステップS122)。
【0110】
そして、判定部190は、障害が発生した記憶装置の障害状態を更新する。詳細には、判定部190は、次のように動作する。
【0111】
障害状態が「CHECK CONDITION」の場合、判定部190は、「CHECK CONDITION」の障害状態(例えば、エラーの発生回数)を更新する(ステップS123)。
【0112】
障害状態が、「TIMEOUT」の場合、判定部190は、「TIMEOUT」の障害状態(例えば、エラーの発生回数)を更新する(ステップS125)。
【0113】
障害状態がその他エラー(Other Error)の場合(つまり、「CHECK CONDITION」及び「TIMEOUT」でない場合)、判定部190は、「OTHER ERROR」の障害状態を更新する(ステップS126)。この場合も、「OTHER ERROR」の障害状態は、例えば、エラーの発生回数である。
【0114】
判定部190は、障害状態の更新後、ステップS121に戻る。
【0115】
障害状態を受信していない場合(ステップS121でNo)、判定部190は、障害の結果として、新たに縮退の状態が発生した記憶域プールがあるか否かを判定する(ステップS127)。具体的には、判定部190は、管理部150に、新たな縮退の発生を問い合わせる。
【0116】
縮退が発生していない場合(ステップS127でNo)、判定部190は、ステップS121に戻る。つまり、判定部190は、処理を繰り返す。
【0117】
縮退が発生している場合(ステップS127でYes)、判定部190は、縮退した記憶域プールにおける指標の算出に用いる重みの値を更新する。具体的には、判定部190は、縮退の原因となったエラーの重みを増加させる。
【0118】
例えば、発生回数が最も多いエラーは、縮退の要因と推定される。そこで、判定部190は、次のように動作してもよい。
【0119】
判定部190は、縮退が発生した記憶域プールにおける障害状態の中で、発生回数が最大の障害状態(以下、「最大障害」と呼ぶ)の種類を判定する(ステップS128)。
【0120】
最大障害が「CHECK CONDITION」の場合、判定部190は、「CHECK CONDITION」の重みの値を大きくする(ステップS129)。例えば、判定部190は、
図2の説明に用いた「CHECK CONDITION」の重み(WC)の値を増やす。
【0121】
最大障害が「TIMEOUT」の場合、判定部190は、「TIMEOUT」の重みの値を大きくする(ステップS131)。例えば、判定部190は、
図2の説明の用いた「TIMEOUT」の重み(WT)の値を増やす。
【0122】
最大障害が「OTHER ERROR」の場合(つまり、「CHECK CONDITION」及び「TIMEOUT」でない場合)、判定部190は、「OTHER ERROR」の重みの値を大きくする(ステップS132)。例えば、判定部190は、
図2の説明の用いた「OTHER ERROR」の重み(WE)の値を増やす。
【0123】
各重みにおける増加量は、任意である。各重みは、1つずつ増やしてもよく、所定の値毎に増やしてもよい。
【0124】
ただし、縮退の原因は、必ずしも発生回数に関連するとは限らない。そのため、判定部190の動作は、上記とは異なってもよい。例えば、通信不能のように、1度の発生でも縮退となる障害がある。このような重大な障害の重みは、通常、他の重みに対して、最初から大きな値となっている。そのため、判定部190は、そのような最初から大きな重みについては、修正しなくてもよい。
【0125】
判定部190は、重みを更新後、ステップS121に戻る。つまり、判定部190は、処理を繰り返す。
【0126】
ここまでの説明において、管理装置10は、各記憶域プールに、1つの予備記憶装置を組み込んでいる。しかし、管理装置10が記憶域プールに組み込む予備記憶装置の数は、1つに限定されない。管理装置10は、2つ以上の予備記憶装置を、記憶域プールに組み込んでもよい。
【0127】
図10は、2つの予備記憶装置を用いた組み込みを説明するための図である。
【0128】
図10において、記憶装置PD#0からPD#5が、記憶域プールを構成する記憶装置(例えば、HDD又はSDD)である。
【0129】
図10の上部は、その記憶域プールと、2つの予備記憶装置(SD#0及び#1)とを示す。
【0130】
図10において、各行が、論理的なデータの組であるストライプを示す。D00からD63が、各ストライプにおけるデータを記憶している領域(例えば、セクタ)である。P0及びP6、及び、Q0からQ6が、修復用のデータ(例えば、パリティ)を記憶している領域である。SD00からSD16が、予備領域である。
【0131】
配置部110は、
図10の下部に示されているように、予備領域が記憶域プールに含まれる記憶装置及び予備記憶装置に分散するように、記憶域プールにおいて予備領域を配置する。
【0132】
例えば、
図10の下部の1行目上部の「S00からD00への矢印」は、記憶装置PD#0の記憶されていたデータD00を予備記憶装置SD#0に移動することを示している。データの異動後、記憶装置PD#0の領域は、予備領域(S00)として用いられる。
【0133】
1行目下部の「S10からD11への矢印」は、記憶装置PD#1の記憶されていたデータD10を予備記憶装置SD#1に移動することを示している。データの異動後、記憶装置PD#1の領域は、予備領域(S10)として用いられる。
【0134】
2行目から6行目までの矢印も、同様にデータの移動を示す。なお、6行目のプールにおいて、配置部110は、まず、記憶装置PD#5と予備記憶装置SD#0とのデータを移動し、その後、予備記憶装置SD#0のデータを予備記憶装置SD#1に移動する。その結果、記憶装置PD#5のデータ(P5)が、予備記憶装置SD#1に移動している。
【0135】
このように、配置部110は、予備領域を記憶域プール内の記憶装置に分散させる。
【0136】
さらに、配置部110における予備領域の組み込みは、上記に限定されず、その他の組み込み方法を用いてもよい。例えば、配置部110は、管理装置10の用いられているRAIDタイプに応じて、組み込みを実行すればよい。
【0137】
図11は、
図10の下部の状態から縮退が発生した状態を示す図である。
図11の上部は、記憶装置PD#2に障害が発生したことを示す。そこで、管理部150は、記憶装置制御部170を用いて、障害となった記憶装置PD#2のデータを予備領域に移動する。
【0138】
図11の下部は、データの異動後の状態を示す。管理部150は、記憶装置PD#2からデータを読み出せない領域に関しては、他の記憶装置のデータを基にデータを生成して、生成したデータを予備領域に記憶する。
【0139】
この結果、記憶域プールは、縮退状態で利用可能となる。ただし、
図11に示す状態は、1組の予備領域(S00からS06)を含む。そのため、
図11の下部の状態の記憶域プールは、記憶装置又は予備記憶装置において、さらに1台障害が発生しても、データを予備領域に移動した縮退状態での運用が可能である。
【0140】
管理部150は、保守などの結果として障害となった記憶装置(PD#2)が交換された場合、交換後の記憶装置に対するデータの復旧を管理する。
【0141】
[効果の説明]
次に、本実施形態の効果について説明する。
【0142】
第1の実施形態に係る管理装置10は、必要となる予備記憶装置を削減するとの効果を奏することができる。
【0144】
判定部190は、複数の記憶装置を用いて構成された複数の記憶域プールにおいて、データを保存する領域を追加するための予備記憶装置を組み込む記憶域プールを判定する。管理部150は、判定された記憶域プールに予備記憶装置を組み込む。
【0145】
つまり、管理装置10は、判定された記憶域プールに予備記憶装置を組み込むため、必要となる予備記憶装置の数を記憶域プールの数より削減できる。
【0146】
さらに、管理装置10の判定部190は、記憶域プールの含まれる記憶装置の障害状態を基に予備記憶装置を組み込む記憶域プールを判定する。詳細には、管理装置10は、縮退が発生する可能性の高い記憶域プールに予備記憶装置を組み込む。予備記憶装置が組み込まれた記憶域プールは、縮退が発生しても、予備領域を用いてデータ領域とパリティ領域を維持できる。つまり、管理装置10は、縮退の可能性が高い記憶域プールに予備記憶装置を組み込む。その結果、管理装置10は、縮退が発生した場合における信頼性を向上できる。
【0147】
さらに、管理装置10は、障害時の性能の低下を低減するとの効果を奏する。
【0149】
配置部110は、記憶装置及び予備記憶装置における障害状態に対応して記憶装置及び予備記憶装置に保存されているデータを保存する予備領域を、記憶装置及び予備記憶装置に分散して配置させる。
【0150】
管理部150は、予備記憶装置を記憶域プールに組み込む際に配置部110に予備領域の配置を依頼する。
【0151】
そのため、記憶装置又は予備記憶装置に障害が発生して予備領域を使用する場合でも、データのアクセスが記憶域プールの複数の記憶装置及び予備記憶装置に分散するためである。
【0152】
さらに、管理装置10は、縮退が発生する可能性の判定を向上するとの効果を奏することができる。
【0154】
判定部190は、記憶装置の障害状態を基に予備記憶装置を組み込む記憶域プールを判定する。判定部190は、障害状態として記憶装置の障害の発生回数を用いてもよい。さらに、判定部190は、複数の障害状態と、複数の障害状態のそれぞれに対応した重みとを基に判定してもよい。つまり、判定部190は、所定の障害を重視した判定を実現できるためである。
【0155】
さらに、判定部190が、記憶域プールに縮退が発生した場合に、縮退の原因となった障害の状態に対応する重みを増加させる。つまり、判定部190は、縮退の原因となるエラーをより重視するように判定するためである。
【0156】
[構成の概要]
以上の説明した管理装置10は、次のように構成される。
【0157】
例えば、管理装置10の各構成部は、ハードウェア回路で構成されてもよい。
【0158】
また、管理装置10において、各構成部は、ネットワークを介して接続した複数の装置を用いて、構成されてもよい。
【0159】
図12は、第1の実施形態の概要の一例である管理装置11の構成の一例を示すブロック図である。
【0160】
管理装置11は、管理部150と、判定部190とを含む。管理装置11の各構成は、図示しないネットワークなどを介して、ホスト処理部130、キャッシュ制御部140、及び記憶装置制御部170と同様に動作する構成と接続されている。さらに、管理部150は、配置部110と同様に動作する構成に接続されている。そして、管理装置11の各構成は、管理装置10に含まれる各構成と同様に動作する。
【0161】
このように構成された管理装置11は、管理装置10と同様の効果を得ることができる。
【0163】
判定部190は、複数の記憶装置を用いて構成された複数の記憶域プールにおいて、データを保存する領域を追加するための予備記憶装置を組み込む記憶域プールを判定する。管理部150は、判定された記憶域プールに予備記憶装置を組み込む。
【0164】
このように、管理装置11は、判定された記憶域プールに予備記憶装置を組み込むため、必要となる予備記憶装置の数を記憶域プールの数より削減できる。
【0165】
なお、管理装置11は、本発明の実施形態における最小構成である。
【0166】
[ハードウェア構成]
管理装置10及び管理装置11のハードウェア構成について、管理装置10を用いて説明する。
【0167】
管理装置10の複数の構成部は、1つのハードウェアで構成されてもよい。
【0168】
また、管理装置10は、CPU(Central Processing Unit)と、ROM(Read Only Memory)と、RAM(Random Access Memory)とを含むコンピュータ装置として実現されてもよい。管理装置10は、上記構成に加え、さらに、入出力接続回路(IOC:Input / Output Circuit)と、ネットワークインターフェース回路(NIC:Network Interface Circuit)とを含むコンピュータ装置として実現されてもよい。
【0169】
図13は、ハードウェア構成の一例である情報処理装置600の構成の一例を示すブロック図である。
【0170】
情報処理装置600は、CPU610と、ROM620と、RAM630と、内部記憶装置640と、IOC650と、NIC680と、NIC690を含み、コンピュータ装置を構成している。
【0171】
CPU610は、ROM620からプログラムを読み込む。そして、CPU610は、読み込んだプログラムに基づいて、RAM630と、内部記憶装置640と、IOC650と、NIC680とを制御する。CPU610を含むコンピュータは、これらの構成を制御し、
図1に示されているホスト処理部130と、キャッシュ制御部140と、キャッシュ160と、管理部150と、配置部110と、判定部190と、記憶装置制御部170としての各機能を実現する。
【0172】
CPU610は、各機能を実現する際に、RAM630又は内部記憶装置640を、プログラムの一時記憶媒体として使用してもよい。
【0173】
また、CPU610は、コンピュータで読み取り可能にプログラムを記憶した記憶媒体700が含むプログラムを、図示しない記憶媒体読み取り装置を用いて読み込んでもよい。あるいは、CPU610は、NIC680又はNIC690を介して、図示しない外部の装置からプログラムを受け取り、RAM630に保存して、保存したプログラムを基に動作してもよい。
【0174】
ROM620は、CPU610が実行するプログラム及び固定的なデータを記憶する。ROM620は、例えば、P−ROM(Programmable-ROM)又はフラッシュROMである。
【0175】
RAM630は、CPU610が実行するプログラム及びデータを一時的に記憶する。RAM630は、キャッシュ160として動作してもよい。RAM630は、例えば、D−RAM(Dynamic-RAM)である。
【0176】
内部記憶装置640は、情報処理装置600が長期的に保存するデータ及びプログラムを記憶する。また、内部記憶装置640は、CPU610の一時記憶装置として動作してもよい。内部記憶装置640は、例えば、ハードディスク装置、光磁気ディスク装置、SSD(Solid State Drive)又はディスクアレイ装置である。
【0177】
ここで、ROM620と内部記憶装置640は、不揮発性(non-transitory)の記憶媒体である。一方、RAM630は、揮発性(transitory)の記憶媒体である。そして、CPU610は、ROM620、内部記憶装置640、又は、RAM630に記憶されているプログラムを基に動作可能である。つまり、CPU610は、不揮発性記憶媒体又は揮発性記憶媒体を用いて動作可能である。
【0178】
IOC650は、CPU610と、入力機器660及び表示機器670とのデータを仲介する。IOC650は、例えば、IOインターフェースカード又はUSB(Universal Serial Bus)カードである。さらに、IOC650は、USBのような有線に限らず、無線を用いてもよい。
【0179】
入力機器660は、情報処理装置600の操作者からの入力指示を受け取る機器である。入力機器660は、例えば、キーボード、マウス又はタッチパネルである。
【0180】
表示機器670は、情報処理装置600の操作者に情報を表示する機器である。表示機器670は、例えば、液晶ディスプレイである。
【0181】
NIC680及びNIC690は、ネットワークを介した図示しない外部の装置とのデータのやり取りを中継する。具体的には、NIC680は、ホストとのデータを仲介する。NIC690は、記憶装置とのデータを仲介する。NIC680及びNIC690は、例えば、Fiber Channelカード又はLAN(Local Area Network)カードである。さらに、NIC680及びNIC690は、有線に限らず、無線を用いてもよい。
【0182】
このように構成された情報処理装置600は、管理装置10と同様の効果を得ることができる。
【0183】
その理由は、情報処理装置600のCPU610が、プログラムに基づいて管理装置10と同様の機能を実現できるためである。
【0184】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成及び詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。