(57)【要約】【課題】記憶容量とデータ応答性能を高めつつ、サーバ機能の性能低下を防止できるようにする。【解決手段】本発明の実施形態としてのデータ転送装置において  ストレージ制御部は、複数のストレージへのデータの読み書きを制御し、対応情報管理部は、ストレージ制御部が書き込んだデータと、データを書き込んだストレージとを関連づけた対応情報を管理し、ストレージ管理部は、ストレージ制御部が書き込みまたは読み出しに失敗したストレージを無効ストレージとして管理し、特定部は、通信装置から受信した取得要求メッセージで要求されたデータを格納しているストレージを特定し、読み出し部は、特定したストレージが、無効ストレージに該当するときは、データの読み出し要求をストレージ制御部に行わない。【選択図】図２
2015179326.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して、通信装置と通信するデータ転送装置であって、
複数のストレージへのデータの読み書きを制御するストレージ制御部と、
前記ストレージ制御部が書き込んだデータと、前記データを書き込んだストレージとを関連づけた対応情報を管理する対応情報管理部と、
前記ストレージ制御部がデータの書き込みまたは読み出しに失敗したストレージを無効ストレージとして管理するストレージ管理部と、
前記通信装置から、前記データの取得要求メッセージを受信する通信部と、
前記対応情報に基づき、前記取得要求メッセージで要求されたデータを格納しているストレージを特定する特定部と、
前記特定部で特定したストレージが、前記無効ストレージに該当するきは、前記データの読み出し要求を前記ストレージ制御部に行わず、前記無効ストレージに該当しないときは、前記特定したストレージから前記データを読み出すことを前記ストレージ制御部に要求する読み出し部と
を備えたデータ転送装置。
【請求項２】
書き込み部をさらに備え、
前記通信部は、前記通信装置からデータの保存要求メッセージを受信し、
前記ストレージ管理部は、前記保存要求メッセージで要求されたデータを書き込むストレージを、前記複数のストレージのうち前記無効ストレージ以外のストレージの中から選択し、
前記書き込み部は、前記ストレージ管理部により選択されたストレージに、前記データの書き込みを行うことを、前記ストレージ制御部に要求し、
前記ストレージ制御部は、前記書き込み部からの要求に応じて、前記ストレージに前記データの書き込みを行う
請求項１に記載のデータ転送装置。
【請求項３】
新たなストレージが前記ストレージ制御部の制御対象に追加されたことを検知する新規ストレージ検知部をさらに備え、
前記ストレージ管理部は、前記新規ストレージ検知部で検知されたストレージをストレージの選択対象に含める
請求項１ないし２のいずれか一項に記載のデータ転送装置。
【請求項４】
前記読み出し部が前記ストレージ制御部に読み出し要求を行った各ストレージの頻度に応じて、各ストレージへの読み出し要求の頻度に関する統計情報を管理する統計情報管理部をさらに備え、
前記ストレージ管理部は、前記統計情報に基づいて、前記ストレージを選択する
請求項１ないし３のいずれか一項に記載のデータ転送装置。
【請求項５】
前記ストレージ管理部は、前記読み出し要求の頻度が少ないストレージを優先的に選択する
請求項４に記載のデータ転送装置。
【請求項６】
前記ストレージ管理部は、前記ストレージ制御部が前記保存要求メッセージで要求されたデータの書き込みに失敗した場合は、前記書き込みに失敗したストレージとは別のストレージを選択し、
前記書き込み部は、前記別のストレージへ前記データを書き込むことを、前記ストレージ制御部に要求する
請求項２に記載のデータ転送装置。
【請求項７】
前記通信部は、前記特定したストレージが無効ストレージに該当するときは、前記取得要求メッセージで要求されたデータは存在しないことを表す応答メッセージを、前記通信装置に送信する
請求項１ないし６のいずれか一項に記載のデータ転送装置。
【請求項８】
前記複数のストレージは、所定のファイルシステムによって管理されており、それぞれ１つ以上のファイルを格納しており、
前記ストレージ制御部は、各ストレージの各ファイルへのデータの読み書きを制御し、
前記対応情報管理部は、前記ストレージ制御部が書き込んだデータと、前記データを書き込んだファイルとを関連づけた前記対応情報を管理し、
前記ストレージ管理部は、前記ストレージ制御部が書き込みまたは読み出しに失敗したファイル、または前記ファイルを格納しているストレージを、無効ファイルまたは無効ストレージとして管理し、
前記特定部は、前記取得要求メッセージで要求されたデータを格納しているファイルを前記対応情報に基づき特定し、
前記読み出し部は、前記特定したファイルが、前記無効ファイルであるとき、または前記無効ストレージに属するときは、前記ストレージ制御部に前記特定したファイルからのデータ読み出しを要求しない
請求項１ないし５のいずれか一項に記載のデータ転送装置。
【請求項９】
書き込み部をさらに備え、
前記通信部は、データの保存要求メッセージを受信し、
前記ストレージ管理部は、前記保存要求メッセージで要求されたデータを書き込むファイルを、前記無効ストレージ以外のストレージ上のファイル、または前記無効ファイル以外のファイルから選択し、
前記書き込み部は、前記ストレージ管理部により選択されたファイルに、前記データの書き込みを行うことを、前記ストレージ制御部に要求し、
前記ストレージ制御部は、前記書き込み部からの要求に応じて、前記ファイルへ前記データの書き込みを行う
請求項８に記載のデータ転送装置。
【請求項１０】
前記ストレージ管理部は、前記ストレージ制御部が前記データの書き込みに失敗した場合は、前記書き込みに失敗したファイルまたはストレージとは別のファイルまたはストレージを選択し、
前記書き込み部は、前記別のファイル、または別のストレージ上のファイルへ前記データを書き込むことを前記ストレージ制御部に要求する
請求項９に記載のデータ転送装置。
【請求項１１】
前記通信部は、前記特定したファイルが、前記無効ファイルに該当する、または前記無効ストレージに属するときは、前記取得要求メッセージで要求されたデータは存在しないことを表す応答メッセージを、前記通信装置に送信する
請求項８ないし１０のいずれか一項に記載のデータ転送装置。
【請求項１２】
前記通信部は、前記ストレージ制御部が前記データの書き込みまたは読み出しに失敗した場合は、前記書き込みまたは読み出しに失敗したことを示す応答メッセージを、前記通信装置に送信する
請求項１ないし１１のいずれか一項に記載のデータ転送装置。
【請求項１３】
前記読み出し部による前記データの読み出し要求に応じて前記ストレージ制御部により読み出されたデータを取得し、前記データを含む応答メッセージを生成する応答メッセージ生成部をさらに備え、
前記通信部は、前記応答メッセージを、前記取得要求メッセージに対する応答として前記通信装置に送信する
請求項１ないし１２のいずれか一項に記載のデータ転送装置。
【請求項１４】
前記ストレージ制御部は、データを含む応答メッセージの読み書きを前記複数のストレージに対して制御し、
前記対応情報管理部は、前記ストレージ制御部が書き込んだ応答メッセージと、前記応答メッセージを書き込んだストレージとを関連づけた対応情報を管理し、
前記通信部は、前記通信装置から、前記データの取得要求メッセージを受信し、
前記特定部は、前記対応情報に基づき、前記取得要求メッセージで要求されたデータを含む応答メッセージを格納しているストレージを特定し、
前記読み出し部は、前記特定部で特定したストレージが、前記無効ストレージに該当するときは、前記応答メッセージの読み出し要求を、前記ストレージ制御部に行わず、前記無効ストレージに該当しないときは、前記特定したストレージから前記応答メッセージを読み出すことを前記ストレージ制御部に要求する
請求項１に記載のデータ転送装置。
【請求項１５】
書き込み部と、応答メッセージ生成部をさらに備え、
前記通信部は、データの保存要求メッセージを受信し、
前記応答メッセージ生成部は、前記保存要求メッセージで要求されたデータを含む応答メッセージを生成し、
前記ストレージ管理部は、前記応答メッセージを書き込むストレージを、前記複数のストレージのうち前記無効ストレージ以外のストレージの中から選択し、
前記書き込み部は、前記ストレージ管理部により選択されたストレージに、前記応答メッセージの書き込みを行うことを、前記ストレージ制御部に要求し、
前記ストレージ制御部は、前記書き込み部からの要求に応じて、前記ストレージに前記応答メッセージの書き込みを行う
請求項１４に記載のデータ転送装置。
【請求項１６】
ネットワークを介して、通信装置と通信するデータ転送方法であって、
複数のストレージへのデータの読み書きを制御するストレージ制御装置が書き込んだデータと、前記データを書き込んだストレージとを関連づけた対応情報を管理する対応管理ステップと、
前記ストレージ制御装置がデータの書き込みまたは読み出しに失敗したストレージを、無効ストレージとして管理するストレージ管理ステップと、
前記通信装置から、前記データの取得要求メッセージを受信する受信ステップと、
前記対応情報に基づき、前記取得要求メッセージで要求されたデータを格納しているストレージを特定する特定ステップと、
前記特定したストレージが、前記無効ストレージに該当するときは、前記データの読み出し要求を、前記ストレージ制御装置に行わないことを決定する決定ステップと、
前記特定ステップで特定したストレージが、前記無効ストレージに該当しないときは、前記特定ステップで特定したストレージから前記データを読み出すことを、前記ストレージ制御装置に要求する読み出しステップと、
を備えたデータ転送方法。
【請求項１７】
前記ストレージ制御装置は、データを含む応答メッセージの読み書きを前記複数のストレージに対して制御し、
前記対応情報管理ステップは、前記ストレージ制御装置が書き込んだ応答メッセージと、前記応答メッセージを書き込んだストレージとを関連づけた対応情報を管理し、
前記受信ステップは、前記通信装置から、前記データの取得要求メッセージを受信し、
前記特定ステップは、前記対応情報に基づき、前記取得要求メッセージで要求されたデータを含む応答メッセージを格納しているストレージを特定し、
前記決定ステップは、前記特定したストレージが、前記無効ストレージに該当するときは、前記応答メッセージの読み出し要求を前記ストレージ制御装置に行わないことを決定し、
前記読み出しステップは、前記特定ステップで特定したストレージが、前記無効ストレージに該当しないときは、前記特定したストレージから前記応答メッセージを読み出すことを、前記ストレージ制御装置に要求する
請求項１６に記載のデータ転送方法。
【請求項１８】
ネットワークを介して、通信装置と通信するためのコンピュータプログラムであって、
複数のストレージへのデータの読み書きを制御するストレージ制御装置が書き込んだデータと、前記データを書き込んだストレージとを関連づけた対応情報を管理する対応管理ステップと、
前記ストレージ制御装置がデータの書き込みまたは読み出しに失敗したストレージを、無効ストレージとして管理するストレージ管理ステップと、
前記通信装置から、前記データの取得要求メッセージを受信する受信ステップと、
前記対応情報に基づき、前記取得要求メッセージで要求されたデータを格納しているストレージを特定する特定ステップと、
前記特定したストレージが、前記無効ストレージに該当するときは、前記データの読み出し要求を、前記ストレージ制御装置に行わないことを決定する決定ステップと、
前記特定ステップで特定したストレージが、前記無効ストレージに該当しないときは、前記特定ステップで特定したストレージから前記データを読み出すことを、前記ストレージ制御装置に要求する読み出しステップと、
をコンピュータに実行させるためのコンピュータプログラム。
【請求項１９】
前記ストレージ制御装置は、データを含む応答メッセージの読み書きを前記複数のストレージに対して制御し、
前記対応情報管理ステップは、前記ストレージ制御装置が書き込んだ応答メッセージと、前記応答メッセージを書き込んだストレージとを関連づけた対応情報を管理し、
前記受信ステップは、前記通信装置から、前記データの取得要求メッセージを受信し、
前記特定ステップは、前記対応情報に基づき、前記取得要求メッセージで要求されたデータを含む応答メッセージを格納しているストレージを特定し、
前記決定ステップは、前記特定したストレージが、前記無効ストレージに該当するときは、前記応答メッセージの読み出し要求を前記ストレージ制御装置に行わないことを決定し、
前記読み出しステップは、前記特定ステップで特定したストレージが、前記無効ストレージに該当しないときは、前記特定したストレージから前記応答メッセージを読み出すことを、前記ストレージ制御装置に要求する
請求項１８に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データ転送装置、データ転送方法およびコンピュータプログラムに関する。
【背景技術】
【０００２】
従来のデータ記憶装置には、ストレージ上のファイルにデータを記憶し、クライアントからの要求に応じて、データをストレージから読み出し、読み出したデータをクライアントに送信するものがあった。頻繁アクセスされるデータについては、これをＤＲＡＭに配置することで、高速な応答を実現するものがあった。しかし、この方式では、大記憶容量で高速な応答を実現するには、多量のＤＲＡＭを要する問題があった。またストレージが故障した場合に、クライアントへの応答性が大きく低下またはサーバ機能が停止する問題がった。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−９９４６５公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の実施形態は、記憶容量と応答性能を高めつつ、ストレージ故障の場合も応答性の低下を抑制できるようにすることを目的とする。
【課題を解決するための手段】
【０００５】
本発明の実施形態としてのデータ転送装置は、ネットワークを介して、通信装置と通信するデータ転送装置であって、ストレージ制御部、対応情報管理部、ストレージ管理部、通信部、特定部、および読み出し部を備える。
【０００６】
前記ストレージ制御部は、複数のストレージへのデータの読み書きを制御する。
【０００７】
前記対応情報管理部は、前記ストレージ制御部が書き込んだデータと、前記データを書き込んだストレージとを関連づけた対応情報を管理する。
【０００８】
前記ストレージ管理部は、前記ストレージ制御部がデータの書き込みまたは読み出しに失敗したストレージを無効ストレージとして管理する。
【０００９】
前記通信部は、前記通信装置から、前記データの取得要求メッセージを受信する。
【００１０】
前記特定部は、前記対応情報に基づき、前記取得要求メッセージで要求されたデータを格納しているストレージを特定する。
【００１１】
前記読み出し部は、前記特定部が特定したストレージが、前記無効ストレージに該当するきは、前記データの読み出し要求を前記ストレージ制御部に行わず、前記無効ストレージに該当しないときは、前記特定したストレージから前記データを読み出すことを前記ストレージ制御部に要求する。
【図面の簡単な説明】
【００１２】
【図１】第１の実施形態に係るデータ転送システムの全体構成を示す図。
【図２】第１の実施形態に係るデータ転送装置の内部構成を示す図。
【図３】第１の実施形態に係るキー・データ位置対応表の例を示す図。
【図４】第１の実施形態に係るデータ記憶場所テーブルの例を示す図。
【図５】第１の実施形態に係るエントリを削除する例を示す図。
【図６】第２の実施形態に係るデータ転送装置を示す図。
【図７】第３の実施形態に係るデータ転送装置を示す図。
【図８】第３の実施形態に係る統計情報の例を示す図。
【図９】第４の実施形態に係るデータ転送装置を示す図。
【図１０】第５の実施形態に係るデータ転送装置を示す図。
【発明を実施するための形態】
【００１３】
以下、図面を参照しながら、本発明の実施形態について説明する。
【００１４】
（第１の実施形態）
図１は、本実施形態に係るデータ転送装置を含むキャッシュサーバと、キャッシュアクセスクライアント（以下、クライアントと呼ぶ）とを備えたデータ転送システムの全体構成を示す。
【００１５】
キャッシュサーバ１０１は、クライアント１０２と、ネットワーク１０３により接続されている。クライアントは１台のみ示しているが、複数台のクライアントがネットワーク１０３に接続されていてもよい。
【００１６】
ネットワーク１０３は、有線、無線、またはこれらのハイブリッドのネットワークである。ここでは、Ｅｔｈｅｒｎｅｔ（登録商標）のようなＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を想定するが、無線ＬＡＮなど、他の方式のネットワークでもかまわない。
【００１７】
クライアント１０２は、キャッシュサーバ１０１で定めた手順（キャッシュプロトコル）で、キャッシュサーバ１０１とメッセージを送受信する。クライアント１０２は、ＰＣ、スマートフォン、タブレット端末、携帯端末等の通信装置である。キャッシュサーバ１０１は、データを記憶する複数のストレージ１〜ストレージｎ（ｎは２以上の整数）を有する。キャッシュサーバ１０１は、ストレージ１〜ｎへの読み書きを制御するストレージ制御装置を含む。
【００１８】
キャッシュサーバ１０１は、ストレージへのデータ記憶方式として、キーと、バリュー（データ）を対応させた記憶方法をとるものとする。このため、キャッシュサーバ１０１を、キーバリューストア（ＫＶＳ）サーバと呼び、クライアント１０２は、ＫＶＳクライアントと呼ぶ場合もある。
【００１９】
キャッシュプロトコルの代表的なものには、memcachedプロトコル(https://github.com/memcached/memcached/blob/master/doc/protocol.txt)があり、本実施形態では、これを用いる場合を想定する。ただし、同様の、他のプロトコルで代替することも可能である。
【００２０】
ストレージ１〜ｎは、任意のファイルシステムに従って構成されている。代表的なファイルシステムには、FATファイルシステム(https://www.microsoft.com/ja-jp/mic/iplicense/ipventures/FATFileSystem.aspx)やLinuxのext4 (https://ext4.wiki.kernel.org/index.php/Main_Page) などがある。管理者のポリシーにしたがって、ストレージ１〜ｎを任意のファイルシステムで構成してかまわない。
【００２１】
キャッシュサーバ１０１は、クライアント１０２から、保存対象であるデータを含むデータ保存要求メッセージを受ける。キャッシュサーバ１０１は、データ保存要求メッセージを受けると、キャッシュプロトコルの応答形式に従って、当該データを含む応答メッセージを作成する。キャッシュサーバ１０１は、当該応答メッセージを、ストレージ１〜ｎから選択した１つのストレージに保存する。また、キャッシュサーバ１０１は、クライアント１０２からデータ取得要求メッセージを受けると、取得要求されたデータを含む応答メッセージを格納するストレージを特定し、特定したストレージから、応答メッセージを読み出す。キャッシュサーバ１０１は、読み出した応答メッセージにヘッダを付加し、パケットを生成し、当該パケットをクライアント１０２に送信する。つまり、キャッシュサーバ１０１は、データの保存要求メッセージを受けた際に、応答メッセージを生成してストレージに保存しておき、データの取得要求メッセージを受けた際には、事前に生成した応答メッセージをストレージから読み出して送信する。これにより、高速な応答を行う。なお、データ保存要求メッセージを送信するクライアントと、データ取得要求メッセージを送信するクライアントは同じであっても、異なってもかまわない。
【００２２】
データ保存要求メッセージは、memcachedプロトコルでは、SET要求メッセージに対応し、データ取得要求メッセージは、同プロトコルではGET要求メッセージに対応する。以下では、memcachedプロトコルを想定し、SET要求メッセージおよびGET要求メッセージの用語を用いる。
【００２３】
図２に、本実施形態に係るデータ転送装置の内部構成を示す。このデータ転送装置は、TCP/IP通信部１１、キャッシュプロトコル処理部１２、データ確認処理部１３、記憶領域特定部１４、対応表管理部（対応情報管理部）１５、応答メッセージ生成部１６、ストレージ管理部１７、データ書き込み部１８、ストレージ制御部１９、エラー処理部２０、データ読み出し部２１、無効ファイル判定部２２を備える。
【００２４】
TCP/IP通信部１１は、TCP/IPの通信プロトコルに従って、ネットワーク１０３上のクライアント１０２と通信する。TCP/IP通信部１１は、ＣＰＵで動作するＯＳ（Operating System）と連携して、クライアントとのセッションを管理する機能を備えていてもよい。
【００２５】
TCP/IP通信部１１は、クライアント１０２から受信した通信メッセージを、キャッシュプロトコル処理部１２へ渡したり、キャッシュプロトコル処理部１２から受け取った通信メッセージを、ネットワーク１０３を介してクライアント１０２に送出したりする。本実施形態では、通信メッセージとして、キャッシュプロトコルの規定に従った要求メッセージを受信し、それに対する応答メッセージを送信する場合を主として想定する。
【００２６】
本実施形態では、ネットワーク１０３から受信する要求メッセージの種類として、データの記憶（保存）を要求するSET要求メッセージと、データの取得を要求するGET要求メッセージがある。SET要求メッセージにはSET命令が含まれ、SET命令は、キーとデータとを含む。GET要求メッセージにはGET命令が含まれ、GET命令はキーを含む。その他の種類の要求メッセージがあっても構わない。
【００２７】
キャッシュプロトコル処理部１２は、TCP/IP通信部１１からクライアント１０３の要求メッセージを受け取る。一例として、キャッシュプロトコル処理部１２は、ＯＳのrecv()システムコールを受けることで、ＯＳから要求メッセージを受信する。キャッシュプロトコル処理部１２は、要求メッセージの内容を解釈する。解釈の結果、要求メッセージの種類がSET要求の場合は、SET命令に含まれるキーとデータをデータ確認処理部１３へ渡す。GET要求の場合は、GET命令に含まれるキーを、記憶領域特定部１４へ渡す。
【００２８】
また、キャッシュプロトコル処理部１２は、キャッシュプロトコルの規定に従って、要求メッセージに対する応答メッセージを作成し、TCP/IP通信部１１へ渡す機能を有する。例えばSET要求メッセージを受けた場合は、SET命令の実行結果（成功あるいは失敗等）を表す応答メッセージを返す。なお、GET要求メッセージを受けて、GET要求されたデータを含む応答メッセージを返すときは、後述するように、データ読み出し部２１がストレージから当該応答メッセージを読み出して返す。
【００２９】
対応表管理部１５は、キー・データ位置対応表（キー・データ位置対応情報）を記憶および管理する。図３にキー・データ位置対応表の例を示す。キー・データ位置対応表には、キー（key）と、ファイルディスクリプタと、オフセットと、データ長とが一組として、複数のエントリが格納されている。
【００３０】
ファイルディスクリプタは、キーに対応する応答メッセージが、ストレージ上で保持されているファイルを識別する識別子である。ファイルディスクリプタは、ストレージ上のファイルを特定するために用いる。オフセットは、当該ファイルの中の位置を示す数値である。例えば、ファイルの先頭からのバイト位置を示す数値である。データ長は、応答メッセージの長さを表す。図の例では、キー・データ位置対応表は、単純な表で表記しているが、キーを検索鍵とするツリーあるいはハッシュ表など、キーによる検索を高速に行うデータ構造を有することが好ましい。
【００３１】
データ確認処理部１３は、キャッシュプロトコル処理部１２から受け取ったキーと同一の文字列を含むエントリが、キー・データ位置対応表に含まれているかどうかを確認する。含まれている場合は、キー・データ位置対応表の当該エントリを無効にする。無効化の方法として、エントリを削除してもよいし、無効を示す値を設定してもよい。ただし、無効化の処理は必須では無く、省略することも可能である。この場合、後述する本キー・データ位置対応表へのエントリを追加する行う場合は、同じキーのエントリを上書きすればよい。これにより、以降の処理の間に、当該キーに関するGET命令の処理を継続する必要がある場合への対応が可能となる。
【００３２】
データ確認処理部１３は、必要に応じてエントリの無効化を行った後、キャッシュプロトコル処理部１２から受け取ったキーとデータを、応答メッセージ生成部１６に渡す。
【００３３】
応答メッセージ生成部１６は、データ確認処理部１３から受け取ったキーとデータを用いて、キャッシュプロトコルの規定に従って、応答メッセージを生成する。ここで生成する応答メッセージは、当該キーを指定したGET命令に対応する応答メッセージである。当該応答メッセージは、データ確認処理部１３から受け取ったデータを含む。
【００３４】
応答メッセージ生成部１６は、生成した応答メッセージを格納するため、ストレージ管理部１７に、ストレージ１〜ｎのうちの１つのストレージ上の記憶領域の割り当てを依頼する。割り当て依頼には、応答メッセージのメッセージ長を含める。応答メッセージ生成部１６は、ストレージ管理部１７から、割り当てられた記憶領域の情報を受け取る。
【００３５】
ストレージ管理部１７は、データ記憶場所テーブルを保持し、当該テーブルに基づき、各ストレージ上の記憶領域の割り当てを管理する。ストレージ管理部１７は、応答メッセージ生成部１６からの依頼に応じて、応答メッセージを格納するための記憶領域を割り当てる。記憶領域は、例えばファイルと、オフセットとにより識別する。なお、ファイルは、特定の１つのストレージに、ファイルシステムによって対応づけられている。ストレージ間でファイルディスクリプタの値の重複を許容するファイルシステムの場合には、記憶領域は、ファイルとオフセットに加え、ストレージの識別子によって識別する。
【００３６】
図４に、データ記憶場所テーブルの例を示す。データ記憶場所テーブルには、パス（path）、ファイルディスクリプタ、オフセットの各フィールドが含まれる。
【００３７】
パスは、ファイルシステムにおいて、ストレージあるいはファイルがマッピングされている場所を特定する。「mnt1」はストレージ１、「mnt2」はストレージ２、「mntn」はストレージｎに対応する。ファイルディスクリプタは、そのファイルへアクセスするための識別子である。ファイル１は、ファイルディスクリプタ３のファイルに対応し、ファイルｎはファイルディスクリプタｍのファイルに対応する。オフセットは、該当するファイルディスクリプタを有するファイル内において、次に記憶領域を割り当て可能な開始位置を示す。
【００３８】
図示の例では、n個のファイルのエントリがある。各々のファイルは、それぞれ異なるストレージ上に保持されている。ただし、１つのストレージ上に、複数のファイルを配置し、ファイルごとのエントリを、データ記憶場所テーブルに設定することもできる。
【００３９】
なお、初期状態では、データ記憶場所テーブルのオフセットは０に設定されているとする。パスの値は予め固定されており、ファイルディスクリプタは、本装置の初期処理の際に、値が決められて、設定されるものとする。ただし、これは一例であり、別の方法でこれらの値が決められてもかまわない。
【００４０】
ストレージ管理部１７は、記憶領域の割り当ての際、任意の方法でストレージを選択する。例えば、ストレージ管理部１７は、各ストレージの選択される回数が均等になるように、ストレージを選択してもよい。一例として、ラウンドロビン方式でストレージを選択する。または、ランダムに選択することも可能である。また、後述する実施形態のように、GET要求に応じてアクセスされたストレージの頻度に応じて、ストレージを選択することも可能である。
【００４１】
ストレージ管理部１７は、ファイル内に記憶領域を割り当てるたびに、割り当てたサイズ分、オフセットを増加させる。例えば、100バイトの領域を割り当てた場合は、100バイト分加算することで、オフセットを更新する。
【００４２】
ストレージのセクタ境界を意識して、オフセットをセクタサイズの整数倍になるように調整する方法も可能である。例えば、512バイト未満の割り当てを行った後は、512バイトを加算することで、オフセットを更新する。また、512バイトを超える割り当て後は、512バイトの整数倍に切り上げて、切り上げた値でオフセットを更新する。
【００４３】
ストレージ管理部１７は、割り当てた記憶領域の情報を、応答メッセージ生成部１６に返す。応答メッセージ生成部１６に返す記憶領域の情報は、ファイルディスクリプタおよびオフセットを含む。必要に応じて、ストレージの識別子を含めてもよい。
【００４４】
応答メッセージ生成部１６は、生成した応答メッセージ、応答メッセージのメッセージ長、およびストレージ管理部１９から返されたファイルディスクリプタとオフセットを、データ書き込み部１８に渡す。なお、応答メッセージのメッセージ長は、応答メッセージ生成部１６で計算すればよい。
【００４５】
データ書き込み部１８は、応答メッセージ生成部１６から渡されたこれらの情報に基づき、ストレージ制御部１９へ、応答メッセージの書き込みを指示する情報を出力する。
【００４６】
ストレージ制御部１９は、データ書き込み部１８から指示された情報に従って、ストレージ上のファイルへ、応答メッセージの書き込みを行う。具体的に、ファイルディスクリプタで示されたストレージ上のファイルへ、オフセットで示された位置から、応答メッセージを書き込む。
【００４７】
ストレージ制御部１９は、使用するファイルシステムの規定に従って、ストレージ上のファイルへ、応答メッセージを書き込む。また、ストレージ制御部１９は、後述するデータ読み出し部２１からの読み出し要求に応じて、ストレージ上のファイルから応答メッセージの読み出しを行う。このように、ストレージ制御部１０は、ストレージへの読み書きを制御する
【００４８】
より詳細に、ストレージへの読み書きは、512バイト単位など、セクタと呼ばれるデータアクセス単位で行う。このため、ストレージ制御部１９は、データアクセス単位で、書き込みまたは読み出しのコマンドを発行して、ストレージに送る。ストレージの入出力の規定として、例えばSATA(https://www.sata-io.org/)などが知られている。本実施形態のストレージはSATAストレージを想定するが、これに限定されない。
【００４９】
ストレージは、ストレージ制御部１９から書き込みコマンドまたは読み出しコマンドを受け取ってコマンドを実行し、処理の正常完了（成功）、あるいは、異常終了（処理エラーすなわち失敗）を示す応答を、ストレージ制御部１９に返す。応答は、ストレージの入出力の規定に従って返す。
【００５０】
書き込みが正常に終了すると、データ書き込み部１８は、ストレージ制御部１９から正常書き込み完了の通知を受け、応答メッセージ生成部１６に、キー・データ位置対応表へのエントリ登録の指示を行う。応答メッセージ生成部１６は、キー・データ位置対応表に、新規エントリ（キーと、ファイルディスクリプタ、オフセット、メッセージ長）を追加する。同じキーの値のエントリが存在するときは、エントリを上書きすればよい。
【００５１】
ここでは、エントリ登録を応答メッセージ生成部１６が行ったが、データ確認処理部１３またはデータ書き込み部１８が行うように構成してもよい。あるいは、エントリ登録を行う登録処理部（図示せず）を別途設け、当該登録処理部が登録を行っても良い。この場合、当該登録処理部がストレージ制御部１９から正常書き込みの完了通知を受け、キー・データ位置対応表にエントリを登録する。
【００５２】
ストレージ制御部１９は、アクセスを行ったストレージが、書き込みまたは読み出しに失敗したこと（エラー）を検知した場合は、エラー処理部２０へエラー情報を通知する。エラー情報は、当該エラーを起こしたストレージ、あるいは、ファイル、あるいは、ディレクトリ（例えば図４のmnt1とファイル１の間に１つまたは複数のディレクトリが存在する場合など）の識別情報を含む。
【００５３】
ここで、エラーの検知は、例えばアクセス先のストレージからエラーイベントを受けた場合、あるいは、規定の時間(たとえばSATAの規定時間)以内に、ストレージから応答がない場合に行われる。ストレージが故障している場合など、このようなことが起こる。
【００５４】
また、管理者の設定によっては、ストレージのアクセス時間が一定以上遅延した場合に、所望の性能を満足しないとして、エラー（失敗）として扱うことも可能である。例えば、1ミリ秒未満で処理が完了することを希望する場合に、1ミリ秒を超える時間を要して処理が完了した場合は、エラーを検知する方法が可能である。この場合、管理者は事前に1ミリ秒の値を設定しておき、ストレージ制御部１９はこの設定された値に従って、一定以上の遅延が発生したかを判定する。
【００５５】
エラー処理部２０は、ストレージ制御部１９から、エラー情報を受け取ると、ストレージ管理部１７に、エラー情報に示される、ストレージ、あるいは、ファイル、ディレクトリに、新規に記憶領域を割り当てることを禁止することを定めた禁止情報を通知する。また、エラー処理部２０は、当該禁止情報を無効ファイル判定部２２にさらに通知してもよい。
【００５６】
ストレージ管理部１７は、エラー処理部２０からの禁止情報の通知に従い、以降、応答メッセージ生成部１６からストレージ上の記憶領域の割り当てを依頼された場合には、エラー情報に示されるストレージ、あるいは、ファイル、あるいはディレクトリを割り当てないように動作する。具体的に、ストレージ管理部１７は、当該禁止情報に従って、データ記憶場所テーブルから、当該ストレージ、ファイルディスクリプタ、あるいはディレクトリを含むエントリを無効化する。無効にされたストレージを、無効ストレージ、無効にされたファイルディスクリプタのファイルを無効ファイル、無効にされたディレクトリを無効ディレクトリと呼ぶ。ストレージ管理部１７は、これら無効ストレージ、あるいは無効ファイル、あるいは無効ディレクトリから、記憶領域を割り当てないようにする。
【００５７】
例えば、ストレージ３上のファイルディスクリプタ５のファイルへアクセスする際に、エラーが発生したとする。この場合、エラー処理部２０は、ストレージ３もしくはファイルディスクリプタ５の割り当て禁止情報を、ストレージ管理部１７に通知する。ストレージ管理部１７は、当該禁止情報に従って、データ記憶場所テーブルから、ファイルディスクリプタ５のエントリを無効化する。ファイルディスクリプタ５のエントリを無効化する動作を図５に示す。以後、ストレージ管理部１７は、ファイルディスクリプタ５の無効化されたファイル、もしくは無効化されたストレージ５等に、新たに記憶領域を割り当てない。つまり、無効ファイルもしくは無効ストレージ等に、新たに記憶領域を割り当てない。なお、エントリを無効化する方法として、エントリ自体をテーブルから削除してもよいし、無効を示す値をエントリに対して設定してもよい。
【００５８】
ここで、キー・データ位置対応表にも、割り当て禁止されたストレージ上のファイルのファイルディスクリプタ（本例では図４に示すようにファイルディスクリプタ５）が含まれる。しかしながら、キー・データ位置対応表からは、当該ファイルディスクリプタのエントリの削除は行わなくてもよい。この理由は以下の通りである。
【００５９】
キー・データ位置対応表には、膨大なエントリ（例えば数億のエントリ）を保持することも想定される。この場合、エラー発生時にエントリの削除を行うと、その間、処理が滞り、キャッシュサーバの応答性能が、劣化する恐れがある。また、対応表管理部１５が、ファイルディスクリプタを検索キーとして探索する機能を有する場合などは、検索機能の応答が著しく劣化する可能性もある。
【００６０】
なお、応答メッセージの書き込みに失敗した場合、応答メッセージ生成部１６は、ストレージ管理部１７から、書き込みに失敗したファイルまたはストレージと異なるファイルまたはストレージから、記憶領域の再割り当てを受け、再度、ストレージ制御部１９に書き込み要求を行ってもよい。または、書き込みに失敗したことを示す応答メッセージを、キャッシュプロトコル処理部１２等で生成して、ネットワーク１０３を介してクライアント１０２に送信してもよい。これらの場合、エラー処理部２０から、応答メッセージ生成部１６やキャッシュプロトコル処理部１２に、エラー情報を通知してもよい。
【００６１】
記憶領域特定部１４は、キャッシュプロトコル処理部１２からGET要求メッセージに含まれるキーを受け取る。記憶領域特定部１４は、キーが、キー・データ位置対応表に含まれるかどうかを検査する。キーが含まれない場合は、応答すべきデータは存在しないと判断する。この場合、キャッシュプロトコル処理部１２を介して、その旨の応答メッセージを返しても良い。一方、当該キー・データ位置対応表にキーが含まれる場合は、当該キーを含むエントリから、ファイルディスクリプタ、オフセット、メッセージ長（データ長）を取り出す。
【００６２】
記憶領域特定部１４は、取り出したファイルディスクリプタを、無効ファイル判定部２２に渡す。無効ファイル判定部２２は、当該ファイルディスクリプタが、無効なファイルディスクリプタか否かを判定する。記憶領域特定部１４は、当該ファイルディスクリプタが、エラーが発生したストレージ上のファイルを示す場合、無効と判定する。
【００６３】
無効の判定方法としては、ストレージ管理部１７に問い合わせて、当該ファイルディスクリプタ、または当該ファイルディスクリプタを含むストレージもしくはディレクトリが有効か否かを確認してもよい。あるいは、エラー処理部２０からストレージ管理部１７に禁止情報を通知する際に、無効ファイル判定部２２にも禁止情報を通知して、無効ファイル判定部２２の内部に記憶しておいてもよい。
【００６４】
無効なファイルディスクリプタの場合、無効ファイル判定部２２は、ストレージアクセスは行わないことを決定し、データ読み出し部２１へは、当該ファイルディスクリプタ、オフセット、メッセージ長を渡さない。これにより、仮にストレージアクセスを行った場合に発生するエラーを未然に阻止する。一方、無効ファイル判定部２２は、当該ファイルディスクリプタが無効でない（つまり、有効である）と判定した場合は、データ読み出し部２１に、当該ファイルディスクリプタ、オフセット、メッセージ長を渡す。必要に応じて、ストレージの識別子を渡しても良い。
【００６５】
データ読み出し部２１は、ファイルディスクリプタ、オフセット、メッセージ長に基づき、ストレージ制御部１９を介して、応答メッセージを読み出す。読み出した応答メッセージは、GET命令で指定されたキーに対応するデータを含んでいる。データ読み出し部２１は、読み出した応答メッセージをTCP/IP通信部１１に渡す。TCP/IP通信部１１は、キャッシュアクセスクライアントからのGET要求メッセージの応答として、受け取った応答メッセージを送出する。GET命令の応答メッセージを事前に生成してあるため、GET要求メッセージに対する高速な応答が可能である。
【００６６】
なお、データ読み出し部２１は、ストレージ制御部１９を介して読み出しを行う際に、アクセス先のストレージでエラーが発生する場合もあり得る。この場合には、上述の書き込み時のエラー発生の場合と同様に、エラー処理部２０を用いたアクセス禁止処理を行えばよい。すなわち、エラー処理部２０から、アクセスエラーが発生したストレージ、あるいは、ファイル、ディレクトリへの割り当てを禁止する禁止情報を、ストレージ管理部１７に通知する。当該禁止情報を、無効ファイル判定部２２にさらに通知してもよい。ストレージ管理部１７は、以降、当該禁止情報に示されるストレージ、ファイル、ディレクトリを割り当てないように動作する。
【００６７】
以上、本実施形態によれば、複数のストレージを併用して記憶容量とデータ応答性能を高めつつ、ストレージの性能低下を抑制、あるいは、故障に対応できる。
【００６８】
すなわち、本実施形態によれば、ストレージを複数利用することで記憶容量を確保できる。
【００６９】
また、本実施形態によれば、GET要求に対する応答の形式の応答メッセージを記憶しておき、GET要求を受けた場合には、当該応答メッセージを読み出して、送信することで高速な応答が可能となる。
【００７０】
また、本実施形態によれば、ストレージへの書き込みまたは読み出しが失敗した場合には、当該ストレージへの書き込みおよび読み出しを禁止する。GET要求されたデータの記憶された場所が、当該禁止されたストレージであった場合には、当該ストレージからの読み出しは行わない。これにより、読み出し時のエラーの発生を未然に防いで、応答性能低下を抑制できる。
【００７１】
また、本実施形態によれば、ストレージへの書き込みまたは読み出しが失敗した場合には、そのストレージを使用することを禁止し、残りのストレージを用いて同様の処理を継続できる。よって、クライアントへのサービス停止は阻止できる。
【００７２】
（第２の実施形態）
図６は、第２の実施形態に係るデータ転送装置を示す。図２に示した第１の実施形態に係るデータ転送装置に、新規登録ストレージ登録部３１が追加されている。
【００７３】
新規登録ストレージ登録部３１は、キャッシュサーバが動作中に、ストレージが増設（追加）された場合に処理を行う。新規登録ストレージ登録部３１は、ストレージが追加されると、ストレージ制御部１９から、増設されたストレージの情報を受ける。これにより、新規登録ストレージ登録部３１は、新規ストレージの追加を検知する。新規登録ストレージ登録部３１は、追加されたストレージに対しても、新規に記憶領域の割り当てが可能となるように、ストレージ管理部１７に、新規ストレージの情報を通知する。通知する新規ストレージの情報は、新規に追加されたストレージの識別情報や、当該ストレージへ割り当てられたファイルのファイルディスクリプタ、および当該ファイルへのパス中のディレクトリなどを含む。
【００７４】
ストレージ管理部１７は、新規ストレージ登録部３１から、新規ストレージの情報の通知を受け取ると、データ記憶領域保持テーブルに、当該ストレージに関連する新規エントリ（パス、ファイルディスクリプタ、オフセット）を追加する。オフセットの初期値は、例えば0とする。
【００７５】
以上、本実施形態によれば、ストレージが新規に追加された場合も有効に対応できる。
【００７６】
（第３の実施形態）
図７は、第３の実施形態に係るデータ転送装置を示す。図２に示した第１の実施形態に係るデータ転送装置に、統計情報管理部４１が追加されている。
【００７７】
統計情報管理部４１は、GET命令に起因するストレージアクセスの頻度に応じた統計情報を管理する。統計情報管理部４１は、データ読み出し部２１がストレージ制御部１９を介してストレージアクセスする際に、どのストレージにアクセスしているかの通知を受ける。これにより、統計情報管理部４１は、ストレージへのアクセスの頻度に応じた統計情報を計算および管理する。統計情報管理部４１は、ストレージ単位でのアクセスのみならず、ファイルディスクリプタ、ディレクトリなどの単位で、アクセスの頻度に応じた統計情報を管理してもよい。
【００７８】
図８に統計情報管理部４１で管理する統計情報の例を示す。各ストレージにはそれぞれ１つのファイルが存在する。データ読み出し部２１がストレージのファイルにアクセスするたびに、統計情報管理部４１へアクセスを通知する。統計情報管理部４１は、統計情報の一例として、通知された回数の合計を、応答回数（読み出し頻度）として算出する。この応答回数は、システム起動時からの累積値としてもよい。または、一定時間毎に累積値を所定値にリセットしてもよく、例えば10秒や1分毎に、累積値を0にリセットしてもよい。この場合、応答回数は、最近10秒、あるいは、1分のアクセス頻度を示す数値として解釈される。
【００７９】
ここで述べた統計情報の例は一例であり、別の統計情報を計算してもよい。例えば一定時間間隔で応答回数を計算し、これらの移動平均を計算してもよい。または、直前の過去X回の各時間間隔での応答回数のうちの最大値、最小値、中央値などの値を、統計情報としてもよい。
【００８０】
ストレージ管理部１７は、統計情報管理部４１で管理する統計情報に基づき、応答メッセージ生成部１６からの依頼に対し、記憶領域を割り当てる。高頻度に読み出しアクセスされるストレージは、処理負荷が高い状態にある。このため、ストレージ管理部１７は、一例として、応答回数の少ないストレージを、優先に割り当てる。
【００８１】
具体的に、応答回数が閾値以下のストレージの中から、ストレージを選択することがある。あるいは、応答回数が、相対的に低いストレージの中から、ストレージを選択することがある。例えば、応答回数が最も低いストレージを選択する。または、応答回数が小さい順に、ストレージを順位付けし、上位X個のストレージの中から、ストレージを選択することがある。これにより、各ストレージへの読み出し回数が、均等になることが期待される。ここでは、応答回数を用いた具体例を示したが、応答回数以外の統計情報を利用する場合も、同様の考え方に基づき選択を行うことで、各ストレージからの読み出し回数が均等になることが期待される。
【００８２】
（第４の実施形態）
図９は、第４の実施形態に係るデータ転送装置を示す。第２および第３の実施形態を組み合わせたものである。すなわち、図９のデータ転送装置は、統計情報管理部４１と、新規ストレージ登録部３１を備える。本実施形態の動作は、第２および第３の実施形態の説明から自明であるため、省略する。
【００８３】
（第５の実施形態）
図１０は、第５の実施形態に係るデータ転送装置を示す。図９に示した第４の実施形態に係るデータ転送装置の応答メッセージ生成部１６が、記憶領域取得部２６に置換されている。また、データ読み出し部２１とTCP/IP通信部１１の間に、応答メッセージ生成部２３が配置されている。同様の変形を、第１〜第４の実施形態に対して行うことも可能である。
【００８４】
第１〜第４の実施形態では、SET要求メッセージをクライアントから受けた場合に、SET命令で指定されたデータを含む、GET要求に対する応答メッセージを生成し、ストレージに格納した。本実施形態では、SET要求メッセージを受けた時点では応答メッセージは作成せず、ストレージには、SET命令で与えられたデータを格納する。一方、GET要求メッセージをクライアントから受けた場合に、GET命令されたデータをストレージから読み出し、当該データを含む応答メッセージを生成する。つまり、GET応答メッセージを、SET要求を受けた時点で生成するのではなく、GET要求を受けた時点で生成する。以下、これまで説明した実施形態との差分のみ説明する。
【００８５】
データ確認処理部１３は、キャッシュプロトコル処理部１２からSET要求メッセージに含まれるキーとデータを受け取り、当該キーと同じキーがキー・データ位置対応表に存在するか確認する。存在する場合は、必要に応じて当該キーを含むエントリを無効化する。これは第１の実施形態と同様である。なお、本実施形態では、図３に示したキー・データ位置対応表の「メッセージ長」は「データ長」になる。
【００８６】
データ確認処理部１３は、キーとデータを、データ記憶領域取得部２６に渡す。記憶領域取得部２６は、キーとデータに基づき、ストレージ管理部１７に、ストレージ上の記憶領域の割り当てを依頼し、割り当てられた記憶領域の情報（ファイルディスクリプタ、オフセット）を受け取る。必要に応じて、ストレージの識別子を受け取ってもよい。記憶領域取得部２６は、SET命令で指定されたデータと、当該データのデータ長と、ストレージ管理部１７から受け取ったファイルディスクリプタおよびオフセットとを、データ書き込み部１８に渡す。
【００８７】
データ書き込み部１８は、これらの受け取った情報に基づき、ストレージへのデータ書き込みを、ストレージ制御部１９に要求する。書き込みが正常に終了すると、データ書き込み部１８は、ストレージ制御部１９から正常書き込み完了の通知を受け、記憶領域取得部２６に、キー・データ位置対応表へのエントリ登録を指示する。記憶領域取得部２６は、キー・データ位置対応表に、新規エントリ（キーと、ファイルディスクリプタ、オフセット、データ長）を登録する。
【００８８】
ここでは、エントリ登録を記憶領域取得部２６が行ったが、データ確認処理部１３またはデータ書き込み部１８が行うように構成しても良い。あるいは、エントリ登録を行う登録処理部（図示せず）を別途設け、当該登録処理部が登録を行っても良い。この場合、当該登録処理部がストレージ制御部１９から正常書き込みの完了通知を受け、キー・データ位置対応表にエントリを登録する。
【００８９】
一方、GET要求メッセージを受けた場合、記憶領域特定部１４および無効ファイル判定部２２の処理を経た後、データ読み出し部２１は、ファイルディスクリプタ、オフセット、データ長に従って、ストレージ制御部１９にデータの読み出し要求を行う。データ読み出し部２１は、データ読み出しが成功した場合、読み出したデータを、応答メッセージ生成部２３に送る。
【００９０】
応答メッセージ生成部２３は、そのデータを含む応答メッセージを、GET命令に対する応答の形式で生成する。より詳細に、応答メッセージ生成部２３は、データ読み出し部２１からデータを受け取ると、記憶領域特定部１４から、GET命令に含まれていたキーを受け取り、メッセージヘッダを生成し、GET命令の応答形式のメッセージを生成する。その後、応答メッセージ生成部２３は、当該メッセージをTCP/IP通信部１１に渡す。TCP/IP通信部１１は、クライアントからのGET要求メッセージに対する応答として、当該メッセージを送信する。
【００９１】
以上、本実施形態によれば、ストレージへ記憶させる対象が応答メッセージではなく、データそのものである場合にも、第１〜第４の実施形態と同様の効果を得ることができる。
【００９２】
尚、各実施形態のデータ転送装置は、例えば、汎用のコンピュータ装置を基本ハードウェアとして用いることでも実現することが可能である。すなわち、上記のコンピュータ装置に搭載されたプロセッサにプログラムを実行させることにより、本データ転送装置を実現することができる。このとき、データ転送装置は、上記のプログラムをコンピュータ装置にあらかじめインストールすることで実現してもよいし、CD-ROMなどの記憶媒体に記憶して、あるいは通信網を介して上記のプログラムを配布して、このプログラムをコンピュータ装置に配置することで実現出来る。また、上記のコンピュータ装置に内蔵あるいは外付けされたメモリ、ハードディスク又はCD-R、CD-RW、DVD-RAM、DVD-R等の記憶媒体などを利用することが出来る。
【００９３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９４】
１０１：キャッシュサーバ
１０２：キャッシュクライアント
１〜ｎ：ストレージ
１１：TCP/IP通信部
１２：キャッシュプロトコル処理部
１３：データ確認処理部
１４：記憶領域特定部
１５：対応表管理部
１６：応答メッセージ生成部
１７：ストレージ管理部
１８：データ書き込み部
１９：ストレージ制御部
２０：エラー処理部
２１：データ読み出し部
２２：無効ファイル判定部
２３：応答メッセージ生成部
３１：新規ストレージ登録部
４１：統計情報管理部
【図１】
2015179326.tif 000003
【図２】
2015179326.tif 000004
【図３】
2015179326.tif 000005
【図４】
2015179326.tif 000006
【図５】
2015179326.tif 000007
【図６】
2015179326.tif 000008
【図７】
2015179326.tif 000009
【図８】
2015179326.tif 000010
【図９】
2015179326.tif 000011
【図１０】
2015179326.tif 000012