以下、本開示の実施形態について図面を参照して説明する。
(第1の実施形態)
図1は、本開示の第1の実施形態の情報システムの構成を示す図である。図1に示す情報システムは、1以上の実ストレージシステム(Real Storage System)100と、1以上のサーバ(Server)110と、1以上のストレージボックス(Storage Box)120と、ストレージ管理サーバ(Storage Management Server)130とを有する複合型ストレージシステムである。
実ストレージシステム100及びサーバ110は、SAN(Storage Area Network)140を介して相互に接続され、実ストレージシステム100及びストレージボックス120は、ボックスネットワーク(Box Network)150を介して相互に接続される。具体的には、実ストレージシステム100は、ストレージポート101によってSAN140と接続され、サーバ110は、サーバポート111によってSAN140と接続される。また、実ストレージシステム100は、バックエンドポート102によってボックスネットワーク150と接続され、ストレージボックス120は、ボックスポート121によってボックスネットワーク150と接続される。
実ストレージシステム100は、後述の論理ボリュームを介してストレージボックス120(具体的には、後述のストレージ装置(Storage Unit)160)に入出力されるデータを処理するシステムである。サーバ110は、ユーザアプリケーションプログラムにより動作するシステムであり、SAN140を経由して実ストレージシステム100との間でデータの送受信を行う。実ストレージシステム100同士もSAN140経由でデータの送受信ができる。なお、SAN140では、SCSI(Small Computer System Interface)コマンドが転送可能なプロトコル(例えば、ファイバーチャネル(Fiber Channel)など)が使用される。
本実施形態では、1以上の実ストレージシステム100によって仮想的なストレージシステムである仮想ストレージシステム(Virtual Storage System)180が構成される。サーバ110は、仮想ストレージシステム180を、データの読み書きを行うストレージシステムと認識する。ただし、仮想ストレージシステム180は構成されなくてもよい。この場合、サーバ110は実ストレージシステム100をストレージシステムとして認識する。いずれの場合でも、サーバ110は、ストレージシステムに対してデータの読み書きを要求するためのサーバポート情報(Server Port Information)170(図2参照)を有する。
ストレージボックス120は、データを格納する1以上のストレージ装置160を備える。ストレージ装置160は、例えば、HDD(Hard Disk Drive)又はフラッシュメモリなどを記憶媒体として有する記憶装置である。フラッシュメモリは、SLC(Single-Level-Cell)でもよいし、MLC(Multi-Level-Cell)でもよい。記憶媒体は、これらの例に限定されず、例えば、相変化メモリなどの他の記憶媒体でもよい。
ストレージボックス120は、ボックスネットワーク150経由で、複数の実ストレージシステム100にて共有され、ストレージボックス120内のストレージ装置160は、複数の実ストレージシステム100にて共有される。ストレージボックス120は、ボックスネットワーク150経由で、仮想ストレージシステム180内の一つ以上の実ストレージシステム100と接続される。ストレージボックス120は、仮想ストレージシステム180内の全ての実ストレージシステム100と接続される必要はない。同様に、ある実ストレージシステム100に接続されてるストレージボックス120の集合は、別の実ストレージシステム100に接続されているストレージボックス120の集合と同一である必要はない。
ストレージ管理サーバ130は、実ストレージシステム100及びストレージボックス120の管理を行うための装置であり、例えば、本情報システムの管理者であるストレージ管理者にて利用される。ストレージ管理サーバ130は、不図示のネットワークなどを介して実ストレージシステム100及びサーバ110と接続される。
本実施形態では、上記の実ストレージシステム100は、容量仮想化(シン・プロビジョニング)機能を有している。容量仮想化機能では、複数のストレージ装置160を含むストレージグループにおけるデータを記憶する記憶領域が容量プールとして確保され、その容量プールがページ(実ページ)と呼ばれる単位で管理される。また、論理ボリュームが定義された段階では、論理ボリュームの記憶領域への割り当てを行わずに、ライト要求が発行された場合に、そのライト要求に応じたライトデータを格納する記憶領域に対応する実ページが論理ボリュームの部分空間である仮想ページに割り当てられる。このような容量仮想化機能に対応した仮想的な論理ボリュームを仮想論理ボリュームと呼ぶことがある。なお、仮想論理ボリュームの容量は実際の記憶領域の容量よりも大きいため、仮想ページの数は実ページの数よりも多い。
図2は、サーバポート情報170の一例を示す図である。サーバポート情報170は、サーバポート111ごとに設定される。
サーバポート情報170は、サーバポート111を識別するサーバポート識別子1701と、当該サーバポート111からアクセス可能な1以上の論理ボリュームを識別する論理ボリューム識別子1702と、当該論理ボリュームを有するストレージシステムを識別するストレージシステム識別子1703と、サーバ110から当該論理ボリュームまでの経路であるストレージ経路を識別するストレージパス識別子1704とを含む。論理ボリューム識別子1702、ストレージシステム識別子1703及びストレージパス識別子1704は、当該サーバポート111からアクセス可能な論理ボリュームごとに設定される。ある。また、1つの論理ボリュームにアクセス可能なストレージパスが複数存在する場合、1つの論理ボリューム識別子1702に対して複数のストレージパス識別子1704が格納される。
本実施形態では、論理ボリュームを有するストレージシステムは、仮想ストレージシステム180であるとする。このため、ストレージシステム識別子1703は、仮想ストレージシステム180を識別する識別子となるが、仮想ストレージシステム180が構成されていない場合には、実ストレージシステム100を識別する識別子となる。また、論理ボリューム識別子1702は、仮想論理ボリュームを識別する識別子であるが、仮想ストレージシステム180が構成されていない場合、実ストレージシステム100の論理ボリュームを識別する識別子となる。なお、仮想論理ボリュームの識別子は、仮想ストレージシステム180内でユニークな値である。また、各実ストレージシステム100が論理ボリュームを有するため、論理ボリュームの識別子は、実ストレージシステム100内でユニークな値である。
また、サーバ110が発行するリード・ライト要求(リード要求及びライト要求)は、論理ボリューム識別子1702、ストレージシステム識別子1703及びストレージパス識別子1704を含む。ストレージパス識別子1704は仮想ではない実際のストレージパスを識別するため、リード・ライト要求は、リード・ライト要求を受け取る実ストレージシステム100を示す。
図3は、実ストレージシステム100の構成の一例を示す図である。図3に示す実ストレージシステム100は、バックエンドポート102、1つ以上のストレージコントローラ(Storage Controller)200、キャッシュ(Cache Memory)210、共有メモリ(Common Memory)220、1つ以上の内部ストレージ装置(Internal Storage)230及び接続装置(Connecting Unit)240を有する。
ストレージコントローラ200は、プロセッサ250、メモリ260及びバッファ270を有する。プロセッサ250は、メモリ260に記憶されたプログラムを読み取り、その読み取ったプログラムを実行して種々の処理を実行する。例えば、ストレージコントローラ200は、サーバ110から発行されたリード・ライト要求に応じた処理を実行する。メモリ260は、プロセッサ250の動作を規定するプログラムと、プロセッサ250で使用される種々の情報とを記憶する。バッファ270は、後述する冗長データと、冗長データの生成に必要な情報を格納する。バッファ270は、キャッシュメモリ210に記憶されたデータをストレージ装置(ストレージボックス120内のストレージ装置160又は内部ストレージ装置230)に恒久的に格納する際に、そのデータを一時的に格納する記憶領域としても使用される。
キャッシュメモリ210及び共有メモリ220は、例えば、DRAM(Dynamic Random Access Memory)のような不揮発性メモリにて構成される。キャッシュメモリ210及び共有メモリ220は、バッテリーなどにより不揮発化されることが好ましい。また、キャッシュメモリ210及び共有メモリ220は、高信頼化のため、2重化されてもよい。キャッシュメモリ210は、内部ストレージ装置230とストレージボックス120内のストレージ装置160とに格納されたデータの中で、ストレージコントローラ200にて頻繁にアクセスされるデータを格納する。共有メモリ220に格納されるデータについては後述する(図5参照)。
内部ストレージ装置230は、ストレージボックス120内のストレージ装置160と同様な記憶媒体を有する記憶装置である。なお、実ストレージシステム100は、ストレージ装置160と同様に内部ストレージ装置230に対するデータの読み書きも制御する。また、内部ストレージ装置230はなくてもよい。本実施形態では、実ストレージシステム100は、特に断りのない限りに、ストレージ装置160にデータを書き込むものとするが、内部ストレージ装置230にデータを書き込んでもよい。
接続装置240は、実ストレージシステム100内の各部200~230を相互に接続する装置である。ストレージコントローラ200は、接続装置240経由で、1つ以上のストレージボックス120と接続される。これにより、ストレージコントローラ200は、1つ以上のストレージボックス120内のストレージ装置160に対してデータの読み書きを行うことができる。また、本実施形態では、ストレージボックス120には、実ストレージシステム100内の一つ以上のストレージコントローラ200に接続されているものとする。
図4は、キャッシュメモリ210の構成例を示す図である。図4に示すキャッシュメモリ210は、固定長のスロット211に分割されている。スロット211は、リード・ライトデータの割り当て単位となる。
本実施形態では、ストレージコントローラ200は、ライト要求を受け付けた際のライト処理では、ライト要求によって書き込みが要求されたライトデータをキャッシュメモリ210に書き込み、その後、ライトデータをキャッシュメモリ210からストレージ装置160に移動させる。ストレージコントローラ200は、ライトデータをキャッシュメモリ210に書き込むと、ライト要求が完了した旨の応答情報をサーバ110に返信し、その後、所定のタイミングでライトデータをキャッシュメモリ210からストレージ装置160に移動させる。ただし、ストレージコントローラ200は、ライトデータをストレージ装置160に格納した場合に、応答情報を返信してもよい。
また、本実施形態の情報システムは、RAID(Redundancy Array Independent Device)1又はRAID5のような、ストレージ装置160のいずれかに障害が発生しても、そのストレージ装置160のデータを回復できるRAID(Redundancy Array Independent Device)機能を有している。なお、RAIDグループは、本実施形態では、1つのストレージボックス内のストレージ装置160の集合、又は、1つの実ストレージシステム内の内部ストレージ装置230の集合で構成される。
図5は、共有メモリ220に格納される情報の一例を示す図である。図5の例では、共有メモリ220は、ストレージシステム情報(Storage System Information)221、他ストレージシステム情報(Other Storage Systems Information)222、仮想論理ボリューム情報(Virtual Logical Volume Information)223、論理ボリューム情報(Logical Volume Information)224、ストレージボックス情報(Storage Box Information)225、ストレージグループ情報(Storage Group Information)226、実ページ情報(Real Page Information)227、ストレージ装置情報(Storage Unit Information)228、キャッシュ管理情報(Cache Management Information)229、空きキャッシュ管理情報ポインタ(Empty Cache Management Information Pointer)22A、及び、仮想ページ容量(Virtual Page Capacity)22Bを有する。
図6は、ストレージシステム情報221の一例を示す図である。ストレージシステム情報221は、ストレージシステム情報221を格納している共有メモリ220を有する実ストレージシステム100(当該実ストレージシステム100)に関する情報である。ストレージシステム情報221は、仮想ストレージシステム識別子(Virtual Storage System Identifier)2211及び実ストレージシステム識別子(Real Storage System Identifier)2212を含む。
仮想ストレージシステム識別子2211は、当該実ストレージシステム100を含む仮想ストレージシステム180を識別するための識別子である。実ストレージシステム識別子2212は、当該実ストレージシステム100を識別するための識別子である。
図7は、他ストレージシステム情報222の一例を示す図である。他ストレージシステム情報222は、当該実ストレージシステム100以外の実ストレージシステム100である他の実ストレージシステム100に関する情報である。他ストレージシステム情報222は、仮想ストレージシステム識別子2221及び他実ストレージシステム識別子2222を含む。
仮想ストレージシステム識別子2221は、当該実ストレージシステム100を含む仮想ストレージシステム180を識別するための識別子である。他実ストレージシステム識別子2222は、当該実ストレージシステム100を含む仮想ストレージシステム180に含まれる他の実ストレージシステム100を識別するための識別子である。
図8は、仮想論理ボリューム情報223の一例を示す図である。仮想論理ボリューム情報223は、仮想論理ボリュームに関する情報であり、仮想論理ボリュームごとに設定される。仮想論理ボリューム情報223は、仮想論理ボリューム識別子(Virtual Logical Volume Identifier)2231、制御権情報(Control Right Information)2232、制御権実ストレージシステム識別子(Real Storage System Identifier)2233、制御権ストレージパス識別子(Storage Port Identifier)2234、及び、制御権論理ボリューム識別子(Logical Volume Identifier)2235を含む。
仮想論理ボリューム識別子2231は、当該仮想論理ボリュームを識別するための識別子である。制御権情報2232は、当該実ストレージシステム100が当該仮想論理ボリュームの制御権を有するか否かを示す。制御権は、仮想論理ボリュームについてデータの入出力を行う権限であり、実ストレージシステム100のいずれか1つに割り当てられる。
制御権実ストレージシステム識別子2233及び制御権ストレージパス識別子2234は、当該実ストレージシステム100が当該仮想論理ボリュームの制御権を有していない場合に、制御権を有する実ストレージシステムを特定するための情報である。制御権実ストレージシステム識別子2233は、制御権を有する実ストレージシステムの識別子である。制御権ストレージパス識別子2234は、当該仮想論理ボリュームが接続されている1つ以上のストレージパスの識別子である。制御権論理ボリューム識別子2235は、制御権を有する実ストレージシステム100内の論理ボリュームの識別子である。
図9は、論理ボリューム情報224の一例を示す図である。論理ボリューム情報224は、当該実ストレージシステムが有する論理ボリュームごとに存在する。論理ボリューム情報224は、論理ボリューム識別子(Logical Volume ID)2240、論理容量(Logical Capacity)2241、論理ボリュームタイプ(Logical Volume Type)2242、論理ボリュームRAIDタイプ(Logical Volume RAID Group Type)2243、実ページポインタ(Real Page Pointer)2244、回復中フラグ(Recovery Flag)2245、回復・戻しポインタ(Recovery Return Pointer)2246、リード・ライト中カウンタ(Read Write Counter)2247、戻し中フラグ(Return Flag)2248、スペアアクセス中フラグ(Spare Access Flag)2249、ウエイト中フラグ(Wait Flag)224A、回復・戻しウエイト中フラグ(Recovery Return Wait Flag)224B、及び、キャッシュ管理情報ポインタ(Cache Management Pointer)224Cを含む。
論理ボリューム識別子2240は、当該論理ボリュームを識別するための識別子である。論理容量2241は、当該論理ボリュームの容量を示す。論理ボリュームタイプ2242は、当該論理ボリュームのタイプを示す。論理ボリュームタイプ2242は、例えば、論理ボリュームタイプ2242は、当該論理ボリュームが、内部ストレージ装置230に格納されているか、ストレージ装置160に格納されているかを示す。論理ボリュームRAIDタイプ2243は、当該論理ボリュームのRAIDタイプ(RAID0又はRAID5など)を示す。また、論理ボリュームRAIDタイプ2243は、例えば、RAID5のようにデータ(ユーザデータ)を格納するN台のストレージ装置に対して冗長データを格納する1台のストレージ装置が必要となる場合、Nの具体的な数値をさらに示す。ただし、論理ボリュームRAIDタイプ2243は、任意のRAIDタイプではなく、少なくとも一つのストレージグループ280が対応したRAIDタイプを示す。
実ページポインタ2244は、当該論理ボリュームの部分空間である仮想ページを割り当てた実ページのアドレスを示す。本実施形態では、上述したように実ストレージシステム100は、容量仮想化機能を有している。容量仮想化機能は、ライト要求に応じたライトデータを格納する領域を含む実ページを論理ボリュームの部分空間である仮想ページに割り当てる機能である。このため、論理ボリューム情報224は、論理ボリュームの容量を仮想ページのサイズで除算した数の実ページポインタ2244を有する。
回復中フラグ2245は、ストレージ装置160のいずれかに対してデータを回復する回復処理が実行中であるか否かを示す。本実施形態では、実ストレージシステム100は、ストレージ装置160で障害が発生した場合、その障害が発生したストレージ装置に格納していたデータを回復(復元)する回復処理を実行する。回復処理は、論理ボリュームの仮想ページを割り当てた実ページ(つまり、回復対象のデータを格納した実ページ)については、その実ページの制御権を有する実ストレージシステム100内のストレージコントローラ200にて実行される。また、回復処理は、論理ボリュームの仮想ページを割り当てた実ページである空きページについては、その空きページに対して仮想ページを割り当てる割り当て権限を有する実ストレージシステム100内のストレージコントローラ200にて実行される。割り当て権限は、実ストレージシステム100のいずれかに割り当てられている。本実施形態では、1つ以上のストレージ装置160をスペア装置として予め設定しておき、回復処理を実行したストレージコントローラ200は、その回復処理にて回復したデータである回復データをスペア装置のいずれかに書き込む。ただし、回復処理を実行したストレージコントローラ200は、回復データを複数のスペア装置に分散して書き込んでもよい。また、本実施形態では、回復処理は、論理ボリューム単位で実行されるが、障害が発生したストレージ装置160を含むストレージグループ単位で実行されてもよいし、それ以外の単位で実行されてもよい。本実施形態では、空き領域に対する回復処理についてはストレージグループ単位に実行される。
回復・戻し中ポインタ2246は、論理ボリュームの回復処理及び戻し処理の進捗状況を示す情報であり、回復処理及び戻し処理が実行中の仮想ページを示すポインタである。戻し処理は、障害が発生したストレージ装置160が新しいストレージ装置160に置き替えられた後で、スペア装置に格納された回復データを、スペア装置から新しいストレージ装置160に移動させる処理である。戻し処理は、本実施形態では、回復処理を行ったストレージコントローラ200にて行われる。なお、戻し処理は実行されなくてもよい。つまり、スペア装置をそのまま通常のストレージ装置160として使用してもよい。
リード・ライト中カウンタ2247は、仮想ページごとに設定され、その仮想ページに対するリード・ライト要求の数を示す。戻し中フラグ2248は、戻し中フラグ2248は、ストレージ装置160のいずれかに対して戻し処理が実行中であるか否かを示す。スペアアクセス中フラグ2249は、スペア装置へのアクセスが可能か否かを示す。。
ウエイト中フラグ224Aは、仮想ページごとに設定され、当該仮想ページに対する待ち状態のリード・ライト要求が存在するか否かを示す。ウエイト中フラグ224Aは、当該仮想ページに対する回復処理又は戻し処理の実行中に、当該仮想ページに対するリード・ライト要求が発行された場合にオンとなる。
回復・戻しウエイト中フラグ224Bは、仮想ページごとに設定され、当該仮想ページに対する待ち状態の回復処理又は戻し処理が存在するか否かを示す。回復・戻しウエイト中フラグ224Bは、当該仮想ページに対するリード・ライト処理の実行中に、回復処理又は戻し処理の実行タイミングとなった場合にオンとなる。
キャッシュ管理情報ポインタ224Cは、当該論理ボリュームをキャッシュメモリ210のスロット211に相当する容量で分割したスロット領域ごとに設定され、当該スロット領域にスロット211に割り当てられているか(スロット領域に対応するデータがキャッシュメモリ210に記憶されているか)否かを示す。キャッシュ管理情報ポインタ224Cは、スロット211が割り当てれている場合、そのスロット211に対応するキャッシュ管理情報229(図15参照)を示し、スロット211が割り当てられていない場合、ヌル状態となる。
図10は、ストレージボックス情報225の一例を示す図である。ストレージボックス情報225は、ストレージボックス120に関する情報であり、ストレージボックス120ごとに設定される。ストレージボックス情報225は、ストレージボックス識別子2251、接続情報2252、ストレージ台数2253、接続ストレージ台数2254、パス数2255、パス識別子2256、及び、スペア装置情報2257を含む。
ストレージボックス識別子2251は、当該ストレージボックス120を識別する識別子である。接続情報2252は、当該ストレージボックス120が、当該実ストレージシステム100に接続されているか否かを示す。ストレージ台数2253は、当該ストレージボックス120に接続可能なストレージ装置160の台数である。接続ストレージ台数2254は、当該ストレージボックス120に実際に接続されているストレージ装置160の台数である。パス数2255は、当該ストレージボックス120に接続されているパスの数である。パス識別子2256は、ストレージボックス120に接続されているパスごとに設定され、当該パスを識別する識別子である。スペア装置情報2257は、当該ストレージボックス120に含まれるスペア装置として使用されるストレージ装置160に関する情報である。
図11は、スペア装置情報2257の一例を示す図である。スペア装置情報2257は、台数(Number of Spare Units)22571、スペア装置ポインタ(Spare Unit Pointer)22572及び使用中フラグ(Using Flag)22573を含む。
台数22571は、当該ストレージボックス120に含まれるスペア装置の台数を示す。スペア装置ポインタ22572は、当該ストレージボックス120に含まれるスペア装置ごとに設定され、当該スペア装置となるストレージ装置160を示す。使用中フラグ22573は、当該ストレージボックス120に含まれるスペア装置ごとに設定され、当該スペア装置が使用中か否かを示す。
図12は、ストレージグループ情報226の一例を示す図である。ストレージグループ情報226は、ストレージグループに関する情報であり、ストレージグループごとに設定される。ストレージグループ情報226は、ストレージグループ識別子(Storage Group ID)2261、ストレージグループRAIDタイプ2262(Storage Group RAID Type)、空き実ページ情報ポインタ(Empty Real Page Pointer)2263、ストレージ装置ポインタ(Storage Unit Pointer)2264、ストレージ装置障害情報(Storage Unit Error Information)2265、スペアポインタ(Spare Pointer)2266、障害情報(Error Information)2267、ストレージグループ回復中フラグ(Storage Group Recovery Flag)2268、及び、ストレージグループ戻し中フラグ(Storage Group Return Flag)2269を有する。
ストレージグループ識別子2261は、当該ストレージグループを識別する識別子である。本実施形態では、ストレージグループは1つのストレージボックス120内のストレージ装置160で構成され、ストレージグループ識別子2261は、当該ストレージグループを含むストレージボックス120も識別する。ストレージグループRAIDタイプ2262は、当該ストレージグループのRAIDタイプを示す。
空き実ページ情報ポインタ2263は、仮想ページが割り当てられていない空き状態の実ページに関する実ページ情報227を示す(図17参照)。ストレージ装置ポインタ2264は、当該ストレージグループに含まれるストレージ装置160ごとに設定され、そのストレージ装置160に対応するストレージ装置情報228を示す。ストレージ装置障害情報2265は、当該ストレージグループに含まれるストレージ装置160ごとに設定され、当該ストレージ装置160が正常(障害が発生していない状態)か否かを示す。スペアポインタ2266は、当該ストレージグループに含まれるストレージ装置160ごとに設けられ、そのストレージ装置160に障害が発生し、ストレージ装置160の代わりにスペア装置を割り当てている場合に、そのスペア装置のストレージ装置情報228を示す。障害情報2267は、当該ストレージグループに含まれるストレージ装置160の少なくとも1つで障害が発生しているか否かを示す。
ストレージグループ回復中フラグ2268は、当該ストレージグループに含まれるストレージ装置160の少なくとも1つに対して回復処理が実行中か否かを示す。ストレージグループ戻し中フラグ2269は、当該ストレージグループに含まれるストレージ装置160の少なくとも1つに対して戻し処理が実行中か否かを示す。
図13は、実ページ情報227の一例を示す図である。実ページ情報227は、実ページごとに設定され、当該実ページを管理する情報である。実ページ情報227は、ストレージグループ識別子2271、実ページアドレス(Real Page Address)2272、空きページポインタ(Empty Page Pointer)2273、回復・戻し待ちフラグ(Recovery・Return Wait Flag)2274、及び、回復・戻し中フラグ(Recovery・Return Execution Flag)2275を有する。
ストレージグループ識別子2271は、当該実ページが割り当てられているストレージグループを識別する。実ページアドレス2272は、当該実ページが割り当てられているストレージグループの中における実ページのアドレスを示す。空きページポインタ2273は、当該実ページに仮想ページが割り当てられていない場合に有効な値となる情報であり、当該ストレージグループの中で、仮想ページが割り当てられていない次の実ページの実ページ情報227を示す。回復・戻し待ちフラグ2274は、当該実ページに対する回復処理又は戻し処理が待ち状態か否かを示す。回復・戻し中フラグ2275は、当該実ページに対する回復処理又は戻し処理が実行中か否かを示す。
図14は、ストレージ装置情報228の一例を示す図である。ストレージ装置情報228は、ストレージ装置(ストレージ装置160及び内部ストレージ装置230)に関する情報であり、ストレージ装置ごとに設定される。ストレージ装置情報228は、ストレージ装置識別子(Storage Unit ID)2281、接続形態(Connection Type)2282、接続パス(Connection Path)2283、ストレージタイプ(Storage Type)2284及び容量(Capacity)2285を含む。
ストレージ装置識別子2281は、当該ストレージ装置を識別する識別子である。接続形態2282は、当該ストレージ装置がストレージ装置160か内部ストレージ装置230かを示す。接続パス2283は、当該ストレージ装置がストレージ装置160装置の場合に、当該ストレージ装置と接続されているパスの識別子を示す。ストレージタイプ2284は、当該ストレージ装置に備わった記憶媒体の種類を示す。容量2285は、当該ストレージ装置の容量を示す。なお、本実施形態では、ストレージグループに含まれる各ストレージ装置のストレージタイプ2284及び容量2285は全て等しいとする。
図15は、キャッシュ管理情報229の一例である。キャッシュ管理情報229は、スロット211ごとに設定される情報である。キャッシュ管理情報229は、次キャッシュ管理情報ポインタ(Next Cache Management Information Pointer)2291、割り当て論理ボリュームアドレス(Allocated Logical Volume Address)2292、ブロックビットマップ(Block Bit Map)2293及び更新ビットマップ(Update Bit Map)2294を含む。
次キャッシュ管理情報ポインタ2291は、データを格納していないスロットに対応するキャッシュ管理情報229において有効となる情報であり、データを格納していない次のスロットに対応するキャッシュ管理情報229を示すポインタである。割り当て論理ボリュームアドレス2292は、キャッシュ管理情報229に対応するスロット211に、どの論理ボリュームのどのアドレスから開始する領域のデータを格納したかを示す。ブロックビットマップ2293は、割り当てられた領域の中で、キャッシュメモリ210に格納されたブロック(読み書きの最小単位)を示す。ブロックビットマップ2293のビットは、ビットに対応するブロックがキャッシュメモリ210に格納されている場合には、オンに設定される。更新ビットマップ2294は、サーバ110から書き込み要求を受け、サーバ110から受け取り、キャッシュメモリ210に格納したブロックであって、まだ、ストレージ装置160に書き込んでいないブロックを示すためのビットマップである。更新ビットマップ2294のビットは、ビットに対応するブロックがストレージ装置160に書き込んでいないブロックである場合には、オンに設定される。
図16は、空きキャッシュ管理情報ポインタ22Aを説明するための図である。図16に示すように空きキャッシュ管理情報ポインタ22Aは、キャッシュメモリ210のスロット211のうち、データを格納していない先頭のスロットに対応するキャッシュ管理情報229を示すポインタである。また、先頭のスロットに対応するキャッシュ管理情報229に含まれる次キャッシュ管理情報ポインタ2291が、データを格納していない次のスロットに対応するキャッシュ管理情報229を示す。同様にして、データを格納していない最後のスロットに対応するキャッシュ管理情報229まで順次示されることとなる。最後のスロットに対応するキャッシュ管理情報229に含まれる次キャッシュ管理情報ポインタ2291は、図16の例では、空きキャッシュ管理情報ポインタ22Aを示しているが、ヌル値でもよい。
図5に示す仮想ページ容量22Bは、仮想ページの容量である。仮想ページ容量22Bは、実ページの容量がRAIDのタイプに応じて異なるため、実ページの容量と等しいとは限らない。例えば、RAID1のようにデータを2重に書き込む場合、実ページの容量は仮想ページ容量22Bの2倍となる。また、RAID5のようにN台のストレージ装置に対して冗長データを格納する1台のストレージ装置が必要となる場合、実ページの容量は「仮想ページ容量22B×(N+1)/N」となる。本実施形態では、実ストレージシステム100内の全ての仮想ページの仮想ページ容量22Bが等しいとするが、仮想ページ容量22Bが異なる仮想ページが存在してもよい。また、本実施形態では、ストレージグループはRAID5に対応しているとするが、他のRAIDタイプに対応していてもよい。
図17は、図12に示した空き実ページ情報ポインタ2263を説明するための図である。図17は、空き実ページ情報ポインタ2263にて管理される空き実ページの集合を示す。空き実ページは、仮想ページが割り当てられていない実ペ-ジである。以下、空き実ページに対応した実ページ情報227を空き実ページ情報227と呼ぶこともある。
空き実ページ情報227は空き実ページの回復処理で使用される。本実施形態では、上述したように空きページに関しては、その割り当て権限を有している実ストレージシステム100内のストレージコントローラ200が回復処理を行う。このため、各実ストレージシステム100が割り当て権限を有する空きページの集合が、空き実ページ情報ポインタ2263にて管理される。したがって、実ストレージシステム100ごとに異なる空き実ページの集合が管理される。
空き実ページ情報ポインタ2263は、先頭の空き実ページに対応する空き実ページ情報227のアドレスを示すポインタである。また、先頭の空き実ページに対応する空き実ページ情報227に含まれる空きページポインタ2273が次の空き実ページに対応する空き実ページ情報227を示す。同等にして、空き実ページに対応する空き実ページ情報227が順次示されることとなる。最後のから実ページに対応する空き実ページ情報227に含まれる空きページポインタ2273は、図27の例では、空き実ページ情報ポインタ2263を示しているが、ヌル値でもよい。
なお、ストレージコントローラ200は、実ページを割り当てていない仮想ページに対する書き込み要求を受け付けると、論理ボリュームRAIDタイプ2243に該当するストレージグループのいずれか(例えば、空き実ページの数が最も多いストレージグループ)に対応する空き実ページ情報ポインタ2263から、空き実ページを検索して仮想ページに割り当てる。
次に、上記に説明した管理情報を用いて、ストレージコントローラ200が実行する処理について説明する。なお、以下の処理は、ストレージコントローラ200内のプロセッサ250がメモリ260に記録されたプログラムを読み取り、その読み取ったプログラムを実行することで行われる。図18は、メモリ260に記録されたプログラムが実行されることで実現される機能的な構成を示す図である。
図18に示すように、プログラムは、スペア初期処理部(Spare Initializing Part)400、戻し初期処理部(Return Initializing Part)410、リード処理実行部(Read Process Execution Part)420、ライト要求受付部(Write Request Receive Part)430、ライトアフタ実行部(Write After Process Execution Part)440、スペアデータ領域回復処理部(Spare Data Area Recovery Part)450、データ領域戻し処理部(Data Area Returning Part)460、スペア空き領域回復処理部(Spare Empty Area Recovery Part)470、及び、空き領域戻し処理部(Empty Area Returning Part)480を実現する。
図19は、スペア初期処理部400が行うスペア初期処理の一例を説明するためのフローチャートである。スペア初期処理は、ストレージ装置160のいずれかに障害が発生した場合に実行される。本実施形態では、スペア初期処理は、障害が発生したストレージ装置160を含むストレージグループにアクセス可能なストレージコントローラ200にて実行される。スペア初期処理は、回復処理に含まれる。
ステップS500では、スペア初期処理部400は、当該ストレージコントローラ200(障害が発生したストレージ装置160を含むストレージコントローラ200)である対象ストレージコントローラが制御権を有する全ての論理ボリュームの論理ボリューム情報224の回復中フラグ2245をオンにする。
ステップS501では、スペア初期処理部400は、当該ストレージコントローラ200が制御権を有する全ての論理ボリュームの論理ボリューム情報224の回復・戻し中ポインタ2246を初期化する。また、スペア初期処理部400は、その論理ボリューム情報224内の全てのリード・ライト中カウンタ2247を初期化する。
ステップS502では、スペア初期処理部400は、当該ストレージコントローラ200が制御権を有する全ての論理ボリュームに対応したスペアデータ領域回復処理部450を起動する。
ステップS503では、スペア初期処理部400は、障害が発生したストレージ装置160を含むストレージグループに対応するストレージグループ情報226内の障害情報2267及びストレージグループ回復中フラグ2268をオンにし、さらに、障害が発生したストレージ装置160のストレージ装置障害情報2265をオンにする。そして、スペア初期処理部400は、障害が発生したストレージ装置160を含むストレージボックス120に対応するストレージボックス情報225内のスペア装置情報2257を参照して、使用中フラグ22573がオフのスペア装置(ストレージ装置160)を検索し、その検索したストレージ装置160を示すスペアポインタ2266を設定する。
ステップS504では、スペア初期処理部400は、障害が発生したストレージ装置160を含むストレージグループにおいて、当該ストレージコントローラ200が割り当て権限を有する全ての空き実ページに対応する実ページ情報227の回復・戻し待ちフラグ2274をオンにする。これにより、障害が発生したストレージ装置160を含むストレージグループのストレージグループ情報226の空き実ページ情報ポインタ2263から検索可能な実ページ情報227(図17に示した実ページ情報227の集合)に対応した実ページが回復処理の対象となる。
ステップS505では、スペア初期処理部400は、障害が発生したストレージ装置160を含むストレージグループに対応するスペア空き領域回復処理部470を起動し、処理を終了する。
図20は、戻し初期処理部410が行う戻し初期処理の一例を説明するためのフローチャートである。戻し初期処理は、障害が発生したストレージ装置160が新しいストレージ装置160に置き替えられた後に実行される。本実施形態では、戻し初期処理は、新しいストレージ装置160を含むストレージグループにアクセス可能なストレージコントローラ200にて実行される。戻し初期処理は、戻し処理に含まれる。
ステップS600では、戻し初期処理部410は、当該ストレージコントローラ200が制御権を有する全ての論理ボリュームの論理ボリューム情報224の戻し中フラグ2248をオンにする。
ステップS601では、戻し初期処理部410は、当該ストレージコントローラ200が制御権を有する全ての論理ボリューム情報の論理ボリューム情報224の回復・戻し中ポインタ2246を初期化する。また、戻し初期処理部410は、その論理ボリューム情報224内の全てのリード・ライト中カウンタ2247を初期化する。
ステップS602では、戻し初期処理部410は、当該ストレージコントローラ200が制御権を有する全ての論理ボリュームに対応したデータ領域戻し処理部460を起動する。
ステップS603では、戻し初期処理部410は、障害が発生したストレージ装置160を含むストレージグループに対応するストレージグループ情報226内のストレージグループ戻し中フラグ2269をオンにする。
ステップS604では、戻し初期処理部410は、障害が発生したストレージ装置160を含むストレージグループにおいて、当該ストレージコントローラ200が割り当て権限を有する全ての空き実ページに対応する実ページ情報227の回復・戻し待ちフラグ2274をオンにする。
ステップS605では、戻し初期処理部410は、障害を起こしたストレージ装置160を含むストレージグループに対応する空き領域戻し処理部480を起動する。
図21は、リード処理実行部420が行うリード処理の一例を説明するためのフローチャートである。リード処理は、ストレージコントローラ200がサーバ110からリード要求を受け付けた場合に実行される。
ステップS700では、リード処理実行部420は、リード要求にて指定されたアドレスの仮想論理ボリュームを、仮想論理ボリューム情報223を用いて論理ボリュームに変換し、その論理ボリュームの論理ボリューム情報224を取得する。
ステップS701では、リード処理実行部420は、当該論理ボリューム情報224の回復中フラグ2245、戻し中フラグ2248及びスペアアクセス中フラグ2249の全てがオフか否かを判断する。リード処理実行部420は、これらのフラグのいずれかがオンの場合、ステップS702の処理を実行し、これらのフラグが全てオフの場合、ステップS717の処理を実行する。ステップS717では、リード処理実行部420は、ストレージ装置160に障害が発生していない通常のリード処理を行い、処理を終了する。
ステップS702では、リード処理実行部420は、リード要求にて指定されたアドレスに対応する仮想ページを特定する。そして、リード処理実行部420は、当該論理ボリューム情報224の回復・戻し中ポインタ2246を確認して、当該仮想ページに対する回復処理又は戻し処理が実行中か否かを確認する。リード処理実行部420は、回復処理又は戻し処理が実行中の場合、ステップS703の処理を実行し、回復処理又は戻し処理が実行中でない場合、ステップS704の処理を実行する。
ステップS703では、リード処理実行部420は、回復処理又は戻し処理が終了するまで待機する。
ステップS704では、リード処理実行部420は、当該論理ボリューム情報224に含まれる、リード要求にて指定されたアドレスに対応する仮想ページのリード・ライト中カウンタ2247をインクリメントする。
ステップS705では、リード処理実行部420は、リード要求にて指定されたアドレスと、当該論理ボリューム情報224のキャッシュ管理情報ポインタ224Cと、キャッシュ管理情報229のブロックビットマップ2293とに基づいて、リード要求にて指定されたデータがキャッシュメモリ210に格納されているか否かを確認する。リード処理実行部420は、データがキャッシュメモリ210に格納されている場合、ステップS716の処理を実行し、データがキャッシュメモリ210に格納されていない場合、ステップS706の処理を実行する。
ステップS706では、リード処理実行部420は、リード要求にて指定されたアドレスに対応する仮想ページを割り当てた実ページを有するストレージ装置160に障害が発生しているか否かを確認する。リード処理実行部420は、障害が発生している場合、ステップS707の処理を実行し、障害が発生していない場合、ステップS709の処理を実行する。
ステップS707では、リード処理実行部420は、回復中・戻し中ポインタ2246に基づいて、リード要求にて指定されたアドレスに係る回復処理が完了しているか否かを判断して、障害が発生したストレージ装置160のデータを同じストレージグループの他のストレージ装置160に格納されたデータから回復する必要があるか否かを判断する。アドレスに係る回復処理とは、アドレスに対応する仮想ページの回復処理である。リード処理実行部420は、回復処理が完了している場合、データを回復する必要がないと判断して、ステップS708の処理を実行し、回復処理が完了していない場合、データを回復する必要があると判断して、ステップS711の処理を実行する。
ステップS708では、リード処理実行部420は、スペア装置からデータを読み込むか否かを判断する。具体的には、リード処理実行部420は、回復中フラグ2245がオンであり、かつ、回復中・戻し中ポインタ2246がリード要求にて指定されたアドレスに係る回復処理の完了を示す場合、又は、戻し中フラグ2248がオンであり、かつ、回復中・戻し中ポインタ2246がリード要求にて指定されたアドレスに係る戻し処理の未完了を示す場合、又は、スペアアクセス中フラグ2249がオンの場合、スペア装置からデータを読み込むと判断する。リード処理実行部420は、スペア装置からデータを読み込まない場合、ステップS709の処理を実行し、スペア装置からデータを読み込む場合、ステップS710の処理を実行する。
ステップS709では、リード処理実行部420は、リード要求にて指定されたアドレスに対応するストレージ装置160からデータを読み込むことが可能であるため、そのストレージ装置160に対してリード要求を発行する。その後、ステップS714が実行される。
ステップS710では、リード処理実行部420は、スペア装置からデータを読み込むため、スペア装置となるストレージ装置160に対してリード要求を発行する。その後、ステップS714が実行される。
ステップS711では、リード処理実行部420は、ストレージグループの他のストレージ装置160から必要なデータ(冗長データなど)を読み込んで回復する必要があるため、ストレージグループの他のストレージ装置160に対してリード要求を発行する。
ステップS712では、リード処理実行部420は、他のストレージ装置160に対するリード要求が完了するまで待機する。
ステップS713では、リード処理実行部420は、他のストレージ装置160に対するリード要求の応答として取得したデータに基づいて、リード要求に応じたデータを回復する。その後、ステップS715が実行される。
ステップS714では、リード処理実行部420は、ステップS709又はS710で送信したリード要求が完了するまで待機する。
ステップS715では、リード処理実行部420は、読み込んだデータ又は回復したデータをキャッシュメモリ210に転送して格納し、キャッシュ管理情報229(例えば、ブロックビットマップ2293など)を更新する。
ステップS716では、リード処理実行部420は、キャッシュメモリ210に格納されているデータを、サーバ110に転送する。さらに、リード処理実行部420は、リード要求にて指定されたアドレスに対応する仮想ページを特定し、当該仮想ページに対応するリード・ライト中カウンタ2247をデクリメントし、処理を終了する。
図22は、ライト要求受付部430が行うライト要求受付処理の一例を説明するためのフローチャートである。ライト要求受付処理は、ストレージコントローラ200がサーバ110からライト要求を受け付けた場合に実行される。
ステップS800では、ライト要求受付部430は、ライト要求にて指定されたアドレスの仮想論理ボリュームを、仮想論理ボリューム情報223を用いて論理ボリュームに変換し、その論理ボリュームの論理ボリューム情報224を取得する。
ステップS801では、ライト要求受付部430は、当該論理ボリューム情報224の回復中フラグ2245、戻し中フラグ2248及びスペアアクセス中フラグ2249の全てがオフか否かを判断する。リード処理実行部420は、これらのフラグのいずれかがオンの場合、ステップS802の処理を実行し、これらのフラグが全てオフの場合、ステップS809の処理を実行する。ステップS809では、ライト要求受付部430は、ストレージ装置160に障害が発生していない通常のライト要求受付処理を行い、処理を終了する。
ステップS802では、ライト要求受付部430は、ライト要求にて指定されたアドレスに対応する仮想ページを特定し、当該仮想ページに対応するリード・ライト中カウンタ2247をインクリメントする。
ステップS803では、ライト要求受付部430は、ライト要求にて指定されたアドレスと、当該論理ボリューム情報224のキャッシュ管理情報ポインタ224Cと、キャッシュ管理情報229のブロックビットマップ2293とに基づいて、ライト要求にて指定されたデータがキャッシュメモリ210でヒットするか否かを確認する。ライト要求受付部430は、データがヒットする場合、ステップS804の処理を実行し、データがヒットしない場合、ステップS805の処理を実行する。
ステップS804では、ライト要求受付部430は、空きキャッシュ管理情報ポインタ22Aにて示される先頭のキャッシュ管理情報229を、当該論理ボリューム情報224の該当するキャッシュ管理情報ポインタ224Cにセットすることで、当該論理ボリュームに対してキャッシュメモリ210のスロット211を割り当てる。さらに、ライト要求受付部430は、キャッシュ管理情報229の割り当て論理ボリュームアドレス2292に当該論理ボリュームの識別子及びアドレスを設定する。
ステップS805では、ライト要求受付部430は、サーバ110からライト要求にて指定されたデータを取得し、そのデータをキャッシュメモリ210に格納する。そして、ライト要求受付部430は、キャッシュ管理情報229のブロックビットマップ2293及び更新ビットマップ2294を更新する。
ステップS806では、ライト要求受付部430は、ライト要求にて指定されたアドレスに対応する仮想ページに対応する実ページポインタ2244に基づいて、当該仮想ページに実ページが割り当てられているか否かを確認する。ライト要求受付部430は、実ページが割り当てられていない場合、ステップS807の処理を実行し、実ページが割り当てられている場合、ステップS808の処理を実行する。
ステップS807では、ライト要求受付部430は、対応するストレージグループ情報226の空き実ページ情報ポインタ2263から、空いた状態であり、かつ、回復・戻し待ちフラグ2274がオフの実ページの実ページ情報227を確保し、かつ、その実ページのアドレスを、対応する仮想ページの実ページポインタ2244に設定する。
ステップS808では、ライト要求受付部430は、リード・ライトカウンタをデクリメントし、処理を終了する。
図23は、ライトアフタ実行部440が行うライトアフタ処理の一例を説明するためのフローチャートである。ライトアフタ処理は、所定のタイミングで実行される。
ステップS900では、ライトアフタ実行部440は、ライトアフタ処理の対象となる論理ボリュームの論理ボリューム情報224の回復中フラグ2245、戻し中フラグ2248及びスペアアクセス中フラグ2249の全てがオフか否かを判断する。リード処理実行部420は、これらのフラグのいずれかがオンの場合、ステップS901の処理を実行し、これらのフラグが全てオフの場合、ステップS917の処理を実行する。ステップS917では、ライトアフタ実行部440は、ストレージ装置160に障害が発生していない通常のライトアフタ処理を行い、処理を終了する。
ステップS901では、ライトアフタ実行部440は、更新ビットマップ2294がオンであるキャッシュ管理情報229を検索して、ストレージ装置160に書き込んでいないデータを見つける。
ステップS902では、ライトアフタ実行部440は、検索したキャッシュ管理情報229の割り当て論理ボリュームアドレス2292を確認して、ストレージ装置160に書き込んでいないデータを格納しているスロットに対応する論理ボリュームを認識する。
ステップS903では、ライトアフタ実行部440は、検索したキャッシュ管理情報229の更新ビットマップ2294に基づいて、認識した論理ボリュームに対応する仮想ページを特定する。
ステップS904では、ライトアフタ実行部440は、回復中・戻し中ポインタ2246を参照して、当該仮想ページに係る回復処理又は戻し処理が実行中か否かを確認する。ライトアフタ実行部440は、回復処理又は戻し処理が実行中である場合、ステップS905を実行し、回復処理又は戻し処理が実行中でない場合、ステップS906を実行する。
ステップS905では、ライトアフタ実行部440は、回復処理又は戻し処理が終了するまで待機する。
ステップS906では、ライトアフタ実行部440は、当該仮想ページに対応するリード・ライト中カウンタ2247をインクリメントする。そして、ライトアフタ実行部440は、当該仮想ページに対応する実ページの実ページ情報227のストレージグループ識別子2271に基づいて、当該仮想ページに対応するストレージグループを認識する。ライトアフタ実行部440は、ライトデータに対応する冗長データを生成するのに必要なデータを読み出すために、当該論理ボリューム情報224の論理ボリュームRAIDタイプ2243、回復中フラグ2245、回復・戻し中ポインタ2246、戻し中フラグ2248、及び、スペアアクセス中フラグ2249などに基づいて、必要なデータを格納しているストレージ装置160に対してリード要求を発行する。
ステップS907では、ライトアフタ実行部440は、リード要求が完了するまで(データの読み出しが完了するまで)待機する。
ステップS908では、ライトアフタ実行部440は、読み出したデータに基づいて、冗長データを生成する。
ステップS909では、ライトアフタ実行部440は、当該ストレージグループのストレージグループ情報226を参照して、ライトデータ及び冗長データを書き込むストレージ装置160に障害が発生しているか否かを確認する。ライトアフタ実行部440は、障害が発生していない場合、ステップS910の処理を実行し、障害が発生している場合、ステップS911の処理を実行する。
ステップS910では、ライトアフタ実行部440は、ストレージ装置160にライト要求を発行する。具体的には、ライトアフタ実行部440は、ライトデータを書き込むストレージ装置160には、ライトデータのライト要求を発行し、冗長データを書き込むストレージ装置160には、冗長データのライト要求を発行する。その後、ライトアフタ実行部440は、ステップS915を実行する。
ステップS911では、ライトアフタ実行部440は、データを書き込むアドレスに係る回復処理が完了しているか否かを確認する。具体的には、ライトアフタ実行部440は、回復中フラグ2245及び回復中・戻し中ポインタ2246に基づいて回復処理が完了していないか否かを判断する。ライトアフタ実行部440は、回復処理が完了している場合、ステップS912を実行し、回復処理が完了していない場合、データの書き込みを行わないため、ステップS916の処理を実行する。
ステップS912では、ライトアフタ実行部440は、データを書き込むアドレスに係る戻し処理が完了しているか否かを確認する。具体的には、ライトアフタ実行部440は、戻し中フラグ2248及び回復中・戻し中ポインタ2246に基づいて戻し処理が完了していないか否かを判断する。ライトアフタ実行部440は、戻し処理が完了している場合、ステップS913を実行し、戻し処理が完了していない場合、スペアアクセス中フラグがオンであると、スペア装置にライトデータ又は冗長データを書き込むため、ステップS914の処理を実行する。
ステップS913では、ライトアフタ実行部440は、戻し処理により新しく置き換えられたストレージ装置160にライトデータ又は冗長データを書き込むため、そのストレージ装置160のライト要求を発行する。その後、ステップS915の処理が実行される。
ステップS914では、ライトアフタ実行部440は、スペア装置にライトデータ又は冗長データを書き込むので、スペア装置にライト要求を発行する。その後、ステップS915の処理が実行される。
ステップS915では、ライトアフタ実行部440は、データの書き込みが完了するまで待機する。
ステップS916では、ライトアフタ実行部440は、検索したキャッシュ管理情報229の更新ビットマップ2294をリセットする。そして、ライトアフタ実行部440は、対応する仮想ページを算出し、当該仮想ページに対応するリード・ライト中カウンタ2247をデクリメントし、処理を終了する。
図24は、スペアデータ領域回復処理部450が行うスペアデータ領域回復処理の一例を説明するためのフローチャートである。なお、スペアデータ領域回復処理部450は論理ボリュームごとに設けられる。
ステップS1000では、スペアデータ領域回復処理部450は、当該論理ボリュームの論理ボリューム情報224に含まれる回復・戻し中ポインタ2246にて示される仮想ページを処理対象の仮想ページとして設定する。
ステップS1001では、スペアデータ領域回復処理部450は、処理対象の仮想ページに対応する実ページの実ページ情報227に含まれるストレージグループ識別子2271に基づいて、当該仮想ページを含むストレージグループのストレージグループ情報226を特定する。スペアデータ領域回復処理部450は、特定したストレージグループ情報226に基づいて、当該ストレージグループに障害が発生しているストレージ装置160が含まれるか否かを確認する。スペアデータ領域回復処理部450は、ストレージ装置160が含まれる場合、ステップS1002の処理を実行し、ストレージ装置160が含まれない場合、ステップS1009の処理を実行する。
ステップS1002では、スペアデータ領域回復処理部450は、当該論理ボリュームの論理ボリューム情報224における、処理対象の仮想ページに対応するリード・ライト中カウンタ2247が0か否かを確認する。スペアデータ領域回復処理部450は、リード・ライト中カウンタ2247が0でない場合、ステップS1003の処理を実行し、リード・ライト中カウンタ2247が0である場合、ステップS1004の処理を実行する。
ステップS1003では、スペアデータ領域回復処理部450は、リード・ライト中カウンタ2247が0になるまで待機する。
ステップS1004では、スペアデータ領域回復処理部450は、障害が発生しているストレージ装置160に格納されているデータを回復するために、データの回復に必要なデータを格納するストレージ装置に対してデータを読み出すためのリード要求を発行する。
ステップS1005では、スペアデータ領域回復処理部450は、リード要求が完了するまで待機する。
ステップS1006では、スペアデータ領域回復処理部450は、リード要求の応答として取得したデータに基づいて、障害が発生したストレージ装置160に格納されていたデータを回復する。
ステップS1007では、スペアデータ領域回復処理部450は、特定したストレージグループ情報226のスペアポインタ2266に基づいて、スペア装置に対して回復したデータである回復データを書き込むためのライト要求を発行する。
ステップS1008では、スペアデータ領域回復処理部450は、ライト要求が完了するまで待機する。
ステップS1009では、スペアデータ領域回復処理部450は、当該論理ボリュームの論理ボリューム情報224の回復・戻し中ポインタ2246を一つ進める。
ステップS1010では、スペアデータ領域回復処理部450は、その回復・戻し中ポインタ2246に基づいて、当該論理ボリュームの全ての領域に対する回復処理が完了した否かを確認する。スペアデータ領域回復処理部450は、回復処理が完了していない場合、ステップS1000の処理に戻り、回復処理が完了した場合、ステップS1011の処理に進む。
ステップS1011では、スペアデータ領域回復処理部450は、障害が発生したストレージ装置を含むストレージグループの空き状態にある全ての実ページ情報227の回復・戻し待ちフラグ2274が全てオフか否かを確認する。スペアデータ領域回復処理部450は、回復・戻し待ちフラグ2274が全てオフでない場合、ステップS1012の処理を実行し、回復・戻し待ちフラグ2274が全てオフである場合、ステップS1013の処理を実行する。
ステップS1012では、スペアデータ領域回復処理部450は、全ての実ページ情報227の回復・戻し待ちフラグ2274がオフになるまで待機する。
ステップS1013では、スペアデータ領域回復処理部450は、当該論理ボリュームの論理ボリューム情報224の回復中フラグ2245をオフにし、かつ、スペアアクセス中フラグ2249をオンにして、処理を終了する。
図25は、データ領域戻し処理部460が行うデータ領域戻し処理の一例を説明するためのフローチャートである。データ領域戻し処理は、ステップS605にて実行される。また、データ領域戻し処理部460は論理ボリュームごとに設けられる。
ステップS1100では、データ領域戻し処理部460は、当該論理ボリュームの論理ボリューム情報224に含まれる回復・戻し中ポインタ2246にて示される仮想ページを戻し処理の処理対象の仮想ページとして設定する。
ステップS1101では、データ領域戻し処理部460は、処理対象の仮想ページに対応する実ページの実ページ情報227に含まれるストレージグループ識別子2271にて示されるストレージグループに新しく置き換えたストレージ装置160が含まれるか否かを判断する。新しく置き換えたストレージ装置160は、例えば、ストレージ管理サーバ130などから指定される。データ領域戻し処理部460は、新しく置き換えたストレージ装置160が含まれる場合、ステップS1102の処理を実行し、新しく置き換えたストレージ装置160が含まれない場合、ステップS1108の処理を実行する。
ステップS1102では、データ領域戻し処理部460は、当該論理ボリュームの論理ボリューム情報224における、処理対象の仮想ページに対応するリード・ライト中カウンタ2247が0か否かを確認する。データ領域戻し処理部460は、リード・ライト中カウンタ2247が0でない場合、ステップS1103の処理を実行し、リード・ライト中カウンタ2247が0である場合、ステップS1104の処理を実行する。
ステップS1103では、データ領域戻し処理部460は、リード・ライト中カウンタ2247が0になるまで待機する。
ステップS1104では、データ領域戻し処理部460は、新しく置き換えたストレージ装置のデータを戻すために、そのデータを格納しているスペア装置からデータを読み出すためのリード要求を発行する。
ステップS1105では、データ領域戻し処理部460は、リード要求が完了するまで待機する。
ステップS1106では、データ領域戻し処理部460は、リード要求の応答として取得したデータを書き込むためのライト要求を、新しく置き換えたストレージ装置に対して発行する。
ステップS1107では、データ領域戻し処理部460は、ライト要求が完了するまで待機する。
ステップS1108では、データ領域戻し処理部460は、当該論理ボリュームの論理ボリューム情報224の回復・戻し中ポインタ2246を一つ進める。
ステップS1109では、データ領域戻し処理部460は、その回復・戻し中ポインタ2246に基づいて、当該論理ボリュームの全ての領域に対する戻し処理が完了したか否かを確認する。データ領域戻し処理部460は、戻し処理が完了していない場合、ステップS1100の処理に戻り、戻し処理が完了した場合、ステップS1010の処理に進む。
ステップS1110では、データ領域戻し処理部460は、新しく置き換えたストレージ装置を含むストレージグループの空き状態にある全ての実ページの実ページ情報227の回復・戻し待ちフラグ2274が全てオフか否かを確認する。データ領域戻し処理部460は、回復・戻し待ちフラグ2274が全てオフでない場合、ステップS1011の処理を実行し、回復・戻し待ちフラグ2274が全てオフである場合、ステップS1012の処理を実行する。
ステップS1111では、データ領域戻し処理部460は、全ての実ページ情報227の回復・戻し待ちフラグ2274がオフになるまで待機する。
ステップS1112では、データ領域戻し処理部460は、当該論理ボリュームの論理ボリューム情報224のスペアアクセス中フラグ2249をオフにして、処理を終了する。
図26は、スペア空き領域回復処理部470が行うスペア空き領域回復処理の一例を説明するためのフローチャートである。データ領域戻し処理は、図19のステップS505にて実行される。
ステップS1200では、スペア空き領域回復処理部470は、障害が発生したストレージ装置160を含むストレージグループのストレージグループ情報226の空き実ページ情報ポインタ2263にて示される実ページ情報227を処理対象とする。
ステップS1201では、スペア空き領域回復処理部470は、処理対象の実ページ情報227の回復・戻し待ちフラグ2274がオンか否かを確認する。スペア空き領域回復処理部470は、回復・戻し待ちフラグ2274がオンの場合、ステップS1202の処理を実行し、回復・戻し待ちフラグ2274がオフの場合、ステップS1205の処理を実行する。
ステップS1202では、スペア空き領域回復処理部470は、障害が発生したストレージ装置160を含むストレージグループに対応するストレージグループ情報226のスペアポインタ2266に基づいて、そのストレージグループに含まれるスペア装置に対して、処理対象の実ページ情報227に対応する実ページに応じた領域に初期データ(初期パターン)を書き込むためのライト要求を発行する。なお、初期データは、記論理ボリュームに割り当てられていない記憶領域に格納されているデータであり、例えば、全てのビットが0のデータである。
ステップS1203では、スペア空き領域回復処理部470は、ライト要求が完了するまで待機する。
ステップS1204では、スペア空き領域回復処理部470は、回復・戻し待ちフラグ2274をオフにする。
ステップS1205では、スペア空き領域回復処理部470は、処理対象の実ページ情報227の空きページポインタ2273に基づいて、空き状態にある次の実ページ情報227が存在するか否かを確認する。スペア空き領域回復処理部470は、空き状態にある次の実ページ情報227が存在する場合、当該実ページ情報227を処理対象の実ページ情報227として選択してステップS1201の処理に戻り、空き状態にある次の実ページ情報227が存在しない場合、ステップS1206の処理を実行する。
ステップS1206では、スペア空き領域回復処理部470は、待ち状態のスペアデータ領域回復処理部450が存在する場合、そのスペアデータ領域回復処理部450の待ち状態を解除して、処理を終了する。
図27は、空き領域戻し処理部480が行う空き領域戻し処理の一例を説明するためのフローチャートである。空き領域戻し処理は、図20のステップS605にて実行される。
ステップS1300では、空き領域戻し処理部480は、新しく置き換えたストレージ装置160を含むストレージグループのストレージグループ情報226の空き実ページ情報ポインタ2263にて示される実ページ情報227を処理対象とする。
ステップS1301では、空き領域戻し処理部480は、処理対象の実ページ情報227の回復・戻し待ちフラグ2274がオンか否かを確認する。空き領域戻し処理部480は、回復・戻し待ちフラグ2274がオンの場合、ステップS1302の処理を実行し、回復・戻し待ちフラグ2274がオフの場合、ステップS1305の処理を実行する。
ステップS1302では、空き領域戻し処理部480は、新しく置き換えたストレージ装置160に対して、処理対象の実ページ情報227に対応する実ページに応じた領域に初期データを書き込むためのライト要求を発行する。
ステップS1303では、空き領域戻し処理部480は、ライト要求が完了するまで待機する。
ステップS1304では、空き領域戻し処理部480は、回復・戻し待ちフラグ2274をオフにする。
ステップS1305では、空き領域戻し処理部480は、処理対象の実ページ情報の空きページポインタ2273に基づいて、空き状態にある次の実ページ情報227が存在するか否かを確認する。空き領域戻し処理部480は、空き状態にある次の実ページ情報227が存在する場合、当該実ページ情報227を処理対象の実ページ情報227として選択してステップS1301の処理に戻り、空き状態にある次の実ページ情報227が存在しない場合、ステップS1306の処理を実行する。
ステップS1306では、空き領域戻し処理部480は、待ち状態のデータ領域回復処理部460が存在する場合、そのデータ領域回復処理部460の待ち状態を解除して、処理を終了する。
以上説明したように本実施形態によれば、複合型ストレージシステム(情報システム)は、複数のストレージ装置160を有する複数のストレージボックス120と、複数のストレージ装置160を制御する複数の実ストレージシステム100とを有する。ストレージ装置160に障害が発生した場合、論理ボリュームに対して割り当てられた記憶領域に格納されたデータを回復する回復処理を制御権を有する実ストレージシステム100が実行し、論理ボリュームに対して割り当てていない記憶領域に格納されたデータを回復する回復処理を割り当て権を有する実ストレージシステム100が実行する。したがって、複合型ストレージシステムにおいて障害が発生したストレージ装置160に格納していたデータを回復することを可能になる。
また、本実施形態では、制御権を有する実ストレージシステム100は、回復したデータをスペア装置に格納する。このため、複合型ストレージシステムにおいて回復させたデータをスペア装置に移動させることが可能となる。また、本実施形態では、制御権を有する実ストレージシステム100は、障害が発生したストレージ装置160が新しいストレージ装置に置き替えられた場合、回復したデータをスペア装置から新しいストレージ装置に移動する。このため、複合型ストレージシステムにおいてデータを新しく置き換えたストレージ装置に戻すことが可能となる。
また、本実施形態では、論理ボリュームに割り当てられていない実ページに格納されているデータは初期データである。このため、したがって、複合型ストレージシステムにおいて障害が発生したストレージ装置160に格納していた初期データを回復することを可能になる。
また、本実施形態では、割り当て権限を有する実ストレージシステム100は、回復した初期データをスペア装置に格納する。このため、複合型ストレージシステムにおいて回復させた初期データをスペア装置に移動させることが可能となる。また、本実施形態では、割り当て権限を有する実ストレージシステム100は、障害が発生したストレージ装置160が新しいストレージ装置に置き替えられた場合、回復した初期データをスペア装置から新しいストレージ装置に移動する。このため、複合型ストレージシステムにおいて初期データを新しく置き換えたストレージ装置に戻すことが可能となる。
(第2の実施形態)
図28は、本開示の第2の実施形態の情報システムの構成を示す図である。図28に示す情報システムは、図1に示した情報システムと比較して、サーバ110にて仮想ストレージシステム180が構成される点で異なる。具体的には、サーバ110は、ストレージコントローラが動作するコントロールVM(Virtual Machine)290と、ユーザアプリケーションプログラムが動作するアプリケーションVM291と、コントロールVM290及びアプリケーションVM291を管理するVM管理部292とを有する。
図28の例では、アプリケーションVM291がリード・ライト要求を発行すると、同一サーバ110上のコントロールVM290がそのリード・ライト要求を受け付け、そのリード・ライト要求に応じた処理を行う。例えば、コントロールVM290は、リード・ライト要求をボックスネットワーク150経由でストレージボックス120に対して発行し、ストレージボックス120との間でリード・ライトデータの転送を行う。また、コントロールVM290は、他のサーバ110上のコントロールVM290に対して、ボックスネットワーク150経由で通信を行う。
図29は、コントロールVM290が使用するメモリリソースの一例を示す図である。コントロールVM290には、サーバ110の主記憶部によって、共有メモリ220、キャッシュメモリ210及びメモリ260が割り当てられている。
本実施形態の場合、複数のコントロールVM290にて仮想ストレージシステム180が構成され、複数のコントロールVM290のそれぞれが第1の実施形態の実ストレージシステム180(具体的には、そのストレージコントローラ200)と同等な処理を行う。このため、本実施形態でも、第1の実施形態と同様な処理を実行することが可能になり、同様な効果を奏することが可能となる。
上述した本開示の各実施形態は、本開示の説明のための例示であり、本開示の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本開示の範囲を逸脱することなしに、他の様々な態様で本開示を実施することができる。