説明

ネットワーク・ストレージ・システム、方法、クライアント装置、キャッシュ装置、管理サーバ、及びプログラム

【課題】ネットワーク・ストレージ・サービスにおいて、データの書き込みの際のユーザの体感速度を向上させることを可能にする技術を提供する。
【解決手段】データを保存して該データに対するアクセス許否を制御する少なくとも一つのマスタサーバと、少なくとも一時的に保持していたデータをマスタサーバへ送信して保存させる複数のキャッシュ装置と、ストレージ・サービスに加入するユーザからのログインを管理する手段を有する管理サーバとを設置する。クライアント装置は、管理サーバに対し、ログインの要求を送信して、該ログインの成功応答とともに、要求元のクライアント装置用に選択されたキャッシュ装置を特定する情報を受信し、そのキャッシュ装置に対してデータの書き込み要求を送信し、当該キャッシュ装置からマスタサーバへ中継された前記書き込み要求に対する許可を受信して、前記データを前記キャッシュ装置へ送信し保持させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報機器(クライアント)が作成し利用するデータを、ネットワーク経由でサーバ上に保存するネットワーク・ストレージの技術に関する。
【背景技術】
【0002】
従来のコンピュータ利用は、ユーザである企業や個人等が、コンピュータのハードウェア、ソフトウェア、データ等を、自分自身で保有し、管理していたが、近年普及してきたクラウド・コンピューティングでは、ユーザは、自身の手元の機器が接続したネットワークの向こう側(データセンタ等)からサービスを受け、クラウド・サービス提供事業者に対してサービス利用料金を支払うという形態が多く採られる。
【0003】
クラウド・サービスの利点の一つは、ネットワークへの接続環境さえあれば、USBメモリ等のメモリ媒体を持ち歩かなくても、自分の所有するデータの保存と取り出しができることにある。さらに、ユーザがデータセンタの設備を所有せず、多数のユーザが一つのデータセンタを利用する形態とすることより、各ユーザはデータセンタの持つ高い性能を低コストで利用することができる。
【0004】
クラウド・サービスのうち、ユーザのデータをネットワーク上のサーバに保存するサービスを、オンライン・ストレージ・サービスともいうが、このサービスをユーザが抵抗なく利用するためには、ネットワークの向こうにサーバがあることを感じさせないことが重要になる。
【0005】
特に、インターネットのようなベストエフォートの広域ネットワークを経由する場合、サーバまでのネットワーク距離が長く、ユーザが手元の機器で作成したデータをサーバ上に保存したりサーバ上のデータを手元の機器に読み込んだりする際の体感速度が遅くなることが問題となる。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2003−345709号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
ネットワーク・ストレージの技術分野ではないが、コンテンツ配信の技術分野には、CDN(コンテンツ配信ネットワーク)という技術があり、キャッシュサーバをインターネット上に分散配置して、各ユーザに対して最適なキャッシュサーバからコンテンツを送信することにより、体感速度の向上を目指している。
【0008】
しかし、コンテンツ配信の技術では、サーバに保存されたデータをクライアントが読み込むという一方向の高速化が実現できるだけであり、ネットワーク・ストレージのようにクライアントが作成したデータをサーバに書き込むという逆方向の高速化は実現できない。
【0009】
また、コンテンツ配信の技術において、ユーザに最適なキャッシュサーバの指定は、DNS(ドメイン名サーバ)により行われるため、マスタサーバのドメイン名から求められるIPアドレスが、ISP(情報サービスプロバイダ)毎に異なるようにすることができるだけであり、クライアントからネットワーク的に近いキャッシュサーバを指定することはできない。
【0010】
なお、クライアントからサーバへの書き込みについてキャッシュ装置を設けた例として、特許文献1があるが、この技術は、クライアントからサーバへ向けて送信されるデータ・トラヒックが瞬間的に増大した場合に、サーバの処理がデータ受信に占有されてその他の処理性能が極度に低下してしまうという問題を解決するために、クライアントの代理としてタイミングをずらしてサーバへの書き込みを行うキャッシュ装置を設けたものであって、ユーザの体感速度の向上が実現されるものではない。
【0011】
さらに、ネットワーク・ストレージにしたことによって、データがネットワークの向こう(リモート)にあるのか手元の機器(ローカル)にあるのかを、ユーザが意識しなければならなくなったり、ネットワークに障害が発生したときに全てのデータが利用不可能になったりするようでは、利便性が損なわれる。
【0012】
本発明は、上記の事情に鑑み、ネットワーク・ストレージ・サービスにおいて、データの読み書きの際のユーザの体感速度を向上させ、使い勝手の良いサービスを提供することを可能にする技術を、実現することを目的とする。
【課題を解決するための手段】
【0013】
本発明に係るネットワーク・ストレージ・システムは、ストレージ・サービスの対象となるデータを作成する手段を有する複数のクライアント装置と、前記ストレージ・サービスを提供するためにデータを保存し、該データに対するアクセス許否を制御する手段を有する少なくとも一つのマスタサーバと、前記複数のクライアント装置のうちの一つから受信したデータを少なくとも一時的に保持する手段と当該データを前記マスタサーバへ送信して保存させる手段とを各々が有する複数のキャッシュ装置と、前記複数のクライアント装置のうちの一つからログインの要求を受け付け、当該ログインの成功に応じて、要求元のクライアント装置用に前記複数のキャッシュ装置のうちの少なくとも一つを選択し、選択されたキャッシュ装置を要求元のクライアント装置に通知する手段を有する管理サーバとを備え、前記要求元のクライアント装置は、前記管理サーバから通知された前記キャッシュ装置に対して、作成した前記データの書き込み要求を送信する手段と、前記書き込み要求に対する許可の受信に応じて、前記管理サーバから通知された前記キャッシュ装置に対し、作成した前記データを送信する手段とを有し、前記キャッシュ装置は、前記クライアント装置から受信した書き込み要求を、前記マスタサーバへ中継する手段と、前記マスタサーバから受信した前記書き込み要求に対する許可を、前記クライアント装置へ中継する手段とを有する。
【0014】
上記の構成により、ネットワーク・ストレージ・サービスにログインする際に、各クライアントが使うべきキャッシュ装置を管理サーバから指定してもらうことができ、このキャッシュ装置を利用することで、クライアント側から見えるデータ保存処理にかかる時間を、短縮することが可能になる。
【0015】
また、データをネットワーク側に保存する(キャッシュ装置に保持させる)のに先立ち、書き込み要求をマスタサーバまで中継して、マスタサーバにてアクセス制御を行うため、複数のクライアントが同一データへの書き込みを試みたとしても、一方のみに許可を出すことにより、競合の制御を行うことが可能になる。
【0016】
上記の管理サーバは、前記ログインの要求に含まれる認証情報に基づいて、ユーザの認証を行う手段と、前記認証に成功した場合に、前記ログインの要求に含まれる前記要求元のクライアント装置を特定する情報が示す該要求元のクライアント装置のネットワーク上の場所に基づき、前記複数のキャッシュ装置の各々の前記要求元のクライアント装置に対するネットワーク上の近さを考慮して、前記複数のキャッシュ装置のうちの少なくとも一つを選択する手段とを備えるものとすることができる。
【0017】
これにより、各クライアントについて近隣のキャッシュ装置を選択して指定することが可能になる。
【0018】
ここで、キャッシュ装置を選択する基準は、「ネットワーク上の近さ」に限られるものではない。例えば、「キャッシュ装置(特にキャッシュサーバ)の負荷や容量」を考慮すれば、空いているキャッシュサーバが選択されるため、クライアントへの応答速度が速くなり、ユーザの体感速度の向上に役立つ。また、「ユーザ名」を考慮することにより、プレミアユーザに対しては優先度を上げて、より速いキャッシュ装置を選択して教えるようにすることも可能である。
【0019】
上記のシステムにおいて、前記キャッシュ装置は、前記マスタサーバに保存されたデータのコピーを少なくとも一時的に保持する手段を有し、前記要求元のクライアント装置は、前記管理サーバから通知された前記キャッシュ装置に対して、前記データの読み込み要求を送信する手段と、前記読み込み要求に対する応答として、前記管理サーバから通知された前記キャッシュ装置より、前記データのコピーを受信する手段とを有するようにしてもよい。
【0020】
これにより、データをネットワーク側から読み込む際にも、各クライアントについて指定されたキャッシュ装置を利用することができ、クライアント側から見えるデータ呼出処理にかかる時間も、短縮することが可能になる。
【0021】
上記のシステムにおいて、前記複数のキャッシュ装置は、前記要求元のクライアント装置と前記マスタサーバとの間に設置されているキャッシュサーバ装置と、前記複数のクライアント装置のうちの前記要求元のクライアント装置を除く他のクライアント装置とを含むものであり、前記管理サーバは、選択されたキャッシュ装置として、前記キャッシュサーバ装置のうちの少なくとも一つ、及び/又は、前記他のクライアント装置のうちの少なくとも一つを、前記要求元のクライアント装置に通知するようにしてもよい。
【0022】
これにより、近隣のキャッシュ装置として、キャッシュサーバだけでなく、キャッシュ機能を有する他のクライアント装置を利用することが可能になり、体感速度を更に向上させるための選択肢を増やすことができる。
【0023】
上記のシステムにおいて、前記要求元のクライアント装置と前記マスタサーバの間に、ネットワークアドレス変換装置(いわゆるNATと呼ばれる装置の他、例えば企業内プロキシサーバのように、アプリケーションゲートウェイでIPアドレスが変換される装置であってもよい)が設けられており、前記ネットワークアドレス変換装置から見て前記マスタサーバ寄りに、キャッシュサーバ装置が設置されており、前記複数のクライアント装置のうちの前記要求元のクライアント装置を除く他のクライアント装置の少なくとも一部は、前記ネットワークアドレス変換装置から見て前記クライアント装置寄りに存在するものであり、前記管理サーバは、前記ログインの要求に含まれる前記要求元のクライアント装置を特定する情報として、該要求元のクライアント装置のローカルアドレスを取得するものであり、選択されたキャッシュ装置として、前記キャッシュサーバ装置のグローバルアドレス、及び/又は、前記他のクライアント装置の前記一部のうちの少なくとも一つのローカルアドレスを、前記要求元のクライアント装置に通知するようにしてもよい。
【0024】
これにより、近隣のキャッシュ装置として、クライアントから見てNATの外側にあるキャッシュサーバだけでなく、NATの内側にある他のクライアント装置を利用することが可能になる。
【0025】
上記のシステムにおいて、前記要求元のクライアント装置は、前記書き込み要求の送信先となるキャッシュ装置として、前記管理サーバから通知された前記キャッシュサーバ装置を用い、前記読み込み要求の送信先となるキャッシュ装置として、前記管理サーバから通知された前記キャッシュサーバ装置及び前記他のクライアント装置を用いるようにしてもよい。
【0026】
これにより、読み込み用のキャッシュ機能は、例えば従来からあるHTTPプロキシ等により実現可能であるが、書き込み用のキャッシュ機能は、書き込み要求をマスタサーバへ向けて中継する等の新たな構成を有するものであるところ、クライアント装置に持たせるキャッシュ機能は、読み込み用のキャッシュ機能だけとしても、近隣のキャッシュ装置の選択肢を増やすことを可能にすることができる。
【0027】
上記の管理サーバは、現在ログインしている複数のクライアント装置の各々のユーザの情報を記憶する手段を有し、前記他のクライアント装置のうちの少なくとも一つを、選択されたキャッシュ装置とする場合、記憶された前記ユーザの情報を参照して、前記要求元のクライアント装置と同一のユーザ又はユーザグループが使用しているクライアント装置を選択するようにしてもよい。
【0028】
これにより、近隣のキャッシュ装置として、データを書き込もうとしているクライアント装置と同一のユーザ又はユーザグループが使用しているクライアント装置を選択することが可能になる。
【0029】
上記のシステムにおいて、前記マスタサーバは、データのインデックス情報を保存する手段を備え、前記キャッシュ装置は、前記要求元のクライアント装置から受信したデータの保持に応じて、前記マスタサーバに対し該データのインデックス情報の更新を要求し、前記マスタサーバが保存する該インデックス情報が、前記データの保持場所が前記キャッシュ装置であることを示すようにする手段を備え、前記データが前記キャッシュ装置から前記マスタサーバへ送信される前に、前記複数のクライアント装置のうちの一つから該データの読み込み要求が送信される場合、前記マスタサーバに保存されている該データのインデックス情報に従って、該読み込み要求の送信先が該データを保持している前記キャッシュ装置になるようにしてもよい。
【0030】
これにより、他のクライアントが、キャッシュ装置に保持されていて未だマスタサーバに保存されていないデータを読み込むことが可能になり、データが読み込み可能になるまでの時間も、短縮することができる。
【0031】
上記のシステムにおいて、前記キャッシュ装置は、保持している前記データを前記マスタサーバへ送信して保存させる際に、前記マスタサーバが保存する該データのインデックス情報が、前記データの保持場所が前記マスタサーバであることを示すように、該インデックス情報の更新を前記マスタサーバに対し要求する手段を備え、前記マスタサーバは、前記キャッシュ装置からの要求に応じて、前記インデックス情報を更新するとともに、前記書き込み要求に対する許可の送信以降禁止していた同一データへの他の書き込み要求に対して、許可を与えることを可能にする手段を備えるようにしてもよい。
【0032】
これにより、データの書き込み処理を完了させ、その書き込み処理中は禁止していた他のクライアントからの同一データへの書き込みを、許可する状態に移行することができる。
【0033】
上記のシステムにおいて、前記マスタサーバは、データのインデックス情報を保存する手段を備え、前記要求元のクライアント装置は、前記マスタサーバに保存されたインデックス情報のコピーを保存する手段を備え、前記キャッシュ装置は、前記インデックス情報のコピーを保持しないように設定されており、前記要求元のクライアント装置から前記インデックス情報のコピーの送信を要求された場合、該インデックス情報のコピーを前記マスタサーバから取得して、前記要求元のクライアント装置へ中継する手段を備えるようにしてもよい。
【0034】
これにより、マスタサーバに保存されている全てのデータ(但し、そのユーザのアクセスが許可されているもの)の、インデックス情報(例えば、ディレクトリ構造と各ディレクトリ中の全てのファイルの名前)については、そのコピーがクライアント装置に保存されることになり、各データの実体がクライアント装置に保持されているか否かに関わらず、クライアント装置において、オフラインでも、インデックス情報を表示してユーザに見せることが可能になる。
【0035】
さらに、上記の要求元のクライアント装置は、保存された前記インデックス情報のコピーを、前記マスタサーバに保存された該インデックス情報の更新に合わせて更新する手段と、更新された前記インデックス情報のコピーに基づいて、ユーザに、書き込み対象となるデータ又は読み込み対象となるデータを指定させる手段と、指定されたデータの実体を少なくとも一時的に自装置内に保持する手段とを備えるようにしてもよい。
【0036】
これにより、クライアント装置において、インデックス情報によりその存在が示されるデータのうちの、ユーザにより指定された一部について、データの実体を保持することが可能になり、そのデータについては、オフラインでも、利用することが可能になる。そして、ユーザから見ると、例えば、ディレクトリ構造と全ファイル名が表示された状態で、読み書きしたいファイルをクリックすれば、そのファイルの実体がクライアント装置に保持されていればそれが、保持されていなければネットワーク側から取得したものが、表示されることになり、リモートかローカルかを意識させないユーザ・インタフェースを提供することが可能になる。しかも、ネットワーク・ストレージであるから、どのクライアント装置を使用しても、ユーザに対して同じインタフェースが提供されることになる。
【0037】
上記のシステムにおいて、前記要求元のクライアント装置は、書き込み対象となるデータ又は読み込み対象となるデータの名前を入力する手段と、前記管理サーバから通知された前記キャッシュ装置に対して送信する書き込み要求又は読み込み要求に、入力された前記名前にバージョン番号を付加した情報を、該要求の対象となるデータを特定する情報として含める手段とを備え、前記名前と前記バージョン番号との組合せにより特定されるデータの内容は、更新されることがないものであるようにしてもよい。
【0038】
このように、データの名前にバージョン番号を付加したものによりデータを特定するようにする(例えば、ファイルのバージョン番号を含めた形式のURLを用いる)と、一旦ファイルのURLを決めたら、そのURLにより取得されるファイルの内容は常に不変であるようにすることができる。そうすると、URLとそのファイル内容との対応が変わらないため、キャッシュ装置(例えば、プロキシサーバ)に、ファイル内容を長時間キャッシュさせることができ、読み込みの体感速度を更に向上することが可能になる。つまり、ファイル内容が変わる場合には、古いファイル内容がキャッシュ装置に残っていることがないように保持時間を調整することが必要になるが、そのような必要をなくすことができるため、キャッシュ装置のストレージ容量に余裕がある限り保持し続けることが可能になる。
【0039】
上記のようにデータの名前にバージョン番号を付加して管理するシステムにおいて、前記マスタサーバが、データのインデックス情報を保存する手段を備え、前記要求元のクライアント装置が、前記マスタサーバに保存されているインデックス情報のコピーを保存する手段を備えるようにし、データを新規に作成するケース(1)のインデックス情報、既存データを更新するケース(2)のインデックス情報、既存データを削除するケース(3)のインデックス情報を、それぞれ下記のように構成してもよい。
【0040】
ケース(1)では、前記書き込み要求を利用して新規データの書き込みを行うため、前記インデックス情報のコピーに示される該データの不存在を確認すると、バージョン番号をゼロとして該データのインデックス情報を新規に作成し、ゼロの次のバージョン番号を、前記書き込み要求の対象となるデータを特定するバージョン番号とする。
【0041】
ケース(2)では、前記書き込み要求を利用して既存データの更新を行うため、前記インデックス情報のコピーに示される該データの現存する最新のバージョン番号から、次のバージョン番号を求めて、該次のバージョン番号を、前記書き込み要求の対象となるデータを特定するバージョン番号とする。
【0042】
ケース(3)では、前記書き込み要求を利用して既存データの削除を行うため、前記インデックス情報のコピーに示される該データの現存する最新のバージョン番号から、次のバージョン番号を求めて、該次のバージョン番号を、前記書き込み要求の対象となるデータを特定するバージョン番号とするとともに、該書き込み要求に該データの状態を削除とする指示を含ませる。
【0043】
上記のようにデータの名前にバージョン番号を付加して管理するシステムにおいては、前記要求元のクライアント装置と前記キャッシュ装置との間に、読み込み専用キャッシュ装置を介在させることができるため、読み込みの体感速度を更に向上することが可能になる。
【0044】
この読み込み専用キャッシュ装置は、前記マスタサーバに保存されたデータのコピーを少なくとも一時的に保持する手段と、前記要求元のクライアント装置から前記キャッシュ装置へ送信される前記データの読み込み要求を中継する手段と、前記データのコピーが保持されている場合には、前記読み込み要求を中継せずに、前記読み込み要求に対する応答として、前記要求元のクライアント装置に対して前記データのコピーを送信する手段とを備えるものとすることができる。
【0045】
上記のシステムにおいて、前記要求元のクライアント装置は、作成した前記データを、該要求元のクライアント装置のユーザの公開鍵、及び/又は、該データの解読を許すユーザの公開鍵を用いて、暗号化してから、送信するものであり、前記複数のキャッシュ装置は、データを暗号化されたまま保持するものであり、前記マスタサーバは、データを暗号化されたまま保存するものであるようにしてもよい。
【0046】
これにより、データは、クライアント側で暗号化され、サーバ側にはその暗号を解くための鍵を持たせない運用が可能になる。よって、サーバ管理者にデータの内容を見られないようにすることができ、サーバ側で情報漏えいが起きても、データ内容の機密性を保つことができる。
【0047】
さらに、SSL等を用いて通信路を暗号化するのでなく、クライアントが暗号化したデータをHTTP等の通信路に入れることができるため、クライアントとマスタサーバの間のプロキシでキャッシュをすることが可能である。
【0048】
また、データの名前にバージョン番号を付加して管理することによりキャッシュ装置で長時間データを保持可能として体感速度を向上させようとすると、広範囲の多数のキャッシュ装置にデータ保持させることによって情報漏えいのリスクが高まる懸念が出てくるが、クライアント側で暗号化されたデータを保持するのであれば、データ内容の機密性を保ちつつ、体感速度の向上が実現できる。
【0049】
なお、公開鍵暗号方式を採用し、公開鍵と秘密鍵のセットをユーザ毎に付与して、同一ユーザが使用する複数のクライアント装置でそのユーザ用の鍵を共有することにより、あるクライアント装置で作成し暗号化したデータを、同一ユーザが使用する別のクライアント装置がネットワーク経由で取得し復号化して利用することも可能になる。
【0050】
上記のシステムにおいて、前記要求元のクライアント装置は、前記管理サーバから通知された前記キャッシュ装置に対して送信する前記書き込み要求及び前記データのそれぞれに、前記要求元のクライアント装置のユーザの秘密鍵を用いて署名を付加する手段を備え、前記キャッシュ装置は、前記要求元のクライアント装置から受信した前記書き込み要求及び前記データのそれぞれに付加された署名を、前記ユーザの公開鍵を用いて検証する手段を備えるようにしてもよい。
【0051】
このように、公開鍵認証方式を用いてユーザ認証を行うことにより、公開鍵という秘密でない情報を用いて認証ができるため、ユーザのパスワード(秘密を保たなければならない情報)をサーバ側に格納しておく必要がなくなり、安全性を高めることが可能になる。
【0052】
本発明に係るクライアント装置は、ストレージ・サービスを提供するためにデータを保存して該データに対するアクセス許否を制御する手段を有する少なくとも一つのマスタサーバと、少なくとも一時的に保持していたデータを前記マスタサーバへ送信して保存させる手段を有する複数のキャッシュ装置と、前記ストレージ・サービスに加入するユーザからのログインを管理する手段を有する管理サーバとが接続されている、ネットワークとの間で、通信を行うための通信手段と、前記ストレージ・サービスの対象となるデータを作成する手段と、前記管理サーバに対し、ログインの要求を送信して、該ログインの成功応答とともに、要求元のクライアント装置用に選択された前記複数のキャッシュ装置のうちの少なくとも一つを特定する情報を受信する手段と、前記管理サーバからの情報により特定される前記キャッシュ装置に対して、前記データの書き込み要求を送信する手段と、前記キャッシュ装置から前記マスタサーバへ中継された前記書き込み要求に対する許可を受信する手段と、前記許可の受信に応じ、前記データを、前記管理サーバからの情報により特定される前記キャッシュ装置へ送信して保持させる手段とを備える。
【0053】
上記のクライアント装置にキャッシュ機能を持たせるため、前記ネットワークに接続される他のクライアント装置から受信した第二の書き込み要求を、前記マスタサーバへ中継する手段と、前記マスタサーバから受信した前記第二の書き込み要求に対する許可を、前記他のクライアント装置へ中継する手段と、前記第二の書き込み要求による書き込みの対象となるデータを、前記他のクライアント装置から受信して、少なくとも一時的に保持する手段と、保持された前記データを前記マスタサーバへ送信して保存させる手段とを更に備えさせてもよい。
【0054】
本発明に係る管理サーバは、ストレージ・サービスの対象となるデータを作成する手段を有する複数のクライアント装置と、前記ストレージ・サービスを提供するためにデータを保存して該データに対するアクセス許否を制御する手段を有する少なくとも一つのマスタサーバと、少なくとも一時的に保持していたデータを前記マスタサーバへ送信して保存させる手段を有する複数のキャッシュ装置とが接続されている、ネットワークとの間で、通信を行うための通信手段と、前記複数のクライアント装置のうちの一つからログインの要求を受け付ける手段と、前記ログインの成功に応じて、前記複数のキャッシュ装置のうちの少なくとも一つを、前記要求元のクライアント装置用のキャッシュ装置として、選択する手段と、前記要求元のクライアント装置が、該装置用のキャッシュ装置に対してデータの書き込み要求を送信することにより前記マスタサーバからの該書き込み要求に対する許可を得て、該装置用のキャッシュ装置に該書き込み要求の対象となるデータを送信して保持させることができるように、選択された前記キャッシュ装置を前記要求元のクライアント装置に通知する手段とを備える。
【0055】
本発明に係るネットワーク・ストレージの方法は、データを保存して該データに対するアクセス許否を制御する手段を有する少なくとも一つのマスタサーバにより提供されるストレージ・サービスの対象となるデータを作成する手段を有する複数のクライアント装置のうちの一つが、管理サーバに対して、ログインの要求を送信し、前記管理サーバは、少なくとも一時的に保持していたデータを前記マスタサーバへ送信して保存させる手段を有する複数のキャッシュ装置に関する情報を記憶しており、前記ログインの要求を受け付けた前記管理サーバは、該ログインの成功に応じ、該要求元のクライアント装置用に前記複数のキャッシュ装置のうちの少なくとも一つを選択して、選択されたキャッシュ装置を前記要求元のクライアント装置に通知し、前記要求元のクライアント装置は、前記管理サーバから通知された前記キャッシュ装置に対して、作成したデータの書き込み要求を送信し、前記キャッシュ装置は、前記クライアント装置から受信した書き込み要求を、前記マスタサーバへ中継し、前記マスタサーバから受信した前記書き込み要求に対する許可を、前記クライアント装置へ中継し、前記要求元のクライアント装置は、前記書き込み要求に対する許可の受信に応じ、前記管理サーバから通知された前記キャッシュ装置に対して、前記書き込み要求の対象となるデータを送信し、前記キャッシュ装置は、前記クライアント装置から受信したデータを少なくとも一時的に保持する。
【0056】
本発明に係る第一のプログラムは、ストレージ・サービスを提供するためにデータを保存して該データに対するアクセス許否を制御する手段を有する少なくとも一つのマスタサーバと、少なくとも一時的に保持していたデータを前記マスタサーバへ送信して保存させる手段を有する複数のキャッシュ装置と、前記ストレージ・サービスに加入するユーザからのログインを管理する手段を有する管理サーバとが接続されている、ネットワークとの間で、通信を行うことのできるコンピュータを、前記ストレージ・サービスの対象となるデータを作成する手段と、前記管理サーバに対し、ログインの要求を送信して、該ログインの成功応答とともに、要求元のクライアント装置用に選択された前記複数のキャッシュ装置のうちの少なくとも一つを特定する情報を受信する手段と、前記管理サーバからの情報により特定される前記キャッシュ装置に対して、前記データの書き込み要求を送信する手段と、前記キャッシュ装置から前記マスタサーバへ中継された前記書き込み要求に対する許可を受信する手段と、前記許可の受信に応じ、前記データを、前記管理サーバからの情報により特定される前記キャッシュ装置へ送信して保持させる手段とを備えるクライアント装置として動作させる。
【0057】
本発明に係る第二のプログラムは、ストレージ・サービスの対象となるデータを作成する手段を有する複数のクライアント装置と、前記ストレージ・サービスを提供するためにデータを保存して該データに対するアクセス許否を制御する手段を有する少なくとも一つのマスタサーバと、少なくとも一時的に保持していたデータを前記マスタサーバへ送信して保存させる手段を有する複数のキャッシュ装置とが接続されている、ネットワークとの間で、通信を行うことのできるコンピュータを、前記複数のクライアント装置のうちの一つからログインの要求を受け付ける手段と、前記ログインの成功に応じて、前記複数のキャッシュ装置のうちの少なくとも一つを、前記要求元のクライアント装置用のキャッシュ装置として、選択する手段と、前記要求元のクライアント装置が、該装置用のキャッシュ装置に対してデータの書き込み要求を送信することにより前記マスタサーバからの該書き込み要求に対する許可を得て、該装置用のキャッシュ装置に該書き込み要求の対象となるデータを送信して保持させることができるように、選択された前記キャッシュ装置を前記要求元のクライアント装置に通知する手段とを備える管理サーバとして動作させる。
【0058】
なお、上述したネットワーク・ストレージ・システム、方法、クライアント装置、管理サーバ、及びプログラム(又はそのプログラムを記録した記録媒体)の発明はいずれも、他のカテゴリの発明としても、勿論成立するものである。また、キャッシュ装置としての発明も、含まれている。
【発明の効果】
【0059】
以上のとおり、本発明によれば、ネットワーク・ストレージ・サービスにおいて、データの読み書きの際のユーザの体感速度を向上させ、使い勝手の良いサービスを提供することが可能になる。
【図面の簡単な説明】
【0060】
【図1】本発明の実施形態に係るネットワーク・ストレージ・システムを含む全体構成の一例を示す図
【図2】本システムにおけるサーバ選択に係る動作シーケンスの一例を示す図
【図3】本システムにおけるファイル作成(データ書き込みの一種)要求に係る動作シーケンスの一例を示す図
【図4】本システムにおけるファイル更新(データ書き込みの一種)要求に係る動作シーケンスの一例を示す図
【図5】本システムにおけるファイル削除(データ書き込みの一種)要求に係る動作シーケンスの一例を示す図
【図6】本システムにおけるアカウント管理サーバの内部構成の一例を示す図
【図7】本システムにおけるクライアントの内部構成の一例を示す図
【図8】本システムにおける読み書き対応キャッシュサーバの内部構成の一例を示す図
【図9】本システムにおけるマスタサーバの内部構成の一例を示す図
【図10】アカウント管理サーバ、読み書き対応キャッシュサーバ、マスタサーバが有する公開鍵テーブルの一例を示す図
【図11】アカウント管理サーバが有する(a)ユーザ接続管理テーブル、(b)キャッシュサーバ管理テーブルの一例を示す図
【図12】クライアントが有する(a)インデックス情報テーブル、(b)接続先サーバ管理テーブルの一例を示す図
【図13】読み書き対応キャッシュサーバが有する(a)認証テーブル、(b)上流サーバ管理テーブルの一例を示す図
【図14】マスタサーバが有するインデックス情報テーブルの一例を示す図
【図15】アカウント管理サーバによるログイン処理の一例を示すフローチャート
【図16】クライアントによるログイン処理の一例を示すフローチャート
【図17】クライアントによるインデックス情報の同期処理の一例を示すフローチャート
【図18】クライアントによるファイル取得(データ読み込み)処理の一例を示すフローチャート
【図19】図18におけるサーバ間通信管理部のファイル取得処理の一例を示すフローチャート
【図20】クライアントによるファイル作成処理の一例を示すフローチャート
【図21】図20におけるサーバ間通信管理部のファイル作成処理の一例を示すフローチャート
【図22】クライアントによるファイル更新処理の一例を示すフローチャート
【図23】図22におけるサーバ間通信管理部のファイル更新処理の一例を示すフローチャート
【図24】クライアントによるファイル削除処理の一例を示すフローチャート
【図25】図24におけるサーバ間通信管理部のファイル削除処理の一例を示すフローチャート
【図26】読み書き対応キャッシュサーバによるインデックス取得要求処理の一例と、ファイル取得要求(読み込み要求)処理の一例を示すフローチャート
【図27】読み書き対応キャッシュサーバによるファイル作成・更新要求処理の一例と、ファイル登録要求処理の一例を示すフローチャート
【図28】図27のファイル登録要求処理のうちインデックス更新・サーバアップロード・署名検証の詳細処理の一例と、読み書き対応キャッシュサーバによるファイル削除要求処理の一例を示すフローチャート
【図29】マスタサーバによるインデックス取得要求処理の一例と、ファイル取得要求(読み込み要求)処理の一例を示すフローチャート
【図30】マスタサーバによるファイル作成要求処理の一例を示すフローチャート
【図31】マスタサーバによるファイル登録要求処理の一例を示すフローチャート
【図32】マスタサーバによるファイル更新要求処理の一例を示すフローチャート
【図33】マスタサーバによるインデックス更新要求処理の一例を示すフローチャート
【図34】マスタサーバによるファイル削除要求処理の一例を示すフローチャート
【発明を実施するための形態】
【0061】
以下、図面を参照して、本発明の一実施形態に係るネットワーク・ストレージ・システムを説明する。図1は、本システムを含む全体構成を示す図である。
【0062】
図1の例では、説明のため、組織Dに属するユーザ5がクライアント5−1及び5−2を使用し、同じく組織Dに属するユーザ6がクライアント6−1を使用し、組織Eに属するユーザ8がクライアント8−1を使用し、組織Fに属するユーザ9がクライアント9−1及び9−2を使用するものとする。実際のシステムでは、各組織の多数のユーザがそれぞれ任意の数の機器を使用できることは勿論である。また、例えば、組織Dと組織E又は組織Fとが同じ企業に属するものであってもよい。
【0063】
これらのクライアントは、ネットワークを介して、アカウント管理サーバ1、マスタサーバ2(マスタサーバ群Aを形成する)、読み書き対応キャッシュサーバ3−1、3−2(読み書き対応キャッシュサーバ群Bを形成する)、読み込み用キャッシュサーバ4−1、4−2(読み込み用キャッシュサーバ群Cを形成する)に接続することが可能である。各クライアントはまた、自身が接続する組織内のLANもしくはその他の通信手段を介して、他のクライアントに接続することも可能である。
【0064】
アカウント管理サーバ1及びサーバ群A、B、Cは、いわゆるクラウドを形成するサーバ群とすることができ、これらはそれぞれ、大規模なデータセンタであってもよいし、一つのサーバであってもよい。少なくともキャッシュサーバ群B、Cは、複数拠点に分散して配置されることが望ましい。サーバ群A、B、Cは、ファイルもしくはメッセージ等、どのような形式のデータを扱うものでも、本実施形態が適用可能である。
【0065】
また、これらのサーバ群とクライアントとの間にNATルータ7、10が存在して、組織内LANにおけるローカルIPアドレスと、広域ネットワークにおけるグローバルIPアドレスとの間のアドレス変換を行うようにしてもよい。
【0066】
ネットワークは、パブリッククラウドの場合は典型的にはインターネットであり、プライベートクラウドの場合は企業内ネットワークでもよい。各クライアントで作成されたデータはマスタサーバ2に保存され、ユーザはサーバ上のデータを読み書きすることになるため、同一ユーザが複数のクライアントを持ち、あるクライアントで作成したデータを別のクライアントで利用することが簡単にできる。クライアント内にデータを残さないようにすれば、セキュリティ上も利点がある。
【0067】
クライアント5−1、5−2、6−1、8−1、9−1、9−2は、一般的なクライアントコンピュータ(パソコン、PDA、スマートフォン等)で構成でき、ファイル共有サービスを利用するためのソフトウェアが導入された端末である。この端末は、図7に示すように、ファイル管理部、ファイル格納部、サーバ間通信管理部、ユーザインタフェース処理部、インデックス同期処理部、暗号処理部、接続管理部を備える。
【0068】
各クライアントは、自身のユーザ名を保持する。ユーザ名は、使用ユーザを一意に識別するためのアカウント名であり、アカウント管理サーバ1により管理されるものである。メールアドレスなどを用いてユーザ名としてもよい。
【0069】
各クライアントはまた、自身のユーザ公開鍵とユーザ秘密鍵を保持する(図7における公開鍵管理テーブルと秘密鍵管理テーブル)。これらは、ユーザを識別し、認証するために用いるものであり、ユーザ秘密鍵は、ユーザが使用するクライアントにのみ保持される。ユーザ公開鍵は、ユーザが使用するクライアントに保持される他、アカウント管理サーバや、マスタサーバ、読み書き対応キャッシュサーバ内にも保持される。
【0070】
各クライアントはさらに、図12(a)に示すインデックス情報テーブルと、図12(b)に示す接続先サーバ管理テーブルとを備える。
【0071】
アカウント管理サーバ1は、ユーザのログイン時の認証処理を行うサーバであり、接続してきたクライアントに対し、近隣のサーバおよびクライアントのリストを提示する役割を持ってもよい。アカウント管理サーバ1は、一般的なサーバコンピュータで構成でき、図6に示すように、認証管理部、近隣サーバ管理部、近隣クライアント管理部を備える。
【0072】
アカウント管理サーバ1はまた、図10に示す公開鍵管理テーブルと、図11(a)に示すユーザ接続管理テーブルと、図11(b)に示すキャッシュサーバ管理テーブルとを備える。
【0073】
図10の公開鍵管理テーブルは、本システムを利用する全てのユーザのユーザ名と、それに対応するユーザの公開鍵を保持するものであり、読み書き対応キャッシュサーバ3−1、3−2と、マスタサーバ2にも、同じ内容の公開鍵管理テーブルが保持される。各サーバの公開鍵管理テーブルは、同期処理を随時行って同じ内容が保持されるようにするが、マスタは、アカウント管理サーバ内に保持される。
【0074】
図11(a)のユーザ接続管理テーブルは、ログインに成功したユーザのログイン要求から得られる情報を記憶しておくためのものであり、ログアウトしたユーザの情報は消去される。最終確認日時を一緒に記憶しておき、一定期間より古いものは、近隣クライアントの選択対象から除くようにしてもよい。
【0075】
図11(b)のキャッシュサーバ管理テーブルは、各クライアントについて近隣の読み書き対応キャッシュサーバを特定する情報を登録しておくためのものであり、本システムの管理者ないしアカウント管理サーバの管理者により作成されてもよいし、外部のサーバから情報を取得して登録するようにしてもよい。ネットワーク的に近いかどうか、の判断は、ネットワークのルーティング構成情報や定期的な品質測定結果などを用いて行ってもよい。
【0076】
これらの管理テーブルを用いて、アカウント管理サーバ1は、クライアントからのログイン要求を受け入れる際に、クライアントのIPアドレスをもとに、ネットワーク的に近い近隣クライアントやキャッシュサーバのリストを生成する。そして、クライアントに、ログイン成功応答とともに、接続先クライアントリストと接続先サーバリストを返送する。
【0077】
マスタサーバ2は、ファイル共有サービスを提供するサーバであり、ユーザの送信したファイルを保持し、管理する。マスタサーバ2は、一般的なサーバコンピュータで構成でき、図9に示すように、リクエスト処理部、ファイル管理部、ファイル格納部、インデックス管理部、認証処理部を備える。
【0078】
マスタサーバ2のファイル格納部は、ユーザから受信したファイルの本体を保持するものであり、このファイルがマスタとなる。クライアントのファイル格納部に格納されるファイルは、一旦マスタサーバ2に格納された後はコピーとなる。
【0079】
マスタサーバ2はまた、図10の公開鍵管理テーブルと、図14に示すインデックス情報テーブルとを備える。マスタサーバの持つインデックス情報テーブル(図14)がマスタであり、クライアントの持つインデックス情報テーブル(図12(a))は、マスタの一部のコピーであって、マスタに同期するものである。
【0080】
読み書き対応キャッシュサーバ3−1、3−2は、クライアントに対し、キャッシュ機能を提供するサーバであり、クライアントからの読み込み要求と、書き込み要求をキャッシュする。各読み書き対応キャッシュサーバ3は、一般的なサーバコンピュータで構成でき、図8に示すように、読み書きキャッシュ処理部、ファイルキャッシュ部、認証処理部を備える。
【0081】
各読み書き対応キャッシュサーバ3はまた、図10の公開鍵管理テーブルと、図13(a)に示す認証テーブルと、図13(b)に示す上流サーバ管理テーブルとを備える。
【0082】
読み込み用キャッシュサーバ4−1、4−2は、クライアントに対し、キャッシュ機能を提供するサーバであり、クライアントからの読み込み要求をキャッシュする。読み込み用キャッシュサーバは、本システムに存在してもしなくてもよく、存在させる場合は、IETF(Internet Engineering Task Force)のRFC2616に基づいて、一般的なHTTP(Hypertext Transfer Protocol)プロキシの動作を行うサーバとすればよい。
【0083】
上記のクライアント及びサーバの各部の機能については、以下に詳述するが、汎用コンピュータにソフトウェアプログラムをインストールすることにより実装されてもよいし、機能の一部又は全部を専用ハードウェア化して実装してもよい。
【0084】
図2は、本システムにおけるサーバ選択に係る動作シーケンスの一例を示す。本システムの利用に先立ち、各クライアントは、アカウント管理サーバに対してログイン要求101を送信する。ログイン要求101には、「ユーザ名」と「パスワードあるいは署名」とが含まれる。なお、署名を作成する場合は、ユーザ名に対して、そのクライアントの保持するユーザ秘密鍵を用いて作成する。署名は公開鍵暗号を用いて作成する。
【0085】
ログイン要求101にはまた、アカウント管理サーバで近隣サーバ及び近隣クライアントを選択するために用いる「ローカルIPアドレス」と「ローカルサブネットマスク」とが含まれる。
【0086】
アカウント管理サーバは、クライアントからログイン要求101を受信すると、クライアント認証102を行い、ログイン要求の受け入れ可否を判断する。
【0087】
ログイン要求に署名を含む場合、はじめに、公開鍵管理テーブルより「ユーザ名」をキーとしてユーザ公開鍵証明書(ユーザ公開鍵)を取得する。次に、取得したユーザ公開鍵を用いて、署名の検証を行う。署名の検証に成功した場合は、ログインを許可する。検証に失敗した場合は、ログインを拒否する。
【0088】
ログイン要求にパスワードを含む場合、公開鍵管理テーブルより「ユーザ名」をキーとして「パスワード」を取得する。そして、パスワードの比較を行い、ログイン可否を判断する。
【0089】
ログインを許可する場合は、接続先サーバ選択103に進む。ログインを拒否する場合は、クライアントに対してエラー応答を送信し、処理を中断する。
【0090】
アカウント管理サーバは、接続先サーバ選択103として、クライアントの「ローカルIPアドレス」、「ローカルサブネットマスク」(ログイン要求に含まれる)と「グローバルIPアドレス」(ログイン要求のIPパケットヘッダより取得される)とをもとに、近隣のクライアント一覧と、近隣のキャッシュサーバの一覧を取得する。
【0091】
近隣クライアントの一覧は、図11(a)のユーザ接続管理テーブルを検索することにより、取得する。ユーザ接続管理テーブルから、接続クライアントと同一ユーザ名を持ち、接続クライアントの「グローバルIPアドレス」が一致し、さらに、接続クライアントの「ローカルIPアドレス」および「ローカルサブネットマスク」のアドレス空間と同じローカルIPアドレスを持つユーザを検索する。これで検索されたエントリのリストを、近隣クライアント一覧とする。
【0092】
近隣サーバの一覧は、図11(b)のキャッシュサーバ管理テーブルを検索することにより、取得する。接続クライアントのグローバルIPアドレスと、キャシュサーバ管理テーブルのクライアントIPアドレス及びサブネットマスク長が一致する項目を検索する。これにより、クライアントから近いサーバのリストを取得することができる。
【0093】
アカウント管理サーバは、その後、ログイン要求を送ってきたクライアントへ、成功応答104を返送する。その際、近隣クライアントと近隣サーバのリストを、それぞれ、「接続先クライアントリスト」、「接続先サーバリスト」として、成功応答に含める。
【0094】
クライアントは、ログインに成功すると、定期的にインデックス取得要求105を接続先サーバに対して送信する。ここで、インデックス取得要求を送信する相手方は、ログイン時に取得した接続先サーバである。
【0095】
このとき、インデックス取得要求が送信される相手方となる接続先サーバは、読み書き対応キャッシュサーバか、または、マスタサーバのいずれかになる。読み書き対応キャッシュサーバは、クライアントに対しては自身がマスタサーバであるかのように振る舞う。このため、クライアントは接続先サーバがキャッシュサーバであるか、またはマスタサーバであるかは特に意識しない。また、接続先サーバとして読み込み用キャッシュサーバが指定されていてもよい。
【0096】
また、インデックスを取得する際にユーザの認証を行うこととしてもよい。その場合、クライアントは、インデックス取得要求105に、ユーザ名と署名とを含める。インデックスの一部を取得したい場合、ディレクトリのファイル識別子を含めてもよい。
【0097】
近隣読み書き対応キャッシュサーバ(以下、読み書き対応キャッシュサーバ)がインデックス取得要求105を受信すると、マスタサーバに対して、直ちに同じインデックス取得要求106を送信する。このとき、読み書き対応キャッシュサーバは、マスタサーバに対しては自身がクライアントであるかのように振る舞う。
【0098】
また、インデックスの取得にあたりユーザの認証が必要な場合、ここでマスタサーバに送信するユーザ名や署名などの情報は、クライアントから受信したものをそのままマスタサーバに送信する。読み書き対応キャッシュサーバはこの段階で認証の処理を行ってもよい。認証の処理を行う場合には、クライアントから受信した署名を検証する。検証に成功すればアクセスを許可しマスタサーバにリクエストを送信する。検証に失敗すればアクセスを拒否しクライアントへエラー応答を返送する。
【0099】
マスタサーバは、インデックス取得要求106を受け、ユーザの認証が必要かどうかを確認する。ユーザの認証が必要な場合は、はじめに、インデックス取得要求106に含まれる署名を検証する。検証に失敗すればエラー応答を送信する。検証に成功した場合、次に、取得対象のインデックスにユーザがアクセスすることができるかどうかを検証する。具体的には、マスタサーバのインデックス情報テーブル(図14)の「ファイル所有者」の項目を確認し、インデックス取得要求106に含まれるユーザ名と一致するかどうかを確認する。一致する場合は正当な要求として扱う。一致しない場合はエラー応答を返送する。
【0100】
その後、マスタサーバは、インデックス情報テーブルの内容(インデックス)を、インデックス取得応答107に含めて、読み書き対応キャッシュサーバに返送する。
【0101】
読み書き対応キャッシュサーバは、クライアントに対してインデックス取得応答108を返送する。インデックス取得応答108には、マスタサーバより受信したインデックス取得応答107に含まれていたインデックスを含ませる。このとき、読み書き対応キャッシュサーバはクライアントに対しては、自身がマスタサーバであるかのように振る舞う。
【0102】
クライアントは、インデックスを取得したあと、取得したいファイルをファイル識別子に指定して、読み込み要求(ファイル取得要求ともいう)を送信する。クライアントは、接続先クライアントと接続先サーバの双方に対して並行に要求を送信することができる。読み込み要求109は、接続先クライアント(近隣クライアント)に要求を送信する場合の例であり、読み込み要求111は、接続先サーバ(近隣読み書き対応キャッシュサーバ)に要求を送信する場合の例である。
【0103】
ここで、ファイル識別子は、特定のバージョンのファイルまたはディレクトリを一意に指し示すための名前(ID)である。ファイル名またはディレクトリ名と、バージョン番号を連結することで作成することができる。
【0104】
近隣クライアントは、読み込み要求109を受信した際、自身がファイル識別子で指定されたファイルを保持している場合、要求元に成功応答110を返すとともに、ファイルの本体を返送する。
【0105】
近隣クライアントは、自身がファイルを保持していない場合、エラー応答を返してもよい。もしくは、自身がキャッシュサーバ(プロキシ)となってマスタサーバにファイル取得要求を中継してもよい。
【0106】
読み書き対応キャッシュサーバは、読み込み要求111を受信した際、自身がファイル識別子で指定されたファイルを保持している場合、要求元に成功応答とともにファイルの本体を返送する。自身がファイルを保持していない場合、マスタサーバに読み込み要求を中継する。この際、インデックス取得要求等の場合と同様に、マスタサーバに対して自身がクライアントとして読み込み要求112を送信する動作(プロキシ動作)を行う。
【0107】
マスタサーバは、読み書き対応キャッシュサーバに対して成功応答113を返送する。成功応答113には、ファイルの本体を含む。
【0108】
マスタサーバからの成功応答113を受信した読み書き対応キャッシュサーバは、クライアントに対して同じファイルの本体を含む成功応答114を返送する。この際、クライアントに対して自身がマスタサーバであるかのように振る舞う(プロキシ動作を行う)。
【0109】
クライアントは、読み込み要求109と読み込み要求111の両方を送信する場合、先に成功応答が返ってきた方を採用する。つまり、クライアントは、ログイン時に受け取った接続先のリストをもとに、並列に読み込み要求を送信してもよい。その場合、もっとも早く取得できた方の応答を採用する。
【0110】
図3は、本システムにおけるファイル作成要求に係る動作シーケンスの一例を示す。各クライアントは、ファイルの新規作成を行う際に、自身の近隣読み書き対応キャッシュサーバ(以下、読み書き対応キャッシュサーバ)に対し、ファイル作成要求201を送信する。
【0111】
ファイル作成要求201には、ユーザ名とファイル識別子と署名とを含める。署名は、ユーザ秘密鍵を用いて公開鍵暗号を行うことにより作成する。具体的には、「ユーザ名」と「ファイル識別子」を結合した文字列を作成し、この文字列に対して公開鍵暗号を適用し、署名とする。
【0112】
このようにして作成したファイル作成要求201を、読み書き対応キャッシュサーバが受信した場合は、マスタサーバに対して要求を中継する。すなわち、読み書き対応キャッシュサーバは、マスタサーバに対しては、自身がクライアントであるかのように振る舞い、ファイル作成要求202を送信する(HTTPプロキシとしての動作を行う)。
【0113】
ファイル作成要求202を受信したマスタサーバは、認証とアクセス制限確認203を行う。すなわち、署名を検証した後に、ファイルのアクセス権限を確認する。いずれも問題なければ、該当のファイルをロックする。
【0114】
そして、マスタサーバは、要求元に対して成功応答204を返す。成功応答204には、ファイル識別子とユーザ名とが含まれる。成功応答204は、クライアント内で新規作成されたファイルをマスタサーバに登録することを許可するという作成許可を表す。
【0115】
成功応答204を受信した読み書き対応キャッシュサーバは、認証情報の保存205を行う。すなわち、成功応答204に含まれるファイル識別子とユーザ名とを、図13(a)の認証テーブルに保存する。
【0116】
読み書き対応キャッシュサーバは、認証情報を保存した後、成功応答206をクライアントに中継する。ここでは、読み書き対応キャッシュサーバは、クライアントに対しては、自身がマスタサーバであるかのように振る舞い、成功応答206を送信する(HTTPプロキシとしての動作を行う)。
【0117】
クライアントは、自身の中で新規作成されたファイルの本体を登録するために、ファイル登録要求207を送信する。ファイル登録要求207には、ユーザ名とファイル識別子とファイル本体と署名とを含める。
【0118】
読み書き対応キャッシュサーバは、まず、ファイル登録要求207に含まれる署名を検証し、問題なければ、認証208を行う。すなわち、図13(a)の認証テーブルを確認し、ファイル登録要求207に含まれるユーザ名とファイル識別子が一致する項目が存在するかどうかを確認する。存在する場合、正しい要求とみなして、ファイル登録要求207に含まれるファイル本体を、自身のファイルキャッシュ部にキャッシュする。
【0119】
キャッシュできた場合、読み書き対応キャッシュサーバは、クライアントに対して成功応答209を返送する。
【0120】
キャッシュできた場合、読み書き対応キャッシュサーバはさらに、マスタサーバに対してインデックス更新要求210を送信する。これは、自身がファイルを保持していることを通知するためであり、インデックス更新要求210には、キャッシュされたファイルのファイル識別子を含ませる。
【0121】
マスタサーバは、インデックス更新要求210を受けて、インデックス更新処理211を行う。すなわち、インデックス更新要求210に含まれるファイル識別子に関して、図14のインデックス情報テーブルを更新する。このとき、ファイル識別子で指定されたファイルの「ファイル保持ホスト」として、インデックス更新要求210を送ってきた読み書き対応キャッシュサーバのIPアドレスを設定する。
【0122】
これにより、クライアントからのファイル登録要求に含まれるファイル本体が、読み書き対応キャッシュサーバには保持されているが、マスタサーバには未だ保持されていないという状態では、そのファイルのマスタは、マスタサーバではなくその読み書き対応キャッシュサーバが持っていることになるので、各クライアントからのそのファイルに対する読み込み要求は、そのファイルをマスタとして有している読み書き対応キャッシュサーバに到達することになる。
【0123】
マスタサーバは、インデックス更新処理211の後、成功応答212を読み書き対応キャッシュサーバに送信する。
【0124】
読み書き対応キャッシュサーバは、その後の任意のタイミングで、ファイル登録要求207を受けて自身にキャッシュしたファイル本体を含むファイル登録要求213を、マスタサーバに送信する。
【0125】
マスタサーバは、ファイル登録要求213を受けると、署名を検証し、問題なければ、ファイル登録処理214を行う。すなわち、ファイル登録要求213に含まれるファイル本体を格納し、図14のインデックス情報テーブルを更新する(該当のファイルの「ファイル保持ホスト」をマスタサーバに書き換え、ロックを解除する)。
【0126】
マスタサーバは、その後、読み書き対応キャッシュサーバに対して、成功応答215を返送する。
【0127】
図4は、本システムにおけるファイル更新要求に係る動作シーケンスの一例を示す。各クライアントは、読み込んだファイルを編集して更新する際に、自身の近隣読み書き対応キャッシュサーバ(以下、読み書き対応キャッシュサーバ)に対し、ファイル更新要求301を送信する。「ファイル作成」の代わりに「ファイル更新」となる点を除き、手順は図3と同様である。ファイル登録要求307には、クライアントの中で更新されたファイルの本体が含まれ、これが読み書き対応キャッシュサーバでキャッシュされて、マスタサーバに登録される。
【0128】
図5は、本システムにおけるファイル削除要求に係る動作シーケンスの一例を示す。各クライアントは、自身の接続先サーバ(近隣読み書き対応キャッシュサーバ)に対して、ファイル削除要求401を送信する。
【0129】
読み書き対応キャッシュサーバは、ファイル削除要求401を中継する。すなわち、マスタサーバに対しては、自身がクライアントであるかのように振る舞って、ファイル削除要求402を送信するHTTPプロキシ動作を行う。
【0130】
ファイル削除要求402を受信したマスタサーバは、認証とアクセス制限確認403を行う。すなわち、署名を検証した後に、ファイルのアクセス権限を確認する。問題があればエラー応答を返送する。
【0131】
問題がなければ、マスタサーバは、ファイル削除処理404として、該当のファイルを削除し、図14のインデックス情報テーブルを更新する。
【0132】
そして、マスタサーバは、成功応答405を読み書き対応キャッシュサーバに返送する。成功応答405は、マスタサーバにおけるファイルの削除が完了したことを表す。
【0133】
成功応答405を受信した読み書き対応キャッシュサーバは、その内容を成功応答406として、クライアントに対して送信(中継)する。つまり、クライアントに対して、自身がマスタサーバであるかのように振る舞う(HTTPプロキシとしての動作を行う)。
【0134】
なお、クライアントに、上述した読み書き対応キャッシュサーバの機能を持たせるように実装することも可能であり、その場合、クライアントは、自身の近隣クライアントを、上記の近隣読み書き対応キャッシュサーバとして扱って、動作することも可能である。
【0135】
以下には、図15〜図34のフローチャートを参照して、上述した動作を装置毎に詳細に説明する。図中に、図2〜図5で説明したメッセージや処理の番号との対応を示してある。
【0136】
図15は、アカウント管理サーバによるログイン処理(1500)の一例を示す。アカウント管理サーバの認証管理部は、クライアントから「ログイン要求」を受信すると、そのメッセージに含まれる「ユーザ名」「パスワードあるいは署名」「グローバルIPアドレス」「ローカルIPアドレス」「ローカルサブネットマスク」を取得する(1510)。
【0137】
そして、公開鍵管理テーブルより「ユーザ名」をキーにして公開鍵証明書を取得し(1520)、署名に対して、公開鍵を用いた公開鍵暗号を適用することにより、署名を検証する(1530)。クライアントからのログイン要求にパスワードが含まれた場合には、公開鍵管理テーブルのパスワードと比較する。
【0138】
認証に成功した場合には、アカウント管理サーバは、近隣クライアント管理部により、クライアントの近隣にいるクライアントを検索する(1540)。具体的には、ユーザ接続管理テーブルから、接続クライアントと同一ユーザ名を持ち、接続クライアントの「グローバルIPアドレス」が一致し、さらに、接続クライアントの「ローカルIPアドレス」および「ローカルサブネットマスク」のアドレス空間と同じローカルIPアドレスを持つユーザを検索する(1542)。このリストを近隣クライアント一覧とする。
【0139】
より具体的には、(A)ユーザ名が一致する項目を抽出、(B)グローバルIPアドレスが一致する項目を抽出、(C)各項目について、ローカルIPアドレスとネットマスク長から、ネットワークアドレスを計算し、新規接続クライアントのネットワークアドレスと比較し、一致する項目を抽出、(D)上記A,B,C全てに一致する項目を抽出、という手順を行えばよい。
【0140】
近隣クライアント管理部はさらに、ユーザ接続管理テーブルに、接続クライアントのユーザ名、グローバルIPアドレス、ローカルIPアドレス、ローカルのサブネットマスクを記録する(1544)。
【0141】
アカウント管理サーバはさらに、近隣サーバ管理部により、キャッシュサーバ管理テーブルを検索し、近隣サーバ一覧を作成する(1560)。具体的には、接続クライアントのグローバルIPアドレスと、キャシュサーバ管理テーブルのクライアントIPアドレス及びサブネットマスクが一致する項目を検索する(1562)。これにより、クライアントから近いサーバリストを取得することができる。ユーザ毎に接続サーバを変更したい場合には、接続クライアントのユーザ名と同一の項目を取得することもできる。
【0142】
より具体的には、(E)各項目について、「クライアントIPアドレス」の項目とサブネットマスクの項目から、IPアドレスの範囲を計算し、(F)新規接続クライアントのIPアドレスと、上記Eで計算したIPアドレスの範囲を比較し、一致する項目を抽出するという手順を行えばよい。例えば、「クライアントIPアドレス」が203.0.113.0、サブネットマスクが255.255.255.0のとき、IPアドレスの範囲は203.0.113.0〜203.0.113.255となる。
【0143】
アカウント管理サーバは、近隣クライアント一覧と近隣サーバ一覧をクライアントに成功応答として返す(1580)。
【0144】
図16は、クライアントによるログイン処理(1600)の一例を示す。クライアントは、ユーザインタフェース処理部を介してユーザの指示を受け、アカウント管理サーバにログインする。まず、暗号処理部(1620)において、秘密鍵管理テーブルから秘密鍵を取得し、公開鍵管理テーブルから、自身の公開鍵を取得する(1622)。
【0145】
次に、クライアント自身のIPアドレス及びサブネットマスクを取得し(1640)、暗号処理部(1650)において、ローカルIPアドレス、サブネットマスク、ユーザ名を、秘密鍵を用いて署名する(1652〜1656)。そして、アカウント管理サーバにログイン要求を送信する(1670)。このとき、署名ではなく、パスワードを用いて認証してもよい。
【0146】
アカウント管理サーバから成功応答が返ってくると、その成功応答に含まれる近隣クライアント一覧と近隣サーバ一覧を、図12(b)の接続先サーバ管理テーブルに記入する(1680、1690)。
【0147】
図17は、クライアントによるインデックス情報の同期処理(1700)の一例を示す。本システムでは、クライアントは、ファイルのインデックスをサーバから取得する。ログイン直後や定期的に取得することにより、サーバとクライアントのインデックス情報を同期する。サーバからの変更通知があった場合に、インデックス情報を取得するようにしてもよい。
【0148】
クライアントは、サーバ間通信管理部により、インデックス取得処理を行う(1720)。まず、図12(b)の接続先サーバ管理テーブルより、サーバおよび近隣クライアントのIPアドレスを取得する(1722)。このIPアドレス宛にインデックス取得要求を送信する(1724)。送信方法は、IPアドレスが複数ある場合、順番に送信してもよいし、一斉に送信し、応答があったサーバ/クライアントの応答結果を採用してもよい。
【0149】
クライアントは、サーバからのインデックス取得応答に含まれるインデックスを、図12(a)のインデックス情報テーブルに保存する(1740)。
【0150】
クライアントはさらに、インデックス情報テーブルとクライアント内に保存されているファイルを比較し、ファイルの更新がある場合には、インデックス同期処理部により、ファイルの更新処理を行う(1760)。
【0151】
図18は、クライアントによるファイル取得処理(1800)の一例を示す。本システムでは、クライアントは、ファイルの更新処理をする場合も、サーバにファイル取得要求を出し、最新のファイルを取得する。
【0152】
クライアントは、ユーザインタフェース処理部を介してユーザの指示を受け、取得対象のファイルを特定する情報を取得する(1810)。そして、ファイル管理部により、ファイル取得処理を行う(1820)。
【0153】
具体的には、インデック情報テーブルから該当のファイル情報を取得し(1830)、クライアント自身のファイル格納部に存在するファイルを確認し、最新ファイルが存在するかを確認する(1840)。最新ファイルが存在しない場合には、サーバ間通信管理部により、ファイル取得処理を行う(1850)。
【0154】
サーバ間通信管理部によるファイル取得処理(1850)の一例が、図19に示されている。ここでは、図12(a)のインデックス情報テーブルより、ファイルのパス名、バージョン番号、ファイル保持ホストを取得し(1852)、図12(b)の接続先サーバ管理テーブルより、接続先サーバのIPアドレス一覧を取得する(1854)。そして、接続先サーバとファイル保持ホストに、ファイル取得要求を送信する(1856)。
【0155】
ファイル取得要求に含ませるファイル識別子は、該当ファイルのパス名とバージョン番号から生成する。例えば、対象がファイルの場合、パス名を「/user1/share/example.txt」、バージョン番号を「1」とすると、ファイル識別子を「/user1/share/example.txt/1」とすればよい。対象がディレクトリの場合は、パス名を「/user1/share/example_dir/」、バージョン番号を「10」とすると、ファイル識別子を「/user1/share/example_dir/10/」とすればよい。
【0156】
なお、複数のサーバに対して要求を送信する場合、並列に送信して最も早く帰ってきた結果を採用するとよい。これは、以下に説明する他の要求に関しても同様である。
【0157】
クライアントのファイル管理部は、ファイル取得応答が返信された場合には、そこに含まれるファイルを保存する(1880)。このファイルは、暗号化されているため、暗号化処理部のファイル復号処理を行い、ファイルの内容を復号する(1870)。
【0158】
図18は、クライアントによるファイル作成処理(2000)の一例を示す。クライアントでファイルが新規作成されたときの処理である。
【0159】
クライアントは、ユーザインタフェース処理部を介してユーザの指示を受け、新規作成されたファイルを特定する情報を取得する(2010)。そして、ファイル管理部により、ファイル作成処理を行う(2020)。
【0160】
具体的には、作成されたファイルのパス名・ファイル名がファイル管理部に渡され、ファイル管理部はファイル格納部より、対象ファイルの本体を取得する(2030)。そして、ファイル管理部は、このファイル本体を暗号処理部により暗号化して(2060)、サーバ間通信管理部によりサーバへ送信する(2070)。図12(a)のインデックス情報テーブルに同一のファイル名が存在しない場合には、新規ファイルであるので、バージョン番号を1にして、サーバに送信する(2040)。インデックス情報テーブルに同一ファイルが存在する場合には、以前にファイルが存在していたが、現在は削除されている状態なので(2050)、前回のバージョン番号を取得し(2053)、そのバージョン番号に1を足したものとして、サーバに送信する(2056)。
【0161】
サーバ間通信管理部によるファイル作成処理(2070)の一例が、図21に示されている。サーバ間通信管理部は、図12(b)の接続先サーバ管理テーブルから取得される接続サーバのIPアドレス一覧(2074)に対して、ファイル作成要求を送出する(2080)。このファイル作成要求には、ユーザ名及びファイル識別子と、署名(2076)とを含める。
【0162】
ファイル作成要求に含まれるファイル識別子は、ファイル取得要求について説明した例と同様に、ファイル管理部から渡されたファイルのパス名とバージョン番号(2072)に基づいて生成することができる。このファイル作成要求を受信したサーバは、ユーザを認証し、ファイルにアクセス権限があれば成功応答を返す。
【0163】
ファイル作成要求に対する成功応答が返ってくると、クライアントは、成功応答を返したサーバに対して、ファイル登録要求を送信する(2086)。このファイル登録要求には、ユーザ名及びファイル識別子と、ファイル管理部から渡されたファイル本体(2072)と、署名(2082)とを含める。
【0164】
ファイル登録要求に対する成功応答が返ってくると、クライアントは、図12(a)のインデックス情報テーブルを更新して(2090)、この処理を終了する。
【0165】
図22〜図23には、クライアントによるファイル更新処理(2200)の一例を示す。ファイル更新処理は、ファイル作成処理とほぼ同様であるので、説明を省略する。ファイル新規作成では、バージョン番号を1としたが、ファイル更新の場合には、ファイルのバージョン番号を、直前の番号に1を足したものとして(2250)、サーバへの送信を行う(2270)。
【0166】
図24〜図25には、クライアントによるファイル削除処理(2400)の一例を示す。ファイル削除処理では、サーバにファイル本体を送付する必要がないので、クライアントからサーバに対しては、ファイル削除要求のみ送信する(ファイル登録要求は送信しない)ことになる。
【0167】
それ以外は、ファイル削除処理は、ファイル更新処理とほぼ同様であるので、説明を省略する。ファイル削除要求をサーバに送信すると(2450)、マスタサーバは、ユーザ認証とアクセス権限を確認し、ファイルを削除することになる。このとき、ファイル本体はサーバから削除されるが、インデックス情報テーブルには、ファイルのバージョン番号として直前の番号に1を足したものが記入され(2440)、状態が「削除済み」として更新されたインデックス情報が残る(2470)。
【0168】
図26は、読み書き対応キャッシュサーバによるインデックス取得要求処理(2600)とファイル取得要求処理(2630)の一例を示す。
【0169】
本システムでは、読み書き対応キャッシュサーバは、インデックス情報のキャッシュは行わないため、クライアントからインデックス取得要求を受信すると(2600)、読み書きキャッシュ処理部は、サーバ応答取得処理を行い(2610)、上流サーバからのインデックス取得応答をクライアントへ返す(2620)。
【0170】
サーバ応答取得処理(2610)は、具体的には、図13(b)の上流サーバ管理テーブルからIPアドレス一覧を取得し(2662)、そのIPアドレスに対して、クライアントから受信した要求を中継する(2664)。この処理は、インデックス取得要求の場合(2610)だけでなく、ファイル取得要求の場合(2660)も、ファイル作成・更新要求の場合(2710)の場合も、ファイル削除要求の場合(2760)の場合も、同じである。
【0171】
読み書き対応キャッシュサーバが、クライアントからファイル取得要求を受信すると(2630)、読み書きキャッシュ処理部は、そのファイル取得要求からファイル識別子を取り出し(2640)、ファイルキャッシュ部に該当ファイルのキャッシュが存在するか確認する(2650)。
【0172】
ファイルが存在した場合には、成功応答として、ファイルキャッシュ部から読みだしたファイル本体(2680)をクライアントに返送する(2685)。
【0173】
ファイルが存在しない場合には、サーバ応答取得処理(2660)を行い、上流サーバへ、クライアントから受信したファイル取得要求を中継する。上流サーバから成功応答が返ってくると、それをクライアントへ中継する(2670)とともに、成功応答に含まれるファイル本体を、ファイルキャッシュ部に保存する(2690)。
【0174】
近隣クライアントも、上述した読み書き対応キャッシュサーバの機能を備えて、インデックス取得要求やファイル取得要求を受け付けるようにしてもよい。あるいは、近隣クライアントが、読み書き対応キャッシュサーバの機能の一部のみを備えるようにしてもよい。例えば、読み込み用キャッシュサーバの機能を備えて、ファイル取得要求に対して自身が該当ファイルのキャッシュを保持する場合にこれを返送するのでもよい。
【0175】
また、近隣クライアントは、マスタサーバとの間で、インデックス情報の同期処理を行っているため、同一ユーザのものであれば、クライアントからのインデックス取得要求に対して、用身欠き対応キャッシュサーバのように上流サーバに問い合わせるのではなく、自身の有するインデックス情報を返送することも可能である。
【0176】
図27〜図28は、読み書き対応キャッシュサーバによるファイル作成・更新要求処理(2700)とファイル登録要求処理(2800)とファイル削除要求処理(2750)の一例を示す。
【0177】
図27に示されるように、クライアントからファイル作成要求またはファイル更新要求を受信した読み書き対応キャッシュサーバは、読み書きキャッシュ処理部によりサーバ応答取得処理(2710)を行う。つまり、読み書き対応キャッシュサーバは、上流サーバ管理テーブルよりアドレス一覧を取得し、上流サーバにクライアントから受信した要求を中継する。
【0178】
マスタサーバでは、ファイル作成・更新要求の内容から、認証とアクセス権限を確認し、許可できる場合には、成功応答を送信する。この成功応答を受信した読み書き対応キャッシュサーバは、クライアントへ中継する(2730)とともに、成功応答に含まれるユーザ名とファイル識別子とを、図13(a)の認証テーブルに保存する(2720、2725)。
【0179】
図27に示されるように、クライアントからファイル登録要求を受信した読み書き対応キャッシュサーバは、ファイル登録要求に含まれるユーザ名とファイル識別子とを取得し(2810)、認証テーブルにユーザ名とファイル識別子が一致する項目が存在するかを確認する(2820)。
【0180】
一致する項目があった場合には、認証処理部により署名検証処理を行う(2830)。具体的には、図28に示されるように、公開鍵管理テーブルから、ユーザ名の公開鍵を取得し(2832)、この公開鍵を用いて、受信したメッセージの署名が正しいかを検証する(2834)。
【0181】
署名の検証が正しい場合には、図27に示されるように、クライアントから受信したファイル登録要求に含まれるファイル本体(2810)をファイルキャッシュ部に格納し(2840)、クライアントに成功応答を返す(2850)。
【0182】
次に、読み書きキャッシュ処理部によりインデックス更新処理を行う(2860)を行う。具体的には、図28に示されるように、上流サーバ管理テーブルよりアドレス一覧を取得し(2862)、上流サーバにインデックス更新要求を送信する(2864)。このとき、ファイル保持ホストとして、本読み書き対応キャッシュサーバを指定する。
【0183】
その後、読み書きキャッシュ処理部によりサーバアップロード処理を行う(2870)。具体的には、図28に示されるように、上流サーバ管理テーブルよりアドレス一覧を取得し(2872)、上流サーバにファイル登録要求を送信する(2874)。このファイル登録要求は、ファイル識別子とファイル本体と署名を含むが、その署名は、本読み書き対応キャッシュサーバの署名ではなく、クライアントより受信した署名を送信する。ファイル登録要求が完了すると、マスタサーバのインデックス情報のファイル保持ホストは、マスタサーバに変更される。
【0184】
マスタサーバからファイル登録要求に対する成功応答を受信すると、図27に示されるように、読み書き対応キャッシュサーバは、図13(a)の認証テーブルからユーザ名とファイル識別子が一致する項目を削除して(2880)、処理を終了する。
【0185】
図28に示されるように、クライアントからファイル削除要求を受信した読み書き対応キャッシュサーバは、ファイル作成・更新手順と同様に、上流サーバにメッセージを中継する(2760)。上流サーバから成功応答が返信されると、そのメッセージをクライアントに中継する(2770)。
【0186】
図29には、マスタサーバによるインデックス取得要求処理(2900)とファイル取得要求処理(2950)の一例を示す。
【0187】
インデックス取得要求を受信したマスタサーバは、リクエスト処理部でインデックス取得要求処理(2910)を行う。具体的には、図14のインデックス情報テーブルからインデックス情報を取得し(2912)、その情報を要求元にインデックス取得応答として返信する(2920)。
【0188】
ファイル取得要求を受信したマスタサーバは、リクエスト処理部でファイル取得要求処理(2970)を行う。具体的には、要求メッセージからファイル識別子を取り出し(2960)、ファイル格納部から該当ファイルを取り出し(2972)、要求元に返信する(2980)。
【0189】
図30には、マスタサーバによるファイル作成要求処理(3000)の一例を示す。マスタサーバがファイル作成要求を受信すると、リクエスト処理部により要求メッセージ中のユーザ名、ファイル識別子、署名を取り出し(3010)、認証処理部により署名検証処理を行って、要求を受理するか検証する(3020)。
【0190】
認証処理部の署名検証処理では、公開鍵管理テーブルからユーザ名に対応する公開鍵を取得し(3022)、この公開鍵を用いて、受信した要求の署名を検証する(3024)。この処理は、ファイル作成要求の場合(3020)だけでなく、ファイル登録要求の場合(3120)も、ファイル更新要求の場合(3220)の場合も、ファイル削除要求の場合(3420)の場合も、同じである。
【0191】
マスタサーバは、ファイル作成要求の署名が検証できた後、ファイル管理部によりファイル作成ロック処理(3030)を行う。具体的には、ファイル作成要求中のユーザ名とファイル識別子に基づいて(3032、3034)、該当ファイルの存在及びアクセス権(3036)を確認し、ファイルが存在せず、アクセス権がある場合には、インデックス情報テーブルの該当ファイルの項目を追加し、ロック状態をロック中として(3039)、要求元に成功応答を返信する(3050)。
【0192】
図33には、マスタサーバによるインデックス更新要求処理(3300)の一例を示す。マスタサーバはインデックス更新要求を受信すると、リクエスト処理部により要求メッセージ中のファイル識別子とファイル保持ホストのIPアドレスとを取り出し(3310)、インデックス管理部によるインデックス更新処理(3320)を行う。
【0193】
具体的には、インデックス更新要求に含まれるファイル識別子に該当するインデックス情報テーブル内のファイル保持ホストの情報を、同要求から取り出されたファイル保持ホストのものに更新する(3224)。そして、要求元へ、成功応答を返す(3330)。
【0194】
図31には、マスタサーバによるファイル登録要求(3100)の一例を示す。ファイル登録要求を受信したマスタサーバは、リクエスト処理部により要求メッセージ中のユーザ名、ファイル識別子、ファイル本体、署名を取り出し(3110)、認証処理部により署名検証処理を行って、要求を受理するか検証する(3120)。
【0195】
マスタサーバは、署名の検証が成功すると、ファイル管理部によりファイル登録処理(3130)を行う。具体的には、要求メッセージからユーザ名、ファイル識別子、ファイル本体を取り出し(3132)、ファイル識別子をもとにパス名とバージョン番号を取得して(3134)、インデックス情報テーブルより該当ファイルの項目を取得する(3136)。
【0196】
取得に成功すると、図14のインデックス情報テーブルのパーミッションを確認する。ここでのパーミッションの例は、UNIX(登録商標)のファイルシステムと同様で、自身・同一グループ・他人が読み書き可能かをビットで示している。例えば、775は、自身と同一グループは読み書き可能で、他人は読み込みだけできる。
【0197】
アクセス権があれば、ファイル本体をファイル格納部に保存し(3139)、インデックス情報テーブルの該当ファイルの項目を修正する。具体的には、バージョン番号を更新し、ロック状態を解除し、ファイル保持ホストをマスタサーバに変更する(3141)。そして、要求元へ成功応答を返す(3150)。
【0198】
図32には、マスタサーバによるファイル更新要求処理(3200)の一例を示す。マスタサーバがファイル更新要求を受信すると、リクエスト処理部により要求メッセージ中のユーザ名、ファイル識別子、署名を取り出し(3210)、認証処理部により署名検証処理を行って、要求を受理するか検証する(3220)。
【0199】
マスタサーバは、署名が検証できたら、ファイル管理部によりファイル更新ロック処理(3230)を行う。具体的には、ファイル更新要求中のユーザ名とファイル識別子に基づいて(3232、3234)、インデックス情報テーブルの該当ファイルの項目を取得し(3236)、アクセス権があるかを確認する。
【0200】
アクセス権がある場合には、さらに書き込み可否を判断する(3239)。具体的には、ファイル更新要求に含まれるバージョン番号と、図14のインデックス情報テーブルにおけるバージョン番号とを比較する。例えば、更新要求に含まれるバージョン番号をNとし、インデックス情報テーブルにおけるバージョン番号をMとしたときに、M+1=Nを満たすかどうかにより、満たす場合は書き込み可能、満たさない場合は書き込み不可と判断すればよい。
【0201】
書き込み可能の場合には、インデックス情報テーブルの該当ファイルの項目を更新し、ロック状態をロック中にして(3241)、要求元に成功応答を返信する(3250)。
【0202】
図34には、マスタサーバによるファイル削除要求処理(3400)の一例を示す。マスタサーバがファイル削除要求を受信すると、ファイル更新要求処理と同様の処理を行う。違いは、インデックス情報テーブルのロック状態を変更しないこと(3443)とファイル格納部から該当ファイルを削除すること(3441)である。
【0203】
なお、上記の例では、ファイル作成要求処理では、インデックス情報テーブルに該当ファイルの項目を追加(3039)し、ファイル更新要求処理とファイル削除要求処理では、インデックス情報テーブルの該当ファイルの項目を更新(3241、3443)している。これは、ファイルのパス名が同じであれば、インデックス情報テーブルにおけるそのファイルの項目は、バージョン番号が最新のものに上書きされていくということである。
【0204】
上記のようにファイル識別子をパス名とバージョン番号に基づいて一意に定める場合、同じファイル識別子のファイル本体が書き換えられることはない(ファイル本体が書き換えられる場合、バージョン番号が更新されるため必ず異なるファイル識別子が付与される)。よって、ファイルがキャッシュされてシステム内に複数保持されている状態でファイルを更新する場合、古いキャッシュが残ることになるが、同じファイル識別子で異なる内容になることはないため、古いキャッシュを即座に削除しなくても、不都合は生じない。
【0205】
なぜなら、クライアントのインデックス情報テーブルは、マスタサーバのインデックス情報テーブルに連動して、そのファイルの最新の状態(最新のバージョン番号と、利用可能/削除済みの区別)が反映されているから、インデックス情報に基づいてファイル取得要求をすれば、バージョン番号を含めたファイル識別子により取得対象のファイルが特定され、古いキャッシュではなく最新のファイル本体に到達できるからである。
【0206】
以上、本発明の実施形態について説明したが、上述の実施形態を本発明の範囲内で当業者が種々に変形、応用して実施できることは勿論である。


