(57)【要約】【課題】効率的にサーバの負荷を分散する。【解決手段】  情報処理システムは、クライアント、第１と第２の情報処理装置を有する。第１の情報処理装置は、データと、暗号化に用いる鍵を保持する。第２の情報処理装置は、第１の情報処理装置及びクライアントと、暗号化されていないデータを共有する権限を持たない。第１の情報処理装置は、クライアントからデータの使用要求を受信すると、データと鍵をクライアントに送信する。更に、データを鍵で暗号化した第１の暗号データを生成し、第２の情報処理装置に送信する。クライアントは、データの使用が終了するまで、データに対する処理結果を鍵で暗号化することにより獲られる情報を第２の情報処理装置に送信する。第１の情報処理装置は、クライアントからデータの使用が終了したことを通知されると、第２の情報処理装置がクライアントから受信した最新の情報である第２の暗号データを、第２の情報処理装置から取得し、第２の暗号データを復号化して記憶する。【選択図】図１
2015097345.tif 000002
【特許請求の範囲】
【請求項１】
データと、前記データの暗号化に用いられる鍵を保持する第１の情報処理装置と、
前記データを使用するクライアント装置と、
前記第１の情報処理装置及び前記クライアント装置と、暗号化されていないデータを共有する権限を持たない第２の情報処理装置と、を有し、
前記第１の情報処理装置は、
前記クライアント装置から前記データの使用要求を受信すると、前記データと前記鍵をクライアント装置に送信し、
前記データを前記鍵で暗号化した第１の暗号データを生成し、前記第１の暗号データを前記第２の情報処理装置に送信し、
前記クライアント装置は、前記データの使用が終了するまで、前記データに対する処理結果を前記鍵で暗号化することにより得られる情報を、前記第２の情報処理装置に送信し、
前記第１の情報処理装置は、前記クライアント装置から前記データの使用が終了したことを通知されると、前記第２の情報処理装置が前記クライアント装置から受信した最新の情報である第２の暗号データを、前記第２の情報処理装置から取得し、前記第２の暗号データを復号化して記憶する
ことを特徴とする情報処理システム。
【請求項２】
前記第１の情報処理装置及び前記クライアント装置と、暗号化されていないデータを共有する権限を持つ第３の情報処理装置を更に有し、
前記第１の情報処理装置は、前記クライアント装置から前記データの使用要求を受信すると、
前記第２の情報処理装置と前記第３の情報処理装置のうち、負荷が少ない方の情報処理装置を、前記クライアント装置が前記データの使用が終了するまで通信する情報処理装置である通信対象として指定し、
前記通信対象の識別情報を前記クライアント装置に通知し、
前記クライアント装置は、
受信した前記通信対象の識別情報が前記第２の情報処理装置の識別情報である場合に、前記データの使用が終了するまで、前記データに対する処理結果を前記鍵で暗号化することにより得られる情報を、前記第２の情報処理装置に送信し、
受信した前記通信対象の識別情報が前記第３の情報処理装置の識別情報である場合に、前記データの使用が終了するまで、前記データに対する処理結果のデータを、前記第３の情報処理装置に送信し、
ことを特徴とする請求項１記載の情報処理システム。
【請求項３】
前記クライアント装置は、暗号化されていないデータを共有する権限を持つ装置の識別情報を有し、
受信した前記通信対象の識別情報が、前記権限を持つ装置の識別情報である場合、前記第３の情報処理装置が前記通信対象に指定されたと判定する
ことを特徴とする請求項２記載の情報処理システム。
【請求項４】
データと、前記データの暗号化に用いられる鍵を保持する第１の情報処理装置と、
前記データを使用するクライアント装置と、
前記第１の情報処理装置及び前記クライアント装置と、暗号化されていないデータを共有する権限を持たない第２の情報処理装置と、を有する制御処理システムにおいて、
前記第１の情報処理装置は、
前記クライアント装置から前記データの使用要求を受信すると、前記データと前記鍵をクライアント装置に送信し、
前記データを前記鍵で暗号化した第１の暗号データを生成し、前記第１の暗号データを前記第２の情報処理装置に送信し、
前記クライアント装置は、前記データの使用が終了するまで、前記データに対する処理結果を前記鍵で暗号化することにより得られる情報を、前記第２の情報処理装置に送信し、
前記第１の情報処理装置は、前記クライアント装置から前記データの使用が終了したことを通知されると、前記第２の情報処理装置が前記クライアント装置から受信した最新の情報である第２の暗号データを、前記第２の情報処理装置から取得し、前記第２の暗号データを復号化して記憶する
ことを特徴とする情報処理システムの制御方法。
【請求項５】
前記情報処理システムは、前記第１の情報処理装置及び前記クライアント装置と、暗号化されていないデータを共有する権限を持つ第３の情報処理装置を更に有し、
前記第１の情報処理装置は、前記クライアント装置から前記データの使用要求を受信すると、
前記第２の情報処理装置と前記第３の情報処理装置のうち、負荷が少ない方の情報処理装置を、前記クライアント装置が前記データの使用が終了するまで通信する情報処理装置である通信対象として指定し、
前記通信対象の識別情報を前記クライアント装置に通知し、
前記クライアント装置は、
受信した前記通信対象の識別情報が前記第２の情報処理装置の識別情報である場合に、前記データの使用が終了するまで、前記データに対する処理結果を前記鍵で暗号化することにより得られる情報を、前記第２の情報処理装置に送信し、
受信した前記通信対象の識別情報が前記第３の情報処理装置の識別情報である場合に、前記データの使用が終了するまで、前記データに対する処理結果のデータを、前記第３の情報処理装置に送信し、
ことを特徴とする請求項４記載の情報処理システムの制御方法。
【請求項６】
前記クライアント装置は、暗号化されていないデータを共有する権限を持つ装置の識別情報を有し、
受信した前記通信対象の識別情報が、前記権限を持つ装置の識別情報である場合、前記第３の情報処理装置が前記通信対象に指定されたと判定する
ことを特徴とする請求項５記載の情報処理システムの制御方法。
【請求項７】
第１の装置から、データの使用要求を受信し、
前記データと前記データの暗号化に用いられる鍵をクライアント装置に送信し、
前記データを前記鍵で暗号化した第１の暗号データを生成し、
前記第１の暗号データを、前記データを共有する権限を持たない前記第２の装置に送信し、
前記クライアント装置から前記データの使用が終了したことが通知されると、前記第１の装置が前記データの使用を終了するまでに、前記データに対する処理結果を前記鍵で暗号化した情報として前記第２の装置に送信した情報のうち、最新の情報である第２の暗号データを、前記第２の装置から取得し、前記第２の暗号データを復号化して記憶する
処理を情報処理装置に行わせることを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、情報処理システムの制御に関する。
【背景技術】
【０００２】
分散ファイルシステムは、複数のサーバ間で、ネットワークを経由してファイルを共有するシステムである。分散ファイルシステムにおいて、各クライアントは、ファイルサーバを経由して、共有しているファイルにアクセスする。そのため、分散ファイルシステムには、システムを利用するクライアントが増えると、ファイルサーバにアクセスが集中してしまうという問題がある。ファイルサーバには、集中するアクセスを処理するため、高い性能が要求される。
【０００３】
しかしながら、性能が高いサーバをシステムに導入することは、コスト削減の観点から好ましくない。そのため、ファイルサーバにかかる負荷を分散することで、ファイルサーバの処理を軽減する技術が知られている。
【０００４】
負荷分散に関する技術の例として、クライアント側のメモリをキャッシュとして使用する事によって、クライアント側の処理を増やし、サーバ負荷のオフロードを図る技術が知られている（例えば非特許文献１を参照）。
【０００５】
負荷分散に関する技術の例として、クライアント側からのコマンド発行により通信を開始する技術が知られている。この技術は、例えば、ＲＤＭＡ（Ｒｅｍｏｔｅ  Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）と称される。クライアント側からのコマンド発行により、サーバ側のＮＩＣへのコマンド発行に伴う負荷を軽減する技術である（例えば非特許文献２を参照）。
【０００６】
関連する技術として、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）を用いて、データ通信をする技術が知られている。ホスト・システムとエンドポイントとの間で、トランザクション指向プロトコルを確立し、エンドポイントが共用メモリ内にアドレス範囲を有するように、共用メモリを設定することが知られている（例えば特許文献１を参照）。
【０００７】
関連する技術として、デバイスの各々が、ＤＭＡを使用してメインメモリに対して割り込み要因レジスタの情報を転送することが知られている。主記憶装置はデバイスの各々に対して予め割り当てられたアドレスを有し、デバイスは、割り当てられたアドレスに対してＤＭＡの書き込みを行うことが知られている（例えば特許文献２を参照）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００８−１５２７８３号公報
【特許文献２】特開平１１−３１２１３８号公報
【非特許文献】
【０００９】
【非特許文献１】Michael D. Dahlin, Randolph Y. Wang, Thomas E. Anderson, David A. Patterson, “Cooperative caching: using remote client memory to improve file system performance” OSDI ’94 Proceedings of the 1st USENIX conference on Operating Systems Design and Implementation, Article No. 19 USENIX Association Berkeley, CA, USA @ 1994
【非特許文献２】Kostas Magoutis, “The Optimistic Direct Access File System: Design and Network Interface Support”, Proceedings of the 1st Workshop on Novel Uses of System Area Networks, 2002
【発明の概要】
【発明が解決しようとする課題】
【００１０】
コストの観点から、システムに導入されるサーバは少ない方が好ましい。しかし、サーバ数が少ないシステムであるほど、サーバの処理負荷が大きくなりやすい。
【００１１】
１つの側面において、本発明の目的は、効率的にサーバの負荷を分散することである。
【課題を解決するための手段】
【００１２】
情報処理システムは、クライアント、第１と第２の情報処理装置を有する。第１の情報処理装置は、データと、暗号化に用いる鍵を保持する。第２の情報処理装置は、第１の情報処理装置及びクライアントと、暗号化されていないデータを共有する権限を持たない。第１の情報処理装置は、クライアントからデータの使用要求を受信すると、データと鍵をクライアントに送信する。更に、データを鍵で暗号化した第１の暗号データを生成し、第２の情報処理装置に送信する。クライアントは、データの使用が終了するまで、データに対する処理結果を鍵で暗号化することにより獲られる情報を第２の情報処理装置に送信する。第１の情報処理装置は、クライアントからデータの使用が終了したことを通知されると、第２の情報処理装置がクライアントから受信した最新の情報である第２の暗号データを、第２の情報処理装置から取得し、第２の暗号データを復号化して記憶する。
【発明の効果】
【００１３】
効率的にサーバの負荷を分散する。
【図面の簡単な説明】
【００１４】
【図１】実施形態に係るシステムの例（その１）を説明する図である
【図２】クライアント、ファイルサーバ、キャッシュサーバのハードウェア構成の例を説明する図である。
【図３】実施形態に係る暗号化処理の例を説明する図である。
【図４】実施形態に係るシステムの例（その２）を説明する図である
【図５Ａ】キャッシュデータの書き込み処理の例を説明するフローチャートである。
【図５Ｂ】キャッシュデータの読み込み処理の例を説明するフローチャートである。
【図６Ａ】ファイルデータ変更に伴った鍵の更新処理の例を説明するフローチャートである。
【図６Ｂ】クライアント側のファイルデータ更新に関する処理の例を説明するフローチャートである。
【図６Ｃ】クライアント及びキャッシュサーバ側のファイルデータ更新に関する処理の例を説明するフローチャートである。
【図７】ＧＰＧＰＵを備えたシステムの例を説明する図である。
【図８】実施形態に係るシステムの例（その３）を説明する図である。
【図９】ノード間データ演算機構を用いた処理の例を説明する図である。
【図１０】ノード間演算装置を用いた暗号化と復号化処理の例を説明するフローチャートである。
【図１１Ａ】消失訂正符号を使用したシステムの例を説明する図である。
【図１１Ｂ】消失訂正符号を使用したキャッシュデータの配置例を説明する図である。
【図１２】消失訂正符号を使用したシステムにおけるデータ転送の例を説明する図である。
【図１３】転送ルートを選択する処理を説明するフローチャートである。
【図１４】辞書式の圧縮アルゴリズムによる暗号化の例を説明するフローチャートである。
【図１５】ノード間で共通なファイルの一部を用いた暗号化の例を説明するフローチャートである。
【発明を実施するための形態】
【００１５】
以下、本実施形態について、図面を参照しながら詳細に説明する。
図１は、実施形態に係るシステムの例（その１）を説明する図である。図１の分散ファイルシステム１００は、クライアント１１０、ファイルサーバ１２０、ディスク装置１３０、中継装置１４０を有する。更に、実施形態に係るシステムは、分散ファイルシステム１００から、データの共有が許可されていないキャッシュサーバ３００を有する。中継装置１４０は、クライアント１１０、ファイルサーバ１２０、キャッシュサーバ３００間の通信を中継する装置である。中継装置１４０は、スイッチやルータなどで実現される。
【００１６】
ファイルサーバ１２０は、分散ファイルシステム１００内で共有の対象とされるデータを管理するサーバである。分散ファイルシステム１００内で共有の対象とされるデータは、ファイルサーバ１２０に接続されているディスク装置１３０に保持される。ディスク装置１３０は、各種データを記憶する記憶装置である。図１の例では、ディスク装置１３０は１台であるが、複数のディスク装置１３０がファイルサーバ１２０に接続されていてもよい。
【００１７】
ディスク装置１３０は、ファイルデータ１３１を保持する。ファイルサーバ１２０のメモリ１２２は、キャッシュデータ１２３、秘密鍵１２４、キャッシュ管理表１２５を有する。キャッシュデータ１２３は、ファイルデータ１３１が使用される際にキャッシュ領域に作成されるデータである。秘密鍵１２４は、暗号化に用いられる鍵である。キャッシュ管理表１２５は、キャッシュデータを管理するための情報を備える。
【００１８】
実施形態に係るキャッシュサーバ３００は、ファイルサーバ１２０に対するクライアント１１０からのアクセスが集中することを回避するために、キャッシュ領域を提供する。
【００１９】
以下に、実施形態に係る分散ファイルシステムの動作を順に説明する。
（Ａ１）クライアント１１０は、ファイルデータ１３１を使用するための要求をファイルサーバ１２０に送信する。
【００２０】
（Ａ２）ファイルサーバ１２０は、要求されたファイルデータ１３１のキャッシュであるキャッシュデータ１２３を、メモリ１２２のキャッシュ領域に保持する。
【００２１】
（Ａ３）キャッシュサーバ３００は、データの共有が許可されていないため、暗号化されていないデータを保持できない。そのため、ファイルサーバ１２０は、キャッシュデータ１２３を、秘密鍵１２４を用いて暗号化する。ファイルサーバ１２０は、暗号化されたキャッシュデータ３０２を、キャッシュサーバ３００に送信する。キャッシュサーバ３００は、暗号化されたキャッシュデータ３０２を、メモリ３０１に記憶する。
【００２２】
（Ａ４）ファイルサーバ１２０は、暗号化されたキャッシュデータ３０２の識別情報と、暗号化されたキャッシュデータ３０２を保持するサーバの識別情報とを対応付けて、キャッシュ管理表１２５に保持させる。
【００２３】
（Ａ５）ファイルサーバ１２０は、キャッシュデータ１２３及び秘密鍵１２４をクライアント１１０に送信する。クライアント１１０は、キャッシュデータ１２３及び秘密鍵１２４をメモリ１１１に記憶する。更に、ファイルサーバ１２０は、暗号化されたキャッシュデータ３０２を保持するサーバの識別情報をクライアント１１０に通知する。
【００２４】
（Ａ６）クライアント１１０のキャッシュデータ１２３は、クライアント１１０内で、適宜更新される。クライアント１１０は、更新後のキャッシュデータ１２３を暗号化して、キャッシュサーバ３００に暗号化されたキャッシュデータ３０２を送信する。キャッシュサーバ３００は、暗号化されたキャッシュデータ３０２を更新する。
【００２５】
（Ａ７）キャッシュサーバ３００は、所定のタイミング又は、クライアント１１０からの要求によって、ファイルサーバ１２０に、暗号化されたキャッシュデータ３０２を送信する。
【００２６】
（Ａ８）ファイルサーバ１２０は、暗号化されたキャッシュデータ３０２を復号化し、キャッシュデータ１２３を更新する。
【００２７】
（Ａ９）所定のタイミングで、ファイルサーバ１２０は、キャッシュデータ１２３の更新を、ファイルデータ１３１にも反映させる。
【００２８】
（Ａ１０）クライアント１１０がキャッシュデータ１２３の使用を終了すると、クライアント１１０は、ファイルサーバ１２０に、処理が終了したことを通知する。ファイルサーバ１２０は、キャッシュサーバ３００から暗号化されたキャッシュデータ３０２を取得する。ファイルサーバ１２０は、暗号化されたキャッシュデータ３０２を、キャッシュサーバ３００から削除する。ファイルサーバ１２０は、暗号化されたキャッシュデータ３０２を復号化し、ファイルデータ１３１に反映させる。
【００２９】
（Ａ４）の処理において、キャッシュ管理表１２５は、更に、暗号化されたキャッシュデータ３０２の識別情報に対応付けて暗号鍵の識別情報を保持してもよい。（Ａ６）〜（Ａ９）の処理は、繰りかえし実行され得る。（Ａ６）と（Ａ７）の処理は、並列して処理されてもよく、逆の順番で処理されてもよい。（Ａ１）〜（Ａ１０）の処理は、各々のサーバ内のＣＰＵによって処理される。
【００３０】
図１を参照して説明したクライアント１１０は、手順（Ａ５）の処理以降、ファイルデータ１３１を更新するために、ファイルサーバ１２０との通信をしない。そのため、クライアント１１０が複数台の場合でも、ファイルサーバ１２０にアクセスが集中することにはならない。
【００３１】
実施形態に係るキャッシュサーバ３００は、分散ファイルシステム１００から暗号化していないデータの共有が許可されていない。そのため、キャッシュサーバ３００を追加する場合であっても、キャッシュサーバ３００にデータの共有化を行うための設定作業を行わなくてよい。実施形態に係るシステムでは、暗号化していないデータの共有が許可されていないサーバに、暗号化したキャッシュ情報を保持させることで、分散ファイルシステムのデータにアクセスできないサーバのキャッシュ領域を使用することができる。なお、キャッシュサーバ３００は、秘密鍵１２４を保持していないため、暗号化されたキャッシュ情報の中のデータを読み取ることはできない。そのため、分散ファイルシステムのデータのセキュリティは担保される。
【００３２】
実施形態に係るシステムは、一例であり、クライアント１１０、ファイルサーバ１２０、ディスク装置１３０、キャッシュサーバ３００の数を限定するものではない。システムは、複数台のクライアント１１０、ファイルサーバ１２０、ディスク装置１３０、キャッシュサーバ３００を備えてもよい。
【００３３】
図２は、クライアント、ファイルサーバ、キャッシュサーバのハードウェア構成の例を説明する図である。クライアント、ファイルサーバ、キャッシュサーバは、プロセッサ１１、メモリ１２、バス１３、外部記憶装置１４、ネットワーク接続装置１５を備える。さらにオプションとして、クライアント、ファイルサーバ、キャッシュサーバは、入力装置１６、出力装置１７、媒体駆動装置１８を備えても良い。クライアント、ファイルサーバ、キャッシュサーバは、例えば、コンピュータなどで実現されることがある。
【００３４】
プロセッサ１１は、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）を含む任意の処理回路とすることができる。プロセッサ１１は、クライアント、ファイルサーバ、キャッシュサーバ内のキャッシュの管理をする。なお、プロセッサ１１は、例えば、外部記憶装置１４に記憶されたプログラムを実行することができる。メモリ１２は、クライアント、ファイルサーバ、キャッシュサーバが使用するデータのキャッシュを記憶する。さらに、メモリ１２は、プロセッサ１１の動作により得られたデータや、プロセッサ１１の処理に用いられるデータも、適宜、記憶する。ネットワーク接続装置１５は、他の装置との通信に使用される。
【００３５】
入力装置１６は、例えば、ボタン、キーボード、マウス等として実現され、出力装置１７は、ディスプレイなどとして実現される。バス１３は、プロセッサ１１、メモリ１２、入力装置１６、出力装置１７、外部記憶装置１４、媒体駆動装置１８、ネットワーク接続装置１５の間を相互にデータの受け渡しが行えるように接続する。外部記憶装置１４は、プログラムやデータなどを格納し、格納している情報を、適宜、プロセッサ１１などに提供する。媒体駆動装置１８は、メモリ１２や外部記憶装置１４のデータを可搬記憶媒体１９に出力することができ、また、可搬記憶媒体１９からプログラムやデータ等を読み出すことができる。ここで、可搬記憶媒体１９は、フロッピイディスク、Ｍａｇｎｅｔ−Ｏｐｔｉｃａｌ（ＭＯ）ディスク、Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅｃｏｒｄａｂｌｅ（ＣＤ−Ｒ）やＤｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ  Ｒｅｃｏｒｄａｂｌｅ（ＤＶＤ−Ｒ）を含む、持ち運びが可能な任意の記憶媒体とすることができる。
【００３６】
図３は、実施形態に係る暗号化処理の例を説明する図である。図３において、図１と同じものは、同一の番号を付している。図３のシステムは、図１のようにデータをファイル単位で管理せず、データを複数のブロックに分割して管理している。そのため、図３のシステムの例では、図１のファイルデータ１３１が、ｆｂｌｏｃｋ２０１（２０１ａ〜２０１ｄ）のブロックに分割されてディスク装置１３０に記憶されている。
【００３７】
クライアント１１０の要求によって、ファイルサーバ１２０は、ｆｂｌｏｃｋ２０１（２０１ａ〜２０１ｄ）に対応したキャッシュデータであるｃｂｌｏｃｋ２１１（２１１ａ〜２１１ｄ）をメモリ１２２に保持させる。ファイルサーバ１２０は、ｃｂｌｏｃｋ２１１を秘密鍵であるｒｂｌｏｃｋ２２０を用いて暗号化し、暗号化されたキャッシュデータ３１０をキャッシュサーバ３００に送信する。
【００３８】
秘密鍵であるｒｂｌｏｃｋ２２０は、例えば、ｆｂｌｏｃｋ２０１などと同じサイズのランダムなデータである。ｒｂｌｏｃｋ２２０は、ファイルデータ１３１に対して１つ作成される。そのため、図３の例においてｒｂｌｏｃｋ２２０は、ｆｂｌｏｃｋ２０１（２０１ａ〜２０１ｄ）に共通して使用される。暗号化は、例えば、ｃｂｌｏｃｋ２１１とｒｂｌｏｃｋ２２０との排他的論理和を取るような方法で行われる。
【００３９】
キャッシュ管理表１２５は、分割されたブロック毎に、暗号化されたキャッシュデータ３１０と、秘密鍵の識別情報と、暗号化されたキャッシュデータ３０２を保持するサーバの識別情報とを対応付けて保持する。
【００４０】
秘密鍵は、ランダムなデータを用いなくてもよい。例えば、秘密鍵は、分割されたファイルデータ１３１の先頭のブロックでもよい。この場合、秘密鍵は、分割されたファイルデータ１３１の先頭のブロックであるｆｂｌｏｃｋ２０１ａとなる。ファイルの一部のデータを秘密鍵として利用するシステムでは、ファイルのデータが変更されると、秘密鍵として設定されたブロックのデータも変更される。すると、ファイルのデータの変更を契機に、秘密鍵を新しく生成する。
【００４１】
ファイルサーバは、ファイルデータに変更があると、変更前の秘密鍵を使用して暗号化をおこなった全サーバに対して、鍵及び暗号化済みデータの無効化を依頼する。この際、ファイルサーバは、キャッシュ管理表１２５を参照して、無効化を依頼するサーバを選択する。その後、ファイルサーバは、新しい秘密鍵を生成する。新しい秘密鍵は、変更されたファイルデータの先頭ブロックの内容を用いて、使用されていた秘密鍵を更新してもいい。又は、新しい秘密鍵は、変更されたファイルデータの先頭ブロックの内容を用いて、使用されていた秘密鍵とは別に新しく作成してもよい。更に、ファイルサーバは、ファイルデータの変更されたブロックに対応する新しいブロックを、他のノードに対して割り当てる。
【００４２】
ファイルの一部を秘密鍵として利用することで、元のファイルのサイズで、ファイルと秘密鍵を保持することができる。これにより、メモリの所要量や通信量を削減できる。
【００４３】
図４は、実施形態に係るシステムの例（その２）を説明する図である。図４において、図１と同じものは、同一の番号を付している。図４の分散ファイルシステム１００は、図１の分散ファイルシステム１００から更に、キャッシュサーバ１５０を備える。キャッシュサーバ１５０は、分散ファイルシステム１００から、データの共有が許可されている。一方、キャッシュサーバ３００は、図１の例と同様に、分散ファイルシステム１００から、暗号化されていないデータの共有が許可されていない。
【００４４】
以下に、図４の分散ファイルシステムの動作を順に説明する。
（Ｂ１）クライアント１１０は、ファイルデータ１３１を使用するための要求をファイルサーバ１２０に送信する。
【００４５】
（Ｂ２）ファイルサーバ１２０は、要求されたファイルデータ１３１のキャッシュであるキャッシュデータ１２３を、メモリ１２２のキャッシュ領域に保持する。更に、ファイルサーバ１２０は、キャッシュデータ１２３を、秘密鍵１２４を用いて暗号化する。ファイルサーバ１２０は、暗号化したキャッシュデータ３０２を、メモリ１２２のキャッシュ領域に保持する。
【００４６】
（Ｂ３）ファイルサーバ１２０は、クライアント１１０が使用するキャッシュサーバを、キャッシュサーバ１５０又はキャッシュサーバ３００から選択する。ここで、ファイルサーバ１２０はなるべく負荷を分散できるように、キャッシュサーバを選択する。よって、ファイルサーバ１２０は、キャッシュサーバ１５０又はキャッシュサーバ３００をランダムに選択してもよい。また、ファイルサーバ１２０は、キャッシュサーバ１５０又はキャッシュサーバ３００を順番に選択してもよい。
【００４７】
（Ｂ３−１）キャッシュサーバ３００が選択された場合、ファイルサーバ１２０は、暗号化されたキャッシュデータ３０２を、キャッシュサーバ３００に送信する。キャッシュサーバ３００は、暗号化されたキャッシュデータ３０２をメモリ３０１に保持する。キャッシュサーバ３００が選択された場合、図１の実施形態で記載した（Ａ４）〜（Ａ１０）の処理が実行される。
【００４８】
（Ｂ３−２）キャッシュサーバ１５０が選択された場合、ファイルサーバ１２０は、キャッシュデータ１２３を、キャッシュサーバ１５０に送信する。キャッシュサーバ１５０は、キャッシュデータ１２３をメモリ１５１に保持する。キャッシュサーバ１５０が選択された場合、以下の（Ｂ４）〜（Ｂ９）の処理が実行される。
【００４９】
（Ｂ４）ファイルサーバ１２０は、キャッシュデータ１２３の識別情報と、キャッシュデータ１２３を保持するサーバの識別情報とを対応付けて、キャッシュ管理表１２５を保持する。
【００５０】
（Ｂ５）ファイルサーバ１２０は、キャッシュデータ１２３をクライアント１１０に送信する。クライアント１１０は、キャッシュデータ１２３をメモリ１１１に保持する。更に、ファイルサーバ１２０は、キャッシュデータ１２３を保持するキャッシュサーバの識別情報をクライアント１１０に通知する。
【００５１】
（Ｂ６）クライアント１１０のキャッシュデータ１２３は、クライアント１１０内で、適宜更新される。クライアント１１０は、キャッシュサーバ１５０に、更新後のキャッシュデータ１２３を送信する。キャッシュサーバ１５０は、保持しているキャッシュデータ１２３を更新する。
【００５２】
（Ｂ７）キャッシュサーバ１５０は、所定のタイミング又は、クライアント１１０からの要求によって、ファイルサーバ１２０に、キャッシュデータ１２３を送信する。
【００５３】
（Ｂ８）所定のタイミングで、ファイルサーバ１２０は、キャッシュデータ１２３の更新を、ファイルデータ１３１にも反映させる。
【００５４】
（Ｂ９）クライアント１１０がキャッシュデータ１２３の使用を終了すると、クライアント１１０は、ファイルサーバ１２０に、処理が終了したことを通知する。ファイルサーバ１２０は、最新のキャッシュデータ１２３をキャッシュサーバ１５０から取得する。ファイルサーバ１２０は、キャッシュデータ１２３を、キャッシュサーバ１５０から削除する。ファイルサーバ１２０は、キャッシュデータ１２３の更新を、ファイルデータ１３１にも反映させる。
【００５５】
（Ｂ３）に記載のキャッシュサーバの選択は、一例である。そのため、（Ｂ３）の処理は負荷分散の方法を限定するものではない。（Ｂ６）〜（Ｂ９）の処理は、繰りかえし実行され得る。（Ｂ６）と（Ｂ７）の処理は、並列して処理されてもよく、逆の順番で処理されてもよい。（Ｂ１）〜（Ｂ９）の処理は、各々のサーバ内のＣＰＵによって処理される。（Ｂ３）の処理で、（Ｂ３−１）が選択された場合、クライアント１１０の更新処理が終了するまで、キャッシュサーバ３００は、クライアントでの処理内容を保持するデータが記憶する。（Ｂ３−２）が選択された場合、クライアント１１０の更新処理が終了するまで、キャッシュサーバ１５０は、クライアントでの処理内容を保持するデータが記憶する。
【００５６】
なお、図１の実施形態で記載した（Ａ５）と、（Ｂ５）の処理において、クライアント１１０には、キャッシュデータ１２３を保持するキャッシュサーバの識別情報が通知される。ここで、クライアント１１０は、通知されたキャッシュサーバが、データの共有が許可されていないキャッシュサーバ３００であるのか、データの共有が許可されているキャッシュサーバ１５０であるのかを判定する。クライアント１１０は、少なくとも、データの共有が許可されているサーバに関する情報を予め保持している。図１の実施形態では、クライアント１１０は、データの共有が許可されていないキャッシュサーバ３００を使用すると判定する。一方、図４の実施形態では、クライアント１１０は、データの共有が許可されているキャッシュサーバ１５０を使用すると判定する。
【００５７】
図４のシステムにおけるキャッシュ管理表１２５は、キャッシュデータ１２３の識別情報と、キャッシュデータ１２３を保持するサーバの識別情報とを対応付けた情報を保持する。更に、キャッシュ管理表１２５は、暗号化されたキャッシュデータ３０２の識別情報と、暗号化されたキャッシュデータ３０２を保持するサーバの識別情報と、秘密鍵とを対応づけた情報を保持する。また、キャッシュサーバ１５０及びクライアント１１０は、秘密鍵１２４と暗号化したキャッシュデータ３０２とを保持してもよい。
【００５８】
図４の実施形態における（Ｂ１）〜（Ｂ９）の処理では、クライアント１１０は、ファイルデータ１３１を更新するために、ファイルサーバ１２０との通信をしない。そのため、クライアント１１０が複数台の場合でも、ファイルサーバ１２０にアクセスが集中することにはならない。
【００５９】
実施形態に係るシステムは、一例であり、クライアント１１０、ファイルサーバ１２０、ディスク装置１３０、キャッシュサーバ１５０、キャッシュサーバ３００の数を限定するものではない。システムは、複数台のクライアント１１０、ファイルサーバ１２０、ディスク装置１３０、キャッシュサーバ１５０、キャッシュサーバ３００を備えてもよい。
【００６０】
図５Ａは、キャッシュデータの書き込み処理の例を説明するフローチャートである。ファイルサーバは、キャッシュデータを書き込むキャッシュ領域を、キャッシュサーバから選択する（ステップＳ１０１）。ファイルサーバは、書き込み対象となるキャッシュ領域を割り当てる（ステップＳ１０２）。ファイルサーバは、書き込みをするキャッシュ領域が、データの共有が許可されているキャッシュサーバかを判定する（ステップＳ１０３）。ファイルサーバは、キャッシュデータを秘密鍵で暗号化する（ステップＳ１０４、ステップＳ１０３でＮＯ）。ファイルサーバは、書き込み先となるサーバにデータを転送する（ステップＳ１０５、ステップＳ１０３でＹＥＳ）。ファイルサーバは、キャッシュ管理表を更新する（ステップＳ１０６）。
【００６１】
図５Ｂは、キャッシュデータの読み込み処理の例を説明するフローチャートである。ファイルサーバは、転送されてくるデータのキャッシュ領域を割り当てる（ステップＳ２０１）。ファイルサーバは、キャッシュデータの取得する（ステップＳ２０２）。ファイルサーバは、取得したキャッシュデータが、データの共有が許可されているキャッシュサーバからの転送かを判定する（ステップＳ２０３）。ファイルサーバは、取得したキャッシュデータを秘密鍵で復号化する（ステップＳ２０４、ステップＳ２０３でＮＯ）。ファイルサーバは、キャッシュデータの読み込み処理を終了する（ステップＳ２０３でＹＥＳ）。
【００６２】
なお、Ｓ１０３やＳ２０３における、データの共有が許可されているキャッシュサーバの識別情報は、キャッシュ管理表を参照することで判断される。
【００６３】
図６は、秘密鍵にファイルデータの一部を使ったシステムの処理の例を説明するフローチャートである。秘密鍵にファイルデータの一部を使ったシステムは、図３の暗号化について記載した一例である。ファイルデータのうち、秘密鍵として用いられるブロックを秘密鍵ブロックとし、秘密鍵として用いられていないブロックをデータブロックと称す。
【００６４】
図６Ａは、ファイルデータ変更に伴った鍵の更新処理の例を説明するフローチャートである。ファイルサーバは、ファイルデータに変更があったかを判定する（ステップＳ３００）。ファイルサーバは、キャッシュサーバ又はクライアントのキャッシュデータの秘密鍵ブロックを除いたデータブロックに変更があったかを判定する（ステップＳ３０１、ステップＳ３００でＹＥＳ）。ファイルサーバは、キャッシュサーバ又はクライアントから秘密鍵ブロックの修正要求を受信する（ステップＳ３０２、ステップＳ３０１でＮＯ）。ファイルサーバは、秘密鍵を保持している全サーバに、秘密鍵の無効化依頼を送信する（ステップＳ３０３）。ファイルサーバは、修正が要求された秘密鍵を使用している暗号化されたデータを保持している全サーバに、暗号化されたデータの無効化依頼を送信する（ステップＳ３０４）。ファイルサーバは、無効化処理が行われる各サーバの処理完了まで待機する（ステップＳ３０５）。ファイルサーバは、秘密鍵ブロックのデータを更新する（ステップＳ３０６）。ファイルサーバは、メモリ領域に、秘密鍵用の領域を割り当てる（ステップＳ３０７）。ファイルサーバは、変更後のデータを使用して、新しい秘密鍵を生成する（ステップＳ３０８）。ファイルサーバは、変更前の秘密鍵を保持していた全サーバに、新しい秘密鍵を生成したことを通知する（ステップＳ３０９）。
【００６５】
ファイルサーバは、キャッシュサーバ又はクライアントから秘密鍵ブロックの修正要求を受信する（ステップＳ３１０、ステップＳ３０１でＹＥＳ）。ファイルサーバは、秘密鍵を保持している全サーバに、キャッシュデータの無効化依頼を送信する（ステップＳ３１１）。ファイルサーバは、無効化処理が行われる各サーバの処理完了まで待機する（ステップＳ３１２）。ファイルサーバは、新しいブロック領域を、無効化依頼を出した全サーバに割り当てる（ステップＳ３１３）。ファイルサーバは、新しいブロック領域に、変更後のデータを書き込む（ステップＳ３１４）。ファイルサーバは、無効化依頼を出した全サーバに、キャッシュブロックの更新が完了したことを通知する（ステップＳ３１５）。ファイルサーバは、鍵の更新処理を終了する（ステップＳ３００でＮＯ）。
【００６６】
なお、Ｓ３０３、Ｓ３０８、Ｓ３１０、Ｓ３１２などにおける、無効化依頼が出力されるサーバは、キャッシュ管理表を参照することで判断される。
【００６７】
図６Ｂは、クライアント側のファイルデータ更新に関する処理の例を説明するフローチャートである。クライアントは、秘密鍵ブロックの修正要求を、ファイルサーバに送信する（ステップＳ４０１）。クライアントは、データブロックに変更があったかを判定する（ステップＳ４０２）。クライアントは、秘密鍵であったデータの変更が完了するのを待つ（ステップＳ４０４、ステップＳ４０２でＮＯ）。クライアントは、キャッシュブロックの更新が完了する通知を待つ（ステップＳ４０３、ステップＳ４０２でＹＥＳ）。
【００６８】
図６Ｃは、クライアント及びキャッシュサーバ側のファイルデータ更新に関する処理の例を説明するフローチャートである。クライアント又はキャッシュサーバは、暗号化されたキャッシュデータ又は秘密鍵の無効化依頼を受信する（ステップＳ５０１）。クライアント又はキャッシュサーバは、メモリ領域内のキャッシュデータや秘密鍵を無効化し、無効化が完了したことを依頼元に通知する（ステップＳ５０２）。クライアント又はキャッシュサーバは、秘密鍵の無効化処理があったかを判定する（ステップＳ５０３）。クライアント又はキャッシュサーバは、キャッシュデータ内の秘密鍵ブロックに変更があったかを判定する（ステップＳ５０４、ステップＳ５０３でＹＥＳ）。クライアント又はキャッシュサーバは、ファイルサーバの新しい秘密鍵領域から新しい秘密鍵を取得する（ステップＳ５０５、ステップＳ５０４でＹＥＳ）。クライアント又はキャッシュサーバは、処理を終了する（ステップＳ５０３でＮＯ、ステップＳ５０４でＮＯ）。
【００６９】
図７は、ＧＰＧＰＵを備えたシステムの例を説明する図である。図７において、図４と同じものは、同一の番号を付している。第２の実施形態に係るクライアント１１０、キャッシュサーバ１５０、ファイルサーバ１２０、キャッシュサーバ３００の各々は、ＧＰＧＰＵ１１３とＩＢ−ＨＣＡ１１４を有する。
【００７０】
ＧＰＧＰＵ（Ｇｅｎｅｒａｌ  Ｐｕｒｐｏｓｅ  Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１３は、アクセレレータコアプロセッサである。アクセレレータコアプロセッサは、例えば、大量のデータに対し同一の演算を行うことに適している。そのため、図７のシステムでは、暗号化や復号化の処理を、ＣＰＵとは別に実装されているＧＰＧＰＵ１１３で処理する。ＩＢ−ＨＣＡ（ＩｎｆｉｎｉＢａｎｄ−Ｈｏｓｔ  Ｃｈａｎｎｅｌ  Ａｄａｐｔｅｒ）１１４は、ＧＰＧＰＵ１１３に対応した通信装置である。アクセレレータコアプロセッサは、ＣＰＵよりも多数のデータに対して同一種類の演算を並列して計算することができるため、暗号化や復号化といった演算処理の高速化に利用できる。
【００７１】
図８は、実施形態に係るシステムの例（その３）を説明する図である。図８において、図４と同じものは、同一の番号を付している。図８のシステムは、図４のシステムに、更に、ノード間データ演算機構１６０を備える。
【００７２】
ノード間データ演算機構１６０は、暗号化や復号化の処理を、各サーバに実装されているＣＰＵとは別に処理する。ノード間データ演算機構１６０を用いた、処理については、図９を用いて説明する。
【００７３】
図９は、ノード間データ演算機構を用いた処理の例を説明する図である。図９のシステムにおける分散ファイルシステム１００は、ファイルサーバ１２０（１２０ａ、１２０ｂ）と、クライアント１１０と、中継装置１４０と、ノード間演算装置１６０を有する。更に、実施形態に係るシステムは、分散ファイルシステム１００から、データの共有が許可されていないキャッシュサーバ３００（３００ａ、３００ｂ）を有する。
【００７４】
ファイルサーバ１２０ａは、キャッシュデータ４１１（４１１ａ〜４１１ｄ）と秘密鍵４１２ａを保持している。ファイルサーバ１２０ｂは、キャッシュデータ４１１（４１１ｂ、４１１ｄ、４１１ｅ、４１１ｆ）と秘密鍵４１２ｃを保持している。クライアント１１０は、キャッシュデータ４１１（４１１ａ、４１１ｃ、４１１ｅ、４１１ｆ）と秘密鍵４１２ｂを保持している。なお、秘密鍵４１２ａは、キャッシュデータ４１１ａとキャッシュデータ４１１ｂの暗号化に用いられる鍵である。秘密鍵４１２ｂは、キャッシュデータ４１１ｃとキャッシュデータ４１１ｅの暗号化に用いられる鍵である。秘密鍵４１２ｃは、キャッシュデータ４１１ｄとキャッシュデータ４１１ｆの暗号化に用いられる鍵である。
【００７５】
一例として、クライアント１１０が、キャッシュデータ４１１ｃを使用する場合の、ノード間演算装置１６０が行う処理について説明する。図７のシステムにおいて、キャッシュデータ４１１ｃは、既に、クライアント１１０に保持されているものとする。
【００７６】
ファイルサーバ１２０ａは、クライアント１１０からキャッシュデータ４１１ｃを使用する要求を受信する。ファイルサーバ１２０ａは、クライアント１１０からキャッシュデータ４１１ｃの暗号化に用いられる秘密鍵４１２ｂを取得する。ファイルサーバ１２０ａは、キャッシュデータ４１１ｃを秘密鍵４１２ｂによって暗号化処理し、暗号化したキャッシュデータをキャッシュサーバ３００ａに転送する指示を、ノード間演算装置１６０に送信する。併せて、ファイルサーバ１２０ａは、キャッシュデータ４１１ｃと秘密鍵４１２ｂを、ノード間演算装置１６０に送信する。ノード間演算装置１６０は、キャッシュデータ４１１ｃを秘密鍵４１２ｂによって暗号化し、暗号化したキャッシュデータ５０１ｃをキャッシュサーバ３００ａに転送する。ファイルサーバ１２０ａは、暗号化したキャッシュデータ５０１ｃを、キャッシュサーバ３００ａに転送されたことを、クライアント１１０に通知する。その後の処理は、図１の実施形態の（Ａ６）〜（Ａ１０）と同様である。なお、ファイルサーバ１２０ａは、キャッシュ管理表１２５を用いて、秘密鍵、キャッシュデータ、暗号化されたキャッシュデータを管理する。キャッシュ管理表１２５は、秘密鍵の識別情報、キャッシュデータを保持しているサーバの識別情報及び、暗号化されたキャッシュデータを保持しているサーバの識別情報を保持する。
【００７７】
次に、ファイルサーバ１２０ａが、暗号化されたキャッシュデータ５０１ｃを、キャッシュサーバ３００ａから取得する処理を説明する。ファイルサーバ１２０ａは、クライアント１１０に対して秘密鍵４１２ｂをノード間演算装置１６０に送信する要求をだす。併せて、ファイルサーバ１２０ａは、キャッシュサーバ３００ａに対して暗号化されたキャッシュデータ５０１ｃをノード間演算装置１６０に送信する要求をだす。ファイルサーバ１２０ａは、ノード間演算装置１６０に対して暗号化されたキャッシュデータ５０１ｃを復号化し、復号化したデータを、ファイルサーバ１２０ａに転送する命令を出す。ノード間演算装置１６０は、暗号化されたキャッシュデータ５０１ｃを復号化し、復号化したデータを、ファイルサーバ１２０ａに転送する。
【００７８】
ファイルサーバ１２０が、自身が保持していないデータを他サーバから取得する場合、ノード間演算装置４０１などで、タイミングの待ち合わせなどが適宜行われる。また、これらの方法は、各ノードの負荷状況、データの配置状況などによって、適宜使用される。
【００７９】
図１０は、ノード間演算装置を用いた暗号化と復号化処理の例を説明するフローチャートである。ファイルサーバは、メモリ領域にデータ領域を割り当てる（ステップＳ６０１）。暗号化と復号化処理を行う指示や、各サーバへの指示を、一対多通信で送信する（ステップＳ６０２）。各種データ転送及び暗号化と復号化処理の指示に対する応答を待つ（ステップＳ６０３）。
【００８０】
＜消失訂正符号を使用したシステム＞
図１１は、消失訂正符号を使用したシステムの例を説明する図である。図１１のシステムは、消失訂正符号を使用することで、キャッシュデータの制御におけるデータの損失を防ぐことができる。図１１のシステムは、消失訂正符号（Ｅｒａｓｕｒｅ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）の冗長シンボルを暗号化されたキャッシュデータとする。図１１は、図１や図４の実施形態における暗号化の一例を説明する図である。図１１のシステムにおける、サーバ間の通信は、図１や図４と同様である。
【００８１】
図１１Ａのシステムは、ファイルサーバ６０１（６０１ａ〜６０１ｍ）と、スイッチ６０２と、キャッシュサーバ７００（７００（ｍ＋１）〜７００（ｍ＋ｋ））を有する。
【００８２】
ファイルサーバ６０１ａは、メモリのキャッシュ領域に、ｄａｔｅ−１１〜ｄａｔｅ−１ｎを有する。ファイルサーバ６０１ｍは、メモリのキャッシュ領域に、ｄａｔｅ−ｍ１〜ｄａｔｅ−ｍｎを有する。ｄａｔｅ−ｍｎにおける、ｍは、ファイルｍを示し、ｎは、ｎ番目のデータブロックを示す。よって、例えば、ｄａｔｅ−１ｎは、ファイルデータ１を複数のブロックに分割したうちの、ｎ番目のデータブロックである。
【００８３】
キャッシュサーバ７００（ｍ＋１）は、メモリのキャッシュ領域に、ｃｏｄｅ−１１〜ｃｏｄｅ−ｍ１を有する。キャッシュサーバ７００（ｍ＋ｋ）は、メモリのキャッシュ領域に、ｃｏｄｅ−１ｋ〜ｃｏｄｅ−ｍｋを有する。ｃｏｄｅは、ファイルサーバ６０１に記憶されているｄａｔｅを暗号化したキャッシュデータである。ｃｏｄｅ−ｍｋにおける、ｍは、ファイルｍを示し、ｋは、ｋ番目の冗長ブロックである。例えば、ｃｏｄｅ−ｍ１は、ファイルデータｍの１番目の冗長ブロックである。
【００８４】
ｃｏｄｅ−１１〜ｃｏｄｅ−ｍｋで示されるキャッシュデータは、ファイルデータの消失訂正コードの冗長ブロックを用いて算出される。例えば、kを１として、ファイルデータを、ａ、ｂの２つのブロックに分割した場合、消失訂正コードの冗長ブロックはビット毎の排他的論理和であり、（ａ  ｘｏｒ  ｂ）となる。｛ａ、ｂ、（ａ  ｘｏｒ  ｂ）｝という３つの組が、元のデータである｛ａ、ｂ｝の消失訂正符号である。（ａ  ｘｏｒ  ｂ）は、キャッシュデータである。
【００８５】
ある消失訂正符号でのｋ個の冗長シンボルからなるブロックをｋ個の異なるキャッシュサーバ７００に保持させている。そのため、冗長ブロックは、１サーバの故障でも、あるファイルデータの暗号化されたキャッシュデータのうち１つのデータしか失われない。
【００８６】
図１１Ｂは、消失訂正符号を使用したキャッシュデータの配置例を説明する図である。図１１Ｂにおいて、図１１Ａと同じものは、同一の番号を付している。
【００８７】
図１１Ｂの例においてファイルサーバ６０１ａは、メモリのキャッシュ領域に、ｄａｔｅ−１１〜ｄａｔｅ−１ｎを有する。更に、ファイルサーバ６０１ａは、メモリのキャッシュ領域に、ｃｏｄｅ−１１〜ｃｏｄｅ−ｍ１を有する。ファイルサーバ６０１ｍは、メモリのキャッシュ領域に、ｄａｔｅ−ｍ１〜ｄａｔｅ−ｍｎを有する。更に、ファイルサーバ６０１ｍは、メモリのキャッシュ領域に、ｃｏｄｅ−１ｍ〜ｃｏｄｅ−（ｍ−１）ｍを有する。
【００８８】
キャッシュサーバ７００（ｍ＋１）は、メモリのキャッシュ領域に、ｃｏｄｅ−１（ｍ＋１）〜ｃｏｄｅ−ｍ（ｍ＋１）を有する。キャッシュサーバ７００（ｍ＋ｋ）は、メモリのキャッシュ領域に、ｃｏｄｅ−１（ｍ＋ｋ）〜ｃｏｄｅ−ｍ（ｍ＋ｋ）を有する。
【００８９】
図１１Ｂのシステムは、１つのファイルをｎ個に分割し、更に、ｎ個のシンボルに対してｋ個の冗長シンボルのブロックが配置されている。この冗長ブロックを多重化して配置した場合、使用されるメモリ領域は、元データのサイズの１＋ｋ倍である。一方図１１Ｂのように、ｎ＋ｋ個のブロックをｎ＋ｋ個のノードに、１つずつ配置してもよい。この場合、メモリ領域は、元データの１＋（ｋ／ｎ）倍であり、冗長ブロックを多重化して使用するよりもメモリ使用量は少ない。またファイルサーバ６０１にも冗長ブロックを配置することで、システム故障への耐性向上を図ることができる。
図１１のシステムに使用される消失訂正符号でのシンボルは、データを固定長のビットフィールドに分割した後の各ビットフィールドである。シンボルは、ｒビットのフィールを、ｑ＝２＾ｒとして有限体ＧＦ（ｑ）の要素と対応づけて扱われる。また、例えば、素数ｐと自然数ｓについて、ｑ´＝ｐ＾ｓとして有限体ＧＦ（ｑ´）の要素をシンボルと対応付けてもよい。この場合、ｑ´＞ｑの関係となる。
【００９０】
消失訂正符号は、有限体ＧＦ（ｑ）を使用して生成することができる。図１１のシステムに使用される消失訂正符号は、以下に記載する性質を持つ行列又は行列の列・行ベクトルの組を有する。
【００９１】
ＧＦ（ｑ）の要素を使用したｎ行ｎ＋ｋ列の行列で、ｎ＋ｋ個の列ベクトルから任意のｎ個が線形独立。
【００９２】
ＧＦ（ｑ）の要素を使用したｎ行ｎ＋ｋ列の行列で、ｎ＋ｋ個の行ベクトルから任意のｎ個が線形独立。
【００９３】
上に示す性質を持つ有限体ＧＦ（ｑ）は、ｎ個のシンボルに、ｋ個の冗長シンボルを加えたｎ＋ｋ個のシンボルのうち、任意のｎ個から元のｎ個のシンボルが復元可能な行列である。
【００９４】
ｑ個の要素を持つ有限体ＧＦ（ｑ）上のｎ次元ベクトルｎ＋ｋ個からなる集合Ｔで、任意のｎ個を取った部分集合Ｓのベクトルが線形独立になるという性質を持つものであれば、集合Ｔに対応した消失訂正符号を得ることができる。
【００９５】
集合Ｔの要素を並べた（ｎ、（ｎ＋ｋ））行列をＡとする。
Ａの先頭のｎ列からなる正方行列をＢとする。
Ｂの逆行列をＣとする。
ＡにＣをかけて得られる行列Ｃ＊Ａを、Ｄとする。
【００９６】
元のデータをｎ分割したブロックを並べたベクトルに行列Ｄをかけることで、消失訂正符号であるｎ＋ｋ個のブロックを得ることができる。Ｄの先頭ｎ列の単位行列が元のデータのブロックに対応し、残りの列が冗長シンボルに対応している。
【００９７】
図１２は、消失訂正符号を使用したシステムにおけるデータ転送の例を説明する図である。図１２のシステムは、中継ノード７０１、送信ノード７０２、中継ノード７０３、受信ノード７０４、中継ノード７０５、受信ノード７０６を有する。図１２のシステムは、同じキャッシュデータを、２以上のノードに送信し、更に、送信元データのあるノードから送信先ノードまでの経路で３つ以上のバンド幅があるノードを含む場合、消失訂正符号に変換したデータを中継ノードに保持させるという特徴を有する。元データを等しい長さのｎ個のブロックに分割したｎ個のブロックの集合を、Ｓとする。図１２のシステムに用いられる消失訂正符号は、Ｓに全て同じ長さの冗長ブロックｋ個を加えたｎ＋ｋ個のブロックの集合Ｔが、Ｔの中の任意のｎ個のブロックがあれば元データ全体を復元可能という性質を有する。例えば、ｎ＝２、ｋ＝１の場合、排他的論理和は元データ全体を復元可能な性質を持つ消失訂正符号となる。
【００９８】
図１２のシステム７１１は、消失訂正符号に変換したデータを中継ノードに保持させた場合の例である。図１２の例のａ及びｂは、送信元となるデータを２等分した後のデータである。中継ノード７０５は、ａ、ｂ、（ａ  ｘｏｒ  ｂ）の３種類のデータを保持する。なお、図１２のシステム７１１の中継ノード７０５は、データａ及びデータｂを共有する権限のないノードである。
【００９９】
送信ノード７０２は、中継ノード７０１にデータａを、中継ノード７０５にデータ（ａ  ｘｏｒ  ｂ）を、中継ノード７０３にデータｂを送信する。受信ノード７０４は、中継ノード７０１からデータａを受信し、更に、中継ノード７０５からデータ（ａ  ｘｏｒ  ｂ）を受信する。受信ノード７０４は、受信したデータからデータａ及びデータｂを取得できる。受信ノード７０６は、中継ノード７０３からデータｂを受信し、更に、中継ノード７０５からデータ（ａ  ｘｏｒ  ｂ）を受信する。受信ノード７０６は、受信したデータからデータａ及びデータｂを取得できる。
【０１００】
図１２のシステム７１２〜システム７１４は、消失訂正符号を使用しないシステムの例である。図１２のシステム７１２〜システム７１４の中継ノード７０５は、データａ及びデータｂを共有する権限のあるノードである。
【０１０１】
図１２のシステム７１２のシステムにおいて、送信ノード７０２は、中継ノード７０１にデータａを、中継ノード７０３にデータｂを送信する。受信ノード７０４は、中継ノード７０１からデータaを受信し、受信したデータａを、中継ノード７０５に送信する。一方、受信ノード７０６は、中継ノード７０３からデータｂを受信し、受信したデータｂを、中継ノード７０５に送信する。中継ノード７０５は、受信ノード７０４からデータａを受信し、受信したデータａを受信ノード７０６に送信する。併せて、中継ノード７０５は、受信ノード７０６からデータｂを受信し、受信したデータｂを受信ノード７０４に送信する。これらの処理によって、受信ノード７０４及び受信７０６は、データａ及びデータｂを取得できる。
【０１０２】
図１２のシステム７１３のシステムにおいて、送信ノード７０２は、中継ノード７０１にデータａを、中継ノード７０３にデータｂを、中継ノード７０５にデータａを送信する。受信ノード７０４は、中継ノード７０１からデータaを受信する。受信ノード７０６は、中継ノード７０３からデータｂを受信し、受信したデータｂを、中継ノード７０５に送信する。中継ノード７０５は、送信ノード７０２からデータａを受信し、受信したデータａを受信ノード７０６に送信する。併せて、中継ノード７０５は、受信ノード７０６からデータｂを受信し、受信したデータｂを受信ノード７０４に送信する。これらの処理によって、受信ノード７０４及び受信７０６は、データａ及びデータｂを取得できる。
【０１０３】
図１２のシステム７１４のシステムにおいて、送信ノード７０２は、中継ノード７０１にデータａを、中継ノード７０３にデータaを、中継ノード７０５にデータｂを送信する。中継ノード７０５は、送信ノード７０２からデータｂを受信し、受信したデータｂを受信ノード７０４及び受信ノード７０６に送信する。受信ノード７０４は、中継ノード７０１からデータａを、中継ノード７０５からデータｂを受信する。受信ノード７０６は、中継ノード７０３からデータａを、中継ノード７０５からデータｂを受信する。これらの処理によって、受信ノード７０４及び受信７０６は、データａ及びデータｂを取得できる。
【０１０４】
図１２のシステム７１１の中継ノード７０５は、図１２のシステム７１２〜システム７１４と異なり、データａ及びデータｂを共有する権限のないノードを使用できる。図９のシステム７１１は、明確に、図１２のシステム７１２とのシステム７１３よりも高い転送効率を実現している。図９のシステム７１１及び図９のシステム７１４では、消失訂正符号を使用したほうがいい環境であるか、又は、送信コストなどを考慮して、最適な転送効率を算出するようにすればよい。
【０１０５】
図１３は、転送ルートを選択する処理を説明するフローチャートである。送信ノードは、データを共有する権限のないノードを含め、消失訂正符号を使用するか否かに関わらず送信するルートのパターンの情報を収集する（ステップＳ７０１）。送信ノードは、パターンから最小コストのパターンを選択する（ステップＳ７０２）。送信ノードは、消失訂正符号を使用しないパターンが選択されたかを判定する（ステップＳ７０３）。送信ノードは、消失訂正符号を使用しないパターンを使用する（ステップＳ７０４、ステップＳ７０３でＹＥＳ）。送信ノードは、消失訂正符号を使用する最小コストのパターンを使用する（ステップＳ７０５、ステップＳ７０３でＮＯ）。
【０１０６】
＜辞書式の圧縮アルゴリズムを使用したシステム＞
図１４は、辞書式の圧縮アルゴリズムによる暗号化の例を説明するフローチャートである。ファイルの一部のブロックの内容を、ファイルの暗号化に用いる方式には、例えば、辞書式と称される圧縮アルゴリズムを用いてもよい。辞書式の圧縮アルゴリズムでは、ファイルの全部または一部のブロックの内容を可逆圧縮し、秘密鍵を取り除いた部分を暗号化したキャッシュデータとする。図１４は、図１や図４の実施形態における暗号化の一例説明する図である。そのため、辞書式の圧縮アルゴリズムを用いたシステムにおいて、サーバ間の通信は、図１や図４と同様である。
【０１０７】
圧縮だけでは、セキュリティの観点から不十分であるため、ファイルにアクセスする権限のないサーバに暗号化されたキャッシュデータを保持させる場合、圧縮以外の暗号化方法を併用するのが好ましい。
【０１０８】
ノードは、暗号化するファイルを辞書式圧縮法で、可逆圧縮する（ステップＳ８０１）。ノードは、辞書部分を含むファイルのブロックを、ファイルにアクセスする権限のあるサーバのキャッシュに送信する（ステップＳ８０２）。ノードは、圧縮以外の暗号化手段に用いられる秘密鍵を作成するかを判定する（ステップＳ８０３）。ノードは、秘密鍵を生成する（ステップＳ８０４、ステップＳ８０３でＹＥＳ）。ノードは、生成した秘密鍵を用いてファイルを暗号化する（ステップＳ８０５）。ノードは、暗号化されたキャッシュデータを、ファイルへのアクセス権限のないサーバに配置する（ステップＳ８０６）。処理を終了する（ステップＳ８０６が終了後、ステップＳ８０３でＮＯ）。
【０１０９】
＜ノード間で共通なファイルの一部を用いた暗号を使用したシステム＞
図１５は、ノード間で共通なファイルの一部を用いた暗号化の例を説明するフローチャートである。図１５は、図１や図４の実施形態における暗号化の一例を説明する図である。そのため、ノード間で共通なファイルの一部を暗号かに用いたシステムにおいて、サーバ間の通信は、図１や図４と同様である。共有するファイルにアクセスする権限のあるノードにファイルを配置する場合、秘密鍵として、それらのノード間で共通な別のファイルの一部を用いてもよい。
【０１１０】
ファイルデータを保持しているノードは、暗号化したキャッシュデータを送信する先のノード間で、共通のファイルが存在するかを判定する（ステップＳ９０１）。ノードは、共通のファイルから１ブロック選択する（ステップＳ９０２、ステップＳ９０１でＹＥＳ）。ノードは、選択したブロックを秘密鍵とする（ステップＳ９０３）。ノードは、他のファイルに依存しない秘密鍵を生成する（ステップＳ９０４、ステップＳ９０１でＮＯ）。ノードは、処理を終了する（ステップＳ９０３が終了後、及びステップＳ９０４終了後）。
【０１１１】
なお、図１４、図１５で説明に用いているノードは、ファイルサーバ、クライアントサーバのどちらでもよい。
【符号の説明】
【０１１２】
１００  分散ファイルシステム
１１０  クライアント
１２０  ファイルサーバ
１２３  キャッシュデータ
１２４  秘密鍵
１２５  キャッシュ管理表
１３０  ディスク装置
１３１  ファイルデータ
１４０  中継装置
１５０  キャッシュサーバ
３００  キャッシュサーバ
３０２  暗号化されたキャッシュデータ
【図１】
2015097345.tif 000003
【図２】
2015097345.tif 000004
【図３】
2015097345.tif 000005
【図４】
2015097345.tif 000006
【図５Ａ】
2015097345.tif 000007
【図５Ｂ】
2015097345.tif 000008
【図６Ａ】
2015097345.tif 000009
【図６Ｂ】
2015097345.tif 000010
【図６Ｃ】
2015097345.tif 000011
【図７】
2015097345.tif 000012
【図８】
2015097345.tif 000013
【図９】
2015097345.tif 000014
【図１０】
2015097345.tif 000015
【図１１Ａ】
2015097345.tif 000016
【図１１Ｂ】
2015097345.tif 000017
【図１２】
2015097345.tif 000018
【図１３】
2015097345.tif 000019
【図１４】
2015097345.tif 000020
【図１５】
2015097345.tif 000021