JP2010211607A - 中継装置及び同装置にキャッシュデータを登録するための方法 - Google Patents

中継装置及び同装置にキャッシュデータを登録するための方法 Download PDF

Info

Publication number
JP2010211607A
JP2010211607A JP2009058051A JP2009058051A JP2010211607A JP 2010211607 A JP2010211607 A JP 2010211607A JP 2009058051 A JP2009058051 A JP 2009058051A JP 2009058051 A JP2009058051 A JP 2009058051A JP 2010211607 A JP2010211607 A JP 2010211607A
Authority
JP
Japan
Prior art keywords
cache
data
identifier
relay
index
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.)
Granted
Application number
JP2009058051A
Other languages
English (en)
Other versions
JP4818383B2 (ja
Inventor
Makoto Obara
誠 小原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Toshiba Digital Solutions Corp
Original Assignee
Toshiba Corp
Toshiba Solutions Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Toshiba Corp, Toshiba Solutions Corp filed Critical Toshiba Corp
Priority to JP2009058051A priority Critical patent/JP4818383B2/ja
Publication of JP2010211607A publication Critical patent/JP2010211607A/ja
Application granted granted Critical
Publication of JP4818383B2 publication Critical patent/JP4818383B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】キャッシュ可能なデータを効率的に登録できるようにする。
【解決手段】中継部310は、キャッシュ登録要求処理部370が受信したキャッシュ登録要求に含まれているインデックスの指定するデータをストレージ装置10から読み込む。識別子生成部360は、このデータの内容に対応する識別子を生成する。キャッシュ登録部320aは、このデータを、生成された識別子に対応付けてキャッシュ格納部380に格納し、且つ当該識別子を当該データを指定するインデックスに対応付けてテーブル330に登録する。インデックス登録部320dは、キャッシュミスヒット時、読み書き要求に含まれているインデックスの指定するデータの内容に対応する識別子に対応付けて、同一のデータがキャッシュ格納部380に格納されている場合、当該識別子を、このインデックスに対応付けてテーブル330に登録する。
【選択図】 図3

Description

本発明は、データを格納する第1の装置と当該第1の装置に対して読み書きアクセスを行う第2の装置との間のデータ転送のための通信を中継する中継装置に係り、特にキャッシュ可能なデータをキャッシュデータとして登録するのに好適な中継装置及び同装置にキャッシュデータを登録するための方法に関する。
昨今、例えば、企業や官公庁においてクライアント装置として用いられるクライアントパーソナルコンピュータ(以下、クライアントPCと称する)からの情報漏洩が問題となっている。そこで、クライアントPCに情報の持ち出しをさせないようにするためのコンピュータシステムとして、シンクライアントシステムが注目されいてる。
シンクライアントシステムは、その実現方法から幾つかの種類に分類される。シンクライアントシステムの1つとして、ネットワークブート型シンクライアントシステムが知られている。ネットワークブート型シンクライアントシステムでは、物理的に情報漏洩の心配の少ないサーバルームなどにストレージ装置が配置される。クライアントPCは、このストレージ装置との間でNFS(Network File System)やCIFS(Common Internet File System)、或いはiSCSI(internet Small Computer System Interface)などの通信プロトコルを利用して、当該ストレージ装置から直接OS(Operating System)をブートする。
ネットワークブート型シンクライアントシステムの課題の1つとして、クライアントPCとストレージ装置との間がWAN(Wide Area Network)で接続されているような環境では、WANの回線速度の遅さがネックとなって、導入が難しいことが知られている。そこで、WWW(World Wide Web)の世界におけるプロキシ(Proxy)のように、ストレージ装置とクライアントPCとの間に中継装置(ノード装置)を導入し、中継装置によって中継されるデータをキャッシュデータとして、当該中継装置上でキャッシュ用のデータ格納手段(キャッシュデータ格納手段)に格納するためのキャッシュ制御を行うことで、負荷分散を行い、性能を向上させる手法が提案されている。しかし、中継装置でキャッシュ制御を行うことにより生じる新たな課題として、キャッシュデータ格納手段からの情報漏洩に対する対策をどのように実現するか、ということを検討しなければならない。
例えば特許文献1には、中継装置のキャッシュデータ格納手段からの情報漏洩に対する対策を実現するための技術が記載されている。この特許文献1に記載の技術では、クライアントPCまたはストレージ装置は、中継装置によって中継されるデータについて、キャッシュの可否を示す属性情報を出力する。中継装置は、この属性情報に基づいて中継するデータのキャッシュの可否を判断し、キャッシュ否と判断されたデータ(例えば機密データ)については、キャッシュデータ格納手段に格納せずに、つまりキャッシュせずに、中継のみを行う。このような特許文献1に記載の技術によれば、機密データを中継装置にキャッシュすることを禁止できるため、当該機密データが中継装置(のキャッシュデータ格納手段)から漏洩するのを防止できる。
特開2004−287476号
上記特許文献1には、クライアント装置とストレージ装置との間でデータが転送される都度、当該データのキャッシュの可否を示す属性情報が、当該データ(のヘッダ)に付加されて中継装置に通知されること(以下、第1の手法と称する)が記載されている。また特許文献1には、ストレージ装置においてデータ毎に管理されている属性情報が、データの転送とは別に、ストレージ装置から中継装置に通知されること(以下、第2の手法と称する)も記載されている。
第1の手法は、クライアント装置とストレージ装置との間でデータが転送される都度、属性情報を通知しなければならないという問題がある。一方、第2の手法は、データ毎に管理されている属性情報を、データ転送とは別に、ストレージ装置から中継装置に通知(転送)しなければならないという問題がある。
本発明は上記事情を考慮してなされたものでその目的は、データのキャッシュの可否を示す属性情報の中継装置への通知を必要とすることなく、キャッシュ可能なデータを効率的に登録できる中継装置及び同装置にキャッシュデータを登録するための方法を提供することにある。
本発明の1つの観点によれば、データを格納する第1の装置と前記第1の装置に対して読み書きアクセスを行う第2の装置との間のデータ転送のための通信を中継する中継装置が提供される。この中継装置は、前記第1の装置に格納されているデータを、当該データの内容に対応する識別子に対応付けて格納するためのキャッシュ格納手段と、前記キャッシュ格納手段に格納されるデータの内容に対応する識別子を、前記第1の装置における当該データを指定するインデックスに対応付けて保持するためのキャッシュインデックステーブルと、第3の装置から送信される、インデックスを含むキャッシュ登録要求を受信するキャッシュ登録要求受信手段と、前記第1の装置と前記第2の装置との間のデータ転送のための通信を中継する中継手段であって、前記キャッシュ登録要求受信手段が前記キャッシュ登録要求を受信した第1の場合、当該キャッシュ登録要求に含まれているインデックスの指定する第1のデータを前記第1の装置から読み込み、前記第2の装置から前記第1の装置に読み書きアクセスするためのインデックスを含む読み書き要求を受信した第2の場合には、当該読み書き要求に含まれているインデックスに対応する第2のデータを前記第2の装置との間で入出力する中継手段と、要求されたデータの内容に対応する識別子を生成する識別子生成手段と、前記第1の場合、前記第1のデータの内容に対応する識別子を前記識別子生成手段により生成させ、前記第1のデータを前記生成された識別子に対応付けて前記キャッシュ格納手段に格納し、且つ前記生成された識別子を、前記第1のデータを指定するインデックスに対応付けて前記キャッシュインデックステーブルに登録するキャッシュ登録手段と、前記第2の場合、前記読み書き要求に含まれている前記インデックスに対応付けて前記キャッシュインデックステーブルに識別子が登録され、且つ当該識別子と同一の識別子が前記キャッシュ格納手段に登録されているかによって、キャッシュヒットであるかを判定するキャッシュヒット判定手段と、キャッシュヒットでないと判定された場合、前記読み書き要求を前記中継手段により前記第1の装置に中継させることによって、前記読み書き要求に含まれている前記インデックスの指定する前記第2のデータを前記中継手段に取得させて前記中継手段により前記第2の装置に中継させる中継制御手段と、前記中継手段によって中継される前記第2のデータの内容に対応する識別子を前記識別子生成手段により生成させ、当該生成された識別子に対応付けて前記キャッシュ格納手段に前記第2のデータと同一のデータが格納されている場合、当該生成された識別子を、前記読み書き要求に含まれている前記インデックスに対応付けて前記キャッシュインデックステーブルに登録するインデックス登録手段とを具備することを特徴とする。
本発明によれば、データのキャッシュの可否を示す情報の中継装置への通知を必要とすることなく、キャッシュ可能なデータを効率的に登録できる。特に本発明によれば、キャッシュ登録要求に応じて、当該キャッシュ登録要求に含まれているインデックスで指定されたデータの内容に対応する識別子が、当該インデックスに対応付けてキャッシュインデックステーブルに登録され、且つ当該データが当該識別子に対応付けてキャッシュ格納手段に格納されると、つまりキャッシュデータとして登録されると、以後、第2の装置からの読み書き要求に別のインデックスが含まれていても、当該別のインデックスによって指定されるデータ(つまり読み書き要求によって指定されるデータ)と同一のデータが、当該同一のデータの内容に対応する識別子に対応付けて既にキャッシュデータとして登録されているならば、当該指定されるデータもキャッシュデータとして自動的に登録される。
本発明の一実施形態に係るコンピュータシステムの全体構成を示すブロック図。 図1に示されるストレージ装置及び中継装置に用いられるコンピュータの基本構成を示すブロック図。 同実施形態におけるストレージ装置、クライアント装置及び中継装置の機能構成を示すブロック図。 同実施形態におけるキャッシュインデックステーブルのデータ構造例を示す図。 同実施形態におけるキャッシュデータテーブルのデータ構造例を示す図。 キャッシュインデックステーブル、キャッシュデータテーブル及びキャッシュデータ格納部の関係について説明するための図。 同実施形態におけるキャッシュ登録動作の手順を示すフローチャート。 同実施形態においてクライアント装置がストレージ装置よりデータを読み込む場合の中継装置の処理手順を示すフローチャート。 同実施形態におけるキャッシュインデックステーブルへの登録処理の手順を示すフローチャート。 同実施形態の変形例におけるキャッシュ登録動作の手順を示すフローチャート。 同変形例におけるセッション取得処理の手順を示すフローチャート。
以下、本発明の実施の形態につき図面を参照して説明する。
<システム構成>
図1は本発明の一実施形態に係るコンピュータシステムの全体構成を示すブロック図である。このコンピュータシステムは、例えばシンクライアントシステム(更に詳細には、ネットワークブート型シンクライアントシステム)である。図1に示すシステムは、ストレージ装置(第1の装置)10と、クライアント装置(第2の装置)20を含む複数のクライアント装置と、中継装置30とから構成される。なお、図1において、クライアント装置20以外のクライアント装置は便宜的に省略されている。
ストレージ装置10は、各種データを格納するn個のディスクボリューム100-1〜100-n(図3参照)を有する。本実施形態において、n個のディスクボリューム100-1〜100-nは、クライアント装置20を含むn台のクライアント装置にそれぞれ対応付けて用意されるものとする。ここでは、ディスクボリューム100-1がクライアント装置20に対応付けられているものとする。ストレージ装置10は、クライアント装置20を含む複数のクライアント装置の各々に対して、対応するディスクボリュームへのアクセスを提供する。ストレージ装置10は、例えばiSCSIでのターゲット(Target)としての機能を持つ。
なお、ディスクボリューム100-1〜100-nがクライアント装置20を含む複数のクライアント装置を利用する例えばn人のユーザにそれぞれ対応付けて用意されるものであっても構わない。また、1つのクライアント装置(一人のユーザ)に複数のディスクボリュームが対応付けられていてもよく、n台のクライアント装置(n人のユーザ)にそれぞれ対応付けられるディスクボリュームの数がクライアント装置(ユーザ)毎に異なっていても構わない。
クライアント装置20は、ストレージ装置10に対してアクセスする。更に詳細に述べるならば、ストレージ装置10内のディスクボリューム100-1〜100-nのうち、自身に対応付けられているディスクボリューム(ここでは、ディスクボリューム100-1)に対してアクセスする。クライアント装置20は、例えばiSCSIでのイニシエータ(Initiator)として機能する。
中継装置30は、クライアント装置20を含む複数のクライアント装置(イニシエータ)とストレージ装置10(ターゲット)との間の通信、例えばiSCSIプロトコルによるデータ転送を中継する。iSCSIプロトコルは、TCP(Transmission Control Protocol)/IP(Internet Protocol)を用いて、ストレージ装置10で利用されているSCSIプロトコルを搬送するためのプロトコルである。中継装置30は、iSCSIプロトコルによるデータ転送を中継する際に、転送されるデータのキャッシュ制御を行う。
本実施形態において、ストレージ装置10及び中継装置30はコンピュータを用いて実現される。図2は、このようなコンピュータの基本構成を示すブロック図である。図2に示されるように、コンピュータは、少なくとも1つの処理ユニット21、主記憶装置22、補助記憶装置23、通信機構24及び入出力装置25の周知のハードウェア構成を有する。補助記憶装置23は、例えばハードディスクドライブを用いて構成される。補助記憶装置23には、処理ユニット21によって実行されるプログラムを格納することができる。通信機構24は、iSCSIプロトコルによるデータ転送のための通信を行う。
クライアント装置20もまたコンピュータを用いて実現される。但しクライアント装置20は、図2に示される補助記憶装置23を含まないものとする。つまりクライアント装置20は、図2に示されるコンピュータのハードウェア構成のうち、補助記憶装置23を除くハードウェア構成を有する。このためクライアント装置20においては、処理ユニット21によって実行されるプログラムのうち、例えばストレージ装置10から転送されるプログラム(本実施形態ではOSを含むプログラム)は主記憶装置22に格納される。なお、クライアント装置20から中継装置30に後述するキャッシュ登録を要求するためのプログラム(以下、特定プログラムと称する)は、例えばROMに予め格納されている。
図3は、図1のシステムにおけるストレージ装置10、クライアント装置20及び中継装置30の機能構成を示すブロック図である。
図3において、ストレージ装置10は、ディスクボリューム100-1〜100-nを有する。各ディスクボリューム100-i(i=1〜n)は、図2に示される補助記憶装置23の記憶領域を用いて実現される。本実施形態において、各ディスクボリューム100-iは、論理アドレス空間を提供する論理ユニット(論理ボリューム)である。各ディスクボリューム100-iには、ディスクボリューム番号DVNと呼ばれる固有のID(シリアル番号)が割り当てられる。
クライアント装置20は、ドライバ・ファイルシステム210と、キャッシュ登録データ選択・要求送信部220とを有する。本実施形態おいて、ドライバ・ファイルシステム210は、クライアント装置20が、図2に示される構成から補助記憶装置23を除いたハードウェア構成のコンピュータから構成される場合に、当該コンピュータ内の処理ユニット21が、ストレージ装置10からクライアント装置20の主記憶装置22にダウンロードされたプログラム(例えばOS)を実行することにより実現されるものとする。一方、キャッシュ登録データ選択・要求送信部220は、例えばROMに予め格納されている特定プログラムを処理ユニット21が主記憶装置22に読み込んで実行することにより実現されるものとする。
ドライバ・ファイルシステム210は、例えばクライアント装置20に対応付けられているストレージ装置10内のディスクボリューム100-1からファイルシステム211を構築する。ファイルシステム211は、キャッシュ登録データ選択・要求送信部220に対して、ファイルパスから該当するファイルが格納されているディスクボリューム100-1内の領域(以下、データ領域と称する)を指定する情報(以下、データ領域情報と称する)を取得するためのインタフェイスを提供する。
本実施形態では、データ領域の開始位置は、論理ブロックの開始位置(論理ブロックの境界)に一致し、当該データ領域の終了位置は、論理ブロックの終了位置(論理ブロックの境界)に一致するものとする。そこで、データ領域情報は、データ領域の開始位置の論理ブロックアドレス(以下、開始論理ブロックアドレスと称する)LBAと、当該データ領域(に格納されているファイル)のデータ長(サイズ)Lの情報とを含む。このデータ長Lは、論理ブロックのデータ長の整数倍である。
キャッシュ登録データ選択・要求送信部220は、例えば、クライアント装置20のハードウェア構成に含まれている入出力装置25(図2参照)を用いたユーザ(またはシステム管理者)の操作に基づき、中継装置30にキャッシュデータとして登録すべきデータ(ここではファイル)の指定を受け付ける。キャッシュ登録データ選択・要求送信部220は、この指定に基づき、ファイルシステム211から、そのファイルが保存されているディスクボリューム(ここではディスクボリューム100-1)内のデータ領域に関するデータ領域情報LBA/Lを取得し、当該情報LBA/Lをキャッシュ登録要求により中継装置30に送信する。
中継装置30は、主として2種類の動作を行う。第1の動作は、クライアント装置20のキャッシュ登録データ選択・要求送信部220から送信されるキャッシュ登録要求に応じて、ストレージ装置10から転送されるデータをキャッシュデータとして登録するキャッシュ登録動作である。第2の動作は、クライアント装置20のドライバ・ファイルシステム210から送信される読み書き要求(リード要求またはライト要求)に応じて行われる、ストレージ装置10とクライアント装置20との間の入出力(I/O)セッション(ここではiSCSIセッション)の中継とキャッシュ動作である。
iSCSIセッションの中継は次のように行われる。まず、クライアント装置20から中継装置30のクライアント装置側インタフェイス(I/F)311を指定して、ストレージ装置10への接続を要求する。中継装置30は、このクライアント装置20からの要求を受け付けると、当該中継装置30のストレージ装置側インタフェイス(I/F)312からストレージ装置10に対して接続を行う。これによりクライアント装置20とストレージ装置10との間の接続(iSCSIセッション)が中継装置30を介して確立する。なお、クライアント装置側インタフェイス311及びストレージ装置側インタフェイス312が物理的に1つのインタフェイスであってもよく、iSCSIであれば、TCP/IPのIPアドレスやポート番号で別インタフェイスであることが識別できれば十分である。インタフェイス311及び312は、通信機構24によって実現される。
<中継装置の構成>
中継装置30は、上述の2種類の動作を実現するために、中継部310、キャッシュ管理部320、キャッシュインデックステーブル330、キャッシュデータテーブル340、キャッシュデータ格納部350、識別子生成部360及びキャッシュ登録要求処理部370を含む。本実施形態において、中継装置30内の中継部310、キャッシュ管理部320、識別子生成部360及びキャッシュ登録要求処理部370は、中継装置30が図2に示されるコンピュータから構成される場合に、当該コンピュータ内の処理ユニット21が、補助記憶装置23に格納されている所定のプログラムを主記憶装置22に読み込んで実行することにより実現される。
中継部310は、クライアント装置20とストレージ装置10との間のiSCSIプロトコルによるPDU(Protocol Data Unit)の転送、つまりiSCSI−PDUの転送を中継する。中継部310は、クライアント装置側インタフェイス311とストレージ装置側インタフェイス312とを含む。iSCSI−PDUがデータ転送に関係するもの(READ&SCSI DATAIN/WRITE&SCSI DATAOUT)であれば、キャッシュ管理部320によるキャッシュ制御が行われる。
キャッシュ管理部320は、クライアント装置20のドライバ・ファイルシステム210からのリード要求またはライト要求に応じて中継部310によって中継されるデータのキャッシュ制御を行う。キャッシュ管理部320は、クライアント装置20のキャッシュ登録データ選択・要求送信部220から送信されるキャッシュ登録要求によって指定されるデータをキャッシュデータとして中継装置30内に登録するためのキャッシュ登録動作を行う。
キャッシュ管理部320は、キャッシュインデックステーブル330及びキャッシュデータテーブル340を管理する。キャッシュ管理部320はまた、キャッシュデータ格納部350をも管理する。キャッシュ管理部320は、キャッシュ登録部320a、キャッシュヒット判定部320b、中継制御部320c及びインデックス登録部320dを含む。
キャッシュインデックステーブル330は、ストレージ装置10内のディスクボリューム(論理ボリューム)100-iに対応付けて設けられる。キャッシュインデックステーブル330は、対応するディスクボリューム100-iに固有のディスクボリューム番号DVNと当該ディスクボリューム100-i内の論理ブロックの論理ブロックアドレスLBAとの組み合わせを、当該論理ブロックに格納されているデータを指定するインデックスとして保持する。キャッシュインデックステーブル330は、このインデックスによって指定されるデータの内容に対応する識別子を、当該インデックスに対応付けて保持する。
ディスクボリューム番号DVNは、対応するディスクボリューム100-iを識別するための番号である。本実施形態においてディスクボリューム番号DVNは、中継装置30内の全てのディスクボリューム100-iに対してシリアルに割り当てられる。このディスクボリューム番号DVNは、中継装置30からストレージ装置10に対して問い合わせのためのCDB(Command Descriptor Block)を発行することにより取得される。iSCSIの場合、DVNに代えて、当該DVNとiSCSI−InitiatorName(イニシエータの名前)との組を利用することも可能である。
図4は、キャッシュインデックステーブル330のデータ構造例を示す。図4の例では、キャッシュインデックステーブル330はエントリの群を有する。キャッシュインデックステーブル330は、対応するディスクボリューム100-iに固有のディスクボリューム番号DVNをエントリ群から独立に保持する。キャッシュインデックステーブル330の各エントリは、対応するディスクボリューム100-i内の論理ブロックの論理ブロックアドレスLBAと、当該論理ブロックに格納されているデータ(ブロックデータ)の内容に対応する識別子とを保持する。
このように、図4に示されるキャッシュインデックステーブル330は、ディスクボリューム100-i内の論理ブロックのデータを指定するための各インデックスを、当該各インデックスに共通のディスクボリューム番号DVNと、当該インデックス毎に異なる論理ブロックアドレスLBAとに分離して保持している。これによりキャッシュインデックステーブル330の各エントリに必要な記憶容量を低減している。キャッシュインデックステーブル330に、当該テーブル330のエントリ群から独立に保持されディスクボリューム番号DVNは、当該エントリ群の各々に保持される論理ブロックアドレスLBAと組み合わせてインデックスを構成する。このため、キャッシュインデックステーブル330の各エントリは、等価的に、インデックス及び識別子の組を保持しているといえる。
さて、キャッシュインデックステーブル330の各エントリに保持される識別子は、例えば、aを論理ブロックのデータ長(ここではセクタ長)を表す0より大きい整数とすると、対応するインデックス中の論理ブロックアドレスLBAで指定される論理ブロックに格納されているaセクタ(512バイトの倍数)分のデータのハッシュ値である。このように本実施形態では、キャッシュインデックステーブル330(及びキャッシュデータテーブル340)によって管理されるキャッシュブロックのデータ長(サイズ)が、論理ブロックのデータ長に等しいものとする。勿論、論理ブロックを複数のブロックに等分し、その等分された各ブロックをキャッシュブロックとして管理することも可能である。更に本実施形態では、説明の簡略化のために、aが1であり、キャッシュインデックステーブル330(及びキャッシュデータテーブル340)の1エントリが1セクタ(=512バイト)単位で管理されるものとする。
キャッシュインデックステーブル330は、ストレージ装置10内のディスクボリューム(論理ボリューム)100-i毎に用意される。つまり、中継装置30には、当該中継装置30でアクセスを中継しているストレージ装置10上のディスクボリューム100-iの数に相当するキャッシュインデックステーブル330が存在する。
キャッシュデータテーブル340は、キャッシュインデックステーブル330によって管理されるa(本実施形態ではa=1)セクタ分のデータのハッシュ値を識別子として、当該識別子と、キャッシュデータ格納部350における当該データ(キャッシュデータ)の格納(登録)先のアドレスとの組を保持するエントリの群を有する。つまりキャッシュデータテーブル340は、キャッシュインデックステーブル330のエントリに論理ブロックアドレスLBAと対応付けて保持されている識別子と、対応するキャッシュデータの格納先のアドレス(以下、キャッシュデータアドレスと称する)との組を保持するエントリの群を有する。図5は、キャッシュデータテーブル340のデータ構造例を示す。
以下の説明では、キャッシュデータ格納部350に格納されるデータ(キャッシュデータ)の内容に対応する識別子(を含むエントリ情報)を、キャッシュデータテーブル340のエントリに登録することを、キャッシュデータテーブル340にデータを登録すると表現することもある。また、キャッシュデータ格納部350に格納されるデータの内容に対応する識別子(を含むエントリ情報)が、キャッシュデータテーブル340のエントリに登録されている状態を、キャッシュデータテーブル340にデータが登録されていると表現することもある。つまりキャッシュインデックステーブル330及びキャッシュデータテーブル340は、ストレージ装置10のディスクボリューム100-iに格納されるデータを、当該データの内容に対応する識別子に対応付けて格納するためのキャッシュ格納部380を構成する。
キャッシュインデックステーブル330及びキャッシュデータテーブル340は、例えば、中継装置30のハードウェア構成に含まれている主記憶装置22及び補助記憶装置23の記憶領域の一部に格納して用いられるものとする。また、キャッシュデータ格納部350は、主記憶装置22及び補助記憶装置23それぞれの記憶領域(揮発性記憶領域及び不揮発性記憶領域)の一部を用いて実現されるものとする。具体的には、テーブル330及び340は、中継装置30の動作状態では主記憶装置22に格納して用いられ、少なくとも中継装置30の動作が停止される際には補助記憶装置23に保存される。そしてテーブル330及び340は、中継装置30の起動時に補助記憶装置23から主記憶装置22にロードして用いられる。キャッシュデータ格納部350のデータも同様である。しかし、このような形態は一例であり、例えば主記憶装置22(揮発性記憶装置)及び補助記憶装置23(不揮発性記憶装置)の一方だけを用いても構わない。
なお、本実施形態ではiSCSIによるブロック型転送プロトコルを例として、キャッシュインデックステーブル330及びキャッシュデータテーブル340の説明を行うが、iSCSIに限るものではない。例えば、インデックスとしてパス名を利用することで、iSCSIによるブロック型転送プロトコルに代えて、NFS(Network File System)やCIFS(Common Internet File System)などのファイル転送プロトコルを適用することも可能である。
キャッシュデータ格納部350は、キャッシュデータテーブル340の各エントリによって管理されるキャッシュデータアドレスに、a(=1)セクタ分のキャッシュデータを格納する。このキャッシュデータのハッシュ値は、キャッシュデータテーブル340の対応するエントリにキャッシュデータアドレスと組をなして保持されている識別子に一致する。
次に、図6を参照して、キャッシュインデックステーブル330、キャッシュデータテーブル340及びキャッシュデータ格納部350の関係について説明する。なお、図6においては、図4及び図5とは異なり、キャッシュインデックステーブル330及びキャッシュデータテーブル340に保持(登録)されている、ディスクボリューム番号DVN、論理ブロックアドレスLBA、識別子(ハッシュ値)及びキャッシュデータアドレスについては、便宜的に簡略化して記載されている。
図6では、ディスクボリューム番号「DVN1」によって識別されるストレージ装置10内のディスクボリューム、例えばディスクボリューム100-1に対応するキャッシュインデックステーブル330について説明する。
このキャッシュインデックステーブル330の第1エントリには、論理ブロックアドレス「LBA1」に対応付けて識別子「ハッシュ値1」が登録されている。またキャッシュインデックステーブル330の第2、第3及び第4エントリには、それぞれ、論理ブロックアドレス「LBA2」に対応付けて識別子「ハッシュ値2」が、論理ブロックアドレス「LBA3」に対応付けて識別子「ハッシュ値3」が、論理ブロックアドレス「LBA4」に対応付けて識別子「ハッシュ値1」が登録されている。つまり、論理ブロックアドレス「LBA1」に格納されているデータ及び論理ブロックアドレス「LBA4」に格納されているデータは同一である。換言すれば、キャッシュインデックステーブル330に保持されている論理ブロックアドレス「LBA1」及び「LBA4」は、同一データを指し示している。
一方、キャッシュデータテーブル340の第1エントリには、識別子「ハッシュ値1」に対応付けてキャッシュデータアドレスとして「アドレス1」が登録されている。またキャッシュデータテーブル340の第2の及び第3のエントリには、それぞれ、識別子「ハッシュ値2」に対応付けてキャッシュデータアドレスとして「アドレス2」が、識別子「ハッシュ値3」に対応付けてキャッシュデータアドレスとして「アドレス3」が登録されている。つまりキャッシュデータテーブル340の第1、第2及び第3エントリには、それぞれ、識別子「ハッシュ値1」、「ハッシュ値2」及び「ハッシュ値1」に対応するデータ(ここでは、データA、データB及びデータC)が登録されている。これらのデータは、漏洩しても問題のないデータである。
また、キャッシュデータ格納部350の「アドレス1」にはデータAが格納されている。キャッシュデータ格納部350の「アドレス2」及び「アドレス3」には、それぞれ、データB及びデータCが格納されている。
なお、データAは、キャッシュデータ格納部350の「アドレス1」にキャッシュされているデータであり、ディスクボリューム番号「DVN1」によって識別されるストレージ装置10内のディスクボリューム100-1の論理ブロックアドレス「LBA1」及び論理ブロックアドレス「LBA4」に格納されているデータ(と同一)である。
データBは、キャッシュデータ格納部350の「アドレス2」にキャッシュされているデータであり、ディスクボリューム番号「DVN1」によって識別されるストレージ装置10内のディスクボリューム100-1の論理ブロックアドレス「LBA2」に格納されているデータ(と同一)である。
また、データCは、キャッシュデータ格納部350の「アドレス3」にキャッシュされているデータであり、ディスクボリューム番号「DVN1」によって識別されるストレージ装置10内のストレージ装置10のディスクボリュームシリアル番号「1」の論理ブロックアドレス「3」に格納されているデータ(と同一)である。
上記したように、キャッシュインデックステーブル330及びキャッシュデータテーブル340は、識別子(ハッシュ値)により関連付けられている。これにより、例えばストレージ装置10からストレージ装置10に対するリード要求があった場合には、中継装置30は、当該リード要求に含まれるインデックス(ディスクボリュームシリアル番号及び論理ブロックアドレス)からキャッシュデータ格納部350に格納(キャッシュ)されているキャッシュデータを特定できる。
再び図3を参照すると、識別子生成部360は、キャッシュ管理部320からaセクタ分のデータを受け取ることにより、当該データの内容に対応する識別子を生成し、生成された識別子をキャッシュ管理部320に応答する。本実施例では識別子の生成に所定のハッシュ関数が用いられる。このハッシュ関数には、MD(Merkle-Damgard)5やSHA(Secure Hash Algorithm)1などが利用できる。
キャッシュ登録要求処理部370は、クライアント装置20内のキャッシュ登録データ選択・要求送信部220から、入力として、当該クライアント装置20のイニシエータ名と、キャッシュデータとして登録されるべきデータ(例えばファイル)の論理ブロックアドレスLBA及びデータ長(セクタ数)Lとを(含むキャッシュ登録要求を)受信する。説明の簡略化のために、データ長Lは、論理ブロックのデータ長の整数倍であるものとする。
キャッシュ登録要求処理部370は、この入力を受信すると、当該イニシエータ名に対応するiSCSIセッション内において、当該論理ブロックアドレスLBA及びデータ長Lで指定されるデータを受信するためのiSCSI−PDUを生成する。
キャッシュ登録要求処理部370は、中継部310と連携して、生成されたiSCSI−PDUをストレージ装置10に送信する。このiSCSI−PDUの送信により、キャッシュ登録要求処理部370は、ストレージ装置10からiSCSI−PDUによって通知される論理ブロックアドレスLBA及びデータ長Lで指定されるデータ領域のデータを受信する。キャッシュ登録要求処理部370は、この受信データの情報を、キャッシュ管理部320と連携して、キャッシュインデックステーブル330及びキャッシュデータテーブル340に登録する。
<中継装置の動作の概要>
まず、中継装置30を中心とする動作の概要について説明する。
中継装置30は、自身が中継するiSCSI−PDUがデータ転送に関係するか否かによって動作を切り替える。まず、中継するiSCSI−PDUがデータ転送に関係しないものであれば、中継装置30は、iSCSI−PDUをそのまま相手先に対して転送する動作を行う。これに対し、iSCSI−PDUがデータ転送に関係するものであれば、中継装置30は、キャッシュ管理部320を通してキャッシュアクセス動作を行う。
また中継装置30は、次の2種類の動作をもう。2種類の動作の1つは、中継装置30にキャッシュデータを登録するためのキャッシュ登録動作である。2種類の動作の他の1つは、クライアント装置20からストレージ装置10にiSCSIセッション(入出力セッション)を中継するためのiSCSIセッション中継動作である。このiSCSIセッション中継動作が行われる際には、後述するキャッシュ動作も行われる。
<キャッシュ登録動作>
次に、中継装置30にキャッシュデータを登録するためのキャッシュ登録動作について説明する。
まず、キャッシュ登録動作の概要について説明する。
本実施形態では、キャッシュ登録動作は以下の2つの手順1及び2から構成される。
手順1:クライアント装置20のキャッシュ登録データ選択・要求送信部220は、中継装置30に対して、キャッシュ登録すべきデータのインデックスをキャッシュ登録要求により送信する。
手順2:中継装置30のキャッシュ登録要求処理部370は、クライアント装置20のキャッシュ登録データ選択・要求送信部220からインデックスを(含むキャッシュ登録要求を)受信すると、中継部310を用いて、当該インデックスに対応するデータをストレージ装置10から読み込む。中継装置30のキャッシュ管理部320は、読み込まれたデータをキャッシュデータとしてキャッシュデータ格納部350に格納すると共に、そのキャッシュデータを管理するためのキャッシュインデックステーブル330及びキャッシュデータテーブル340に新たなエントリ情報を登録する。但し、テーブル340及び340に既にエントリ情報が登録されているデータであれば、新たなエントリ情報の登録は行われない。
次に手順1及び2の詳細について、図7のフローチャートを参照して説明する。
<手順1の詳細>
まず、手順1の詳細について説明する。
今、ディスクボリューム100-1に格納されている複数のファイルが、クライアント装置20のファイルシステム211によって管理されているものとする。このファイルシステム211は、ストレージ装置10上のディスクボリューム100-1から構成されることに注意されたい。
クライアント装置20のキャッシュ登録データ選択・要求送信部220は、当該クライアント装置20のファイルシステム211によって管理されているファイルの中から、中継装置30にキャッシュデータとして登録する対象とすべき1つ以上のファイルを決定する(ステップ700)。このファイルの決定には、例えば、クライアント装置20のハードウェア構成に含まれている入出力装置25(図2参照)を用いた、当該クライアント装置20のユーザやシステム管理者からの、キャッシュ登録データ選択・要求送信部220に対する明示的な指定や、ファイル名などからの自動決定など様々な方法が適用可能である。ここでは、ファイル名が指定されるものとする。またステップ700では、キャッシュ登録先の中継装置30のアドレス(例えばIPアドレス)も指定される。
つまり、ステップ700においてキャッシュ登録データ選択・要求送信部220は、キャッシュ登録対象となるファイルのファイル名の指定を入力して、キャッシュ登録対象となるファイルを決定する。またステップ700においてキャッシュ登録データ選択・要求送信部220は、キャッシュ登録先の中継装置30のアドレスの指定も入力する。
キャッシュ登録データ選択・要求送信部220は、指定されたキャッシュ登録の対象となるファイルが格納されているディスクボリューム100-1を識別するディスクボリューム番号DVN、当該ファイルが格納されているディスクボリューム100-i内のデータ領域を指定するデータ領域情報LBA/Lを、クライアント装置20のファイルシステム211を通して取得する(ステップ701)。ここでは、説明の簡略化のために、データ領域(ファイル)のデータ長Lが、1論理ブロックの長さに一致するa(=1)セクタであるものとする。
次にキャッシュ登録データ選択・要求送信部220は、指定された中継装置30のキャッシュ登録要求処理部370に対して、キャッシュデータの登録を要求するためのキャッシュ登録要求を送信する(ステップ702)。このキャッシュ登録要求は、キャッシュ登録の対象となるデータ(ここでは、ファイルのデータ)を示すインデックスを含む。このインデックスは、ステップ701で取得された、ディスクボリューム番号DVN及び論理ブロックアドレスLBAを含む。キャッシュ登録要求は更に、ステップ701で取得されたキャッシュ登録の対象となるデータ(以下、キャッシュ登録対象データと称する)のデータ長Lの情報を含む。つまりキャッシュ登録要求は、ディスクボリューム番号DVN及びデータ領域情報LBA/Lを含む。
なお、キャッシュ登録データ選択・要求送信部220が、ストレージ装置10に対してアクセスするクライアント装置20から独立の装置(以下、第3の装置と称する)に備えられていても構わない。但し、本実施形態では、キャッシュ登録データ選択・要求送信部220がクライアント装置20に備えられていることから、つまりクライアント装置20(第2の装置)が第3の装置を兼ねていることから、クライアント装置20(内のキャッシュ登録データ選択・要求送信部220)自身が、キャッシュ登録の必要性のあるデータを判断して、中継装置30に対して自らキャッシュ登録を依頼することができる。
<手順2の詳細>
次に、手順2の詳細について説明する。
中継装置30のキャッシュ登録要求処理部370はキャッシュ登録要求受信手段として機能して、クライアント装置20のキャッシュ登録データ選択・要求送信部220から送信されたキャッシュ登録要求を受信する(ステップ703)。
キャッシュ登録要求処理部370は、キャッシュ登録要求を受信すると(ステップ703)、当該キャッシュ登録要求に含まれているインデックス中のディスクボリューム番号DVNで指定されるストレージ装置10のディスクボリューム100-1に、中継部310を通して中継装置30を接続する(ステップ704)。ここで中継装置30と接続されるディスクボリューム100-1は、キャッシュ登録を要求したクライアント装置20から現在接続されているストレージ装置10のディスクボリュームに一致する。ステップ704での接続動作では、現在中継装置30が中継中の、クライアント装置20とストレージ装置10との間のiSCSIセッションとは独立したセッションが確立される。なお、ステップ704でのセッションの確立が、クライアント装置20のキャッシュ登録データ選択・要求送信部220からキャッシュ登録が要求される前に、つまり事前に行われてもよい。
ステップ704の実行により上述のセッションが確立した状態で、キャッシュ登録要求処理部370は、クライアント装置20からキャッシュ登録が要求されたキャッシュ登録対象データを読み込むためのリード命令を生成する(ステップ705)。このステップ705においてキャッシュ登録要求処理部370は、生成したリード命令を、中継部310を介してストレージ装置10に送信する。
ストレージ装置10は、中継部310を介して送信されたリード要求に基づき、要求されたデータをディスクボリューム100-1から読み出して中継部310に返す。キャッシュ登録要求処理部370は、中継部310に返されたデータをキャッシュ登録対象データとして、当該中継部310を介して取得する(ステップ706)。このようにしてキャッシュ登録要求処理部370は、キャッシュ登録対象データ(ここでは、ディスクボリューム番号DVNで指定されるディスクボリューム100-1内の、論理ブロックアドレスLBA及びデータ長Lで指定されるデータ領域に格納されているaセクタ分のデータ)を取得する。
キャッシュ登録要求処理部370は、取得したキャッシュ登録対象データをキャッシュ管理部320に渡して、ステップ703で受信したキャッシュ登録要求の指定するキャッシュ登録動作を指示する。するとキャッシュ管理部320のキャッシュ登録部320aは、キャッシュ登録対象データを識別子生成部360に渡して、当該データの識別子の生成を要求する。
識別子生成部360は、キャッシュ登録対象データのハッシュ値を所定のハッシュ関数を用いて生成し、生成されたハッシュ値を当該データの識別子としてキャッシュ管理部320のキャッシュ登録部320aに返す(ステップ707)。つまり識別子生成部360は、取得されたキャッシュ登録対象データのハッシュ値を、要求された識別子として生成する。なお、中継部310、キャッシュ管理部320、識別子生成部360及びキャッシュ登録要求処理部370の間のキャッシュ登録対象データの授受は、図示せぬバッファを介して行われるものとする。この場合、キャッシュ登録対象データの物理的移動は必ずしも発生しない。
キャッシュ登録部320aは、識別子生成部360によって生成された識別子を含む第1及び第2のエントリ情報を、それぞれキャッシュインデックステーブル330(ステップ705で取得されたデータが格納されているディスクボリューム100-1に対応するキャッシュインデックステーブル330)、及びキャッシュデータテーブル340に登録する(ステップ708)。但し、生成された識別子に一致する識別子を含むエントリがキャッシュデータテーブル340に既に存在する場合には、第1及び第2のエントリ情報の登録は行われない。
第1のエントリ情報は、インデックスの一部をなす論理ブロックアドレスLBAと生成された識別子とを含む。キャッシュインデックステーブル330は、このインデックスに含まれているディスクボリューム番号DVNを保持している。このため、第1のエントリ情報をキャッシュインデックステーブル330に登録することは、当該テーブル330に、インデックスに対応付けて識別子を登録することと等価である。
第2のエントリ情報は、生成された識別子と、当該識別子によって示されるデータがキャッシュデータとして格納されるキャッシュデータ格納部350のアドレス(キャッシュデータアドレス)とを含む。ステップ708においてキャッシュ登録部320aは、このキャッシュデータアドレスで指定されるキャッシュデータ格納部350の領域に、識別子によって示されるデータをキャッシュデータとして格納する。なお、このキャッシュデータの格納の後に、第1及び第2のエントリ情報の登録が行われてもよい。
キャッシュ登録部320aによるステップ708の処理が終了すると、キャッシュ登録要求処理部370は、ステップ704で確立したセッションを閉じてから、クライアント装置20のキャッシュ登録データ選択・要求送信部220にキャッシュ登録完了の応答を返す(ステップ709)。
もし、キャッシュ登録データ選択・要求送信部220に対して入力として複数のファイルが指定された場合、上述のステップ701〜709が、その指定された全てのファイルについて繰り返される(ステップ710)。
このように本実施形態においては、クライアント装置20からのキャッシュ登録要求を中継装置30が実行するだけで、当該要求に含まれているインデックスで指定されたデータだけをストレージ装置10から読み込んで、キャッシュデータとして当該中継装置30に登録することができる。このため本実施形態においては、従来技術とは異なり、クライアント装置とストレージ装置との間でデータが転送される都度、属性情報を通知するとか、データ毎に管理されている属性情報を、データ転送とは別に、ストレージ装置から中継装置に通知(転送)しなくて済む。なお、本実施形態において、クライアント装置20からのキャッシュ登録要求で指定されるデータは、漏洩しても問題のないデータ、例えばOSのファイルや、アプリケーションプログラムファイル等である。
<クライアント/ストレージ装置間のiSCSIセッション中継とキャッシュ動作>
本実施形態において中継装置30は、クライアント装置20とストレージ装置10との間の入出力(IO)セッションとしてのiSCSIセッションを中継する。この中継時に、中継装置30は、キャッシュインデックステーブル330及びキャッシュデータテーブル340を利用して、つまり当該両テーブルに登録されたエントリ情報によって指定されるキャッシュデータを利用して、キャッシュ(キャッシュ制御)動作を行う。
以下、クライアント装置20がストレージ装置10よりデータを読み込む場合の中継装置30の処理手順について、図8のフローチャートを参照して説明する。
今、中継装置30の中継部310が、クライアント装置20から送信されたリード要求を受信したものとする(ステップ801)。このリード要求は、読み込みの対象となるデータ(以下、読み込み対象データと称する)を示すインデックスを含む。このインデックスは、読み込み対象データが格納されているディスクボリューム100-iを識別するディスクボリューム番号DVN及び読み込み対象データが格納されているディスクボリューム100内の領域の開始位置を示す論理ブロックアドレス(開始論理ブロックアドレス)LBAを含む。リード要求は更に、読み込み対象データのデータ長Lの情報を含む。つまりリード要求は、ディスクボリューム番号DVN及びデータ領域情報LBA/Lを含む。ここでは、説明の簡略化のために、読み込み対象データのデータ長Lがa(=1)セクタであり、1キャッシュブロックのデータ長に等しく、且つ1キャッシュブロックのデータ長が1論理ブロックのデータ長に等しいものとする。
キャッシュ管理部320のキャッシュヒット判定部320bは、中継部310によってリード要求が受信された場合、当該リード要求に含まれるインデックスに基づいて、以下のキャッシュヒット判定処理を実行する(ステップ802)。
まずキャッシュ管理部320は、インデックスに含まれるディスクボリューム番号DVNによって示されるディスクボリュームに対応付けられているキャッシュインデックステーブル330を選択する(ステップ802a)。ここでは、ディスクボリューム100-1に対応付けられているキャッシュインデックステーブル330が選択されたものとする。
次にキャッシュヒット判定部320bは、キャッシュインデックステーブル330を参照し、インデックスに含まれる論理ブロックアドレスLBAに対応付けて識別子が登録されている(エントリがある)かを判定する(ステップ802b)。
もし、識別子が登録されているならば(ステップ802bのYES)、キャッシュヒット判定部320bは当該識別子(と同一の識別子)がキャッシュデータテーブル340に登録されているかを判定する(ステップ802c)。もし、この識別子がキャッシュデータテーブル340にも登録されているならば(ステップ802cのYES)、つまり、この識別子に対応するデータがキャッシュデータテーブル340に登録されているならば、キャッシュヒット判定部320bは読み込み対象データがキャッシュデータ格納部350に存在するキャッシュヒットと判定する(ステップ802d)。
キャッシュ管理部320の中継制御部320cは、キャッシュヒット判定部320bによってキャッシュヒットが判定されると、このキャッシュ判定に用いられた識別子に対応付けてキャッシュデータテーブル340に登録されているキャッシュデータアドレスを取得する(ステップ803)。そして中継制御部320cは、取得したキャッシュデータアドレスに基づき、キャッシュデータ格納部350の当該キャッシュデータアドレスに格納されているキャッシュデータを読み込み対象データとして読み込む(ステップ804)。そして中継制御部320cは、読み込んだデータをリード要求元のクライアント装置20に返すように中継部310に指示する。
すると中継部310は、中継制御部320cによってキャッシュデータ格納部350から読み込まれたデータを、クライアント装置20からのリード要求に対する応答として、当該クライアント装置20に送信する(ステップ805)。これにより、クライアント装置20から送信されたリード要求に対する中継装置30での処理は終了する。
一方、識別子がキャッシュインデックステーブル330に登録されていないならば(ステップ802bのNO)、キャッシュヒット判定部320bは、読み込み対象データがキャッシュデータ格納部350に存在しないキャッシュミスヒットと判定する(ステップ802e)。また、キャッシュインデックステーブル330に識別子が登録されていても(ステップ802bのYES)。当該識別子(と同一の識別子)がキャッシュデータテーブル340に登録されていない場合には(ステップ802cのNO)、キャッシュヒット判定部320bはキャッシュミスヒットと判定する(ステップ802e)。
中継制御部320cは、キャッシュヒット判定部320bによってキャッシュミスヒットが判定されると、リード要求を、中継部310を介してストレージ装置10に中継(転送)する(ステップ806)。ストレージ装置10は、中継部310によって中継されたリード要求に応じてディスクボリューム100-1から読み込み対象データを読み出して中継部310に返す。これにより、中継部310は、読み込み対象データを取得する(ステップ807)。
中継部310は、取得したデータを、クライアント装置20からのリード要求に対する応答として、当該クライアント装置40に送信する(ステップ808)。
キャッシュ管理部320のインデックス登録部320dは、キャッシュミスヒットが判定された場合、中継部310によって取得されたデータの内容に対応する識別子をキャッシュインデックステーブル330に登録するための、以下に述べるキャッシュインデックステーブルへの登録処理を実行する(ステップ809)。これにより、クライアント装置20から送信されたリード要求に対する中継装置30での処理は終了する。
次に、キャッシュインデックステーブルへの登録処理(図8のステップ809)の手順について、図9のフローチャートを参照して説明する。
インデックス登録部320dは、中継部310によって取得されたデータのハッシュ値を当該データの内容に対応する識別子として生成する(ステップ901)。インデックス登録部320dは、生成された識別子に対応するデータがキャッシュデータテーブル340に登録されているかを判定する(ステップ902)。ここでは、生成された識別子(に一致する識別子)を含むエントリ情報がキャッシュデータテーブル340に保持されており、且つ当該エントリ情報中のキャッシュデータアドレスで指定されるキャッシュデータ格納部350の領域に格納されているキャッシュデータと中継部310によって取得されたデータとが同一の場合に、ステップ902の判定がYESとなる。それ以外の場合、ステップ902の判定はNOとなる。
インデックス登録部320dは、生成された識別子に対応するデータがキャッシュデータテーブル340に登録されている場合(ステップ902のYES)、キャッシュミスヒットの判定に用いられたキャッシュインデックステーブル330に、インデックスに含まれている論理ブロックアドレスLBAに対応付けて、当該識別子を登録する(ステップ903)。このキャッシュインデックステーブル330は、インデックスに含まれているディスクボリューム番号DVNを保持している。このため、ステップ903の処理は、キャッシュインデックステーブル330に、インデックスに対応付けて識別子を登録することと等価である。このステップ903について更に詳細に説明する。
ステップ903は第1及び第2の処理に大別される。
第1の処理は、上述のキャッシュインデックステーブル330に、インデックス中の論理ブロックアドレスLBAに対応付けて既に別の識別子が登録されている場合に実行される。第1の処理では、上記別の識別子に代えて、生成された識別子が登録される。つまり、既登録の識別子が、生成された識別子に置き換えられる。
これに対し、第2の処理は、上述のキャッシュインデックステーブル330に、インデックス中の論理ブロックアドレスLBAが保持されていないか、或いは当該論理ブロックアドレスLBAに対応付けて識別子(ここでは有効な識別子)が登録されていない場合に実行される。第2の処理では、生成された識別子が、キインデックス中の論理ブロックアドレスLBAに対応付けてャッシュインデックステーブル330に登録される。
ステップ903が実行されることにより、以後、今回と同一の論理ブロックアドレスLBAへのアクセスが指定された場合、キャッシュヒットとなる。
ステップ903が実行される例について、図6を参照して説明する。
まず、クライアント装置20からのキャッシュ登録要求により、ディスクボリューム100-1の論理ブロックアドレス「LBA1」に格納されている、漏洩しても問題のないデータAが、ディスクボリューム100-1に対応するキャッシュインデックステーブル330及びキャッシュデータテーブル340を用いてキャッシュデータとして登録されているものとする。一方、ディスクボリューム100-nの論理ブロックアドレス「LBAn」にも、データAが格納されているものとする。但し、ディスクボリューム100-nの論理ブロックアドレス「LBAn」に格納されているデータAは、キャッシュデータとして登録されていないものとする。
このような状態で、中継装置30が、クライアント装置20から送信された、ディスクボリューム100-nの論理ブロックアドレス「LBAn」からデータを読み込むためのリード命令を受信したものとする。この場合、キャッシュミスヒットとなって、上述のキャッシュインデックステーブルへの登録処理(図8のステップ809)が実行される。これにより、ディスクボリューム100-nに対応するキャッシュインデックステーブル330には、論理ブロックアドレス「LBAn」に対応付けて、データAの内容に対応する識別子「ハッシュ値1」が登録される。
同様に、中継装置30が、クライアント装置20から送信された、ディスクボリューム100-1の論理ブロックアドレス「LBA4」からデータを読み込むためのリード命令を受信したものとする。ディスクボリューム100-1の論理ブロックアドレス「LBA4」には、データAが格納されている。もし、この論理ブロックアドレス「LBA4」のデータAが、図6とは異なり、キャッシュデータテーブル340に登録されていないならば、キャッシュミスヒットとなって、上述のキャッシュインデックステーブルへの登録処理(図8のステップ809)が実行される。これにより、ディスクボリューム100-1に対応するキャッシュインデックステーブル330には、図6に示されるように、論理ブロックアドレス「LBA4」に対応付けて、データAの内容に対応する識別子「ハッシュ値1」が登録される。
つまり、本実施形態においては、i(i=1〜n),j(j=1〜n),x,yを、i≠j及び/またはx≠yであるとすると、クライアント装置20から中継装置30に送信されるキャッシュ登録命令に応じて、当該命令で指定された、ディスクボリューム100-iの論理ブロックアドレス「LBAx」のデータAを、キャッシュデータとして中継装置30内に登録すると、ディスクボリューム100-jの論理ブロックアドレス「LBAy」のデータAを読み込むリード命令の実行時に、ディスクボリューム100-jに対応するキャッシュインデックステーブル330に、論理ブロックアドレス「LBAy」に対応付けて、データAの識別子「ハッシュ値1」が自動的に登録される。このように本実施形態によれば、例えば、ストレージ装置10上にクライアント装置毎(またはクライアント装置を利用するユーザ毎)にディスクボリュームが用意されているようなシンクライアントシステムにおいても、クライアント装置毎(またはユーザ毎)にキャッシュデータの登録をクライアント装置側から中継装置30に要求することなく、各クライアント(またはユーザ)が利用できる形態でキャッシュデータを登録することができる。
一方、生成された識別子に対応するデータがキャッシュデータテーブル340に登録されていない場合(ステップ902のNO)、インデックス登録部320dは、キャッシュミスヒットの判定に用いられたキャッシュインデックステーブル330に、インデックス中の論理ブロックアドレスLBAに対応付けて登録されている識別子を例えば無効な値(null値)に置き換える(ステップ904)。これにより、以後、今回と同一の論理ブロックアドレスLBAへのアクセスが指定された場合にも、キャッシュミスヒットとなる。但し、キャッシュインデックステーブル330に、論理ブロックアドレスLBAに対応付けられた識別子が登録されていないならば、ステップ904は実行されずに、キャッシュインデックステーブルへの登録処理は終了する。
なお、読み込み対象データのデータ長Lが複数のキャッシュブロックのデータ長に等しい場合には、キャッシュヒット判定部320bは、ステップ802のキャッシュヒット判定処理を次のように実行すればよい。つまり、キャッシュヒット判定部320bは、論理ブロックアドレス及びデータ長Lで示されるデータ領域に対応するキャッシュインデックステーブル330の複数のエントリを参照して、その全てに識別子が登録されているかを判定すればよい。例えばデータ長Lが2aセクタであれば、キャッシュヒット判定部320bは、キャッシュインデックステーブル330のエントリのうち、論理ブロックアドレスLBAが保持されているエントリと、論理ブロックアドレス(LBA+1)が保持されているエントリとを参照すればよい。ここでは、参照された全てのエントリでキャッシュヒットが判定された場合だけ、全体としてキャッシュヒットが判定される。一方、1エントリでもキャッシュミスヒットが判定された場合には、全体としてキャッシュミスヒットが判定される。
以上、クライアント装置20からリード要求が送信された場合の中継装置30の動作について説明した。クライアント装置20からライト要求が送信された場合の中継装置30の動作については、データの転送方向がクライアント装置20からストレージ装置10になる点を除いて、リード要求の場合と同様となるため、説明を省略する。
[変形例]
次に上記実施形態の変形例について説明する。
この変形例はキャッシュ登録動作に関して上記実施形態と相違する。そこで本変形例が実施形態と相違する点の理解を用意するために、実施形態で適用された中継装置30のキャッシュ登録動作の概要を以下に示す。
中継装置30は、クライアント装置20からキャッシュ登録要求を受信すると(ステップ703)、当該クライアント装置20が接続しているストレージ装置10(のディスクボリューム100-1)に対してiSCSIセッションを確立する(ステップ704)。この状態で中継装置30は、ストレージ装置10からキャッシュ登録対象データを取得して(ステップ705,706)、キャッシュデータテーブル340に登録する(ステップ707,708)。そして中継装置30は、iSCSIセッションを閉じる(709)。このiSCSIセッションは、中継装置30が中継しているクライアント装置20とストレージ装置10との間のiSCSIセッションとは独立したものである。
次に、本変形例で適用される中継装置30のキャッシュ登録動作の手順について、実施形態と相違する点を中心に、図10のフローチャートを参照して説明する。なお、図10において、図7のフローチャートと同一部分には同一参照符号を付してある。
中継装置30のキャッシュ登録要求処理部370は、クライアント装置20のキャッシュ登録データ選択・要求送信部220からキャッシュ登録要求を受信すると(ステップ703)、セッション取得処理を行う(ステップA1)。このセッション取得処理により、キャッシュ登録要求処理部370は、中継装置30の中継部310が中継している、キャッシュ登録要求元のクライアント装置20とストレージ装置10との間のiSCSIセッション(通信)が存在する、そのiSCSIセッションを当該中継部310を介して取得する。セッション取得処理の詳細は後述する。
キャッシュ登録要求処理部370は、クライアント装置20とストレージ装置10との間のiSCSIセッションを取得すると、当該クライアント装置20からキャッシュ登録が要求されたキャッシュ登録対象データを読み込むためのリード命令を生成する(ステップA2)。そしてキャッシュ登録要求処理部370は、生成したリード命令を、先に取得したiSCSIセッションを利用して、中継部310を介してストレージ装置10に送信する(ステップA3)。ここで、リード命令の送信は、取得したiSCSIセッションで中継されているiSCSI−PDU間(通信の中)にリード命令を挿入することにより実現される。
キャッシュ登録要求処理部370は、リード命令の送信に応じてストレージ装置10から応答として返されるデータを中継部310を介して受信することにより、当該データをキャッシュ登録対象データとして取得する(ステップ706)。このストレージ装置10からの応答は、クライアント装置20には中継されない。
以降の動作は、上記実施形態と同様であり、キャッシュ登録対象データをキャッシュデータとしてキャッシュデータテーブル340に登録するための処理(ステップ707,708)が行われる。但し本変形例では、この処理の後に実施形態で行われていたステップ709は行われない。
次に、セッション取得処理(図10のステップA1)の手順について、図11のフローチャートを参照して説明する。
キャッシュ登録要求処理部370は、中継装置30の中継部310が中継している、キャッシュ登録要求元のクライアント装置20とストレージ装置10との間のiSCSIセッションがあるかをチェックする(ステップA11,A12)。もし、このようなiSCSIセッションが存在する(ステップA12のYES)、キャッシュ登録要求処理部370は当該iSCSIセッションを取得する(ステップA13)。
これに対し、上述のiSCSIセッションがないならば、キャッシュ登録要求処理部370は、クライアント装置20のキャッシュ登録データ選択・要求送信部220に対して、キャッシュ登録要求の実行未完了を通知するための応答を返す(ステップA14)。そしてキャッシュ登録要求処理部370は、上述のiSCSIセッションが確立されるのを待つ(ステップA15,A16)。もし、このiSCSIセッションが確立したならば(ステップA16のYES)、つまり、クライアント装置20とストレージ装置10との間の通信の中継が開始されたならば、キャッシュ登録要求処理部370は、例えば任意のタイミングで、そのiSCSIセッションを取得する(ステップA13)。
本変形例によれば、上記実施形態と同様の効果に加えて、以下に列挙する効果を得ることができる。
(1)キャッシュ登録のために、中継装置30が独自にiSCSIセッションを終端する必要がない。つまり中継装置30が、クライアント装置20に相当するイニシエータとしての動作(ストレージ装置10との間の通信プロトコル)を実装する必要がない。
(2)クライアント装置20がストレージ装置10のディスクボリューム100-iをリザーブしているときや、ストレージ装置10側の同時接続数制限により中継装置30からストレージ装置10に対して新たに接続できないときでも、中継装置30はストレージ装置10からキャッシュ登録用にデータを読み込むことができる。
(3)ストレージ装置10側でディスクボリューム100-iにアクセスするために認証を設けている場合、そのための管理が容易になる。その理由は次の通りである。まず実施形態では、キャッシュ登録のために中継装置30からストレージ装置10に対してiSCSIセッションを独立して確立するには、この認証を通過しなければならず、そのためには、中継装置30がクライアント装置20またはストレージ装置10と連携して、認証情報を管理しなければならない。これに対し変形例では、既に設定されているセッションに相乗りするために、このような管理は不要である。しかも変形例では、中継装置30の中継部310が中継中でない場合であっても、キャッシュ登録要求を非同期的に処理することができる。
なお、本発明は、上記実施形態またはその変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態またはその変形例に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態またはその変形例に示される全構成要素から幾つかの構成要素を削除してもよい。
10…ストレージ装置(第1の装置)、20…クライアント装置(第2の装置、第3の装置)、30…中継装置、100-1〜100-n…ディスクボリューム、210…ドライバ・ファイルシステム、211…ファイルシステム、220…キャッシュ登録データ選択・要求送信部、310…中継部、320…キャッシュ管理部、320a…キャッシュ登録部、320b…キャッシュヒット判定部、320c…中継制御部、320d…インデックス登録部、330…キャッシュインデックステーブル、340…キャッシュデータテーブル、350…キャッシュデータ格納部、360…識別子生成部、370…キャッシュ登録要求処理部(キャッシュ登録要求受信手段)、380…キャッシュ格納部。

Claims (9)

  1. データを格納する第1の装置と前記第1の装置に対して読み書きアクセスを行う第2の装置との間のデータ転送のための通信を中継する中継装置において、
    前記第1の装置に格納されているデータを、当該データの内容に対応する識別子に対応付けて格納するためのキャッシュ格納手段と、
    前記キャッシュ格納手段に格納されるデータの内容に対応する識別子を、前記第1の装置における当該データを指定するインデックスに対応付けて保持するためのキャッシュインデックステーブルと、
    第3の装置から送信される、インデックスを含むキャッシュ登録要求を受信するキャッシュ登録要求受信手段と、
    前記第1の装置と前記第2の装置との間のデータ転送のための通信を中継する中継手段であって、前記キャッシュ登録要求受信手段が前記キャッシュ登録要求を受信した第1の場合、当該キャッシュ登録要求に含まれているインデックスの指定する第1のデータを前記第1の装置から読み込み、前記第2の装置から前記第1の装置に読み書きアクセスするためのインデックスを含む読み書き要求を受信した第2の場合には、当該読み書き要求に含まれているインデックスに対応する第2のデータを前記第2の装置との間で入出力する中継手段と、
    要求されたデータの内容に対応する識別子を生成する識別子生成手段と、
    前記第1の場合、前記第1のデータの内容に対応する識別子を前記識別子生成手段により生成させ、前記第1のデータを前記生成された識別子に対応付けて前記キャッシュ格納手段に格納し、且つ前記生成された識別子を、前記第1のデータを指定するインデックスに対応付けて前記キャッシュインデックステーブルに登録するキャッシュ登録手段と、
    前記第2の場合、前記読み書き要求に含まれている前記インデックスに対応付けて前記キャッシュインデックステーブルに識別子が登録され、且つ当該識別子と同一の識別子が前記キャッシュ格納手段に登録されているかによって、キャッシュヒットであるかを判定するキャッシュヒット判定手段と、
    キャッシュヒットでないと判定された場合、前記読み書き要求を前記中継手段により前記第1の装置に中継させることによって、前記読み書き要求に含まれている前記インデックスの指定する前記第2のデータを前記中継手段に取得させて前記中継手段により前記第2の装置に中継させる中継制御手段と、
    前記中継手段によって中継される前記第2のデータの内容に対応する識別子を前記識別子生成手段により生成させ、当該生成された識別子に対応付けて前記キャッシュ格納手段に前記第2のデータと同一のデータが格納されている場合、当該生成された識別子を、前記読み書き要求に含まれている前記インデックスに対応付けて前記キャッシュインデックステーブルに登録するインデックス登録手段と
    を具備することを特徴とする中継装置。
  2. 前記キャッシュ格納手段は、
    前記第1の装置に格納されているデータを格納するためのキャッシュデータ格納手段と、
    前記キャッシュデータ格納手段に格納されるデータの内容に対応する識別子に対応付けて当該データの前記キャッシュデータ格納手段における格納位置を示す格納位置情報を保持するためのキャッシュデータテーブルとから構成され、
    前記キャッシュ登録手段は、前記第1のデータを前記キャッシュデータ格納手段に格納し、前記第1のデータの前記キャッシュデータ格納手段における格納位置を示す格納位置情報を前記第1のデータの内容に対応する前記生成された識別子に対応付けて前記キャッシュデータテーブルに登録することにより、前記第1のデータを前記生成された識別子に対応付けて前記キャッシュ格納手段に格納する
    ことを特徴とする請求項1記載の中継装置。
  3. 前記受信されたキャッシュ登録要求に含まれているインデックスの指定する前記第1のデータを前記第1の装置から読み込むためのリード命令を生成し、前記中継手段が中継している前記第1の装置と前記第2の装置との間の通信の中に、当該生成したリード命令を挿入させるキャッシュ登録要求処理手段を更に具備することを特徴とする請求項1または2に記載の中継装置。
  4. 前記キャッシュ登録要求処理手段は、前記キャッシュ登録要求が受信された際に前記中継手段が前記第1の装置と前記第2の装置との間の通信を中継していない場合、前記第3の装置に対して前記キャッシュ登録要求の実行未完了を通知するための応答を返し、当該通信の中継の開始後に当該通信の中に前記リード命令を挿入させることを特徴とする請求項3記載の中継装置。
  5. 前記第2の装置は、前記第3の装置を含むことを特徴とする請求項1乃至4のいずれかに記載の中継装置。
  6. データを格納する第1の装置と前記第1の装置に対して読み書きアクセスを行う第2の装置との間のデータ転送のための通信を中継する、キャッシュ格納手段及びキャッシュインデックステーブルを備えた中継装置によって実行される同装置にキャッシュデータを登録するための方法であって、
    第3の装置から前記中継装置に前記第1の装置に格納されている第1のデータを指定するインデックスを含むキャッシュ登録要求が送信された場合、当該キャッシュ登録要求を受信するステップと、
    前記受信されたキャッシュ登録要求に含まれているインデックスの指定する前記第1のデータを前記第1の装置から読み込むステップと、
    前記読み込まれた第1のデータの内容に対応する識別子を生成する第1の識別子生成ステップと、
    前記読み込まれた第1のデータを、前記第1の識別子生成ステップで生成された識別子に対応付けて前記キャッシュ格納手段に格納し、且つ前記生成された識別子を、前記第1のデータを指定するインデックスに対応付けて前記キャッシュインデックステーブルに登録するキャッシュ登録ステップと、
    前記第2の装置から前記第1の装置に読み書きアクセスするためのインデックスを含む読み書き要求が前記中継装置に送信された場合、前記読み書き要求を受信するステップと、
    前記読み書き要求に含まれている前記インデックスに対応付けて前記キャッシュインデックステーブルに識別子が登録され、且つ当該識別子と同一の識別子が前記キャッシュ格納手段に登録されているかによって、キャッシュヒットであるかを判定するステップと、
    キャッシュヒットでないと判定された場合、前記読み書き要求を前記第1の装置に中継することにより、前記読み書き要求に含まれている前記インデックスの指定する第2のデータを前記第1の装置から取得するステップと、
    前記取得された第2のデータを前記第2の装置に中継するステップと、
    前記第2のデータの内容に対応する識別子を生成する第2の識別子生成ステップと、
    前記第2の識別子ステップで生成された識別子に対応付けて前記キャッシュ格納手段に前記第2のデータと同一のデータが格納されている場合、当該生成された識別子を、前記読み書き要求に含まれている前記インデックスに対応付けて前記キャッシュインデックステーブルに登録するステップと
    を具備することを特徴とする中継装置にキャッシュデータを登録するための方法。
  7. 前記キャッシュ格納手段は、
    前記第1の装置に格納されているデータを格納するためのキャッシュデータ格納手段と、
    前記キャッシュデータ格納手段に格納されるデータの内容に対応する識別子に対応付けて当該データの前記キャッシュデータ格納手段における格納位置を示す格納位置情報を保持するためのキャッシュデータテーブルとから構成され、
    前記キャッシュ登録ステップは、
    前記第1のデータを前記キャッシュデータ格納手段に格納するステップと、
    前記第1のデータの前記キャッシュデータ格納手段における格納位置を示す格納位置情報を前記第1の識別子生成ステップで生成された識別子に対応付けて前記キャッシュデータテーブルに登録するステップとを含む
    ことを特徴とする請求項6記載の中継装置にキャッシュデータを登録するための方法。
  8. 前記読み込むステップは、
    前記受信されたキャッシュ登録要求に含まれているインデックスの指定する前記第1のデータを前記第1の装置から読み込むためのリード命令を生成するステップと、
    前記生成されたリード命令を、前記中継手段が中継している前記第1の装置と前記第2の装置との間の通信の中に挿入するステップと
    を含むことを特徴とする請求項6または7に記載の中継装置にキャッシュデータを登録するための方法。
  9. 前記読み込むステップは、前記キャッシュ登録要求が受信された際に前記中継装置が前記第1の装置と前記第2の装置との間の通信を中継していない場合、前記第3の装置に対して前記キャッシュ登録要求の実行未完了通知するための応答を返すステップを更に含み、
    前記実行未完了を示す応答が返された場合、前記挿入するステップが、前記通信の中継の開始後に実行される
    ことを特徴とする請求項8記載の中継装置にキャッシュデータを登録するための方法。
JP2009058051A 2009-03-11 2009-03-11 中継装置及び同装置にキャッシュデータを登録するための方法 Expired - Fee Related JP4818383B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009058051A JP4818383B2 (ja) 2009-03-11 2009-03-11 中継装置及び同装置にキャッシュデータを登録するための方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009058051A JP4818383B2 (ja) 2009-03-11 2009-03-11 中継装置及び同装置にキャッシュデータを登録するための方法

Publications (2)

Publication Number Publication Date
JP2010211607A true JP2010211607A (ja) 2010-09-24
JP4818383B2 JP4818383B2 (ja) 2011-11-16

Family

ID=42971676

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009058051A Expired - Fee Related JP4818383B2 (ja) 2009-03-11 2009-03-11 中継装置及び同装置にキャッシュデータを登録するための方法

Country Status (1)

Country Link
JP (1) JP4818383B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004005289A (ja) * 2002-06-03 2004-01-08 Hitachi Ltd 記憶装置システム
JP2004287476A (ja) * 2003-03-19 2004-10-14 Hitachi Ltd ノード装置におけるキャッシュ制御
JP2009026141A (ja) * 2007-07-20 2009-02-05 Toshiba Corp キャッシュ方法及びキャッシュ装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004005289A (ja) * 2002-06-03 2004-01-08 Hitachi Ltd 記憶装置システム
JP2004287476A (ja) * 2003-03-19 2004-10-14 Hitachi Ltd ノード装置におけるキャッシュ制御
JP2009026141A (ja) * 2007-07-20 2009-02-05 Toshiba Corp キャッシュ方法及びキャッシュ装置

Also Published As

Publication number Publication date
JP4818383B2 (ja) 2011-11-16

Similar Documents

Publication Publication Date Title
JP4405533B2 (ja) キャッシュ方法及びキャッシュ装置
JP4824085B2 (ja) ネットワークファイルシステムをキャッシュするシステム、及び方法
JP4278445B2 (ja) ネットワークシステム及びスイッチ
US11287994B2 (en) Native key-value storage enabled distributed storage system
JP2008511881A (ja) インスタントメッセージングプラットフォームに基づきオンラインファイルストレージを実現する通信システム及び方法
JP2013539119A (ja) オフロード・リードおよびライト
JP5859417B2 (ja) メタデータサーバとデータサーバとの間でaclの一貫性を維持する方法および装置
JP2008234568A (ja) ファイルレベルの仮想化を行う中間装置
JP4175379B2 (ja) ファイル共有方法およびファイル共有システム
US9996422B2 (en) Methods and systems for a copy-offload operation
JP4607937B2 (ja) キャッシュ方法及びキャッシュ装置
JP2004334481A (ja) 仮想化情報管理装置
JP4345309B2 (ja) ネットワークストレージ装置
JP4247975B2 (ja) データ管理方法、データ管理システム、およびそのためのプログラムならびに記録媒体
JP3848268B2 (ja) 計算機システム、計算機装置、計算機システムにおけるデータアクセス方法及びプログラム
JP2009064055A (ja) 計算機システム及びセキュリティ管理方法
JP7071938B2 (ja) データベース管理サービス提供システム
JP4818383B2 (ja) 中継装置及び同装置にキャッシュデータを登録するための方法
US20190121899A1 (en) Apparatus and method for managing integrated storage
JP4607936B2 (ja) データ転送方法及びデータ転送システム
JP6958928B2 (ja) ストレージ装置、ストレージ管理方法、及びプログラム
JP2014235531A (ja) データ転送装置、データ転送システム、およびプログラム
WO2022121385A1 (zh) 一种文件访问方法、存储节点以及网卡
TWI769796B (zh) 利用索引物件來進行簡易儲存服務無縫遷移的方法、主裝置以及儲存伺服器
US20240004575A1 (en) Storage system and data management method of storage system

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110428

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110510

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110708

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110802

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110830

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140909

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees