(57)【特許請求の範囲】
【請求項１】
プロセッサと記憶部を備えてデータ及び当該データに関連する情報を示すメタデータを前記記憶部に保持する第１の装置と、プロセッサとキャッシュを備えて前記第１の装置のデータ及びメタデータのコピーを前記キャッシュに保持する第２の装置と、前記第１の装置と複数の第２の装置を接続するネットワークとを備えた計算機システムのキャッシュ制御方法であって、
前記第２の装置が、前記第１の装置のデータ及びメタデータを前記キャッシュにコピーする第１のステップと、
前記第１の装置が、前記第２の装置で前記記憶部のデータにアクセスしたときの転送時間と転送サイズ及びアクセスの遅延時間とを第１のアクセス情報として取得する第２のステップと、
前記第１の装置が、前記複数の第２の装置間で前記キャッシュのデータにアクセスしたときの転送時間と転送サイズ及びアクセスの遅延時間とを第２のアクセス情報として取得する第３のステップと、
前記第２の装置が前記第１の装置のメタデータを取得して前記キャッシュに保持し、当該保持したメタデータに基づいて前記キャッシュにコピーしたデータを利用可能か否かを判定する第１の判定モードと、前記第２の装置が前記第１の装置のメタデータを取得し、当該取得したメタデータに基づいて前記キャッシュにコピーしたデータを利用可能か否かを判定する第２の判定モードと、の何れかを前記データ毎の前記第１のアクセス情報と第２のアクセス情報から前記第１の装置が設定する第４のステップと、を含み、
前記第４のステップは、
前記第１の判定モードにおいて前記第２の装置が前記第１の装置のデータにアクセスするのに必要な第１のアクセス時間を、前記取得した第１のアクセス情報から演算するステップと、
前記第２の判定モードにおいて前記第２の装置が前記複数の第２の装置間でデータにアクセスするのに必要な第２のアクセス時間を、前記取得した第２のアクセス情報から演算するステップと、
前記データ毎に前記第１のアクセス時間と第２のアクセス時間を比較して、前記第１のアクセス時間が前記第２のアクセス時間よりも短い場合は、前記データに第１の判定モードを設定し、前記第２のアクセス時間が前記第１のアクセス時間よりも短い場合は、前記データに第２の判定モードを設定するステップと、
を有することを特徴とする計算機システムのキャッシュ制御方法。
【請求項２】
請求項１に記載の計算機システムのキャッシュ制御方法であって、
前記第２の装置は、アクセスするデータについて前記第１の装置から前記第１の判定モードと第２の判定モードの何れか一方を受け付けて、当該受け付けた第１の判定モードまたは第２の判定モードで前記データにアクセスすることを特徴とする計算機システムのキャッシュ制御方法。
【請求項３】
請求項１に記載の計算機システムのキャッシュ制御方法であって、
前記第２の装置は、前記データに対する操作要求を受け付けて、前記操作要求が参照の場合は前記第１の判定モードで前記データにアクセスし、前記操作要求が更新の場合は前記第２の判定モードで前記データにアクセスすることを特徴とする計算機システムのキャッシュ制御方法。
【請求項４】
請求項１に記載の計算機システムのキャッシュ制御方法であって、
前記第２の装置はネットワークを介して接続されたクライアント装置から前記データに対する操作要求を受け付けることを特徴とする計算機システムのキャッシュ制御方法。
【請求項５】
プロセッサとキャッシュを備えて、ネットワークを介して接続されたマネージャ装置に保持されたデータ及び該データに関連する情報を示すメタデータにアクセスするノード装置であって、
前記ノード装置は、
前記データのコピーを保持する際に前記マネージャ装置から前記メタデータを取得して前記キャッシュに保持し、前記キャッシュに保持したメタデータを用いて前記キャッシュのデータを前記マネージャ装置の前記データに代えて利用できるか否かを判定する第１の判定モードと、前記データのコピーを利用する際に前記マネージャ装置から前記メタデータを取得し、前記取得したメタデータを用いて前記キャッシュのデータを前記マネージャ装置の前記データに代えて利用できるか否かを判定する第２の判定モードと、の何れか一方を選択し、
前記データに対する操作要求を受け付けたときには、前記選択した第１の判定モードまたは第２の判定モードで、前記キャッシュにコピーしたデータを利用できるか否かを判定し、前記キャッシュにコピーしたデータを利用できる場合には前記キャッシュのデータで操作要求に応答し、前記キャッシュにコピーしたデータを利用できない場合には前記マネージャ装置に対してデータを要求して、前記マネージャ装置から取得したデータで前記操作要求に応答することを特徴とするノード装置。
【請求項６】
請求項５に記載のノード装置であって、
前記操作要求のデータについて前記マネージャ装置から前記第１の判定モードと第２の判定モードの何れか一方を受け付けて、当該受け付けた第１の判定モードまたは第２の判定モードで前記データにアクセスすることを特徴とするノード装置。
【請求項７】
請求項５に記載のノード装置であって、
前記データに対する操作要求を受け付けて、前記操作要求が参照の場合は前記第１の判定モードで前記データにアクセスし、前記操作要求が更新の場合は前記第２の判定モードで前記データにアクセスすることを特徴とするノード装置。
【請求項８】
請求項５に記載のノード装置であって、
ネットワークを介して接続されたクライアント装置から前記データに対する操作要求を受け付けることを特徴とするノード装置。
【請求項９】
プロセッサと記憶部を備えてデータ及び当該データに関連する情報を示すメタデータを前記記憶部に保持し、ネットワークを介して接続された複数のノード装置から前記データ及びメタデータの操作要求を受け付けるマネージャ装置であって、
前記複数のノード装置のそれぞれに前記データを送信する際、または、前記複数のノード装置のそれぞれから前記データを更新するデータを受信する際に、前記送信または前記受信に要した転送時間と、前記送信または前記受信を行ったデータのサイズである転送サイズと、前記マネージャ装置から前記ノード装置までの往復遅延時間とをアクセス情報として取得し、
前記ノード装置が前記記憶部のデータにアクセスするのに必要な第１のアクセス時間を、前記取得したアクセス情報から演算し、前記ノード装置間でデータにアクセスするのに必要な第２のアクセス時間を、前記取得したアクセス情報から演算し、
前記データ毎に前記第１のアクセス時間と第２のアクセス時間を比較して、前記第１のアクセス時間が前記第２のアクセス時間よりも短い場合は、前記ノード装置が前記記憶部のメタデータを取得してキャッシュに保持して、当該保持したメタデータに基づいて前記キャッシュにコピーしたデータを利用可能か否かを判定する第１の判定モードを設定し、前記第２のアクセス時間が前記第１のアクセス時間よりも短い場合は、前記ノード装置が前記記憶部のメタデータを取得し、当該取得したメタデータに基づいて前記キャッシュにコピーしたデータを利用可能か否かを判定する第２の判定モードを設定することを特徴とするマネージャ装置。
【請求項１０】
プロセッサと記憶部を備えてデータ及び当該データに関連する情報を示すメタデータを前記記憶部に保持するマネージャ装置と、プロセッサとキャッシュを備えて前記マネージャ装置のデータ及びメタデータのコピーを前記キャッシュに保持するノード装置と、前記マネージャ装置と複数のノード装置を接続するネットワークとを備えた計算機システムであって、
前記マネージャ装置が、前記複数のノード装置のそれぞれに前記データを送信する際、または、前記複数のノード装置のそれぞれから前記データを更新するデータを受信する際に、前記送信または前記受信に要した転送時間と、前記送信または前記受信を行ったデータのサイズである転送サイズと、前記マネージャ装置から前記ノード装置までの往復遅延時間とをアクセス情報として取得し、
前記マネージャ装置は、前記ノード装置が前記記憶部のデータにアクセスするのに必要な第１のアクセス時間を、前記取得したアクセス情報から演算し、前記ノード装置間でデータにアクセスするのに必要な第２のアクセス時間を、前記取得したアクセス情報から演算し、
前記マネージャ装置は、前記データ毎に前記第１のアクセス時間と第２のアクセス時間を比較して、前記第１のアクセス時間が前記第２のアクセス時間よりも短い場合は、前記ノード装置が前記記憶部のメタデータを取得してキャッシュに保持して、当該保持したメタデータに基づいて前記キャッシュにコピーしたデータを利用可能か否かを判定する第１の判定モードを設定し、前記第２のアクセス時間が前記第１のアクセス時間よりも短い場合は、前記ノード装置が前記記憶部のメタデータを取得し、当該取得したメタデータに基づいて前記キャッシュにコピーしたデータを利用可能か否かを判定する第２の判定モードを設定することを特徴とする計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・ネットワーク分野に関する。具体的にはキャッシュの制御技術に関する。
【背景技術】
【０００２】
近年、サーバの管理及び運用効率化を目的として、データセンタ等の中央拠点にサーバを集約し、複数の拠点から広域網を介して利用することが活発化している。その代表例が、中央拠点のサーバのデータを各拠点のクライアントが利用するデータ集約である。データ集約では、各拠点のクライアントが広域網を介してサーバにデータアクセスを行う。拠点内の拠点網を介したデータアクセスに比べ、このような広域網を介したデータアクセスでは、遅延時間の増加や実効帯域の低下によってデータアクセス時間が増加する。データアクセス時間の増加はデータを利用する処理の性能劣化原因となるため問題となる。
【０００３】
データ集約におけるデータアクセスパターンは、対象データの内容や時期で異なり、例えば拠点の機器管理簿のように単一拠点を中心に参照または更新される場合や、拠点の地図など、更新はまれで多数の拠点から参照される場合がある。
【０００４】
データアクセスにおいては、クライアントがアクセスするデータ本体に加えて、データの名前や種類等、データに関連する情報であるメタデータが必要になる。メタデータの例としては、実データの要約（チェックサム）や更新時刻、アクセス権限などが挙げられる。クライアントがアクセスするデータ本体とメタデータとを区別するため、データ本体を実データと呼ぶ。
【０００５】
広域網を介したサーバへのデータアクセスを高速化する技術に、クライアント近傍のキャッシュに実データのコピーを保持し、データアクセス時にキャッシュの実データを利用して広域網を介した通信を抑制するキャッシュ技術がある。以下、拠点に設けたキャッシュにより実データを保持する主体をノードと呼ぶ。キャッシュ技術では、ノードがキャッシュに保持する実データを利用する時に、最新性やアクセス権等の観点から実データを利用可能であるかを判定する処理（利用可能性判定処理）を行う必要があり、この処理にメタデータが利用される。
【０００６】
一般にキャッシュ技術においてメタデータはサーバで管理される。これは実データと比べてメタデータのサイズが小さくデータ転送にかかる時間が短いためと、複数のノードでメタデータを保持した場合に、サーバに保持されたメタデータが最新か否かの判定が必要となり制御が複雑となるためである。しかし、メタデータをサーバで管理した場合、各ノードは利用可能性判定処理のため、サーバのメタデータに広域網を介してアクセスする必要が生じる。メタデータへのアクセスは、サイズが小さいので広域網利用による実効帯域低下の影響は少ないが、遅延時間増加の影響を受け数十ミリ秒〜数秒の時間がかかる。キャッシュに保持する実データへのアクセスには数ミリ秒〜数十ミリ秒しかかからないため、サーバへのアクセスが不要な利用可能性の判定処理が望ましい。
【０００７】
これに対し、アクセス頻度に基づいて特定のデータにアクセスを行うノードにメタデータの管理を任せる従来技術（例えば、特許文献１）がある。特許文献１は、データのまとまりをファイルという形で扱い、キャッシュを用いたファイルアクセスの高速化に関するものである。特許文献１では、あるファイルに頻繁にアクセスするノードをHomeとし、Homeで当該ファイルの実データとメタデータをキャッシュに保持し、Homeがメタデータを管理する。Home以外のノードでは、実データをキャッシュに保持し、ファイル参照のOpen時にHomeにメタデータを問い合わせる。Homeは管理するメタデータを用いて応答すると共に、問い合わせを元にClose時まで他ノードがキャッシュを利用中であることを管理する。データ更新を行う権限は最初はHomeのみが持ち、この権限をOwner権限と呼ぶ。データを更新する時は、Homeがキャッシュを利用中のノードにキャッシュが無効になることを通知する。Home以外のノードが更新する場合は、更新するノードにOwner権限を一時的に移す。Owner権限を移されたノードは期限内に更新を行い、Homeに更新を通知し、Owner権限をHomeに戻す。特許文献１では、ファイルに頻繁にアクセスするノードで実データの保持に加えてメタデータを管理し、当該ノードからの当該ファイルへアクセスする際に、広域網を介した通信なしで利用可能性の判定処理を行って、ファイルアクセスを高速化している。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】米国特許出願公開第２００７／０１６２４６２号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上記特許文献１では、Homeが頻繁にアクセスするファイルに関して、Homeであれば他ノードに通信せずに対象のファイルを参照でき、ファイルアクセスが高速化される。しかし、Home以外のノードが当該ファイルを参照する場合は、Homeのメタデータにアクセスするため、Homeに対して広域網を介した通信が必要となる。その結果、複数のノードが同じデータを参照する場合、Homeとなるノード以外では、メタデータをサーバで管理した場合に比べてデータアクセスを高速化できない、という問題があった。
【００１０】
すなわち、複数ノードが同じデータを参照する際に、メタデータへのアクセスに広域網を介した通信が必要となり、高速化が限定的となることが課題であった。このようなデータアクセスパターンは、例えば複数のノードが特定のノードの地図を参照する場合など頻繁に発生する。
【００１１】
そこで本発明は、上記問題点に鑑みてなされたもので、メタデータを取得するためのネットワークの通信量を削減して、データアクセスを高速化することを目的とする。
【課題を解決するための手段】
【００１２】
本発明は、プロセッサと記憶部を備えてデータ及び当該データに関連する情報を示すメタデータを前記記憶部に保持する第１の装置と、プロセッサとキャッシュを備えて前記第１の装置のデータ及びメタデータのコピーを前記キャッシュに保持する第２の装置と、前記第１の装置と複数の第２の装置を接続するネットワークとを備えた計算機システムのキャッシュ制御方法であって、前記第２の装置が、前記第１の装置のデータ及びメタデータを前記キャッシュにコピーする第１のステップと、前記第１の装置が、前記第２の装置が前記記憶部のデータにアクセスしたときの転送時間と転送サイズ及びアクセスの遅延時間とを第１のアクセス情報として取得する第２のステップと、前記第１の装置が、前記複数の第２の装置間で前記キャッシュのデータにアクセスしたときの転送時間と転送サイズ及びアクセスの遅延時間とを第２のアクセス情報として取得する第３のステップと、前記第２の装置が前記第１の装置のメタデータを取得して前記キャッシュに保持し、当該保持したメタデータに基づいて前記キャッシュにコピーしたデータを利用可能か否かを判定する第１の判定モードと、前記第２の装置が前記第１の装置のメタデータを取得し、当該取得したメタデータに基づいて前記キャッシュにコピーしたデータを利用可能か否かを判定する第２の判定モードと、の何れかを前記データ毎の前記第１のアクセス情報と第２のアクセス情報から前記第１の装置が設定する第４のステップと、を含み、前記第４のステップは、前記第１の判定モードにおいて前記第２の装置が前記第１の装置のデータにアクセスするのに必要な第１のアクセス時間を、前記取得した第１のアクセス情報から演算するステップと、前記第２の判定モードにおいて前記第２の装置が前記複数の第２の装置間でデータにアクセスするのに必要な第２のアクセス時間を、前記取得した第２のアクセス情報から演算するステップと、前記データ毎に前記第１のアクセス時間と第２のアクセス時間を比較して、前記第１のアクセス時間が前記第２のアクセス時間よりも短い場合は、前記データに第１の判定モードを設定し、前記第２のアクセス時間が前記第１のアクセス時間よりも短い場合は、前記データに第２の判定モードを設定するステップと、を有する。
【発明の効果】
【００１３】
本発明によれば、データ毎のアクセスパターンに応じて、各第２の装置（ノード装置）が第１の装置（マネージャ装置）のデータにアクセスする際、各ノード装置が保持する当該データのコピーを利用可能かの判定するに必要となるメタデータの取得のためのネットワーク経由の通信量が削減されるため、データアクセスを高速化できるとともに、ネットワークを効率的に利用できる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施形態における計算機システムの構成の一例を示すブロック図である。
【図２】本発明の第１の実施形態におけるシステムの状態遷移を示す説明図である。
【図３】本発明の第１の実施形態におけるノード装置の状態遷移を示す説明図である。
【図４】本発明の第１の実施形態におけるファイルに対する計算機システムのモードとノード装置の状態の関係を示す説明図である。
【図５】本発明の第１の実施形態におけるノード装置およびマネージャ装置が使用するマスタ管理表の一例を表す説明図である。
【図６】本発明の第１の実施形態におけるノード装置が使用する使用中情報管理表の一例を表す説明図である。
【図７】本発明の第１の実施形態におけるマネージャ装置が使用するアクセス管理表の一例を示す説明図である。
【図８】本発明の第１の実施形態におけるマネージャ装置が使用する使用ファイル管理表の一例を表す説明図である。
【図９】本発明の第１の実施形態におけるノード装置全体の処理を説明するフローチャートである。
【図１０】本発明の第１の実施形態におけるノード装置が実行するファイルアクセス処理を説明するフローチャートである。
【図１１】本発明の第１の実施形態におけるノード装置が実行するオープン処理を説明するフローチャートである。
【図１２】本発明の第１の実施形態におけるノード装置が実行するメタデータの参照処理を説明するフローチャートである。
【図１３】本発明の第１の実施形態におけるノード装置が実行する実データの参照処理を説明するフローチャートである。
【図１４】本発明の第１の実施形態におけるノード装置が実行する実データまたはメタデータ更新処理を説明するフローチャートである。
【図１５】本発明の第１の実施形態におけるノード装置が実行するクローズ更新処理を説明するフローチャートである。
【図１６】本発明の第１の実施形態におけるノード装置が実行するマネージャ対応処理を説明するフローチャートである。
【図１７】本発明の第１の実施形態におけるマネージャ装置全体の処理を説明するフローチャートである。
【図１８】本発明の第１の実施形態におけるマネージャ装置が実行するマスタ更新処理を説明するフローチャートである。
【図１９】本発明の第１の実施形態におけるマネージャ装置が実行するモード変更処理を説明するフローチャートである。
【図２０】本発明の第１の実施形態におけるマネージャ装置が実行するファイルアクセス処理を説明するフローチャートである。
【図２１】本発明の第１の実施形態におけるマネージャ装置が実行するオープン処理を説明するフローチャートである。
【図２２】本発明の第１の実施形態におけるマネージャ装置が実行するクローズ処理を説明するフローチャートである。
【図２３】本発明の第２の実施形態における計算機システムの構成例を表すブロック図である。
【発明を実施するための形態】
【００１５】
以下、本発明の一実施形態を添付図面に基づいて説明する。
【００１６】
＜第１の実施形態＞
＜システム構成＞
まず、計算機システムの構成を説明する。
【００１７】
図１は、本発明の第１の実施形態における計算機システムの構成例を表すブロック図である。
【００１８】
本実施形態の計算機システムは、マネージャ装置１０１、ノード装置１０２およびノード装置１０３の３つの計算機を備え、広域網１０４を介して互いに接続される。本実施形態の計算機システムでは、ノード装置１０２およびノード装置１０３から、マネージャ装置１０１の保持するデータへの高速なアクセスを目的とする。本実施形態では、マネージャ装置１０１、ノード装置１０２およびノード装置１０３の各計算機上でプログラムを実行する。各計算機は以下のハードウェア構成をとる。
【００１９】
マネージャ装置１０１は、広域網１０４を介してノード装置１０２およびノード装置１０３と通信する。マネージャ装置１０１は、ＣＰＵ１０５、記憶装置１０６、入出力装置１０７およびネットワークインタフェース１０８より構成され、これらは共通バス１０９を介して互いに接続される。ＣＰＵ１０５は中央演算装置（Central Processing Unit）であり、記憶装置１０６上に展開されたプログラムを実行することで、マネージャ装置１０１が備える機能を実現する。記憶装置１０６はＣＰＵ１０５によって実行されるプログラムならびに、当該プログラムが利用するデータおよび、当該プログラムが実行されることで生成されるデータを格納する。記憶装置１０６は例えばＤＲＡＭ（Dynamic Random Access Memory）やフラッシュメモリに代表される不揮発性半導体メモリ、ハードディスク、光ディスク等のデータを記憶できる装置（マネージャ装置１０１外に設置されネットワークインタフェース１０８もしくは入出力装置１０７を介して通信される装置を含む）、またはこれらを組み合わせたものが考えられる。
【００２０】
本実施形態では、記憶装置１０６はプログラムであるマネージャ制御部１１５およびストレージ制御部１１６が展開され、ＣＰＵ１０５によって実行される。記憶装置１０６には、マスタ管理表１１７、使用ファイル管理表１１８およびアクセス管理表１１９が格納される。これらの表（テーブル）に含まれるデータは、マネージャ制御部１１５によって作成された情報であり詳細については後述する。また、マネージャ制御部１１５の動作についても後述する。
【００２１】
ストレージ制御部１１６はマネージャ制御部１１５が利用するデータを記憶装置１０６内の所定の領域（ストレージ領域１０６０）に格納するプログラムであり、例えばファイルシステムやデータベースシステム、キーバリューストア等が考えられる。なお、ストレージ領域１０６０は、記憶装置１０６内の所定の領域であり、例えば、不揮発性半導体メモリやハードディスク等の不揮発性記憶領域と、ＤＲＡＭ等で構成される揮発性記憶領域を含む。ストレージ制御部１１６は、例えば、マネージャ制御部１１５が要求したデータを不揮発性記憶領域から揮発性記憶領域に読み込んだり、揮発性記憶領域のデータを不揮発性記憶領域へ書き込む等の所定の処理を行う。
【００２２】
ストレージ制御部１１６は記憶装置１０６のストレージ領域１０６０に格納するデータを管理するための情報であるメタデータも格納する。メタデータとは、例えば、データの名前、ディレクトリなどの階層情報、アクセス権限、所有者情報、データ操作の時刻、データの要約、関連するデータの場所、データの物理的または論理的な保存場所、データの形式、他のデータとの関係性、有効期限、著作者情報、データの取り扱い規則などデータの属性情報が考えられる。なお、データの内容そのものは、実データとする。本実施形態では、データをファイルという単位で扱っており、ファイルの内容が実データで、ファイルの属性などを示す情報がメタデータとなる。
【００２３】
ストレージ制御部１１６は、例えばマネージャ制御部１１５に組み込んで統合したり、マネージャ制御部１１５とは別の装置で実施したりし、データアクセス性能や製造コスト等を調整してもよい。記憶装置１０６にはマネージャ制御部１１５によって作成された、他のデータが格納されてもよい。
【００２４】
入出力装置１０７は、マネージャ装置１０１に対して情報の入出力を行う装置である。入出力装置１０７は、例えば、スイッチ、キーボード、マウス、マイクロホン、ビデオカメラ、プリンタ、ディスプレイまたはスピーカなどの機器が考えられる。また、入出力装置１０７には、信号ケーブルまたは電波および赤外線等の無線を介して行うシリアル通信などの通信によるものも含まれる。マネージャ装置１０１は、入出力装置１０７によって、ユーザまたは管理者からの指示を受け付けたり、結果を出力したりすることが可能となる。
【００２５】
ネットワークインタフェース１０８は、広域網１０４を介して他の計算機と通信するための装置であり、例えばイーサネット（登録商標、以下同じ）カードなどが考えられる。計算機間の通信は、ＣＰＵ１０５の指示に従ってネットワークインタフェース１０８を通して行われる。
【００２６】
ただし、他の機器と通信が可能であればよいため、通信方法はイーサネットに限らず、例えば、シリアル通信などが考えられる。イーサネット以外の通信方法を用いることによって、消費電力を減らしたり、通信速度を上げたり、又は情報伝達の安全性を向上したりできる。
【００２７】
また、共通バス１０９は、マネージャ装置１０１の各構成要素間の通信を行うためのものであるが、本発明ではこれに限定されない。各構成要素間で必要な通信を行えるようになっていれば、共通バスを用いる以外の方法によって接続されてもよい。例えば、各構成要素を直接接続することによって、要素間の接続を最適化し、処理に必要な消費電力を減らしたり、処理効率を上げたりすることが可能となる。
【００２８】
ノード装置１０２は、広域網１０４を介してマネージャ装置１０１およびノード装置１０３と通信する。ノード装置１０２は、ＣＰＵ１１０、記憶装置１１１、入出力装置１１２、ネットワークインタフェース１１３および共通バス１１４から構成される。この構成はＣＰＵ１０５、記憶装置１０６、入出力装置１０７、ネットワークインタフェース１０８および共通バス１０９から構成されるマネージャ装置１０１と同じであり、以下ではマネージャ装置１０１の構成要素と同名の構成要素の説明は省略し、ノード装置１０２の記憶装置１１１に格納されるデータを説明する。
【００２９】
本実施形態では、記憶装置１１１はプログラムであるノード制御部１２０およびキャッシュ制御部１２１が展開され、ＣＰＵ１１０によって実行される。なお、記憶装置１１１は不揮発性半導体メモリやハードディスク等の不揮発性記憶領域と、ＤＲＡＭ等で構成される揮発性記憶領域を含む。ＣＰＵ１１０は、実行するプログラムを不揮発性記憶領域から揮発性記憶領域にロードしてから実行する。また、揮発性記憶領域には頻繁に利用するデータを一時的に格納するキャッシュ領域１２４がキャッシュ制御部１２１により設定される。
【００３０】
記憶装置１１１には、マスタ管理表１２２および使用中情報管理表１２３が格納される。これらの表に含まれるデータは、ノード制御部１２０によって作成された情報であり詳細は後述する。また、ノード制御部１２０の動作についても後述する。キャッシュ制御部１２１はノード制御部１２０が利用するデータをキャッシュ領域１２４に格納するプログラムであり、任意のデータを格納し、また、読み出すことが可能である。キャッシュ制御部１２１としては、例えばファイルシステムやデータベースシステム、キーバリューストア等が考えられる。キャッシュ制御部１２１は、例えばノード制御部１２０に組み込んで統合したりノード制御部１２０とは別の装置で実施したりし、データアクセス性能や製造コストを調整してもよい。なお、記憶装置１１１にはノード制御部１２０によって作成された、他のデータが格納されてもよい。
【００３１】
ノード装置１０３は、広域網１０４を介してマネージャ装置１０１およびノード装置１０２と通信する。ノード装置１０３の構成はノード装置１０２と同一である。
【００３２】
広域網１０４は、狭帯域かつ高遅延のＷＡＮ（Wide Area Network）である。本実装形態では、本発明の効果が大きくなるよう広域網１０４のネットワークをＷＡＮとしたが、本発明はこれに限らず、マネージャ装置１０１、ノード装置１０２およびノード装置１０３が互いに通信できればバス接続や無線通信等、他の通信手段であってもかまわない。他の通信手段を用いることで、アクセス性能の改善や、配置の自由度確保、コストやエネルギーに対する処理効率の改善等が可能となる。
【００３３】
なお、本実施形態では、３つの計算機から構成される計算機システムを例に説明するが、本発明における計算機の個数はこれに限定されない。各計算機が備える機能は各計算機上で実行されるプログラムによって実現されるため、計算機の数は１以上であればよい。例えば、計算機システムがマネージャ装置１０１のみを備える構成である場合、マネージャ装置１０１、ノード装置１０２およびノード装置１０３の機能を備えるプログラムをマネージャ装置１０１上で実行し、管理しやすくしてもよい。また、ノード装置の数を増やして、より多拠点での利用や負荷分散を可能にしてもよい。
【００３４】
さらに、本発明においては、本実施形態においてプログラムやデータ（管理表等）の個数を１個と言及した場合でも、実際に実行されるプログラムや、保持されるデータの個数は１個に限定されるものではなく、同一または複数の計算機上で、分散して実行または保持され、協調動作して論理的に１個のプログラムやデータとなるように構成してもよい。このような構成をとることによって計算機システムの負荷分散が可能となる。
【００３５】
また、本実施形態では、マネージャ装置１０１、ノード装置１０２およびノード装置１０３はそれぞれ単一のＣＰＵを備える構成で説明したが、それぞれの装置が物理的または論理的に複数のＣＰＵを搭載していてもよい。各計算機の機能はプログラムがＣＰＵによって実行されることで実現されているが、実現される機能自体はプログラムが実行されるＣＰＵの個数には依存しないためである。また、各装置に搭載されるネットワークインタフェース、入出力装置、記憶装置の個数についても、同様にそれぞれ１つに限るものではない。
【００３６】
また、本実施形態では、記憶装置１０６および記憶装置１１１に格納されるプログラムによって実現される機能のうち、一部または全部の機能を、ハードウェアとして実装してもよい。ハードウェアとして実装することで、例えば、処理の高速化および低消費電力化が可能となる。
【００３７】
また、仮想マシンのように、当該ハードウェアが備える機能をプログラムとして実現してもよい。ハードウェアが備える機能をプログラムとして実現（仮想化）することで、例えば、設置スペースを削減したり、管理を単純化したりできる。
【００３８】
また、後述する処理の順序については、後述する順序に限るものではなく、処理の依存関係が許すならば、並列で同時に実行したり、順序を入れ替えて実行したりしてもよい。例えば、並列実行することによって処理時間を短縮したり、順序を入れ替えることによって待ち時間を減らしたりすることが可能となる。
【００３９】
＜計算機システムの動作説明＞
続いて、本実施形態における計算機システムの動作の概略を説明する。
【００４０】
本実施形態では、ノード装置１０２およびノード装置１０３が、マネージャ装置１０１のストレージ制御部１１６に格納されたファイルにアクセスする。ただし、本発明におけるデータの表現方法はファイルに限定されるものではなく、データベースに格納するデータ等、一般的なデータにも適用可能である。以下、ノード装置１０２によるファイルアクセスの例について説明する。
【００４１】
本実施形態では、ノード装置１０２は、入出力装置１１２を通して行われるユーザの指示を契機にしてファイルアクセスを行う。なお、本発明では、ファイルアクセスの契機は前記指示に限るものではない。例えば、記憶装置１１１に展開され、ＣＰＵ１１０によって実行されるプログラムによる指示や、ネットワークインタフェース１１３により広域網１０４を介して行われる通信によって他のノード装置や計算機が行う指示を契機にしてもよい。このように入出力装置１１２以外の指示を契機としてファイルアクセスを行うことで、ファイルアクセスを自動化したり、遠隔地からファイルアクセスを指示したりして利便性を高めることが可能となる。
【００４２】
先に述べたように本実施形態では、マネージャ装置１０１およびノード装置１０２、ノード装置１０３の機能は、これらの計算機上で実行されるプログラムである１個のマネージャ制御部１１５および１個以上のノード制御部１２０によって実現される。そして、計算機システム全体はマネージャ制御部１１５が管理する。
【００４３】
以下の説明では、機能を実現するマネージャ制御部１１５およびノード制御部１２０の動作を説明する。なお、プログラム間の通信は、プログラムを実行している計算機間におけるＴＣＰ（Transmission Control Protocol）等の通信によって行われる。プログラムが同一の計算機上で実行されている場合は、プロセス間通信や共有メモリ等によって通信を行う。これらプログラム間の通信方法やプロトコルは、公知または周知の技術を適用すればよい。
【００４４】
本実施形態において、ノード制御部１２０はノード装置１０２においてキャッシュ制御部１２１が管理するキャッシュ領域１２４に、マネージャ装置１０１のストレージ制御部１１６に格納されたファイルのコピーを保持し、当該ファイルへのアクセス要求時に可能ならばコピーを利用する。ノード装置１０２がマネージャ装置１０１のコピーを利用することでノード装置１０２とマネージャ装置１０１の間の通信量を抑制できるため、通信時間を削減してファイルアクセスを高速化できる。なお、コピーする単位も必ずしもファイルである必要はなく、より小さな単位であるセクタ等を単位にしたり、より大きな単位であるディレクトリ単位で行ったりしてもよい。また、コピーを保持する契機は初回のファイルアクセス時や、後述するモードの変更時、指定時刻等が考えられる。さらに、キャッシュ制御部１２１は保持するコピーの容量をキャッシュ領域１２４が効率よく保持できる容量内に抑えるため、必要に応じて保持するコピーを破棄する。コピーを破棄する契機としては、指定時刻や新たなコピーの保持時等が考えられ、破棄するファイルの選定方法はＬＲＵ（Least Recently Used）等が考えられる。また、コピーの方法はＴＣＰによるソケット通信等が考えられる。本発明は、コピーの利用方法に関するものであり、コピーの保持または破棄の契機または方法やコピー方法は、従来のキャッシュ技術や通信技術において一般的であり、公知または周知の技術を適用すればよい。このため、本明細書では詳細な説明は省略する。
【００４５】
なお、本実施形態においては、キャッシュ制御部１２１はファイルの内容そのものに加えて、ファイル関連情報であるメタデータもキャッシュ領域１２４に保持する。メタデータの例としては、データの名前や種類、実データの要約（チェックサム）や更新時刻、アクセス権限などが挙げられる。本実施形態では、マネージャ装置１０１において、これら実データやメタデータはストレージ制御部１１６が管理するストレージ領域１０６０に格納されている。本発明における実データやメタデータの保持場所はストレージ領域１０６０に限定されるものではなく、マネージャ制御部１１５がアクセスできれば実データやメタデータが必ずしもストレージ領域１０６０に格納されている必要はない。例えばメタデータを記憶装置１０６上に保持し、実データを遠隔地に保持して広域網１０４経由でアクセスすることで、記憶装置１０６の容量を節約することも可能である。これはキャッシュ制御部１２１のキャッシュ領域１２４についても同様である。
【００４６】
続いて、ノード装置１０２がアクセスするマネージャ装置１０１のファイル毎に、マネージャ制御部１１５の指示に従って計算機システムが設定するモードと、ノード制御部１２０の取る状態について説明する。
【００４７】
図２に本実施形態において計算機システムのマネージャ装置１０１がファイル毎に設定するモード間の状態遷移を示す。本実施形態において、計算機システムのマネージャ装置１０１は、ファイル（またはデータ）毎に参照優先モード２０１と更新優先モード２０２のいずれかを設定する。これらモード間の遷移の契機や方法については後述する。
【００４８】
図３に本実施形態において、計算機システムのマネージャ装置１０１が設定するファイル毎のモード（アクセスモード）に従って、ノード制御部１２０に設定する３種類の状態（ノードのアクセス方式）とそれらの間の遷移を示す。３種類の状態とは、参照マスタ３０１、一般ノード３０２および更新マスタ３０３のアクセス方式の何れかであり、それぞれの状態ではキャッシュ制御部１２１がキャッシュ領域１２４に保持するコピーの利用方法が異なる。
【００４９】
参照マスタ３０１は一般ノード３０２と相互に遷移し、更新マスタ３０３は一般ノード３０２と相互に遷移する。遷移の契機および方法については後述する。なお、本実施形態においては、参照マスタ３０１と更新マスタ３０３は相互に直接的には遷移しないが、本発明では遷移手順を統合する等により直接遷移させることも可能である。参照マスタ３０１と更新マスタ３０３を直接遷移させることで制御や構成を簡略化することができる。
【００５０】
以下、参照マスタ３０１の状態であるノード制御部１２０のことを参照マスタ、一般ノード３０２であるノード制御部１２０のことを一般ノード、更新マスタ３０３の状態であるノード制御部１２０のことを更新マスタと呼び、参照マスタ３０１及び更新マスタ３０３の状態であるノード制御部１２０のことをマスタと呼ぶ。
【００５１】
図４はファイルのアクセスモードとノード制御部１２０に設定される３種類の状態（ノードのアクセス方式）の関係を示す説明図である。
【００５２】
あるファイルについて、本実施形態の計算機システムが参照優先モード２０１の場合、０個以上のノード装置（１０２）のノード制御部１２０がそのファイルの参照マスタ３０１となり、それ以外のノード装置（１０３）のノード制御部１２０が一般ノード３０２となる。参照優先モード２０１では、複数のノード装置が参照マスタ３０１となることができる。また、あるファイルについて、計算機システムが更新優先モード２０２の場合、１個のノード装置（１０２）のノード制御部１２０が更新マスタ３０３となり、それ以外のノード装置（１０３）のノード制御部１２０は一般ノード３０２となる。
【００５３】
続いて、キャッシュ制御部１２１がキャッシュ領域１２４にコピーを保持している場合におけるノード制御部１２０の動作の概略を説明する。なお、フローチャートを用いた詳細な動作は後述する。
【００５４】
参照優先モード２０１において、ノード制御部１２０がファイルを参照する場合、一般ノードの時はキャッシュ制御部１２１が参照対象となるファイルについてキャッシュ領域１２４に保持するコピーが利用可能であるか否かをマネージャ制御部１１５にアクセスしてメタデータを参照して判定する。参照優先モード２０１のファイルに対して一般ノードが参照を要求する場合、一般ノードがマネージャ制御部１１５にメタデータの参照を要求し、一般ノードはマネージャ制御部１１５から参照したメタデータに基づいて参照対象のファイルにアクセス可能か否かを判定する。判定方法については後述する。一般ノードは自ノードのキャッシュ領域１２４のデータにアクセス可能であれば、当該キャッシュ領域１２４のデータを参照する。一方、一般ノードが自ノードのキャッシュ領域１２４のデータを利用できない場合は、他の更新マスタが保持するデータを参照する。
【００５５】
一方、ノード制御部１２０が参照マスタの時はマネージャ制御部１１５に確認せずに自ノードのキャッシュ領域１２４に保持された参照対象のファイルのコピー及びメタデータを利用する。
【００５６】
また、参照優先モード２０１においてノード制御部１２０がファイルを更新する際は、マネージャ制御部１１５にアクセスし、マネージャ制御部１１５が全ての参照マスタ３０１であるノード制御部１２０を一般ノード３０２に遷移させた上で当該ノード制御部１２０が更新対象のファイルを送信してストレージ制御部１１６がストレージ領域１０６０の当該ファイルの内容を更新する。なお、一般ノードがファイルを参照する場合にマネージャ制御部１１５より近いなどの理由でアクセス時間の短い参照マスタにアクセスして高速化を行ってもよい。
【００５７】
参照優先モード２０１においては、ノード制御部１２０が参照マスタ３０１の時は、マネージャ制御部１１５にアクセスせずに参照対象のファイルのコピー及びメタデータを利用するため、マネージャ制御部１１５との通信時間を削減してファイルアクセスのうち参照を高速化できる。なお、参照マスタの数は任意であるので一般ノードの数を０として全てのノード制御部１２０を参照マスタとすることも可能である。そのため、参照優先モード２０１では複数のノード制御部１２０による参照を高速化できる。
【００５８】
一方、更新優先モード２０２において、ノード制御部１２０がファイルを参照する場合、一般ノードの時はキャッシュ制御部１２１がキャッシュ領域１２４に保持するコピーが利用可能であるかを更新マスタである他のノード制御部１２０にアクセスして取得したメタデータにより判定する。一方、当該ノード制御部１２０が更新マスタの時はマネージャ制御部１１５や他のノード制御部１２０にアクセスせずに自ノードのキャッシュ領域１２４に保持されたコピー及びメタデータを利用する。
【００５９】
また、更新優先モード２０２においてノード制御部１２０がファイルを更新する際は、一般ノードの時は他のノード制御部１２０の更新マスタにアクセスし、更新マスタのキャッシュ制御部１２１に更新対象ファイルを送信し、更新マスタのキャッシュ領域１２４に保持された更新対象ファイルの内容を更新する。
【００６０】
また、ノード制御部１２０が更新マスタの時は、キャッシュ制御部１２１が自ノードのキャッシュ領域１２４に保持する更新対象ファイルの内容を更新する。更新優先モードにおいては、ノード制御部１２０が更新マスタの時はマネージャ装置１０１のマネージャ制御部１１５や他のノード制御部１２０にアクセスすることなくノード装置１０２でファイルを参照または更新できるため、マネージャ装置１０１との通信時間を削減してファイルアクセスを高速化できる。すなわち、更新優先モード２０２では単一の更新マスタによる参照または更新を高速化できる。
【００６１】
本実施形態では、マネージャ装置１０１が記憶装置１０６に保持するファイル毎に、参照優先モード２０１と更新優先モード２０２のどちらのモードを取るかをマネージャ制御部１１５が各ファイルへのアクセスパターンに基づいてそれぞれ決定し、各ノード制御部１２０を参照マスタ３０１、一般ノード３０２および更新マスタ３０３のいずれに遷移させるかを後述する方法により決定する。これにより、計算機システム全体としてのファイルアクセスを高速化できる。
【００６２】
＜管理表の説明＞
続いて、以上の計算機システムの動作を実現するために必要となる管理表を説明する。管理表には、マネージャ制御部１１５が管理するマスタ管理表１１７、使用ファイル管理表１１８、アクセス管理表１１９と、各ノード装置１０２、１０３のノード制御部１２０が管理するマスタ管理表１２２、使用中情報管理表１２３がある。なお、マネージャ制御部１１５およびノード制御部１２０による管理表の利用方法や更新方法については後述する。
【００６３】
図５にマスタ管理表１１７およびマスタ管理表１２２の例を示す。マスタ管理表１１７はマネージャ制御部１１５が管理し、マスタ管理表１２２はノード制御部１２０が管理する。マスタ管理表１２２の内容は、マスタ管理表１１７の内容の全てまたは一部となるようにノード制御部１２０が管理する。
【００６４】
図５に示すようにマスタ管理表１１７およびマスタ管理表１２２は、ファイルパス４０１とアクセスモード４０２、マスタ４０３の対応表であり、ファイルパス４０１で示されたファイルに対するモードが参照優先モード２０１と更新優先モード２０２のいずれであるかをアクセスモード４０２として格納し、当該ファイルについてどのノード装置のノード制御部１２０が参照マスタ３０１または更新マスタ３０３であるかをノード装置の識別子または名称をマスタ４０３に格納する。なお、図中ノード装置１０２は「ノード１」であり、ノード装置１０３は「ノード２」とする。各ノード装置のノード制御部１２０が保持するマスタ管理表１２２では、アクセスモード４０２が参照優先モード２０１のエントリの一部または全部を省略して容量を節約してもよい。ただし、この場合、一般ノードのノード制御部１２０が当該ファイルを参照するときに、マスタ４０３で省略された参照マスタに対してはマネージャ制御部１１５に代えてアクセスすることはできなくなる。なお、参照優先モード２０１のエントリを全て省略する場合は、エントリが存在することをもって更新優先モード２０２であると特定できるため、アクセスモード４０２の記述を省略することができる。ファイルパス４０１は対象とするファイルを識別できれば必ずしもファイルパスである必要はない。例えば、計算機システムで扱うファイルを特定のディレクトリに制限してファイル名のみで表したり、特定ディレクトリ内に含まれる１個以上のファイルを対象とするためにディレクトリパスを記述したり、対象となるファイルの集合を表現するために拡張子等の条件を記述したりしてマスタ管理表の容量を節約することができる。マスタ４０３についても、ノードの名前を記述せずとも、いずれのノード制御部１２０を対象とするかを特定できればよい。例えば、特定のＩＰ（Internet Protocol）アドレス以外というような表現方法を採用してマスタ管理表の容量を節約することもできる。
【００６５】
図６に各ノード装置１０２、１０３のノード制御部１２０が管理する使用中情報管理表１２３の例を示す。使用中情報管理表１２３において、各エントリはファイルパス５０１、タイプ５０２、ＩＤ５０３、ユーザ名５０４、アクセス先５０５、転送サイズ５０６、転送時間５０７、取得メタデータ５０８、取得時刻５０９から構成され、ノード制御部１２０が利用しているファイルに関連する情報を保持する。各エントリはＩＤ５０３によって識別される。ファイルパス５０１はノード制御部１２０が利用しているファイルであり、タイプ５０２は更新または参照という当該ファイルへのアクセス方法を示し、ユーザ名５０４は当該ファイルを利用しているユーザの名前を示す。ユーザ名５０４はユーザ同士で互いに識別可能であればユーザの名前である必要はなく、例えばユーザを一意に識別する数値として使用中情報管理表１２３の容量を節約してもよい。また、ユーザ管理が不要な場合、ユーザ名５０４は省略できる。なお、ユーザ名５０４には当該ファイルを使用するプログラムの識別子を格納するようにしても良い。アクセス先５０５は当該ファイルの実データを利用するためのアクセス先となるマネージャ制御部１１５、ノード制御部１２０またはキャッシュ制御部１２１を示し、転送サイズ５０６はアクセス先５０５にアクセスする際に転送したデータサイズ（バイト数）を示し、転送時間５０７は当該ファイルの転送に必要とした時間を示す。また、取得メタデータ５０８はアクセス先５０５から取得して当該ノード制御部１２０で保持しているメタデータを格納し、取得時刻５０９は当該ファイルにアクセスした時刻を示す。なお、ノード制御部１２０が同一のノード装置のキャッシュ領域１２４にアクセスする場合には、転送サイズ５０６と転送時間５０７を「０」とする。
【００６６】
使用中情報管理表１２３によって各ノード装置１０２、１０３のノード制御部１２０がアクセスしているファイル名やそのメタデータ、そして実データにアクセスする際に必要となる転送時間等の関連情報を知ることができる。なお、ユーザの認証方法はＫｅｒｂｅｒｏｓ認証等があり、公知または周知の技術を適用すればよいので、本実施形態では説明を省略する。
【００６７】
図７にマネージャ制御部１１５が管理するアクセス管理表１１９の例を示す。アクセス管理表１１９は、各ファイルに対する履歴を管理する。
【００６８】
アクセス管理表１１９において、各エントリはノード名６０１、アクセス先６０２、時刻６０３、転送サイズ６０４、転送時間６０５、転送方向６０６、往復遅延時間６０７から構成され、ノード名６０１に示すノード制御部１２０がアクセス先６０２に保持された実データにアクセスした際の通信情報を記録する。なお、アクセス先６０２には、ノード装置やマネージャ装置１０１の識別子に加えて、アクセス対象のファイルの情報を含む。ファイルの情報は、ファイルパスまたはファイル名で構成すればよい。
【００６９】
時刻６０３は当該ファイルへのアクセスが行われた時刻を格納し、転送サイズ６０４はアクセス時に転送されたデータサイズを格納し、転送時間６０５は転送の際に必要とした時間を格納し、転送方向６０６はその転送の方向をノード名６０１からアクセス先６０２（図の例では「更新」と表した）またはアクセス先６０２からノード名６０１（図の例では「参照」と表した）のいずれかで表す。往復遅延時間６０７は当該ファイルへのアクセス時のノード名６０１からアクセス先６０２までの往復遅延時間（ＲＴＴ：Round Trip Time）を表す。なお、アクセス管理表１１９は指定した時刻等を契機に指定条件のエントリを削除してもよい。ここで、エントリを削除する契機は、指定時刻や周期的な時間指定、指定したエントリ数やデータサイズを超えた場合、アクセス管理表１１９の参照時やエントリ追加時等であり、指定条件は時刻６０３が指定時刻より古い場合等で行う。また、契機の指定は設定ファイルや外部からの指示等で行う。これらの指定方法や契機、指定条件の設定は、データベースやファイルシステムにおけるメンテナンスとして、公知または周知の技術を適用すればよいので、説明は省略する。
【００７０】
図８にマネージャ制御部１１５が管理する使用ファイル管理表１１８の例を示す。使用ファイル管理表１１８は、現在オープンされているファイルを管理する。使用ファイル管理表１１８において、各エントリはファイルパス７０１、タイプ７０２、ＩＤ７０３、ユーザ名７０４、ノード７０５から構成され、各ノード制御部１２０がマネージャ制御部１１５にアクセスして利用しているファイルに関連する情報を保持する。
【００７１】
各エントリはＩＤ７０３によって識別される。ファイルパス７０１はノード装置１０２、１０３のノード制御部１２０がマネージャ制御部１１５にアクセスして利用しているファイルのパスを格納し、タイプ７０２は更新または参照という当該ファイルへのアクセス方法を格納し、ユーザ名７０４は当該ファイルを利用しているユーザを格納する。使用ファイル管理表１１８によってマネージャ制御部１１５は各ノード制御部１２０が利用しているファイルを把握することができる。
【００７２】
＜ノードの動作説明＞
続いて、ノード装置１０２、１０３のノード制御部１２０の動作を説明する。ノード制御部１２０ではユーザからの入力や他のプログラム、マネージャ制御部１１５、他のノード制御部１２０から各種要求を受け付け、応答する。本実施形態における要求の種類としては、マネージャ制御部１１５からのマスタ管理表１２２の変更要求およびノード制御部１２０の状態遷移要求と、ユーザや他のプログラム、他のノード制御部１２０からのファイルアクセス要求（参照要求または更新要求）がある。以下では、フローチャートを用いてこれらの要求に対応するノード制御部１２０が行う処理を説明する。
【００７３】
図９にノード制御部１２０で行われる処理を説明するフローチャートを示す。ノード装置１０２においてノード制御部１２０が起動されると、ノード制御部１２０は開始状態８０１からステップ８０２に進む。ステップ８０２では、ノード制御部１２０が内部または外部から要求を受け付けたか否かを判定し、真ならステップ８０３に進み、偽ならステップ８０２に進む。なお、ノード制御部１２０に対する内部からの要求としては、例えば、入出力装置１１２等からのファイルの参照要求または更新要求を示し、外部からの要求としては、マネージャ制御部１１５からのマスタ管理表１２２の変更要求およびノード制御部１２０に対する状態遷移要求などである。なお、ステップ８０２の処理を、マルチスレッドやプロセス等の仕組みを用いて並列実行し、アクセス要求に対する応答性を改善してもよい。
【００７４】
ステップ８０３ではステップ８０２で受け付けた要求をノード制御部１２０が解析し、マネージャ制御部１１５からの要求か否かを判定し、結果が真ならステップ８０５に進み、偽ならステップ８０４に進む。ステップ８０５ではノード制御部１２０はマネージャ対応処理を行ってから、ステップ８０２に戻る。マネージャ対応処理については後述する。ステップ８０４ではノード制御部１２０は受け付けた要求の送信元についてマスタ管理表１２２を参照し、ステップ８０６に進む。
【００７５】
ステップ８０６では他のノード制御部１２０（以下、他ノード）からのアクセス要求か否かを判定し、結果が真ならステップ８０８に進み、偽ならステップ８０７に進む。ステップ８０６においてステップ８０７に進む例としてはユーザによる入出力装置１１２を通したファイルの参照要求または更新要求や、ノード装置１０２で動作する他のプログラムからの要求が挙げられる。
【００７６】
ステップ８０８では、ノード制御部１２０は受け付けた要求で参照または更新対象となったファイル（以下、対象ファイル）に関して、ステップ８０４で参照したマスタ管理表１２２の情報から、マスタが自身のノード制御部１２０（以下、自ノード）であるか否かを判定し、結果が真ならステップ８０７に進み、偽ならステップ８０９に進む。
【００７７】
ステップ８０７ではノード制御部１２０が自ノードのファイルに対してファイルアクセス処理を行い、要求元に応答してからステップ８０２に戻る。ファイルアクセス処理については後述する。ステップ８０９では、ノード制御部１２０は「マスタ管理表１２２の更新」とアクセスしてきた他のノード装置のノード制御部１２０に応答し、ステップ８０２に戻る。ステップ８０９に進む例は、アクセスしてきた他のノード装置のノード制御部１２０（他ノード）が参照するマスタ管理表１２２の情報が古い場合がある。「マスタ管理表更新」と応答された場合のノード制御部１２０の動作については後述する。
【００７８】
なお、要求の受付方法や解析方法、アクセス元の識別方法は、例えばサーバプログラムとして一般的であり、公知または周知の技術を適用すればよいので説明は省略する。また、マスタ管理表１２２からどのノード制御部１２０が参照または更新のマスタであるかを判定するには、エントリの中からアクセス対象となっているファイルに対応するファイルパス４０１を持つエントリを検索し、当該エントリのマスタ４０３を参照する。もし該当するエントリが見つからない場合には、マスタとなるノード制御部１２０はないと判定する。
【００７９】
ステップ８０７のファイルアクセス処理では、ファイルアクセス要求に応答する処理を行う。ファイルアクセス要求は、オープン要求、メタデータ参照要求、実データ参照要求、メタデータ更新要求、実データ更新要求、クローズ要求の６種類の要求から構成される。あるファイルに対するファイルアクセスは、参照アクセスか更新アクセスのいずれかで行われ、前述した６種類の要求が特定の順序で組み合わせて行われて実現される。参照アクセスでは、オープン要求に続いて、メタデータ参照要求と実データ参照要求を組み合わせて０回以上繰り返して行われてから、クローズ要求が行われる。
【００８０】
一方、更新アクセスでは、オープン要求に続いて、メタデータ参照要求とメタデータ更新要求と実データ更新要求を組み合わせて０回以上繰り返して行われてから、クローズ要求が行われる。オープン要求時の応答にはアクセス対象を識別するＩＤ（以下、ＦＩＤと呼ぶ）が含まれており、オープン要求以外の５種類の要求はこのＦＩＤを通知して行う。
【００８１】
ＦＩＤは同時に同一ファイルが開かれた場合でも異なるアクセスでは互いに異なる。また、他のノード制御部１２０やマネージャ制御部１１５に対してファイルアクセス要求を行う場合は、オープン要求時の応答のＦＩＤを使用中情報管理表１２３のエントリのＩＤ５０３に保存し、オープン要求以外のファイルアクセス要求時は当該エントリのＩＤ５０３を使用する。
【００８２】
前述した６種類の要求は２個以上組み合わせて１度の通信で行われてもよい。例えば、オープン要求とメタデータ参照要求を１度に行うことで、往復遅延時間が長いＷＡＮにおいてファイルアクセスの応答性を改善できる。複数の要求が１度に行われた場合、ノード制御部１２０は各要求を順に処理する。以下、前述した６種類の要求に対応するファイルアクセス処理について、フローチャートを用いて説明する。
【００８３】
図１０にノード制御部１２０におけるファイルアクセス処理（図９のステップ８０７）を説明するフローチャートを示す。まず、ノード制御部１２０は開始状態９０１からステップ９０２に進む。ステップ９０２では、受け付けた要求に含まれるファイル（以下、対象ファイルとする）について使用中情報管理表１２３を参照し、ステップ９０３に進む。ステップ９０３では要求がオープン要求か否かを判定し、真ならステップ９０４に進み、偽ならステップ９０５に進む。
【００８４】
ステップ９０４では、受け付けた要求がオープン処理であるので、ノード制御部１２０が対象ファイルのオープン処理を行い、終了状態９１７に進む。オープン処理については後述する。ステップ９０５では、ステップ９０２で参照した使用中情報管理表１２３で対象ファイルについて既にステップ９０４のオープン処理を行っているか否かを判定し、真ならステップ９０６に進み、偽ならステップ９０７に進む。具体的には、ファイルアクセス要求時に付加されるＦＩＤについて、使用中情報管理表１２３でＩＤ５０３が同じ値であるエントリが存在すれば真と判定し、存在しなければ偽と判定する。
【００８５】
ステップ９０６では、ノード制御部１２０は対象ファイルにアクセス可能か否かを判定し、真ならステップ９０８に進み、偽ならステップ９０７に進む。具体的には、使用中情報管理表１２３で保持するメタデータを参照し、例えばアクセスしているユーザやノード制御部１２０が対象ファイルへのアクセスが許可されているか、参照アクセスなのに更新要求である等不正な要求ではないか、ロック状態、パーミッション、アクセス権限等に基づいて対象ファイルにアクセス可能であるか否かを判定する。つまり、ノード制御部１２０は、対象ファイルの実データにアクセスする前に、当該実データを利用できるか否かの判定を、取得したメタデータによって判定する。
【００８６】
ステップ９０８では、ノード制御部１２０は受け付けた要求がメタデータの参照要求であるか否かを判定し、真ならステップ９０９に進み、偽ならステップ９１０に進む。ステップ９０９では、メタデータ参照処理を行い、終了状態９１７に進む。メタデータ参照処理については後述する。
【００８７】
ステップ９１０では、ノード制御部１２０は受け付けた要求が実データ参照要求であるか否かを判定し、真ならステップ９１１に進み、偽ならステップ９１２に進む。ステップ９１１では、ノード制御部１２０は実データの参照処理を行い、終了状態９１７に進む。実データ参照処理については後述する。
【００８８】
ステップ９１２では、ノード制御部１２０は受け付けた要求がメタデータの更新要求であるか否かを判定し、真ならステップ９１４に進み、偽ならステップ９１３に進む。ステップ９１３では、ノード制御部１２０は受け付けた要求が実データの更新要求であるか否かを判定し、真ならステップ９１４に進み、偽ならステップ９１５に進む。ステップ９１４では、ノード制御部１２０は対象ファイルについて実データ・メタデータ更新処理を行い、終了状態９１７に進む。実データ・メタデータ更新処理については後述する。
【００８９】
ステップ９１５では、ノード制御部１２０は受け付けた要求がクローズ要求であるか否かを判定し、真ならステップ９１６に進み、偽ならステップ９０７に進む。ステップ９１６では、ノード制御部１２０は対象ファイルのクローズ処理を行い、終了状態９１７に進む。クローズ処理については後述する。ステップ９０７ではエラーと応答し、終了状態９１７に進む。
【００９０】
オープン処理（図１０のステップ９０４）は、対象ファイルを開いて使用中情報管理表１２３を更新し、オープン要求以外のファイルアクセス要求を処理できる状態にする。  図１１にノード制御部１２０におけるオープン処理を説明するフローチャートを示す。まず、開始状態１００１からステップ１００２に進む。ステップ１００２では、ステップ８０４で参照したマスタ管理表１２２の情報を元に、ノード制御部１２０は対象ファイルについて他ノードが更新マスタであるか否かを判定し、結果が真ならステップ１００３に進み、偽ならステップ１００４に進む。
【００９１】
ステップ１００３では、ノード制御部１２０は更新マスタである他ノードのノード制御部１２０にアクセスして対象ファイルのオープン要求を行い、メタデータの参照要求を行ってステップ１００８に進む。
【００９２】
ステップ１００４では、ノード制御部１２０は自ノードがマスタであるか否かを判定し、結果が真ならステップ１００５に進み、偽ならステップ１００６に進む。ステップ１００６では自ノードが参照マスタで、かつ要求がメタデータまたは実データの更新要求であるか否かを判定し、結果が真ならステップ１００５に進み、偽ならステップ１００７に進む。
【００９３】
ステップ１００５では、ノード制御部１２０はマネージャ制御部１１５にアクセスして対象ファイルのオープン要求を行い、メタデータの参照要求を行ってステップ１００８に進む。ステップ１００８では、ノード制御部１２０がステップ１００３における更新マスタ３０３であるノード制御部１２０からの応答や、ステップ１００５におけるマネージャ制御部１１５からの応答についてマスタ管理表更新の応答があるか否かを判定し、真ならステップ１０１０に進み、偽ならステップ１００９に進む。他ノードの更新マスタからのマスタ管理表更新の応答は図９のステップ８０９によって行われる。マネージャ制御部１１５におけるマスタ管理表更新の応答については後述する。
【００９４】
ステップ１０１０では、ノード制御部１２０はマネージャ制御部１１５にアクセスしてマスタ管理表１１７を取得するためのマスタ情報要求を行い、マネージャ制御部１１５からの応答に基づいてマスタ管理表１２２を更新し、ステップ１００２に進む。マネージャ制御部１１５における処理については後述する。
【００９５】
ステップ１００７では、ノード制御部１２０は自ノードがマスタとなっており、キャッシュ制御部１２１がキャッシュ領域１２４に保持するメタデータを取得し、ステップ１００９に進む。
【００９６】
ステップ１００９では、ステップ１００３、ステップ１００５、ステップ１００７のいずれかで取得したメタデータを利用してノード制御部１２０が対象ファイルにアクセス可能か否かを判定し、真ならステップ１０１１に進み、偽ならステップ１０１２に進む。ステップ１００９における具体的な判定方法はステップ９０６と同様である。
【００９７】
ステップ１０１１では、ステップ１００３、ステップ１００５、ステップ１００７のいずれかで取得したメタデータを取得メタデータ５０８として使用中情報管理表１２３にエントリを作成し、ステップ１０１５に進む。作成するエントリのファイルパス５０１は対象ファイルのパスを、タイプ５０２は参照アクセスか更新アクセスかを、ＩＤ５０３は例えば連番等に基づいて他のエントリと異なるものを、ユーザ名５０４はアクセスしてきたユーザの名前を、アクセス先５０５はメタデータを取得したアクセス先を、転送サイズ５０６および転送時間５０７は０を、取得時刻５０９は当該エントリを作成した時刻をそれぞれ使用中情報管理表１２３に設定する。
【００９８】
ステップ１０１５ではノード制御部１２０が要求の送信元に対してオープン成功と応答し、ステップ１０１１で作成したエントリのＩＤ５０３をＦＩＤとして応答して終了状態１０１６に進む。
【００９９】
ステップ１０１２では、ステップ８０４で参照したマスタ管理表１２２の情報を元に、ノード制御部１２０は自ノードがマスタか否かを判定し、真ならステップ１０１３に進み、偽ならステップ１０１４に進む。ステップ１０１４では、ノード制御部１２０がステップ１００３を実行していれば更新マスタに、ステップ１００５を実行していればマネージャ制御部１１５にアクセスしてクローズ要求を行い、ステップ１０１３に進む。ステップ１０１４では、どのステップを実行したかを記憶する代わりにステップ１００２およびステップ１００４と同様の判定を行って変数を減らしてもよい。ステップ１０１３では、ノード制御部１２０が要求の送信元に対してオープン失敗と応答して終了状態１０１６に進む。
【０１００】
上記処理により、ノード制御部１２０は受け付けた要求に含まれる対象ファイルのオープン処理を実施する。
【０１０１】
図１２にノード制御部１２０におけるメタデータ参照処理（図１０のステップ９０９）を説明するフローチャートを示す。まず、開始状態１１０１からステップ１１０２に進む。ステップ１１０２ではノード制御部１２０は図１０のステップ９０２で参照した使用中情報管理表１２３で対象ファイルのエントリの取得メタデータ５０８を要求元に応答し、終了状態１１０３に進む。
【０１０２】
図１３にノード制御部１２０における実データ参照処理（図１０のステップ９１１）を説明するフローチャートを示す。まず、開始状態１２０１からステップ１２０２に進む。ステップ１２０２では、ノード制御部１２０は図１０のステップ９０２で参照した使用中情報管理表１２３で対象ファイルのエントリの取得メタデータ５０８に基づいてキャッシュ領域１２４の実データを利用可能であるか否かを判定し、真ならステップ１２０３に進み、偽ならステップ１２０４に進む。
【０１０３】
ステップ１２０２における判定では、ノード制御部１２０は自ノードのキャッシュ領域１２４に実データを保持しており、かつ使用中情報管理表１２３のメタデータとキャッシュ領域１２４に保持するメタデータが一致している場合に真と判定する。このとき、メタデータの一致を判定するために、ノード制御部１２０は更新時刻やファイルサイズ等、一部のメタデータの比較により一致するか否かの判定を行って判定処理にかかる処理時間を削減してもよい。
【０１０４】
ステップ１２０４では、ノード制御部１２０は図９のステップ８０４で参照したマスタ管理表１２２の情報により他ノードが更新マスタか否かを判定し、真ならステップ１２０５に進み、偽ならステップ１２０６に進む。
【０１０５】
ステップ１２０３では、ノード制御部１２０はキャッシュ制御部１２１にアクセスし、キャッシュ領域１２４が保持する実データを取得し、ステップ１２０８に進む。
【０１０６】
ステップ１２０５では、ノード制御部１２０は他ノードの更新マスタにアクセスして対象ファイルの実データ参照要求を行い、ステップ１２０７に進む。ステップ１２０６では、ノード制御部１２０はマネージャ制御部１１５にアクセスして対象ファイルの実データ参照要求を行い、ステップ１２０７に進む。
【０１０７】
ステップ１２０７ではステップ１２０５やステップ１２０６の実データ参照要求に対する応答時の通信情報（ＲＴＴ等）を用いて、ノード制御部１２０は使用中情報管理表１２３の対象エントリを更新し、ステップ１２０８に進む。具体的には、データアクセス要求時に通知されたＦＩＤと使用中情報管理表１２３のＩＤ５０３の値が一致するエントリに対して、実データ参照要求に対する応答時の通信情報として実データの転送量と転送時間を計測し、転送サイズ５０６の値に計測した転送量を、転送時間５０７に計測した転送時間を加える。
【０１０８】
ステップ１２０８では、ノード制御部１２０が上記ステップ１２０３、ステップ１２０５、ステップ１２０６のいずれかで取得した実データをキャッシュ領域１２４に保存するとともに、使用中情報管理表１２３の対象エントリの取得メタデータ５０８をメタデータとしてキャッシュ領域１２４に保存し、ステップ１２０９に進む。ステップ１２０９では、ステップ１２０８の実データを応答し、終了状態１２１０に進む。
【０１０９】
上記処理により、ノード制御部１２０は、更新マスタまたはマネージャ装置１０１から実データを読み込んで、実データとメタデータを自ノードのキャッシュ領域１２４に格納する。
【０１１０】
図１４にノード制御部１２０における実データ・メタデータ更新処理（図１０のステップ９１４）を説明するフローチャートを示す。まず、開始状態１３０１からステップ１３０２に進む。ステップ１３０２では、ノード制御部１２０は、図９のステップ８０４で参照したマスタ管理表１２２の情報により対象ファイルについて参照優先モードであるか否かを判定し、真ならステップ１３０３に進み、偽ならステップ１３０４に進む。
【０１１１】
ステップ１３０３では、対象ファイルが参照優先モードであるため、ノード制御部１２０がマネージャ制御部１１５にアクセスして実データ更新要求とメタデータ更新要求を行い、ステップ１３０６に進む。
【０１１２】
ステップ１３０４では、対象ファイルが参照優先モードであり、ノード制御部１２０がマスタ管理表１２２の情報により他ノードが対象ファイルの更新マスタであるか否かを判定し、真ならステップ１３０５に進み、偽ならステップ１３０９に進む。
【０１１３】
ステップ１３０５ではノード制御部１２０は他ノードの更新マスタにアクセスして、対象ファイルの実データ更新要求とメタデータ更新要求を行い、ステップ１３０６に進む。ステップ１３０６では、ステップ１３０３またはステップ１３０５の実データ更新要求とメタデータ更新要求に対するマネージャ装置１０１または他ノードの応答から更新が成功したかを判定し、真ならステップ１３０７に進み、偽ならステップ１３０８に進む。
【０１１４】
ステップ１３０７では、更新要求の対象が実データ更新要求の場合はステップ１３０３またはステップ１３０５の実データ更新要求時の通信情報を用いてノード制御部１２０が使用中情報管理表１２３の対象エントリを更新し、そうでない場合は何もせずにステップ１３０９に進む。使用中情報管理表１２３の対象エントリの更新は、具体的には、データアクセス要求時に通知されたＦＩＤと使用中情報管理表１２３のＩＤ５０３の値が一致するエントリに対して、ステップ１３０３またはステップ１３０５の実データ更新要求時の通信情報として実データの転送量と転送時間を計測し、転送サイズ５０６の値に計測した転送量を、転送時間５０７に計測した転送時間を加える。
【０１１５】
ステップ１３０９ではノード制御部１２０が対象ファイルの実データ更新要求またはメタデータ更新要求に従ってキャッシュ領域１２４の実データまたはメタデータを更新し、ステップ１３１０に進む。
【０１１６】
ステップ１３１０では、ノード制御部１２０は対象ファイルの要求元に対して更新完了と応答して終了状態１３１１に進む。一方、ステップ１３０８では、ノード制御部１２０は対象ファイルの要求元に対して更新失敗と応答して終了状態１３１１に進む。
【０１１７】
本実施形態では、実データ更新要求とメタデータ更新要求を一括して実データ・メタデータ更新処理により対応しているが、これは、実データ更新時は通常メタデータも更新されるためである。なお、本実施形態においてメタデータのみの更新時には、図１４を用いた説明において、実データの更新要求を行わない。もちろん、本発明は本実施形態に限るものではなく、実データ更新要求に対応する処理とメタデータ更新に対応する処理を分離して行い、プログラムの見通しをよくしてもよい。
【０１１８】
図１５にノード制御部１２０におけるクローズ処理（図１０のステップ９１６）を説明するフローチャートを示す。まず、開始状態１４０１からステップ１４０２に進む。ステップ１４０２では、ノード制御部１２０は図９のステップ８０４で参照したマスタ管理表１２２の情報により他ノードが更新マスタであるか否かを判定し、真ならステップ１４０３に進み、偽ならステップ１４０４に進む。
【０１１９】
ステップ１４０３ではノード制御部１２０は他ノードの更新マスタにアクセスして対象ファイルのクローズ要求を行い、ステップ１４０６に進む。ステップ１４０６ではノード制御部１２０は更新マスタとの往復遅延時間を測定し、ステップ１４０８に進む。
【０１２０】
ステップ１４０４ではノード制御部１２０はマスタ管理表１２２の情報により自ノードがマスタであるかを判定し、真ならステップ１４０８に進み、偽ならステップ１４０５に進む。ステップ１４０５ではマネージャ装置１０１が更新マスタであるので、ノード制御部１２０はマネージャ制御部１１５にアクセスして対象ファイルのクローズ要求を行い、ステップ１４０７に進む。ステップ１４０７ではノード制御部１２０はマネージャ制御部１１５との往復遅延時間を測定し、ステップ１４０８に進む。
【０１２１】
ステップ１４０８では、ステップ１４０６またはステップ１４０７でノード制御部１２０が測定した往復遅延時間と使用中情報管理表１２３の対象エントリの情報をマネージャ制御部１１５にアクセスして通信情報として通知（通信情報通知）し、ステップ１４０９に進む。
【０１２２】
ステップ１４０９ではノード制御部１２０がクローズした対象ファイルについて使用中情報管理表１２３の対象エントリを削除し、ステップ１４１０に進む。ステップ１４１０ではノード制御部１２０が要求の送信元に対してクローズ完了と応答し、終了状態１４１１に進む。
【０１２３】
なお、ステップ１４０８およびステップ１４０９において、使用中情報管理表１２３の対象エントリとは、データアクセス要求時に通知されたＦＩＤと使用中情報管理表１２３のＩＤ５０３の値が一致するエントリである。
【０１２４】
上記処理により、ノード装置１０２のノード制御部１２０は、クローズの要求を受けた対象ファイルについて、更新マスタにクローズ処理を要求し、往復遅延時間をマネージャ制御部１１５に通知し、自ノードの使用中情報管理表１２３から対象ファイルのエントリを削除して処理を終了する。
【０１２５】
図９のマネージャ対応処理（ステップ８０５）では、マネージャ装置１０１のマネージャ制御部１１５からノード制御部１２０に対して行われる要求に対応する処理を行う。具体的には、ノード制御部１２０の状態遷移要求と、マスタ管理表更新要求に対応する。このうち、状態遷移要求は、図３、図４で説明した参照マスタ３０１、一般ノード３０２および更新マスタ３０３の間の状態遷移をマネージャ制御部１１５がノード制御部１２０に指示する。
【０１２６】
図３で説明した遷移を行うため、ノード制御部１２０の状態遷移要求は参照マスタ３０１から一般ノード３０２への遷移と、一般ノード３０２から参照マスタ３０１への遷移、更新マスタ３０３から一般ノード３０２への遷移、そして一般ノード３０２から更新マスタ３０３への遷移という４種類の遷移指示があり得る。さらに、マスタ管理表更新要求を、同じ状態への遷移の指示と捉えられるため、マネージャ制御部１１５からノード制御部１２０に対して行われる要求は、５種類の遷移指示となり、マネージャ対応処理は遷移指示への対応を行う。以下、マネージャ対応処理についてフローチャートを用いて説明する。
【０１２７】
図１６にノード制御部１２０におけるマネージャ対応処理（図９のステップ８０５）を説明するフローチャートを示す。まず、開始状態１５０１からステップ１５０２に進む。ステップ１５０２、ステップ１５０４、ステップ１５０６、ステップ１５０８では、ステップ８０４で参照したマスタ管理表１２２の情報により現在の自ノードの状態と、マネージャ制御部１１５からの状態遷移要求に従って、先述した５種類の遷移指示を識別する。
【０１２８】
ステップ１５０２ではノード制御部１２０がマネージャ制御部１１５から受信した指示が、更新マスタ３０３から一般ノード３０２への遷移指示か否かを判定し、真ならステップ１５０３に進み、偽ならステップ１５０４に進む。
【０１２９】
ステップ１５０４ではノード制御部１２０がマネージャ制御部１１５から受信した指示が、参照マスタ３０１から一般ノード３０２への遷移指示か否かを判定し、真ならステップ１５０５に進み、偽ならステップ１５０６に進む。
【０１３０】
ステップ１５０６ではノード制御部１２０がマネージャ制御部１１５から受信した指示が、一般ノード３０２から更新マスタ３０３への遷移指示か否かを判定し、真ならステップ１５０７に進み、偽ならステップ１５０８に進む。
【０１３１】
ステップ１５０８ではノード制御部１２０がマネージャ制御部１１５から受信した指示が、一般ノード３０２から参照マスタ３０１への遷移指示か否かを判定し、真ならステップ１５０７に進み、偽ならステップ１５０９に進む。すなわち、ステップ１５０９は同じ状態への遷移指示であり、マスタ管理表更新要求の場合に実行される。
【０１３２】
ステップ１５０３ではノード制御部１２０が、対象ファイルについて使用中情報管理表１２３を参照し、ステップ１５１０に進む。ステップ１５１０では、ノード制御部１２０が上記ステップ１５０３より対象ファイルが更新中であるか否かを判定し、真ならステップ１５１１に進み、偽ならステップ１５１２に進む。具体的には、使用中情報管理表１２３のファイルパス５０１が対象ファイルに対応するエントリで、かつ、タイプ５０２が更新のエントリを検索し、該当エントリがあれば真、なければ偽とする。
【０１３３】
ステップ１５１１では対象ファイルが更新中であり、ノード制御部１２０は対象ファイルに対する状態を変更できないため、マネージャ制御部１１５に対して失敗と応答し終了状態１５２５に進む。
【０１３４】
一方、ステップ１５１２では対象ファイルに対するノードの状態を変更可能であるので、ノード制御部１２０がマネージャ制御部１１５にアクセスし、キャッシュ領域１２４に保持する実データとメタデータにより、マネージャ装置１０１の実データ更新要求とメタデータ更新要求を行い、ステップ１５０５に進む。
【０１３５】
ステップ１５０５では、ノード制御部１２０がマネージャ制御部１１５の指示通りにマスタ管理表１２２を更新し、ステップ１５１３に進む。つまり、ノード制御部１２０は、対象ファイルについて一般ノードとして機能するように、マスタ管理表１２２のマスタ４０３の自ノードの記載を削除する。
【０１３６】
ステップ１５１３ではノード制御部１２０が使用中情報管理表１２３の対象エントリのアクセス先５０５を更新し、ステップ１５１４に進む。具体的には、使用中情報管理表１２３のファイルパス５０１が対象ファイルに対応するエントリについて、一般ノード３０２への遷移指示であるのでアクセス先５０５を自ノードからマネージャ装置１０１のマネージャ制御部１１５に変更する。
【０１３７】
ステップ１５１４では、ノード制御部１２０がステップ１５１３における変更後のアクセス先５０５であるマネージャ制御部１１５にアクセスして対象ファイルのオープン要求を行い、ステップ１５１５に進む。
【０１３８】
一方、一般ノードから更新マスタまたは参照マスタへの遷移の指示を受信したステップ１５０７では、ノード制御部１２０がマネージャ制御部１１５にアクセスしてメタデータ参照要求を行い、ステップ１５１６に進む。
【０１３９】
ステップ１５１６ではステップ１５０７で取得したメタデータを用いてノード制御部１２０はキャッシュ制御部１２１が管理するキャッシュ領域１２４の実データを利用可能であるか否かを判定し、真ならステップ１５１７に進み、偽ならステップ１５１８に進む。ステップ１５１６における判定では、キャッシュ領域１２４に実データを保持しており、かつステップ１５０７で取得したメタデータとキャッシュ領域１２４に保持するメタデータが一致している場合に真と判定する。このとき、メタデータの一致を判定するために、更新時刻やファイルサイズ等、一部メタデータの比較により一致判定して判定処理にかかる処理時間を削減してもよい。
【０１４０】
ステップ１５１８ではノード制御部１２０がマネージャ制御部１１５にアクセスして実データ参照要求を行って取得した実データをキャッシュ領域１２４に保存し、ステップ１５１７に進む。ステップ１５１７ではノード制御部１２０がステップ１５０７で取得したメタデータをキャッシュ領域１２４に保存し、ステップ１５１９に進む。
【０１４１】
ステップ１５１９では、ノード制御部１２０は、マネージャ制御部１１５の指示通りにマスタ管理表１２２を更新し、ステップ１５２０に進む。つまりノード制御部１２０は、マスタ管理表１２２の対象ファイルのマスタ４０３に自ノードの識別子を格納する。
【０１４２】
ステップ１５２０ではノード制御部１２０が使用中情報管理表１２３の対象エントリのアクセス先５０５を更新し、ステップ１５２１に進む。具体的には、使用中情報管理表１２３のファイルパス５０１が対象ファイルに対応するエントリについて、マスタへの遷移指示であるのでアクセス先５０５を自ノードのキャッシュ領域１２４に変更する。ステップ１５２１では、ノード制御部１２０がステップ１５２０における変更前のアクセス先５０５であるマネージャ制御部１１５に対象ファイルのクローズ要求を行い、ステップ１５１５に進む。
【０１４３】
一方、同じ状態への遷移指示となるステップ１５０９では、同じ状態への遷移指示マネージャ制御部１１５の指示通りにマスタ管理表１２２を更新し、ステップ１５２２に進む。ステップ１５２２ではノード制御部１２０が使用中情報管理表１２３を参照し、対象エントリのアクセス先５０５に対して対象ファイルのクローズ要求を行い、ステップ１５２３に進む。具体的には、使用中情報管理表１２３のファイルパス５０１が対象ファイルに対応するエントリのアクセス先５０５がキャッシュ領域１２４でない場合に、当該アクセス先５０５にアクセスして対象ファイルのクローズ要求を行う。
【０１４４】
ステップ１５２３では、ノード制御部１２０が使用中情報管理表１２３の前述した対象エントリのアクセス先５０５をマネージャ制御部１１５が指示するマスタ管理表１２２に対応するように変更し、ステップ１５２４に進む。
【０１４５】
ステップ１５２４では、ノード制御部１２０ステップ１５２３における変更後のアクセス先５０５に対象ファイルのオープン要求を行い、ステップ１５１５に進む。
【０１４６】
ステップ１５１５ではノード制御部１２０は指示された状態の遷移について要求元のマネージャ制御部１１５に対して成功と応答し、終了状態１５２５に進む。
【０１４７】
以上に説明した処理により、ノード制御部１２０はユーザや他のプログラム、マネージャ制御部１１５、他のノード制御部１２０からの要求に応答する。なお、図９、図１０、図１１、図１２、図１３、図１４、図１５、図１６における各ステップの処理を実行する主体はノード制御部１２０である。
【０１４８】
＜マネージャの動作説明＞
続いて、マネージャ制御部１１５の動作を説明する。マネージャ制御部１１５では、ノード制御部１２０からの要求を受け付け、応答する。本実施形態におけるノード制御部１２０からの要求の種類としては、マスタ情報要求、通信情報通知、ファイルアクセス要求がある。以下では、フローチャートを用いてこれらの要求に対応するマネージャ制御部１１５の処理を説明する。
【０１４９】
図１７にマネージャ制御部１１５の処理を説明するフローチャートを示す。マネージャ装置１０１においてマネージャ制御部１１５が実行されると、マネージャ制御部１１５は開始状態１６０１からステップ１６０２に進む。
【０１５０】
ステップ１６０２では、マネージャ制御部１１５はノード制御部１２０から要求を受け付けたか否かを判定し、真ならステップ１６０３に進み、偽ならステップ１６０２に進む。なお、ステップ１６０２の処理は、ＣＰＵ１０５が処理するマルチスレッドやプロセス等の仕組みを用いて並列実行し、アクセス要求に対する応答性を改善してもよい。
【０１５１】
ステップ１６０３ではステップ１６０２で受け付けた要求を解析し、マスタ情報要求であるか否かを判定し、結果が真ならステップ１６０４に進み、偽ならステップ１６０５に進む。ノード装置１０２、１０３からのマスタ情報要求は、図１１に示したステップ１０１０で行われる。
【０１５２】
ステップ１６０４では、マネージャ制御部１１５が管理するマスタ管理表１１７を参照し、マスタ管理表１１７の内容をマスタ情報としてノード制御部１２０に応答し、ステップ１６０２に進む。
【０１５３】
ステップ１６０５では、マネージャ制御部１１５がステップ１６０２で受け付けた要求を解析し、通信情報通知であるか否かを判定し、結果が真ならステップ１６０６に進み、偽ならステップ１６０７に進む。通信情報通知は、図１５のステップ１４０８で行われる。
【０１５４】
ステップ１６０６では、マネージャ制御部１１５がステップ１６０２で受け付けた通信情報通知の内容を、図７を用いて説明したアクセス管理表１１９に追加し、ステップ１６１０に進む。具体的には、要求をしたノード制御部１２０の名前をノード名６０１に設定し、通知されたノード制御部１２０の使用中情報管理表１２３の情報のうちアクセス先５０５をアクセス先６０２に、取得時刻５０９を時刻６０３に、転送サイズ５０６を転送サイズ６０４に、転送時間５０７を転送時間６０５に、タイプ５０２を転送方向６０６にそれぞれ設定し、ノード制御部１２０から通知された往復遅延時間を往復遅延時間６０７に設定したエントリを作成してアクセス管理表１１９に追加する。
【０１５５】
ステップ１６１０では当該ステップ１６１０の実行回数が指定回数を超過しているか否かを判定し、真ならステップ１６１１に進み、偽ならステップ１６０２に進む。ここで指定回数はマネージャ制御部１１５に予め設定されている値であり、設定は、例えば、マネージャ制御部１１５の起動時の引数として与えたり、設定ファイルに記述してマネージャ制御部１１５が読み取ったり、通信により外部からマネージャ制御部１１５に指示したり、ユーザが入力したりして行うがこれに限らない。これらの設定値を指定する方法はプログラムにおける設定として一般的であり、公知または周知の技術を適用すればよい。また、本実施形態では、ステップ１６１０の判定条件を指定回数としたが、設定による指定時間や、アクセス管理表１１９のエントリ数、アクセス管理表１１９の転送サイズ６０４合計と設定した数値等を契機にしてもよい。また、指定回数を０として毎回ステップ１６１１に進んでもよい。
【０１５６】
ステップ１６１１ではマネージャ制御部１１５がマスタ更新処理を行い、ステップ１６０２に進む。マスタ更新処理については後述する。
【０１５７】
ステップ１６０７では、マネージャ制御部１１５がマスタ管理表１１７を参照してステップ１６０２で受け付けた要求が対象としているファイル（以下、対象ファイル）に関して計算機システムが更新優先モード２０２であり、かつ、要求を受け付けたノード制御部１２０が更新マスタ以外か否かを判定し、真ならステップ１６０８に進み、偽ならステップ１６０９に進む。具体的には、マスタ管理表１１７でファイルパス４０１が対象ファイルに対応するエントリのマスタ４０３を参照した値が、要求を受け付けたノード制御部１２０と一致しているか否かを判定する。
【０１５８】
ステップ１６０８では対象ファイルに対する計算機システムのモードが更新優先モード、かつ、要求を受け付けたノード制御部１２０が更新マスタ以外であるので、マネージャ制御部１１５はノード制御部１２０に対してエラーを通知する。さらに、マネージャ制御部１１５はマスタ管理表１１７の内容をマスタ管理表更新として当該ノード制御部１２０に応答し、ステップ１６０２に進む。ステップ１６０８でのマスタ管理表更新の応答に対応するノード制御部１２０の処理は、図１１のステップ１００８である。
【０１５９】
ステップ１６０９では更新マスタからのアクセスであるので、ファイルアクセス処理を行い、ステップ１６０２に進む。このファイルアクセス処理はマネージャ制御部１１５でのファイルアクセス処理であり、図１０で説明したノード制御部１２０におけるファイルアクセス処理とは異なる。マネージャ制御部１１５でのファイルアクセス処理については後述する。なお、要求の受付方法や解析方法、要求を行ったノード制御部１２０の識別方法は、例えばサーバプログラムとして一般的であり、公知または周知の技術を適用すればよいので説明は省略する。
【０１６０】
ステップ１６１１のマスタ更新処理では、マネージャ制御部１１５がストレージ制御部１１６で保持するファイルのそれぞれについて、図２を用いて説明したモードを決定し、当該決定に従って各ノード制御部１２０を図３で説明した状態のいずれかに遷移させる。
【０１６１】
以下、フローチャートを用いて図１７のステップ１６１１で行われるマスタ更新処理の詳細を説明する。
【０１６２】
図１８にマネージャ制御部１１５におけるマスタ更新処理（ステップ１６１１）を説明するフローチャートを示す。以下の説明における変数は記憶装置１０６に保持する。変数の保持方法については公知または周知の技術を適用すればよいので説明を省略する。
【０１６３】
まず、開始状態１７０１からステップ１７０２に進む。ステップ１７０２ではマネージャ制御部１１５がストレージ制御部１１６より対象ファイルのサイズを取得し、変数ＳＩＺＥに格納し、ステップ１７０３に進む。
【０１６４】
ステップ１７０３ではマネージャ制御部１１５が対象ファイルについてアクセス管理表１１９を参照して、各ノード制御部１２０において対象ファイルの参照回数、更新回数を取得して集計し、ステップ１７０４に進む。具体的には、アクセス管理表１１９においてアクセス先６０２に対象ファイルが含まれるエントリのうち、ノード名６０１がｉのノード制御部１２０であり転送方向６０６が参照であるエントリの数を集計して参照回数とし、更新回数も同様に集計する。そして、集計結果はｉのノード制御部１２０の参照回数、更新回数を、それぞれ変数Ｒｉ、Ｗｉに保持する。なお、このように記号（例えばｉ）を用いて複数の対象を扱う手法は、数学での数列の総和やプログラムにおける配列として一般的であり、公知または周知の技術を適用すればよいので詳細な説明は省略する。また、複数の記号（例えば、ｉとｊ）を用いた場合も同様である。そのため、以下では「ｉのノード制御部１２０の参照回数、更新回数を、それぞれ変数Ｒｉ、Ｗｉに保持する。」というような表現を説明なく用いる。
【０１６５】
ステップ１７０４では、マネージャ制御部１１５が対象ファイルについてアクセス管理表１１９を参照してマネージャ制御部１１５からｉのノード制御部１２０への平均スループットと平均往復遅延時間を計算し、それぞれ変数ＴＰｉ、ＲＴＴｉに格納し、ステップ１７０５に進む。具体的には、アクセス管理表１１９のアクセス先６０２がマネージャ制御部１１５の対象ファイルであるエントリのうち、ノード名６０１がｉのエントリについて転送サイズ６０４の合計を転送時間６０５の合計で除したものを変数ＴＰｉに格納し、往復遅延時間６０７の合計をエントリ数で除したものを変数ＲＴＴｉとする。なお、除数が０の場合は結果を０とする。また、変数ＴＰｉが０となる場合は、ネットワークで利用できる最大帯域を仮の値として変数ＴＰｉに格納する。ここで、スループットは通信にかかった時間（通信時間）のうち、データのサイズ（ＳＩＺＥ）をデータの転送時間６０５で除した値（単位は例えばＢｙｔｅ／ｓｅｃ）を示す。往復遅延時間６０７は、例えば、通信時間からデータの転送時間６０５を差し引いたレスポンスに要する時間で求められる。スループットや往復遅延時間６０７（ＲＴＴ）は通信プログラムにおいては一般的であり、公知または周知の技術を適用すればよい。
【０１６６】
ステップ１７０５ではマネージャ制御部１１５が変数ＴＰｉとＲＴＴｉについてそれぞれすべてのノード制御部１２０ｉで平均値を計算し、それぞれ変数ＴＰａ、ＲＴＴａに格納し、ステップ１７０６に進む。
【０１６７】
ステップ１７０６では、マネージャ制御部１１５は対象ファイルについてアクセス管理表１１９を参照し、ｉのノード制御部１２０からｊのノード制御部１２０への平均スループット、平均往復遅延時間を計算し、それぞれ変数ＴＰｉｊ、ＲＴＴｉｊに格納し、ステップ１７０７に進む。具体的には、アクセス管理表１１９のノード名６０１がｉのマネージャ制御部１１５で、アクセス先６０２がｊのマネージャ制御部１１５の対象ファイルであるエントリに対して、転送サイズ６０４の合計を転送時間６０５の合計で除したものをＴＰｉｊに格納し、往復遅延時間６０７の合計をエントリ数で除したものをＲＴＴｉｊとする。ただし、該当するエントリがない場合やＴＰｉｊが０となる場合は、変数ＴＰｉｊにＴＰｉの値、ＲＴＴｉｊにＲＴＴｉを格納し、ｉとｊが同じ場合はＴＰｉｊに巨大な値（例えば他のＴＰｉｊの平均値の数倍）、ＲＴＴｉｊには０を格納する。
【０１６８】
ステップ１７０７では、ｊのノード制御部１２０について、
（Ｗｉ＋Ｒｉ）＊ＲＴＴｉｊ＋Ｗｉ＊ＳＩＺＥ／ＴＰｉｊ
を全てのノード制御部１２０ｉで合計した値を計算して変数Ｄｗｊに格納し、ステップ１７０８に進む。
【０１６９】
ステップ１７０８では、全ノード制御部１２０（ｉ）についてＤｗｉの最小値を求めて変数Ｄｗに格納し、そのときのノード制御部１２０をＭとし、ステップ１７０９に進む。ステップ１７０９ではｉのノード制御部１２０について、
Ｗｉ＊（ＲＴＴｉ＋ＳＩＺＥ／ＴＰｉ＋ＲＴＴａ＋ＳＩＺＥ／ＴＰａ）
を全てのノード制御部１２０（ｉ）で合計した値を計算して変数Ｄｒに格納し、ステップ１７１０に進む。
【０１７０】
ステップ１７１０では、マネージャ制御部１１５は変数Ｄｗが変数Ｄｒより小さいか否かを判定し、真ならステップ１７１１に進み、偽ならステップ１７１２に進む。
【０１７１】
ステップ１７１１では、マネージャ制御部１１５は対象ファイルに対するモードが更新優先モード２０２で、Ｍのノード制御部１２０が更新マスタ３０３でそれ以外のノード制御部１２０が一般ノード３０２となるようにモード変更処理を行い、終了状態１７１３に進む。
【０１７２】
ステップ１７１２では、マネージャ制御部１１５は対象ファイルに対するモードが参照優先モード２０１で、Ｒｉが０より大きなｉのノード制御部１２０が参照マスタ３０１でそれ以外のノード制御部１２０が一般ノード３０２となるようにモード変更処理を行い、終了状態１７１３に進む。ステップ１７１１およびステップ１７１２におけるモード変更処理については後述する。
【０１７３】
ステップ１７０７でマネージャ制御部１１５が計算した変数Ｄｗｊは、更新優先モード２０２においてｊのノード制御部１２０が更新マスタの場合のファイルアクセス時間の合計を、変数Ｄｒは参照優先モード２０１の場合のファイルアクセス時間の合計を、それぞれ概算で見積もっており、ステップ１７１０では更新優先モード２０２と参照優先モード２０１のどちらが高速にファイルアクセス処理を行えるかを見積もっており、図１８で説明したマスタ更新処理では一番高速にファイルアクセスを行えると見積もられたモードおよびマスタを選択する。
【０１７４】
あるいは、対象ファイルについて、アクセス履歴と同様のアクセスをした場合に、マネージャ制御部１１５からノード制御部１２０への転送時間の平均値（第１のアクセス時間）と、ノード制御部１２０から他のノード制御部１２０への転送時間の平均値（第２のアクセス時間）とを比較して、第１のアクセス時間が短い場合には更新優先モードとし、第２のアクセス時間が短い場合には参照優先モードとしてもよい。
【０１７５】
本発明におけるマスタ更新処理は、図１８で説明したマスタ更新処理に限るものではなく、なんらかの基準でモードおよびマスタを選択するものであればよい。例えばモードを決定する基準を、対象ファイルの更新回数が０の場合は参照優先モード２０１で、全ノード制御部１２０を参照マスタ３０１とし、更新回数が０より大きい場合は更新優先モード２０２で、最もアクセス回数が最も大きいノード制御部１２０を更新マスタとするようにして、マスタ更新処理に必要な処理時間を削減してもよい。
【０１７６】
また、ステップ１７０３、ステップ１７０４およびステップ１７０６で利用するアクセス管理表１１９のエントリについて、アクセス管理表１１９に含まれるエントリ全てを対象にするのではなく、例えば時刻６０３の時刻が過去１時間以内というように期間が限定されたエントリを対象にして、扱うエントリ数を減らしてマスタ更新処理に必要な処理時間を削減したり、古いエントリの影響を削減して見積もりの精度を高めたりしてもよい。また、アクセス管理表１１９の値を過去のものほど小さくして、古いエントリの影響を軽減し、見積もりの精度を高めてもよい。
【０１７７】
上記マスタ更新処理では、各ノード装置のノード制御部１２０において対象ファイルの参照回数、更新回数と平均スループットと平均往復遅延時間及びデータの転送方向から、最も高速にファイルアクセスを行えると見積もられたモード（参照優先または更新優先）とマスタ（参照マスタまたは更新マスタ）を選択する。なお、参照マスタまたは更新マスタの何れにも選択されないノード装置のノード制御部１２０は、一般ノードとなる。
【０１７８】
ステップ１７１１およびステップ１７１２におけるモード変更処理では、対象とするファイルに関してモードとマスタを指定し、計算機システムのモードを図２を用いて説明したモードのうちのいずれかに設定し、また、モードに従うように各ノード制御部１２０を図３で説明した状態のいずれかに遷移させる。
【０１７９】
以下、フローチャートを用いてモード変更処理を説明する。図１９にマネージャ制御部１１５におけるモード変更処理を説明するフローチャートを示す。図１９の処理は、図１８のステップ１７１１またはステップ１７１２で行われる処理の詳細を示す。
【０１８０】
以下の説明において、モード変更処理により更新優先モード２０２に設定される場合で更新マスタ３０３に設定されるノード制御部１２０をＭと呼ぶ。まず、開始状態１８０１からステップ１８０２に進む。ステップ１８０２では、マネージャ制御部１１５が対象ファイルについてマスタ管理表１１７を参照して、対象ファイルが現在更新優先モード２０２であるか否かを判定し、真ならステップ１８０３に進み、偽ならステップ１８０４に進む。具体的には、マスタ管理表１１７を参照して、対象ファイルに対応するファイルパス４０１を持つエントリを検索し、当該エントリのアクセスモード４０２を参照して判定する。
【０１８１】
ステップ１８０３では、マネージャ制御部１１５はマスタ管理表１１７を参照して更新マスタ３０３がどのノード制御部１２０かを取得し、ステップ１８０５に進む。具体的には、ステップ１８０２で検索したエントリのマスタ４０３を参照する。なお、以下の説明では取得された更新マスタ３０３をＮとする。
【０１８２】
ステップ１８０５では、マネージャ制御部１１５は図１８で決定された指示が参照優先モード２０１への変更か否かを判定し、真ならステップ１８０６に進み、偽ならステップ１８０７に進む。
【０１８３】
ステップ１８０７では、マネージャ制御部１１５はＮとＭの値が異なるか否かを判定し、真ならステップ１８０６に進み、偽なら終了状態１８１４に進む。
【０１８４】
ステップ１８０６ではマネージャ制御部１１５が、Ｎであるノード制御部１２０に対して更新マスタ３０３から一般ノード３０２へ遷移する指示を通知し、ステップ１８０８に進む。
【０１８５】
ステップ１８０８では、マネージャ制御部１１５はステップ１８０６の結果が成功したか否かを判定し、真ならステップ１８０９に進み、偽なら終了状態１８１４に進む。この判定は、マネージャ制御部１１５がノード制御部１２０からの応答に基づいて判定する。
【０１８６】
ステップ１８０９では、マネージャ制御部１１５は図１８で決定された指示が更新優先モード２０２への変更か否かを判定し、真ならステップ１８１０に進み、偽ならステップ１８１２に進む。
【０１８７】
ステップ１８０４ではマネージャ制御部１１５は図１８で決定された指示が更新優先モード２０２への変更か否かを判定し、真ならステップ１８１１に進み、偽ならステップ１８１２に進む。
【０１８８】
ステップ１８１１では、マネージャ制御部１１５は対象ファイルについてマスタ管理表１１７を参照して参照マスタ３０１であるノード制御部１２０に、参照マスタ３０１から一般ノード３０２への遷移指示を通知し、ステップ１８１０に進む。参照マスタ３０１であるノード制御部１２０は、マスタ管理表１１７を参照して、対象ファイルに対応するファイルパス４０１を持つエントリを検索し、当該エントリのマスタ４０３を参照することで識別する。
【０１８９】
ステップ１８１０ではマネージャ制御部１１５は対象ファイルについてマスタ管理表１１７を更新し、対象ファイルのアクセスモードを更新優先モード２０２にして更新マスタ３０３をＭのノード制御部１２０に設定し、ステップ１８１３に進む。具体的には、マスタ管理表１１７で対象ファイルに対応するファイルパス４０１を持つエントリを検索し、存在しなければ作成し、当該エントリのアクセスモード４０２を更新優先に設定し、マスタ４０３をＭのノード制御部１２０に設定する。
【０１９０】
ステップ１８１２ではマネージャ制御部１１５は対象ファイルについてマスタ管理表１１７を更新し、対象ファイルのアクセスモードを参照優先モード２０１にして指示されたノード制御部１２０を参照マスタ３０１に設定し、ステップ１８１３に進む。具体的には、マスタ管理表１１７で対象ファイルに対応するファイルパス４０１を持つエントリを検索し、存在しなければ新たなエントリを作成し、当該エントリのアクセスモード４０２を参照優先と設定し、マスタ４０３には指定されたノード制御部１２０（複数も可）を設定する。
【０１９１】
ステップ１８１３ではマネージャ制御部１１５がマスタ管理表１１７の内容を全ノード制御部１２０に通知してマスタ管理表更新要求を行い、終了状態１８１４に進む。ステップ１８１３のマスタ管理表更新要求に対応する処理は、図１６のステップ１５０９で行われる。
【０１９２】
上記図１８、図１９の処理により、各ファイル毎に、参照や更新のアクセス履歴に基づいて、参照優先と更新優先の２つのモードの何れかを付与し、メタデータの管理に関する権限をノード装置１０２、１０３のノード制御部１２０に付与することができる。ファイルに対して参照が多い場合は、メタデータを保持して参照する権限（参照マスタ）を各ノード装置に付与し、更新に時間を要するが参照を高速に行える参照優先モードを用いる。一方、単一のノード装置からの更新が頻繁に行われる場合は、メタデータを保持し更新できる権限（更新マスタ）を単一のノード装置に付与して、当該ノード装置のみで更新を高速に行える更新優先モードを用いる。マネージャ装置１０１は、各ファイル毎に、アクセス履歴から参照優先と更新優先のどちらのモードを用いるかをアクセスに要した時間に基づいて演算して決定し、２つのモードを切り替えることでファイルアクセスを高速化することができる。
【０１９３】
なお、ノード装置１０２、１０３は、図３、図４で示したように、参照優先モードで参照マスタの権限を付与されたノード装置と、更新優先モードで更新マスタの権限を付与されたノード装置と、それ以外のノード装置である一般ノードの何れかとなる。
【０１９４】
マネージャ制御部１１５において図１７のステップ１６０９で行われるファイルアクセス処理は、ノード制御部１２０においてステップ８０７で行われるファイルアクセス処理と同様に、ファイルアクセス要求に応答する処理を行う。ファイルアクセス要求の種類やＦＩＤ等ファイルアクセス要求全般の説明は、ステップ８０７のファイルアクセス処理で説明したので省略する。ただし、ステップ８０７の説明における、他のノード制御部１２０やマネージャ制御部１１５に対してファイルアクセス要求を行う場合の説明は、図１７のステップ１６０９で行われるファイルアクセス処理には該当しない。また、ステップ１６０９のファイルアクセス処理で複数の要求が１度に行われた場合は、ノード制御部１２０ではなくマネージャ制御部１１５が順番に処理を行う。
【０１９５】
以下、ファイルアクセス要求を構成する６種類の要求に対応するマネージャ制御部１１５でのファイルアクセス処理について、フローチャートを用いて説明する。
【０１９６】
図２０にマネージャ制御部１１５におけるファイルアクセス処理（図１７のステップ１６０９）を説明するフローチャートを示す。
【０１９７】
まず、開始状態１９０１からステップ１９０２に進む。ステップ１９０２では、マネージャ制御部１１５は、対象ファイルについて使用ファイル管理表１１８を参照しステップ１９０３に進む。ステップ１９０３ではマネージャ制御部１１５が、対象ファイルに対する要求がオープン要求か否かを判定し、真ならステップ１９０４に進み、偽ならステップ１９０５に進む。
【０１９８】
ステップ１９０４では、マネージャ制御部１１５におけるオープン処理を対象ファイルに対して行い、終了状態１９２２に進む。マネージャ制御部１１５におけるオープン処理については後述する。
【０１９９】
ステップ１９０５では、ステップ１９０２で参照した使用ファイル管理表１１８で対象ファイルについて既にステップ１９０４のオープン処理を行っているか否かをマネージャ制御部１１５が判定し、真ならステップ１９０６に進み、偽ならステップ１９０７に進む。具体的には、ファイルアクセス要求時に付加されるＦＩＤについて、使用ファイル管理表１１８でＩＤ７０３が同じ値であるエントリが存在すれば真と判定し、存在しなければ偽と判定する。
【０２００】
ステップ１９０６では、マネージャ制御部１１５は、対象ファイルにアクセス可能か否かを判定し、真ならステップ１９０８に進み、偽ならステップ１９０７に進む。具体的には、ストレージ制御部１１６で保持するメタデータを参照し、例えばアクセスしているユーザやノード制御部１２０が許可されているか、参照アクセスなのに更新要求である等不正な要求ではないか、ロック状態、パーミッション、アクセス権限等に基づいて対象ファイルにアクセス可能であるかを判定する。
【０２０１】
ステップ１９０８では、マネージャ制御部１１５は、対象ファイルに対するアクセス要求がメタデータの参照要求であるか否かを判定し、真ならステップ１９０９に進み、偽ならステップ１９１０に進む。
【０２０２】
ステップ１９０９では、マネージャ制御部１１５は、ストレージ制御部１１６のメタデータを、アクセスの要求元のノード制御部１２０に応答し、終了状態１９２２に進む。
【０２０３】
ステップ１９１０では、マネージャ制御部１１５は、アクセス要求が実データの参照要求であるか否かを判定し、真ならステップ１９１１に進み、偽ならステップ１９１２に進む。
【０２０４】
ステップ１９１１では、マネージャ制御部１１５は、ストレージ制御部１１６の実データを、アクセスの要求元のノード制御部１２０に応答し、終了状態１９２２に進む。
【０２０５】
ステップ１９１２では、マネージャ制御部１１５は、アクセス要求がメタデータの更新要求であるか否かを判定し、真ならステップ１９１３に進み、偽ならステップ１９１４に進む。
【０２０６】
ステップ１９１４では、マネージャ制御部１１５は、アクセス要求が実データの更新要求であるか否かを判定し、真ならステップ１９１５に進み、偽ならステップ１９１６に進む。
【０２０７】
ステップ１９１６では、マネージャ制御部１１５は、アクセス要求がクローズ要求であるか否かを判定し、真ならステップ１９１７に進み、偽ならステップ１９０７に進む。
【０２０８】
ステップ１９１７では、マネージャ制御部１１５におけるクローズ処理を対象ファイルについて行い、終了状態１９２２に進む。マネージャ制御部１１５におけるクローズ処理については後述する。
【０２０９】
ステップ１９０７では、ステップ１９０５、１９０６、１９１３、１９１５、１９１６のいずれかの判定で偽と判定されているため、アクセス要求を行ったノード制御部１２０にエラーを応答し、終了状態１９２２に進む。
【０２１０】
ステップ１９１３では、マネージャ制御部１１５は、対象ファイルのメタデータが他のノード制御部１２０からアクセスされておらず更新可能か判定し、真ならステップ１９１８に進み、偽ならステップ１９０７に進む。
【０２１１】
ステップ１９１５では、マネージャ制御部１１５は、対象ファイルに他のノード制御部１２０からアクセスされておらず更新可能か判定し、真ならステップ１９２０に進み、偽ならステップ１９０７に進む。ステップ１９１３およびステップ１９１５での判定は、具体的には、使用ファイル管理表１１８を参照し、対象ファイルに対応するファイルパス７０１のエントリでファイルアクセス要求時に付加されるＦＩＤとＩＤ７０３が異なる値のエントリが存在しなければ真、存在すれば偽と判定する。
【０２１２】
ステップ１９１８ではメタデータの更新要求に従ってストレージ制御部１１６が管理する対象ファイルのメタデータを更新し、ステップ１９１９に進む。
【０２１３】
ステップ１９１９ではマネージャ制御部１１５が、メタデータの更新を要求したノード制御部１２０に更新完了と応答し、終了状態１９２２に進む。
【０２１４】
ステップ１９２０ではマネージャ制御部１１５は、実データの更新要求に従ってストレージ制御部１１６が管理する対象ファイルの実データを更新し、ステップ１９２１に進む。ステップ１９２１ではマネージャ制御部１１５が、実データの更新を要求したノード制御部１２０に更新完了と応答し、終了状態１９２２に進む。
【０２１５】
マネージャ制御部１１５におけるオープン処理（図２０のステップ１９０４）は、ファイルを開いて使用ファイル管理表１１８を更新し、オープン要求以外のファイルアクセス要求を処理できる状態にする処理である。
【０２１６】
図２１にマネージャ制御部１１５におけるオープン処理を説明するフローチャートを示す。まず、開始状態２００１からステップ２００２に進む。ステップ２００２では、マネージャ制御部１１５は、受け付けたアクセス要求が更新アクセスであるか否かを判定し、真ならステップ２００３に進み、偽ならステップ２００４に進む。
【０２１７】
ステップ２００３では、マネージャ制御部１１５は対象ファイルについてマスタ管理表１１７を参照して参照マスタ３０１であるノード制御部１２０があれば、当該ノード制御部１２０に参照マスタ３０１から一般ノード３０２への遷移指示を通知し、ステップ２００４に進む。参照マスタ３０１であるノード制御部１２０は、マスタ管理表１１７を参照して、対象ファイルに対応するファイルパス４０１を持つエントリを検索し、アクセスモード４０２が参照優先の場合に当該エントリのマスタ４０３を参照することで識別する。
【０２１８】
ステップ２００４では、マネージャ制御部１１５は、ストレージ制御部１１６から対象ファイルのメタデータを取得し、ステップ２００５に進む。
【０２１９】
ステップ２００５では、マネージャ制御部１１５がステップ２００４で取得したメタデータを利用して対象ファイルにアクセス可能か否かを判定し、真ならステップ２００６に進み、偽ならステップ２００７に進む。ステップ２００５における具体的な判定方法は図２０のステップ１９０６と同様であるので説明を省略する。
【０２２０】
ステップ２００６ではマネージャ制御部１１５が使用ファイル管理表１１８にエントリを作成し、ステップ２００８に進む。ステップ２００６で作成するエントリのファイルパス７０１は対象ファイルのパスを設定し、タイプ７０２は参照アクセスか更新アクセスかを設定し、ＩＤ７０３は例えば連番等に基づいて他のエントリと異なるものを設定し、ユーザ名７０４はアクセスしてきたユーザの名前を設定し、ノード７０５はメタデータを取得したアクセス先をそれぞれ設定する。
【０２２１】
ステップ２００７ではマネージャ制御部１１５は、アクセス要求を行ったノード制御部１２０にオープン失敗と応答し、終了状態２００９に進む。
【０２２２】
ステップ２００８ではマネージャ制御部１１５は、アクセス要求を行ったノード制御部１２０にオープン成功と応答し、終了状態２００９に進む。
【０２２３】
図２２にマネージャ制御部１１５におけるクローズ処理（図２０のステップ１９１７）を説明するフローチャートを示す。まず、開始状態２１０１からステップ２１０２に進む。ステップ２１０２では、マネージャ制御部１１５は、対象ファイルについてアクセス管理表１１９を参照してアクセス回数が指定回数を超過しているかを判定し、真ならステップ２１０３に進み、偽ならステップ２１０４に進む。ステップ２１０２における指定回数の指定方法については図１７のステップ１６１０と同様であるので説明を省略する。また、ステップ２１０２における判定方法についてはステップ１６１０において説明したのと同様に、他の基準を用いて行ってもよい。
【０２２４】
ステップ２１０４ではマネージャ制御部１１５は、アクセス要求が更新アクセスであるかを判定し、真ならステップ２１０３に進み、偽ならステップ２１０５に進む。ステップ２１０４からステップ２１０３に進む場合は、図２１でステップ２００３を実行している。ステップ２１０３では図１８で説明したマスタ更新処理を行い、ステップ２１０５に進む。
【０２２５】
ステップ２１０５ではマネージャ制御部１１５が対象ファイルについて使用ファイル管理表１１８の対象エントリを削除し、ステップ２１０６に進む。
【０２２６】
ステップ２１０６ではマネージャ制御部１１５が、アクセスを要求したノード制御部１２０にクローズ完了と応答し、終了状態２１０７に進む。なお、ステップ２１０５において、使用ファイル管理表１１８の対象エントリとは、データアクセス要求時に通知されたＦＩＤと使用ファイル管理表１１８のＩＤ７０３の値が一致するエントリである。
【０２２７】
以上に説明した処理により、マネージャ制御部１１５はノード制御部１２０からの要求に応答し、計算機システムの状態を変更する。なお、図１７、図１８、図１９、図２０、図２１、図２２における各ステップの処理を実行する主体はマネージャ制御部１１５である。
【０２２８】
＜第１の実施形態の効果＞
以上に説明した第１の実施形態によれば、広域網１０４を介して互いに接続されたマネージャ装置１０１、ノード装置１０２およびノード装置１０３から構成される計算機システムにおいて、ファイル毎のアクセスパターンに応じてマネージャ制御部１１５が参照優先モード２０１と更新優先モード２０２を切り替えるため、ノード装置１０２およびノード装置１０３がマネージャ装置１０１に保存されているファイルにアクセスする際に、ノード装置１０２およびノード装置１０３がキャッシュ領域１２４に保持する当該ファイルのコピーの扱い方が変更され、広域網１０４を経由する通信量が削減されるためファイルアクセスを高速化できる。
【０２２９】
また、広域網１０４を経由する通信量が削減されるため、広域網１０４を効率的に利用することができる。特に、参照優先モード２０１が使用されている場合にノード装置１０２またはノード装置１０３が参照アクセスを行う場合は、ノード装置１０２またはノード装置１０３がキャッシュ領域１２４に保持する当該ファイルのコピーを利用する際にマネージャ装置１０１等に広域網１０４を通してアクセスする必要がなくなるため、あたかも自装置内の記憶装置へのアクセスと同等にファイルアクセスを高速化できる。
【０２３０】
＜第２の実施形態＞
第２の実施形態は、第１の実施形態におけるノード装置に拠点網で接続されたクライアントが主体となってマネージャ装置のファイルにアクセスする構成の計算機システムである。以下では、第１の実施形態との違いを中心に説明を行い、第１の実施形態と共通する説明については省略する。
【０２３１】
図２３に本発明の第２の実施形態における計算機システムの構成例を示す。第２の実施形態においては、中央拠点２２０１のマネージャ装置１０１と拠点２２０２のノード装置２２０６および拠点２２０３のノード装置２２０７が広域網２２０４で接続されている。
【０２３２】
拠点２２０２ではノード装置２２０６とクライアント装置２２０８およびクライアント装置２２０９が拠点網２２１０で接続されており、拠点２２０３ではノード装置２２０７とクライアント装置２２１１およびクライアント装置２２１２が拠点網２２１３で接続されている。
【０２３３】
図２３では企業等における情報システムの構成を想定したもので、中央拠点２２０１に集約したファイルに対して、各拠点２２０２，２２０３のクライアント装置を用いてアクセスする。第２の実施形態は、第１の実施形態の計算機システム構成例を示す図１と比べて、拠点網２２１０を介してクライアント装置２２０８およびクライアント装置２２０９が接続されている部分が異なる。以下では、この異なる部分について説明する。なお、中央拠点２２０１のマネージャ装置１０１は、前記第１実施形態と同一であるので、説明を省略する。
【０２３４】
拠点網２２１０は拠点内に設置された装置間で互いに通信を行うためのもので、ＬＡＮ（Local Area Network）に代表されるネットワークを用いる。もちろん、本発明はＬＡＮに限るものではなく、第１の実施形態の広域網１０４に関して説明したのと同様に他の通信手段であってもかまわない。
【０２３５】
拠点２２０２のクライアント装置２２０８はＰＣ（Personal Computer）に代表される計算機で、拠点網２２１０からノード装置２２０６及び広域網１０４を介して中央拠点２２０１のファイルにアクセスするものである。クライアント装置２２０８の構成は公知または周知の技術を適用すればよいので詳細は省略する。また、クライアント装置２２０９はクライアント装置２２０８と同一の構成である。なお、クライアント装置２２０８の台数は１個以上であればいくつであってもかまわない。
【０２３６】
ノード装置２２０６は、前記第１実施形態の図１に示した、ノード装置１０２にネットワークインターフェース２２１７を加えたものであり、その他の構成は前記第１実施形態と同様である。
【０２３７】
拠点網２２１０に接続されるネットワークインタフェース２２１７はネットワークインタフェース１１３と同様の構成をしており、拠点網２２１０を介してクライアント装置２２０８およびクライアント装置２２０９と通信する。
【０２３８】
図２３に示した構成では、拠点網２２１０と広域網１０４に対して、それぞれネットワークインタフェース２２１７とネットワークインタフェース１１３というように異なるネットワークインタフェースを用いているが、１つのネットワークインタフェースを用いてノード装置２２０６の構成を単純化してもかまわない。この場合、ノード装置２２０６の構成は、第１の実施形態のノード装置１０２と同一になる。
【０２３９】
クライアント装置２２０８がマネージャ装置１０１で保持されるファイルにアクセスする場合は、ノード装置２２０６を経由してアクセスする。ノード装置２２０６では、第１の実施形態の図１７を用いて説明したように、ファイルアクセス要求を受け付け、ノード装置２２０６の保持するキャッシュ領域１２４および必要ならマネージャ装置１０１にアクセスして、応答を行う。ノード装置２２０６およびマネージャ装置１０１の動作は第１の実施形態と同様であるので説明を省略する。
【０２４０】
また、拠点２２０３のノード装置２２０７，クライアント装置２２１１，２２１２、拠点網２２１３と同様に構成される。
【０２４１】
第２の実施形態においては、ノード装置２２０６、２２０７に対する参照要求または更新要求は、前記第１実施形態の入出力装置１１２に代わって、クライアント装置２２０８，２２０９、２２１１，２２１２からの参照要求または更新要求をノード装置２２０６、２２０７が受け付けることになる。
【０２４２】
＜第２の実施形態の効果＞
本発明第２の実施形態によれば、１台以上のクライアント装置２２０８を擁する拠点２２０２にノード装置２２０６を設置することで、拠点２２０２と広域網１０４を介して接続された中央拠点２２０１のマネージャ装置１０１に保存されたファイルにアクセスする際に、ノード装置２２０６が保持するキャッシュ領域１２４が利用できる。
【０２４３】
第１の実施形態に比べ、１台以上のクライアント装置２２０８に対して共通したキャッシュ領域１２４を利用することができる。そのため、さらに広域網１０４を介した通信量を削減でき、ファイルアクセスを高速化したり、広域網１０４の利用効率を改善したりできる。また、クライアント装置２２０８に対する変更を不要にできるため、１クライアント装置２２０８あたりの計算機システムの構築コストを削減することができる。
【０２４４】
なお、上記第２実施形態では、ノード装置２２０６、２２０７は、ルータやスイッチなどのゲートウェイ装置として機能してもよい。
【産業上の利用可能性】
【０２４５】
以上のように、本発明はデータ及びメタデータを分散して保持する計算機システムに適用することができる。
【符号の説明】
【０２４６】
１０１  マネージャ装置
１０２、１０３  ノード装置
１１５  マネージャ制御部
１１６  ストレージ制御部
１１７  マスタ管理表
１１８  使用ファイル管理表
１１９  アクセス管理表
１２０  ノード制御部
１２１  キャッシュ制御部
１２２  マスタ管理表
１２３  使用中情報管理表
１２４  キャッシュ領域
【図１】
0005481669.tif 000002
【図２】
0005481669.tif 000003
【図３】
0005481669.tif 000004
【図４】
0005481669.tif 000005
【図５】
0005481669.tif 000006
【図６】
0005481669.tif 000007
【図７】
0005481669.tif 000008
【図８】
0005481669.tif 000009
【図９】
0005481669.tif 000010
【図１０】
0005481669.tif 000011
【図１１】
0005481669.tif 000012
【図１２】
0005481669.tif 000013
【図１３】
0005481669.tif 000014
【図１４】
0005481669.tif 000015
【図１５】
0005481669.tif 000016
【図１６】
0005481669.tif 000017
【図１７】
0005481669.tif 000018
【図１８】
0005481669.tif 000019
【図１９】
0005481669.tif 000020
【図２０】
0005481669.tif 000021
【図２１】
0005481669.tif 000022
【図２２】
0005481669.tif 000023
【図２３】
0005481669.tif 000024