(57)【要約】【課題】効率の良い先読みキャッシュ方法を備えた記憶装置の提供。【解決手段】計算機ノード１１１は、複数のファイルを記憶可能な記憶部１１７と、他の計算機ノード１０１、１２１のキャッシュ優先度判定テーブル１０６、１２６の一部（エントリ）を格納している。キャッシュ優先度判定テーブル１０６、１２６の各エントリは、ファイル名と、そのファイルの最新更新時刻と最新参照時刻と該ファイルの更新回数及び参照回数の差を示す更新・参照差情報とを備える。所定のタイミングで、各エントリのうち、所定の条件を満たすものがあるかを確認し、所定の条件を満たしたファイルを他の計算機ノードから取得し、キャッシュする。【選択図】　図１
2004118482.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して互いに通信可能な複数の計算機ノードのそれぞれに備えることが可能な記憶装置であって、
複数のファイルを記憶可能な記憶手段と、
他の計算機ノードの記憶手段に記憶された複数のファイルのうち、少なくとも一つのファイルに対し、該ファイルを特定するための情報と、該ファイルの最新更新時刻と該ファイルの最新参照時刻と該ファイルの更新回数及び参照回数の差を得ることが可能な更新・参照差情報とを対応付けたキャッシュ優先度判定テーブルを格納する格納手段と、
前記格納手段に格納されるキャッシュ優先度判定テーブルの該最新更新時刻と該最新参照時刻と該更新・参照差情報との組が所定の条件を満たすときに、その組に対応するファイルを要求し、該要求により取得した該ファイルを前記記憶手段に記憶するキャッシュ管理手段とを備えたことを特徴とする記憶装置。
【請求項２】
ネットワークを介して互いに通信可能な複数の計算機ノードのそれぞれに備えることが可能な記憶装置であって、
ファイルを複数の領域に分割した分割領域単位で記憶可能な記憶手段と、
他の計算機ノードの記憶手段に記憶された複数の分割領域のうち、少なくとも一つの該分割領域を含むファイルに対し、該ファイルを特定するための情報と、該ファイルの各分割領域の最新更新時刻と該ファイルの各分割領域の最新参照時刻と該ファイルの各分割領域の更新回数及び参照回数の差を得ることが可能な更新・参照差情報とを対応付けたキャッシュ優先度判定テーブルを格納する格納手段と、
前記格納手段に格納されるキャッシュ優先度判定テーブルの該最新更新時刻と該最新参照時刻と該更新・参照差情報との組が所定の条件を満たすときに、その組に対応する分割領域を要求し、該要求により取得した該分割領域を前記記憶手段に記憶するキャッシュ管理手段とを備えたことを特徴とする記憶装置。
【請求項３】
前記格納手段は、更に、前記記憶手段に記憶されるファイルに対応するキャッシュ優先度判定テーブルをも格納することを特徴とする請求項１または請求項２記載の記憶装置。
【請求項４】
前記所定の条件は、最新更新時刻より最新参照時刻が新しく、且つ、参照回数が更新回数に対し所定の閾値より大きい第１の条件としたことを特徴とする請求項１または請求項２記載の記憶装置。
【請求項５】
前記所定の条件は、最新更新時刻より最新参照時刻が新しく、且つ、参照回数が更新回数に対し所定の閾値より大きい第１の条件と、最新参照時刻より最新更新時刻が新しく、且つ、参照回数が更新回数に対し所定の閾値より大きい第２の条件とからなるようにしたことを特徴とする請求項１または請求項２記載の記憶装置。
【請求項６】
前記キャッシュ管理手段を定期的に実行する手段を更に備え、
前記所定の条件は、最新更新時刻より最新参照時刻が新しく、且つ、参照回数が更新回数に対し所定の閾値より大きい第１の条件としたことを特徴とする請求項１または２記載の記憶装置。
【請求項７】
前記他の計算機ノードにあるファイルの使用を開始するときに、使用が開始される該ファイルに対する、該ファイルを特定するための情報と、該ファイルの最新更新時刻と該ファイルの最新参照時刻と該ファイルの更新回数及び参照回数の差を得ることが可能な更新・参照差情報とを前記計算機ノードから取得し、前記格納手段に格納されるキャッシュ優先度判定テーブルに追加するようにしたことを特徴とする請求項１記載の記憶装置。
【請求項８】
前記キャッシュ管理部は、前記他の計算機ノードにあるファイルの使用を開始するときに、使用を開始される該ファイルに対する、分割領域を含むファイルに対し、該ファイルを特定するための情報と、該ファイルの各分割領域の最新更新時刻と該ファイルの各分割領域の最新参照時刻と該ファイルの各分割領域の更新回数及び参照回数の差を得ることが可能な更新・参照差情報とを取得し、前記格納手段に格納されるキャッシュ優先度判定テーブルに追加するようにしたことを特徴とする請求項２記載の記憶装置。
【請求項９】
該キャッシュ優先度判定テーブルに含まれる該ファイルの使用終了時に、該ファイルに対応の最新更新情報と最新参照情報と更新・参照差情報とを該別の計算機へ送信するようにしたことを特徴とする請求項１または請求項２記載の記憶装置。
【請求項１０】
前記格納手段は、更に、前記記憶手段に記憶されるファイルに対応するキャッシュ優先度判定テーブルをも格納するようにするとともに、
自記憶装置を備える計算機ノードが、該キャッシュ優先度判定テーブルに含まれる該ファイルの使用終了時に、該ファイルのマスターファイルが該計算機ノードと別の計算機ノードにある場合には、該ファイルに対応の最新更新情報と最新参照情報と更新・参照差情報とを該別の計算機へ送信するようにしたことを特徴とする請求項１記載の記憶装置。
【請求項１１】
前記キャッシュ管理手段は、該別の計算機ノードから、前記記憶手段に記憶されるマスターファイルのあるファイルに対応の最新更新情報と最新参照情報と更新・参照差情報とを受信した時、前記キャッシュ優先度判定テーブルに格納される該ファイルに対応の最新更新情報と最新参照情報と更新・参照差情報とを必要に応じて更新するテーブル更新手段を更に備えたことを特徴とする請求項１０記載の記憶装置。
【請求項１２】
前記格納手段は、更に、前記記憶手段に記憶されるファイルに対応するキャッシュ優先度判定テーブルをも格納するようにするとともに、
自記憶装置を備える計算機ノードが、該キャッシュ優先度判定テーブルに含まれる該ファイルの使用終了時に、該ファイルのマスターファイルが該計算機ノードと別の計算機ノードにある場合には、該ファイルの分割領域それぞれに対応の最新更新情報と最新参照情報と更新・参照差情報とを該別の計算機へ送信するようにしたことを特徴とする請求項２記載の記憶装置。
【請求項１３】
前記キャッシュ管理手段は、該別の計算機ノードから、前記記憶手段に記憶されるマスターファイルのあるファイルに対応の最新更新情報と最新参照情報と更新・参照差情報とを受信した時、前記キャッシュ優先度判定テーブルに格納される該ファイルの各分割領域に対応の最新更新情報と最新参照情報と更新・参照差情報とを必要に応じて更新するテーブル更新手段を更に備えたことを特徴とする請求項１２記載の記憶装置。
【請求項１４】
前記格納手段に格納されるキャッシュ優先度判定テーブルは、更に自記憶装置を備える計算機ノードで行われた更新及び参照による更新回数及び参照回数の差を得ることが可能な自ノード更新・参照差情報を対応付けて格納するようにしたことを特徴とする請求項１または請求項２記載の記憶装置。
【請求項１５】
前記キャッシュ管理手段は、ファイルの削除が必要なとき、該キャッシュ優先度判定テーブルを参照し、最新更新時刻より最新参照時刻が古く、且つ、更新・参照差情報が参照回数が更新回数に対し所定の閾値より小さいことを示すファイルを最優先に削除するようにしたことを特徴とする請求項１記載の記憶装置。
【請求項１６】
前記キャッシュ管理手段は、該分割領域の削除が必要なとき、該キャッシュ優先度判定テーブルを参照し、最新更新時刻より最新参照時刻が古く、且つ、更新・参照差情報が参照回数が更新回数に対し所定の閾値より小さいことを示す該分割領域を最優先に削除するようにしたことを特徴とする請求項２記載の記憶装置。
【請求項１７】
それぞれ複数のファイルを記憶する第１の計算機ノードと第２の計算機ノードとを含む複数の計算機ノードはネットワークで互いに接続されており、前記第２の計算機ノードの該ファイルを前記第１の計算機ノードで利用するに先立って、該ファイルまたはこれを分割した分割領域を自身のノードへ選択的にキャッシュするキャッシュ方法であって、
前記第１の計算機ノードは、前記第２の計算機ノードから、前記第２の計算機ノードに記憶される少なくとも一つのファイルに対する、該ファイルを特定するための情報と、該ファイルの最新更新時刻と該ファイルの最新参照時刻と該ファイルの更新回数及び参照回数の差を得ることが可能な更新・参照差情報とを対応付けたキャッシュ優先度判定テーブルを取得し、格納しておき、
前記第１の計算機ノードは、所定のタイミングにおいて、該格納した第２の計算機ノードのキャッシュ優先度判定テーブルの該最新更新時刻と該最新参照時刻と該更新・参照差情報との組が所定の条件を満たすか否かを判定し、
前記第１の計算機ノードは、該所定の条件を満たしたことを判定した際に、その組に対応するファイルまたはこれを分割した分割領域を前記第１の計算機ノードは前記第２の計算機ノードへ要求して取得し、
前記第１の計算機ノードは、取得した該ファイルまたはこれを分割した分割領域を自身のノード内へキャッシュするようにしたことを特徴とするキャッシュ方法。
【請求項１８】
それぞれ複数のファイルを記憶する第１の計算機ノードと第２の計算機ノードとを含む複数の計算機ノードはネットワークで互いに接続されており、前記第２の計算機ノードの該ファイルを前記第１の計算機ノードで利用するに先立って、該ファイルまたはこれを分割した分割領域を自身のノードへ選択的にキャッシュするキャッシュ方法であって、
前記第２の計算機ノードは、自計算機ノードに記憶されるファイルまたはこれを分割した分割領域単位に対する、該ファイルを特定するための情報と、該ファイルの最新更新時刻と該ファイルまたはこれを分割した分割領域の最新参照時刻と該ファイルまたはこれを分割した分割領域の更新回数及び参照回数の差を得ることが可能な更新・参照差情報とを対応付けたキャッシュ優先度判定テーブルを取得し、格納しておき、
前記第２の計算機ノードは、所定のタイミングにおいて、該キャッシュ優先度判定テーブルの該最新更新時刻と該最新参照時刻と該更新・参照差情報との組が所定の条件を満たすか否かを判定し、
前記第２の計算機ノードは、該所定の条件を満たしたことを判定した際に、その組に対応するファイルまたはこれを分割した分割領域を前記第１の計算機ノードへ送信し、
前記第１の計算機ノードは、取得した該ファイルまたはこれを分割した分割領域を自身のノード内へキャッシュするようにしたことを特徴とするキャッシュ方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワークを介して接続される複数の計算機ノードで構成される計算機クラスタシステムにおける、ファイルの先読みキャッシュを行なうことが可能な記憶装置、およびキャッシュ方法に関する。
【０００２】
【従来の技術】
独立した複数の計算機ノードを組み合わせてプログラムを動作させるシステムを計算機クラスタシステムという。
【０００３】
ネットワークによって接続された複数の計算機ノードによって構成される計算機クラスタシステムの各計算機ノード間でデータを格納したファイルを共有する手法として、ネットワークを介しファイルを格納している計算機ノード上の記憶装置からファイルの内容を参照することが一般的に行われている。このような手法の代表的なものとしては、ＮＦＳ（Ｎｅｔｗｏｒｋ　Ｆｉｌｅ　Ｓｙｓｔｅｍ）がある。
【０００４】
ＮＦＳは、ネットワークに接続されたＮＦＳ　サーバと、ＮＦＳクライアントとによって構成される。ＮＦＳサーバは、ファイルを格納しており、他の計算機ノードからのファイルへのアクセスを提供する計算機ノードにおいて動作している。ＮＦＳクライアントは、他の計算機ノードに格納されているファイルに対してアクセスを行う計算機ノードにおいて動作している。ＮＦＳクライアントが動作している計算機ノードにおいて、ファイルに対してアクセスの要求があった場合、ＮＦＳクライアントがその要求をＮＦＳサーバに転送し、ＮＦＳサーバは実際のファイルにアクセスを行い、ＮＦＳクライアントにその結果を返す。このようにして、複数の計算機ノード間でファイルの共有を実現している。
【０００５】
このような計算機クラスタシステムにおいて、各計算機ノードから他の計算機ノードに格納されているファイルの参照や更新は、計算機ノード間通信を伴う。これは、プロセスが動作している計算機ノードに格納されているファイルの参照や更新よりも時間がかかる。そのため、他の計算機ノードに格納されているファイルを、ファイルアクセスに先行してプロセスが動作している計算機ノードに前もって参照して記憶する先読みキャッシュを行なうことは、ファイルアクセスの性能を上げるために非常に重要である。
【０００６】
この先読みキャッシュの方法としては、ファイルへの参照時刻が新しいものを優先して先読みを行なう方法（ＬＲＵ）が一般的であった。この他に、参照のアクセス頻度と参照時刻とを使い分けたキャッシュの管理方法も提案されている（例えば、特許文献１参照）。
【０００７】
【特許文献１】特開平７−１８２２２０号公報（特に、００２６段落−００２９、及び、第３図、第４図。）
【０００８】
【発明が解決しようとする課題】
しかしながら、上記で説明した従来の先読みキャッシュ方法を用いた計算機クラスタシステムは、先読みキャッシュを行っても、他の計算機ノードで該ファイルが更新された場合、先読みキャッシュした内容と実際のファイルの内容が異なってしまうので、改めてキャッシュを行わなければならない。そのため、結果として、先読みキャッシュを行なったことが原因で、逆に計算機ノード間通信の通信量を増やしてしまい、システム全体の性能を下げる要因となってしまうことが多かった。
【０００９】
また、ファイルをキャッシュするためのキャッシュ領域の容量は有限であるため、一定の優先順位をつけてキャッシュされたファイルをキャッシュ領域から削除する必要がある。この時の優先度も、従来の先読みキャッシュ方法では、ファイルの参照時刻によって判断し、ファイルアクセス時刻の古いファイルから削除するため、更新される可能性が低く、キャッシュしておくことが有効なファイルがキャッシュ領域から削除されてしまうといったことが多く起きてしまっていた。
【００１０】
本発明は上記で説明した問題点に鑑みなされたものであって、効率の良い先読みキャッシュ方法を備えた記憶装置、および、キャッシュ方法を提供することを目的とする。
【００１１】
【課題を解決するための手段】
上記課題を解決するために本発明は、ネットワークを介して互いに通信可能な複数の計算機ノードのそれぞれに備えることが可能な記憶装置であって、複数のファイルを記憶可能な記憶手段と、他の計算機ノードの記憶手段に記憶された複数のファイルのうち、少なくとも一つのファイルに対し、該ファイルを特定するための情報と、該ファイルの最新更新時刻と該ファイルの最新参照時刻と該ファイルの更新回数及び参照回数の差を得ることが可能な更新・参照差情報とを対応付けたキャッシュ優先度判定テーブルを格納する格納手段と、前記格納手段に格納されるキャッシュ優先度判定テーブルの該最新更新時刻と該最新参照時刻と該更新・参照差情報との組が所定の条件を満たすときに、その組に対応するファイルを要求し、該要求により取得した該ファイルを前記記憶手段に記憶するキャッシュ管理手段とを備えた。
【００１２】
また、本発明は、ネットワークを介して互いに通信可能な複数の計算機ノードのそれぞれに備えることが可能な記憶装置であって、ファイルを複数の領域に分割した分割領域単位で記憶可能な記憶手段と、他の計算機ノードの記憶手段に記憶された複数の分割領域のうち、少なくとも一つの該分割領域を含むファイルに対し、該ファイルを特定するための情報と、該ファイルの各分割領域の最新更新時刻と該ファイルの各分割領域の最新参照時刻と該ファイルの各分割領域の更新回数及び参照回数の差を得ることが可能な更新・参照差情報とを対応付けたキャッシュ優先度判定テーブルを格納する格納手段と、前記格納手段に格納されるキャッシュ優先度判定テーブルの該最新更新時刻と該最新参照時刻と該更新・参照差情報との組が所定の条件を満たすときに、その組に対応する分割領域を要求し、該要求により取得した該分割領域を前記記憶手段に記憶するキャッシュ管理手段とを備えた。
【００１３】
また、本発明は、それぞれ複数のファイルを記憶する第１の計算機ノードと第２の計算機ノードとを含む複数の計算機ノードはネットワークで互いに接続されており、前記第２の計算機ノードの該ファイルを前記第１の計算機ノードで利用するに先立って、該ファイルまたはこれを分割した分割領域を自身のノードへ選択的にキャッシュするキャッシュ方法であって、前記第１の計算機ノードは、前記第２の計算機ノードから、前記第２の計算機ノードに記憶される少なくとも一つのファイルに対する、該ファイルを特定するための情報と、該ファイルの最新更新時刻と該ファイルの最新参照時刻と該ファイルの更新回数及び参照回数の差を得ることが可能な更新・参照差情報とを対応付けたキャッシュ優先度判定テーブルを取得し、格納しておき、前記第１の計算機ノードは、所定のタイミングにおいて、該格納した第２の計算機ノードのキャッシュ優先度判定テーブルの該最新更新時刻と該最新参照時刻と該更新・参照差情報との組が所定の条件を満たすか否かを判定し、前記第１の計算機ノードは、該所定の条件を満たしたことを判定した際に、その組に対応するファイルまたはこれを分割した分割領域を前記第１の計算機ノードは前記第２の計算機ノードへ要求して取得し、前記第１の計算機ノードは、取得した該ファイルまたはこれを分割した分割領域を自身のノード内へキャッシュするようにした。
【００１４】
また、本発明は、それぞれ複数のファイルを記憶する第１の計算機ノードと第２の計算機ノードとを含む複数の計算機ノードはネットワークで互いに接続されており、前記第２の計算機ノードの該ファイルを前記第１の計算機ノードで利用するに先立って、該ファイルまたはこれを分割した分割領域を自身のノードへ選択的にキャッシュするキャッシュ方法であって、前記第２の計算機ノードは、自計算機ノードに記憶されるファイルまたはこれを分割した分割領域単位に対する、該ファイルを特定するための情報と、該ファイルの最新更新時刻と該ファイルまたはこれを分割した分割領域の最新参照時刻と該ファイルまたはこれを分割した分割領域の更新回数及び参照回数の差を得ることが可能な更新・参照差情報とを対応付けたキャッシュ優先度判定テーブルを取得し、格納しておき、前記第２の計算機ノードは、所定のタイミングにおいて、該キャッシュ優先度判定テーブルの該最新更新時刻と該最新参照時刻と該更新・参照差情報との組が所定の条件を満たすか否かを判定し、前記第２の計算機ノードは、該所定の条件を満たしたことを判定した際に、その組に対応するファイルまたはこれを分割した分割領域を前記第１の計算機ノードへ送信し、前記第１の計算機ノードは、取得した該ファイルまたはこれを分割した分割領域を自身のノード内へキャッシュするようにした。
【００１５】
このような本発明によって、従来に比べ、格段とヒット率の高い効率的な先読みキャッシュができるようになった。
【００１６】
【発明の実施の形態】
以下、本発明の実施の形態について、説明する前に、まず、本発明の概念について説明する。
【００１７】
計算機クラスタシステムを構成する各計算機ノードには、ファイル単位、または、ファイルを所定の方法で分割した各領域（以下、分割領域と称す）単位に対応付けて、最新更新時刻、最新参照時刻、更新回数と参照回数との差を記録する領域を備えるキャッシュ優先度判定テーブルを備える。このキャッシュ優先度判定テーブルを参照し、ファイルまたは分割領域に対するアクセスのパターンを予測することにより、先読みキャッシュを行うか否かを決定する。なお、更新回数と参照回数との差の記録の代わりに更新回数と参照回数とをそれぞれ記憶し、それらの比較差を求めるようにしても良いことは勿論である。
【００１８】
最新更新時刻と最新参照時刻とからは、その値を比較することで、ファイルまたは分割領域に対して行われた最後のアクセスが、更新であるのか、参照であるのかを判断することができる。
【００１９】
また、ファイルまたは分割領域に対する更新回数と参照回数の差は、この値が正の値であれば更新が多く、負の値であれば参照が多いことを表す。つまり、この値を利用することで、該ファイルまたは分割領域に対するアクセスは、更新のアクセスが多いのか、参照のアクセスが多いのかという傾向を判断することができる。なお、更新回数と参照回数のどちらが多いかは単純に比較せずに、ある閾値を設け、その閾値よりも差が多いときに、更新回数と参照回数に有意な差があると見なすようにしてもよい。
【００２０】
そして、これら３つの値が、最新更新時刻よりも最新参照時刻の方が新しく、且つ、更新回数よりも参照回数が多い条件（第１条件）下においては、次のアクセスは参照のためのアクセスである可能性が大変高いという判断を行うことができる。また、３つの値が、最新参照時刻よりも最新更新時刻の方が新しいが、更新回数よりも参照回数が多い条件（第２条件）下においては、第１条件程ではないが、次のアクセスは参照のためのアクセスである可能性が高いという判断を行うことができる。また、３つの値が、最新更新時刻よりも最新参照時刻の方が新しいが、更新回数の方が参照回数よりも多い条件（第３条件）下では、以降のアクセスで参照される可能性もあるが更新される可能性のほうが高いという判断ができる。また、３つの値が、最新更新時刻が最新参照時刻よりも新しく、さらに更新回数が参照回数よりも多い条件（第４条件）下では、以降のアクセスで、更新される可能性が非常に高いという判断を行うことができる。
【００２１】
以上の４つの条件を区別してキャッシュを管理する。すなわち、本計算機クラスタシステムの各記憶装置は、まず、第１条件、次に第２条件の順で優先的に、ファイルまたは分割領域を先読みキャッシュするようにし、その結果、キャッシュのヒット率の高い記憶装置が提供できるようになる。また、本計算機クラスタシステムの各記憶装置は、少なくとも第４条件を満たすときファイルまたは分割領域の先読みキャッシュを行わないようにし、その結果、キャッシュのヒット率の高さを維持した記憶装置が提供でき、且つ、無駄になる可能性の高いファイルまたは分割領域の通信を削減できるようになる。更に、本計算機クラスタシステムを構成する各計算機ノード上のキャッシュ領域が不足した場合に、第３条件のファイルまたは分割領域のキャッシュが存在した場合には、優先的にキャッシュ領域から削除するようにし、その結果、キャッシュのヒット率の高さを維持した記憶装置が提供できる。
【００２２】
以上のようにして、本記憶システムを構成する各計算機ノードは、参照されるが、更新はされない可能性の高いファイルまたは分割領域を優先して各々の計算機ノードで先読みキャッシュし、更新される可能性の高いファイルまたは分割領域は先読みキャッシュしないという動作を実現し、先読みキャッシュを有効に行なうことが可能となり、無駄な計算機ノード間通信を削減することが可能となる。
【００２３】
次に、上記で説明した本発明の概念に基づいた本発明の実施の形態について、図面を用いて以下に詳細に説明する。
【００２４】
図１は、ネットワーク１３０で接続された３台の計算機ノード１０１、１１１、１２１によって構成される計算機クラスタシステムのブロック図である。なお、計算機ノードは３台に限らず、２台以上であれば何台でもよい。
【００２５】
各計算機ノード１０１、１１１、１２１は、通信装置１０３、１１３、１２３と、ファイル管理部１０４、１１４、１２４と、記憶部１０７、１１７、１２７とをそれぞれ備える。各通信装置１０３、１１３、１２３は、ネットワーク１３０を介し、互いに接続される。通信の方式は、例えば、イーサーネット等が好適であるが、計算機ノード１０１、１１１、１２１間で通信を行うことができれば種類は問わない。
【００２６】
各計算機ノード１０１、１１１、１２１上では、それぞれに備える図示しないプロセッサ上で、プロセス１０２、１１２、１２２が動作しており、各種処理を行っている。
【００２７】
記憶部１０７、１１７、１２７は、ハードディスク、半導体メモリなどの記憶媒体であり、複数のマスターファイルを記憶する。各マスターファイルは、データや、ファイルに関する管理情報等を記録している。また、記憶部１０７、１１７、１２７は、それぞれ他の記憶部からキャッシュしてきたコピー（スレーブ）のファイルまたは分割領域も記憶可能である。
【００２８】
ファイル管理部１０４、１１４、１２４は、自身の記憶部１０７、１１７、１２７に記憶されるマスターファイルやキャッシュしてきたコピーのファイルまたは分割領域を管理し、またこれらの入出力を行なうものである。また、ファイル管理部１０４、１１４、１２４は、記憶されるマスターファイルやキャッシュしてきたコピーのファイルまたは分割領域がどの計算機ノードにマスターファイルが格納されているかを管理する。また、ファイル管理部１０４、１１４、１２４は、キャッシュ管理部１０５、１１５、１２５と、先読みキャッシュを行うためのキャッシュ優先度判定テーブル１０６、１１６、１２６とを備える。
【００２９】
キャッシュ優先度判定テーブル１０６、１１６、１２６は、自身の記憶部１０７、１１７、１２７に記憶されるマスターファイルやキャッシュしてきたコピーのファイルまたは分割領域のキャッシュ優先度判定に関する値を格納するものである。キャッシュ優先度判定テーブル１０６、１１６、１２６の一例を図２に示す。図２のキャッシュ優先度判定テーブルは、Ａ、Ｂ、Ｃ、Ｄの４つのファイルが登録されていることを示している。該テーブルには、１つのファイルに対するエントリーとして、ファイルの最新更新時刻（ＴＳｗ）、ファイルの最新参照時刻（ＴＳｒ）、ファイルに対する更新回数と参照回数との差を示す更新・参照差値（Ｃ）、および、各計算機ノード上での更新回数と参照回数との差を示す自ノード更新・参照差値（Ｃｃ）を格納する領域が用意されている。なお、マスターファイルを対象としたエントリーの自ノード更新・参照差値（Ｃｃ）は、利用されないのでＸで示している。また、図３は、図２の変形例のキャッシュ優先度判定テーブルであって、一つのファイルを領域分割して、各領域毎に情報を記録するようにしたものである。本実施の形態では、何れのテーブルを用いても良い。
【００３０】
図４は、キャッシュ優先度判定テーブルからの抽出条件を列挙した表である。たとえば、条件１は最新更新時刻（ＴＳｗ）が新しく、最新参照時刻（ＴＳｒ）が古く、ファイルまたは分割領域に対する更新・参照差値（Ｃ）がある閾値Ｔよりも大きい条件を意味する。なお、閾値Ｔは、０よりも大きな数値である。
【００３１】
次に、上記で説明した計算機クラスタシステムの動作について説明する。なお、以下の説明では、図３のキャッシュ優先度判定テーブルを用いたものとして、説明を行うこととする。
【００３２】
図５は、キャッシュ管理に係る全体の動作を、例として計算機ノード１１１を中心として示したフローチャートである。なお、計算機ノード１０１および計算機ノード１２１も同様な動作を行う。
【００３３】
まず、ファイル管理部１１４は、ファイルまたは分割領域に係る諸処理の要求を待つ（Ｓ１０）。ここで、ファイル管理部１１４は、何らかの処理の要求を受ける（Ｓ１１）と、まず、定期キャッシュの要求であるか否かを判定する（Ｓ１２）。本計算機クラスタシステムの各計算機ノードの各ファイル管理部１０４、１１４、１２４間は、定期的に通信装置１０３、１１３、１２３を介し通信を行って、各計算機ノード１０１、１１１、１２１の記憶部１０７、１１７、１２７の記憶容量をチェックしている。その結果、各記憶容量に十分余裕がある場合には、先読みキャッシュ動作を行う。この処理をここでは定期キャッシュと呼び、この定期キャッシュの要求は、ファイル管理部１１４自身で行っている。
【００３４】
処理の要求の判定が、定期キャッシュの要求であれば、定期キャッシュ処理を実行する（Ｓ１３）。一方、定期キャッシュの要求でなければ、次に、ファイルの使用開始（ｏｐｅｎ）の要求であるか否か判定する（Ｓ１４）。ファイルのｏｐｅｎ要求であれば、ファイルの使用開始処理を行う（Ｓ１５）。ファイルの使用開始の要求でなければ、次に分割領域の参照（ｒｅａｄ）要求であるか否か判定する（Ｓ１６）。分割領域の参照要求であれば、分割領域の参照処理を行う（Ｓ１７）。分割領域の参照要求でなければ、次に分割領域の更新（ｗｒｉｔｅ）要求であるか否か判定する（Ｓ１８）。分割領域のｗｒｉｔｅ要求であれば、分割領域の更新処理を行う（Ｓ１９）。分割領域のｗｒｉｔｅ要求でなければ、ファイルの使用終了（ｃｌｏｓｅ）の要求なので、ファイルの使用終了の処理を行う（Ｓ２０）。各要求に対する処理が終わると、ステップＳ１１に戻り、ファイル管理部１１４は、再び、次の要求を待つ。
【００３５】
なお、ここで説明したフローでは、この他の判定を行うこともあるかも知れないが、本実施の形態に直接関係ないので、省略する。また、判定の順序も上記の順でなくても良いことは勿論である。
【００３６】
図６は、図５のステップＳ１３の定期キャッシュ処理の動作を説明したフローチャートである。
【００３７】
定期キャッシュ処理の要求と判定したファイル管理部１１４は、キャッシュ管理部１１５へ定期キャッシュ処理を通知する（Ｓ２１）。キャッシュ管理部１１５は、キャッシュ優先度判定テーブル１１６の中から、図４の条件４に合致するエントリを検索する（Ｓ２２）。なお、エントリとは、ここでは、各分割領域に対応したキャッシュ優先度判定テーブル１１６の各行をそれぞれ指している。
【００３８】
次に、検索により抽出されたエントリが計算機ノード１１１の記憶部１１７に格納されている分割領域であるか否かを判断する（Ｓ２３）。記憶部１１７に格納されていた場合には、次に、その分割領域がマスターであるかコピーであるかを判断する（Ｓ２４）。なお、各ファイル管理部１０４、１１４、１２４は、ファイルのマスターがどの計算機ノードにあるかは知っており、その分割領域を含むファイルが自ノードに格納されている場合はマスターであり、他ノードに格納されている場合はコピー（以前にキャッシュされた領域）であると判断することができる。
【００３９】
もし、コピーであると判断された場合には何もせず、定期キャッシュを終了する。一方、判断の結果、マスターであると判断すると、キャッシュ管理部１１５は、ファイル管理部１１４を介し、他の計算機ノード１０１、１２１のファイル管理部１０４、１２４のキャッシュ管理部１０５、１２５へ、この分割領域を含むファイルのエントリを添付し、且つ、この分割領域をキャッシュすべき旨の要求を出す（Ｓ２５）。キャッシュ管理部１０５、１２５は、この要求を受け、添付されたエントリを自身のキャッシュ優先度判定テーブル１０６、１２６へ追加するとともに、ファイル管理部１０４、１２４を介し、ファイル管理部１１５へその分割領域の送信要求を行う（Ｓ２６）。なお、キャッシュ管理部１０５、１２５は、添付されたエントリを自身のキャッシュへ追加する際には、更新時刻（ＴＳｗ）、参照時刻（ＴＳｒ）、更新・参照差値（Ｃ）はそのままとし、自ノード更新・参照差値（Ｃｃ）を０として追加する。
【００４０】
ファイル管理部１１５は、要求を受けた分割領域を読み出してファイル管理部１０４、１２４へ送信し、ファイル管理部１０４、１２４は、受信した分割領域を記憶部１０７、１２７へキャッシュする（Ｓ２７）。そして、定期キャッシュを終了する。
【００４１】
一方、ステップＳ２３で、抽出されたエントリの分割領域が計算機ノード１１１の記憶部１１７に格納されていない場合には、分割領域を含むファイルのファイル名に基づいて、ファイルを格納している、例えば計算機ノード１０１へ分割領域の送信要求を行う（Ｓ２８）。そして、計算機ノード１０１から転送された分割領域を計算機ノード１１１の記憶部１１７へキャッシュする（Ｓ２９）。
【００４２】
なお、上記フローチャートの説明は、ステップＳ２２の検索により抽出されたエントリが１つの場合について説明したが、Ｓ２２によって、複数のエントリを抽出しても良い。この場合、Ｓ２３から終了までに関するステップを繰り返し行えば良いことは明らかである。以上のようにして、定期キャッシュ処理時に先読みキャッシュが行われる。
【００４３】
次に、図７は、図５のステップＳ１５のファイルの使用開始（ｏｐｅｎ）処理の動作を説明したフローチャートである。
【００４４】
まず、プロセス１１２からのファイルの使用開始（ｏｐｅｎ）の要求と判定したファイル管理部１１４は、ｏｐｅｎ要求のファイルが自ノードにマスターファイルが有るか否かを判定する（Ｓ３１）。自ノードにマスターファイルが無いと判定した場合にのみ、以降のステップを行なう。
【００４５】
まず、ファイル管理部１１４は、キャッシュ管理部１１５へファイルの使用開始を通知する（Ｓ３２）。キャッシュ管理部１１５は、要求されたファイルを備える、例えば計算機ノード１０１へエントリの取得要求を行い、要求ファイルのエントリを取得する（Ｓ３３）。
【００４６】
次に、キャッシュ優先度判定テーブルに、既に要求のあったファイルのエントリを格納しているかを確認する（Ｓ３４）。既に格納していたならば、既に格納していたエントリの最新更新時刻（ＴＳｗ）と、新たに取得したエントリの最新更新時刻（ＴＳｗ）を比較し、新たに取得したテーブルのＴＳｗの方が新しく（実際には一致しない場合）、かつ、その分割領域をキャッシュとして既に格納している場合（Ｓ３５）は、該当する分割領域またはファイルのキャッシュを削除する（Ｓ３６）。そして格納していたエントリを新たなエントリに変更する（Ｓ３７）。
【００４７】
次に、取得した要求ファイルの各エントリが、条件４または条件２に該当しないか否かを判別する（Ｓ３８）。条件４または条件２に該当しない場合には、キャッシュすることなく処理を終了する。一方、条件４または条件２に該当するエントリがある場合には、その分割領域を取得するために、計算機ノード１０１のファイル管理部１０４に要求を出して、その要求する分割領域を読み出して、記憶部１１７に先読みキャッシュする（Ｓ３９）。
【００４８】
次に、図８は、図５のステップＳ１７の分割領域の参照処理の動作を説明したフローチャートである。
【００４９】
まず、プロセス１１２からの分割領域の参照（ｒｅａｄ）の要求と判定したファイル管理部１１４は、ｒｅａｄ要求の分割領域を含むファイルが自ノードにマスターファイルが有るか否かを判定する（Ｓ３１）。自ノードにマスターファイルが有ると判定した場合、この分割領域に対応するキャッシュ優先度判定テーブルのエントリの最新参照時刻（ＴＳｒ）を現在時刻に変更し、また、更新・参照差値（Ｃ）を１減らす（Ｓ４２）。
【００５０】
一方、自ノードにマスターファイルが無いと判定した場合には、次に、記憶部１１７に要求された分割領域の最新の分割領域をキャッシュ済であるか否かを判断する（Ｓ４３）。もし、キャッシュ済で無い場合には、キャッシュ管理部１１５へその旨通知し、キャッシュ管理部１１５は、ファイル管理部１１４を介し、この分割領域を格納している例えば他の計算機ノード１０１へ、この分割領域の送信要求を出す（Ｓ４４）。この要求を受けた他の計算機ノード１０１のファイル管理部１０４は、要求された分割領域を読みだし、この分割領域を計算機ノード１１１へ送信する。ファイル管理部１１４は、受信した分割領域を記憶部１１７へキャッシュする（Ｓ４５）。なお、ｒｅａｄはｏｐｅｎより必ず後になるので、キャッシュ優先度判定テーブルはキャッシュ管理部１１５に登録されている。
【００５１】
次に、この分割領域のキャッシュ優先度判定テーブル１１６のエントリを次のように更新する（Ｓ４６）。すなわち、最新参照時刻（ＴＳｒ）に現在の時刻を代入し、更新・参照差値（Ｃ）から１を減じ、Ｃの更新の内容を記録するための自ノード更新・参照差値Ｃｃから１を減じる。なお、この例では単純にＣから１を減じる処理としたが、例えば、最新更新時刻（ＴＳｗ）と最新参照時刻（ＴＳｒ）の新しい方の値と、現在時刻の差に応じて係数ｆ（０＜ｆ＜１）を用いた演算を行って、最新の参照に重み付けをしてもよい。
【００５２】
ステップＳ４２またはＳ４６の後に、この分割領域を読み出した領域の応答としてプロセスへ送る（Ｓ４５）。そして、ファイル１０８からの参照が終了する。
【００５３】
次に、図９に、図５のステップＳ１９の分割領域の更新処理の動作を示すフローチャートを示し説明する。
【００５４】
まず、プロセス１１２からの、ある分割領域への更新（ｗｒｉｔｅ）の要求と判断したファイル管理部１１４は、ｗｒｉｔｅ要求の分割領域を含むファイルが自ノードにマスターファイルが有るか否かを判定する（Ｓ５１）。自ノードにマスターファイルが有ると判定した場合、この分割領域に対応するキャッシュ優先度判定テーブルのエントリの最新更新時刻（ＴＳｗ）を現在時刻に変更し、また、更新・参照差値（Ｃ）を１増やす（Ｓ５２）。
【００５５】
一方、自ノードにマスターファイルが無いと判定した場合には、次に、記憶部１１７に、分割領域のキャッシュが必要か否かを判断する（Ｓ５３）。なお、ここでキャッシュが必要と判断される場合は、キャッシュ内容が最新のものでなく、且つ、分割領域のエントリが（前記キャッシュ条件の）条件４または２のときである。もし、キャッシュが必要と判断された場合には、キャッシュ管理部１１５へその旨通知し、キャッシュ管理部１１５は、ファイル管理部１１４を介し、この分割領域を格納している例えば他の計算機ノード１０１へ、この分割領域の送信要求を出す（Ｓ５４）。この要求を受けた、ファイル管理部１０４は、要求された分割領域を読みだし、この分割領域を計算機ノード１１１へ送信する。ファイル管理部１１４は、受信した分割領域を記憶部１１７へキャッシュする（Ｓ５５）。なお、ｗｒｉｔｅ要求は、ｏｐｅｎ要求より必ず後になるので、キャッシュ優先度判定テーブルはキャッシュ管理部１１５に登録されている。
【００５６】
次に、該当する分割領域のキャッシュ優先度判定テーブル１１６のエントリを更新する（Ｓ５６）。最新更新時刻（ＴＳｗ）に現在の時刻を代入し、更新・参照差値（Ｃ）に１を加え、Ｃの更新の内容を記録するための自ノード更新・参照差値（Ｃｃ）に１を加える。なお、Ｃに１を加える際に、最新更新時刻（ＴＳｗ）と最新参照時刻（ＴＳｒ）の新しい方の値と、現在時刻の差に応じて係数ｆ（０＜ｆ＜１）　を用いた演算を行って、最新の更新に重み付けをしてもよい。
【００５７】
ステップＳ５２またはＳ５６の後に、この分割領域を読み出して、プロセス１１２により分割領域を更新する（Ｓ５６）。なお、分割領域がコピーである場合、この時点で計算機ノード１０１のファイルの分割領域へ更新するようにしても良いし、また、そうでなければ、後述のｃｌｏｓｅの処理の時点で更新するようにしても良い。また、例えば、分割領域の更新の有無を示すフラグなどで管理するようにすれば、上記以外の時点で更新するようにもできる。
【００５８】
次に、図１０に、図５のステップＳ２０の分割領域の使用終了処理の動作を示すフローチャートを示し説明する。
【００５９】
まず、プロセス１１２からの分割領域の使用終了（ｃｌｏｓｅ）の要求と判断したファイル管理部１１４は、ｃｌｏｓｅ要求のファイルが自ノードにマスターファイルが有るものか否かを判定する（Ｓ６１）。自ノードにマスターファイルが有ると判定した場合、キャッシュ管理に係る処理としては特に何もせず、ファイル管理部１１４は、通常のｃｌｏｓｅ処理を行って終了する。
この分割領域に対応するキャッシュ優先度判定テーブルのエントリの最新更新時刻（ＴＳｗ）
一方、自ノードにマスターファイルが無いと判定した場合には、ファイル管理部１０４は、
自ノード上で参照・更新されたファイルに対応するキャッシュ優先度判定テーブル１１のエントリをマスターファイルの有るノードへ送信するようキャッシュ管理部１０５に要求する（Ｓ６２）。これにより、送信されたエントリを受信したキャッシュ管理部１０５は、ファイル１０８に対応するキャッシュ優先度判定テーブル１０６の内容にキャッシュ優先度判定テーブル１１６の内容を反映させる（Ｓ６３）。この内容の反映とは、最新更新時刻（ＴＳｗ）が１０６の最新更新時刻（ＴＳｗ）よりも新しければ、１１６のＴＳｗを１０６のＴＳｗに代入する。また、１１６の最新参照時刻（ＴＳｒ）が１０６の最新参照時刻（ＴＳｒ）よりも新しければ、１１６のＴＳｒを１０６のＴＳｒに代入する。また、更新・参照差値（Ｃ）に、ノード１１でのエントリの更新内容を記録するための自ノード更新・参照差値Ｃｃの値を加える。なお、キャッシュ優先度判定テーブル１０６のＣに１１６のＣｃを加える際に、最新更新時刻（ＴＳｗ）　と最新参照時刻（ＴＳｒ）の新しい方の値と、現在時刻の差に応じて係数ｆ（０＜ｆ＜１）　を用いた演算を行って、最新の更新や参照に重み付けをしてもよい。
【００６０】
ステップＳ６３で、反映させて、キャッシュに係るｃｌｏｓｅ処理は終了する。なお、ファイル１０８のキャッシュ優先度判定テーブルの反映が終了した後、図６に示した定期キャッシュを行うようにしても良い。
【００６１】
キャッシュを行う際に、キャッシュデータを格納するための領域がない場合には、優先度の低いキャッシュデータを破棄する必要がある。本発明による記憶部では、図４の条件１に合致するファイルの領域は更新される確率が最も高いので、優先的にキャッシュを破棄する。条件３に合致するファイルの領域の更新される確率は条件１についで高いので、必要があればこれに該当するキャッシュも破棄する。条件４、条件２に合致するキャッシュデータは参照される確率が高いので、なるべく破棄しないようにし、残りのキャッシュデータについては従来のＬＲＵ等の手法で破棄する。
【００６２】
以上詳細に述べてきたように、本実施の形態のようにキャッシュ優先度判定テーブルを設け、また、キャッシュ優先度判定テーブルの管理を行うことにより、効率的な先読みキャッシュができるようになった。
【００６３】
また、本記憶システムを構成する各計算機ノードは、参照されるが、更新はされない可能性の高いファイルまたは分割領域を優先して各々の計算機ノードで先読みキャッシュし、更新される可能性の高いファイルまたは分割領域は先読みキャッシュしないという動作を実現し、先読みキャッシュを有効に行なうことが可能となり、無駄な計算機ノード間通信を削減することが可能となった。
【００６４】
【発明の効果】
本発明によれば、キャッシュ優先度判定テーブルを設け、また、キャッシュ優先度判定テーブルの管理を行うようにしたから、効率的な先読みキャッシュができるようになった。
【図面の簡単な説明】
【図１】本発明の実施形態に係る計算機クラスタシステムの機能ブロックを示す図。
【図２】ファイル単位のキャッシュ優先度判定テーブルの例。
【図３】ファイルを領域単位で分割した分割領域のキャッシュ優先度判定テーブルの例。
【図４】キャッシュ優先度判定テーブルの抽出条件の例。
【図５】本実施の形態のキャッシュ管理に係る全体の動作を示したフローチャート。
【図６】定期キャッシュ処理の動作に係るフローチャート。
【図７】ファイルの使用開始（ｏｐｅｎ）処理におけるキャッシュに係る動作を示すフローチャート。
【図８】ファイルの参照（ｒｅａｄ）処理におけるキャッシュに係る動作を示すフローチャート。
【図９】ファイルの更新（ｗｒｉｔｅ）処理におけるキャッシュに係る動作を示すフローチャート。
【図１０】ファイルの使用終了（ｃｌｏｓｅ）処理におけるキャッシュに係る動作を示すフローチャート。
【符号の説明】
１０１、１１１、１２１・・・計算機ノード
１０２、１１２、１２２・・・プロセス
１０３、１１３、１２３・・・通信部
１０４、１１４、１２４・・・ファイル管理部
１０５、１１５、１２５・・・キャッシュ管理部
１０６、１１６、１２６・・・キャッシュ優先度判定テーブル
１０７、１１７、１２７・・・記憶部
１３０・・・ネットワーク
【図１】
2004118482.tif 000003
【図２】
2004118482.tif 000004
【図３】
2004118482.tif 000005
【図４】
2004118482.tif 000006
【図５】
2004118482.tif 000007
【図６】
2004118482.tif 000008
【図７】
2004118482.tif 000009
【図８】
2004118482.tif 000010
【図９】
2004118482.tif 000011
【図１０】
2004118482.tif 000012