(57)【要約】【課題】他のバッファストレージより高速にアクセス可能なバッファストレージをノード毎に特定し、ノードにアクセスさせることで、並列コンピュータシステムの処理性能を向上する。【解決手段】並列コンピュータシステムにおいて、複数のノードおよび複数の分散ファイルストレージは、ノードと複数のバッファストレージのいずれかを対応づけたバッファストレージ対応表を予め記憶し、ノードの各々は、分散ファイルストレージに記憶されたデータをアクセスする場合、アクセス通知を分散ファイルストレージに発行し、分散ファイルストレージは、データが所定のバッファストレージに記憶されている場合、当該バッファストレージにアクセスするようアクセス通知を発行した発行元ノードに返答し、返答を受けたノードは、バッファストレージ対応表を参照して、アクセスするバッファストレージを特定し、データをアクセスする。【選択図】図１
2020155031.tif 000002
【特許請求の範囲】
【請求項１】
複数のノード、複数のバッファストレージおよび複数の分散ファイルストレージを有する並列コンピュータシステムにおいて、
前記ノードおよび前記分散ファイルストレージは、前記ノードと前記バッファストレージとを対応づけたバッファストレージ対応表を予め記憶し、
前記ノードの各々は、前記分散ファイルストレージに記憶されたデータをアクセスする場合、アクセス通知を前記分散ファイルストレージに発行し、
前記分散ファイルストレージは、前記データが所定の前記バッファストレージに記憶されている場合、当該バッファストレージにアクセスするよう前記アクセス通知を発行した発行元ノードに返答し、
前記返答を受けたノードは、前記バッファストレージ対応表を参照して、アクセスするバッファストレージを特定し、データをアクセスすることを特徴とする並列コンピュータシステム。
【請求項２】
前記バッファストレージ対応表は、前記ノード毎に前記各バッファストレージのアクセス効率を判定するための情報を含み、
前記分散ファイルストレージは、前記アクセス通知で指定されたデータが前記バッファストレージに記憶されていない場合、前記バッファストレージ対応表に基づき、前記発行元ノードによるアクセス効率が他のバッファストレージより高いバッファストレージに、前記分散ファイルストレージが保持するデータを複製し、データを複製したバッファストレージにアクセスするよう前記発行元ノードに返答し、
前記返答を受けたノードは、データが複製されたバッファストレージにアクセスすることを特徴とする請求項１に記載の並列コンピュータシステム。
【請求項３】
前記分散ファイルストレージは、前記発行元ノードによるアクセス効率が他のバッファストレージより高いバッファストレージにデータを複製する場合、複製するデータを識別するデータ識別情報と、前記発行元ノードを識別するノード識別情報と、データを複製するバッファストレージを識別するストレージ識別情報とを含む複製情報を作成し、作成した複製情報を前記発行元ノードに通知することで、複製するデータの前記発行元ノードによるアクセスを許可することを特徴とする請求項２に記載の並列コンピュータシステム。
【請求項４】
前記分散ファイルストレージは、前記バッファストレージに複製したデータを参照することを示すアクセス通知が前記発行元ノード以外の他のノードから発行された場合、前記他のノードに対応する他の複製情報を作成し、作成した他の複製情報を前記他のノードに通知することで、複製したデータの前記他のノードによる参照を許可することを特徴とする請求項３に記載の並列コンピュータシステム。
【請求項５】
前記分散ファイルストレージは、前記他のノードによるアクセス効率が高いバッファストレージが、データを複製したバッファストレージと異なる場合、前記他のノードによるアクセス効率が高い他のバッファストレージを識別するストレージ識別情報を含む前記他の複製情報を作成し、前記他のバッファストレージに、前記分散ファイルストレージが保持するデータを複製し、前記他の複製情報を前記他のノードに通知することで、複製したデータの前記他のノードによる参照を許可することを特徴とする請求項４に記載の並列コンピュータシステム。
【請求項６】
前記分散ファイルストレージは、前記バッファストレージに複製したデータを更新すること示すアクセス通知が前記発行元ノード以外の他のノードから発行された場合、前記発行元ノードに対応する複製情報を消去し、複製したデータのアクセスの禁止を前記発行元ノードに通知し、前記他のノードによるアクセス効率が高いバッファストレージを識別するストレージ識別情報を含む他の複製情報を作成し、前記他の複製情報を前記他のノードに通知することで、複製したデータの前記他のノードによる更新を許可することを特徴とする請求項３に記載の並列コンピュータシステム。
【請求項７】
前記分散ファイルストレージは、前記他の複製情報の作成時に前記発行元ノードによりデータが更新済みの場合、更新したデータをバッファストレージに書き出させる指示を前記発行元ノードに発行し、さらに、前記他のノードによるアクセス効率が高いバッファストレージが、データを複製したバッファストレージと異なる場合、バッファストレージに書き出されたデータをリードして、前記他のノードによるアクセス効率が高いバッファストレージに複製することを特徴とする請求項６に記載の並列コンピュータシステム。
【請求項８】
前記複製情報は、前記バッファストレージに複製したデータが更新されたことを示す更新情報を含むことを特徴とする請求項３ないし請求項７のいずれか１項に記載の並列コンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列コンピュータシステムに関する。
【背景技術】
【０００２】
マスターサーバの代理となる複数の複製サーバを含むサーバシステムにおいて、複製サーバの各々は、他の複製サーバからデータの更新の通知に基づいて更新処理を実行することで、複製サーバ間での一貫性を維持する。この種のサーバシステムでは、各複製サーバは、クライアント装置からのデータのロック要求に基づき、ロック制御を行うとともに、他の複製サーバにロック要求を行う（例えば、特許文献１参照）。
【０００３】
複数のクライアントとディスク装置を含むサーバとの間に配置されるディスクキャッシュを含むゲートウェイ計算機は、クライアントからの読み込み要求に含まれるブロック情報が有効でない場合のみ、読み込み要求をサーバに発行する。これにより、分散ファイルシステムにおけるネットワーク間のトラフィックが低減され、ファイルアクセスの高速化を図られる（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−１０１０６２号公報
【特許文献２】特開平４−３１３１２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
サーバ内のディスク装置の負荷を減らし、クライアントによるデータのアクセスを高速にするために、ディスク装置よりも高速な複数のバッファストレージを、複数のクライアントを含むネットワーク上に配置することが考えられる。しかし、複数のクライアントによるアクセスが特定のバッファストレージに集中すると、バッファストレージの高速性が損なわれてしまう。また、クライアントと、クライアントがアクセスするバッファストレージとがネットワーク上で離れているほど、通信による負荷がシステム全体にかかりやすく、システムの処理性能が低下するおそれがある。
【０００６】
１つの側面では、本発明は、他のバッファストレージより高速にアクセス可能なバッファストレージをノード毎に特定し、ノードにアクセスさせることで、並列コンピュータシステムの処理性能を向上する。
【課題を解決するための手段】
【０００７】
一つの観点によれば、複数のノード、複数のバッファストレージおよび複数の分散ファイルストレージを有する並列コンピュータシステムにおいて、前記ノードおよび前記分散ファイルストレージは、前記ノードと前記バッファストレージとを対応づけたバッファストレージ対応表を予め記憶し、前記ノードの各々は、前記分散ファイルストレージに記憶されたデータをアクセスする場合、アクセス通知を前記分散ファイルストレージに発行し、前記分散ファイルストレージは、前記データが所定の前記バッファストレージに記憶されている場合、当該バッファストレージにアクセスするよう前記アクセス通知を発行した発行元ノードに返答し、前記返答を受けたノードは、前記バッファストレージ対応表を参照して、アクセスするバッファストレージを特定し、データをアクセスすることを特徴とする。
【発明の効果】
【０００８】
１つの側面では、本発明は、他のバッファストレージより高速にアクセス可能なバッファストレージをノード毎に特定し、ノードにアクセスさせることで、並列コンピュータシステムの処理性能を向上することができる。
【図面の簡単な説明】
【０００９】
【図１】一実施形態における並列コンピュータシステムの一例を示す図である。
【図２】図１のノードおよび分散ファイルストレージが保持するバッファストレージ対応表の一例を示す図である。
【図３】図１の並列コンピュータシステムの動作の一例を示す図である。
【図４】図１の並列コンピュータシステムの動作の別の例を示す図である。
【図５】図４のＳ３００の動作とＳ３００に対応するノードの動作との一例を示す図である。
【図６】別の実施形態における並列コンピュータシステムの一例を示す図である。
【図７】分散ファイルストレージに保持されるデータと、分散ロックによりバッファストレージに持ち出されたデータとの関係を示すデータ構造の一例を示す図である。
【図８】クライアントがターゲットストレージに記憶されたデータを参照するために分散ロックを獲得する動作の一例を示す図である。
【図９】図８の動作の続きを示す図である。
【図１０】図９の動作の続きを示す図である。
【図１１】図１０の動作の続きを示す図である。
【図１２】クライアントがターゲットストレージに記憶されたデータを更新するために分散ロックを獲得する動作の一例を示す図である。
【図１３】図１２の動作の続きを示す図である。
【図１４】クライアントがターゲットストレージに記憶されたデータを更新するために分散ロックを獲得する動作の別の例を示す図である。
【図１５】図１４の動作の続きを示す図である。
【図１６】図１５の動作の続きを示す図である。
【図１７】別の実施形態における並列コンピュータシステムの一例を示す図である。
【発明を実施するための形態】
【００１０】
以下、図面を用いて実施形態が説明される。
【００１１】
図１は、一実施形態における並列コンピュータシステムの一例を示す。図１に示す並列コンピュータシステム１００は、ネットワーク２００上に配置された複数のノード１０（１０ａ、１０ｂ、１０ｃ）および複数のバッファストレージ２０（２０ａ、２０ｂ）を有する。また、並列コンピュータシステム１００は、ネットワーク２００に接続された複数の分散ファイルストレージ３０（３０ａ、３０ｂ）を有する。
【００１２】
なお、ネットワーク２００上に配置されるノード１０の数およびバッファストレージ２０の数は、それぞれ複数個であれば図１に示す例に限定されない。ネットワーク２００に接続される分散ファイルストレージ３０の数は、図１に示す例に限定されず、３つ以上でもよく、１つでもよい。また、並列コンピュータシステム１００に構築されるネットワーク２００は、図６に示すツリー構造の形態に限定されず、例えば、メッシュネットワーク等の他のネットワークでもよく、ネットワークの次元は、３次元以上でもよい。
【００１３】
各ノード１０は、データを処理する計算ノードであり、バッファストレージ対応表ＳＴＢＬを有する。ネットワーク２００上に配置された複数のノード１０は、計算を並列に実行する並列計算機として動作する。各分散ファイルストレージ３０は、ノードで使用するデータを保持するターゲットストレージ３２（３２ａ、３２ｂ）と、バッファストレージ対応表ＳＴＢＬとを有する。各ノード１０が有するバッファストレージ対応表ＳＴＢＬと、各分散ファイルストレージ３０が有するバッファストレージ対応表ＳＴＢＬとは、互いに同じ内容である。
【００１４】
バッファストレージ対応表ＳＴＢＬには、クライアントＣＬ毎に、どのバッファストレージ２０が近いかを示す情報が格納される。換言すれば、バッファストレージ対応表ＳＴＢＬは、ノード１０毎に各バッファストレージ２０のアクセス効率を判定するための情報を含む。ここで、”近い”とは、他のバッファストレージ２０に比べて、アクセスレイテンシが小さいことを示し、アクセス効率が高いことを示す。バッファストレージ対応表ＳＴＢＬの例は、図２に示される。
【００１５】
特に限定されないが、図１に示す例では、ネットワーク２００における図１の上側の経路にノード１０ａおよびバッファストレージ２０ａが接続される。ネットワーク２００における図１の下側の経路にノード１０ｂ、１０ｃおよびバッファストレージ２０ｂが接続される。以下では、ノード１０は、クライアントＣＬ（ＣＬ１、ＣＬ２、ＣＬ３）とも称され、バッファストレージ２０は、バッファストレージＣＤ（ＣＤ１、ＣＤ２）とも称される。符号ＣＬは、クライアント名（クライアント識別子）としても使用され、符号ＣＤは、バッファストレージ名（デバイス識別子）としても使用される。
【００１６】
図１に示す並列コンピュータシステム１００では、各分散ファイルストレージ３０は、クライアントＣＬが発行するアクセス通知に基づいて、アクセス対象のデータをアクセス通知元のクライアントＣＬに近いバッファストレージ２０に複製する。アクセス通知は、データの参照または更新する各クライアントＣＬにより、データがアクセスされる前に発行される。バッファストレージ２０が、アクセス通知元のクライアントＣＬに近いか遠いかは、バッファストレージ対応表ＳＴＢＬに基づいて判定される。アクセス通知元のクライアントＣＬは、複製先のバッファストレージ２０にアクセスすることで、分散ファイルストレージ３０にアクセスするよりも、高速にデータをアクセスできる。さらに、クライアントＣＬは、他のバッファストレージ２０に比べて近いバッファストレージ２０にアクセスするため、アクセス効率をさらに向上することができる。
【００１７】
図２は、図１のノード１０および分散ファイルストレージ３０が保持するバッファストレージ対応表ＳＴＢＬの一例を示す。バッファストレージ対応表ＳＴＢＬは、クライアントＣＬを識別するクライアント名と、バッファストレージ２０を識別するバッファストレージ名とが格納される複数のエントリを有する。そして、クライアント名毎にクライアントＣＬから近い順にバッファストレージ名が格納される。バッファストレージ対応表ＳＴＢＬにおいて、クライアント名に対応して格納される複数のバッファストレージ名は、上側のエントリほどクライアントＣＬに近いことを示す。
【００１８】
バッファストレージ２０がクライアントＣＬに近いか遠いかは、例えば、クライアントＣＬからバッファストレージ２０までのホップ数または通信距離により判断される。上述したように、クライアントＣＬに近いと判断されたバッファストレージ２０ほど、アクセスレイテンシが小さく、アクセス効率が高い。バッファストレージ対応表ＳＴＢＬは、各クライアントＣＬ内のＲＡＭ（Random  Access  Memory）等のメモリ領域および各分散ファイルストレージ３０内のＲＡＭ等のメモリ領域に予め格納される。なお、バッファストレージ対応表ＳＴＢＬは、並列コンピュータシステム１００を管理する管理サーバ等により、ネットワーク２００の構築時またはネットワーク２００の更新時に作成される。
【００１９】
図２に示すバッファストレージ対応表ＳＴＢＬでは、クライアントＣＬ１に最も近いバッファストレージ２０は、バッファストレージＣＤ１であり、クライアントＣＬ１に次に近いバッファストレージ２０は、バッファストレージＣＤ２である。クライアントＣＬ２に最も近いバッファストレージ２０は、バッファストレージＣＤ２であり、クライアントＣＬ２に次に近いバッファストレージ２０は、バッファストレージＣＤ１である。クライアントＣＬ３に最も近いバッファストレージ２０は、バッファストレージＣＤ２であり、クライアントＣＬ３に次に近いバッファストレージ２０は、バッファストレージＣＤ１である。
【００２０】
各分散ファイルストレージ３０は、バッファストレージ対応表ＳＴＢＬを参照することで、各クライアントに最も近いバッファストレージ２０を認識することができ、認識したバッファストレージ２０にデータを複製することができる。また、各クライアントＣＬは、バッファストレージ対応表ＳＴＢＬを参照することで、自ノードに最も近いバッファストレージ２０であって、分散ファイルストレージ３０によりデータが複製されたバッファストレージ２０を認識することができる。
【００２１】
これにより、全てのクライアントＣＬは、分散ファイルストレージ３０に対するアクセスを行うことなく、自ノードに最も近いバッファストレージ２０にアクセスし、データ処理等を実行することができる。この結果、アクセスレイテンシを最小限にでき、並列コンピュータシステム１００の処理性能を向上することができる。また、最も近いバッファストレージ２０にアクセスすることで、ネットワーク２００の通信負荷を分散することができ、ネットワーク２００のトラフィック量の増大を抑制することができる。これにより、例えば、輻輳の発生を抑止することでき、並列コンピュータシステム１００の処理性能をさらに向上することができる。
【００２２】
なお、バッファストレージ対応表ＳＴＢＬは、図２の形式に限定されない。例えば、バッファストレージ対応表ＳＴＢＬの各エントリに、アクセス効率の順序をノード１０毎に示す領域を設け、バッファストレージ名は、アクセス効率と無関係にエントリに設定されてもよい。
【００２３】
図３は、図１の並列コンピュータシステム１００の動作の一例を示す図である。すなわち、図３は、並列コンピュータシステム１００の制御方法の一例、ノードの制御方法の一例および分散ファイルストレージの制御方法の一例を示す。
【００２４】
各ノード１０は、分散ファイルストレージ３０内の所定のデータを参照する場合、ステップＳ１００において、アクセス対象のデータを指定して分散ロック要求（ＰＲ）を分散ファイルストレージ３０に発行し、処理をステップＳ１１０に移行する。ここで、分散ロック要求の符号ＰＲは、対象のデータのリードのみの要求（プロテクトリード）を示す。なお、並列コンピュータシステム１００が複数の分散ファイルストレージ３０を有する場合、分散ロック要求（ＰＲ）は、アクセス対象のデータを保持する分散ファイルストレージ３０に発行される。分散ロック要求は、データのアクセスを分散ファイルストレージ３０に通知するアクセス通知の一例である。
【００２５】
分散ファイルストレージ３０は、ステップＳ２００において、分散ロック要求の受信を待ち、分散ロック要求を受信した場合、処理をステップＳ２１０に移行する。なお、分散ファイルストレージ３０は、ステップＳ２００による待ち動作を実行しながら、他の処理を実行可能である。
【００２６】
ステップＳ２１０において、分散ファイルストレージ３０は、現在の分散ロックの設定状況に基づいて、分散ロック要求を発行したノード１０に分散ロックを獲得させるか否かを判定する。分散ファイルストレージ３０は、分散ロックを獲得させる場合、処理をステップＳ２２０に移行し、分散ロックを獲得させない場合、処理をステップＳ２５０に移行する。
【００２７】
ステップＳ２２０において、分散ファイルストレージ３０は、バッファストレージ対応表ＳＴＢＬを使用して、アクセス対象のデータに対応して、分散ロックの状態とデータの複製先等とを管理するための複製情報を作成する。例えば、複製情報は、複製するデータを識別するデータ識別情報と、分散ロック要求の発行元のノード１０を識別するノード識別情報と、データを複製するバッファストレージ２０を識別するストレージ識別情報とを含む。さらに、複製情報は、バッファストレージ２０に複製したデータが更新されたことを示す更新フラグを含んでもよい。更新フラグは、更新情報の一例である。
【００２８】
分散ファイルストレージ３０は、バッファストレージ対応表ＳＴＢＬにおいて、分散ロック要求の発行元のノード１０に対応するエントリを参照し、発行元に最も近いバッファストレージ２０を識別するストレージ識別情報を複製情報に含める。このように、分散ファイルストレージ３０は、バッファストレージ対応表ＳＴＢＬを参照することで、アクセス要求元のクライアントＣＬに最も近いバッファストレージ２０を、データの複製先として選択することができる。
【００２９】
なお、データ参照の分散ロックは、複数のノード１０に対して許可可能であるため、分散ファイルストレージ３０は、複数の複製情報を保持する場合がある。例えば、分散ファイルストレージ３０は、複製情報を連結リスト形式で保持することで、複数の複製情報を紐付けて保持することができる。
【００３０】
次に、ステップＳ２３０において、分散ファイルストレージ３０は、分散ロック要求を発行したノード１０に最も近い（最もアクセス効率の高い）バッファストレージ２０が、アクセス対象のデータを保持しているか否かを判定する。例えば、アクセス対象のデータを保持しているか否かは、連結リスト形式で保持された複数の複製情報内のデータ識別情報とストレージ識別情報とに基づいて判定することができる。
【００３１】
分散ファイルストレージ３０は、アクセス対象のデータを保持している場合、処理をステップＳ２５０に移行し、アクセス対象のデータを保持していない場合、処理をステップＳ２４０に移行する。ステップＳ２３０の処理により、アクセス対象のデータが、分散ロック要求を発行したノード１０に最も近いバッファストレージ２０に既に保持されている場合、データがバッファストレージ２０に再度複製されることを抑止することができる。これにより、ネットワーク２００のトラフィック量の無駄な増大を抑止することができ、並列コンピュータシステム１００の処理性能を向上することができる。
【００３２】
ステップＳ２４０において、分散ファイルストレージ３０は、アクセス対象のデータを、分散ロック要求を発行したノード１０に最も近いバッファストレージ２０に複製し、処理をステップＳ２５０に移行する。データを複製するバッファストレージ２０は、複製情報に含まれるストレージ識別情報により示される。ステップＳ２３０、Ｓ２４０の処理により、バッファストレージ２０にアクセス対象のデータが保持されていない場合、アクセス対象のデータを、アクセス元のノード１０に最も近いバッファストレージ２０に複製することができる。また、アクセス対象のデータを保持しているバッファストレージ２０が、アクセス元のノード１０から離れている場合にも、アクセス対象のデータを、アクセス元のノード１０に最も近いバッファストレージ２０にデータを複製することができる。これにより、全てのノード１０は、最小限のアクセスレイテンシでデータを参照することができる。
【００３３】
ステップＳ２５０において、分散ファイルストレージ３０は、分散ロック要求の発行元のノード１０に、分散ロック要求に対する返答を発行し、処理を終了する。例えば、分散ロック要求に対する返答には、ステップＳ２２０で作成した複製情報を含む。
【００３４】
ノード１０の動作に戻り、分散ロック要求を発行したノード１０は、ステップＳ１１０において、分散ファイルストレージ３０からの返答を待ち、分散ロック要求に対する返答を受信した場合、処理をステップＳ１２０に移行する。
【００３５】
ステップＳ１２０において、ノード１０は、分散ファイルストレージ３０からの返答がアクセスの許可（分散ロックの獲得）を示す場合、処理をステップＳ１３０に移行する。例えば、アクセスの許可は、返答に複製情報が含まれることで判定されてもよい。アクセスの許可を示す返答は、バッファストレージ２０へのアクセスを促す通知である。ノード１０は、返答がアクセスの不許可を示す場合、分散ロックが獲得できなかったため、処理を終了する。例えば、アクセスの不許可は、返答に複製情報が含まれないことで判定されてもよい。
【００３６】
ステップＳ１３０において、ノード１０は、自ノードで保持するバッファストレージ対応表ＳＴＢＬを参照し、アクセスするバッファストレージ２０を特定する。なお、ノード１０は、分散ロック要求に対する返答に含まれる複製情報（ストレージ識別情報）に基づいて、アクセスするバッファストレージ２０を特定してもよい。あるいは、ノード１０は、バッファストレージ対応表ＳＴＢＬと、分散ロック要求に対する返答に含まれる複製情報（ストレージ識別情報）との両方に基づいて、アクセスするバッファストレージ２０を特定してもよい。
【００３７】
次に、ステップＳ１４０において、ノード１０は、ステップＳ１３０で特定したバッファストレージ２０からデータをリードし処理を終了する。すなわち、ノード１０は、分散ファイルストレージ３０のターゲットストレージに保持されたデータを参照することなく、複数のバッファストレージ２０のうち、最も近いバッファストレージ２０に複製されたデータを参照することができる。なお、ノード１０は、リードしたデータを使用して、データ処理等を実行する。
【００３８】
図４は、図１の並列コンピュータシステム１００の動作の別の例を示す図である。すなわち、図４は、並列コンピュータシステム１００の制御方法の一例、ノードの制御方法の一例および分散ファイルストレージの制御方法の一例を示す。図３と同様の動作については、同じステップ番号を付し、詳細な説明は省略する。
【００３９】
各ノード１０は、分散ファイルストレージ３０内の所定のデータを更新する場合、ステップＳ１０２において、分散ロック要求（ＰＷ）を分散ファイルストレージ３０に発行し、処理をステップＳ１１０に移行する。なお、並列コンピュータシステム１００が複数の分散ファイルストレージ３０を有する場合、分散ロック要求（ＰＷ）は、アクセス対象のデータを保持する分散ファイルストレージ３０に発行される。分散ロック要求の符号ＰＷは、対象のデータのライトの要求（プロテクトライト）を示す。
【００４０】
分散ファイルストレージ３０は、ステップＳ２００において、図３と同様に、分散ロック要求の受信を待つ。分散ロック要求を受信した場合、ステップＳ２１０において、図３と同様に、分散ファイルストレージ３０は、分散ロックを獲得させるか否かを判定する。分散ファイルストレージ３０は、分散ロックを獲得させる場合、処理をステップＳ３００に移行し、分散ロックを獲得させない場合、処理をステップＳ２５０に移行する。
【００４１】
ステップＳ３００において、分散ファイルストレージ３０は、新たに付与する分散ロックが既に付与した分散ロックと衝突する場合に、衝突を回避する処理を実行し、処理をステップＳ２２０に移行する。ステップＳ３００の例は、図５で説明する。
【００４２】
ステップＳ２２０において、分散ファイルストレージ３０は、図３と同様に、バッファストレージ対応表ＳＴＢＬを使用して、アクセス対象のデータに対応して、分散ロックの状態とデータの複製先等とを管理するための複製情報を作成する。
【００４３】
次に、ステップＳ２３２において、分散ファイルストレージ３０は、分散ロック要求を発行したノード１０に最も近いバッファストレージ２０にアクセス対象のデータを複製する必要があるか否かを判定する。分散ファイルストレージ３０は、アクセス対象のデータを複製が必要な場合、処理をステップＳ２４０に移行し、アクセス対象のデータの複製が必要ない場合、処理をステップＳ２４０に移行する。アクセス対象のデータの複製は、バッファストレージ２０がアクセス対象のデータを記憶していない場合だけでなく、バッファストレージ２０が保持するデータを最新データに更新する場合に実行される。
【００４４】
ステップＳ２４０において、分散ファイルストレージ３０は、図３と同様に、アクセス対象のデータを、分散ロック要求を発行したノード１０に最も近いバッファストレージ２０に複製し、処理をステップＳ２５０に移行する。ステップＳ２５０において、分散ファイルストレージ３０は、図３と同様に、分散ロック要求の発行元のノード１０に、分散ロック要求に対する返答を発行し、処理を終了する。
【００４５】
ノード１０の動作に戻り、分散ロック要求を発行したノード１０は、ステップＳ１１０において、図３と同様に、分散ファイルストレージ３０からの返答を待ち、分散ロック要求に対する返答を受信した場合、処理をステップＳ１２０に移行する。
【００４６】
ステップＳ１２０において、ノード１０は、図３と同様に、分散ロックの獲得を判定した場合、処理をステップＳ１３０に移行し、分散ロックが獲得できなかったことを判定した場合、処理を終了する。ステップＳ１３０において、ノード１０は、図３と同様に、自ノードで保持するバッファストレージ対応表ＳＴＢＬを参照し、アクセスするバッファストレージ２０を特定する。次に、ステップＳ１４２において、ノード１０は、ステップＳ１３０で特定したバッファストレージ２０に、データ処理等により得られた更新するデータをライトし処理を終了する。すなわち、ノード１０は、分散ファイルストレージ３０のターゲットストレージに保持されたデータを参照することなく、複数のバッファストレージ２０のうち、最も近いバッファストレージ２０に複製されたデータを更新することができる。
【００４７】
図５は、図４のステップＳ３００の動作とステップＳ３００に対応するノード１０の動作との一例を示す図である。
【００４８】
まず、ステップＳ３１０において、分散ファイルストレージ３０は、分散ロックの衝突があるか否かを判定する。例えば、分散ファイルストレージ３０は、アクセス対象のデータに対応する分散ロックを、アクセス要求の発行元のノード１０以外の他のノード１０が獲得している場合、分散ロックが衝突していると判定し、処理をステップＳ３２０に移行する。一方、分散ファイルストレージ３０は、アクセス対象のデータに対応する分散ロックが存在しない場合、分散ロックが衝突していないと判定し、ステップＳ３００の処理を終了し、処理を図４のステップＳ２２０に移行する。
【００４９】
ステップＳ３２０において、分散ファイルストレージ３０は、アクセス要求の発行元のノード１０以外の他のノード１０が獲得中の分散ロックを解除させるため、他のノードにキャンセル要求を発行し、処理をステップＳ３３０に移行する。
【００５０】
キャンセル要求を受信した他のノード１０は、ステップＳ１５０において、分散ロック要求を発行したノード１０のアクセス対象のデータである対象データをノード内で更新済みか否かを判定する。他のノード１０は、対象データを更新済みの場合、処理をステップＳ１６０に移行し、対象データを更新していない場合、処理をステップＳ１８０に移行する。例えば、各ノード１０は、データキャッシュを有しており、対象データを更新済とは、データキャッシュ内の対象データを上書きし、ダーティになっていることを示す。
【００５１】
ステップＳ１６０において、他のノード１０は、ノード内で更新した対象データを、他のノード１０に最も近いバッファストレージ２０に書き出し、処理をステップＳ１７０に移行する。ここで、他のノード１０に最も近いバッファストレージ２０は、バッファストレージ対応表ＳＴＢＬにより判定可能であり、分散ロックを獲得したときに決まっている。
【００５２】
ステップＳ１７０において、他のノード１０は、複製情報に含まれる更新フラグを、対象データの更新を示す値に設定し、処理をステップＳ１８０に移行する。ステップＳ１８０において、他のノード１０は、分散ファイルストレージ３０にキャンセル要求の返答を発行し、処理を終了する。なお、他のノード１０は、対象データを更新し、更新した対象データをバッファストレージ２０に書き出した場合、更新した対象データをキャンセル要求の返答に添付する。
【００５３】
分散ファイルストレージ３０の動作に戻り、分散ファイルストレージ３０は、ステップＳ３３０において、キャンセル要求の返答を待ち、キャンセル要求に対する返答を受信した場合、処理をステップＳ３４０に移行する。なお、実際には、キャンセル要求の返答がない場合や、キャンセル要求の返答が分散ロックを解除できないことを示す場合があるが、図５に示す例では、キャンセル要求を受けたノード１０は、ステップＳ１５０からＳ１８０の処理を実行するものとする。
【００５４】
ステップＳ３４０において、分散ファイルストレージ３０は、キャンセル要求の返答に含まれる情報に基づいて、対象データが他のノード１０により更新済みであるか否かを判定する。分散ファイルストレージ３０は、対象データが更新済みである場合、処理をステップＳ３５０に移行し、対象データが更新されていない場合、処理を終了する。
【００５５】
ステップＳ３５０において、分散ファイルストレージ３０は、複製情報に含まれる更新フラグを更新状態に設定し、処理をステップＳ３６０に移行する。ステップＳ３６０において、分散ファイルストレージ３０は、ターゲットストレージ３２に対象データを格納する場合、処理をステップＳ３７０に移行し、ターゲットストレージ３２に対象データを格納しない場合、処理を終了する。
【００５６】
例えば、分散ロックを解除するノード１０に最も近いバッファストレージ２０と、新たに分散ロックを獲得するノード１０に最も近いバッファストレージ２０とが異なる場合、ターゲットストレージ３２に対象データを格納すると判定される。分散ロックを解除するノード１０に最も近いバッファストレージ２０と、新たに分散ロックを獲得するノード１０に最も近いバッファストレージ２０とが同じ場合、ターゲットストレージ３２に対象データを格納しないと判定される。換言すれば、対象データの格納先のバッファストレージ２０が変更される場合、ターゲットストレージ３２に対象データを格納すると判定される。
【００５７】
ステップＳ３７０において、分散ファイルストレージ３０は、ターゲットストレージ３２に対象データを格納し、処理を終了する。
【００５８】
分散ファイルストレージ３０内の所定のデータを更新する分散ロック要求（ＰＷ）に基づいて、分散ロックが衝突する場合、既に分散ロックを獲得しているノード１０に分散ロックを解除させることで、データ更新用の分散ロックを排他的に設定することができる。また、更新フラグが更新された場合であって、対象データの格納先のバッファストレージ２０が変更される場合、ターゲットストレージ３２に対象データを格納することで、更新されたデータが失われることを抑止することができる。この結果、データの一貫性であるコヒーレンシを維持することができる。
【００５９】
また、新たに分散ロックを獲得するノード１０に合わせて、ノード１０に最も近いバッファストレージ２０をデータのアクセス先に設定することで、最小限のアクセスレイテンシでデータを参照および更新することができる。この結果、ネットワーク２００のトラフィック量の無駄な増大を抑止することができ、並列コンピュータシステム１００の処理性能を向上することができる。
【００６０】
以上、図１から図５に示す実施形態では、ネットワーク２００上に複数のバッファストレージ２０を分散して配置し、他のバッファストレージ２０より高速にアクセス可能なバッファストレージ２０をノード１０毎に特定する。そして、分散ロックを獲得したノード１０は、アクセス効率が最も高いバッファストレージ２０に対してデータをアクセスする。これにより、各ノード１０によるバッファストレージ２０へのアクセス効率を向上することができる。また、ネットワーク２００の通信負荷を分散することができ、ネットワーク２００のトラフィック量の増大を抑制することができる。この結果、並列コンピュータシステム１００の処理性能を向上することができる。
【００６１】
図６は、別の実施形態における並列コンピュータシステムの一例を示す。図１と同様の要素については、同じ符号を付し、詳細な説明は省略する。図６に示す並列コンピュータシステム１０２は、ネットワーク２００において、ノード１０ａに接続される経路が、ルータ４０ａを介して分散ファイルストレージ３０（３０ａ、３０ｂ）に接続される。また、ノード１０ｂ、１０ｃに接続される経路が、ルータ４０ｂを介して分散ファイルストレージ３０（３０ａ、３０ｂ）に接続される。ルータ４０（４０ａ、４０ｂ）は、ノード１０を利用して、ルータノードとして実現されてもよい。
【００６２】
各分散ファイルストレージ３０は、ノード１０で使用するデータを保持するターゲットストレージ３２（３２ａ、３２ｂ）と、ターゲットストレージ３２内のデータを管理するファイルサーバ３４（３４ａ、３４ｂ）とを有する。ファイルサーバ３４は、バッファストレージ対応表ＳＴＢＬを有し、ターゲットストレージ３２は、ファイルサーバ３４に接続される。なお、各分散ファイルストレージ３０は、データを管理するストレージサーバと、メタデータを管理するメタデータサーバを有してもよい。バッファストレージ対応表ＳＴＢＬは、図２に示すバッファストレージ対応表ＳＴＢＬと同じである。
【００６３】
例えば、バッファストレージ２０は、分散ファイルストレージ３０のターゲットストレージ３２よりもアクセス速度が速いものが使用されてもよい。例えば、ＮＶＭｅ（Non-Volatile  Memory  Express）規格で動作するバッファストレージ２０が使用されてもよい。ターゲットストレージ３２に比べてノード１０に近い位置に配置されるバッファストレージ２０に高速アクセス可能な製品を適用することで、並列コンピュータシステム１０２の性能の向上効率をさらに上げることができる。
【００６４】
図６に示す並列コンピュータシステム１０２においても、各分散ファイルストレージ３０は、ノード１０からのアクセス通知（分散ロック要求）に基づいて、アクセス対象のデータをアクセス要求元のノード１０に最も近いバッファストレージ２０に複製する。アクセス要求元のノード１０は、複製先のバッファストレージ２０にアクセスすることで、分散ファイルストレージ３０にアクセスするよりも、データを高速にアクセスできる。
【００６５】
図７は、分散ファイルストレージ３０に保持されるデータと、分散ロックによりバッファストレージ２０に持ち出されたデータとの関係を示すデータ構造の一例を示す。図７に示すデータ構造は、連結リストにより示される。連結リストは、ファイルサーバ３４により管理され、例えば、分散ロックの付与時に、分散ロック要求を発行したクライアントＣＬに転送される。なお、クライアントＣＬに転送される連結リストは、当該クライアントＣＬに対応する要素のみでもよい。連結リストの最初の要素は、ノード１０によるアクセス対象のデータである共有資源に関する情報を示し、例えば、データＡのターゲットストレージ３２内での格納先を示す。
【００６６】
連結リストの各要素は、前に接続される要素を示すポインタ値（リンク）および後に接続される要素を示すポインタ値（リンク）を格納する領域と、データ領域（複製資源記述子を格納する領域）とを有する。前または後に接続する要素がない場合、ポインタ値として例えばＮＵＬＬが格納される。データ領域には、クライアント識別子ＣＬと、複製資源記述子である複製資源識別子ｉｄ、デバイス識別子ＣＤおよび更新フラグとが格納される。
【００６７】
クライアント識別子ＣＬは、分散ロックを獲得したクライアントＣＬを識別する情報である。複製資源識別子ｉｄは、分散ロック時に複製される共有対象のデータ（ファイル）を識別する情報である。デバイス識別子ＣＤは、分散ロック時のデータの複製先のバッファストレージ２０を識別する情報である。更新フラグは、複製されたデータが更新（上書き）されたか否かを示す情報であり、例えば、”０”は、更新されていないことを示し、”１”は、更新されたことを示す。連結リストの各要素は、複製情報の一例である。クライアント識別子ＣＬは、ノード識別情報の一例であり、複製資源識別子ｉｄは、データ識別情報の一例であり、デバイス識別子ＣＤは、ストレージ識別情報の一例である。
【００６８】
図７（ａ）は、クライアントＣＬ２が獲得した分散ロック（ＰＲ）の対象のデータＡ（複製資源識別子ｉｄ１）が、バッファストレージＣＤ２に複製され、更新されていないことを示す。
【００６９】
図７（ｂ）は、図７（ａ）の状態から、クライアントＣＬ３、ＣＬ１がデータＡの分散ロック（ＰＲ）を順次獲得し、データＡ（複製資源識別子ｉｄ１）が、バッファストレージＣＤ２、ＣＤ１に保持され、更新されていないことを示す。すなわち、図７（ｂ）は、クライアントＣＬ２、ＣＬ３は、自ノードに最も近いバッファストレージＣＤ２に複製されたデータＡを参照し、クライアントＣＬ１は、自ノードに最も近いバッファストレージＣＤ２に複製されたデータＡを参照することを示す。
【００７０】
図７（ｃ）は、クライアントＣＬ２が獲得した分散ロック（ＰＷ）の対象のデータＡ（複製資源識別子ｉｄ１）が、バッファストレージＣＤ２に保持され、更新済みであることを示す。ここで、プロテクトライトＰＷは、対象データのライトだけでなくリードも許可されることを示す。なお、クライアントＣＬ２に対応する要素の更新フラグ＝”０”は、バッファストレージＣＤ２内のデータＡが更新されていないことを示すが、クライアントＣＬ２が有するデータキャッシュ等では、データＡが更新されている場合がある。
【００７１】
図７（ｄ）は、図７（ｃ）の状態に対して、クライアントＣＬ３が分散ロック要求（ＰＷ）を発行し、クライアントＣＬ２が獲得した分散ロックが無効にされ、クライアントＣＬ３の分散ロックが獲得された状態を示す。クライアントＣＬ３に対応する要素の更新フラグ＝”１”は、クライアントＣＬ３がデータＡを更新したことを示す。
【００７２】
図７（ｄ）では、例えば、クライアントＣＬ３による分散ロック要求により、クライアントＣＬ２により更新されたデータＡが、ファイルサーバ３４からのキャンセル指示により、バッファストレージＣＤ２に書き出される。そして、ファイルサーバ３４は、クライアントＣＬ２の分散ロックを無効にし、クライアントＣＬ３に分散ロックを付与し、連結リストの情報を書き換える。
【００７３】
各クライアントＣＬは、連結リストを参照することで、共有資源であるデータが、分散ロックによって複数のバッファストレージ２０に保持される場合にも、現在の自ノードの分散ロックの状態を容易に知ることができ、データのアクセスの可否を知ることができる。各クライアントＣＬは、連結リストを参照することにより、分散ロックの獲得の有無を判定できるため、分散ロックを獲得している場合には、ファイルサーバ３４に分散ロック要求を発行しなくてよい。このため、各クライアントＣＬからファイルサーバ３４への無駄な分散ロック要求の発行を抑止することができ、ネットワーク２００のトラフィック量の無駄な増大を抑止することができる。
【００７４】
図８から図１１は、クライアントＣＬがターゲットストレージ３２に記憶されたデータＡを参照するために分散ロックを獲得する動作の一例を示す。なお、図８から図１１に示す動作は、図３に示した動作フローに対応する。データＡは、データサイズに応じて、１つのファイルまたは複数のファイルに含まれてもよい。図８から図１１において、太枠で示す要素は、変化した状態を示す。なお、図８の動作の開始前、ターゲットストレージ３２が記憶するデータＡを持ち出しているクライアントＣＬは存在しない。
【００７５】
まず、状態（ａ）において、クライアントＣＬ２は、データＡを参照するために図２のバッファストレージ対応表ＳＴＢＬを参照し、自ノードに最も近いバッファストレージＣＤ２を選択する。破線枠内の”ｒｅａｄ  Ａ  ＣＤ２”は、データＡの参照とバッファストレージＣＤ２の選択とを示す。なお、予めファイル（すなわち、データＡ）の使用を開始するｏｐｅｎ処理が実行されてもよい。クライアントＣＬ２は、データＡを識別する複製資源識別子ｉｄ１と、参照（リード）を示すプロテクトリードＰＲとを含む分散ロック要求をファイルサーバ３４に発行する。なお、クライアントＣＬ２に最も近いバッファストレージＣＤ２を示す情報が、分散ロック要求（ＰＲ）に含まれてもよい。
【００７６】
次に、状態（ｂ）において、ファイルサーバ３４は、分散ロック要求に含まれる複製資源識別子ｉｄ１とプロテクトリードＰＲとに基づいて、図２に示す連結リストを参照し、データＡに対する分散ロックが衝突しないと判断する。そして、ファイルサーバ３４は、図７（ａ）に示した連結リストを作成することで、参照用の分散ロックであることを示すプロテクトリードＰＲとして、データＡとデバイス識別子ＣＤ２とを紐付ける。
【００７７】
次に、状態（ｃ）において、ファイルサーバ３４は、ターゲットストレージ３２からバッファストレージＣＤ２にデータＡを複製する。すなわち、複製資源識別子ｉｄ１に紐付けられたデータＡがバッファストレージＣＤ２に保持される。
【００７８】
次に、状態（ｄ）において、ファイルサーバ３４は、データＡに対応する連結リストのうち、クライアントＣＬ２に対応する要素を分散ロック要求の発行元ノードであるクライアントＣＬ２に転送する。これにより、クライアントＣＬ２に分散ロックが付与され、アクセス（リード）が許可される。クランアントＣＬ２は、複製資源識別子ｉｄ１（データＡ）に対する分散ロック（ＰＲ）を獲得する。
【００７９】
次に、図９の状態（ｅ）において、分散ロックを獲得したクライアントＣＬ２は、バッファストレージＣＤ２からデータＡをリードして、データ処理等に使用する。すなわち、クライアントＣＬ２は、自ノードに最も近く、アクセス効率が最も高いバッファストレージＣＤ２にアクセスすることで、他のバッファストレージ２０またはターゲットストレージ３２にアクセスする場合に比べて、データＡを高速にアクセスできる。
【００８０】
この後、状態（ｆ）において、クライアントＣＬ３は、データＡを参照するためにバッファストレージ対応表ＳＴＢＬを参照し、自ノードに最も近いバッファストレージＣＤ２を選択する。クライアントＣＬ３は、データＡを識別する複製資源識別子ｉｄ１と、参照（リード）を示すプロテクトリードＰＲとを含む分散ロック要求をファイルサーバ３４に発行する。なお、クライアントＣＬ３に最も近いバッファストレージＣＤ２を示す情報が、分散ロック要求に含まれてもよい。
【００８１】
次に、状態（ｇ）において、ファイルサーバ３４は、分散ロック要求に含まれる複製資源識別子ｉｄ１とプロテクトリードＰＲとに基づいて、連結リストを参照し、データＡに対する分散ロックが衝突しないと判断する。そして、ファイルサーバ３４は、クライアントＣＬ３のプロテクトリードＰＲとして、データＡとデバイス識別子ＣＤ２とを紐付け、連結リストに追加する。連結リストは、図７（ｂ）からクライアントＣＬ１に対応する分散ロック（ＰＲ）を除いた状態になる。データＡは、バッファストレージＣＤ２に複製済みのため、ファイルサーバ３４は、クライアントＣＬ３の分散ロック要求に基づくデータＡの複製を実施しない。
【００８２】
次に、図１０の状態（ｈ）において、ファイルサーバ３４は、データＡに対応する連結リストのうちクライアントＣＬ３に対応する要素をクライアントＣＬ３に転送することで、クライアントＣＬ３に分散ロックを付与し、アクセス（リード）を許可する。クランアントＣＬ３は、複製資源識別子ｉｄ１（データＡ）に対する分散ロック（ＰＲ）を獲得する。次に、状態（ｉ）において、分散ロックを獲得したクライアントＣＬ３は、バッファストレージＣＤ２からデータＡをリードして、データ処理等に使用する。
【００８３】
この後、状態（ｊ）において、クライアントＣＬ１は、データＡを参照するためにバッファストレージ対応表ＳＴＢＬを参照し、自ノードに最も近いバッファストレージＣＤ１を選択する。クライアントＣＬ１は、データＡを識別する複製資源識別子ｉｄ１と、参照（リード）を示すプロテクトリードＰＲとを含む分散ロック要求をファイルサーバ３４に発行する。なお、クライアントＣＬ１に最も近いバッファストレージＣＤ１を示す情報が、分散ロック要求に含まれてもよい。
【００８４】
次に、図１１の状態（ｋ）において、ファイルサーバ３４は、分散ロック要求に含まれる複製資源識別子ｉｄ１とプロテクトリードＰＲとに基づいて、連結リストを参照し、データＡに対する分散ロックが衝突しないと判断する。そして、ファイルサーバ３４は、クライアントＣＬ１のプロテクトリードＰＲとして、データＡとデバイス識別子ＣＤ１とを紐付け、連結リストに追加する。
【００８５】
次に、状態（ｌ）において、ファイルサーバ３４は、ターゲットストレージ３２からバッファストレージＣＤ１にデータＡを複製する。すなわち、複製資源識別子ｉｄ１に紐付けられたデータＡがバッファストレージＣＤ１に保持される。
【００８６】
次に、状態（ｍ）において、ファイルサーバ３４は、データＡに対応する連結リストのうち、クライアントＣＬ１に対応する要素をクライアントＣＬ１に転送することで、クライアントＣＬ１に分散ロックを付与し、アクセス（リード）を許可する。クランアントＣＬ１は、複製資源識別子ｉｄ１（データＡ）に対する分散ロック（ＰＲ）を獲得する。次に、状態（ｎ）において、分散ロックを獲得したクライアントＣＬ１は、バッファストレージＣＤ１からデータＡをリードして、データ処理等に使用する。
【００８７】
図１１（ｎ）に示すように、各ノード１０が参照するデータＡの格納先は、各ノード１０に最も近いバッファストレージ２０にそれぞれ設定される。各ノード１０は、データＡの参照先を、自ノードで保持する共通のバッファストレージ対応表ＳＴＢＬを参照することで認識することができる。したがって、各ノード１０によりデータＡを高速にアクセスできるだけでなく、ネットワーク２００のトラフィック量の無駄な増大を抑止することができ、並列コンピュータシステム１０２の処理性能を向上することができる。
【００８８】
図１２および図１３は、クライアントＣＬがターゲットストレージ３２に記憶されたデータＡを更新するために分散ロックを獲得する動作の一例を示す。なお、図１２および図１３に示す動作は、図４および図５に示した動作フローに対応する。図８から図１１と同様の動作については、詳細な説明は省略する。
【００８９】
図１２の状態（ａ）は、クライアントＣＬ２が、参照・更新用の分散ロックであることを示すプロテクトライトＰＷを獲得し、クライアントＣＬ２が自身で保持するデータＡを更新してデータＡ’にした状態を示す。クライアントＣＬ２内のデータＡはデータＡ’に更新済みであるが、クライアントＣＬ２がアクセスするバッファストレージＣＤ２内のデータＡは更新されておらず、クライアントＣＬ２が保持する連結リストの更新フラグは、”０”である。状態（ａ）での連結リストの状態は、図７（ｃ）に示される。
【００９０】
状態（ｂ）において、クライアントＣＬ３は、データＡを更新するためにバッファストレージ対応表ＳＴＢＬを参照し、自ノードに最も近いバッファストレージＣＤ２を選択する。破線枠内の”ｗｒｉｔｅ  Ａ  ＣＤ２”は、データＡの更新とバッファストレージＣＤ２の選択とを示す。クライアントＣＬ３は、データＡを識別する複製資源識別子ｉｄ１と、更新（ライト）を示すプロテクトライトＰＷとを含む分散ロック要求をファイルサーバ３４に発行する。なお、クライアントＣＬ３に最も近いバッファストレージＣＤ２を示す情報が、分散ロック要求に含まれてもよい。
【００９１】
ファイルサーバ３４は、分散ロック要求に含まれる複製資源識別子ｉｄ１とプロテクトライトＰＷとに基づいて、連結リストを参照し、データＡに対する分散ロック（プロテクトライトＰＷ）が衝突すると判断する。すなわち、ファイルサーバ３４は、データＡの分散ロック（ＰＷ）を他のクライアントＣＬ２に付与済みであるため、クライアントＣＬ２によるデータＡのアクセスを禁止し、クライアントＣＬ２からデータＡを追い出す必要があると判断する。
【００９２】
このため、状態（ｃ）において、ファイルサーバ３４は、分散ロックを獲得しているクライアントＣＬ２に、分散ロックを解除させるためのキャンセル要求を発行する。例えば、キャンセル要求は、分散ロックの解除の対象のデータＡを識別する複製資源識別子ｉｄ１を含む。また、ファイルサーバ３４は、連結リストに連結しない状態で、分散ロック要求に対応する要素を連結リストに追加する。
【００９３】
次に、状態（ｄ）において、キャンセル要求を受信したクライアントＣＬ２は、自身が所持する連結リストを参照し、更新済みのデータＡ’をバッファストレージＣＤ２に書き出し、自ノードの連結リストの更新フラグを”１”に設定する。また、クライアントＣＬ２は、データＡのアクセスを禁止する。
【００９４】
データＡ’をバッファストレージＣＤ２に書き出したクライアントＣＬ２は、図１３の状態（ｅ）において、キャンセル要求の返答をファイルサーバ３４に発行する。キャンセル要求の返答には、バッファストレージＣＤ２に書き出したデータＡ’が更新済みである情報が含まれる。キャンセル要求を受信したファイルサーバ３４は、データＡに対応する連結リストの更新フラグを”１”に設定する。そして、クライアントＣＬ２に対応する要素を連結リストから消去し、クライアントＣＬ３に対応する要素を含む連結リストを作成する。連結リストは、図７（ｄ）に示す状態になる。
【００９５】
次に、状態（ｆ）において、キャンセル要求の返答を発行したクライアントＣＬ２は、自ノードのデータキャッシュに保持されたデータＡ’を無効にし、自身が所持する連結リストを無効にする。クライアントＣＬ３に分散ロックを付与する前に、クライアントＣＬ２にキャンセル要求を発行し、データＡ’および連結リストを無効にさせることで、並列コンピュータシステム１０２内でのデータのコヒーレンシを維持することができる。これにより、並列コンピュータシステム１０２の信頼性が低下することを抑止することができる。
【００９６】
次に、状態（ｇ）において、ファイルサーバ３４は、データＡ’に対応する連結リストのうち、クライアントＣＬ３に対応する要素をクライアントＣＬ３に転送することで、クライアントＣＬ３に分散ロックを付与し、アクセスを許可する。クランアントＣＬ３は、複製資源識別子ｉｄ１（データＡ）に対する分散ロック（プロテクトライトＰＷ）を獲得する。
【００９７】
次に、状態（ｈ）において、分散ロックを獲得したクライアントＣＬ３は、バッファストレージＣＤ２からキャッシュしたデータＡ’を、例えばデータ処理に使用し、データＡ’’に更新する。なお、バッファストレージＣＤ２内のデータＡ’およびターゲットストレージ３２内のデータＡは、この時点では更新されない。但し、状態（ｅ）の動作により、連結リストの更新フラグは、”１”に設定されている。以上により、分散ロック要求（ＰＷ）が発行された場合に、連結リストを参照して分散ロックの衝突の有無を判断することで、クライアントＣＬに応じてアクセス効率が高いバッファストレージ２０が異なる場合にも、分散ロックを排他的に設定することができる。
【００９８】
図１４から図１６は、クライアントＣＬがターゲットストレージ３２に記憶されたデータＡを更新するために分散ロックを獲得する動作の別の例を示す。なお、図１４から図１６に示す動作は、図４および図５に示した動作フローに対応する。図８から図１３と同様の動作については、詳細な説明は省略する。図１４の状態（ａ）は、図１２の状態（ａ）と同じである。すなわち、状態（ａ）は、クライアントＣＬ２が、分散ロック（プロテクトライトＰＷ）を獲得し、クライアントＣＬ２が自身で保持するデータＡを更新してデータＡ’にした状態を示す。
【００９９】
状態（ｂ）において、クライアントＣＬ１は、データＡを更新するためにバッファストレージ対応表ＳＴＢＬを参照し、自ノードに最も近いバッファストレージＣＤ１を選択する。破線枠内の”ｗｒｉｔｅ  Ａ  ＣＤ１”は、データＡの更新とバッファストレージＣＤ１の選択とを示す。クライアントＣＬ１は、データＡを識別する複製資源識別子ｉｄ１と、更新（ライト）を示すプロテクトライトＰＷとを含む分散ロック要求をファイルサーバ３４に発行する。なお、クライアントＣＬ１に最も近いバッファストレージＣＤ１を示す情報が、分散ロック要求に含まれてもよい。
【０１００】
ファイルサーバ３４は、分散ロック要求に含まれる複製資源識別子ｉｄ１とプロテクトライトＰＷとに基づいて、連結リストを参照し、データＡに対する分散ロック（プロテクトライトＰＷ）が衝突すると判断する。すなわち、ファイルサーバ３４は、データＡの分散ロック（ＰＷ）を他のクライアントＣＬ２に付与済みであるため、クライアントＣＬ２からデータＡを追い出す必要があると判断する。そして、図１４の状態（ｃ）から図１５の状態（ｆ）において、クライアントＣＬ２に、更新後のデータＡ’を追い出させ、分散ロックを解除させる。図１４の状態（ｃ）から図１５の状態（ｆ）は、図１２の状態（ｃ）から図１３の状態（ｆ）と同様である。
【０１０１】
新たな分散ロック（ＰＷ）の対象は、データＡ’を保持するバッファストレージＣＤ２と異なるバッファストレージＣＤ１であり、データＡ’は、データＡに対して更新されている。このため、図１５の状態（ｇ）において、ファイルサーバ３４は、バッファストレージＣＤ２が保持するデータＡ’をリードしてターゲットストレージ３２に格納する処理を実行する。
【０１０２】
次に、図１６の状態（ｈ）において、ファイルサーバ３４は、バッファストレージＣＤ２からデータＡ’を消去する。次に、状態（ｉ）において、ファイルサーバ３４は、ターゲットストレージ３２からバッファストレージＣＤ１にデータＡ’を複製する。すなわち、複製資源識別子ｉｄ１に紐付けられたデータＡ’がバッファストレージＣＤ１に保持される。次に、状態（ｊ）において、ファイルサーバ３４は、データＡに対応する連結リストのうち、クライアントＣＬ１に対応する要素をクライアントＣＬ１に転送することで、クライアントＣＬ１に分散ロックを付与し、アクセスを許可する。クランアントＣＬ１は、複製資源識別子ｉｄ１（データＡ’）に対する分散ロック（プロテクトライトＰＷ）を獲得する。
【０１０３】
次に、状態（ｋ）において、分散ロックを獲得したクライアントＣＬ１は、バッファストレージＣＤ１からキャッシュしたデータＡ’を、例えばデータ処理に使用し、データＡ’’に更新する。なお、バッファストレージＣＤ１内のデータＡ’およびターゲットストレージ３２内のデータＡ’は、この時点では更新されない。但し、図１５の状態（ｅ）の動作により、連結リストの更新フラグは、”１”に設定されている。
【０１０４】
なお、ターゲットストレージ３２が記憶するデータＡをクライアントＣＬのいずれも持ち出していない状態で、クライアントＣＬのいずれかが分散ロック要求（ＰＷ）を発行した場合、並列コンピュータシステム１０２は、図８と同様に動作する。分散ロック要求（ＰＷ）が発行された場合の動作は、図８の状態（ａ）の”ｒｅａｄ  Ａ”を”ｗｒｉｔｅ  Ａ”に置き換え、分散ロック要求の”ｉｄ１、ＰＲ”を”ｉｄ１、ＰＷ”に変更することで説明される。
【０１０５】
以上、図８から図１６では、バッファストレージ対応表ＳＴＢＬに設定された情報に基づいて、バッファストレージ２０を識別するデバイス識別子を連結リストの各要素に設定することで、各クライアントＣＬは、最も近いバッファストレージ２０にアクセスできる。換言すれば、クライアントＣＬに応じてアクセス効率が高いバッファストレージ２０が異なる場合にも、簡易な連結リストを用いて、最適なバッファストレージ２０にアクセスさせる制御をクライアントＣＬ毎に実施することができる。
【０１０６】
以上、図６から図１６に示す実施形態においても、図１から図５に示す実施形態と同様に、各ノード１０によるバッファストレージ２０へのアクセス効率を向上することができる。また、ネットワーク２００の通信負荷を分散することができ、ネットワーク２００のトラフィック量の増大を抑制することができる。この結果、並列コンピュータシステム１０２の処理性能を向上することができる。
【０１０７】
図１７は、別の実施形態における並列コンピュータシステムの一例を示す。図１および図６と同様の要素については、同じ符号を付し、詳細な説明は省略する。図１７に示す並列コンピュータシステム１０４は、メッシュネットワーク２０２上に配置された複数のノード１０および複数のルータノード４０と、各ルータノード４０に接続されたバッファストレージ２０とを有する。
【０１０８】
ルータノード４０は、メッシュネットワーク２０２上に分散して配置される。メッシュネットワーク２０２上に配置されるルータノード４０の数（配置頻度）は、図１７に限定されない。ルータノード４０は、メッシュネットワーク２０２の交点以外に配置されてもよい。
【０１０９】
また、並列コンピュータシステム１０４は、Ｉ／Ｏ(Input/Output）ネットワーク３００を介して各ルータノード４０に接続された複数の分散ファイルストレージ３０（３０ａ、３０ｂ）を有する。なお、メッシュネットワーク２０２の代わりにトーラスネットワークや他のネットワークが適用されてもよく、ネットワークの次元は、３次元以上でもよい。各分散ファイルストレージ３０は、データを管理するストレージサーバと、メタデータを管理するメタデータサーバを有してもよい。
【０１１０】
並列コンピュータシステム１０４の動作は、図３から図５および図８から図１６に示す動作と同様である。すなわち、並列コンピュータシステム１０４においても、各ノード１０によるバッファストレージ２０へのアクセス効率を向上することができる。また、ネットワーク２００の通信負荷を分散することができ、メッシュネットワーク２０２のトラフィック量の増大を抑制することができる。この結果、並列コンピュータシステム１０４の処理性能を向上することができる。
【０１１１】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１１２】
１０（１０ａ、１０ｂ）  ノード
２０（２０ａ、２０ｂ）  バッファストレージ
３０（３０ａ、３０ｂ、３０ｃ）  分散ファイルストレージ
３２（３２ａ、３２ｂ、３２ｃ）  ターゲットストレージ
３４（３４ａ、３４ｂ）  ファイルサーバ
４０（４０ａ、４０ｂ）  ルータ
１００、１０２、１０４  並列コンピュータシステム
２００                  ネットワーク
２０２                  メッシュネットワーク
３００                  Ｉ／Ｏネットワーク
ＣＤ（ＣＤ１、ＣＤ２）  バッファストレージ
ＣＬ（ＣＬ１、ＣＬ２、ＣＬ３）  クライアント
ＰＲ          プロテクトリード
ＰＷ          プロテクトライト
ＳＴＢＬ      バッファストレージ対応表
【図１】
2020155031.tif 000003
【図２】
2020155031.tif 000004
【図３】
2020155031.tif 000005
【図４】
2020155031.tif 000006
【図５】
2020155031.tif 000007
【図６】
2020155031.tif 000008
【図７】
2020155031.tif 000009
【図８】
2020155031.tif 000010
【図９】
2020155031.tif 000011
【図１０】
2020155031.tif 000012
【図１１】
2020155031.tif 000013
【図１２】
2020155031.tif 000014
【図１３】
2020155031.tif 000015
【図１４】
2020155031.tif 000016
【図１５】
2020155031.tif 000017
【図１６】
2020155031.tif 000018
【図１７】
2020155031.tif 000019