いくつかの実施例について、図面を参照して説明する。なお、以下に説明する実施例は特許請求の範囲に係る発明を限定するものではなく、また実施例の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
なお、以下の説明では、「aaaテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「aaaテーブル」を「aaa情報」と呼ぶことができる。
また、以下の説明では、「プログラム」を動作主体として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又は通信インターフェースデバイス(例えばポート)を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、プロセッサ或いはそのプロセッサを有する計算機(例えば、管理計算機、ホスト計算機、ストレージ装置等)が行う処理としてもよい。また、コントローラは、プロセッサそれ自体であってもよいし、コントローラが行う処理の一部又は全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースから各コントローラにインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであってもよい。
実施例1に係るストレージシステムを含む計算機システムの概要を説明する。
ストレージシステムは、例えば、図1に示す上位ストレージ装置101により構成される。ストレージシステムは、外部ストレージ装置104を含んでもよい。上位ストレージ装置101のDKU117には、下位ストレージ装置121が複数備えられている。上位ストレージ装置101においては、複数の下位ストレージ装置121の記憶領域により構成される容量プール(以下、プールという)が管理される。また、上位ストレージ装置101においては、プールの領域を用いてRAIDグループが構成される。すなわち、プールの領域を構成する複数の下位ストレージ装置121を用いて、RAIDグループが構成されている。
RAIDグループの記憶領域は、複数のサブ記憶領域列で構成されている。各サブ記憶領域列は、RAIDグループを構成する複数のストレージ装置(下位ストレージ装置121及び/又は外部ストレージ装置104)に跨っており、複数のストレージ装置に対応した複数のサブ記憶領域で構成されている。ここで、1つのサブ記憶領域を、「ストライプ」と呼び、複数のストライプで構成された一列を、「ストライプ列」と呼ぶ。複数のストライプ列によって、RAIDグループの記憶領域が構成されている。
RAIDには、いくつかのレベル(以下、「RAIDレベル」という)がある。
例えば、RAID5では、RAID5に対応したホスト計算機(ホストという)から指定されたライト対象のデータは、所定サイズのデータ(以下、便宜上「データ単位」という)に分割されて、各データ単位が、複数のデータ要素(データ部)に分割され、複数のデータ要素が、複数のストライプに書き込まれる。また、RAID5では、ストレージ装置に障害が発生したことによりそのストレージ装置から読み出せなくなったデータ要素をリビルドするために、各データ単位に対して、“パリティ”と呼ばれる冗長な情報(以下、「冗長コード」、「パリティ部」)が生成され、その冗長コードも、同一のストライプ列のストライプに書き込まれる。例えば、RAIDグループを構成するストレージ装置の数が4である場合は、そのうちの3つのストレージ装置に対応する3つのストライプに、データ単位を構成する3つのデータ要素が書き込まれ、残りの1つのストレージ装置に対応するストライプに、冗長コードが書き込まれる。以下、データ要素と冗長コードとを区別しない場合には、両者をそれぞれストライプデータ要素ということもある。
また、RAID6では、RAIDグループを構成する複数の記憶装置のうちの2つのストレージ装置に障害が発生した等の理由により、データ単位を構成する複数のデータ要素のうちの2つのデータ要素を読み出すことができない場合に、これら2つのデータ要素を復元することができるように、各データ単位に対して、2種類の冗長コード(Pパリティ、Qパリティという)が生成されて、それぞれの冗長コードが同一のストライプ列のストライプに書き込まれる。
また、上記に説明した以外にもRAIDレベルは存在する(例えばRAID1〜4)。また、データの冗長化技術として、3重ミラー(Triplication)、パリティを3個用いたトリプルパリティ技術等もある。また、冗長コードの生成技術についても、ガロア演算を用いたReed−solomon符号や、EVEN−ODD等さまざまな技術が存在する。本発明の実施例では、主にRAID5,6について説明するが、これは本発明を限定するものではなく、上述した方法の置き換えによる応用が可能である。
まず、実施例1に係るストレージシステムを含む計算機システムを説明する。
図1は、実施例1に係る計算機システムのハードウェア構成図である。
計算機システムは、1以上のホスト計算機(以下、ホストという)103、管理サーバ102と、上位ストレージ装置101とを含む。ホスト計算機103と、管理サーバ102と、上位ストレージ装置1101とは、ネットワーク120を介して接続されている。ネットワーク120は、ローカルエリアネットワークであってもよく、ワイドエリアネットワークであってもよい。また、上位ストレージ装置101に、1以上の外部ストレージ装置104を接続するようにしてもよい。外部ストレージ装置104は、1つ以上の記憶デバイスを含む。記憶デバイスは、不揮発性の記憶媒体であって、例えば、磁気ディスク、フラッシュメモリ、その他半導体メモリである。
ホスト103は、例えば、アプリケーションを実行する計算機であり、上位ストレージ装置101からアプリケーションに利用するデータを読み出したり、上位ストレージ装置101にアプリケーションで作成したデータを書き込んだりする。
管理サーバ102は、計算機システムを管理する管理処理を実行するための管理者により使用される計算機である。管理サーバ102は、入力デバイスに対する管理者の操作により、データを復元する際に実行させるリビルド処理のモードの設定を受け付け、上位ストレージ装置101を、受け付けたリビルド処理を実行させるように設定する。
上位ストレージ装置101は、1以上のフロントエンドパッケージ(FEPK)105と、保守インターフェース(保守I/F)107と、1以上のマイクロプロセッサパッケージ(MPPK)114と、1以上のキャッシュメモリパッケージ(CMPK)112と、1以上のバックエンドパッケージ(BEPK)108と、内部ネットワーク122と、1以上のディスクユニット(DKU)117とを有する。FEPK105、保守I/F107、MPPK114、CMPK112、及びBEPK108は、内部ネットワーク122を介して接続されている。BEPK108は、複数系統のパスを介してDKU117と接続されている。
FEPK105は、インターフェースデバイスの一例であり、1以上のポート106を有する。ポート106は、上位ストレージ装置101を、ネットワーク120等を介して種々の装置(ホスト103、外部ストレージ装置104等)と接続する。保守I/F107は、上位ストレージ装置101を、管理サーバ102と接続するためのインターフェースである。
MPPK114は、制御部の一例としてのマイクロプロセッサ(MP)115と、ローカルメモリ(LM)116とを有する。LM116は、各種プログラムや、各種情報を記憶する。MP115は、LM116に格納されたプログラムを実行して各種処理を実行する。MP115は、BEPK108を介して、各種コマンドをDKU117の下位ストレージ装置121に送信する。また、MP115は、FEPK105を介して、各種コマンドを外部ストレージ装置104に送信する。
CMPK112は、キャッシュメモリ(CM)113を有する。CM113は、ホスト103から下位ストレージ装置121等に書き込むデータ(ライトデータ)や、下位ストレージ装置121から読み出したデータ(リードデータ)を一時的に格納する。
BEPK108は、インターフェースデバイス(インターフェース)の一例であり、パリティ演算器109と、転送バッファ(DXBF)110と、バックエンドコントローラ(BEコントローラ)111とを有する。
パリティ演算器109は、例えば、小型のプロセッサであり、下位ストレージ装置121に障害が発生した際にその障害により読み出せなくなったデータ要素を復元するための冗長コード(以下、パリティ)を生成する。パリティ演算器109は、例えば、RAID5で構成されたRAIDグループのデータ単位に対しては、データ単位を構成する複数のデータ要素の排他的論理和をとることによってPパリティを生成する。また、パリティ演算器109は、RAID6で構成されたRAIDグループのデータ単位に対しては、更に、データ単位を構成する複数のデータ要素に所定の係数を掛けた後、それぞれのデータの排他的論理和をとることによって、Qパリティを生成する。また、パリティ演算器109は、データ単位についての1以上のストライプデータ要素(データ要素及び/又はパリティ)に基づいて、データ単位中のいずれかのデータ要素を復元する復元処理を行う。また、パリティ演算器109は、データ単位についての1以上のストライプデータ要素に基づいて、いずれかのデータ要素を復元するための復元処理の演算の一部に相当する部分演算を行うことにより部分演算結果を生成する。
転送バッファ110は、下位ストレージ装置121から送信されたデータや、下位ストージ装置121へ送信するデータを一時的に格納する。BEコントローラ111は、DKU117の下位ストレージ装置121との間で各種コマンドや、ライトデータ、リードデータ等の通信を行う。
DKU117は、複数の下位ストレージ装置121(以下、ドライブという場合がある)を有する。下位ストレージ装置121は、1つ以上の記憶デバイスを含む。記憶デバイスは、不揮発性の記憶媒体であって、例えば、磁気ディスク、フラッシュメモリ、その他半導体メモリである。DKU117は、BEコントローラ111と同一のパスにより接続される複数の下位ストレージ装置121のグループ(パスグループ)119を複数有する。同一のパスグループ119に属する下位ストレージ装置121は、スイッチ118を介して接続されている。同一のパスグループ119に属する下位ストレージ装置121同士は、直接通信することが可能であり、例えば、同一のパスグループ119に属する一の下位ストレージ装置121から他の下位ストレージ装置121に対して、各種データを送信することができる。なお、別のパスグループ119に属する下位ストレージ装置121同士は、直接通信することはできない。ただし、スイッチ118の接続方法によっては、上位ストレージ装置101内の全ての下位ストレージ装置121同士でアクセス可能とすることも可能である。その場合は、下位ストレージ装置121全てを1個の巨大なパスグループ119としてもよいし、各下位ストレージ装置121の関係において、密に結合された、すなわち通信経路が多数ある、又は通信経路のスループットが高い下位ストレージ装置121の集合を、パスグループ119としてもよい。
図2は、実施例1に係るデータの論理的な構成図である。
ホスト103により認識可能な仮想ボリューム201は、複数の仮想ページ(仮想的な論理ページ、論理ページともいう)202により構成される。仮想ページ202には、仮想プール空間203の物理ページ208が割り当てられる。仮想プール空間203は、図示しないプールの記憶領域により構成される。仮想プール空間203においては、1以上のエクステント204が管理される。エクステント204は、複数のパーセル(Parcel)205により構成される。パーセル205は、1つのストレージ装置(例えば、下位ストレージ装置121)上の連続した領域で構成される。パーセル205は、1以上のストライプ206(図2の例では4つのストライプ206)で構成される。
エクステント204は、図2に示すように、RAID5の3D+1P構成、すなわち、データ単位を構成する3つのデータ要素(D)と、これらデータ要素に対応する1つのパリティ(P)とをそれぞれ異なるストレージ装置に格納する構成の場合には、例えば、4つの異なる下位ストレージ装置121のパーセル205で構成される。なお、本実施例では、分散RAIDの構成を採っているので、仮想プール空間203の記憶領域を構成する複数(3D+1Pで最低限必要な4つよりも多い数(例えば、6つ))の下位ストレージ装置121の中の異なる4つの下位ストレージ装置121のパーセル205によって、エクステント204が構成されており、各エクステント204を構成するパーセル205を含む下位ストレージ装置121の組み合わせは、固定されていない。
エクステント204は、複数(例えば、2つの)の物理ページ208を含む。物理ページ208は、複数(例えば、2つ)の連続するデータ単位のデータ要素及びパリティ(同一のストライプ列207のデータ)を格納することができる。同図において、D1_1、D2_1、D3_1、P_1のように、「_」の後の数字が共通するものが、同一のデータ単位におけるデータ要素及びパリティを示す。なお、データ要素及びパリティは、それぞれストライプ206のサイズとなっている。エクステント204は、1つのストライプ列207のデータを格納するようにしてもよい。
なお、本実施例では、分散RAID構成をとった場合を例に挙げているが、分散RAIDでない場合、つまり、仮想プール空間203の記憶領域を構成する複数(3D+1Pで最低限必要な4つ)の下位ストレージ装置121のパーセル205によって、エクステント204が構成されている場合にも、本発明を適用することができる。
図3は、実施例1に係る下位ストレージ装置におけるデータの論理的な構成図である。
下位ストレージ装置121は、上位の装置との間では、SCSIコマンド処理の最小単位(例えば、512B)であるサブブロック302を単位として、データの受け渡しが可能である。キャッシュメモリ113上でのデータをキャッシュする際の管理単位(例えば、256KB)であるスロット301は、連続する複数のサブブロック302の集合で構成される。ストライプ206は、複数のスロット301に格納される。ストライプ206のサイズは、例えば、スロット301が2個で構成される場合、512KBである。
図4は、実施例1に係る共有メモリのテーブルを示す図である。
共有メモリ401は、例えば、下位ストレージ装置121、CM113、及びローカルメモリ116の少なくともいずれか1つの記憶領域を用いて構成される。なお、下位ストレージ装置121、CM113、及びローカルメモリ116の内の複数の構成の記憶領域を用いて論理的な共有メモリ401を構成し、各種情報についてキャッシュ管理を行うようにしてもよい。
共有メモリ401は、ページマッピングテーブル402と、パーセルマッピングテーブル403と、ドライブ状態テーブル404と、キャッシュ管理テーブル405とを格納する。各テーブルの詳細について、引き続いて説明する。
図5は、実施例1に係るページマッピングテーブルの一例を示す図である。
ページマッピングテーブル402は、仮想ボリューム201の論理ページ202と、仮想プール空間203の物理ページ208との対応関係を示す情報である。ページマッピングテーブル402は、仮想ボリューム番号501と、論理ページ番号502と、プール番号503と、仮想プール空間番号504と、物理ページ番号505とのフィールドを含むエントリを管理する。
仮想ボリューム番号501には、仮想ボリューム201の番号(仮想ボリューム番号)が格納される。論理ページ番号502には、エントリにおける仮想ボリューム番号501の仮想ボリューム番号が示す仮想ボリューム201における論理ページの番号(論理ページ番号)が格納される。プール番号503には、エントリにおける論理ページ番号502の論理ページ番号に対応する論理ページに割り当てられている物理ページを含むプールの番号が格納される。仮想プール空間番号504には、エントリにおけるプール番号503のプール番号のプールにおける、論理ページ番号502の論理ページ番号に対応する論理ページに割り当てられている物理ページを含む仮想プール空間の番号(仮想プール空間番号)が格納される。物理ページ番号505には、エントリにおける論理ページ番号502の論理ページ番号に対応する論理ページに割り当てられている物理ページの番号(物理ページ番号)が格納される。物理ページ番号は、例えば、LBA(サブブロック単位のアドレス)である。
図5の一番上のエントリによると、仮想ボリューム番号が「1」の仮想ボリュームの論理ページ番号が「1」の論理ページには、プール番号が「0」のプールの仮想プール空間番号が「6」の仮想プール空間の物理ページ番号「0」の物理ページが割り当てられていることがわかる。
図6は、実施例1に係るパーセルマッピングテーブルの一例を示す図である。
パーセルマッピングテーブル403は、エクステント204に割り当てられたパーセル205を管理するためのテーブルである。パーセルマッピングテーブル403は、仮想プール空間番号601と、エクステント番号(#)602と、エクステント回復優先度607と、ドライブオフセット603と、物理ドライブ番号(#)604と、物理パーセル番号(#)605と、パーセル状態606とのフィールドを含むエントリを管理する。
仮想プール空間番号601には、仮想プール空間203の番号(仮想プール空間番号)が格納される。エクステント#602には、エントリの仮想プール空間番号601の仮想プール空間番号に対応する仮想プール空間203におけるエクステント204の番号(エクステント番号)が格納される。エクステント回復優先度607には、エントリにおけるエクステント#602のエクステント番号に対応するエクステント204の回復優先度が格納される。本実施例では、エクステント回復優先度607には、エクステント204を構成するパーセル205に格納されているデータ要素について障害が発生していて復元が必要である複数のエクステント(障害エクステントという)のなかで、優先して復元が必要なエクステント204である場合に、「高優先度」が設定され、復元が必要であるが優先して復元することが不要なエクステント204である場合に「低優先度」が設定される。なお、エクステント204を構成するパーセル205に格納されているデータ要素について復元が必要ないエクステント204である場合に、エクステント回復優先度607は、空白に設定される。例えば、下位ストレージ装置121が故障状態になった場合に、MP115がエクステント204に対応するエントリのパーセル状態606を参照して、エクステント回復優先度607に「優先度低」あるいは「優先度高」を設定する。
ドライブオフセット603には、エントリのエクステント#602のエクステント番号に対応するエクステント204におけるドライブオフセットの番号(ドライブオフセット番号)が格納される。ここで、ドライブオフセット番号とは、RAIDグループの構成(例えば、3D+1P)のいずれのドライブ(下位ストレージ装置121)であるかを示す番号であり、本実施例では、1つの仮想プール空間203の1つのエクステントに対するドライブオフセット番号として、0〜3の4つのドライブオフセット番号が対応付けられて管理される。物理ドライブ#604には、エントリのドライブオフセット603のドライブオフセット番号のドライブに対して割り当てられているパーセル205を格納するドライブ(例えば、下位ストレージ装置121)の番号(物理ドライブ番号)が格納される。物理パーセル#605には、ドライブオフセット番号のドライブに対して割り当てられているパーセル205の番号が格納される。パーセル状態606には、エントリにおける物理パーセル#605の物理パーセル番号に対応するパーセル205の状態が格納される。本実施例では、パーセル状態606には、パーセル205に格納されているデータ要素について復元が必要である場合には、そのことを示す「復元要」が設定され、それ以外の場合には、空白が設定される。例えば、下位ストレージ装置121が故障状態になった場合に、MP115がこの下位ストレージ装置121のパーセル205に対応するエントリのパーセル状態606に「復元要」を設定する。
図7は、実施例1に係るドライブ状態テーブルの一例を示す図である。
ドライブ状態テーブル404は、仮想プール空間203を構成するドライブ(例えば、下位ストレージ装置121)の状態を管理するテーブルである。ドライブ状態テーブル404は、仮想プール空間番号701と、物理ドライブ番号(#)702と、ドライブ状態703とのフィールドを含むエントリを管理する。仮想プール空間番号701には、仮想プール空間203の番号(仮想プール空間番号)が格納される。物理ドライブ番号702には、エントリの仮想プール空間番号701の仮想プール空間番号に対応する仮想プール空間203を構成するドライブの番号(物理ドライブ番号)が格納される。ドライブ状態703には、エントリの物理ドライブ番号702の物理ドライブ番号に対応するドライブの状態が格納される。ドライブの状態としては、ドライブが正常であることを示す「正常」、又はドライブに対するリード及びライトが不可能なことを示す「異常」が設定される。
図8は、実施例1に係るローカルメモリの構成図である。
ローカルメモリ116は、通常リビルドプログラム802と、速度制御リビルドプログラム803と、データ復元プログラム804と、エクステント分類プログラム805とを格納する。ここで、速度制御リビルドプログラム803、データ復元プログラム804、及びエクステント分類プログラム805が、データ管理プログラムの一例である。
通常リビルドプログラム802は、通常リビルド処理(図13参照)を実行させるためのプログラムである。速度制御リビルドプログラム803は、速度制御リビルド処理(図9参照)を実行させるためのプログラムである。データ復元プログラム804は、データ復元処理(図12参照)を実行させるためのプログラムである。エクステント分類プログラム805は、エクステント分類処理(図10参照)を実行させるためのプログラムである。
次に、実施例1に係る計算機システムにおける処理の動作を説明する。
図9は、実施例1に係る速度制御リビルド処理のフローチャートである。速度制御リビルド処理は、例えば、下位ストレージ装置121が1つ以上故障した(リードまたはライトが不可となった)ことを上位ストレージ装置101が検知した場合に実施される。
この処理の実施前には、上位ストレージ装置101によって、ドライブ状態管理テーブル404の故障したドライブ番号が格納されているエントリ物理ドライブ番号604のエントリにおける物理ドライブ状態703が「異常」に設定され、さらに、パーセルマッピングテーブル403に格納されているパーセル状態606には、物理ドライブ状態703が「異常」に設定されたドライブに格納された物理パーセル205の物理パーセル番号に対応するエントリのパーセル状態606が「異常」に設定されている。
速度制御リビルド処理では、まず、MP115は、エクステント分類処理(図10参照)を実施する(ステップS901)。エクステント分類処理によって、パーセル状態606が「復元要」となっているパーセル205を含むエクステント204が、リビルド優先度について分別される。
次に、ステップS902において、MP115が、リビルドを実施する速度を「高」に設定する。ここで、リビルドを実施する速度が「高」とは、ホスト103からのI/Oに対して、MP115がリビルド処理に係る下位ストレージ装置121へのI/Oを発行する比率の許容値を大きくしたり、リビルド処理に対するMP115における実行優先度(例えば、MP115が実行するOSでの実行優先度)を高くしたり、MP115がリビルド処理に対して割り当てるハードウェア資源(MP、メモリ等)の量を増加させたりする制御によって、リビルドを実行する速度が「低」である場合に比して、高スループットでリビルド処理におけるI/Oが実施されるようにすることを指す。
次に、MP115は、エクステント分類処理(ステップS901)において優先度が「高」に分類されたエクステント204の中でステップS904の処理が未処理のエクステント204があるか否かを判定する(ステップS903)。ここで、優先度が「高」のエクステント204があるか否かは、パーセルマッピングテーブル403のエクステントに対応するエントリのエクステント回復優先度エントリ607に、「高優先度」が設定されているか否かで判別可能である。
判定の結果、優先度が「高」に分類されたエクステント204の中に未処理のエクステント204がある場合(ステップS903:YES)、MP115は、優先度が「高」に分類されたエクステント204の1つを対象にリビルド処理(図11参照)を実行する(ステップS904)。リビルド処理が完了することにより、対象とした優先度が「高」に分類されたエクステント204に含まれるパーセル205は、全て「正常」状態となる。
一方、優先度が「高」に分類されたエクステント204の中に未処理のエクステン204が無い場合(ステップS903:NO)、MP115は処理をステップS905に進める。
ステップS905では、MP115が、リビルドを実施する速度を「低」に設定する。ここで、リビルドを実施する速度が「低」とは、リビルドを実行する速度が「高」の場合に比して、ホスト103からのI/Oに対して、MP115がリビルド処理に係る下位ストレージ装置121へのI/Oを発行する比率の許容値を小さくしたり、リビルド処理に対するMP115における実行優先度(例えば、MP115が実行するOSでの実行優先度)を低くしたり、MP115がリビルド処理に対して割り当てるハードウェア資源(MP、メモリ等)の量を減少させたりする制御によって、リビルドを実行する速度が「高」である場合に比して、低スループットでリビルド処理が実行されるようにすることを指す。なお、リビルドを実行する速度が「低」であることは、リビルドを実行する速度が「高」の場合に比して、I/Oに関して許容される負荷が低いということもできる。
次に、エクステント分類処理(ステップS901)において優先度が「低」に分類されたエクステント204の中でステップS907の処理が未処理のエクステント204があるか否かを判定する(ステップS906)。ここで、優先度が「低」のエクステント204があるか否かは、パーセルマッピングテーブル403のエクステントに対応するエントリのエクステント回復優先度エントリ607に、「低優先度」が設定されているか否かで判別可能である。
判定の結果、優先度が「低」に分類されたエクステント204の中に未処理のエクステント204がある場合(ステップS906:YES)、MP115は、優先度が「低」に分類されたエクステント204の1つを対象にリビルド処理(図11参照)を実行する(ステップS907)。リビルド処理が完了することによって、対象とした優先度が「低」のエクステント204に含まれる物理パーセル205は、全て「正常」状態となる。
一方、優先度が「低」に分類されたエクステント204の中に未処理のエクステン204が無い場合(ステップS906:NO)、MP115は速度制御リビルド処理を終了する。
上記した速度制御リビルド処理によると、優先度が「高」のエクステントに対しては、高スループットでリビルド処理を行うことにより、早期にリビルドすることができて信頼性を向上することができ、優先度が「低」のエクステントに対しては、低スループットでリビルド処理を行うことにより、ホスト103からのI/Oに対する性能低下を低減することができる。
次に、エクステント分類処理(S901)について詳細に説明する。
図10は、実施例1に係るエクステント分類処理のフローチャートである。
エクステント分類処理では、「復元要」となっているパーセル205を含むエクステント204に対し、そのエクステント204を構成するパーセル205のうちパーセルマッピングテーブル403のパーセル状態606が「復元要」となっているパーセル205の数がしきい値を超えるか否かで、リビルドの必要性を判定し、しきい値を超える場合にリビルドする優先度が「高」であると分類し、しきい値を超えない場合にリビルドの優先度が「低」であると分類する。以下、具体的に説明する。
MP115は、「復元要」となっているパーセル205を含むエクステント204の中に、エクステント分類処理で分類されていない未処理のエクステントがあるか否かを判定し(S1001)、未処理のエクステントがある場合(ステップS1001:YES)、MP115は、未処理のエクステント204から処理対象とするエクステント204を1つ選択し、パーセルマッピングテーブル403を参照し、処理対象のエクステント204を構成するパーセル205を特定し、特定したパーセル205のパーセル状態606が「復元要」となっているパーセル205の数を取得する(ステップS1002)。
次に、MP115は、パーセル状態606が「復元要」となっているパーセル数がしきい値以下であるか否かを判定する(ステップS1003)。
この結果、パーセル状態606が「復元要」のパーセル数がしきい値以下である場合(ステップS1003:YES)、対象のエクステントについて、データが復元できなくなってしまうまでの猶予が比較的あるのでリビルドする優先度を「低」に分類し、パーセルマッピングテーブル403の対象のエクステントに対応するエントリのエクステント回復優先度607に、「低優先度」を設定し(ステップS1004)、処理をステップS1001に進める。
一方、パーセル状態606が「復元要」のパーセル数がしきい値を超える場合(ステップS1003:NO)、対象のエクステントについて、データが復元できなくなってしまうまでの猶予がない、又はほとんどないのでリビルドする優先度を「高」に分類し、パーセルマッピングテーブル403の対象のエクステントに対応するエントリのエクステント回復優先度607に、「高優先度」を設定し(ステップS1005)、処理をステップS1001に進める。
なお、分類されていないエクステント204が無い場合(ステップS1001:NO)、MP115は、エクステント分類処理を終了する。
ここで、ステップS1003で用いるしきい値としては、例えば、エクステント204がRAID6構成で構成されており、データ冗長度が2であるとした場合には、1としてもよい。エクステント204内に「復元要」のパーセル205が2つあれば、新たに1つのパーセル205が「復元要」となってリードできなくなると、データの復元が不可能となってしまうため、早期にパーセル205の回復をはかる必要があり、リビルドの優先度を「高」に分類してもよい。一方、エクステント204内に「復元要」のパーセル205が1であれば、新たに1つのパーセル205が「復元要」となってリードできなくなったとしても、残りのパーセル205からデータの復元が可能であるため、優先度を「低」に分類してもよい。
次に、リビルド処理(ステップS904、S907)について詳細に説明する。
図11は、実施例1に係るリビルド処理のフローチャートである。
リビルド処理においては、MP115は、設定されたリビルド速度に従って処理を実行(制御)する。まず、MP115は、パーセルマッピングテーブル403を参照して、処理対象のエクステント204内にリビルドが未完了のパーセル205があるか否か、すなわち、パーセル状態が「復元要」のパーセル205があるか否かを判定する(ステップS1101)。この結果、リビルドが未完了のパーセル205がない場合(ステップS1101:NO)には、MP115は、リビルド処理を終了する。
一方、リビルドが未完了のパーセル205がある場合(ステップS1101:YES)には、MP115は、リビルドが未完了の1つのパーセル205の1つのストライプ206のデータ(ストライプデータ要素)について、データ復元処理(図12参照)を実行する(ステップS1102)。
次いで、MP115は、パーセル205の全てのストライプ206のデータが復元済みであるか否かを判定する(ステップS1103)。
この結果、全てのストライプのデータが復元済みでない場合(ステップS1103:NO)には、MP115は、処理をステップS1102に進める。一方、パーセル205の全てのストライプ206のデータが復元済みである場合(ステップS1103:YES)には、MP115は、パーセルマッピングテーブル403のこのパーセル205に対応するエントリのパーセル状態606を復元済み(復元不要)を示す内容(本実施例では、空白)に設定し(ステップS1104)、処理をステップS1101に進める。
なお、図11に示すリビルド処理においては、リビルドが未完了の各パーセル205に対するデータ復元処理(S1102)を順次実行するようになっているが、本発明はこれに限られず、リビルドが未完了の複数のパーセル225に対する複数のデータ復元処理を並行して実行するようにしてもよい。このようにすると複数のパーセル205に対するリビルド処理の時間を低減することができる。また、データ復元処理を並行して実行する場合においては、或るデータ復元処理の対象とするパーセル205としては、他のデータ復元処理で使用するパーセル205(復元元のパーセル及び復元先のパーセル)を有する下位ストレージ装置121以外の下位ストレージ装置121のパーセル205から選択するようにしてもよい。このようにすると、下位ストレージ装置121に対するアクセスの衝突を低減でき、複数のパーセル205に対するデータ復元処理の並列効果を向上することができ、その結果、リビルド処理の時間を効果的に短縮することができる。
次に、データ復元処理(ステップS1102)について詳細に説明する。
図12は、実施例1に係るデータ復元処理のフローチャートである。
データ復元処理においては、MP115は、設定されたリビルド速度に従って処理を実行(制御)する。まず、MP115は、復元対象のパーセル205のストライプ206が論理ページに対して割当てられているか否かを判定する(ステップS1201)。ここで、復元対象のパーセル205のストライプ206が論理ページに対して割当てられているか否かについては、パーセルマッピングテーブル403を参照し、復元対象のパーセル205のストライプ206に対応する仮想プール空間番号と、エクステント番号と、ドライブオフセット#とを特定し、これらエクステント番号及びドライブオフセット#に基づいて物理ページ番号を特定し、ページマッピングテーブル402を参照し、特定した物理ページ番号に論理ページの番号が対応付けられているか否かを特定することにより把握することができる。
この結果、復元対象のパーセル205のストライプ206が論理ページに割当てられていない場合(ステップS1201:NO)には、MP115は、データ復元処理を終了する。
一方、復元対象のパーセル205のストライプ206が論理ページに割当てられている場合(ステップS1201:YES)には、MP115は、パーセルマッピングテーブル403から復元元領域と、復元先領域とを格納する下位ストレージ装置121及び復元元領域及び復元先領域の下位ストレージ装置121での位置を算出する(ステップS1202)。
次いで、MP115は、CM113に復元元領域のデータを格納するためのキャッシュスロットを確保し、確保したキャッシュスロットのロックを取得する(ステップS1203)。次いで、MP115は、復元元領域の下位ストレージ装置121から、ロックを取得したキャッシュスロットに対して、転送バッファ110を介して、復元元領域のデータ要素及び/又はパリティを転送する(ステップS1204)。
次いで、MP115は、全ての復元元領域の下位ストレージ装置121から、復元元領域のデータ要素及び/又はパリティを転送し終えたか否かを判定する(ステップS1205)。
この結果、全ての復元元領域の下位ストレージ装置121から、復元元領域のデータ要素及び/又はパリティを転送し終えていない場合(ステップS1205:NO)には、MP115は、処理をステップS1203に進め、処理の対象としていない復元元領域の下位ストレージ装置121を対象に処理を実行する。
一方、全ての復元元領域の下位ストレージ装置121から、復元元領域のデータ要素及び/又はパリティを転送し終えた場合(ステップS1205:YES)には、MP115は、処理をステップS1206に進める。
ステップS1206では、MP115は、処理対象としていない復元先領域の1つを処理対象として、CM113にこの復元先領域のデータを格納するためのキャッシュスロットを確保する。次いで、MP115は、全ての復元先領域のキャッシュスロットを確保し終えたか否かを判定する(ステップS1207)。この結果、全ての復元先領域のキャッシュスロットを確保し終えていない場合(ステップS1207:NO)には、MP115は、処理をステップS1206に進める。
一方、全ての復元先領域のキャッシュスロットを確保し終えた場合(ステップS1207:YES)には、MP115は、CM113上の複数の復元元領域のデータ要素及びパリティに基づいて、データを復元する演算処理を実行して復元データを生成し、生成した復元データをCM113の復元先のキャッシュスロットに格納する(ステップS1208)。なお、MP115は、以降において、CM1113に格納された復元データを下位ストレージ装置121に書き込む処理を行うこととなる。なお、この際、MP115は、複数の復元先領域に対する復元データをまとめて下位ストレージ装置121に書き込むようにすることで、下位ストレージ装置121への書き込み効率を向上することができる。
次いで、MP115は、復元元領域のデータを格納していたCM113のキャッシュスロットを解放し(ステップS1209)、処理をステップS1201に進める。
次に、通常リビルド処理について詳細に説明する。
図13は、実施例1に係る通常リビルド処理の一例を示すフローチャートである。
通常リビルド処理は、上位ストレージ装置101において速度制御リビルド処理を実行する設定がされていない場合に実行される処理である。
通常リビルド処理では、MP115は、パーセルマッピングテーブル403を参照し、パーセル状態606が「復元要」のパーセル205があるか否かを判定する(S1301)。この結果、パーセル状態606が「復元要」のパーセルがない場合(ステップS1301:NO)、MP115は、通常リビルド処理を終了する。一方、パーセル状態606が「復元要」のパーセル205がある場合(ステップS1301:YES)、MP115は、「復元要」のパーセル205を含むエクステントを対象に、図11に示すリビルド処理を実施し(ステップS1302)、処理をステップS1301に進める。なお、ステップS1302におけるリビルド処理においては、MP115は、リビルドの実行速度を「高」として処理を実行(制御)する。
通常リビルド処理によると、復元が必要なパーセルを含むエクステントに対して、同一の速度で復元処理を行うことができる。本実施例では、通常リビルド処理と、速度制御リビルド処理とを設定により変更できるので、例えば、ホスト103に対するI/O性能の低下が問題にならない場合には、通常リビルド処理を実行することにより、復元が必要な全てのエクステント204に対するリビルドを早期に終了させることができる。
次に、リビルド処理の設定を行うための管理サーバ102の管理画面について説明する。
図14は、実施例1に係る管理サーバの管理画面の一例を示す図である。
管理画面1401は、プールを単位として、このプールに属する領域で管理されるデータ単位に対するリビルド処理のモードをユーザが指定するために管理サーバ102に表示される画面である。管理画面1401は、速度制御リビルドモード、すなわち、速度制御リビルド処理の実行を行う「ON」設定とするか、速度制御リビルド処理の実行を行わない、すなわち、通常リビルド処理を実行する「OFF」設定とするかを指定するためのラジオボタンが表示されるデータ復元処理設定領域1402を有する。このデータ復元処理設定領域1402において、ユーザが図示しない入力手段により、ラジオボタンを選択することにより、その選択に対応する設定内容が、管理サーバ102から上位ストレージ装置101に送信されて、例えば、LM116で管理される。MP115は、下位ストレージ装置121の故障時等においてリビルド処理を実行する場合には、LM116の設定内容を参照し、設定内容に対応するリビルド処理を実行する。なお、図14においては、プールを単位としてリビルド処理のモードを設定可能とする管理画面を示したが、本発明はこれに限られず、例えば、管理画面を、仮想ボリュームを単位としてリビルド処理のモードを設定可能とする画面として、その設定内容に従って、MP115が仮想ボリュームを単位としてのリビルド処理を実行するようにしてもよい。
以上説明したように、実施例1に係る上位ストレージ装置101によると、リビルド優先度の高いエクステントを、高い速度でリビルドを実施して短時間でリビルドを完了させることで、データの信頼性を早期に確保し、リビルド優先度の低いエクステントについては、低い速度でリビルドを実施することで、リビルド実行時におけるホスト103からのI/Oに由来するI/Oとの衝突を低減することができ、ホスト103に対するI/O性能の低下を抑制することができる。
なお、上記した実施例1では、エクステント分類処理(ステップS901)において、リビルドの優先度を「高」、「低」の2段階とする例を示していたが、リビルドの優先度を「高」、「中」、「低」のように3つ以上の段階に分類してもよい。この場合には、各優先度に対するリビルドの処理速度をそれぞれ、「高」、「中」、「低」に設定するようにすればよい。
次に、実施例3に係る計算機システムについて説明する。
実施例3は、実施例1において、リビルド処理を実施する優先度を、故障ドライブに含まれるストライプ206がデータ部であるか、パリティ部であるかに応じて決定するようにした実施例である。なお、実施例1と共通の部分は説明を省略する。
実施例3に係る上位ストレージ装置101は、実施例1に係るパーセルマッピングテーブル403に代えて、パーセルマッピングテーブル1601を備えている。
図16は、実施例3に係るパーセルマッピングテーブルの一例を示す図である。実施例1と共通する要素については、同一の符号を付し、重複する説明を省略する。
パーセルマッピングテーブル1601は、仮想プール空間番号601と、エクステント番号(#)602と、エクステント回復優先度607と、ドライブオフセット603と、物理ドライブ番号(#)604と、物理パーセル番号(#)605と、パーセル状態606と、ストライプ番号(#)1602と、ストライプ状態1603とのフィールドを含むエントリを管理する。
ストライプ#1602には、エントリの物理パーセル#605の物理パーセル番号が示すパーセル205に含まれるストライプ206を識別するための番号(ストライプ番号)が格納される。ストライプ状態1603には、エントリにおけるストライプ番号に対応するストライプ206の状態が格納される。本実施例では、ストライプ状態1603には、ストライプ206に格納されているデータ要素について復元が必要である場合には、そのことを示す「復元要」が設定され、それ以外の場合には、空白が設定される。例えば、下位ストレージ装置121が故障状態になった場合に、MP115がこの下位ストレージ装置121のストライプに対応するエントリのストライプ状態1603に「復元要」を設定する。また、本実施例では、パーセル状態606には、パーセル205に格納されているデータ要素について復元が必要である場合には、そのことを示す「復元要」が設定され、パリティ部について復元が必要である可能性がある場合には、そのことを示す「パリティ部復元要」が設定され、それ以外の場合には、空白が設定される。
次に、実施例3に係る速度制御リビルド処理について説明する。
図17は、実施例3に係る速度制御リビルド処理の一例を示したフローチャートである。
速度制御リビルド処理は、MP115によって、任意のタイミングで実施される。
速度制御リビルド処理では、まず、MP115は、リビルドを実施する速度を「高」に設定する(ステップS1701)。次に、MP115は、データ部リビルド処理(S1703)を実施していないエクステント204があるか否かを判定する(ステップS1702)。ここで、データ部リビルド処理を実施していないエクステント204があるか否かは、パーセルマッピングテーブル1601を参照し、パーセル状態606が、「復元要」となっているパーセル205を1つ以上含んで構成されるエクステント204があるか否かにより判断が可能である。
この結果、データ部リビルド処理を実施していないエクステント204がある場合(ステップS1702:YES)、MP115は、データ部リビルド処理を実施していないエクステント204の中の1つのエクステント204を処理対象として、データ部リビルド処理(図18参照)を実施し(ステップS1703)、処理をステップS1702に進める。データ部リビルド処理が完了したエクステントを構成するパーセルはすべて、「空白(復元不要)」または、「パリティ部復元要」のいずれかのパーセル状態となる。
一方、データ部リビルド処理を実施していないエクステント204がない場合(ステップS1702:NO)、MP115は、リビルドを実施する速度を「低」に設定する(ステップS1704)。
次に、MP115は、パリティ部リビルド処理(S1706)を実施していないエクステント204があるか否かを判定する(ステップS1705)。ここで、パリティ部リビルド処理を実施していないエクステント204があるか否かは、パーセルマッピングテーブル1601を参照し、パーセル状態606が、「パリティ部復元要」となっているパーセル205を1つ以上含んで構成されるエクステント204があるか否かにより判断が可能である。
この結果、パリティ部リビルド処理を実施していないエクステント204がある場合(ステップS1705:YES)、MP115は、パリティ部リビルド処理を実施していないエクステント204の中の1つのエクステント204を処理対象として、パリティ部リビルド処理(図19参照)を実施し(ステップS1706)、処理をステップS1705に進める。パリティ部リビルド処理が完了したエクステントを構成するパーセルはすべて、「空白」(復元不要)のパーセル状態となる。
一方、パリティ部リビルド処理を実施していないエクステント204がない場合(ステップS1705:NO)、MP115は速度制御リビルド処理を終了する。
次に、データ部リビルド処理(S1703)について詳細に説明する。
図18は、実施例3に係るデータ部リビルド処理の一例のフローチャートである。
データ部リビルド処理においては、MP115は、リビルド処理の設定に従ってリビルド処理を高速で実行(制御)する。MP115は、パーセルマッピングテーブル1601を参照して、処理対象のエクステント204内にリビルドが未完了のパーセル205があるか否か、すなわち、パーセル状態が「復元要」のパーセル205があるか否かを判定する(ステップS1801)。この結果、リビルドが未完了のパーセル205がない場合(ステップS1801:NO)には、MP115は、データ部リビルド処理を終了する。
一方、リビルドが未完了のパーセル205がある場合(ステップS1801:YES)には、MP115は、リビルドが未完了の1つのパーセル205の1つのストライプ206のデータ(ストライプデータ要素)が、データ部であるか、パリティ部であるかを判定する(ステップS1802)。
この結果、ストライプデータ要素がデータ部の場合(ステップS1802:YES)、MP115は、データ復元処理(図12参照)を実施する(ステップS1803)。データ復元処理が完了した後、MP115は、パーセルマッピングテーブル1601の復元が完了したストライプに対応するエントリのストライプ状態1603を、「復元要」から「空白(復元不要)」へ更新し(ステップS1804)、処理をステップS1805へ進める。
一方、ストライプデータ要素がデータ部でない場合(ステップS1802:NO)、MP115は、処理をステップS1805へ進める。
ステップS1805では、MP115は、パーセル205の全てのストライプ206のデータを確認済みであるか否かを判定する。この結果、全てのストライプ206のデータを確認済みでない場合(ステップS1805:NO)には、MP115は、処理をステップS1802に進める。一方、パーセル205の全てのストライプ206のデータが確認済みである場合(ステップS1805:YES)には、MP115は、処理をステップS1806に処理を進める。
ステップS1806では、MP115は、パーセル205の全てのストライプ206のストライプデータ要素が復元済みであるか否かを判定する。
この結果、全てのストライプ206のストライプデータ要素が復元済みでない場合(ステップS1806:NO)には、MP115は、パーセルマッピングテーブル1601のうち、復元が完了したストライプ206を含むパーセルのパーセル状態606を「復元要」から「パリティ部復元要」へ更新し、処理をステップS1801に進める。一方、パーセルの全てのストライプのストライプデータ要素が復元済みである場合(ステップS1806:YES)には、MP115は、パーセルマッピングテーブル1601のうち、復元が完了したストライプ206を含むパーセル205のパーセル状態606を「復元要」から「空白(復元不要)」へ更新し(ステップS1808)、処理をステップS1801に進める。
なお、ステップS1803のデータ復元処理においては、障害が発生しているデータ部のストライプデータ要素のみを対象としてデータ復元処理を行っている例を示したが、障害が発生しているデータ部のストライプデータ要素と同一のストライプ列の障害が発生しているパリティ部のストライプデータ要素も併せて復元するようにしてもよい。障害が発生しているデータ部のストライプデータ要素のみを対象とすると、上位ストレージ装置101におけるデータ部全体の復元処理の効率を向上することができる一方、同一のストライプ列のパリティ部のストライプデータ要素も併せて復元すると、このパリティ部のストライプ要素の復元に要する処理時間を短縮することができる。
次に、パリティ部リビルド処理(S1706)について詳細に説明する。
図19は、実施例3に係るパリティ部リビルド処理の一例のフローチャートである。
パリティ部リビルド処理においては、MP115は、リビルド処理の設定に従ってリビルド処理を低速で実行(制御)する。MP115は、パーセルマッピングテーブル1601を参照して、処理対象のエクステント204内にリビルドが未完了のパーセル205があるか否か、すなわち、パーセル状態が「パリティ部復元要」のパーセル205があるか否かを判定する(ステップS1901)。この結果、リビルドが未完了のパーセル205がない場合(ステップS1901:NO)には、MP115は、パリティ部リビルド処理を終了する。
一方、リビルドが未完了のパーセル205がある場合(ステップS1901:YES)には、MP115は、リビルドが未完了の1つのパーセルの1つのストライプのデータ(ストライプデータ要素)が、「復元要」であるか否かを判定する(ステップS1902)。ストライプデータ要素が、「復元要」であるか否かは、パーセルマッピングテーブル1601を参照し、処理対象のストライプ番号に対応するストライプ状態1603が「復元要」であるか否かにより判定することができる。
この結果、ストライプデータ要素が復元要である場合(ステップS1902:YES)、MP115は、処理対象のパーセル205を対象にデータ復元処理(図12参照)を実施する(ステップS1903)。データ復元処理が完了した後、MP115は、パーセルマッピングテーブル1601の復元が完了したストライプ206に対応するエントリのストライプ状態1603を、「復元要」から、「空白(復元不要)」へ更新し(ステップS1904)、処理をステップS1905へ進める。
一方、ストライプデータ要素が復元要でない場合(ステップS1902:NO)、MP115は、処理をステップS1905へ進める。
ステップS1905では、MP115は、パーセル205の全てのストライプ206のデータを確認済みであるか否かを判定する。この結果、全てのストライプ206のデータを確認済みでない場合(ステップS1905:NO)には、MP115は、処理をステップS1902に進める。一方、パーセル205の全てのストライプ206のデータが確認済みである場合(ステップS1905:YES)には、MP115は、処理をステップS1906に処理を進める。
ステップS1906では、MP115は、パーセルマッピングテーブル1601のうち、復元が完了したストライプ206を含むパーセル205のパーセル状態606を「復元要」から「空白(復元不要)」へ更新し、処理をステップS1901に進める。
以上説明したように、実施例3においては、ホスト103からリードされるデータ部分をホスト103からリードされないパリティ部分よりも、優先して高速にリビルド処理を行うことで、コレクションリードが発生する時間を短縮することが可能であり、パリティ部については、低速のリビルド処理を行うことで、その間のホスト103のI/O性能の低下を抑制することができる。
次に、実施例4に係る計算機システムについて説明する。
実施例4は、実施例1に対して、最初に実行する高速でのリビルド処理(第一リビルド処理)時に復元するパーセル数を、エクステント204内の故障パーセル数未満とし、かつ複数のエクステント204に対して並列に処理を行い、かつ並列でリビルドするエクステント204の復元先の下位ストレージ装置121を複数の下位ストレージ装置121に分散させることで、データの冗長度が低下している期間を短縮するようにし、その後、相対的に低速でのリビルド処理(第二リビルド処理)を実行することにより、その間のホスト103のI/O性能の低下を抑制できるようにする実施例である。第一リビルド処理で復元して下位ストレージ装置121に書き込むデータの量を削減し、かつ複数の下位ストレージ装置121に並列して書き込みを行うことで、ホストのI/O性能を低下させる第一リビルド処理の完了にかかる時間を短縮することができる。なお、実施例1と共通の部分は説明を省略する。
図20は、実施例4に係るローカルメモリの構成図である。
ローカルメモリ116は、通常リビルドプログラム802と、速度制御リビルドプログラム803と、データ復元プログラム804と、並列データ復元プログラム2003と、リビルド先領域決定プログラム2002とを格納する。
リビルド先領域決定プログラム2002は、MP115にリビルド先領域決定処理(図23参照)を実行させるためのプログラムである。並列データ復元プログラム2003は、MP115に並列データ復元処理(図24参照)を実行させるためのプログラムである。
図21は、実施例4に係るパーセルマッピングテーブル2101の一例を示す図である。
パーセルマッピングテーブル2101は、仮想プール空間番号601と、エクステント番号(#)602と、ドライブオフセット603と、物理ドライブ番号(#)604と、物理パーセル番号(#)605と、パーセル状態606と、復元先物理ドライブ番号(#)2102とのフィールドを含むエントリを管理する。
パーセル状態606には、エントリにおける物理パーセル#605の物理パーセル番号に対応するパーセル205の状態が格納される。本実施例では、パーセル状態606には、パーセル205に格納されているデータ要素について復元が必要である場合には、そのことを示す「復元要」が設定され、MP115がリビルド先領域決定処理を実行した結果、第一リビルド処理(図24参照)での復元が必要と判定された場合には、そのことを示す「第一リビルド復元要」が設定され、それ以外の場合には、空白が設定される。例えば、下位ストレージ装置121が故障状態になった場合に、MP115がこの下位ストレージ装置121のパーセル205に対応するエントリのパーセル状態606に「復元要」を設定する。
復元先物理ドライブ#2102には、パーセル状態606が示すパーセル状態が、「復元要」または「第一リビルド復元要」状態であるパーセルが、リビルド処理によって復元される復元先のパーセル205を含む物理ドライブの番号(物理ドライブ番号)が格納される。
次に、実施例4に係る速度制御リビルド処理について説明する。
図22は、実施例4に係る速度制御リビルド処理の一例を示すフローチャートである。
MP115は、まず、リビルド先領域決定処理(図23参照)を実施する(ステップS2201)。リビルド先領域決定処理では、パーセル状態が「復元要」となっているパーセル205を含むエクステント204に対して、第一リビルド処理で復元対象とするパーセル205と、その復元先の下位ストレージ位置121を決定する。
次に、MP115は、リビルドを実施する速度を「高」に設定する(S2202)。次に、MP115は、第一リビルド処理(S2204)を実施していないエクステント204があるか否かを判定する(ステップS2203)。
この結果、第一リビルド処理を実施していないエクステント204がある場合(ステップS2203:YES)、MP115は、第一リビルド処理を実施していないエクステント204の中の1つのエクステント204を処理対象として、第一リビルド処理(図24参照)を実施し(ステップS2204)、処理をステップS2203に進める。第一リビルド処理が完了したエクステント204を構成するパーセル205はすべて、「空白(復元不要)」の状態となる。
一方、第一リビルド処理を実施していないエクステント204がない場合(ステップS2203:NO)、MP115は、リビルドを実施する速度を「低」に設定する(ステップS2205)。
次に、MP115は、第二リビルド処理(S2207)を実施していないエクステント204があるか否かを判定する(ステップS2206)。
この結果、第二リビルド処理を実施していないエクステント204がある場合(ステップS2206:YES)、MP115は、第二リビルド処理を実施していないエクステント204の中の1つのエクステント204を処理対象として、第二リビルド処理(図13の通常リビルド処理と同様)を実施し(ステップS2207)、処理をステップS2206に進める。
一方、第二リビルド処理を実施していないエクステント204がない場合(ステップS2206:NO)、MP115は、速度制御リビルド処理を終了する。
次に、リビルド先領域決定処理(S2201)について詳細に説明する。
図23は、実施例4に係るリビルド先領域決定処理の一例を示すフローチャートである。
MP115は、まず、「復元要」状態のパーセル205に対して、復元先の領域を決定し、決定した領域の物理ドライブ番号を、パーセルマッピングテーブル2101の復元先ドライブ番号2102に格納する(ステップS2301)。復元先の領域は、データ保護のため、「復元要」のパーセル205を含むエクステント204が含むパーセル205が所属する下位ストレージ装置121以外の下位ストレージ装置121から選択される。本実施例では、故障した下位ストレージ装置121に対して、上位ストレージ装置101において、スペア装置としてドライブ単位で予め設定されている下位ストレージ装置121を用いる例を記載するが、復元先をパーセル205ごとに設定してもよい。
次に、MP115は、未処理のエクステント204があるか否かを判定する(ステップS2302)。この結果、未処理のエクステント204がない場合(ステップS2302:NO)、MP115は、リビルド先領域決定処理を終了する。
一方、未処理のエクステント204がある場合(ステップS2302:YES)、MP115は、未処理のエクステント204の中の1つのエクステント204を処理対象として、エクステント204内で「復元要」状態のパーセルの数を取得する(ステップS2303)。「復元要」状態のパーセル数は、パーセルマッピングテーブル2101を参照し、対象のエクステント204のエクステント#が示すエントリのパーセル状態606が、「復元要」となっているパーセルの数を特定することにより取得可能である。
次いで、MP115は、特定した「復元要」状態のパーセル数が、所定のしきい値以下であるか否かを判定する(S2304)。この判定で使用するしきい値は、例えば、データの信頼性維持に対して許容される、低下可能な冗長度(低下冗長度)によって決めてよい。例えば、3パリティによって下位ストレージ装置121が冗長構成されている場合、データの冗長度は3である。このとき、信頼性維持のために、冗長度2以上が必要だとすると、エクステントに許容される、「復元要」状態のパーセルは、3−2=1個であり、しきい値は「1」と設定すればよい。
この結果、特定した「復元要」状態のパーセル数が、所定のしきい値以下である場合(S2304:YES)には、このエクステント204のパーセルは、第一リビルド処理の対象とならないので、MP115は、処理をステップS2302に進める。
一方、特定した「復元要」状態のパーセル数が、所定のしきい値を超える場合(S2304:NO)には、MP115は、第一リビルド処理において復元対象とするパーセル205と、復元先のドライブ#とを決定する(ステップS2305)。ステップS2305では、MP115は、エクステント204内の「復元要」状態のパーセル205から、「復元要」状態のパーセル数−「しきい値」の数に相当するパーセル205を、復元対象とするパーセル205として選択する。このパーセル選択の際、このパーセル205の復元先となる物理ドライブが、エクステント204ごとに分散するようにパーセル205を選択する。これにより、復元先領域が複数の下位ストレージ装置121に分散し、復元時のライトのI/O負荷が分散されることとなる。なお、復元先の物理ドライブは、パーセルマッピングテーブル2101の復元先ドライブ番号エントリ2102を参照することで特定可能である。
次いで、MP115は、復元対象として選択したパーセル205に対応するパーセルマッピングテーブル2101のエントリのパーセル状態606に対して、「第一リビルド復元要」を設定し(S2306)、そのエントリの復元先物理ドライブ2102に、決定した復元先のドライブ#を設定し(ステップS2307)、処理をステップS2302に進める。
次に、第一リビルド処理(S2204)について説明する。
第一リビルド処理においては、MP115は、リビルド処理の設定に従ってリビルド処理を高速で実行(制御)する。第一リビルド処理は、実施例1の図11に示すリビルド処理において、データ復元処理(ステップS1102:図12)に代えて、並列データ復元処理(図24参照)を実行するようにした処理である。なお、その他のステップは、図11に示すリビルド処理と同様であるので、説明を省略する。
次に、第一リビルド処理において実行される並列データ復元処理について説明する。
図24は、実施例4に係る並列データ復元処理の一例を示すフローチャートである。
この並列データ復元処理は、MP115によって複数が並列して実行されてもよい。MP115は、復元対象の領域である復元対象のパーセル205のストライプ206が論理ページに対して割当てられているか否かを判定する(ステップS2401)。ここで、復元対象のパーセル205のストライプ206が論理ページに対して割当てられているか否かについては、パーセルマッピングテーブル2101により、復元対象のパーセル205のストライプ206に対応する仮想プール空間番号と、エクステント番号と、ドライブオフセット#とを特定し、これらエクステント番号及びドライブオフセット#に基づいて物理ページ番号を特定し、ページマッピングテーブル402により、特定した物理ページ番号が論理ページ番号に対応付けられているか否かを特定することにより把握することができる。
この結果、復元対象のパーセル205のストライプ206が論理ページに割当てられていない場合(ステップS2401:NO)には、MP115は、並列データ復元処理を終了する。
一方、復元対象のパーセル205のストライプ206が論理ページに割当てられている場合(ステップS2401:YES)には、MP115は、パーセルマッピングテーブル2101から復元元領域を格納する下位ストレージ装置121と、復元先領域を格納する下位ストレージ装置121と、復元元領域と復元先領域との下位ストレージ装置121での位置とを算出する(ステップS2402)。
次いで、MP115は、復元対象のパーセル205の1つを処理対象として、復元元領域のデータをCM113に格納するためのキャッシュスロットを確保し、確保したキャッシュスロットのロックを取得する(ステップS2403)。次いで、MP115は、復元元領域の下位ストレージ装置121から、ロックを取得したキャッシュスロットに対して、転送バッファ110を介して、復元元領域のデータ要素及び/又はパリティを転送する(ステップS2404)。
次いで、MP115は、処理対象のパーセル205に対して全ての復元元領域の下位ストレージ装置121から、復元元領域のデータ要素及び/又はパリティを転送し終えたか否かを判定し(ステップS2405)、全ての復元元領域の下位ストレージ装置121から、復元元領域のデータ要素及び/又はパリティを転送し終えていない場合(ステップS2405:NO)には、処理をステップS2403に進めて、処理対象としていない他のパーセル205に対する処理を行うようにする一方、全ての復元元領域の下位ストレージ装置121から、復元元領域のデータ要素及び/又はパリティを転送し終えた場合(ステップS2405:YES)には、処理をステップS2406に進める。
ステップS2406では、MP115は、復元するデータを格納するためのキャッシュスロットをCM113に確保する。
次いで、MP115は、全ての第一リビルド処理の対象である復元先領域のキャッシュスロットを確保し終えたか否かを判定する(ステップS2407)。ここで、第一リビルド処理の対象である復元先領域か否かは、パーセルマッピングテーブル2101において、このキャッシュスロットに格納されるデータ要素を格納するパーセル205のパーセル状態606が、「第一リビルド復元要」状態であるか否かで判別可能である。
この結果、全ての第一リビルド処理の復元先領域のキャッシュスロットを確保し終えていない場合(ステップS2407:NO)には、処理をステップS2403に進めて、処理対象としていない第一リビルド処理対象の復元先領域のキャッシュスロットを確保する処理を行う。
一方、全ての第一リビルド処理の対象の復元先領域のキャッシュスロットを確保し終えた場合(ステップS2407:YES)には、MP115は、CM113上の複数の復元元領域のデータ(データ要素及びパリティのデータ)に基づいて、データを復元する演算処理を実行して復元データを生成し、復元データをCM113のキャッシュスロットに格納する(ステップS2408)。なお、復元データは、以降において、MP115がCM113に格納されたデータを下位ストレージ装置121に書き込む処理を行うことで、下位ストレージ装置121に格納されることとなる。
次いで、MP115は、復元元領域のデータを格納していたCM113のキャッシュスロットを解放し(ステップS2409)、処理をステップS2401に進める。