CN117407333A - 储存系统、数据发送方法及网络接口 - Google Patents
储存系统、数据发送方法及网络接口 Download PDFInfo
- Publication number
- CN117407333A CN117407333A CN202310132362.5A CN202310132362A CN117407333A CN 117407333 A CN117407333 A CN 117407333A CN 202310132362 A CN202310132362 A CN 202310132362A CN 117407333 A CN117407333 A CN 117407333A
- Authority
- CN
- China
- Prior art keywords
- data
- network interface
- write
- storage
- host
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 114
- 230000005540 biological transmission Effects 0.000 title claims abstract description 53
- 238000012546 transfer Methods 0.000 claims abstract description 235
- 238000012545 processing Methods 0.000 claims abstract description 189
- 230000004044 response Effects 0.000 claims abstract description 59
- 238000013500 data storage Methods 0.000 claims abstract description 10
- 230000008569 process Effects 0.000 claims description 86
- 239000000872 buffer Substances 0.000 description 133
- 239000003999 initiator Substances 0.000 description 42
- 238000010586 diagram Methods 0.000 description 36
- 238000004891 communication Methods 0.000 description 20
- 230000010365 information processing Effects 0.000 description 16
- 238000007726 management method Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 9
- 238000012423 maintenance Methods 0.000 description 8
- 230000014509 gene expression Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000009471 action Effects 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
- 239000000470 constituent Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000007616 round robin method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000007858 starting material Substances 0.000 description 1
Classifications
-
- 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/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
- 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/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)
Abstract
本发明提供能够减小储存控制器的CPU负荷及存储器访问负荷的储存系统、数据发送方法、网络接口。一种储存系统(S),在接收到写入请求的情况下,网络接口(104)进行写入请求的协议处理,并且将写入指令转送给储存控制器(102);储存控制器(102)在缓存存储器中确保数据保存用的存储区域;网络接口(104)从储存控制器(102)接收数据转送请求,将与写入请求有关的数据保存到所确保的缓存存储器上的存储区域中;储存控制器(102)将写入响应转送给网络接口(104);网络接口(104)响应写入请求的请求源。
Description
技术领域
本发明涉及储存系统、数据发送方法及网络接口。
背景技术
信息处理系统例如由用户应用等进行动作的服务器系统、提高所保存的数据的管理及可靠性的储存控制器、以及保存有多个驱动器的驱动盒构成,上述多个驱动器保存、保持在服务器系统中使用的数据。
信息处理系统接收来自服务器系统的请求,例如在写入请求的情况下,服务器系统将写入数据转送给储存控制器,储存控制器将写入数据保存到驱动盒内的驱动器中。
在专利文献1中,公开了立即数据(Immediate Data)的缓冲区(buffer)控制。这里,对储存控制器存储器预先分配立即数据用的缓冲区,将其在网络I/F和驱动器层中进行排他控制而利用。
在专利文献2中,公开了iSCSI的硬件卸载。这里,记载了摘要处理、数据复制操作以及使用S/G列表的大规模的PDU传送的卸载。另外,立即数的缓冲区使用储存存储器(storage memory)。
专利文献1:美国专利10310811号说明书
专利文献2:美国专利8387073号说明书
作为以往技术,已知有通过以下的顺序进行写入数据的转送的方法。即,首先,服务器系统等的启动器(initiator)向储存控制器等的目标器(target)发出写入指令。接着,在目标器侧确保用来接受写入数据的存储器区域后,为了将该情况传达给启动器,目标器发出Ready to Transfer(R2T:准备转送)指令。然后,启动器将写入数据转送给目标器。接着,如果写入数据的转送完成,则目标器向启动器发送写入响应。
但是,在该方法中,在发送写入指令之后将写入数据用其他的PDU(protocol DataUNIT:协议数据单元)发送,发生以下的问题。即,如果启动器与目标器间的距离较长则响应时间被往复加倍。此外,关于写入指令、Ready to Transfer、写入数据及写入响应的包处理,CPU负荷及存储器访问负荷较大。
相对于此,已知有预先在目标器侧准备充分的存储器,启动器将写入指令和写入数据一起发送的立即数据转送。
但是,通过立即数据转送,也只会削减写入指令、Ready to Transfer、写入数据及写入响应的包处理中仅一部分的负荷。具体而言,只有与Ready to Transfer的包处理及写入数据的包处理的一部分对应的CPU负荷及存储器访问负荷被削减。
发明内容
本发明的目的是提供能够降低目标器的CPU负荷及存储器访问负荷的储存系统、数据发送方法、网络接口。
用来解决课题的手段
为了解决的课题,本发明是一种储存系统,具备:储存驱动器,保存数据;以及储存控制器,具备处理器及缓存存储器,对相对于储存驱动器输入输出的数据进行处理;其中,储存系统具备具有处理器的网络接口;在接收到写入请求的情况下,网络接口进行写入请求的协议处理,并且将写入指令转送给储存控制器;储存控制器从网络接口接收写入指令,在缓存存储器中确保数据保存用的存储区域,向网络接口发送数据转送请求;网络接口从储存控制器接收数据转送请求,将与写入请求有关的数据保存到所确保的缓存存储器上的存储区域中;储存控制器对保存在缓存存储器中的与写入处理有关的数据进行规定的处理,将写入响应转送给网络接口;网络接口从储存控制器接收写入响应,进行协议处理而响应写入请求的请求源。
这里,可以是,网络接口具有存储器;网络接口将数据与写入请求一起接收并保存到网络接口的存储器中,接收数据转送请求,将保存在存储器中的数据保存到缓存存储器中。在此情况下,能够利用智能网络接口卡所具备的存储器作为缓冲区。
此外,可以将写入请求基于立即数据转送而与写入数据一起发送。在此情况下,转送写入数据时的转送速度提高。
进而,可以为储存控制器不对应于立即数据转送的情况。在此情况下,在储存控制器不对应于立即数据转送时也能够进行立即数据转送。
并且,可以是,写入请求基于InitialR2T(最初的R2T)无效转送,对应于没有最初的R2T的数据发送。在此情况下,能够省略最初的R2T。
此外,可以是,储存控制器对应于InitialR2T有效转送。在此情况下,通过不是立即数据转送的通常的转送方式也能够进行数据转送。
进而,可以是,储存控制器在作为规定的处理而进行了保存在缓存存储器中的数据的非易失化、双重化或储存驱动器保存的某一种的情况下,转送写入响应。在此情况下,能够更可靠地进行数据转送。
此外,本发明是一种数据发送方法,是储存系统的数据发送方法,所述储存系统具备:储存驱动器,保存数据;储存控制器,具备处理器及缓存存储器,对相对于储存驱动器输入输出的数据进行处理;以及网络接口,具备处理器;在数据发送方法中,在网络接口接收到写入请求的情况下,网络接口进行写入请求的协议处理,并且将写入指令转送给储存控制器;储存控制器从网络接口接收写入指令,在缓存存储器中确保数据保存用的存储区域,向网络接口发送数据转送请求;网络接口从储存控制器接收数据转送请求,将与写入请求有关的数据保存到所确保的缓存存储器上的存储区域中;储存控制器对保存在缓存存储器中的与写入处理有关的数据进行规定的处理,将写入响应转送给网络接口;网络接口从储存控制器接收写入响应,进行协议处理而响应写入请求的请求源。
进而,本发明是一种网络接口,具备处理器和存储器,与网络连接;网络接口在经由网络接收到包含数据的写入请求的情况下,将数据保存到存储器中,并将不包含数据的写入请求转送给写入请求的目标器;在从目标器接收到数据转送请求的情况下,将保存在存储器中的数据保存到数据转送请求指定的存储区域中。
这里,可以是,在接收到包含数据的写入请求的情况下,进行协议处理,转送不包含数据的写入请求。在此情况下,目标器的CPU负荷及存储器访问负荷进一步减轻。
发明效果
根据本发明,能够提供能够降低目标器的CPU负荷及存储器访问负荷的储存系统、数据发送方法、网络接口。
附图说明
图1是表示有关本发明的一实施方式的信息处理系统的构成例的图。
图2是表示有关本发明的一实施方式的网络接口的硬件构成例的图。
图3是表示有关本发明的一实施方式的网络接口的程序构成例的图。
图4是表示图3所示的储存接口的程序的关系的一例的图。
图5是说明网络接口与主机(例如储存控制器)收发指令及数据的处理的概要的图。
图6A是说明数据转送的几个形态的图。
图6B是说明数据转送的几个形态的图。
图7A是表示各缓冲区列表中包含的缓冲区列表管理信息的图。
图7B是表示缓冲区条目所保持的信息的图。
图7C是表示缓冲区管理表的图。
图8是表示按每个会话分配的缓冲区的构成的图。
图9A是说明信息处理系统的动作的概略的图。
图9B是说明信息处理系统的动作的概略的图。
图9C是说明信息处理系统的动作的概略的图。
图10是表示以不是立即数据转送的通常的转送方式来转送写入数据的情况的图。
图11是表示以立即数据转送方式来转送写入数据的情况的图。
图12表示以不是立即数据转送的通常的转送方式来转送写入数据的情况。
图13表示以立即数据转送方式来转送写入数据的情况。
图14A是说明用网络接口准备立即数据缓冲区时的次序的流程图。
图14B是说明用网络接口准备InitialR2T缓冲区时的次序的流程图。
图15是说明网络接口转移到待命状态为止的处理的第1例的流程图。
图16是说明网络接口转移到待命状态为止的处理的第2例的流程图。
图17是表示在目标器侧设有网络接口时的处理流程的例子的图。
图18是表示在启动器侧设有网络接口时的处理流程例的图。
标号说明
1…信息处理系统;100…服务器系统;102…储存控制器;104…网络接口;105…驱动盒;106…前端网络;107…后端网络;109…外部网络;204…处理器;208…存储器;303…协议处理;304…主机队列控制;305…指令处理;S…储存系统。
具体实施方式
以下,参照附图对本发明的实施方式详细地进行说明。另外,以下的记载及附图是用来说明本发明的例示,为了清楚地说明,适当进行了省略及简略化,本发明也能够以其他的各种形态实施,只要没有特别限定,各构成要素既可以是单个也可以是多个。
此外,以下说明的实施方式并不限定有关权利要求书的发明,并不一定在实施方式中说明的要素的组合的全部都对于发明的解决手段而言是必须的。
在以下的说明中,有时用“表”、“列表”、“队列”等表现说明各种信息,但各种信息也可以以这些以外的数据结构表现,表示不依赖于数据结构,所以有时将“xxx的表”、“xxx的列表”、“xxx的队列”等称作“xxx信息”等。在以下的说明中,在对识别信息进行说明时使用“识别信息”、“ID”等的表现,但关于它们能够相互替换。
在以下的说明中,在具有相同或同样的功能的构成要素有多个的情况下,基本上赋予相同的标号进行说明,但有即使功能相同但用来实现功能的手段不同的情况。进而,后述的实施方式既可以用在通用计算机上运行的软件安装,也可以以专用硬件或软件与硬件的组合安装。
此外,在以下的说明中有时以“程序”为主语说明处理,但也可以通过由处理器(例如,CPU:Central Processing Unit:中央处理单元)执行程序,来对于所设定的处理,一边适当地使用存储资源(例如存储器)及/或接口设备(通信端口)等一边进行,所以处理的主体也可以是处理器。
以程序为主语说明的处理也可以为具有处理器的计算机(例如,计算主机、储存装置)进行的处理。此外,在以下的说明中,也可以用“控制器”的表现来表示处理器或进行处理器所进行的处理的一部分或全部的硬件电路。
程序也可以从程序源(例如,程序分发服务器或计算机可读取的存储介质)安装到各计算机中,在此情况下,程序分发服务器也可以包括处理器和存储资源,存储资源还存储分发程序和作为分发对象的程序,通过由处理器执行分发程序,程序分发服务器的处理器将分发对象的程序向其他的计算机分发。
此外,在以下的说明中,也可以将两个以上的程序作为1个程序实现,也可以将1个程序作为两个以上的程序实现。
此外,在以下的说明中,存储驱动器或单单驱动器(储存)是指物理性的存储设备,典型地也可以是非易失性的存储设备(例如辅助存储设备)。驱动器例如也可以是HDD(HardDisk Drive)或SSD(Solid State Drive)。在信息处理系统中也可以混杂不同种类的驱动器。
此外,在以下的说明中,“RAID”是Redundant Array of Inexpensive Disks(廉价磁盘冗余阵列)的略写。RAID组由多个驱动器(典型的是同种驱动器)构成,按照与该RAID组建立了关联的RAID水平来存储数据。RAID组也可以称作奇偶校验组。奇偶校验组例如可以是保存奇偶校验(Parity)的RAID组。
本说明书的一实施方式的网络接口装置(以下,也简单称作网络接口)能够安装到包括服务器系统及储存系统的信息处理系统中。储存系统可以包括储存控制器及驱动盒。网络接口例如可以包括与通用处理器、存储器、网络控制器及主机系统的接口。
<信息处理系统1的整体说明>
图1是表示有关本发明的一实施方式的信息处理系统1的构成例的图。
信息处理系统1包括1个或多个服务器系统100和储存系统S。
储存系统S包括1个或多个储存(storage)装置101和1个或多个驱动盒105。
储存装置101包括1个或多个储存控制器102。在图1的构成例中,各储存装置101包括两个储存控制器102。储存控制器102经由前端网络106与1个或多个服务器系统100连接。
驱动盒105是保存数据的储存驱动器的一例。驱动盒105搭载1个或多个驱动器,经由后端网络107与1个或多个储存控制器102连接。此外,储存控制器102经由储存控制器间网络108与近距离的其他的储存控制器102连接,并且经由外部网络109与中、远距离的其他的储存控制器102连接。
服务器系统100是用户应用等进行动作的主机,具有1个或多个处理器,包括存储器、辅助存储装置的1个或多个存储装置而构成。服务器系统100中,例如数据库或Web服务进行动作。并且,服务器系统100将由它们制作出的数据对储存控制器102写入及读取。此外,在服务器系统100上,经由前端网络106连接着储存控制器102,作为其接口装置而搭载网络接口104。服务器系统100也可以由多个服务器群构成,在各自上拥有网络接口104,与储存控制器102或其他的服务器系统100连接。
由于对服务器系统100提供作为储存器(storage)的功能,所以储存装置101内的2个储存控制器102构成冗余化的控制器。储存控制器102分别具备1个或多个处理器及1个或多个存储装置。储存装置101内的储存控制器102具有相同的构成。
储存控制器102分别具有1个或多个处理器,各处理器的核根据来自服务器系统100的读取指令或写入指令,对保存在对应的驱动盒105中的数据进行转送指示。储存控制器102也可以说进行将写入数据保存到储存器时的管理。
储存控制器102的存储器例如由SDRAM(Synchronous Dynamic Random AccessMemory:同步动态随机存取存储器)等的半导体存储器构成。存储器也可以将易失性存储器与SCM(Storage Class Memory:储存级存储器)等非易失性存储器组合而构成。
存储器作为处理器的主存储而保存执行程序(储存控制程序等)或处理器参照的管理表等。此外,存储器也被用作储存控制器102的盘缓存(缓存存储器)。
储存控制器102搭载网络接口104作为对于服务器系统100的接口装置。
进而,储存控制器102上搭载网络接口104作为对于驱动盒105的接口装置而。该网络接口104用于从服务器系统100指示的数据转送、对于有关与数据复制等储存处理有关的处理的信息而与驱动盒105进行通信。
驱动盒105搭载有多个SSD或HDD等的驱动器,为了将这些多个驱动器与储存控制器102连接,包括内部开关以及用于转送处理的处理器及存储器。将由服务器系统100生成的数据经由储存控制器102接收、保存、保持。
驱动盒105为了确保所保持的数据的可用性,既可以在内置的驱动器间组建RAID,也可以在多个驱动盒105间组建RAID。此外,驱动盒105经由后端网络107与储存控制器102连接,作为其接口装置而搭载网络接口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的详细情况后述。
前端网络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(SerialAttached SCSI:串行连接SCSI)或NVMe(Non-Volatile Memory Express:非易失性存储器标准)。
储存控制器间网络108是为了储存控制器102的冗余化而利用的网络,由宽带互联构成。能够使用储存控制器间网络108来进行写入数据的双重化、元数据的共用等。并且,即使两个储存控制器102中的一个储存控制器102因维护或故障等而闭塞,也能够由另一个储存控制器102继续进行储存处理。
外部网络109是广域网(WAN Wide Area Network:)或局域网(LAN:Local AreaNetwork)。关于外部网络109,例如数据链路层利用以太网(注册商标),互联网层利用互联网协议,传输层利用TCP或UDP等的网络,来进行使用iSCSI或NVMe-oF的协议数据单元(PDU:Protocol Data Unit的通信。外部网络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:串行连接SCSI)或NVMe(Non-Volatile Memory Express:非易失性存储器标准)对驱动盒105访问动作。
<网络接口104的详细说明>
接着,关于网络接口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 MemoryAccess:直接存储器访问)控制器205及缓存(cache)206。
主机总线201是将网络接口104与储存控制器102、服务器系统100、驱动盒105等连接的总线。主机总线201是宽带高速的互联,例如采用以PCIe(Peripheral ComponentInterconnect Express:外围组件互连高速)与要搭载的设备的处理器等连接的构成。
主机接口207是用来经由主机总线201将网络接口104与主机系统(以下,也简单称作主机)连接的接口。例如,在主机总线201是PCIe的情况下,例如包括PCIe的PHY(physicallayer:物理层)。DMA控制器205在网络接口104内的存储器208与主机的存储器间交换数据。另外,在以下的说明书及附图中,在提及“主机”的情况下,是指储存控制器102等的目标器。此外,也有代替“主机”而称作“网络接口主机”的情况。
网络路径200例如是IP网络的路径,采用WAN、LAN或SAN(Storage Area Network:储存区域网络)的网络形态。网络接口104经由1个网络路径200或者也考虑冗余化而经由两个以上的网络路径200进行通信。
网络控制器203是用来将网络接口104与网络路径200连接的接口。网络控制器203例如执行PHY等的物理层的处理、以及数据链路层、互联网层及传输层的无状态的处理。网络控制器203例如进行校验和(checksum)及帧处理。
网络控制器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 ProcessingUnit:微处理单元),可以包括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动作,在此基础上使各种处理的软件程序动作。
软件程序由操作系统300、网络控制器驱动器301、主机接口驱动器302、协议处理303、主机队列控制304、指令处理305、缓冲区控制306、DMA控制307和初始化/维护/故障处理308构成。这些软件程序被展开在存储器208中,由处理器204处理。一部分指令被保存在缓存206中。另外,也可以将DIF(Data Integrity Field:数据完整性域)及CRC(CyclicRedundancy 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对接收到的包进行处理,取出控制信息或iSCSIPDU、NVMe-oF PDU等的信息及数据,将取出的信息传递给指令处理305。
协议处理303进行互联网协议层的IP头处理、传输层的TCP头处理及UDP头处理、以及iSCSI处理及NVMe-oF处理。例如,协议处理303执行套接字程序、iSCSI启动器或目标器、NVMe-oF启动器或目标器等的程序。
主机队列控制304是用来控制用来与主机进行指令的交换的队列接口的软件。主机队列控制304在网络接口104内管理向主机发送的指令的内部队列及从主机接收到的指令的内部队列。主机队列控制304将向主机的指令或来自主机的指令保存到内部队列中。此外,主机队列控制304对于内部队列,例如对设为环形结构时的头部(Head)及尾部(Tail)进行控制。主机队列控制304对主机所保持的指令队列的头部及尾部进行控制。
指令处理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执行初始设定、软件更新等的维护及故障处理等。故障处理例如包括故障检测、以及统计信息及错误信息等的转储跟踪(dump trace)信息、日志信息的收集等。
网络控制器驱动器301对网络控制器203进行控制,对网络控制器203的包缓冲区保存发送包,从该包缓冲区取得接收包。此外,网络控制器驱动器301进行数据链路层、互联网协议层、传输层的帧处理、用来将例如校验和(checksum)计算等的无状态的处理卸载的设定。
接受网络控制器驱动器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交换的指令也称作主机指令。
网络接口104从网络接收接收包351,将其处理分配给某个核241(参照图2)。被分配的核241执行其协议处理,取出信息及数据。在图5的例子中,将取出的数据保存在缓冲区381中。核241根据从接收包351取出的信息,生成向主机发送的主机指令355。
主机指令355被保存在内部发送队列371中。按每个核241准备内部发送队列371,在图5中,作为例子而列举了一个内部发送队列371。在图5的例子中,内部发送队列371是环形缓冲区(FIFO),新的指令被保存在其尾部区域中。并且,对各内部发送队列371的头部及尾部进行管理。
网络接口104将从内部发送队列371的头部取出的主机指令355转送给主机400的主机接收队列401。此外,网络接口104根据主机指令355将保存在缓冲区381中的数据353转送给主机400。主机400例如是储存控制器102或服务器系统100。主机接收队列401在图5的例子中是环形缓冲区。网络接口104与主机400一起管理主机接收队列401的头部及尾部。
在图5的例子中,来自多个内部发送队列371的主机指令355被转送给1个主机接收队列401。在其他的例子中,可以准备多个主机接收队列401,例如也可以使用与内部发送队列371分别对应的相同数量的主机接收队列401。
主机400将转送给网络接口104的主机指令保存到主机发送队列402中。主机发送队列402是环形缓冲区。网络接口104与主机400一起管理主机发送队列402的头部及尾部。
网络接口104将主机发送队列402的指令转送给其内部接收队列372。内部接收队列372是按每个核241准备的,在图5中,看从主机转送来的主机指令,选择对应的一个内部接收队列372并转送。此时,看主机指令的既可以是主机队列控制304,也可以是DMA的硬件。举1个内部接收队列372作为例子。在图5的例子中,可以准备多个主机发送队列402,例如也可以使用与内部接收队列372分别对应的相同数量的主机发送队列402,以便不需要向内部接收队列372的分配处理。
网络接口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的缓存/存储器的数据转送。这例如对应于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。从主机400得到用来生成DIF的信息。
关于数据转送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表示当前使用中的缓冲区条目的数量。
图7B是表示缓冲区条目所保持的信息的图。
图示的缓冲区条目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表示缓冲区的分配的状况,表示缓冲区是已经被分配、还是还没有被分配而能够使用。
图8是表示按每个会话(session)分配的缓冲区的构成的图。
在图8中,表示了写入数据的转送作为会话X、会话Y、会话Z这3个会话进行的情况。
在此情况下,对于会话X、Y、Z分配立即数据缓冲区781和InitialR2T缓冲区782。此外,在会话X、Y、Z中包含会话信息783。
立即数据缓冲区781是第1缓冲区的一例,是在立即数据转送的情况下使用的缓冲区。
此外,InitialR2T缓冲区782是第2缓冲区的一例,是在不是InitialR2T的情况下使用的缓冲区。另外,详细后述,但网络接口104在立即数据转送的情况下也准备InitialR2T缓冲区782。这里,不是立即数据转送的情况为以通常的转送方式来转送写入数据的情况。即为进行写入指令、Ready to Transfer(R2T)、写入数据及写入响应的包处理,将写入数据转送的情况。
会话信息783例如包含会话ID、将写入数据转送的服务器系统100的识别信息、转送时刻等。
<信息处理系统1的动作的说明>
图9A~图9C是说明信息处理系统1的动作的概略的图。
其中,图9A是表示不进行立即数据转送的情况下的服务器系统100与储存控制器102之间的指令及数据的交换的图。此外,图9B是表示进行了立即数据转送的情况下的服务器系统100与储存控制器102之间的指令及数据的交换的图。在图9A~图9B中,表示不使用本实施方式的网络接口104的情况。即,图9A~图9B表示以往的写入数据的转送方式。
另一方面,图9C表示使用本实施方式的网络接口104进行了立即数据转送的情况。在此情况下,表示经由网络接口104的、服务器系统100与储存控制器102之间的指令及数据的交换。即,图9C表示应用本实施方式的写入数据的转送方式。
在图9A中,由于不进行立即数据转送,所以以通常的转送方式来转送写入数据。即,在服务器系统100与储存控制器102之间,依次进行由(a1)写入指令(写入CMD)、(a2)Ready to Transfer(R2T)、(a3)写入数据(DATA)、(a4)写入响应(写入Rsp)表示的4个包处理。
在此情况下,如果储存控制器102从服务器系统100接受到(a1)写入指令(写入CMD),则储存控制器102的CPU102C进行(1)写入指令(写入CMD)的协议处理及(2)写入指令(写入CMD)处理。并且,CPU102C(3)在DRAM102D中确保数据保存区域。进而,CPU102C进行(4)写入请求(写入Req)处理。写入请求(写入Req)处理被CPU102C进行(5)协议处理,作为(a2)Ready to Transfer(R2T)被传送给服务器系统100。
接受到写入请求(写入Req)的服务器系统100将写入数据转送给储存控制器102((a3)写入数据(DATA))。该写入数据由CPU102C进行(6)协议处理并(7)向DRAM102D的数据区域进行数据转送。
接着,如果(8)数据的转送完成,则CPU102C进行(9)写入响应(写入Rsp)处理。写入请求(写入Rsp)处理被CPU102C进行(10)协议处理并作为(a4)写入响应(写入Rsp)被传送给服务器系统100。
在此情况下,储存控制器102的DRAM102D及CPU102C的负荷变大。
此外,在图9B中,进行立即数据转送。在此情况下,在服务器系统100与储存控制器102之间,依次进行由(b1)写入指令(写入CMD)&写入数据(DATA)、(b2)写入响应(写入Rsp)表示的两个包处理。
在此情况下,储存控制器102从服务器系统100接受(b1)写入指令(写入CMD)&写入数据(DATA)。即,从服务器系统100向储存控制器102将写入指令(写入CMD)和写入数据(DATA)一起传送。在此情况下,储存控制器102的CPU102C对于DRAM102D,预先(1)为了将写入数据暂时存储而确保缓冲区域,并且(2)确保数据区域。接着,CPU102C(3)对写入数据进行协议处理,(4)对数据区域进行数据转送。
接着,CPU102C进行(5)写入指令(写入CMD)处理,如果数据的转送完成,则进行(6)写入响应(写入Rsp)处理。对于写入响应(写入Rsp)处理由CPU102C进行(7)协议处理并作为(b2)写入响应(写入Rsp)传送给服务器系统100。
在此情况下,储存控制器102的CPU102C的负荷相比图9A的情况变小。但是,DRAM102D的负荷与图9A的情况同样大。
进而,在图9C中,进行立即数据转送。此时使用本实施方式的网络接口104。在此情况下,与图9B同样,依次进行由(b1)写入指令(写入CMD)&写入数据(DATA)、(b2)写入响应(写入Rsp)表示的两个包处理。
在此情况下,网络接口104从服务器系统100接受(b1)写入指令(写入CMD、写入请求)&写入数据。即,从服务器系统100向网络接口104将写入指令(写入CMD)和写入数据(DATA)一起发送。在此情况下,网络接口104的DPU202对于存储器(DRAM)208,预先(1)为了将写入数据暂时存储而确保缓冲区域。接着,DPU202进行(2)写入指令(写入CMD)的协议处理,再对储存控制器102进行(3)写入指令(写入CMD)处理(将写入指令转送、接收)。在储存控制器102中,CPU102C对于DRAM102D,(4)确保数据区域(在缓存存储器中确保数据保存用的存储区域)。进而,CPU102C对于网络接口104,(5)进行写入请求(写入Req、数据转送请求)处理。接着,网络接口104的DPU202对写入数据进行协议处理,(6)对储存控制器102的数据区域进行数据转送的处理。
接着,储存控制器102的CPU102C如果(7)数据的转送完成,则进行(8)写入响应(写入Rsp、写入应答)处理。此时,储存控制器102在作为规定的处理而进行了例如保存在缓存存储器中的数据的非易失化、双重化或储存驱动器保存中的某一个的情况下,转送写入响应。关于写入响应(写入Rsp)处理,由DPU202进行(9)协议处理,并作为(b2)写入响应(写入Rsp)传送给服务器系统100。
比较图9B与图9C,在图9B中同时接受写入指令(写入CMD)及写入数据的是储存控制器102,相对于此,在图9C中同时接受写入指令(写入CMD)及写入数据的是网络接口104。这在图9C中对应于(b1)接受写入指令(写入CMD)&写入数据(DATA)的处理。
此外,网络接口104代替储存控制器102而进行协议处理和写入数据的数据转送处理。这在图9C中对应于(2)写入指令(写入CMD)的协议处理及(6)对储存控制器102的数据区域进行数据转送的处理。此外,这也可以说是将储存控制器102进行的协议处理和写入数据的数据转送处理卸载到网络接口104。
由此,能够减小在立即数据转送的处理中耗费的储存控制器102的CPU102C的负荷。
进而,在图9B中在数据转送处理结束时向服务器系统100传送写入响应的是储存控制器102,相对于此,在图9C中在数据转送处理结束时向服务器系统100传送写入响应的是网络接口104。
进而,在图9B中具有在从服务器系统100接受写入数据时将写入数据暂时存储的缓冲区的是储存控制器102,相对于此,在图9C中在数据转送处理结束时向服务器系统100传送写入响应的是网络接口104。因此,网络接口104的缓冲区也可以说是代替在没有连接网络接口104(自装置)的情况下储存控制器102从服务器系统100一起接受写入指令(写入CMD)及写入数据时需要的缓冲器而设置的。此外,这也可以说将储存控制器102的缓冲器卸载到网络接口104。
在图9B所示的通常的立即数据转送中,需要预先分配储存控制器内的较多的存储器用于写入数据转送。因此,在与较多的服务器系统100连接的储存控制器102中,对于数据缓存的存储器分配等的、储存控制器102的主处理所需要的存储器分配会减少。相对于此,在本实施方式中,通过将储存控制器102的缓冲器卸载到网络接口104,能够削减在立即数据转送所需要的储存控制器102的存储器量。
此外,在本实施方式中,除了储存控制器的CPU负荷和存储器量削减以外,存储器访问负荷也能够从储存控制器102分离到网络接口104,所以能够高效地进行立即数据转送的处理。
在此情况下,储存控制器102的DRAM102D及CPU102C的负荷相比图9A~图9B的情况变小。此外,除了在立即数据转送的处理中耗费的储存控制器102的CPU102C的负荷及DRAM102D的存储器量的削减以外,存储器访问负荷也能够分离到网络接口104。因此,立即数据处理更有效率。结果,从服务器系统100向储存控制器102转送写入数据时的转送速度提高。因此,写入性能提高。
此外,在将图9A与图9C比较的情况下,图9A的储存控制器102的协议处理部与指令处理部之间的数据处理次序和图9C的网络接口104的协议处理部与储存控制器102的指令处理部之间的数据处理次序是等同的。
即,图9A的(2)写入指令(写入CMD)处理、(3)在DRAM102D中确保数据保存区域的处理、(4)写入请求(写入Req)处理、(8)数据的转送完成、(9)写入响应(写入Rsp)处理和图9C的(3)写入指令(写入CMD)处理、(4)确保数据区域的处理、(5)写入请求(写入Req)处理、(7)数据的转送完成、(8)写入响应(写入Rsp)处理分别是等同的。
另外,储存控制器102的协议处理部进行发送包的生成及其发送处理。网络接口104的协议处理部例如对应于协议处理303(参照图3),进行发送包的生成及其发送处理。此外,储存控制器102的指令处理部接收指令,对自装置进行控制。
如以上说明,在本实施方式中,使用网络接口104,代替储存控制器102而进行协议处理和写入数据的数据转送处理。并且其结果,使不使用网络接口104、不进行该处理时的储存控制器102的协议处理部与指令处理部之间的数据处理次序、和网络接口104的协议处理部与储存控制器102的指令处理部之间的数据处理次序等同。
在此情况下,在本实施方式中,从储存控制器102来看时的数据处理次序在图9A的以往的方式和图9C的使用网络接口104的立即数据转送方式中没有变化。即,与服务器系统100的立即数据转送的处理被网络接口104隐蔽,在储存控制器102中不知道是否进行了立即数据转送。因此,即使是例如进行了严密的存储器设计、不能准备用于立即数据转送的缓冲器的储存控制器102,也能够在维持以往的接口的互换性的同时进行立即数据转送。即,不用对目前设置的储存控制器102做任何变更,仅通过导入本实施方式的网络接口104,就能够构建能够进行立即数据转送的信息处理系统1。此外,在此情况下,也可以说在储存控制器102不对应于立即数据转送时也能够进行立即数据转送。
此外,在本实施方式中,作为网络接口104而例如使用SmartNIC(智能网络接口卡)。并且,SmartNIC具备存储器(在此情况下是上述的存储器(DRAM)208),缓冲区可以使用该存储器来实现。此外,关于协议处理,在SmartNIC的情况下由其所具备的通用的处理器(在此情况下,上述的DPU202)进行。因此,通过使用SmartNIC,能够由其所具备的处理器进行的软件处理来实现协议处理及数据转送处理。
另外,在上述的例子中,对配设在从服务器系统100接受写入数据的储存控制器102侧的网络接口104进行了说明,但并不限于此。本实施方式的网络接口104对于配设在目标器侧的设备中的情况也能够适当地使用。即,除了上述那样的在从服务器系统100接受写入数据的储存控制器102中配设网络接口104的情况以外,对于配设在从储存控制器102接受写入数据的驱动盒105上的网络接口104也能够适当地使用。另外,在此情况下,在将转送写入数据的一方设为启动器、将接受写入数据的一方设为目标器的情况下,也可以说对于在从启动器接受写入数据的目标器上配设网络接口104的情况能够适当地使用。此外,在此情况下,也可以说网络接口104被搭载在目标器上,经由网络从启动器接受写入指令及写入数据。另外,目标器相当于上述的网络接口104的主机。
此外,本实施方式的网络接口104不仅应用于图9C所示的立即数据转送方式的情况,也能够应用于图9A所示的不是立即数据转送的通常的转送方式的情况。即,在本实施方式的网络接口104中,也能够将这些转送方式切换使用。
包括以下的该事项也在内,对经由网络接口104的写入数据的数据转送处理更详细地进行说明。
<信息处理系统1的动作的详细的说明>
图10~图13是对经由网络接口104的写入数据的数据转送处理更详细地进行说明的顺序图。
图10~图13是表示从启动器对目标器(网络接口104的主机)经由网络接口104转送写入数据的情况的图。启动器例如是服务器系统100,目标器例如是储存控制器102。此外,这里将目标器也图示为网络接口主机。
其中,图10表示以不是立即数据转送的通常的转送方式转送写入数据的情况的图。
首先,在网络接口104中,进行事件轮询,确认来自启动器的写入指令(Write指令)的有无(步骤S101)。
接着,如果启动器发送了写入指令(iSCSI指令PDU(Write指令)),则网络接口104接收该指令(步骤S102)。在网络接口104中,作为协议处理,对写入指令(Write指令)进行PDU处理(步骤S103),接受I/O请求(步骤S104)。这里,网络接口104进行iSCSI的协议处理。
接着,网络接口104中作为对目标器进行的主机指令处理而生成主机指令(步骤S105)。进而,网络接口104将主机指令(SCSI指令接受)发送给目标器,目标器接受该主机指令(步骤S106)。
在目标器中,将任务启动(步骤S107),进行数据转送的准备(步骤S108)。数据转送的准备例如是确保资源、生成主机指令等。接着,目标器将主机指令(写入转送请求)发送给网络接口104,网络接口104接受该主机指令(步骤S109)。
进而,网络接口104进行R2T发出处理(步骤S110),进行R2T回信请求(步骤S111)。接着,网络接口104中作为协议处理而生成PDU(步骤S112)。
接着,网络接口104将Ready to Transfer(R2T)发送给启动器,启动器接受Readyto Transfer(R2T)(步骤S113)。
由此,启动器将写入数据发送给网络接口104(写入数据发送(Data-Out)),网络接口104接收(步骤S114)。
在网络接口104中,作为协议处理而对写入数据(Write数据)进行PDU处理(步骤S115),接受写入数据(Write数据)(步骤S116)。
接着,网络接口104开始向目标器进行写入数据(Write数据)转送处理(步骤S117),写入数据(Write数据)被转送至目标器(写入数据转送(DMA转送))(步骤S118)。
此外,网络接口104中作为对目标器进行的主机指令处理而生成主机指令(步骤S119)。进而,网络接口104将主机指令(写入转送响应)发送给目标器,目标器接受该主机指令(步骤S120)。
接着,目标器生成数据转送响应(步骤S121)。接着,目标器将主机指令(SCSI响应请求)发送给网络接口104,网络接口104接受该主机指令(步骤S122)。
进而,网络接口104进行响应发出处理(步骤S123),进行响应发送请求(步骤S124)。接着,网络接口104中作为协议处理而生成PDU(步骤S125)。
接着,网络接口104将写入响应(iSCSI响应PDU(写入响应))发送给启动器,启动器接受写入响应(步骤S126)。
进而,在网络接口104中,进行响应的发送完成(步骤S127)。网络接口104中作为对目标器进行的主机指令处理而生成主机指令(步骤S128)。进而,网络接口104将主机指令(SCSI响应完成)发送给目标器,目标器接受该主机指令(步骤S129)。
在目标器中,结束任务并释放资源(步骤S130)。
图11是表示以立即数据转送方式来转送写入数据的情况的图。
首先,在网络接口104中,进行事件轮询,确认来自启动器的写入指令(Write指令)及写入数据(Write数据)的转送的有无(步骤S201)。
接着,如果启动器发送了写入指令(iSCSI指令PDU(Write指令))及写入数据(Write数据PDU接收),则网络接口104将其接收(步骤S202)。在网络接口104中,作为协议处理,对写入指令(Write指令)及写入数据(Write数据)进行PDU处理(步骤S203),接受I/O请求及写入数据(Write数据)(步骤S204)。
接着,网络接口104中作为对目标器进行的主机指令处理而生成主机指令(步骤S205)。进而,网络接口104将主机指令(SCSI指令接受)发送给目标器,目标器接受该主机指令(步骤S206)。
在目标器中,将任务启动(步骤S207),进行数据转送的准备(步骤S208)。数据转送的准备例如是确保资源、生成主机指令等。接着,目标器将主机指令(写入转送请求)发送给网络接口104,网络接口104接受该主机指令(步骤S209)。
以下的步骤S210~步骤S223与图10的步骤S117~步骤S130是同样的。
图12表示在不是立即数据转送的通常的转送方式中InitialR2T为“是”而转送写入数据的情况。此时为不将写入指令和写入数据一块儿发送,为了发送最初的写入数据而需要R2T的转送处理。但是,这里表示了数据量较多,分两次进行数据转送的情况。在此情况下,也可以说储存控制器102对应于InitialR2T有效转送。
图12的步骤S301~步骤S318与图10的步骤S101~步骤S118是同样的,所以省略说明。
步骤S319~步骤S327与步骤S310~步骤S318是同样的。在步骤S310~步骤S318中,进行第1次的写入数据的转送,在步骤S319~步骤S327中,以同样的处理进行第2次的写入数据的转送。
进而,图12的步骤S328~步骤S339与图10的步骤S119~步骤S130是同样的,所以省略说明。
图13表示在立即数据转送方式中InitialR2T为“否”而转送写入数据的情况。此时为将写入指令和写入数据一块儿传送、不需要用来传送最初的写入数据的R2T的转送处理。在此情况下,也可以说写入请求基于InitialR2T无效转送,对应于无最初的R2T的数据发送。但是,这里表示数据量较多,分为两次进行数据转送的情况。
图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次的写入数据的转送时使用立即数据缓冲区781(参照图8)。相对于此,在第2次的写入数据的转送时使用InitialR2T缓冲区782(参照图8)。
即,如在图8中说明那样,网络接口104准备立即数据缓冲区781作为在立即数据转送的情况下使用的缓存。并且,网络接口104在第1次的写入数据的转送时使用立即数据缓冲区781。
另一方面,InitialR2T缓冲区782为不是在立即数据转送中而是在通常的转送方式中使用的缓冲区,但网络接口104在立即数据转送的情况下也准备InitialR2T缓冲区782。
并且,网络接口104在第2次的写入数据的转送时使用InitialR2T缓冲区782。即,InitialR2T缓冲区782用于在立即数据转送的情况下,在相同的会话中传送第2次的写入数据时将第2次的写入数据暂时地存储。
在第2次的写入数据的转送时,在不使用InitialR2T缓冲区782的情况下,需要传送Ready to Transfer(R2T),然后转送第2次的写入数据。此外,在传送第1次的写入数据时,如步骤S402那样需要写入指令,但在使用InitialR2T缓冲区782的情况下,如步骤S412那样关于第2次的写入数据,不赋予写入指令就能够传送。
如以上这样,通过准备并使用InitialR2T缓冲区782,不再需要最初的Ready toTransfer(R2T),在传送第2次的写入数据时不需要赋予写入指令。由此,在要转送的写入数据的数据量大,需要在相同的会话中进行第2次的立即数据转送的情况下,也能够高效地进行写入数据的转送。
此外,例如在将图10与图11比较的情况下,在网络接口104与目标器之间收发的指令及写入数据在通常的转送方式的情况和立即数据转送的情况下是同样的。另外,在将图12与图13比较的情况下也可以说是相同的。另一方面,在将本实施方式的网络接口104在通常的转送方式中使用的情况下,网络接口104与目标器之间的包处理也比没有设置网络接口104的情况减少。
图14A是说明在网络接口104中准备立即数据缓冲区781时的次序的流程图。
首先,网络接口104启动网络接口进程(步骤S501)。
接着,网络接口104将参数初始化(步骤S502)。
进而,网络接口104确保立即数据缓冲区781(步骤S503)。
接着,网络接口104向协议接收等待状态转移(步骤S504)。
图14B是说明在网络接口104中准备InitialR2T缓冲区782时的次序的流程图。
首先,网络接口104启动网络接口进程(步骤S601)。
接着,网络接口104将参数初始化(步骤S602)。
进而,网络接口104确保InitialR2T缓冲区782(步骤S603)。
接着,网络接口104向协议接收等待状态转移(步骤S604)。
图15是说明网络接口104转移为待命状态为止的处理的第1例的流程图。
首先,在网络接口104中,从启动器接收登录(login)指令(步骤S701)。
接着,网络接口104取得各种协商参数(步骤S702)。
进而,网络接口104判断启动器侧是否为Immediat Data=Yes(步骤S703)。
结果,在Immediat Data=Yes的情况下(步骤S703中为“是”),网络接口104判断目标器侧(自身设定)是否为Immediat Data=Yes(步骤S704)。
并且,在Immediat Data=Yes的情况下(步骤S704中为“是”),网络接口104将立即数据转送有效化(步骤S705)。即,在启动器侧及目标器侧(自身设定)双方中为进行立即数据转送的设定的情况下,网络接口104将立即数据转送有效化。
进而,网络接口104发出立即数据转送为有效之意的登录响应(步骤S706)。
接着,网络接口104转移为待命状态(步骤S707)。
相对于此,在启动器侧不是Immediat Data=Yes的情况下(步骤S703中为“否”)以及目标器侧(自身设定)不是Immediat Data=Yes的情况下(步骤S704中为“否”),网络接口104将立即数据转送无效化(步骤S708)。即,在启动器侧及目标器侧(自身设定)的某一方中不是进行立即数据转送的设定的情况下,网络接口104将立即数据转送无效化。
进而,网络接口104发出立即数据转送为无效之意的登录响应(步骤S709)。
图16是说明网络接口104转移为待命状态为止的处理的第2例的流程图。
首先,在网络接口104中,从启动器接收登录指令(步骤S801)。
接着,网络接口104取得各种协商参数(步骤S802)。
进而,网络接口104判断启动器侧是否为InitialR2T=No(步骤S803)。
结果,在InitialR2T=No的情况下(步骤S803中为“是”),网络接口104判断目标器侧(自身设定)是否为InitialR2T=No(步骤S804)。
并且,在InitialR2T=No的情况下(步骤S804中为“是”),网络接口104将InitialR2T转送无效化(步骤S805)。即,在启动器侧及目标器侧(自身设定)双方中为不进行InitialR2T转送的设定的情况下,网络接口104将InitialR2T转送无效化。如果将InitialR2T转送无效化,则在图13的第2次的写入数据的转送时,不再需要最初的Ready toTransfer(R2T)。在此情况下,在传送第2次的写入数据时,不需要如图13那样赋予写入指令。
进而,网络接口104发出InitialR2T转送为无效之意的登录响应(步骤S806)。
接着,网络接口104转移为待命状态(步骤S807)。
相对于此,在启动器侧不是InitialR2T=No的情况下(步骤S803中为“否”)、以及在目标器侧(自身设定)不是InitialR2T=No的情况下(步骤S804中为“否”),网络接口104将InitialR2T转送有效化(步骤S808)。即,在启动器侧及目标器侧(自身设定)双方中为不进行InitialR2T转送的设定以外的情况下,网络接口104将InitialR2T转送有效化。如果将InitialR2T转送有效化,则在图13的第2次的写入数据的转送时,需要Ready to Transfer(R2T)。在此情况下,在传送第2次的写入数据时,需要赋予写入指令,与图13不同。
进而,网络接口104发出InitialR2T转送为有效之意的登录响应(步骤S809)。
图17~图18是对图5所示的处理更详细地进行说明的流程图。
图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的尾部(步骤S906)。
主机队列控制304接受所负责的核241的内部发送队列371的尾部更新,将内部发送队列371的主机指令经由DMA控制307使用DMA控制器205转送给主机接收队列401(步骤S907)。
对应于主机指令的转送,主机队列控制304更新主机接收队列401的尾部(步骤S908)。关于主机接收队列401的尾部及头部的信息,既可以主机与网络接口104参照相同的信息,也可以将分别保持的信息转送。
进而,主机队列控制304更新内部发送队列371的头部(步骤S909)。
主机从主机接收队列401取得主机指令,更新主机接收队列401的头部(步骤S910)。网络接口104既可以与主机侧的更新匹配地接受主机接收队列401的头部并更新,也可以在其他的时间点从主机接受通知。主机参照所取得的主机指令,判定是否需要向网络接口104发送指令(步骤S911)。
在主机需要向网络接口104发送主机指令的情况下(步骤S911中为“是”),主机将主机指令排入到主机发送队列402中(步骤S912),更新主机发送队列402的尾部(步骤S913)。响应于主机所拥有的主机发送队列402的信息的更新,网络接口104也更新其拥有的主机发送队列402的信息。该更新既可以是主机和网络接口104参照共同的信息,也可以是在它们之间转送更新信息。
另一方面,在主机不需要向网络接口104发送主机指令的情况下(步骤S911中为“否”),结束一系列的处理。
接受主机发送队列402的尾部更新,某一个核241的主机队列控制304由DMA控制307使用DMA控制器205将排列于主机发送队列402中的主机指令转送给网络接口104(步骤S914)。例如,既可以是各核241定期地相互取得锁定,看是否有主机接收队列的更新,在有更新的情况下进行转送处理,也可以拥有专门进行主机接收队列的更新确认和转送的核241,也可以制作多个主机接收队列,在自己负责的接收队列中有更新的情况下进行转送处理。主机队列控制304将来自主机的主机指令排入到内部接收队列372中(步骤S915)。例如,既可以对主机指令的内容进行确认,判定排入到哪个内部接收队列372中,在有多个主机接收队列的情况下也可以排入到对应的内部接收队列372中。
响应于主机指令向内部接收队列372的排入,主机队列控制304更新内部接收队列372的尾部(步骤S916),进而更新主机发送队列402的头部(步骤S917)。主机发送队列402的头部的更新方法如关于主机发送队列402的尾部的更新说明的那样。
指令处理305从内部接收队列372取得主机指令,执行处理(步骤S918)。
接着,指令处理305判定数据转送的有无(步骤S919)。
在需要进行不使用缓冲区的数据转送的情况下(步骤S919中为“是”),DMA控制器205不经由缓冲区而在网络控制器203与主机之间转送数据(步骤S920)。
在不需要进行不使用缓冲区的数据转送的情况下(步骤S919中为“否”),不进行数据转送而进行以下的处理。主机队列控制304更新内部接收队列372的头部(步骤S921)。
接着,指令处理305判定是否需要对网络发送通信包(步骤S922)。
在不需要的情况下(步骤S922中为“否”),流程回到步骤S904。
在需要的情况下(步骤S922中为“是”),指令处理305对协议处理303委托,协议处理303执行协议处理而生成通信包,网络控制器203将通信包发送给网络(步骤S923)。
图18是表示在启动器侧设有网络接口104时的处理流程例的图。
这例如是被安装在访问储存控制器102的服务器系统100、或储存器间通信中的启动器的储存控制器102中的情况。
主机将主机指令排入到主机发送队列402中(步骤S951),更新主机发送队列402的尾部(步骤S952)。响应于主机拥有的主机发送队列402的信息的更新,网络接口104也更新其拥有的主机发送队列402的信息。既可以是主机和网络接口104参照共同的信息,也可以是在它们之间转送更新信息。
接受主机发送队列402的尾部更新,某一个核241的指令处理305由DMA控制307使用DMA控制器205,将排入到主机发送队列402中的主机指令转送给网络接口104(步骤S953)。例如,既可以是各核241定期地相互取得锁定,看有没有主机接收队列的更新,在有更新的情况下进行转送处理,也可以拥有专门进行主机接收队列的更新确认和转送的核241,也可以制作多个主机接收队列,在自己负责的接收队列中有更新的情况下进行转送处理。
主机队列控制304将来自主机的主机指令排入到内部接收队列372中(步骤S954)。例如,如果是新的会话,则既可以以轮询调度(Round robin)法选择排入目的地的内部接收队列372,也可以确认主机指令的内容,判定排入到哪个内部接收队列372中,在有多个主机接收队列的情况下也可以排入到对应的内部接收队列372中。
响应于主机指令向内部接收队列372的排入,主机队列控制304更新内部接收队列372的尾部(步骤S955),进而更新主机发送队列402的头部(步骤S956)。主机发送队列402的头部的更新方法如关于主机发送队列402的尾部的更新说明的那样。
指令处理305从内部接收队列372取得主机指令,执行处理(步骤S957)。
接着,指令处理305判定数据转送的有无(步骤S958)。在需要不使用缓冲区的数据转送的情况下(步骤S958中为“是”),DMA控制器205不经由缓冲区就在网络控制器203与主机之间转送数据(步骤S959)。
在不需要不使用缓冲区的数据转送的情况下(步骤S958中为“否”),主机队列控制304更新内部接收队列372的头部(步骤S960)。
接着,指令处理305判定是否需要对网络发送通信包(步骤S961)。
在不需要的情况下(步骤S961中为“否”),流程前进到步骤S963。
在需要的情况下(步骤S961中为“是”),指令处理305对协议处理303委托,协议处理303执行协议处理而生成通信包,网络控制器203将通信包发送给网络(步骤S962)。
接着,指令处理305生成用来将来自主机的主机指令的处理结果向主机通知的主机指令(步骤S963)。处理结果的通知例如向主机通知对网络发送了通信包。
进而,指令处理305将所生成的主机指令排入到网络接口104内的内部发送队列371中(步骤S964)。
响应于主机指令的排入,指令处理305更新内部发送队列371的尾部(步骤S965)。
接受内部发送队列371的尾部更新,主机队列控制304接受所负责的核241的内部发送队列371的尾部更新,将内部发送队列371的主机指令经由DMA控制307使用DMA控制器205转送给主机接收队列401。(步骤S966)。
对应于主机数据的转送,主机队列控制304更新主机接收队列401的尾部(步骤S967)。
关于主机接收队列401的尾部、头部的信息,既可以是网络接口104和主机参照相同的信息,也可以是转送分别保持的信息。进而,主机队列控制304更新内部发送队列371的头部(步骤S968)。
主机从主机接收队列401取得主机指令,更新主机接收队列401的头部(步骤S969)。
<数据发送方法的说明>
这里,储存系统S进行的处理可以作为储存系统S中的数据发送方法来掌握,储存系统S具备:驱动盒105,保存数据;储存控制器102,具备处理器及缓存存储器,对相对于驱动盒105输入输出的数据进行处理;以及网络接口104,具备处理器;在网络接口104接收到写入请求的情况下,网络接口104进行写入请求的协议处理,并且向储存控制器102转送写入指令;储存控制器102从网络接口104接收写入指令,在缓存存储器中确保数据保存用的存储区域,向网络接口104发送数据转送请求;网络接口104从储存控制器102接收数据转送请求,将与写入请求有关的数据保存到所确保的缓存存储器上的存储区域中;储存控制器102对保存在缓存存储器中的与写入处理有关的数据进行规定的处理,向网络接口104转送写入响应;网络接口104从储存控制器102接收写入响应,进行协议处理而响应于写入请求的请求源。
Claims (10)
1.一种储存系统,具备:
储存驱动器,保存数据;以及
储存控制器,具备处理器及缓存存储器,对相对于上述储存驱动器输入输出的数据进行处理;
其中,
上述储存系统具备具有处理器的网络接口;
在接收到写入请求的情况下,
上述网络接口进行上述写入请求的协议处理,并且将写入指令转送给上述储存控制器;
上述储存控制器从上述网络接口接收上述写入指令,在上述缓存存储器中确保数据保存用的存储区域,向上述网络接口发送数据转送请求;
上述网络接口从上述储存控制器接收上述数据转送请求,将与上述写入请求有关的数据保存到所确保的上述缓存存储器上的存储区域中;
上述储存控制器对保存在上述缓存存储器中的与写入处理有关的数据进行规定的处理,将写入响应转送给上述网络接口;
上述网络接口从上述储存控制器接收上述写入响应,进行协议处理而响应上述写入请求的请求源。
2.如权利要求1所述的储存系统,其中,
上述网络接口具有存储器;
上述网络接口将数据与上述写入请求一起接收并保存到上述网络接口的上述存储器中,接收上述数据转送请求,将保存在上述存储器中的数据保存到上述缓存存储器中。
3.如权利要求2所述的储存系统,其中,
上述写入请求基于立即数据转送而与写入数据一起被发送。
4.如权利要求3所述的储存系统,其中,
上述储存控制器不对应于立即数据转送。
5.如权利要求2所述的储存系统,其中,
上述写入请求基于InitialR2T无效转送,对应于没有最初的R2T的数据发送,其中InitialR2T是指最初的准备转送。
6.如权利要求3所述的储存系统,其中,
上述储存控制器对应于InitialR2T有效转送,其中InitialR2T是指最初的准备转送。
7.如权利要求1所述的储存系统,其中,
上述储存控制器在作为上述规定的处理而进行了保存在上述缓存存储器中的数据的非易失化、双重化或储存驱动器保存的某一种的情况下,转送上述写入响应。
8.一种数据发送方法,是储存系统中的数据发送方法,上述储存系统具备:
储存驱动器,保存数据;
储存控制器,具备处理器及缓存存储器,对相对于上述储存驱动器输入输出的数据进行处理;以及
网络接口,具备处理器;
其中,在上述数据发送方法中,
在上述网络接口接收到写入请求的情况下,
上述网络接口进行上述写入请求的协议处理,并且将写入指令转送给上述储存控制器;
上述储存控制器从上述网络接口接收上述写入指令,在上述缓存存储器中确保数据保存用的存储区域,向上述网络接口发送数据转送请求;
上述网络接口从上述储存控制器接收上述数据转送请求,将与上述写入请求有关的数据保存到所确保的上述缓存存储器上的存储区域中;
上述储存控制器对保存在上述缓存存储器中的与写入处理有关的数据进行规定的处理,将写入响应转送给上述网络接口;
上述网络接口从上述储存控制器接收上述写入响应,进行协议处理而响应上述写入请求的请求源。
9.一种网络接口,具备处理器和存储器,与网络连接,其中,
在经由上述网络接收到包含数据的写入请求的情况下,将上述数据保存到上述存储器中,并将不包含上述数据的上述写入请求转送给上述写入请求的目标器;
在从上述目标器接收到数据转送请求的情况下,将保存在上述存储器中的上述数据保存到上述数据转送请求所指定的存储区域中。
10.如权利要求9所述的网络接口,其中,
在接收到包含上述数据的上述写入请求的情况下,进行协议处理,转送不包含上述数据的上述写入请求。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022-113983 | 2022-07-15 | ||
JP2022113983A JP7473600B2 (ja) | 2022-07-15 | 2022-07-15 | ストレージシステム、データ送信方法およびネットワークインタフェース |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117407333A true CN117407333A (zh) | 2024-01-16 |
Family
ID=89496717
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310132362.5A Pending CN117407333A (zh) | 2022-07-15 | 2023-02-17 | 储存系统、数据发送方法及网络接口 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11880570B1 (zh) |
JP (1) | JP7473600B2 (zh) |
CN (1) | CN117407333A (zh) |
Family Cites Families (11)
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 |
JP2005165619A (ja) | 2003-12-02 | 2005-06-23 | Hitachi Ltd | データ転送装置の制御方法、データ転送装置、記憶デバイス制御装置、記憶デバイス制御装置の制御方法、及びチャネルアダプタ。 |
US8387073B1 (en) | 2007-03-23 | 2013-02-26 | Qlogic, Corporation | Method and system for processing network packets |
US9223645B2 (en) * | 2012-05-08 | 2015-12-29 | 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 |
JP6898393B2 (ja) | 2019-03-22 | 2021-07-07 | 株式会社日立製作所 | ストレージシステム及びデータ転送方法 |
US11593140B2 (en) | 2019-06-28 | 2023-02-28 | Hewlett Packard Enterprise Development Lp | Smart network interface card for smart I/O |
CN113778319A (zh) | 2020-06-09 | 2021-12-10 | 华为技术有限公司 | 网卡的数据处理方法以及网卡 |
US11736565B2 (en) | 2020-09-28 | 2023-08-22 | Vmware, Inc. | Accessing an external storage through a NIC |
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
Also Published As
Publication number | Publication date |
---|---|
US11880570B1 (en) | 2024-01-23 |
US20240020010A1 (en) | 2024-01-18 |
JP2024011738A (ja) | 2024-01-25 |
JP7473600B2 (ja) | 2024-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7865588B2 (en) | System for providing multi-path input/output in a clustered data storage network | |
CA2473832C (en) | Methods and apparatus for implementing virtualization of storage within a storage area network | |
US8627136B2 (en) | Non-disruptive failover of RDMA connection | |
US10423332B2 (en) | Fibre channel storage array having standby controller with ALUA standby mode for forwarding SCSI commands | |
AU2003238219A1 (en) | Methods and apparatus for implementing virtualization of storage within a storage area network | |
WO2021073546A1 (zh) | 数据访问方法、装置和第一计算设备 | |
US20220222016A1 (en) | Method for accessing solid state disk and storage device | |
US11606429B2 (en) | Direct response to IO request in storage system having an intermediary target apparatus | |
KR20200008483A (ko) | PCIe EP 및 네트워크 인터페이스를 통해 동시에 듀얼 라인 SSD 장치에 액세스하는 방법 | |
US11842050B2 (en) | System and method for enabling smart network interface card (smartNIC) access to local storage resources | |
US7421520B2 (en) | High-speed I/O controller having separate control and data paths | |
US20230328008A1 (en) | Network interface and buffer control method thereof | |
US11256420B2 (en) | Method and apparatus for scaling out storage devices and scaled-out storage devices | |
JP7473600B2 (ja) | ストレージシステム、データ送信方法およびネットワークインタフェース | |
EP4357949A1 (en) | Authentication method and apparatus, and storage system | |
US11435955B1 (en) | System and method for offloading copy processing across non-volatile memory express (NVMe) namespaces | |
US11995354B2 (en) | Storage area network controller with integrated circuit having a plurality of logic paths | |
WO2014077451A1 (ko) | Iscsi 스토리지 시스템을 이용한 네트워크 분산 파일 시스템 및 방법 | |
Dalessandro et al. | iSER storage target for object-based storage devices | |
US9158735B1 (en) | Techniques for generating unique identifiers | |
CN117312326A (zh) | 基于云原生数据库的数据存储方法及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |