(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-05-15
(45)【発行日】2023-05-23
(54)【発明の名称】並列コンピュータシステム
(51)【国際特許分類】
G06F 16/182 20190101AFI20230516BHJP
G06F 13/14 20060101ALI20230516BHJP
G06F 13/10 20060101ALI20230516BHJP
【FI】
G06F16/182
G06F13/14 310H
G06F13/10 340A
G06F13/14 330A
(21)【出願番号】P 2019055208
(22)【出願日】2019-03-22
【審査請求日】2021-12-08
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】野崎 広弥
(72)【発明者】
【氏名】名口 芳典
【審査官】三橋 竜太郎
(56)【参考文献】
【文献】特開2013-156765(JP,A)
【文献】特開2008-158733(JP,A)
【文献】特開2008-158711(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
G06F 13/10-13/14
(57)【特許請求の範囲】
【請求項1】
複数のノード
と、
複数のバッファストレージ
と、
前記複数のノード毎に前記複数のバッファストレージのうち特定のバッファストレージを対応づけたバッファストレージ対応情報を記憶した分散ファイルストレージ
と、
を有し、
前記複数のノードの各々は、前記分散ファイルストレージに記憶された
第1のデータを
指定したアクセス通知を前記分散ファイルストレージに発行し、
前記分散ファイルストレージは、前記
複数のノードのうち第1のノードから前記アクセス通知を受信すると、前記バッファストレージ対応情報に基づいて前記第1のノードに対応づけられた第1のバッファストレージを特定し、前記第1のバッファストレージに前記第1のデータを複製した第2のデータを記憶させ、前記第1のバッファストレージに保持された前記第2のデータへのアクセスを許可するアクセス許可を前記第1のノードに送信し、
前記第1のノードは、前記アクセス許可を受信すると、前記第1のバッファストレージに保持された前記第2のデータにアクセスすることを特徴とする並列コンピュータシステム。
【請求項2】
前記バッファストレージ対応情報は、前記複数のノード毎の前記複数のバッファストレージの各々に対するアクセス効率に基づいて、前記複数のノード毎に前記複数のバッファストレージのうち特定のバッファストレージを対応づけたバッファストレージ対応情報であることを特徴とする請求項1に記載の並列コンピュータシステム。
【請求項3】
前記第1のノードは、受信した前記アクセス許可を記憶し、前記第1のデータにアクセスする場合、記憶した前記アクセス許可の有無を判定し、前記アクセス許可がある場合、前記第1のバッファストレージに保持された前記第2のデータにアクセスし、前記アクセス許可がない場合、前記アクセス通知を前記分散ファイルストレージに発行することを特徴とする請求項2に記載の並列コンピュータシステム。
【請求項4】
前記分散ファイルストレージは、複製元のデータを識別するデータ識別情報と、複製後のデータを保持するバッファストレージを識別するストレージ識別情報との組み合わせを含む複製情報を記憶し、
前記アクセス許可は、前記第1のデータと前記第1のバッファストレージとの組み合わせを含む第1の複製情報であることを特徴とする請求項1ないし請求項3のいずれか1項に記載の並列コンピュータシステム。
【請求項5】
前記分散ファイルストレージは、前記第1のノードが前記第1のデータを参照することを示すアクセス通知を発行した後に、前記第1のデータを参照することを示すアクセス通知が前記第1のバッファストレージに対応付けられた第2のノードから発行され、前記複製情報に基づいて前記第1のバッファストレージに前記第2のデータが保持されていると判断すると、前記第1の複製情報を前記第2のノードに送信し、
前記第2のノードは、前記第1の複製情報を受信すると、前記第1のバッファストレージに保持された前記第2のデータを参照することを特徴とする請求項4に記載の並列コンピュータシステム。
【請求項6】
前記分散ファイルストレージは、前記第1のノードが前記第1のデータを参照することを示すアクセス通知を発行した後に、前記第1のデータを参照することを示すアクセス通知が第2のバッファストレージに対応付けられた第3のノードから発行され、前記複製情報に基づいて前記第2のバッファストレージに前記第2のデータが保持されていないと判断すると、前記第2のバッファストレージに前記第2のデータを記憶させ、前記第1のデータと前記第2のバッファストレージとの組み合わせを含む第2の複製情報を前記第3のノードに送信し、
前記第3のノードは、前記第2の複製情報を受信すると、前記第2のバッファストレージに保持された前記第2のデータを参照することを特徴とする請求項5に記載の並列コンピュータシステム。
【請求項7】
前記複製情報には前記アクセス通知の発行元ノードを識別するノード識別情報が含まれ、
前記第1の複製情報は前記第1のノードと前記第1のデータと前記第1のバッファストレージとの組み合わせを含む第1の複製情報であって、
前記分散ファイルストレージは、前記第1のノードが前記第1のデータを更新することを示すアクセス通知を発行した後に、前記第1のデータを更新することを示すアクセス通知が第2のノードから発行され、前記第1の複製情報に基づいて前記第1のノードが前記第1のデータに対するアクセス許可を保持していると判断すると、前記第1のノードに対して、前記第1のバッファストレージが保持する前記第2のデータを更新させる指示と、前記第1のバッファストレージが保持する前記第2のデータへのアクセスの禁止とを含むキャンセル要求を通知し、前記第1のノードから前記キャンセル要求に対する処理が完了した旨の返答を受信した後、前記第1の複製情報を消去し、前記バッファストレージ対応情報に基づいて前記第2のノードが前記第1のバッファストレージに対応づけられていると判断した場合、前記第2のノードと前記第1のデータと前記第1のバッファストレージとの組み合わせを含む第2の複製情報を前記第2のノードに通知し、
前記第2のノードは、前記第2の複製情報を受信すると、前記第1のバッファストレージに保持された前記第2のデータを更新することを特徴とする請求項4に記載の並列コンピュータシステム。
【請求項8】
前記分散ファイルストレージは、前記バッファストレージ対応情報に基づいて前記第2のノードが第2のバッファストレージに対応づけられていると判断した場合、前記第1のバッファストレージに保持された前記第2のデータを前記第2のバッファストレージに記憶させ、前記第2のノードと前記第1のデータと前記第2のバッファストレージとの組み合わせを含む第3の複製情報を前記第2のノードに通知し、
前記第2のノードは、前記第3の複製情報を受信すると、前記第2のバッファストレージに保持された前記第2のデータを更新することを特徴とする請求項7に記載の並列コンピュータシステム。
【請求項9】
前記複製情報は、前記
複数のバッファストレージに
保持された複製後のデータが更新されたことを示す更新情報を含むことを特徴とする
請求項7または請求項8に記載の並列コンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、並列コンピュータシステムに関する。
【背景技術】
【0002】
マスターサーバの代理となる複数の複製サーバを含むサーバシステムにおいて、複製サーバの各々は、他の複製サーバからデータの更新の通知に基づいて更新処理を実行することで、複製サーバ間での一貫性を維持する。この種のサーバシステムでは、各複製サーバは、クライアント装置からのデータのロック要求に基づき、ロック制御を行うとともに、他の複製サーバにロック要求を行う(例えば、特許文献1参照)。
【0003】
複数のクライアントとディスク装置を含むサーバとの間に配置されるディスクキャッシュを含むゲートウェイ計算機は、クライアントからの読み込み要求に含まれるブロック情報が有効でない場合のみ、読み込み要求をサーバに発行する。これにより、分散ファイルシステムにおけるネットワーク間のトラフィックが低減され、ファイルアクセスの高速化を図られる(例えば、特許文献2参照)。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2001-101062号公報
【文献】特開平4-313126号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
サーバ内のディスク装置の負荷を減らし、クライアントによるデータのアクセスを高速にするために、ディスク装置よりも高速な複数のバッファストレージを、複数のクライアントを含むネットワーク上に配置することが考えられる。しかし、複数のクライアントによるアクセスが特定のバッファストレージに集中すると、バッファストレージの高速性が損なわれてしまう。また、クライアントと、クライアントがアクセスするバッファストレージとがネットワーク上で離れているほど、通信による負荷がシステム全体にかかりやすく、システムの処理性能が低下するおそれがある。
【0006】
1つの側面では、本発明は、他のバッファストレージより高速にアクセス可能なバッファストレージをノード毎に特定し、ノードにアクセスさせることで、並列コンピュータシステムの処理性能を向上する。
【課題を解決するための手段】
【0007】
一つの観点によれば、並列コンピュータシステムは、複数のノードと、複数のバッファストレージと、前記複数のノード毎に前記複数のバッファストレージのうち特定のバッファストレージを対応づけたバッファストレージ対応情報を記憶した分散ファイルストレージと、を有し、前記複数のノードの各々は、前記分散ファイルストレージに記憶された第1のデータを指定したアクセス通知を前記分散ファイルストレージに発行し、前記分散ファイルストレージは、前記複数のノードのうち第1のノードから前記アクセス通知を受信すると、前記バッファストレージ対応情報に基づいて前記第1のノードに対応づけられた第1のバッファストレージを特定し、前記第1のバッファストレージに前記第1のデータを複製した第2のデータを記憶させ、前記第1のバッファストレージに保持された前記第2のデータへのアクセスを許可するアクセス許可を前記第1のノードに送信し、前記第1のノードは、前記アクセス許可を受信すると、前記第1のバッファストレージに保持された前記第2のデータにアクセスすることを特徴とする。
【発明の効果】
【0008】
1つの側面では、本発明は、他のバッファストレージより高速にアクセス可能なバッファストレージをノード毎に特定し、ノードにアクセスさせることで、並列コンピュータシステムの処理性能を向上することができる。
【図面の簡単な説明】
【0009】
【
図1】一実施形態における並列コンピュータシステムの一例を示す図である。
【
図2】
図1のノードおよび分散ファイルストレージが保持するバッファストレージ対応表の一例を示す図である。
【
図3】
図1の並列コンピュータシステムの動作の一例を示す図である。
【
図4】
図1の並列コンピュータシステムの動作の別の例を示す図である。
【
図5】
図4のS300の動作とS300に対応するノードの動作との一例を示す図である。
【
図6】別の実施形態における並列コンピュータシステムの一例を示す図である。
【
図7】分散ファイルストレージに保持されるデータと、分散ロックによりバッファストレージに持ち出されたデータとの関係を示すデータ構造の一例を示す図である。
【
図8】クライアントがターゲットストレージに記憶されたデータを参照するために分散ロックを獲得する動作の一例を示す図である。
【
図12】クライアントがターゲットストレージに記憶されたデータを更新するために分散ロックを獲得する動作の一例を示す図である。
【
図14】クライアントがターゲットストレージに記憶されたデータを更新するために分散ロックを獲得する動作の別の例を示す図である。
【
図17】別の実施形態における並列コンピュータシステムの一例を示す図である。
【発明を実施するための形態】
【0010】
以下、図面を用いて実施形態が説明される。
【0011】
図1は、一実施形態における並列コンピュータシステムの一例を示す。
図1に示す並列コンピュータシステム100は、ネットワーク200上に配置された複数のノード10(10a、10b、10c)および複数のバッファストレージ20(20a、20b)を有する。また、並列コンピュータシステム100は、ネットワーク200に接続された複数の分散ファイルストレージ30(30a、30b)を有する。
【0012】
なお、ネットワーク200上に配置されるノード10の数およびバッファストレージ20の数は、それぞれ複数個であれば
図1に示す例に限定されない。ネットワーク200に接続される分散ファイルストレージ30の数は、
図1に示す例に限定されず、3つ以上でもよく、1つでもよい。また、並列コンピュータシステム100に構築されるネットワーク200は、
図6に示すツリー構造の形態に限定されず、例えば、メッシュネットワーク等の他のネットワークでもよく、ネットワークの次元は、3次元以上でもよい。
【0013】
各ノード10は、データを処理する計算ノードであり、バッファストレージ対応表STBLを有する。ネットワーク200上に配置された複数のノード10は、計算を並列に実行する並列計算機として動作する。各分散ファイルストレージ30は、ノードで使用するデータを保持するターゲットストレージ32(32a、32b)と、バッファストレージ対応表STBLとを有する。各ノード10が有するバッファストレージ対応表STBLと、各分散ファイルストレージ30が有するバッファストレージ対応表STBLとは、互いに同じ内容である。
【0014】
バッファストレージ対応表STBLには、クライアントCL毎に、どのバッファストレージ20が近いかを示す情報が格納される。換言すれば、バッファストレージ対応表STBLは、ノード10毎に各バッファストレージ20のアクセス効率を判定するための情報を含む。ここで、”近い”とは、他のバッファストレージ20に比べて、アクセスレイテンシが小さいことを示し、アクセス効率が高いことを示す。バッファストレージ対応表STBLの例は、
図2に示される。
【0015】
特に限定されないが、
図1に示す例では、ネットワーク200における
図1の上側の経路にノード10aおよびバッファストレージ20aが接続される。ネットワーク200における
図1の下側の経路にノード10b、10cおよびバッファストレージ20bが接続される。以下では、ノード10は、クライアントCL(CL1、CL2、CL3)とも称され、バッファストレージ20は、バッファストレージCD(CD1、CD2)とも称される。符号CLは、クライアント名(クライアント識別子)としても使用され、符号CDは、バッファストレージ名(デバイス識別子)としても使用される。
【0016】
図1に示す並列コンピュータシステム100では、各分散ファイルストレージ30は、クライアントCLが発行するアクセス通知に基づいて、アクセス対象のデータをアクセス通知元のクライアントCLに近いバッファストレージ20に複製する。アクセス通知は、データの参照または更新する各クライアントCLにより、データがアクセスされる前に発行される。バッファストレージ20が、アクセス通知元のクライアントCLに近いか遠いかは、バッファストレージ対応表STBLに基づいて判定される。アクセス通知元のクライアントCLは、複製先のバッファストレージ20にアクセスすることで、分散ファイルストレージ30にアクセスするよりも、高速にデータをアクセスできる。さらに、クライアントCLは、他のバッファストレージ20に比べて近いバッファストレージ20にアクセスするため、アクセス効率をさらに向上することができる。
【0017】
図2は、
図1のノード10および分散ファイルストレージ30が保持するバッファストレージ対応表STBLの一例を示す。バッファストレージ対応表STBLは、クライアントCLを識別するクライアント名と、バッファストレージ20を識別するバッファストレージ名とが格納される複数のエントリを有する。そして、クライアント名毎にクライアントCLから近い順にバッファストレージ名が格納される。バッファストレージ対応表STBLにおいて、クライアント名に対応して格納される複数のバッファストレージ名は、上側のエントリほどクライアントCLに近いことを示す。
【0018】
バッファストレージ20がクライアントCLに近いか遠いかは、例えば、クライアントCLからバッファストレージ20までのホップ数または通信距離により判断される。上述したように、クライアントCLに近いと判断されたバッファストレージ20ほど、アクセスレイテンシが小さく、アクセス効率が高い。バッファストレージ対応表STBLは、各クライアントCL内のRAM(Random Access Memory)等のメモリ領域および各分散ファイルストレージ30内のRAM等のメモリ領域に予め格納される。なお、バッファストレージ対応表STBLは、並列コンピュータシステム100を管理する管理サーバ等により、ネットワーク200の構築時またはネットワーク200の更新時に作成される。
【0019】
図2に示すバッファストレージ対応表STBLでは、クライアントCL1に最も近いバッファストレージ20は、バッファストレージCD1であり、クライアントCL1に次に近いバッファストレージ20は、バッファストレージCD2である。クライアントCL2に最も近いバッファストレージ20は、バッファストレージCD2であり、クライアントCL2に次に近いバッファストレージ20は、バッファストレージCD1である。クライアントCL3に最も近いバッファストレージ20は、バッファストレージCD2であり、クライアントCL3に次に近いバッファストレージ20は、バッファストレージCD1である。
【0020】
各分散ファイルストレージ30は、バッファストレージ対応表STBLを参照することで、各クライアントに最も近いバッファストレージ20を認識することができ、認識したバッファストレージ20にデータを複製することができる。また、各クライアントCLは、バッファストレージ対応表STBLを参照することで、自ノードに最も近いバッファストレージ20であって、分散ファイルストレージ30によりデータが複製されたバッファストレージ20を認識することができる。
【0021】
これにより、全てのクライアントCLは、分散ファイルストレージ30に対するアクセスを行うことなく、自ノードに最も近いバッファストレージ20にアクセスし、データ処理等を実行することができる。この結果、アクセスレイテンシを最小限にでき、並列コンピュータシステム100の処理性能を向上することができる。また、最も近いバッファストレージ20にアクセスすることで、ネットワーク200の通信負荷を分散することができ、ネットワーク200のトラフィック量の増大を抑制することができる。これにより、例えば、輻輳の発生を抑止することでき、並列コンピュータシステム100の処理性能をさらに向上することができる。
【0022】
なお、バッファストレージ対応表STBLは、
図2の形式に限定されない。例えば、バッファストレージ対応表STBLの各エントリに、アクセス効率の順序をノード10毎に示す領域を設け、バッファストレージ名は、アクセス効率と無関係にエントリに設定されてもよい。
【0023】
図3は、
図1の並列コンピュータシステム100の動作の一例を示す図である。すなわち、
図3は、並列コンピュータシステム100の制御方法の一例、ノードの制御方法の一例および分散ファイルストレージの制御方法の一例を示す。
【0024】
各ノード10は、分散ファイルストレージ30内の所定のデータを参照する場合、ステップS100において、アクセス対象のデータを指定して分散ロック要求(PR)を分散ファイルストレージ30に発行し、処理をステップS110に移行する。ここで、分散ロック要求の符号PRは、対象のデータのリードのみの要求(プロテクトリード)を示す。なお、並列コンピュータシステム100が複数の分散ファイルストレージ30を有する場合、分散ロック要求(PR)は、アクセス対象のデータを保持する分散ファイルストレージ30に発行される。分散ロック要求は、データのアクセスを分散ファイルストレージ30に通知するアクセス通知の一例である。
【0025】
分散ファイルストレージ30は、ステップS200において、分散ロック要求の受信を待ち、分散ロック要求を受信した場合、処理をステップS210に移行する。なお、分散ファイルストレージ30は、ステップS200による待ち動作を実行しながら、他の処理を実行可能である。
【0026】
ステップS210において、分散ファイルストレージ30は、現在の分散ロックの設定状況に基づいて、分散ロック要求を発行したノード10に分散ロックを獲得させるか否かを判定する。分散ファイルストレージ30は、分散ロックを獲得させる場合、処理をステップS220に移行し、分散ロックを獲得させない場合、処理をステップS250に移行する。
【0027】
ステップS220において、分散ファイルストレージ30は、バッファストレージ対応表STBLを使用して、アクセス対象のデータに対応して、分散ロックの状態とデータの複製先等とを管理するための複製情報を作成する。例えば、複製情報は、複製するデータを識別するデータ識別情報と、分散ロック要求の発行元のノード10を識別するノード識別情報と、データを複製するバッファストレージ20を識別するストレージ識別情報とを含む。さらに、複製情報は、バッファストレージ20に複製したデータが更新されたことを示す更新フラグを含んでもよい。更新フラグは、更新情報の一例である。
【0028】
分散ファイルストレージ30は、バッファストレージ対応表STBLにおいて、分散ロック要求の発行元のノード10に対応するエントリを参照し、発行元に最も近いバッファストレージ20を識別するストレージ識別情報を複製情報に含める。このように、分散ファイルストレージ30は、バッファストレージ対応表STBLを参照することで、アクセス要求元のクライアントCLに最も近いバッファストレージ20を、データの複製先として選択することができる。
【0029】
なお、データ参照の分散ロックは、複数のノード10に対して許可可能であるため、分散ファイルストレージ30は、複数の複製情報を保持する場合がある。例えば、分散ファイルストレージ30は、複製情報を連結リスト形式で保持することで、複数の複製情報を紐付けて保持することができる。
【0030】
次に、ステップS230において、分散ファイルストレージ30は、分散ロック要求を発行したノード10に最も近い(最もアクセス効率の高い)バッファストレージ20が、アクセス対象のデータを保持しているか否かを判定する。例えば、アクセス対象のデータを保持しているか否かは、連結リスト形式で保持された複数の複製情報内のデータ識別情報とストレージ識別情報とに基づいて判定することができる。
【0031】
分散ファイルストレージ30は、アクセス対象のデータを保持している場合、処理をステップS250に移行し、アクセス対象のデータを保持していない場合、処理をステップS240に移行する。ステップS230の処理により、アクセス対象のデータが、分散ロック要求を発行したノード10に最も近いバッファストレージ20に既に保持されている場合、データがバッファストレージ20に再度複製されることを抑止することができる。これにより、ネットワーク200のトラフィック量の無駄な増大を抑止することができ、並列コンピュータシステム100の処理性能を向上することができる。
【0032】
ステップS240において、分散ファイルストレージ30は、アクセス対象のデータを、分散ロック要求を発行したノード10に最も近いバッファストレージ20に複製し、処理をステップS250に移行する。データを複製するバッファストレージ20は、複製情報に含まれるストレージ識別情報により示される。ステップS230、S240の処理により、バッファストレージ20にアクセス対象のデータが保持されていない場合、アクセス対象のデータを、アクセス元のノード10に最も近いバッファストレージ20に複製することができる。また、アクセス対象のデータを保持しているバッファストレージ20が、アクセス元のノード10から離れている場合にも、アクセス対象のデータを、アクセス元のノード10に最も近いバッファストレージ20にデータを複製することができる。これにより、全てのノード10は、最小限のアクセスレイテンシでデータを参照することができる。
【0033】
ステップS250において、分散ファイルストレージ30は、分散ロック要求の発行元のノード10に、分散ロック要求に対する返答を発行し、処理を終了する。例えば、分散ロック要求に対する返答には、ステップS220で作成した複製情報を含む。
【0034】
ノード10の動作に戻り、分散ロック要求を発行したノード10は、ステップS110において、分散ファイルストレージ30からの返答を待ち、分散ロック要求に対する返答を受信した場合、処理をステップS120に移行する。
【0035】
ステップS120において、ノード10は、分散ファイルストレージ30からの返答がアクセスの許可(分散ロックの獲得)を示す場合、処理をステップS130に移行する。例えば、アクセスの許可は、返答に複製情報が含まれることで判定されてもよい。アクセスの許可を示す返答は、バッファストレージ20へのアクセスを促す通知である。ノード10は、返答がアクセスの不許可を示す場合、分散ロックが獲得できなかったため、処理を終了する。例えば、アクセスの不許可は、返答に複製情報が含まれないことで判定されてもよい。
【0036】
ステップS130において、ノード10は、自ノードで保持するバッファストレージ対応表STBLを参照し、アクセスするバッファストレージ20を特定する。なお、ノード10は、分散ロック要求に対する返答に含まれる複製情報(ストレージ識別情報)に基づいて、アクセスするバッファストレージ20を特定してもよい。あるいは、ノード10は、バッファストレージ対応表STBLと、分散ロック要求に対する返答に含まれる複製情報(ストレージ識別情報)との両方に基づいて、アクセスするバッファストレージ20を特定してもよい。
【0037】
次に、ステップS140において、ノード10は、ステップS130で特定したバッファストレージ20からデータをリードし処理を終了する。すなわち、ノード10は、分散ファイルストレージ30のターゲットストレージに保持されたデータを参照することなく、複数のバッファストレージ20のうち、最も近いバッファストレージ20に複製されたデータを参照することができる。なお、ノード10は、リードしたデータを使用して、データ処理等を実行する。
【0038】
図4は、
図1の並列コンピュータシステム100の動作の別の例を示す図である。すなわち、
図4は、並列コンピュータシステム100の制御方法の一例、ノードの制御方法の一例および分散ファイルストレージの制御方法の一例を示す。
図3と同様の動作については、同じステップ番号を付し、詳細な説明は省略する。
【0039】
各ノード10は、分散ファイルストレージ30内の所定のデータを更新する場合、ステップS102において、分散ロック要求(PW)を分散ファイルストレージ30に発行し、処理をステップS110に移行する。なお、並列コンピュータシステム100が複数の分散ファイルストレージ30を有する場合、分散ロック要求(PW)は、アクセス対象のデータを保持する分散ファイルストレージ30に発行される。分散ロック要求の符号PWは、対象のデータのライトの要求(プロテクトライト)を示す。
【0040】
分散ファイルストレージ30は、ステップS200において、
図3と同様に、分散ロック要求の受信を待つ。分散ロック要求を受信した場合、ステップS210において、
図3と同様に、分散ファイルストレージ30は、分散ロックを獲得させるか否かを判定する。分散ファイルストレージ30は、分散ロックを獲得させる場合、処理をステップS300に移行し、分散ロックを獲得させない場合、処理をステップS250に移行する。
【0041】
ステップS300において、分散ファイルストレージ30は、新たに付与する分散ロックが既に付与した分散ロックと衝突する場合に、衝突を回避する処理を実行し、処理をステップS220に移行する。ステップS300の例は、
図5で説明する。
【0042】
ステップS220において、分散ファイルストレージ30は、
図3と同様に、バッファストレージ対応表STBLを使用して、アクセス対象のデータに対応して、分散ロックの状態とデータの複製先等とを管理するための複製情報を作成する。
【0043】
次に、ステップS232において、分散ファイルストレージ30は、分散ロック要求を発行したノード10に最も近いバッファストレージ20にアクセス対象のデータを複製する必要があるか否かを判定する。分散ファイルストレージ30は、アクセス対象のデータを複製が必要な場合、処理をステップS240に移行し、アクセス対象のデータの複製が必要ない場合、処理をステップS240に移行する。アクセス対象のデータの複製は、バッファストレージ20がアクセス対象のデータを記憶していない場合だけでなく、バッファストレージ20が保持するデータを最新データに更新する場合に実行される。
【0044】
ステップS240において、分散ファイルストレージ30は、
図3と同様に、アクセス対象のデータを、分散ロック要求を発行したノード10に最も近いバッファストレージ20に複製し、処理をステップS250に移行する。ステップS250において、分散ファイルストレージ30は、
図3と同様に、分散ロック要求の発行元のノード10に、分散ロック要求に対する返答を発行し、処理を終了する。
【0045】
ノード10の動作に戻り、分散ロック要求を発行したノード10は、ステップS110において、
図3と同様に、分散ファイルストレージ30からの返答を待ち、分散ロック要求に対する返答を受信した場合、処理をステップS120に移行する。
【0046】
ステップS120において、ノード10は、
図3と同様に、分散ロックの獲得を判定した場合、処理をステップS130に移行し、分散ロックが獲得できなかったことを判定した場合、処理を終了する。ステップS130において、ノード10は、
図3と同様に、自ノードで保持するバッファストレージ対応表STBLを参照し、アクセスするバッファストレージ20を特定する。次に、ステップS142において、ノード10は、ステップS130で特定したバッファストレージ20に、データ処理等により得られた更新するデータをライトし処理を終了する。すなわち、ノード10は、分散ファイルストレージ30のターゲットストレージに保持されたデータを参照することなく、複数のバッファストレージ20のうち、最も近いバッファストレージ20に複製されたデータを更新することができる。
【0047】
図5は、
図4のステップS300の動作とステップS300に対応するノード10の動作との一例を示す図である。
【0048】
まず、ステップS310において、分散ファイルストレージ30は、分散ロックの衝突があるか否かを判定する。例えば、分散ファイルストレージ30は、アクセス対象のデータに対応する分散ロックを、アクセス要求の発行元のノード10以外の他のノード10が獲得している場合、分散ロックが衝突していると判定し、処理をステップS320に移行する。一方、分散ファイルストレージ30は、アクセス対象のデータに対応する分散ロックが存在しない場合、分散ロックが衝突していないと判定し、ステップS300の処理を終了し、処理を
図4のステップS220に移行する。
【0049】
ステップS320において、分散ファイルストレージ30は、アクセス要求の発行元のノード10以外の他のノード10が獲得中の分散ロックを解除させるため、他のノードにキャンセル要求を発行し、処理をステップS330に移行する。
【0050】
キャンセル要求を受信した他のノード10は、ステップS150において、分散ロック要求を発行したノード10のアクセス対象のデータである対象データをノード内で更新済みか否かを判定する。他のノード10は、対象データを更新済みの場合、処理をステップS160に移行し、対象データを更新していない場合、処理をステップS180に移行する。例えば、各ノード10は、データキャッシュを有しており、対象データを更新済とは、データキャッシュ内の対象データを上書きし、ダーティになっていることを示す。
【0051】
ステップS160において、他のノード10は、ノード内で更新した対象データを、他のノード10に最も近いバッファストレージ20に書き出し、処理をステップS170に移行する。ここで、他のノード10に最も近いバッファストレージ20は、バッファストレージ対応表STBLにより判定可能であり、分散ロックを獲得したときに決まっている。
【0052】
ステップS170において、他のノード10は、複製情報に含まれる更新フラグを、対象データの更新を示す値に設定し、処理をステップS180に移行する。ステップS180において、他のノード10は、分散ファイルストレージ30にキャンセル要求の返答を発行し、処理を終了する。なお、他のノード10は、対象データを更新し、更新した対象データをバッファストレージ20に書き出した場合、更新した対象データをキャンセル要求の返答に添付する。
【0053】
分散ファイルストレージ30の動作に戻り、分散ファイルストレージ30は、ステップS330において、キャンセル要求の返答を待ち、キャンセル要求に対する返答を受信した場合、処理をステップS340に移行する。なお、実際には、キャンセル要求の返答がない場合や、キャンセル要求の返答が分散ロックを解除できないことを示す場合があるが、
図5に示す例では、キャンセル要求を受けたノード10は、ステップS150からS180の処理を実行するものとする。
【0054】
ステップS340において、分散ファイルストレージ30は、キャンセル要求の返答に含まれる情報に基づいて、対象データが他のノード10により更新済みであるか否かを判定する。分散ファイルストレージ30は、対象データが更新済みである場合、処理をステップS350に移行し、対象データが更新されていない場合、処理を終了する。
【0055】
ステップS350において、分散ファイルストレージ30は、複製情報に含まれる更新フラグを更新状態に設定し、処理をステップS360に移行する。ステップS360において、分散ファイルストレージ30は、ターゲットストレージ32に対象データを格納する場合、処理をステップS370に移行し、ターゲットストレージ32に対象データを格納しない場合、処理を終了する。
【0056】
例えば、分散ロックを解除するノード10に最も近いバッファストレージ20と、新たに分散ロックを獲得するノード10に最も近いバッファストレージ20とが異なる場合、ターゲットストレージ32に対象データを格納すると判定される。分散ロックを解除するノード10に最も近いバッファストレージ20と、新たに分散ロックを獲得するノード10に最も近いバッファストレージ20とが同じ場合、ターゲットストレージ32に対象データを格納しないと判定される。換言すれば、対象データの格納先のバッファストレージ20が変更される場合、ターゲットストレージ32に対象データを格納すると判定される。
【0057】
ステップS370において、分散ファイルストレージ30は、ターゲットストレージ32に対象データを格納し、処理を終了する。
【0058】
分散ファイルストレージ30内の所定のデータを更新する分散ロック要求(PW)に基づいて、分散ロックが衝突する場合、既に分散ロックを獲得しているノード10に分散ロックを解除させることで、データ更新用の分散ロックを排他的に設定することができる。また、更新フラグが更新された場合であって、対象データの格納先のバッファストレージ20が変更される場合、ターゲットストレージ32に対象データを格納することで、更新されたデータが失われることを抑止することができる。この結果、データの一貫性であるコヒーレンシを維持することができる。
【0059】
また、新たに分散ロックを獲得するノード10に合わせて、ノード10に最も近いバッファストレージ20をデータのアクセス先に設定することで、最小限のアクセスレイテンシでデータを参照および更新することができる。この結果、ネットワーク200のトラフィック量の無駄な増大を抑止することができ、並列コンピュータシステム100の処理性能を向上することができる。
【0060】
以上、
図1から
図5に示す実施形態では、ネットワーク200上に複数のバッファストレージ20を分散して配置し、他のバッファストレージ20より高速にアクセス可能なバッファストレージ20をノード10毎に特定する。そして、分散ロックを獲得したノード10は、アクセス効率が最も高いバッファストレージ20に対してデータをアクセスする。これにより、各ノード10によるバッファストレージ20へのアクセス効率を向上することができる。また、ネットワーク200の通信負荷を分散することができ、ネットワーク200のトラフィック量の増大を抑制することができる。この結果、並列コンピュータシステム100の処理性能を向上することができる。
【0061】
図6は、別の実施形態における並列コンピュータシステムの一例を示す。
図1と同様の要素については、同じ符号を付し、詳細な説明は省略する。
図6に示す並列コンピュータシステム102は、ネットワーク200において、ノード10aに接続される経路が、ルータ40aを介して分散ファイルストレージ30(30a、30b)に接続される。また、ノード10b、10cに接続される経路が、ルータ40bを介して分散ファイルストレージ30(30a、30b)に接続される。ルータ40(40a、40b)は、ノード10を利用して、ルータノードとして実現されてもよい。
【0062】
各分散ファイルストレージ30は、ノード10で使用するデータを保持するターゲットストレージ32(32a、32b)と、ターゲットストレージ32内のデータを管理するファイルサーバ34(34a、34b)とを有する。ファイルサーバ34は、バッファストレージ対応表STBLを有し、ターゲットストレージ32は、ファイルサーバ34に接続される。なお、各分散ファイルストレージ30は、データを管理するストレージサーバと、メタデータを管理するメタデータサーバを有してもよい。バッファストレージ対応表STBLは、
図2に示すバッファストレージ対応表STBLと同じである。
【0063】
例えば、バッファストレージ20は、分散ファイルストレージ30のターゲットストレージ32よりもアクセス速度が速いものが使用されてもよい。例えば、NVMe(Non-Volatile Memory Express)規格で動作するバッファストレージ20が使用されてもよい。ターゲットストレージ32に比べてノード10に近い位置に配置されるバッファストレージ20に高速アクセス可能な製品を適用することで、並列コンピュータシステム102の性能の向上効率をさらに上げることができる。
【0064】
図6に示す並列コンピュータシステム102においても、各分散ファイルストレージ30は、ノード10からのアクセス通知(分散ロック要求)に基づいて、アクセス対象のデータをアクセス要求元のノード10に最も近いバッファストレージ20に複製する。アクセス要求元のノード10は、複製先のバッファストレージ20にアクセスすることで、分散ファイルストレージ30にアクセスするよりも、データを高速にアクセスできる。
【0065】
図7は、分散ファイルストレージ30に保持されるデータと、分散ロックによりバッファストレージ20に持ち出されたデータとの関係を示すデータ構造の一例を示す。
図7に示すデータ構造は、連結リストにより示される。連結リストは、ファイルサーバ34により管理され、例えば、分散ロックの付与時に、分散ロック要求を発行したクライアントCLに転送される。なお、クライアントCLに転送される連結リストは、当該クライアントCLに対応する要素のみでもよい。連結リストの最初の要素は、ノード10によるアクセス対象のデータである共有資源に関する情報を示し、例えば、データAのターゲットストレージ32内での格納先を示す。
【0066】
連結リストの各要素は、前に接続される要素を示すポインタ値(リンク)および後に接続される要素を示すポインタ値(リンク)を格納する領域と、データ領域(複製資源記述子を格納する領域)とを有する。前または後に接続する要素がない場合、ポインタ値として例えばNULLが格納される。データ領域には、クライアント識別子CLと、複製資源記述子である複製資源識別子id、デバイス識別子CDおよび更新フラグとが格納される。
【0067】
クライアント識別子CLは、分散ロックを獲得したクライアントCLを識別する情報である。複製資源識別子idは、分散ロック時に複製される共有対象のデータ(ファイル)を識別する情報である。デバイス識別子CDは、分散ロック時のデータの複製先のバッファストレージ20を識別する情報である。更新フラグは、複製されたデータが更新(上書き)されたか否かを示す情報であり、例えば、”0”は、更新されていないことを示し、”1”は、更新されたことを示す。連結リストの各要素は、複製情報の一例である。クライアント識別子CLは、ノード識別情報の一例であり、複製資源識別子idは、データ識別情報の一例であり、デバイス識別子CDは、ストレージ識別情報の一例である。
【0068】
図7(a)は、クライアントCL2が獲得した分散ロック(PR)の対象のデータA(複製資源識別子id1)が、バッファストレージCD2に複製され、更新されていないことを示す。
【0069】
図7(b)は、
図7(a)の状態から、クライアントCL3、CL1がデータAの分散ロック(PR)を順次獲得し、データA(複製資源識別子id1)が、バッファストレージCD2、CD1に保持され、更新されていないことを示す。すなわち、
図7(b)は、クライアントCL2、CL3は、自ノードに最も近いバッファストレージCD2に複製されたデータAを参照し、クライアントCL1は、自ノードに最も近いバッファストレージCD2に複製されたデータAを参照することを示す。
【0070】
図7(c)は、クライアントCL2が獲得した分散ロック(PW)の対象のデータA(複製資源識別子id1)が、バッファストレージCD2に保持され、更新済みであることを示す。ここで、プロテクトライトPWは、対象データのライトだけでなくリードも許可されることを示す。なお、クライアントCL2に対応する要素の更新フラグ=”0”は、バッファストレージCD2内のデータAが更新されていないことを示すが、クライアントCL2が有するデータキャッシュ等では、データAが更新されている場合がある。
【0071】
図7(d)は、
図7(c)の状態に対して、クライアントCL3が分散ロック要求(PW)を発行し、クライアントCL2が獲得した分散ロックが無効にされ、クライアントCL3の分散ロックが獲得された状態を示す。クライアントCL3に対応する要素の更新フラグ=”1”は、クライアントCL3がデータAを更新したことを示す。
【0072】
図7(d)では、例えば、クライアントCL3による分散ロック要求により、クライアントCL2により更新されたデータAが、ファイルサーバ34からのキャンセル指示により、バッファストレージCD2に書き出される。そして、ファイルサーバ34は、クライアントCL2の分散ロックを無効にし、クライアントCL3に分散ロックを付与し、連結リストの情報を書き換える。
【0073】
各クライアントCLは、連結リストを参照することで、共有資源であるデータが、分散ロックによって複数のバッファストレージ20に保持される場合にも、現在の自ノードの分散ロックの状態を容易に知ることができ、データのアクセスの可否を知ることができる。各クライアントCLは、連結リストを参照することにより、分散ロックの獲得の有無を判定できるため、分散ロックを獲得している場合には、ファイルサーバ34に分散ロック要求を発行しなくてよい。このため、各クライアントCLからファイルサーバ34への無駄な分散ロック要求の発行を抑止することができ、ネットワーク200のトラフィック量の無駄な増大を抑止することができる。
【0074】
図8から
図11は、クライアントCLがターゲットストレージ32に記憶されたデータAを参照するために分散ロックを獲得する動作の一例を示す。なお、
図8から
図11に示す動作は、
図3に示した動作フローに対応する。データAは、データサイズに応じて、1つのファイルまたは複数のファイルに含まれてもよい。
図8から
図11において、太枠で示す要素は、変化した状態を示す。なお、
図8の動作の開始前、ターゲットストレージ32が記憶するデータAを持ち出しているクライアントCLは存在しない。
【0075】
まず、状態(a)において、クライアントCL2は、データAを参照するために
図2のバッファストレージ対応表STBLを参照し、自ノードに最も近いバッファストレージCD2を選択する。破線枠内の”read A CD2”は、データAの参照とバッファストレージCD2の選択とを示す。なお、予めファイル(すなわち、データA)の使用を開始するopen処理が実行されてもよい。クライアントCL2は、データAを識別する複製資源識別子id1と、参照(リード)を示すプロテクトリードPRとを含む分散ロック要求をファイルサーバ34に発行する。なお、クライアントCL2に最も近いバッファストレージCD2を示す情報が、分散ロック要求(PR)に含まれてもよい。
【0076】
次に、状態(b)において、ファイルサーバ34は、分散ロック要求に含まれる複製資源識別子id1とプロテクトリードPRとに基づいて、
図2に示す連結リストを参照し、データAに対する分散ロックが衝突しないと判断する。そして、ファイルサーバ34は、
図7(a)に示した連結リストを作成することで、参照用の分散ロックであることを示すプロテクトリードPRとして、データAとデバイス識別子CD2とを紐付ける。
【0077】
次に、状態(c)において、ファイルサーバ34は、ターゲットストレージ32からバッファストレージCD2にデータAを複製する。すなわち、複製資源識別子id1に紐付けられたデータAがバッファストレージCD2に保持される。
【0078】
次に、状態(d)において、ファイルサーバ34は、データAに対応する連結リストのうち、クライアントCL2に対応する要素を分散ロック要求の発行元ノードであるクライアントCL2に転送する。これにより、クライアントCL2に分散ロックが付与され、アクセス(リード)が許可される。クランアントCL2は、複製資源識別子id1(データA)に対する分散ロック(PR)を獲得する。
【0079】
次に、
図9の状態(e)において、分散ロックを獲得したクライアントCL2は、バッファストレージCD2からデータAをリードして、データ処理等に使用する。すなわち、クライアントCL2は、自ノードに最も近く、アクセス効率が最も高いバッファストレージCD2にアクセスすることで、他のバッファストレージ20またはターゲットストレージ32にアクセスする場合に比べて、データAを高速にアクセスできる。
【0080】
この後、状態(f)において、クライアントCL3は、データAを参照するためにバッファストレージ対応表STBLを参照し、自ノードに最も近いバッファストレージCD2を選択する。クライアントCL3は、データAを識別する複製資源識別子id1と、参照(リード)を示すプロテクトリードPRとを含む分散ロック要求をファイルサーバ34に発行する。なお、クライアントCL3に最も近いバッファストレージCD2を示す情報が、分散ロック要求に含まれてもよい。
【0081】
次に、状態(g)において、ファイルサーバ34は、分散ロック要求に含まれる複製資源識別子id1とプロテクトリードPRとに基づいて、連結リストを参照し、データAに対する分散ロックが衝突しないと判断する。そして、ファイルサーバ34は、クライアントCL3のプロテクトリードPRとして、データAとデバイス識別子CD2とを紐付け、連結リストに追加する。連結リストは、
図7(b)からクライアントCL1に対応する分散ロック(PR)を除いた状態になる。データAは、バッファストレージCD2に複製済みのため、ファイルサーバ34は、クライアントCL3の分散ロック要求に基づくデータAの複製を実施しない。
【0082】
次に、
図10の状態(h)において、ファイルサーバ34は、データAに対応する連結リストのうちクライアントCL3に対応する要素をクライアントCL3に転送することで、クライアントCL3に分散ロックを付与し、アクセス(リード)を許可する。クランアントCL3は、複製資源識別子id1(データA)に対する分散ロック(PR)を獲得する。次に、状態(i)において、分散ロックを獲得したクライアントCL3は、バッファストレージCD2からデータAをリードして、データ処理等に使用する。
【0083】
この後、状態(j)において、クライアントCL1は、データAを参照するためにバッファストレージ対応表STBLを参照し、自ノードに最も近いバッファストレージCD1を選択する。クライアントCL1は、データAを識別する複製資源識別子id1と、参照(リード)を示すプロテクトリードPRとを含む分散ロック要求をファイルサーバ34に発行する。なお、クライアントCL1に最も近いバッファストレージCD1を示す情報が、分散ロック要求に含まれてもよい。
【0084】
次に、
図11の状態(k)において、ファイルサーバ34は、分散ロック要求に含まれる複製資源識別子id1とプロテクトリードPRとに基づいて、連結リストを参照し、データAに対する分散ロックが衝突しないと判断する。そして、ファイルサーバ34は、クライアントCL1のプロテクトリードPRとして、データAとデバイス識別子CD1とを紐付け、連結リストに追加する。
【0085】
次に、状態(l)において、ファイルサーバ34は、ターゲットストレージ32からバッファストレージCD1にデータAを複製する。すなわち、複製資源識別子id1に紐付けられたデータAがバッファストレージCD1に保持される。
【0086】
次に、状態(m)において、ファイルサーバ34は、データAに対応する連結リストのうち、クライアントCL1に対応する要素をクライアントCL1に転送することで、クライアントCL1に分散ロックを付与し、アクセス(リード)を許可する。クランアントCL1は、複製資源識別子id1(データA)に対する分散ロック(PR)を獲得する。次に、状態(n)において、分散ロックを獲得したクライアントCL1は、バッファストレージCD1からデータAをリードして、データ処理等に使用する。
【0087】
図11(n)に示すように、各ノード10が参照するデータAの格納先は、各ノード10に最も近いバッファストレージ20にそれぞれ設定される。各ノード10は、データAの参照先を、自ノードで保持する共通のバッファストレージ対応表STBLを参照することで認識することができる。したがって、各ノード10によりデータAを高速にアクセスできるだけでなく、ネットワーク200のトラフィック量の無駄な増大を抑止することができ、並列コンピュータシステム102の処理性能を向上することができる。
【0088】
図12および
図13は、クライアントCLがターゲットストレージ32に記憶されたデータAを更新するために分散ロックを獲得する動作の一例を示す。なお、
図12および
図13に示す動作は、
図4および
図5に示した動作フローに対応する。
図8から
図11と同様の動作については、詳細な説明は省略する。
【0089】
図12の状態(a)は、クライアントCL2が、参照・更新用の分散ロックであることを示すプロテクトライトPWを獲得し、クライアントCL2が自身で保持するデータAを更新してデータA’にした状態を示す。クライアントCL2内のデータAはデータA’に更新済みであるが、クライアントCL2がアクセスするバッファストレージCD2内のデータAは更新されておらず、クライアントCL2が保持する連結リストの更新フラグは、”0”である。状態(a)での連結リストの状態は、
図7(c)に示される。
【0090】
状態(b)において、クライアントCL3は、データAを更新するためにバッファストレージ対応表STBLを参照し、自ノードに最も近いバッファストレージCD2を選択する。破線枠内の”write A CD2”は、データAの更新とバッファストレージCD2の選択とを示す。クライアントCL3は、データAを識別する複製資源識別子id1と、更新(ライト)を示すプロテクトライトPWとを含む分散ロック要求をファイルサーバ34に発行する。なお、クライアントCL3に最も近いバッファストレージCD2を示す情報が、分散ロック要求に含まれてもよい。
【0091】
ファイルサーバ34は、分散ロック要求に含まれる複製資源識別子id1とプロテクトライトPWとに基づいて、連結リストを参照し、データAに対する分散ロック(プロテクトライトPW)が衝突すると判断する。すなわち、ファイルサーバ34は、データAの分散ロック(PW)を他のクライアントCL2に付与済みであるため、クライアントCL2によるデータAのアクセスを禁止し、クライアントCL2からデータAを追い出す必要があると判断する。
【0092】
このため、状態(c)において、ファイルサーバ34は、分散ロックを獲得しているクライアントCL2に、分散ロックを解除させるためのキャンセル要求を発行する。例えば、キャンセル要求は、分散ロックの解除の対象のデータAを識別する複製資源識別子id1を含む。また、ファイルサーバ34は、連結リストに連結しない状態で、分散ロック要求に対応する要素を連結リストに追加する。
【0093】
次に、状態(d)において、キャンセル要求を受信したクライアントCL2は、自身が所持する連結リストを参照し、更新済みのデータA’をバッファストレージCD2に書き出し、自ノードの連結リストの更新フラグを”1”に設定する。また、クライアントCL2は、データAのアクセスを禁止する。
【0094】
データA’をバッファストレージCD2に書き出したクライアントCL2は、
図13の状態(e)において、キャンセル要求の返答をファイルサーバ34に発行する。キャンセル要求の返答には、バッファストレージCD2に書き出したデータA’が更新済みである情報が含まれる。キャンセル要求を受信したファイルサーバ34は、データAに対応する連結リストの更新フラグを”1”に設定する。そして、クライアントCL2に対応する要素を連結リストから消去し、クライアントCL3に対応する要素を含む連結リストを作成する。連結リストは、
図7(d)に示す状態になる。
【0095】
次に、状態(f)において、キャンセル要求の返答を発行したクライアントCL2は、自ノードのデータキャッシュに保持されたデータA’を無効にし、自身が所持する連結リストを無効にする。クライアントCL3に分散ロックを付与する前に、クライアントCL2にキャンセル要求を発行し、データA’および連結リストを無効にさせることで、並列コンピュータシステム102内でのデータのコヒーレンシを維持することができる。これにより、並列コンピュータシステム102の信頼性が低下することを抑止することができる。
【0096】
次に、状態(g)において、ファイルサーバ34は、データA’に対応する連結リストのうち、クライアントCL3に対応する要素をクライアントCL3に転送することで、クライアントCL3に分散ロックを付与し、アクセスを許可する。クランアントCL3は、複製資源識別子id1(データA)に対する分散ロック(プロテクトライトPW)を獲得する。
【0097】
次に、状態(h)において、分散ロックを獲得したクライアントCL3は、バッファストレージCD2からキャッシュしたデータA’を、例えばデータ処理に使用し、データA’’に更新する。なお、バッファストレージCD2内のデータA’およびターゲットストレージ32内のデータAは、この時点では更新されない。但し、状態(e)の動作により、連結リストの更新フラグは、”1”に設定されている。以上により、分散ロック要求(PW)が発行された場合に、連結リストを参照して分散ロックの衝突の有無を判断することで、クライアントCLに応じてアクセス効率が高いバッファストレージ20が異なる場合にも、分散ロックを排他的に設定することができる。
【0098】
図14から
図16は、クライアントCLがターゲットストレージ32に記憶されたデータAを更新するために分散ロックを獲得する動作の別の例を示す。なお、
図14から
図16に示す動作は、
図4および
図5に示した動作フローに対応する。
図8から
図13と同様の動作については、詳細な説明は省略する。
図14の状態(a)は、
図12の状態(a)と同じである。すなわち、状態(a)は、クライアントCL2が、分散ロック(プロテクトライトPW)を獲得し、クライアントCL2が自身で保持するデータAを更新してデータA’にした状態を示す。
【0099】
状態(b)において、クライアントCL1は、データAを更新するためにバッファストレージ対応表STBLを参照し、自ノードに最も近いバッファストレージCD1を選択する。破線枠内の”write A CD1”は、データAの更新とバッファストレージCD1の選択とを示す。クライアントCL1は、データAを識別する複製資源識別子id1と、更新(ライト)を示すプロテクトライトPWとを含む分散ロック要求をファイルサーバ34に発行する。なお、クライアントCL1に最も近いバッファストレージCD1を示す情報が、分散ロック要求に含まれてもよい。
【0100】
ファイルサーバ34は、分散ロック要求に含まれる複製資源識別子id1とプロテクトライトPWとに基づいて、連結リストを参照し、データAに対する分散ロック(プロテクトライトPW)が衝突すると判断する。すなわち、ファイルサーバ34は、データAの分散ロック(PW)を他のクライアントCL2に付与済みであるため、クライアントCL2からデータAを追い出す必要があると判断する。そして、
図14の状態(c)から
図15の状態(f)において、クライアントCL2に、更新後のデータA’を追い出させ、分散ロックを解除させる。
図14の状態(c)から
図15の状態(f)は、
図12の状態(c)から
図13の状態(f)と同様である。
【0101】
新たな分散ロック(PW)の対象は、データA’を保持するバッファストレージCD2と異なるバッファストレージCD1であり、データA’は、データAに対して更新されている。このため、
図15の状態(g)において、ファイルサーバ34は、バッファストレージCD2が保持するデータA’をリードしてターゲットストレージ32に格納する処理を実行する。
【0102】
次に、
図16の状態(h)において、ファイルサーバ34は、バッファストレージCD2からデータA’を消去する。次に、状態(i)において、ファイルサーバ34は、ターゲットストレージ32からバッファストレージCD1にデータA’を複製する。すなわち、複製資源識別子id1に紐付けられたデータA’がバッファストレージCD1に保持される。次に、状態(j)において、ファイルサーバ34は、データAに対応する連結リストのうち、クライアントCL1に対応する要素をクライアントCL1に転送することで、クライアントCL1に分散ロックを付与し、アクセスを許可する。クランアントCL1は、複製資源識別子id1(データA’)に対する分散ロック(プロテクトライトPW)を獲得する。
【0103】
次に、状態(k)において、分散ロックを獲得したクライアントCL1は、バッファストレージCD1からキャッシュしたデータA’を、例えばデータ処理に使用し、データA’’に更新する。なお、バッファストレージCD1内のデータA’およびターゲットストレージ32内のデータA’は、この時点では更新されない。但し、
図15の状態(e)の動作により、連結リストの更新フラグは、”1”に設定されている。
【0104】
なお、ターゲットストレージ32が記憶するデータAをクライアントCLのいずれも持ち出していない状態で、クライアントCLのいずれかが分散ロック要求(PW)を発行した場合、並列コンピュータシステム102は、
図8と同様に動作する。分散ロック要求(PW)が発行された場合の動作は、
図8の状態(a)の”read A”を”write A”に置き換え、分散ロック要求の”id1、PR”を”id1、PW”に変更することで説明される。
【0105】
以上、
図8から
図16では、バッファストレージ対応表STBLに設定された情報に基づいて、バッファストレージ20を識別するデバイス識別子を連結リストの各要素に設定することで、各クライアントCLは、最も近いバッファストレージ20にアクセスできる。換言すれば、クライアントCLに応じてアクセス効率が高いバッファストレージ20が異なる場合にも、簡易な連結リストを用いて、最適なバッファストレージ20にアクセスさせる制御をクライアントCL毎に実施することができる。
【0106】
以上、
図6から
図16に示す実施形態においても、
図1から
図5に示す実施形態と同様に、各ノード10によるバッファストレージ20へのアクセス効率を向上することができる。また、ネットワーク200の通信負荷を分散することができ、ネットワーク200のトラフィック量の増大を抑制することができる。この結果、並列コンピュータシステム102の処理性能を向上することができる。
【0107】
図17は、別の実施形態における並列コンピュータシステムの一例を示す。
図1および
図6と同様の要素については、同じ符号を付し、詳細な説明は省略する。
図17に示す並列コンピュータシステム104は、メッシュネットワーク202上に配置された複数のノード10および複数のルータノード40と、各ルータノード40に接続されたバッファストレージ20とを有する。
【0108】
ルータノード40は、メッシュネットワーク202上に分散して配置される。メッシュネットワーク202上に配置されるルータノード40の数(配置頻度)は、
図17に限定されない。ルータノード40は、メッシュネットワーク202の交点以外に配置されてもよい。
【0109】
また、並列コンピュータシステム104は、I/O(Input/Output)ネットワーク300を介して各ルータノード40に接続された複数の分散ファイルストレージ30(30a、30b)を有する。なお、メッシュネットワーク202の代わりにトーラスネットワークや他のネットワークが適用されてもよく、ネットワークの次元は、3次元以上でもよい。各分散ファイルストレージ30は、データを管理するストレージサーバと、メタデータを管理するメタデータサーバを有してもよい。
【0110】
並列コンピュータシステム104の動作は、
図3から
図5および
図8から
図16に示す動作と同様である。すなわち、並列コンピュータシステム104においても、各ノード10によるバッファストレージ20へのアクセス効率を向上することができる。また、ネットワーク200の通信負荷を分散することができ、メッシュネットワーク202のトラフィック量の増大を抑制することができる。この結果、並列コンピュータシステム104の処理性能を向上することができる。
【0111】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【0112】
10(10a、10b) ノード
20(20a、20b) バッファストレージ
30(30a、30b、30c) 分散ファイルストレージ
32(32a、32b、32c) ターゲットストレージ
34(34a、34b) ファイルサーバ
40(40a、40b) ルータ
100、102、104 並列コンピュータシステム
200 ネットワーク
202 メッシュネットワーク
300 I/Oネットワーク
CD(CD1、CD2) バッファストレージ
CL(CL1、CL2、CL3) クライアント
PR プロテクトリード
PW プロテクトライト
STBL バッファストレージ対応表