JP2014235531A - データ転送装置、データ転送システム、およびプログラム - Google Patents
データ転送装置、データ転送システム、およびプログラム Download PDFInfo
- Publication number
- JP2014235531A JP2014235531A JP2013116072A JP2013116072A JP2014235531A JP 2014235531 A JP2014235531 A JP 2014235531A JP 2013116072 A JP2013116072 A JP 2013116072A JP 2013116072 A JP2013116072 A JP 2013116072A JP 2014235531 A JP2014235531 A JP 2014235531A
- Authority
- JP
- Japan
- Prior art keywords
- data
- storage
- response message
- communication device
- response
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
【課題】メモリ使用量の増大を抑制しつつ、ストレージの大記憶容量と高速応答を実現する。【解決手段】本実施形態としてのデータ転送装置は、 ネットワークを介して通信装置と所定のプロトコルにしたがって通信するデータ転送装置であって、書き込み制御部と、送信制御部とを備える。書き込み制御部は、第1データを含む第1応答メッセージを、ストレージに書き込む制御を行う。前記送信制御部は、 前記通信装置と同じまたは異なる第1通信装置から、前記第1データのデータ取得要求メッセージが受信されたとき、前記ストレージから前記第1応答メッセージを読み出して、前記第1応答メッセージを前記第1通信装置へ送信する制御を行う。【選択図】図2
Description
本発明の実施形態は、データ転送装置、データ転送システム、およびプログラムに関する。
従来のサーバには、ストレージ上にファイルとしてデータを記憶し、クライアントからの要求に応じて、データをストレージから読み出して送信し、またデータをストレージに書き込むものがあった。この場合、頻繁にアクセスされるデータについては、DRAM(Dynamic Random Access Memory)に配置することで、高速応答を実現することができるが、大記憶容量で高速応答を実現するには、多量のDRAMを要するという問題があった。
本発明の実施形態は、メモリ使用量の増大を抑制しつつ、記憶容量の大容量化と、データの高速応答を実現することを目的とする。
本発明の実施形態としてのデータ転送装置は、ネットワークを介して通信装置と所定のプロトコルにしたがって通信するデータ転送装置であって、書き込み制御部と、送信制御部とを備える。書き込み制御部は、第1データを含むデータ保存要求メッセ―ジを元に生成された前記第1データを含む第1応答メッセージを、ストレージに書き込む制御を行う。前記送信制御部は、前記通信装置と同じまたは異なる第1通信装置から、前記第1データのデータ取得要求メッセージが受信されたとき、前記ストレージから前記第1応答メッセージを読み出して、前記第1応答メッセージを前記第1通信装置へ送信する制御を行う。
以下、図面を参照しながら、本発明の実施形態について説明する。
図1は、本実施形態に係るデータ転送装置を含むキャッシュサーバと、キャッシュアクセスクライアント(以下、クライアント)とを備えたデータ転送システムの全体構成を示す。
キャッシュサーバ101とクライアント201はネットワーク301により接続されている。クライアントは1台のみ示しているが、複数台のクライアントがネットワーク301に接続されていてもよい。
本実施形態ではネットワーク301は、例えばEthernet(登録商標)のようなLANを想定するが、方式はなんでも構わない。またネットワーク301は、LANに限定されず、ワイドエリアネットワークでも、インターネットでもよい。また、ネットワークは、有線でも無線でもよい。
クライアント201は、キャッシュサーバ101が定めた手順(キャッシュプロトコル)で、キャッシュサーバ101とメッセージを送受信する通信クライアント装置である。キャッシュサーバ101は、データを記憶するストレージを有する。本実施形態では、ストレージは、キャッシュプロトコルの応答メッセージの形式でデータを記憶することを特徴の1つとしている。
キャッシュサーバ101は、クライアント201から保存対象としてのデータを含むデータ保存要求メッセージを受けると、当該データを含む応答メッセージ(応答データ)を作成して、当該応答データをストレージに保存する。キャッシュサーバ101は、クライアント201からデータ取得要求メッセージを受けると、当該取得要求されたデータを含む応答データをストレージから読み出す。キャッシュサーバ101は、読み出した応答データにヘッダを付加してパケットを構成し、当該パケットをクライアント201に送信する。取得要求を受けた際に応答メッセージを作成する必要はなく、事前に作成した応答メッセージ(応答データ)をストレージから読み出してヘッダを付加して送信すればよいため、大容量化しても、高速な応答が可能となる。なお、データの保存要求を行ったクライアントと、当該データの取得要求を行うクライアントは同じである場合、異なる場合どちらもあり得る。
ここで、本実施形態では、キャッシュサーバ101は、キーと、バリューを対応させた記憶方法をとるものとする。このため、キャッシュサーバ101を、キーバリューストア(KVS)サーバと呼び、クライアント201は、KVSクライアントと呼ぶ場合もある。
図2の下に、キャッシュサーバ101におけるデータ転送装置のハードウェア構成図を示す。図2の上に、キャッシュサーバ101のCPUにより実行されるソフトウェアによる機能ブロック構成を示す。
図2の下に示すように、キャッシュサーバ101は、データ転送装置とSATA(Serial Advanced Technology Attachment)ストレージ12とを備える。データ転送装置は、直接送信HW(HardWare)部(送信装置)11、CPU31、メインメモリ32、バスブリッジ部33を備える。CPU31、メインメモリ32は一般的なものである。バスブリッジ部33は、例えばPCI Expressのような多種多様なデバイスを接続するバスであれば、方式はなんでも構わない。
図2の上の機能ブロック図は、CPU31によりOS(オペレーティングシステム)41と、OS41上で動作するアプリケーション51が実行されることにより実現される機能ブロック図である。ソフトウェアは、図示しない記憶装置に記憶されており、メインメモリ32に読み出して実行されることにより、図示の各ブロックの機能が実現される。メインメモリ32として不揮発性メモリを用いる場合は、ソフトウェアをメインメモリ32に記憶させる方式も可能である。
直接送信HW部11は、ネットワーク入出力部21、TCP処理オフローディング部22、ダイレクトストレージアクセス処理部23、SATA入出力部24、バス入出力部25を備える。
ネットワーク入出力部21は、ネットワーク301に接続する通信インタフェースであり、MAC層の処理を行う。
TCP処理オフローディング部22は、TCP/IP通信プロトコル処理の一部をハードウェア(HW)で実行する処理部である。データ送信時に、送信データに、TCPヘッダ、および、IPヘッダを付与する。また、データ受信時に、IPヘッダの宛先IPアドレス、TCPヘッダの宛先ポートに基づき、該当する接続を有しているかいないかを確認する。有している場合には、受信データを、OS41のTCP/IPプロトコルスタック部43に渡すことを行う。本実施形態では、TCP処理オフローディング部22はハードウェアにより構成されるが、ソフトウェア(たとえばOSに搭載される)をCPUに実行させることにより、TCP処理オフローディング部の機能を実現してもよい。SATA入出力部24は、SATAストレージ12に接続するためのインタフェース部である。ここではストレージ12は、データ転送装置と外部接続されているが、LAN等のネットワークを介して接続される構成も可能である。この場合のネットワークは、クライアント201と接続されているネットワーク301でもよいし、これとは別のネットワークでもよい。
ダイレクトストレージアクセス処理部23は、OS41のストレージドライバ部(書き込み制御部)44からの指示に従って、SATAストレージ12へのアクセスを実施する。あるいは、OS41の直接送信HWドライバ部(送信制御部)47からの指示に従い、SATAストレージ12からデータ(ここでは応答データ)を読み出し、そのデータをTCP処理オフローディング部22に渡す。データを受け取ったTCP処理オフローディング部22は、TCPヘッダおよびIPヘッダを付与し、これらのヘッダが付与されたデータを、ネットワーク入出力部21を通じて、ネットワーク301に送出する。
バス入出力部25は、例えばPCI Expressのようなバスを介して、CPU31、メインメモリ32と接続するための、デバイス側のインタフェース部である。バス入出力部25は、CPU31やメインメモリ32との間で、データの受け渡しを行う。CPUによる処理の指示も、CPU31やメインメモリ32との間で受け渡しされる。これにより、ソフトウェア(OS)からの指示や、データのやり取りが、直接送信HW部11に対して可能となる。
OS41は、ネットワークドライバ部42、TCP/IPプロトコルスタック部43、ストレージドライバ部44、バッファキャッシュ部45、ファイルシステム部46、直接送信HWドライバ部(送信ドライバ部)47、システムコール部48を有している。アプリケーションプログラム51は、OS41の上位で動作するプログラムであり、本実施形態では、キャッシュサーバプログラムである。
OS41のネットワークドライバ部42は、直接送信HW部11が有するネットワーク入出力部21を介して、ネットワーク301へデータを送受信するデバイスドライバである。
TCP/IPプロトコルスタック部43は、TCP/IPのプロトコルに従って、データの送受信を実現する処理部である。TCP処理オフローディング部22との処理分担の機能を有している。上述のように、ヘッダ処理はハードウェアであるTCP処理オフローディング部22で行い、それ以外のTCPのセッション制御に関する処理を、このソフトウェア部分であるTCP/IPプロトコルスタック部43で実施する。
ストレージドライバ部44は、直接送信HW部11が有するSATA入出力部24を介して、SATAで接続されているストレージ12へのアクセスを実現するデバイスドライバである。
バッファキャッシュ部45は、メインメモリ32上に、ストレージ12の一部のデータをキャッシュして、ストレージへの読み書きを、メインメモリ32へのキャッシュアクセスへ代替することで、ストレージ12へのアクセス回数を削減する。これにより、データアクセスの高速化を実現する。
ファイルシステム部46は、ストレージ12の記憶領域を論理的にフォーマットし、ファイルによるデータ管理を実現する処理部である。論理フォーマットの方式により、FATファイルシステム、exFATファイルシステム、UNIXファイルシステム、Berkley Fastファイルシステム、extファイルシステムなどがある。本実施形態では、特にどの方式でも構わない。
直接送信HWドライバ部47は、SATAストレージ12上のファイルを構成する一連のセクタから該当するデータ(ここでは応答データ)を取り出して、TCP/IPで直接(すなわちTCP/IPプロトコルスタック部43の処理を介さずに)送出する指示を行うデバイスドライバである。本願では、キャッシュサーバプログラム部51が、システムコール部48のsendfile()システムコールにより、データ送出指示を行うのを契機に、直接送信HWドライバ部47は、ダイレクトストレージアクセス処理部23とTCP処理オフローディング部22の処理開始を指示する。ダイレクトストレージアクセス処理部23は、直接送信HWドライバ部47から指定されたファイルのセクタ列の抽出し、抽出したセクタ列の中から該当するデータ(応答データ)を取り出して、TCP処理部オフローディング部22に渡す。TCP処理部オフローディング部22は、当該応答データに、IPヘッダおよびTCPヘッダを付与してパケットとし、当該パケットをネットワーク301に送出する。
システムコール部48は、キャッシュサーバプログラム部(アプリケーションプログラム)51とのプログラムインタフェースを提供する処理部である。実現方法はOSにより様々であるが、CPU31が提供するソフトウェア例外を使用する場合が多い。提供される機能もOSにより様々であるが、本実施形態では、ネットワークからのデータ受信のrecv()システムコール、ファイル(ストレージ)へのデータ書き込みのwrite()システムコール、ファイルデータをネットワークへ送出するsendfile()システムコールを図示している。
キャッシュサーバプログラム部51は、キャッシュプロトコル処理部52、データ記憶指示部53、直接送出指示部54、データ配置管理部55を有している。
キャッシュプロトコル処理部52は、ネットワーク301を介してクライアント201が送信してきたキャッシュプロトコルメッセージを受信し、当該キャッシュプロトコルメッセージの内容を解釈する処理部である。本実施形態ではキャッシュプロトコルとしてmemcachedを想定するが、これに限定されるものでない。基本的な要求メッセージの種類として、データの送信(取得)を要求するGET要求メッセージ、データの記憶(保存)を要求するSET要求メッセージがある。その他の種類の要求メッセージも、実装して構わない。システムコール部48からのrecv()システムコールを受けることで、キャッシュプロトコル処理部52は、OS41から要求メッセージを受信する。
データ記憶指示部53は、キャッシュプロトコル処理部52でSET要求メッセージが受信された場合に、データ配置管理部55の指示により、SET要求メッセージに含まれるデータを含む応答メッセージ(応答データ)をファイルに書き出す処理を行うwrite()システムコールを呼ぶ。
直接送出指示部54は、キャッシュプロトコル処理部52でGET要求メッセージが受信された場合に、データ配置管理部55の指示により、ファイル中のデータ(応答データ)を読み出してネットワーク301に送出する処理を行うsendfile()システムコールを呼ぶ。
データ配置管理部55は、ストレージ12上の使用領域および未使用領域を管理するとともに、どのファイルのどこの位置に、何のデータがあるかを管理する処理部である。データ配置管理部55は、キー(key)と、キーに対応するデータがどのファイルのどこに保持されているかを記述したデータ保持構造体を用いてデータをキーごとに管理する。キーはより一般的に識別子を呼ぶ。なお、SET要求およびGET要求には、キーの指定が含まれており、SET要求には保存対象となるデータも含まれる。また、データ配置管理部55は、キーのハッシュ表(データ保持管理表)を持ち、キーから目的のデータ保持構造体を速やかに検索できる仕組みを提供する。
図3に、データ保持構造体の例を示している。データ保持構造体は、key、value length、file descriptor、file offsetを有している。その他の項目、たとえば有効期限などを有しても良い。
keyは、データの検索キーとなる文字列、あるいは、バイト列である。
value lengthは、keyに対応してクライアントから保存要求されたデータのバイト長である。
file descriptorは、記憶しているデータが書き込まれているファイルを識別する記述子である。file descriptorは、一般的なOSにおいて、ファイルアクセスする際に使用する識別子である。例えばファイル名を記述子に変換するopen()システムコールが有名である。記憶しているデータが書き込まれているファイルを識別する情報である限り、他の形式でも構わない。
file offsetは、keyに対応して記憶しているデータ(クライアントから保存要求されたデータを含む応答データ)のファイル上の記憶場所である。file offsetは、当該ファイルの先頭からのバイト位置を示す。図では、ファイルAの斜線の場所に、該当する応答データが記憶されていることを示している。1つのファイルには、多数のデータが保持されており、各データが、縦線で区切られている。本実施形態では、これらの各データは、それぞれキャッシュプロトコルの応答メッセージの形式を有する応答データであると想定する。
図4には、キーから目的のデータ保持構造体を速やかに検索するためのデータ保持管理表(ハッシュ表)を示す。
データ保持管理表は、key(文字列あるいはバイト列)のハッシュ値を計算し、計算した結果をインデックスとしてもつ表である。なお、同一のハッシュ値を得られるkeyは複数存在し得る。この表は複数のエントリを有し、各エントリは、ハッシュ値(インデックス)と、当該ハッシュ値を持つkeyのデータ保持構造体のリストとを含む。これにより、目的のkeyを持つデータ保持構造体の検索は、keyのハッシュ値を計算し、その結果をインデックスとするエントリにおけるデータ保持構造体のリストから、key(文字列あるいはバイト列)の値が一致するデータ保持構造体を検索することで実現できる。具体的には、図の例において、リストの一番左のデータ保持構造体から順番に、keyの値が一致するデータ保持構造体が見つかるまで、右側へデータ保持構造体を移動しながら確認を行う。NULLは、リストの終端を示しており、データ保持構造体が特定されずにNULLに達したら、目的のkeyをもつデータは存在しないと判断する。
図5は、データ保持構造体の未使用管理表を示している。未使用管理表は、データ配置管理部55が管理している。
未使用管理表は、未使用のデータ保持構造体をリストで管理している。「クラス」は、データ保持構造体が割り当てられる記憶領域のサイズの分類である。例えば、128バイト以下をクラス1、128バイトより大きく256バイト以下をクラス2、256バイトより大きく1024バイト以下をクラス3、のように設計で決めることができる。SET要求メッセージで保存要求されたデータから生成される応答メッセージ(応答データ)のサイズが128バイト以下の場合は、クラス1に分類されているデータ保持構造体のリストの中から使用するデータ保持構造体を特定して、特定したデータ保持構造体に示される場所に先頭からデータを格納する。使用したデータ保持構造体は、未使用管理表から削除して、図4に示したデータ保持管理表に移動させる。すなわち、keyのハッシュ値を求めて、求めたハッシュ値に対応するリストの末尾(あるいは任意の位置)に追加する。
図6に、クライアント201からGET要求メッセージを受信した場合の処理シーケンスを示している。処理の流れを矢印付きの太い線で示している。太い線が通過しているブロックの処理部が、処理を行う。
まず、GET要求メッセージを受信する((1))。ネットワーク入出力部21、TCP処理オフローディング部22、ネットワークドライバ部42、TCP/IPプロトコルスタック部43、システムコール部48(recv()システムコール)を介して、キャッシュプロトコル処理部52が、GET要求メッセージを受信する。
図7に、GET要求メッセージの構成を示している。MACヘッダ/MACトレーラは、ネットワーク入出力部21が処理し、IPヘッダおよびTCPヘッダは、TCP処理オフローディング部22、TCP/IPプロトコルスタック部43が処理する。これらの処理は、一般的な通信処理と同様に行えばよい。キャッシュプロトコル処理部52は、キャッシュプロトコルメッセージの処理を行う。ここではキャッシュプロトコル処理部52は、キャッシュプロトコルメッセージがGET要求メッセージであることを解釈し、“xxxx”をキーとするバリューデータの取得を要求していることを理解する。
次に、データ検索処理((2))、データ送出指示処理((3))、データ取得処理((4))、応答データ送信((5))と続く。
図8および図9を用いて、この一連の流れを具体的に説明する。
図8に示すように、まず、GET要求に含まれているキーであるxxxxのハッシュ値を、データ配置管理部55が計算する。ハッシュ値として、0x05を得たとする。
0x05のエントリにおいて、先頭に位置するデータ保持構造体のkeyの値をチェックし、当該keyの値がxxxxであることを確認できたため、検索を完了する((2))。
当該データ保持構造体に含まれている、file descriptorとfile offsetが、目的のデータの場所を示している。これらfile descriptorとfile offsetを引数に、直接送信指示部54がsendfile()システムコールを呼ぶことで、データ送出を直接送信HWドライバ部47に指示する((3))。
直接送信HWドライバ部47は、ダイレクトストレージアクセス処理部23を制御することで、sendfile()で指定されたファイル(ここではz(=file descriptor)がファイルAを指している)のオフセット位置(0xabcd00)のデータ(応答データ)を、SATAストレージ12から読み出しながら、TCP処理オフローディング部22にデータを渡す((4))。TCP処理オフローディング部22は、渡されたデータにヘッダを付加してパケットを構築し、パケットをネットワークから送出する((5))。これにより、応答データ送信を完了する。
図8に示すように、ファイル上に保持しているデータ(応答データ)は、応答メッセージの形式を有する。したがって、TCPヘッダ、IPヘッダ、MACヘッダ/MACトレーラを付与するだけで、応答メッセージの送出を行うことができる。つまり、GET要求メッセージを受けた後、キャッシュプロトコルのソフトウェア処理により、応答メッセージを組み立てる必要はない。したがって、高速な応答が可能となる。また、応答メッセージはSATAストレージ12に記憶しておき、SATAストレージ12から直接読み出して送信するため、メインメモリ32のサイズを抑制できる。
図9に、応答メッセージの形式の例を示す(ここでは図8の下に示したものと同じである)。例えば、キャッシュプロトコルメッセージは、応答データであることを示す「VALUE」、キーのxxxx、値の長さのyyyy、バリュー(データ本体)の「……」、メッセージの終端の「END」で構成される。xxxx,yyyyの各x,yには数値が入る。応答データには、データの有効期限情報や、チェックコード、圧縮データかどうかなどを示すフラグなどが付与される場合もある。チェックコード付きの応答データの例は後述する。
図10は、SET要求メッセージを受信したときの処理のシーケンス(書き込みシーケンス)を示している。
ネットワーク入出力部21、TCP処理オフローディング部22、ネットワークドライバ部42、TCP/IPプロトコルスタック部43、システムコール部48(recv()システムコール)を介して、キャッシュプロトコル処理部52が、SET要求メッセージを受信する((1))。
図11に示すように、SET要求メッセージは、mmmm(各mには数値が入る)をキーに、nnnn(各nには数字が入る)の長さのデータの保持を指示するメッセージであるとする。 まず、データ配置管理部55は、nnnnの値をチェックし、当該nnnnの長さのデータから生成される応答データ(応答メッセージ)のヘッダ長を特定し、nnnnの長さとヘッダ長を合計した値が、クラス3の長さだったとする。
なお、応答データのヘッダ長は、規定の最長フォーマット(keyは250バイト、その他の数値は16バイト等)の長さを用いても良い。または、クラスを決める際に、一時的に応答データのヘッダを作成し、そのヘッダの長さを用いてもよい。
未使用管理表におけるクラス3のエントリのリストから、未使用のデータ保持構造体を1つ取り出す。このデータ保持構造体は、ファイルA(file descriptorはz)のオフセット0xdcba00に、クラス3のサイズの記憶領域を割り当てられている。
図12に示すように、データ配置管理部55は、受信したSET要求メッセージに含まれるデータ部分“…”を含む応答メッセージ(図中の右側の斜線部分)を作成し、データ記憶指示部53を介して、ファイルAのオフセット0xdcba00の記憶領域へ、応答データの書込指示を行う。また、キーmmmmのハッシュ値を計算し、ハッシュ表において当該ハッシュ値をインデックスとして有するエントリのリストに、上記未使用管理表から取り出したデータ保持構造体を追加する。図示の例では、ハッシュ値として0x02を得た場合の例が示される。
ここでは、ファイルへの書き込みは、バッファキャッシュ部45により、まずメインメモリ32上にキャッシュされる(図10の(3))。この場合、キャッシュとして、バッファキャッシュ部45が、メインメモリ32上に、書き込みデータ(応答データ)を保持する。メインメモリ32に書き込まれたデータは、OS41の処理に従い、遅延して、ストレージ12上に、フラッシュされる(書き戻される)。なお、応答データをメインメモリ32にキャッシュすることなく、ストレージ12に直接、書き込んでも良い。
図13には、メインメモリ32上の応答データのフラッシュ前に、次のGET要求メッセージが到着した場合のシーケンスを示している。
バッファキャッシュ部45が保持している応答データが、次のGET要求メッセージで取得要求されているデータを含む場合のシーケンスを示す。データ送出指示処理までは、図6を用いて前述した通りの処理が行われる((1)、(2)、(3))。データ送出指示処理の途中で、直接送信HWドライバ部47は、バッファキャッシュ部45で保持している応答データに対してフラッシュ指示を行う((3−1))。不要なフラッシュを避けられる意味で、送出対象である、当該ファイルの当該オフセット箇所のデータのみのフラッシュ指示が好ましいが、バッファキャッシュ部45が保持しているすべてのデータに対してフラッシュを指示しても構わない。ここでは、GET要求されたデータを含む応答データのみがバッファキャッシュされており、この応答データがストレージ12上にフラッシュバックされる((3−2))。直接送信HWドライバ部47がバッファキャッシュ部45にフラッシュを指示し、バッファキャッシュ部45がストレージドライバ部44を介して、ダイレクトストレージアクセス処理部23を操作して、SATAストレージ12へのデータ書き込み(フラッシュバック)を実施する。そのあと、直接送信HWドライバ部47は、データ送出指示処理の続きを実施する((3−3))。続いて、データ取得処理((4))、応答データ送信処理((5))が実施される。
図14に、キャッシュプロトコルメッセージの他の例として、上述したチェックコード付きの応答データの例を示す。図中のcccがチェックコードであり、例えば単調増加のシーケンス番号である。図9のメッセージにおける「……」のバリューに加え、チェークコードが含まれる。チェックコードの付与は、バリューの登録時(更新時)に、データ配置管理部55で行われる。チェックコードは、GETS要求メッセージを受けた場合に、GETS要求メッセージの応答データに含まれて、クライアントへ送られる。GETS要求メッセージの「GETS」は、単に、GET要求メッセージの「GET」の字面を「GETS」に変えたものである。ここで、チェックコードは、以下の目的で利用される。
あるクライアントAが、GETS 要求を行なって、チェックコード付きの応答データを受信したとする。次に、そのクライアントAが、そのチェックコードを指定したバリューの更新を行おうとした際、クライアントが指定したチェックコードと、サーバにおいて当該キーに付与されているチェックコードが管理しているものと一致しない状態、すなわち、クライアントAが GETS 応答を受け取ってから、チェックコードを指定したバリューの更新を行う間に、 他のクライアントBによって、当該キーのバリューが既に更新されている状態である場合がある。このような場合に、クライアントAのチェックコードを指定したバリューの更新は排除される。チェックコードは、casID(Check And Set ID)と呼ぶ場合もある。
キャッシュサーバ101は、図9と図14で示した2種類の応答データの両方を扱えることが必要な場合がある。その場合、図9で示した応答データを要求するGET要求に加え、図14に示したチェックコード付き応答データを要求するGETS要求を用いるなど、複数の要求に応じた応答データをそれぞれ作成しておく。つまり、SET要求に含まれていたデータから、cccを付加したデータを生成し、同一のキーと、それぞれのデータ(SET要求に含まれていたデータと、cccを付加したデータ)を含むように複数の応答データを作成しておく。キャッシュサーバ101では、GET要求で答えるべき応答データと、GETS 要求で答えるべき応答データのように、クライアントからの要求に応じて、返すべき応答データを区別する。
チェックコードの有無による応答データの種類の区別は単なる一例であり、応答データの種類はこれに限定されない。たとえば、プロトコルがテキストメッセージ(GET等が人間で可読なもの)とバイナリメッセージ(数値の字面にエンコードされているもの)の両方に対応している場合や、データの圧縮有無など、同一のキーとバリューに対して、応答データの内容が異なる場合でもよい。
たとえば、 ASCII 文字列の要求メッセージにはテキスト応答で、バイナリデータの要求メッセージにはバイナリで応答する。このように、通常のキーバリュー型のデータベースのように、キーに対応してバリューを記憶するだけでなく、応答するデータ(字面)が要求毎に異なるならば、要求とキーの対応毎に、異なるバリュー(データ)を含む応答データを記憶する。
図15は、このように、複数の応答データの形式に対応するためのデータ保持構造体の拡張構造を示す。この例のデータ保持構造体は、2種類の応答データに対応した場合のものである。各々の種類に対応した応答データそのものをファイル(本例ではファイルA)上に記憶しておき、それぞれの記憶場所(2か所)をデータ保持構造体に格納する。これらの記憶場所を、表や、配列、リスト構造にして管理して、応答データ数の増加に対応しても構わない。「descriptor1」がcccなしの応答データ、「descriptor2」がccc有りの応答データに対応すると解釈してもよいし、最初(上側)に記載された方がcccなしの応答データ、2番目に記載された方がccc有りの応答データに対応すると解釈してもよい。あるいは、応答データの種別を識別する情報をデータ保持構造体に追加してもよい。いずれにせよ、データ保持構造体は、キーと、当該2つの応答データと、2箇所の記憶場所の対応を管理する。
なお、図15の例では、各応答データが同じファイル上に存在するが、各応答データが異なるファイル上に存在してもかまわない。つまりfile descriptorの値が、応答データに応じて異なってもかまわない。
尚、本実施形態では、図2の上のブロック構成は、キャッシュサーバ101のCPUにより実行されるソフトウェアによる機能ブロック構成であると説明したが、必ずしもCPUにより実行されるソフトウェアにより実現されなくてもよく、一部もしくは全ての構成をハードウェアにより実現しても良い。また、本実施形態では、キャッシュサーバ101が、応答メッセージを、データ保存要求メッセージを受けたことをきっかけに生成しストレージに保存する例を説明したが、キャッシュサーバ101若しくは別の装置によりあらかじめストレージに、応答メッセージを保存しておいても良い。この場合、キャッシュサーバ101は、データ保存要求メッセージを受けて応答メッセージの生成する処理は行わず、データ取得要求メッセージを受けた場合に、あらかじめストレージに記憶された応答メッセージを送信する処理を行うものであっても良い。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
Claims (12)
- ネットワークを介して通信装置と所定のプロトコルにしたがって通信するデータ転送装置であって、
第1データを含む第1応答メッセージを、ストレージに書き込む制御を行う書き込み制御部と、
前記通信装置と同じまたは異なる第1通信装置から、前記第1データのデータ取得要求メッセージが受信されたとき、前記ストレージから前記第1応答メッセージを読み出して、前記第1応答メッセージを前記第1通信装置へ送信する制御を行う送信制御部と、
を備えたデータ転送装置。 - 更に、前記通信装置から前記第1データを含むデータ保存要求メッセージが受信されたとき、前記第1データを含む前記第1保存メッセージを生成するデータ管理部を備える
請求項1記載のデータ転送装置。 - 前記第1応答メッセージは、前記所定のプロトコルの形式の応答メッセージである
請求項1又は2記載のデータ転送装置。 - 前記データ保存要求メッセージは前記第1データの識別子である第1識別子を含み、
前記データ管理部は、前記第1データと前記第1識別子を含む前記第1応答メッセージを生成し、
前記データ管理部は、前記第1識別子と前記ストレージにおける前記第1応答メッセージの記憶場所である第1記憶場所との対応を管理し、
前記書き込み制御部は、前記第1応答メッセージを、前記第1記憶場所に書き込む制御を行い、
前記データ管理部は、前記第1識別子を指定したデータ取得要求メッセージが前記第1通信装置から受信されたとき、前記第1識別子に基づき前記第1応答メッセージが記憶された第1記憶場所を特定し、
前記送信制御部は、前記ストレージにおいて特定した第1記憶場所から前記第1応答メッセージを読み出し、前記第1応答メッセージを前記第1通信装置に送信する制御を行う
請求項2又は3に記載のデータ転送装置。 - 前記データ管理部は、前記ストレージの使用領域および未使用領域を管理し、前記第1応答メッセージのサイズに基づき前記第1記憶場所を確保する
請求項4記載のデータ転送装置。 - 前記データ管理部は、前記第1データに基づき第2〜第N(Nは2以上の整数)のデータを生成し、前記第1識別子と前記第1〜第Nのデータのそれぞれとを含む第1〜第Nの応答メッセージを作成し、前記第1〜第Nの応答メッセージのそれぞれの記憶場所である第1〜第Nの記憶場所を前記第1〜第Nの応答メッセージのそれぞれのサイズに基づき決定し、前記第1識別子と第1〜第Nの応答メッセージと前記第1〜第Nの記憶場所との対応を管理し、
前記書き込み制御部は、前記第1〜第Nの応答メッセージをそれぞれ前記第1〜第Nの記憶場所に書き込み、
前記データ管理部は、前記第1識別子を指定した第X(Xは1以上N以下の整数)のデータ取得要求メッセージが受信されたとき、前記第Xの応答メッセージが格納されている記憶場所を特定し、
前記送信制御部は、前記データ管理部により特定された記憶場所から前記第Xの応答メッセージを読み出し、前記第Xの応答メッセージを前記第1通信装置に送信する
請求項5に記載のデータ転送装置。 - 前記第1応答メッセージを前記ストレージに書き込む前に一時的にメインメモリにバッファリングするバッファキャッシュ部を備え、
前記書き込み制御部は、前記第1応答メッセージが前記メインメモリにバッファリングされている間に、前記データ取得要求メッセージが受信されたとき、前記バッファリング中の第1応答メッセージを前記メインメモリから読み出してストレージに書き込む制御を行い、前記ストレージへの書き込みが完了するまで前記送信制御部の動作を待機させる
請求項1、又は6に記載のデータ転送装置。 - 前記データ管理部は、前記第1応答メッセージの記憶場所を、ファイル名と、ファイルの先頭位置からのオフセットにより決定する
請求項4ないし7のいずれか一項に記載のデータ転送装置。 - 前記ストレージにアクセスするアクセス処理部と、前記第1通信装置と通信する通信処理部と、を含むハードウェアの送信装置を備え、
前記送信制御部は、前記アクセス処理部を制御することにより、前記ストレージからの前記第1応答メッセージの読み出しを行い、
前記通信処理部は、前記ストレージから読み出された第1応答メッセージを前記第1通信装置に送信する
請求項1ないし8のいずれか一項に記載のデータ転送装置。 - 前記通信処理部は、前記通信装置と通信し、
前記データ管理部は、前記通信処理部を介して前記通信装置から前記データ保存要求メッセージを受信し、
前記書き込み制御部は、前記アクセス処理部を制御することにより前記ストレージへ前記第1応答メッセージの書き込みを行う
請求項8に記載のデータ転送装置。 - ネットワークを介して通信装置と所定のプロトコルにしたがって通信するデータ転送システムであって、
第1データを含む第1応答メッセージを保持するストレージと、
前記通信装置と同じまたは異なる第1通信装置から、前記第1データのデータ取得要求メッセージが受信されたとき、前記ストレージから前記第1応答メッセージを読み出して、前記第1応答メッセージを前記第1通信装置へ送信する制御を行う送信制御部と、
を備えたデータ転送システム。 - ネットワークを介して通信装置と所定のプロトコルにしたがってメッセージを通信する装置に搭載されたコンピュータに実行させるためのプログラムであって、
第1データを含む第1応答メッセージをストレージへ書き込むことを書き込み制御部に指示するステップと、
前記通信装置と同じまたは異なる第1通信装置から、前記第1データのデータ取得要求メッセージを受信すると、送信制御部に前記ストレージから前記第1応答メッセージの読み出しと前記第1応答メッセージの前記第1通信装置への送信を指示するステップと
を備えたプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013116072A JP2014235531A (ja) | 2013-05-31 | 2013-05-31 | データ転送装置、データ転送システム、およびプログラム |
US14/195,961 US20140359062A1 (en) | 2013-05-31 | 2014-03-04 | Data transferring apparatus, data transferring system and non-transitory computer readable medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013116072A JP2014235531A (ja) | 2013-05-31 | 2013-05-31 | データ転送装置、データ転送システム、およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014235531A true JP2014235531A (ja) | 2014-12-15 |
Family
ID=51986420
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013116072A Pending JP2014235531A (ja) | 2013-05-31 | 2013-05-31 | データ転送装置、データ転送システム、およびプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20140359062A1 (ja) |
JP (1) | JP2014235531A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9811410B2 (en) | 2014-03-18 | 2017-11-07 | Toshiba Memory Corporation | Data transfer device, data transfer method, and non-transitory computer readable medium |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140325160A1 (en) * | 2013-04-30 | 2014-10-30 | Hewlett-Packard Development Company, L.P. | Caching circuit with predetermined hash table arrangement |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1996016497A1 (en) * | 1994-11-21 | 1996-05-30 | Oracle Corporation | Transferring binary large objects (blobs) in a network environment |
EP0716370A3 (en) * | 1994-12-06 | 2005-02-16 | International Business Machines Corporation | A disk access method for delivering multimedia and video information on demand over wide area networks |
US20020169926A1 (en) * | 2001-04-19 | 2002-11-14 | Thomas Pinckney | Systems and methods for efficient cache management in streaming applications |
US6742082B1 (en) * | 2001-06-12 | 2004-05-25 | Network Appliance | Pre-computing streaming media payload method and apparatus |
US6789082B2 (en) * | 2001-07-13 | 2004-09-07 | Networks Associates Technology, Inc. | Method and apparatus to facilitate fast network management protocol replies in large tables |
US7711799B2 (en) * | 2004-11-22 | 2010-05-04 | Alcatel-Lucent Usa Inc. | Method and apparatus for pre-packetized caching for network servers |
KR101490327B1 (ko) * | 2006-12-06 | 2015-02-05 | 퓨전-아이오, 인크. | 뱅크 인터리브를 이용한 솔리드-스테이트 스토리지의 명령 관리 장치, 시스템 및 방법 |
US20090043776A1 (en) * | 2006-12-23 | 2009-02-12 | Simpletech, Inc. | System and method for direct file transfer in a computer network |
TWI451279B (zh) * | 2010-04-07 | 2014-09-01 | Apple Inc | 即時或接近即時串流傳輸之內容存取控制 |
-
2013
- 2013-05-31 JP JP2013116072A patent/JP2014235531A/ja active Pending
-
2014
- 2014-03-04 US US14/195,961 patent/US20140359062A1/en not_active Abandoned
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9811410B2 (en) | 2014-03-18 | 2017-11-07 | Toshiba Memory Corporation | Data transfer device, data transfer method, and non-transitory computer readable medium |
US10698758B2 (en) | 2014-03-18 | 2020-06-30 | Toshiba Memory Corporation | Data transfer device, data transfer method, and non-transitory computer readable medium |
Also Published As
Publication number | Publication date |
---|---|
US20140359062A1 (en) | 2014-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9678918B2 (en) | Data processing system and data processing method | |
WO2018184491A1 (zh) | 资源获取方法、装置及系统 | |
WO2015078219A1 (zh) | 一种信息缓存方法、装置和通信设备 | |
WO2017114091A1 (zh) | 一种nas数据访问的方法、系统及相关设备 | |
EP1528478A1 (en) | Generalized addressing scheme for remote direct memory access enabled devices | |
EP3441884B1 (en) | Method for managing translation lookaside buffer and multi-core processor | |
JPWO2004104838A1 (ja) | データアクセス応答システム、ストレージシステム、クライアント装置、キャッシュ装置、およびデータアクセス応答システムへのアクセス方法 | |
US10979503B2 (en) | System and method for improved storage access in multi core system | |
WO2016093895A1 (en) | Generating and/or employing a descriptor associated with a memory translation table | |
WO2022007470A1 (zh) | 一种数据传输的方法、芯片和设备 | |
WO2021063160A1 (zh) | 访问固态硬盘的方法及存储设备 | |
CN105635196A (zh) | 一种获取文件数据的方法、系统和应用服务器 | |
CN109564502A (zh) | 应用于存储设备中的访问请求的处理方法和装置 | |
JP4175379B2 (ja) | ファイル共有方法およびファイル共有システム | |
WO2015006970A1 (zh) | 交换设备、控制器、交换设备配置、报文处理方法及系统 | |
JP2013218505A (ja) | クライアントとサーバ間の通信を中継する通信装置及び通信システム | |
JP2014235531A (ja) | データ転送装置、データ転送システム、およびプログラム | |
JP5729659B2 (ja) | メディアストリーミング方法およびメディアコントローラ | |
CN116866429A (zh) | 一种数据访问方法及相关装置 | |
WO2017177400A1 (zh) | 一种数据处理方法及系统 | |
JP2017184195A (ja) | 通信管理装置、通信管理方法及びプログラム | |
WO2019149031A1 (zh) | 应用于节点系统的数据处理方法及装置 | |
WO2023238326A1 (ja) | スイッチ | |
JP2015179444A (ja) | データ受信装置、データ受信方法、およびコンピュータプログラム | |
JP6287427B2 (ja) | ストレージシステム |