CN109564502B - 应用于存储设备中的访问请求的处理方法和装置 - Google Patents
应用于存储设备中的访问请求的处理方法和装置 Download PDFInfo
- Publication number
- CN109564502B CN109564502B CN201680088376.XA CN201680088376A CN109564502B CN 109564502 B CN109564502 B CN 109564502B CN 201680088376 A CN201680088376 A CN 201680088376A CN 109564502 B CN109564502 B CN 109564502B
- Authority
- CN
- China
- Prior art keywords
- request
- data packet
- storage device
- data
- access request
- 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
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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例涉及应用于存储设备中的访问请求的处理方法和装置。该方法包括:网卡接收其他存储设备发送的数据包,该数据包中包括至少一个访问请求,该数据包携带有该至少一个访问请求的请求类型信息;该网卡根据该请求类型信息,判断该至少一个访问请求是否为对该存储设备执行修改操作的请求;当该至少一个访问请求为对该存储设备执行修改操作的请求时,该网卡将该数据包存储于该非易失性内存中;否则,该网卡将该数据包存储于该易失性内存中。本发明实施例的应用于存储设备中的访问请求的处理方法和装置,可以将现有技术中网卡缓冲区与存储***的缓存区合一,从而减少数据在两者间的拷贝开销。
Description
技术领域
本发明涉及通信领域,尤其涉及应用于存储设备中的访问请求的处理方法和装置。
背景技术
分布式存储***是将数据分散地存储在多个独立的存储设备上,采用可扩展的***结构,利用多台存储设备分担存储负荷。具体地,分布式存储***可以通过网络将多个存储设备互连起来,统一进行管理。存储客户端访问存储设备,或是存储设备之间均可以通过高速网络来传输数据。分布式存储***不但具有可靠性、可用性和存取效率,还易于扩展。
以存储客户端访问存储设备为例,当存储客户端向存储设备发送数据包时,首先由接收端存储设备中的网卡(Network Interface Card,NIC)进行接收,并缓存在网卡的数据缓冲区中,同时在网卡的数据缓冲区中进行解包和网络协议栈处理,之后,存储设备中的处理器再将该数据包中的数据从网卡的数据缓冲区中拷贝到存储设备的动态随机存取存储器(Dynamic Random Access Memory,DRAM)中以供存储设备的处理器进行处理。例如,若该数据包请求写入数据,则存储设备的处理器可以将该数据从DRAM中拷贝到存储介质的相应位置中,该存储介质可以为存储级内存(Storage Class Memory,SCM)或闪存(flash)。
在上述存储设备中,网卡一般包含一个或多个请求队列,每个请求队列对应一个数据缓冲区,用于缓存接收到的数据包。而数据缓冲区中数据的拷贝操作是指将数据包中的数据从网卡的请求队列拷贝到存储器,如DRAM,进行处理。数据拷贝操作需要耗费存储设备的中央处理器(Central Processing Unit,CPU)和内存资源,因此,如果数据包中包含的数据量较大,数据拷贝操作的开销会在网络传输中占据较大的比重。然而,内存带宽是***的一个瓶颈,多次的数据拷贝势必会消耗大量的内存带宽。因此,如何在分布式存储***中减少或消除缓冲区数据的拷贝,对优化网络请求的性能具有很大的价值。
发明内容
本申请提供了一种应用于存储设备中的访问请求的处理方法和装置,能够减少存储设备处理数据请求时的内存带宽的占用和数据拷贝时间开销。
第一方面,提供了一种应用于存储设备中的访问请求的处理方法,该存储设备包括网卡、易失性内存和非易失性内存,该方法包括:该网卡接收其他存储设备发送的数据包,该数据包中包括至少一个访问请求,该数据包携带有该至少一个访问请求的请求类型信息;该网卡根据该请求类型信息,判断该至少一个访问请求是否为对该存储设备执行修改操作的请求;当该至少一个访问请求为对该存储设备执行修改操作的请求时,该网卡将该数据包中的数据域部分存储于该非易失性内存中,该数据域部分包括该至少一个访问请求的请求内容;当该至少一个访问请求为对该存储设备执行非修改操作的请求时,该网卡将该数据包中的数据域部分存储于该易失性内存中。
因此,本申请实施例的应用于存储设备中的访问请求的处理方法,网卡根据接收的数据包中包括的请求类型信息,确定该数据包中至少一个访问请求是否为对存储设备执行修改操作的请求,当至少一个访问请求为对该存储设备执行修改操作的请求时,网卡将该数据包的数据域部分存储到非易失性内存中,否则,网卡将数据包的数据域部分存储到易失性内存中,这样可以将现有技术中网卡缓冲区与存储***的缓存区合一,从而减少数据在两者间的拷贝开销,并且灵活应用于各种应用场景中,避免现有技术中对网卡性能的局限;同时减少对存储设备不执行修改操作的访问请求在非易失性内存SCM中的存放,降低对SCM大容量的需求,提高SCM的读写寿命。
应理解,网卡接收其它设备发送的数据包,该数据包中包括至少一个访问请求,该至少一个访问请求具有相同的请求类型,并且可以通过该数据包中的请求类型信息指示该至少一个访问请求的请求类型。
结合第一方面,在第一方面的一种实现方式中,当该至少一个访问请求为对该存储设备执行修改操作的请求时,该方法还包括:该网卡将该数据包中的包头域部分存储于该非易失性内存或该易失性内存中,该包头域部分包含有指示所述数据包的地址的信息。
应理解,当网卡根据数据包中包括的请求类型信息,确定数据包中的至少一个访问请求是对存储设备执行修改操作时,将数据包的数据域部分存储到非易失性内存中,该数据包可以包括包头域和数据域两部分,则可以将包头域和数据域均存储到非易失性内存中,其中,可以将该数据包中的包头存储到该非易失性内存中的持久化请求队列中;相对的,当确定数据包中的至少一个访问请求不是对存储设备执行修改操作时,例如执行读操作时,将数据包的数据域部分存储到易失性内存中,还可以将包头域部分和数据域部分均存储到非易失性内存中,其中,可以将该包头存储到该易失性内存中的非持久化请求队列中。
应理解,将请求类型不同的访问请求分别存储到不同的内存中,对应的,对于数据包中的包头也可以分别存储到不同的内存中,即将访问请求的类型为对存储设备进行修改操作的数据包的包头域部分存储到非易失性内存的持久化请求队列中,而将访问请求的类型为对存储设备进行非修改操作的数据包的包头域部分存储到易失性内存的非持久化请求队列中,使得每个请求队列只支持存放访问请求类型为对存储设备执行修改操作的数据包的包头,或者,只支持存放访问请求类型为对存储设备执行读操作的数据包的包头。
可选地,为了进一步减少非易失性内存的使用率,例如该非易失性内存可以为SCM,还可以在数据包中的至少一个访问请求是对存储设备执行修改操作时,将该数据包的包头域部分存储在易失性内存中,例如DRAM中,但仍然将数据包中的数据域部分存储在SCM中,之后可以通过分散-收集(scatter-gather)将包头域部分和数据域部分拼接在一起得到完整数据包。
具体地,在存储服务器处理完每个请求包后,需要向发送数据包的发送端发送该数据包对应的响应包,例如,该数据包为键-值***中的写请求,则该响应包中的包头域部分是可以重复利用的,而且该包头域部分即使丢失也可以重新构造出来,因此,还可以将该写请求的包头域部分也存放在易失性内存,例如DRAM中,而不是SCM中。也就是说,访问请求的类型为对存储设备进行修改操作的数据包的包头域部分,例如该写请求的包头域,而已存储到DRAM中,但仍将该数据包中的数据域部分存储在SCM中。
应理解,将访问请求的类型为对存储设备进行修改操作的数据包的包头域部分存储到易失性内存,例如DRAM中,在该DRAM中,仍然分为持久化请求队列和非持久化请求队列,即访问请求的类型为对存储设备进行修改操作的数据包的包头域部分存储到DRAM中的持久化请求队列中,将访问请求的类型为对存储设备进行非修改操作的数据包的包头域部分存储到DRAM中的非持久化请求队列中。
将访问请求的类型为对存储设备进行修改操作的数据包的包头域部分存储到易失性内存中,可以减少对非易失性内存SCM的使用率,使得该SCM有足够的空间存储目标数据。
结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,该网卡将该数据包存储于该非易失性内存中,包括:该网卡将该数据包以日志的形式存储于该非易失性内存中。
应理解,以日志的形式存储于非易失性内存中,是指存储该数据包中的数据的地址、长度以及数据内容。
这样,将数据包以日志的形式进行存储,使得该数据包存储的区域即为现有技术中的Log存储区域,可以避免现有技术中将数据从存储单元DRAM中拷贝到Log存储区域的过程,进一步减少数据拷贝的开销。
结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,该非易失性内存可以为存储级内存SCM,该易失性内存可以为动态随机存取存储器DRAM。
结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,该修改操作包括下述操作中的至少一个:写操作、更新操作和删除操作;该非修改操作包括读操作。
应理解,不同数据包可以具有不同的请求类型。例如,当数据包用于请求写数据,或者更新数据,或者删除数据,该数据包的请求类型均可以确定为对存储设备执行修改操作的类型;当数据包用于请求读数据,该数据包的的请求类型可以确定为对存储设备执行非修改操作,即执行读操作。
结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,该数据包中包括的至少一个请求,具有相同请求类型,该数据包包括请求数量信息,该请求数量信息用于指示该至少一个访问请求的个数。
应理解,发送端设备可以将相同类型的请求通过同一数据包发送至存储设备,在该数据包中包括一个或多个访问请求,则数据包中的数据对应该至少一个访问请求请求处理的数据,且该至少一个访问请求具有相同请求类型,并可以通过该请求数量信息指示该至少一个访问请求的个数,避免相同类型的请求发送多个数据包,从而减少***开销。
第二方面,提供了一种应用于存储设备中的发送访问请求的方法,该方法包括:生成数据包,该数据包包括至少一个访问请求,该数据包携带有该至少一个访问请求的请求类型信息;向存储设备发送该数据包,以便于该存储设备根据该请求类型信息,判断该至少一个访问请求是否为对该存储设备执行修改操作的请求,并且当该至少一个访问请求为对该存储设备执行修改操作的请求时,该网卡将该数据包存储于该非易失性内存中;当该至少一个访问请求为对该存储设备执行读操作的请求时,该网卡将该数据包存储于该易失性内存中。
因此,本申请实施例的应用于存储设备中的发送访问请求的方法,根据访问请求的请求类型的不同,生成不同的数据包,以便于接收端的存储设备根据数据包的请求类型,将对存储设备执行修改操作的数据包存放到存储***的非易失性内存中,将对存储设备执行读操作的数据包存放到易失性内存中,这样可以将现有技术中网卡缓冲区与存储***的缓存区合一,从而减少数据在两者间的拷贝开销;同时减少对存储设备执行非修改操作的数据包在非易失性内存SCM中的存放,降低对SCM大容量的需求,提高SCM的读写寿命。
结合第二方面,在第二方面的一种实现方式中,该生成数据包包括:将至少一个访问请求聚合,生成该数据包,该数据包包括该至少一个访问请求,该至少一个访问请求具有相同请求类型,该数据包包括请求数量信息,该请求数量信息用于指示该至少一个访问请求的个数。
应理解,发送端设备将相同类型的请求通过同一数据包发送至存储设备,并通过该请求数量信息指示该至少一个访问请求的个数,避免相同类型的访问请求发送多个数据包,从而减少***开销。
第三方面,提供了一种存储设备中的网卡,用于执行上述第一方面或第一方面的任意可能的实现方式中的方法。具体地,该网卡包括用于执行上述第一方面或第一方面的任意可能的实现方式中的方法的模块。
第四方面,提供了一种存储设备中发送访问请求的装置,用于执行上述第二方面或第二方面的任意可能的实现方式中的方法。具体地,该装置包括用于执行上述第二方面或第二方面的任意可能的实现方式中的方法的模块。
第五方面,提供了一种存储设备中的网卡,包括:存储单元和处理器,该存储单元用于存储指令,该处理器用于执行该存储器存储的指令,并且当该处理器执行该存储器存储的指令时,该执行使得该处理器执行第一方面或第一方面的任意可能的实现方式中的方法。
第六方面,提供了一种存储设备中发送访问请求的装置,包括:存储单元和处理器,该存储单元用于存储指令,该处理器用于执行该存储器存储的指令,并且当该处理器执行该存储器存储的指令时,该执行使得该处理器执行第二方面或第二方面的任意可能的实现方式中的方法。
第七方面,提供了一种存储设备,该存储设备包括网卡、易失性内存和非易失性内存,其中,该网卡用于:接收其他存储设备发送的数据包,该数据包中包括至少一个访问请求,该数据包携带有该至少一个访问请求的请求类型信息;根据该请求类型信息,判断该至少一个访问请求是否为对该存储设备执行修改操作的请求;当该至少一个访问请求为对该存储设备执行修改操作的请求时,将该数据包存储于该非易失性内存中;当该至少一个访问请求为对该存储设备执行读操作的请求时,将该数据包存储于该易失性内存中。
结合第七方面,在第七方面的一种实现方式中,该网卡为第一方面或第一方面中任意一种可能实现方式中的网卡。
第八方面,提供了一种分布式存储***,其特征在于,该分布式存储***包括第一存储设备和第二存储设备,该第一存储设备用于:向第二存储设备发送数据包,该数据包中包括至少一个访问请求,该数据包携带有该至少一个访问请求的请求类型信息;该第二存储设备用于:接收该第一存储设备发送的该数据包;根据该请求类型信息,判断该至少一个访问请求是否为对该存储设备执行修改操作的请求;当该至少一个访问请求为对该存储设备执行修改操作的请求时,将该数据包存储于该非易失性内存中;当该至少一个访问请求为对该存储设备执行读操作的请求时,将该数据包存储于该易失性内存中。
结合第八方面,在第八方面的一种实现方式中,该第一存储设备还用于:当该至少一个访问请求为对该存储设备执行修改操作的请求时,将该数据包以日志的形式存储于该非易失性内存中。
结合第八方面及其上述实现方式,在第八方面的另一种实现方式中,该修改操作包括下述操作中的至少一个:写操作、更新操作和删除操作。
第九方面,提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的指令。
第十方面,提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第二方面或第二方面的任意可能的实现方式中的方法的指令。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例的附图。
图1是根据本发明实施例的分布式存储***的示意图。
图2是根据本发明实施例的存储设备的示意性框图。
图3是根据本发明实施例的应用于存储设备中的访问请求的处理方法的示意性流程图。
图4是根据本发明实施例的数据包格式的示意图。
图5是根据本发明实施例的应用于存储设备中的访问请求的处理方法的另一示意性流程图。
图6是根据本发明实施例的存储设备中的网卡的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。
图1示出了分布式存储***100的示意图。该分布式存储***100可以通过网络将多个存储设备连接起来,进行统一管理。具体地,如图1所示,对于该分布式存储***100中任意两个存储设备之间,存储设备102和存储设备103,可以通过交换机传输数据;另外,对于存储客户端101同样可以通过交换机访问存储设备102或存储设备103。其中,存储客户端101、存储设备102和存储设备103均包括网卡,通过该网卡接收数据包,该数据包可以包括包头域和数据域两部分。例如,当存储客户端101向存储设备102发送数据包时,由该存储客户端101的网卡将该数据包通过交换机发送至存储设备102,该存储设备102的网卡接收该数据包。
图2示出了根据本发明实施例的存储设备200的示意性框图,该存储设备200相应于图1中的存储设备102或者存储设备103。具体地,如图2所示,该存储设备200包括:网卡201、非易失性内存202、易失性内存203、处理器204、I/O总线205以及内存总线206。其中,处理器204通过内存总线206与非易失性内存202以及易失性内存203相连。处理器204可以通过该内存总线206访问非易失性内存202以及易失性内存203。网卡201通过I/O总线205与非易失性内存202以及易失性内存203相连。网卡201可以通过I/O总线205访问非易失性内存202以及易失性内存203。
应理解,在网卡201中可以包括直接内存存取(Direct Memory Access,DMA)引擎,网卡201可以通过该DMA引擎实现对非易失性内存202以及易失性内存203的直接访问。
具体地,DMA引擎可以直接掌管总线,例如,对于图2中的网卡201中的DMA,在DMA引擎传输数据之前,处理器204可以将总线控制权交给DMA引擎,而在结束DMA引擎传输数据之后,DMA引擎再将总线控制权交回给处理器204。
具体地,以图2为例,一个完整的DMA传输数据过程可以分为DMA请求、DMA响应、DMA传输、DMA结束四个部分。在DMA请求阶段,可以由处理器204对该DMA初始化,并向I/O总线205发出操作命令,I/O总线205提出DMA请求。在DMA响应阶段,DMA控制器对DMA请求判别优先级及屏蔽,向总线裁决逻辑单元提出总线请求。当处理器204执行完当前总线周期即可释放总线控制权。此时,总线裁决逻辑单元输出总线应答,表示DMA已经响应,通过DMA控制器通知I/O总线205开始DMA传输。在DMA传输阶段,DMA引擎获得总线控制权后,处理器204即刻挂起或只执行内部操作,由DMA控制器输出读写命令,直接控制内存与I/O总线205进行DMA传输。因此,在DMA引擎的控制下,在内存和外部设备之间直接进行数据传送,在传送过程中可以不需要中央处理器的参与。
图3示出了根据本发明实施例的应用于存储设备中的访问请求的处理方法300的示意性流程图,该方法300可以应用于如图1所示的分布式存储***中的存储设备102或存储设备103中。由于图2为存储设备102或存储设备103的结构示意图,在下面的实施例中将以图2中的存储设备200进行说明。如图2所示,本发明实施例的存储设备可以包括网卡、易失性内存和非易失性内存。本发明实施例提供的方法300可以由该存储设备200中的网卡201执行。如图3所示,该方法300包括:
S310,该网卡接收其他存储设备发送的数据包,该数据包中包括至少一个访问请求,该数据包携带有该至少一个访问请求的请求类型信息。
具体地,如图2所示,存储设备200可以通过网卡201接收客户端或其它存储设备发送的数据包,例如图1所示,存储客户端101可以通过网卡向存储设备102发送数据包,或者存储设备103通过网卡向存储设备102发送数据包,而存储设备102可以通过网卡接收存储客户端101或存储设备103发送的数据包。
可选地,该数据包至可以包括至少一个访问请求,且该数据包还包括请求类型信息,该请求类型信息用于指示该至少一个访问请求的请求类型,例如,该请求类型信息可以指示该至少一个访问请求为读数据请求,或者为写数据请求,或者为更新数据请求,或者为删除数据请求等,本发明实施例并不限于此。
S320,根据该请求类型信息,判断该至少一个访问请求是否为对该存储设备执行修改操作的请求。
应理解,在现有技术中,网卡默认仅解析数据包至的包头的内容,例如支持键值(Key-Value)的分布式存储***,数据包中包头内容包括以太网包头、网络之间互连的协议(Internet Protocol,IP)包头和用户数据报协议(User Datagram Protocol,UDP)包头,用于路由和判断请求的地址是否是属于当前存储设备,而对于数据区域一般是不处理的。在本发明实施例中,需要扩展网卡的处理功能,增加网卡对数据包的请求类型的解析处理。
在本发明实施例中,如图2所示,存储设备200的网卡201接收数据包括后,网卡201根据数据包中的请求类型信息,确定该数据包中至少一个访问请求的请求类型,判断该至少一个访问请求是否为对该存储设备执行修改操作的请求。可选地,其它设备在向存储设备发送数据包时,可以扩充或修改现有数据包的格式,例如填充特定的包头域,从而通过该数据包包括的请求类型信息,指示该数据包中至少一个访问请求的请求类型。例如,在数据包的数据域增加请求类型字段,通过该请求类型字段指示该数据中的至少一个访问请求的请求类型。
具体地,可以将数据包中的至少一个访问请求的请求类型分为两大类,一类为对该存储设备执行修改操作的请求;一类为对该存储设备执行非修改类操作的请求,例如对存储设备执行读操作的请求。其中,当数据包中的至少一个访问请求的请求类型为对存储设备执行修改操作时,若该数据包中的数据丢失,能够导致***中的数据出现不一致的特性;而当数据包中的至少一个访问请求的请求类型为对存储设备执行非修改类操作时,数据包中的数据丢失不会影响***中的数据。
可选地,一般可以根据读/写来区分请求类型,读请求的数据包中数据丢失后,不影响***数据的正确性,因此读请求的请求类型为对存储设备执行非修改类操作,或者称作对存储设备执行读操作;而写请求的数据包中数据丢失后,会导致***数据不一致,因此写请求的请求类型为对存储设备执行修改类操作。
类似地,更新(update)数据请求或者删除(delete)数据请求,在数据包中数据丢失时都会改变***中的数据,因此,更新(update)数据请求或者删除(delete)数据请求都属于对存储设备执行修改类操作的请求类型。
类似的,例如对于Key-Value***,get请求,类似于读请求,用于从存储节点中读取数据,对应数据包中的数据出错后重传即可,不影响数据的一致性,因此,get请求属于对存储设备执行读操作的请求类型。而put请求,类似于写请求,需要保证数据包中的数据被正确写入到存储***中,从而保证***数据的一致性,则put请求属于对存储设备执行修改操作的请求类型。
在本发明实施例中,数据包包括的请求类型信息,可以通过扩充或修改请求包的格式,例如填充特定的包头域,或者修改数据包中的数据域,从而通过携带请求类型信息指示该数据包中至少一个访问请求的请求类型。具体地,在数据包中可以包括请求类型字段,该请求类型字段用于指示数据包中包括的至少一个访问请求的请求类型。下面以支持Key-Value的分布式存储***为例,在数据包的数据域部分增加请求类型字段,该数据包的格式可以如图4所示。
具体地,如图4所示,数据包可以分为包头域和请求处理的数据所在的数据域两个部分,其中,数据域包括数据包中的至少一个访问请求的请求内容;包头域包含有指示所述数据包的指示地址的信息。具体地,本发明实施例中的包头域部分与传统数据包的包头类似,包括以太网包头、IP包头和UDP包头等,用于指示网络的地址信息等。而数据包中的数据域的部分,与传统的数据包不同,不仅包括要传输的数据,还可以进一步划分为多个区域。
具体地,在该数据域部分可以包括请求类型字段,该请求类型字段携带请求类型信息,用于指示该数据中包括的至少一个访问请求的请求类型,即用于标识该至少一个访问请求对存储设备是否执行修改操作。具体地,请求类型字段可以通过预定的数值来标识数据包中的至少一个访问请求是否对存储设备执行修改操作。例如,用0标识该数据包包含的访问请求的请求类型为对存储设备执行修改操作,而用1标识访问请求的请求类型为对存储设备执行非修改操作,即执行读操作。或者,该请求类型字段也可以表示该数据包的具体请求内容,根据该请求内容,确定该数据包的访问请求是否对存储设备执行修改操作,例如,对于Key-Value***,数据包中的访问请求可以为get请求,即请求类型字段指示该数据包中的访问请求为get请求,则该get请求类似于读请求,可以确定该访问请求的类型为对存储***执行非修改操作;而对于put请求,类似于写请求,则可以确定该访问请求的类型为对存储***执行修改操作。
可选地,在数据包中还可以包括请求数量信息,该请求数量信息用于指示该数据包中至少一个访问请求的总个数。具体地,发送端生成并发送的数据包可以包括一个或多个访问请求,且当该数据包包括多个访问请求时,该多个访问请求均属于同一请求类型,并可以通过请求数量信息,指示该数据包中多个访问请求的个数。例如,在该数据包的的数据域部分还可以包括请求数量字段,通过该请求数量字段指示该数据包中至少一个访问请求的数量。
可选地,在该数据域部分还可以包括请求头字段,该请求头用于指示该数据包中请求处理的数据的大小等信息,例如,如图4所示,该数据包的请求数量字段指示该数据包包括n个访问请求,对应请求头1至n,每个数据的请求头对应指示该部分请求数据的大小。
可选地,该数据域中的请求头字段还可以包括用于指示该数据包中的访问请求的具体操作类型的信息。在存储设备中的处理器处理该数据包时,根据该数据包中请求字段确定访问请求的具体操作类型。例如,根据该请求字段确定该访问请求为写请求,或者确定该访问请求为读请求。具体地,以图2为例,存储设备200中的处理器204在需要处理该数据包时,可以解析该数据域部分的请求头字段,根据该请求头字段确定该数据的访问请求,例如,根据该请求头字段确定该访问请求为写请求,则将该数据包中的数据写入相应的存储单元中。
可选地,在该数据域部分还可以包括数据字段,该数据字段用于承载该数据包请求处理的数据。具体地,例如,对于写请求,该数据字段承载该数据包需要写入的数据;再例如,对于读请求,该数据字段可以承载该数据包请求读取的数据的地址信息等。
再例如,对于Key-Value***,在该数据包中的数据域部分具体可以包括键(key)属性域,也可以包括值(value)属性域。具体地,当数据包为get请求,则该数据域部分包括key属性域,而不包括value属性域;当数据包为put请求时,例如图4所示,则该数据域部分包括key属性域和value属性域。
应理解,该数据包的数据域部分包括的至少一个访问请求的请求内容,该请求内容可以指该数据包中数据字段承载的数据,例如,对于Key-Value***,该请求内容可以包括请求头字段以及key属性域,也可以包括value属性域。可选地,该数据包的数据域也可以与至少一个访问请求的请求内容一致,即该至少一个访问请求的请求内容包括全部数据域部分。
在本发明实施例中,发送数据包的发送端可以将属于同一请求类型的多个访问请求聚合成一个数据包进行发送。例如,发送端可以为存储客户端,存储客户端在接收到多个对存储设备端的访问请求时,可以先将该多个访问请求加入到该存储客户端的缓存队列中,以读请求为例,可以将当前缓存队列中的多个读请求聚合成一个大的读请求数据包,该聚合后的读请求数据包的大小不能超过载荷(payload)的最大限制,依据上述数据包的格式,在该聚合后的读请求数据包上加上IP、DUP等包头,形成上述格式的包括多个访问请求的数据包,向存储设备发送该数据包。再以写请求为例,可以将当前缓存队列中的多个写请求聚合成一个大的写请求数据包,并将Key以及Value依次存放,同样,聚合后的数据包的大小不超过payload的限制,再加上IP、DUP等包头形成上述格式的数据包。类似地,对于同一请求类型的访问请求,例如Update、delete等请求,依据同样的方式,均可以将相同类型的访问请求组成一个数据包进行发送。
S330,当该至少一个访问请求为对该存储设备执行修改操作的请求时,该网卡将该数据包中的数据域部分存储于该非易失性内存中,该数据域部分包括该至少一个访问请求的请求内容。
可选地,如图2所示,当该数据包中的至少一个访问请求的请求类型为对该存储设备执行修改操作时,存储设备200的网卡201将该数据包中的数据域部分存储到非易失性内存202中,可选地,还可以将该数据包的包头域部分存储到非易失性内存202中对应的持久化请求队列中,该持久化请求队列也与非易失性内存202中存储的数据域部分相对应,其中,该数据包的包头域部分包含有指示所述数据包的地址的信息。
S340,当该至少一个访问请求为对该存储设备执行非修改操作的请求时,该网卡将该数据包中的数据域部分存储于该易失性内存中。
可选地,如图2所示,当数据包中的至少一个访问请求的请求类型为对该存储设备执行非修改操作时,例如执行读操作时,存储设备200的网卡201将该数据包中的数据域部分存储到易失性内存203中,可选地,还可以将该数据包的包头域部分存储到易失性内存203中的非持久化请求队列中,该非持久化请求队列与易失性内存203中存储的数据域部分相对应。
具体地,对于方法300中的S330和S340,为具有不同访问请求类型的数据包中的数据域部分分配了不同的内存,其中,针对访问请求的类型为对存储设备进行修改操作的数据包,采用非易失性内存进行存储,可以使得数据包中需要写入存储设备中的数据能够持久的缓存。
在现有技术中,存储设备的网卡接收到数据包后,将该数据包括缓存在网络的请求队列中,即数据缓冲区中,该网卡的数据缓冲区可以为占用易失性内存DRAM的部分区域,之后将该数据进行解包和网络协议栈等处理,将该数据从网卡的数据缓冲区中拷贝到存储设备的DRAM中以供存储设备的进一步处理,例如,对于写请求,会将该数据包中的数据再从DRAM中写入到对应的存储单元中完成写操作。
因此,在现有技术中,网络的性能瓶颈主要由两个部分组成:网络协议栈的处理以及缓冲区数据的拷贝操作。现有的数据包一般分为包头和数据两部分组成。其中,包头包含了请求包类型、网络地址等信息,如以太网包头、IP包头和UDP包头。对于网络协议栈的处理,主要包括解析、识别、和处理数据包的包头,执行对应的网络转发、请求提取等功能。目前,网络协议栈的优化常通过数据面开发工具(Data Plane Development Kit,DPDK)、开源包(Open Data Plane,ODP)等新技术手段来提高协议栈的处理效率。
另外,对于缓冲区数据的拷贝操作,数据拷贝操作需要耗费CPU和内存资源。如果网络请求中包含的数据量较大,数据拷贝操作的开销会在网络传输中占据较大的比重。
在本发明实施例中,网卡可以包括两类请求队列,分别为持久化请求队列和非持久化请求队列,该两类请求队列中每类队列可以包括多个请求队列,每个请求队列用于存储数据包的包头域部分,并且每个队列仅支持存放具有相同请求类型对应的数据包包头域,例如对于任意队列,可以仅支持存放请求类型为对存储设备执行修改操作的访问请求的数据包的包头,或者仅支持存放请求类型为对存储设备执行读操作的访问请求的数据包的包头。可选地,该持久化请求队列可以位于非易失性内存中,而非持久化请求队列位于易失性内存中。具体地,持久化请求队列用于存储请求类型为对存储设备执行修改操作的数据包括的包头,非持久化请求队列用于存储请求类型为对存储设备执行读操作的数据包括的包头。
在本发明实施例中,网卡在解析出数据包中包括的至少一个访问请求的请求据类型时,可以通过对请求类型进行分析,以确定数据包中的包头对应持久化请求队列或非持久化请求队列。对应的,发送数据包的发送端,例如存储客户端或其它存储设备,根据数据包至访问请求的请求类型,对数据包进行封装。之后,接收端存储设备会根据数据包中的访问请求的类型,将数据包的包头存放到不同的请求队列中。
可选地,对于持久化请求队列以及非持久化请求队列,为了有效的利用资源,各个请求队列也可以采用循环数据队列。
对应地,对于访问请求的类型为对存储设备执行修改操作的数据包,还将该数据包中的数据域部分直接存储到非易失性内存中,而对于访问请求的类型为对存储设备执行非修改操作,例如读操作,还将该数据包中的数据域部分直接存储到易失性内存中,而无需像现有技术中,将该数据包中的数据缓存在网卡在DRAM中的数据缓冲区中,再拷贝到DRAM的存储区域中,再根据数据包至访问请求的内容,将数据再写入不同的存储单元中,减少了网卡的数据缓冲区到存储单元之间的拷贝的开销。
具体地,对于访问请求的类型为对存储设备执行修改操作的数据包,将该数据包中的数据域部分存储到非易失性内存中,该非易失性内存具有内存特性,网卡可以通过DMA引擎直接访问该非易失性内存,将数据包的数据域部分写入该非易失性内存中。可选地,该非易失性内存可以为存储级内存(Storage Class Memory,SCM)。SCM作为一类新型的存储介质,其性能和存储容量介于DRAM和闪存(flash)之间,具备内存的访问接口,能够保持存储在SCM中的数据的持久性。SCM即将作为高性能存储***中的重要存储介质。
在该SCM中,可以包括数据缓冲区,该数据缓冲区用于存储数据包中的数据域部分。而在现有技术中,网卡中包括数据缓冲区,该数据缓冲区可以位于DRAM中,网卡将数据存储在该数据缓冲区中,再将该数据拷贝到存储单元DRAM中,而本发明实施例中,网卡将数据直接存储到非易失性内存的数据缓冲区,无需像现有技术中进行从网卡的缓冲区到存储单元的数据拷贝。
应理解,SCM中的数据缓冲区可以有多个且物理地址连续,每个数据缓冲区的长度域可以与网卡的最大传输单元(Maximum Transmission Unit,MTU)相同。
应理解,该SCM中的数据缓冲区还可以用于存储对应的数据包的包头,即该数据缓冲区可以用于存储持久化请求队列。
此外,该SCM中的数据缓冲区也可以作为该存储设备的日志(Log)区域。存储设备为了保证数据的一致性,当接收到需要持久化的数据请求,如写请求时,可以先将数据写入到Log区域。存储设备的Log区域一般是一块连续的物理区域,而且Log区域的数据写入模式是顺序写入的。
在现有技术中,该Log区域也可以位于SCM中,或其它存储单元中,网卡将数据写入网卡的数据缓冲区中,再将该数据拷贝到存储单元,例如从数据缓冲区拷贝到DRAM中。以写请求为例,存储设备中的处理器处理该写请求时,需要将该数据再从DRAM中拷贝到相应的存储单元的存储区域,例如写入SCM的存储区域中,而在处理器执行写请求之前,存储设备的处理器可以先将数据的相关信息,例如数据地址、数据内容等,写入到Log区域,这样,在后续将该写请求对应的数据写入到相应存储区域发生错误时,可以根据Log区域记录的信息,执行重新写入或者撤销写入。
但在本发明实施例中,该SCM中的数据缓冲区也可以作为Log区域,即网卡将访问请求的类型为对存储设备执行修改操作的数据包中的数据直接写入非易失性内存SCM的数据缓冲区中,该SCM的数据缓冲区相当于现有技术中的网卡数据缓冲区、DRAM区域和Log区域。
具体地,将该SCM的数据缓冲区作为Log区域,则在存储数据包中的数据过程中,以日志形式进行存储,即存储该数据包中的数据的地址、长度以及数据内容,其中,数据的地址表示该数据最终存储的地址的信息,例如,数据包中的访问请求为写请求,则以日志形式进行存储时,需要存储该写数据的最终写入位置的地址信息;该数据的长度,即为该数据的大小。
类似地,对于数据包中的访问请求的类型为对存储设备执行读操作,将该数据包中的数据直接存储到易失性内存中,该易失性内存可以为DRAM,与将数据存储到SCM中类似,该DRAM中也可以包括数据缓冲区,该数据缓冲区用于存储数据包中的数据。在本发明实施例中,网卡将数据包中的访问请求的类型为对存储设备执行读操作的数据直接存储到易失性内存的数据缓冲区,无需像现有技术中进行由缓冲区到存储单元的数据拷贝。
应理解,该DRAM中的该数据缓冲区还可以用于存储访问请求类型为对存储设备执行读操作的数据包的包头,即该数据缓冲区用于存储非持久化请求队列。
应理解,存储设备网卡在确定请求类型后,可以根据访问请求的不同类型,将数据包的包头存储在非易失性内存或易失性内存中,例如,一种情况下,可以将访问请求的类型为对存储设备执行修改操作的数据包的包头存储至SCM中的持久化请求队列中。在另一种情况下,为了进一步减少对SCM区域的使用率,还可以将访问请求的类型为对存储设备执行修改操作的数据包的包头存储在易失性内存中,例如DRAM中,将该类型的数据包的数据域部分存储在SCM中,之后可以通过分散-收集(scatter-gather)将包头和数据项拼接在一起得到完整数据包。
具体地,以Key-Value***的写请求的操作为例,可以将该写请求的数据包的包头和数据项都存在SCM中。而实际上,在存储设备处理完每个请求包后,需要向发送该数据包的发送端,发送对于数据包的响应包,该响应包中的数据包头部分是可以重复利用的,而且数据包头即使丢失也可以重新构造出来,属于非持久化的,因此,还可以将该写请求的数据包头也存放在DRAM中,而不是SCM中。也就是说,访问请求的类型为对存储设备执行修改操作的数据包的包头,例如该写请求的包头,可以存储到DRAM中,但仍将该数据包中的数据域部分存储在SCM中。
应理解,对于访问请求的类型为对存储设备执行修改操作的数据包的包头,也可以将该包头存储到易失性内存,例如DRAM中。在该DRAM中,可以分为持久化请求队列和非持久化请求队列,即访问请求的类型为对存储设备执行修改操作的数据包的包头存储到DRAM中的持久化请求队列中,将访问请求的类型为对存储设备执行读操作的数据包的包头存储到DRAM中的非持久化请求队列中。
在本发明实施例中,进一步的,当存储设备需要处理数据包时,如图2所示,存储设备200中的处理器204可以从非易失性内存202中调用数据包中的数据进行处理;类似地,也可以从易失性内存203中调用数据包中的数据进行处理。
具体地,对于非易失性内存中的数据,该数据对应的访问请求的类型为对存储设备执行修改操作,当存储设备需要处理该类型的数据包时,例如接收到处理该数据包的指示时,如图2所示,存储设备200可以根据处理器204事先对该数据包的包管理以及元数据管理,获取该数据包中数据的基本信息以及存储位置信息,从而在非易失性内存202对应的数据缓冲区中,例如SCM中的对应的数据缓冲区中,查找到该数据包对应的数据域的存储位置,并调用该数据进行处理。可选地,该数据包中数据的基本信息以及存储位置信息可以存储在对应的持久化请求队列中。
例如,存储设备的处理器需要读取并处理写请求的数据时,该写请求的数据包的数据存储在非易失性内存中,处理器可以直接根据数据包中数据的信息,例如请求地址或者是Key-Value存储***中数据对应的Key值,查询Key对应Value数据的位置,在非易失性内存中找到该数据,对该数据进行写操作,将该数据存储到指定的存储区域,例如存储到SCM中,或者闪存(flash)中。
同样,对于易失性内存中的数据,该数据对应的访问请求的类型为对存储设备执行读操作,当存储设备需要处理该类型的数据包时,例如接收到处理该数据包的指示时,如图2所示,存储设备200可以根据处理器204事先对该数据包的包管理以及元数据管理,获取该数据包中数据的基本信息以及存储位置信息,从而在易失性内存203对应的数据缓冲区中,例如DRAM中的对应的数据缓冲区中,查找到该数据包对应的数据的存储位置,并调用该数据进行处理。
应理解,当非易失性内存202的数据缓冲区的缓存空间不足时,例如SCM的数据缓冲区存储空间不足,可以将数据缓冲区中的部分数据淘汰到其它存储单元中,或者对SCM的空间进行垃圾回收处理,使得SCM有足够空间来缓存数据。
因此,本发明实施例的应用于存储设备中的访问请求的处理方法,网卡根据数据包中包括的请求类型信息,确定该数据包中至少一个访问请求是否为对存储设备执行修改操作的请求,当至少一个访问请求为对该存储设备执行修改操作的请求时,网卡将该数据包存储到非易失性内存中,否则,网卡将数据包存储到易失性内存中,这样可以将现有技术中网卡缓冲区与存储***的缓存区合一,从而减少数据在两者间的拷贝开销;同时减少对存储设备不执行修改操作的访问请求在SCM中的存放,降低对SCM大容量的需求,提高SCM的读写寿命。
上文中结合图1至图4,从接收端存储设备的角度详细描述了根据本发明实施例的分布式存储***中处理数据请求的方法,下面将结合图5,结合具体实施例描述本发明实施例的方法。
图5示出了根据本发明实施例的应用于存储设备中的访问请求的处理方法400的示意性流程图。如图5所示,该方法400可以由存储设备执行,例如图1所示的分布式存储***中的存储设备执行,该存储设备为图1中的存储设备102或存储设备103,该存储设备也是如图2所示的存储设备200。具体地,该方法400包括:
S401,存储设备接收数据包。
应理解,存储设备可以通过网卡接收该数据包,该数据包中包括至少一个访问请求,且该数据包中包括请求类型信息,例如,该数据包中包括请求类型字段,通过该请求类型字段携带请求类型信息,该请求类型字段用于指示该数据包中至少一个访问请求的请求类型。
S402,存储设备解析该数据包中的请求类型信息,判断该至少一个访问请求的请求类型。
具体地,该存储设备的网卡解析数据包,根据该数据包中的请求类型字段,确定该数据包中至少一个访问请求的请求类型,判断该至少一个访问请求的请求类型为对存储设备执行修改操作,或者为对存储设备执行非修改操作,例如,执行读操作。
S403,存储设备确定该数据包中的至少一个访问请求的请求类型为对存储设备执行修改操作时,执行S404;存储设备确定该数据包中的至少一个访问请求的请求类型为对存储设备执行读操作时,执行S405。
S404,存储设备确定该数据包中的至少一个访问请求的请求类型为对存储设备执行修改操作,将该数据包存储到非易失性内存中,使得该数据包中的数据能够持久缓存,并继续执行S405。
可选地,存储设备的网卡将数据包存储到非易失性内存中,包括将该数据包中的数据以及包头均写入该非易失性内存中。
可选地,该非易失性存储可以为SCM。
应理解,该SCM中可以包括数据缓冲区,用于存储该数据包中的数据,还可以用于存储数据包的包头。应理解,该SCM还可以采用日志的形式存储,即该SCM也作为Log区域存储数据,从而保证数据一致性。
S405,存储设备处理该数据包时,从非易失性内存中调用该数据包中的数据进行处理,处理后执行S408。
应理解,存储设备需要处理数据包时,存储设备的处理器根据对该数据包的包管理以及元数据管理,获取该数据包中数据的基本信息以及存储位置信息,从而在SCM对应的数据缓冲区中查找到该数据包对应的数据的存储位置,并调用该数据进行处理。
S406,存储设备确定该数据包中的至少一个访问请求的请求类型为对存储设备执行读操作,将该数据包存储到易失性内存中,例如DRAM,并继续执行S407。
S407,当存储设备处理该数据包时,从易失性内存中调用该数据进行处理,处理后执行S408。
S408,数据包处理流程结束。
因此,本发明实施例的应用于存储设备中的访问请求的处理方法,网卡根据数据包中包括的请求类型信息,确定该数据包中至少一个访问请求是否为对存储设备执行修改操作的请求,当至少一个访问请求为对该存储设备执行修改操作的请求时,网卡将该数据包存储到非易失性内存中,否则,网卡将数据包存储到易失性内存中,这样可以将现有技术中网卡缓冲区与存储***的缓存区合一,从而减少数据在两者间的拷贝开销;同时减少对存储设备不执行修改操作的访问请求在非易失性内存SCM中的存放,降低对SCM大容量的需求,提高SCM的读写寿命。
应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
上文中结合图1至图5,详细描述了根据本发明实施例的应用于存储设备中的访问请求的处理方法,下面将结合图6,描述根据本发明实施例的应用于存储设备中的访问请求的处理装置。
图6示出了根据本发明实施例的存储设备中的网卡500的示意性框图,该存储设备可以包括该网卡500、易失性内存和非易失性内存。例如,该存储设备可以为如图1所示的分布式存储***的中存储设备102和103,或者也可以为图2所示的存储设备200,如图6所示,该网卡500包括:
接收模块510,用于接收其他存储设备发送的数据包,该数据包中包括至少一个访问请求,该数据包携带有该至少一个访问请求的请求类型信息;
确定模块520,用于根据该请求类型信息,判断该至少一个访问请求是否为对该存储设备执行修改操作的请求;
处理模块530,用于当该至少一个访问请求为对该存储设备执行修改操作的请求时,将该数据包中的数据域部分存储于该非易失性内存中,该数据域部分包括该至少一个访问请求的请求内容;
该处理模块530还用于:当该至少一个访问请求为对该存储设备执行非修改操作的请求时,将该数据包中的数据域部分存储于该易失性内存中。
因此,本发明实施例的存储设备中的网卡,根据数据包中包括的请求类型信息,确定该数据包中至少一个访问请求是否为对存储设备执行修改操作的请求,当至少一个访问请求为对该存储设备执行修改操作的请求时,网卡将该数据包存储到非易失性内存中,否则,网卡将数据包存储到易失性内存中,这样可以将现有技术中网卡缓冲区与存储***的缓存区合一,从而减少数据在两者间的拷贝开销;同时减少对存储设备不执行修改操作的访问请求在SCM中的存放,降低对SCM大容量的需求,提高SCM的读写寿命。
可选地,该处理模块530具体用于:当该至少一个访问请求为对该存储设备执行修改操作的请求时,将该数据包以日志的形式存储于该非易失性内存中。
可选地,该修改操作包括下述操作中的至少一个:写操作、更新操作和删除操作;该非修改操作包括读操作。
可选地,该非易失性内存为存储级内存SCM,该易失性内存为动态随机存取存储器DRAM。
可选地,当该至少一个访问请求为对该存储设备执行修改操作的请求时,该方法还包括:该网卡将该数据包中的包头域部分存储于该非易失性内存或该易失性内存中,该包头域部分包含有指示所述数据包的地址的信息。
应理解,根据本发明实施例的存储设备中的网卡500可对应于执行本发明实施例中的方法300和方法400,并且网卡500中的各个模块的上述和其它操作和/或功能分别为了实现图1至图5中的各个方法中存储设备的网卡执行的相应流程,为了简洁,在此不再赘述。
因此,本发明实施例的存储设备中的网卡,根据数据包中包括的请求类型信息,确定该数据包中至少一个访问请求是否为对存储设备执行修改操作的请求,当至少一个访问请求为对该存储设备执行修改操作的请求时,网卡将该数据包存储到非易失性内存中,否则,网卡将数据包存储到易失性内存中,这样可以将现有技术中网卡缓冲区与存储***的缓存区合一,从而减少数据在两者间的拷贝开销;同时减少对存储设备不执行修改操作的访问请求在SCM中的存放,降低对SCM大容量的需求,提高SCM的读写寿命。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (16)
1.一种应用于存储设备中的访问请求的处理方法,其特征在于,所述存储设备包括网卡、易失性内存和非易失性内存,所述方法包括:
所述网卡接收其他存储设备发送的数据包,所述数据包中包括至少一个访问请求,所述数据包携带有所述至少一个访问请求的请求类型信息;
所述网卡根据所述请求类型信息,判断所述至少一个访问请求是否为对所述存储设备执行修改操作的请求;
当所述至少一个访问请求为对所述存储设备执行修改操作的请求时,所述网卡将所述数据包中的数据域部分存储于所述非易失性内存中,所述数据域部分包括所述至少一个访问请求的请求内容;
当所述至少一个访问请求为对所述存储设备执行非修改操作的请求时,所述网卡将所述数据包中的所述数据域部分存储于所述易失性内存中。
2.根据权利要求1所述的方法,其特征在于,所述网卡将所述数据包存储于所述非易失性内存中,包括:
所述网卡将所述数据包以日志的形式存储于所述非易失性内存中。
3.根据权利要求1或2所述的方法,其特征在于,所述修改操作包括下述操作中的至少一个:写操作、更新操作和删除操作;
所述非修改操作包括读操作。
4.根据权利要求1或2所述的方法,其特征在于,当所述至少一个访问请求为对所述存储设备执行修改操作的请求时,所述方法还包括:
所述网卡将所述数据包中的包头域部分存储于所述非易失性内存或所述易失性内存中,所述包头域部分包含有指示所述数据包的地址的信息。
5.一种存储设备中的网卡,其特征在于,所述存储设备包括所述网卡、易失性内存和非易失性内存,所述网卡包括:
接收模块,用于接收其他存储设备发送的数据包,所述数据包中包括至少一个访问请求,所述数据包携带有所述至少一个访问请求的请求类型信息;
确定模块,用于根据所述请求类型信息,判断所述至少一个访问请求是否为对所述存储设备执行修改操作的请求;
处理模块,用于当所述至少一个访问请求为对所述存储设备执行修改操作的请求时,将所述数据包中的数据域部分存储于所述非易失性内存中,所述数据域部分包括所述至少一个访问请求的请求内容;
所述处理模块还用于:当所述至少一个访问请求为对所述存储设备执行非修改操作的请求时,将所述数据包中的数据域部分存储于所述易失性内存中。
6.根据权利要求5所述的网卡,其特征在于,所述处理模块具体用于:
当所述至少一个访问请求为对所述存储设备执行修改操作的请求时,将所述数据包以日志的形式存储于所述非易失性内存中。
7.根据权利要求5或6所述的网卡,其特征在于,所述修改操作包括下述操作中的至少一个:写操作、更新操作和删除操作;
所述非修改操作包括读操作。
8.根据权利要求5或6所述的网卡,其特征在于,所述处理模块具体用于:
当所述至少一个访问请求为对所述存储设备执行修改操作的请求时,将所述数据包中的包头域部分存储于所述非易失性内存或所述易失性内存中,所述包头域部分包含有指示所述数据包的地址的信息。
9.一种存储设备,其特征在于,所述存储设备包括网卡、易失性内存和非易失性内存,所述网卡用于:
接收其他存储设备发送的数据包,所述数据包中包括至少一个访问请求,所述数据包携带有所述至少一个访问请求的请求类型信息;
根据所述请求类型信息,判断所述至少一个访问请求是否为对所述存储设备执行修改操作的请求;
当所述至少一个访问请求为对所述存储设备执行修改操作的请求时,将所述数据包中的数据域部分存储于所述非易失性内存中,所述数据域部分包括所述至少一个访问请求的请求内容;
当所述至少一个访问请求为对所述存储设备执行非修改操作的请求时,将所述数据包中的数据域部分存储于所述易失性内存中。
10.根据权利要求9所述的存储设备,其特征在于,所述网卡还用于:
当所述至少一个访问请求为对所述存储设备执行修改操作的请求时,将所述数据包以日志的形式存储于所述非易失性内存中。
11.根据权利要求9或10所述的存储设备,其特征在于,所述修改操作包括下述操作中的至少一个:写操作、更新操作和删除操作;
所述非修改操作包括读操作。
12.根据权利要求9或10所述的存储设备,其特征在于,所述网卡还用于:
当所述至少一个访问请求为对所述存储设备执行修改操作的请求时,将所述数据包中的包头域部分存储于所述非易失性内存或所述易失性内存中,所述包头域部分包含有指示所述数据包的地址的信息。
13.一种分布式存储***,其特征在于,所述分布式存储***包括第一存储设备和第二存储设备,
所述第一存储设备用于:
向第二存储设备发送数据包,所述数据包中包括至少一个访问请求,所述数据包携带有所述至少一个访问请求的请求类型信息;
所述第二存储设备用于:
接收所述第一存储设备发送的所述数据包;
根据所述请求类型信息,判断所述至少一个访问请求是否为对所述存储设备执行修改操作的请求;
当所述至少一个访问请求为对所述存储设备执行修改操作的请求时,将所述数据包中的数据域部分存储于非易失性内存中,所述数据域部分包括所述至少一个访问请求的请求内容;
当所述至少一个访问请求为对所述存储设备执行非修改操作的请求时,将所述数据包中的数据域部分存储于易失性内存中。
14.根据权利要求13所述的分布式存储***,其特征在于,所述第二存储设备还用于:
当所述至少一个访问请求为对所述存储设备执行修改操作的请求时,将所述数据包以日志的形式存储于所述非易失性内存中。
15.根据权利要求13或14所述的分布式存储***,其特征在于,所述修改操作包括下述操作中的至少一个:写操作、更新操作和删除操作;
所述非修改操作包括读操作。
16.根据权利要求13或14所述的分布式存储***,其特征在于,所述第一存储设备还用于:
当所述至少一个访问请求为对所述存储设备执行修改操作的请求时,将所述数据包中的包头域部分存储于所述非易失性内存或所述易失性内存中,所述包头域部分包含有指示所述数据包的地址的信息。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2016/096089 WO2018032510A1 (zh) | 2016-08-19 | 2016-08-19 | 应用于存储设备中的访问请求的处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109564502A CN109564502A (zh) | 2019-04-02 |
CN109564502B true CN109564502B (zh) | 2020-12-08 |
Family
ID=61196160
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680088376.XA Active CN109564502B (zh) | 2016-08-19 | 2016-08-19 | 应用于存储设备中的访问请求的处理方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109564502B (zh) |
WO (1) | WO2018032510A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157628A (zh) * | 2021-04-20 | 2021-07-23 | 北京达佳互联信息技术有限公司 | 存储***、数据处理方法、装置、存储***及电子设备 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111831306B (zh) * | 2020-03-26 | 2021-07-20 | 成都万创科技股份有限公司 | 一种基于网卡NVM的串号和ProjectName读写方法 |
CN113688072B (zh) * | 2020-05-19 | 2024-03-26 | 华为技术有限公司 | 数据处理方法及设备 |
CN114125081B (zh) * | 2021-10-27 | 2023-09-22 | 桂林长海发展有限责任公司 | 一种接收数据的处理方法、装置及存储介质 |
CN114285676B (zh) * | 2021-11-24 | 2023-10-20 | 中科驭数(北京)科技有限公司 | 智能网卡、智能网卡的网络存储方法和介质 |
US20220113914A1 (en) * | 2021-12-23 | 2022-04-14 | Kshitij Arun Doshi | Storage class memory device including a network |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101707590A (zh) * | 2009-09-25 | 2010-05-12 | 曙光信息产业(北京)有限公司 | 基于零拷贝方式的tcp/ip协议报文发送方法和装置 |
CN102567226A (zh) * | 2011-12-31 | 2012-07-11 | 曙光信息产业股份有限公司 | 数据访问的实现方法和装置 |
CN103441948A (zh) * | 2013-07-03 | 2013-12-11 | 华为技术有限公司 | 一种数据访问方法、网卡及存储*** |
CN105224240A (zh) * | 2014-05-30 | 2016-01-06 | 北京忆恒创源科技有限公司 | 将数据写入存储设备的方法、装置及存储设备 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0750666A (ja) * | 1993-08-05 | 1995-02-21 | Hitachi Ltd | ルーティング方式 |
WO2012169032A1 (ja) * | 2011-06-09 | 2012-12-13 | 富士通株式会社 | バッファ装置,バッファ制御装置,及びバッファ制御方法 |
CN103631532B (zh) * | 2012-08-29 | 2016-06-15 | 国际商业机器公司 | 用于在数据存储***中访问数据的方法和设备 |
US9185057B2 (en) * | 2012-12-05 | 2015-11-10 | The Intellisis Corporation | Smart memory |
US9367562B2 (en) * | 2013-12-05 | 2016-06-14 | Google Inc. | Distributing data on distributed storage systems |
CN104063344B (zh) * | 2014-06-20 | 2018-06-26 | 华为技术有限公司 | 一种存储数据的方法及网络接口卡 |
CN105068817B (zh) * | 2015-08-26 | 2019-02-19 | 华为技术有限公司 | 将数据写入存储设备的方法及存储设备 |
CN105260136B (zh) * | 2015-09-24 | 2019-04-05 | 北京百度网讯科技有限公司 | 数据读写方法及分布式存储*** |
-
2016
- 2016-08-19 CN CN201680088376.XA patent/CN109564502B/zh active Active
- 2016-08-19 WO PCT/CN2016/096089 patent/WO2018032510A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101707590A (zh) * | 2009-09-25 | 2010-05-12 | 曙光信息产业(北京)有限公司 | 基于零拷贝方式的tcp/ip协议报文发送方法和装置 |
CN102567226A (zh) * | 2011-12-31 | 2012-07-11 | 曙光信息产业股份有限公司 | 数据访问的实现方法和装置 |
CN103441948A (zh) * | 2013-07-03 | 2013-12-11 | 华为技术有限公司 | 一种数据访问方法、网卡及存储*** |
CN105224240A (zh) * | 2014-05-30 | 2016-01-06 | 北京忆恒创源科技有限公司 | 将数据写入存储设备的方法、装置及存储设备 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157628A (zh) * | 2021-04-20 | 2021-07-23 | 北京达佳互联信息技术有限公司 | 存储***、数据处理方法、装置、存储***及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2018032510A1 (zh) | 2018-02-22 |
CN109564502A (zh) | 2019-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109564502B (zh) | 应用于存储设备中的访问请求的处理方法和装置 | |
US11010681B2 (en) | Distributed computing system, and data transmission method and apparatus in distributed computing system | |
US10719463B1 (en) | Hardware handling memory write request during memory data migration | |
US5884313A (en) | System and method for efficient remote disk I/O | |
US20160132541A1 (en) | Efficient implementations for mapreduce systems | |
US20200136971A1 (en) | Hash-table lookup with controlled latency | |
EP4318251A1 (en) | Data access system and method, and device and network card | |
CN111708738B (zh) | 实现hadoop文件***hdfs与对象存储s3数据互访方法及*** | |
CN108600053B (zh) | 一种基于零拷贝技术的无线网络数据包捕获方法 | |
CN110119304B (zh) | 一种中断处理方法、装置及服务器 | |
CN114201421B (zh) | 一种数据流处理方法、存储控制节点及可读存储介质 | |
US9311044B2 (en) | System and method for supporting efficient buffer usage with a single external memory interface | |
WO2020199760A1 (zh) | 数据存储方法、存储器和服务器 | |
CN109857545B (zh) | 一种数据传输方法及装置 | |
CN108415962A (zh) | 一种云存储*** | |
CN115270033A (zh) | 一种数据访问***、方法、设备以及网卡 | |
CN113794764A (zh) | 服务器集群的请求处理方法、介质和电子设备 | |
US10255213B1 (en) | Adapter device for large address spaces | |
US8898353B1 (en) | System and method for supporting virtual host bus adaptor (VHBA) over infiniband (IB) using a single external memory interface | |
CN109861967A (zh) | 基于Spark Shuffle的远程直接内存访问*** | |
CN112732176B (zh) | 基于fpga的ssd访问方法及装置、存储***及存储介质 | |
JP2020088517A (ja) | 通信装置、通信装置の制御方法およびプログラム | |
CN107615259A (zh) | 一种数据处理方法及*** | |
CN117312201B (zh) | 一种数据传输方法、装置及加速器设备、主机和存储介质 | |
US20230315683A1 (en) | File Access Method, Storage Node, and Network Interface Card |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |