(57)【要約】  本発明の一実施例によると、データを格納する方法は、前記データを複数の部分に分割し、前記複数の部分を複数のサーバノードの１以上のサーバノードに格納するステップを有する。本方法はさらに、前記データの複数の部分の１以上の部分を複数のキャッシュノードの１以上のキャッシュノードにキャッシュするステップを有する。本方法はさらに、データの各部分について、該データの部分がキャッシュされている前記キャッシュノードの識別を格納するステップを有する。
2010519613.tif 000002
【特許請求の範囲】
【請求項１】
データを格納する方法であって、
前記データを複数の部分に分割し、前記複数の部分を複数のサーバノードの１以上のサーバノードに格納するステップと、
前記データの複数の部分の１以上の部分を複数のキャッシュノードの１以上のキャッシュノードにキャッシュし、データの各部分について、該データの部分がキャッシュされている前記キャッシュノードの識別を格納するステップと、
を有する方法。
【請求項２】
１以上のクライアントノードを使用して、前記複数のキャッシュノードの１以上のキャッシュノードにキャッシュされた前記データの複数の部分の１以上の部分にアクセスするステップをさらに有する、請求項１記載の方法。
【請求項３】
前記データの複数の部分の１以上の部分にアクセスするステップは、前記１以上のクライアントノードが前記データの複数の部分の１以上の部分を読むことを許可することを含む、請求項２記載の方法。
【請求項４】
前記データの複数の部分の１以上の部分にアクセスするステップは、
前記１以上のクライアントノードが、前記データの複数の部分の１以上の部分に書き込むことを許可するステップと、
前記１以上のクライアントノードが、前記データの複数の部分の１以上の部分に、前記１以上のクライアントノードによる書き込み後にアクセスすることを可能にするステップと、
を有する、請求項２記載の方法。
【請求項５】
前記前記データの複数の部分の１以上の部分を複数のキャッシュノードの１以上のキャッシュノードにキャッシュするステップは、前記１以上のキャッシュノードを使用して、前記１以上のサーバノードに格納されている前記データの複数の部分の１以上の部分にアクセスするステップを含む、請求項１記載の方法。
【請求項６】
前記複数の部分を複数のサーバノードの１以上のサーバノードに格納するステップは、前記部分を前記１以上のサーバノードにキャッシュするステップを含む、請求項１記載の方法。
【請求項７】
前記データの複数の部分の各部分に対して、前記部分がキャッシュされている前記サーバノードの識別を格納するステップをさらに有する、請求項１記載の方法。
【請求項８】
前記１以上のキャッシュノードの少なくとも１つは、前記複数のサーバノードの１つに格納される、請求項１記載の方法。
【請求項９】
前記データの複数の部分の１以上の部分にアクセスするステップは、前記１以上のクライアントノードを使用して、１以上のスタンバイキャッシュノードにキャッシュされている前記データの複数の部分の１以上の部分にアクセスするステップを含む、請求項２記載の方法。
【請求項１０】
データを格納するシステムであって、
複数の部分に分割されたデータと、
前記データの複数の部分の１以上の部分を格納するよう動作可能な複数のサーバノードと、
前記データの複数の部分の１以上の部分をキャッシュするよう動作可能な複数のキャッシュノードと、
を有するシステム。
【請求項１１】
前記複数のキャッシュノードの１以上のキャッシュノードにキャッシュされている前記データの複数の部分の１以上の部分にアクセスするよう動作可能な１以上のクライアントノードをさらに有する、請求項１０記載のシステム。
【請求項１２】
前記１以上のクライアントノードはさらに、前記データの複数の部分の１以上の部分を読むよう動作可能である、請求項１１記載のシステム。
【請求項１３】
前記１以上のクライアントノードはさらに、
前記データの複数の部分の１以上の部分に書き込み、
前記データの複数の部分の１以上の部分に、前記１以上のクライアントノードにより書き込み後にアクセスする、
よう動作可能である、請求項１１記載のシステム。
【請求項１４】
前記複数のキャッシュノードの１以上のキャッシュノードはさらに、前記複数のサーバノードの１以上のサーバノードに格納されている前記データの複数の部分の１以上の部分にアクセスするよう動作可能である、請求項１０記載のシステム。
【請求項１５】
前記複数のサーバノードはさらに、前記データの複数の部分の１以上の部分をキャッシュするよう動作可能な複数のサーバノードを有する、請求項１０記載のシステム。
【請求項１６】
前記複数のキャッシュノードの１以上のキャッシュノードは、前記データの複数の部分の各部分が格納されている前記複数のサーバノードのサーバノードの識別を格納するよう動作可能である、請求項１０記載のシステム。
【請求項１７】
前記１以上のクライアントノードはさらに、前記データの複数の部分の各部分がキャッシュされている前記複数のキャッシュノードのキャッシュノードの識別を格納するよう動作可能である、請求項１１記載のシステム。
【請求項１８】
前記複数のサーバノードの少なくとも１つのサーバノードはさらに、前記複数のキャッシュノードの少なくとも１つのキャッシュノードを有する、請求項１０記載のシステム。
【請求項１９】
前記１以上のクライアントノードはさらに、１以上のスタンバイキャッシュノードにキャッシュされている前記データの複数の部分の１以上の部分にアクセスするよう動作可能であり、
前記１以上のスタンバイキャッシュノードは、前記複数のキャッシュノードの少なくとも１つのキャッシュノードにキャッシュされている前記データの複数の部分の１以上の部分を、前記少なくとも１つのキャッシュノードが故障したとき、キャッシュするよう動作可能である、請求項１１記載のシステム。
【請求項２０】
データを格納する方法であって、
前記データを複数の部分に分割し、前記複数の部分を複数のサーバノードの１以上のサーバノードに格納するステップと、
１以上のクライアントノードを使用して、前記複数のキャッシュノードの１以上のキャッシュノードにキャッシュされた前記データの複数の部分の１以上の部分にアクセスするステップと、
前記データの複数の部分の１以上の部分を複数のキャッシュノードの１以上のキャッシュノードにキャッシュし、データの各部分について、該データの部分がキャッシュされている前記キャッシュノードの識別を格納するステップと、
を有し、
前記複数の部分を複数のサーバノードの１以上のサーバノードに格納するステップは、前記部分を前記１以上のサーバノードにキャッシュするステップを含み、
前記データの複数の部分の１以上の部分を複数のキャッシュノードの１以上のキャッシュノードにキャッシュするステップは、前記１以上のキャッシュノードを使用して、前記１以上のサーバノードに格納されている前記データの複数の部分の１以上の部分にアクセスするステップを有し、
前記１以上のキャッシュノードの少なくとも１つのキャッシュノードは、前記複数のサーバノードの１つのサーバノードに格納され、
前記データの複数の部分の１以上の部分にアクセスするステップは、
前記１以上のクライアントノードが、前記データの複数の部分の１以上の部分を読むことを許可するステップと、
前記１以上のクライアントノードが、前記データの複数の部分の１以上の部分に書き込むことを許可するステップと、
前記１以上のクライアントノードが、前記データの複数の部分の１以上の部分に、前記１以上のクライアントノードによる書き込み後にアクセスすることを可能にするステップと、
を有する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にキャッシュ処理の分野に関し、より詳細には、データキャッシュ処理を向上させるシステム及び方法に関する。
【背景技術】
【０００２】
ハイパフォーマンス計算アプリケーションは、典型的には、ディスクベースのファイル又はデータベースに格納されている大きなデータセットへのアクセスを必要とする。計算システムの効率低下を回避するため、最も直近に使用されたデータが、キャッシュバッファとしてのコンピュータのローカルメモリに格納される。
【０００３】
キャッシュされうるデータ量を最大化するための標準的な処理は、データをクライアントコンピュータ、サーバコンピュータ又はこれらの双方にキャッシュすることを伴う。しかしながら、これらの処理は問題点を有している。例えば、データがクライアントコンピュータ又はサーバコンピュータの何れかにのみキャッシュされる場合、キャッシュされるデータ量は限定的である。データをキャッシュするのに利用されるメモリの大きさは、典型的には、コンピュータのセカンダリストレージの容量の１％未満であるためである。さらに、２つのクライアントコンピュータが同一のデータを使用中であって、一方のクライアントコンピュータが当該データを変更する場合、他方のクライアントコンピュータに対しては、データは通常は更新されない。さらに、クライアントコンピュータが自らのローカルメモリにキャッシュしていないデータにアクセスする必要があるとき、クライアントコンピュータは、当該データがキャッシュされている場所を検出するため、すべてのサーバコンピュータとすべてのクライアントコンピュータと通信しなければならない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明によると、データをキャッシュするための先行技術に係る短所及び問題点が、軽減又は解消されるかもしれない。
【課題を解決するための手段】
【０００５】
本発明の一実施例によると、データを格納する方法は、前記データを複数の部分に分割し、前記複数の部分を複数のサーバノードの１以上のサーバノードに格納するステップを有する。本方法はさらに、前記データの複数の部分の１以上の部分を複数のキャッシュノードの１以上のキャッシュノードにキャッシュするステップを有する。本方法はさらに、データの各部分について、該データの部分がキャッシュされている前記キャッシュノードの識別を格納するステップを有する。
【発明の効果】
【０００６】
本発明の実施例は、１以上の技術的効果を提供する。一実施例の技術的効果は、何れもが任意数のコンピュータを有することが可能なキャッシュシステムとサーバシステムの両方にデータがキャッシュされるため、キャッシュ可能なデータ量に実質的な制限がないということであるかもしれない。本発明の一実施例のさらなる技術的効果は、キャッシュシステムが１以上のクライアントノードと１以上のサーバノードとの間で動作する結果として、キャッシュシステムは、クライアントノードにより使用されるデータをキャッシュし、サーバノードにキャッシュされているデータにアクセスする。このため、クライアントノードにより変更されたデータがキャッシュシステムにおいて変更され、すべてのクライアントノードが変更されたデータにアクセスすることを可能にする。さらに、キャッシュノードは、必要とされるデータにアクセスするため、キャッシュシステムと通信しさえすればよい。
【０００７】
本発明の実施例は、上記技術的効果の一部又はすべてを有するかもしれず、又は何れも有しないかもしれない。１以上の技術的効果は、ここに含まれる図面、説明及び請求項から当業者に容易に明らかとなるであろう。
【図面の簡単な説明】
【０００８】
本発明並びにその特徴及び効果のより完全な理解のため、添付した図面と共に以下の説明が参照される。
【図１Ａ】図１Ａは、データをアクセス及び格納可能なシステムの一実施例の図である。
【図１Ｂ】図１Ｂは、図１Ａのシステムのクライアントノードの一実施例を示すブロック図である。
【図１Ｃ】図１Ｃは、図１Ａのシステムのキャッシュノードの一実施例を示すブロック図である。
【図１Ｄ】図１Ｄは、図１Ａのシステムのサーバノードの一実施例を示すブロック図である。
【図１Ｅ】図１Ｅは、図１Ａのシステムの動作を示し、キャッシュ又は格納されているデータにアクセスするための方法の一実施例を示すフローチャートである。
【図２Ａ】図２Ａは、１以上のキャッシュノードの失敗を処理可能なシステムの一実施例である。
【図２Ｂ】図２Ｂは、キャッシュノードの失敗を処理するための方法の一実施例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
本発明の実施例と効果は、図１Ａ〜２Ｂを参照することにより最も良く理解される。各図面において、同一の番号は同一及び対応する部分について使用される。
【００１０】
図１Ａは、データをアクセス及び格納可能なシステム１０の一実施例の図である。一般に、システム１０は、キャッシュシステム１４と、サーバシステム１８とを有する。キャッシュシステム１４は、データがキャッシュされることを可能にし、さらに１以上のクライアントノード２２がネットワークを使用してキャッシュされたデータにアクセスすることを可能にする。データをキャッシュシステム１４にキャッシュすることによって、クライアントノード２２は、同一のデータに同時にアクセスするかもしれず、１つのクライアントノード２２により変更されたデータが、すべてのクライアントノード２２によりアクセスされるかもしれない。サーバシステム１８は、データがキャッシュされることを可能にし、さらにデータがディスクストレージに格納されることを可能にする。これは、追加的なデータがキャッシュされ、残りのデータがディスクストレージに格納されることを可能にし、クライアントノード２２は、キャッシュされたデータとディスクストレージに格納されたデータの双方にネットワークを介しアクセスすることが可能となる。それと共に、キャッシュシステム１４とサーバシステム１８により提供されるこれら２つのキャッシュレイヤは、キャッシュされるデータ量を増加させ、データにアクセスするためクライアントノード２２により必要とされる時間を減少させる。図示された実施例では、システム１０は、クライアントノード２２と、キャッシュシステム１４と、サーバシステム１８と、ネットワーク２３とを有する。
【００１１】
クライアントノード２２は、１以上のアプリケーションを実行可能であり、さらにネットワーク２３を使用してキャッシュシステム１４とサーバシステム１８の両方に格納されているデータにアクセスすることが可能である。一実施例では、クライアントノード２２は、携帯情報端末、ラップトップなどのコンピュータ、携帯電話、モバイルハンドセット、又は１以上のアプリケーションを実行可能であり、さらにネットワーク２３を介しキャッシュシステム１４とサーバシステム１８との両方に格納されているデータにアクセスすることが可能な他の何れかの装置を含むかもしれない。図示された実施例では、クライアントノード２２はコンピュータを表す。クライアント２２は、図１Ｂを参照してさらに説明される。
【００１２】
キャッシュシステム１４は、データをキャッシュし、さらにクライアントノード２２がキャッシュされたデータにアクセスすることを可能にする。図示された実施例では、キャッシュシステム１４は、１以上のキャッシュノード４２を有する。キャッシュノード４２は、データをキャッシュし、クライアントノード２２からデータリクエストを受信し、データリクエストをサーバシステム１８に送信し、データをクライアントノード２２とサーバシステム１８に送信することが可能である。一実施例では、キャッシュノード４２は、携帯情報端末、コンピュータ、ラップトップコンピュータ、携帯電話、モバイルハンドセット、又はデータをキャッシュし、クライアントノード２２からデータリクエストを受信し、データリクエストをサーバシステム３８に送信し、データをクライアントノード２２とサーバシステム１８に送信可能な他の何れかの装置を含むかもしれない。図示された実施例では、キャッシュノード４２は、コンピュータを表す。キャッシュノード４２は、図１Ｃを参照してさらに説明される。
【００１３】
サーバシステム１８は、データをキャッシュし、さらなるデータをディスクストレージに格納することが可能である。図示された実施例では、サーバシステム１８は、１以上のサーバノード５４を有する。サーバノード５４は、キャッシュサーバ１４からデータリクエストを受信し、キャッシュシステム１４からデータを受信し、データをキャッシュ及び格納し、データをキャッシュシステム１４に送信することが可能である。一実施例では、サーバノード５４は、携帯情報端末、ラップトップなどのコンピュータ、携帯電話、モバイルハンドセット、キャッシュサーバ１４からデータリクエストを受信し、キャッシュシステム１４からデータを受信し、データをキャッシュ及び格納し、データをキャッシュシステム１４に送信することが可能な他の何れかの装置を含むかもしれない。図示された実施例では、サーバノード５４は、サーバを表す。サーバノード５４は、図１Ｄを参照してさらに説明される。
【００１４】
ネットワーク２３は、クライアントノード２２、キャッシュシステム１４及びサーバシステム１８を互いに接続し、データの共有を可能にする。ネットワーク２３は、オーディオ、ビデオ、信号、データ、メッセージ又はこれらの何れかの組み合わせを送信可能な何れかの相互接続システムを表す。ネットワーク２３は、ＰＳＴＮ（Ｐｕｂｌｉｃ  Ｓｗｉｔｃｈｅｄ  Ｔｅｌｅｐｈｏｎｅ  Ｎｅｔｗｏｒｋ）、パブリック若しくはプライベートデータネットワーク、ローカルエリアネットワーク（ＬＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、インターネットなどのローカル、リージョナル若しくはグローバル通信若しくはコンピュータネットワーク、有線若しくは無線ネットワーク、企業イントラネット、他の適切な通信リンク又はこれらの何れかの組み合わせのすべて若しくは一部を有するかもしれない。
【００１５】
ハイパフォーマンス計算アプリケーションは、典型的には、ディスクベースのファイル又はデータベースに格納されている大きなデータセットへのアクセスを必要とする。計算システムの効率低下を防ぐため、最も直近に使用されたデータは、キャッシュバッファとしてのコンピュータのローカルメモリに格納される。キャッシュバッファは、データアクセス時間とアプリケーションの全体的なパフォーマンスの両方を向上させる。しかしながら、コンピュータのローカルメモリは、典型的には、コンピュータのセカンダリストレージの容量の１％未満に限定されている。従って、極めてわずかなデータしかキャッシュすることはできない。
【００１６】
従来、キャッシュ可能なデータ量を最大化するための試みは、クライアントコンピュータ、サーバコンピュータ又はこれらの双方にデータをキャッシュすることに着目してきた。クライアントコンピュータ又はサーバコンピュータにデータをキャッシュすることは、上述されるように、キャッシュされうるデータ量を制限する。クライアントコンピュータとサーバコンピュータの双方を使用することは、キャッシュされうるデータ量を増大させるが、また様々な問題点を与える。例えば、２つのクライアントコンピュータが同一のデータを使用中であって、一方のクライアントコンピュータがデータを変更した場合、当該データは他方のクライアントコンピュータについては通常は更新されない。これは、キャッシュ処理の有効性を低下させる。
【００１７】
さらに、クライアントコンピュータが自らのローカルメモリにキャッシュしていないデータにアクセスする必要があるとき、他の問題点が存在する。この場合、従来は、クライアントコンピュータは、必要とされるデータを何れのコンピュータがキャッシュしているか検索するため、すべてのサーバコンピュータとすべてのクライアントコンピュータと通信しなければならない。これはまた、キャッシュ処理を低速化するため、キャッシュ処理の有効性を低下させ、またクライアントコンピュータに必要とされるデータをときには検出させない。
【００１８】
本発明のいくつかの実施例は、従来の処理に係る問題を被ることなく大量のデータをキャッシュすることを可能にする。本発明の図示された実施例では、データはキャッシュシステム１４とサーバシステム１８の双方にキャッシュされる。各システムは任意数のコンピュータを有しているため、キャッシュされうるデータ量に実質的に制限はない。さらに、キャッシュシステム１４は、クライアントノード２２とサーバノード５４の中間で動作し、クライアントノード２２により使用されたデータをキャッシュし、サーバノード５４にキャッシュされたデータにアクセスする。このような実効において、１つのクライアントノード２２により変更されたデータはキャッシュシステム１４において変更され、すべてのクライアントノード２２が変更されたデータにアクセスすることが可能となる。さらに、クライアントノード２２は、データにアクセスするため、互いに通信する必要はない。その代わり、クライアントノード２２は、キャッシュシステム１４と単に通信するため、キャッシュ処理の有効性が向上する。
【００１９】
図１Ｂは、クライアントノード２２の一実施例を示すブロック図である。図示された実施例では、クライアントノード２２は、プロセッサ２２と、通信インタフェース３２と、バス３７によりプロセッサ３８に通信接続されるローカルメモリ３６とを有する。ユーザプログラム２６と、クラスタファイルシステム３０と、クライアントモジュール３４と、データ３８とが、ローカルメモリ３６に格納される。
【００２０】
プロセッサ２８は、キャッシュノード２２について処理を実行するため、命令を実行し、データを操作することが可能な何れか適切な装置を表すかもしれない。例えば、プロセッサ２８は、何れかのタイプの中央処理ユニット（ＣＰＵ）を有するかもしれない。通信インタフェース３２は、クライアントノード２２に対する入力を受信し、クライアントノード２２からの出力を送信し、入出力の適切な処理を実行し、他の装置と通信し、又はこれらの何れかの組み合わせを行うことが可能な何れか適切な装置を表すかもしれない。例えば、通信インタフェース３２は、ＬＡＮ、ＷＡＮ又はクライアントノード２２が他の装置と通信することを可能にする他の通信システムを介し通信するため、プロトコル変換及びデータ処理機能を含む適切なハードウェア（モデム、ネットワークインタフェースカードなど）とソフトウェアとを含むかもしれない。通信インタフェース３２は、１以上の装置、変換ソフトウェア又はその双方を含むかもしれない。ローカルメモリ３６は、データをキャッシュし、キャッシュされたデータの抽出を実現することが可能な何れか適切な装置を表すかもしれない。例えば、ローカルメモリ３６は、ランダムアクセスメモリ（ＲＡＭ）を含むかもしれない。バス３７は、プロセッサ２８とローカルメモリ３８との間の通信を実現する。バス３７は、プロセッサ２８とローカルメモリ３８とを通信接続することが可能な何れか適切な装置又は接続を表すかもしれない。
【００２１】
ユーザプログラム２６は、ユーザとクライアントノード２２との間のインタフェースを提供する。一実施例では、ユーザプログラム２６は、ユーザが実行することを所望するタスクを実行可能な何れかのコンピュータソフトウェアを含む。クラスタファイルシステム３０は、格納用のデータ３８の各部分、すなわち、各パーティションを抽出するため、クライアントモジュール３４にアクセスすることが可能である。図示された実施例では、クラスタファイルシステム３０は、ユーザプログラム２６のデータ３８の各部分を抽出及び格納する。
【００２２】
クライアントモジュール３４は、データ３８の各部分のリクエストを送信し、さらにキャッシュシステム１４からのデータ３８の各部分にアクセスすることを可能にする。一実施例では、クライアントモジュール３４は、ソフトウェアコンポーネントをクライアントノード２２に有してもよい。
【００２３】
データ３８は、クライアントノード２２上で実行されるユーザプログラム２６により使用される。データ３８は、ユーザプログラム２６により要求されるデータを表す。例えば、データ３８は、ファイルシステムメタデータ又はデータブロックを含む。一実施例では、データ３８は、１以上の部分に分割されたデータブロックを有するが、データ３８は何れか適切な方法により格納されてもよい。図示された実施例では、データ３８は、４つの部分、データ部分４０ａ〜ｄに分割される。一実施例では、データ３８をデータ部分４０に分割することは、ハードパーティショニング（Ｌｉｎｕｘのｆｄｉｓｋ又はパーティッドプログラム（ｐａｒｔｅｄ  ｐｒｏｇｒａｍ）など）又はソフトパーティショニング（各データスライスが検出されるデータストレージの領域をコンフィグレーションファイルに指定するなど）により実現されてもよい。
【００２４】
図示された実施例では、ユーザプログラム２６は、クラスタファイルシステム３０にアクセスし、さらにクラスタファイルシステム３０はクライアントモジュール３４にアクセスする。クライアントモジュール３４は、ネットワーク２３を使用してキャッシュシステム１４からデータ部分４０にアクセスする。図示された実施例では、データ部分４０へのアクセスは、データ部分４０を読み込み、さらにデータ部分４０に書き込むことを含む。
【００２５】
図１Ｃは、キャッシュノード４２の一実施例を示すブロック図である。図示された実施例では、キャッシュノード４２は、プロセッサ４４と、通信インタフェース４８と、ローカルメモリ５２と、プロセッサ４４とローカルメモリ５２とを通信接続するバス４５とを有する。一実施例では、ユーザプログラム２６と、キャッシュサーバ３４と、キャッシュ５０と、１以上のデータ部分１４０とがローカルメモリ５２に格納される。
【００２６】
プロセッサ４４は、キャッシュノード４２について処理を実行するため、命令を実行し、データを操作することが可能な何れか適切な装置を表すかもしれない。例えば、プロセッサ４４は、何れかのタイプの中央処理ユニット（ＣＰＵ）を含むかもしれない。通信インタフェース４８は、キャッシュノード４２の入力を受信し、キャッシュノード４２からの出力を送信し、入出力の適切な処理を実行し、他の装置と通信し、又はこれらの何れかの組み合わせを行うことが可能な何れか適切な装置を表すかもしれない。例えば、通信インタフェース４８は、ＬＡＮ、ＷＡＮ又はキャッシュノード４２が他の装置と通信することを可能にする他の通信システムを介し通信するため、プロトコル変換及びデータ処理機能を含む適切なハードウェア（モデム、ネットワークインタフェースカードなど）とソフトウェアとを含むかもしれない。通信インタフェース４８は、１以上のポート、変換ソフトウェア又はその両方を含むかもしれない。ローカルメモリ５２は、データをキャッシュし、キャッシュされたデータの抽出を実現することが可能な何れか適切な装置を表すかもしれない。例えば、ローカルメモリ５２は、ランダムアクセスメモリ（ＲＡＭ）を含むかもしれない。バス４５は、プロセッサ４４とローカルメモリ５２との間の通信を実現する。バス４５は、プロセッサ４４とローカルメモリ５２とを通信接続することが可能な何れか適切な装置又は接続を表すかもしれない。
【００２７】
キャッシュサーバ４６は、クライアントノード２２からのデータ部分１４０のリクエストを処理し、データ部分１４０をキャッシュし、データ部分１４０を各クライアントモジュール３４に転送し、データ部分１４０をサーバシステム１８に転送することが可能である。一実施例では、キャッシュサーバ４６は、ソフトウェアコンポーネントをキャッシュノード４２に有してもよい。
【００２８】
キャッシュ５０は、データ部分１４０がキャッシュされるローカルメモリの領域を表す。データ部分１４０は、図１Ｂのデータ３８のデータ部分４０と実質的に同様のものである。図示された実施例では、キャッシュ５０にキャッシュされているデータ部分１４０は、データ部分１４０ａしか有さない。さらなる実施例では、キャッシュ５０にキャッシュされているデータ部分１４０は、より多く又は異なるデータ部分１４０を有してもよい。例えば、キャッシュ５０にキャッシュされているデータ部分１４０は、データ部分１４０ｂと１４０ｄとを含むかもしれない。
【００２９】
図１Ｄは、サーバノード５４の一実施例を示すブロック図である。図示された実施例では、サーバノード５４は、プロセッサ５８と、通信インタフェース６２と、ローカルメモリ６６と、ディスクストレージ７０と、プロセッサ５８とローカルメモリ６６及びディスクストレージ７０とを通信接続するバス５９とを有する。一実施例では、Ｉ／Ｏサーバ６０、キャッシュ６４と、１以上のデータ部分２４０とが、ローカルメモリ６６に格納される。一実施例では、データ部分２４０はディスクストレージ７０に格納される。
【００３０】
プロセッサ５８は、サーバノード５４について処理を実行するため、命令を実行し、データを操作することが可能な何れか適切な装置を表すかもしれない。例えば、プロセッサ５８は、何れかのタイプの中央処理ユニット（ＣＰＵ）を有してもよい。通信インタフェース６２は、サーバノード５４の入力を受信し、サーバノード５４からの出力を送信し、入出力の適切な処理を実行し、他の装置と通信し、又はこれらの何れかの組み合わせを行うことが可能な何れか適切な装置を表すかもしれない。例えば、通信インタフェース６２は、ＬＡＮ、ＷＡＮ又はサーバノード４４が他の装置と通信することを可能にする他の通信システムを介し通信するため、プロトコル変換及びデータ処理機能を含む適切なハードウェア（モデム、ネットワークインタフェースカードなど）とソフトウェアとを含むかもしれない。通信インタフェース６２は、１以上のポート、変換ソフトウェア又はその両方を含むかもしれない。ローカルメモリ６６は、データをキャッシュし、キャッシュされたデータの抽出を実現することが可能な何れか適切な装置を表すかもしれない。例えば、ローカルメモリ６６は、ランダムアクセスメモリ（ＲＡＭ）を含むかもしれない。バス５９は、プロセッサ５８とローカルメモリ６６と、ディスクストレージ７０との間の通信を実現する。バス５９は、プロセッサ５８とローカルメモリ６６及びディスクストレージ７０とを通信接続することが可能な何れか適切な装置又は接続を表すかもしれない。
【００３１】
Ｉ／Ｏサーバ６０は、キャッシュサーバ１４からのデータ部分２４０のリクエストを受信し、データ部分２４０をキャッシュし、データ部分２４０をディスクストレージ７０に格納し、ディスクストレージ７０からデータ部分２４０を抽出し、データ部分２４０をキャッシュシステム１４に送信することが可能である。一実施例では、Ｉ／Ｏサーバ６０は、ソフトウェアコンポーネントをサーバノード５４に有してもよい。
【００３２】
キャッシュ６４は、データ部分２４０がキャッシュされるローカルメモリ６６の領域を表す。データ部分２４０は、図１Ｂのデータ３８のデータ部分４０と実質的に同様のものである。図示された実施例では、キャッシュ６４にキャッシュされているデータ部分２４０は、データ部分２４０ｂしか有さない。さらなる実施例では、キャッシュ６４にキャッシュされているデータ部分２４０は、より多く又は異なるデータ部分２４０を有してもよい。例えば、キャッシュ６４にキャッシュされているデータ部分２４０は、データ部分２４０ａと２４０ｄとを含むかもしれない。
【００３３】
ディスクストレージ７０は、データ部分２４０を格納し、Ｉ／Ｏサーバ６０によりアクセス可能である。ディスクストレージ７０は、メモリストレージを表す。例えば、ディスクストレージ７０は、磁気ディスク、光ディスク、フラッシュメモリ又は他の適切なデータ記憶装置を含むかもしれない。図示された実施例では、ディスクストレージ７０は、磁気ドライブを有する。図示された実施例では、ディスクストレージ７０に格納されているデータ部分２４０は、データ部分２４０ａしか有していない。さらなる実施例では、ディスクストレージ７０に格納されるデータ部分２４０は、より多くの又は異なるデータ部分２４０を有してもよい。例えば、ディスクストレージ７０に格納されているデータ部分２４０は、データ部分２４０ｂと２４０ｄとを有してもよい。さらなる実施例では、Ｉ／Ｏサーバ６０がディスクストレージ７０に格納されているデータ部分２４０にアクセスすると、Ｉ／Ｏサーバは、同じデータ部分２４０をキャッシュ６４にキャッシュする。
【００３４】
図１Ｅは、システム１０の動作を示し、キャッシュ又は格納されているデータにアクセスするための方法の一実施例を示すフローチャートである。ステップ１０２において、ユーザプログラム２６は、クラスタファイルシステム３０を用いて、クライアントモジュール３４からデータ３８を読む。一実施例では、データ３８は、１以上のデータ部分を有し、当該方法をデータ３８の各データ部分について繰り返す。データ３８に対する読み込まれたリクエストを充足するため、ステップ１０４において、クライアントモジュール３４は、データ部分４０ａなどのデータ３８の一部に対するリクエストをキャッシュシステム１４に送信する。一実施例では、データ３８の各部分はキャッシュシステム１４の何れか１つのキャッシュノードにのみ関連付けされる。例えば、データ部分４０ａが１つのキャッシュノード４２に関連付けされる場合、当該キャッシュノード４２のみにデータ部分４０ａはキャッシュされるようにしてもよい。これは、クライアントモジュール３４がデータ部分４０ａに対するリクエストををキャッシュシステム１４の適切なキャッシュノード４２のみに送信することを可能にする。さらなる実施例では、データ３８の各部分は、複数のキャッシュノード４２に関連付けされてもよい。
【００３５】
ステップ１０６において、キャッシュサーバ１４は、データ部分４０ａがキャッシュノード４２にキャッシュされているか確認するため、キャッシュノード４２のローカルメモリ５２をチェックする。データ部分４０ａがキャッシュノード４２にキャッシュされている場合、本方法はステップ１１６に移行し、データ部分４０ａはキャッシュノード４２からクライアントモジュール３４に戻される。ステップ１１８において、本方法は終了する。
【００３６】
ステップ１０６を再び参照するに、データ部分４０ａがキャッシュノード４２にキャッシュされていない場合、本方法はステップ１０８に戻り、キャッシュノード４２は、データ部分４０ａに対するリクエストをサーバシステム１８に送信する。一実施例では、データ部分４０ａなどのデータ３８の各部分は、サーバシステム１８の１つのサーバノード５４のみに関連付けされる。このため、キャッシュノード４２がローカルメモリ５２にキャッシュされているデータ部分４０ａを有しない場合、データ部分４０ａは、データ部分４０ａに係る当該サーバノード５４にのみキャッシュ又は格納することが可能である。さらなる実施例では、データ３８の各部分は、複数のサーバノード５４に関連付けされてもよい。
【００３７】
ステップ１１０において、データ部分４０ａに係るサーバノード５４のＩ／Ｏサーバ６０は、データ部分４０ａがローカルメモリ６６にキャッシュされているか確認するためチェックする。データ部分４０ａがローカルメモリ６６にキャッシュされていない場合、本方法はステップ１１２に移行し、Ｉ／Ｏサーバ６０は、サーバノード５４にあるディスクストレージ７０からデータ部分４０ａを抽出する。一実施例では、データ部分４０ａを抽出することによって、Ｉ／Ｏサーバ６０はまた、データ部分４０ａをローカルメモリ６６にキャッシュする。ステップ１１４において、データ部分４０ａがキャッシュシステム１４に送信される。一実施例では、データ部分４０ａは、データ部分４０ａに係る特定のキャッシュノード４２にのみ送信される。ステップ１１６において、データ部分４０ａはクライアントモジュール３４に転送され、ユーザプログラム２６がデータ３８のデータ部分４０ａを読むことを可能にする。本方法はステップ１１８において終了する。
【００３８】
ステップ１１０を再び参照するに、データ部分４０ａがサーバノード５４のローカルメモリ６６にキャッシュされる場合、本方法はステップ１１４に移行し、一実施例では、データ部分４０ａはキャッシュシステム１４に送信される。ステップ１１６において、データ部分４０ａはクライアントモジュール３４に転送され、ユーザプログラム２６がデータ３８のデータ部分４０ａを読むことを可能にする。ステップ１１８において、本方法は終了する。
【００３９】
システム１０の動作の図示された実施例では、データ部分４０ａなどのデータ３８の一部が、キャッシュシステム１４とサーバシステム１８の両方にキャッシュされる。キャッシュシステム１４は実質的に無限個のキャッシュノード４２を有し、サーバシステム１８は実質的に無限個のサーバノード５４を有することが可能であるため、キャッシュ可能なデータ部分の個数に関して実質的に制限はない。さらに、キャッシュシステム１４は、クラインとノード２２とサーバノード５４の中間で動作する。その実行において、１つのクライアントノード２２により変更されたデータ３８の部分は、キャッシュシステム１４において変更され、すべてのクライアントノード２２がデータ３８の変更部分にアクセスすることを可能にする。さらに、クライアントノード２２は、データ３８の各部分にアクセスするため、互いに通信する必要はない。その代わりに、クライアントノード２２は単にキャッシュシステム１４と通信しさえすればよく、キャッシュ処理の有効性を向上させる。
【００４０】
図２Ａは、システム１０が１以上のキャッシュノード３４２ａ〜ｄの失敗を処理することが可能なシステム１０のさらなる実施例である。図示された実施例では、システム１０は、１以上のクライアントノード３２２と、キャッシュノード３４２ａ〜ｄと、１以上のサーバノード３５４と、ネットワーク３２３とを有する。
【００４１】
クライアントノード３２２は、１以上のアプリケーションを実行し、キャッシュノード３４２ａ〜ｄにキャッシュされ、サーバノード３５４に格納又はキャッシュされている１以上のデータ部分３４０にアクセスすることが可能である。クライアントノード３２２は、図１Ａ及び１Ｂのクライアントノード２２と実質的に同様のものである。
【００４２】
キャッシュノード３４２ａ〜ｄは、データ部分３４０をキャッシュし、データ部分３４０に対するリクエストをクライアントノード３２２から受信し、データ部分３４０に対するリクエストをサーバノード３５４に送信し、データ部分３４０をクライアントノード３２２とサーバノード３５４とに送信することが可能である。キャッシュノード３４２ａ〜ｄは、図１Ａ及び１Ｃのクライアントノード４２と実質的に同様である。データ部分３４０は、図１Ｂのデータ３８のデータ部分４０と実質的に同様のものである。
【００４３】
図示された実施例では、キャッシュノード３４２ａは、データ部分３４０ａのみに関連付けされる。従って、一実施例では、キャッシュノード３４２ａが失敗した場合、クライアントノード３２２は、データ部分３４０ａにアクセスすることができなくなるであろう。これを解決するため、キャッシュノード３４２ａ〜ｄはまた、データ部分３４０ａに関連付けされてもよい。これは、クライアントノード３２２がキャッシュノード３４２ａが故障しても、キャッシュノード３４２ｂ〜ｄからのデータ部分３４０ａにアクセスすることを可能にする。一実施例では、キャッシュノード３４２ｂ〜ｄは、データ部分３４０ａをキャッシュするだけであり、キャッシュノード３４２ａが故障した場合、データ部分３４０ａをクライアントノード３２２に送信するようにしてもよい。一実施例では、キャッシュノード３４２ａは、ネットワーク３２３を介した接続がキャッシュノード３４２ａとクライアントノード３２２との間で、又はキャッシュノード３４２ａとサーバノード３５４との間で失敗した場合、失敗するかもしれない。
【００４４】
サーバノード３５４は、データ部分３４０に対するリクエストをキャッシュノード３４２ａ〜ｄから受信し、データ部分３４０をキャッシュ及び格納し、データ部分３４０をキャッシュノード３４２ａ〜ｄに送信し、キャッシュノード３４２ａが故障した場合にデータ部分３４０をキャッシュするようにキャッシュノード３４２ａ〜ｄを設定することが可能である。サーバノード３５４は、図１Ａ及び１Ｄのサーバノード５４と実質的に同様のものである。
【００４５】
ネットワーク３２３は、クライアントノード３２２と、キャッシュノード３４２と、サーバノード３５４とを互いに接続し、データ部分３４０の共有を可能にする。ネットワーク３２３は、図１Ａのネットワーク２３と実質的に同様である。
【００４６】
図２Ｂは、キャッシュノード３４２ａ〜ｄの故障を処理するためのシステム１０の方法の一実施例を示すフローチャートである。本方法は、ステップ２００から開始される。ステップ２０２において、クライアントノード３２２は、クライアントノード３２２により必要とされるデータ部分３４０ａに係るサーバノード３５４のアドレスにより設定される。ステップ２０４において、クライアントノード３２２は、ネットワーク３２３を使用してサーバノード３５４と接続される。サーバノード３５４は、クライアントノード３２２にデータ部分３４０ａに係るキャッシュノード３４２ａのアドレスを通知する。
【００４７】
取得したアドレスを使用して、ステップ２０６において、クライアントノード３２２は、ネットワーク３２３を使用してキャッシュノード３４２ａに接続する。ステップ２０８において、データ部分３４０ａに対するリクエスト又はクライアントノード３２２とキャッシュノード３４２ａとの間のデータ部分３４０ａの転送が失敗する。この結果、ステップ２１０において、クライアントノード３２２は、データ部分３４０ａに係るサーバノード３５４に対して、データ部分３４０ａのリクエストを直接行う。
【００４８】
クライアントノード３２２によりなされたリクエストは、クライアントノード３２２とキャッシュノード３４２ａとの間の接続が失敗したことをサーバノード３５４に通知する。ステップ２１２において、サーバノード３５４は、故障したキャッシュノード３４２ａから切断され、キャッシュノード３４２ａを使用してキャッシュノード３４２ａから切断するよう他のクライアントノード３２２に通知する。ステップ２１４において、サーバノード３５４は、故障したキャッシュノード３４２ａに対する引き継ぎをするため、データ部分３４０ａに係るスタンバイキャッシュノード３４２ｂを選択する。一実施例では、サーバノード３２２は、スタンバイキャッシュノード３４２ｃ、スタンバイキャッシュノード３４２ｄ又は他の何れか適切なキャッシュノード３４２を選択するようにしてもよい。ステップ２１６において、サーバノード３４２は、キャッシュノード３４２ｂに接続される。ステップ２１８において、サーバノード３５４は、以前に故障したキャッシュノード３４２ａを使用してスタンバイキャッシュノード３４２ｂと接続したすべてのクライアントノード３２２に通知する。クライアントノード３２２がスタンバイキャッシュノード３４２ｂに接続されると、キャッシュノード３４２ａの故障から生じた問題は解決される。ステップ２２０において、本方法は終了する。
【００４９】
本開示は特定の実施例と全体的に関連した方法に関して説明されたが、当業者には、これらの実施例と方法の変形及び置換が明らかであろう。従って、上記実施例の説明は本開示を制限するものでない。以下の請求項により規定されるような本開示の趣旨及び範囲から逸脱することなく、他の変更、置換及び変形もまた可能である。
【図１Ａ】
2010519613.tif 000003
【図１Ｂ】
2010519613.tif 000004
【図１Ｃ】
2010519613.tif 000005
【図１Ｄ】
2010519613.tif 000006
【図１Ｅ】
2010519613.tif 000007
【図２Ａ】
2010519613.tif 000008
【図２Ｂ】
2010519613.tif 000009
【国際調査報告】
2010519613.tif 000010
2010519613.tif 000011
2010519613.tif 000012