CN105068817B - 将数据写入存储设备的方法及存储设备 - Google Patents

将数据写入存储设备的方法及存储设备 Download PDF

Info

Publication number
CN105068817B
CN105068817B CN201510530129.8A CN201510530129A CN105068817B CN 105068817 B CN105068817 B CN 105068817B CN 201510530129 A CN201510530129 A CN 201510530129A CN 105068817 B CN105068817 B CN 105068817B
Authority
CN
China
Prior art keywords
data
message
processor
memory
storage equipment
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
Application number
CN201510530129.8A
Other languages
English (en)
Other versions
CN105068817A (zh
Inventor
罗先强
邱军
严华兵
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201510530129.8A priority Critical patent/CN105068817B/zh
Publication of CN105068817A publication Critical patent/CN105068817A/zh
Priority to PCT/CN2016/086225 priority patent/WO2017032152A1/zh
Application granted granted Critical
Publication of CN105068817B publication Critical patent/CN105068817B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Telephonic Communication Services (AREA)

Abstract

本发明实施例涉及一种将数据写入存储设备的方法及存储设备,该存储设备包括网卡、内存和处理器;所述方法由网卡执行包括:接收远程过程调用RPC消息,RPC消息包括属性信息和待写入存储设备的数据;根据属性信息对RPC消息进行解析,获得数据;接收处理器发送的地址分配消息,地址分配消息包括处理器为数据预分配的内存地址;根据内存地址将数据写入内存中。由此,可以避免存储设备中数据部分的重复拷贝,从而可以达到节约存储设备的处理器资源的目的。

Description

将数据写入存储设备的方法及存储设备
技术领域
本发明涉及移动通信领域,尤其涉及一种将数据写入存储设备的方法及存储设备。
背景技术
网络中的存储设备往往具有存储数据的功能,如,网络附属存储(NetworkAttached Storage,NAS),其包括:网卡、处理器和内存,而访问NAS中存储的数据的设备称为NAS客户端,NAS客户端与NAS基于远程过程调用(Remote Procedure Call Protocol,RPC)协议通信,RPC协议是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
现有技术中,在将数据写入存储设备时,首先由网卡预先分配接收缓存,在完成上述预先分配的过程之后,由网卡接收NAS客户端发送的RPC消息,并将RPC消息的数据部分写入到接收缓存中,之后再通知处理器根据为数据部分预先分配的内存地址,将接收缓存中的数据部分拷贝到内存中,即每接收到一个RPC消息都有一次数据拷贝的过程,而该数据拷贝的过程通常会消耗处理器30%-40%的资源。此外,若全部的RPC消息包含多个RPC消息时,则需要多次数据拷贝的过程,由此,造成了存储设备的处理器资源的严重浪费。
发明内容
本发明实施例提供了一种将数据写入存储设备的方法及存储设备,可以避免上述数据拷贝的过程,从而可以达到节约存储设备的处理器资源的目的。
第一方面,提供了一种将数据写入存储设备的方法,所述存储设备包括网卡、内存和处理器;所述方法由网卡执行包括以下步骤:
接收远程过程调用RPC消息,所述RPC消息包括属性信息和待写入所述存储设备的数据;
根据所述属性信息对所述RPC消息进行解析,获得所述数据;
接收所述处理器发送的地址分配消息,所述地址分配消息包括所述处理器为所述数据预分配的内存地址;
根据所述内存地址将所述数据写入所述内存中。
结合第一方面,在第一方面的第一种实现方式中,所述内存包括至少一个存储单元,所述存储单元的大小是根据所述存储设备的网络传输时延、网络带宽以及响应时间确定的,所述内存地址是指所述存储单元的地址。
结合第一方面或第一方面的第一种实现方式,在第一方面的第二种实现方式中,所述内存地址是由所述处理器通过调用所述存储设备的应用程序接口API函数为所述数据预分配的。
结合第一方面或第一方面的第一种实现方式或第一方面的第二种实现方式,在第一方面的第三种实现方式中,所述方法还包括:
判断所述RPC消息是否全部接收完成;
当所述RPC消息全部接收完成时,向所述处理器发送第一通知消息,所述第一通知消息用于指示所述处理器根据所述内存地址从所述内存中读取所述数据,并对所述数据进行处理。
结合第一方面的第三种实现方式,在第一方面的第四种实现方式中,所述存储设备还包括:磁盘,所述方法还包括:
在接收到所述处理器在将所述数据写入所述磁盘后返回的写成功消息时,向所述处理器发送第二通知消息,所述第二通知消息用于指示所述处理器撤销所述内存地址。
第二方面,提供了一种存储设备,该存储设备包括:网卡、内存和处理器;
所述网卡,用于接收远程过程调用RPC消息,所述RPC消息包括属性信息和待写入所述存储设备的数据;
所述网卡,还用于根据所述属性信息对所述RPC消息进行解析,获得所述数据;
所述处理器,用于为所述数据预分配内存地址,并向所述网卡发送地址分配消息,所述地址分配消息包括预分配的所述内存地址;
所述网卡,还用于接收所述地址分配消息,根据所述地址分配消息中的预分配的所述内存地址,将所述数据写入所述内存中;
所述内存,用于存储所述数据。
结合第二方面,在第二方面的第一种实现方式中,所述内存包括至少一个存储单元,所述存储单元的大小是根据所述存储设备的网络传输时延、网络带宽以及响应时间确定的,所述内存地址是指所述存储单元的地址。
结合第二方面或第二方面的第一种实现方式,在第二方面的第二种实现方式中,所述内存地址是由所述处理器通过调用所述存储设备的应用程序接口API函数为所述数据预分配的。
结合第二方面或第二方面的第一种实现方式或第二方面的第二种实现方式,在第二方面的第三种实现方式中,所述网卡,还用于判断所述RPC消息是否全部接收完成,当所述RPC消息全部接收完成时,向所述处理器发送第一通知消息;
所述处理器,还用于接收所述第一通知消息,根据所述内存地址从所述内存中读取所述数据,并对所述数据进行处理。
结合第二方面的第三种实现方式,在第二方面的第四种实现方式中,所述存储设备还包括:磁盘;
所述处理器,还用于将所述数据写入所述磁盘,并向所述网卡返回写成功消息;
所述磁盘,用于存储所述数据;
所述网卡,还用于接收所述写成功消息,向所述处理器发送第二通知消息;
所述处理器,还用于接收所述第二通知消息,根据所述第二通知消息撤销所述内存地址。
本发明实施例涉及一种将数据写入存储设备的方法及存储设备,该存储设备包括网卡、内存和处理器;所述方法由网卡执行包括:接收远程过程调用RPC消息,RPC消息包括属性信息和待写入存储设备的数据;根据属性信息对RPC消息进行解析,获得数据;接收处理器发送的地址分配消息,地址分配消息包括处理器为数据预分配的内存地址;根据内存地址将数据写入内存中。由此可知,本发明实施例中,网卡在接收到RPC消息并对其进行解析之后,根据处理器预分配的内存地址,直接将解析得到的数据写入内存中,从而可以避免现有技术中网卡每接收到一个RPC消息,都需要通知处理器将RPC消息的数据部分从接收缓存拷贝到内存中,即避免了处理器对数据部分的重复拷贝,从而本发明的将数据写入存储设备的方法可以达到节约存储设备的处理器资源的目的。
附图说明
图1为存储设备示意图之一;
图2为本发明实施例一提供的将数据写入存储设备的方法流程图;
图3为本发明实施例二提供的存储设备示意图之二。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为便于对本发明实施例的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本发明实施例的限定。
本发明提供的将数据写入存储设备的方法适用于将数据写入图1所示的存储设备中,该存储设备主要用于存储数据,其主要包括:网卡、处理器和内存,网卡主要用于从网络侧接收数据报文,或者向网络侧发送数据报文。如,当网络侧为NAS客户端时,则网卡主要用于从NAS客户端接收RPC消息(也称NAS消息),或者向NAS客户端发送RPC消息;而处理器主要用于为网卡接收的RPC消息的待写入存储设备的数据预分配内存地址;而内存主要用于存储网卡接收的RPC消息的待写入存储设备的数据;此外,图1中的存储设备还可以包括磁盘,该磁盘用于持久性存储上述内存中存储的数据。
上述预分配的内存地址在内存中对应至少一个存储单元,该存储单元的大小是根据存储设备的网络传输时延(Round Trip Time,RTT)、网络带宽以及响应时间确定的。
图1中的存储设备也可以称为NAS,该NAS中的网卡不仅可以用于收发NAS客户端的RPC消息;此外,网卡还具有NAS协议部分的功能,如可以对接收到的RPC消息进行解析,获得待写入存储设备的数据,解析是指对接收到的RPC消息进行编码、解码以及定界等操作;最后,网卡还用于对向NAS客户端发送的RPC消息进行组装,如添加报文头等。
需要说明的是,图1中的NAS还可以包括文件系统,所述文件系统保存在内存中,具体地,处理器可以通过调用文件系统,将存储在内存中的待写入存储设备的数据转储到磁盘,以实现数据的持久性存储。
图2为本发明实施例一提供的将数据写入存储设备的方法流程图。如图2所示,所述方法的执行主体可以为图1中的网卡,所述方法具体可以包括:
S210,接收远程过程调用RPC消息,所述RPC消息包括属性信息和待写入所述存储设备的数据。
此处,RPC消息具体可以为写请求,其可以包括属性信息和待写入所述存储设备的数据,其中,属性信息是指RPC消息中包括的各个字段,如,可以包括:报文头部、文件名称、文件大小和数据部分等,而待写入所述存储设备的数据即为上述属性信息中数据部分对应的字段内容。
S220,根据所述属性信息对所述RPC消息进行解析,获得所述数据。
网卡在接收到该RPC消息之后,根据属性信息对其进行解析:即根据属性信息中的报文头部对应的字段内容,去掉RPC消息的报文头部,并保留RPC消息的正文信息;之后网卡再对正文信息进行解码以及定界,如,解析出RPC消息的正文信息包括的各个字段,如文件名称、文件大小以及数据部分等,并确定出正文信息中哪些部分用于表示文件名称,哪些部分用于表示文件大小以及数据部分等;最后读取数据部分对应的字段内容,此处,数据部分对应的字段内容即为待写入存储设备的数据。
S230,接收所述处理器发送的地址分配消息,所述地址分配消息包括所述处理器为所述数据预分配的内存地址。
此处,处理器可以调用存储设备(如,NAS)的应用程序接口(ApplicationProgramming Interface,API)函数为所述数据预分配内存地址。
可选地,所述内存可以包括至少一个存储单元,则处理器为所述数据预分配内存地址即为处理器为所述数据预分配存储单元的地址。
需要说明的是,上述存储单元的大小可以根据NAS客户端与NAS通信的网络传输时延、网络带宽以及NAS的响应时间确定。举例来说,假设RTT为10ms,网络带宽为40Gb,且响应时间为10ms时,则预分配的存储单元的大小可以为160MB。
需要说明的是,当有多个存储单元时,多个存储单元的大小可以相同,也可以不相同。当然,在实际应用中,存储单元的大小也可以是固定的。在一种具体实现方式中,多个存储单元可以组成接收队列(Receive Queue,RQE),可以理解的是,因为队列有先进先出的特点,所以先接收到的RPC消息的数据部分优先处理。
举例来说,假设处理器将起始地址为20K,结束地址为100K的内存地址作为预分配的内存地址,则网卡接收的处理器发送的地址分配消息可以包括:20K-100K。此处,假设内存中一个存储单元的大小为20K,且各存储单元的大小相同,则上述预分配的内存地址即为4个存储单元的地址。
当然,在实际应用中,网卡接收的处理器发送的地址分配消息,也可以发送起始地址以及预分配的全部的存储单元的大小,本发明对此不作限定。如前述例子中,地址分配消息可以包括:20K(起始地址)和80K(四个存储单元的大小)。
S240,根据所述内存地址将所述数据写入所述内存中。
如前述例子中,预分配的内存地址的起始地址为:20K,且假设待写入存储设备的数据大小为10K,则可以将上述待写入存储设备的数据写入内存中起始地址对应的位置。
可选地,本发明的实施例还可以包括计算所述数据在内存中的存储位置(也称数据的规整)的步骤,如,在写入上述10K大小的数据之后,当网卡接收到新的RPC消息时,因为上述存储单元中已经写入10K的待写入存储设备的数据,因此,当网卡向内存中写入新的RPC消息的待写入存储设备的数据时,不是从内存的起始地址开始写入,而是从内存的地址为10K的位置开始写入新的RPC消息的待写入存储设备的数据。
综上,本发明实施例中,将NAS的协议部分卸载到了网卡,也即由网卡对接收的RPC消息进行解析,而不是由处理器对RPC消息进行解析,由此,可以达到节约处理器的资源的目的,也即达到节约存储设备的处理器资源的目的。
可选地,本发明的实施例还可以包括如下步骤:
判断所述RPC消息是否全部接收完成;
当所述RPC消息全部接收完成时,向所述处理器发送第一通知消息,所述第一通知消息用于指示所述处理器根据所述内存地址从所述内存中读取所述数据,并对所述数据进行处理。
需要说明的是,通常一个完整的RPC消息可以包括多个RPC消息,在一种具体的实施方式中,网卡可以根据RPC消息中的字段“消息总长度”和“已接收消息的长度”对应的内容来判断是否接收完成一个完整的RPC消息,即在上述两个字段对应的内容一致时,可以判断一个完整的RPC消息接收完成,之后向处理器发送第一通知消息。也即本发明实施例是在接收到一个完整的RPC消息时,才向处理器发送第一通知消息,由此,可以避免现有技术在每接收到一个RPC消息,都需要向处理器发送通知消息,从而导致处理器接收次数多,进而耗费存储设备资源的问题,由此,本发明实施例的数据处理方法可以达到节约存储设备的处理器资源的目的。
处理器在接收到上述第一通知消息之后,根据预分配的内存地址从所述内存中读取所述数据。在一种具体实现方式中,上述预分配的内存地址可以为指针信息。如前述例子中,处理器可以从20K-100K的内存地址之间读取所述数据,即处理器可以从20K开始的四个存储单元中读取所述数据。
进一步地,处理器对所述数据进行处理包括:
处理器将所述数据写入图1中的磁盘,并在写入成功后向网卡返回写成功消息,否则返回写失败消息。在一种具体实现方式中,处理器可以通知文件系统将所述数据写入磁盘。此处,文件系统将所述数据写入磁盘的方法属于现有技术,在此不作赘述。
网卡在接收到处理器返回的写成功消息或者写失败消息后,向NAS客户端返回上述写成功消息或者写失败消息。
在一种具体实现方式中,当有多个写成功消息或者写失败消息需要发送时,则多个写成功消息或者写失败消息组成发送队列(Send Queue,SQE),先进入该发送队列的写成功消息或者写失败消息优先发送。
可选地,网卡在接收到上述写成功消息之后,还可以向处理器发送第二通知消息,所述第二通知消息用于指示所述处理器撤销所述内存地址。
如前述例子中,处理器预分配的内存地址包括:20K-100K,待上述网卡接收到处理器发送的用于表示待写入存储设备的数据写入磁盘成功的消息时,处理器回收起始地址20K至终止地址100K的内存地址,以便写入新的RPC消息的待写入存储设备的数据。
综上,网卡在接收到RPC消息时,直接根据属性信息,对RPC消息进行解析,得到待写入存储设备的数据;之后根据从处理器接收的预分配的内存地址,将所述数据写入内存中,当全部的RPC消息接收完成时,网卡向处理器发送第一通知消息,处理器在接收到上述第一通知消息之后,根据预分配的内存地址,读取并处理上述数据即可,而不需要再进行RPC消息的解析,由此可知,本发明的将数据写入存储设备的方法,不需要预先分配接收缓存,也不需要将数据从接收缓存拷贝到内存,而上述拷贝过程通常需要消耗30%-40%的CPU资源,所以本发明的将数据写入存储设备的方法可以达到节约存储设备资源的目的,并且可以提高数据处理的效率。
图3为本发明实施例二提供的存储设备示意图之二。所述设备可以用于执行图2所述的方法。图3中,所述存储设备包括:网卡301、处理器302和内存303。
网卡301,用于接收远程过程调用RPC消息,所述RPC消息包括属性信息和待写入所述存储设备的数据。
此处,RPC消息具体可以为写请求,其可以包括属性信息和待写入所述存储设备的数据,其中,属性信息是指RPC消息中包括的各个字段,如,可以为报文头部、文件名称、文件大小和数据部分等,而待写入所述存储设备的数据即为上述属性信息中数据部分对应的字段内容。
网卡301,还用于根据所述属性信息对所述RPC消息进行解析,获得所述数据。
网卡301在接收到该RPC消息之后,根据属性信息对其进行解析:即根据属性信息中的报文头部对应的字段内容,去掉RPC消息的报文头部,并保留RPC消息的正文信息;之后网卡301再对正文信息进行解码以及定界,如,解析出RPC消息的正文信息包括的各个字段,如文件名称、文件大小以及数据部分等,并确定出正文信息中哪些部分用于表示文件名称,哪些部分用于表示文件大小以及数据部分等;最后读取数据部分对应的字段内容,此处,数据部分对应的字段内容即为待写入存储设备的数据。
处理器302,用于为所述数据预分配内存地址,并向网卡301发送地址分配消息,所述地址分配消息包括预分配的内存地址。
此处,处理器302可以调用存储设备(如,NAS)的API函数为所述数据预分配内存地址。
举例来说,假设处理器302将起始地址为20K,结束地址为100K的内存地址作为预分配的内存地址,则网卡301接收的处理器302发送的地址分配消息可以包括:20K-100K。
网卡301,还用于接收所述地址分配消息,根据所述地址分配消息中的预分配的内存地址,将所述数据写入内存303中。
此处,内存303包括至少一个存储单元,所述存储单元的大小是根据所述存储设备的网络传输时延、网络带宽以及响应时间确定的,内存地址是指所述存储单元的地址。
如前述例子中,预分配的内存地址的起始地址为:20K,且假设待写入存储设备的数据大小为10K,则可以将上述待写入存储设备的数据写入内存303中起始地址对应的位置。
可选地,处理器302还可以用于计算所述数据在内存303中的存储位置(也称数据的规整)的步骤,如,在写入上述10K大小的数据之后,当网卡301接收到新的RPC消息时,因为上述存储单元中已经写入10K的待写入存储设备的数据,因此,当网卡301向内存303中写入新的RPC消息的待写入存储设备的数据时,不是从内存303的起始地址开始写入,而是从内存303的地址为10K的位置开始写入新的RPC消息的待写入存储设备的数据。
内存303,用于存储所述数据。
综上,本发明实施例中,将NAS的协议部分卸载到了网卡301,也即由网卡301对接收的RPC消息进行解析,而不是由处理器302对RPC消息进行解析,由此,可以达到节约处理器302的资源的目的,也即达到节约存储设备的处理器资源的目的。
可选地,网卡301,还用于判断所述RPC消息是否全部接收完成,当所述RPC消息全部接收完成时,向处理器302发送第一通知消息;
处理器302,还用于接收所述第一通知消息,根据内存地址从内存303中读取所述数据,并对所述数据进行处理。
需要说明的是,通常一个完整的RPC消息可以包括多个RPC消息,在一种具体的实施方式中,网卡301可以根据RPC消息中的字段“消息总长度”和“已接收消息的长度”对应的内容来判断是否接收完成一个完整的RPC消息,即在上述两个字段对应的内容一致时,可以判断一个完整的RPC消息接收完成,之后向处理器302发送第一通知消息。也即本发明实施例是在接收到一个完整的RPC消息时,才向处理器302发送第一通知消息,由此,可以避免现有技术在每接收到一个RPC消息,都需要向处理器302发送通知消息,从而导致处理器302接收次数多,进而耗费存储设备资源的问题,由此,本发明实施例的数据处理方法可以达到节约存储设备的处理器资源的目的。
处理器302在接收到上述第一通知消息之后,根据预分配的内存地址从内存303中读取所述数据。在一种具体实现方式中,上述预分配的内存地址可以为指针信息。如前述例子中,处理器302可以从20K-100K的内存地址之间读取所述数据,即处理器302可以从20K开始的四个存储单元中读取所述数据。
可选地,所述存储设备还包括:磁盘304;
处理器302,还用于将所述数据写入磁盘304,并向网卡301返回写成功消息。
磁盘304,用于存储所述数据。
网卡301,还用于接收所述写成功消息,向处理器302发送第二通知消息。
处理器302,还用于接收所述第二通知消息,根据所述第二通知消息撤销内存地址。
即处理器302将所述数据写入磁盘304,并在写入成功后向网卡301返回写成功消息,否则返回写失败消息。在一种具体实现方式中,处理器302可以通知文件系统将所述数据写入磁盘304。此处,文件系统将所述数据写入磁盘的方法属于现有技术,在此不作赘述。
网卡301在接收到处理器302返回的写成功消息或者写失败消息后,向NAS客户端返回上述写成功消息或者写失败消息。
在一种具体实现方式中,当有多个写成功消息或者写失败消息需要发送时,则多个写成功消息或者写失败消息组成发送队列(Send Queue,SQE),先进入该发送队列的写成功消息或者写失败消息优先发送。
需要说明的是,网卡301在接收到处理器302返回的写成功消息之后,还可以向处理器302发送第二通知消息,处理器302根据所述第二通知消息撤销内存地址。举例来说,处理器302预分配的内存地址包括:20K-100K,则处理器302回收起始地址20K至终止地址100K的内存地址,以便写入新的RPC消息的待写入存储设备的数据。
本申请实施例存储设备的各功能模块的功能,可以通过上述方法实施例的各步骤来实现,因此,本申请提供的设备的具体工作过程,在此不复赘述。
本发明实施提供的存储设备,网卡301接收远程过程调用RPC消息,所述RPC消息包括属性信息和待写入所述存储设备的数据;根据所述属性信息对所述RPC消息进行解析,获得所述数据;处理器302为所述数据预分配内存地址,并向所述网卡发送地址分配消息,所述地址分配消息包括预分配的所述内存地址;网卡301接收所述地址分配消息,根据所述地址分配消息中的预分配的所述内存地址,将所述数据写入内存303中。由此,可以避免存储设备中数据部分的重复拷贝,从而可以达到节约存储设备的处理器资源的目的。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种将数据写入存储设备的方法,其特征在于,所述存储设备包括网卡、内存和处理器;所述方法由网卡执行包括以下步骤:
接收远程过程调用RPC消息,所述RPC消息包括属性信息和待写入所述存储设备的数据;
根据所述属性信息对所述RPC消息进行解析,获得所述数据;
接收所述处理器发送的地址分配消息,所述地址分配消息包括所述处理器为所述数据预分配的内存地址;
根据所述内存地址将所述数据写入所述内存中;
其中,所述方法还包括:
判断所述RPC消息是否全部接收完成;
当所述RPC消息全部接收完成时,向所述处理器发送第一通知消息,所述第一通知消息用于指示所述处理器根据所述内存地址从所述内存中读取所述数据,并对所述数据进行处理。
2.根据权利要求1所述的方法,其特征在于,所述内存包括至少一个存储单元,所述存储单元的大小是根据所述存储设备的网络传输时延、网络带宽以及响应时间确定的,所述内存地址是指所述存储单元的地址。
3.根据权利要求1或2所述的方法,其特征在于,所述内存地址是由所述处理器通过调用所述存储设备的应用程序接口API函数为所述数据预分配的。
4.根据权利要求1所述的方法,其特征在于,所述存储设备还包括:磁盘,所述方法还包括:
在接收到所述处理器在将所述数据写入所述磁盘后返回的写成功消息时,向所述处理器发送第二通知消息,所述第二通知消息用于指示所述处理器撤销所述内存地址。
5.一种存储设备,其特征在于,所述存储设备包括:网卡、内存和处理器;
所述网卡,用于接收远程过程调用RPC消息,所述RPC消息包括属性信息和待写入所述存储设备的数据;
所述网卡,还用于根据所述属性信息对所述RPC消息进行解析,获得所述数据;
所述处理器,用于为所述数据预分配内存地址,并向所述网卡发送地址分配消息,所述地址分配消息包括预分配的所述内存地址;
所述网卡,还用于接收所述地址分配消息,根据所述地址分配消息中的预分配的所述内存地址,将所述数据写入所述内存中;
所述内存,用于存储所述数据;
其中,所述网卡,还用于判断所述RPC消息是否全部接收完成,当所述RPC消息全部接收完成时,向所述处理器发送第一通知消息;
所述处理器,还用于接收所述第一通知消息,根据所述内存地址从所述内存中读取所述数据,并对所述数据进行处理。
6.根据权利要求5所述的存储设备,其特征在于,所述内存包括至少一个存储单元,所述存储单元的大小是根据所述存储设备的网络传输时延、网络带宽以及响应时间确定的,所述内存地址是指所述存储单元的地址。
7.根据权利要求5或6所述的存储设备,其特征在于,所述内存地址是由所述处理器通过调用所述存储设备的应用程序接口API函数为所述数据预分配的。
8.根据权利要求5所述的存储设备,其特征在于,所述存储设备还包括:磁盘;
所述处理器,还用于将所述数据写入所述磁盘,并向所述网卡返回写成功消息;
所述磁盘,用于存储所述数据;
所述网卡,还用于接收所述写成功消息,向所述处理器发送第二通知消息;
所述处理器,还用于接收所述第二通知消息,根据所述第二通知消息撤销所述内存地址。
CN201510530129.8A 2015-08-26 2015-08-26 将数据写入存储设备的方法及存储设备 Active CN105068817B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201510530129.8A CN105068817B (zh) 2015-08-26 2015-08-26 将数据写入存储设备的方法及存储设备
PCT/CN2016/086225 WO2017032152A1 (zh) 2015-08-26 2016-06-17 将数据写入存储设备的方法及存储设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510530129.8A CN105068817B (zh) 2015-08-26 2015-08-26 将数据写入存储设备的方法及存储设备

Publications (2)

Publication Number Publication Date
CN105068817A CN105068817A (zh) 2015-11-18
CN105068817B true CN105068817B (zh) 2019-02-19

Family

ID=54498197

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510530129.8A Active CN105068817B (zh) 2015-08-26 2015-08-26 将数据写入存储设备的方法及存储设备

Country Status (2)

Country Link
CN (1) CN105068817B (zh)
WO (1) WO2017032152A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105068817B (zh) * 2015-08-26 2019-02-19 华为技术有限公司 将数据写入存储设备的方法及存储设备
WO2018032510A1 (zh) * 2016-08-19 2018-02-22 华为技术有限公司 应用于存储设备中的访问请求的处理方法和装置
CN109308280B (zh) * 2017-07-26 2021-05-18 华为技术有限公司 数据处理方法和相关设备
CN108616523A (zh) * 2018-04-13 2018-10-02 航天科技控股集团股份有限公司 一种基于智能管理平台的消息处理系统及方法
CN113778320A (zh) * 2020-06-09 2021-12-10 华为技术有限公司 网卡以及网卡处理数据的方法
CN113778319A (zh) 2020-06-09 2021-12-10 华为技术有限公司 网卡的数据处理方法以及网卡

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101707590A (zh) * 2009-09-25 2010-05-12 曙光信息产业(北京)有限公司 基于零拷贝方式的tcp/ip协议报文发送方法和装置
CN102244579A (zh) * 2010-05-12 2011-11-16 北京研华兴业电子科技有限公司 网卡及网络数据接收方法
CN104468417A (zh) * 2014-12-16 2015-03-25 上海斐讯数据通信技术有限公司 一种堆叠交换机报文传输方法、系统及堆叠交换机
CN104753814A (zh) * 2013-12-31 2015-07-01 国家计算机网络与信息安全管理中心 基于网卡的报文分流处理方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070022212A1 (en) * 2005-07-22 2007-01-25 Fan Kan F Method and system for TCP large receive offload
US8266639B2 (en) * 2009-12-04 2012-09-11 International Business Machines Corporation Remote procedure call (RPC) bind service with physical interface query and selection
CN105068817B (zh) * 2015-08-26 2019-02-19 华为技术有限公司 将数据写入存储设备的方法及存储设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101707590A (zh) * 2009-09-25 2010-05-12 曙光信息产业(北京)有限公司 基于零拷贝方式的tcp/ip协议报文发送方法和装置
CN102244579A (zh) * 2010-05-12 2011-11-16 北京研华兴业电子科技有限公司 网卡及网络数据接收方法
CN104753814A (zh) * 2013-12-31 2015-07-01 国家计算机网络与信息安全管理中心 基于网卡的报文分流处理方法
CN104468417A (zh) * 2014-12-16 2015-03-25 上海斐讯数据通信技术有限公司 一种堆叠交换机报文传输方法、系统及堆叠交换机

Also Published As

Publication number Publication date
WO2017032152A1 (zh) 2017-03-02
CN105068817A (zh) 2015-11-18

Similar Documents

Publication Publication Date Title
CN105068817B (zh) 将数据写入存储设备的方法及存储设备
CN109597818A (zh) 数据更新方法、装置、存储介质和设备
CN106657365B (zh) 一种基于rdma的高并发数据传输方法
EP2386962B1 (en) Programmable queue structures for multiprocessors
US9462077B2 (en) System, method, and circuit for servicing a client data service request
US10116746B2 (en) Data storage method and network interface card
JP6757808B2 (ja) インフィニバンド(IB)上で仮想ホストバスアダプタ(vHBA)を管理およびサポートするためのシステムおよび方法、ならびに単一の外部メモリインターフェイスを用いてバッファの効率的な使用をサポートするためのシステムおよび方法
CN109743411B (zh) 一种在分布式环境下动态调度ip代理池的方法、装置及存储介质
CN109240617A (zh) 分布式存储系统写请求处理方法、装置、设备及存储介质
CN110737388A (zh) 数据预读方法、客户端、服务器以及文件系统
CN109564502B (zh) 应用于存储设备中的访问请求的处理方法和装置
CN104735077A (zh) 一种使用环形缓存和环形队列实现udp高效并发的方法
US8086769B2 (en) Method for detecting circular buffer overrun
US7155727B2 (en) Efficient data buffering in a multithreaded environment
CN109471843A (zh) 一种元数据缓存方法、系统及相关装置
US7299269B2 (en) Dynamically allocating data buffers to a data structure based on buffer fullness frequency
US20080263171A1 (en) Peripheral device that DMAS the same data to different locations in a computer
CN101699421B (zh) 串口共享的方法和服务端
US20170034267A1 (en) Methods for transferring data in a storage cluster and devices thereof
CN105144099B (zh) 通信系统
CN109117288B (zh) 一种低延迟旁路的消息优化方法
US9665519B2 (en) Using a credits available value in determining whether to issue a PPI allocation request to a packet engine
CN108183926B (zh) 一种数据包处理方法和装置
CN111970213A (zh) 排队系统
KR20140122025A (ko) 논리적 망분리 방법 및 장치

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant