(57)【特許請求の範囲】
【請求項１】
データを格納する記憶領域を有する複数の計算機と通信可能に接続され、自計算機の記憶領域に配置される第１のデータの複製である第２のデータが、他の計算機の記憶領域に配置される計算機であって、
前記計算機は、
前記計算機の各々の前記記憶領域の容量を保持し、前記容量に応じて、前記第１のデータを自計算機及び前記複数の他の計算機の記憶領域に配置する前記第１のデータレンジを決定し、
前記第１のデータレンジのうち、最大のデータレンジあるいは最大の容量となるデータレンジとは異なるデータレンジを起点に、最大のデータレンジあるいは最大の容量となる前記第２のデータのデータレンジを決定することで、前記第２のデータを自計算機及び前記他の計算機の記憶領域に配置するための第２のデータレンジを決定し、
前記第１及び前記第２のデータレンジに従って、前記データを前記計算機の各々の記憶領域に配置する
ことを特徴とする計算機。
【請求項２】
請求項１に記載の計算機であって、
前記自計算機は、
前記自計算機及び他の計算機の計算機ＩＤを管理し、
前記容量に応じて、前記計算機ＩＤの順序に従って前記データを前記計算機の各々に配置するための第１のデータレンジを決定し、
前記第１のデータレンジのうち、最大のデータレンジあるいは最大の容量となるデータレンジから、前記計算機ＩＤの順序に従って前記第２のデータを前記計算機の各々に配置する前記第２のデータレンジを決定する
ことを特徴とする計算機。
【請求項３】
請求項２に記載の計算機であって、
前記計算機は、
前記最大のデータレンジあるいは前記最大のリソース量を有する第１の計算機に配置されるデータレンジの先頭が、前記計算機ＩＤの順序に従って前記第１の計算機の次の計算機に割り当てられるデータのデータレンジの先頭となる前記第２のデータレンジを決定する
ことを特徴とする計算機。
【請求項４】
請求項３に記載の計算機であって、
前記計算機は、
前記データを複数組み合わせてデータブロックを生成し、
前記計算機の各々の記憶領域の容量に応じて、前記計算機の各々に前記データブロックを割り当て、
前記割り当てたデータブロックの数により最大データサイズを決定する
ことを特徴とする計算機。
【請求項５】
請求項４に記載の計算機であって、
前記計算機は、
前記データ一つあたりのデータサイズと、前記データの数とから、全ての計算機が保持するデータの全データサイズを算出し、
前記全データサイズと、データブロックの数とから、等しいデータサイズのデータブロックを生成する
ことを特徴とする計算機。
【請求項６】
請求項４に記載の計算機であって、
前記計算機は、
前記計算機の各々の前記容量と、前記第１のデータレンジとから前記各計算機のデータ密度を算出し、
前記データ一つあたりのデータサイズと前記データの数から、全ての計算機が保持するデータの全データサイズを算出して、
前記全データサイズと前記データ密度とから、データブロック一つあたりのデータサイズを決定してデータブロックを生成する
ことを特徴とする計算機。
【請求項７】
請求項３に記載の計算機であって、
前記計算機は、
キー・バリュー型のデータを前記記憶領域に配置することを特徴とする計算機。
【請求項８】
データを格納する記憶領域を有する複数の計算機が通信可能に接続され、第１のデータが配置される前記記憶領域と、前記第１のデータの複製データである第２のデータが配置される前記記憶領域とが互いに異なる計算機に含まれる計算機システムの制御装置であって、
前記制御装置が、
前記複数の計算機の前記記憶領域の容量を保持し、前記容量に応じて前記各第１のデータを自計算機及び複数の他の計算機の記憶領域に配置する前記第１のデータレンジを決定し、
前記第１のデータレンジのうち、最大のデータレンジあるいは最大の容量となる前記第２のデータのデータレンジを決定することで、前記第２のデータを自計算機及び他の計算機の記憶領域に配置するための第２のデータレンジを決定し、
前記第１及び前記第２のデータレンジに従って、前記データを前記計算機の各々の記憶領域に配置する
ことを特徴とする制御装置。
【請求項９】
請求項８に記載の制御装置であって、
前記制御装置は、
前記計算機の計算機ＩＤを管理し、
前記容量に応じて、前記計算機ＩＤの順序に従って前記データを前記計算機の各々に配置するための第１のデータレンジを決定し、
前記第１のデータレンジのうち、最大のデータレンジあるいは最大の容量となるデータレンジから、前記計算機ＩＤの順序に従って前記第２のデータを前記計算機の各々に配置する前記第２のデータレンジを決定する
ことを特徴とする制御装置。
【請求項１０】
請求項９に記載の制御装置であって、
前記制御装置が、
前記最大のデータレンジあるいは前記最大のリソース量を有する第１の計算機に配置されるデータレンジの先頭が、前記計算機ＩＤの順序に従って前記第１の計算機の次の計算機に割り当てられるデータのデータレンジの先頭となる前記第２のデータレンジを決定する
ことを特徴とする制御装置。
【請求項１１】
請求項１０に記載の制御装置であって、
前記制御装置が、
前記データを複数組み合わせてデータブロックを生成し、
前記計算機の各々の記憶領域の容量に応じて、前記計算機の各々に前記データブロックを割り当て、
前記割り当てたデータブロックの数により最大データサイズを決定する
ことを特徴とする制御装置。
【請求項１２】
請求項１１に記載の制御装置であって、
前記制御装置が、
前記データ一つあたりのデータサイズと前記データの数とから、全ての計算機が保持するデータの全データサイズを算出し、
前記全データサイズと、データブロックの数とから、等しいデータサイズのデータブロックを生成する
ことを特徴とする制御装置。
【請求項１３】
請求項１１に記載の制御装置であって、
前記制御装置が、
前記計算機の各々の前記容量と前記第１のデータレンジとから前記計算機の各々のデータ密度を算出し、
前記データ一つあたりのデータサイズと前記データの数から、全ての計算機が保持するデータの全データサイズを算出して、
前記全データサイズと前記データ密度とから、データブロック一つあたりのデータサイズを決定してデータブロックを生成する
ことを特徴とする制御装置。
【請求項１４】
請求項１０に記載の制御装置であって、
前記制御装置が、
キー・バリュー型のデータを前記記憶領域に配置することを特徴とする制御装置。
【請求項１５】
データを格納する記憶領域を有する複数の計算機と通信可能に接続され、自計算機の記憶領域に配置される第１のデータの複製である第２のデータが、前記他の計算機の記憶領域に配置される計算機に、
前記計算機の各々の前記記憶領域の容量を保持させ、前記容量に応じて、前記第１のデータを自計算機及び複数の他の計算機の記憶領域に配置する前記第１のデータレンジを決定させるステップと、
前記第１のデータレンジのうち、最大のデータレンジあるいは最大の容量となるデータレンジとは異なるデータレンジを起点に、最大のデータレンジあるいは最大の容量となる前記第２のデータのデータレンジを決定することで、前記第２のデータを自計算機及び他の計算機の記憶領域に配置するための第２のデータレンジを決定させるステップと、
前記第１及び前記第２のデータレンジに従って、前記データを前記計算機の各々の記憶領域に配置させるステップと
を実行させるプログラムを格納するコンピュータ読取可能な非一時的な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の計算機にデータが分散して配置されるシステムに関し、特にマスタデータとレプリカデータを分散配置するシステムに関する。
【背景技術】
【０００２】
近年、Ｗｅｂを用いたアプリケーションを実行する計算機システムでは、データ量が爆発的に増大しており、複数の計算機にデータを分散させることによって、データへのアクセス性能を向上させるシステムが様々知られている。例えば、ＲＤＢＭＳ（Ｒｅｌａｔｉｏｎａｌ  ＤａｔａＢａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）では、データを所定のレンジ毎に分割し、分割されたデータを複数の計算機に配置することによって、システム全体のアクセス性能を向上させる方法が知られている。【０００３】
また、キャッシュサーバ等に用いられるシステムとして、データの識別子（キー）と、データ値（バリュー）とから構成されるキャッシュデータを所定の分散方法にしたがって、複数の計算機システムに配置するＫＶＳ（Ｋｅｙ  Ｖａｌｕｅ  Ｓｔｏｒｅ）等のＮｏＳＱＬ（Ｎｏｔ  ｏｎｌｙ  ＳＱＬ）データベースが知られている。【０００４】
ＫＶＳでは、データに高速にアクセス可能な揮発性の記憶媒体、例えばメインメモリに、データを格納する構成、データ格納の永続性に優れる不揮発性の記録媒体、例えばＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）やＨＤＤ等に、データを格納する構成又は前述したものを併用する構成等の種々の構成がとられている。【０００５】
併用する構成では、高速アクセス性重視や格納性重視等の種々の運用方針によって、複数台の計算機のメモリを統合して構成されるメモリストア及び１台以上の計算機の不揮発性記憶媒体から構成されるディスクストアのバランスを種々変更可能となっている。【０００６】
メモリストア及びディスクストアには、データの識別子（キー）と、データ値（バリュー）とをペアにしたデータが格納される。【０００７】
また、ＫＶＳでは、複数のサーバからクラスタが構成され、各サーバにデータを分散して配置することによって並列処理を実現している。具体的には、サーバが管理するデータ管理範囲（以下、「データレンジ」という。）毎に、各サーバにデータが格納される。各サーバは、担当するデータレンジに含まれるデータ（以下、「マスタデータ」という。また、マスタデータのデータレンジを、以下、「マスタデータレンジ」という。）の処理を実行する。即ち所定のキーを含む読み出し要求に対して、そのキーが含まれるデータレンジのデータを担当するサーバが、キーに対応するデータを読み出すこととなる。これにより、ＫＶＳでは、スケールアウトによって並列処理の性能を向上させることができる。【０００８】
ＫＶＳでは、データの信頼性を確保するために、クラスタを構成するサーバが他のサーバが管理するデータの複製データ（以下、「レプリカデータ」という。また、レプリカデータのデータレンジを、以下、「レプリカデータレンジ」という。）を格納する構成をとるものが知られている。即ち各サーバは、所定のデータレンジに含まれるデータを管理するマスタであると同時に、他のサーバが管理するデータのレプリカデータを保持するスレーブでもある。これによって、サーバに障害が発生した場合であっても、その障害サーバがマスタとして管理するデータをレプリカデータとして保持する他のサーバが、処理を継続することができ、耐障害性を確保している。【０００９】
特許文献１には、上記で説明したＫＶＳにおいてサーバにマスタデータを保持させる方法として、特定のサーバのマスタデータレンジを分割し、分割したマスタデータを隣接するサーバに保持させることで単一のサーバに対する負荷増大を防ぐ技術が開示されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１２−４８４２４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかし、特許文献１に記載の技術では、サーバのメモリ容量を効率的に利用するマスタデータ及びレプリカデータのデータレンジを決定することについては記載がない。例えば、マスタデータのデータ量が大きいサーバのレプリカデータを、空きのメモリ容量が小さいサーバに保持させる場合、ページアウトが発生し、ディスクに格納されたデータにアクセスしなければならないため、データアクセスの速度性能が低下する。反対に、マスタデータのデータ量が小さいサーバのレプリカデータを、空きのメモリ容量が大きいサーバに保持させる場合、使用されないメモリ領域が増え、メモリの使用効率が低下する。さらに、サーバの利用状況に応じて各サーバに格納するデータ量が変動するような場合、データ量の変動に応じて効率的にメモリを使用することはできない。
【課題を解決するための手段】
【００１２】
本発明の代表的な一形態は、データを格納する記憶領域を有する複数の計算機と通信可能に接続され、自計算機の記憶領域に配置される第１のデータの複製である第２のデータが、他の計算機の記憶領域に配置される計算機であって、計算機は、
計算機の各々の記憶領域の容量を保持し、容量に応じて、第１のデータを自計算機及び複数の他の計算機の記憶領域に配置する第１のデータレンジを決定し、第１のデータレンジのうち、最大のデータレンジあるいは最大の容量となるデータレンジとは異なるデータレンジを起点に、最大のデータレンジあるいは最大の容量となる第２のデータレンジを決定することで、第２のデータを自計算機及び他の計算機の記憶領域に配置し、第１及び第２のデータレンジに従って、データを計算機の各々の記憶領域に配置することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、耐障害性を維持しながら、システムの速度性能及びメモリ使用効率を高めることができる。
【図面の簡単な説明】
【００１４】
【図１】本願発明を適用する計算機システムの前提技術として各計算機と各計算機が管理するデータレンジの関係とを示す図である。
【図２】本願発明を適用した一実施形態の計算機システムの処理の概要を示す図である。
【図３】本実施形態の計算機システムにおける計算機システムの全体構成を示す図である。
【図４Ａ】本実施形態の計算機システムにおける構成情報の一例を示す図である。
【図４Ｂ】本実施形態の計算機システムにおけるブロック単位でデータ管理する場合の構成情報の一例を示す図である。
【図４Ｃ】本実施形態の計算機システムにおけるサーバ負荷情報の一例を示す図である。
【図５】本実施形態の計算機システムにおけるデータレンジ管理部が実行するデータレンジ決定処理の流れを示すフローチャートである。
【図６Ａ】本実施形態の計算機システムにおけるマシン情報管理部が実行するデータ位置基準のデータレンジ決定処理の流れを示すフローチャートである。
【図６Ｂ】本実施形態の計算機システムにおけるデータ位置基準のデータレンジ決定処理を実行し、レプリカデータのデータレンジを決定した一例を示す図である。
【図７】本実施形態の計算機システムにおけるマシン情報管理部が実行するブロック基準のデータレンジ決定処理の流れを示すフローチャートである。
【図８Ａ】本実施形態の計算機システムにおけるブロック基準のデータレンジ決定処理を実行し、レプリカデータのデータレンジを決定した一例を示す図である。
【図８Ｂ】本実施形態の計算機システムにおける図８Ａに対応するマスタデータ及びレプリカデータの構成情報の一例を示す図である。
【図９】本実施形態の計算機システムにおけるマシン情報管理部が実行する分布情報を入力としたデータブロック決定処理を示すフローチャートである。
【図１０Ａ】本実施形態の計算機システムにおける分布情報を入力としたブロック決定の一例を示す図である。
【図１０Ｂ】本実施形態の計算機システムにおける図１０Ａに対応するブロックＩＤの構成情報の一例を示す図である。
【図１１】本実施形態の計算機システムにおけるマシン情報管理部が行う密度情報を入力としたブロック決定処理のフローチャートである。
【図１２】本実施形態の計算機システムにおける密度情報を入力としたデータブロック決定処理のイメージ図である。
【図１３】本実施形態の計算機システムにおけるユーザ操作画面の表示例を示す図である。
【図１４】本実施形態の計算機システムにおけるユーザ設定画面の表示例を示す図である。
【発明を実施するための形態】
【００１５】
図１は、本発明を適用する一実施形態である計算機システムの各計算機と各計算機が管理するデータレンジの関係とを示す図である。
例えば、計算機Ａ〜Ｅから構成されるシステムにおいて、計算機Ｂは、マスタデータレンジとして「４００〜７００」のデータを、レプリカデータレンジとして「１４０１〜１５００」、「１〜２００」のデータを管理していることを示している。各計算機にデータを分散させる方法は、Ｃｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇ法、Ｒａｎｇｅ法及びＬｉｓｔ法等の種々の方法が用いられる。
【００１６】
図２は、本発明を適用した一実施形態の処理の概要を簡単に説明した図である。  まず、Ｓ１０１で、全データレンジから各サーバのマスタデータレンジを決定する。マスタデータレンジは、各サーバのメモリ容量比に基づいて決定される。
次に、Ｓ１０２で、各サーバが保持するマスタデータレンジから、データレンジが最大であるデータレンジ（以下、「最大データレンジ」という。）を特定する。
さらに、Ｓ１０３で、最大データレンジに基づいて、各サーバが保持するレプリカデータレンジを決定する。本発明を適用した一実施形態では、データ位置あるいはデータ量を基準としてレプリカデータレンジを決定する。
【００１７】
図３は、本発明を適用した実施形態である計算機システムの全体構成を示す。
計算機システムは、複数のサーバ３０１、クライアント装置３０２及びネットワーク３０３から構成される。各サーバ３０１間及びサーバ３０１とクライアント装置３０２との間は、ネットワーク３０３を介して互いに接続される。
ネットワーク３０３は、ＬＡＮ、ＷＡＮ及びＳＡＮ等の有線及び無線の種々の構成が考えられる。本実施形態では、サーバ３０１及びクライアント装置３０２が通信できるものであればどのようなネットワークであってもよい。なお、ネットワーク３０３には、複数のネットワーク装置が含まれる。ネットワーク装置は、例えばスイッチあるいはゲートウェイ等が含まれる。
【００１８】
サーバ３０１は、プロセッサ３０４、主記憶装置３０５及び補助記憶装置３０６を備え、ＫＶＳを構成する計算機である。本実施形態では図示していないが、ネットワーク３０３と接続するためのネットワークインタフェースを備える。サーバ３０１は、クライアント装置３０２からの要求にしたがってデータの読出処理や書込処理を実行し、クライアントに処理結果を返す。なお、各サーバ３０１の構成は同一であるものとする。
【００１９】
プロセッサ３０４は、主記憶装置３０５に格納されるプログラムを実行する。プロセッサ３０４が、プログラムを実行することによって、サーバ３０１が備える機能を実現することができる。
【００２０】
主記憶装置３０５は、プロセッサ３０４が実行するプログラム及び当該プログラムの実行に必要な情報を格納する。
【００２１】
本実施形態の主記憶装置３０５には、データ管理部３０７、分散制御部３０８、データレンジ管理部３１０、構成情報保持部３１１、マシン情報管理部３１２及び統計情報管理部３１３を実現するためのプログラムが格納される。また、主記憶装置３０５には、構成情報３１４及びサーバ負荷情報３１５が保持される。
さらに、主記憶装置３０５上には、ＫＶＳを構成するデータベースであるデータストア３１６が格納される。データストア３１６には、キーと、バリューとを一組としたデータが格納される。
【００２２】
データ管理部３０７は、サーバ３０１が管理するデータに対する各種処理を制御する。データ管理部３０７は、クライアント装置３０２からの要求を受け付け、その要求に基づいて、データの読み出しや書き込み等の処理を制御する。
分散制御部３０８は、データ多重度、データのブロック数、メモリ閾値及びデータブロックの決定方法等、各種設定項目の変更を制御する。制御は、例えば図１４に示すユーザ設定画面により行う。
【００２３】
データレンジ管理部３１０は、各サーバが格納するマスタデータ及びレプリカデータの格納先を管理する。構成情報保持部３１１は、構成情報３１４を管理する。マシン情報管理部３１２は、レプリカデータのデータレンジ決定処理を実行する。統計情報管理部３１３は、各サーバ３０１の負荷に関する情報を取得し、取得された情報に基づいてサーバ負荷情報３１５を更新する。
【００２４】
クライアント装置３０２は、ネットワークを介してサーバに対し処理要求を送信する。なお、クライアント装置３０２には、管理端末３０９が接続され、管理端末３０９から処理要求が送信されることもある。
【００２５】
プロセッサ３１７は、主記憶装置３１８に格納されるプログラムを実行する。主記憶装置３１８には、ＣＰＵとプログラムとの協働により、データ管理部３０７、分散制御部３０８、データレンジ管理部３１０、構成情報管理部３１１、マシン情報管理部３１２、統計情報管理部３１３が構成される。以下、プログラムを主語に処理を説明する場合には、プロセッサ３１７によって、プログラムが実行されていることを示す。
【００２６】
図４は、計算機システムにおいてテーブルとして管理する構成情報３１４及びサーバ負荷情報３１５の一例を示す模式図である。構成情報３１４は、各サーバが管理するデータレンジに関する情報を格納する。各サーバは、図４Ａ及び図４Ｂに示す構成情報３１４を格納してもよいし、いずれか一方の構成情報３１４のみを格納するのでもよい。
【００２７】
図４Ａの構成情報３１４は、サーバＩＤ４０１、マスタデータレンジ４０２及びレプリカデータレンジ４０３を含む。
サーバＩＤ４０１は、サーバを一意に識別するための識別子を格納する。マスタデータレンジ４０２には、各サーバのマスタデータのデータレンジを示す値が格納される。レプリカデータレンジ４０３には、各サーバのレプリカデータのデータレンジを示す値が格納される。
【００２８】
図４Ｂの構成情報３１４は、複数のデータを組み合わせて一つのデータセット（以下、「ブロック」という。）としてデータを管理する場合に用いられる構成情報である。図４Ｂの構成情報３１４は、サーバＩＤ４１０、マスタデータのブロックＩＤ４１１、ブロックＩＤ４１１に対応するデータレンジ４１２及びレプリカデータのブロックＩＤ４１３を含む。
サーバＩＤ４１０、マスタデータ及びレプリカデータのデータレンジ４１２は、図４Ｂと同様である。ブロックＩＤ４１１及び４１３は、複数のデータを組み合わせて管理するための識別子である。例えば、ブロックＩＤ４１１が「１」のデータは、マスタデータレンジ４１２から「１〜１５０」のデータで構成されていることを示す。
【００２９】
図４Ｃのサーバ負荷情報３１５は、システムを構成するサーバの負荷情報の一例を示す図である。サーバ負荷情報３１５は、サーバＩＤ４２０、メモリサイズ４２３及びデータサイズ４２５を含む。その他、サーバのＣＰＵ使用率やネットワーク使用率等の情報を有してもよい。
サーバＩＤ４２０は、サーバを一意に識別するための識別子を格納する。メモリサイズ４２３は、各サーバが有するメモリ容量を示す。
データサイズ４２５は、各サーバが格納するデータ量を示す。
【００３０】
図５は、レプリカデータレンジ決定の全体処理を示すフローである。なお、マスタデータレンジは、各サーバのメモリ容量比に基づいて予め決定されているものとする。本実施形態には、データレンジ決定処理の方法として、データ基準のデータレンジ決定処理及びブロック基準のデータレンジ決定処理がある。
【００３１】
Ｓ５０１で、データレンジ管理部が、サーバの負荷情報を格納しているかを判定する。サーバの負荷情報を格納している場合（Ｓ５０１：Ｙｅｓ）、Ｓ５０３に進む。格納していない場合（Ｓ５０１：Ｎｏ）、Ｓ５０７に進む。サーバの負荷情報を格納しているか否かを判定することで、システム稼動前あるいは稼動中かを把握する。
Ｓ５０３で、データレンジ管理部が、各サーバで処理されるデータ量の見積もりが設定されているかを判定する。データ量の見積もりが設定されている場合（Ｓ５０３：Ｙｅｓ）、Ｓ５０７に進む。設定されていない場合（Ｓ５０３：Ｎｏ）、Ｓ５０５に進む。データ量の見積もりとは、システム内に格納されるデータ量の推定値をいう。
【００３２】
Ｓ５０５で、データレンジ管理部が、データ位置基準のデータレンジ決定処理を実行する。データレンジ基準のデータレンジ決定処理については、図６を用いて詳細に説明する。
Ｓ５０７で、データレンジ管理部が、ブロック決定処理を実行する。本実施形態では、ブロック決定処理として、分布情報を入力としたブロック決定処理あるいは密度情報を入力としたブロック決定処理を行う。ブロック決定処理については、図９及び図１１を用いて詳細に説明する。
【００３３】
Ｓ５０９で、データレンジ管理部が、ブロック基準のデータレンジ決定処理を実行する。ブロック基準のデータレンジ決定処理については、図７を用いて詳細に説明する。
Ｓ５１１で、データレンジ管理部が、システム内の全マシンの構成情報を共有する。
【００３４】
データ基準のデータレンジ決定処理は、所定のデータ位置に存在するデータ量が不確定な場合にもシステム最適化を図ることができるため、主にシステム稼動前等のサーバに格納されるデータ量が予測不能な場合に適している。ブロック基準のデータレンジ決定処理は、サーバ負荷情報３１５に応じてリアルタイムにシステムの最適化を図ることができるため、主にシステム稼動中でデータ量を見積もることができる場合に適している。
【００３５】
図６は、データ位置基準のデータレンジ決定処理を示す図である。図６Ａは、データ位置基準のデータレンジ決定処理（図５のＳ５０５）のフローを示す。
Ｓ６０１で、マシン情報管理部３１２が、各サーバのメモリ量の比率を算出する。メモリ量の比率とは、全サーバのメモリ容量のうち自サーバの占めるメモリ容量で示される。
Ｓ６０３で、マシン情報管理部３１２が、メモリ量の比率が１／多重度Ｎを超えているサーバが存在するか否かを判定する。多重度Ｎは、データの信頼性及び耐障害性を向上させるため、レプリカデータをシステム内にいくつ保持させるかを示す指標である。メモリ量の比率を１／多重度Ｎに制限することで、サーバ間のメモリ性能差が大きい場合でも、同一サーバで、マスタデータと、そのマスタのレプリカデータのデータレンジが重複しない多重化を実現することができる。
【００３６】
メモリ量の比率が１／多重度Ｎを超えているサーバが存在する場合（Ｓ６０３：Ｙｅｓ）、Ｓ６０５でメモリ量の比率が１／Ｎ以下になるようにメモリ量を補正する。メモリ量の補正は、マシン情報管理部３１２が、メモリ量の比率が１／多重度Ｎを超過したサーバの比率を１／多重度Ｎに変更し、不足するメモリ量分のデータを他のサーバに割り振る。存在しない場合（Ｓ６０３：Ｎｏ）、Ｓ６０６に進む。
【００３７】
Ｓ６０６で、データレンジ管理部３１２が、メモリ量の比率に応じて、各サーバのマスタデータレンジを決定する。
Ｓ６０７で、データレンジ管理部３１２が、構成情報３１４のマスタデータレンジ６１２を参照し、全サーバの中から最大データレンジ及び最大データレンジを保持するサーバＩＤを特定する。
Ｓ６０９で、データレンジ管理部が、最大データレンジをもつサーバＩＤの次のサーバＩＤのサーバに、レプリカデータレンジの先頭のデータとして最大データレンジの先頭のデータを割り当てる。
【００３８】
例えば、図６Ｂに示すように、サーバＡ〜Ｅが格納するマスタデータのデータレンジのうち、マスタデータレンジ６１２からマスタデータレンジ「７０１〜１２００」のデータ幅「５００」を最大データレンジとして特定する。また、最大データレンジをもつサーバＩＤ６１０を「Ｃ」として特定する。次いで、最大データレンジをもつサーバＩＤ「Ｃ」の次のサーバＩＤとなるサーバＩＤ「Ｄ」に、最大データレンジの先頭のデータであるマスタデータ「７０１」をレプリカデータレンジの先頭のデータに割り当てる。なお、本実施形態では、サーバＩＤを降順に管理しているが、昇順に管理するのでも良い。
【００３９】
図７は、ブロック基準のデータレンジ決定処理のフローを示す。
Ｓ７０１で、マシン情報管理部３１２が、各サーバのメモリ量の比率を算出する。メモリ量の比率とは、全サーバのメモリ容量のうち自サーバの占めるメモリ容量で示される。
Ｓ７０３で、マシン情報管理部３１２が、メモリ量の比率が１／多重度Ｎを超えているサーバが存在するか否かを判定する。メモリ量の比率が１／多重度Ｎを超えているサーバが存在する場合（Ｓ７０３：Ｙｅｓ）、Ｓ７０５で、マシン情報管理部３１２が、メモリ量の比率が１／多重度Ｎ以下になるようにメモリ量を補正する。メモリ量の補正は、データ位置基準のデータレンジ決定処理と同様に、メモリ量の比率が１／多重度Ｎを超過したサーバの比率を変更するようにデータを割り振ることで実現する。存在しない場合（Ｓ７０３：Ｎｏ）、Ｓ７０７に進む。
【００４０】
Ｓ７０７で、データレンジ管理部が、メモリ量の比率に応じ、各サーバにブロックを割り当て、マスタデータレンジを決定する。なお、ブロック決定処理については、図９（分布情報を入力としたブロック決定方法）及び図１１（密度情報を入力としたブロック決定方法）を用いて詳細に説明する。
Ｓ７０９で、データレンジ管理部３１２が、システム内の全サーバの中からデータ容量が最大であるサーバを特定し、当該サーバが保持するブロック数（以下、「最大ブロック数」という。）を特定する。
Ｓ７１１で、データレンジ管理部３１２が、各サーバのマスタデータレンジを最大ブロック数分ずらす。
Ｓ７１３で、データレンジ管理部３１２が、割り当てたブロックのデータレンジを算出する。データレンジは、割り当てられた先頭のブロックの始点をデータレンジの開始点とし、後尾のブロックの終点をデータレンジの終了点とする。
【００４１】
図８は、ブロック基準のデータレンジ決定処理を行ったデータ格納先と格納するデータの関係を示す。図８Ａは、ブロック基準のデータレンジ決定処理により、レプリカデータレンジを決定した図を示す。本実施形態では、全データレンジから同一のデータ量となるブロックを決定し、メモリ量の比率に応じて各サーバに複数のブロックを割り当て、マスタデータレンジを決定する（図７のＳ７０７）。
【００４２】
例えば、図８ＡのサーバＣには、ブロックＩＤ８〜１２のデータがマスタデータとして格納されていることを例示している。そして、全サーバの中から、データ容量が最大であるサーバＣを特定し、サーバＣが保持する最大ブロック数を「５」と特定する（図７のＳ７０９）。次いで、各サーバのマスタデータレンジから、最大ブロック数である「５」ブロック分、レプリカデータレンジのブロック数をずらす。サーバＣには、ブロックＩＤ３〜７のデータがレプリカデータとして格納される。同様の手順で、レプリカデータ２のデータレンジを決定し多重化を実現する。図８Ｂは、図８Ａに対応する各サーバが保有するマスタデータ及びレプリカデータの構成情報３１４を示す。  以降では、ブロック決定方法について説明する。
図９は、分布情報を入力としたデータブロック決定処理を示すフローである。
Ｓ９０１で、マシン情報管理部３１２が、サーバ負荷情報３１５からシステムのデータ量の累積値を算出する。
Ｓ９０３で、マシン情報管理部３１２が、算出したデータ量の累積値から、ユーザ指定のブロック数Ｘでデータ量を等分するデータ位置を算出する。なお、データのブロック数は、ユーザが任意に設定できる。
Ｓ９０５で、マシン情報管理部３１２が、ブロック毎のデータレンジを決定する。
【００４３】
図１０は、分布情報を入力とするブロック決定処理のイメージ図である。
図１０Ａに示すように、データ位置とデータ量の関係を棒グラフで表現し、システム内のデータ量の累積値を線グラフで表現する。図１０Ａはデータ量が同一のデータブロックを「１５」生成するため、データの累積値を１５等分しブロックを決定した様子を描いている。
図１０Ｂは、図１０Ａに示すブロックとデータレンジとの対応を示す表である。
このように、分布情報を入力とするブロック決定処理では、システム内のデータ量の累積値からブロックを決定するため、システム内の実データ量が把握できる場合や、データ量の見積もりが可能な場合に特に有効なブロック決定方法である。
【００４４】
図１１は、密度情報を入力としたブロック決定処理のフローを示す。図１２は、密度情報を入力としたデータブロック決定処理のイメージを図示したものである。
Ｓ１１０１で、マシン情報管理部が、全サーバのデータ密度ｐを算出する。データ密度ｐは、「各サーバのマスタデータ量／各サーバのマスタデータレンジ」から算出する。図１２のサーバＡの密度ｐは、１ＧＢ／４００となる。
Ｓ１１０３で、マシン情報管理部３１２が、システム内に存在するサーバの全データ量の合計値を算出する。図１２に示すシステムでは、サーバＡ〜Ｅが格納する全データ量は、いま１ＧＢ＋１ＧＢ＋１．５ＧＢ＋０．５ＧＢ＋０．５ＧＢ＝４．５ＧＢと求められる。
【００４５】
Ｓ１１０３で、マシン情報管理部３１２が、１ブロックあたりのデータ量を算出する。データのブロック数は、ユーザが任意に設定できる。図１２のシステムにおいてデータを「１５」のブロックに分割するとき、全体のデータ量４．５ＧＢ／１５ブロックより１区画あたりのデータ量は０．３ＧＢと求められる。
Ｓ１１０５で、マシン情報管理部３１２が、ブロック毎のデータレンジを決定する。データレンジは、各サーバのデータ密度ｐ及び１ブロックあたりのデータ量とから算出する。例えば、サーバＡのデータ密度ｐが１ＧＢ／４００であり、１ブロックあたりのデータ量を０．３ＧＢとするとき、データレンジは「０．３ＧＢ／（１ＧＢ／４００）＝１２０」と算出される。
Ｓ１１０７で、マシン情報管理部３１２が、各サーバのデータレンジ幅を決定する。
データ密度情報を用いたデータブロック決定処理は、データがサーバ内に均一に配置されかつ１データあたりのデータ量がほぼ一定であるような場合、特に適する。
【００４６】
図１３は、本実施形態のユーザ操作画面の表示例を示す説明図である。ユーザ操作画面は、システム内のサーバ負荷情報を示すテーブル及び各サーバがマスタデータあるいはレプリカデータとして管理するデータを示す模式図を含む。
サーバ負荷状況を示すテーブルには、システム内の各サーバのメモリ容量及びデータ量が含まれる。
データ模式図は、データ位置基準でレプリカデータレンジを決定した場合には、（Ａ）のようにデータレンジが図示される。また、データブロック基準でレプリカデータレンジを決定した場合には、（Ｂ）のようにデータブロック単位で各サーバのマスタデータ及びレプリカデータの所在が示される。
【００４７】
図１４は、本実施形態のユーザ設定画面の表示例を示す説明図である。ユーザ設定画面は、データ多重度、データのブロック数、メモリ閾値、データブロックの決定方法及び分割データ数を含む。
データ多重度には、システム内でデータを保持させる多重度を設定する。データのブロック数は、ブロックを基準としてレプリカデータのデータレンジ決定処理をするときのブロック数を指定するものである。
メモリ閾値は、システム稼動中にサーバのメモリ負荷に応じてデータのリバランスを行う指標になる。
本実施形態では、少なくともデータの分布情報を入力としたブロック決定方法あるいはデータの密度情報を入力としたブロック決定方法をブロック決定方法として選択することができる。
【００４８】
以上説明したように、本発明の一実施形態によれば、マスタデータレンジを基準として、サーバの負荷状況に応じてレプリカデータレンジを決定することができる。そのため、クラスタが性能差のあるサーバから構成されていても、性能の低いサーバがシステムのボトルネックになることを防ぐことができる。
また、マスタデータレンジとレプリカデータレンジとが重複しない多重化を実現できるため、システムの信頼性を確保することができる。
さらに、システムの分布情報や密度情報を入力としてデータのブロックを決定することで、サーバの負荷状況に応じてレプリカデータレンジを決定することができるため、効率的にメモリを使用することができる。
【００４９】
なお、本実施形態で例示した種々のソフトウェアは、電磁的、電子的及び光学式等の種々の（非一時的な）記録媒体に格納可能であり、インターネット等の通信網を通じて、コンピュータにダウンロード可能である。
さらに、本実施形態では、ソフトウェアによる制御を用いた例について説明したが、その一部をハードウェアによって実現することも可能である。
【００５０】
以上、図面を用いて計算機システムを詳細に説明したが、本発明は上述の種々の例に限定されるものではなく、その趣旨を逸脱しない範囲で、種々の変更が可能であることはいうまでもない。
【符号の説明】
【００５１】
３０１  サーバ
３０２  クライアント装置
３０３  ネットワーク
３０４、３１７  プロセッサ
３０５、３１８  主記憶
３０６、３１９  補助記憶装置
３０７  データ管理部
３０８  分散制御部
３０９  管理端末
３１０  データレンジ管理部
３１１  構成情報保持部
３１２  マシン情報管理部
３１３  統計情報管理部
３１４  構成情報
３１５  サーバ負荷情報
３１６  データストア
【図１】
0005853109.tif 000002
【図２】
0005853109.tif 000003
【図３】
0005853109.tif 000004
【図４Ａ】
0005853109.tif 000005
【図４Ｂ】
0005853109.tif 000006
【図４Ｃ】
0005853109.tif 000007
【図５】
0005853109.tif 000008
【図６Ａ】
0005853109.tif 000009
【図６Ｂ】
0005853109.tif 000010
【図７】
0005853109.tif 000011
【図８Ａ】
0005853109.tif 000012
【図８Ｂ】
0005853109.tif 000013
【図９】
0005853109.tif 000014
【図１０Ａ】
0005853109.tif 000015
【図１０Ｂ】
0005853109.tif 000016
【図１１】
0005853109.tif 000017
【図１２】
0005853109.tif 000018
【図１３】
0005853109.tif 000019
【図１４】
0005853109.tif 000020