(57)【要約】  複数の遠隔コンピュータワークステーションと少なくとも一のファイルサーバを含むコンピュータネットワークにおけるデータファイルの整合性と一貫性を維持しつつ、リアルタイムのデータファイルへの共用アクセスを管理するストレージキャッシング方法及びシステム。ストレージキャッシングシステムは、ワークステーションに接続したストレージキャッシュと、ファイルサーバに接続したキャッシュサーバによって実施される。ストレージキャッシュとキャシュサーバは、分散ファイルシステムとインターフェースを取り、遠隔ワークステーションによるリアルタイムのデータファイルに共用アクセスを提供する。
2006516341.tif 000002
【特許請求の範囲】
【請求項１】
複数の許可されたコンピュータワークステーションによるファイルサーバ内に保存されたデータファイルへの共用アクセスを管理する方法において、当該方法が：
読み取りあるいは更新のためにキャッシュサーバによってファイルサーバから取り出したデータファイルのコピィを第１のストレージキャッシュへ供給するステップであって、前記第１のストレージキャッシュが少なくとも第１の許可されたコンピュータワークステーションに接続されており、キャッシュに保存されているデータファイルとして前記データファイルのコピィを保存するステップと；
前記第１のストレージキャッシュにおいて、前記第１のワークステーションによって入力されたデータファイルの変更を前記キャッシュに保存されているデータファイルに組み込むステップと；
前記第１のストレージキャッシュからのファイル更新データを前記キャッシュサーバへ自動的に送信するステップであって、前記ファイル更新データが前記キャッシュ内データファイルに組み込まれた変更の関数であるステップと；
キャッシュサーバにおいて、前記ファイル更新データに基づいて前記ファイルサーバに保存されているデータファイルの置き換えバーションを作成するステップと；
を具えることを特徴とする方法。
【請求項２】
請求項１に記載の方法が更に：
キャッシュサーバにおいて、前記ファイルが前記第１のストレージキャッシュによって更新のためにアクセスされた場合に、前記第１ストレージキャッシュからの全てのファイル更新データが前記データファイルの置き換えバーションに組み込まれ当該置き換えバーションが前記ファイルサーバに保存されたデータファイルを置き換えるまで、前記ファイルサーバに保存されているデータファイルを他のストレージキャッシュからの更新から保護するステップを具えることを特徴とする方法。
【請求項３】
請求項２に記載の方法において、前記保護ステップが、前記ファイルサーバに保存されているデータファイルをその他のストレージキャッシュからの更新から保護する一方、前記第１のストレージキャッシュからのファイル更新データをキャッシュサーバに送信するステップを具えることを特徴とする方法。
【請求項４】
請求項１に記載の方法が更に：
前記ファイルサーバで保存されているデータファイルを前記データファイルの置き換えバージョンで置き換えるステップと、
前記データファイルの置き換えバーションを用いて、第２のストレージキャッシュと許可されたコンピュータワークステーションのうちの少なくとも一つから前記キャッシュサーバへその後送信されたデータファイルへのアクセスのリクエストに応答するステップと、
を具えることを特徴とする方法。
【請求項５】
請求項１に記載の方法において、前記ファイル更新データがストリーミングデータとして前記キャッシュサーバへ送信されることを特徴とする方法。
【請求項６】
請求項１に記載の方法が更に：
前記キャッシュサーバへの送信に先立って前記ファイル更新データを圧縮するステップを具えることを特徴とする方法。
【請求項７】
請求項１に記載の方法において、前記ファイル更新データが差分データを具え、当該差分データが前記第１のストレージキャッシュにおけるキャッシュデータファイルと前記ファイルサーバあるいは前記キャッシュサーバに現在保存されているデータファイルのバージョンとの差分を表すことを特徴とする方法。
【請求項８】
請求項１に記載の方法において、前記キャッシュサーバが複数のサブキャッシュサーバを具え、前記データファイルの置き換えバージョンが前記サブキャッシュサーバの少なくとも一つで生成されることを特徴とする方法。
【請求項９】
請求項８に記載の方法において、前記サブキャッシュサーバの第１番目のサーバと前記第１のストレージキャッシュ間の通信接続が故障した場合、前記第１のストレージキャッシュが、前記第１のサブキャッシュサーバとサブキャッシュサーバの第２番目のサーバのうちの少なくとも一つとの通信接続を開設するよう自動的に試みることを特徴とする方法。
【請求項１０】
請求項１に記載の方法において、前記ファイル更新データが所定のインターバルで前記キャッシュサーバへ自動的に送信されることを特徴とする方法。
【請求項１１】
複数の許可されたコンピュータワークステーションによるファイルサーバ内に保存されているデータファイルへの共用アクセスを管理する方法において、当該方法が：
キャッシュサーバに接続したファイルサーバに保存されているデータファイルへのワークステーションからのアクセスのリクエストに応じてキャッシュサーバから第１のストレージキャッシュへファイル更新データを自動的に送信するステップであって、前記ファイル更新データが、前記ファイルサーバか又は前記キャッシュサーバに現在保存されているデータファイルと、前記第１のストレージキャッシュに保存されており、前記データファイルに対応するキャッシュ内データファイルとの間の差分の関数であるステップと：
前記キャッシュ内データファイルが前記ファイルサーバあるいはキャッシュサーバで現在保存されているデータファイルと同じに更新されるように前記第１のストレージキャッシュの前記キャッシュ内データファイルに前記ファイル更新データを組み入れいるステップと：
を具えることを特徴とする方法。
【請求項１２】
請求項１１に記載の方法において、前記ファイル更新データがストリーミングデータとして前記第１のストレージキャッシュに送信されることを特徴とする方法。
【請求項１３】
請求項１１に記載の方法が更に：
前記ファイル更新データを前記第１のストレージキャッシュへ送信する前に圧縮するステップを具えることを特徴とする方法。
【請求項１４】
請求項１１に記載の方法において、前記自動的な送信および組み入れステップが、所定のインターバルで実行されることを特徴とする方法。
【請求項１５】
複数の許可されたコンピュータワークステーションによるファイルサーバに保存されたデータファイルへの共用アクセスを管理するシステムにおいて、当該システムが：
前記ファイルサーバに保存されているデータファイルのコピィを取り出すキャッシュサーバと：
少なくとも第１の許可されたコンピュータワークステーションに接続された少なくとも一の第１のストレージキャッシュを具え、前記第１のストレージキャッシュが前記取り出したデータファイルコピィをキャッシュ内データファイルとしてローカルメモリに保存し、前記第１のワークステーションによって入力されたデータファイルの変更を前記キャッシュ内データファイルに取り込み；
前記第１のストレージキャッシュがファイル更新データを自動的に生成して、ストリーミングデータとして前記キャッシュサーバへ送信し、前記ファイル更新データが前記キャッシュデータファイルに組み込まれた変更の関数であり；
前記キャッシュサーバが前記ファイル更新データに基づいて前記データファイルの置き換えバーションを生成し、前記データファイルの置き換えバージョンを用いて第２のストレージキャッシュと許可コンピュータワークステーションのうちの少なくとも一つから前記キャッシュサーバへその後送信されたデータファイルへアクセスするリクエストに応答する；
ことを特徴とするシステム。
【請求項１６】
請求項１５に記載のシステムにおいて、前記キャッシュサーバが前記第１のストレージキャッシュに保存されているキャッシュ内データファイルと前記ファイルサーバに現在保存されているデータファイルのバージョン間の差分を表すサーバ更新ファイルデータを生成し、前記キャッシュサーバがこのサーバファイル更新データを前記第１のストレージキャッシュによって送信されたデータファイルリクエストに応じて前記第１のストレージキャッシュに自動的に送信することを特徴とするシステム。
【請求項１７】
複数の許可されたコンピュータワークステーションによるファイルサーバに保存されているデータファイルへの共用アクセスの管理システムにおいて、当該システムが：
前記ファイルサーバに接続するためのキャッシュサーバと；
前記キャッシュサーバとの通信接続を開設することによって前記ファイルサーバ内に保存されているデータファイルにアクセスする複数のストレージキャッシュと；を具え：
前記キャッシュサーバがリーシングモジュールを具え、前記リーシングモジュールが、リースが前記データファイルにすでに存在するか否かおよびどのタイプのリースが存在するか、あるいは前期データファイルがすでにロックされているかどうかに基づいて前記ストレージキャッシュの第１番目のキャッシュから受信したデータファイルに対するリースのリクエストを許可するかあるいは拒否するかを決定し、当該決定が、読み取りリースがすでに存在する場合に書き込みリースが許可できず、書き込みリースがすでに存在する場合には読者権のみが許可され、読み取りリースがすでに存在する場合に追加の読み取りリースを許可することができる、という基準に従ってなされ；
読者アクセス権または読み取りリースが許可された場合、前記キャッシュサーバが前記第１のストレージキャッシュのキャッシュ内データファイルを更新するステップを自動的に実行する；
ことを特徴とするシステム。
【請求項１８】
複数の許可されたコンピュータワークステーションによるファイルサーバに保存されているデータファイルへの共用アクセスの管理システムにおいて、当該システムが：
前記ファイルサーバに接続するためのキャッシュサーバと；
前記キャッシュサーバと通信接続を開設することによって前記ファイルサーバ内に保存されているデータファイルにアクセスするための複数のストレージキャッシュであって、各ストレージキャッシュが、関連するワークステーションからデータファイルへのアクセス要求が許可されるべきか拒否されるべきかを制御するリーシングモジュールを含み、前記アクセスリクエストが前記ファイルサーバに保存されているデータファイルを読み取る、あるいは書き込むためのリクエストであり、前記リーシングモジュールが前記リクエスト受信後に以下のステップ：
前記ストレージキャッシュに存在する前記データファイルのリース状態を判定し、当該リース状態が読み取り、書き込みおよびリースなしのうちの一つであるステップと；
前記リクエストが読み取りであり、前記存在するリースが読み取りあるいは書き込みである場合、あるいは前記リクエストが書き込みであり、前記リース状態が書き込みである場合に前記リクエストを許可するステップと；
前記リクエストが読み取りであり前記リース状態がリースなしである場合、あるいは前記リクエストが書き込みであり、前記リース状態が読み取りまたはリースなしである場合に前記キャッシュサーバから新規リースをリクエストするステップと；
データファイルに対してリースがすでに存在するか、およびどのタイプのリースが存在するか、あるいは前記データファイルがすでにロックされているかに基づいて前記キャッシュサーバでデータファイルにリースを許可するか否かを決定し、読み取りリースがすでに存在する場合に書き込みリースが許可されず、書き込みリースがすでに存在する場合に読者権のみが許可され得る、および、読み取りリースがすでに存在している場合には追加の読み取りリースが許可され得る、という基準によって前記決定がなされるステップと；
リースが許可されあるいはリクエストが読み取りであり、さもなければ当該リクエストを拒否する場合に、前記ファイルサーバに保存されたデータファイルの現在のバージョンに基づいて前記ストレージキャッシュにおけるキャッシュ内データファイルを自動的に更新するステップと；
を実行することを特徴とするシステム。
【請求項１９】
請求項１８に記載のシステムにおいて、前記自動更新ステップが、前記ストレージキャッシュの一つに保存されているキャッシュ内データファイルに基づいて前記ファイルサーバに保存されているデータファイルを更新するステップを具えることを特徴とするシステム。
【請求項２０】
請求項１８に記載のシステムにおいて、前記ストレージキャッシュの第１番目のキャッシュのリーシングモジュールが、当該リーシングモジュールが、前記ファイルサーバに保存されているデータファイルに対応するキャッシュ内データファイルが、前記ストレージキャッシュの第１番目のキャッシュに接続されたワークステーションでもはや開かれていないことを判定した場合に、以下のステップ：
前記キャッシュ内データファイルが開かれている間に、前記ワークステーションで行われた入力に基づいて前記キャッシュ内データファイルのコピィが変更されたかどうかを判定するステップと；
当該データファイルのコピィが変更された場合に、前記キャッシュサーバにファイル更新データを自動的に送信するステップと；
前記データファイルの全てのリースを開放するステップと
を実行し、
前記キャッシュサーバが前記ファイル更新データを用いて、前記ファイルサーバに保存されているデータファイルのバージョンを更新することを特徴とするシステム。
【請求項２１】
請求項２０に記載のシステムにおいて、前記ファイルの更新が、ストリーミング、圧縮形式で送信されることを特徴とするシステム。
【請求項２２】
請求項２０に記載のシステムにおいて、前記ファイル更新が、圧縮形式で送信されることを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本出願は、2003年1月17日付で出願され、本出願の譲受人に譲渡され、ここに引用されている米国暫定出願第60／440,750号の利益を請求する。
【０００２】
発明の分野
本発明は、一般的にデータファイルへの共用アクセスの管理に関するものであり、特に、データファイルの一貫性（consistency）と整合性（coherence）を保ちつつ、許可された複数のコンピュータワークステーションにリアルタイムのデータファイルへの共用アクセスを提供するストレージキャッシングプロトコルに関するものである。
【０００３】
発明の背景
現代のコンピュータシステムとネットワーキングアーキテクチュアでは、データファイル用のリポジトリであるコンピュータシステムは、そのデータファイルの処理が実行されるコンピュータシステムではないのが一般的である。このため、ラップトップコンピュータ、ネットワーク接続されたコンピュータ、あるはデスクトップコンピュータなどの遠隔サイトにあるコンピュータシステムに接続されたコンピュータワークステーションにいるユーザは、しばしば、内部メモリ、ディスク、あるいは遠隔地に配置された中央データソースコンピュータシステムのネットワークに取り付けられたストレージ内に保存されているデータファイルへアクセスする、すなわち、このデータファイルを見る（読み取る）あるいは変更する（書き込む）することを望む。このようなデータファイルの遠隔アクセスは、データバス、通信ネットワークまたはインターネットなどの通信チャンネルを介して実行され、通常、このデータファイルにアクセスしているシステムでのデータファイルの表示に遅延あるいは待ち時間をもたらす。この待ち時間は、データファイルにアクセスしているシステムと、このデータファイルを生成するあるいは保存するシステムとの間でデータを転送する必要があるために生じる。これに加えて、データファイルは通常連続的なストリームとしてではなく、むしろ部分的にあるいはブロックでアクセスされ、各ブロックが転送時にチャンネル遅延を経験するため、待ち時間の問題を悪化させることになる。
【０００４】
チャンネル遅延の効果を緩和するために、データファイルへの共用アクセスを提供する分散ファイルシステムのアプリケーションを実行する現在のほとんどのコンピュータシステムは、なんらかの形でキャッシングを取り入れている。キャッシングにおいては、中央ソースコンピュータシステムに保存されているデータファイルの全てあるいは一部のローカルコピーが、遠隔システムに接続されたワークステーションのローカルメモリ内などの、遠隔システムに設置されたキャッシュに保持される。ワークステーションは、キャッシュに保存したデータファイルを読み取ったり、ファイルに書き込んだりできる。ここで、キャッシュに保存したファイルというのは中央システムに保存されているデータファイルの全部または一部のミラーである。このキャッシュは、ワークステーションによって入力され、最終的にファイルサーバに保存されているデータファイルに組み込まれるべきキャッシュ内データファイルに行われたあらゆる変更を追跡するデータも保存している。従って、キャッシングによってチャンネル待ち時間を緩和することができ、遠隔システムのワークステーションのユーザは、データファイルが遠隔に配置された中央ソースシステムではなく、ローカルソースからアクセスされることに気がつかない。
【０００５】
キャッシングは一定のデータファイルアクセス状況では待ち時間を軽減することができるが、キャッシュにコピー（ミラー）として未だ保存されていないデータファイルにアクセスがなされると、ファイルサーバからデータファイルのコピーを取り出すことによる、キャッシュミスと呼ばれる待ち時間がまだ存在する。キャッシュミスを防止し、その結果分散ファイルシステムの性能を改善するために、キャッシングシステムは、しばしば、将来アクセスに必要となるデータファイルをキャッシュに保存する、「キャッシュのプレポピュレーティング」（pre-populating the cache）として知られている先行読み込み（リードアヘッド）技術を取り入れている。
【０００６】
複数の遠隔システム間でのデータファイルへの共用アクセスを提供する分散ファイルシステムでは、異なる遠隔システムからアクセスされているデータファイルのバージョンが違ってしまうことを防ぐために、取り入れているキャッシングシステムがキャッシュの整合性とキャッシュの一貫性を保つことが必要である。キャッシュの整合性は、キャッシュに保存されているデータファイルへの更新とそれらの更新の順序とが保存され安全であることを保障するものである。従って、整合性のある分散ファイルシステムでは、（ｉ）ファイルサーバに保存されている対応するデータファイルを更新するのに更新データが使用される前に遠隔システムがキャッシュに保存されている更新データを削除しないこと、及び（ii）キャッシュからの更新データを用いてサーバにあるデータファイルが更新されるまで他のシステムがそのデータファイルの更新を潜在的に妥協させるような形で当該データファイルを更新しないこと、が保証される。キャッシュの一貫性は、開かれたキャッシュ内データファイルへのワークステーションによる更新が時宜を得てキャッシュ内データファイルに反映されることを保証するものである。キャッシュの整合性とキャッシュの一貫性という特性は、複数の遠隔システムが同じデータファイルにアクセスする場合、同じように重要である。このような状況において、整合性は更に、ファイルサーバに保存されているデータファイルに対応するいずれかのキャッシュ上の更新が、同じデータファイルに対応する別のキャッシュによる更新を無効にしないように保証する。キャッシュの一貫性は、更に、いずれかのキャッシュでなされたキャッシュデータファイルへの更新が、時宜を得て、同じデータファイルにアクセスしているその他の全てのキャッシュにおけるキャッシュデータファイルに組み込まれるように保証する。
【０００７】
キャッシングシステムがキャッシュに保存されているデータファイルの更新が全て、即座に中央コンピュータシステムに転送されるライトスルー構造を持つ場合には、キャッシュの一貫性とキャッシュの整合性は容易に維持される。この即座の転送の結果、中央システムのファイルサーバに保存されているデータファイルが即座に更新される。このような構造は、中央システムからのデータファイル読み取りアクセスを実行する複数のキャッシュを有することに関連する性能を改善するが、書き込みアクセスに基づくデータファイルの更新に関連する待ち時間がまだ存在する。したがって、この構造は通常、データファイルの更新がめったに起こらない分散ファイルシステムにのみ非常によく機能する。ライトバックとして知られている別のキャッシング構造は、後者の待ち時間の問題を解決する目的で、ライトスルー構造から発展した。ライトバック構造では、キャッシュ内の更新が中央システムへ転送(フラッシング)されるまでの一定期間、キャッシュデータファイルへの更新をキャッシュが保存する。この定期的なフラッシングが、大幅な待ち時間を生ずることなくキャッシュに保存されているデータファイルを更新する。ライトバックの最も簡単な形は、ライトビハインド構造であり、キャッシュに保存されているデータファイルへの更新が、即座にでなく、言い換えればいくらか遅らせて、キャッシュに保存されているデータファイルの更新がキャッシュに保存されたのと同じ順序で中央ソースに転送される。キャッシュに保存した更新は中央ソースへも、ライトバックキャッシング構造におけるその他の遠隔システムへも直ちには行われないので、この構造は、たいていの場合、単一の遠隔システムが読み取りあるいは書き込みを行うためにデータファイルへアクセスする場合にのみ有益である。
【０００８】
複数の遠隔システムによるデータファイルへのアクセスが予想される場合、データファイルの一貫性を確実なものにするため、すべてのキャッシュで、また中央ソースシステムでも実行される更新を追跡するメカニズムを用いて、ライトバックキャッシングシステムがしばしば強化される。これらのメカニズムは通常、実質的にキャッシュを複雑にしてコストを上げることになり、多くのアプリケーションにおいてこのようなキャッシュを非実用的にする。しかしながら、その性能による利益は著しく、これらのキャッシュを、コンピュータネットワークを介して接続されている複数のコンピュータシステムなどの高性能計算装置用に非常に魅力的なものにする。
【０００９】
ファイル共用能力を有する一般的なコンピュータシステム構造では、構内コンピュータネットワーク（ＬＡＮ）が、ＵＮＩＸＴＭ用のＮＦＳ（登録商標）（Network File System）や、Microsoft Windows ＴＭシステム用のＣＩＦＳ（登録商標）（Common Internet File System）などの分散ファイルシステムを介してデータファイルに遠隔アクセスする。これらのファイルシステムが、遠隔コンピュータシステムに接続したワークステーションに中央コンピュータシステムのファイルサーバに保存されているデータファイルにアクセスするメカニズムを提供する。更に、各遠隔システムはローカルキャッシングを用いて、データファイルへのアクセス効率を上げるようにしている。典型的には、このキャッシングは、通常4キロバイトのデータブロックを構成するデータファイルのページ細分性ごとに実行される。キャッシュに保存される実際のページ数は、遠隔システムに組み込まれているか、あるいは接続されているワークステーションのキャッシング可能なメモリの機能による。更に、これらのファイルシステムは、受け入れ可能な性能を達成するためにライトバックキャッシングの手法をいくつか利用している。
【００１０】
キャッシュの一貫性とキャッシュの整合性は、キャッシングシステムの重要な特性であるが、これらの特性は分散ファイルシステムの実行能力を持つネットワーク接続したコンピュータシステムにおいては、特に、そのシステムがライトバックキャッシングを使っている場合は、しばしば実現が非常に困難である。従って、多くの分散ファイルシステムはキャッシュの一貫性と整合性の保証を完全に満たしてはいない。現実の装置では、分散ファイルシステムは、同じデータファイルを共用することがまれであるという重大な前提に頼っており、従って、データファイルの共用が発生したときの性能と正確さとの間にトレードオフがおきる。例えば、ＮＦＳは、現在は共用アクセスに特に適さない。なぜなら、（ｉ）ＮＦＳは一貫性の保証が脆弱である、すなわち、第1の遠隔システム用のキャッシュに保存されているデータファイルの変更が中央システムに適時反映されないことがあり、従って、中央システムからデータファイルへアクセスしているその他の遠隔システムにおいて必ずしもファイルがミラーではないことがあり、また（ii）ＮＦＳは整合性の保証がないからである。更に、ＣＩＦＳは優れた一貫性と整合性を示すものの、この一貫性と整合性は２以上の遠隔システムがどれかのデータファイルにアクセスしているような、常時ライトスルーを利用することによって実現されているため、共用アクセスのパフォーマンスは低い。
【００１１】
一貫性と整合性を維持するための自動手段に加えて、ＮＦＳとＣＩＦＳは、ファイル共用アプリケーションによって整合性と一貫性の特色を制御できるようにするロッキング構造も提供する。特に、ＮＦＳは共用アプリケーションをオペレーションシステムのいかなる制御もなくして自発的に互いに協力させるものであり、これはアドバイザリバイト範囲ロッキング（advisory byte range locking）として広く知られている。ＣＩＦＳは強制バイト範囲ロッキング（mandatory byte range locking）として知られているオペレーションシステム制御ロッキングを提供しており、ファイル共用モードを明示すると同時に、例えばあるアプリケーションがあるファイルにアクセスしながら、他のアプリケーションがそのファイルにアクセスできないように制御するようにさせる。このファイル共用アプリケーションは、このような機構を用いて従来のファイル分散システムによって提供される整合性と一貫性を改善することができる。例えば、あるアプリケーションは基礎となるシステム、例えばＮＦＳ、がこれらの特性を持っていない場合でも、バイト範囲ロッキングを使用して整合性と一貫性を提供することができる。
【００１２】
更に、典型的な待ち時間がミリ秒未満である構内ネットワークに設けたネットワークシステムが直面する性能上の問題は、広域ネットワーク（ＷＡＮ）でファイルを共用する場合に一層ひどくなる。トランスアークアンドリュウファイルシステム（Transarc Andrew File System: ＡＦＳ）として知られている従来のシステムは、大学キャンパスのＷＡＮなど、地理的に小さい領域のＷＡＮｓに存在する待ち時間を克服するために考え出された。ファイルページを保存するためにコンピュータワークステーションのメモリなどの、遠隔システムのローカルメモリを用いているＮＦＳとＣＩＦＳとは逆に、ＡＦＳはファイル全体のキャッシュとしてオンディスクローカルファイルシステムを使用している。ＡＦＳでは、ほとんどのオペレーションがファイルのローカルコピィ上で生じており、データファイルへのアクセスがリクエストされるときにファイルサーバからデータを引き出す必要がない。キャッシュに保存されている各データファイルが変更されて閉じられると、その更新が中央システムに転送（フラッシュ）されて、ファイルサーバで対応するデータファイルを更新し、次いでこの更新データファイルがその他の遠隔サイトによってアクセス可能となる。
【００１３】
従って、ＡＦＳはファイルの細分性において閉じられた一貫性についてフラッシュを提供する。言い換えると、データファイルの更新は、データファイルが閉じられたときに直ちに可能となるが、データファイルの書き込み中は更新されない。しかしながら、ＡＦＳは、ＷＡＮ操作を実行可能にするためには整合性と一貫性の保証をかなり弱めることになる。特に、ＡＦＳは複数の遠隔システムに、各々がある一つのデータファイルに対応する各キャッシュに保存されているデータファイルを同時に更新させるため、整合性に欠ける。そのファイルを閉じる最後の遠隔システムが、中央システムのサーバにおけるデータファイルへの変更を制御する遠隔システムとなる。言い換えれば、この最後にクロージングされた遠隔システムの変更が、他の遠隔システムによってそのデータファイルに明らかに行われている変更に取って代わる。更に、遠隔システムがファイルを閉じるときにのみ変更が中央ソースへ転送されるので、ＡＦＳの一貫性は弱い。
【００１４】
この結果、ＡＦＳはキャンパス程度の広さの共用アプリケーションには有益であるが、企業のビジネス環境で使用する場合には多くの不利益がある。例えば、ＡＦＳはすべてのコンピュータに搭載しなければならない。更に、ＡＦＳはＮＦＳやＣＩＦＳの分散ファイルシステムまたはその他の従来の同様なシステムと共に動作できない。さらに、一貫性と整合性の欠如によりＡＦＳは、多数の遠隔システムによって一つのデータファイルのリアルタイムバージョンへのアクセスの共用が求められる多くの企業アプリケーションには好適ではない。
【００１５】
従って、分散ファイルシステムの使用を通じてデータファイルへの共用アクセスをリアルタイムで提供するシステムと方法であって、キャッシングの利点を活用する一方で、データファイルの整合性と一貫性も提供し、既存の分散ファイルシステムとの相互運用及びインターフェースが容易であるシステムと方法が求められている。
【００１６】
発明の概要
本発明によれば、ストレージキャッシングプロトコルシステムが分散ファイルシステムとインターフェースを取って、許可されたコンピュータワークステーションにファイルサーバに保存されているリアルタイムなデータファイルへの共用アクセスを提供する。ファイルサーバに保存されているデータファイルは、キャッシュサーバでほぼリアルタイムで自動的に更新されることによって、ワークステーションで入力され、ストレージキャッシュに保存されている対応するキャッシュに保存されているデータファイルに組み込まれたデータファイルの変更を表すファイル更新データを包含する。この結果、キャッシュサーバはデータファイルのリアルタイムで更新されたバージョンを用いてワークステーションからのデータファイルに対するアクセスリクエストに応答することができる。このリアルタイムデータファイルは、それ以前にこのデータファイルにアクセスしたワークステーションによって入力されそれぞれ各ワークステーションのストレージキャッシュに保存された対応するキャッシュデータファイルに組み込まれたデータファイルの変更の全てを含む。好ましい実施例では、ファイル更新データがストリーミングデータとして転送され、ファイルサーバで保存されているデータファイルまたはストレージキャッシュで保存されているキャッシュ内データファイルを更新し、最も好ましくは、ファイル更新データが圧縮形式で転送され、選択的にデータ差分技術を用いて生成される。
【００１７】
好ましい実施例では、ストレージキャッシングプロトコルシステムが、通信媒体を通じて通信可能に内部連結された少なくとも一のストレージキャッシュと少なくとも一のキャッシュサーバを具える。このキャッシュサーバは、データファイルを含むファイルサーバに接続しており、ストレージサーバは少なくとも一の許可されたコンピュータワークステーションと接続している。キャッシュサーバはファイルサーバに保存されているデータファイルのコピィをストレージキャッシュへ転送する。ストレージキャッシュはこのデータファイルコピィをキャッシュ内データファイルとして保存し、このストレージキャッシュに接続されたワークステーションによって入力され、キャッシュ内データファイルへ組み込まれたキャッシュデータファイルへの変更を表すファイル更新データを自動的にキャッシュサーバに転送する。キャッシュサーバは、このファイル更新データを用いてファイルサーバに保存されているデータファイルを更新し、ファイルサーバに保存されているデータファイルの更新バージョンを用いて、同じあるいは別のストレージキャッシュからの、又はストレージキャッシュに接続していない許可されたコンピュータワークステーションからなどの、このデータファイルに対するその後のアクセスリクエストに応答する。好ましい実施例では、このアクセスリクエストに対する応答が、リクエストしているストレージキャッシュに保存されている対応するキャッシュ内データファイルを更新するためのサーバファイル更新データを含む。
【００１８】
本発明のストレージキャッシングシステムは、好ましくは、分散ファイルシステムの使用を介してデータファイルへのアクセスを共用する全ての遠隔コンピュータシステム間の一貫性と整合性を確実なものにするためにデータファイルへのアクセスのリクエストを管理するリースプロトコルに基づいて動作する。ストレージキャッシュに接続された遠隔コンピュータシステムがファイルサーバに保存されているデータファイルへのアクセス、すなわち、データファイルを見ること（読み取り）あるいは変更すること（書き込み）を希望するたびに、その遠隔システムに接続されたストレージキャッシュが、システムがデータファイル用の適当なリースを持っているかどうかを決定し、持っていない場合は、キャッシュサーバへリースリクエストを送信する。キャッシュサーバは、データファイルにアクセスできるストレージキャッシュを含む他の遠隔システムの全てとのキャシュ一貫性とキャッシュ整合性を保ち得る場合、リースリクエストを許可する。キャッシュサーバがリースリクエストを拒否した場合は、キャッシュに保存されているデータファイルへの更新が許可されないので、遠隔システムは、リクエストされたアクセスを禁止するか、あるいはデータファイルをキャシングすることなくリクエストをファイルサーバへ送ることができる。リクエストがファイルサーバへ送られる場合は、別のストレージキャッシュがデータファイルへの書き込みリースを持ち続けるので、アクセスリクエストをしているワークステーションは、見る権利を有するだけであり、データファイルをキャッシュすることができない、すなわち、読者権を持つだけである。ストレージキャッシュに接続されたワークステーションに読者権が許可されるたびに、対応するキャッシュに保存されているデータファイルがファールサーバに保存されているデータファイルを用いて更新され、キャッシュに保存されているデータファイルはワークステーションによって変更することができない。
【００１９】
更に好ましい実施例では、（ｉ）別のストレージキャッシュがすでにリースを有しているかどうか、および書き込みあるいは読み取りを行うことができるタイプのリースが存在することに基づいて、あるいは（ii）ＣＩＦＳやＮＦＳなどの従来の分散ファイルシステムプロトコルに関連する強制的あるいはアドバイザリロックなど、その他のメカニズムによってデータファイルがすでにロックされているかどうかに基づいて、キャッシュサーバが第1のストレージキャッシュから受信したデータファイルのリースのリクエストを許可するか拒否するかを決定する。このリースリクエストは、以下の基準に基づいて処理される：読み取りリースが第2のストレージキャッシュにすでに存在する、あるいはファイルが別のメカニズムによってすでに読み取り用にロックされている場合は、書き込みリースは許可することができない；書き込みリースが第2のストレージキャッシュにすでに存在する場合は、パススルー読者権のみを許可することができる；及び、読み取りリースが第2のストレージキャッシュにすでに存在する場合、あるいはファイルが読み取り用にのみロックされている場合は、追加の読み取りリースを許可することができる。更に、リースが許可された後は、相反する形で別のアプリケーションがデータファイルをロックすることを防ぐために、キャッシュサーバがデータファイルをロックする。従って、キャッシュサーバは許可されるいずれのリースも現在あるリース、あるいは別のメカニズムですでに行われたデータファイル上に存在するいずれのロックとも、確実に互換性があるようにする。書き込みリースが許可された場合は、第1のストレージキャッシュが、関連するワークステーションによって入力されたデータファイルの変更に基づいてキャッシュサーバから干渉されることなくキャッシュに保存されているデータファイルを独立して更新する。更に、リースリクエスト、あるいは読者権の許可に続いて、キャッシュサーバと第1のストレージキャッシュが、第1のストレージキャッシュに保存されているキャッシュ内データファイルがあれば、まずこれを自動的に更新するようにする。
【００２０】
別の好ましい実施例では、ストレージキャッシュが、リース、すなわち読み出しリース、又は、書き込みリースの強度に基づいて、関連する許可されたワークステーションからのファイルサーバに保存されているデータファイルへのアクセスのリクエストに応答する。ここで、それ以前にキャッシュサーバがストレージキャッシュへ提供した読み取りリースがもしある場合、書き込みリースは、その読み取りリースに関するファイル閲覧権より強いか、あるいは、その閲覧権を含む。もしストレージキャッシュに既に存在するリースがある場合、その既に存在するリースと同等のレベルの、読み取り若しくは書き込みアクセスリクエストの場合に、そのアクセスリクエストは許可される。さらに、ストレージキャッシュがアクセスリクエストを満足させるのに十分な強さをもったリースを持っていない場合、ストレージキャッシュは、まずリースを取得しなければならず、従ってキャッシュサーバからデータファイル用のリースをリクエストする。リースが許可され得ること、あるいはリクエストされたアクセスが別のストレージキャシュに存在するリースや、データファイル上に存在するロックと干渉しないことをキャッシュサーバが判断した場合に、そのリースリクエストが許可される。リースリクエストの許可の後、ストレージキャッシュは、そのアクセスリクエストに従い、読み取りあるいは書き込みの目的でワークステーションがキャッシュに保存されているデータファイルを開くことを許可する。リースリクエストが拒否されると、ストレージキャッシュがキャッシュサーバと相互作用して、ファイルサーバに保存されているデータファイルのバージョンに基づいてキャッシュに保存されているデータファイルを更新し、読み取りアクセスのみを許可する。ストレージキャッシュにおけるキャッシュ内データファイルは、キャッシュサーバとストレージキャッシュ間の相互作用に基づいて、必要に応じて自動的に更新される。ストレージキャッシュは典型的には、ストレージキャッシュに関連する全てのワークステーションがキャッシュデータファイルを閉じて、キャッシュに保存されているデータファイル内に反映されているデータファイルへのペンディングとなっている更新すべてがストレージキャッシュからキャッシュサーバへ転送されたときにのみ、リースを開放あるいはドロップする。
【００２１】
発明の詳細な説明
図１は、複数のコンピュータシステムにリアルタイムのデータファイルへの共用アクセスを提供する、本発明によるストレージキャッシングプロトコルによって動作する例示的なコンピュータシステムネットワーク１０のシステム図である。ネットワーク１０は、データファイル用の倉庫であるデータセンターコンピュータシステムにおいて動作する分散ファイルシステムアプリケーションとインターフェースしているストレージキャッシングプロトコルシステム１２及び、データセンターシステムのファイルサーバで保存されているデータファイルにアクセスすること、すなわち閲覧のみ（読み取り）または変更（書き込み）することを所望するコンピュータワークステーションに接続され、通常はデータセンターシステムから離れた場所にある遠隔サイトコンピュータシステムと、を具える。本発明のシステム１２は、関連する遠隔システムのワークステーションに接続された少なくとも一のストレージキャッシュと、データセンターシステムのファイルサーバに接続されている少なくとも一のキャッシュサーバを含み、ここでは、このストレージキャッシュとキャッシュサーバは、インターネットを介して開設したリンクなどの通信リンクを用いて、（ｉ）関連するワークステーションがアクセスを希望するデータファイルのコピィと、（ii）そのデータファイルにアクセスする許可されたワークステーションによって入力された全てのデータファイルの変更を表すファイル更新データと、（iii）ストレージキャッシングプロトコルシステム１２の動作特徴に関連するデータと、を送信する。
【００２２】
図１に示す例示的ネットワーク１０のストレージキャッシングプロトコルシステム１２の実施において、システム１２は遠隔ワークグループコンピュータシステム１６Ａおよび１６Ｂおよび中央ワークグループデータセンターコンピュータシステム２０とインターフェースをとっている。遠隔システム１６Ａは、イーサネットあるいは同様の媒体などの、通信チャンネル２４Ａを介して内部接続されたコンピュータワークステーション２２Ａと２２Ｂを具える。同様に、遠隔システム１６Ｂは、通信チャンネル２４Ｂを介して内部接続されたワークステーション２２Ｃと２２Ｄを具える。各ワークステーション２２は、例えば、パーソナルコンピュータ、パーソナルデジタルアシスタント、あるいは、プロセッサとメモリを備え通信能力を有する他の同様の電子装置の一部をなすか、あるいはまたは、これらの装置を構成している。更に、遠隔装置のワークステーションは、イーサネットと組み合わせて、ローカルアクセスネットワーク（ＬＡＮ）を形成し、ワークステーションが含まれている遠隔システムから離れて配置されているデータファイルにワークステーションのユーザがアクセスできるようにするＮＦＳやＣＩＦＳなどの従来技術の分散ファイルシステムに従って動作する。
【００２３】
通信ゲートウェイ２６は遠隔システム１６の各々のイーサネット２４を通信ネットワーク２８に接続する。ネットワーク２８は、例えば、広域ネットワーク（ＷＡＮ）、ＬＡＮ、インターネット、または地理的に異なる位置間にデータ通信リンクを提供するあらゆる同様のシステムであっても良い。ゲートウェイ２６は、例えば、標準ＤＳＬ速度を有する標準ＶＰＮインターネット接続である。当業者には良く知られているとおり、ゲートウェイ２６は、ＮＦＳやＣＩＦＳなどの従来の分散ファイルシステムによってアクセス可能なデータファイルなどのデータをワークステーションと遠隔配置されたファイルサーバ間で転送することができる。図１のネットワーク１０はストレージキャッシングシステム１２の一部としてゲートウェイ２６とネットワーク２８を示しているが、公知の従来の装置を構成しているこれらのコンポネントは、以下に詳細に述べるように本発明のシステム１２のストレージキャッシュおよびキャッシュサーバの動作に必要であるにもかかわらず、本発明の特徴を構成するものではない。
【００２４】
図１を再び参照すると、ストレージキャッシングシステム１２は、遠隔システム１６Ａおよび１６Ｂにそれぞれ接続したストレージキャッシュ３０Ａと３０Ｂを具える。各ストレージキャッシュ３０は、イーサネット２４と、関連する遠隔システム１６のゲートウェイ２６に接続されている。更に、ストレージキャッシングシステム１２は、キャッシュサーバ３６を含む。キャッシュサーバ３６は、ネットワーク２８にも接続されている関連するゲートウェイ２６Ｃに接続されている。イーサネット２４Ｃは、ゲートウェイ２６Ｃとキャッシュサーバ３６とをデータセンターシステム２０に含まれているファイルサーバ３８とワークステーション２２Ｄと２２Ｅに接続する。ファイルサーバ３８は、ＮＡＳなどの従来のファイルストレージ装置であり、これはデータファイルの倉庫であり、保存されているデータファイルを、遠隔システム１６とデータセンタ２０の許可されたワークステーションに導入されているＮＦＳまたはＣＩＦＳなどの従来の分散ファイルシステムの動作に従って許可されたワークステーションに分散する。例証のため、遠隔システム１６とデータセンタ２０内の全ワークステーション２２は、許可されたワークステーションを構成し、サーバ３８の分散ファイルシステムと互換性のある分散ファイルシステムに応じて動作する。
【００２５】
図２は、本発明に係るストレージキャッシュ３０の好ましい実施例を示す。図２を参照すると、ストレージキャッシュ３０は、キャッシュマネージャ５０、翻訳プログラム５２、リーシングモジュール５４、およびローカルリースファイルストレージ５６というモジュールを具える。キャッシュマネージャ５０は、翻訳プログラム５２に接続されており、図１に示すキャッシュサーバ３６などのキャッシュサーバに、ゲートウェイと通信ネットワークを介して接続するためのものである。翻訳プログラム５２は、リーシングモジュール５４とローカルストレージ５６に接続されており、イーサネット接続を介して関連する遠隔システムのワークステーションに接続するためのものである。下記に詳細に述べるとおり、キャッシュマネージャ５０は、データファイルと、ファイル更新データと、データファイルリーシング情報の、キャッシュサーバ３６へ及びキャッシュサーバ３６からのルーティングを制御する。翻訳プログラム５２は、キャッシュ内データファイルとしてストレージ５６にアクセスしたデータファイルのコピィを保存し、読み取りあるいは書き込みの目的で、キャッシュ内データファイルに対応するデータファイルへのアクセスをリクエストした関連するワークステーションでキャッシュ内データファイルを入手可能とし、ワークステーションで入力されたデータファイルの変形あるいはキャッシュサーバから供給された更新データに基づいてキャッシュ内データファイルを更新する。更に、翻訳プログラム５２は、好ましくは、第１のデータファイルを表すチェックサムを生成し、公知の技術を用いて別のデータファイルと第１のデータファイル間の違いをこのチェックサムに基づいて判断することができる。リーシングモジュール５４は、キャッシュサーバ３６との相互動作を介して、関連するワークステーションからのデータファイルへのアクセスのリクエストを許可するか否かを決定する。ここで、このアクセスリクエストはキャッシュ内データファイルが読み取りまたは書き込みのいずれかの目的で関連するワークステーションで入手可能にすることを要求している。好ましい実施例では、ネットワーク２８を介してデータセンターシステムのファイルサーバに保存されているデータファイルへアクセスできる全ての遠隔コンピュータシステムにストレージキャッシュが接続されている。
【００２６】
図３は、本発明によるキャッシュサーバ３６の好ましい実施例を示す図であり、このサーバは、キャッシュ３０Ａや３０Ｂなどの複数のストレージキャッシュ及び、データセンタ２０のワークステーション２２Ｅおよび２２Ｆなどのストレージキャシュに関係していないワークステーションによる、ファイルサーバに保存されているデータファイルへの共用アクセスを管理する。キャッシュサーバは、好ましくは、ＮＡＳやＳＡＮなどの、遠隔コンピュータシステムとデータセンターコンピュータシステムに導入されている既存の分散ファイルシステムと互換性をもたせ容易に一体化させることのできるアーキテクチュアを有する薄い装置である。２００１年１月１９日に出願され、本出願人に譲渡されており、ここに参照することにより組み込まれている、米国特許出願第０９／７６６，５２６号を参照されたい。
【００２７】
図３を参照すると、キャッシュサーバ３６は、サーバマネージャ６０と、翻訳プログラム６２、リーシングモジュール６４、およびローカルファイルストレージ６６というモジュールを具える。サーバマネージャ５０は、翻訳プログラム６２、リーシングモジュール６４及びストレージ６６に接続されており、また、ストレージキャッシュ３０Ａや３０Ｂなどのストレージキャッシュに、ゲートウェイ２６Ｃとネットワーク２８を介して接続するためのものでもある。翻訳プログラム６２は、ストレージ６６に接続されており、イーサネット接続を介して関連するデータセンターコンピュータシステムのファイルサーバへ接続するためのものである。翻訳プログラム６２はファイルサーバ３６に保存されており、ファイルサーバ３６から得たデータファイルのコピィをストレージ６６に一時的に保存し、この保存したデータファイルと、ストレージキャッシュから受信した更新データを用いて処理を実行して、置き換えた更新データを生成する。翻訳プログラム６２は、また、ファイルサーバ３８に保存されたデータファイルを、置き換えデータファイルに置き換える。さらに、翻訳プログラム６２は、ワークステーション２２Ｄや２２Ｅなどの中央システムに接続したワークステーションに、ファイルサーバ３６に保存されているデータファイルのコピィを以下に更に詳細に述べる本発明のリーシングプロトコルに基づいて見る目的のためだけに供給することができる。好ましい実施例では、翻訳プログラム６２は、翻訳プログラム５２と同様に、第１のデータファイルを表すチェックサムを生成し、このチェックサムを用いて別のデータファイルと第１のデータファイルとの間の違いを判断することができる。さらに、リーシングモジュール６４は、システム１２に含まれるストレージキャッシュとの相互動作を通じて、特定のストレージキャッシュに接続されたワークステーションからのデータファイルへのアクセスリクエストを許可するべきか、拒否するべきかを決定する。
【００２８】
本発明によってデータ処理動作を実行するストレージキャッシュ３０とキャッシュサーバ３６の各モジュールは、ソフトウエアモジュール、または、代替的に、ハードウエアモジュールまたはハードウエア／ソフトウエアモジュールの組み合わせであると考えられる。さらに、各モジュールは、好ましくは、データ保存と、本発明による処理動作を実行するための指示用にＲＡＭなどのメモリストレージ領域を含む。代替的に、処理動作を実行するための指示は、一又はそれ以上のモジュール内のハードウエアに保存することができる。更に、好ましい実施例では、キャッシュサーバ３６とストレージキャッシュ３０のそれぞれの内のモジュールを好適に組み合わせて複合モジュールとし、キャッシュサーバとストレージキャッシュを、ワークステーション用のキャッシングと、中央データセンターコンピュータシステムのファイルサーバに保存されているデータファイルのリアルタイムでの更新の双方を行うことができる単一の装置にまとめることができると考えられる。
【００２９】
本発明によれば、ストレージキャッシングシステム１２のストレージキャッシュとキャッシュサーバは、データセンタのファイルサーバに保存されており、従来技術の分散ファイルシステムを介して許可されたワークステーションへ分散が可能なデータファイルが読み取りあるいは書き込み目的でワークステーションによってアクセスすることができること、このワークステーションがこのファイルにアクセスするときに最小待ち時間を経験すること、およびアクセスリクエストに応じてワークステーションに供給されたキャッシュ内データファイルが、データファイルのリアルタイムバージョンに対応すること、を提供する。システム１２のストレージキャッシュは、ストレージ５６にアクセスリクエストの対象であるデータファイルに対応するキャッシュ内データファイルの現バージョンのみを保存する。ここでは、このワークステーションがファイルにアクセスしている間に、ストレージキャッシュに接続されたワークステーションによって入力されたデータファイルの全変更を、単一のキャッシュ内データファイルが含んでいる。キャッシュに保存されたデータファイルに関連するファイル更新データは、自動的にまた好ましくは所定のインターバルで生成され、キャッシュサーバに転送（フラッシュ）される。より好ましくは、ファイル更新データが十分な頻度でフラッシュされ、データファイルのリアルタイムでの更新バージョンがファイルサーバに保存され、別のストレージキャッシュあるいはストレージキャッシュに無関係のワークステーションからのアクセスリクエストに応答するためにキャッシュサーバによって使用される。好ましい実施例では、ストレージキャッシュのローカルストレージ５６は、最新のアクセスデータファイルに対応するキャッシュ内データファイルのみを含む。
【００３０】
図４Ａは、ファイルサーバのデータファイルを更新するための、本発明によるストレージキャッシュとキャッシュサーバで実行されるデータ処理動作を示すハイレベルのフロープロセス１００である。プロセス１００と、図４Ｂ、５、６、および７を参照して以下に説明するプロセスを例示するために、ネットワーク１０と、ストレージキャッシングシステム１２のコンポネントが、ソースシステム２０のファイルサーバ３６にデータファイルが保存されている遠隔システム１６Ａまたは１６Ｂからのデータファイルにアクセスするリクエストに関連して実行する動作が引用されている。プロセス１００の特徴にハイライトを当てるために、ストレージキャッシュ３０Ａのストレージモジュール５６は、最初はワークステーション１６Ａが書き込み目的でアクセスしようとしているデータファイルに対応するキャッシュ内データファイルを含んでいないと仮定されている。
【００３１】
図１、２、３及び４Ａを参照すると、ステップ１０２では、翻訳プログラム６２がファイルサーバ３８と通信して、ワークステーション１６Ａがアクセスを希望するデータファイルのコピィを生成する。次いで、サーバマネージャ６０はこのデータファイルのコピィを、ゲートウェイ２６Ｃ、ネットワーク２８、およびゲートウェイ２６Ａを介してストレージキャッシュ３０Ａへ転送する。
【００３２】
ステップ１０４では、キャッシュマネージャ５０がゲートウェイ２６Ａから転送されてきたデータファイルのコピィを受信し、キャッシュ内データファイルとしてストレージ５６にこのファイルを保存する。更に、翻訳プログラム５２は、ワークステーション１６Ａの分散ファイルシステムと相互動作して、ワークステーション１６Ａがキャッシュに保存されているデータファイルを開き、データファイル変更（書き込み）を入力できるようにする。ワークステーションのユーザがキャッシュ内データファイルを与えられている場合、言い換えれば、ユーザが対応するデータファイルへアクセスするリクエストに続いてキャッシュ内データファイルを開くことが許可されている場合は、ユーザはそのファイルを得たネットワーク１０内の位置を認識しない。ユーザは、ユーザがローカル遠隔システムのメモリあるいはストレージキャッシュ３０Ａに保存されているようなデータファイルのローカルコピィ上で作業しているのか、あるいは、遠隔配置されたデータセンターコンピュータシステム２０など、遠隔ストレージ位置から取り出されたデータファイルコピィ上で作業しているのかはわからない。ワークステーション１６Ａでユーザがデータファイルの変更を入力すると、翻訳プログラム５２はこの変更をモニタし、これらの変更をストレージ５６のキャッシュ内データファイルに組み入れる。言い換えると、遠隔システム１６Ａ内の全てのワークステーションによってそれ以前になされたキャッシュ内データファイルに対する全変更を含むキャッシュ内データファイルの現バージョンのみが、ストレージ５６に保存される。
【００３３】
ステップ１０６、１０８、１１０、１１２および１１４では、ストレージキャッシュ２６に保存された対応するキャッシュ内データファイルになされた変更に基づいて、ストレージキャッシュ２６Ａとキャッシュサーバ２６Ｃがファイルサーバ３８に保存されたデータファイルのバージョンを自動的に更新する更新動作を説明している。この自動更新に基づいて、キャッシュサーバはワークステーション１６Ａ以外の許可されたワークステーションからそれ以降に受信したデータファイルへアクセスするリクエストに応じてデータファイルのリアルタイムでの更新バージョンを転送することができる。ここで、このワークステーションは、ストレージ３０Ａか、あるいはシステム１２の一部である別のストレージキャッシュに接続していても、していなくても良い。プロセス１００の好ましい実施例では、システム１２のコンポネントは、潜在的な待ち時間を最小限にするために、本発明のデータファイルの自動更新の一部として公知の従来の差分技術を実装している。
【００３４】
図４Ａを再度参照すると、ステップ１０６では、ストレージキャッシュ３０Ａのキャッシュマネージャ５０が、データファイル転送リクエストをキャッシュサーバ３６に送信する。キャッシュサーバ３６では、このリクエストを受信して、サーバマネージャ６０が当業者に公知の技術を用いて翻訳プログラム６２にファイルサーバ３８に現在保存されているデータファイルのチェックサムを生成させる。翻訳プログラム６２は、ファイルサーバ３８からデータファイルのコピィを取り出して、必要に応じてストレージ６６にデータファイルコピィなどのチェックサム処理に必要なデータを保存してチェックサムを生成する。
【００３５】
ステップ１０８において、サーバマネージャ６０は、このチェックサムをストレージキャッシュ３０Ａに送信する。ステップ１１０で、キャッシュマネージャ５０は、ストレージ５６からキャッシュ内データファイルを取り出して、翻訳プログラム５２が、チェックサムを用いて別のデータ形式をとるファイル更新データを計算する。この差分データは、キャッシュ内データファイルと、現ファイルサーバに保存されており、チェックサムで表されるデータファイルのバージョンとの差を表す。
【００３６】
ステップ１１２では、キャッシュマネージャ５０がこの差分データをキャッシュサーバ３６に送信する。次いで、ステップ１１４で、翻訳プログラム６２がこの差分データを用いて、データファイルの更新された置き換えバージョンを生成する。特に、翻訳プログラム６２は、好ましくはステップ１０８でローカルファイルストレージ６６に保存されているデータファイルの現行バージョンのコピィを取り出し、この差分データを用いて保存されているデータファイルの現行バージョンを処理して、更新データファイルを作る。次いで、翻訳プログラム６２は、ファイルサーバ３８に現在保存されているデータファイルを置き換え更新データファイルに置き換える。従って、キャッシュサーバ３６が続いてストレージキャッシュ３０などの別のストレージキャッシュから、あるいはデータセンターシステム２０内のワークステーション２２Ｅまたは２２Ｆの一方から転送されてきたデータファイルへのアクセスリクエストを受けると、キャッシュサーバ３６はこの更新データファイルを用いて、リクエストに応答する。その結果、次のリクエスト者には、ワークステーション１６Ａでなされた入力に基づくデータファイルへの以前の変更を含めて、データファイルのリアルタイムバージョンが効率よく提示される。
【００３７】
好ましい実施例では、ステップ１１２において、キャッシュマネージャ５０がファイル更新データをストリーミングデータとしてキャッシュサーバ３６に送信する。代替の好ましい実施例では、ファイル更新データを、ストリーミングデータとしてキャッシュサーバに転送する前に圧縮して、ネットワーク２８を介して転送されるデータ量を最小限とし、潜在的な待ち時間を低減させる。
【００３８】
プロセス１００の好ましい動作では、キャッシュサーバ３６はストレージキャッシュから転送されてきたファイル更新データに基づいてストレージ６６に保存されているデータファイルの更新を続け、ファイル更新データの全ての転送が完了し、サーバキャッシュがこの転送された全てのデータを受け取ったら、キャッシュサーバがファイルサーバ３６に保存されているデータファイルを更新データファイルに置き換える。
【００３９】
図４Ｂは、ファイルサーバに保存されている対応するデータファイルを用いてストレージキャッシュでキャッシュに保存されているデータファイルを更新するために、本発明のストレージキャッシュとキャッシュサーバが実行するデータ処理動作を示すハイレベルのフロープロセス１２０である。プロセス１２０の特徴にハイライトを当てるために、ストレージキャッシュ３０Ａはワークステーション１６Ａからのデータファイルへのアクセスリクエストを既に受信しており、このデータファイルに対応するキャッシュに保存されているデータファイルがストレージモジュール５６に保存されていて、ワークステーション２２Ａまたは２２Ｂが読み出しあるいは書き込みいずれかのために以前にこのデータファイルにアクセスしたと、仮定する。アクセスリクエストに応じてワークステーション２２Ａに与える前にキャッシュ内データファイルを更新することによって、ワークステーション２２Ａが以前にアクセスして以来、データファイルになされたすべての更新が、キャッシュに保存されているデータファイルに組み込まれる。例えば、ワークステーション２２Ｃが、このデータファイルに対応するストレージキャッシュ３０Ｂのキャッシュ内データファイルに以前に書き込みを行っているかもしれず、このようなキャッシュ内データファイルになされた変更を表すファイル更新データが、プロセス１００について上述したとおり、ファイルサーバ３６のデータファイルがキャッシュ３０Ａで現在保存されている対応するキャッシュ内データファイルと異なるように、ファイルサーバ３６のデータファイルを更新するのに使用されているかもしれない。
【００４０】
図４Ｂを参照すると、ステップ１２２で、キャッシュマネージャ５０は、ワークステーション２２Ａからアクセスリクエストを受けた後に、簡易化の為にこのようなアクセスリクエストがネットワーク１０におけるデータファイルの整合性に影響を与えないと仮定して、データファイル転送リクエストをキャッシュサーバ３６へ自動的に転送する。ファイル転送リクエストに応じて、翻訳プログラム６２がファイルサーバ３６からデータファイルを取り出して、サーバマネージャ６０がこのデータファイルをストレージ６６に保存する。
【００４１】
ステップ１２４では、翻訳プログラム５２が対応するキャッシュ内データファイルのチェックサムを作り、キャッシュマネージャ５０がこのチェックサムをキャッシュサーバ３６に送信する。このチェックサムを計算するために、翻訳プログラム５２は、ストレージモジュール５６からキャッシュに保存されているデータファイルを取り出して、キャッシュ内データファイル上で公知の従来のチェックサム処理を実行する。
【００４２】
ステップ１２６では、このチェックサムを用いて翻訳プログラム６２がサーバファイル更新データを生成する。サーバファイル更新データは、ファイルサーバ３６に現在保存されているデータファイルであって、そのコピーがステップ１２２にてストレージ６６に保存されているデータファイルと、ストレージキャッシュ３０Ａに保存されていてチェックサムで表されているキャッシュ内データファイルの現バージョンとの差を表すことが好ましい。
【００４３】
ステップ１２８では、サーバマネージャ６０がこのサーバファイル更新データをストレージキャッシュ３０Ａに送信する。次いで、ステップ１３０において、翻訳プログラム５２がサーバファイル更新データを用いて、ストレージモジュール５６に保存されているキャッシュ内データファイルを置き換える更新キャッシュ内データファイルを作る。その後、翻訳プログラム５２は、システム１２のストレージキャッシュに接続されたその他のワークステーションによってなされた、全ての他のデータファイルの変更に基づいて更新されたキャッシュ内データファイルを用いて、ワークステーション２２Ａからのアクセスリクエストに応答する。従って、ユーザが所望するアクセスされたデータファイルへの更新が、ストレージキャッシュのストレージ５６に単一の、現行バージョンのキャッシュ内データファイルの形式で保存される。
【００４４】
プロセス１００と同様に、サーバファイル更新データはストリーミングデータとしてストレージキャッシュに送信することが好ましく、更に、ストリーミングデータとしてストレージキャッシュに送信される前にサーバファイル更新データを圧縮することが最も好ましい。
【００４５】
好ましい実施例では、一のストレージキャッシュについて所定のインターバルでプロセス１２０が自動的に実行され、そのストレージキャシュに接続されたワークステーションがデータファイルへのアクセスをリクエストすることが期待される時点の前にキャッシュ内データファイルが更新される。例えば、本発明のストレージキャッシングプロトコルシステム１２を企業にて実施する場合、従業員が職場に到着して、ワークステーションからデータファイルへのアクセスをリクエストする前の早朝に、ストレージキャッシュによってプロセス１２０が自動的に実行される。遠隔システムのどのワークステーションも所定のインターバルより長い期間特定のデータファイルにアクセスしていない別の好ましい実施例では、プロセス１２０が自動的に実行され、ストレージキャッシュでの対応するキャッシュ内データファイルを更新して待ち時間を最小にする。更に好ましい実施例では、遠隔システムのワークステーションがアクセスを求めるであろうすべてのデータファイルが、最初に遠隔システムに接続したストレージキャッシュに保存されている。
【００４６】
従って、本発明のストレージキャッシングプロトコルシステムは、遠隔システムとリアルタイムのデータファイルへの共用アクセスを管理するデータセンターシステムとの間で目に見えないインターフェースを構成している。有利なことに、ワークステーションがデータファイルに対して行いたい変更は、ストレージキャッシュにバックアップされない。この所望の変更はキャッシュ内データファイルに表され、キャッシュ内データファイルから取り出されたファイル更新データは常時キャッシュサーバに転送される。キャッシュサーバは、順に、ファイル更新データを用いてデータセンターシステムのファイルサーバに保存されているデータファイルを更新する。従って、遠隔システムあるいはストレージキャッシュは、ファイルのローカルストレージ用に大量のメモリを必要としない。この結果、中央データセンターシステムに接続した本発明のキャッシュサーバのインストールにより、キャッシュサーバと共に稼動するストレージキャッシュに接続した各遠隔システムが最小のローカルメモリストレージを必要とするので、最小の管理費でコンピュータネットワーク１０を通してメモリを節約することができる。このことは、最小メモリ要求を実現する。完結しており、分離したシステムである従来のファイル共用システムとは違って、本発明のストレージキャッシングシステムはメモリの要求が小さく、現存の分散ファイルシステム技術を共同利用することができ、以下に詳細に述べるように、ワークステーションがアクセスしたときに共用するデータファイルのネットワーク全体での整合性を提供するものでもある。更に、本発明のストレージキャッシングプロトコルは、一の完全なデータファイル上で読み取りと書き込みの共用アクセス動作を実行するものであり、これは、データファイルの一部（データブロック）を用いて読み取りおよび書き込みの一次操作を実行する、ＡＦＳ、ＮＦＳ、ＣＩＦＳを使用しているような従来のオペレーションシステムと著しく異なっている。
【００４７】
有利なことに、ストレージキャッシングシステム１２は、遠隔システムあるいはデータセンターシステムにすでに存在する装置のソフトウエアに追加したり、ソフトウエアを変更したりすることなく、また、現存のソフトウエアのアーキテクチュアに影響を与えることなく、ＮＦＳやＣＩＦＳなどの現存する従来の分散ファイルシステムと一緒に実施することができる。例えば、システム１２は、WindowsのユーザにはWindowsのファイルサーバとして、またUnixのユーザにはUnixファイルサーバとして現れる。さらに、動作中に、システム１２のストレージキャッシュとキャッシュサーバは、容易に初期化して、従来のネットワーク構成情報を用いてワークステーションとファイルサーバにインターフェースを取る事ができる。更に、ストレージキャッシュの最初のコンフィギュレーションの後、ストレージキャッシュは、更なる管理、バックアップ、あるいはワークステーションのユーザによってなされるようないかなる運用も必要とせず、キャッシュサーバあるいは遠隔コントロールセンタから、完全に運用され、モニタされ、供給され、複製されうる。
【００４８】
本発明の好ましい態様によれば、システム１２は、現存の分散ファイルシステムを用いて動作するネットワーク１０のワークステーションによる共用アクセスで入手可能なリアルタイムでのデータファイルの整合性と一貫性を確実なものにするリーシングプロトコルを使用している。このリーシングプロトコルは、一のデータファイルについて多数の読み出しリースを許可するもので、一のデータファイルの第１の読み出しリースは、データファイルをロックして、続く書き込みリースを許可できないようにする。更に、一のデータファイルに対する書き込みリースの許可に続いて、書き込みリースが閉じられるまで別の読み取りリースが許可されない。更に、一のデータファイルに対する書き込みリースがすでに存在する場合は、そのデータファイルの複数の読者権がありうる。一のデータファイルに対する読者権により、ストレージキャッシュに関連している、あるいはしていないワークステーションが、ファイルサーバから直接に得たようなコピーとして、あるいはストレージキャッシュに保存されているキャッシュ内データファイルの形式でそのデータファイルを見ることができる。
【００４９】
図５は、データファイルのリースに関するストレージキャッシュのリクエストを許可するか否かを決定するための本発明のキャッシュサーバとストレージキャッシュによって実行されるデータ処理動作を記載したハイレベルのフロープロセス１５０である。好ましいプロセス１５０に説明されたリーシングプロトコルの特徴にハイライトを当てる目的で、第１のストレージキャッシュ、すなわち、ストレージキャッシュ３０Ａが、ワークステーション２２Ａから受信したアクセスリクエストに基づいてファイルサーバ３６に保存されているデータファイルに対するリースリクエストを開始しているものと仮定する。更に、説明を簡単かつ明確にするために、第２のストレージキャッシュ、すなわち、ストレージキャッシュ３０Ｂが、データファイルに対するリースを許可されることができるネットワーク１０内の唯一の他のストレージキャッシュであると仮定する。しかしながら、リーシングプロセス１５０は、ネットワーク１２が２以上のストレージキャッシュを含む場合にも適用可能であり、リーシングプロセス１５０は、問題のデータファイルに対するリースを保持しているストレージキャッシュの各々に関連して実行されると、考えるべきである。
【００５０】
図５を参照すると、ステップ１５２では、リーシングモジュール５４がストレージキャッシュ３０Ａのキャッシュマネージャ５０にキャッシュサーバ３６にデータファイルリースリクエストを送信させる。ステップ１５４において、リーシングモジュール６４は、ストレージキャッシュ３０Ｂがそのデータファイルに対するリースをすでに有するかどうかを判断する。ステップ１５４における決定がＹＥＳであれば、ステップ１５６でリーシングモジュール６４が、キャッシュ３０Ｂで保持されているリースがリクエストされたリースと対立するかどうかを判断する。上述したリーシングプロトコル基準に基づいて、キャッシュ３０Ａのリースリクエストが読み取りの場合は、対立は存在しない。この状態で、リーシングモジュールがステップ１５８を実行して、ファイルへの共用アクセスを制御するＣＩＦＳやＮＦＳなどの分散ファイルシステムの動作に基づき、読み取りアクセスに対してすでにファイルがロックされているかどうかを判断する。ステップ１５８における判定が、データファイルがすでにロックされているというものであれば、ステップ１６０でリーシングモジュール６４が、そのロックがリクエストされたリースに対立するかどうかを判断する。（ｉ）リースリクエストが書き込みリースであり、存在するロックが読み取りまたは書き込みロックである場合、あるいは（ii）リースリクエストが読み取りリースであり、存在するロックが書き込みロックである場合は、対立が存在する。
【００５１】
ステップ１６０の判定が、対立が存在するとの判定である場合、ステップ１６２において、リーシングモジュール６４がリースリクエストを拒否して、データファイルへのアクセスを求めているワークステーションへ読者権を提供する。読者権が与えられると、そのワークステーションに接続したストレージキャッシュがプロセス１２０を実行して、ストレージキャッシュ３０Ａによって送信されたリースリクエストの対象のデータファイルに対応するキャッシュ内データファイルがあれば、それを更新する。
【００５２】
ステップ１５８と１６０を参照すると、これらのステップのいずれかの判定がＮＯである場合、ステップ１６４において、リーシングモジュール６２がそのリクエストを許可し、そのメモリにストレージキャッシュ３０Ａがリースを有する旨と、そのリースの種類を記録し、そのファイルをロックして、ストレージキャッシュ３０Ｂに付けられた他のワークステーションがそのデータファイルへの書き込みアクセスを持つことができないようにする。
【００５３】
ステップ１５４を再度参照すると、このステップの判定がＮＯであれば、リーシングモジュール６４はステップ１５８に進む。
【００５４】
ステップ１５６を再度参照すると、対立がある場合、ステップ１６６でリーシングモジュール６４がリクエストされたリースが読み取りかどうかを判断する。ＹＥＳであれば、ステップ１６８で、サーバマネージャ６０が、好ましくはプロセス１００のステップ１０８、１１０、１１２および１１４と同様のステップを実行して、キャッシュ３０Ｂに保存されているキャッシュ内データファイルに基づいてサーバ３６のデータファイルを更新する。ステップ１６８が実行されると、キャッシュ３０Ｂがリースリクエストの対象であるデータファイルの書き込みリースを保持する。
【００５５】
ステップ１６８に続いて、ステップ１７０では、サーバマネージャ６０が、リースリクエストが拒否され、ワークステーションがそのデータファイルへの読者権を有することができるという回答をストレージキャッシュ３０Ａのキャッシュマネージャ５０へ送信する。回答の一部として、サーバマネージャ６０は、そのデータファイルのコピィをストレージキャッシュ３０Ａへ送信するか、あるいは、好ましくはプロセス１２０のステップ１２４、１２６、１２８および１３０と同様のステップを実行して、ストレージ３０Ａと相互作用してストレージキャッシュ３０Ａに保存されている対応するキャッシュ内データファイルを更新する。翻訳プログラム５２は、次いで、読者権だけを有するキャッシュ内データファイルを、データファイルへのアクセスをリクエストしているワークステーションへ供給する。
【００５６】
ステップ１６６を再度参照すると、判定が、リクエストされたリースが読み取りでないという判定である場合、ステップ１７２において、リーシングモジュール６４がストレージキャッシュ３０Ｂに保持されているデータファイルのリースが読み取りであるかどうかを決定する。ＹＥＳであれば、ステップ１７４でリーシングモジュール６４が、ストレージキャッシュ３０Ｂの読み取りリースを取り消して、将来リーシングの決定に使用するためにメモリ内にこの情報を保存し、ストレージキャッシュ３０Ｂにこの動作を表すデータを送信してそのリーシングモジュールがメモリを更新し、適当な動作を行うことができるようにする。この読み取りリースの取消しに基づいて、ストレージキャッシュ３０Ｂは、データファイルへのアクセスを求めている関連ワークステーションへ読者権のみを与えることができる。ストレージキャッシュ３０Ｂがそのデータファイルに対する読み取りリースをすでに持っており、関連ワークステーションがこの読み取りリースに基づいてファイルを読んでいる状況では、このワークステーションの読み取り閲覧は継続し、そのユーザは読み取りリースから読者権へ変化した状態を認識しない。上述したとおり、ステップ１７４に続いてステップ１５８が実行される。
【００５７】
代替として、ステップ１７２における判定が、ストレージキャッシュ３０Ｂのリースが読み取りであるとの判定である場合、上述したようにステップ１６２が実行される。この結果の場合、リクエストされたリースは書き込みアクセス用のものである。
【００５８】
図６は、データファイルへアクセスするためストレージキャッシュに接続したワークステーションによる読み取りまたは書き込み目的のリクエストを許可するか否かを決定するための、本発明に係るストレージキャッシュとキャッシュサーバによって実行されるデータ処理動作を示すハイレベルのフロープロセス１８０である。例証のために、ワークステーション２２Ａは、ファイルサーバ３６に保存されているデータファイルにアクセスすることを試みている。図６を参照すると、ステップ１８２では、ストレージキャッシュ３０Ａのキャッシュマネージャ５０は、ワークステーション２２Ａがファイルサーバ３６で保存されているデータファイルへアクセスするリクエストを行ったかどうか判断する。このアクセスリクエストに答えて、ステップ１８４で、リーシングモジュール５４が、ストレージキャッシュ３０Ａがそのデータファイル用に十分に強いリースをすでに有しているか否かを判定する。表１は、行われたアクセスリクエストの型と、ストレージキャッシュによって保持されているデータファイルについて存在するリースがある場合は、そのリースとの間の関係を示す。表１の項目は、特定のアクセスリクエストに基づいて、ストレージキャッシュによって保持されているデータファイルについて存在するリースがある場合は、そのリースが、そのストレージキャッシュに接続した遠隔システム間でデータファイルの一貫性と整合性が保たれる程度に十分に強いかどうかを表している。
【表１】
2006516341.tif 000003
【００５９】
現存するリースがアクセスリクエストに関して十分に強ければ、ステップ１８６で翻訳プログラム５２がストレージ５６からキャッシュ内データファイルを取り出し、このキャッシュ内データファイルをイーサネット２４Ａを介してワークステーション２２Ａに送信する。この結果、ワークステーション２２Ａのユーザはアクセスリクエストの種類に従って、読み取りあるいは書き込みの目的でこのキャッシュ内データファイルを開くことができる。例えば、アクセスリクエストが書き込みであれば、ユーザはこのキャッシュ内データファイルについてのデータファイル変更を入力することができ、翻訳プログラム５２はこの変更をモニタして、自動的及び継続的に、ストレージモジュール５６内に保存されているキャッシュ内データファイルを更新してこれらの変更を取り入れる。
【００６０】
ステップ１８４における判定が、現存するリースがアクセスリクエストに大して十分に強くない場合は、ステップ１８８でリーシングモジュール５４がキャッシュマネージャ５０に新しいリースリクエストをキャッシュサーバ３６に送信させる。表１を参照すると、アクセスリクエストと存在するリースの交わる点がＮＯである、例えば、アクセスリクエストが書き込みであって、ストレージキャッシュにあるデータファイルについての現存するリースが読み取りである場合は、現存するリースは十分に強くない。新規のリースリクエストに基づいて、キャッシュサーバ３６が上述したプロセス１５０と同じあるいは実質的に同様のプロセスを実行し、リースが許可されるか否かを決定する。リーシングモジュール６４がリースが許可され得るか否かおよびどのタイプのリースが許可され得るかを決定した後に、サーバマネージャ６０はこの情報をストレージキャッシュ３０Ａに送信する。
【００６１】
ステップ１９０において、リーシングモジュール５４はキャッシュサーバ３６によって送信されたリースリクエストに対する応答を受信し処理して、リースが許可されたか否かを判断する。ＹＥＳであれば、ステップ１９２において、ストレージキャッシュ３０Ａのキャッシュマネージャ５０と翻訳プログラム５２が上述したプロセス１２０などの処理を実行して、ストレージモジュール５６内の対応するキャッシュ内データファイルを更新する。キャッシュマネージャ５０は、次いでステップ１８６を実行する。
【００６２】
ステップ１９０における判定がリースが許可されていないというものである場合、ステップ１９４において、リーシングモジュール５４が、アクセスリクエストが読み出しであるか否かを判断する。ＹＥＳであれば、上述したようにステップ１９２と１８６が実行される。但し、ステップ１８６においては、そのキャッシュ内データファイルへの読み取りアクセスが提供される。
【００６３】
ステップ１９４における判定がＮＯであれば、ステップ１９６においてリーシングモジュール５４はワークステーション２２Ａがキャッシュ内データファイルにアクセスすることを防止する。この結果、ネットワーク１０を通じてデータファイルの整合性と一貫性が確かなものになる。アクセスリクエストが書き込みであり、データファイル用の読み取りあるいは書き込みリースがストレージキャシュ３０Ｂなどの分散ファイルシステムに接続したもう一つのストレージキャッシュに存在する場合にステップ１９６が実行される。
【００６４】
図７は、データファイル用のリースを獲得したストレージキャッシュがリースをアクティブに維持する必要がなくなった後にファイルサーバに保存されているデータファイルを更新する、本発明によるストレージキャッシュ及びキャッシュサーバによって実行されるデータ処理動作を示すハイレベルのフロープロセス２００を示す。プロセス２００の特徴にハイライトを当てる目的で、遠隔システム１６Ａのワークステーション２２Ａのみがそれまでにデータファイルへの読み取りあるいは書き込みアクセスを獲得しており、そのワークステーション２２Ａが、閲覧及び変更をそのオペレーティングシステム上で行っていたアクセスしたキャッシュ内データファイル、つまり、ストレージキャッシュ３０Ａが書き込みリースもしくは読み取りリースを保持しているデータファイルに対応するアクセスされたキャッシュ内データファイルを閉じた、と仮定する。
【００６５】
図７を参照すると、ステップ２０２では、キャッシュマネージャ５０が翻訳プログラム５２とワークステーション２２Ａ間のデータ送信をモニタして、ワークステーション２２Ａがキャッシュ内データファイルをいつ閉じたかを判断する。キャッシュマネージャ５０がキャッシュ内データファイルが閉じられたと判断した後、ステップ２０４で、翻訳プログラム５２がワークステーション２２Ａがキャッシュ内データファイルを変更したかどうかを判断する。これがＹＥＳであれば、ステップ２０６において、翻訳プログラム２０６とキャッシュマネージャ５０が、好ましくはプロセス１００で述べたのと同様の差分データ処理を含むファイル更新プロセスを実行して、ワークステーション２２Ａが閉じたキャッシュ内データファイルに対応するファイルサーバに保存されているデータファイルを更新する。
【００６６】
ステップ２０６に続いて、やはりキャッシュ内データファイルが閉じられたことを表示する送信を受信したリーシングモジュール５４が、ステップ２０８において、キャッシュマネージャ５０にそのデータファイル用のリース開放信号をキャッシュサーバ３６に送信させる。更に、ステップ２０８において、キャッシュサーバ３６でこのリース開放信号を受信したとき、リーシングモジュール６４がこのデータファイルに関するメモリをリセットする。もし書き込みリースが開放された場合、リセットにより、ストレージキャッシュ３０Ｂなどの別のストレージキャシュがそのデータファイルへの書き込みリースアクセスを得ることができる。
【００６７】
ステップ２０４を再び参照すると、その判定が、ワークステーション２２Ａがそのキャッシュ内データファイルにアクセスをしていた間に、キャッシュ内データファイルを変更しなかったというものであれば、ステップ２１０において、リーシングモジュール５４はストレージキャッシュ３０Ａが対応するデータファイルのリースを保持しているかどうかを判定する。ＹＥＳであれば、それはキャッシュ３０Ａがそのデータファイルについての読み取りリースを有していたことを意味し、リーシングモジュール５４がステップ２０８を実行する。代替的に、ストレージキャッシュ３０Ａがデータファイルについてのリースを有していなかった場合は、そのファイルを開いたワークステーション２２Ａがリーダである、すなわち、ファイルを読み取ることができるだけであり、ストレージキャシュ３０Ｂなどの別のストレージキャッシュが接続されているワークステーションに対する書き込みアクセス権を得ているため、それ以上のアクションは取られない。
【００６８】
従って、本発明のストレージキャッシングシステムは分散ファイルシステムのデータファイルを管理して、複数の遠隔システムによる整合性と一貫性のある共有リアルタイムアクセスでのファイル取得を可能にさせる。データファイルは、異なる遠隔位置に配置されたユーザによってアクセスすることができ、キャッシュ内データファイルの形式で、あるいはファイルサーバに現在保存されているデータファイルのコピィの形式でユーザに与えられ、それぞれ、データファイルのリアルタイムな、アップデートされたバージョンを成すようにこれまでの変更を全て含んでいる。ストレージキャッシュとキャッシュサーバ間でファイル更新データとデータファイルを圧縮したストリーミングデータとして送信するという好ましい送信方法により、そのデータファイルが物理的にはワークステーションから遠隔に配置されたファイルサーバに保存されていたとしても、ワークステーションのユーザはデータファイルへほぼＬＡＮ速度でのアクセスを体験する。
【００６９】
リーシングプロトコルを含む本発明のストレージキャッシングプロトコルシステムの好ましい実施例によれば、ストレージキャッシュに接続したワークステーションは、複数のファイルサーバに保存されたデータファイルにアクセスすることができる。図８は、複数ファイルサーバに保存されている共用リアルタイムデータファイルへのアクセスを管理し、本発明によるネットワーク３１０内のデータファイルの整合性と一貫性を維持するように動作する好ましいストレージキャッシングプロトコルシステム３１２を含むネットワーク３１０を示す図である。図８を参照すると、システム３１２は、関連するデータセンターシステム３２０Ａ、３２０Ｂ、および３２０Ｃにそれぞれ接続された複数のキャッシュサーバ３３６Ａ、３３６Ｂおよび３３６Ｃを具え、またネットワーク１０について上述したのと同じ方法で遠隔システム１６Ａと１６Ｂにそれぞれ接続されているストレージャッシュ３０Ａおよび３０Ｂを具える。例証のために、各データセンタ３２０はネットワーク１０のデータセンタ２０と同様またはほぼ同様に構成されて、同様に機能する。例えば、データセンタ３２０Ａは、ワークステーション３２２Ａと３２２Ｂおよびファイルサーバ３３８Ａをキャッシュサーバ３３６Ａとゲートウェイ３２６Ａに接続するイーサネット３２４Ａを有し、ゲートウェイ３２６Ａは通信ネットワーク２８に接続されている。
【００７０】
図８を参照すると、各ストレージキャッシュ３０は、異なる遠隔地に配置されているような全てのキャッシュサーバ３３６と通信することができ、またその逆も可能である。更に、キャッシュサーバ３３６は、本発明のストレージキャッシングプロトコルによって、ストレージキャッシュ３０全てからのアクセスリクエストの対象となったデータファイルのコピィを取り出して、これを更新するために、それぞれの関連するファイルサーバ３３８と通信できる。都合の良いことに、本発明のキャッシュサーバは、標準ＬＡＮファイル共用プロトコル（ＮＦＳおよびＣＩＦＳ）のクライアントとして動作するためのソフトウエアインフラストラクチュアを有し、これによってネットワーク３１０内のファイルサーバ３３８のいずれかに保存されているデータファイルを取得する、またはデータファイルを置き換えるようにキャッシュサーバを容易に設定することができる。ここで、ファイルサーバ３３８のそれぞれは、どのようなオペレーティングシステムフォーマットを有していてもよい。さらに、キャッシュサーバは、標準ファイルシステムＡＰＩｓを用いてローカルファイルシステムのファイルにアクセスしたり、ファイルを置き換えたりすることもできる。
【００７１】
システム３１２の稼動中に、ワークステーションが読み取り又は書き込みの目的でデータファイルにアクセスを所望し、本発明のストレージキャッシングシステムがアクセスリクエストを適切なキャッシュサーバに正しく多重送信すると、ユーザに与えられているデータファイルのコピィがどこに位置しているかは、ワークステーションのユーザに知られない。言い換えれば、ユーザは物理的にどのデータソースシステムがデータファイルを含んでいるかを知ることもなく、気にもせず、あるいはそれを確かめることなく、共用可能なデータファイル上にアクセスして操作を行うことができる。
【００７２】
更なる好ましい実施例では、各ストレージキャッシュあるいはサーバキャッシュが、ストレージキャッシュとキャッシュサーバの両方として稼動するように構成することができる。従って、ストレージキャッシュとキャシュサーバ装置の単一の組み合わせが、遠隔コンピュータシステムあるいはデータセンターコンピュータシステムと接続され得る。接続した遠隔システムのワークステーションにいるユーザは、ある状況下では、同じ装置内にあるキャッシュサーバとストレージキャッシュが通信することに気がつかないであろう。
【００７３】
更に、本発明のストレージキャッシングプロトコルシステムは、ストレージキャッシュとキャッシュサーバが、各キャッシュ／サーバの組み合わせがネットワーク内の他の各キャッシュ／サーバの組み合わせに接続されているクリークなどの、非常に高度なトポロジーを実装する単純な構成単位として動作し得るので、ファイルサーバとメモリリソースの割り当て、及び共用に多大なフレキシビリティを提供する。
【００７４】
さらに好ましい実施例では、リーシングプロトコルを有する本発明のストレージキャッシングシステムは、ストレージキャッシュに保存され、ワークステーションによる入力で変更されているキャッシュ内データファイル、キャッシュサーバのストレージに保存されているデータファイルのバージョン、あるいはファイルサーバに保存されているデータファイルを用いて、（ｉ）キャッシュサーバとストレージキャッシュ間に設けた通信リンクの切断、（ii）キャッシュサーバかストレージキャッシュのいずれかの故障、（iii）ワークステーションの予期しないリブート、が生じた場合にデータファイル又はキャッシュ内データファイルを更新し、ネットワークにおけるデータファイルの整合性と一貫性を維持する。特筆すべきことに、ファイル更新状態をトラッキングするための追加データは必要が無い。図９は、本発明によってデータファイルの整合性と一貫性を維持し、またデータファイルをバックアップしつつ、リアルタイムのデータファイルへの共用アクセスを管理するストレージキャッシングプロトコルシステム４１２の更に好ましい実施例を含むネットワーク４１０のシステム図である。図９を参照すると、システム４１２は、各々が関連するデータセンターシステム４２０Ａと４２０Ｂにそれぞれ接続されているキャッシュサーバ４３６Ａと４３６Ｂと、ネットワーク１０と同様に遠隔システム１６Ａに接続されているストレージキャッシュ３０Ａを具える。例証のために、各データセンターシステム４２０は、ネットワーク１０のデータセンタ２０と実質的に同様に構成され動作する。バックアッププロトコルの特徴にハイライトを当てるために、ストレージキャッシュ３０Ａでキャッシュ内データファイルに行われる変更に基づいてキャッシュサーバ４３６へファイル更新データを送信するために、ストレージキャッシュ３０Ａとキャッシュサーバ４３６Ａ間の通信リンクが設定されており、キャッシュデータファイルがファイルサーバ４３８Ａに保存されているデータファイルに対応し、ファイルサーバ４３８Ａがシステム４１０についての主データファイルストレージ装置であり、ファイルサーバ４３８Ｂがバックアップストレージ装置である、と仮定する。
【００７５】
図９を参照すると、本発明に係るデータファイルのバックアップは、ストレージキャッシュ３０Ａのキャッシュマネージャ５０が、例えば、ゲートウェイ２６にネットワーク通信障害を検出したときに開始する。次いで、キャッシュマネージャ５０が自動的にかつ定期的に、キャッシュサーバ４３６Ａへの通信リンクを再設定しようとする。ストレージキャッシュ３０Ａも、中断することなく動作を継続する、すなわち、ワークステーションによって入力されたキャッシュ内データファイルへの変更をモニタし続け、変更を含むキャッシュ内データファイルの現バージョンのみをストレージ５６に保存する。
【００７６】
更に、キャッシュマネージャ５０は、キャッシュサーバ４３６Ａと４３６Ｂが異なる固有のＩＰルーティングアドレスを有するため、キャッシュサーバ４３６Ｂを介して、データセンタ４２０Ｂなどのバックアップデータセンタとの通信リンクを開設しようと同時に試みる。このバックアップリンクを設定することができれば、ストレージキャッシュ３０Ａが、ファイルサーバ４２０Ｂで保存されているデータファイルのバックアップコピィを更新するためにプロセス１００の実行を続ける。言い換えれば、それぞれのデータセンタがミラーであるという前提の下、ストレージキャッシュ３０Ａは、キャッシュサーバ４３６Ａへの切断が生じた地点でキャッシュサーバ４３６Ｂのデータファイルを更新する処理を続ける。
【００７７】
切断に続いてキャッシュサーバ４３６Ａへの接続が再度設定されると、ストレージキャッシュ３０Ａは、例えばプロセス１００のステップ１０６、１０８、１１０、１１２および１１４を実行することによってデータファイルを更新するプロセスを再開する。言い換えると、切断が生じた時にキャッシュサーバ４３６Ａあるいはファイルサーバ４３８Ａに存在したデータファイルのバージョンを表すチェックサムを用いて、ステップ１１０において差分データを計算する。従って、キャッシュ内データファイルの現バージョンのみが保存され、この現キャッシュ内データファイルが、キャッシュサーバから送信されたチェックサムに基づいてファイルサーバにあるデータファイルのバージョンを更新するのに使用されるため、ストレージキャッシュ３０Ａは、常にファイル更新データを効果的に保持する。従って、キャッシュデータファイルが更新され続け、ファイルサーバに現在保存されているデータファイルを更新するのに使用されるので、ストレージキャッシングプロトコルシステムでは、有利なことに、切断前のデータファイルの正確な更新状況を追跡したり、あるいは知っていたりする必要がない。
【００７８】
この結果、主データセンタのキャッシュサーバへの通信リンクが切断されると、ストレージキャッシュが複数キャッシュサーバと相互に動作することができ、バックアップデータセンタのキャッシュサーバとの通信リンクを容易に設定することができる。しかしながら、主データセンタにて障害が発生した時や、主データセンタとのリンクもしくはバックアップデータセンタへの新規リンクを再設定しようと試みている間、及び、遂に主データセンタとのリンクが再設定された時にも、ワークステーションのエンドユーザは、通信リンクにおける混乱を経験したり認識したりしない。データファイルの直前の状況は、ストレージキャッシュあるいはキャッシュサーバ内のメモリから自動的に復元され、リブートやシステムの再スタート時に、確実に整合性が常に保持され、保留されているライトバックデータが失われないようにする。
【００７９】
リーシングプロトコルを含む本発明のストレージキャッシングシステムの好ましい実施例では、ストリーミング（リードアヘッド用）、圧縮およびより良いチャンネルを利用するための差分の組み合わせが実行されて、キャッシュヒットを非常によくさせ、実質的にライトバックを可能とし、可能な限り効率のよいキャッシュミスを得る。
【００８０】
更に好適な実施例では、ストレージキャッシュは、ネットワークの切断が生じたときに異なるキャリア上で同じデータセンタ用の複数のＩＰアドレスに通信リンクを張るよう試みることができる。
【００８１】
別の好ましい実施例では、ストレージキャッシュに故障が生じた後、故障したストレージキャッシュが単に置き換えられ、ただちに新しいストレージキャッシュが遠隔データセンタにあるキャッシュサーバとの接続を開設し、プロセス１００と１２０によってキャッシングと更新を直ちに再度試みる。
【００８２】
本発明の好ましい実施例を説明して図に示したが、本発明の原理からはずれることなく様々な変形をなしうることは当業者には明らかである。
【図面の簡単な説明】
【００８３】
本発明の他の目的と利益は、好ましい実施例の以下の詳細な説明から明らかになる。説明は同様な符号が類似した要素を表示している添付の図面と共に考慮されるべきである。
【図１】図１は本発明に係る分散ファイルシステムでのストレージキャッシングプロトコルの実施を示すシステム図である。
【図２】図２は、本発明のストレージキャッシュのブロック図である。
【図３】図３は、本発明のキャッシュサーバのブロック図である。
【図４Ａ】図４Ａは、本発明による、ストレージキャッシュからキャッシュサーバへ転送されたファイル更新データに基づいてファイルサーバに保存されているデータファイルを更新する方法のフローチャートである。
【図４Ｂ】図４Ｂは、本発明のキャッシュサーバで転送されたサーバファイル更新データに基づくストレージキャッシュに保存されたキャッシュ内データファイルを更新する方法のフローチャートである。
【図５】図５は、本発明によるストレージキャッシュからのリースのリクエストに応じる方法のフローチャートである。
【図６】図６は、本発明のストレージキャッシュで受信されたデータファイルへのアクセスリクエストに応じる方法のフローチャートである。
【図７】図７は、本発明のデータファイルのリースを開放する方法のフローチャートである。
【図８】図８は、本発明の複数のファイルサーバを有する分散ファイルシステムにおけるストレージキャッシングプロトコルの実施を示すシステム図である。
【図９】図９は、本発明のデータバックアップを提供するための分散ファイルシステムにおけるストレージキャッシングプロトコルの実施を示すシステム図である。
【図１】
2006516341.tif 000004
【図２】
2006516341.tif 000005
【図３】
2006516341.tif 000006
【図４Ａ】
2006516341.tif 000007
【図４Ｂ】
2006516341.tif 000008
【図５】
2006516341.tif 000009
【図６】
2006516341.tif 000010
【図７】
2006516341.tif 000011
【図８】
2006516341.tif 000012
【図９】
2006516341.tif 000013
【手続補正書】
【提出日】平成17年9月30日(2005.9.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１
【補正方法】変更
【補正の内容】
【請求項１】
複数の許可されたコンピュータワークステーションによるファイルサーバ内に保存されたデータファイルへの共用アクセスを管理する方法において、当該方法が：
読み取りあるいは更新のためにキャッシュサーバによってファイルサーバから取り出したデータファイルのコピィを第１のストレージキャッシュへ供給するステップであって、前記第１のストレージキャッシュが少なくとも第１の許可されたコンピュータワークステーションに接続されており、キャッシュに保存されているデータファイルとして前記データファイルのコピィを保存するステップと；
前記第１のストレージキャッシュにおいて、前記第１のワークステーションによって入力されたデータファイルの変更を当該変更が入力されたときに前記キャッシュ内データファイルに組み込んで、当該キャッシュデータファイルを最新版にするステップと；
前記第１のストレージキャッシュからのファイル更新データを前記キャッシュサーバへ自動的に送信するステップであって、前記ファイル更新データが前記キャッシュ内データファイルに組み込まれたキャッシュ内データファイルを最新版にする変更の関数であるステップと；
キャッシュサーバにおいて、前記ファイル更新データに基づいて前記ファイルサーバに保存されているデータファイルの置き換えバーションを作成するステップと；
を具えることを特徴とする方法。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項８
【補正方法】変更
【補正の内容】
【請求項８】
請求項１に記載の方法において、前記キャッシュサーバが複数のキャッシュサーバを具え、前記データファイルの置き換えバージョンが前記キャッシュサーバの少なくとも一つで生成されることを特徴とする方法。
【手続補正３】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項９
【補正方法】変更
【補正の内容】
【請求項９】
請求項８に記載の方法において、前記キャッシュサーバの第１番目のサーバと前記第１のストレージキャッシュ間の通信接続が故障した場合、前記第１のストレージキャッシュが、前記第１のキャッシュサーバとキャッシュサーバの第２番目のサーバのうちの少なくとも一つとの通信接続を開設するよう自動的に試みることを特徴とする方法。
【手続補正４】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１５
【補正方法】変更
【補正の内容】
【請求項１５】
複数の許可されたコンピュータワークステーションによるファイルサーバに保存されたデータファイルへの共用アクセスを管理するシステムにおいて、当該システムが：
前記ファイルサーバに保存されているデータファイルのコピィを取り出すキャッシュサーバと：
少なくとも第１の許可されたコンピュータワークステーションに接続された少なくとも一の第１のストレージキャッシュを具え、前記第１のストレージキャッシュが前記取り出したデータファイルコピィをキャッシュ内データファイルとしてローカルメモリに保存し、前記第１のワークステーションによって入力されたデータファイルの変更を当該変更が入力されたときに前記キャッシュ内データファイルに組み込んで、当該キャッシュ内データファイルを最新版にする；
前記第１のストレージキャッシュがファイル更新データを自動的に生成して、ストリーミングデータとして前記キャッシュサーバへ送信し、前記ファイル更新データが前記キャッシュデータファイルに組み込まれたキャッシュ内データファイルを最新版にする変更の関数であり；
前記キャッシュサーバが前記ファイル更新データに基づいて前記データファイルの置き換えバーションを生成し、前記データファイルの置き換えバージョンを用いて第２のストレージキャッシュと許可コンピュータワークステーションのうちの少なくとも一つから前記キャッシュサーバへその後送信されたデータファイルへアクセスするリクエストに応答する；
ことを特徴とするシステム。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００２６
【補正方法】変更
【補正の内容】
【００２６】
図３は、本発明によるキャッシュサーバ３６の好ましい実施例を示す図であり、このサーバは、キャッシュ３０Ａや３０Ｂなどの複数のストレージキャッシュ及び、データセンタ２０のワークステーション２２Ｅおよび２２Ｆなどのストレージキャシュに関係していないワークステーションによる、ファイルサーバに保存されているデータファイルへの共用アクセスを管理する。キャッシュサーバは、好ましくは、ＮＡＳやＳＡＮなどの、遠隔コンピュータシステムとデータセンターコンピュータシステムに導入されている既存の分散ファイルシステムと互換性をもたせ容易に一体化させることのできるアーキテクチュアを有する薄い装置である。２００１年１月１９日に出願され、本出願人に譲渡されており、ここに参照することにより組み込まれている、米国特許第６，８２６，５８０号を参照されたい。
【国際調査報告】
2006516341.tif 000014
2006516341.tif 000015