以下、図面を参照して、本発明の一実施の形態を詳述する。以下の記載及び図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略及び簡略化がなされている。また、実施の形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。本発明が実施の形態に制限されることは無く、本発明の思想に合致するあらゆる応用例が本発明の技術的範囲に含まれる。本発明は、当業者であれば本発明の範囲内で様々な追加や変更等を行うことができる。本発明は、他の種々の形態でも実施する事が可能である。特に限定しない限り、各構成要素は複数でも単数でも構わない。
以下の説明では、「テーブル」、「表」、「リスト」、「キュー」等の表現にて各種情報を説明することがあるが、各種情報は、これら以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「XXテーブル」、「XXリスト」等を「XX情報」と呼ぶことがある。各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「ID」、「番号」等の表現を用いるが、これらについてはお互いに置換が可能である。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号又は参照符号における共通番号を使用し、同種の要素を区別して説明する場合は、その要素の参照符号を使用又は参照符号に代えてその要素に割り振られたIDを使用することがある。
また、以下の説明では、プログラムを実行して行う処理を説明する場合があるが、プログラムは、少なくとも1以上のプロセッサ(例えばCPU)によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又はインターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主体がプロセッサとされてもよい。同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノード、ストレージシステム、ストレージ装置、サーバ、管理計算機、クライアント、又はホストであってもよい。プログラムを実行して行う処理の主体(例えばプロセッサ)は、処理の一部又は全部を行うハードウェア回路を含んでもよい。例えば、プログラムを実行して行う処理の主体は、暗号化及び復号化、又は圧縮及び伸張を実行するハードウェア回路を含んでもよい。プロセッサは、プログラムに従って動作することによって、所定の機能を実現する機能部として動作する。プロセッサを含む装置及びシステムは、これらの機能部を含む装置及びシステムである。
プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサ(例えばCPU)と記憶資源を含み、記憶資源はさらに配布プログラムと配布対象であるプログラムとを記憶してよい。そして、プログラム配布サーバのプロセッサが配布プログラムを実行することで、プログラム配布サーバのプロセッサは配布対象のプログラムを他の計算機に配布してよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
(1)第1の実施の形態
(1−1)本実施の形態による情報処理システムの構成
図1は、本実施の形態による情報処理システム1の構成を示す図である。この情報処理システム1は、例えばファイバーチャネル(Fibre Channel)、イーサネット(登録商標)又はLAN(Local Area Network)などから構成されるネットワーク2を介して相互に接続された複数のホスト装置3と、複数のストレージノード4と、管理ノード5とを備えて構成されている。
ホスト装置3は、ユーザ操作や実装されたアプリケーションプログラムからの要求に応じてストレージノード4に対してリード要求又はライト要求(以下、適宜、これらをまとめてI/O(Input/Output)要求と呼ぶ)を送信する汎用のコンピュータ装置である。なお、ホスト装置3は、仮想マシンのような仮想的なコンピュータ装置であってもよい。
ストレージノード4は、ホスト装置3に対してデータを読み書きするための記憶領域を提供する物理サーバ装置であり、図2に示すように、内部ネットワーク10を介して相互に接続されたCPU(Central Processing Unit)11、メモリ12、複数の記憶デバイス13及び通信装置14を備えて構成される。各ストレージノード4は、CPU11、メモリ12、記憶デバイス13、通信装置14を、それぞれ1以上備える。
CPU11は、ストレージノード4全体の動作制御を司るプロセッサである。またメモリ12は、SRAM(Static RAM(Random Access Memory))やDRAM(Dynamic RAM)などの揮発性の半導体メモリから構成され、各種プログラムや必要なデータを一時的に保持するために利用される。メモリ12に格納されたプログラムを、少なくとも1以上のCPU11が実行することにより、後述のようなストレージノード4全体としての各種処理が実行される。
記憶デバイス13は、SSD(Solid State Drive)、SAS(Serial Attached SCSI(Small Computer System Interface))ハードディスクドライブ又はSATA(Serial ATA(Advanced Technology Attachment))ハードディスクドライブなどの1又は複数種類の大容量の不揮発性記憶装置から構成され、ホスト装置3(図1)からのI/O要求に応じてデータをリード/ライトするための物理的な記憶領域を提供する。
通信装置14は、ストレージノード4がネットワーク2(図1)を介してホスト装置3や、他のストレージノード4又は管理ノード5と通信を行うためのインタフェースであり、例えばNIC(Network Interface Card)やFC(Fibre Channel)カードなどから構成される。通信装置14は、ホスト装置3、他のストレージノード4又は管理ノード5との通信時におけるプロトコル制御を行う。
管理ノード5は、システム管理者が本情報処理システム1全体を管理するために利用するコンピュータ装置である。管理ノード5は、複数のストレージノード4をクラスタ6と呼ぶグループとして管理する。なお、図1では、クラスタ6が1つのみ設けられた例を示しているが、情報処理システム1内に複数のクラスタ6を設けるようにしてもよい。クラスタ6は、分散ストレージシステムと呼ばれてもよい。
図3は、本実施の形態によるストレージノード4の論理構成を示す。この図3に示すように、各ストレージノード4は、フロントエンドドライバ20及びバックエンドドライバ21と、1又は複数のストレージ制御部22と、容量制御部23とを備える。
フロントエンドドライバ20は、通信装置14(図2)を制御し、ストレージ制御部22に対してホスト装置3や、他のストレージノード4又は管理ノード5との通信時における抽象化したインタフェースをCPU11(図2)に提供する機能を有するソフトウェアである。またバックエンドドライバ21は、自ストレージノード4内の各記憶デバイス13(図2)を制御し、これら記憶デバイス13との通信時における抽象化したインタフェースをCPU11に提供する機能を有するソフトウェアである。
ストレージ制御部22は、SDS(Software Defined Storage)のコントローラとして機能するソフトウェアである。ストレージ制御部22は、ストレージ制御ソフトウェアや、ストレージ制御プログラムと呼ばれてもよい。ストレージ制御部22は、ホスト装置3からのI/O要求を受け付け、当該I/O要求に応じたI/Oコマンドを容量制御部23に発行する。
本実施の形態の場合、ストレージノード4に実装された各ストレージ制御部22は、別のストレージノード4に配置された他のストレージ制御部22と共に冗長化構成を構成するペアとして管理される。以下においては、このペアをストレージ制御部ペア25と呼ぶものとする。
なお図3では、2つのストレージ制御部22により1つのストレージ制御部ペア25が構成される場合を示しており、以下においても、2つのストレージ制御部22によりストレージ制御部ペア25が構成されるものとして説明を進めるが、3つ以上のストレージ制御部22により1つの冗長化構成を構成するようにしてもよい。
ストレージ制御部ペア25では、一方のストレージ制御部22がホスト装置3からのI/O要求を受け付けることができる状態(現用系の状態であり、以下、これをアクティブモードと呼ぶ)に設定され、他方のストレージ制御部22がホスト装置3からのリード要求やライト要求を受け付けない状態(待機系の状態であり、以下、これをパッシブモードと呼ぶ)に設定される。
そしてストレージ制御部ペア25では、アクティブモードに設定されたストレージ制御部22(以下、これをアクティブストレージ制御部22と呼ぶ)やそのアクティブストレージ制御部22が配置されたストレージノード4に障害が発生した場合などに、それまでパッシブモードに設定されていたストレージ制御部22(以下、これをパッシブストレージ制御部22と呼ぶ)の状態がアクティブモードに切り替えられる。これにより、アクティブストレージ制御部22が稼働し得なくなった場合に、当該アクティブストレージ制御部22が実行していたI/O処理を、パッシブストレージ制御部22により引き継ぐことができる。
容量制御部23は、各ストレージ制御部ペア25に対して自ストレージノード4内又は他のストレージノード4内の記憶デバイス13が提供する物理的な記憶領域を割り当てると共に、ストレージ制御部22から与えられる上述のI/Oコマンドに従って、指定されたデータを対応する記憶デバイス13にリード/ライトする機能を有するソフトウェアである。容量制御部23は、容量制御ソフトウェアや、容量制御プログラムと呼ばれてもよい。
この場合、容量制御部23は、ストレージ制御部ペア25に対して他のストレージノード4内の記憶デバイス13が提供する物理的な記憶領域を割り当てたときには、当該他のストレージノード4に実装された容量制御部23と協働して、その容量制御部23との間でネットワーク2を介してデータをやり取りすることにより、そのストレージ制御部ペア25のアクティブストレージ制御部22から与えられたI/Oコマンドに従ってそのデータをその記憶領域にリード/ライトする。
以上の構成を有する本情報処理システム1において、容量制御部23は、図4に示すように、各ストレージノード4内の記憶デバイス13がそれぞれ提供する物理的な記憶領域を、それぞれ所定大きさの物理記憶領域(以下、これを物理チャンクと呼ぶ)PCに分割して管理する。
また容量制御部23は、各ストレージ制御部ペア25(図3)に対してそれぞれ専用のプールPLを対応付け、これらプールPLに物理チャンクPCと同じ大きさの論理的な記憶領域(以下、これを論理チャンク)LCを適宜割り当て、この論理チャンクLCに対して1又は複数の物理チャンクPCを対応付ける。
さらに各ストレージ制御部ペア25のプールPL上には1又は複数の仮想的な論理ボリューム(以下、これを仮想ボリュームと呼ぶ)VVOLが定義され、これらの仮想ボリュームVVOLがホスト装置3に提供される。
そしてホスト装置3は、かかる仮想ボリュームVVOLにデータをライトする場合、そのデータのライト先の仮想ボリューム(以下、これをライト対象仮想ボリュームと呼ぶ)VVOLの識別子(LUN:Logical Unit Number)と、そのライト対象仮想ボリュームVVOLにおけるそのデータのライト先の領域(以下、これをライト先領域と呼ぶ)WARとを指定したライト要求を、対応するクラスタ6内のいずれかのストレージノード4に送信する。
このライト要求を受信したストレージノード4のフロントエンドドライバ20は、受信したライト要求において指定されたライト対象仮想ボリュームVVOLとプールPLを介して対応付けられたストレージ制御部ペア25(図3)のアクティブストレージ制御部22(図3)又はパッシブストレージ制御部22が配置されている各ストレージノード4のフロントエンドドライバ20にそのライト要求、及び、当該ライト要求と共にホスト装置3から送信されてきたライト対象のデータ(以下、これをライトデータと呼ぶ)を転送する。
また、このライト要求及びライトデータを受領したストレージノード4のフロントエンドドライバ20は、これらライト要求及びライトデータを、ライト要求において指定されたライト対象仮想ボリュームVVOLとプールPLを介して対応付けられたストレージ制御部ペア25のストレージ制御部22に引き渡す。
そして、これらライト要求及びライトデータが引き渡されたストレージ制御部22のうちのアクティブストレージ制御部22は、ライト対象仮想ボリュームVVOL内のライト先領域WARに対して、当該ライト対象仮想ボリュームVVOLと対応付けられたプールPLを構成する論理チャンクLCから必要に応じて記憶領域(以下、これを論理領域と呼ぶ)を割り当てる。
また、かかるアクティブストレージ制御部22は、ライト要求において指定されたライト対象仮想ボリュームVVOL内のライト先領域WARのアドレスを、そのライト先領域WARに論理領域を割り当てた論理チャンクLCのチャンク番号と、当該論理領域のオフセット位置とに変換したI/Oコマンドを生成し、生成したI/Oコマンドをライトデータと共に自ストレージノード4内の容量制御部23に送信する。
そして容量制御部23は、このI/Oコマンド及びライトデータを受信すると、当該I/Oコマンドで指定された論理チャンクLCに対応付けた各物理チャンクPCをそれぞれ提供する各記憶デバイス13内のかかるオフセット位置の記憶領域にデータをそれぞれ格納する。
このようにして本情報処理システム1では、ホスト装置3からのデータが対応する論理チャンクLCに対応付けられた複数の物理チャンクPCに冗長化されて格納される。このため論理チャンクLCに割り当てられる物理チャンクPCの数は、その情報処理システム1における冗長化方式の設定内容によって決定される。
例えば、データを二重化して記憶する設定の場合には、1つの論理チャンクLCに対して2つの物理チャンクPCが対応付けられ、データを三重化以上に多重化して記憶する設定の場合や、Erasure-Codingのようにデータから冗長化データを作成して記憶する設定がなされている場合などには、3つ以上の必要な数の物理チャンクPCが1つの論理チャンクLCに対応付けられる。
なお1つの論理チャンクLCに複数の物理チャンクPCが対応付けられ、これら複数の物理チャンクPCにデータを多重化して格納する場合、これら複数の物理チャンクPCの中から1つの物理チャンクPCが「マスタ」に設定され、残りの物理チャンクPCがすべて「ミラー」に設定される。そして、後述のように、物理チャンクPCからのデータリードは「マスタ」に設定された物理チャンクPCから行われる。またEC(Erasure Coding)の場合には、1つの論理チャンクLCに複数の物理チャンクPCが対応付けられ、これら複数の物理チャンクPCにマスタデータ及び冗長データが所定パターンで格納される。
一方、ホスト装置3は、仮想ボリュームVVOLからデータを読み出す場合、その仮想ボリューム(以下、これをリード対象仮想ボリュームと呼ぶ)VVOLのLUNと、そのリード対象仮想ボリュームVVOLにおけるそのデータのリード先の記憶領域(以下、これをリード先領域と呼ぶ)とを指定したリード要求をそのリード対象仮想ボリュームVVOLが含まれるクラスタ6内のいずれかのストレージノード4に送信する。
このリード要求を受信したストレージノード4のフロントエンドドライバ20は、受信したリード要求において指定されたリード対象仮想ボリュームVVOLとプールPLを介して対応付けられたストレージ制御部ペア25のアクティブストレージ制御部22又はパッシブストレージ制御部22が配置された各ストレージノード4にそのリード要求をそれぞれ転送する。
また、このリード要求を受領したかかるストレージノード4のフロントエンドドライバ20は、このリード要求を当該リード要求において指定されたリード対象仮想ボリュームVVOLとプールPLを介して対応付けられたストレージ制御部ペア25のストレージ制御部22に引き渡す。
かくして、このリード要求が引き渡されたかかるストレージ制御部22のうちのアクティブストレージ制御部22は、リード対象仮想ボリュームVVOL内のリード先領域のアドレスを、当該リード先領域に論理領域を割り当てた論理チャンクLCのチャンク番号と、当該論理領域のオフセット位置とに変換したI/Oコマンドを生成し、生成したI/Oコマンドを自ストレージノード4内の容量制御部23に送信する。
容量制御部23は、このI/Oコマンドを受信すると、当該I/Oコマンドで指定された論理チャンクLCと対応付けられた各物理チャンクPCのうち、「マスタ」に設定された物理チャンクPC内のI/Oコマンドで指定されたオフセット位置の記憶領域からデータを読み出し、読み出したデータをリードデータとしてI/Oコマンドの送信元のアクティブストレージ制御部22に転送する。かくして、このリードデータは、この後、かかるアクティブストレージ制御部22によりネットワーク2を介してかかるリード要求の送信元のホスト装置3に転送される。
(1−2)論理チャンクに対する物理チャンクの割当て
ところで、上述のように1つの論理チャンクLCに複数の物理チャンクPCを対応付け、これらの物理チャンクPCにデータをそれぞれ格納することによりデータを冗長化する冗長化方式を採用する場合、データ保護の観点からも、1つの論理チャンクLCに対応付ける複数の物理チャンクPCをそれぞれ異なるストレージノード4が提供する物理チャンクPCから選択することが望ましい。これは、例えば、1つの論理チャンクLCに対して同じストレージノード4内の複数の物理チャンクPCを対応付けた場合、そのストレージノード4が障害等によりデータの読み出しを行えなくなったときにデータロストが発生することになるからである。
そこで本情報処理システム1では、容量制御部23がストレージ制御部ペア25に論理チャンクLCを割り当て、その論理チャンクLCに複数の物理チャンクPCを対応付ける際に、これら複数の物理チャンクPCをそれぞれ互いに異なる複数のストレージノード4が提供する物理チャンクPCの中から選択することとしている。
一方で、論理チャンクLCと対応付ける物理チャンクPCを、アクティブストレージ制御部22が配置されたストレージノード4とは別のストレージノード4内の物理チャンクPCから選択することとした場合、そのアクティブストレージ制御部22からのI/Oコマンドを受領した容量制御部23(アクティブストレージ制御部22と同じストレージノード4内の容量制御部23)がその物理チャンクPCにデータをリード/ライトする際に、その物理チャンクPCを提供するストレージノード4との間の通信が必要となり、その分、システム全体としての応答性能が悪くなるという問題がある。従って、論理チャンクLCに複数の物理チャンクPCを対応付けるに際しては、その物理チャンクPCのうちの1つを、アクティブストレージ制御部22が配置されたストレージノード4内の記憶デバイス13が提供する物理チャンクPCの中から選択する方がシステム全体の応答性能の観点からも望ましい。
また、ストレージ制御部ペア25におけるアクティブストレージ制御部22が配置されたストレージノード4に障害が発生した場合に、パッシブストレージ制御部22がアクティブモードに切り替えられることを考慮すると、上述と同様の理由により、論理チャンクLCに対応付ける物理チャンクPCのうちの1つは、パッシブストレージ制御部22が配置されたストレージノード4内の記憶デバイス13が提供する物理チャンクPCの中から選択する方がシステム全体の応答性能の観点からも望ましい。
そこで本情報処理システム1では、容量制御部23がストレージ制御部ペア25に論理チャンクLCを割り当て、その論理チャンクLCに複数の物理チャンクPCを対応付ける際に、当該ストレージ制御部ペア25のアクティブストレージ制御部22が配置されたストレージノード4内の記憶デバイス13が提供する物理チャンクPCと、当該ストレージ制御部ペア25のパッシブストレージ制御部22が配置されたストレージノード4内の記憶デバイス13が提供する物理チャンクPCとを優先的にその論理チャンクLCに対応付ける容量優先割当て機能が容量制御部23に搭載されている。
ただし、1つのストレージ制御部ペア25に割り当てられたプールPL内の論理チャンクLCに対して、そのストレージ制御部ペア25を構成するアクティブストレージ制御部22やパッシブストレージ制御部22が配置されたストレージノード4から物理チャンクPCを無制限に対応付けると、そのストレージノード4にアクティブストレージ制御部22やパッシブストレージ制御部22が配置された他のストレージ制御部ペア25の論理チャンクLCに対してそのストレージノード4内の記憶デバイス13から物理チャンクPCを対応付けられなくなるという問題がある。
そこで、かかる容量優先割り当て機能には、ストレージ制御部ペア25に対し、当該ストレージ制御部ペア25のアクティブストレージ制御部22が配置されたストレージノード4や、当該ストレージ制御部ペア25のパッシブストレージ制御部22が配置されたストレージノード4から割り当てる物理チャンクPCの容量を抑制する機能も含まれている。
このような容量優先割当て機能を実現するための手段として、容量制御部23は、図5に示すように、容量割当て処理部30、物理チャンク選択処理部31、フェイルオーバ処理部32及び再冗長化処理部33を備えている。また図6に示すように、各ストレージノード4のメモリ12には、上述したフロントエンドドライバ20、バックエンドドライバ21、1又は複数のストレージ制御部22及び容量制御部23に加えて、ストレージ制御部ペア管理テーブル34、物理チャンク管理テーブル35、論理チャンク管理テーブル36、空き物理チャンク数管理テーブル37、仮想ボリューム管理テーブル70が格納されている。
容量割当て処理部30は、ストレージ制御部ペア25に割り当てられる論理チャンクLCに対して物理チャンクPCを対応付ける機能を有するプログラムである。また物理チャンク選択処理部31は、例えば、容量割当て処理部30が論理チャンクLCに物理チャンクPCを対応付ける過程で呼び出され、当該論理チャンクLCに対応付ける物理チャンクPCを選択する機能を有するプログラムである。
またフェイルオーバ処理部32は、各ストレージ制御部ペア25について、アクティブストレージ制御部22が配置されたストレージノード4をそれぞれ監視し、そのストレージノード4に障害が発生した場合に、そのストレージ制御部ペア25のアクティブストレージ制御部22が実行していたI/O処理を当該ストレージ制御部ペア25のパッシブストレージ制御部22に引き継がせる機能を有するプログラムである。
実際上、フェイルオーバ処理部32は、ストレージ制御部ペア25のアクティブストレージ制御部22が配置されたストレージノード4の障害を検出した場合、そのストレージ制御部ペア25のパッシブストレージ制御部22の状態をアクティブモードに切り替えることにより、そのストレージ制御部ペア25のアクティブストレージ制御部22が実行していたI/O処理を当該ストレージ制御部ペア25のパッシブストレージ制御部22に引き継がせる。
さらに再冗長化処理部33は、各ストレージ制御部ペア25について、そのストレージ制御部ペア25に割り当てられた論理チャンクLCと対応付けられた各物理チャンクPCを提供する各ストレージノード4をそれぞれ監視し、いずれかのストレージノード4に障害が発生した場合に、当該ストレージノード4が提供する物理チャンクPCに代えて他のストレージノード4が提供する物理チャンクPCをその論理チャンクLCに対応付ける機能を有するプログラムである。この再冗長化処理部33の処理により、かかる論理チャンクLCに書き込まれたデータの格納先が再冗長化される。
一方、ストレージ制御部ペア管理テーブル34は、容量制御部23が各ストレージ制御部ペア25の構成を管理するために利用するテーブルであり、図7に示すように、ストレージ制御部ペア番号欄34A、アクティブ側配置先ノード番号欄34B、パッシブ側配置先ノード番号欄34C、LUN欄34Dを備えて構成される。ストレージ制御部ペア管理テーブル34では、1つの行が1つのストレージ制御部ペア25に対応する。
そしてストレージ制御部ペア番号欄34Aには、対応するクラスタ6内に定義された各ストレージ制御部ペア25にそれぞれ付与されたそのストレージ制御部ペア25に固有の番号(ペア番号)がすべて格納される。
またアクティブ側配置先ノード番号欄34Bには、対応するストレージ制御部ペア25のアクティブストレージ制御部22が配置されたストレージノード4に付与されたそのストレージノード4に固有の番号(ノード番号)が格納され、パッシブ側配置先ノード番号欄34Cには、そのストレージ制御部ペア25のパッシブストレージ制御部22が配置されたストレージノード4のノード番号が格納される。
さらにLUN欄34Dには、ホスト3に提供される仮想ボリュームを識別する識別情報であるLUNが格納され、当該LUNで識別される仮想ボリュームを管理するストレージ制御部ペア番号、アクティブ側配置先ノード番号、パッシブ側配置先ノード番号と対応づけて管理される。
各ストレージノード4のフロントエンドドライバ20は、ホスト3からI/O要求(リード要求又はライト要求)を受領した際、I/O要求に含まれるLUNを取得し、ストレージ制御部ペア管理テーブル34を用いて当該LUNに対応付けられたストレージ制御部ペア番号、アクティブ側配置先ノード番号、パッシブ側配置先ノード番号を特定する。これにより、各ストレージノード4のフロントエンドドライバ20は、I/O要求先となる仮想ボリュームを管理するストレージ制御部ペアと、そのストレージ制御部ペアの配置先ノードを特定できる。
従って、図7の例の場合、「1」というペア番号が付与されたストレージ制御部ペア25は、アクティブストレージ制御部22が「1」というノード番号が付与されたストレージノード4に配置され、パッシブストレージ制御部22が「2」というノード番号が付与されたストレージノード4に配置されていることが示されている。
物理チャンク管理テーブル35は、容量制御部23がクラスタ6内に定義された物理チャンクPCを管理するために利用するテーブルであり、図8に示すように、物理チャンク番号欄35A、所属ノード番号欄35B、ドライブ番号欄35C及びドライブ内オフセット欄35Dを備えて構成される。物理チャンク管理テーブル35では、1つの行が1つの物理チャンクPCに対応する。
そして物理チャンク番号欄35Aには、クラスタ6内の各物理チャンクPCにそれぞれ付与されたその物理チャンクPCに固有の番号(物理チャンク番号)がすべて格納され、所属ノード番号欄35Bには、対応する物理チャンクPCを提供するストレージノード4のノード番号が格納される。
またドライブ番号欄35Cには、対応する物理チャンクPCを提供するストレージノード4内のその物理チャンクPCを提供する記憶デバイス13に付与されたその記憶デバイス13に固有の番号(ドライブ番号)が格納される。さらにドライブ内オフセット欄35Dには、その記憶デバイス13が提供する記憶領域におけるその物理チャンクPCの当該記憶領域の先頭からのオフセット位置が格納される。
従って、図8の例の場合、物理チャンク番号が「0」の物理チャンクPCは、ストレージ番号が「0」のストレージノード4に搭載されたドライブ番号が「0」の記憶デバイス13における先頭から「0x00000」だけオフセットした位置から始まる所定大きさの記憶領域であることが示されている。
論理チャンク管理テーブル36は、容量制御部23がクラスタ6内に定義された論理チャンクLCを管理するために利用するテーブルであり、図9に示すように、論理チャンク番号欄36A、割当て先ストレージ制御部ペア番号欄36B、マスタ物理チャンク番号欄36C及びミラー物理チャンク番号欄36Dを備えて構成される。論理チャンク管理テーブル36では、1つの行が1つの論理チャンクLCに対応する。
そして論理チャンク番号欄36Aには、クラスタ6内の各論理チャンクLCにそれぞれ付与されたその論理チャンクLCに固有の番号(論理チャンク番号)が格納され、割当て先ストレージ制御部ペア番号欄36Bには、対応する論理チャンクLCが割り当てられたストレージ制御部ペア25のペア番号が格納される。
またマスタ物理チャンク番号欄36Cには、対応する論理チャンクLCと対応付けられた複数の物理チャンクPCのうち、「マスタ」に設定された物理チャンクPCの物理チャンク番号が格納され、ミラー物理チャンク番号欄36Dには、かかる複数の物理チャンクPCのうち、「ミラー」に設定された物理チャンクPCの物理チャンク番号が格納される。
従って、図9の例の場合、論理チャンク番号が「0」の論理チャンクLCは、ペア番号が「0」のストレージ制御部ペア25に割り当てられており、その論理チャンクLCには、「マスタ」に設定されたチャンク番号が「0」の物理チャンクPCと、「ミラー」に設定されたチャンク番号が「4」の物理チャンクPCとが対応付けられていることが示されている。
図36は、仮想ボリューム管理テーブル70の構成を示す。仮想ボリューム管理テーブル70は、各仮想ボリュームの領域と当該領域に対応付けられた論理チャンクの対応関係を管理するために利用するテーブルであり、図36に示すように、LUN欄70A、VVOLアドレス欄70B、論理チャンク番号欄70C及び論理チャンクアドレス欄70Dを備えて構成される。
LUN欄70A及びVVOLアドレス欄70Bには、ホスト3に提供される仮想ボリュームを識別する識別情報であるLUNとその仮想ボリュームのアドレス(VVOLアドレス)がそれぞれ格納され、論理チャンク番号欄70C及び論理チャンクアドレス欄70Dには、当該LUNとVVOLアドレスで識別される仮想ボリュームの領域に割り当てられた論理チャンクの論理チャンク番号と当該論理チャンクのアドレス(論理チャンクアドレス)がそれぞれ格納される。LUN欄70A、VVOLアドレス欄70B、論理チャンク番号欄70C及び論理チャンクアドレス欄70Dの情報は、仮想ボリュームの領域ごとに対応付けて管理されている。
VVOLアドレス欄70Bには、例えば当該仮想ボリュームの領域を示すアドレスの範囲が格納されてもよいし、又は、当該仮想ボリュームの領域の先頭アドレスが格納されてもよい。同様に、論理チャンクアドレス欄70Dには、例えば当該論理チャンクの領域を示すアドレスの範囲が格納されてもよいし、又は、当該論理チャンクの領域の先頭アドレスが格納されてもよい。
各ストレージノード4のストレージ制御部22は、I/O要求(リード要求又はライト要求)を受領した際、I/O要求に含まれるLUNとVVOLアドレスを取得し、仮想ボリューム管理テーブル70を用いて当該LUN及びVVOLアドレスに対応づけられた論理チャンク番号及び論理チャンクアドレスを特定する。これにより、各ストレージノード4のストレージ制御部22は、I/O要求先となる仮想ボリュームの領域に割り当てられた論理チャンクの領域を特定できる。
この仮想ボリューム管理テーブル70について、例えば当該クラスタ(分散ストレージシステム)6が提供する全仮想ボリュームに関する仮想ボリューム管理テーブル70を各ノードで共有してもよいし、例えばストレージ制御部ペア25毎に、当該ストレージ制御部ペア25が提供する仮想ボリュームに関する仮想ボリューム管理テーブル70を管理してもよい。
空き物理チャンク数管理テーブル37は、各ストレージノード4におけるいずれの論理チャンクLCにも未だ対応付けられていない未使用の物理チャンクPC(以下、これを空き物理チャンクPCと呼ぶ)の総数を容量制御部23が管理するために利用するテーブルであり、図10に示すように、ノード番号欄37A及び空き物理チャンク数欄37Bを備えて構成される。空き物理チャンク数管理テーブル37では、1つの行が1つのストレージノード4に対応する。
そしてノード番号欄37Aには、クラスタ6内に存在するすべてのストレージノード4のノード番号がそれぞれ格納され、空き物理チャンク数欄37Bには、対応するストレージノード4内の空物理チャンクの総数が格納される。
従って、図10の例の場合、ノード番号が「0」のストレージノード4には空き物理チャンクPCがなく(空き物理チャンク数が「0」)、ノード番号が「1」のストレージノード4には「10」個の空き物理チャンクPCが存在していることが示されている。
(1−3)ストレージノードにおいて実行される各種処理
(1−3−1)ライト処理
図11は、ストレージ制御部ペア25のアクティブストレージ制御部22が、当該ストレージ制御部ペア25と対応付けられた仮想ボリュームVVOLをライト対象とするライト要求を受信した場合に実行されるライト処理の流れを示す。
かかるライト要求をアクティブストレージ制御部22が受信すると、この図11に示すライト処理が開始され、まず、そのライト要求を受信したアクティブストレージ制御部22が、容量仮想化機能や、ローカルコピー機能及びリモートコピー機能等の必要な機能に関する必要な処理を実行する(S1)。
この後、そのアクティブストレージ制御部22は、ライト対象の仮想ボリューム(ライト対象仮想ボリューム)VVOL内の当該ライト要求において指定されたライト先領域のアドレスを、対応する論理チャンクLCのチャンク番号と、当該論理チャンクLC内の対応する論理領域のオフセット位置とに変換したI/Oコマンドを生成し(S2)、生成したI/Oコマンドを自ストレージノード4内の容量制御部23に送信する(S3)。なお、以下においては、かかるライト要求において指定されたライト対象仮想ボリュームVVOLのライト先領域に対して既に論理チャンクLCから論理領域が割り当てられているものとする。
このI/Oコマンドを受領した容量制御部23は、ホスト装置3からのライト要求において指定されたライト対象仮想ボリュームVVOLにおけるライト先領域に論理領域を割り当てた論理チャンクLCと対応付けられているすべての物理チャンクPCをライト先物理チャンクPCとして選択する(S4)。
続いて、容量制御部23は、選択したライト先物理チャンクPCのいずれかが、記憶デバイス13の障害等により閉塞されている状態(以下、この状態を「閉塞中」と呼ぶ)、又は、データのコピー中(以下、これを「リビルド中」と呼ぶ)であって、かかるライト要求において指定されたリード先領域に対応する記憶デバイス13内の記憶領域へのデータコピーが未だ完了していない状態のいずれかの状態にあるか否かを判定する(S5)。
そして容量制御部23は、この判定で否定結果を得るとステップS7に進む。これに対して、容量制御部23は、ステップS5の判定で肯定結果を得ると、「閉塞中」のライト先物理チャンクPC又は「リビルド中」であって、かつライト先領域に対応する記憶領域へのデータコピーが未だ完了していない物理チャンクPCをライト先物理チャンクPCから除外し(S6)、この後、ステップS7に進む。
また容量制御部23は、ステップS7に進むと、物理チャンク管理テーブル35(図8)を参照して、すべてのライト先物理チャンクPCについて、それぞれそのライト先物理チャンクPCを提供する記憶デバイス13のドライブ番号と、当該記憶デバイス13におけるそのライト先物理チャンクPCのオフセット位置とを取得する(S7)。
そして容量制御部23は、取得したこれらの情報に基づいて、そのときかかるアクティブストレージ制御部22がライト要求と共に受信したライトデータをすべてのライト先物理チャンクPC内の対応する記憶領域にそれぞれ格納する(S8)。以上により、このライト処理が終了する。
(1−3−2)リード処理
一方、図12は、ストレージ制御部ペア25のアクティブストレージ制御部22が、当該ストレージ制御部ペア25と対応付けられた仮想ボリュームVVOLをリード対象とするリード要求を受信した場合に実行される処理の流れを示す。
かかるリード要求をアクティブストレージ制御部22が受信すると、この図12に示すリード処理が開始され、まず、そのリード要求を受信したアクティブストレージ制御部22が、容量仮想化機能や、ローカルコピー機能及びリモートコピー機能等の必要な機能に関する必要な処理を実行する(S10)。
この後、そのアクティブストレージ制御部22は、リード対象の仮想ボリューム(リード対象仮想ボリューム)VVOL内の当該リード要求において指定されたリード先領域のアドレスを、対応する論理チャンクLCのチャンク番号と、当該論理チャンクLC内の対応する論理領域のオフセット位置とに変換したI/Oコマンドを生成し(S11)、生成したI/Oコマンドを自ストレージノード4内の容量制御部23に送信する(S12)。
このI/Oコマンドを受領した容量制御部23は、ホスト装置3からのリード要求において指定されたリード対象仮想ボリュームVVOLにおける当該リード要求において指定されたリード先領域に論理領域を割り当てた論理チャンクLCと対応付けられているすべての物理チャンクPCのうち、「マスタ」に設定されている物理チャンクPCをリード先物理チャンクPCとして選択する(S13)。
続いて、容量制御部23は、選択したリード先物理チャンクPCが「閉塞中」又は「リビルド中」のいずれかの状態にあるか否かを判定する(S14)。そして容量制御部23は、この判定で肯定結果を得ると、リード要求において指定されたリード対象仮想ボリュームVVOLのリード先領域に論理領域を割り当てた論理チャンクLCと対応付けられている物理チャンクPCのうち、未だステップS14の判定を行っていない物理チャンクPCを新たなリード先物理チャンクPCとして選択する(S15)。また容量制御部23は、ステップS14に戻り、この後ステップS14で否定結果を得るまでステップS14−ステップS15−ステップS14のループを繰り返す。
そして容量制御部23は、やがて条件に合致する物理チャンクPCを検出することによりステップS14で否定結果を得ると、リード先物理チャンクPCを提供する記憶デバイス13のドライブ番号と、当該記憶デバイス13におけるそのリード先物理チャンクPCのオフセット位置とを物理チャンク管理テーブル35(図8)から取得する(S16)。
また容量制御部23は、取得したこれらの情報に基づいて、ホスト装置3からのリード要求において指定されたデータをその記憶デバイス13から読み出し(S17)、読み出したリードデータを、かかるI/Oコマンドの送信元のアクティブストレージ制御部22に返信した後(S18)、このリード処理を終了する。なお、このリードデータを受領したアクティブストレージ制御部22は、この後、このリードデータをリード要求の送信元のホスト装置3に転送する。
なお、データ対象のデータがEC(Erasure Coding)により冗長データと共に複数の物理チャンクPCに分散されて格納されている場合には、容量制御部23は、上述のステップS13において、これら複数のすべての物理チャンクPCをリード先物理チャンクPCとして選択する。
また容量制御部23は、ステップS14において、選択したリード先物理チャンクPCの少なくとも1つが「閉塞中」又は「リビルド中」のいずれかの状態にあるか否かを判定する。そして容量制御部23は、この判定で否定結果を得た場合には、各リード先物理チャンクPCについてステップS16及びステップS17を上述と同様に実行することによりこれらリード先物理チャンクPCからデータをそれぞれ読み出す。また容量制御部23は、読み出したこれらのデータに基づいて元のデータを生成した上で、ステップS18において、生成したデータをリードデータとしてかかるI/Oコマンドの送信元のアクティブストレージ制御部22に返信し、この後、このリード処理を終了する。
これに対して、容量制御部23は、ステップS14において肯定結果を得た場合には、「閉塞中」又は「リビルド中」でない残りのリード先物理チャンクPCについてステップS16及びステップS17を上述と同様に実行することにより、これらのリード先物理チャンクPCからデータをそれぞれ読み出す。また容量制御部23は、読み出したこれらのデータに基づいて、「閉塞中」又は「リビルド中」のリード先物理チャンクPCに格納されているデータを復元し、復元したデータを用いて元のデータを生成した上で、ステップS18において、生成したデータをリードデータとしてかかるI/Oコマンドの送信元のアクティブストレージ制御部22に返信し、この後、このリード処理を終了する。
(1−3−3)容量割当て処理
一方、図13は、同一ストレージノード4内のアクティブストレージ制御部22から、当該アクティブストレージ制御部22が属するストレージ制御部ペア25に対する最初又は追加の記憶容量(物理チャンクPC)の割当てを要求された容量制御部23の容量割当て処理部30(図5)により実行される容量割当て処理の処理手順を示す。
容量割当て処理部30は、かかる要求が与えられると、この図13に示す容量割当て処理を開始し、まず、ストレージ制御部ペア管理テーブル34(図7)を参照して、記憶容量を割当てるべきストレージ制御部ペア25(以下、これを対象ストレージ制御部ペア25と呼ぶ)を構成する各ストレージ制御部22がそれぞれ配置されたストレージノード4のノード番号をすべて取得する(S20)。
続いて、容量割当て処理部30は、対象ストレージ制御部ペア25内のアクティブストレージ制御部22が配置されたストレージノード4を優先ノードに設定する(S21)。また容量割当て処理部30は、対象ストレージ制御部ペア25内のアクティブストレージ制御部22が配置されたストレージノード4における空き物理チャンクの合計容量の下限値をアクティブ用空き容量閾値として設定する(S22)。なお、このアクティブ用空き容量閾値の値は、本情報処理システム1の設置等の際にシステム管理者などが設定する形態であっても、また予めプログラム上の定数として指定されている形態あってもよい。
次いで、容量割当て処理部30は、物理チャンク選択処理部31(図5)を呼び出し、対象ストレージ制御部ペア25に割り当てる論理チャンクLCに対応付けるべき物理チャンクPCの選択を依頼する(S23)。かくして、この依頼を受領した物理チャンク選択処理部31は、クラスタ6内の空き物理チャンクPCの中から対象ストレージ制御部ペア25の論理チャンクLCに割り当てるべき物理チャンクPCを、優先ノード(ここでは、アクティブストレージ制御部22が配置されたストレージノード4)内の空き物理チャンクPCから優先的に選択し、選択した空き物理チャンクPCのチャンク番号を容量割当て処理部30に通知する。
そして容量割当て処理部30は、かかる空き物理チャンクPCのチャンク番号が物理チャンク選択処理部31から通知されると、そのチャンク番号の物理チャンクPCを「マスタ」の物理チャンクPCとして確保する(S24)。
次いで、容量割当て処理部30は、対象ストレージ制御部ペア25のパッシブストレージ制御部22が配置されたストレージノード4を優先ノードに設定する(S25)。また容量割当て処理部30は、対象ストレージ制御部ペア25内のパッシブストレージ制御部22が配置されたストレージノード4における空き物理チャンクPCの合計容量の下限値をパッシブ用空き容量閾値として設定する(S26)。なお、このパッシブ用空き容量閾値の値も、本情報処理システム1の設置等の際にシステム管理者などが設定する形態であっても、また予めプログラム上の定数として指定されている形態あってもよい。
さらに容量割当て処理部30は、ステップS24で確保した、「マスタ」に設定された物理チャンクPCを提供するストレージノード4を除外ノードに設定する(S27)。
続いて、容量割当て処理部30は、物理チャンク選択処理部31(図5)を呼び出し、対象ストレージ制御部ペア25に割り当てる論理チャンクLCに対応付けるべき物理チャンクPCの選択を依頼する(S28)。かくして、この依頼を受領した物理チャンク選択処理部31は、クラスタ6内の空き物理チャンクPCの中から対象ストレージ制御部ペア25の論理チャンクLCに割り当てるべき物理チャンクPCを、優先ノード(ここでは、パッシブストレージ制御部22が配置されたストレージノード4)内の空き物理チャンクPCから優先的に選択し、選択した空き物理チャンクPCのチャンク番号を容量割当て処理部30に通知する。
そして容量割当て処理部30は、かかる空き物理チャンクPCのチャンク番号が物理チャンク選択処理部31から通知されると、そのチャンク番号の物理チャンクPCを「ミラー」の物理チャンクPCとして確保する(S29)。
続いて、容量割当て処理部30は、新たな論理チャンクLCを作成し、作成した論理チャンクLCに対して、ステップS24で確保した物理チャンクPCと、ステップS29で確保した物理チャンクPCとを対応付ける(S30)。また容量割当て処理部30は、ステップS30で作成した論理チャンクLCを対象ストレージ制御部ペア25のプールPLに割り当てる(S31)。
そして容量割当て処理部30は、この後、この追加容量割当て処理を終了する。各ストレージノード4の容量割当て処理部30は、パッシブ用空き容量閾値とアクティブ用空き容量閾値を同じ値に設定してもよいし、異なる値に設定してもよい。また、パッシブ用空き容量閾値とアクティブ用空き容量閾値の其々について、ストレージノード4で共通の値でもよいし、ストレージノード4毎に異なる値でもよい。
ストレージノード4の容量割当て処理部30は、パッシブ用空き容量閾値をアクティブ用空き容量閾値より高い値に設定してもよい。この場合、当該ストレージノード4の空き容量がパッシブ用空き容量閾値を下回るがアクティブ用空き容量閾値を上回るとき、当該ストレージノードの記憶領域からパッシブストレージ制御部22のデータ用には新たにミラー物理チャンクの割り当てを行わないが、アクティブストレージ制御部22のデータ用には新たにマスタ物理チャンクの割り当てが可能となる。これにより、ストレージノード4において、アクティブストレージ制御部22からアクセスされるマスタ物理チャンクを、ミラー物理チャンクより優先的に割り当て可能となる。
(1−3−4)物理チャンク選択処理
図14は、上述の容量割当て処理のステップS23及びステップS28において容量割当て処理部30から対象ストレージ制御部ペア25に割り当てる論理チャンクに対応付ける物理チャンクPCを選択するよう依頼を受けた物理チャンク選択処理部31により実行される物理チャンク選択処理の処理内容を示す。
物理チャンク選択処理部31は、かかる依頼が容量割当て処理部30から与えられると、この図14に示す物理チャンク選択処理を開始し、まず、かかる依頼と共に容量割当て処理部30から通知される優先ノードのノード番号を取得する(S40)。
また物理チャンク選択処理部31は、除外ノードが設定されている場合に、かかる依頼と共に容量割当て処理部30から通知されるその除外ノードのノード番号も取得する(S41)。
さらに物理チャンク選択処理部31は、かかる依頼と共に容量割当て処理部30から通知されるアクティブ用空き容量閾値(ステップS23の依頼の場合)、又は、パッシブ用空き容量閾値(ステップS28の依頼の場合)を取得する(S42)。
続いて、物理チャンク選択処理部31は、優先ノードが除外ノードではなく、かつ優先ノードに合計容量がアクティブ用空き容量閾値(ステップS23の依頼の場合)、又は、パッシブ用空き容量閾値(ステップS28の依頼の場合)以上の空き物理チャンクPCが存在するか否かを判定する(S43)。なお、この判定は、空き物理チャンク数管理テーブル37(図10)を参照して行われる。
そして物理チャンク選択処理部31は、この判定で肯定結果を得ると、物理チャンク管理テーブル35(図8)を参照して、優先ノード内の空き物理チャンクPCの中から空き物理チャンクPCを1つ選択し(S44)、選択した空き物理チャンクPCのチャンク番号を容量割当て処理部30に通知した後(S47)、この物理チャンク選択処理を終了する。
これに対して、物理チャンク選択処理部31は、ステップS43の判定で否定結果を得ると、クラスタ6内の優先ノード及び除外ノード以外のストレージノード4の中から1つのストレージノード4を選択する(S45)。このときのストレージノード4の選択方法としては、例えば、空き物理チャンク数管理テーブル37を参照して、空き物理チャンクPCの数が最も多いストレージノード4を選択する方法を適用することができる。
続いて、物理チャンク選択処理部31は、ステップS45で選択したストレージノード4内の空き物理チャンクPCの中から1つの空き物理チャンクPCを選択する(S46)。また物理チャンク選択処理部31は、選択した空き物理チャンクPCのチャンク番号を容量割当て処理部30に通知し(S47)、この後、この物理チャンク選択処理を終了する。
(1−3−5)フェイルオーバ処理
一方、図15は、容量制御部23のフェイルオーバ処理部32(図5)により定期的に実行されるフェイルオーバ処理の処理手順を示す。
フェイルオーバ処理部32は、このフェイルオーバ処理を開始すると、まず、クラスタ6内のすべてのストレージ制御部ペア25についてステップS51以降の処理を実行し終えたか否かを判断する(S50)。
そしてフェイルオーバ処理部32は、この判断で否定結果を得ると、クラスタ6内の全ストレージ制御部ペア25の中からステップS51で未選択のストレージ制御部ペア25を1つ選択し(S51)、選択したストレージ制御部ペア25(以下、これを第1の選択ストレージ制御部ペア25と呼ぶ)のアクティブストレージ制御部22が配置されたストレージノード4に障害が発生しているか否かを判断する(S52)。
フェイルオーバ処理部32は、この判断で否定結果を得るとステップS50に戻り、この後、第1の選択ストレージ制御部ペア25を未処理の他のストレージ制御部ペア25に順次切り替えながら、ステップS50以降の処理を繰り返す。
これに対して、フェイルオーバ処理部32は、ステップS52の判断で肯定結果を得ると、第1の選択ストレージ制御部ペア25のパッシブストレージ制御部22の状態をアクティブモードに切り替え、当該ストレージ制御部ペア25のアクティブストレージ制御部22の状態をパッシブモードに切り替える(S53)。
続いて、フェイルオーバ処理部32は、論理チャンク管理テーブル36(図9)を参照して、第1の選択ストレージ制御部ペア25に割り当てられている論理チャンクLCがあるか否かを判断する(S54)。
そしてフェイルオーバ処理部32は、この判断で否定結果を得るとステップS50に戻り、この後、第1の選択ストレージ制御部ペア25を未処理の他のストレージ制御部ペア25に順次切り替えながらステップS50以降の処理を繰り返す。
これに対して、フェイルオーバ処理部32は、ステップS54の判断で肯定結果を得ると、第1の選択ストレージ制御部ペア25に割り当てられた論理チャンクLCに対応付けられている物理チャンクPCの「マスタ」及び「ミラー」の設定を切り替える(S55)。
具体的に、フェイルオーバ処理部32は、ストレージ制御部ペア管理テーブル34(図7)における第1の選択ストレージ制御部ペア25に対応する行のアクティブ配置先ノード番号欄34B(図7)に格納されているノード番号と、その行のパッシブ配置先ノード番号欄34C(図7)に格納されているノード番号とを入れ替えるように、ストレージ制御部ペア管理テーブル34を更新する(S55)。
次いで、フェイルオーバ処理部32は、ステップS50に戻り、この後、第1の選択ストレージ制御部ペア25を未処理の他のストレージ制御部ペア25に順次切り替えながらステップS50以降の処理を繰り返す。
そしてフェイルオーバ処理部32は、やがてクラスタ6内に定義されたすべてのストレージ制御部ペア25についてステップS52以降の処理を実行し終えることによりステップS50で肯定結果を得ると、このフェイルオーバ処理を終了する。
(1−3−6)再冗長化処理
他方、図16は、容量制御部23の再冗長化処理部33(図5)により定期的に実行される再冗長化処理の処理手順を示す。
再冗長化処理部33は、この再冗長化処理を開始すると、まず、クラスタ6内のすべてのストレージ制御部ペア25についてステップS61以降の処理を実行し終えたか否かを判断する(S60)。
そして再冗長化処理部33は、この判断で否定結果を得ると、クラスタ6内の全ストレージ制御部ペア25の中から未だステップS61で未選択のストレージ制御部ペア25を1つ選択し(S61)、選択したストレージ制御部ペア(以下、これを第2の選択ストレージ制御部ペアと呼ぶ)25に割り当てられているいずれかの論理チャンクLCに対応付けられたいずれかの物理チャンクPCを提供する記憶デバイス13、又は、当該記憶デバイス13が搭載されたストレージノード4に障害が発生しているか否かを判断する(S62)。
再冗長化処理部33は、この判断で否定結果を得るとステップS60に戻り、この後、第2の選択ストレージ制御部ペア25を未処理の他のストレージ制御部ペア25に順次切り替えながら、ステップS60以降の処理を繰り返す。
これに対して、再冗長化処理部33は、ステップS62の判断で肯定結果を得ると、かかる障害が発生したストレージノード4が提供する物理チャンク(以下、これを障害物理チャンクと呼ぶ)PCが「マスタ」に設定された物理チャンクPCであるか否かを判断する(S63)。
そして再冗長化処理部33は、この判断で肯定結果を得ると、第2の選択ストレージ制御部ペア25のアクティブストレージ制御部22が配置されたストレージノード4を優先ノードに設定する(S64)。また再冗長化処理部33は、ステップS63の判断で否定結果を得ると、第2の選択ストレージ制御部ペア25のパッシブストレージ制御部22が配置されたストレージノード4を優先ノードに設定する(S65)。
続いて、再冗長化処理部33は、第2の選択ストレージ制御部ペア25に割り当てられているいずれかの論理チャンクLCに対応付けられたいずれかの物理チャンクPCを提供するストレージノード4であって、障害が発生していないストレージノード4を除外ノードに設定する(S66)。
次いで、再冗長化処理部33は、物理チャンク選択処理部31(図5)を呼び出して図14について上述した物理チャンク選択処理を実行させることにより、ステップS62で検出した障害物理チャンクPCの代わりとなる物理チャンクPCを選択させる(S67)。
そして再冗長化処理部33は、この後、ステップS67で物理チャンク選択処理部31により選択された物理チャンク(以下、これを被選択物理チャンクと呼ぶ)PCを、ステップS62で検出した障害物理チャンクPCに代えて第2の選択ストレージ制御部ペア25に割り当てられた対応する論理チャンク(以下、これを再冗長化対象論理チャンクと呼ぶ)LCに対応付ける(S68)。
具体的に、再冗長化処理部33は、論理チャンク管理テーブル36(図9)における再冗長化対象論理チャンクPCに対応する行のマスタ物理チャンク番号欄36C(障害物理チャンクPCが「マスタ」の場合)又はミラー物理チャンク番号欄36D(障害物理チャンクPCが「ミラー」の場合)に格納されている障害物理チャンクPCのチャンク番号を被選択物理チャンクPCのチャンク番号に書き換える。
また再冗長化処理部33は、このステップS68において、空き物理チャンク数管理テーブル37(図10)における被選択物理チャンクPCを提供するストレージノード4に対応する行の空き物理チャンク数欄37B(図10)に格納されている数値を「1」減少させた値に更新する。
さらに再冗長化処理部33は、障害物理チャンクPCが「マスタ」に設定された物理チャンクPCであった場合には、このステップS68において、障害物理チャンクPCと共に再冗長化対象論理チャンクLCに対応付けられていた物理チャンクPCであって「ミラー」に設定されていた物理チャンクPCのうち、アクティブストレージ制御部22が配置されたストレージノード4が提供する物理チャンクPCを「マスタ」に切り替える。具体的に、再冗長化処理部33は、論理チャンク管理テーブル36(図9)における再冗長化対象論理チャンクLCに対応する行のマスタ物理チャンク番号欄36C(図9)に格納されているチャンク番号と、その行のミラー物理チャンク番号欄36D(図9)に格納されているチャンク番号とを入れ替える。
この後、再冗長化処理部33は、上述の被選択物理チャンクPCの状態を「リビルド中」に設定する(S69)。また再冗長化処理部33は、それまで障害物理チャンクPCに格納されていたデータをこの被選択物理チャンクPCに復元するリビルド処理を実行する(S70)。
具体的に、再冗長化処理部33は、障害物理チャンクPCに格納されていたデータが他の物理チャンクPCにミラーリングされている場合には、当該他の物理チャンクPCに格納されているデータを被選択物理チャンクPCにフルコピーする。また障害物理チャンクPCに格納されていたデータがErasure-Codingのデータの一部である場合には、そのデータを他のデータを利用して復元し、復元したデータを被選択物理チャンクPCに格納する。
そして再冗長化処理部33は、このリビルド処理が完了するとステップS60に戻り、この後、第2の選択ストレージ制御部ペア25を未処理の他のストレージ制御部ペア25に順次切り替えながらステップS60以降の処理を繰り返す。
そして再冗長化処理部33は、やがてクラスタ6内に定義されたすべてのストレージ制御部ペア25についてステップS61以降の処理を実行し終えることによりステップS60で肯定結果を得ると、この再冗長化処理を終了する。
(1−4)本実施の形態の効果
以上のように構成された本実施の形態の情報処理システム1では、ストレージ制御部ペア25に対して少なくとも2つの物理チャンクPCが割り当てられ、これらの物理チャンクPCにデータが二重化されて格納されるためデータが保護される。
また本情報処理システム1では、これら2つの物理チャンクPCとして、ストレージ制御部ペア25を構成するアクティブストレージ制御部22が配置されたストレージノード4内の記憶デバイス13が提供する物理チャンクPCと、当該ストレージ制御部ペア25を構成するパッシブストレージ制御部22が配置されたストレージノード4内の記憶デバイス13が提供する物理チャンクPCとが選定される。
従って、かかるストレージ制御部ペア25を構成するアクティブストレージ制御部22や、アクティブモードに切り替えられたパッシブストレージ制御部22がこれらの物理チャンクPCのうちの対応する物理チャンクPCに迅速にアクセスすることができ、当該物理チャンクPCに対するデータのリード/ライトを速やかに行うことができる。
よって、本情報処理システム1によれば、システム全体としての応答性能の劣化を防止しながらデータ保護を行うことができる。
(2)第2の実施の形態
第1の実施の形態のようにストレージ制御部ペア25に論理チャンクLCを割り当て、その論理チャンクLCに複数の物理チャンクPCを対応付けることによりデータを冗長化する場合、論理チャンクLCに対応付ける物理チャンクPCを選択するに際しては、フォールトセット(Fault Set)についても考慮することが望ましい。ここで、「フォールトセット」とは、単一の電源障害によって障害が発生するおそれがあるストレージノード4のグループを意味する。
例えば、1つのストレージノード4の障害によりデータロスト等が発生するのを防止すべく、1つの論理チャンクLCに対応付ける複数の物理チャンクPCを、それぞれ異なるストレージノード4が提供する物理チャンクPCの中から選択したとしても、これらのストレージノード4が同じ電源から電力を取得している場合には、その電源がダウンした段階でその論理チャンクLCに対応付けたすべての物理チャンクPCに対するデータのリード/ライトを行えなくなる。
そこで本実施の形態においては、論理チャンクLCに複数の物理チャンクPCを対応付ける際に、フォールトセットを意識してその論理チャンクLCに対応付ける物理チャンクPCを選択する。具体的には、1つの論理チャンクLCに対応付ける物理チャンクPCとして、異なるフォールトセットに属するストレージノード4がそれぞれ提供する物理チャンクPCを選択するようにする。
また、このように1つの論理チャンクLCに対応付ける物理チャンクPCを異なるフォールトセットに属するストレージノード4がそれぞれ提供する物理チャンクPCを選択するようにしたとしても、かかる論理チャンクLCが割り当てられたストレージ制御部ペア25を構成する各ストレージノード4がそれぞれ配置されたストレージノード4が同じフォールトセットに属している場合には、そのフォールトセットに電源障害が発生した場合にホスト装置3からのI/O要求に対応できなくなる。
そこで本実施の形態においては、それぞれ異なるフォールトセットに属するストレージノード4に配置された2つのストレージ制御部22によりストレージ制御部ペア25を構成するようにする。
図1との対応部分に同一符号を付して示す図17は、上述のような「フォールトセット」を意識した本実施の形態による情報処理システム40の概略構成例を示す。ここでは、「ストレージノード1」及び「ストレージノード2」という2つのストレージノード41が「フォールトセット1」というフォールトセット42に属し、「ストレージノード4」及び「ストレージノード4」というストレージノード41が「フォールトセット2」というフォールトセット42に属し、……「ストレージノード(2n−1)」及び「ストレージノード2n」というストレージノード41が「フォールトセットn」というフォールトセット42に属しているものとする。
なお各ストレージノード41のハードウェア構成は、第1の実施の形態のストレージノード4と同様であるため、ここでの説明は省略する。
図3との対応部分に同一符号を付して示す図18は、本実施の形態の情報処理システム40に定義される各ストレージ制御部ペア25の構成例を示す。この図18に示すように、本実施の形態の場合、各ストレージ制御部ペア25は、それぞれ異なるフォールトセット42に属するストレージノード41にそれぞれ配置された2つのストレージ制御部22から構成される。
例えば、図18の例の場合、「ストレージ制御部ペア1(SCP1)」というストレージ制御部ペア25は、「フォールトセット1」というフォールトセットに属する「ストレージノード1」というストレージノード41に配置された「ストレージ制御部1」というストレージ制御部22と、「フォールトセット2」というフォールトセットに属する「ストレージノード3」というストレージノード41に配置された「ストレージ制御部2」というストレージ制御部22とから構成されている。
また「ストレージ制御部ペア2(SCP2)」というストレージ制御部ペア25は、「フォールトセット2」というフォールトセットに属する「ストレージノード3」というストレージノード41に配置された「ストレージ制御部3」というストレージ制御部22と、「フォールトセット1」というフォールトセットに属する「ストレージノード2」というストレージノード41に配置された「ストレージ制御部4」というストレージ制御部22とから構成されている。
このような各ストレージ制御部ペア25の構成設定は、例えば、システム管理者が各ストレージノード4のフォールトセットを把握した上で管理ノード5を介して各ストレージノード4に対して行うようにしてもよい。また、いずれかのストレージノード4(例えば、クラスタ6内で代表に選出されたストレージノード4)が、図20について後述するノード管理テーブル44を参照して、異なるフォールトセット42に属するストレージノード41にそれぞれ配置された2つのストレージ制御部22からストレージ制御部ペア25を構成するようにしてもよい。
図19は、本実施の形態の情報処理システム40において、1つの論理チャンクLCに2つの物理チャンクPCを対応付ける場合の例を示す。この図19に示すように、本実施の形態の場合、1つの論理チャンクLCに対しては、互いに異なるフォールトセットに属するストレージノード41内の記憶デバイス13が提供する物理チャンクPCがそれぞれ複数対応付けられる。
例えば、図19の例の場合、「A」という論理チャンクLCに対しては、「フォールトセット1」というフォールトセットに属する「ストレージノード3」というストレージノード41内の記憶デバイス13が提供する「A」という物理チャンクPCと、「フォールトセット3」というフォールトセットに属する「ストレージノード5」というストレージノード41内の記憶デバイス13が提供する「A」という物理チャンクPCとが対応付けられている。
また「B」という論理チャンクLCに対しては、「フォールトセット1」というフォールトセットに属する「ストレージノード1」というストレージノード41内の記憶デバイス13が提供する「B」という物理チャンクPCと、「フォールトセット2」というフォールトセットに属する「ストレージノード3」というストレージノード41内の記憶デバイス13が提供する「B」という物理チャンクPCとが対応付けられている。
図20は、図6〜図10等について上述した第1の実施の形態によるフロントエンドドライバ20、バックエンドドライバ21、1又は複数のストレージ制御部22、ストレージ制御部ペア管理テーブル34、物理チャンク管理テーブル35、論理チャンク管理テーブル36及び空き物理チャンク数管理テーブル37に加えて、本実施の形態の各ストレージノード41のメモリ12(図2)に格納されるノード管理テーブル44を示す。
ノード管理テーブル44は、各ストレージノード41がそれぞれ属するフォールトセットを管理するために本実施の形態の容量制御部43(図18)が利用するテーブルであり、図20に示すように、ノード番号欄44A及びフォールトセット番号欄44Bを備えて構成される。
そしてノード番号欄44Aには、クラスタ6内に存在する各ストレージノード4にそれぞれ付与されたノード番号がすべて格納され、フォールトセット番号欄44Bには、対応するストレージノード4が属するフォールトセットに付与されたそのフォールトセットに固有の番号(フォールトセット番号)が格納される。
従って、図20の例の場合、例えば、「1」というノード番号が付与されたストレージノード41及び「3」というノード番号が付与されたストレージノード41は、「1」というフォールトセット番号が付与されたフォールトセットに所属し、「2」というノード番号が付与されたストレージノード41及び「4」というノード番号が付与されたストレージノード41は、「2」というフォールトセット番号が付与されたフォールトセットに所属していることが示されている。
図21は、図14について上述した第1の実施の形態の容量制御部23の物理チャンク選択処理部31に代えて、本実施の形態の容量制御部43(図18)の物理チャンク選択処理部45(図5)により実行される本実施の形態による物理チャンク選択処理の処理手順を示す。なお、これ以外の容量制御部43の処理内容は第1の実施の形態の容量制御部23と同様であるため、ここでの説明は省略する。
本実施の形態の容量制御部43の物理チャンク選択処理部45は、図13について上述した容量割当て処理のステップS23又はステップS28等において呼び出されると、この図21に示す物理チャンク選択処理を開始し、ステップS80〜ステップS83の処理を図14のステップS40〜ステップS43と同様に処理する。
そして物理チャンク選択処理部45は、ステップS83の判断で肯定結果を得ると、図14について上述した容量割当て処理のステップS44及びステップS47と同様にしてステップS84及びステップS89をそれぞれ処理し、この後、この物理チャンク選択処理を終了する。
これに対して、物理チャンク選択処理部45は、ステップS83の判断で否定結果を得ると、優先ノードと同一のフォールトセットに属する他のいずれかのストレージノード41であって、当該ストレージノード41が除外ノードではなく、かつ当該ストレージノード41内に合計容量がアクティブ用空き容量閾値(ステップS23の依頼の場合)、又は、パッシブ用空き容量閾値(ステップS28の依頼の場合)以上の空き物理チャンクPCがあるストレージノード41が存在するか否かを判断する(S85)。なお、この判定は、空き物理チャンク数管理テーブル37(図10)を参照して行われる。
そして物理チャンク選択処理部45は、この判断で肯定結果を得ると、ステップS83の条件を満たすストレージノード41の中から1つのストレージノード41を選択する(S87)。このときのストレージノード41の選択方法としては、例えば、空き物理チャンク数管理テーブル37を参照して、ステップS85の条件を満たすストレージノード41のうち、空き物理チャンクPCの数が最も多いストレージノード41を選択する方法を適用することができる。ただし、他の方法によりストレージノード41を選択するようにしてもよい。
続いて、物理チャンク選択処理部45は、選択したストレージノード41内の空き物理チャンクPCの中から1つの空き物理チャンクPCを選択する(S88)。また物理チャンク選択処理部45は、ステップS88で選択した物理チャンクPCのチャンク番号を容量割当て処理部30(図5)に通知し(S89)、この後、この物理チャンク選択処理を終了する。
一方、物理チャンク選択処理部45は、ステップS85の判断で否定結果を得ると、空き物理チャンク数管理テーブル37を参照して、優先ノードとは別のフォールトセットに属するいずれかのストレージノードで41あって、当該ストレージノード41が除外ノードではなく、かつ当該ストレージノード41内に合計容量がアクティブ用空き容量閾値(ステップS23の依頼の場合)、又は、パッシブ用空き容量閾値(ステップS28の依頼の場合)以上の空き物理チャンクPCがあるストレージノード41を1つ選択する(S86)。
また物理チャンク選択処理部45は、ステップS86で選択したストレージノード41内の空き物理チャンクPCの中から1つの空き物理チャンクを選択する(S88)。さらに物理チャンク選択処理部45は、ステップS88で選択した物理チャンクPCのチャンク番号を容量割当て処理部30に通知し(S89)、この後、この物理チャンク選択処理を終了する。
以上のように本実施の形態の情報処理システム40では、第1の実施の形態の構成に加えてフォールトセットをも考慮して論理チャンクLCに対応付ける物理チャンクPCを選択するようにしているため、単一の電源障害によってストレージ制御部ペア25に対応付けられたすべての物理チャンクPCに対するデータのリード/ライトが行えなくなる事態の発生を確実に回避することができる。
従って、本実施の形態によれば、第1の実施の形態により得られる効果に加えて、より可用性及び信頼性の高い情報処理システムを構築することができるという効果をも得ることができる。
(3)第3の実施の形態
図1との対応部分に同一符号を付して示す図22は、第3の実施の形態による情報処理システム50の全体構成を示す。本情報処理システム50は、階層制御機能と、これに応じた容量割当て機能とが各ストレージノード51にそれぞれ実装されている点が第1の実施の形態の情報処理システム1と相違する。本実施の形態の情報処理ステム50におけるこれ以外の機能は第1の実施の形態の情報処理システム1とほぼ同様であるため、ここでの説明は省略する。
まず階層制御機能について説明する。階層制御機能は、記憶デバイス13が提供する記憶領域をその記憶デバイス13の応答速度に応じて複数の記憶階層(ティア:Tier)にグループ化し、よりアクセス頻度の高いデータについてはより応答速度が高い記憶階層の記憶領域に格納する機能である。
このため本実施の形態の場合、各ストレージノード51には、応答速度が異なる複数種類の記憶デバイス13がそれぞれ搭載され、同じ種類の記憶デバイス13が提供する物理チャンクPCが同じ記憶階層の記憶領域として管理される。
例えば、各ストレージノードにSSD、SASハードディスク装置及びSATAハードディスク装置の3種類の記憶デバイス13が搭載されている場合、最も応答速度が速いSSDが提供する物理チャンクPCが第1の記憶階層の記憶領域、次に応答速度が速いSASハードディスク装置が提供する物理チャンクPCが第2の記憶階層の記憶領域、最も応答速度が遅いSATAハードディスク装置が提供する物理チャンクPCが第3の記憶階層の記憶領域として管理される。
そして各記憶階層の記憶領域にそれぞれ格納された各データは、それぞれそのアクセス頻度が管理され、アクセス頻度が最も多いデータを第1の記憶階層の記憶領域に移動し、次にアクセス頻度が多いデータを第2の記憶階層の記憶領域に移動し、アクセス頻度が最も低いデータを第3の記憶階層の記憶領域に移動する処理が定期的に実行される。
このような階層制御機能によれば、アクセス頻度が高いデータに対する応答性能を維持しながら、アクセス頻度が低いデータについてはコストが安い記憶デバイス13により記憶保持することができ、これによりシステム全体としてのコストを安価に抑えることができるという利点がある。
本実施の形態の情報処理システム50では、このような階層制御機能に対応すべく、図23に示すように、各ストレージ制御部ペア25にそれぞれ割り当てられたプールPLに対して、それぞれ異なる記憶階層の物理チャンクPCが対応付けられた複数の論理チャンクLCが割り当てられている。なお以下においては、各ストレージ制御部ペア25に3つの記憶階層(第1〜第3の記憶階層)分の論理チャンクLCをそれぞれ対応付けるものとして説明を進めるが、ストレージ制御部ペア25に対応付ける論理チャンクLCの記憶階層数は3以外であってもよい。
そして各ストレージ制御部ペア25のアクティブストレージ制御部22は、自己が属するストレージ制御部ペア25と対応付けられた仮想ボリュームVVOLをライト対象仮想ボリュームVVOLとするライト要求が与えられた場合、そのライト要求において指定されたそのライト対象仮想ボリュームVVOL内のライト先領域に対して、当初は最も応答性能が高い第1の記憶階層の物理チャンクPCが対応付けられた論理チャンクLCの論理領域を割り当てる。
またアクティブストレージ制御部22は、その後、かかるライト対象仮想ボリュームVVOLにライトされた各データのアクセス頻度を監視し、これらデータに対するアクセス頻度に応じて、最もアクセス頻度が高いデータについては、仮想ボリュームVVOLにおけるそのデータがライトされた記憶領域に対応付ける論理チャンクLCの論理領域を最も高い記憶階層に属する論理チャンクLC内の論理領域に必要に応じて切り替える。またアクティブストレージ制御部22は、これに応じて、切替え後の論理チャンクLCに対応付けられた物理チャンクPC内の対応する記憶領域にそのデータを移動させる。
またアクティブストレージ制御部22は、次にアクセス頻度が高いデータについては、仮想ボリュームVVOLにおけるそのデータがライトされた記憶領域に対応付ける論理チャンクLCの論理領域を次に高い記憶階層に属する論理チャンクLCの論理領域に切り替え、切替え後の論理チャンクLCに対応付けられた物理チャンクPC内の対応する記憶領域にそのデータを移動させる。
さらにアクティブストレージ制御部22は、最もアクセス頻度が低いデータについては、仮想ボリュームVVOLにおけるそのデータがライトされた記憶領域に対応付ける論理チャンクLCの論理領域を最も低い記憶階層に属する論理チャンクLCの論理領域に切り替え、切替え後の論理チャンクLCに対応付けられた物理チャンクPCの対応する記憶領域にそのデータを移動させる。
このような本実施の形態の容量割当て機能を実現するための手段として、本実施の形態の各ストレージノード51のメモリ12(図2)には、図8について上述した物理チャンク管理テーブル35に代えて図24に示す物理チャンク管理テーブル52が格納されると共に、図9について上述した論理チャンク管理テーブル36に代えて図25に示す論理チャンク管理テーブル53が格納され、さらに図10について上述した空き物理チャンク数管理テーブル37に代えて図26に示す空き物理チャンク数管理テーブル54が格納されている。
そして本実施の形態の物理チャンク管理テーブル52には、図8について上述した物理チャンク管理テーブル35の物理チャンク番号欄35A、所属ノード番号欄35B、ドライブ番号欄35C及びドライブ内オフセット欄35Dとそれぞれ同様の情報が格納される物理チャンク番号欄52A、所属ノード番号欄52B、ドライブ番号欄52D及びドライブ内オフセット欄52Eに加えて、メディアタイプ欄52Cが設けられている。そしてメディアタイプ欄52Cには、対応する物理チャンクPCを提供する記憶デバイス13のメディアタイプ(SSD、SAS又はSATAなど)が格納される。
従って、図24の例の場合、物理チャンク番号が「0」〜「2」、「4」又は「5」の物理チャンクPCはメディアタイプが「SSD」の記憶デバイス13が提供する物理チャンクであり、物理チャンク番号が「3」の物理チャンクPCはメディアタイプが「SAS」の記憶デバイス13が提供する物理チャンクであり、物理チャンク番号が「6」及び「7」の物理チャンクPCはメディアタイプが「SATA」の記憶デバイス13が提供する物理チャンクであることが示されている。
また本実施の形態の論理チャンク管理テーブル53には、図9について上述した論理チャンク管理テーブル36の論理チャンク番号欄36A、割当て先ストレージ制御部ペア番号欄36B、マスタ物理チャンク番号欄36C及びミラー物理チャンク番号欄36Dとそれぞれ同様の情報が格納される論理チャンク番号欄53A、割当て先ストレージ制御部ペア番号欄53B、マスタ物理チャンク番号欄53D及びミラー物理チャンク番号欄53Eに加えて、メディアタイプ欄53Cが設けられている。そしてメディアタイプ欄53Cには、対応する論理チャンクLCに対応付けられた物理チャンクPCを提供する記憶デバイス13のメディアタイプが格納される。
従って、図25の例の場合、論理チャンク番号が「0」又は「1」の論理チャンクLCは、いずれもメディアタイプが「SSD」の記憶デバイス13が提供する物理チャンクPCが対応付けられた論理チャンクであり、論理チャンク番号が「2」の論理チャンクLCは、メディアタイプが「SAS」の記憶デバイス13が提供する物理チャンクPCが対応付けられた論理チャンクであることが示されている。
さらに本実施の形態の空き物理チャンク数管理テーブル54には、図10について上述した空き物理チャンク数管理テーブル37のノード番号欄37A及び空き物理チャンク数欄37Bとそれぞれ同様の情報が格納されるノード番号欄54A及び空き物理チャンク数欄54Bに加えて、各記憶階層にそれぞれ対応させた空き物理チャンク数欄54C,54D,54Eが設けられている。そして、これら空き物理チャンク数欄54C〜54Eには、それぞれ対応する記憶階層を構成するメディアタイプの記憶デバイス13が提供する物理チャンクPCのうちの空き物理チャンクPCの数が格納される。
従って、図26の例の場合、例えば、ノード番号が「1」のストレージノード51内には、現時点において、第1の記憶階層を構成する「SSD」というメディアタイプの記憶デバイス13が提供する空き物理チャンクPCが「5」つ存在し、第2の記憶階層を構成する「SAS」というメディアタイプの記憶デバイス13が提供する空き物理チャンクPCが「2」つ存在し、第3の記憶階層を構成する「SATA」というメディアタイプの記憶デバイス13が提供する空き物理チャンクPCが「3」つ存在することが示されている。なお、上述のようにどのメディアタイプの記憶デバイス13がどの記憶階層に属するかは予め定められているものとする。
図5との対応部分に同一符号を付して示す図27は、本実施の形態の容量制御部55の構成を示す。本実施の形態の容量制御部55は、容量割当て処理部56及び物理チャンク選択処理部57の処理内容が異なる点を除いて、第1の実施の形態の容量制御部23(図5)と同様に構成されている。
図28は、同じストレージノード51内のアクティブストレージ制御部22から、当該アクティブストレージ制御部22が属するストレージ制御部ペア25に対する最初又は追加の記憶容量の割当てを要求された本実施の形態の容量制御部55の容量割当て処理部56(図27)により実行される容量割当て処理の処理手順を示す。なお本実施の形態の場合、アクティブストレージ制御部22は、記憶階層を指定して記憶容量の割当てを容量制御部55に要求する。
容量割当て処理部56は、かかる要求が与えられると、この図28に示す容量割当て処理を開始し、まず、指定された記憶階層を確認し(S90)、この後、ステップS91〜ステップS93を図13について上述した第1の実施の形態の容量割当て処理のステップS20〜ステップS22と同様に処理する。
続いて、容量割当て処理部56は、物理チャンク選択処理部57(図27)を呼び出し、ステップS90で確認した対象ストレージ制御部ペア25に割り当てる記憶階層の論理チャンクLCに対応付けるべき物理チャンクPCの選択を依頼する(S94)。かくして、この依頼を受領した物理チャンク選択処理部57は、クラスタ6内の空き物理チャンクPCの中から対象ストレージ制御部ペア25の指定された記憶階層の論理チャンクLCに割り当てるべき物理チャンクPCを、優先ノード(ここでは、アクティブストレージ制御部22が配置されたストレージノード51)内の空き物理チャンクPCから優先的に選択し、選択した空き物理チャンクPCのチャンク番号を容量割当て処理部56に通知する。
次いで、容量割当て処理部56は、ステップS95〜ステップS98を、図13について上述した第1の実施の形態の容量割当て処理のステップS24〜ステップS27と同様に処理する。また容量割当て処理部56は、この後、物理チャンク選択処理部57(図27)を呼び出し、ステップS90で確認した対象ストレージ制御部ペア25に割り当てる記憶階層の論理チャンクLCに対応付けるべき物理チャンクPCの選択を依頼する(S99)。かくして、この依頼を受領した物理チャンク選択処理部57は、クラスタ6内の空き物理チャンクPCの中から対象ストレージ制御部ペア25の指定された記憶階層の論理チャンクLCに割り当てるべき物理チャンクPCを、優先ノード(ここでは、パッシブストレージ制御部22が配置されたストレージノード51)内の空き物理チャンクPCから優先的に選択し、選択した空き物理チャンクPCのチャンク番号を容量割当て処理部56に通知する。
続いて、容量割当て処理部56は、ステップS100〜ステップS102を、図13について上述した容量割当て処理のステップS29〜ステップS31と同様に処理し、この後、この容量割当て処理を終了する。
他方、図29は、図28について上述した本実施の形態の容量割当て処理のステップS94又はステップS99において容量割当て処理部56から対象ストレージ制御部ペア25に割り当てる論理チャンクLCに対応付ける物理チャンクPCを選択するよう依頼を受けた物理チャンク選択処理部57により実行される物理チャンク選択処理の処理内容を示す。
物理チャンク選択処理部57は、かかる依頼が容量割当て処理部56から与えられると、この図29に示す物理チャンク選択処理を開始し、まず、ステップS110〜ステップS112を図14について上述した第1の実施の形態の物理チャンク選択処理のステップS40〜ステップS42と同様に処理する。
続いて、物理チャンク選択処理部57は、優先ノードが除外ノードではなく、かつ優先ノード内の指定された階層の記憶デバイスに合計容量がアクティブ用空き容量閾値(ステップS93の依頼の場合)、又は、パッシブ用空き容量閾値(ステップS99の依頼の場合)以上の空き物理チャンクPCが存在するか否かを判定する(S113)。なお、この判定は、空き物理チャンク数管理テーブル54(図26)を参照して行われる。
そして物理チャンク選択処理部57は、この判定で肯定結果を得ると、物理チャンク管理テーブル52(図24)を参照して、優先ノード内の指定された記憶階層の記憶デバイス13が提供する空き物理チャンクPCの中から空き物理チャンクPCを1つ選択し(S114)、選択した空き物理チャンクPCのチャンク番号を容量割当て処理部56に通知した後(S117)、この物理チャンク選択処理を終了する。
これに対して、物理チャンク選択処理部57は、ステップS113の判定で否定結果を得ると、クラスタ6内の優先ノード及び除外ノード以外のストレージノード51の中から1つのストレージノード51を選択する(S115)。このときのストレージノード51の選択方法としては、例えば、空き物理チャンク数管理テーブル37を参照して、指定された記憶階層の記憶デバイス13が提供する物理チャンクPCのうちの空き物理チャンクPCの数が最も多いストレージノード51を選択する方法を適用することができる。ただし、他の方法によりストレージノード51を選択するようにしてもよい。
続いて、物理チャンク選択処理部57は、ステップS115で選択したストレージノード51内の指定された記憶階層の記憶デバイス13が提供する空き物理チャンクPCの中から1つの空き物理チャンクPCを選択する(S116)。また物理チャンク選択処理部57は、選択した空き物理チャンクPCのチャンク番号を容量割当て処理部56に通知し(S117)、この後、この物理チャンク選択処理を終了する。
以上のように本実施の形態によれば、階層制御機能が搭載された情報処理システム50についても第1の実施の形態と同様の効果を得ることができる。
(4)他の実施の形態
なお上述の第1〜第3の実施の形態においては、図1、図17及び図22のように、ホスト装置に物理的な記憶領域を提供する記憶デバイス13を各ストレージノード4,41,51に搭載するようにした場合について述べたが、本発明はこれに限らず、例えば、図1との対応部分に同一符号を付した図30に示すように、かかる記憶デバイス13を各ストレージノード60に搭載せず、これらストレージノード60にかかる記憶デバイス13が搭載された外部ストレージ装置61を接続するようにしてもよい。
この場合、各ストレージノード60のハードウェア構成は、図2から記憶デバイス13を除去した構成とし、これら各ストレージノード60の論理構成は、図3について構成したストレージノード4の論理構成と同様とすればよい。なお、このようにした場合におけるフロントエンドドライバ20、バックエンドドライバ21、ストレージ制御部22及び容量制御部23の制御内容は、第1の実施の形態と同様である。
従って、この例の場合、各ストレージ制御部ペア25に対しては、そのストレージ制御部ペア25を構成するアクティブストレージ制御部22が配置されたストレージノード60と接続された外部ストレージ装置61に搭載された記憶デバイス13が提供する物理チャンクPCと、当該ストレージ制御部ペア25を構成するパッシブストレージ制御部22が配置されたストレージノード60と接続された外部ストレージ装置61に搭載された記憶デバイス13が提供する物理チャンクPCとが対応付けられた論理チャンクLCが割り当てられることになる。
また上述の第1〜第3の実施の形態においては、図14について上述した物理チャンク選択処理のステップS45及びS46や、図21について上述した物理チャンク選択処理のステップS87及びS88、並びに、図29について上述した物理チャンク選択処理のステップS115及びS116において、空き物理チャンクPCの数が最も多いストレージノード4内の空き物理チャンクPCの中からストレージ制御部ペア25に割り当てる論理チャンクLCに対応付ける物理チャンクPCを選択するようにした場合について述べたが、本発明はこれに限らず、ストレージ制御部ペア25を構成するアクティブストレージ制御部22やパッシブストレージ制御部22の配置先近傍の物理チャンクPCを優先的にそのストレージ制御部ペア25に割り当てる論理チャンクLCに対応付けるようにしてもよい。
なお「ストレージ制御部22の配置先近傍の物理チャンクPC」とは、そのストレージ制御部22がその物理チャンクPCにアクセスする際に経由するスイッチ等のネットワークデバイスが少ない物理チャンクPCを指す。従って、ストレージ制御部22の配置先の最も近傍の物理チャンクPCは、そのストレージ制御部22が配置されたストレージノード4内の物理チャンクPCということになる。
このようにストレージ制御部ペア25を構成するアクティブストレージ制御部22やパッシブストレージ制御部22の配置先近傍の物理チャンクPCを優先的にそのストレージ制御部ペア25に割り当てる論理チャンクLCに対応付けるようにしても、アクティブストレージ制御部22やパッシブストレージ制御部22が迅速にその物理チャンクPCにアクセスすることができ、当該物理チャンクPCに対するデータのリード/ライトを速やかに行うことができる。
さらに上述の第1の実施の形態においては、図13及び図14について上述したように、ストレージ制御部ペア25のアクティブストレージ制御部22が配置されたストレージノード4や、当該ストレージ制御部ペア25のパッシブストレージ制御部22が配置されたストレージノード4を優先ノードに設定(図13のステップS21及びステップS25を参照)することにより、物理チャンク選択処理部31がこれらのストレージノード4の空き物理チャンクPCを優先的にそのストレージ制御部ペア25に割り当てる論理チャンクLCに対応付ける物理チャンクPCとして選択するようにした場合について述べたが、本発明はこれに限らず、物理チャンク選択処理部31が、クラスタ6内の各ストレージノード4の空き物理チャンクPCの数にのみ基づいてかかる論理チャンクLCに対応付ける空き物理チャンクPCを選択するようにしてもよい。
具体的には、図13との対応部分に同一符号を付した図31に示すように、容量割当て処理部30が、図13のステップS21及びステップS25を省略することにより、対象ストレージ制御部ペア25のアクティブストレージ制御部22や、パッシブストレージ制御部22が配置されたストレージノード4を優先ノードに設定しないようにする。また図14との対応部分に同一符号を付した図32に示すように、物理チャンク選択処理部31が、ステップS42の後で優先ノードが設定されているか否かを判定し(S120)、否定結果を得た場合にはステップS43に進み、肯定結果を得た場合にはステップS45に進むようにすればよい。
ただし、ストレージ制御部ペア25に割り当てる論理チャンクLCに対応付ける物理チャンクPCとして、そのストレージ制御部ペア25のアクティブストレージ制御部22が配置されたストレージノード4内の空き物理チャンクPCを選択した方が通常時におけるシステム全体としての応答性能が良いため、図13との対応部分に同一符号を付した図33に示すように、ステップS21については実行し、図13のステップS25については処理を省略するように容量割当て処理部30を構成するようにしてもよい。この場合においても、図32のフローチャートの処理を実行するように物理チャンク選択処理部31を構築すればよい。
さらに上述の第3の実施の形態においては、図28及び図29について上述したように、容量制御部55(図27)の容量割当て処理部56(図27)が、すべての階層について、ストレージ制御部ペア25のアクティブストレージ制御部22が配置されたストレージノード4や、当該ストレージ制御部ペア25のパッシブストレージ制御部22が配置されたストレージノード4を優先ノードに設定(図13のステップS21及びステップS25を参照)することにより、物理チャンク選択処理部57(図27)がこれらのストレージノード4の空き物理チャンクPCを優先的にそのストレージ制御部ペア25に割り当てる論理チャンクLCに対応付ける物理チャンクPCとして選択するようにした場合について述べたが、本発明はこれに限らず、指定された記憶階層が最上位の記憶階層のときにのみ、物理チャンク選択処理部57が、クラスタ6内の各ストレージノード4の空き物理チャンクPCの数にのみ基づいてかかる論理チャンクLCに対応付ける空き物理チャンクPCを選択するようにしてもよい。
この場合、図28との対応部分に同一符号を付した図34に示すように、容量割当て処理部56は、ステップS91の処理実行後にステップS90で確認した記憶階層が最上位の記憶階層であるか否かを判断し(S130)し、否定結果を得た場合には対象ストレージ制御部ペア25内のアクティブストレージ制御部22が配置されたストレージノード4を優先ノードに設定することなくステップS93に進む。また容量割当て処理部56は、ステップS95の処理実行後にステップS90で確認した記憶階層が最上位の記憶階層であるか否かを判断し(S131)し、否定結果を得た場合には対象ストレージ制御部ペア25内のアクティブストレージ制御部22が配置されたストレージノード4を優先ノードに設定することなくステップS97に進む。
また、この場合、図29との対応部分に同一符号を付した図35に示すように、物理チャンク選択処理部31は、ステップS112の後で優先ノードが設定されているか否かを判定し(S132)、否定結果を得た場合にはステップS115に進み、肯定結果を得た場合にはステップS114に進むようにすればよい。
このようにすることにより、応答性能が要求される最上位の記憶階層については、自ノードから記憶領域を割り当て、これ以外の記憶階層については、各ストレージノード4から均等に記憶領域を割り当てることができる。
また、サーバ上でハイパーバイザが動作し、ハイパーバイザ上で1又は複数の仮想計算機が稼働し、その仮想計算機上で、図3に示す各種プログラムが動作してもよい。すなわち、各種プログラム(制御ソフト20、冗長化部22、クラスタ制御部23)は、物理計算機のハードウェア上で動作することもあれば、仮想計算機上で動作してもよい。同様に、コンピュートノード2は、仮想計算機上で動作するアプリケーションプログラム(ホストプログラム)であってもよいし、物理的なホスト計算機(ホストコンピュータ)であってもよい。情報処理システム1が複数のサーバを有するとき、サーバの一部が異なるサイトにあってもよい。また、情報処理システム1のサーバの一部又は全部がクラウド上にあって、ネットワークを介して、ユーザにサービスが提供されてもよい。
各種プログラム(制御ソフト20、冗長化部22、クラスタ制御部23)が動作する仮想計算機と、ホストプログラムが動作する仮想計算機とが、同一のサーバ(ノード)上にある構成(ハイパーコンバージドインフラストラクチャ)であっても、ネットワークを介して接続する異なるサーバ上にある構成であってもよい。