(57)【要約】【課題】キャッシュ可能なデータを効率的に登録できるようにする。【解決手段】中継部３１０は、キャッシュ登録要求処理部３７０が受信したキャッシュ登録要求に含まれているインデックスの指定するデータをストレージ装置１０から読み込む。識別子生成部３６０は、このデータの内容に対応する識別子を生成する。キャッシュ登録部３２０ａは、このデータを、生成された識別子に対応付けてキャッシュ格納部３８０に格納し、且つ当該識別子を当該データを指定するインデックスに対応付けてテーブル３３０に登録する。インデックス登録部３２０ｄは、キャッシュミスヒット時、読み書き要求に含まれているインデックスの指定するデータの内容に対応する識別子に対応付けて、同一のデータがキャッシュ格納部３８０に格納されている場合、当該識別子を、このインデックスに対応付けてテーブル３３０に登録する。【選択図】    図３
2010211607.tif 000002
【特許請求の範囲】
【請求項１】
データを格納する第１の装置と前記第１の装置に対して読み書きアクセスを行う第２の装置との間のデータ転送のための通信を中継する中継装置において、
前記第１の装置に格納されているデータを、当該データの内容に対応する識別子に対応付けて格納するためのキャッシュ格納手段と、
前記キャッシュ格納手段に格納されるデータの内容に対応する識別子を、前記第１の装置における当該データを指定するインデックスに対応付けて保持するためのキャッシュインデックステーブルと、
第３の装置から送信される、インデックスを含むキャッシュ登録要求を受信するキャッシュ登録要求受信手段と、
前記第１の装置と前記第２の装置との間のデータ転送のための通信を中継する中継手段であって、前記キャッシュ登録要求受信手段が前記キャッシュ登録要求を受信した第１の場合、当該キャッシュ登録要求に含まれているインデックスの指定する第１のデータを前記第１の装置から読み込み、前記第２の装置から前記第１の装置に読み書きアクセスするためのインデックスを含む読み書き要求を受信した第２の場合には、当該読み書き要求に含まれているインデックスに対応する第２のデータを前記第２の装置との間で入出力する中継手段と、
要求されたデータの内容に対応する識別子を生成する識別子生成手段と、
前記第１の場合、前記第１のデータの内容に対応する識別子を前記識別子生成手段により生成させ、前記第１のデータを前記生成された識別子に対応付けて前記キャッシュ格納手段に格納し、且つ前記生成された識別子を、前記第１のデータを指定するインデックスに対応付けて前記キャッシュインデックステーブルに登録するキャッシュ登録手段と、
前記第２の場合、前記読み書き要求に含まれている前記インデックスに対応付けて前記キャッシュインデックステーブルに識別子が登録され、且つ当該識別子と同一の識別子が前記キャッシュ格納手段に登録されているかによって、キャッシュヒットであるかを判定するキャッシュヒット判定手段と、
キャッシュヒットでないと判定された場合、前記読み書き要求を前記中継手段により前記第１の装置に中継させることによって、前記読み書き要求に含まれている前記インデックスの指定する前記第２のデータを前記中継手段に取得させて前記中継手段により前記第２の装置に中継させる中継制御手段と、
前記中継手段によって中継される前記第２のデータの内容に対応する識別子を前記識別子生成手段により生成させ、当該生成された識別子に対応付けて前記キャッシュ格納手段に前記第２のデータと同一のデータが格納されている場合、当該生成された識別子を、前記読み書き要求に含まれている前記インデックスに対応付けて前記キャッシュインデックステーブルに登録するインデックス登録手段と
を具備することを特徴とする中継装置。
【請求項２】
前記キャッシュ格納手段は、
前記第１の装置に格納されているデータを格納するためのキャッシュデータ格納手段と、
前記キャッシュデータ格納手段に格納されるデータの内容に対応する識別子に対応付けて当該データの前記キャッシュデータ格納手段における格納位置を示す格納位置情報を保持するためのキャッシュデータテーブルとから構成され、
前記キャッシュ登録手段は、前記第１のデータを前記キャッシュデータ格納手段に格納し、前記第１のデータの前記キャッシュデータ格納手段における格納位置を示す格納位置情報を前記第１のデータの内容に対応する前記生成された識別子に対応付けて前記キャッシュデータテーブルに登録することにより、前記第１のデータを前記生成された識別子に対応付けて前記キャッシュ格納手段に格納する
ことを特徴とする請求項１記載の中継装置。
【請求項３】
前記受信されたキャッシュ登録要求に含まれているインデックスの指定する前記第１のデータを前記第１の装置から読み込むためのリード命令を生成し、前記中継手段が中継している前記第１の装置と前記第２の装置との間の通信の中に、当該生成したリード命令を挿入させるキャッシュ登録要求処理手段を更に具備することを特徴とする請求項１または２に記載の中継装置。
【請求項４】
前記キャッシュ登録要求処理手段は、前記キャッシュ登録要求が受信された際に前記中継手段が前記第１の装置と前記第２の装置との間の通信を中継していない場合、前記第３の装置に対して前記キャッシュ登録要求の実行未完了を通知するための応答を返し、当該通信の中継の開始後に当該通信の中に前記リード命令を挿入させることを特徴とする請求項３記載の中継装置。
【請求項５】
前記第２の装置は、前記第３の装置を含むことを特徴とする請求項１乃至４のいずれかに記載の中継装置。
【請求項６】
データを格納する第１の装置と前記第１の装置に対して読み書きアクセスを行う第２の装置との間のデータ転送のための通信を中継する、キャッシュ格納手段及びキャッシュインデックステーブルを備えた中継装置によって実行される同装置にキャッシュデータを登録するための方法であって、
第３の装置から前記中継装置に前記第１の装置に格納されている第１のデータを指定するインデックスを含むキャッシュ登録要求が送信された場合、当該キャッシュ登録要求を受信するステップと、
前記受信されたキャッシュ登録要求に含まれているインデックスの指定する前記第１のデータを前記第１の装置から読み込むステップと、
前記読み込まれた第１のデータの内容に対応する識別子を生成する第１の識別子生成ステップと、
前記読み込まれた第１のデータを、前記第１の識別子生成ステップで生成された識別子に対応付けて前記キャッシュ格納手段に格納し、且つ前記生成された識別子を、前記第１のデータを指定するインデックスに対応付けて前記キャッシュインデックステーブルに登録するキャッシュ登録ステップと、
前記第２の装置から前記第１の装置に読み書きアクセスするためのインデックスを含む読み書き要求が前記中継装置に送信された場合、前記読み書き要求を受信するステップと、
前記読み書き要求に含まれている前記インデックスに対応付けて前記キャッシュインデックステーブルに識別子が登録され、且つ当該識別子と同一の識別子が前記キャッシュ格納手段に登録されているかによって、キャッシュヒットであるかを判定するステップと、
キャッシュヒットでないと判定された場合、前記読み書き要求を前記第１の装置に中継することにより、前記読み書き要求に含まれている前記インデックスの指定する第２のデータを前記第１の装置から取得するステップと、
前記取得された第２のデータを前記第２の装置に中継するステップと、
前記第２のデータの内容に対応する識別子を生成する第２の識別子生成ステップと、
前記第２の識別子ステップで生成された識別子に対応付けて前記キャッシュ格納手段に前記第２のデータと同一のデータが格納されている場合、当該生成された識別子を、前記読み書き要求に含まれている前記インデックスに対応付けて前記キャッシュインデックステーブルに登録するステップと
を具備することを特徴とする中継装置にキャッシュデータを登録するための方法。
【請求項７】
前記キャッシュ格納手段は、
前記第１の装置に格納されているデータを格納するためのキャッシュデータ格納手段と、
前記キャッシュデータ格納手段に格納されるデータの内容に対応する識別子に対応付けて当該データの前記キャッシュデータ格納手段における格納位置を示す格納位置情報を保持するためのキャッシュデータテーブルとから構成され、
前記キャッシュ登録ステップは、
前記第１のデータを前記キャッシュデータ格納手段に格納するステップと、
前記第１のデータの前記キャッシュデータ格納手段における格納位置を示す格納位置情報を前記第１の識別子生成ステップで生成された識別子に対応付けて前記キャッシュデータテーブルに登録するステップとを含む
ことを特徴とする請求項６記載の中継装置にキャッシュデータを登録するための方法。
【請求項８】
前記読み込むステップは、
前記受信されたキャッシュ登録要求に含まれているインデックスの指定する前記第１のデータを前記第１の装置から読み込むためのリード命令を生成するステップと、
前記生成されたリード命令を、前記中継手段が中継している前記第１の装置と前記第２の装置との間の通信の中に挿入するステップと
を含むことを特徴とする請求項６または７に記載の中継装置にキャッシュデータを登録するための方法。
【請求項９】
前記読み込むステップは、前記キャッシュ登録要求が受信された際に前記中継装置が前記第１の装置と前記第２の装置との間の通信を中継していない場合、前記第３の装置に対して前記キャッシュ登録要求の実行未完了通知するための応答を返すステップを更に含み、
前記実行未完了を示す応答が返された場合、前記挿入するステップが、前記通信の中継の開始後に実行される
ことを特徴とする請求項８記載の中継装置にキャッシュデータを登録するための方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを格納する第１の装置と当該第１の装置に対して読み書きアクセスを行う第２の装置との間のデータ転送のための通信を中継する中継装置に係り、特にキャッシュ可能なデータをキャッシュデータとして登録するのに好適な中継装置及び同装置にキャッシュデータを登録するための方法に関する。
【背景技術】
【０００２】
昨今、例えば、企業や官公庁においてクライアント装置として用いられるクライアントパーソナルコンピュータ（以下、クライアントＰＣと称する）からの情報漏洩が問題となっている。そこで、クライアントＰＣに情報の持ち出しをさせないようにするためのコンピュータシステムとして、シンクライアントシステムが注目されいてる。
【０００３】
シンクライアントシステムは、その実現方法から幾つかの種類に分類される。シンクライアントシステムの１つとして、ネットワークブート型シンクライアントシステムが知られている。ネットワークブート型シンクライアントシステムでは、物理的に情報漏洩の心配の少ないサーバルームなどにストレージ装置が配置される。クライアントＰＣは、このストレージ装置との間でＮＦＳ（Network File System)やＣＩＦＳ（Common Internet File System）、或いはｉＳＣＳＩ（internet Small Computer System Interface）などの通信プロトコルを利用して、当該ストレージ装置から直接ＯＳ（Operating System）をブートする。
【０００４】
ネットワークブート型シンクライアントシステムの課題の１つとして、クライアントＰＣとストレージ装置との間がＷＡＮ（Wide Area Network）で接続されているような環境では、ＷＡＮの回線速度の遅さがネックとなって、導入が難しいことが知られている。そこで、ＷＷＷ（World Wide Web）の世界におけるプロキシ（Proxy）のように、ストレージ装置とクライアントＰＣとの間に中継装置（ノード装置）を導入し、中継装置によって中継されるデータをキャッシュデータとして、当該中継装置上でキャッシュ用のデータ格納手段（キャッシュデータ格納手段）に格納するためのキャッシュ制御を行うことで、負荷分散を行い、性能を向上させる手法が提案されている。しかし、中継装置でキャッシュ制御を行うことにより生じる新たな課題として、キャッシュデータ格納手段からの情報漏洩に対する対策をどのように実現するか、ということを検討しなければならない。
【０００５】
例えば特許文献１には、中継装置のキャッシュデータ格納手段からの情報漏洩に対する対策を実現するための技術が記載されている。この特許文献１に記載の技術では、クライアントＰＣまたはストレージ装置は、中継装置によって中継されるデータについて、キャッシュの可否を示す属性情報を出力する。中継装置は、この属性情報に基づいて中継するデータのキャッシュの可否を判断し、キャッシュ否と判断されたデータ（例えば機密データ）については、キャッシュデータ格納手段に格納せずに、つまりキャッシュせずに、中継のみを行う。このような特許文献１に記載の技術によれば、機密データを中継装置にキャッシュすることを禁止できるため、当該機密データが中継装置（のキャッシュデータ格納手段）から漏洩するのを防止できる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−２８７４７６号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記特許文献１には、クライアント装置とストレージ装置との間でデータが転送される都度、当該データのキャッシュの可否を示す属性情報が、当該データ（のヘッダ）に付加されて中継装置に通知されること（以下、第１の手法と称する）が記載されている。また特許文献１には、ストレージ装置においてデータ毎に管理されている属性情報が、データの転送とは別に、ストレージ装置から中継装置に通知されること（以下、第２の手法と称する）も記載されている。
【０００８】
第１の手法は、クライアント装置とストレージ装置との間でデータが転送される都度、属性情報を通知しなければならないという問題がある。一方、第２の手法は、データ毎に管理されている属性情報を、データ転送とは別に、ストレージ装置から中継装置に通知（転送）しなければならないという問題がある。
【０００９】
本発明は上記事情を考慮してなされたものでその目的は、データのキャッシュの可否を示す属性情報の中継装置への通知を必要とすることなく、キャッシュ可能なデータを効率的に登録できる中継装置及び同装置にキャッシュデータを登録するための方法を提供することにある。
【課題を解決するための手段】
【００１０】
本発明の１つの観点によれば、データを格納する第１の装置と前記第１の装置に対して読み書きアクセスを行う第２の装置との間のデータ転送のための通信を中継する中継装置が提供される。この中継装置は、前記第１の装置に格納されているデータを、当該データの内容に対応する識別子に対応付けて格納するためのキャッシュ格納手段と、前記キャッシュ格納手段に格納されるデータの内容に対応する識別子を、前記第１の装置における当該データを指定するインデックスに対応付けて保持するためのキャッシュインデックステーブルと、第３の装置から送信される、インデックスを含むキャッシュ登録要求を受信するキャッシュ登録要求受信手段と、前記第１の装置と前記第２の装置との間のデータ転送のための通信を中継する中継手段であって、前記キャッシュ登録要求受信手段が前記キャッシュ登録要求を受信した第１の場合、当該キャッシュ登録要求に含まれているインデックスの指定する第１のデータを前記第１の装置から読み込み、前記第２の装置から前記第１の装置に読み書きアクセスするためのインデックスを含む読み書き要求を受信した第２の場合には、当該読み書き要求に含まれているインデックスに対応する第２のデータを前記第２の装置との間で入出力する中継手段と、要求されたデータの内容に対応する識別子を生成する識別子生成手段と、前記第１の場合、前記第１のデータの内容に対応する識別子を前記識別子生成手段により生成させ、前記第１のデータを前記生成された識別子に対応付けて前記キャッシュ格納手段に格納し、且つ前記生成された識別子を、前記第１のデータを指定するインデックスに対応付けて前記キャッシュインデックステーブルに登録するキャッシュ登録手段と、前記第２の場合、前記読み書き要求に含まれている前記インデックスに対応付けて前記キャッシュインデックステーブルに識別子が登録され、且つ当該識別子と同一の識別子が前記キャッシュ格納手段に登録されているかによって、キャッシュヒットであるかを判定するキャッシュヒット判定手段と、キャッシュヒットでないと判定された場合、前記読み書き要求を前記中継手段により前記第１の装置に中継させることによって、前記読み書き要求に含まれている前記インデックスの指定する前記第２のデータを前記中継手段に取得させて前記中継手段により前記第２の装置に中継させる中継制御手段と、前記中継手段によって中継される前記第２のデータの内容に対応する識別子を前記識別子生成手段により生成させ、当該生成された識別子に対応付けて前記キャッシュ格納手段に前記第２のデータと同一のデータが格納されている場合、当該生成された識別子を、前記読み書き要求に含まれている前記インデックスに対応付けて前記キャッシュインデックステーブルに登録するインデックス登録手段とを具備することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、データのキャッシュの可否を示す情報の中継装置への通知を必要とすることなく、キャッシュ可能なデータを効率的に登録できる。特に本発明によれば、キャッシュ登録要求に応じて、当該キャッシュ登録要求に含まれているインデックスで指定されたデータの内容に対応する識別子が、当該インデックスに対応付けてキャッシュインデックステーブルに登録され、且つ当該データが当該識別子に対応付けてキャッシュ格納手段に格納されると、つまりキャッシュデータとして登録されると、以後、第２の装置からの読み書き要求に別のインデックスが含まれていても、当該別のインデックスによって指定されるデータ（つまり読み書き要求によって指定されるデータ）と同一のデータが、当該同一のデータの内容に対応する識別子に対応付けて既にキャッシュデータとして登録されているならば、当該指定されるデータもキャッシュデータとして自動的に登録される。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態に係るコンピュータシステムの全体構成を示すブロック図。
【図２】図１に示されるストレージ装置及び中継装置に用いられるコンピュータの基本構成を示すブロック図。
【図３】同実施形態におけるストレージ装置、クライアント装置及び中継装置の機能構成を示すブロック図。
【図４】同実施形態におけるキャッシュインデックステーブルのデータ構造例を示す図。
【図５】同実施形態におけるキャッシュデータテーブルのデータ構造例を示す図。
【図６】キャッシュインデックステーブル、キャッシュデータテーブル及びキャッシュデータ格納部の関係について説明するための図。
【図７】同実施形態におけるキャッシュ登録動作の手順を示すフローチャート。
【図８】同実施形態においてクライアント装置がストレージ装置よりデータを読み込む場合の中継装置の処理手順を示すフローチャート。
【図９】同実施形態におけるキャッシュインデックステーブルへの登録処理の手順を示すフローチャート。
【図１０】同実施形態の変形例におけるキャッシュ登録動作の手順を示すフローチャート。
【図１１】同変形例におけるセッション取得処理の手順を示すフローチャート。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態につき図面を参照して説明する。  
＜システム構成＞
図１は本発明の一実施形態に係るコンピュータシステムの全体構成を示すブロック図である。このコンピュータシステムは、例えばシンクライアントシステム（更に詳細には、ネットワークブート型シンクライアントシステム）である。図１に示すシステムは、ストレージ装置（第１の装置）１０と、クライアント装置（第２の装置）２０を含む複数のクライアント装置と、中継装置３０とから構成される。なお、図１において、クライアント装置２０以外のクライアント装置は便宜的に省略されている。
【００１４】
ストレージ装置１０は、各種データを格納するｎ個のディスクボリューム１００-1〜１００-n（図３参照）を有する。本実施形態において、ｎ個のディスクボリューム１００-1〜１００-nは、クライアント装置２０を含むｎ台のクライアント装置にそれぞれ対応付けて用意されるものとする。ここでは、ディスクボリューム１００-1がクライアント装置２０に対応付けられているものとする。ストレージ装置１０は、クライアント装置２０を含む複数のクライアント装置の各々に対して、対応するディスクボリュームへのアクセスを提供する。ストレージ装置１０は、例えばｉＳＣＳＩでのターゲット（Target）としての機能を持つ。
【００１５】
なお、ディスクボリューム１００-1〜１００-nがクライアント装置２０を含む複数のクライアント装置を利用する例えばｎ人のユーザにそれぞれ対応付けて用意されるものであっても構わない。また、１つのクライアント装置（一人のユーザ）に複数のディスクボリュームが対応付けられていてもよく、ｎ台のクライアント装置（ｎ人のユーザ）にそれぞれ対応付けられるディスクボリュームの数がクライアント装置（ユーザ）毎に異なっていても構わない。
【００１６】
クライアント装置２０は、ストレージ装置１０に対してアクセスする。更に詳細に述べるならば、ストレージ装置１０内のディスクボリューム１００-1〜１００-nのうち、自身に対応付けられているディスクボリューム（ここでは、ディスクボリューム１００-1）に対してアクセスする。クライアント装置２０は、例えばｉＳＣＳＩでのイニシエータ（Initiator）として機能する。
【００１７】
中継装置３０は、クライアント装置２０を含む複数のクライアント装置（イニシエータ）とストレージ装置１０（ターゲット）との間の通信、例えばｉＳＣＳＩプロトコルによるデータ転送を中継する。ｉＳＣＳＩプロトコルは、ＴＣＰ（Transmission Control Protocol）／ＩＰ（Internet Protocol）を用いて、ストレージ装置１０で利用されているＳＣＳＩプロトコルを搬送するためのプロトコルである。中継装置３０は、ｉＳＣＳＩプロトコルによるデータ転送を中継する際に、転送されるデータのキャッシュ制御を行う。
【００１８】
本実施形態において、ストレージ装置１０及び中継装置３０はコンピュータを用いて実現される。図２は、このようなコンピュータの基本構成を示すブロック図である。図２に示されるように、コンピュータは、少なくとも１つの処理ユニット２１、主記憶装置２２、補助記憶装置２３、通信機構２４及び入出力装置２５の周知のハードウェア構成を有する。補助記憶装置２３は、例えばハードディスクドライブを用いて構成される。補助記憶装置２３には、処理ユニット２１によって実行されるプログラムを格納することができる。通信機構２４は、ｉＳＣＳＩプロトコルによるデータ転送のための通信を行う。
【００１９】
クライアント装置２０もまたコンピュータを用いて実現される。但しクライアント装置２０は、図２に示される補助記憶装置２３を含まないものとする。つまりクライアント装置２０は、図２に示されるコンピュータのハードウェア構成のうち、補助記憶装置２３を除くハードウェア構成を有する。このためクライアント装置２０においては、処理ユニット２１によって実行されるプログラムのうち、例えばストレージ装置１０から転送されるプログラム（本実施形態ではＯＳを含むプログラム）は主記憶装置２２に格納される。なお、クライアント装置２０から中継装置３０に後述するキャッシュ登録を要求するためのプログラム（以下、特定プログラムと称する）は、例えばＲＯＭに予め格納されている。
【００２０】
図３は、図１のシステムにおけるストレージ装置１０、クライアント装置２０及び中継装置３０の機能構成を示すブロック図である。  
図３において、ストレージ装置１０は、ディスクボリューム１００-1〜１００-nを有する。各ディスクボリューム１００-i（ｉ＝１〜ｎ）は、図２に示される補助記憶装置２３の記憶領域を用いて実現される。本実施形態において、各ディスクボリューム１００-iは、論理アドレス空間を提供する論理ユニット（論理ボリューム）である。各ディスクボリューム１００-iには、ディスクボリューム番号ＤＶＮと呼ばれる固有のＩＤ（シリアル番号）が割り当てられる。
【００２１】
クライアント装置２０は、ドライバ・ファイルシステム２１０と、キャッシュ登録データ選択・要求送信部２２０とを有する。本実施形態おいて、ドライバ・ファイルシステム２１０は、クライアント装置２０が、図２に示される構成から補助記憶装置２３を除いたハードウェア構成のコンピュータから構成される場合に、当該コンピュータ内の処理ユニット２１が、ストレージ装置１０からクライアント装置２０の主記憶装置２２にダウンロードされたプログラム（例えばＯＳ）を実行することにより実現されるものとする。一方、キャッシュ登録データ選択・要求送信部２２０は、例えばＲＯＭに予め格納されている特定プログラムを処理ユニット２１が主記憶装置２２に読み込んで実行することにより実現されるものとする。
【００２２】
ドライバ・ファイルシステム２１０は、例えばクライアント装置２０に対応付けられているストレージ装置１０内のディスクボリューム１００-1からファイルシステム２１１を構築する。ファイルシステム２１１は、キャッシュ登録データ選択・要求送信部２２０に対して、ファイルパスから該当するファイルが格納されているディスクボリューム１００-1内の領域（以下、データ領域と称する）を指定する情報（以下、データ領域情報と称する）を取得するためのインタフェイスを提供する。
【００２３】
本実施形態では、データ領域の開始位置は、論理ブロックの開始位置（論理ブロックの境界）に一致し、当該データ領域の終了位置は、論理ブロックの終了位置（論理ブロックの境界）に一致するものとする。そこで、データ領域情報は、データ領域の開始位置の論理ブロックアドレス（以下、開始論理ブロックアドレスと称する）ＬＢＡと、当該データ領域（に格納されているファイル）のデータ長（サイズ）Ｌの情報とを含む。このデータ長Ｌは、論理ブロックのデータ長の整数倍である。
【００２４】
キャッシュ登録データ選択・要求送信部２２０は、例えば、クライアント装置２０のハードウェア構成に含まれている入出力装置２５（図２参照）を用いたユーザ（またはシステム管理者）の操作に基づき、中継装置３０にキャッシュデータとして登録すべきデータ（ここではファイル）の指定を受け付ける。キャッシュ登録データ選択・要求送信部２２０は、この指定に基づき、ファイルシステム２１１から、そのファイルが保存されているディスクボリューム（ここではディスクボリューム１００-1）内のデータ領域に関するデータ領域情報ＬＢＡ／Ｌを取得し、当該情報ＬＢＡ／Ｌをキャッシュ登録要求により中継装置３０に送信する。
【００２５】
中継装置３０は、主として２種類の動作を行う。第１の動作は、クライアント装置２０のキャッシュ登録データ選択・要求送信部２２０から送信されるキャッシュ登録要求に応じて、ストレージ装置１０から転送されるデータをキャッシュデータとして登録するキャッシュ登録動作である。第２の動作は、クライアント装置２０のドライバ・ファイルシステム２１０から送信される読み書き要求（リード要求またはライト要求）に応じて行われる、ストレージ装置１０とクライアント装置２０との間の入出力（Ｉ／Ｏ）セッション（ここではｉＳＣＳＩセッション）の中継とキャッシュ動作である。
【００２６】
ｉＳＣＳＩセッションの中継は次のように行われる。まず、クライアント装置２０から中継装置３０のクライアント装置側インタフェイス（Ｉ／Ｆ）３１１を指定して、ストレージ装置１０への接続を要求する。中継装置３０は、このクライアント装置２０からの要求を受け付けると、当該中継装置３０のストレージ装置側インタフェイス（Ｉ／Ｆ）３１２からストレージ装置１０に対して接続を行う。これによりクライアント装置２０とストレージ装置１０との間の接続（ｉＳＣＳＩセッション）が中継装置３０を介して確立する。なお、クライアント装置側インタフェイス３１１及びストレージ装置側インタフェイス３１２が物理的に１つのインタフェイスであってもよく、ｉＳＣＳＩであれば、ＴＣＰ／ＩＰのＩＰアドレスやポート番号で別インタフェイスであることが識別できれば十分である。インタフェイス３１１及び３１２は、通信機構２４によって実現される。
【００２７】
＜中継装置の構成＞
中継装置３０は、上述の２種類の動作を実現するために、中継部３１０、キャッシュ管理部３２０、キャッシュインデックステーブル３３０、キャッシュデータテーブル３４０、キャッシュデータ格納部３５０、識別子生成部３６０及びキャッシュ登録要求処理部３７０を含む。本実施形態において、中継装置３０内の中継部３１０、キャッシュ管理部３２０、識別子生成部３６０及びキャッシュ登録要求処理部３７０は、中継装置３０が図２に示されるコンピュータから構成される場合に、当該コンピュータ内の処理ユニット２１が、補助記憶装置２３に格納されている所定のプログラムを主記憶装置２２に読み込んで実行することにより実現される。
【００２８】
中継部３１０は、クライアント装置２０とストレージ装置１０との間のｉＳＣＳＩプロトコルによるＰＤＵ（Protocol Data Unit）の転送、つまりｉＳＣＳＩ−ＰＤＵの転送を中継する。中継部３１０は、クライアント装置側インタフェイス３１１とストレージ装置側インタフェイス３１２とを含む。ｉＳＣＳＩ−ＰＤＵがデータ転送に関係するもの（READ&SCSI DATAIN/WRITE&SCSI DATAOUT）であれば、キャッシュ管理部３２０によるキャッシュ制御が行われる。
【００２９】
キャッシュ管理部３２０は、クライアント装置２０のドライバ・ファイルシステム２１０からのリード要求またはライト要求に応じて中継部３１０によって中継されるデータのキャッシュ制御を行う。キャッシュ管理部３２０は、クライアント装置２０のキャッシュ登録データ選択・要求送信部２２０から送信されるキャッシュ登録要求によって指定されるデータをキャッシュデータとして中継装置３０内に登録するためのキャッシュ登録動作を行う。
【００３０】
キャッシュ管理部３２０は、キャッシュインデックステーブル３３０及びキャッシュデータテーブル３４０を管理する。キャッシュ管理部３２０はまた、キャッシュデータ格納部３５０をも管理する。キャッシュ管理部３２０は、キャッシュ登録部３２０ａ、キャッシュヒット判定部３２０ｂ、中継制御部３２０ｃ及びインデックス登録部３２０ｄを含む。
【００３１】
キャッシュインデックステーブル３３０は、ストレージ装置１０内のディスクボリューム（論理ボリューム）１００-iに対応付けて設けられる。キャッシュインデックステーブル３３０は、対応するディスクボリューム１００-iに固有のディスクボリューム番号ＤＶＮと当該ディスクボリューム１００-i内の論理ブロックの論理ブロックアドレスＬＢＡとの組み合わせを、当該論理ブロックに格納されているデータを指定するインデックスとして保持する。キャッシュインデックステーブル３３０は、このインデックスによって指定されるデータの内容に対応する識別子を、当該インデックスに対応付けて保持する。
【００３２】
ディスクボリューム番号ＤＶＮは、対応するディスクボリューム１００-iを識別するための番号である。本実施形態においてディスクボリューム番号ＤＶＮは、中継装置３０内の全てのディスクボリューム１００-iに対してシリアルに割り当てられる。このディスクボリューム番号ＤＶＮは、中継装置３０からストレージ装置１０に対して問い合わせのためのＣＤＢ（Command Descriptor Block）を発行することにより取得される。ｉＳＣＳＩの場合、ＤＶＮに代えて、当該ＤＶＮとｉＳＣＳＩ−ＩｎｉｔｉａｔｏｒＮａｍｅ（イニシエータの名前）との組を利用することも可能である。
【００３３】
図４は、キャッシュインデックステーブル３３０のデータ構造例を示す。図４の例では、キャッシュインデックステーブル３３０はエントリの群を有する。キャッシュインデックステーブル３３０は、対応するディスクボリューム１００-iに固有のディスクボリューム番号ＤＶＮをエントリ群から独立に保持する。キャッシュインデックステーブル３３０の各エントリは、対応するディスクボリューム１００-i内の論理ブロックの論理ブロックアドレスＬＢＡと、当該論理ブロックに格納されているデータ（ブロックデータ）の内容に対応する識別子とを保持する。
【００３４】
このように、図４に示されるキャッシュインデックステーブル３３０は、ディスクボリューム１００-i内の論理ブロックのデータを指定するための各インデックスを、当該各インデックスに共通のディスクボリューム番号ＤＶＮと、当該インデックス毎に異なる論理ブロックアドレスＬＢＡとに分離して保持している。これによりキャッシュインデックステーブル３３０の各エントリに必要な記憶容量を低減している。キャッシュインデックステーブル３３０に、当該テーブル３３０のエントリ群から独立に保持されディスクボリューム番号ＤＶＮは、当該エントリ群の各々に保持される論理ブロックアドレスＬＢＡと組み合わせてインデックスを構成する。このため、キャッシュインデックステーブル３３０の各エントリは、等価的に、インデックス及び識別子の組を保持しているといえる。
【００３５】
さて、キャッシュインデックステーブル３３０の各エントリに保持される識別子は、例えば、ａを論理ブロックのデータ長（ここではセクタ長）を表す０より大きい整数とすると、対応するインデックス中の論理ブロックアドレスＬＢＡで指定される論理ブロックに格納されているａセクタ（５１２バイトの倍数）分のデータのハッシュ値である。このように本実施形態では、キャッシュインデックステーブル３３０（及びキャッシュデータテーブル３４０）によって管理されるキャッシュブロックのデータ長（サイズ）が、論理ブロックのデータ長に等しいものとする。勿論、論理ブロックを複数のブロックに等分し、その等分された各ブロックをキャッシュブロックとして管理することも可能である。更に本実施形態では、説明の簡略化のために、ａが１であり、キャッシュインデックステーブル３３０（及びキャッシュデータテーブル３４０）の１エントリが１セクタ（＝５１２バイト）単位で管理されるものとする。
【００３６】
キャッシュインデックステーブル３３０は、ストレージ装置１０内のディスクボリューム（論理ボリューム）１００-i毎に用意される。つまり、中継装置３０には、当該中継装置３０でアクセスを中継しているストレージ装置１０上のディスクボリューム１００-iの数に相当するキャッシュインデックステーブル３３０が存在する。
【００３７】
キャッシュデータテーブル３４０は、キャッシュインデックステーブル３３０によって管理されるａ（本実施形態ではａ＝１）セクタ分のデータのハッシュ値を識別子として、当該識別子と、キャッシュデータ格納部３５０における当該データ（キャッシュデータ）の格納（登録）先のアドレスとの組を保持するエントリの群を有する。つまりキャッシュデータテーブル３４０は、キャッシュインデックステーブル３３０のエントリに論理ブロックアドレスＬＢＡと対応付けて保持されている識別子と、対応するキャッシュデータの格納先のアドレス（以下、キャッシュデータアドレスと称する）との組を保持するエントリの群を有する。図５は、キャッシュデータテーブル３４０のデータ構造例を示す。
【００３８】
以下の説明では、キャッシュデータ格納部３５０に格納されるデータ（キャッシュデータ）の内容に対応する識別子（を含むエントリ情報）を、キャッシュデータテーブル３４０のエントリに登録することを、キャッシュデータテーブル３４０にデータを登録すると表現することもある。また、キャッシュデータ格納部３５０に格納されるデータの内容に対応する識別子（を含むエントリ情報）が、キャッシュデータテーブル３４０のエントリに登録されている状態を、キャッシュデータテーブル３４０にデータが登録されていると表現することもある。つまりキャッシュインデックステーブル３３０及びキャッシュデータテーブル３４０は、ストレージ装置１０のディスクボリューム１００-iに格納されるデータを、当該データの内容に対応する識別子に対応付けて格納するためのキャッシュ格納部３８０を構成する。
【００３９】
キャッシュインデックステーブル３３０及びキャッシュデータテーブル３４０は、例えば、中継装置３０のハードウェア構成に含まれている主記憶装置２２及び補助記憶装置２３の記憶領域の一部に格納して用いられるものとする。また、キャッシュデータ格納部３５０は、主記憶装置２２及び補助記憶装置２３それぞれの記憶領域（揮発性記憶領域及び不揮発性記憶領域）の一部を用いて実現されるものとする。具体的には、テーブル３３０及び３４０は、中継装置３０の動作状態では主記憶装置２２に格納して用いられ、少なくとも中継装置３０の動作が停止される際には補助記憶装置２３に保存される。そしてテーブル３３０及び３４０は、中継装置３０の起動時に補助記憶装置２３から主記憶装置２２にロードして用いられる。キャッシュデータ格納部３５０のデータも同様である。しかし、このような形態は一例であり、例えば主記憶装置２２（揮発性記憶装置）及び補助記憶装置２３（不揮発性記憶装置）の一方だけを用いても構わない。
【００４０】
なお、本実施形態ではｉＳＣＳＩによるブロック型転送プロトコルを例として、キャッシュインデックステーブル３３０及びキャッシュデータテーブル３４０の説明を行うが、ｉＳＣＳＩに限るものではない。例えば、インデックスとしてパス名を利用することで、ｉＳＣＳＩによるブロック型転送プロトコルに代えて、ＮＦＳ（Network File System)やＣＩＦＳ（Common Internet File System）などのファイル転送プロトコルを適用することも可能である。
【００４１】
キャッシュデータ格納部３５０は、キャッシュデータテーブル３４０の各エントリによって管理されるキャッシュデータアドレスに、ａ（＝１）セクタ分のキャッシュデータを格納する。このキャッシュデータのハッシュ値は、キャッシュデータテーブル３４０の対応するエントリにキャッシュデータアドレスと組をなして保持されている識別子に一致する。
【００４２】
次に、図６を参照して、キャッシュインデックステーブル３３０、キャッシュデータテーブル３４０及びキャッシュデータ格納部３５０の関係について説明する。なお、図６においては、図４及び図５とは異なり、キャッシュインデックステーブル３３０及びキャッシュデータテーブル３４０に保持（登録）されている、ディスクボリューム番号ＤＶＮ、論理ブロックアドレスＬＢＡ、識別子（ハッシュ値）及びキャッシュデータアドレスについては、便宜的に簡略化して記載されている。
【００４３】
図６では、ディスクボリューム番号「ＤＶＮ１」によって識別されるストレージ装置１０内のディスクボリューム、例えばディスクボリューム１００-1に対応するキャッシュインデックステーブル３３０について説明する。
【００４４】
このキャッシュインデックステーブル３３０の第１エントリには、論理ブロックアドレス「ＬＢＡ１」に対応付けて識別子「ハッシュ値１」が登録されている。またキャッシュインデックステーブル３３０の第２、第３及び第４エントリには、それぞれ、論理ブロックアドレス「ＬＢＡ２」に対応付けて識別子「ハッシュ値２」が、論理ブロックアドレス「ＬＢＡ３」に対応付けて識別子「ハッシュ値３」が、論理ブロックアドレス「ＬＢＡ４」に対応付けて識別子「ハッシュ値１」が登録されている。つまり、論理ブロックアドレス「ＬＢＡ１」に格納されているデータ及び論理ブロックアドレス「ＬＢＡ４」に格納されているデータは同一である。換言すれば、キャッシュインデックステーブル３３０に保持されている論理ブロックアドレス「ＬＢＡ１」及び「ＬＢＡ４」は、同一データを指し示している。
【００４５】
一方、キャッシュデータテーブル３４０の第１エントリには、識別子「ハッシュ値１」に対応付けてキャッシュデータアドレスとして「アドレス１」が登録されている。またキャッシュデータテーブル３４０の第２の及び第３のエントリには、それぞれ、識別子「ハッシュ値２」に対応付けてキャッシュデータアドレスとして「アドレス２」が、識別子「ハッシュ値３」に対応付けてキャッシュデータアドレスとして「アドレス３」が登録されている。つまりキャッシュデータテーブル３４０の第１、第２及び第３エントリには、それぞれ、識別子「ハッシュ値１」、「ハッシュ値２」及び「ハッシュ値１」に対応するデータ（ここでは、データＡ、データＢ及びデータＣ）が登録されている。これらのデータは、漏洩しても問題のないデータである。
【００４６】
また、キャッシュデータ格納部３５０の「アドレス１」にはデータＡが格納されている。キャッシュデータ格納部３５０の「アドレス２」及び「アドレス３」には、それぞれ、データＢ及びデータＣが格納されている。
【００４７】
なお、データＡは、キャッシュデータ格納部３５０の「アドレス１」にキャッシュされているデータであり、ディスクボリューム番号「ＤＶＮ１」によって識別されるストレージ装置１０内のディスクボリューム１００-1の論理ブロックアドレス「ＬＢＡ１」及び論理ブロックアドレス「ＬＢＡ４」に格納されているデータ（と同一）である。
【００４８】
データＢは、キャッシュデータ格納部３５０の「アドレス２」にキャッシュされているデータであり、ディスクボリューム番号「ＤＶＮ１」によって識別されるストレージ装置１０内のディスクボリューム１００-1の論理ブロックアドレス「ＬＢＡ２」に格納されているデータ（と同一）である。
【００４９】
また、データＣは、キャッシュデータ格納部３５０の「アドレス３」にキャッシュされているデータであり、ディスクボリューム番号「ＤＶＮ１」によって識別されるストレージ装置１０内のストレージ装置１０のディスクボリュームシリアル番号「１」の論理ブロックアドレス「３」に格納されているデータ（と同一）である。
【００５０】
上記したように、キャッシュインデックステーブル３３０及びキャッシュデータテーブル３４０は、識別子（ハッシュ値）により関連付けられている。これにより、例えばストレージ装置１０からストレージ装置１０に対するリード要求があった場合には、中継装置３０は、当該リード要求に含まれるインデックス（ディスクボリュームシリアル番号及び論理ブロックアドレス）からキャッシュデータ格納部３５０に格納（キャッシュ）されているキャッシュデータを特定できる。
【００５１】
再び図３を参照すると、識別子生成部３６０は、キャッシュ管理部３２０からａセクタ分のデータを受け取ることにより、当該データの内容に対応する識別子を生成し、生成された識別子をキャッシュ管理部３２０に応答する。本実施例では識別子の生成に所定のハッシュ関数が用いられる。このハッシュ関数には、ＭＤ（Merkle-Damgard）５やＳＨＡ（Secure Hash Algorithm）１などが利用できる。
【００５２】
キャッシュ登録要求処理部３７０は、クライアント装置２０内のキャッシュ登録データ選択・要求送信部２２０から、入力として、当該クライアント装置２０のイニシエータ名と、キャッシュデータとして登録されるべきデータ（例えばファイル）の論理ブロックアドレスＬＢＡ及びデータ長（セクタ数）Ｌとを（含むキャッシュ登録要求を）受信する。説明の簡略化のために、データ長Ｌは、論理ブロックのデータ長の整数倍であるものとする。
【００５３】
キャッシュ登録要求処理部３７０は、この入力を受信すると、当該イニシエータ名に対応するｉＳＣＳＩセッション内において、当該論理ブロックアドレスＬＢＡ及びデータ長Ｌで指定されるデータを受信するためのｉＳＣＳＩ−ＰＤＵを生成する。
【００５４】
キャッシュ登録要求処理部３７０は、中継部３１０と連携して、生成されたｉＳＣＳＩ−ＰＤＵをストレージ装置１０に送信する。このｉＳＣＳＩ−ＰＤＵの送信により、キャッシュ登録要求処理部３７０は、ストレージ装置１０からｉＳＣＳＩ−ＰＤＵによって通知される論理ブロックアドレスＬＢＡ及びデータ長Ｌで指定されるデータ領域のデータを受信する。キャッシュ登録要求処理部３７０は、この受信データの情報を、キャッシュ管理部３２０と連携して、キャッシュインデックステーブル３３０及びキャッシュデータテーブル３４０に登録する。
【００５５】
＜中継装置の動作の概要＞
まず、中継装置３０を中心とする動作の概要について説明する。  
中継装置３０は、自身が中継するｉＳＣＳＩ−ＰＤＵがデータ転送に関係するか否かによって動作を切り替える。まず、中継するｉＳＣＳＩ−ＰＤＵがデータ転送に関係しないものであれば、中継装置３０は、ｉＳＣＳＩ−ＰＤＵをそのまま相手先に対して転送する動作を行う。これに対し、ｉＳＣＳＩ−ＰＤＵがデータ転送に関係するものであれば、中継装置３０は、キャッシュ管理部３２０を通してキャッシュアクセス動作を行う。
【００５６】
また中継装置３０は、次の２種類の動作をもう。２種類の動作の１つは、中継装置３０にキャッシュデータを登録するためのキャッシュ登録動作である。２種類の動作の他の１つは、クライアント装置２０からストレージ装置１０にｉＳＣＳＩセッション（入出力セッション）を中継するためのｉＳＣＳＩセッション中継動作である。このｉＳＣＳＩセッション中継動作が行われる際には、後述するキャッシュ動作も行われる。
【００５７】
＜キャッシュ登録動作＞
次に、中継装置３０にキャッシュデータを登録するためのキャッシュ登録動作について説明する。
【００５８】
まず、キャッシュ登録動作の概要について説明する。  
本実施形態では、キャッシュ登録動作は以下の２つの手順１及び２から構成される。  
手順１：クライアント装置２０のキャッシュ登録データ選択・要求送信部２２０は、中継装置３０に対して、キャッシュ登録すべきデータのインデックスをキャッシュ登録要求により送信する。
【００５９】
手順２：中継装置３０のキャッシュ登録要求処理部３７０は、クライアント装置２０のキャッシュ登録データ選択・要求送信部２２０からインデックスを（含むキャッシュ登録要求を）受信すると、中継部３１０を用いて、当該インデックスに対応するデータをストレージ装置１０から読み込む。中継装置３０のキャッシュ管理部３２０は、読み込まれたデータをキャッシュデータとしてキャッシュデータ格納部３５０に格納すると共に、そのキャッシュデータを管理するためのキャッシュインデックステーブル３３０及びキャッシュデータテーブル３４０に新たなエントリ情報を登録する。但し、テーブル３４０及び３４０に既にエントリ情報が登録されているデータであれば、新たなエントリ情報の登録は行われない。
【００６０】
次に手順１及び２の詳細について、図７のフローチャートを参照して説明する。  
＜手順１の詳細＞
まず、手順１の詳細について説明する。  
今、ディスクボリューム１００-1に格納されている複数のファイルが、クライアント装置２０のファイルシステム２１１によって管理されているものとする。このファイルシステム２１１は、ストレージ装置１０上のディスクボリューム１００-1から構成されることに注意されたい。
【００６１】
クライアント装置２０のキャッシュ登録データ選択・要求送信部２２０は、当該クライアント装置２０のファイルシステム２１１によって管理されているファイルの中から、中継装置３０にキャッシュデータとして登録する対象とすべき１つ以上のファイルを決定する（ステップ７００）。このファイルの決定には、例えば、クライアント装置２０のハードウェア構成に含まれている入出力装置２５（図２参照）を用いた、当該クライアント装置２０のユーザやシステム管理者からの、キャッシュ登録データ選択・要求送信部２２０に対する明示的な指定や、ファイル名などからの自動決定など様々な方法が適用可能である。ここでは、ファイル名が指定されるものとする。またステップ７００では、キャッシュ登録先の中継装置３０のアドレス（例えばＩＰアドレス）も指定される。
【００６２】
つまり、ステップ７００においてキャッシュ登録データ選択・要求送信部２２０は、キャッシュ登録対象となるファイルのファイル名の指定を入力して、キャッシュ登録対象となるファイルを決定する。またステップ７００においてキャッシュ登録データ選択・要求送信部２２０は、キャッシュ登録先の中継装置３０のアドレスの指定も入力する。
【００６３】
キャッシュ登録データ選択・要求送信部２２０は、指定されたキャッシュ登録の対象となるファイルが格納されているディスクボリューム１００-1を識別するディスクボリューム番号ＤＶＮ、当該ファイルが格納されているディスクボリューム１００-i内のデータ領域を指定するデータ領域情報ＬＢＡ／Ｌを、クライアント装置２０のファイルシステム２１１を通して取得する（ステップ７０１）。ここでは、説明の簡略化のために、データ領域（ファイル）のデータ長Ｌが、１論理ブロックの長さに一致するａ（＝１）セクタであるものとする。
【００６４】
次にキャッシュ登録データ選択・要求送信部２２０は、指定された中継装置３０のキャッシュ登録要求処理部３７０に対して、キャッシュデータの登録を要求するためのキャッシュ登録要求を送信する（ステップ７０２）。このキャッシュ登録要求は、キャッシュ登録の対象となるデータ（ここでは、ファイルのデータ）を示すインデックスを含む。このインデックスは、ステップ７０１で取得された、ディスクボリューム番号ＤＶＮ及び論理ブロックアドレスＬＢＡを含む。キャッシュ登録要求は更に、ステップ７０１で取得されたキャッシュ登録の対象となるデータ（以下、キャッシュ登録対象データと称する）のデータ長Ｌの情報を含む。つまりキャッシュ登録要求は、ディスクボリューム番号ＤＶＮ及びデータ領域情報ＬＢＡ／Ｌを含む。
【００６５】
なお、キャッシュ登録データ選択・要求送信部２２０が、ストレージ装置１０に対してアクセスするクライアント装置２０から独立の装置（以下、第３の装置と称する）に備えられていても構わない。但し、本実施形態では、キャッシュ登録データ選択・要求送信部２２０がクライアント装置２０に備えられていることから、つまりクライアント装置２０（第２の装置）が第３の装置を兼ねていることから、クライアント装置２０（内のキャッシュ登録データ選択・要求送信部２２０）自身が、キャッシュ登録の必要性のあるデータを判断して、中継装置３０に対して自らキャッシュ登録を依頼することができる。
【００６６】
＜手順２の詳細＞
次に、手順２の詳細について説明する。  
中継装置３０のキャッシュ登録要求処理部３７０はキャッシュ登録要求受信手段として機能して、クライアント装置２０のキャッシュ登録データ選択・要求送信部２２０から送信されたキャッシュ登録要求を受信する（ステップ７０３）。
【００６７】
キャッシュ登録要求処理部３７０は、キャッシュ登録要求を受信すると（ステップ７０３）、当該キャッシュ登録要求に含まれているインデックス中のディスクボリューム番号ＤＶＮで指定されるストレージ装置１０のディスクボリューム１００-1に、中継部３１０を通して中継装置３０を接続する（ステップ７０４）。ここで中継装置３０と接続されるディスクボリューム１００-1は、キャッシュ登録を要求したクライアント装置２０から現在接続されているストレージ装置１０のディスクボリュームに一致する。ステップ７０４での接続動作では、現在中継装置３０が中継中の、クライアント装置２０とストレージ装置１０との間のｉＳＣＳＩセッションとは独立したセッションが確立される。なお、ステップ７０４でのセッションの確立が、クライアント装置２０のキャッシュ登録データ選択・要求送信部２２０からキャッシュ登録が要求される前に、つまり事前に行われてもよい。
【００６８】
ステップ７０４の実行により上述のセッションが確立した状態で、キャッシュ登録要求処理部３７０は、クライアント装置２０からキャッシュ登録が要求されたキャッシュ登録対象データを読み込むためのリード命令を生成する（ステップ７０５）。このステップ７０５においてキャッシュ登録要求処理部３７０は、生成したリード命令を、中継部３１０を介してストレージ装置１０に送信する。
【００６９】
ストレージ装置１０は、中継部３１０を介して送信されたリード要求に基づき、要求されたデータをディスクボリューム１００-1から読み出して中継部３１０に返す。キャッシュ登録要求処理部３７０は、中継部３１０に返されたデータをキャッシュ登録対象データとして、当該中継部３１０を介して取得する（ステップ７０６）。このようにしてキャッシュ登録要求処理部３７０は、キャッシュ登録対象データ（ここでは、ディスクボリューム番号ＤＶＮで指定されるディスクボリューム１００-1内の、論理ブロックアドレスＬＢＡ及びデータ長Ｌで指定されるデータ領域に格納されているａセクタ分のデータ）を取得する。
【００７０】
キャッシュ登録要求処理部３７０は、取得したキャッシュ登録対象データをキャッシュ管理部３２０に渡して、ステップ７０３で受信したキャッシュ登録要求の指定するキャッシュ登録動作を指示する。するとキャッシュ管理部３２０のキャッシュ登録部３２０ａは、キャッシュ登録対象データを識別子生成部３６０に渡して、当該データの識別子の生成を要求する。
【００７１】
識別子生成部３６０は、キャッシュ登録対象データのハッシュ値を所定のハッシュ関数を用いて生成し、生成されたハッシュ値を当該データの識別子としてキャッシュ管理部３２０のキャッシュ登録部３２０ａに返す（ステップ７０７）。つまり識別子生成部３６０は、取得されたキャッシュ登録対象データのハッシュ値を、要求された識別子として生成する。なお、中継部３１０、キャッシュ管理部３２０、識別子生成部３６０及びキャッシュ登録要求処理部３７０の間のキャッシュ登録対象データの授受は、図示せぬバッファを介して行われるものとする。この場合、キャッシュ登録対象データの物理的移動は必ずしも発生しない。
【００７２】
キャッシュ登録部３２０ａは、識別子生成部３６０によって生成された識別子を含む第１及び第２のエントリ情報を、それぞれキャッシュインデックステーブル３３０（ステップ７０５で取得されたデータが格納されているディスクボリューム１００-1に対応するキャッシュインデックステーブル３３０）、及びキャッシュデータテーブル３４０に登録する（ステップ７０８）。但し、生成された識別子に一致する識別子を含むエントリがキャッシュデータテーブル３４０に既に存在する場合には、第１及び第２のエントリ情報の登録は行われない。
【００７３】
第１のエントリ情報は、インデックスの一部をなす論理ブロックアドレスＬＢＡと生成された識別子とを含む。キャッシュインデックステーブル３３０は、このインデックスに含まれているディスクボリューム番号ＤＶＮを保持している。このため、第１のエントリ情報をキャッシュインデックステーブル３３０に登録することは、当該テーブル３３０に、インデックスに対応付けて識別子を登録することと等価である。
【００７４】
第２のエントリ情報は、生成された識別子と、当該識別子によって示されるデータがキャッシュデータとして格納されるキャッシュデータ格納部３５０のアドレス（キャッシュデータアドレス）とを含む。ステップ７０８においてキャッシュ登録部３２０ａは、このキャッシュデータアドレスで指定されるキャッシュデータ格納部３５０の領域に、識別子によって示されるデータをキャッシュデータとして格納する。なお、このキャッシュデータの格納の後に、第１及び第２のエントリ情報の登録が行われてもよい。
【００７５】
キャッシュ登録部３２０ａによるステップ７０８の処理が終了すると、キャッシュ登録要求処理部３７０は、ステップ７０４で確立したセッションを閉じてから、クライアント装置２０のキャッシュ登録データ選択・要求送信部２２０にキャッシュ登録完了の応答を返す（ステップ７０９）。
【００７６】
もし、キャッシュ登録データ選択・要求送信部２２０に対して入力として複数のファイルが指定された場合、上述のステップ７０１〜７０９が、その指定された全てのファイルについて繰り返される（ステップ７１０）。
【００７７】
このように本実施形態においては、クライアント装置２０からのキャッシュ登録要求を中継装置３０が実行するだけで、当該要求に含まれているインデックスで指定されたデータだけをストレージ装置１０から読み込んで、キャッシュデータとして当該中継装置３０に登録することができる。このため本実施形態においては、従来技術とは異なり、クライアント装置とストレージ装置との間でデータが転送される都度、属性情報を通知するとか、データ毎に管理されている属性情報を、データ転送とは別に、ストレージ装置から中継装置に通知（転送）しなくて済む。なお、本実施形態において、クライアント装置２０からのキャッシュ登録要求で指定されるデータは、漏洩しても問題のないデータ、例えばＯＳのファイルや、アプリケーションプログラムファイル等である。
【００７８】
＜クライアント／ストレージ装置間のｉＳＣＳＩセッション中継とキャッシュ動作＞
本実施形態において中継装置３０は、クライアント装置２０とストレージ装置１０との間の入出力（ＩＯ）セッションとしてのｉＳＣＳＩセッションを中継する。この中継時に、中継装置３０は、キャッシュインデックステーブル３３０及びキャッシュデータテーブル３４０を利用して、つまり当該両テーブルに登録されたエントリ情報によって指定されるキャッシュデータを利用して、キャッシュ（キャッシュ制御）動作を行う。
【００７９】
以下、クライアント装置２０がストレージ装置１０よりデータを読み込む場合の中継装置３０の処理手順について、図８のフローチャートを参照して説明する。  
今、中継装置３０の中継部３１０が、クライアント装置２０から送信されたリード要求を受信したものとする（ステップ８０１）。このリード要求は、読み込みの対象となるデータ（以下、読み込み対象データと称する）を示すインデックスを含む。このインデックスは、読み込み対象データが格納されているディスクボリューム１００-iを識別するディスクボリューム番号ＤＶＮ及び読み込み対象データが格納されているディスクボリューム１００内の領域の開始位置を示す論理ブロックアドレス（開始論理ブロックアドレス）ＬＢＡを含む。リード要求は更に、読み込み対象データのデータ長Ｌの情報を含む。つまりリード要求は、ディスクボリューム番号ＤＶＮ及びデータ領域情報ＬＢＡ／Ｌを含む。ここでは、説明の簡略化のために、読み込み対象データのデータ長Ｌがａ（＝１）セクタであり、１キャッシュブロックのデータ長に等しく、且つ１キャッシュブロックのデータ長が１論理ブロックのデータ長に等しいものとする。
【００８０】
キャッシュ管理部３２０のキャッシュヒット判定部３２０ｂは、中継部３１０によってリード要求が受信された場合、当該リード要求に含まれるインデックスに基づいて、以下のキャッシュヒット判定処理を実行する（ステップ８０２）。  
まずキャッシュ管理部３２０は、インデックスに含まれるディスクボリューム番号ＤＶＮによって示されるディスクボリュームに対応付けられているキャッシュインデックステーブル３３０を選択する（ステップ８０２ａ）。ここでは、ディスクボリューム１００-1に対応付けられているキャッシュインデックステーブル３３０が選択されたものとする。
【００８１】
次にキャッシュヒット判定部３２０ｂは、キャッシュインデックステーブル３３０を参照し、インデックスに含まれる論理ブロックアドレスＬＢＡに対応付けて識別子が登録されている（エントリがある）かを判定する（ステップ８０２ｂ）。
【００８２】
もし、識別子が登録されているならば（ステップ８０２ｂのＹＥＳ）、キャッシュヒット判定部３２０ｂは当該識別子（と同一の識別子）がキャッシュデータテーブル３４０に登録されているかを判定する（ステップ８０２ｃ）。もし、この識別子がキャッシュデータテーブル３４０にも登録されているならば（ステップ８０２ｃのＹＥＳ）、つまり、この識別子に対応するデータがキャッシュデータテーブル３４０に登録されているならば、キャッシュヒット判定部３２０ｂは読み込み対象データがキャッシュデータ格納部３５０に存在するキャッシュヒットと判定する（ステップ８０２ｄ）。
【００８３】
キャッシュ管理部３２０の中継制御部３２０ｃは、キャッシュヒット判定部３２０ｂによってキャッシュヒットが判定されると、このキャッシュ判定に用いられた識別子に対応付けてキャッシュデータテーブル３４０に登録されているキャッシュデータアドレスを取得する（ステップ８０３）。そして中継制御部３２０ｃは、取得したキャッシュデータアドレスに基づき、キャッシュデータ格納部３５０の当該キャッシュデータアドレスに格納されているキャッシュデータを読み込み対象データとして読み込む（ステップ８０４）。そして中継制御部３２０ｃは、読み込んだデータをリード要求元のクライアント装置２０に返すように中継部３１０に指示する。
【００８４】
すると中継部３１０は、中継制御部３２０ｃによってキャッシュデータ格納部３５０から読み込まれたデータを、クライアント装置２０からのリード要求に対する応答として、当該クライアント装置２０に送信する（ステップ８０５）。これにより、クライアント装置２０から送信されたリード要求に対する中継装置３０での処理は終了する。
【００８５】
一方、識別子がキャッシュインデックステーブル３３０に登録されていないならば（ステップ８０２ｂのＮＯ）、キャッシュヒット判定部３２０ｂは、読み込み対象データがキャッシュデータ格納部３５０に存在しないキャッシュミスヒットと判定する（ステップ８０２ｅ）。また、キャッシュインデックステーブル３３０に識別子が登録されていても（ステップ８０２ｂのＹＥＳ）。当該識別子（と同一の識別子）がキャッシュデータテーブル３４０に登録されていない場合には（ステップ８０２ｃのＮＯ）、キャッシュヒット判定部３２０ｂはキャッシュミスヒットと判定する（ステップ８０２ｅ）。
【００８６】
中継制御部３２０ｃは、キャッシュヒット判定部３２０ｂによってキャッシュミスヒットが判定されると、リード要求を、中継部３１０を介してストレージ装置１０に中継（転送）する（ステップ８０６）。ストレージ装置１０は、中継部３１０によって中継されたリード要求に応じてディスクボリューム１００-1から読み込み対象データを読み出して中継部３１０に返す。これにより、中継部３１０は、読み込み対象データを取得する（ステップ８０７）。
【００８７】
中継部３１０は、取得したデータを、クライアント装置２０からのリード要求に対する応答として、当該クライアント装置４０に送信する（ステップ８０８）。
【００８８】
キャッシュ管理部３２０のインデックス登録部３２０ｄは、キャッシュミスヒットが判定された場合、中継部３１０によって取得されたデータの内容に対応する識別子をキャッシュインデックステーブル３３０に登録するための、以下に述べるキャッシュインデックステーブルへの登録処理を実行する（ステップ８０９）。これにより、クライアント装置２０から送信されたリード要求に対する中継装置３０での処理は終了する。
【００８９】
次に、キャッシュインデックステーブルへの登録処理（図８のステップ８０９）の手順について、図９のフローチャートを参照して説明する。  
インデックス登録部３２０ｄは、中継部３１０によって取得されたデータのハッシュ値を当該データの内容に対応する識別子として生成する（ステップ９０１）。インデックス登録部３２０ｄは、生成された識別子に対応するデータがキャッシュデータテーブル３４０に登録されているかを判定する（ステップ９０２）。ここでは、生成された識別子（に一致する識別子）を含むエントリ情報がキャッシュデータテーブル３４０に保持されており、且つ当該エントリ情報中のキャッシュデータアドレスで指定されるキャッシュデータ格納部３５０の領域に格納されているキャッシュデータと中継部３１０によって取得されたデータとが同一の場合に、ステップ９０２の判定がＹＥＳとなる。それ以外の場合、ステップ９０２の判定はＮＯとなる。
【００９０】
インデックス登録部３２０ｄは、生成された識別子に対応するデータがキャッシュデータテーブル３４０に登録されている場合（ステップ９０２のＹＥＳ）、キャッシュミスヒットの判定に用いられたキャッシュインデックステーブル３３０に、インデックスに含まれている論理ブロックアドレスＬＢＡに対応付けて、当該識別子を登録する（ステップ９０３）。このキャッシュインデックステーブル３３０は、インデックスに含まれているディスクボリューム番号ＤＶＮを保持している。このため、ステップ９０３の処理は、キャッシュインデックステーブル３３０に、インデックスに対応付けて識別子を登録することと等価である。このステップ９０３について更に詳細に説明する。
【００９１】
ステップ９０３は第１及び第２の処理に大別される。  
第１の処理は、上述のキャッシュインデックステーブル３３０に、インデックス中の論理ブロックアドレスＬＢＡに対応付けて既に別の識別子が登録されている場合に実行される。第１の処理では、上記別の識別子に代えて、生成された識別子が登録される。つまり、既登録の識別子が、生成された識別子に置き換えられる。
【００９２】
これに対し、第２の処理は、上述のキャッシュインデックステーブル３３０に、インデックス中の論理ブロックアドレスＬＢＡが保持されていないか、或いは当該論理ブロックアドレスＬＢＡに対応付けて識別子（ここでは有効な識別子）が登録されていない場合に実行される。第２の処理では、生成された識別子が、キインデックス中の論理ブロックアドレスＬＢＡに対応付けてャッシュインデックステーブル３３０に登録される。
【００９３】
ステップ９０３が実行されることにより、以後、今回と同一の論理ブロックアドレスＬＢＡへのアクセスが指定された場合、キャッシュヒットとなる。
【００９４】
ステップ９０３が実行される例について、図６を参照して説明する。  
まず、クライアント装置２０からのキャッシュ登録要求により、ディスクボリューム１００-1の論理ブロックアドレス「ＬＢＡ１」に格納されている、漏洩しても問題のないデータＡが、ディスクボリューム１００-1に対応するキャッシュインデックステーブル３３０及びキャッシュデータテーブル３４０を用いてキャッシュデータとして登録されているものとする。一方、ディスクボリューム１００-nの論理ブロックアドレス「ＬＢＡｎ」にも、データＡが格納されているものとする。但し、ディスクボリューム１００-nの論理ブロックアドレス「ＬＢＡｎ」に格納されているデータＡは、キャッシュデータとして登録されていないものとする。
【００９５】
このような状態で、中継装置３０が、クライアント装置２０から送信された、ディスクボリューム１００-nの論理ブロックアドレス「ＬＢＡｎ」からデータを読み込むためのリード命令を受信したものとする。この場合、キャッシュミスヒットとなって、上述のキャッシュインデックステーブルへの登録処理（図８のステップ８０９）が実行される。これにより、ディスクボリューム１００-nに対応するキャッシュインデックステーブル３３０には、論理ブロックアドレス「ＬＢＡｎ」に対応付けて、データＡの内容に対応する識別子「ハッシュ値１」が登録される。
【００９６】
同様に、中継装置３０が、クライアント装置２０から送信された、ディスクボリューム１００-1の論理ブロックアドレス「ＬＢＡ４」からデータを読み込むためのリード命令を受信したものとする。ディスクボリューム１００-1の論理ブロックアドレス「ＬＢＡ４」には、データＡが格納されている。もし、この論理ブロックアドレス「ＬＢＡ４」のデータＡが、図６とは異なり、キャッシュデータテーブル３４０に登録されていないならば、キャッシュミスヒットとなって、上述のキャッシュインデックステーブルへの登録処理（図８のステップ８０９）が実行される。これにより、ディスクボリューム１００-1に対応するキャッシュインデックステーブル３３０には、図６に示されるように、論理ブロックアドレス「ＬＢＡ４」に対応付けて、データＡの内容に対応する識別子「ハッシュ値１」が登録される。
【００９７】
つまり、本実施形態においては、ｉ（ｉ＝１〜ｎ），ｊ（ｊ＝１〜ｎ），ｘ，ｙを、ｉ≠ｊ及び／またはｘ≠ｙであるとすると、クライアント装置２０から中継装置３０に送信されるキャッシュ登録命令に応じて、当該命令で指定された、ディスクボリューム１００-iの論理ブロックアドレス「ＬＢＡｘ」のデータＡを、キャッシュデータとして中継装置３０内に登録すると、ディスクボリューム１００-jの論理ブロックアドレス「ＬＢＡｙ」のデータＡを読み込むリード命令の実行時に、ディスクボリューム１００-jに対応するキャッシュインデックステーブル３３０に、論理ブロックアドレス「ＬＢＡｙ」に対応付けて、データＡの識別子「ハッシュ値１」が自動的に登録される。このように本実施形態によれば、例えば、ストレージ装置１０上にクライアント装置毎（またはクライアント装置を利用するユーザ毎）にディスクボリュームが用意されているようなシンクライアントシステムにおいても、クライアント装置毎（またはユーザ毎）にキャッシュデータの登録をクライアント装置側から中継装置３０に要求することなく、各クライアント（またはユーザ）が利用できる形態でキャッシュデータを登録することができる。
【００９８】
一方、生成された識別子に対応するデータがキャッシュデータテーブル３４０に登録されていない場合（ステップ９０２のＮＯ）、インデックス登録部３２０ｄは、キャッシュミスヒットの判定に用いられたキャッシュインデックステーブル３３０に、インデックス中の論理ブロックアドレスＬＢＡに対応付けて登録されている識別子を例えば無効な値（null値）に置き換える（ステップ９０４）。これにより、以後、今回と同一の論理ブロックアドレスＬＢＡへのアクセスが指定された場合にも、キャッシュミスヒットとなる。但し、キャッシュインデックステーブル３３０に、論理ブロックアドレスＬＢＡに対応付けられた識別子が登録されていないならば、ステップ９０４は実行されずに、キャッシュインデックステーブルへの登録処理は終了する。
【００９９】
なお、読み込み対象データのデータ長Ｌが複数のキャッシュブロックのデータ長に等しい場合には、キャッシュヒット判定部３２０ｂは、ステップ８０２のキャッシュヒット判定処理を次のように実行すればよい。つまり、キャッシュヒット判定部３２０ｂは、論理ブロックアドレス及びデータ長Ｌで示されるデータ領域に対応するキャッシュインデックステーブル３３０の複数のエントリを参照して、その全てに識別子が登録されているかを判定すればよい。例えばデータ長Ｌが２ａセクタであれば、キャッシュヒット判定部３２０ｂは、キャッシュインデックステーブル３３０のエントリのうち、論理ブロックアドレスＬＢＡが保持されているエントリと、論理ブロックアドレス（ＬＢＡ＋１）が保持されているエントリとを参照すればよい。ここでは、参照された全てのエントリでキャッシュヒットが判定された場合だけ、全体としてキャッシュヒットが判定される。一方、１エントリでもキャッシュミスヒットが判定された場合には、全体としてキャッシュミスヒットが判定される。
【０１００】
以上、クライアント装置２０からリード要求が送信された場合の中継装置３０の動作について説明した。クライアント装置２０からライト要求が送信された場合の中継装置３０の動作については、データの転送方向がクライアント装置２０からストレージ装置１０になる点を除いて、リード要求の場合と同様となるため、説明を省略する。
【０１０１】
［変形例］
次に上記実施形態の変形例について説明する。  
この変形例はキャッシュ登録動作に関して上記実施形態と相違する。そこで本変形例が実施形態と相違する点の理解を用意するために、実施形態で適用された中継装置３０のキャッシュ登録動作の概要を以下に示す。
【０１０２】
中継装置３０は、クライアント装置２０からキャッシュ登録要求を受信すると（ステップ７０３）、当該クライアント装置２０が接続しているストレージ装置１０（のディスクボリューム１００-1）に対してｉＳＣＳＩセッションを確立する（ステップ７０４）。この状態で中継装置３０は、ストレージ装置１０からキャッシュ登録対象データを取得して（ステップ７０５，７０６）、キャッシュデータテーブル３４０に登録する（ステップ７０７，７０８）。そして中継装置３０は、ｉＳＣＳＩセッションを閉じる（７０９）。このｉＳＣＳＩセッションは、中継装置３０が中継しているクライアント装置２０とストレージ装置１０との間のｉＳＣＳＩセッションとは独立したものである。
【０１０３】
次に、本変形例で適用される中継装置３０のキャッシュ登録動作の手順について、実施形態と相違する点を中心に、図１０のフローチャートを参照して説明する。なお、図１０において、図７のフローチャートと同一部分には同一参照符号を付してある。
【０１０４】
中継装置３０のキャッシュ登録要求処理部３７０は、クライアント装置２０のキャッシュ登録データ選択・要求送信部２２０からキャッシュ登録要求を受信すると（ステップ７０３）、セッション取得処理を行う（ステップＡ１）。このセッション取得処理により、キャッシュ登録要求処理部３７０は、中継装置３０の中継部３１０が中継している、キャッシュ登録要求元のクライアント装置２０とストレージ装置１０との間のｉＳＣＳＩセッション（通信）が存在する、そのｉＳＣＳＩセッションを当該中継部３１０を介して取得する。セッション取得処理の詳細は後述する。
【０１０５】
キャッシュ登録要求処理部３７０は、クライアント装置２０とストレージ装置１０との間のｉＳＣＳＩセッションを取得すると、当該クライアント装置２０からキャッシュ登録が要求されたキャッシュ登録対象データを読み込むためのリード命令を生成する（ステップＡ２）。そしてキャッシュ登録要求処理部３７０は、生成したリード命令を、先に取得したｉＳＣＳＩセッションを利用して、中継部３１０を介してストレージ装置１０に送信する（ステップＡ３）。ここで、リード命令の送信は、取得したｉＳＣＳＩセッションで中継されているｉＳＣＳＩ−ＰＤＵ間（通信の中）にリード命令を挿入することにより実現される。
【０１０６】
キャッシュ登録要求処理部３７０は、リード命令の送信に応じてストレージ装置１０から応答として返されるデータを中継部３１０を介して受信することにより、当該データをキャッシュ登録対象データとして取得する（ステップ７０６）。このストレージ装置１０からの応答は、クライアント装置２０には中継されない。
【０１０７】
以降の動作は、上記実施形態と同様であり、キャッシュ登録対象データをキャッシュデータとしてキャッシュデータテーブル３４０に登録するための処理（ステップ７０７，７０８）が行われる。但し本変形例では、この処理の後に実施形態で行われていたステップ７０９は行われない。
【０１０８】
次に、セッション取得処理（図１０のステップＡ１）の手順について、図１１のフローチャートを参照して説明する。  
キャッシュ登録要求処理部３７０は、中継装置３０の中継部３１０が中継している、キャッシュ登録要求元のクライアント装置２０とストレージ装置１０との間のｉＳＣＳＩセッションがあるかをチェックする（ステップＡ１１，Ａ１２）。もし、このようなｉＳＣＳＩセッションが存在する（ステップＡ１２のＹＥＳ）、キャッシュ登録要求処理部３７０は当該ｉＳＣＳＩセッションを取得する（ステップＡ１３）。
【０１０９】
これに対し、上述のｉＳＣＳＩセッションがないならば、キャッシュ登録要求処理部３７０は、クライアント装置２０のキャッシュ登録データ選択・要求送信部２２０に対して、キャッシュ登録要求の実行未完了を通知するための応答を返す（ステップＡ１４）。そしてキャッシュ登録要求処理部３７０は、上述のｉＳＣＳＩセッションが確立されるのを待つ（ステップＡ１５，Ａ１６）。もし、このｉＳＣＳＩセッションが確立したならば（ステップＡ１６のＹＥＳ）、つまり、クライアント装置２０とストレージ装置１０との間の通信の中継が開始されたならば、キャッシュ登録要求処理部３７０は、例えば任意のタイミングで、そのｉＳＣＳＩセッションを取得する（ステップＡ１３）。
【０１１０】
本変形例によれば、上記実施形態と同様の効果に加えて、以下に列挙する効果を得ることができる。  
（１）キャッシュ登録のために、中継装置３０が独自にｉＳＣＳＩセッションを終端する必要がない。つまり中継装置３０が、クライアント装置２０に相当するイニシエータとしての動作（ストレージ装置１０との間の通信プロトコル）を実装する必要がない。
【０１１１】
（２）クライアント装置２０がストレージ装置１０のディスクボリューム１００-iをリザーブしているときや、ストレージ装置１０側の同時接続数制限により中継装置３０からストレージ装置１０に対して新たに接続できないときでも、中継装置３０はストレージ装置１０からキャッシュ登録用にデータを読み込むことができる。
【０１１２】
（３）ストレージ装置１０側でディスクボリューム１００-iにアクセスするために認証を設けている場合、そのための管理が容易になる。その理由は次の通りである。まず実施形態では、キャッシュ登録のために中継装置３０からストレージ装置１０に対してｉＳＣＳＩセッションを独立して確立するには、この認証を通過しなければならず、そのためには、中継装置３０がクライアント装置２０またはストレージ装置１０と連携して、認証情報を管理しなければならない。これに対し変形例では、既に設定されているセッションに相乗りするために、このような管理は不要である。しかも変形例では、中継装置３０の中継部３１０が中継中でない場合であっても、キャッシュ登録要求を非同期的に処理することができる。
【０１１３】
なお、本発明は、上記実施形態またはその変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態またはその変形例に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態またはその変形例に示される全構成要素から幾つかの構成要素を削除してもよい。
【符号の説明】
【０１１４】
１０…ストレージ装置（第１の装置）、２０…クライアント装置（第２の装置、第３の装置）、３０…中継装置、１００-1〜１００-n…ディスクボリューム、２１０…ドライバ・ファイルシステム、２１１…ファイルシステム、２２０…キャッシュ登録データ選択・要求送信部、３１０…中継部、３２０…キャッシュ管理部、３２０ａ…キャッシュ登録部、３２０ｂ…キャッシュヒット判定部、３２０ｃ…中継制御部、３２０ｄ…インデックス登録部、３３０…キャッシュインデックステーブル、３４０…キャッシュデータテーブル、３５０…キャッシュデータ格納部、３６０…識別子生成部、３７０…キャッシュ登録要求処理部（キャッシュ登録要求受信手段）、３８０…キャッシュ格納部。
【図１】
2010211607.tif 000003
【図２】
2010211607.tif 000004
【図３】
2010211607.tif 000005
【図４】
2010211607.tif 000006
【図５】
2010211607.tif 000007
【図６】
2010211607.tif 000008
【図７】
2010211607.tif 000009
【図８】
2010211607.tif 000010
【図９】
2010211607.tif 000011
【図１０】
2010211607.tif 000012
【図１１】
2010211607.tif 000013