JP7473600B2 - ストレージシステム、データ送信方法およびネットワークインタフェース - Google Patents
ストレージシステム、データ送信方法およびネットワークインタフェース Download PDFInfo
- Publication number
- JP7473600B2 JP7473600B2 JP2022113983A JP2022113983A JP7473600B2 JP 7473600 B2 JP7473600 B2 JP 7473600B2 JP 2022113983 A JP2022113983 A JP 2022113983A JP 2022113983 A JP2022113983 A JP 2022113983A JP 7473600 B2 JP7473600 B2 JP 7473600B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- network interface
- write
- host
- storage
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 112
- 230000005540 biological transmission Effects 0.000 title claims description 33
- 238000012546 transfer Methods 0.000 claims description 239
- 238000012545 processing Methods 0.000 claims description 195
- 230000004044 response Effects 0.000 claims description 61
- 239000000872 buffer Substances 0.000 description 130
- 239000003999 initiator Substances 0.000 description 37
- 238000010586 diagram Methods 0.000 description 32
- 238000004891 communication Methods 0.000 description 21
- 230000010365 information processing Effects 0.000 description 18
- 238000007726 management method Methods 0.000 description 16
- 238000012423 maintenance Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 230000007704 transition Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 3
- 238000007796 conventional method Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001152 differential interference contrast microscopy Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000007616 round robin method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000013403 standard screening design Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
本発明は、ストレージシステム、データ送信方法、ネットワークインタフェースに関する。
情報処理システムは、例えば、ユーザアプリケーション等が動作するサーバシステムと、保存するデータの管理、信頼性を向上させるストレージコントローラと、サーバシステムで利用するデータを格納、保持するドライブが複数格納されたドライブボックスと、で構成される。
情報処理システムは、サーバシステムからの要求を受信し、例えば、ライト要求の場合、サーバシステムがライトデータをストレージコントローラに転送し、ストレージコントローラがドライブボックス内のドライブにライトデータを格納する。
特許文献1では、Immediate Dataのバッファ制御について開示されている。ここでは、ストレージコントローラメモリに、予めImmediate Data用のバッファを割り当て、これを、ネットワークI/Fとドライバ層とで排他制御して利用する。
特許文献2では、iSCSIのハードウェアオフロードについて開示されている。ここでは、ダイジェスト処理、データ・コピー操作、およびS/Gリストを使った大規模なPDU伝送のオフロードについて記載されている。なお、Immediate Dataのバッファは、ストレージメモリを利用する。
特許文献2では、iSCSIのハードウェアオフロードについて開示されている。ここでは、ダイジェスト処理、データ・コピー操作、およびS/Gリストを使った大規模なPDU伝送のオフロードについて記載されている。なお、Immediate Dataのバッファは、ストレージメモリを利用する。
従来技術として、以下の手順でライトデータの転送を行う方法が知られている。つまり、まず、サーバシステム等のイニシエータが、ストレージコントローラ等のターゲットにライトコマンドを発行する。次に、ターゲット側でライトデータを受けるためのメモリ領域を確保してから、それをイニシエータに伝えるために、ターゲットが、Ready to Transfer(R2T)コマンドを発行する。その後、イニシエータが、ターゲットにライトデータを転送する。そして、ライトデータの転送が完了すると、ターゲットは、イニシエータにライトレスポンスを送信する。
しかし、この方法では、ライトコマンドを送った後にライトデータを別のPDU(protocol Data UNIT:プロトコルデータユニット)で送ることになり、以下の問題が生じる。つまり、イニシエータとターゲット間の距離が長いとレスポンスタイムが往復倍されてしまう。また、ライトコマンド、Ready to Transfer、ライトデータおよびライトレスポンスのパケット処理について、CPU負荷やメモリアクセス負荷が大きい。
これに対して、予めターゲット側に十分なメモリを用意して、イニシエータが、ライトコマンドとライトデータとをともに送るImmediate Data転送が知られている。
しかし、Immediate Data転送でも、ライトコマンド、Ready to Transfer、ライトデータおよびライトレスポンスのパケット処理のうち、一部分の負荷しか削減されない。具体的には、Ready to Transferのパケット処理およびライトデータのパケット処理の一部分に対するCPU負荷およびメモリアクセス負荷しか削減されない。
本発明は、ターゲットのCPU負荷およびメモリアクセス負荷を低減させることができるストレージシステム、データ送信方法、ネットワークインタフェースを提供することを目的とする。
しかし、この方法では、ライトコマンドを送った後にライトデータを別のPDU(protocol Data UNIT:プロトコルデータユニット)で送ることになり、以下の問題が生じる。つまり、イニシエータとターゲット間の距離が長いとレスポンスタイムが往復倍されてしまう。また、ライトコマンド、Ready to Transfer、ライトデータおよびライトレスポンスのパケット処理について、CPU負荷やメモリアクセス負荷が大きい。
これに対して、予めターゲット側に十分なメモリを用意して、イニシエータが、ライトコマンドとライトデータとをともに送るImmediate Data転送が知られている。
しかし、Immediate Data転送でも、ライトコマンド、Ready to Transfer、ライトデータおよびライトレスポンスのパケット処理のうち、一部分の負荷しか削減されない。具体的には、Ready to Transferのパケット処理およびライトデータのパケット処理の一部分に対するCPU負荷およびメモリアクセス負荷しか削減されない。
本発明は、ターゲットのCPU負荷およびメモリアクセス負荷を低減させることができるストレージシステム、データ送信方法、ネットワークインタフェースを提供することを目的とする。
上記の課題を解決するため本発明は、データを格納するストレージドライブと、プロセッサ及びキャッシュメモリを備え、ストレージドライブに入出力するデータを処理するストレージコントローラと、を備えたストレージシステムにおいて、プロセッサを備えたネットワークインタフェースを備え、ライト要求を受信した場合に、ネットワークインタフェースは、ライト要求のプロトコル処理を行うとともに、ストレージコントローラにライトコマンドを転送し、ストレージコントローラは、ネットワークインタフェースからライトコマンドを受信して、キャッシュメモリにデータ格納用の記憶領域を確保して、ネットワークインタフェースに、データ転送要求を送信し、ネットワークインタフェースは、ストレージコントローラからデータ転送要求を受信して、確保されたキャッシュメモリ上の記憶領域にライト要求にかかるデータを格納して、ストレージコントローラは、キャッシュメモリに格納されたライト処理にかかるデータを所定の処理をして、ネットワークインタフェースにライト応答を転送し、ネットワークインタフェースは、ストレージコントローラからライト応答を受信し、プロトコル処理を行ってライト要求の要求元に応答するストレージシステムである。
ここで、ネットワークインタフェースはメモリを有し、ネットワークインタフェースは、ライト要求とともにデータを受信してネットワークインタフェースのメモリに格納し、データ転送要求を受信してメモリに格納したデータをキャッシュメモリに格納することができる。この場合、スマートネットワークインタフェースカードに備えられるメモリを、バッファとして活用できる。
また、ライト要求は、Immediate Data転送に基づいて、ライトデータとともに送信されることができる。この場合、ライトデータを転送する際の転送速度が向上する。
さらに、ストレージコントローラは、Immediate Data転送に対応していない場合とすることができる。この場合、ストレージコントローラが、Immediate Data転送に対応していないときでもImmediate Data転送を行うことができる。
そして、ライト要求は、InitialR2T無効転送に基づいて、最初のR2Tなしのデータ送信に対応するようにできる。この場合、最初のR2Tを省略できる。
また、ストレージコントローラは、InitialR2T有効転送に対応するようにできる。この場合、Immediate Data転送でない通常の転送方式でもデータ転送を行うことができる。
さらに、ストレージコントローラは、所定の処理として、キャッシュメモリに格納されたデータの不揮発化、二重化、またはストレージドライブ格納のいずれかを行った場合に、ライト応答を転送することができる。この場合、より確実にデータ転送を行うことができる。
また、ライト要求は、Immediate Data転送に基づいて、ライトデータとともに送信されることができる。この場合、ライトデータを転送する際の転送速度が向上する。
さらに、ストレージコントローラは、Immediate Data転送に対応していない場合とすることができる。この場合、ストレージコントローラが、Immediate Data転送に対応していないときでもImmediate Data転送を行うことができる。
そして、ライト要求は、InitialR2T無効転送に基づいて、最初のR2Tなしのデータ送信に対応するようにできる。この場合、最初のR2Tを省略できる。
また、ストレージコントローラは、InitialR2T有効転送に対応するようにできる。この場合、Immediate Data転送でない通常の転送方式でもデータ転送を行うことができる。
さらに、ストレージコントローラは、所定の処理として、キャッシュメモリに格納されたデータの不揮発化、二重化、またはストレージドライブ格納のいずれかを行った場合に、ライト応答を転送することができる。この場合、より確実にデータ転送を行うことができる。
また、本発明は、データを格納するストレージドライブと、プロセッサ及びキャッシュメモリを備え、ストレージドライブに入出力するデータを処理するストレージコントローラと、プロセッサを備えたネットワークインタフェースと、を備えたストレージシステムにおけるデータ送信方法であり、ネットワークインタフェースが、ライト要求を受信した場合に、ネットワークインタフェースは、ライト要求のプロトコル処理を行うとともに、ストレージコントローラにライトコマンドを転送し、ストレージコントローラは、ネットワークインタフェースからライトコマンドを受信して、キャッシュメモリにデータ格納用の記憶領域を確保して、ネットワークインタフェースに、データ転送要求を送信し、ネットワークインタフェースは、ストレージコントローラからデータ転送要求を受信して、確保されたキャッシュメモリ上の記憶領域にライト要求にかかるデータを格納して、ストレージコントローラは、キャッシュメモリに格納されたライト処理にかかるデータを所定の処理をして、ネットワークインタフェースにライト応答を転送し、ネットワークインタフェースは、ストレージコントローラからライト応答を受信し、プロトコル処理を行ってライト要求の要求元に応答するデータ送信方法である。
さらに、本発明は、プロセッサとメモリとを備え、ネットワークに接続されたネットワークインタフェースにおいて、ネットワークを介してデータを含むライト要求を受信した場合に、メモリにデータを格納するとともに、ライト要求のターゲットにデータを含まないライト要求を転送し、ターゲットからデータ転送要求を受信した場合に、メモリに格納したデータを、データ転送要求が指定する記憶領域に格納するネットワークインタフェースである。
ここで、データを含むライト要求を受信した場合に、プロトコル処理を行って、データを含まないライト要求を転送することができる。この場合、ターゲットのCPU負荷およびメモリアクセス負荷がさらに軽減する。
本発明によれば、ターゲットのCPU負荷およびメモリアクセス負荷を低減させることができるストレージシステム、データ送信方法、ネットワークインタフェースを提供することができる。
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。なお、以下の記載および図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略および簡略化がなされており、本発明は、他の種々の形態でも実施する事が可能であり、特に限定しない限り、各構成要素は単数でも複数でも構わない。
また、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、実施形態の中で説明されている要素の組み合わせの全てが、発明の解決手段に必須であるとは限らない。
以下の説明では、「テーブル」、「リスト」、「キュー」等の表現にて各種情報を説明することがあるが、各種情報は、これら以外のデータ構造で表現されていてもよく、データ構造に依存しないことを示すため、「xxxのテーブル」、「xxxのリスト」、「xxxのキュー」等を「xxx情報」等と称することがある。以下の説明では、識別情報について説明する際に、「識別情報」、「ID」等の表現を用いるが、これらについてはお互いに置換が可能である。
以下の説明では、同一あるいは同様な機能を有する構成要素が複数ある場合には、基本的に同一の符号を付して説明するが、機能が同じであっても機能を実現するための手段が異なる場合がある。さらに、後述する実施形態は、汎用コンピュータ上で稼動するソフトウェアで実装してもよいし、専用ハードウェア又はソフトウェアとハードウェアの組み合わせで実装してもよい。
また、以下の説明では「プログラム」を主語として処理を説明することがあるが、プログラムはプロセッサ(例えば、CPU:Central Processing Unit)によって実行されることによって、定められた処理に対して、適宜に記憶資源(例えば、メモリ)、および/または、インタフェースデバイス(通信ポート)等を用いながら行うため、処理の主体がプロセッサであるとしてもよい。
プログラムを主語として説明された処理は、プロセッサを有する計算機(例えば、計算ホスト、ストレージ装置)が行う処理としてもよい。また、以下の説明では、「コントローラ」の表現で、プロセッサ又はプロセッサが行う処理の一部又は全部を行うハードウェア回路を指してもよい。
プログラムは、プログラムソース(例えば、プログラム配布サーバや、計算機が読み取り可能な記憶メディア)から、各計算機にインストールされてもよく、この場合、プログラム配布サーバは、プロセッサと記憶資源を含み、記憶資源はさらに配布プログラムと配布対象であるプログラムを記憶し、配布プログラムをプロセッサが実行することで、プログラム配布サーバのプロセッサは、配布対象のプログラムを他の計算機に配布してもよい。
また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
また、以下の説明において、記憶ドライブ又は単にドライブ(ストレージ)は、物理的な記憶デバイスを意味し、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でもよい。ドライブは、例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive)でもよい。情報処理システムに異なる種類のドライブが混在していてもよい。
また、以下の説明において、「RAID」は、Redundant Array of Inexpensive Disksの略である。RAIDグループは、複数のドライブ(典型的には同種のドライブ)で構成され、そのRAIDグループに関連付けられたRAIDレベルに従いデータを記憶する。RAIDグループは、パリティグループと呼ばれてもよい。パリティグループは、例えば、パリティを格納するRAIDグループのことでよい。
本明細書の一実施形態のネットワークインタフェース装置(以下、単にネットワークインタフェースとも呼ぶ)は、サーバシステム及びストレージシステムを含む情報処理システムに実装され得る。ストレージシステムは、ストレージコントローラ、及びドライブボックスを含むことができる。ネットワークインタフェースは、例えば、汎用プロセッサ、メモリ、ネットワークコントローラ、及びホストシステムとのインタフェースを含むことができる。
<情報処理システム1の全体説明>
図1は、本発明の一実施形態にかかる情報処理システム1の構成例を示す図である。
情報処理システム1は、1または複数のサーバシステム100と、ストレージシステムSと、を含む。
ストレージシステムSは、1又は複数のストレージ装置101と、1または複数のドライブボックス105と、を含む。
図1は、本発明の一実施形態にかかる情報処理システム1の構成例を示す図である。
情報処理システム1は、1または複数のサーバシステム100と、ストレージシステムSと、を含む。
ストレージシステムSは、1又は複数のストレージ装置101と、1または複数のドライブボックス105と、を含む。
ストレージ装置101は、1または複数のストレージコントローラ102を含む。図1の構成例では、各ストレージ装置101は、2つのストレージコントローラ102を含む。ストレージコントローラ102は、フロントエンドネットワーク106を介して、1または複数のサーバシステム100に接続されている。
ドライブボックス105は、データを格納するストレージドライブの一例である。ドライブボックス105は、1または複数のドライブを搭載し、1または複数のストレージコントローラ102とバックエンドネットワーク107を介して接続される。また、ストレージコントローラ102は、近距離にある別のストレージコントローラ102とストレージコントローラ間ネットワーク108を介して接続するともに、中、遠距離にある別のストレージコントローラ102と外部ネットワーク109を介して接続する。
サーバシステム100は、ユーザアプリケーション等が動作するホストマシンであり、1又は複数のプロセッサを有し、メモリ、補助記憶装置の1又は複数の記憶装置を含んで構成される。サーバシステム100は、例えば、データベースやWebサービスが動作する。そして、サーバシステム100は、それらにより作られたデータを、ストレージコントローラ102にライト及びリードする。また、サーバシステム100には、ストレージコントローラ102とフロントエンドネットワーク106を介して接続し、そのインタフェース装置としてネットワークインタフェース104が搭載される。サーバシステム100は、複数のサーバ群で構成されてもよく、それぞれにネットワークインタフェース104を持ち、ストレージコントローラ102や他のサーバシステム100と接続してもよい。
サーバシステム100にストレージとしての機能を提供するため、ストレージ装置101内の2つのストレージコントローラ102は、冗長化されたコントローラを構成する。ストレージコントローラ102は、それぞれ、1又は複数のプロセッサ及び1又は複数の記憶装置を備える。ストレージ装置101内のストレージコントローラ102は同じ構成を有する。
ストレージコントローラ102は、それぞれ、1又は複数のプロセッサを有し、各プロセッサのコアは、サーバシステム100からのリードコマンドやライトコマンドに応じて、対応するドライブボックス105に格納されたデータを転送指示する。ストレージコントローラ102は、ライトデータをストレージに保存するときの管理を行う、と言うこともできる。
ストレージコントローラ102のメモリは、例えば、SDRAM(Synchronous Dynamic Random Access Memory)等の半導体メモリで構成される。メモリは、揮発メモリとSCM(Storage Class Memory)などの不揮発メモリと組み合わせて構成してもよい。
ストレージコントローラ102のメモリは、例えば、SDRAM(Synchronous Dynamic Random Access Memory)等の半導体メモリで構成される。メモリは、揮発メモリとSCM(Storage Class Memory)などの不揮発メモリと組み合わせて構成してもよい。
メモリは、プロセッサの主記憶として、実行プログラム(ストレージ制御プログラム等)や、プロセッサが参照する管理テーブル等を格納する。また、メモリは、ストレージコントローラ102のディスクキャッシュ(キャッシュメモリ)としても使用される。
ストレージコントローラ102は、サーバシステム100に対するインタフェース装置としてネットワークインタフェース104が搭載される。
さらに、ストレージコントローラ102には、ドライブボックス105に対するインタフェース装置としてネットワークインタフェース104が搭載される。このネットワークインタフェース104は、サーバシステム100から指示されたデータ転送や、データコピー等のストレージ処理にかかる処理に関する情報を、ドライブボックス105と通信するのに使用される。
ストレージコントローラ102は、サーバシステム100に対するインタフェース装置としてネットワークインタフェース104が搭載される。
さらに、ストレージコントローラ102には、ドライブボックス105に対するインタフェース装置としてネットワークインタフェース104が搭載される。このネットワークインタフェース104は、サーバシステム100から指示されたデータ転送や、データコピー等のストレージ処理にかかる処理に関する情報を、ドライブボックス105と通信するのに使用される。
ドライブボックス105は、SSDやHDD等のドライブを複数搭載し、それら複数ドライブとストレージコントローラ102を接続するために、内部スイッチ、並びに、転送処理に利用するプロセッサ及びメモリを含む。サーバシステム100にて生成されたデータを、ストレージコントローラ102を介して受信し、格納、保持する。
ドライブボックス105は保持しているデータの可用性を確保するために、内蔵されているドライブ間でRAIDを組んでもよいし、複数のドライブボックス105間でRAIDを組んでもよい。また、ドライブボックス105は、ストレージコントローラ102とバックエンドネットワーク107を介して接続し、そのインタフェース装置としてネットワークインタフェース104が搭載される。
このように、ネットワークインタフェース104は、サーバシステム100、ストレージコントローラ102、及びドライブボックス105のそれぞれに搭載され、各種装置と各種ネットワークとの接続インタフェースとなる装置である。また、ネットワークインタフェース104は、ネットワーク(この場合、フロントエンドネットワーク106やバックエンドネットワーク107)を介し、各種装置を接続(この場合、例えば、サーバシステム100とストレージコントローラ102とを接続、あるいはストレージコントローラ102とドライブボックス105とを接続)するインタフェース装置である、と言うこともできる。
ネットワークインタフェース104は、例えば、SmartNIC(スマートNIC(Network Interface Card:ネットワークインタフェースカード))にすることができる。SmartNICは、汎用のプロセッサやメモリを内蔵し、オペレーティングシステムを動作させて、そのうえでソフトウェアを動かし、ネットワークプロトコルの処理を行うアダプタ回路基板である。SmartNICでは、例えば、サーバシステム100上で動くものと同じオペレーティングシステムを動作させることができ、そこで利用されているソフトウェアプロトコルスタックや、アプリケーション等を動作させることができる。そして、汎用のプロセッサとメモリを搭載したSmartNICを用いて、プロトコル処理をソフトウェア実装することで、複数のプロトコルに柔軟に対応することができる。即ち、種々のプロトコルを扱うのが、より容易になる。さらにこれを実現しつつ、プロトコル処理負荷を、ストレージコントローラ102からネットワークインタフェース104にオフロードすることができる。
SmartNICの各種機能は、一部ハードウェアオフロードエンジンを用いて実施されてもよい。また、SmartNICは、FPGA(Field Programmable Gate Array)を用いた構成でもよく、その場合は、各機能はFGPA上で実現される。さらに、その他の形態として、SmartNICは、全体がハードウェア実装された専用インタフェースハードウェアとしての構成であってもよい。
なお、ネットワークインタフェース104の詳細は、後述する。
なお、ネットワークインタフェース104の詳細は、後述する。
フロントエンドネットワーク106は、ストレージコントローラ102とサーバシステム100の間を接続するストレージエリアネットワークである。フロントエンドネットワーク106としては、例えば、iSCSI(Internet Small Computer System Interface)、NVMe-oF(NVMe over Fabrics)等のIPネットワークを利用することができる。
バックエンドネットワーク107は、ストレージコントローラ102とドライブボックス105の間を接続するネットワークである。バックエンドネットワーク107としては、例えば、iSCSI、NVMe-oF等のIPネットワークを利用することができる。また、IPネットワークでなく、SAS(Serial Attached SCSI)や、NVMe(Non-Volatile Memory Express)でもよい。
バックエンドネットワーク107は、ストレージコントローラ102とドライブボックス105の間を接続するネットワークである。バックエンドネットワーク107としては、例えば、iSCSI、NVMe-oF等のIPネットワークを利用することができる。また、IPネットワークでなく、SAS(Serial Attached SCSI)や、NVMe(Non-Volatile Memory Express)でもよい。
ストレージコントローラ間ネットワーク108は、ストレージコントローラ102の冗長化のために利用するネットワークであり、広帯域のインタコネクトで構成される。ストレージコントローラ間ネットワーク108を使って、ライトデータの2重化やメタデータの共有等を行うことができる。そして、2つのストレージコントローラ102のうち、一方のストレージコントローラ102が保守や障害等で閉塞しても、もう一方のストレージコントローラ102により、ストレージ処理を継続可能となる。
外部ネットワーク109は、Wide Area Network(WAN)、または、Local Area Network(LAN)である。外部ネットワーク109は、例えば、データリンク層がイーサネット(登録商標)、インターネット層がインターネットプロトコル、トランスポート層がTCP、または、UDP等のネットワークで、iSCSIやNVMe-oFのProtocol Data Unit(PDU)を用いた通信を行う。外部ネットワーク109は、インターネット回線又は専用回線の形態をとることができる。なお、外部ネットワーク109は、距離に応じて、通信遅延が大きくなることがある。このとき、ネットワーク機器を、ロスレス機器のみで構成しない場合、上記回線種によって発生率は異なるが、パケットロスの発生が想定される。
なお、情報処理システム1、ストレージシステムSは、ここで示したもの以外も含んでよい。例えば、各ネットワークには、スイッチやルータ等のネットワーク機器が間に接続されてもよいし、監視や保守のための装置が接続されてもよい。また、パブリッククラウド上のストレージサービスに外部ネットワーク109を経由して接続する構成でもよい。
サーバシステム100のネットワークインタフェース104は、ストレージコントローラ102を介してドライブボックス105のデータを読み書きするために、iSCSIやNVMe-oFにおけるイニシエータソフトウェアを持つ。これに対して、ストレージコントローラ102のサーバシステム100側のネットワークインタフェース104は、ターゲットソフトウェアを持つ。
ストレージコントローラ102のドライブボックス105側のネットワークインタフェース104は、ドライブボックス105のデータを読み書きするために、iSCSIやNVMe-oFにおけるイニシエータソフトウェアを持つ。これに対して、ドライブボックス105のネットワークインタフェース104はターゲットソフトウェアを持つ。
さらに、ストレージコントローラ102のネットワークインタフェース104は、ほかのストレージ装置101のデータを読み書きするために、iSCSIやNVMe-oFにおけるイニシエータソフトウェアを持つ。これに対して他のストレージ装置101のネットワークインタフェース104は、ターゲットソフトウェアを持つ。
なお、ネットワークインタフェース104の一部は、SmartNICの機能性を持たないNICでもよい。例えば、サーバシステム100内のネットワークインタフェース104はNICとし、イニシエータとして動作させ、ストレージコントローラ102内のネットワークインタフェース104はSmartNICとし、ターゲットとして動作させる構成などがある。また、ストレージコントローラ102内のバックエンドネットワーク107につながるネットワークインタフェース104の一部を、SmartNICの機能を持たないDKB(DisK Board)とし、SAS(Serial Attached SCSI)や、NVMe(Non-Volatile Memory Express)でドライブボックス105にアクセス動作させてもよい。
<ネットワークインタフェース104の詳細説明>
次に、ネットワークインタフェース104について、より詳細に説明を行う。
図2は、本発明の一実施形態にかかるネットワークインタフェース104のハードウェア構成例を示す図である。
ネットワークインタフェース104は、ホストバス201を介して、ネットワークインタフェース104を搭載する他の機器と接続される。この機器は、例えば、ストレージコントローラ102やサーバシステム100の内部構成やドライブボックス105等である。ネットワークインタフェース104は、ネットワークパス200を介して、例えばIPネットワーク接続で他の機器と接続する。
次に、ネットワークインタフェース104について、より詳細に説明を行う。
図2は、本発明の一実施形態にかかるネットワークインタフェース104のハードウェア構成例を示す図である。
ネットワークインタフェース104は、ホストバス201を介して、ネットワークインタフェース104を搭載する他の機器と接続される。この機器は、例えば、ストレージコントローラ102やサーバシステム100の内部構成やドライブボックス105等である。ネットワークインタフェース104は、ネットワークパス200を介して、例えばIPネットワーク接続で他の機器と接続する。
ネットワークインタフェース104は、データプロセッシングユニット(DPU)202及びメモリ208を含む。データプロセッシングユニット202は、ホストバス201に接続するためのホストインタフェース207、ネットワークパス200と接続してネットワークプロトコルの処理を行うネットワークコントローラ203を含む。さらに、データプロセッシングユニット202は、プロセッサ204、メモリコントローラ209、DMA(Direct Memory Access)コントローラ205、及びキャッシュ206を含む。
ホストバス201は、ネットワークインタフェース104をストレージコントローラ102やサーバシステム100、ドライブボックス105等と接続するバスである。ホストバス201は、広帯域で高速なインタコネクトであり、例えば搭載する機器のプロセッサ等とPCIe(Peripheral Component Interconnect Express)で接続する構成をとる。
ホストインタフェース207は、ホストバス201を介してネットワークインタフェース104とホストシステム(以下、単にホストとも呼ぶ)を接続するためのインタフェースである。例えば、ホストバス201がPCIeの場合、例えばPCIeのPHY(physical layer:物理層)を含むことができる。DMAコントローラ205は、ネットワークインタフェース104内のメモリ208とホストのメモリ間でデータをやり取りする。なお、以下の明細書および図面では、「ホスト」と言う場合、ストレージコントローラ102等のターゲットを言う。また、「ホスト」の代わりに「ネットワークインタフェースホスト」と言う場合もある。
ネットワークパス200は、例えば、IPネットワークのパスで、WAN、LAN、または、SAN(Storage Area Network)のネットワーク形態をとる。ネットワークインタフェース104は、1つのネットワークパス200、または、冗長化することも考慮して、2以上のネットワークパス200を介して通信を行う。
ネットワークコントローラ203は、ネットワークパス200にネットワークインタフェース104を接続するためのインタフェースである。ネットワークコントローラ203は、例えば、PHY等の物理層の処理、並びに、データリンク層、インターネット層、及びトランスポート層のステートレスな処理を実行する。ネットワークコントローラ203は、例えばチェックサムやフレーム処理を行う。
ネットワークコントローラ203は、例えば、イーサネット、IP、TCP、UDP等に対応する。更に、IPsec(Internet Security Protocol)やTLS(Transport Layer Security)、DIF(Data Integrity Field)等のオフロードエンジンを含んでもよい。また、ネットワークコントローラ203は、光ケーブルやカッパーケーブル等との接続に対応した構成をとることもできる。
プロセッサ204は、例えば、汎用のプロセッサであり、例えば、サーバシステム100等でも利用されるオペレーティングシステムを実行する。プロセッサ204は、さらに、他のソフトウェアを実行して、プロトコル処理やコマンド処理やネットワークインタフェース104の管理等の処理を行う。プロセッサ204は、任意の構成を有することができる。例えば、プロセッサ204は、1又は複数のCPU又はMPU(Micro Processing Unit)を含み、1又は複数のコア241を含むことができる。
メモリ208は、例えば、SDRAM等の半導体メモリで構成される。また、メモリ208は、これに加え、SCMなどの不揮発メモリと組み合わせて構成してもよい。メモリ208は、プロセッサ204の主記憶として、実行プログラム(プロトコル処理やコマンド処理の命令コード)や、プロセッサが参照する管理テーブル等を格納する。また、メモリ208は、ネットワークと送受信するコマンドやデータのバッファとしても利用される。更に、メモリ208は、ネットワークコントローラ203やホストインタフェース207とキューイングインタフェースをとり、キューのディスクリプタやインデックス等を格納する。
メモリコントローラ209は、メモリ208のデータを読み書きする際にメモリを制御するためのインタフェースである。メモリコントローラ209は、例えば、プロセッサ204に内蔵されてもよい。また、メモリコントローラ209は、例えば、データプロセッシングユニット202に内蔵されてもよく、ネットワークインタフェース104に内蔵されてもよい。
キャッシュ206は、メモリ208とプロセッサ204との間において、データを一時的に格納する。プロセッサ204は、メモリ208よりも高速にキャッシュ206にアクセスすることができる。メモリ208から読み出されたデータは、キャッシュ206に格納される。プロセッサ204は、メモリ208より前にキャッシュ206にアクセスしてデータ(コマンドを含む)を読み出す。キャッシュ206は、階層構造を有することができる。この場合、よりプロセッサに近い階層から、L1キャッシュ、L2キャッシュ等と呼ばれる。プロセッサ204とDMAコントローラ205は、キャッシュ206に対してコヒーレント性を確保する(一貫性を持つ)。
なお、情報処理システム1及びストレージシステムSは、ここで示したもの以外も含んでよいものとし、例えば、監視や保守のためのモジュールやインタフェース、ネットワークインタフェース104上で動作するオペレーティングシステムやソフトウェアプログラムが格納される不揮発の記憶装置が追加されてもよい。
図3は、本発明の一実施形態にかかるネットワークインタフェース104のプログラム構成例を示す図である。
ソフトウェアベースの変更可能な処理機能を実現するために、ネットワークインタフェース104は、汎用的なプロセッサ204、キャッシュ206及びメモリ208を用いて、オペレーティングシステム300を動作させ、その上で各種処理のソフトウェアプログラムを動作させる。
ソフトウェアベースの変更可能な処理機能を実現するために、ネットワークインタフェース104は、汎用的なプロセッサ204、キャッシュ206及びメモリ208を用いて、オペレーティングシステム300を動作させ、その上で各種処理のソフトウェアプログラムを動作させる。
ソフトウェアプログラムは、オペレーティングシステム300と、ネットワークコントローラドライバ301と、ホストインタフェースドライバ302と、プロトコル処理303と、ホストキュー制御304と、コマンド処理305と、バッファ制御306と、DMA制御307と、初期化/保守/障害処理308とからなる。これらのソフトウェアプログラムは、メモリ208に展開され、プロセッサ204で処理される。一部の命令は、キャッシュ206に格納される。なお、DIF(Data Integrity Field)やCRC(Cyclic Redundancy Check)、暗号、圧縮、ハッシュ、パリティ処理などハードウェア化したほうが効率の良くなる処理部分はハードウェアに実装し、ソフトウェアにより制御してもよい。
オペレーティングシステム300は、ネットワークインタフェースを動作させるための基盤となる基本ソフトウェアプログラムであり、ネットワークインタフェース104全体を管理する。オペレーティングシステム300は、ネットワークインタフェース104のプロセッサ上で動作する各ソフトウェアに共通する利用環境を提供する。オペレーティングシステム300は、組込み向けオペレーティングシステムでもよいし、サーバ上で動くような汎用オペレーティングシステム、例えばLinux(登録商標)等でもよい。
ネットワークコントローラドライバ301は、ネットワークコントローラ203を制御するためのドライバソフトウェアである。ネットワークコントローラドライバ301は、パケット生成またはパケット受信時にオフロードするパケット処理のパラメータセットをネットワークコントローラ203へ渡す。さらに、ネットワークコントローラドライバ301は、プロトコル処理303が生成したパケットを、ネットワークコントローラ203へ渡して送信させる。また、ネットワークコントローラドライバ301は、ネットワークコントローラ203から受信したパケットを、プロトコル処理303へ渡す。
ホストインタフェースドライバ302は、ホストインタフェース207を制御するためのドライバソフトウェアである。ネットワークインタフェース104とホストとの通信は、ホストインタフェースドライバ302を介して実行される。
プロトコル処理303は、コマンド処理305、DMA制御307、ネットワークコントローラドライバ301と連携して、送信パケットの生成及びその送信処理を行う。また、プロトコル処理303は、受信したパケットを処理して、制御情報やiSCSI PDU、NVMe-oF PDU等の情報及びデータを取り出して、取り出した情報をコマンド処理305へ渡す。
プロトコル処理303は、インターネットプロトコル層のIPヘッダ処理、トランスポート層のTCPヘッダ処理やUDPヘッダ処理、そして、iSCSI処理やNVMe-oF処理を行う。例えば、プロトコル処理303は、ソケットプログラムや、iSCSIイニシエータまたはターゲット、NVMe-oFイニシエータまたはターゲット等のプログラムを実行する。
ホストキュー制御304は、ホストとコマンドのやり取りをするためのキューインタフェースを制御するためのソフトウェアである。ホストキュー制御304は、ネットワークインタフェース104内で、ホストへ送信するコマンドの内部キュー及びホストから受信したコマンドの内部キューを管理する。ホストキュー制御304は、ホストへのコマンド又はホストからのコマンドを内部キューに格納する。また、ホストキュー制御304は、内部キューを、例えば、リング構造としたときのHead及びTailを制御する。ホストキュー制御304は、ホストが保持するコマンドキューのHead及びTailを制御する。
コマンド処理305は、ホストからネットワークインタフェース104を制御するためのコマンドを受信し、ネットワークインタフェース104を制御する。コマンド処理305は、ネットワークプロトコルの処理要求をホストから受け、プロトコル処理303を起動し、プロトコル処理303の処理結果をホストへ応答する。また、コマンド処理305は、ホストで確保されたメモリとのデータ転送のために、DMA制御307を起動し、応答処理を行う。更に、コマンド処理305は、初期設定や設定変更、ネットワークインタフェース104のソフトウェア交換や、障害時のホストへの通知等を行う。
バッファ制御306は、メモリ208内でデータを一時的に保持するバッファを制御するためのソフトウェアである。バッファは、ネットワークから受信し、ホストに転送するデータ、又はホストから受信し、ネットワークに送信するデータを格納する。
DMA制御307は、例えば、ホスト側で確保されたメモリと、ネットワークインタフェース104上のメモリ208と、の間のデータ転送を制御するため、DMAハードウェアとのインタフェース処理を行う。
初期化/保守/障害処理308は、ネットワークインタフェース104を構成するハードウェアの初期化、及び各種ソフトウェアの初期化処理を行う。また、初期化/保守/障害処理308は、ネットワークインタフェース104のソフトエアの更新や、ハードウェア故障の検出及びホストへの通知等をサポートする。
図4は、図3に示したストレージインタフェースのプログラムの関係の一例を示す図である。
ネットワークインタフェース104では、オペレーティングシステム300が動作し、各ソフトウェアプログラムはそれをベースに動作する。また、初期化/保守/障害処理308により、ネットワークインタフェース104は、初期設定、ソフトウェア更新等の保守、及び障害処理等を実行する。障害処理は、例えば、障害検出、並びに統計情報及びエラー情報などのダンプトレース情報、ログ情報の収集等を含む。
ネットワークインタフェース104では、オペレーティングシステム300が動作し、各ソフトウェアプログラムはそれをベースに動作する。また、初期化/保守/障害処理308により、ネットワークインタフェース104は、初期設定、ソフトウェア更新等の保守、及び障害処理等を実行する。障害処理は、例えば、障害検出、並びに統計情報及びエラー情報などのダンプトレース情報、ログ情報の収集等を含む。
ネットワークコントローラドライバ301は、ネットワークコントローラ203を制御し、ネットワークコントローラ203のパケットバッファに対して送信パケットを格納し、そのパケットバッファから受信パケットを取得する。また、ネットワークコントローラドライバ301は、データリンク層、インターネットプロトコル層、トランスポート層のフレーム処理や、例えば、チェックサム計算等のステートレスな処理を、オフロードするための設定を行う。
ネットワークコントローラドライバ301の動作を受けて、プロトコル処理303は、IP、TCP、UDP、iSCSI PDU処理、NVMe-oF PDU処理等のネットワークプロトコル処理を行う。プロトコル処理303は、ネットワークコントローラドライバ301からの受信パケットを処理して、制御情報やiSCSI PDU、NVMe-oF PDU等の情報及びデータを取り出す。なお、受信パケットは、データを含まない場合もある。プロトコル処理303は、取り出した情報を、コマンド処理305に渡す。データは、バッファ制御306により制御されているバッファを介して又はバッファを介することなくホストに転送され得る。
プロトコル処理303は、コマンド処理305から取得した情報及びホストから送信されたデータをネットワークヘの送信パケットに含める。データは、バッファ制御306により制御されているバッファを介して又は介することなくネットワークに転送され得る。なお、送信パケットは、データを含まない場合もある。
コマンド処理305は、ホストキュー制御304、バッファ制御306及びDMA制御307と協働でコマンド処理を実行する。コマンド処理305は、ホストインタフェースドライバ302を介して、ホストインタフェース207を制御する。コマンド処理305は、ホストシステムとネットワーク通信の送信コマンドまたは受信コマンド、例えば、iSCSIやNVMe-oFのPDU生成のための情報、解析した情報又はPDUそのものをやりとりする。コマンドは、キューインタフェースを用いて、ホストシステムとやり取りされる。ホストキュー制御304は、このキューインタフェースを制御する。
コマンド処理305は、プロトコル処理303の結果より、ホストが処理できるコマンドを生成して、ホストキュー制御304を介して、キューに格納する。また、コマンド処理305は、ホストシステムが生成したコマンドをキューから取得し、プロトコル処理303等、ネットワークインタフェース104内の各機能を設定、利用する。なお、キューに格納されているコマンドは、DMA制御307によりDMAコントローラ205を用いて、ホストシステムとネットワークインタフェース104でやり取りできる。
図5は、ネットワークインタフェース104が、ホスト400(例えば、ストレージコントローラと102)と、コマンド及びデータを送受信する処理の概要を説明する図である。
以下では、ホスト(ネットワークインタフェースホスト)400とやり取りするコマンドをホストコマンドとも呼ぶ。
以下では、ホスト(ネットワークインタフェースホスト)400とやり取りするコマンドをホストコマンドとも呼ぶ。
ネットワークインタフェース104は、ネットワークから受信パケット351を受信し、その処理をいずれかのコア241(図2参照)に割り当てる。割り当てられたコア241は、そのプロトコル処理を実行して、情報及びデータを取り出す。図5の例において、取り出されたデータは、バッファ381に格納される。コア241は、受信パケット351から取り出した情報から、ホストに送るホストコマンド355を生成する。
ホストコマンド355は、内部送信キュー371に格納される。内部送信キュー371は、コア241毎に用意されており、図5において、一つの内部送信キュー371が例として挙げられている。図5の例において、内部送信キュー371は、リングバッファ(FIFO)であり、新たなコマンドは、そのTail領域に格納される。そして、各内部送信キュー371のHead及びTailが管理される。
ネットワークインタフェース104は、内部送信キュー371のHeadから取り出したホストコマンド355を、ホスト400のホスト受信キュー401に転送する。また、ネットワークインタフェース104は、ホストコマンド355に応じてバッファ381に格納されているデータ353をホスト400に転送する。ホスト400は、例えば、ストレージコントローラ102やサーバシステム100である。ホスト受信キュー401は、図5の例においてリングバッファである。ネットワークインタフェース104は、ホスト400と共に、ホスト受信キュー401のHead及びTailを管理する。
図5の例において、複数の内部送信キュー371からのホストコマンド355が、1つのホスト受信キュー401に転送される。他の例において、複数のホスト受信キュー401が用意されていてよく、例えば、内部送信キュー371のそれぞれと対応する同数のホスト受信キュー401が使用されてもよい。
ホスト400は、ネットワークインタフェース104に転送するホストコマンドをホスト送信キュー402に格納する。ホスト送信キュー402は、リングバッファである。ネットワークインタフェース104は、ホスト400と共に、ホスト送信キュー402のHead及びTailを管理する。
ネットワークインタフェース104は、ホスト送信キュー402のコマンドをその内部受信キュー372に転送する。内部受信キュー372は、コア241毎に用意されており、図5において、ホストから転送してきたホストコマンドを見て、対応する一つの内部受信キュー372を選択して転送する。このとき、ホストコマンドを見るのは、ホストキュー制御304でもよいし、DMAのハードウェアでもよい。1つの内部受信キュー372が例として挙げられている。図5の例において、複数のホスト送信キュー402が用意されていてよく、例えば、内部受信キュー372への振り分け処理が不要となるように、内部受信キュー372のそれぞれと対応する同数のホスト送信キュー402が使用されてもよい。
ネットワークインタフェース104は、ホスト400からのホストコマンドに応じてバッファ381に格納されているデータ354をホスト400に転送する。また、ネットワークインタフェース104は、ホスト400のメモリに格納されているデータ354をバッファ382に転送する。バッファ381、382は、キャッシュヒット率が向上するように制御される。
ネットワークにデータ354を含むパケットを送信するホストコマンド356を受信すると、ネットワークインタフェース104は、そのホストコマンド356により、データ354に対してプロトコル処理を実行して、送信パケット352を生成する。ネットワークインタフェース104は、送信パケット352をネットワークに送信する。
図6A及び図6Bは、データ転送のいくつかの態様を説明する図である。
図6Aは、ネットワークインタフェース104のキャッシュ206/メモリ208を使用するデータ転送のいくつかの例を示し、図6Bは、キャッシュ206/メモリ208を使用しないデータ転送のいくつかの例を示す。データ転送は、DMAコントローラ205を使用して実行される。ネットワークインタフェース104は、図6A及び6Bに示す全てのデータ転送をサポートしてよく、一部、例えば、図6Aのデータ転送のみをサポートしてもよい。
図6Aは、ネットワークインタフェース104のキャッシュ206/メモリ208を使用するデータ転送のいくつかの例を示し、図6Bは、キャッシュ206/メモリ208を使用しないデータ転送のいくつかの例を示す。データ転送は、DMAコントローラ205を使用して実行される。ネットワークインタフェース104は、図6A及び6Bに示す全てのデータ転送をサポートしてよく、一部、例えば、図6Aのデータ転送のみをサポートしてもよい。
図6Aは、ネットワークインタフェース104のキャッシュ/メモリを介すデータ転送を示す。これは、例えば、iSCSIやNVMe TCPのデータ転送が該当する。
図6Aにおいて、データ転送501は、ホスト400とネットワークインタフェース104のキャッシュ206/メモリ208の間で実行される。データ転送501において、エラーチェックや保証コードの付与や除去は行われていない。データ転送501は、例えば、ネットワークインタフェース104上で動作するプログラムの更新データや、キューを介して転送するコマンドの転送等が該当する。
データ転送511は、ホスト400とリモートサイト450との間で、ネットワークインタフェース104のキャッシュ206/メモリ208を介して実行される。データ転送511において、エラーチェックや保証コードの付与や除去は行われていない。
データ転送512は、リモートサイト450からホスト400に対して、ネットワークインタフェース104のキャッシュ206/メモリ208を介して実行される。DMAコントローラ205は、リモートサイト450からのデータにDIF(Data Integrity Field)を付与して、ホスト400に転送する。DIFを生成するため情報は、ホスト400から得られる。
データ転送513は、ホスト400からリモートサイト450に対して、ネットワークインタフェース104のキャッシュ206/メモリ208を介して実行される。DMAコントローラ205は、ホスト400からのデータに付与されているDIFを参照してデータチェックを行い、そのDIFをデータから除去する。DIFが除去されたデータが、リモートサイト450に転送される。
データ転送514は、ホスト400とリモートサイト450との間で、ネットワークインタフェース104のキャッシュ206/メモリ208を介して実行される。転送されるデータにはDIFが付与されている。DMAコントローラ205は、データに付与されているDIFを参照してエラーチェックを実行する。
データ転送515は、ホスト400とリモートサイト450との間で、ネットワークインタフェース104のキャッシュ206/メモリ208を介して実行される。転送されるデータにはDIFが付与されている。DMAコントローラ205は、データに付与されているDIFを参照してエラーチェックを実行すると共に、DIFを除去して新たなDIFを付与する。
図6Bは、ネットワークインタフェース104のキャッシュ/メモリを介さないデータ転送を示す。例えば、RDMA(Remote Direct Memory Access)が該当する。
データ転送521は、ホスト400とリモートサイト450との間で実行される。データ転送521において、エラーチェックや保証コードの付与や除去は行われていない。データ転送522は、リモートサイト450からホスト400に対して実行される。DMAコントローラ205は、リモートサイト450からのデータにDIF(Data Integrity Field)を付与して、ホスト400に転送する。
データ転送523は、ホスト400からリモートサイト450に対して実行される。DMAコントローラ205は、ホスト400からのデータに付与されているDIFを参照してデータチェックを行い、そのDIFをデータから除去する。DIFが除去されたデータが、リモートサイト450に転送される。
データ転送524は、ホスト400とリモートサイト450との間で実行される。転送されるデータにはDIFが付与されている。DMAコントローラ205は、データに付与されているDIFを参照してエラーチェックを実行する。データ転送525は、ホスト400とリモートサイト450との間で実行される。転送されるデータにはDIFが付与されている。DMAコントローラ205は、データに付与されているDIFを参照してエラーチェックを実行すると共に、DIFを除去して新たなDIFを付与する。
ネットワークインタフェース104は、メモリ208内に、複数のバッファを作成及び管理する。各バッファは、対応するバッファリストにより管理される。バッファリストは、バッファを使用する際に必要な情報を含む。
各バッファリストは、バッファリスト管理情報や複数のバッファエントリを含む。バッファエントリは、対応するバッファの情報を示す。
各バッファリストは、バッファリスト管理情報や複数のバッファエントリを含む。バッファエントリは、対応するバッファの情報を示す。
図7Aは、各バッファリストに含まれるバッファリスト管理情報を示した図である。
図示するバッファリスト管理情報750は、バッファリストを管理する情報を保持する。バッファリスト管理情報750は、バッファエントリヘッドアドレス751及びバッファアクティブ数752を含む。バッファエントリヘッドアドレス751は、バッファリストの先頭のエントリのアドレスを示す。バッファアクティブ数752は、現在使用中のバッファエントリの数を示す。
図示するバッファリスト管理情報750は、バッファリストを管理する情報を保持する。バッファリスト管理情報750は、バッファエントリヘッドアドレス751及びバッファアクティブ数752を含む。バッファエントリヘッドアドレス751は、バッファリストの先頭のエントリのアドレスを示す。バッファアクティブ数752は、現在使用中のバッファエントリの数を示す。
図7Bは、バッファエントリが保持している情報を示した図である。
図示するバッファエントリ703は、バッファエントリアドレス761、バッファアドレス762及びネクストバッファエントリアドレス763を含む。
バッファエントリアドレス761は、当該バッファエントリ703のアドレスを示す。なお、バッファエントリアドレス761を格納するフィールドを持たずに、バッファエントリアドレス761が格納されているメモリアドレスをそのままバッファエントリアドレス761として利用してもよい。バッファアドレス762は、バッファエントリ703が管理するバッファのメモリ208内のアドレスを示す。ネクストバッファエントリアドレス763は、当該バッファエントリ703の次のバッファエントリ703のアドレスを示す。
図示するバッファエントリ703は、バッファエントリアドレス761、バッファアドレス762及びネクストバッファエントリアドレス763を含む。
バッファエントリアドレス761は、当該バッファエントリ703のアドレスを示す。なお、バッファエントリアドレス761を格納するフィールドを持たずに、バッファエントリアドレス761が格納されているメモリアドレスをそのままバッファエントリアドレス761として利用してもよい。バッファアドレス762は、バッファエントリ703が管理するバッファのメモリ208内のアドレスを示す。ネクストバッファエントリアドレス763は、当該バッファエントリ703の次のバッファエントリ703のアドレスを示す。
バッファは、バッファ管理テーブルにより管理される。
図7Cは、バッファ管理テーブル770の構成例を示す。
バッファ管理テーブル770は、バッファを管理するための情報を示し、ネットワークインタフェース104により生成される。バッファ管理テーブル770は、各バッファを動的に変更可能とする。具体的には、バッファ管理テーブル770は、バッファエントリ703、バッファサイズ771、バッファアドレス762、割り当て状況772、バッファエントリ数773を示す。
バッファサイズ771は、バッファの大きさを示す。バッファエントリ数773は、バッファリストが管理するバッファ数、つまり、バッファエントリ数を示す。割り当て状況772は、バッファの割り当ての状況を示し、バッファがすでに割り当てられているか、いまだ割り当てられておらず使用できるかどうかを示す。
図7Cは、バッファ管理テーブル770の構成例を示す。
バッファ管理テーブル770は、バッファを管理するための情報を示し、ネットワークインタフェース104により生成される。バッファ管理テーブル770は、各バッファを動的に変更可能とする。具体的には、バッファ管理テーブル770は、バッファエントリ703、バッファサイズ771、バッファアドレス762、割り当て状況772、バッファエントリ数773を示す。
バッファサイズ771は、バッファの大きさを示す。バッファエントリ数773は、バッファリストが管理するバッファ数、つまり、バッファエントリ数を示す。割り当て状況772は、バッファの割り当ての状況を示し、バッファがすでに割り当てられているか、いまだ割り当てられておらず使用できるかどうかを示す。
図8は、セッション毎に割り当てられるバッファの構成について示した図である。
図8では、ライトデータの転送が、セッションX、セッションY、セッションZの3つのセッションとして行われた場合を示している。
この場合、セッションX、Y、Zには、Immediate Dataバッファ781と、InitialR2Tバッファ782とが割りあてられる。また、セッションX、Y、Zには、セッション情報783が含まれる。
Immediate Dataバッファ781は、第1のバッファの一例であり、Immediate Data転送の場合に使用するバッファである。
また、InitialR2Tバッファ782は、第2のバッファの一例であり、InitialR2Tではない場合に使用するバッファである。なお、詳しくは後述するが、ネットワークインタフェース104は、Immediate Data転送の場合でもInitialR2Tバッファ782を用意する。ここで、Immediate Data転送ではない場合は、通常の転送方式でライトデータを転送する場合である。つまり、ライトコマンド、Ready to Transfer(R2T)、ライトデータおよびライトレスポンスのパケット処理を行い、ライトデータを転送する場合である。
セッション情報783は、例えば、セッションID、ライトデータを転送するサーバシステム100の識別情報、転送時刻などが含まれる。
図8では、ライトデータの転送が、セッションX、セッションY、セッションZの3つのセッションとして行われた場合を示している。
この場合、セッションX、Y、Zには、Immediate Dataバッファ781と、InitialR2Tバッファ782とが割りあてられる。また、セッションX、Y、Zには、セッション情報783が含まれる。
Immediate Dataバッファ781は、第1のバッファの一例であり、Immediate Data転送の場合に使用するバッファである。
また、InitialR2Tバッファ782は、第2のバッファの一例であり、InitialR2Tではない場合に使用するバッファである。なお、詳しくは後述するが、ネットワークインタフェース104は、Immediate Data転送の場合でもInitialR2Tバッファ782を用意する。ここで、Immediate Data転送ではない場合は、通常の転送方式でライトデータを転送する場合である。つまり、ライトコマンド、Ready to Transfer(R2T)、ライトデータおよびライトレスポンスのパケット処理を行い、ライトデータを転送する場合である。
セッション情報783は、例えば、セッションID、ライトデータを転送するサーバシステム100の識別情報、転送時刻などが含まれる。
<情報処理システム1の動作の説明>
図9A~図9Cは、情報処理システム1の動作の概略を説明した図である。
このうち、図9Aは、Immediate Data転送を行わない場合のサーバシステム100とストレージコントローラ102との間のコマンドやデータのやりとりを示した図である。また、図9Bは、Immediate Data転送を行った場合のサーバシステム100とストレージコントローラ102との間のコマンドやデータのやりとりを示した図である。図9A~図9Bでは、本実施の形態のネットワークインタフェース104を使用しない場合を示す。即ち、図9A~図9Bは、従来のライトデータの転送方式について示している。
図9A~図9Cは、情報処理システム1の動作の概略を説明した図である。
このうち、図9Aは、Immediate Data転送を行わない場合のサーバシステム100とストレージコントローラ102との間のコマンドやデータのやりとりを示した図である。また、図9Bは、Immediate Data転送を行った場合のサーバシステム100とストレージコントローラ102との間のコマンドやデータのやりとりを示した図である。図9A~図9Bでは、本実施の形態のネットワークインタフェース104を使用しない場合を示す。即ち、図9A~図9Bは、従来のライトデータの転送方式について示している。
一方、図9Cは、本実施の形態のネットワークインタフェース104を使用して、Immediate Data転送を行った場合を示している。この場合、ネットワークインタフェース104を介した、サーバシステム100とストレージコントローラ102との間のコマンドやデータのやりとりを示す。即ち、図9Cは、本実施の形態が適用されるライトデータの転送方式について示している。
図9Aでは、Immediate Data転送を行わないため、通常の転送方式でライトデータを転送する。即ち、サーバシステム100とストレージコントローラ102との間で、(a1)ライトコマンド(Write CMD)、(a2)Ready to Transfer(R2T)、(a3)ライトデータ(DATA)、(a4)ライトレスポンス(Write Rsp)で示した4つのパケット処理を順次行われる。
この場合、サーバシステム100からストレージコントローラ102が、(a1)ライトコマンド(Write CMD)を受けると、ストレージコントローラ102のCPU102Cが、(1)ライトコマンド(Write CMD)のプロトコル処理、および、(2)ライトコマンド(Write CMD)処理を行う。そして、CPU102Cは、(3)DRAM102Dにデータ格納領域を確保する。さらに、CPU102Cは、(4)ライトリクエスト(Write Req)処理を行う。ライトリクエスト(Write Req)処理は、CPU102Cにより(5)プロトコル処理され、(a2)Ready to Transfer(R2T)として、サーバシステム100に送られる。
ライトリクエスト(Write Req)を受けたサーバシステム100は、ライトデータをストレージコントローラ102へ転送する((a3)ライトデータ(DATA))。このライトデータは、CPU102Cが、(6)プロトコル処理し、(7)DRAM102Dのデータ領域に、データ転送する。
そして、CPU102Cは、(8)データの転送が完了すると、(9)ライトレスポンス(Write Rsp)処理を行う。ライトリクエスト(Write Rsp)処理は、CPU102Cにより、(10)プロトコル処理され、(a4)ライトレスポンス(Write Rsp)として、サーバシステム100に送られる。
この場合、ストレージコントローラ102のDRAM102DやCPU102Cの負荷は、大きくなる。
この場合、ストレージコントローラ102のDRAM102DやCPU102Cの負荷は、大きくなる。
また、図9Bでは、Immediate Data転送を行う。この場合、サーバシステム100とストレージコントローラ102との間で、(b1)ライトコマンド(Write CMD)&ライトデータ(DATA)、(b2)ライトレスポンス(Write Rsp)で示した2つのパケット処理が順次行われる。
この場合、サーバシステム100からストレージコントローラ102が、(b1)ライトコマンド(Write CMD)&ライトデータ(DATA)を受ける。つまり、サーバシステム100からストレージコントローラ102へ、ライトコマンド(Write CMD)とライトデータ(DATA)とがともに送られる。この場合、ストレージコントローラ102のCPU102Cが、DRAM102Dに対し、あらかじめ(1)ライトデータを一時的に記憶するためバッファ領域を確保するとともに、(2)データ領域を確保する。そして、CPU102Cは、(3)ライトデータをプロトコル処理し、(4)データ領域にデータ転送する。
そして、CPU102Cは、(5)ライトコマンド(Write CMD)処理を行い、データの転送が完了すると、(6)ライトレスポンス(Write Rsp)処理を行う。ライトレスポンス(Write Rsp)処理は、CPU102Cにより、(7)プロトコル処理され、(b2)ライトレスポンス(Write Rsp)として、サーバシステム100に送られる。
この場合、ストレージコントローラ102のCPU102Cの負荷は、図9Aの場合よりも小さくなる。ただし、DRAM102Dの負荷は、図9Aの場合と同様に大きい。
この場合、ストレージコントローラ102のCPU102Cの負荷は、図9Aの場合よりも小さくなる。ただし、DRAM102Dの負荷は、図9Aの場合と同様に大きい。
さらに、図9Cでは、Immediate Data転送を行う。このとき本実施の形態のネットワークインタフェース104を使用する。この場合、図9Bと同様に、(b1)ライトコマンド(Write CMD)&ライトデータ(DATA)、(b2)ライトレスポンス(Write Rsp)で示した2つのパケット処理が順次行われる。
この場合、サーバシステム100からネットワークインタフェース104が、(b1)ライトコマンド(Write CMD、ライト要求)&ライトデータを受ける。つまり、サーバシステム100からネットワークインタフェース104へ、ライトコマンド(Write CMD)とライトデータ(DATA)とがともに送られる。この場合、ネットワークインタフェース104のDPU202が、メモリ(DRAM)208に対し、あらかじめ(1)ライトデータを一時的に記憶するためバッファ領域を確保する。そして、DPU202は、(2)ライトコマンド(Write CMD)のプロトコル処理を行い、さらにストレージコントローラ102に対し、(3)ライトコマンド(Write CMD)処理を行う(ライトコマンドを転送し受信)。ストレージコントローラ102では、CPU102Cが、DRAM102Dに対し、(4)データ領域を確保する(キャッシュメモリにデータ格納用の記憶領域を確保)。さらに、CPU102Cは、ネットワークインタフェース104に対し、(5)ライトリクエスト(Write Req、データ転送要求)処理を行う。そして、ネットワークインタフェース104のDPU202は、ライトデータをプロトコル処理し、(6)ストレージコントローラ102のデータ領域にデータ転送する処理を行う。
そして、ストレージコントローラ102のCPU102Cは、(7)データの転送が完了すると、(8)ライトレスポンス(Write Rsp、ライト応答)処理を行う。このとき、ストレージコントローラ102は、所定の処理として、例えば、キャッシュメモリに格納されたデータの不揮発化、二重化、またはストレージドライブ格納のいずれかを行った場合に、ライトレスポンスを転送する。ライトレスポンス(Write Rsp)処理は、DPU202により、(9)プロトコル処理され、(b2)ライトレスポンス(Write Rsp)として、サーバシステム100に送られる。
図9Bと図9Cとを比較すると、ライトコマンド(Write CMD)およびライトデータをともに受け取るのは、図9Bでは、ストレージコントローラ102であるのに対し、図9Cでは、ネットワークインタフェース104である。これは、図9Cでは、(b1)ライトコマンド(Write CMD)&ライトデータ(DATA)を受ける処理に対応する。
また、ネットワークインタフェース104は、プロトコル処理とライトデータのデータ転送処理とを、ストレージコントローラ102の代わりに行う。これは、図9Cでは、(2)ライトコマンド(Write CMD)のプロトコル処理、および(6)ストレージコントローラ102のデータ領域にデータ転送する処理、に対応する。またこれは、ストレージコントローラ102が行うプロトコル処理とライトデータのデータ転送処理とをネットワークインタフェース104にオフロードした、と言うこともできる。
これにより、Immediate Data転送の処理にかかるストレージコントローラ102のCPU102Cの負荷を低減することができる。
これにより、Immediate Data転送の処理にかかるストレージコントローラ102のCPU102Cの負荷を低減することができる。
さらに、データ転送処理が終了したときに、サーバシステム100にライトレスポンスを送るのは、図9Bでは、ストレージコントローラ102であるのに対し、図9Cでは、ネットワークインタフェース104である。
またさらに、サーバシステム100からライトデータを受け取るときに、ライトデータを一時的に記憶するバッファを有するのは、図9Bでは、ストレージコントローラ102であるのに対し、図9Cでは、ネットワークインタフェース104である。よって、ネットワークインタフェース104のバッファは、ネットワークインタフェース104(自装置)を接続しない場合にストレージコントローラ102がサーバシステム100からライトコマンド(Write CMD)およびライトデータをともに受け取るときに必要とするバッファの代わりに設けられる、と言うこともできる。また、これは、ストレージコントローラ102のバッファを、ネットワークインタフェース104にオフロードした、と言うこともできる。
図9Bで示した通常のImmediate Data転送では、予めストレージコントローラ内の多くのメモリをライトデータ転送用に割り当てておく必要がある。そのため、多くのサーバシステム100と接続するストレージコントローラ102では、データキャッシュに対するメモリ割り当てなど、ストレージコントローラ102のメイン処理に必要なメモリ割り当てが減ってしまう。対して、本実施の形態では、ストレージコントローラ102のバッファを、ネットワークインタフェース104にオフロードすることで、Immediate Data転送で要する、ストレージコントローラ102のメモリ量を削減することができる。
また、本実施の形態では、ストレージコントローラのCPU負荷とメモリ量削減に加えて、メモリアクセス負荷もストレージコントローラ102からネットワークインタフェース104に分離できるため、Immediate Data転送の処理を、効率よく行うことができる。
また、本実施の形態では、ストレージコントローラのCPU負荷とメモリ量削減に加えて、メモリアクセス負荷もストレージコントローラ102からネットワークインタフェース104に分離できるため、Immediate Data転送の処理を、効率よく行うことができる。
この場合、ストレージコントローラ102のDRAM102DやCPU102Cの負荷は、図9A~図9Bの場合よりも小さくなる。また、Immediate Data転送の処理にかかるストレージコントローラ102のCPU102Cの負荷およびDRAM102Dのメモリ量の削減に加えて、メモリアクセス負荷もネットワークインタフェース104へ分離できる。そのためImmediate Data処理が、より効率化する。その結果、サーバシステム100からストレージコントローラ102に、ライトデータを転送する際の転送速度が向上する。よって、ライト性能が向上する。
また、図9Aと図9Cとを比較した場合、図9Aの、ストレージコントローラ102のプロトコル処理部とコマンド処理部との間のデータ処理シーケンスは、図9Cの、ネットワークインタフェース104のプロトコル処理部とストレージコントローラ102のコマンド処理部との間のデータ処理シーケンスと同等である。
つまり、図9Aの、(2)ライトコマンド(Write CMD)処理、(3)DRAM102Dにデータ格納領域を確保する処理、(4)ライトリクエスト(Write Req)処理、(8)データの転送が完了、(9)ライトレスポンス(Write Rsp)処理と、図9Cの、(3)ライトコマンド(Write CMD)処理、(4)データ領域を確保する処理、(5)ライトリクエスト(Write Req)処理、(7)データの転送が完了、(8)ライトレスポンス(Write Rsp)処理は、それぞれ同等である。
つまり、図9Aの、(2)ライトコマンド(Write CMD)処理、(3)DRAM102Dにデータ格納領域を確保する処理、(4)ライトリクエスト(Write Req)処理、(8)データの転送が完了、(9)ライトレスポンス(Write Rsp)処理と、図9Cの、(3)ライトコマンド(Write CMD)処理、(4)データ領域を確保する処理、(5)ライトリクエスト(Write Req)処理、(7)データの転送が完了、(8)ライトレスポンス(Write Rsp)処理は、それぞれ同等である。
なお、ストレージコントローラ102のプロトコル処理部は、送信パケットの生成及びその送信処理を行う。ネットワークインタフェース104のプロトコル処理部は、例えば、プロトコル処理303(図3参照)に対応し、送信パケットの生成及びその送信処理を行う。また、ストレージコントローラ102のコマンド処理部は、コマンドを受信し、自装置を制御する。
以上説明したように、本実施の形態では、ネットワークインタフェース104を用いて、プロトコル処理とライトデータのデータ転送処理とを、ストレージコントローラ102の代わりに行う。そしてその結果、ネットワークインタフェース104を用いずこれを行わないときの、ストレージコントローラ102のプロトコル処理部とコマンド処理部との間のデータ処理シーケンスと、ネットワークインタフェース104のプロトコル処理部とストレージコントローラ102のコマンド処理部との間のデータ処理シーケンスとを同等にする。
この場合、本実施の形態では、ストレージコントローラ102から見たときのデータ処理シーケンスは、図9Aの従来の方式と、図9Cのネットワークインタフェース104を用いたImmediate Data転送方式とで変わらない。つまり、サーバシステム100とのImmediate Data転送の処理は、ネットワークインタフェース104で隠蔽されており、ストレージコントローラ102では、Immediate Data転送を行っているかどうかはわからない。そのため、例えば、厳密なメモリ設計がなされ、Immediate Data転送に使用するバッファを用意できないストレージコントローラ102でも、従来のインタフェースの互換性を維持しつつ、Immediate Data転送を行うことができる。即ち、今まで設置されていたストレージコントローラ102をなんら変更することなく、本実施の形態のネットワークインタフェース104を導入するだけで、Immediate Data転送を行うことができる情報処理システム1を構築できる。またこの場合、ストレージコントローラ102が、Immediate Data転送に対応していないときでもImmediate Data転送を行うことができる、と言うこともできる。
また、本実施の形態では、ネットワークインタフェース104として、例えば、SmartNIC(スマートネットワークインタフェースカード)を使用する。そして、SmartNICは、メモリ(この場合、上述のメモリ(DRAM)208)を備え、バッファは、このメモリを使用して実現できる。また、プロトコル処理は、SmartNICの場合、これに備えられる汎用のプロセッサ(この場合、上述のDPU202)が行う。よって、SmartNICを使用することで、プロトコル処理およびデータ転送処理を、これに備えられるプロセッサによるソフトウェア処理により実現することができる。
なお、上述した例では、サーバシステム100からライトデータを受け取るストレージコントローラ102側に配されるネットワークインタフェース104について説明したが、これに限られるものではない。本実施の形態のネットワークインタフェース104は、ターゲット側の機器に配される場合について、好適に使用できる。つまり、上述したような、サーバシステム100からライトデータを受け取るストレージコントローラ102にネットワークインタフェース104が配される場合の他、ストレージコントローラ102からライトデータを受け取るドライブボックス105に配されるネットワークインタフェース104について、好適に使用できる。なおこの場合、ライトデータを転送する方を、イニシエータとし、ライトデータ受け取る方をターゲットとした場合、イニシエータからライトデータを受け取るターゲットにネットワークインタフェース104が配される場合について、好適に使用できる、と言うこともできる。またこの場合、ネットワークインタフェース104は、ターゲットに搭載され、ネットワークを介して、イニシエータから、ライトコマンドおよびライトデータを受け取る、と言うこともできる。なお、ターゲットは、上述したネットワークインタフェース104のホストに相当する。
また、本実施の形態のネットワークインタフェース104は、図9Cで示したImmediate Data転送方式の場合のみならず、図9Aで示したImmediate Data転送でない通常の転送方式の場合に対しても適用が可能である。つまり、本実施の形態のネットワークインタフェース104では、これらの転送方式を切り換えて使用することもできる。
以下のこの事項も含め、ネットワークインタフェース104を介したライトデータのデータ転送処理についてさらに詳しく説明する。
以下のこの事項も含め、ネットワークインタフェース104を介したライトデータのデータ転送処理についてさらに詳しく説明する。
<情報処理システム1の動作の詳細な説明>
図10~図13は、ネットワークインタフェース104を介したライトデータのデータ転送処理についてさらに詳しく説明したシーケンス図である。
図10~図13は、イニシエータからターゲット(ネットワークインタフェース104のホスト)に対し、ネットワークインタフェース104を介してライトデータを転送する場合について示した図である。イニシエータは、例えば、サーバシステム100であり、ターゲットは、例えば、ストレージコントローラ102である。また、ここでは、ターゲットを、ネットワークインタフェースホストとも図示している。
図10~図13は、ネットワークインタフェース104を介したライトデータのデータ転送処理についてさらに詳しく説明したシーケンス図である。
図10~図13は、イニシエータからターゲット(ネットワークインタフェース104のホスト)に対し、ネットワークインタフェース104を介してライトデータを転送する場合について示した図である。イニシエータは、例えば、サーバシステム100であり、ターゲットは、例えば、ストレージコントローラ102である。また、ここでは、ターゲットを、ネットワークインタフェースホストとも図示している。
このうち、図10は、Immediate Data転送でない通常の転送方式でライトデータを転送する場合について示した図である。
まず、ネットワークインタフェース104では、イベントポーリングを行い、イニシエータからのライトコマンド(Writeコマンド)の有無を確認する(ステップS101)。
そして、イニシエータが、ライトコマンド(iSCSI コマンド PDU(Write コマンド))を送信すると、ネットワークインタフェース104が、これを受信する(ステップS102)。ネットワークインタフェース104では、プロトコル処理として、ライトコマンド(Writeコマンド)をPDU処理し(ステップS103)、I/O要求を受領する(ステップS104)。ここでは、ネットワークインタフェース104は、iSCSIのプロトコル処理を行っている。
まず、ネットワークインタフェース104では、イベントポーリングを行い、イニシエータからのライトコマンド(Writeコマンド)の有無を確認する(ステップS101)。
そして、イニシエータが、ライトコマンド(iSCSI コマンド PDU(Write コマンド))を送信すると、ネットワークインタフェース104が、これを受信する(ステップS102)。ネットワークインタフェース104では、プロトコル処理として、ライトコマンド(Writeコマンド)をPDU処理し(ステップS103)、I/O要求を受領する(ステップS104)。ここでは、ネットワークインタフェース104は、iSCSIのプロトコル処理を行っている。
次に、ネットワークインタフェース104は、ターゲットに行うホストコマンド処理として、ホストコマンドを生成する(ステップS105)。さらに、ネットワークインタフェース104は、ホストコマンド(SCSI Command受領)をターゲットに送り、ターゲットは、このホストコマンドを受け取る(ステップS106)。
ターゲットでは、ジョブを起動し(ステップS107)、データ転送の準備をする(ステップS108)。データ転送の準備は、例えば、資源確保、ホストコマンド生成等である。そして、ターゲットは、ホストコマンド(Write転送要求)をネットワークインタフェース104に送り、ネットワークインタフェース104は、このホストコマンドを受け取る(ステップS109)。
ターゲットでは、ジョブを起動し(ステップS107)、データ転送の準備をする(ステップS108)。データ転送の準備は、例えば、資源確保、ホストコマンド生成等である。そして、ターゲットは、ホストコマンド(Write転送要求)をネットワークインタフェース104に送り、ネットワークインタフェース104は、このホストコマンドを受け取る(ステップS109)。
さらに、ネットワークインタフェース104は、R2T発行処理をし(ステップS110)、R2T返信要求をする(ステップS111)。そして、ネットワークインタフェース104は、プロトコル処理として、PDUを生成する(ステップS112)。
そして、ネットワークインタフェース104は、Ready to Transfer(R2T)をイニシエータに送信し、イニシエータは、Ready to Transfer(R2T)を受け取る(ステップS113)。
そして、ネットワークインタフェース104は、Ready to Transfer(R2T)をイニシエータに送信し、イニシエータは、Ready to Transfer(R2T)を受け取る(ステップS113)。
これにより、イニシエータは、ライトデータをネットワークインタフェース104に送信し(Writeデータ送信(Data-Out))、ネットワークインタフェース104が受信する(ステップS114)。
ネットワークインタフェース104では、プロトコル処理として、ライトデータ(Writeデータ)をPDU処理し(ステップS115)、ライトデータ(Writeデータ)を受領する(ステップS116)。
ネットワークインタフェース104では、プロトコル処理として、ライトデータ(Writeデータ)をPDU処理し(ステップS115)、ライトデータ(Writeデータ)を受領する(ステップS116)。
次に、ネットワークインタフェース104は、ターゲットにライトデータ(Writeデータ)転送処理を開始し(ステップS117)、ライトデータ(Writeデータ)が、ターゲットに転送される(Writeデータ転送(DMA転送))(ステップS118)。
また、ネットワークインタフェース104は、ターゲットに行うホストコマンド処理として、ホストコマンドを生成する(ステップS119)。さらに、ネットワークインタフェース104は、ホストコマンド(Write転送応答)をターゲットに送り、ターゲットは、このホストコマンドを受け取る(ステップS120)。
次に、ターゲットは、データ転送応答を生成する(ステップS121)。そして、ターゲットは、ホストコマンド(SCSI Response要求)をネットワークインタフェース104に送り、ネットワークインタフェース104は、このホストコマンドを受け取る(ステップS122)。
また、ネットワークインタフェース104は、ターゲットに行うホストコマンド処理として、ホストコマンドを生成する(ステップS119)。さらに、ネットワークインタフェース104は、ホストコマンド(Write転送応答)をターゲットに送り、ターゲットは、このホストコマンドを受け取る(ステップS120)。
次に、ターゲットは、データ転送応答を生成する(ステップS121)。そして、ターゲットは、ホストコマンド(SCSI Response要求)をネットワークインタフェース104に送り、ネットワークインタフェース104は、このホストコマンドを受け取る(ステップS122)。
さらに、ネットワークインタフェース104は、Response発行処理をし(ステップS123)、Response送信要求をする(ステップS124)。そして、ネットワークインタフェース104は、プロトコル処理として、PDUを生成する(ステップS125)。
そして、ネットワークインタフェース104は、ライトレスポンス(iSCSI Response PDU(Write Response))をイニシエータに送信し、イニシエータは、ライトレスポンスを受け取る(ステップS126)。
さらに、ネットワークインタフェース104では、Responseの送信完了を行う(ステップS127)。ネットワークインタフェース104は、ターゲットに行うホストコマンド処理として、ホストコマンドを生成する(ステップS128)。さらに、ネットワークインタフェース104は、ホストコマンド(SCSI Response完了)をターゲットに送り、ターゲットは、このホストコマンドを受け取る(ステップS129)。
ターゲットでは、ジョブを終了して資源を開放する(ステップS130)。
そして、ネットワークインタフェース104は、ライトレスポンス(iSCSI Response PDU(Write Response))をイニシエータに送信し、イニシエータは、ライトレスポンスを受け取る(ステップS126)。
さらに、ネットワークインタフェース104では、Responseの送信完了を行う(ステップS127)。ネットワークインタフェース104は、ターゲットに行うホストコマンド処理として、ホストコマンドを生成する(ステップS128)。さらに、ネットワークインタフェース104は、ホストコマンド(SCSI Response完了)をターゲットに送り、ターゲットは、このホストコマンドを受け取る(ステップS129)。
ターゲットでは、ジョブを終了して資源を開放する(ステップS130)。
図11は、Immediate Data転送方式でライトデータを転送する場合について示した図である。
まず、ネットワークインタフェース104では、イベントポーリングを行い、イニシエータからのライトコマンド(Writeコマンド)やライトデータ(Writeデータ)の転送の有無を確認する(ステップS201)。
そして、イニシエータが、ライトコマンド(iSCSI コマンド PDU(Write コマンド))および、ライトデータ(Writeデータ PDU受信)を送信すると、これをネットワークインタフェース104が受信する(ステップS202)。ネットワークインタフェース104では、プロトコル処理として、ライトコマンド(Writeコマンド)およびライトデータ(Writeデータ)をPDU処理し(ステップS203)、I/O要求およびライトデータ(Writeデータ)を受領する(ステップS204)。
まず、ネットワークインタフェース104では、イベントポーリングを行い、イニシエータからのライトコマンド(Writeコマンド)やライトデータ(Writeデータ)の転送の有無を確認する(ステップS201)。
そして、イニシエータが、ライトコマンド(iSCSI コマンド PDU(Write コマンド))および、ライトデータ(Writeデータ PDU受信)を送信すると、これをネットワークインタフェース104が受信する(ステップS202)。ネットワークインタフェース104では、プロトコル処理として、ライトコマンド(Writeコマンド)およびライトデータ(Writeデータ)をPDU処理し(ステップS203)、I/O要求およびライトデータ(Writeデータ)を受領する(ステップS204)。
次に、ネットワークインタフェース104は、ターゲットに行うホストコマンド処理として、ホストコマンドを生成する(ステップS205)。さらに、ネットワークインタフェース104は、ホストコマンド(SCSI Command受領)をターゲットに送り、ターゲットは、このホストコマンドを受け取る(ステップS206)。
ターゲットでは、ジョブを起動し(ステップS207)、データ転送の準備をする(ステップS208)。データ転送の準備は、例えば、資源確保、ホストコマンド生成等である。そして、ターゲットは、ホストコマンド(Write転送要求)をネットワークインタフェース104に送り、ネットワークインタフェース104は、このホストコマンドを受け取る(ステップS209)。
ターゲットでは、ジョブを起動し(ステップS207)、データ転送の準備をする(ステップS208)。データ転送の準備は、例えば、資源確保、ホストコマンド生成等である。そして、ターゲットは、ホストコマンド(Write転送要求)をネットワークインタフェース104に送り、ネットワークインタフェース104は、このホストコマンドを受け取る(ステップS209)。
以下のステップS210~ステップS223は、図10のステップS117~ステップS130と同様である。
図12は、Immediate Data転送でない通常の転送方式でInitialR2TがYesでライトデータを転送する場合について示している。Writeコマンドとライトデータは一度に送られず、最初のライトデータを送るためにはR2Tが必要な転送処理になる。ただしここでは、データ量が多く、2回に分けてデータ転送を行う場合について示している。この場合、ストレージコントローラ102は、InitialR2T有効転送に対応する、と言うこともできる。
図12のステップS301~ステップS318は、図10のステップS101~ステップS118と同様であるので説明を省略する。
ステップS319~ステップS327は、ステップS310~ステップS318と同様である。ステップS310~ステップS318では、1回目のライトデータの転送を行い、ステップS319~ステップS327では、同様の処理で、2回目のライトデータの転送を行う。
さらに、図12のステップS328~ステップS339は、図10のステップS119~ステップS130と同様であるので説明を省略する。
図12のステップS301~ステップS318は、図10のステップS101~ステップS118と同様であるので説明を省略する。
ステップS319~ステップS327は、ステップS310~ステップS318と同様である。ステップS310~ステップS318では、1回目のライトデータの転送を行い、ステップS319~ステップS327では、同様の処理で、2回目のライトデータの転送を行う。
さらに、図12のステップS328~ステップS339は、図10のステップS119~ステップS130と同様であるので説明を省略する。
図13は、Immediate Data転送方式でInitialR2TがNoでライトデータを転送する場合について示している。Writeコマンドとライトデータは一度に送られ、最初のライトデータを送るためのR2Tが不要な転送処理になる。この場合、ライト要求は、InitialR2T無効転送に基づいて、最初のR2Tなしのデータ送信に対応する、と言うこともできる。ただしここでは、データ量が多く、2回に分けてデータ転送を行う場合について示している。
図13のステップS401~ステップS411は、図11のステップS201~ステップS211と同様であるので説明を省略する。
また、図13のステップS412~ステップS416は、図10のステップS114~ステップS118と同様であるので説明を省略する。
さらに、図13のステップS417~ステップS428は、図11のステップS212~ステップS223と同様であるので説明を省略する。
図13のステップS401~ステップS411は、図11のステップS201~ステップS211と同様であるので説明を省略する。
また、図13のステップS412~ステップS416は、図10のステップS114~ステップS118と同様であるので説明を省略する。
さらに、図13のステップS417~ステップS428は、図11のステップS212~ステップS223と同様であるので説明を省略する。
ここでは、ステップS402~ステップS411で、1回目のライトデータの転送を行い、ステップS412~ステップS416で、2回目のライトデータの転送を行う。そして、ネットワークインタフェース104は、1回目のライトデータの転送の際には、Immediate Dataバッファ781(図8参照)を使用する。対して、2回目のライトデータの転送の際には、InitialR2Tバッファ782(図8参照)を使用する。
つまり、図8で説明したように、ネットワークインタフェース104は、Immediate Data転送の場合に使用するバッファとして、Immediate Dataバッファ781を用意する。そして、ネットワークインタフェース104は、Immediate Dataバッファ781を、1回目のライトデータの転送の際に使用する。
一方、InitialR2Tバッファ782は、Immediate Data転送ではなく、通常の転送方式で使用するバッファであるが、ネットワークインタフェース104は、Immediate Data転送の場合でもInitialR2Tバッファ782を用意する。
一方、InitialR2Tバッファ782は、Immediate Data転送ではなく、通常の転送方式で使用するバッファであるが、ネットワークインタフェース104は、Immediate Data転送の場合でもInitialR2Tバッファ782を用意する。
そして、ネットワークインタフェース104は、InitialR2Tバッファ782を、2回目のライトデータの転送の際に使用する。つまり、InitialR2Tバッファ782は、Immediate Data転送の場合に、同じセッション中で2回目のライトデータを送る際に2回目のライトデータを一時的に記憶するのに使用される。
2回目のライトデータの転送の際に、InitialR2Tバッファ782を使用しない場合、Ready to Transfer(R2T)を送信し、それから2回目のライトデータを転送する必要がある。また、1回目のライトデータが送られる際は、ステップS402のように、ライトコマンドが必要であるが、InitialR2Tバッファ782を使用する場合、ステップS412のように、2回目のライトデータは、ライトコマンドを付与せずに送ることができる。
2回目のライトデータの転送の際に、InitialR2Tバッファ782を使用しない場合、Ready to Transfer(R2T)を送信し、それから2回目のライトデータを転送する必要がある。また、1回目のライトデータが送られる際は、ステップS402のように、ライトコマンドが必要であるが、InitialR2Tバッファ782を使用する場合、ステップS412のように、2回目のライトデータは、ライトコマンドを付与せずに送ることができる。
以上のように、InitialR2Tバッファ782を用意し、使用することで、最初のReady to Transfer(R2T)が不要となり、2回目のライトデータが送られる際は、ライトコマンドを付与する必要がない。これにより、転送するライトデータのデータ量が大きく、同じセッションの中で2回目のImmediate Data転送を行う必要がある場合でも、ライトデータの転送を効率よく行うことができる。
また、例えば、図10と図11とを比較した場合、ネットワークインタフェース104とターゲットとの間で送受信されるコマンドやライトデータは、通常の転送方式の場合と、Immediate Data転送の場合とで同様である。なお、図12と図13とを比較した場合でも同じことが言える。一方、本実施の形態のネットワークインタフェース104を通常の転送方式で使用する場合でも、ネットワークインタフェース104とターゲットとの間のパケット処理は、ネットワークインタフェース104を設けない場合に比較して、減少する。
図14Aは、ネットワークインタフェース104で、Immediate Dataバッファ781を用意する際の手順について説明したフローチャートである。
まず、ネットワークインタフェース104は、ネットワークインタフェースプロセスを起動する(ステップS501)。
次に、ネットワークインタフェース104は、パラメータを初期化する(ステップS502)。
さらに、ネットワークインタフェース104は、Immediate Dataバッファ781を確保する(ステップS503)。
そして、ネットワークインタフェース104は、プロトコル受信待ち状態へ移行する(ステップS504)。
まず、ネットワークインタフェース104は、ネットワークインタフェースプロセスを起動する(ステップS501)。
次に、ネットワークインタフェース104は、パラメータを初期化する(ステップS502)。
さらに、ネットワークインタフェース104は、Immediate Dataバッファ781を確保する(ステップS503)。
そして、ネットワークインタフェース104は、プロトコル受信待ち状態へ移行する(ステップS504)。
図14Bは、ネットワークインタフェース104で、InitialR2Tバッファ782を用意する際の手順について説明したフローチャートである。
まず、ネットワークインタフェース104は、ネットワークインタフェースプロセスを起動する(ステップS601)。
次に、ネットワークインタフェース104は、パラメータを初期化する(ステップS602)。
さらに、ネットワークインタフェース104は、InitialR2Tバッファ782を確保する(ステップS603)。
そして、ネットワークインタフェース104は、プロトコル受信待ち状態へ移行する(ステップS604)。
まず、ネットワークインタフェース104は、ネットワークインタフェースプロセスを起動する(ステップS601)。
次に、ネットワークインタフェース104は、パラメータを初期化する(ステップS602)。
さらに、ネットワークインタフェース104は、InitialR2Tバッファ782を確保する(ステップS603)。
そして、ネットワークインタフェース104は、プロトコル受信待ち状態へ移行する(ステップS604)。
図15は、ネットワークインタフェース104が、コマンド待ち状態に移行するまでの処理の第1の例について説明したフローチャートである。
まず、ネットワークインタフェース104では、イニシエータからログインコマンドを受信する(ステップS701)。
次に、ネットワークインタフェース104は、各種ネゴシエーションパラメータを取得する(ステップS702)。
まず、ネットワークインタフェース104では、イニシエータからログインコマンドを受信する(ステップS701)。
次に、ネットワークインタフェース104は、各種ネゴシエーションパラメータを取得する(ステップS702)。
さらに、ネットワークインタフェース104は、イニシエータ側が、Immediate Data=Yesであるか否かを判断する(ステップS703)。
その結果、Immediate Data=Yesの場合(ステップS703でYes)、ネットワークインタフェース104は、ターゲット側(自身設定)が、Immediate Data=Yesであるか否かを判断する(ステップS704)。
そして、Immediate Data=Yesの場合(ステップS704でYes)、ネットワークインタフェース104は、Immediate Data転送を有効化する(ステップS705)。即ち、イニシエータ側およびターゲット側(自身設定)の双方で、Immediate Data転送を行う設定の場合に、ネットワークインタフェース104は、Immediate Data転送を有効化する。
その結果、Immediate Data=Yesの場合(ステップS703でYes)、ネットワークインタフェース104は、ターゲット側(自身設定)が、Immediate Data=Yesであるか否かを判断する(ステップS704)。
そして、Immediate Data=Yesの場合(ステップS704でYes)、ネットワークインタフェース104は、Immediate Data転送を有効化する(ステップS705)。即ち、イニシエータ側およびターゲット側(自身設定)の双方で、Immediate Data転送を行う設定の場合に、ネットワークインタフェース104は、Immediate Data転送を有効化する。
さらに、ネットワークインタフェース104は、Immediate Data転送が有効である旨のログインレスポンスを発行する(ステップS706)。
そして、ネットワークインタフェース104は、コマンド待ち状態に移行する(ステップS707)。
そして、ネットワークインタフェース104は、コマンド待ち状態に移行する(ステップS707)。
対して、イニシエータ側が、Immediate Data=Yesでない場合(ステップS703でNo)、およびターゲット側(自身設定)が、Immediate Data=Yesでない場合(ステップS704でNo)、ネットワークインタフェース104は、Immediate Data転送を無効化する(ステップS708)。即ち、イニシエータ側およびターゲット側(自身設定)の何れか一方で、Immediate Data転送を行う設定でない場合に、ネットワークインタフェース104は、Immediate Data転送を無効化する。
さらに、ネットワークインタフェース104は、Immediate Data転送が無効である旨のログインレスポンスを発行する(ステップS709)。
さらに、ネットワークインタフェース104は、Immediate Data転送が無効である旨のログインレスポンスを発行する(ステップS709)。
図16は、ネットワークインタフェース104が、コマンド待ち状態に移行するまでの処理の第2の例について説明したフローチャートである。
まず、ネットワークインタフェース104では、イニシエータからログインコマンドを受信する(ステップS801)。
次に、ネットワークインタフェース104は、各種ネゴシエーションパラメータを取得する(ステップS802)。
まず、ネットワークインタフェース104では、イニシエータからログインコマンドを受信する(ステップS801)。
次に、ネットワークインタフェース104は、各種ネゴシエーションパラメータを取得する(ステップS802)。
さらに、ネットワークインタフェース104は、イニシエータ側が、InitialR2T=Noであるか否かを判断する(ステップS803)。
その結果、Immediate Data=Noの場合(ステップS803でYes)、ネットワークインタフェース104は、ターゲット側(自身設定)が、InitialR2T=Noであるか否かを判断する(ステップS804)。
そして、InitialR2T=Noの場合(ステップS804でYes)、ネットワークインタフェース104は、InitialR2T転送を無効化する(ステップS805)。即ち、イニシエータ側およびターゲット側(自身設定)の双方で、InitialR2T転送を行わない設定の場合に、ネットワークインタフェース104は、InitialR2T転送を無効化する。InitialR2T転送を無効化すると、図13の2回目のライトデータの転送の際に、最初のReady to Transfer(R2T)が不要になる。この場合、2回目のライトデータが送られる際は、図13のように、ライトコマンドを付与する必要がない。
その結果、Immediate Data=Noの場合(ステップS803でYes)、ネットワークインタフェース104は、ターゲット側(自身設定)が、InitialR2T=Noであるか否かを判断する(ステップS804)。
そして、InitialR2T=Noの場合(ステップS804でYes)、ネットワークインタフェース104は、InitialR2T転送を無効化する(ステップS805)。即ち、イニシエータ側およびターゲット側(自身設定)の双方で、InitialR2T転送を行わない設定の場合に、ネットワークインタフェース104は、InitialR2T転送を無効化する。InitialR2T転送を無効化すると、図13の2回目のライトデータの転送の際に、最初のReady to Transfer(R2T)が不要になる。この場合、2回目のライトデータが送られる際は、図13のように、ライトコマンドを付与する必要がない。
さらに、ネットワークインタフェース104は、InitialR2T転送が無効である旨のログインレスポンスを発行する(ステップS806)。
そして、ネットワークインタフェース104は、コマンド待ち状態に移行する(ステップS807)。
そして、ネットワークインタフェース104は、コマンド待ち状態に移行する(ステップS807)。
対して、イニシエータ側が、InitialR2T=Noでない場合(ステップS803でNo)、およびターゲット側(自身設定)が、InitialR2T=Noでない場合(ステップS804でNo)、ネットワークインタフェース104は、InitialR2T転送を有効化する(ステップS808)。即ち、イニシエータ側およびターゲット側(自身設定)の双方でInitialR2T転送を行わない設定以外の場合に、ネットワークインタフェース104は、InitialR2T転送を有効化する。InitialR2T転送を有効化すると、図13の2回目のライトデータの転送の際に、Ready to Transfer(R2T)が必要になる。この場合、2回目のライトデータが送られる際は、ライトコマンドを付与する必要があり、図13とは異なるようになる。
さらに、ネットワークインタフェース104は、InitialR2T転送が有効である旨のログインレスポンスを発行する(ステップS809)。
さらに、ネットワークインタフェース104は、InitialR2T転送が有効である旨のログインレスポンスを発行する(ステップS809)。
図17~図18は、図5で示した処理についてさらに詳しく説明したフローチャートである。
図17は、ターゲット側にネットワークインタフェース104を設けたときの処理フローの例を示した図である。
ネットワークインタフェース104は、ネットワークからネットワークインタフェース104のホストへの通信パケットに対する処理を実行する。例えば、ホストはターゲットのストレージコントローラ102であり、フロントエンドネットワーク106を介してイニシエータのサーバシステム100から通信パケットが転送される。
図17は、ターゲット側にネットワークインタフェース104を設けたときの処理フローの例を示した図である。
ネットワークインタフェース104は、ネットワークからネットワークインタフェース104のホストへの通信パケットに対する処理を実行する。例えば、ホストはターゲットのストレージコントローラ102であり、フロントエンドネットワーク106を介してイニシエータのサーバシステム100から通信パケットが転送される。
ネットワークコントローラ203は、ネットワークから通信パケットを受信する(ステップS901)。ネットワークコントローラ203は、受信した通信パケットのプロトコル処理を、プロセッサ204のコア241に振り分ける(ステップS902)。
通信パケットのプロトコル処理を割り当てられたコア241は、プロトコル処理303を実行する(ステップS903)。プロトコル処理303は、通信パケットから情報を抽出して、コマンド処理305に渡す。
コマンド処理305は、通信パケットから抽出された情報に応じて、ホストに通信プロトコル処理結果を通知するためのホストコマンドを生成する(ステップS904)。
処理結果の通知は、例えば、ネットワークからリード要求やライト要求が受信されたことをストレージコントローラ102に通知する。さらに、コマンド処理305は、生成したホストコマンドを、ネットワークインタフェース104内の内部送信キュー371に積み込む(ステップS905)。
ホストコマンドの積み込みに応答して、コマンド処理305は、内部送信キュー371のTailを更新する(ステップS906)。
処理結果の通知は、例えば、ネットワークからリード要求やライト要求が受信されたことをストレージコントローラ102に通知する。さらに、コマンド処理305は、生成したホストコマンドを、ネットワークインタフェース104内の内部送信キュー371に積み込む(ステップS905)。
ホストコマンドの積み込みに応答して、コマンド処理305は、内部送信キュー371のTailを更新する(ステップS906)。
ホストキュー制御304は、担当するコア241の内部送信キュー371のTail更新を受けて、内部送信キュー371のホストコマンドを、DMA制御307を介してDMAコントローラ205を使用して、ホスト受信キュー401に転送する(ステップS907)。
ホストコマンドの転送に応じて、ホストキュー制御304は、ホスト受信キュー401のTailを更新する(ステップS908)。ホスト受信キュー401のTailやHeadの情報は、ネットワークインタフェース104とホストが同一情報を参照してもよく、それぞれが保持する情報を転送してもよい。
さらに、ホストキュー制御304は、内部送信キュー371のHeadを更新する(ステップS909)。
ホストコマンドの転送に応じて、ホストキュー制御304は、ホスト受信キュー401のTailを更新する(ステップS908)。ホスト受信キュー401のTailやHeadの情報は、ネットワークインタフェース104とホストが同一情報を参照してもよく、それぞれが保持する情報を転送してもよい。
さらに、ホストキュー制御304は、内部送信キュー371のHeadを更新する(ステップS909)。
ホストは、ホスト受信キュー401からホストコマンドを取得し、ホスト受信キュー401のHeadを更新する(ステップS910)。ネットワークインタフェース104は、ホスト受信キュー401のHeadをホスト側の更新に合わせて受取って更新してもよいし、別のタイミングでホストから通知を受けてもよい。ホストは取得したホストコマンドを参照し、ネットワークインタフェース104にコマンドを送る必要があるか判定する(ステップS911)。
ホストがネットワークインタフェース104にホストコマンドを送る必要がある場合(ステップS911でYES)、ホストは、ホスト送信キュー402にホストコマンドを積み込み(ステップS912)、ホスト送信キュー402のTailを更新する(ステップS913)。ホストが持つホスト送信キュー402の情報の更新に応答して、ネットワークインタフェース104も、それが持つホスト送信キュー402の情報を更新する。この更新は、ホストとネットワークインタフェース104が共通の情報を参照してもよく、更新情報をそれらの間で転送してもよい。
一方、ホストがネットワークインタフェース104にホストコマンドを送る必要がない場合(ステップS911でNO)、一連の処理を終了する。
一方、ホストがネットワークインタフェース104にホストコマンドを送る必要がない場合(ステップS911でNO)、一連の処理を終了する。
ホスト送信キュー402のTail更新を受けて、いずれかのコア241のホストキュー制御304は、DMA制御307によってDMAコントローラ205を使用して、ホスト送信キュー402に積まれたホストコマンドを、ネットワークインタフェース104に転送する(ステップS914)。例えば、定期的に各コア241がロックを取り合って、ホスト受信キューの更新がないかを見て、更新がある場合は転送処理をしてもよいし、ホスト受信キューの更新確認と転送を専用に行うコア241を持ってもよいし、複数ホスト受信キューを作り、自分の担当の受信キューに更新があった場合は転送処理をするとしてもよい。ホストキュー制御304は、ホストからのホストコマンドを内部受信キュー372に積み込む(ステップS915)。例えば、ホストコマンドの中を確認して、どの内部受信キュー372に積み込むかを判定してもよいし、複数ホスト受信キューがある場合は、対応した内部受信キュー372に積み込んでもよい。
ホストコマンドの内部受信キュー372への積み込みに応答して、ホストキュー制御304は、内部受信キュー372のTailを更新し(ステップS916)、さらに、ホスト送信キュー402のHeadを更新する(ステップS917)。ホスト送信キュー402のHeadの更新方法は、ホスト送信キュー402のTailの更新について説明した通りである。
コマンド処理305は、内部受信キュー372よりホストコマンドを取得して、処理を実行する(ステップS918)。
コマンド処理305は、内部受信キュー372よりホストコマンドを取得して、処理を実行する(ステップS918)。
次に、コマンド処理305は、データ転送の有無を判定する(ステップS919)。
バッファを使用しないデータ転送が必要である場合(ステップS919でYES)、DMAコントローラ205は、バッファを介することなく、ネットワークコントローラ203とホストとの間でデータを転送する(ステップS920)。
バッファを使用しないデータ転送が不要である場合(ステップS919でNO)、データ転送せずに次の処理を行う。ホストキュー制御304は、内部受信キュー372のHeadを更新する(ステップS921)。
バッファを使用しないデータ転送が必要である場合(ステップS919でYES)、DMAコントローラ205は、バッファを介することなく、ネットワークコントローラ203とホストとの間でデータを転送する(ステップS920)。
バッファを使用しないデータ転送が不要である場合(ステップS919でNO)、データ転送せずに次の処理を行う。ホストキュー制御304は、内部受信キュー372のHeadを更新する(ステップS921)。
次に、コマンド処理305は、ネットワークに対して通信パケットを送信する必要があるか判定する(ステップS922)。
不要である場合(ステップS922でNO)、フローはステップS904に戻る。
必要である場合(ステップS922でYES)、コマンド処理305はプロトコル処理303に依頼し、プロトコル処理303がプロトコル処理を実行して通信パケットを生成し、ネットワークコントローラ203が通信パケットをネットワークに送信する(ステップS923)。
不要である場合(ステップS922でNO)、フローはステップS904に戻る。
必要である場合(ステップS922でYES)、コマンド処理305はプロトコル処理303に依頼し、プロトコル処理303がプロトコル処理を実行して通信パケットを生成し、ネットワークコントローラ203が通信パケットをネットワークに送信する(ステップS923)。
図18は、イニシエータ側にネットワークインタフェース104を設けたときの処理フロー例を示した図である。
これは、例えば、ストレージコントローラ102にアクセスするサーバシステム100や、ストレージ間通信でのイニシエータのストレージコントローラ102に実装された場合である。
これは、例えば、ストレージコントローラ102にアクセスするサーバシステム100や、ストレージ間通信でのイニシエータのストレージコントローラ102に実装された場合である。
ホストは、ホスト送信キュー402にホストコマンドを積み込み(ステップS951)、ホスト送信キュー402のTailを更新する(ステップS952)。ホストが持つホスト送信キュー402の情報の更新に応答して、ネットワークインタフェース104も、それが持つホスト送信キュー402の情報を更新する。ホストとネットワークインタフェース104が共通の情報を参照してもよく、更新情報をそれらの間で転送してもよい。
ホスト送信キュー402のTail更新を受けて、いずれかのコア241のコマンド処理305は、DMA制御307によってDMAコントローラ205を使用して、ホスト送信キュー402に積まれたホストコマンドを、ネットワークインタフェース104に転送する(ステップS953)。例えば、定期的に各コア241がロックを取り合って、ホスト受信キューの更新がないかを見て、更新がある場合は転送処理をしてもよいし、ホスト受信キューの更新確認と転送を専用に行うコア241を持ってもよいし、複数ホスト受信キューを作り、自分の担当の受信キューに更新があった場合は転送処理をするとしてもよい。
ホストキュー制御304は、ホストからのホストコマンドを内部受信キュー372に積み込む(ステップS954)。例えば、新しいセッションであれば、ラウンドロビンで積み込み先の内部受信キュー372を選択してもよいし、ホストコマンドの中を確認して、どの内部受信キュー372に積み込むかを判定してもよいし、複数ホスト受信キューがある場合は、対応した内部受信キュー372に積み込んでもよい。
ホストコマンドの内部受信キュー372への積み込みに応答して、ホストキュー制御304は、内部受信キュー372のTailを更新し(ステップS955)、さらに、ホスト送信キュー402のHeadを更新する(ステップS956)。ホスト送信キュー402のHeadの更新方法は、ホスト送信キュー402のTailの更新について説明した通りである。
コマンド処理305は、内部受信キュー372よりホストコマンドを取得して、処理を実行する(ステップS957)。
次に、コマンド処理305は、データ転送の有無を判定する(ステップS958)。バッファを使用しないデータ転送が必要である場合(ステップS958でYES)、DMAコントローラ205は、バッファを介することなく、ネットワークコントローラ203とホストとの間でデータを転送する(ステップS959)。
バッファを使用しないデータ転送が不要である場合(ステップS958でNO)、ホストキュー制御304は、内部受信キュー372のHeadを更新する(ステップS960)。
次に、コマンド処理305は、データ転送の有無を判定する(ステップS958)。バッファを使用しないデータ転送が必要である場合(ステップS958でYES)、DMAコントローラ205は、バッファを介することなく、ネットワークコントローラ203とホストとの間でデータを転送する(ステップS959)。
バッファを使用しないデータ転送が不要である場合(ステップS958でNO)、ホストキュー制御304は、内部受信キュー372のHeadを更新する(ステップS960)。
次に、コマンド処理305は、ネットワークに対して通信パケットを送信する必要があるか判定する(ステップS961)。
不要である場合(ステップS961でNO)、フローはステップS963に進む。
必要である場合(ステップS961でYES)、コマンド処理305は、プロトコル処理303に依頼し、プロトコル処理303はプロトコル処理を実行して通信パケットを生成し、ネットワークコントローラ203が通信パケットをネットワークに送信する(ステップS962)。
不要である場合(ステップS961でNO)、フローはステップS963に進む。
必要である場合(ステップS961でYES)、コマンド処理305は、プロトコル処理303に依頼し、プロトコル処理303はプロトコル処理を実行して通信パケットを生成し、ネットワークコントローラ203が通信パケットをネットワークに送信する(ステップS962)。
次に、コマンド処理305は、ホストからのホストコマンドの処理結果を、ホストに通知するためのホストコマンドを生成する(ステップS963)。処理結果の通知は、例えば、ネットワークに通信パケットを送信したことをホストに通知する。
さらに、コマンド処理305は、生成したホストコマンドを、ネットワークインタフェース104内の内部送信キュー371に積み込む(ステップS964)。
ホストコマンドの積み込みに応答して、コマンド処理305は、内部送信キュー371のTailを更新する(ステップS965)。
さらに、コマンド処理305は、生成したホストコマンドを、ネットワークインタフェース104内の内部送信キュー371に積み込む(ステップS964)。
ホストコマンドの積み込みに応答して、コマンド処理305は、内部送信キュー371のTailを更新する(ステップS965)。
内部送信キュー371のTail更新を受けて、ホストキュー制御304は、担当するコア241の内部送信キュー371のTail更新を受けて、内部送信キュー371のホストコマンドを、DMA制御307を介してDMAコントローラ205を使用して、ホスト受信キュー401に転送する。(ステップS966)。
ホストデータの転送に応じて、ホストキュー制御304は、ホスト受信キュー401のTailを更新する(ステップS967)。
ホスト受信キュー401のTailやHeadの情報は、ネットワークインタフェース104とホストが同一情報を参照してもよく、それぞれが保持する情報を転送してもよい。さらに、ホストキュー制御304は、内部送信キュー371のHeadを更新する(ステップS968)。
ホストデータの転送に応じて、ホストキュー制御304は、ホスト受信キュー401のTailを更新する(ステップS967)。
ホスト受信キュー401のTailやHeadの情報は、ネットワークインタフェース104とホストが同一情報を参照してもよく、それぞれが保持する情報を転送してもよい。さらに、ホストキュー制御304は、内部送信キュー371のHeadを更新する(ステップS968)。
ホストは、ホスト受信キュー401からホストコマンドを取得し、ホスト受信キュー401のHeadを更新する(ステップS969)。
<データ送信方法の説明>
ここで、ストレージシステムSが行う処理は、データを格納するドライブボックス105と、プロセッサ及びキャッシュメモリを備え、ドライブボックス105に入出力するデータを処理するストレージコントローラ102と、プロセッサを備えたネットワークインタフェース104と、を備えたストレージシステムSにおけるデータ送信方法であり、ネットワークインタフェース104が、ライト要求を受信した場合に、ネットワークインタフェース104は、ライト要求のプロトコル処理を行うとともに、ストレージコントローラ102にライトコマンドを転送し、ストレージコントローラ102は、ネットワークインタフェース104からライトコマンドを受信して、キャッシュメモリにデータ格納用の記憶領域を確保して、ネットワークインタフェース104に、データ転送要求を送信し、ネットワークインタフェース104は、ストレージコントローラ102からデータ転送要求を受信して、確保されたキャッシュメモリ上の記憶領域にライト要求にかかるデータを格納して、ストレージコントローラ102は、キャッシュメモリに格納されたライト処理にかかるデータを所定の処理をして、ネットワークインタフェース104にライト応答を転送し、ネットワークインタフェース104は、ストレージコントローラ102からライト応答を受信し、プロトコル処理を行ってライト要求の要求元に応答するデータ送信方法であると捉えることができる。
ここで、ストレージシステムSが行う処理は、データを格納するドライブボックス105と、プロセッサ及びキャッシュメモリを備え、ドライブボックス105に入出力するデータを処理するストレージコントローラ102と、プロセッサを備えたネットワークインタフェース104と、を備えたストレージシステムSにおけるデータ送信方法であり、ネットワークインタフェース104が、ライト要求を受信した場合に、ネットワークインタフェース104は、ライト要求のプロトコル処理を行うとともに、ストレージコントローラ102にライトコマンドを転送し、ストレージコントローラ102は、ネットワークインタフェース104からライトコマンドを受信して、キャッシュメモリにデータ格納用の記憶領域を確保して、ネットワークインタフェース104に、データ転送要求を送信し、ネットワークインタフェース104は、ストレージコントローラ102からデータ転送要求を受信して、確保されたキャッシュメモリ上の記憶領域にライト要求にかかるデータを格納して、ストレージコントローラ102は、キャッシュメモリに格納されたライト処理にかかるデータを所定の処理をして、ネットワークインタフェース104にライト応答を転送し、ネットワークインタフェース104は、ストレージコントローラ102からライト応答を受信し、プロトコル処理を行ってライト要求の要求元に応答するデータ送信方法であると捉えることができる。
1…情報処理システム、100…サーバシステム、102…ストレージコントローラ、104…ネットワークインタフェース、105…ドライブボックス、106…フロントエンドネットワーク、107…バックエンドネットワーク、109…外部ネットワーク、204…プロセッサ、208…メモリ、303…プロトコル処理、304…ホストキュー制御、305…コマンド処理、S…ストレージシステム
Claims (10)
- データを格納するストレージドライブと、
プロセッサ及びキャッシュメモリを備え、前記ストレージドライブに入出力するデータを処理するストレージコントローラと、
を備えたストレージシステムにおいて、
プロセッサを備えたネットワークインタフェースを備え、
ライト要求を受信した場合に、
前記ネットワークインタフェースは、前記ライト要求のプロトコル処理を行うとともに、前記ストレージコントローラにライトコマンドを転送し、
前記ストレージコントローラは、前記ネットワークインタフェースから前記ライトコマンドを受信して、前記キャッシュメモリにデータ格納用の記憶領域を確保して、前記ネットワークインタフェースに、データ転送要求を送信し、
前記ネットワークインタフェースは、前記ストレージコントローラから前記データ転送要求を受信して、確保された前記キャッシュメモリ上の記憶領域に前記ライト要求にかかるデータを格納して、
前記ストレージコントローラは、前記キャッシュメモリに格納されたライト処理にかかるデータを所定の処理をして、前記ネットワークインタフェースにライト応答を転送し、
前記ネットワークインタフェースは、前記ストレージコントローラから前記ライト応答を受信し、プロトコル処理を行って前記ライト要求の要求元に応答する
ストレージシステム。 - 前記ネットワークインタフェースはメモリを有し、
前記ネットワークインタフェースは、前記ライト要求とともにデータを受信して前記ネットワークインタフェースの前記メモリに格納し、前記データ転送要求を受信して前記メモリに格納したデータを前記キャッシュメモリに格納する
請求項1に記載のストレージシステム。 - 前記ライト要求は、Immediate Data転送に基づいて、ライトデータとともに送信されている
請求項2に記載のストレージシステム。 - 前記ストレージコントローラは、Immediate Data転送に対応していない
請求項3に記載のストレージシステム。 - 前記ライト要求は、InitialR2T無効転送に基づいて、最初のR2Tなしのデータ送信に対応する
請求項2に記載のストレージシステム。 - 前記ストレージコントローラは、InitialR2T有効転送に対応する
請求項3に記載のストレージシステム。 - 前記ストレージコントローラは、前記所定の処理として、前記キャッシュメモリに格納されたデータの不揮発化、二重化、またはストレージドライブ格納のいずれかを行った場合に、前記ライト応答を転送する
請求項1に記載のストレージシステム。 - データを格納するストレージドライブと、
プロセッサ及びキャッシュメモリを備え、前記ストレージドライブに入出力するデータを処理するストレージコントローラと、
プロセッサを備えたネットワークインタフェースと、
を備えたストレージシステムにおけるデータ送信方法であり、
前記ネットワークインタフェースが、ライト要求を受信した場合に、
前記ネットワークインタフェースは、前記ライト要求のプロトコル処理を行うとともに、前記ストレージコントローラにライトコマンドを転送し、
前記ストレージコントローラは、前記ネットワークインタフェースから前記ライトコマンドを受信して、前記キャッシュメモリにデータ格納用の記憶領域を確保して、前記ネットワークインタフェースに、データ転送要求を送信し、
前記ネットワークインタフェースは、前記ストレージコントローラから前記データ転送要求を受信して、確保された前記キャッシュメモリ上の記憶領域に前記ライト要求にかかるデータを格納して、
前記ストレージコントローラは、前記キャッシュメモリに格納されたライト処理にかかるデータを所定の処理をして、前記ネットワークインタフェースにライト応答を転送し、
前記ネットワークインタフェースは、前記ストレージコントローラから前記ライト応答を受信し、プロトコル処理を行って前記ライト要求の要求元に応答する
データ送信方法。 - プロセッサとメモリとを備え、ネットワークに接続されたネットワークインタフェースにおいて、
前記ネットワークを介してデータを含むライト要求を受信した場合に、前記メモリに前記データを格納するとともに、前記ライト要求のターゲットに前記データを含まない前記ライト要求を転送し、
前記ターゲットからデータ転送要求を受信した場合に、前記メモリに格納した前記データを、前記データ転送要求が指定する記憶領域に格納する
ネットワークインタフェース。 - 前記データを含む前記ライト要求を受信した場合に、プロトコル処理を行って、前記データを含まない前記ライト要求を転送する、
請求項9に記載のネットワークインタフェース。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022113983A JP7473600B2 (ja) | 2022-07-15 | 2022-07-15 | ストレージシステム、データ送信方法およびネットワークインタフェース |
US17/945,173 US11880570B1 (en) | 2022-07-15 | 2022-09-15 | Storage system, data transmission method, and network interface |
CN202310132362.5A CN117407333A (zh) | 2022-07-15 | 2023-02-17 | 储存系统、数据发送方法及网络接口 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022113983A JP7473600B2 (ja) | 2022-07-15 | 2022-07-15 | ストレージシステム、データ送信方法およびネットワークインタフェース |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2024011738A JP2024011738A (ja) | 2024-01-25 |
JP7473600B2 true JP7473600B2 (ja) | 2024-04-23 |
Family
ID=89496717
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022113983A Active JP7473600B2 (ja) | 2022-07-15 | 2022-07-15 | ストレージシステム、データ送信方法およびネットワークインタフェース |
Country Status (3)
Country | Link |
---|---|
US (1) | US11880570B1 (ja) |
JP (1) | JP7473600B2 (ja) |
CN (1) | CN117407333A (ja) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005165619A (ja) | 2003-12-02 | 2005-06-23 | Hitachi Ltd | データ転送装置の制御方法、データ転送装置、記憶デバイス制御装置、記憶デバイス制御装置の制御方法、及びチャネルアダプタ。 |
JP2020161103A (ja) | 2019-03-22 | 2020-10-01 | 株式会社日立製作所 | ストレージシステム及びデータ転送方法 |
US20200409739A1 (en) | 2019-06-28 | 2020-12-31 | Hewlett Packard Enterprise Development Lp | Smart network interface card for smart i/o |
WO2021249063A1 (zh) | 2020-06-09 | 2021-12-16 | 华为技术有限公司 | 网卡的数据处理方法以及网卡 |
US20220103629A1 (en) | 2020-09-28 | 2022-03-31 | Vmware, Inc. | Accessing an external storage through a nic |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7415723B2 (en) * | 2002-06-11 | 2008-08-19 | Pandya Ashish A | Distributed network security system and a hardware processor therefor |
US8387073B1 (en) | 2007-03-23 | 2013-02-26 | Qlogic, Corporation | Method and system for processing network packets |
WO2013168192A1 (en) * | 2012-05-08 | 2013-11-14 | Hitachi, Ltd. | Storage apparatus and method for controlling storage apparatus |
US9336412B2 (en) * | 2013-12-12 | 2016-05-10 | Hitachi, Ltd. | Storage system and method for controlling storage system |
US10310811B2 (en) * | 2017-03-31 | 2019-06-04 | Hewlett Packard Enterprise Development Lp | Transitioning a buffer to be accessed exclusively by a driver layer for writing immediate data stream |
US11604609B1 (en) * | 2021-10-08 | 2023-03-14 | Micron Technology, Inc. | Techniques for command sequence adjustment |
-
2022
- 2022-07-15 JP JP2022113983A patent/JP7473600B2/ja active Active
- 2022-09-15 US US17/945,173 patent/US11880570B1/en active Active
-
2023
- 2023-02-17 CN CN202310132362.5A patent/CN117407333A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005165619A (ja) | 2003-12-02 | 2005-06-23 | Hitachi Ltd | データ転送装置の制御方法、データ転送装置、記憶デバイス制御装置、記憶デバイス制御装置の制御方法、及びチャネルアダプタ。 |
JP2020161103A (ja) | 2019-03-22 | 2020-10-01 | 株式会社日立製作所 | ストレージシステム及びデータ転送方法 |
US20200409739A1 (en) | 2019-06-28 | 2020-12-31 | Hewlett Packard Enterprise Development Lp | Smart network interface card for smart i/o |
WO2021249063A1 (zh) | 2020-06-09 | 2021-12-16 | 华为技术有限公司 | 网卡的数据处理方法以及网卡 |
US20220103629A1 (en) | 2020-09-28 | 2022-03-31 | Vmware, Inc. | Accessing an external storage through a nic |
Also Published As
Publication number | Publication date |
---|---|
US11880570B1 (en) | 2024-01-23 |
US20240020010A1 (en) | 2024-01-18 |
CN117407333A (zh) | 2024-01-16 |
JP2024011738A (ja) | 2024-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102457091B1 (ko) | Nvme-of 이더넷 ssd에서 데이터 복제를 제공하기 위한 시스템 및 방법 | |
US7865588B2 (en) | System for providing multi-path input/output in a clustered data storage network | |
US10423332B2 (en) | Fibre channel storage array having standby controller with ALUA standby mode for forwarding SCSI commands | |
US8627136B2 (en) | Non-disruptive failover of RDMA connection | |
US8713180B2 (en) | Zero-copy network and file offload for web and application servers | |
JP7135162B2 (ja) | 情報処理システム、ストレージシステム及びデータ転送方法 | |
US10162775B2 (en) | System and method for efficient cross-controller request handling in active/active storage systems | |
US11606429B2 (en) | Direct response to IO request in storage system having an intermediary target apparatus | |
US20220222016A1 (en) | Method for accessing solid state disk and storage device | |
US11494096B2 (en) | System and method for storage array enclosure discovery | |
CN115129625A (zh) | 外围设备中的增强的存储协议仿真 | |
US20230328008A1 (en) | Network interface and buffer control method thereof | |
JP7473600B2 (ja) | ストレージシステム、データ送信方法およびネットワークインタフェース | |
US11256420B2 (en) | Method and apparatus for scaling out storage devices and scaled-out storage devices | |
JP6461347B2 (ja) | ストレージシステム、及び、記憶制御方法 | |
US11238010B2 (en) | Sand timer algorithm for tracking in-flight data storage requests for data replication | |
Dalessandro et al. | iSER storage target for object-based storage devices | |
US11995354B2 (en) | Storage area network controller with integrated circuit having a plurality of logic paths | |
US11855778B2 (en) | Network interface for storage controller | |
EP3816781A1 (en) | Storage area network controller | |
JP6208870B2 (ja) | ストレージシステム、記憶制御方法及び中継装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230227 |
|
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: 20240402 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240411 |