以下、図面を用いて実施形態を説明する。
図1は、情報処理システム、情報処理システムの制御方法および制御装置の制御プログラムの一実施形態を示す。図1に示す情報処理システムSYSは、負荷分散装置10と、複数の情報処理装置20(20a−20f)と、複数の記憶装置30(30a−30h)と、情報処理装置20と記憶装置30とを制御する制御装置40とを有する。情報処理装置20は、データを処理する処理ノード20a、20c、処理ノード20a、20cが処理したデータを記憶装置30に対して入出力する入出力ノード20b、20d、または、休止状態20e、20fのいずれかである。休止状態の情報処理装置20e、20fは、電源が遮断され、あるいは、スタンバイ状態等の低電力モードに設定される。このため、情報処理装置20e、20fの消費電力は、処理ノード20a、20cおよび入出力ノード20b、20dの消費電力より低い。
負荷分散装置10は、外部から受信するデータを処理ノード20a、20cに分散させる。図1に示す例では、記憶装置30a−30dは、入出力ノード20bに接続され、記憶装置30e−30hは、入出力ノード20dに接続される。
制御装置40は、構成部42、収集部44、変更部46および制御部48を有する。構成部42は、情報処理装置20のうち、第1の所定数の情報処理装置20a、20cを処理ノードとして選択し、第2の所定数の情報処理装置20b、20dを入出力ノードとして選択する。また、構成部42は、選択した各入出力ノード20b、20dに複数の記憶装置30の中から第3の所定数の記憶装置30a−30d、30e−30hをそれぞれ接続させる。
収集部44は、処理ノード20a、20cの各々と、入出力ノード20b、20dの各々とから、各ノードに掛かる負荷を示す負荷情報を収集する。変更部46は、収集部44が収集した負荷情報に基づき、処理ノード20a、20cの数、または、入出力ノード20b、20dの数を変更する。制御部48は、複数の情報処理装置20のうち、処理ノードまたは入出力ノードとして選択されなかった情報処理装置20e、20fを休止状態にする。
図2は、図1に示す情報処理システムSYSにおいて、入出力ノード20b、20dの負荷が増加した場合の状態の一例を示す。例えば、収集部44は、入出力ノード20b、20dの少なくともいずれかの負荷が第1の閾値を超えたことを検出する。変更部46は、収集部44から受信する負荷情報に基づいて、入出力ノード20b、20dのいずれかの性能がボトルネックになり、情報処理システムSYS1の処理性能が低下したと判断し、休止状態の情報処理装置20fを入出力ノードとして選択する。
また、変更部46は、入出力ノード20bに接続された記憶装置30c、30dを入出力ノード20fに付け替え、入出力ノード20dに接続された記憶装置30hを入出力ノード20fに付け替える。例えば、変更部46は、各入出力ノード20b、20d、20fに接続される記憶装置30の数がほぼ均等になるように記憶装置30の付け替え処理を実行する。また、変更部46は、新たに選択した入出力ノード20fを起動する。なお、入出力ノード20fの起動は、制御部48により実行されてもよい。以上により、入出力ノード20b、20dの性能のボトルネックが解消され、情報処理システムSYSの処理性能が低下することを抑止することができる。
一方、図2に示す状態において、収集部44は、入出力ノード20b、20d、20fの少なくともいずれかの負荷が第1の閾値より低い第2の閾値より低くなったことを検出する。変更部46は、収集部44から受信する負荷情報に基づいて、入出力ノード20b、20d、20fの処理性能に十分な余裕があり、無駄な電力が消費されていると判断し、情報処理装置20fの入出力ノードとしての選択を解除する。制御部48は、入出力ノードとしての選択が解除された情報処理装置20fを休止状態にする。
また、変更部46は、入出力ノード20fに接続された記憶装置30c、30dを入出力ノード20bに付け替え、入出力ノード20fに接続された記憶装置30hを入出力ノード20dに付け替える。以上により、情報処理システムSYSは、図1に示す状態になり、情報処理システムSYSの処理性能を、負荷の減少に応じた適切な性能にすることができる。また、情報処理装置20fを休止状態にすることにより、適切な処理性能を維持しながら、情報処理システムSYS1の消費電力を削減することができる。
なお、図1に示す状態で、収集部44が、処理ノード20a、20cの少なくともいずれかの負荷が第3の閾値を超えたことを検出した場合、変更部46は、例えば、休止状態の情報処理装置20eを処理ノードにする。これにより、処理ノード20a、20cの性能のボトルネックが解消され、情報処理システムSYSの処理性能が低下することを抑止することができる。
一方、情報処理装置20eを処理ノードとして動作させているときに、収集部44が、処理ノード20a、20c、20eの少なくともいずれかの負荷が第3の閾値より低い第4の閾値より低くなったことを検出したとする。この場合、変更部46は、例えば、情報処理装置20eの処理ノードとしての選択を解除する。制御部48は、処理ノードとしての選択が解除された情報処理装置20eを休止状態にする。以上により、情報処理システムSYSは、図1に示す状態になり、情報処理システムSYSの処理性能を、負荷の減少に応じた適切な性能にすることができる。また、情報処理装置20eを休止状態にすることにより、適切な処理性能を維持しながら、情報処理システムSYS1の消費電力を削減することができる。
以上、図1および図2に示す実施形態では、処理ノードおよび入出力ノードの負荷の変動に応じて処理ノードの数または入出力ノードの数を変更することで、情報処理システムSYSの処理性能を低下させることなく消費電力を削減することができる。換言すれば、処理ノードおよび入出力ノードの負荷の変動に応じて休止状態の情報処理装置20の数を変更することで、情報処理システムSYSの処理性能を低下させることなく消費電力を削減することができる。
入出力ノードの数を変更した場合、入出力ノードに接続される記憶装置30を付け替えることで、各入出力ノードに接続される記憶装置30の数を入出力ノードの性能に合わせて適切にすることができる。これにより、入出力ノードの性能のボトルネックが解消され、情報処理システムSYSの処理性能が低下することを抑止することができる。
図3は、情報処理システム、情報処理システムの制御方法および制御装置の制御プログラムの別の実施形態を示す。図3に示す情報処理システムSYS1は、ロードバランサLB、ネットワークスイッチNSW、制御装置CNTL、サーバプールSVPLおよびディスクプールDSKPLを有する。情報処理システムSYS1は、ネットワークストレージシステムとして機能し、例えば、データをオブジェクトとして管理するオブジェクトストレージサービスまたはオブジェクトストレージにより構築されるクラウドストレージサービス等に使用される。制御装置CNTL、ロードバランサLB、サーバプールSVPLおよびディスクプールDSKPLが、LAN(Local Area Network)を介して互いに接続される場合、ネットワークスイッチNSWは、レイヤ2スイッチ等のLANスイッチである。
情報処理システムSYS1は、インターネットまたはイントラネット等のネットワークNWを介して端末装置TMに接続される。なお、情報処理システムSYS1は、ネットワークNWを介さずに端末装置TMに接続されてもよい。端末装置TMは、情報処理システムSYS1をネットワークストレージシステムとして使用するアプリケーションプログラムを実行するコンピュータ装置に含まれる。情報処理システムSYS1は、端末装置TMを操作するユーザからの指示に基づいて、ディスクプールDSKPL内のディスク装置D(Da、Db、Dc)に対して、データの書き込み、読み出しまたは削除等を実行する。なお、ネットワークNWを介して情報処理システムSYS1に接続される端末装置TMは、1台に限定されず、複数台でもよい。
サーバプールSVPLは、複数のサーバSV(SV1−SV14)を有する。サーバSVは、情報処理装置の一例である。なお、サーバプールSVPLが有するサーバSVの数は、14台に限定されない。各サーバSVは、フロントエンドサービスプログラムFESPが起動された場合、端末装置TMからのアクセス要求等を処理するフロントエンドサーバFESVとして動作する。フロントエンドサーバFESVは、ロードバランサLBが分散させたアクセス要求(クエリ)およびデータを処理する処理ノードの一例である。
各サーバSVは、ストレージサービスプログラムSSPが起動された場合、ディスクプールDSKPL内のディスク装置D(Da、Db、Dc)のアクセスを制御するストレージサーバSSV(バックエンドサーバ)として動作する。ストレージサーバSSVは、フロントエンドサーバFESVが処理したデータをディスク装置Da(Da1−Da12)、Db(Db1−Db12)、Dc(Dc1−Dc12)に入出力する入出力ノードの一例である。なお、フロントエンドサービスプログラムFESPおよびストレージサービスプログラムSSPは、互いに排他的に起動される。
サーバSV1−SV14は、互いに物理的に接続されるとともに、ディスクプールDSKPL内の切り替え装置SWに物理的に接続される。これにより、サーバSV1−SV14は、フロントエンドサーバFESVまたはストレージサーバSSVのいずれとしても動作可能である。
図3において、太枠で示すフロントエンドサービスプログラムFESPおよび太枠で示すストレージサービスプログラムSSPは、起動中であることを示す。破線枠で示すフロントエンドサービスプログラムFESPおよび破線枠で示すストレージサービスプログラムSSPは、起動されていないことを示す。
破線枠で示すサーバSVは、動作が停止している休止状態のサーバ(スリープサーバSLPSV)を示す。スリープサーバSLPSVは、電源が遮断されたシャットダウン状態である。なお、スリープサーバSLPSVは、シャットダウン状態からの起動時間に比べて起動時間が短いハイバネーション状態等のスリープ状態またはスタンバイ状態に設定されてもよい。あるいは、スリープサーバSLPSVは、動作クロックの周波数が通常時に比べて低く設定されてもよい。スリープサーバSLPSVは、シャットダウン状態またはスリープ状態等の休止状態に設定することで、フロントエンドサーバFESVおよびストレージサーバSSVに比べて、消費電力が小さい状態に設定することができる。
なお、スリープサーバSLPSVは、フロントエンドサービスプログラムFESPおよびストレージサービスプログラムSSP以外の他のアプリケーションプログラムを実行してもよい。他のアプリケーションプログラムを実行するスリープサーバSLPSVは、ネットワークストレージシステムに含まれないため、ネットワークストレージシステムの消費電力を削減することができる。フロントエンドサーバFESV、ストレージサーバSSVおよびスリープサーバSLPSVの一例は、図5に示す。
フロントエンドサーバFESVは、ロードバランサLBを介して端末装置TMから受信するアクセス要求に基づいて、ストレージサーバSSVを制御し、ストレージサーバSSVおよびディスク装置Dをネットワークストレージとして動作させる。端末装置TMからの要求は、データの書き込み要求、データの読み出し要求またはデータの削除要求を含む。
アクセス要求が書き込み要求の場合、フロントエンドサーバFESVは、書き込み要求に伴うデータと、データをディスク装置Da、Db、Dcに書き込む書き込み要求とをストレージサーバSSVに出力する。アクセス要求が読み出し要求の場合、フロントエンドサーバFESVは、ディスク装置Da、Db、Dcのいずれかからデータを読み出す要求をストレージサーバSSVのいずれかに出力する。
ストレージサーバSSVは、フロントエンドサーバFESVからの書き込み要求(クエリ)およびデータを解釈し、ストレージサーバSSVが属するゾーンZ(Z1、Z2、Z3)に割り当てられたディスク装置D(Da、DbまたはDc)にデータを入力する。図3に示す例では、2つのストレージサーバSSVが、同じゾーンZに属しているが、ストレージサーバSSV毎にゾーンが設定されてもよい。
また、ストレージサーバSSVは、フロントエンドサーバFESVからの読み出し要求(クエリ)を解釈し、ストレージサーバSSVが属するゾーンZに割り当てられたディスク装置D(Da、DbまたはDc)からデータを読み出す。ストレージサーバSSVは、ディスク装置Dから読み出したデータをフロントエンドサーバFESVに返送する。アクセス要求が削除要求の場合、フロントエンドサーバFESVは、ディスク装置Da、Db、Dcに格納されたデータを削除する削除要求をストレージサーバSSVに出力する。
ディスクプールDSKPLは、複数のディスク装置Da(Da1−Da12)、Db(Db1−Db12)、Dc(Dc1−Dc12)および切り替え装置SWを有する。なお、ディスクプールDSKPLが有するディスク装置D(Da、Db、Dc)の数は、36台に限定されない。ディスク装置Dは、記憶装置の一例である。図3において、一点鎖線で示す枠は、ディスク装置Dを集積したエンクロージャの一例を示す。なお、各エンクロージャに集積されるディスク装置Dの数は、図3に示す6台に限定されない。
ディスク装置Dは、ハードディスクドライブ(HDD)装置でもよく、ソリッドステートドライブ(SSD)装置でもよい。ディスク装置Da(Da1−Da12)は、ゾーンZ1に割り当てられ、ディスク装置Db(Db1−Db12)は、ゾーンZ2に割り当てられ、ディスク装置Dc(Dc1−Dc12)は、ゾーンZ3に割り当てられる。
情報処理システムSYS1は、端末装置TMから転送される1つのデータを3つのゾーンZ1、Z2、Z3のディスク装置Da、Db、Dcのそれぞれに冗長に格納する。すなわち、ディスクプールDSKPLには、3つのレプリカデータが格納される。レプリカデータの数は、2以上であればよく、ゾーンZ1−Z3の数は、レプリカデータの数以上であればよい。
ゾーンZ1、Z2、Z3に割り当てられるディスク装置Da、Db、Dcの電源系統は、互いに独立させてもよい。この場合、電源系統の1つまたは2つが故障した場合にも、3つのレプリカデータのうちの1つにアクセスすることができ、情報処理システムSYS1の信頼性を向上することができる。
また、サーバプールSVPL内のサーバSVの所定数を、予めゾーンZ1−Z3の電源系統のそれぞれに接続してもよい。この場合、ゾーンZ1の電源系統に接続されるサーバSVは、ディスク装置Daに接続されるストレージサーバSSVとして起動される。ゾーンZ2の電源系統に接続されるサーバSVは、ディスク装置Dbに接続されるストレージサーバSSVとして起動される。ゾーンZ3の電源系統に接続されるサーバSVは、ディスク装置Dcに接続されるストレージサーバSSVとして起動される。
切り替え装置SWは、各サーバSVに接続されるポートと、各ディスク装置Dに接続されるポートとを有する。切り替え装置SWは、制御装置CNTLにより制御され、ストレージサーバSSVを所定のディスク装置Dに接続し、あるいは、ストレージサーバSSVとディスク装置Dの接続を遮断する。
図3に示す例では、ストレージサーバSSV(SV7)は、切り替え装置SWを介して、ゾーンZ1に割り当てられたディスク装置Da1−Da6に接続される。ストレージサーバSSV(SV8)は、切り替え装置SWを介して、ゾーンZ1に割り当てられたディスク装置Da7−Da12に接続される。ストレージサーバSSV(SV10)は、切り替え装置SWを介して、ゾーンZ2に割り当てられたディスク装置Db1−Db6に接続される。ストレージサーバSSV(SV11)は、切り替え装置SWを介して、ゾーンZ2に割り当てられたディスク装置Db7−Db12に接続される。ストレージサーバSSV(SV13)は、切り替え装置SWを介して、ゾーンZ3に割り当てられたディスク装置Dc1−Dc6に接続される。ストレージサーバSSV(SV14)は、切り替え装置SWを介して、ゾーンZ3に割り当てられたディスク装置Dc7−Dc12に接続される。切り替え装置SWの一例は、図8に示す。
情報処理システムSYS1は、複数のディスク装置Dを1つのストレージ装置として扱う分散オブジェクトストレージとして機能する。なお、SAN(Storage Area Network)を用いてストレージサーバSSVをiSCSI(Internet Small Computer System Interface)ボリューム等に接続してもよい。
ロードバランサLBは、端末装置TMから受信するアクセス要求をフロントエンドサーバFESVに均等に割り振り、フロントエンドサーバFESVの負荷のばらつきを抑える。ロードバランサLBは、専用の装置でもよく、汎用のサーバにエンジンエックスNginx(登録商標)等のOSS(Open Source Software)をインストールして実現されてもよい。ロードバランサLBは、フロントエンドサーバFESVの負荷を分散させる負荷分散装置の一例である。なお、ロードバランサLBは、ネットワークNW上の任意の位置に配置されてもよい。
制御装置CNTLは、サーバSVを、フロントエンドサーバFESV、ストレージサーバSSVまたはスリープサーバSLPSVのいずれかとして選択する。フロントエンドサーバFESVとして選択されたサーバSVは、フロントエンドサービスプログラムFESPを実行し、フロントエンドサーバFESVとして動作する。ストレージサーバSSVとして選択されたサーバSVは、ストレージサービスプログラムSSPを実行し、ストレージサーバSSVとして動作する。制御装置CNTLは、切り替え装置SWを制御して、選択したストレージサーバSSVを所定のディスク装置Dに接続する。また、制御装置CNTLは、フロントエンドサーバFESVの負荷に基づいて、フロントエンドサーバFESVの増加および削減を制御し、ストレージサーバSSVの負荷に基づいて、ストレージサーバSSVの増加および削減を制御する。
このように、制御装置CNTLは、フロントエンドサーバFESV、ストレージサーバSSVおよびディスク装置Dの接続を制御することで、情報処理システムSYS1全体の構成を管理する。制御装置CNTLの一例は、図4に示し、制御装置CNTLの動作の一例は、図19に示す。
図4は、図3に示す制御装置CNTLの一例を示す。制御装置CNTLは、サーバ等のコンピュータ装置であり、CPU(Central Processing Unit)、メモリMEMおよびハードディスクドライブHDDを有する。ハードディスクドライブHDDには、オペレーティングシステムOS、制御プログラムCNTLPと、初期状態または空の状態のサーバ管理表SVMTBL、ディスク管理表DMTBLおよびハッシュ表HATBLとが予め格納されている。なお、制御プログラムCNTLP、サーバ管理表SVMTBL、ディスク管理表DMTBLおよびハッシュ表HATBLは、ROM(Read Only Memory)等の不揮発性の記憶装置に格納されてもよい。
CPUは、制御装置CNTLの起動時(パワーオン時)にオペレーティングシステムOSをメモリMEMにブートする。この後、CPUは、制御プログラムCNTLP、サーバ管理表SVMTBL、ディスク管理表DMTBLおよびハッシュ表HATBLをメモリMEMに転送する。そして、CPUは、メモリMEM上の制御プログラムCNTLPを実行することで、制御装置CNTLの機能を実現する。
CPUは、情報処理システムSYS1の構成を、初期状態のサーバ管理表SVMTBLおよびディスク管理表DMTBLと異なる構成にする場合、新たな構成に合わせてサーバ管理表SVMTBLおよびディスク管理表DMTBLを作成してもよい。さらに、CPUは、新たな構成に合わせてハッシュ表HATBLを作成してもよい。
なお、サーバ管理表SVMTBL、初期状態または空の状態のディスク管理表DMTBLおよびハッシュ表HATBLは、ハードディスクドライブHDDに格納されない場合、これらの表は、制御プログラムCNTLPによりメモリMEM上に作成されてもよい。
サーバ管理表SVMTBLには、サーバSVをフロントエンドサーバFESV、ストレージサーバSSVおよびスリープサーバSLPSVのいずれに設定するかを示す情報が格納される。ディスク管理表DMTBLには、各ディスク装置Dに接続されるストレージサーバSSVを示す情報が格納される。ハッシュ表HATBLには、ハッシュ値のそれぞれに対応するディスク装置Da、Db、Dcを示す情報が格納される。サーバ管理表SVMTBL、ディスク管理表DMTBLおよびハッシュ表HATBLの一例は、図6に示す。
CPUは、制御プログラムCNTLPを実行することで、フロントエンドサーバFESVおよびストレージサーバSSVを選択し、各ストレージサーバSSVに所定数のディスク装置Dを接続させる構成部SETとして動作する。構成部SETの動作により、情報処理システムSYS1は、図3に示す初期状態に設定される。
また、CPUは、フロントエンドサーバFESVおよびストレージサーバSSVの負荷を示す負荷情報を収集する収集部GATHとして動作する。さらに、CPUは、収集した負荷情報に基づき、フロントエンドサーバFESVの数およびストレージサーバSSVの数を変更する変更部CHNGとして動作する。
また、CPUは、フロントエンドサーバFESVおよびストレージサーバSSVとして選択されなかったサーバSVを休止状態(スリープサーバSLPSV)に設定する制御部SLPCとして動作する。構成部SET、変更部CHNGおよび制御部SLPCは、サーバ管理表SVMTBLおよびディスク管理表DMTBLに設定された情報に基づいて動作する。なお、制御プログラムCNTLPを実行するCPUは、サーバ管理表SVMTBL、ディスク管理表DMTBLおよびハッシュ表HATBLを、フロントエンドサーバFESVおよびストレージサーバSSVに転送する機能を有する。
図5は、図3に示すフロントエンドサーバFESV、ストレージサーバSSVおよびスリープサーバSLPSVの一例を示す。
フロントエンドサーバFESV、ストレージサーバSSVおよびスリープサーバSLPSVは、CPU、メモリMEMおよびハードディスクドライブHDDをそれぞれ有する。ハードディスクドライブHDDには、オペレーティングシステムOS、フロントエンドサービスプログラムFESP、ストレージサービスプログラムSSPおよび空のリトライ表RTTBLが予め格納されている。なお、フロントエンドサービスプログラムFESP、ストレージサービスプログラムSSPおよび空のリトライ表RTTBLは、ROM等の不揮発性の記憶装置に格納されてもよい。
スリープサーバSLPSVは、動作を停止しており、有効なプログラムおよび情報はメモリMEMに格納されていない。スリープサーバSLPSVがフロントエンドサーバFESVに変更された場合、フロントエンドサーバFESVのCPUは、オペレーティングシステムOSをメモリMEMにブートする。この後、CPUは、フロントエンドサービスプログラムFESPおよび空のリトライ表RTTBLをハードディスクドライブHDDからメモリMEMに転送する。そして、CPUは、メモリMEM上のフロントエンドサービスプログラムFESPを実行することで、フロントエンドサーバFESVの機能を実現する。フロントエンドサービスプログラムFESPを実行するCPUは、制御装置CNTLから転送されるサーバ管理表SVMTBL、ディスク管理表DMTBLおよびハッシュ表HATBLを受信し、メモリMEMに格納する。
スリープサーバSLPSVがストレージサーバSSVに変更される場合、ストレージサーバSSVのCPUは、オペレーティングシステムOSをメモリMEMにブートする。この後、CPUは、ストレージサービスプログラムSSPをハードディスクドライブHDDからメモリMEMに転送する。そして、CPUは、メモリMEM上のストレージサービスプログラムSSPを実行することで、ストレージサーバSSVの機能を実現する。ストレージサービスプログラムSSPを実行するCPUは、制御装置CNTLから転送されるサーバ管理表SVMTBL、ディスク管理表DMTBLおよびハッシュ表HATBLを受信し、メモリMEMに格納する。
図6は、図4および図5に示すサーバ管理表SVMTBL、ディスク管理表DMTBL、ハッシュ表HATBLおよびリトライ表RTTBLの一例を示す。図6に示すサーバ管理表SVMTBL、ディスク管理表DMTBL、ハッシュ表HATBLおよびリトライ表RTTBLは、図4および図5に示すメモリMEM上の情報であり、図3に示す情報処理システムSYS1の状態を示している。なお、リトライ表RTTBLは、フロントエンドサーバFESVに含まれるが、制御装置CNTLおよびストレージサーバSSVには含まれない。
サーバ管理表SVMTBLは、各サーバSVの状態を管理するために使用される。サーバ管理表SVMTBLは、サーバ名、IP(Internet Protocol)アドレス、ステータスおよびゾーンを示す情報を格納する複数の領域をサーバSV1−SV14毎に有する。
サーバ管理表SVMTBLにおいて、サーバ名の領域には、サーバSVを識別するための名称またはID(IDentification)等の情報が格納される。IPアドレスの領域には、ネットワーク上でサーバSVを識別する番号(IPアドレス)が格納される。ステータスの領域には、サーバSVがフロントエンドサーバFESV、ストレージサーバSSVまたはスリープサーバSLPSVのいずれに設定されているかを示す情報が格納される。ゾーンの領域には、ストレージサーバSSVに接続されるディスク装置Dのゾーンを示す情報が格納される。
サーバSVがフロントエンドサーバFESVまたはスリープサーバSLPSVに設定されている場合、ゾーンの領域には、ダミーのゾーン(Z1−Z3のいずれか)を示す情報が格納される。図6では、ダミーのゾーンを示す情報は、括弧を付けて示す。サーバ管理表SVMTBLにおいて、ステータスおよびゾーンの領域は、情報処理システムSYS1の動作中に、フロントエンドサーバFESVおよびストレージサーバSSVの追加/削減に基づいて変更される。
ディスク管理表DMTBLは、ストレージサーバSSVとディスク装置Dとの接続を管理するために使用され、ディスク装置Dのロック状態を管理するために使用される。ディスク管理表DMTBLは、ディスク名、サーバ名およびロックを示す情報を格納する複数の領域をディスクDa1−Da12、Db1−Db12、Dc1−Dc12毎に有する。
ディスク名の領域には、ディスクDを識別するための名称またはID等の情報が格納される。サーバ名の領域には、ディスクDに接続されるサーバSV(ストレージサーバSSV)を示す情報が格納される。ロックの領域には、ディスクDがロックされた状態(=1)か、ロックが解除された状態(=0)かを示す情報が格納される。ロックの領域は、ストレージサーバSSVの追加または削減の処理の実行中に、フロントエンドサーバFESVにディスクDに対するデータの入出力を保留させる場合に”1”に設定される。ディスク管理表DMTBLにおいて、サーバ名およびロックの領域は、情報処理システムSYS1の動作中に、フロントエンドサーバFESVおよびストレージサーバSSVの追加/削除に基づいて変更される。
なお、ディスク管理表DMTBLは、各ディスク装置Dを識別する固有の値を格納する領域を有してもよい。固有の値は、SAS(Serial Attached SCSI(Small Computer System Interface))におけるSASアドレスである。あるいは、固有の値は、iSCSIにおけるIQN(iSCSI Qualified Name)等である。ディスク管理表DMTBLに各ディスク装置Dを識別する固有の値を格納することで、固有の値を使用しない場合に比べて、ディスク装置Dの追加および削除を簡易な手順で実行することができる。
リトライ表RTTBLは、ロックされたディスク装置Dに対するアクセスを記録するとともに、ロックが解除されたディスク装置Dにデータを書き込むために使用される。リトライ表RTTBLは、クエリおよびディスク名を示す情報を格納する複数の領域を有する。フロントエンドサーバFESVが起動された直後の初期状態では、リトライ表RTTBLは空である。リトライ表RTTBLには、ストレージサーバSSVを追加する処理中またはストレージサーバSSVを削減する処理中に発行された書き込み要求を示す情報が格納される。
リトライ表RTTBLにおいて、クエリの領域には、ロック中のディスクDに書き込みアクセス要求が発生した場合に、データのパスを示す情報であるクエリを示す情報が格納される。データのパスは、情報処理システムSYS1がHTTP(Hyper Text Transfer Protocol)で使用するURL(Uniform Resource Locator)などのパスである。データのパスは、端末装置TMから送信される”PUT”、”GET”等のメソッドに含まれる。
リトライ表RTTBLにおいて、ディスク名の領域には、データの書き込みが保留されるロック中のディスクDを示す情報が格納される。リトライ表RTTBLに格納される情報は、ロック中のディスク装置Dに対する書き込みアクセス要求に基づいて増加し、ロックが解除されたディスク装置Dへのデータの書き込みに基づいて減少する。
ハッシュ表HATBLは、ハッシュ関数により得られるハッシュ値に基づいて、データのアクセス先のディスク装置Dを求めるために使用される。例えば、フロントエンドサーバFESVは、ハッシュ関数としてMD5(Message Digest 5)を用いて128ビットのハッシュ値を生成する。ハッシュ表HATBLは、ハッシュ関数により得られるハッシュ値のうち所定数のビットと、ハッシュ値毎に割り当てられる3つのディスク装置Da、Db、Dcを示す情報とを格納する複数の領域を、ハッシュ値毎に有する。すなわち、情報処理システムSYS1は、3つのレプリカデータを3つのゾーンZ1−Z3に割り当てられたディスク装置Da、Db、Dcに冗長に格納する。
ハッシュ値の末尾に示す符号hは、ハッシュ値が16進数であることを示す。図6に示す例では、ハッシュ表HATBLに格納されるハッシュ値は、20ビットで表されるが、ハッシュ値のビット数は、20ビットに限定されない。なお、各ディスク装置Dは、互いに異なるハッシュ値に割り当てられてもよい。
図3に示す情報処理システムSYS1では、切り替え装置SWに接続されるディスク装置Dの数および各ゾーンZ1、Z2、Z3に割り当てられるディスク装置Dの数は、情報処理システムSYS1の動作中に変更されない。このため、ハッシュ表HATBLは、情報処理システムSYS1の動作中に変更されない。なお、切り替え装置SWに接続されるディスク装置Dの数および各ゾーンZ1、Z2、Z3に割り当てられるディスク装置Dの数が、情報処理システムSYS1の動作中に変更される場合、ハッシュ表HATBLは、情報処理システムSYS1の動作中に変更されてもよい。
図7は、図6に示すハッシュ表HATBLにより示されるハッシュ空間の一例を示す。例えば、情報処理システムSYS1は、コンシステントハッシュ法を採用し、ハッシュ空間はハッシュリングとして示される。フロントエンドサーバFESVは、データを識別する識別子(例えば、データのパス名やファイル名)をハッシュ関数に入力して得られるハッシュ値に応じて、データを書き込みまたは読み出す3つのディスク装置Da、Db、Dcを求める。ハッシュ関数は、均等に分布するハッシュ値を出力するため、データは、全てのディスク装置Dは分散して格納される。
図8は、図3に示す切り替え装置SWの一例を示す。例えば、切り替え装置SWは、SASエキスパンダを含む。切り替え装置SWは、各サーバSV(SSV、FESVまたはSLP)のインタフェースカードHBA(Host Bus Adapter)に接続される複数の入出力インタフェースPHY(PHYa、PHYb、PHYc、PHYd)を有する。また、切り替え装置SWは、各ディスク装置Dに接続される複数の入出力インタフェースPHY(PHYe、PHYf、...、PHYo、PHYp)を有する。
切り替え装置SWは、各ストレージサーバSSVに対応するゾーンと、ディスク装置Dに接続されないフロントエンドサーバFESVに対応するゾーンと、ディスク装置Dに接続されないスリープサーバSLPSVに対応するゾーンとを有する。図8に示す例では、ストレージサーバSSV(SV7)とディスク装置Da1−Da6がゾーン1に割り当てられ、ストレージサーバSSV(SV8)とディスク装置Da7−Da12がゾーン2に割り当てられる。また、フロントエンドサーバFESV(SV1等)がゾーン3に設定され、スリープサーバSLPSV(SV9等)がゾーン4に割り当てられる。なお、図8に示すゾーンは、図3に示すゾーンZ1−Z3とは異なる。
切り替え装置SWは、ストレージサーバSSVおよびフロントエンドサーバFESVの追加/削除に基づく制御装置CNTLからの指示に基づいて、各ゾーンに割り当てるサーバSVおよびディスク装置Dを変更する。例えば、各ゾーンに割り当てるサーバSVおよびディスク装置Dの変更は、制御装置CNTLがSMP(Serial Management Protocol)コマンドを切り替え装置SWに発行することで実行される。
図9は、図3に示す情報処理システムSYS1において、フロントエンドサーバFESVの負荷が増加した場合の状態の一例を示す。例えば、フロントエンドサーバFESVの負荷は、テキストデータ等のサイズが小さいデータの書き込み要求または読み出し要求をロードバランサLBから大量に受信した場合に増加する。これは、データサイズが小さい場合、ネットワークNWおよびストレージサーバSSVの性能は、ボトルネックにならず、フロントエンドサーバFESVの性能がボトルネックになるためである。
図4に示す制御装置CNTLの収集部GATHは、各フロントエンドサーバFESV(SV1−SV4)の負荷を所定の周期で測定し、負荷が所定の閾値VTHfを超えた場合、フロントエンドサーバFESVの能力に余裕がなくなった高負荷状態と判定する。例えば、収集部GATHは、CPUの利用率に基づいてフロントエンドサーバFESVの負荷を判断し、CPUの利用率が85%(VTHf)を超えた場合に、高負荷状態と判定する。
変更部CHNGは、収集部GATHが高負荷状態を判定した場合、スリープサーバSLPSV(SV5)の1つを選択して、フロントエンドサービスプログラムFESPを実行させることで、フロントエンドサーバFESVの数を増加する。また、変更部CHNGは、新たに起動したフロントエンドサーバFESVの情報をロードバランサLBに通知する。ロードバランサLBは、通知を受けたフロントエンドサーバFESVをデータの分散先に追加する。そして、情報処理システムSYS1は、図3に示す状態から図9に示す状態に設定される。このように、フロントエンドサーバFESVの負荷が増加した場合に、新たなフロントエンドサーバFESVを追加することで、フロントエンドサーバFESVの1台当たりの負荷は減少する。これにより、フロントエンドサーバFESVによる処理性能を向上することができ、フロントエンドサーバFESVの性能のボトルネックを解消することができる。
図10は、図9に示す情報処理システムSYS1におけるサーバ管理表SVMTBL、ディスク管理表DMTBL、ハッシュ表HATBLおよびリトライ表RTTBLの一例を示す。状態が図6と相違する箇所は、網掛けで示す。なお、リトライ表RTTBLは、フロントエンドサーバFESVに含まれ、制御装置CNTLおよびストレージサーバSSVには含まれない。
図4に示す制御装置CNTLの変更部CHNGは、サーバSV5をスリープサーバSLPSVからフロントエンドサーバFESVに切り替える場合、サーバ管理表SVMTBLのサーバSV5のステータスを”SLPSV”から”FESV”に変更する。そして、変更部CHNGは、変更したサーバ管理表SVMTBLを全てのフロントエンドサーバFESVおよび全てのストレージサーバSSVに転送し、サーバ管理表SVMTBLを更新させる。
なお、制御装置CNTLの収集部GATHは、各フロントエンドサーバFESV(SV1−SV4)の負荷が、閾値VTHfより低い閾値VTLfより低くなった場合、フロントエンドサーバFESVの能力に十分な余裕がある低負荷状態と判定する。例えば、フロントエンドサーバFESVの負荷は、画像データ等のサイズが大きいデータの書き込み要求または読み出し要求をロードバランサLBから受信した場合に低くなる。これは、データサイズが大きい場合、ネットワークNWの性能がボトルネックになり、フロントエンドサーバFESVの能力に余裕ができるためである。
収集部GATHは、CPUの利用率に基づいてフロントエンドサーバFESVの負荷を判断し、例えば、CPUの利用率が30%(VTLf)より低い場合に、低負荷状態と判定する。フロントエンドサーバFESVの低負荷状態は、フロントエンドサーバFESVの数を1台減らしても、フロントエンドサーバFESVの性能がボトルネックにならない状態である。
変更部CHNGは、収集部GATHがフロントエンドサーバFESVの低負荷状態を判定した場合、フロントエンドサーバFESVの1つの動作を停止して、スリープサーバSLPSVに設定することで、フロントエンドサーバFESVの数を削減する。すなわち、フロントエンドサーバFESVの1つの選択が解除される。また、変更部CHNGは、動作を停止するフロントエンドサーバFESVの情報をロードバランサLBに通知する。ロードバランサLBは、通知を受けたフロントエンドサーバFESVをデータの分散先から削除する。
例えば、フロントエンドサーバFESVの数の削減により、情報処理システムSYS1は、図9に示す状態から図3に示す状態になり、サーバ管理表SVMTBL、ディスク管理表DMTBL、ハッシュ表HATBLおよびリトライ表RTTBLは、図6に示す状態に設定される。
フロントエンドサーバFESVの負荷の減少に基づいて、フロントエンドサーバFESV(SV5)をスリープサーバSLPSVに切り替えることで、フロントエンドサーバFESVの1台当たりの負荷は増加し、全てのフロントエンドサーバFESVによる処理性能は低下する。しかし、フロントエンドサーバFESVの数が減少した場合にも、フロントエンドサーバFESVの性能はボトルネックにならない。このため、情報処理システムSYS1の処理性能を低下させることなく、情報処理システムSYS1の消費電力を削減することができる。
フロントエンドサーバFESVの負荷の減少に伴い、フロントエンドサーバFESVの1つをスリープサーバSLPSVに設定することで、情報処理システムSYS1の処理性能を低下させることなく、情報処理システムSYS1の消費電力を削減することができる。
図11は、図3に示す情報処理システムSYS1において、ストレージサーバSSVの負荷が増加した場合の状態の一例を示す。ストレージサーバSSVの負荷は、接続しているディスク装置Dの数と、データをディスク装置Dに入出力する頻度と、データのサイズとに依存して変動する。ストレージサーバSSVの負荷は、接続しているディスク数Dが多いほど増加し、接続しているディスク数Dが少ないほど減少する。また、ストレージサーバSSVの負荷は、データをディスク装置Dに入出力する頻度が高いほど増加し、データをディスク装置Dに入出力する頻度が低いほど減少する。ストレージサーバSSVの負荷が増加した場合、ストレージサーバSSVによるディスク装置Dのアクセス性能がボトルネックになる。一方、ストレージサーバSSVの負荷が減少した場合、消費電力に対するストレージサーバSSVによるディスク装置Dのアクセス性能は低下する。
図4に示す制御装置CNTLの収集部GATHは、各ストレージサーバSSV(SV7、SV8、SV10、SV11、SV13、SV14)の負荷を所定の周期で測定する。収集部GATHは、負荷が所定の閾値VTHsを超えたストレージサーバSSVを、ストレージサーバSSVの能力に余裕がなくなった高負荷状態と判定する。例えば、収集部GATHは、ストレージサーバSSVのCPUの利用率に基づいて負荷を判断し、CPUの利用率が85%(VTHs)を超えた場合に、高負荷状態と判定する。
図4に示す制御装置CNTLの変更部CHNGは、収集部GATHが高負荷状態を判定した場合、スリープサーバSLPSV(SV9)の1つを選択して、ストレージサービスプログラムSSPを実行させることで、ストレージサーバSSVの数を増加する。ストレージサーバSSV(SV9)は、高負荷状態と判定されたストレージサーバSSVを含むゾーンZ1に対応して追加される。そして、変更部CHNGは、ゾーンZ1内の全てのディスク装置Daをロック状態に設定する。
次に、変更部CHNGは、ゾーンZ1において、ストレージサーバSSV(SV7、SV8)に接続されたディスク装置Daを、新たに追加したストレージサーバSSV(SV9)に付け替える分割処理を実行する。例えば、変更部CHNGは、ストレージサーバSSV(SV7)に接続されたディスク装置Da1、Da2をストレージサーバSSV(SV9)に付け替える。また、変更部CHNGは、ストレージサーバSSV(SV6)に接続されたディスク装置Da7、Da8をストレージサーバSSV(SV9)に付け替える。これにより、ストレージサーバSSVのそれぞれに接続されるディスク装置Dの数を均等にすることができ、ストレージサーバSSVの処理性能が偏ることを抑止することができる。この結果、情報処理システムSYS1の処理性能が低下することを抑止することができる。ディスク装置Daの付け替え処理の完了後、変更部CHNGは、ゾーンZ1内の全てのディスク装置Daのロック状態を解除する。そして、情報処理システムSYS1は、図11に示す状態に設定される。
図12は、図3に示す状態から図11に示す状態に変化する場合におけるサーバ管理表SVMTBL、ディスク管理表DMTBL、ハッシュ表HATBLおよびリトライ表RTTBLの変化の一例を示す。状態が図6と相違する箇所は、網掛けで示す。なお、リトライ表RTTBLは、フロントエンドサーバFESVに含まれ、制御装置CNTLおよびストレージサーバSSVには含まれない。
図12は、図4に示す制御装置CNTLの変更部CHNGが、ディスク管理表DMTBLを変更し、ゾーンZ1内のディスク装置Daをロックした状態を示す。なお、変更部CHNGは、スリープサーバSLPSVの1つを選択し、選択したスリープサーバSLPSVの電源を投入する。
変更部CHNGは、変更したディスク管理表DMTBLを全てのフロントエンドサーバFESVに転送し、ディスク管理表DMTBLを更新させる。フロントエンドサーバFESVは、更新したディスク管理表DMTBLに基づいて、ゾーンZ1内のディスク装置Daに対するデータの書き込みを保留する。データの書き込みが保留された書き込みアクセス要求に対応する情報は、図13に示すように、ロードバランサLBから書き込み要求を受信したフロントエンドサーバFESVのリトライ表RTTBLに格納される。
図13は、サーバ管理表SVMTBL、ディスク管理表DMTBL、ハッシュ表HATBLおよびリトライ表RTTBLの図12に示す状態からの変化の一例を示す。状態が図12と相違する箇所は、網掛けで示す。
データを書き込む書き込みアクセス要求が、ロックされたディスク装置Daに対して発生した場合、フロントエンドサーバFESVは、データのパス(クエリ)を示す情報とデータを書き込むディスク装置Dとを示す情報をリトライ表RTTBLに格納する。図13は、書き込みアクセス要求が、ロック中のディスク装置Da1、Da2に対してそれぞれ発生した状態を示す。なお、リトライ表RTTBLは、フロントエンドサーバFESVに含まれ、制御装置CNTLおよびストレージサーバSSVには含まれない。
図4に示す制御装置CNTLの変更部CHNGは、ディスク装置Da1、Da2をストレージサーバSSV(SV7)からストレージサーバSSV(SV9)に付け替えるために、ディスク管理表DMTBLを変更する。また、変更部CHNGは、ディスク装置Da7、Da8をストレージサーバSSV(SV8)からストレージサーバSSV(SV9)に付け替えるために、ディスク管理表DMTBLを変更する。
変更部CHNGは、変更したディスク管理表DMTBLに基づいて、ディスク装置Da1、Da2、Da7、Da8の付け替えを切り替え装置SWに指示する。切り替え装置SWは、変更部CHNGからの指示に基づいて、ストレージサーバSSV(SV7、SV8、SV9)とディスク装置Da1−Da12の接続を、図11に示す状態に切り替える。
なお、フロントエンドサーバFESVにおけるサーバ管理表SVMTBL、ディスク管理表DMTBLおよびハッシュ表HATBLの状態は、図12と同じである。また、ロック中のディスク装置Da1、Da2に対する書き込み要求を受けていないフロントエンドサーバFESVにおけるリトライ表RTTBLは、図12と同様に空である。ストレージサーバSSVにおけるサーバ管理表SVMTBL、ディスク管理表DMTBLおよびハッシュ表HATBLの状態は、図6と同じである。
図14は、サーバ管理表SVMTBL、ディスク管理表DMTBL、ハッシュ表HATBLおよびリトライ表RTTBLの図13に示す状態からの変化の一例を示す。状態が図13と相違する箇所は、網掛けで示す。
図4に示す制御装置CNTLの変更部CHNGは、ディスク管理表DMTBLを変更し、付け替えが完了したゾーンZ1に対応するディスク装置Daのロックを解除する。図14に示す例では、ディスク管理表DMTBLのロックが解除される前に、データを書き込む書き込みアクセス要求が、ロックされたディスク装置Da5に発生する。このため、書き込みアクセス要求を受信したフロントエンドサーバFESVは、データのパスを示す情報とデータを書き込むディスク装置Da5とを示す情報をリトライ表RTTBLに格納する。
なお、フロントエンドサーバFESVにおけるサーバ管理表SVMTBL、ディスク管理表DMTBLおよびハッシュ表HATBLの状態は、図12と同じである。また、ロック中のディスク装置Da1、Da2、Da5に対する書き込み要求を受けていないフロントエンドサーバFESVにおけるリトライ表RTTBLは、図12と同様に空である。ストレージサーバSSVにおけるサーバ管理表SVMTBL、ディスク管理表DMTBLおよびハッシュ表HATBLの状態は、図6と同じである。
図15は、サーバ管理表SVMTBL、ディスク管理表DMTBL、ハッシュ表HATBLおよびリトライ表RTTBLの図14に示す状態からの変化の一例を示す。状態が図14と相違する箇所は、網掛けで示す。
図4に示す制御装置CNTLの変更部CHNGは、サーバ管理表SVMTBLを変更し、サーバSV9をゾーンZ1内のディスク装置Daに接続されるストレージサーバSSVとして設定する。変更部CHNGは、電源が投入されたサーバSV9にストレージサービスプログラムSSPの起動を指示し、サーバSV9をストレージサーバSSVとして動作させる。
そして、変更部CHNGは、図15に示すサーバ管理表SVMTBL、ディスク管理表DMTBLおよびハッシュ表HATBLを、全てのフロントエンドサーバFESVおよび全てのストレージサーバSSVに転送する。すなわち、全てのフロントエンドサーバFESVおよび全てのストレージサーバSSVのサーバ管理表SVMTBL、ディスク管理表DMTBLおよびハッシュ表HATBLは、図15に示す状態に設定される。
ゾーンZ1に割り当てられた全てのディスク装置Da1−Da12のロックが解除された後、フロントエンドサーバFESVは、制御装置CNTLからの転送要求に基づいて、フラッシュ処理を実行する。フラッシュ処理は、リトライ表RTTBLに格納された情報に基づいて、書き込みが保留されたデータをディスク装置Daに書き込み、リトライ表RTTBLに格納された情報を削除する処理である。フラッシュ処理の実行により、リトライ表RTTBLは、空になる。
フラッシュ処理において、フロントエンドサーバFESVは、まず、リトライ表RTTBLを参照し、書き込みを保留したデータ(クエリ)とデータを書き込むディスク装置Daを求める。次に、フロントエンドサーバFESVは、ハッシュ表HATBLを参照し、ディスク装置Daに書き込むデータと同じデータ(レプリカデータ)が格納されている他のゾーンZ2(またはZ3)に割り当てられたディスク装置Db(またはDc)を求める。
次に、フロントエンドサーバFESVは、ディスク管理表DMTBLおよびサーバ管理表SVMTBLを参照することで、レプリカデータが格納されているディスク装置Db(またはDc)に接続されたストレージサーバSSVのIPアドレスを求める。そして、フロントエンドサーバFESVは、求めたストレージサーバSSVに、書き込みを保留したデータをディスク装置Daへ転送(コピー)させる転送要求を発行する。フロントエンドサーバFESVは、データのディスク装置Daへの転送が完了した後、書き込んだデータに対応する情報をリトライ表RTTBLから削除する。
図11から図15に示すように、ストレージサーバSSVを追加することにより、ストレージサーバSSVの1台当たりの負荷を低下させることができ、全てのストレージサーバSSVによる処理性能を向上させることができる。これにより、ストレージサーバSSVの性能のボトルネックを解消することができる。
図16は、図11に示す情報処理システムSYS1においてストレージサーバSSVの負荷が減少した場合のサーバ管理表SVMTBL、ディスク管理表DMTBL、ハッシュ表HATBLおよびリトライ表RTTBLの変化の一例を示す。リトライ表RTTBLを除き、状態が図15と相違する箇所は、網掛けで示す。なお、リトライ表RTTBLは、フロントエンドサーバFESVに含まれ、制御装置CNTLおよびストレージサーバSSVには含まれない。
図4に示す制御装置CNTLの収集部GATHは、各ストレージサーバSSV(SV7、SV8、SV9、SV10、SV11、SV13、SV14)の負荷を所定の周期で測定する。収集部GATHは、各ストレージサーバSSVの負荷が、閾値VTHsより低い閾値VTLsより低くなったストレージサーバSSVを、処理能力に十分な余裕がある低負荷状態と判定する。例えば、収集部GATHは、ストレージサーバSSVのCPUの利用率に基づいて負荷を判断し、CPUの利用率が30%(VTLs)より低い場合に、低負荷状態と判定する。ストレージサーバSSVの低負荷状態は、ストレージサーバSSVの数を1台減らしても、ストレージサーバSSVの性能がボトルネックにならない状態である。
図16に示す例では、収集部GATHは、ストレージサーバSSV(SV9)を低負荷状態と判定する。図4に示す制御装置CNTLの変更部CHNGは、ディスク管理表DMTBLを変更し、低負荷状態と判定されたストレージサーバSSV(SV9)に接続されたディスク装置Da1、Da2、Da7、Da8をロック状態に設定する。変更部CHNGは、変更したディスク管理表DMTBLを全てのフロントエンドサーバFESVに転送し、ディスク管理表DMTBLを更新させる。
なお、フロントエンドサーバFESVにおけるサーバ管理表SVMTBLおよびハッシュ表HATBLの状態は、図12と同じである。ストレージサーバSSVにおけるサーバ管理表SVMTBL、ディスク管理表DMTBLおよびハッシュ表HATBLの状態は、図15と同じである。
図17は、サーバ管理表SVMTBL、ディスク管理表DMTBL、ハッシュ表HATBLおよびリトライ表RTTBLの図16に示す状態からの変化の一例を示す。状態が図16と相違する箇所は、網掛けで示す。
図4に示す制御装置CNTLの変更部CHNGは、ディスク装置Da1、Da2をストレージサーバSSV(SV9)からストレージサーバSSV(SV7)に付け替えるために、ディスク管理表DMTBLを変更する。また、変更部CHNGは、ディスク装置Da7、Da8をストレージサーバSSV(SV9)からストレージサーバSSV(SV8)に付け替えるために、ディスク管理表DMTBLを変更する。変更部CHNGは、変更したディスク管理表DMTBLを全てのフロントエンドサーバFESVに転送する。
変更部CHNGは、変更したディスク管理表DMTBLに基づいて、ディスク装置Da1、Da2、Da7、Da8の付け替えを切り替え装置SWに指示する。切り替え装置SWは、変更部CHNGからの指示に基づいて、ストレージサーバSSV(SV7、SV8、SV9)とディスク装置Da1−Da12の接続を、図3に示す状態に切り替える。
また、ディスク管理表DMTBLが更新されている間に、データを書き込む書き込みアクセス要求が、ロックされたディスク装置Da1に発生する。このため、書き込みアクセス要求を受信したフロントエンドサーバFESVは、データのパスを示す情報とデータを書き込むディスク装置Da1とを示す情報をリトライ表RTTBLに格納する。
なお、フロントエンドサーバFESVにおけるサーバ管理表SVMTBLおよびハッシュ表HATBLの状態は、図17と同じである。また、ロック中のディスク装置Da1に対する書き込み要求を受けていないフロントエンドサーバFESVにおけるリトライ表RTTBLは空である。ストレージサーバSSVにおけるサーバ管理表SVMTBL、ディスク管理表DMTBLおよびハッシュ表HATBLの状態は、図15と同じである。
図18は、サーバ管理表SVMTBL、ディスク管理表DMTBL、ハッシュ表HATBLおよびリトライ表RTTBLの図17に示す状態からの変化の一例を示す。状態が図17と相違する箇所は、網掛けで示す。
図4に示す制御装置CNTLの変更部CHNGは、ストレージサーバSSV(SV7、SV8)に接続されたディスク装置Da1、Da2、Da7、Da8のロックを解除する。変更部CHNGは、サーバ管理表SVMTBLを変更し、サーバSV9をストレージサーバSSVからスリープサーバSLPSVに設定する。
そして、変更部CHNGは、図18に示すサーバ管理表SVMTBL、ディスク管理表DMTBLおよびハッシュ表HATBLを、全てのフロントエンドサーバFESVおよび全てのストレージサーバSSVに転送する。すなわち、全てのフロントエンドサーバFESVおよび全てのストレージサーバSSVのサーバ管理表SVMTBL、ディスク管理表DMTBLおよびハッシュ表HATBLは、図18に示す状態に設定される。
ゾーンZ1に割り当てられた全てのディスク装置Da1、Da2、Da7、Da8のロックが解除された後、フロントエンドサーバFESVは、リトライ表RTTBLに格納された情報に基づいて、データをディスク装置Da1に書き込む。ディスク装置Da1に書き込むデータは、ハッシュ表HATBL、ディスク管理表DMTBLおよびサーバ管理表SVMTBLを参照することで、他のゾーンZ2(またはZ3)に割り当てられたディスク装置Db(またはDc)から読み出される。そして、フロントエンドサーバFESVは、ディスク装置Daに書き込んだデータに対応する情報をリトライ表RTTBLから削除する。すなわち、リトライ表RTTBLのフラッシュ処理が実行される。フラッシュ処理の実行により、リトライ表RTTBLは、空になる。この後、変更部CHNGは、サーバSV9に電源の遮断を指示し、サーバSV9は、ストレージサーバSSVからスリープサーバSLPSVに切り替わる。すなわち、ストレージサーバSSV(SV9)の選択は解除される。
ストレージサーバSSVの負荷が閾値VTLsより低くなったことに基づいて、制御装置CNTLは、ストレージサーバSSV(SV9)をスリープサーバSLPSVに切り替える。これにより、ストレージサーバSSVの1台当たりの負荷は増加し、全てのストレージサーバSSVによる処理性能は低下するが、ストレージサーバSSVの処理性能は、負荷に対して余裕があり、ボトルネックにならない。このため、情報処理システムSYS1の処理性能を低下させることなく、情報処理システムSYS1の消費電力を削減することができる。
図19は、図3に示す制御装置CNTLの動作の一例を示す。図19に示すフローは、情報処理システムSYS1の制御方法および制御装置CNTLの制御プログラムの一例を示す。図19に示す処理は、所定の周期で実行される。
まず、ステップS100において、制御装置CNTLは、図4に示す収集部GATHによりフロントエンドサーバFESVの負荷を測定する。例えば、各フロントエンドサーバFESVは、制御装置CNTLからの指示に基づいて、SAR(System Admin Reporter)コマンド等を用いて負荷を計測し、計測した負荷を制御装置CNTLに通知する。
次に、ステップS102において、制御装置CNTLは、フロントエンドサーバFESVのいずれかの負荷が、閾値VTHf(例えば、85%)より高い場合、処理をステップS200に移行する。制御装置CNTLは、フロントエンドサーバFESVの負荷が、閾値VTHf以下の場合、処理をステップS104に移行する。なお、フロントエンドサーバFESVの負荷のばらつきは、ロードバランサLBにより抑えられるため、制御装置CNTLは、フロントエンドサーバFESVのいずれか1つの負荷を測定してもよい。
ステップS200において、制御装置CNTLは、図4に示す変更部CHNGにより、フロントエンドサーバFESVを追加する追加処理を実行し、処理をステップS104に移行する。追加処理の一例は、図20に示す。
ステップS104において、制御装置CNTLは、フロントエンドサーバFESVのいずれかの負荷が、閾値VTLf(例えば、30%)より低い場合、処理をステップS250に移行する。制御装置CNTLは、フロントエンドサーバFESVの負荷が、閾値VTHf以上の場合、処理をステップS106に移行する。
ステップS250において、制御装置CNTLは、図4に示す変更部CHNGにより、フロントエンドサーバFESVを削除する削除処理を実行し、処理をステップS106に移行する。削除処理の一例は、図21に示す。
ステップS106において、制御装置CNTLは、各フロントエンドサーバFESVに、リトライ表RTTBLが空き状態であるか否かを、各フロントエンドサーバFESVに問い合わせる。制御装置CNTLは、全てのフロントエンドサーバFESVのリトライ表RTTBLが空き状態の場合、処理をステップS108に移行する。制御装置CNTLは、フロントエンドサーバFESVの少なくともいずれかのリトライ表RTTBLに、データの書き込みが保留された書き込みアクセス要求に対応する情報が格納されている場合、処理を終了する。ステップS106の判定により、フラッシュ処理の実行前に、ステップS108以降が実行されることを抑止することができる。これにより、フラッシュ処理の実行とストレージサーバSSVの追加/削減の処理とが競合し、情報処理システムSYS1が誤動作することを抑止することができる。
ステップS108において、制御装置CNTLは、変数nを”1”に設定する。次に、ステップS110において、制御装置CNTLは、収集部GATHにより、ゾーンZn(nは変数n)に対応するストレージサーバSSVの負荷を測定する。例えば、各ストレージサーバSSVは、制御装置CNTLからの指示に基づいて、SARコマンドを用いて負荷を計測し、計測した負荷を制御装置CNTLに通知する。
次に、ステップS112において、制御装置CNTLは、ストレージサーバSSVのいずれかの負荷が、閾値VTHs(例えば、85%)より高い場合、処理をステップS300に移行する。制御装置CNTLは、ストレージサーバSSVの負荷が、閾値VTHs以下の場合、処理をステップS114に移行する。
ステップS300において、制御装置CNTLは、図4に示す変更部CHNGにより、ストレージサーバSSVを追加する追加処理を実行し、処理をステップS114に移行する。追加処理の一例は、図22に示す。
ステップS114において、制御装置CNTLは、ストレージサーバSSVのいずれかの負荷が閾値VTLs(例えば、30%)より低い場合、処理をステップS350に移行する。制御装置CNTLは、ストレージサーバSSVの負荷が、閾値VTHs以上の場合、処理をステップS116に移行する。なお、制御装置CNTLは、ストレージサーバSSVの全ての負荷が閾値VTLsより低い場合に、処理をステップS350に移行し、ストレージサーバSSVのいずれかの負荷が閾値VTLs以上の場合、処理をステップS116に移行してもよい。
ステップS350において、制御装置CNTLは、変更部CHNGにより、ストレージサーバSSVを削除する削除処理を実行し、処理をステップS116に移行する。削除処理の一例は、図23に示す。
ステップS116において、制御装置CNTLは、変数nを”1”増加する。次に、ステップS118において、制御装置CNTLは、ゾーンZnが存在する場合、処理をステップS110に戻す。一方、制御装置CNTLは、ゾーンZnが存在しない場合、すなわち、全てのゾーンZ1−Z3に対応するストレージサーバSSVの負荷を測定した場合、処理を終了する。
図20は、図19に示すステップS200の処理(フロントエンドサーバFESVの追加処理)の一例を示す。特に限定されないが、図20に示す処理は、制御装置CNTLの変更部CHNGにより実行される。
まず、ステップS202において、制御装置CNTLは、スリープサーバSLPSVがサーバプールSVPL内にある場合、処理をステップS204に移行する。一方、制御装置CNTLは、スリープサーバSLPSVがサーバプールSVPL内にない場合、フロントエンドサーバFESVの追加が困難なため、処理を終了する。
ステップS204において、制御装置CNTLは、スリープサーバSLPSVの1つを選択する。次に、ステップS206において、制御装置CNTLは、選択したスリープサーバSLPSVに電源を投入する命令を発行し、スリープサーバSLPSVの電源を投入する。例えば、各サーバSVは、システムの管理用のコントローラBMC(Base Management Controller)を有する。そして、制御装置CNTLは、IPMI(Intelligent Platform Management Interface)等のプロトコルによってコントローラBMCにアクセスし、各サーバSVの電源の状態を制御する。なお、ステップS206は、制御装置CNTLの制御部SLPCにより実行されてもよい。
次に、ステップS208において、制御装置CNTLは、電源を投入したスリープサーバSLPSVの起動を待つ。次に、ステップS210において、制御装置CNTLは、サーバ管理表SVMTBLにおいて、電源を投入したスリープサーバSLPSVのステータスを”FESV”に変更する。次に、ステップS212において、制御装置CNTLは、電源を投入したスリープサーバSLPSVに、サーバ管理表SVMTBL、ディスク管理表DMTBLおよびハッシュ表HATBLを転送する。例えば、制御装置CNTLは、SCP(Secure CoPy)コマンド等を用いて、サーバ管理表SVMTBL、ディスク管理表DMTBLおよびハッシュ表HATBLを制御装置CNTLのメモリMEMからスリープサーバSLPSVのメモリMEMにコピーする。
次に、ステップS214において、制御装置CNTLは、電源を投入したスリープサーバSLPSVに、フロントエンドサービスプログラムFESPの起動を指示する。次に、ステップS216において、制御装置CNTLは、ロードバランサLBにフロントエンドサーバFESVの追加を示す情報を通知し、処理を終了する。
図21は、図19に示すステップS250の処理(フロントエンドサーバFESVの削除処理)の一例を示す。特に限定されないが、図21に示す処理は、制御装置CNTLの変更部CHNGおよび制御部SLPCにより実行される。
まず、ステップS252において、制御装置CNTLの変更部CHNGは、サーバ管理表SVMTBLの中からステータスが”FESV”に設定されたエントリの1つを選択する。次に、ステップS254において、制御装置CNTLの変更部CHNGは、ロードバランサLBに、ステップS252で選択したエントリに対応するフロントエンドサーバFESVの削除を通知する。すなわち、制御装置CNTLは、ステップS252で選択したエントリに対応するフロントエンドサーバFESVを負荷の分散先から削除する指示をロードバランサLBに通知する。
次に、ステップS256において、制御装置CNTLの変更部CHNGは、サーバ管理表SVMTBLにおいて、ステップS252で選択したエントリのステータスを”SLPSV”に変更する。次に、ステップS258において、制御装置CNTLの制御部SLPCは、ステップS252で選択したエントリに対応するフロントエンドサーバFESVの電源を遮断し、フロントエンドサーバFESVの数を減らす。例えば、制御装置CNTLの制御部SLPCは、IPMI等のプロトコルによってフロントエンドサーバFESVのコントローラBMCにアクセスし、フロントエンドサーバFESVの電源を遮断する。
図22は、図19に示すステップS300の処理(ストレージサーバSSVの追加処理)の一例を示す。特に限定されないが、図22に示す処理は、制御装置CNTLの変更部CHNGにより実行される。
まず、ステップS302において、制御装置CNTLは、スリープサーバSLPSVがサーバプールSVPL内にある場合、処理をステップS304に移行する。一方、制御装置CNTLは、スリープサーバSLPSVがサーバプールSVPL内にない場合、ストレージサーバSSVの追加が困難なため、処理を終了する。
ステップS304において、制御装置CNTLは、スリープサーバSLPSVの1つを選択する。次に、ステップS306において、制御装置CNTLは、選択したスリープサーバSLPSVの電源を投入する。例えば、制御装置CNTLは、IPMI等のプロトコルによってスリープサーバSLPSVのコントローラBMCにアクセスし、スリープサーバSLPSVの電源を投入する。なお、ステップS306は、制御装置CNTLの制御部SLPCにより実行されてもよい。次に、ステップS308において、制御装置CNTLは、電源を投入したスリープサーバSLPSVの起動を待つ。
次に、ステップS400において、制御装置CNTLは、動作中のストレージサーバSSVに接続されたディスク装置Dを、新たに追加するストレージサーバSSVに付け替える分割処理を実行する。分割処理の一例は、図23に示す。
次に、ステップS310において、制御装置CNTLは、サーバ管理表SVMTBLにおいて、新たに追加するストレージサーバSSVに対応するゾーンの領域を、対象ゾーンZnを示す情報に変更する。次に、ステップS312において、制御装置CNTLは、サーバ管理表SVMTBLにおいて、新たに追加するストレージサーバSSVに対応するステータスを”SLPSV”から”SSV”に変更する。
次に、ステップS314において、制御装置CNTLは、電源を投入したスリープサーバSLPSVに、ストレージサービスプログラムSSPの起動を指示する。次に、ステップS316において、制御装置CNTLは、全てのフロントエンドサーバFESVと全てのストレージサーバSSVに、サーバ管理表SVMTBL、ディスク管理表DMTBLおよびハッシュ表HATBLを転送する。例えば、サーバ管理表SVMTBL、ディスク管理表DMTBLおよびハッシュ表HATBLの転送は、SCPコマンドを用いて実行される。次に、ステップS318において、制御装置CNTLは、各フロントエンドサーバFESVにリトライ表RTTBLのフラッシュ処理を指示し、処理を終了する。
図23は、図22に示すステップS400の処理(分割処理)の一例を示す。まず、ステップS402において、制御装置CNTLは、ディスク管理表DMTBLにアクセスし、ストレージサーバSSVを追加する対象ゾーンZnに属する全てのディスク装置Dをロック状態に設定する。次に、ステップS404において、制御装置CNTLは、変更したディスク管理表DMTBLを全てのフロントエンドサーバFESVに転送し、ディスク管理表DMTBLを更新させる。
次に、ステップS406において、制御装置CNTLは、ストレージサーバSSVの追加後におけるストレージサーバSSV1台当たりに接続されるディスク装置Dの数の平均値Dnを求める。次に、ステップS408において、制御装置CNTLは、対象ゾーンDn内の既存のストレージサーバSSVの1つを選択する。次に、ステップS410において、制御装置CNTLは、選択したストレージサーバSSVに接続されたディスク装置Dのうち先頭のディスク装置Dを、追加するストレージサーバSSVに付け替え、処理をステップS412に移行する。なお、付け替えるディスク装置Dは、選択したストレージサーバSSVに接続された任意のディスク装置Dでもよい。
次に、ステップS412において、制御装置CNTLは、付け替えたディスク装置Dの数が平均値Dn以上の場合、処理をステップS416に移行し、付け替えたディスク装置Dの数が平均値Dn未満の場合、処理をステップS414に移行する。
ステップS414において、制御装置CNTLは、対象ゾーンZn内において、次のストレージサーバSSVを選択し、処理をステップS410に戻す。ストレージサーバSSVは、付け替えたディスク装置Dの数が平均値Dn以上になるまで、巡回的に選択される。一方、ステップS412において、付け替えたディスク装置Dの数が平均値Dn以上になった場合、ステップS416において、制御装置CNTLは、ディスク管理表DMTBLにアクセスしてロック状態を解除し、処理を終了する。
図3に示す情報処理システムSYS1において、ゾーンZ1にストレージサーバSSVを追加して、図11に示す状態にする場合、付け替えるディスク装置Dの平均値Dnは”4.0”(ゾーンZ1内のディスク装置Dの総数”12”/追加後のストレージサーバSSVの総数”3”)である。例えば、21台のディスク装置Dが3台のストレージサーバSSVに接続されたゾーンDに、1台のストレージサーバSSVを追加する場合、平均値Dnは、”5.25”(21/4)である。この場合、追加するストレージサーバSSVに6台のディスク装置Dが接続されるまで、ディスク装置Dの付け替えが繰り返される。
図24は、図19に示すステップS350の処理(ストレージサーバSSVの削除処理)の一例を示す。特に限定されないが、図21に示す処理は、制御装置CNTLの変更部CHNGおよび制御部SLPCにより実行される。
まず、ステップS352において、制御装置CNTLの変更部CHNGは、対象ゾーンZnに属するストレージサーバSSVの1つを、削除するストレージサーバSSVとして選択する。次に、ステップS450において、制御装置CNTLの変更部CHNGは、動作を停止するストレージサーバSSVから動作を継続するストレージサーバSSVにディスク装置Dを付け替える結合処理を実行する。結合処理の一例は、図25に示す。
次に、ステップS354において、制御装置CNTLの変更部CHNGは、サーバ管理表SVMTBLにおいて、削除するストレージサーバSSVのステータスを”SLPSV”に変更する。次に、ステップS356において、制御装置CNTLの変更部CHNGは、全てのフロントエンドサーバFESVと全てのストレージサーバSSVに、サーバ管理表SVMTBL、ディスク管理表DMTBLおよびハッシュ表HATBLを転送する。サーバ管理表SVMTBL、ディスク管理表DMTBLおよびハッシュ表HATBLの転送は、SCPコマンド等を用いて実行される。
次に、ステップS358において、制御装置CNTLの変更部CHNGは、各フロントエンドサーバFESVにリトライ表RTTBLのフラッシュ処理を指示する。次に、ステップS360において、制御装置CNTの制御部SLPCLは、削除するストレージサーバSSVの電源を遮断し、処理を終了する。例えば、制御部SLPCは、IPMI等のプロトコルによってストレージサーバSSVのコントローラBMCにアクセスし、ストレージサーバSSVの電源を遮断する。
図25は、図24に示すステップS450の処理(結合処理)の一例を示す。まず、ステップS452において、制御装置CNTLは、ディスク管理表DMTBLにアクセスし、削除するストレージサーバSSVに接続された全てのディスク装置Dをロック状態に設定する。次に、ステップS454において、制御装置CNTLは、変更したディスク管理表DMTBLを全てのフロントエンドサーバFESVに転送し、ディスク管理表DMTBLを更新させる。ディスク管理表DMTBLの転送は、SCPコマンド等を用いて実行される。
次に、ステップS456において、制御装置CNTLは、削除するストレージサーバSSVが属する対象ゾーンDn内の既存のストレージサーバSSVの1つを選択する。次に、ステップS458において、制御装置CNTLは、選択したストレージサーバSSVが削除するストレージサーバSSVの場合、処理をステップS464に移行する。一方、制御装置CNTLは、選択したストレージサーバSSVが削除するストレージサーバSSVでない場合、処理をステップS460に移行する。
ステップS460において、制御装置CNTLは、削除するストレージサーバSSVに接続されたディスク装置Dのうち先頭のディスク装置Dを、選択したストレージサーバSSVに付け替え、処理をステップS462に移行する。なお、付け替えるディスク装置Dは、削除するストレージサーバSSVに接続された任意のディスク装置Dでもよい。
次に、ステップS462において、制御装置CNTLは、削除するストレージサーバSSVに接続されたディスク装置Dがある場合、処理をステップS464に移行し、削除するストレージサーバSSVに接続されたディスク装置Dがない場合、処理をステップS466に移行する。
ステップS464において、制御装置CNTLは、対象ゾーンZn内において、次のストレージサーバSSVを選択し、処理をステップS458に戻す。一方、削除するストレージサーバSSVからのディスク装置Dの付け替えが完了した場合、ステップS466において、制御装置CNTLは、ディスク管理表DMTBLにアクセスしてロック状態を解除し、処理を終了する。
図26は、図3に示すフロントエンドサーバFESVの動作の一例を示す。図26に示す動作は、図5に示すフロントエンドサーバFESVのCPUが、フロントエンドサービスプログラムFESPを実行することで、実現される。
まず、ステップS502において、フロントエンドサーバFESVは、ロードバランサLBを介して端末装置TMから供給されるアクセス要求を受信するのを待つ。アクセス要求を受信した場合、ステップS504において、フロントエンドサーバFESVは、アクセス要求が読み出し要求であるか否かを判定する。アクセス要求が読み出し要求である場合、処理はステップS600に移行し、アクセス要求が読み出し要求でない場合、処理はステップS506に移行する。
ステップS506において、フロントエンドサーバFESVは、アクセス要求が書き込み要求であるか否かを判定する。アクセス要求が書き込み要求である場合、処理はステップS700に移行し、アクセス要求が書き込み要求でない場合、処理はステップS508に移行する。
ステップS508において、フロントエンドサーバFESVは、リトライ表RTTBLのフラッシュ処理の指示を制御装置CNTLから受信した場合、処理をステップS800に移行する。フロントエンドサーバFESVは、リトライ表RTTBLのフラッシュ処理の指示を受信していない場合、処理をステップS502に戻す。
ステップS600において、フロントエンドサーバFESVは、データの読み出し処理を実行する。データの読み出し処理の一例は、図27に示す。次に、ステップS512において、フロントエンドサーバFESVは、ステップS600で読み出したデータを端末装置TMに返送し、処理をステップS502に戻す。
ステップS700において、フロントエンドサーバFESVは、データの書き込み処理を実行し、処理をステップS502に戻す。データの書き込み処理の一例は、図28に示す。ステップS800において、フロントエンドサーバFESVは、リトライ表RTTBLのフラッシュ処理を実行し、処理をステップS502に戻す。フラッシュ処理の一例は、図29に示す。
図27は、図26に示すステップS600の処理(読み出し処理)の一例を示す。まず、ステップS602において、フロントエンドサーバFESVは、端末装置TMから受信した読み出し要求に含まれるクエリ(データのパス等)をハッシュ関数に入力することで、ハッシュ値を求める。次に、ステップS604において、フロントエンドサーバFESVは、ハッシュ表HATBLを参照し、ステップS602で求めたハッシュ値に対応するディスク装置D(Da、Db、Dc)の1つを選択する。
次に、ステップS606において、フロントエンドサーバFESVは、ディスク管理表DMTBLを参照し、選択したディスク装置Dがロックされている場合、他のディスク装置Dを選択するために、処理をステップS604に移行する。フロントエンドサーバFESVは、選択したディスク装置Daがロックされていない場合、処理をステップS608に移行する。
ステップS608において、フロントエンドサーバFESVは、ディスク管理表DMTBLを参照し、選択したディスク装置Dに接続されたストレージサーバSSVを求める。さらに、フロントエンドサーバFESVは、サーバ管理表SVMTBLを参照し、求めたストレージサーバSSVのIPアドレスを求める。
次に、ステップS610において、フロントエンドサーバFESVは、ステップS604で選択したディスク装置Dからデータを読み出すために、ステップS608で求めたストレージサーバSSVに読み出し要求(クエリ)を発行する。
次に、ステップS612において、フロントエンドサーバFESVは、ストレージサーバSSVからデータを受信するのを待ち、データの読み出し処理を終了する。
図28は、図26に示すステップS700の処理(書き込み処理)の一例を示す。まず、ステップS702において、フロントエンドサーバFESVは、端末装置TMから受信した書き込み要求に含まれるクエリ(データのパス等)をハッシュ関数に入力することで、ハッシュ値を求める。次に、ステップS704において、フロントエンドサーバFESVは、ハッシュ表HATBLを参照し、ステップS702で求めたハッシュ値に対応するディスク装置D(Da、Db、Dc)の1つを選択する。
次に、ステップS706において、フロントエンドサーバFESVは、ディスク管理表DMTBLを参照し、選択したディスク装置Dがロックされている場合、処理をステップS708に移行する。フロントエンドサーバFESVは、選択したディスク装置Daがロックされていない場合、処理をステップS710に移行する。
ステップS708において、フロントエンドサーバFESVは、書き込み要求に含まれるクエリとロックされたディスク装置Dとを示す情報をリトライ表RTTBLに登録し、処理をステップS714に移行する。
ステップS710において、フロントエンドサーバFESVは、ディスク管理表DMTBLを参照し、選択したディスク装置Dに接続されたストレージサーバSSVを求める。さらに、フロントエンドサーバFESVは、サーバ管理表SVMTBLを参照し、求めたストレージサーバSSVのIPアドレスを求める。
次に、ステップS712において、フロントエンドサーバFESVは、ステップS604で選択したディスク装置Dにデータを書き込むために、ステップS710で求めたストレージサーバSSVに書き込み要求(クエリおよびデータ)を発行する。
次に、ステップS714において、フロントエンドサーバFESVは、ハッシュ値に対応するディスク装置D(Da、Db、Dc)のうち、選択していないディスク装置Dがある場合、処理をステップS716に移行する。フロントエンドサーバFESVは、ハッシュ値に対応するディスク装置D(Da、Db、Dc)を全て選択した場合、データの書き込み処理を終了する。
ステップS716において、フロントエンドサーバFESVは、ハッシュ表HATBLを参照し、ハッシュ値に対応するディスク装置D(Da、Db、Dc)のうち、未選択の1つを選択し、処理をステップS706に戻す。
図29は、図26に示すステップS800の処理(フラッシュ処理)の一例を示す。まず、ステップS802において、フロントエンドサーバFESVは、リトライ表RTTBLから最初のエントリを選択する。次に、ステップS804において、フロントエンドサーバFESVは、選択したエントリに情報が格納されている場合、処理をステップS806に移行し、選択したエントリに情報が格納されていない場合、処理を終了する。
ステップS806において、フロントエンドサーバFESVは、選択したエントリに格納されているクエリのハッシュ値を求める。次に、ステップS808において、フロントエンドサーバFESVは、ハッシュ表HATBLを参照し、選択したエントリのディスク名の領域に格納されている情報が示すディスク装置D以外のディスク装置Dの1つを選択する。例えば、エントリにディスク装置Daを示す情報が格納されている場合、フロントエンドサーバFESVは、ハッシュ表HATBLに格納されているディスク装置Db、Dcのいずれかを選択する。
次に、ステップS810において、フロントエンドサーバFESVは、ディスク管理表DMTBLを参照し、選択したディスク装置Dに接続されたストレージサーバSSVをデータの転送元のストレージサーバSSVとして求める。さらに、フロントエンドサーバFESVは、サーバ管理表SVMTBLを参照し、求めたストレージサーバSSVのIPアドレスを求める。ステップS810の後、処理は、ステップS812に移行する。
ステップS812において、フロントエンドサーバFESVは、ディスク管理表DMTBLを参照し、リトライ表RTTBLのエントリに登録されたディスク装置Dに接続されたストレージサーバSSVをデータの転送先のストレージサーバSSVとして求める。さらに、フロントエンドサーバFESVは、サーバ管理表SVMTBLを参照し、求めたストレージサーバSSVのIPアドレスを求める。
次に、ステップS816において、フロントエンドサーバFESVは、転送元のストレージサーバSSVに、リトライ表RTTBLのエントリに登録されたクエリに対応するデータを転送先のストレージサーバSSVへコピーする指示を発行する。次に、ステップS818において、フロントエンドサーバFESVは、リトライ表RTTBLから次のエントリを選択し、処理をステップS804に戻す。
なお、リトライ表RTTBLのフラッシュ処理を実行中のフロントエンドサーバFESVに障害が発生した場合、リトライ表RTTBLに格納された情報が失われるおそれがある。この場合、リトライ処理が中断され、分割処理または結合処理によりデータが書き込まれなかったディスク装置Dに、データは書き込まれない。このような不具合の発生を抑止するために、リトライ表RTTBLをハードディスクドライブHDDまたはSSD等の不揮発な記憶領域に割り当てることが考えられる。これにより、障害の発生によりフロントエンドサーバFESVが再起動される場合にも、システムのリブートによりフラッシュ処理を再開可能である。
また、各ストレージサーバSSVにおいて、所定数のレプリカデータがディスク装置Da、Db、Dcに保持されているかを定期的に検査することで、リトライ処理自体をなくすことができる。ディスク装置Da、Db、Dcの1つにレプリカデータが保持されている場合、所定数のレプリカデータの復旧は可能である。さらに、分割処理中および結合処理中に端末装置TMからの書き込み要求を拒絶することで、リトライ処理自体をなくしてもよい。
図30は、図3に示す情報処理システムSYS1において、フロントエンドサーバFESVおよびストレージサーバSSVの数を変更させる場合の効果の一例を示す。図30は、シミュレーションにより得られたデータの一部を示し、フロントエンドサーバFESVおよびストレージサーバSSVの各々の消費電力は、100W(ワット)とする。
図30の左上は、4キロバイトのデータの読み出し要求を繰り返す1台のフロントエンドサーバFESVが動作中に、高負荷状態が検出され、フロントエンドサーバFESVを1台追加する例を示す。フロントエンドサーバFESVを1台追加することで、各フロントエンドサーバFESVのCPUの利用率URは、88%から48%に低下し、処理性能は向上する。
図30の右上は、1メガバイトのデータの読み出し要求を繰り返す2台のフロントエンドサーバFESVが動作中に、低負荷状態が検出され、フロントエンドサーバFESVを1台削除する例を示す。例えば、図3に示すネットワークNWの通信速度が1Gbps(Gigabit per second)の場合、ネットワークNWは、1秒間に125個の1メガバイトのデータを伝送可能である。フロントエンドサーバFESVの1台当たりの処理性能を毎秒1000命令とすると、2台のフロントエンドサーバFESVの処理性能は過剰であると考えられる。
フロントエンドサーバFESVを1台削除しても、フロントエンドサーバFESVの処理性能には余裕があり、CPUの利用率URの上昇率は僅かである。すなわち、ネットワークNWの通信速度がボトルネックになる状態では、フロントエンドサーバFESVの処理性能をほとんど低下させることなく、消費電力を100W削減することができる。
図30の左下は、1メガバイトのデータのディスク装置Dへの書き込みを繰り返す4台のストレージサーバSSVが動作中に、高負荷状態が検出され、ストレージサーバSSVを4台追加する例を示す。ストレージサーバSSVを追加することで、各ストレージサーバSSVに接続されるディスク装置Dの数は、半分になり、各ストレージサーバSSVのCPUの利用率URは、91%から62%に低下し、処理性能は向上する。
図30の右下は、4キロバイトのデータのディスク装置Dへの書き込みを繰り返す8台のストレージサーバSSVが動作中に、低負荷状態が検出され、ストレージサーバSSVを4台削除する例を示す。低負荷状態は、高負荷状態に比べて、ストレージサーバSSVによるディスク装置Dへのデータの書き込み頻度が低く、ストレージサーバSSVの処理性能に余裕がある。このため、ストレージサーバSSVを削除した場合にも、各CPUの利用率URの上昇率は僅かである。すなわち、ストレージサーバSSVの処理性能に余裕を持たせた状態で、消費電力を400W削減することができる。
なお、1メガバイト等のデータをディスク装置Dに読み書きする場合、1台のストレージサーバSSVに接続されるディスク装置Dの数が少ないほど、ディスク装置Dに対する読み書きの並列度が低下し、CPUの利用率URは低下する。換言すれば、1台のストレージサーバSSVに接続されるディスク装置Dの数が多いほど、ディスク装置Dに対する読み書きの並列度が上昇し、CPUの利用率URは増加する。
これに対して、4キロバイト等のデータをディスク装置Dに頻繁に読み書きする場合、CPUは、ディスク装置Dの接続数に依存せず高負荷状態を維持しやすくなり、CPUの利用率URは、ディスク装置Dの接続数に依存せず高い状態を維持する。このような場合にも、ストレージサーバSSVの数を削減し、ストレージサーバSSVの1台当たりに接続されるディスク装置Dの数を増やすことで、処理性能に影響を与えることなく、消費電力を削減することができる。
以上、図3から図30に示す実施形態においても、図1および図2に示す実施形態と同様の効果を得ることができる。すなわち、変更部CHNGは、フロントエンドサーバFESVおよびストレージサーバSSVの負荷の変動に応じてフロントエンドサーバFESVの数またはストレージサーバSSVの数を変更する。これにより、負荷の変動に応じて、フロントエンドサーバFESVの性能のボトルネックおよびストレージサーバSSVの性能のボトルネックを解消することができ、情報処理システムSYSの処理性能を低下させることなく消費電力を削減することができる。
さらに、負荷の増加に基づいてストレージサーバSSVの数を増やす場合に、ディスク装置Dの一部を新たに追加するストレージサーバSSVに付け替える分割処理により、ディスク装置DをストレージサーバSSVに均等に割り当てることができる。また、負荷の減少に基づいてストレージサーバSSVの数を減らす場合に、削除するストレージサーバSSVに接続されたディスク装置Dを付け替える結合処理により、ディスク装置DをストレージサーバSSVに均等に割り当てることができる。この結果、ストレージサーバSSVの負荷を分散することができ、ストレージサーバSSVの処理性能を向上することができる。
分割処理中および結合処理中のストレージサーバSSVへのデータの読み出し要求および書き込み要求を抑止することで、データがディスク装置Dに書き込まれずに失われるなどの誤動作を抑止することができる。この結果、情報処理システムSYS1の信頼性を向上することができる。また、分割処理中および結合処理中に、フロントエンドサーバFESVは、分割処理および結合処理中を実行していないストレージサーバSSVに接続されたディスク装置Dに対してデータを入出力する。これにより、フロントエンドサーバFESVは、分割処理中および結合処理中にも、ストレージサーバSSVのいずれかに読み出し要求および書き込み要求を発行することができる。この結果、分割処理および結合処理により、フロントエンドサーバFESVの処理が停止することを抑止することができ、情報処理システムSYS1の処理性能が低下することを抑止することができる。
分割処理後および結合処理後に、データを書き込んでいないディスク装置Dにデータを書き込むことで、複数のディスク装置Dでデータを冗長に保持することができる。これにより、分割処理を実行するストレージサーバSSVを有する情報処理システムSYS1の信頼性を向上することができる。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。