将数据写入存储设备的方法及存储设备的制造方法_2

文档序号:9349754阅读:来源:国知局
对本发明实施例的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本发明实施例的限定。
[0038]本发明提供的将数据写入存储设备的方法适用于将数据写入图1所示的存储设备中,该存储设备主要用于存储数据,其主要包括:网卡、处理器和内存,网卡主要用于从网络侧接收数据报文,或者向网络侧发送数据报文。如,当网络侧为NAS客户端时,则网卡主要用于从NAS客户端接收RPC消息(也称NAS消息),或者向NAS客户端发送RPC消息;而处理器主要用于为网卡接收的RPC消息的待写入存储设备的数据预分配内存地址;而内存主要用于存储网卡接收的RPC消息的待写入存储设备的数据;此外,图1中的存储设备还可以包括磁盘,该磁盘用于持久性存储上述内存中存储的数据。
[0039]上述预分配的内存地址在内存中对应至少一个存储单元,该存储单元的大小是根据存储设备的网络传输时延(Round Trip Time,RTT)、网络带宽以及响应时间确定的。
[0040]图1中的存储设备也可以称为NAS,该NAS中的网卡不仅可以用于收发NAS客户端的RPC消息;此外,网卡还具有NAS协议部分的功能,如可以对接收到的RPC消息进行解析,获得待写入存储设备的数据,解析是指对接收到的RPC消息进行编码、解码以及定界等操作;最后,网卡还用于对向NAS客户端发送的RPC消息进行组装,如添加报文头等。
[0041]需要说明的是,图1中的NAS还可以包括文件系统,所述文件系统保存在内存中,具体地,处理器可以通过调用文件系统,将存储在内存中的待写入存储设备的数据转储到磁盘,以实现数据的持久性存储。
[0042]图2为本发明实施例一提供的将数据写入存储设备的方法流程图。如图2所示,所述方法的执行主体可以为图1中的网卡,所述方法具体可以包括:
[0043]S210,接收远程过程调用RPC消息,所述RPC消息包括属性信息和待写入所述存储设备的数据。
[0044]此处,RPC消息具体可以为写请求,其可以包括属性信息和待写入所述存储设备的数据,其中,属性信息是指RPC消息中包括的各个字段,如,可以包括:报文头部、文件名称、文件大小和数据部分等,而待写入所述存储设备的数据即为上述属性信息中数据部分对应的字段内容。
[0045]S220,根据所述属性信息对所述RPC消息进行解析,获得所述数据。
[0046]网卡在接收到该RPC消息之后,根据属性信息对其进行解析:即根据属性信息中的报文头部对应的字段内容,去掉RPC消息的报文头部,并保留RPC消息的正文信息;之后网卡再对正文信息进行解码以及定界,如,解析出RPC消息的正文信息包括的各个字段,如文件名称、文件大小以及数据部分等,并确定出正文信息中哪些部分用于表示文件名称,哪些部分用于表示文件大小以及数据部分等;最后读取数据部分对应的字段内容,此处,数据部分对应的字段内容即为待写入存储设备的数据。
[0047]S230,接收所述处理器发送的地址分配消息,所述地址分配消息包括所述处理器为所述数据预分配的内存地址。
[0048]此处,处理器可以调用存储设备(如,NAS)的应用程序接口(Applicat1nProgramming Interface, API)函数为所述数据预分配内存地址。
[0049]可选地,所述内存可以包括至少一个存储单元,则处理器为所述数据预分配内存地址即为处理器为所述数据预分配存储单元的地址。
[0050]需要说明的是,上述存储单元的大小可以根据NAS客户端与NAS通信的网络传输时延、网络带宽以及NAS的响应时间确定。举例来说,假设RTT为10ms,网络带宽为40Gb,且响应时间为1ms时,则预分配的存储单元的大小可以为160MB。
[0051]需要说明的是,当有多个存储单元时,多个存储单元的大小可以相同,也可以不相同。当然,在实际应用中,存储单元的大小也可以是固定的。在一种具体实现方式中,多个存储单元可以组成接收队列(Receive Queue,RQE),可以理解的是,因为队列有先进先出的特点,所以先接收到的RPC消息的数据部分优先处理。
[0052]举例来说,假设处理器将起始地址为20K,结束地址为100K的内存地址作为预分配的内存地址,则网卡接收的处理器发送的地址分配消息可以包括:20K-100K。此处,假设内存中一个存储单元的大小为20Κ,且各存储单元的大小相同,则上述预分配的内存地址即为4个存储单元的地址。
[0053]当然,在实际应用中,网卡接收的处理器发送的地址分配消息,也可以发送起始地址以及预分配的全部的存储单元的大小,本发明对此不作限定。如前述例子中,地址分配消息可以包括:20Κ(起始地址)和80Κ(四个存储单元的大小)。
[0054]S240,根据所述内存地址将所述数据写入所述内存中。
[0055]如前述例子中,预分配的内存地址的起始地址为:20Κ,且假设待写入存储设备的数据大小为10Κ,则可以将上述待写入存储设备的数据写入内存中起始地址对应的位置。
[0056]可选地,本发明的实施例还可以包括计算所述数据在内存中的存储位置(也称数据的规整)的步骤,如,在写入上述1K大小的数据之后,当网卡接收到新的RPC消息时,因为上述存储单元中已经写入1K的待写入存储设备的数据,因此,当网卡向内存中写入新的RPC消息的待写入存储设备的数据时,不是从内存的起始地址开始写入,而是从内存的地址为1K的位置开始写入新的RPC消息的待写入存储设备的数据。
[0057]综上,本发明实施例中,将NAS的协议部分卸载到了网卡,也即由网卡对接收的RPC消息进行解析,而不是由处理器对RPC消息进行解析,由此,可以达到节约处理器的资源的目的,也即达到节约存储设备的处理器资源的目的。
[0058]可选地,本发明的实施例还可以包括如下步骤:
[0059]判断所述RPC消息是否全部接收完成;
[0060]当所述RPC消息全部接收完成时,向所述处理器发送第一通知消息,所述第一通知消息用于指示所述处理器根据所述内存地址从所述内存中读取所述数据,并对所述数据进行处理。
[0061 ] 需要说明的是,通常一个完整的RPC消息可以包括多个RPC消息,在一种具体的实施方式中,网卡可以根据RPC消息中的字段“消息总长度”和“已接收消息的长度”对应的内容来判断是否接收完成一个完整的RPC消息,即在上述两个字段对应的内容一致时,可以判断一个完整的RPC消息接收完成,之后向处理器发送第一通知消息。也即本发明实施例是在接收到一个完整的RPC消息时,才向处理器发送第一通知消息,由此,可以避免现有技术在每接收到一个RPC消息,都需要向处理器发送通知消息,从而导致处理器接收次数多,进而耗费存储设备资源的问题,由此,本发明实施例的数据处理方法可以达到节约存储设备的处理器资源的目的。
[0062]处理器在接收到上述第一通知消息之后,根据预分配的内存地址从所述内存中读取所述数据。在一种具体实现方式中,上述预分配的内存地址可以为指针信息。如前述例子中,处理器可以从20K-100K的内存地址之间读取所述数据,即处理器可以从20K开始的四个存储单元中读
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1