【特許請求の範囲】
【請求項1】
ストレージ・サービスの対象となるデータを作成する手段を有する複数のクライアント装置と、
前記ストレージ・サービスを提供するためにデータを保存し、該データに対するアクセス許否を制御する手段を有する少なくとも一つのマスタサーバと、
前記複数のクライアント装置のうちの一つから受信したデータを少なくとも一時的に保持する手段と当該データを前記マスタサーバへ送信して保存させる手段とを各々が有する複数のキャッシュ装置と、
前記複数のクライアント装置のうちの一つからログインの要求を受け付け、当該ログインの成功に応じて、要求元のクライアント装置用に前記複数のキャッシュ装置のうちの少なくとも一つを選択し、選択されたキャッシュ装置を要求元のクライアント装置に通知する手段を有する管理サーバとを備え、
前記要求元のクライアント装置は、
前記管理サーバから通知された前記キャッシュ装置に対して、作成した前記データの書き込み要求を送信する手段と、
前記書き込み要求に対する許可の受信に応じて、前記管理サーバから通知された前記キャッシュ装置に対し、作成した前記データを送信する手段とを有し、
前記キャッシュ装置は、
前記クライアント装置から受信した書き込み要求を、前記マスタサーバへ中継する手段と、
前記マスタサーバから受信した前記書き込み要求に対する許可を、前記クライアント装置へ中継する手段とを有する
ことを特徴とするネットワーク・ストレージ・システム。
【請求項2】
前記管理サーバは、
前記ログインの要求に含まれる認証情報に基づいて、ユーザの認証を行う手段と、
前記認証に成功した場合に、前記ログインの要求に含まれる前記要求元のクライアント装置を特定する情報が示す該要求元のクライアント装置のネットワーク上の場所に基づき、前記複数のキャッシュ装置の各々の前記要求元のクライアント装置に対するネットワーク上の近さを考慮して、前記複数のキャッシュ装置のうちの少なくとも一つを選択する手段とを備えるものである
ことを特徴とする請求項1に記載のネットワーク・ストレージ・システム。
【請求項3】
前記キャッシュ装置は、前記マスタサーバに保存されたデータのコピーを少なくとも一時的に保持する手段を有し、
前記要求元のクライアント装置は、
前記管理サーバから通知された前記キャッシュ装置に対して、前記データの読み込み要求を送信する手段と、
前記読み込み要求に対する応答として、前記管理サーバから通知された前記キャッシュ装置より、前記データのコピーを受信する手段とを有する
ことを特徴とする請求項2に記載のネットワーク・ストレージ・システム。
【請求項4】
前記複数のキャッシュ装置は、前記要求元のクライアント装置と前記マスタサーバとの間に設置されているキャッシュサーバ装置と、前記複数のクライアント装置のうちの前記要求元のクライアント装置を除く他のクライアント装置とを含むものであり、
前記管理サーバは、選択されたキャッシュ装置として、前記キャッシュサーバ装置のうちの少なくとも一つ、及び/又は、前記他のクライアント装置のうちの少なくとも一つを、前記要求元のクライアント装置に通知するものである
ことを特徴とする請求項3に記載のネットワーク・ストレージ・システム。
【請求項5】
前記要求元のクライアント装置と前記マスタサーバの間に、ネットワークアドレス変換装置が設けられており、
前記ネットワークアドレス変換装置から見て前記マスタサーバ寄りに、キャッシュサーバ装置が設置されており、
前記複数のクライアント装置のうちの前記要求元のクライアント装置を除く他のクライアント装置の少なくとも一部は、前記ネットワークアドレス変換装置から見て前記クライアント装置寄りに存在するものであり、
前記管理サーバは、前記ログインの要求に含まれる前記要求元のクライアント装置を特定する情報として、該要求元のクライアント装置のローカルアドレスを取得するものであり、選択されたキャッシュ装置として、前記キャッシュサーバ装置のグローバルアドレス、及び/又は、前記他のクライアント装置の前記一部のうちの少なくとも一つのローカルアドレスを、前記要求元のクライアント装置に通知するものである
ことを特徴とする請求項3に記載のネットワーク・ストレージ・システム。
【請求項6】
前記要求元のクライアント装置は、
前記書き込み要求の送信先となるキャッシュ装置として、前記管理サーバから通知された前記キャッシュサーバ装置を用い、
前記読み込み要求の送信先となるキャッシュ装置として、前記管理サーバから通知された前記キャッシュサーバ装置及び前記他のクライアント装置を用いるものである
ことを特徴とする請求項4又は5に記載のネットワーク・ストレージ・システム。
【請求項7】
前記管理サーバは、
現在ログインしている複数のクライアント装置の各々のユーザの情報を記憶する手段を有し、
前記他のクライアント装置のうちの少なくとも一つを、選択されたキャッシュ装置とする場合、記憶された前記ユーザの情報を参照して、前記要求元のクライアント装置と同一のユーザ又はユーザグループが使用しているクライアント装置を選択するものである
ことを特徴とする請求項4又は5に記載のネットワーク・ストレージ・システム。
【請求項8】
前記マスタサーバは、データのインデックス情報を保存する手段を備え、
前記キャッシュ装置は、前記要求元のクライアント装置から受信したデータの保持に応じて、前記マスタサーバに対し該データのインデックス情報の更新を要求し、前記マスタサーバが保存する該インデックス情報が、前記データの保持場所が前記キャッシュ装置であることを示すようにする手段を備え、
前記データが前記キャッシュ装置から前記マスタサーバへ送信される前に、前記複数のクライアント装置のうちの一つから該データの読み込み要求が送信される場合、前記マスタサーバに保存されている該データのインデックス情報に従って、該読み込み要求の送信先が該データを保持している前記キャッシュ装置になる
ことを特徴とする請求項1〜7のいずれか1項に記載のネットワーク・ストレージ・システム。
【請求項9】
前記キャッシュ装置は、保持している前記データを前記マスタサーバへ送信して保存させる際に、前記マスタサーバが保存する該データのインデックス情報が、前記データの保持場所が前記マスタサーバであることを示すように、該インデックス情報の更新を前記マスタサーバに対し要求する手段を備え、
前記マスタサーバは、前記キャッシュ装置からの要求に応じて、前記インデックス情報を更新するとともに、前記書き込み要求に対する許可の送信以降禁止していた同一データへの他の書き込み要求に対して、許可を与えることを可能にする手段を備える
ことを特徴とする請求項8に記載のネットワーク・ストレージ・システム。
【請求項10】
前記マスタサーバは、データのインデックス情報を保存する手段を備え、
前記要求元のクライアント装置は、前記マスタサーバに保存されたインデックス情報のコピーを保存する手段を備え、
前記キャッシュ装置は、前記インデックス情報のコピーを保持しないように設定されており、前記要求元のクライアント装置から前記インデックス情報のコピーの送信を要求された場合、該インデックス情報のコピーを前記マスタサーバから取得して、前記要求元のクライアント装置へ中継する手段を備えるものである
ことを特徴とする請求項1〜9のいずれか1項に記載のネットワーク・ストレージ・システム。
【請求項11】
前記要求元のクライアント装置は、
保存された前記インデックス情報のコピーを、前記マスタサーバに保存された該インデックス情報の更新に合わせて更新する手段と、
更新された前記インデックス情報のコピーに基づいて、ユーザに、書き込み対象となるデータ又は読み込み対象となるデータを指定させる手段と、
指定されたデータの実体を少なくとも一時的に自装置内に保持する手段とを備えるものである
ことを特徴とする請求項10に記載のネットワーク・ストレージ・システム。
【請求項12】
前記要求元のクライアント装置は、
書き込み対象となるデータ又は読み込み対象となるデータの名前を入力する手段と、
前記管理サーバから通知された前記キャッシュ装置に対して送信する書き込み要求又は読み込み要求に、入力された前記名前にバージョン番号を付加した情報を、該要求の対象となるデータを特定する情報として含める手段とを備え、
前記名前と前記バージョン番号との組合せにより特定されるデータの内容は、更新されることがないものである
ことを特徴とする請求項1〜11のいずれか1項に記載のネットワーク・ストレージ・システム。
【請求項13】
前記マスタサーバは、データのインデックス情報を保存する手段を備え、
前記要求元のクライアント装置は、
前記マスタサーバに保存されているインデックス情報のコピーを保存する手段を備え、
前記書き込み要求を利用して新規データの書き込みを行うため、前記インデックス情報のコピーに示される該データの不存在を確認すると、バージョン番号をゼロとして該データのインデックス情報を新規に作成し、ゼロの次のバージョン番号を、前記書き込み要求の対象となるデータを特定するバージョン番号とするものである
ことを特徴とする請求項12に記載のネットワーク・ストレージ・システム。
【請求項14】
前記マスタサーバは、データのインデックス情報を保存する手段を備え、
前記要求元のクライアント装置は、
前記マスタサーバに保存されているインデックス情報のコピーを保存する手段を備え、
前記書き込み要求を利用して既存データの更新を行うため、前記インデックス情報のコピーに示される該データの現存する最新のバージョン番号から、次のバージョン番号を求めて、該次のバージョン番号を、前記書き込み要求の対象となるデータを特定するバージョン番号とするものである
ことを特徴とする請求項12に記載のネットワーク・ストレージ・システム。
【請求項15】
前記マスタサーバは、データのインデックス情報を保存する手段を備え、
前記要求元のクライアント装置は、
前記マスタサーバに保存されているインデックス情報のコピーを保存する手段を備え、
前記書き込み要求を利用して既存データの削除を行うため、前記インデックス情報のコピーに示される該データの現存する最新のバージョン番号から、次のバージョン番号を求めて、該次のバージョン番号を、前記書き込み要求の対象となるデータを特定するバージョン番号とするとともに、該書き込み要求に該データの状態を削除とする指示を含ませるものである
ことを特徴とする請求項12に記載のネットワーク・ストレージ・システム。
【請求項16】
前記要求元のクライアント装置と前記キャッシュ装置との間に、読み込み専用キャッシュ装置が設けられており、
前記読み込み専用キャッシュ装置は、
前記マスタサーバに保存されたデータのコピーを少なくとも一時的に保持する手段と、
前記要求元のクライアント装置から前記キャッシュ装置へ送信される前記データの読み込み要求を中継する手段と、
前記データのコピーが保持されている場合には、前記読み込み要求を中継せずに、前記読み込み要求に対する応答として、前記要求元のクライアント装置に対して前記データのコピーを送信する手段とを備えるものである
ことを特徴とする請求項12に記載のネットワーク・ストレージ・システム。
【請求項17】
前記要求元のクライアント装置は、作成した前記データを、該要求元のクライアント装置のユーザの公開鍵、及び/又は、該データの解読を許すユーザの公開鍵を用いて、暗号化してから、送信するものであり、
前記複数のキャッシュ装置は、データを暗号化されたまま保持するものであり、
前記マスタサーバは、データを暗号化されたまま保存するものである
ことを特徴とする請求項1〜16のいずれか1項に記載のネットワーク・ストレージ・システム。
【請求項18】
前記要求元のクライアント装置は、前記管理サーバから通知された前記キャッシュ装置に対して送信する前記書き込み要求及び前記データのそれぞれに、前記要求元のクライアント装置のユーザの秘密鍵を用いて署名を付加する手段を備え、
前記キャッシュ装置は、前記要求元のクライアント装置から受信した前記書き込み要求及び前記データのそれぞれに付加された署名を、前記ユーザの公開鍵を用いて検証する手段を備えるものである
ことを特徴とする請求項1〜17のいずれか1項に記載のネットワーク・ストレージ・システム。
【請求項19】
ストレージ・サービスを提供するためにデータを保存して該データに対するアクセス許否を制御する手段を有する少なくとも一つのマスタサーバと、少なくとも一時的に保持していたデータを前記マスタサーバへ送信して保存させる手段を有する複数のキャッシュ装置と、前記ストレージ・サービスに加入するユーザからのログインを管理する手段を有する管理サーバとが接続されている、ネットワークとの間で、通信を行うための通信手段と、
前記ストレージ・サービスの対象となるデータを作成する手段と、
前記管理サーバに対し、ログインの要求を送信して、該ログインの成功応答とともに、要求元のクライアント装置用に選択された前記複数のキャッシュ装置のうちの少なくとも一つを特定する情報を受信する手段と、
前記管理サーバからの情報により特定される前記キャッシュ装置に対して、前記データの書き込み要求を送信する手段と、
前記キャッシュ装置から前記マスタサーバへ中継された前記書き込み要求に対する許可を受信する手段と、
前記許可の受信に応じ、前記データを、前記管理サーバからの情報により特定される前記キャッシュ装置へ送信して保持させる手段とを備える
ことを特徴とするクライアント装置。
【請求項20】
前記ネットワークに接続される他のクライアント装置から受信した第二の書き込み要求を、前記マスタサーバへ中継する手段と、
前記マスタサーバから受信した前記第二の書き込み要求に対する許可を、前記他のクライアント装置へ中継する手段と、
前記第二の書き込み要求による書き込みの対象となるデータを、前記他のクライアント装置から受信して、少なくとも一時的に保持する手段と、
保持された前記データを前記マスタサーバへ送信して保存させる手段とを更に備える
ことを特徴とする請求項19に記載のクライアント装置。
【請求項21】
ストレージ・サービスの対象となるデータを作成する手段を有する複数のクライアント装置と、前記ストレージ・サービスを提供するためにデータを保存して該データに対するアクセス許否を制御する手段を有する少なくとも一つのマスタサーバと、少なくとも一時的に保持していたデータを前記マスタサーバへ送信して保存させる手段を有する複数のキャッシュ装置とが接続されている、ネットワークとの間で、通信を行うための通信手段と、
前記複数のクライアント装置のうちの一つからログインの要求を受け付ける手段と、
前記ログインの成功に応じて、前記複数のキャッシュ装置のうちの少なくとも一つを、前記要求元のクライアント装置用のキャッシュ装置として、選択する手段と、
前記要求元のクライアント装置が、該装置用のキャッシュ装置に対してデータの書き込み要求を送信することにより前記マスタサーバからの該書き込み要求に対する許可を得て、該装置用のキャッシュ装置に該書き込み要求の対象となるデータを送信して保持させることができるように、選択された前記キャッシュ装置を前記要求元のクライアント装置に通知する手段とを備える
ことを特徴とする管理サーバ。
【請求項22】
データを保存して該データに対するアクセス許否を制御する手段を有する少なくとも一つのマスタサーバにより提供されるストレージ・サービスの対象となるデータを作成する手段を有する複数のクライアント装置のうちの一つが、管理サーバに対して、ログインの要求を送信し、
前記管理サーバは、少なくとも一時的に保持していたデータを前記マスタサーバへ送信して保存させる手段を有する複数のキャッシュ装置に関する情報を記憶しており、
前記ログインの要求を受け付けた前記管理サーバは、該ログインの成功に応じ、該要求元のクライアント装置用に前記複数のキャッシュ装置のうちの少なくとも一つを選択して、選択されたキャッシュ装置を前記要求元のクライアント装置に通知し、
前記要求元のクライアント装置は、前記管理サーバから通知された前記キャッシュ装置に対して、作成したデータの書き込み要求を送信し、
前記キャッシュ装置は、前記クライアント装置から受信した書き込み要求を、前記マスタサーバへ中継し、
前記マスタサーバから受信した前記書き込み要求に対する許可を、前記クライアント装置へ中継し、
前記要求元のクライアント装置は、前記書き込み要求に対する許可の受信に応じ、前記管理サーバから通知された前記キャッシュ装置に対して、前記書き込み要求の対象となるデータを送信し、
前記キャッシュ装置は、前記クライアント装置から受信したデータを少なくとも一時的に保持する
ことを特徴とするネットワーク・ストレージの方法。
【請求項23】
ストレージ・サービスを提供するためにデータを保存して該データに対するアクセス許否を制御する手段を有する少なくとも一つのマスタサーバと、少なくとも一時的に保持していたデータを前記マスタサーバへ送信して保存させる手段を有する複数のキャッシュ装置と、前記ストレージ・サービスに加入するユーザからのログインを管理する手段を有する管理サーバとが接続されている、ネットワークとの間で、通信を行うことのできるコンピュータを、
前記ストレージ・サービスの対象となるデータを作成する手段と、
前記管理サーバに対し、ログインの要求を送信して、該ログインの成功応答とともに、要求元のクライアント装置用に選択された前記複数のキャッシュ装置のうちの少なくとも一つを特定する情報を受信する手段と、
前記管理サーバからの情報により特定される前記キャッシュ装置に対して、前記データの書き込み要求を送信する手段と、
前記キャッシュ装置から前記マスタサーバへ中継された前記書き込み要求に対する許可を受信する手段と、
前記許可の受信に応じ、前記データを、前記管理サーバからの情報により特定される前記キャッシュ装置へ送信して保持させる手段とを備える
クライアント装置として動作させるためのプログラム。
【請求項24】
ストレージ・サービスの対象となるデータを作成する手段を有する複数のクライアント装置と、前記ストレージ・サービスを提供するためにデータを保存して該データに対するアクセス許否を制御する手段を有する少なくとも一つのマスタサーバと、少なくとも一時的に保持していたデータを前記マスタサーバへ送信して保存させる手段を有する複数のキャッシュ装置とが接続されている、ネットワークとの間で、通信を行うことのできるコンピュータを、
前記複数のクライアント装置のうちの一つからログインの要求を受け付ける手段と、
前記ログインの成功に応じて、前記複数のキャッシュ装置のうちの少なくとも一つを、前記要求元のクライアント装置用のキャッシュ装置として、選択する手段と、
前記要求元のクライアント装置が、該装置用のキャッシュ装置に対してデータの書き込み要求を送信することにより前記マスタサーバからの該書き込み要求に対する許可を得て、該装置用のキャッシュ装置に該書き込み要求の対象となるデータを送信して保持させることができるように、選択された前記キャッシュ装置を前記要求元のクライアント装置に通知する手段とを備える
管理サーバとして動作させるためのプログラム。


【図21】
image rotate

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate

【図34】
image rotate


【公開番号】特開2011−210059(P2011−210059A)
【公開日】平成23年10月20日(2011.10.20)
【国際特許分類】
【出願番号】特願2010−77959(P2010−77959)
【出願日】平成22年3月30日(2010.3.30)
【出願人】(500309920)株式会社インテックシステム研究所 (22)
【Fターム(参考)】